[pktools] 01/28: Imported Upstream version 2.6.7

Sebastiaan Couwenberg sebastic at moszumanska.debian.org
Wed May 18 10:03:02 UTC 2016


This is an automated email from the git hooks/post-receive script.

sebastic pushed a commit to branch master
in repository pktools.

commit 4057b6ffa3ad647fefa5e08a1a704bda957f7aed
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Tue May 17 20:42:57 2016 +0200

    Imported Upstream version 2.6.7
---
 CMakeLists.txt                                     |   393 +
 ChangeLog                                          |    16 +
 INSTALL                                            |    30 +-
 Makefile.am                                        |    42 -
 Makefile.in                                        |   932 -
 README                                             |    16 -
 README.txt                                         |     0
 aclocal.m4                                         |  1352 --
 config.h.in => cmake-config.h.in                   |     2 +-
 cmake-config.in                                    |    47 +
 cmake.pc.in                                        |    11 +
 cmake/modules/FindFANN.cmake                       |    28 +
 cmake/modules/FindGSL.cmake                        |   130 +
 cmake/modules/FindLIBLAS.cmake                     |    36 +
 cmake/modules/FindNLOPT.cmake                      |    28 +
 compile                                            |   347 -
 config.guess                                       |  1558 --
 config.h.in => config.h                            |    56 +-
 config.sub                                         |  1791 --
 configure                                          | 22520 -------------------
 configure.ac                                       |   137 -
 depcomp                                            |   630 -
 doc/Doxyfile                                       |     2 +-
 doc/Doxyfile.good                                  |  1899 --
 doc/Doxyfile.in~                                   |  2303 --
 doc/Doxyfile~                                      |  1869 --
 doc/Makefile.am                                    |    17 -
 doc/apps.dox                                       |     2 +
 doc/apps.dox~                                      |    35 -
 doc/examples_pkkalman.dox                          |    31 -
 doc/examples_pkkalman.dox~                         |    14 -
 doc/faq_pksetmask.dox                              |     2 +-
 doc/header.dox                                     |    16 -
 doc/html/ConfusionMatrix_8cc_source.html           |   358 -
 doc/html/ConfusionMatrix_8h_source.html            |   272 -
 doc/html/CostFactorySVM_8cc_source.html            |   256 -
 doc/html/CostFactorySVM_8h_source.html             |   131 -
 doc/html/CostFactory_8h_source.html                |   137 -
 doc/html/Egcs_8cc_source.html                      |   280 -
 doc/html/Egcs_8h_source.html                       |   128 -
 doc/html/FeatureSelector_8h_source.html            |   440 -
 doc/html/FileReaderAscii_8cc_source.html           |   313 -
 doc/html/FileReaderAscii_8h_source.html            |   374 -
 doc/html/FileReaderLas_8cc_source.html             |   253 -
 doc/html/FileReaderLas_8h_source.html              |   146 -
 doc/html/Filter2d_8cc_source.html                  |  1394 --
 doc/html/Filter2d_8h_source.html                   |  1446 --
 doc/html/Filter_8cc_source.html                    |   862 -
 doc/html/Filter_8h_source.html                     |   931 -
 doc/html/Filter__old_8h_source.html                |   982 -
 doc/html/ImgGdal_8h_source.html                    |   125 -
 doc/html/ImgRasterGdal_8cc_source.html             |   414 -
 doc/html/ImgRasterGdal_8h_source.html              |   175 -
 doc/html/ImgReaderGdal_8cc_source.html             |   467 -
 doc/html/ImgReaderGdal_8h_source.html              |   330 -
 doc/html/ImgReaderOgr_8cc_source.html              |   509 -
 doc/html/ImgReaderOgr_8h_source.html               |  1035 -
 doc/html/ImgRegression_8cc_source.html             |   468 -
 doc/html/ImgRegression_8h_source.html              |   122 -
 doc/html/ImgUpdaterGdal_8cc_source.html            |   117 -
 doc/html/ImgUpdaterGdal_8h_source.html             |   114 -
 doc/html/ImgWriterGdal_8cc_source.html             |   518 -
 doc/html/ImgWriterGdal_8h_source.html              |   283 -
 doc/html/ImgWriterOgr_8cc_source.html              |   790 -
 doc/html/ImgWriterOgr_8h_source.html               |   167 -
 doc/html/IndexValue_8h_source.html                 |   121 -
 doc/html/OptFactory_8h_source.html                 |   288 -
 doc/html/Optionpk_8cc_source.html                  |   183 -
 doc/html/Optionpk_8h_source.html                   |   490 -
 doc/html/PosValue_8h_source.html                   |   122 -
 doc/html/ProcessingPktoolsPlugin_8py_source.html   |   123 -
 doc/html/StatFactory_8h_source.html                |  1733 --
 doc/html/Vector2d_8cc_source.html                  |    72 -
 doc/html/Vector2d_8h_source.html                   |   404 -
 doc/html/____init_____8py_source.html              |   103 -
 doc/html/annotated.html                            |   207 -
 doc/html/bc_s.png                                  |   Bin 676 -> 0 bytes
 doc/html/bdwn.png                                  |   Bin 147 -> 0 bytes
 ...gui-gcc-Debug_2moc__mainwindow_8cpp_source.html |   202 -
 ...e__gui-gcc-Debug_2ui__mainwindow_8h_source.html |   782 -
 ...i-gcc-Release_2moc__mainwindow_8cpp_source.html |   202 -
 ..._gui-gcc-Release_2ui__mainwindow_8h_source.html |   781 -
 ...gui-gcc-Debug_2moc__mainwindow_8cpp_source.html |   206 -
 ...p__gui-gcc-Debug_2ui__mainwindow_8h_source.html |   802 -
 ...i-gcc-Release_2moc__mainwindow_8cpp_source.html |   206 -
 ..._gui-gcc-Release_2ui__mainwindow_8h_source.html |   802 -
 ...gui-gcc-Debug_2moc__mainwindow_8cpp_source.html |   196 -
 ...f__gui-gcc-Debug_2ui__mainwindow_8h_source.html |   515 -
 ...i-gcc-Release_2moc__mainwindow_8cpp_source.html |   196 -
 ..._gui-gcc-Release_2ui__mainwindow_8h_source.html |   515 -
 ...gui-gcc-Debug_2moc__mainwindow_8cpp_source.html |   190 -
 ...t__gui-gcc-Debug_2ui__mainwindow_8h_source.html |   590 -
 ...i-gcc-Release_2moc__mainwindow_8cpp_source.html |   190 -
 ..._gui-gcc-Release_2ui__mainwindow_8h_source.html |   590 -
 ...gui-gcc-Debug_2moc__mainwindow_8cpp_source.html |   205 -
 ...m__gui-gcc-Debug_2ui__mainwindow_8h_source.html |   740 -
 ...i-gcc-Release_2moc__mainwindow_8cpp_source.html |   205 -
 ..._gui-gcc-Release_2ui__mainwindow_8h_source.html |   740 -
 doc/html/classBadConversion-members.html           |    75 -
 doc/html/classBadConversion.html                   |   107 -
 doc/html/classBadConversion__coll__graph.map       |     4 -
 doc/html/classBadConversion__coll__graph.md5       |     1 -
 doc/html/classBadConversion__coll__graph.png       |   Bin 5729 -> 0 bytes
 doc/html/classBadConversion__inherit__graph.map    |     4 -
 doc/html/classBadConversion__inherit__graph.md5    |     1 -
 doc/html/classBadConversion__inherit__graph.png    |   Bin 5729 -> 0 bytes
 doc/html/classCache-members.html                   |    78 -
 doc/html/classCache.html                           |    94 -
 doc/html/classCompare__IndexValue-members.html     |    75 -
 doc/html/classCompare__IndexValue.html             |    87 -
 doc/html/classCompare__PosValue-members.html       |    75 -
 doc/html/classCompare__PosValue.html               |    87 -
 doc/html/classCostFactory-members.html             |    96 -
 doc/html/classCostFactory.html                     |   162 -
 doc/html/classCostFactoryANN-members.html          |    99 -
 doc/html/classCostFactoryANN.html                  |   167 -
 doc/html/classCostFactoryANN__coll__graph.map      |     6 -
 doc/html/classCostFactoryANN__coll__graph.md5      |     1 -
 doc/html/classCostFactoryANN__coll__graph.png      |   Bin 30326 -> 0 bytes
 doc/html/classCostFactoryANN__inherit__graph.map   |     3 -
 doc/html/classCostFactoryANN__inherit__graph.md5   |     1 -
 doc/html/classCostFactoryANN__inherit__graph.png   |   Bin 3549 -> 0 bytes
 doc/html/classCostFactorySVM-members.html          |    99 -
 doc/html/classCostFactorySVM.html                  |   167 -
 doc/html/classCostFactorySVM__coll__graph.map      |     6 -
 doc/html/classCostFactorySVM__coll__graph.md5      |     1 -
 doc/html/classCostFactorySVM__coll__graph.png      |   Bin 30811 -> 0 bytes
 doc/html/classCostFactorySVM__inherit__graph.map   |     3 -
 doc/html/classCostFactorySVM__inherit__graph.md5   |     1 -
 doc/html/classCostFactorySVM__inherit__graph.png   |   Bin 3804 -> 0 bytes
 doc/html/classCostFactory__coll__graph.map         |     5 -
 doc/html/classCostFactory__coll__graph.md5         |     1 -
 doc/html/classCostFactory__coll__graph.png         |   Bin 24905 -> 0 bytes
 doc/html/classCostFactory__inherit__graph.map      |     4 -
 doc/html/classCostFactory__inherit__graph.md5      |     1 -
 doc/html/classCostFactory__inherit__graph.png      |   Bin 6085 -> 0 bytes
 doc/html/classDataModel-members.html               |    97 -
 doc/html/classDataModel.html                       |   147 -
 doc/html/classDecrease__IndexValue-members.html    |    75 -
 doc/html/classDecrease__IndexValue.html            |    87 -
 doc/html/classDecrease__PosValue-members.html      |    75 -
 doc/html/classDecrease__PosValue.html              |    87 -
 doc/html/classEgcs-members.html                    |    87 -
 doc/html/classEgcs.html                            |   118 -
 doc/html/classFANN_1_1neural__net-members.html     |   204 -
 doc/html/classFANN_1_1neural__net.html             |   465 -
 doc/html/classFANN_1_1training__data-members.html  |   103 -
 doc/html/classFANN_1_1training__data.html          |   165 -
 doc/html/classFeatureSelector-members.html         |    80 -
 doc/html/classFeatureSelector.html                 |   100 -
 doc/html/classFileReaderAscii-members.html         |    97 -
 doc/html/classFileReaderAscii.html                 |   161 -
 doc/html/classFileReaderAscii__coll__graph.map     |     9 -
 doc/html/classFileReaderAscii__coll__graph.md5     |     1 -
 doc/html/classFileReaderAscii__coll__graph.png     |   Bin 18260 -> 0 bytes
 doc/html/classFileReaderLas-members.html           |   100 -
 doc/html/classFileReaderLas.html                   |   173 -
 doc/html/classFileReaderLas__coll__graph.map       |     9 -
 doc/html/classFileReaderLas__coll__graph.md5       |     1 -
 doc/html/classFileReaderLas__coll__graph.png       |   Bin 21503 -> 0 bytes
 doc/html/classImgRasterGdal-members.html           |   126 -
 doc/html/classImgRasterGdal.html                   |   257 -
 doc/html/classImgRasterGdal__coll__graph.map       |     4 -
 doc/html/classImgRasterGdal__coll__graph.md5       |     1 -
 doc/html/classImgRasterGdal__coll__graph.png       |   Bin 9624 -> 0 bytes
 doc/html/classImgRasterGdal__inherit__graph.map    |     5 -
 doc/html/classImgRasterGdal__inherit__graph.md5    |     1 -
 doc/html/classImgRasterGdal__inherit__graph.png    |   Bin 12506 -> 0 bytes
 doc/html/classImgReaderGdal-members.html           |   148 -
 doc/html/classImgReaderGdal.html                   |   326 -
 doc/html/classImgReaderGdal__coll__graph.map       |     5 -
 doc/html/classImgReaderGdal__coll__graph.md5       |     1 -
 doc/html/classImgReaderGdal__coll__graph.png       |   Bin 14605 -> 0 bytes
 doc/html/classImgReaderGdal__inherit__graph.map    |     4 -
 doc/html/classImgReaderGdal__inherit__graph.md5    |     1 -
 doc/html/classImgReaderGdal__inherit__graph.png    |   Bin 6726 -> 0 bytes
 doc/html/classImgReaderOgr-members.html            |   111 -
 doc/html/classImgReaderOgr.html                    |   219 -
 doc/html/classImgReaderOgr__coll__graph.map        |     4 -
 doc/html/classImgReaderOgr__coll__graph.md5        |     1 -
 doc/html/classImgReaderOgr__coll__graph.png        |   Bin 5833 -> 0 bytes
 doc/html/classImgUpdaterGdal-members.html          |   178 -
 doc/html/classImgUpdaterGdal.html                  |   445 -
 doc/html/classImgUpdaterGdal__coll__graph.map      |     7 -
 doc/html/classImgUpdaterGdal__coll__graph.md5      |     1 -
 doc/html/classImgUpdaterGdal__coll__graph.png      |   Bin 34794 -> 0 bytes
 doc/html/classImgUpdaterGdal__inherit__graph.map   |     5 -
 doc/html/classImgUpdaterGdal__inherit__graph.md5   |     1 -
 doc/html/classImgUpdaterGdal__inherit__graph.png   |   Bin 12542 -> 0 bytes
 doc/html/classImgWriterGdal-members.html           |   146 -
 doc/html/classImgWriterGdal.html                   |   317 -
 doc/html/classImgWriterGdal__coll__graph.map       |     5 -
 doc/html/classImgWriterGdal__coll__graph.md5       |     1 -
 doc/html/classImgWriterGdal__coll__graph.png       |   Bin 16361 -> 0 bytes
 doc/html/classImgWriterGdal__inherit__graph.map    |     4 -
 doc/html/classImgWriterGdal__inherit__graph.md5    |     1 -
 doc/html/classImgWriterGdal__inherit__graph.png    |   Bin 6909 -> 0 bytes
 doc/html/classImgWriterOgr-members.html            |   107 -
 doc/html/classImgWriterOgr.html                    |   193 -
 doc/html/classImgWriterOgr__coll__graph.map        |     4 -
 doc/html/classImgWriterOgr__coll__graph.md5        |     1 -
 doc/html/classImgWriterOgr__coll__graph.png        |   Bin 5762 -> 0 bytes
 doc/html/classIncrease__IndexValue-members.html    |    75 -
 doc/html/classIncrease__IndexValue.html            |    87 -
 doc/html/classIncrease__PosValue-members.html      |    75 -
 doc/html/classIncrease__PosValue.html              |    87 -
 doc/html/classKernel-members.html                  |    82 -
 doc/html/classKernel.html                          |   124 -
 doc/html/classKernel__coll__graph.map              |     3 -
 doc/html/classKernel__coll__graph.md5              |     1 -
 doc/html/classKernel__coll__graph.png              |   Bin 2079 -> 0 bytes
 doc/html/classKernel__inherit__graph.map           |     6 -
 doc/html/classKernel__inherit__graph.md5           |     1 -
 doc/html/classKernel__inherit__graph.png           |   Bin 8164 -> 0 bytes
 doc/html/classLastReturnFilter-members.html        |    76 -
 doc/html/classLastReturnFilter.html                |    98 -
 doc/html/classLastReturnFilter__coll__graph.map    |     2 -
 doc/html/classLastReturnFilter__coll__graph.md5    |     1 -
 doc/html/classLastReturnFilter__coll__graph.png    |   Bin 2702 -> 0 bytes
 doc/html/classLastReturnFilter__inherit__graph.map |     2 -
 doc/html/classLastReturnFilter__inherit__graph.md5 |     1 -
 doc/html/classLastReturnFilter__inherit__graph.png |   Bin 2702 -> 0 bytes
 doc/html/classMainWindow-members.html              |    84 -
 doc/html/classMainWindow.html                      |   111 -
 doc/html/classMainWindow__coll__graph.map          |     2 -
 doc/html/classMainWindow__coll__graph.md5          |     1 -
 doc/html/classMainWindow__coll__graph.png          |   Bin 5989 -> 0 bytes
 doc/html/classMainWindow__inherit__graph.map       |     2 -
 doc/html/classMainWindow__inherit__graph.md5       |     1 -
 doc/html/classMainWindow__inherit__graph.png       |   Bin 5989 -> 0 bytes
 doc/html/classONE__CLASS__Q-members.html           |    84 -
 doc/html/classONE__CLASS__Q.html                   |   125 -
 doc/html/classONE__CLASS__Q__coll__graph.map       |     4 -
 doc/html/classONE__CLASS__Q__coll__graph.md5       |     1 -
 doc/html/classONE__CLASS__Q__coll__graph.png       |   Bin 4588 -> 0 bytes
 doc/html/classONE__CLASS__Q__inherit__graph.map    |     4 -
 doc/html/classONE__CLASS__Q__inherit__graph.md5    |     1 -
 doc/html/classONE__CLASS__Q__inherit__graph.png    |   Bin 4588 -> 0 bytes
 doc/html/classOptFactory-members.html              |    77 -
 doc/html/classOptFactory.html                      |    87 -
 doc/html/classOptionpk-members.html                |    98 -
 doc/html/classOptionpk.html                        |   495 -
 doc/html/classOptionpk__coll__graph.map            |     3 -
 doc/html/classOptionpk__coll__graph.md5            |     1 -
 doc/html/classOptionpk__coll__graph.png            |   Bin 4442 -> 0 bytes
 doc/html/classOptionpk__inherit__graph.map         |     3 -
 doc/html/classOptionpk__inherit__graph.md5         |     1 -
 doc/html/classOptionpk__inherit__graph.png         |   Bin 3334 -> 0 bytes
 doc/html/classQMatrix-members.html                 |    78 -
 doc/html/classQMatrix.html                         |   100 -
 doc/html/classQMatrix__inherit__graph.map          |     6 -
 doc/html/classQMatrix__inherit__graph.md5          |     1 -
 doc/html/classQMatrix__inherit__graph.png          |   Bin 8158 -> 0 bytes
 doc/html/classSVC__Q-members.html                  |    84 -
 doc/html/classSVC__Q.html                          |   125 -
 doc/html/classSVC__Q__coll__graph.map              |     4 -
 doc/html/classSVC__Q__coll__graph.md5              |     1 -
 doc/html/classSVC__Q__coll__graph.png              |   Bin 3995 -> 0 bytes
 doc/html/classSVC__Q__inherit__graph.map           |     4 -
 doc/html/classSVC__Q__inherit__graph.md5           |     1 -
 doc/html/classSVC__Q__inherit__graph.png           |   Bin 3995 -> 0 bytes
 doc/html/classSVR__Q-members.html                  |    84 -
 doc/html/classSVR__Q.html                          |   125 -
 doc/html/classSVR__Q__coll__graph.map              |     4 -
 doc/html/classSVR__Q__coll__graph.md5              |     1 -
 doc/html/classSVR__Q__coll__graph.png              |   Bin 3960 -> 0 bytes
 doc/html/classSVR__Q__inherit__graph.map           |     4 -
 doc/html/classSVR__Q__inherit__graph.md5           |     1 -
 doc/html/classSVR__Q__inherit__graph.png           |   Bin 3960 -> 0 bytes
 doc/html/classSolver-members.html                  |   105 -
 doc/html/classSolver.html                          |   199 -
 doc/html/classSolver__NU-members.html              |   103 -
 doc/html/classSolver__NU.html                      |   182 -
 doc/html/classSolver__NU__coll__graph.map          |     4 -
 doc/html/classSolver__NU__coll__graph.md5          |     1 -
 doc/html/classSolver__NU__coll__graph.png          |   Bin 4294 -> 0 bytes
 doc/html/classSolver__NU__inherit__graph.map       |     3 -
 doc/html/classSolver__NU__inherit__graph.md5       |     1 -
 doc/html/classSolver__NU__inherit__graph.png       |   Bin 2528 -> 0 bytes
 doc/html/classSolver__coll__graph.map              |     3 -
 doc/html/classSolver__coll__graph.md5              |     1 -
 doc/html/classSolver__coll__graph.png              |   Bin 2681 -> 0 bytes
 doc/html/classSolver__inherit__graph.map           |     3 -
 doc/html/classSolver__inherit__graph.md5           |     1 -
 doc/html/classSolver__inherit__graph.png           |   Bin 2565 -> 0 bytes
 doc/html/classUi_1_1MainWindow-members.html        |   262 -
 doc/html/classUi_1_1MainWindow.html                |   655 -
 doc/html/classUi_1_1MainWindow__coll__graph.map    |     3 -
 doc/html/classUi_1_1MainWindow__coll__graph.md5    |     1 -
 doc/html/classUi_1_1MainWindow__coll__graph.png    |   Bin 11136 -> 0 bytes
 doc/html/classUi_1_1MainWindow__inherit__graph.map |     3 -
 doc/html/classUi_1_1MainWindow__inherit__graph.md5 |     1 -
 doc/html/classUi_1_1MainWindow__inherit__graph.png |   Bin 11136 -> 0 bytes
 doc/html/classUi__MainWindow-members.html          |   258 -
 doc/html/classUi__MainWindow.html                  |   647 -
 doc/html/classUi__MainWindow__inherit__graph.map   |     3 -
 doc/html/classUi__MainWindow__inherit__graph.md5   |     1 -
 doc/html/classUi__MainWindow__inherit__graph.png   |   Bin 11097 -> 0 bytes
 doc/html/classVector2d-members.html                |   101 -
 doc/html/classVector2d.html                        |   181 -
 doc/html/classVector2d__coll__graph.map            |     3 -
 doc/html/classVector2d__coll__graph.md5            |     1 -
 doc/html/classVector2d__coll__graph.png            |   Bin 4921 -> 0 bytes
 doc/html/classVector2d__inherit__graph.map         |     3 -
 doc/html/classVector2d__inherit__graph.md5         |     1 -
 doc/html/classVector2d__inherit__graph.png         |   Bin 3799 -> 0 bytes
 ...confusionmatrix_1_1ConfusionMatrix-members.html |   117 -
 .../classconfusionmatrix_1_1ConfusionMatrix.html   |   208 -
 doc/html/classes.html                              |   123 -
 doc/html/classfilter2d_1_1Filter2d-members.html    |   124 -
 doc/html/classfilter2d_1_1Filter2d.html            |   239 -
 doc/html/classfilter_1_1Filter-members.html        |   153 -
 doc/html/classfilter_1_1Filter.html                |   329 -
 ...lassimgregression_1_1ImgRegression-members.html |    88 -
 doc/html/classimgregression_1_1ImgRegression.html  |   113 -
 ...sPlugin_1_1ProcessingPktoolsPlugin-members.html |    82 -
 ...ngPktoolsPlugin_1_1ProcessingPktoolsPlugin.html |   104 -
 ...qgis_1_1pkcomposite_1_1pkcomposite-members.html |   101 -
 .../classqgis_1_1pkcomposite_1_1pkcomposite.html   |   175 -
 ..._1_1pkcomposite_1_1pkcomposite__coll__graph.map |     2 -
 ..._1_1pkcomposite_1_1pkcomposite__coll__graph.md5 |     1 -
 ..._1_1pkcomposite_1_1pkcomposite__coll__graph.png |   Bin 3748 -> 0 bytes
 ...1pkcomposite_1_1pkcomposite__inherit__graph.map |     2 -
 ...1pkcomposite_1_1pkcomposite__inherit__graph.md5 |     1 -
 ...1pkcomposite_1_1pkcomposite__inherit__graph.png |   Bin 3748 -> 0 bytes
 .../classqgis_1_1pkcrop_1_1pkcrop-members.html     |    95 -
 doc/html/classqgis_1_1pkcrop_1_1pkcrop.html        |   157 -
 .../classqgis_1_1pkcrop_1_1pkcrop__coll__graph.map |     2 -
 .../classqgis_1_1pkcrop_1_1pkcrop__coll__graph.md5 |     1 -
 .../classqgis_1_1pkcrop_1_1pkcrop__coll__graph.png |   Bin 3345 -> 0 bytes
 ...assqgis_1_1pkcrop_1_1pkcrop__inherit__graph.map |     2 -
 ...assqgis_1_1pkcrop_1_1pkcrop__inherit__graph.md5 |     1 -
 ...assqgis_1_1pkcrop_1_1pkcrop__inherit__graph.png |   Bin 3345 -> 0 bytes
 ...diff__accuracy_1_1pkdiff__accuracy-members.html |    95 -
 ...is_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html |   157 -
 ...__accuracy_1_1pkdiff__accuracy__coll__graph.map |     2 -
 ...__accuracy_1_1pkdiff__accuracy__coll__graph.md5 |     1 -
 ...__accuracy_1_1pkdiff__accuracy__coll__graph.png |   Bin 4122 -> 0 bytes
 ...ccuracy_1_1pkdiff__accuracy__inherit__graph.map |     2 -
 ...ccuracy_1_1pkdiff__accuracy__inherit__graph.md5 |     1 -
 ...ccuracy_1_1pkdiff__accuracy__inherit__graph.png |   Bin 4122 -> 0 bytes
 ...lassqgis_1_1pkextract_1_1pkextract-members.html |    95 -
 doc/html/classqgis_1_1pkextract_1_1pkextract.html  |   157 -
 ...qgis_1_1pkextract_1_1pkextract__coll__graph.map |     2 -
 ...qgis_1_1pkextract_1_1pkextract__coll__graph.md5 |     1 -
 ...qgis_1_1pkextract_1_1pkextract__coll__graph.png |   Bin 3693 -> 0 bytes
 ...s_1_1pkextract_1_1pkextract__inherit__graph.map |     2 -
 ...s_1_1pkextract_1_1pkextract__inherit__graph.md5 |     1 -
 ...s_1_1pkextract_1_1pkextract__inherit__graph.png |   Bin 3693 -> 0 bytes
 ...pkextract__grid_1_1pkextract__grid-members.html |    94 -
 ...qgis_1_1pkextract__grid_1_1pkextract__grid.html |   154 -
 ...tract__grid_1_1pkextract__grid__coll__graph.map |     2 -
 ...tract__grid_1_1pkextract__grid__coll__graph.md5 |     1 -
 ...tract__grid_1_1pkextract__grid__coll__graph.png |   Bin 3963 -> 0 bytes
 ...ct__grid_1_1pkextract__grid__inherit__graph.map |     2 -
 ...ct__grid_1_1pkextract__grid__inherit__graph.md5 |     1 -
 ...ct__grid_1_1pkextract__grid__inherit__graph.png |   Bin 3963 -> 0 bytes
 ...tract__random_1_1pkextract__random-members.html |    94 -
 ..._1_1pkextract__random_1_1pkextract__random.html |   154 -
 ...t__random_1_1pkextract__random__coll__graph.map |     2 -
 ...t__random_1_1pkextract__random__coll__graph.md5 |     1 -
 ...t__random_1_1pkextract__random__coll__graph.png |   Bin 4468 -> 0 bytes
 ...random_1_1pkextract__random__inherit__graph.map |     2 -
 ...random_1_1pkextract__random__inherit__graph.md5 |     1 -
 ...random_1_1pkextract__random__inherit__graph.png |   Bin 4468 -> 0 bytes
 ...lter__spatial_1_1pkfilter__spatial-members.html |    94 -
 ..._1_1pkfilter__spatial_1_1pkfilter__spatial.html |   154 -
 ...__spatial_1_1pkfilter__spatial__coll__graph.map |     2 -
 ...__spatial_1_1pkfilter__spatial__coll__graph.md5 |     1 -
 ...__spatial_1_1pkfilter__spatial__coll__graph.png |   Bin 4288 -> 0 bytes
 ...patial_1_1pkfilter__spatial__inherit__graph.map |     2 -
 ...patial_1_1pkfilter__spatial__inherit__graph.md5 |     1 -
 ...patial_1_1pkfilter__spatial__inherit__graph.png |   Bin 4288 -> 0 bytes
 ...er__spectral_1_1pkfilter__spectral-members.html |    94 -
 ..._1pkfilter__spectral_1_1pkfilter__spectral.html |   154 -
 ...spectral_1_1pkfilter__spectral__coll__graph.map |     2 -
 ...spectral_1_1pkfilter__spectral__coll__graph.md5 |     1 -
 ...spectral_1_1pkfilter__spectral__coll__graph.png |   Bin 4449 -> 0 bytes
 ...ctral_1_1pkfilter__spectral__inherit__graph.map |     2 -
 ...ctral_1_1pkfilter__spectral__inherit__graph.md5 |     1 -
 ...ctral_1_1pkfilter__spectral__inherit__graph.png |   Bin 4449 -> 0 bytes
 ...qgis_1_1pkfilterdem_1_1pkfilterdem-members.html |    91 -
 .../classqgis_1_1pkfilterdem_1_1pkfilterdem.html   |   145 -
 ..._1_1pkfilterdem_1_1pkfilterdem__coll__graph.map |     2 -
 ..._1_1pkfilterdem_1_1pkfilterdem__coll__graph.md5 |     1 -
 ..._1_1pkfilterdem_1_1pkfilterdem__coll__graph.png |   Bin 3591 -> 0 bytes
 ...1pkfilterdem_1_1pkfilterdem__inherit__graph.map |     2 -
 ...1pkfilterdem_1_1pkfilterdem__inherit__graph.md5 |     1 -
 ...1pkfilterdem_1_1pkfilterdem__inherit__graph.png |   Bin 3591 -> 0 bytes
 ...lassqgis_1_1pkgetmask_1_1pkgetmask-members.html |    95 -
 doc/html/classqgis_1_1pkgetmask_1_1pkgetmask.html  |   157 -
 ...qgis_1_1pkgetmask_1_1pkgetmask__coll__graph.map |     2 -
 ...qgis_1_1pkgetmask_1_1pkgetmask__coll__graph.md5 |     1 -
 ...qgis_1_1pkgetmask_1_1pkgetmask__coll__graph.png |   Bin 3619 -> 0 bytes
 ...s_1_1pkgetmask_1_1pkgetmask__inherit__graph.map |     2 -
 ...s_1_1pkgetmask_1_1pkgetmask__inherit__graph.md5 |     1 -
 ...s_1_1pkgetmask_1_1pkgetmask__inherit__graph.png |   Bin 3619 -> 0 bytes
 ...lassqgis_1_1pklas2img_1_1pklas2img-members.html |    98 -
 doc/html/classqgis_1_1pklas2img_1_1pklas2img.html  |   166 -
 ...qgis_1_1pklas2img_1_1pklas2img__coll__graph.map |     2 -
 ...qgis_1_1pklas2img_1_1pklas2img__coll__graph.md5 |     1 -
 ...qgis_1_1pklas2img_1_1pklas2img__coll__graph.png |   Bin 3589 -> 0 bytes
 ...s_1_1pklas2img_1_1pklas2img__inherit__graph.map |     2 -
 ...s_1_1pklas2img_1_1pklas2img__inherit__graph.md5 |     1 -
 ...s_1_1pklas2img_1_1pklas2img__inherit__graph.png |   Bin 3589 -> 0 bytes
 ...lassqgis_1_1pkreclass_1_1pkreclass-members.html |    94 -
 doc/html/classqgis_1_1pkreclass_1_1pkreclass.html  |   154 -
 ...qgis_1_1pkreclass_1_1pkreclass__coll__graph.map |     2 -
 ...qgis_1_1pkreclass_1_1pkreclass__coll__graph.md5 |     1 -
 ...qgis_1_1pkreclass_1_1pkreclass__coll__graph.png |   Bin 3554 -> 0 bytes
 ...s_1_1pkreclass_1_1pkreclass__inherit__graph.map |     2 -
 ...s_1_1pkreclass_1_1pkreclass__inherit__graph.md5 |     1 -
 ...s_1_1pkreclass_1_1pkreclass__inherit__graph.png |   Bin 3554 -> 0 bytes
 ...lassqgis_1_1pksetmask_1_1pksetmask-members.html |    94 -
 doc/html/classqgis_1_1pksetmask_1_1pksetmask.html  |   154 -
 ...qgis_1_1pksetmask_1_1pksetmask__coll__graph.map |     2 -
 ...qgis_1_1pksetmask_1_1pksetmask__coll__graph.md5 |     1 -
 ...qgis_1_1pksetmask_1_1pksetmask__coll__graph.png |   Bin 3569 -> 0 bytes
 ...s_1_1pksetmask_1_1pksetmask__inherit__graph.map |     2 -
 ...s_1_1pksetmask_1_1pksetmask__inherit__graph.md5 |     1 -
 ...s_1_1pksetmask_1_1pksetmask__inherit__graph.png |   Bin 3569 -> 0 bytes
 doc/html/classqgis_1_1pksvm_1_1pksvm-members.html  |    93 -
 doc/html/classqgis_1_1pksvm_1_1pksvm.html          |   151 -
 .../classqgis_1_1pksvm_1_1pksvm__coll__graph.map   |     2 -
 .../classqgis_1_1pksvm_1_1pksvm__coll__graph.md5   |     1 -
 .../classqgis_1_1pksvm_1_1pksvm__coll__graph.png   |   Bin 3243 -> 0 bytes
 ...classqgis_1_1pksvm_1_1pksvm__inherit__graph.map |     2 -
 ...classqgis_1_1pksvm_1_1pksvm__inherit__graph.md5 |     1 -
 ...classqgis_1_1pksvm_1_1pksvm__inherit__graph.png |   Bin 3243 -> 0 bytes
 ...orithmProvider_1_1pktoolsAlgorithmProvider.html |   251 -
 ...toolsAlgorithm_1_1pktoolsAlgorithm-members.html |    81 -
 ...is_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html |   107 -
 ...sAlgorithm_1_1pktoolsAlgorithm__coll__graph.map |     2 -
 ...sAlgorithm_1_1pktoolsAlgorithm__coll__graph.md5 |     1 -
 ...sAlgorithm_1_1pktoolsAlgorithm__coll__graph.png |   Bin 4565 -> 0 bytes
 ...gorithm_1_1pktoolsAlgorithm__inherit__graph.map |     2 -
 ...gorithm_1_1pktoolsAlgorithm__inherit__graph.md5 |     1 -
 ...gorithm_1_1pktoolsAlgorithm__inherit__graph.png |   Bin 4565 -> 0 bytes
 ...is_1_1pktoolsUtils_1_1pktoolsUtils-members.html |    81 -
 .../classqgis_1_1pktoolsUtils_1_1pktoolsUtils.html |   101 -
 ...ools_1_1pkcomposite_1_1pkcomposite-members.html |   101 -
 ...s_1_1pktools_1_1pkcomposite_1_1pkcomposite.html |   175 -
 ..._1_1pkcomposite_1_1pkcomposite__coll__graph.map |     2 -
 ..._1_1pkcomposite_1_1pkcomposite__coll__graph.md5 |     1 -
 ..._1_1pkcomposite_1_1pkcomposite__coll__graph.png |   Bin 3833 -> 0 bytes
 ...1pkcomposite_1_1pkcomposite__inherit__graph.map |     2 -
 ...1pkcomposite_1_1pkcomposite__inherit__graph.md5 |     1 -
 ...1pkcomposite_1_1pkcomposite__inherit__graph.png |   Bin 3833 -> 0 bytes
 ...gis_1_1pktools_1_1pkcrop_1_1pkcrop-members.html |    95 -
 .../classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html  |   157 -
 ...1_1pktools_1_1pkcrop_1_1pkcrop__coll__graph.map |     2 -
 ...1_1pktools_1_1pkcrop_1_1pkcrop__coll__graph.md5 |     1 -
 ...1_1pktools_1_1pkcrop_1_1pkcrop__coll__graph.png |   Bin 3561 -> 0 bytes
 ...pktools_1_1pkcrop_1_1pkcrop__inherit__graph.map |     2 -
 ...pktools_1_1pkcrop_1_1pkcrop__inherit__graph.md5 |     1 -
 ...pktools_1_1pkcrop_1_1pkcrop__inherit__graph.png |   Bin 3561 -> 0 bytes
 ...diff__accuracy_1_1pkdiff__accuracy-members.html |    95 -
 ...ls_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html |   157 -
 ...__accuracy_1_1pkdiff__accuracy__coll__graph.map |     2 -
 ...__accuracy_1_1pkdiff__accuracy__coll__graph.md5 |     1 -
 ...__accuracy_1_1pkdiff__accuracy__coll__graph.png |   Bin 4317 -> 0 bytes
 ...1pktools_1_1pkextract_1_1pkextract-members.html |    95 -
 ...sqgis_1_1pktools_1_1pkextract_1_1pkextract.html |   157 -
 ...ools_1_1pkextract_1_1pkextract__coll__graph.map |     2 -
 ...ools_1_1pkextract_1_1pkextract__coll__graph.md5 |     1 -
 ...ools_1_1pkextract_1_1pkextract__coll__graph.png |   Bin 4375 -> 0 bytes
 ...s_1_1pkextract_1_1pkextract__inherit__graph.map |     2 -
 ...s_1_1pkextract_1_1pkextract__inherit__graph.md5 |     1 -
 ...s_1_1pkextract_1_1pkextract__inherit__graph.png |   Bin 4375 -> 0 bytes
 ...pkextract__grid_1_1pkextract__grid-members.html |    94 -
 ...ools_1_1pkextract__grid_1_1pkextract__grid.html |   154 -
 ...tract__grid_1_1pkextract__grid__coll__graph.map |     2 -
 ...tract__grid_1_1pkextract__grid__coll__graph.md5 |     1 -
 ...tract__grid_1_1pkextract__grid__coll__graph.png |   Bin 4317 -> 0 bytes
 ...tract__random_1_1pkextract__random-members.html |    94 -
 ..._1_1pkextract__random_1_1pkextract__random.html |   154 -
 ...lter__spatial_1_1pkfilter__spatial-members.html |    94 -
 ..._1_1pkfilter__spatial_1_1pkfilter__spatial.html |   154 -
 ...er__spectral_1_1pkfilter__spectral-members.html |    94 -
 ..._1pkfilter__spectral_1_1pkfilter__spectral.html |   154 -
 ...ools_1_1pkfilterdem_1_1pkfilterdem-members.html |    91 -
 ...s_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html |   145 -
 ..._1_1pkfilterdem_1_1pkfilterdem__coll__graph.map |     2 -
 ..._1_1pkfilterdem_1_1pkfilterdem__coll__graph.md5 |     1 -
 ..._1_1pkfilterdem_1_1pkfilterdem__coll__graph.png |   Bin 3843 -> 0 bytes
 ...1pkfilterdem_1_1pkfilterdem__inherit__graph.map |     2 -
 ...1pkfilterdem_1_1pkfilterdem__inherit__graph.md5 |     1 -
 ...1pkfilterdem_1_1pkfilterdem__inherit__graph.png |   Bin 3843 -> 0 bytes
 ...1pktools_1_1pkgetmask_1_1pkgetmask-members.html |    95 -
 ...sqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html |   157 -
 ...ools_1_1pkgetmask_1_1pkgetmask__coll__graph.map |     2 -
 ...ools_1_1pkgetmask_1_1pkgetmask__coll__graph.md5 |     1 -
 ...ools_1_1pkgetmask_1_1pkgetmask__coll__graph.png |   Bin 3889 -> 0 bytes
 ...s_1_1pkgetmask_1_1pkgetmask__inherit__graph.map |     2 -
 ...s_1_1pkgetmask_1_1pkgetmask__inherit__graph.md5 |     1 -
 ...s_1_1pkgetmask_1_1pkgetmask__inherit__graph.png |   Bin 3889 -> 0 bytes
 ...1pktools_1_1pklas2img_1_1pklas2img-members.html |    98 -
 ...sqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html |   166 -
 ...ools_1_1pklas2img_1_1pklas2img__coll__graph.map |     2 -
 ...ools_1_1pklas2img_1_1pklas2img__coll__graph.md5 |     1 -
 ...ools_1_1pklas2img_1_1pklas2img__coll__graph.png |   Bin 3890 -> 0 bytes
 ...s_1_1pklas2img_1_1pklas2img__inherit__graph.map |     2 -
 ...s_1_1pklas2img_1_1pklas2img__inherit__graph.md5 |     1 -
 ...s_1_1pklas2img_1_1pklas2img__inherit__graph.png |   Bin 3890 -> 0 bytes
 ...1pktools_1_1pkreclass_1_1pkreclass-members.html |    94 -
 ...sqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html |   154 -
 ...ools_1_1pkreclass_1_1pkreclass__coll__graph.map |     2 -
 ...ools_1_1pkreclass_1_1pkreclass__coll__graph.md5 |     1 -
 ...ools_1_1pkreclass_1_1pkreclass__coll__graph.png |   Bin 3859 -> 0 bytes
 ...s_1_1pkreclass_1_1pkreclass__inherit__graph.map |     2 -
 ...s_1_1pkreclass_1_1pkreclass__inherit__graph.md5 |     1 -
 ...s_1_1pkreclass_1_1pkreclass__inherit__graph.png |   Bin 3859 -> 0 bytes
 ...1pktools_1_1pksetmask_1_1pksetmask-members.html |    94 -
 ...sqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html |   154 -
 ...ools_1_1pksetmask_1_1pksetmask__coll__graph.map |     2 -
 ...ools_1_1pksetmask_1_1pksetmask__coll__graph.md5 |     1 -
 ...ools_1_1pksetmask_1_1pksetmask__coll__graph.png |   Bin 3825 -> 0 bytes
 ...s_1_1pksetmask_1_1pksetmask__inherit__graph.map |     2 -
 ...s_1_1pksetmask_1_1pksetmask__inherit__graph.md5 |     1 -
 ...s_1_1pksetmask_1_1pksetmask__inherit__graph.png |   Bin 3825 -> 0 bytes
 ...sqgis_1_1pktools_1_1pksvm_1_1pksvm-members.html |    93 -
 .../classqgis_1_1pktools_1_1pksvm_1_1pksvm.html    |   151 -
 ...s_1_1pktools_1_1pksvm_1_1pksvm__coll__graph.map |     2 -
 ...s_1_1pktools_1_1pksvm_1_1pksvm__coll__graph.md5 |     1 -
 ...s_1_1pktools_1_1pksvm_1_1pksvm__coll__graph.png |   Bin 3563 -> 0 bytes
 ..._1pktools_1_1pksvm_1_1pksvm__inherit__graph.map |     2 -
 ..._1pktools_1_1pksvm_1_1pksvm__inherit__graph.md5 |     1 -
 ..._1pktools_1_1pksvm_1_1pksvm__inherit__graph.png |   Bin 3563 -> 0 bytes
 ...toolsAlgorithm_1_1pktoolsAlgorithm-members.html |    81 -
 ...ls_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html |   107 -
 ...sAlgorithm_1_1pktoolsAlgorithm__coll__graph.map |     2 -
 ...sAlgorithm_1_1pktoolsAlgorithm__coll__graph.md5 |     1 -
 ...sAlgorithm_1_1pktoolsAlgorithm__coll__graph.png |   Bin 4162 -> 0 bytes
 ...ls_1_1pktoolsUtils_1_1pktoolsUtils-members.html |    81 -
 ...1_1pktools_1_1pktoolsUtils_1_1pktoolsUtils.html |   101 -
 .../classstatfactory_1_1StatFactory-members.html   |   164 -
 doc/html/classstatfactory_1_1StatFactory.html      |   391 -
 doc/html/closed.png                                |   Bin 132 -> 0 bytes
 doc/html/config_8h_source.html                     |   149 -
 doc/html/dir_0af1587c8378955de40f48b4bd1869f0.html |    90 -
 .../dir_0af1587c8378955de40f48b4bd1869f0_dep.map   |     4 -
 .../dir_0af1587c8378955de40f48b4bd1869f0_dep.md5   |     1 -
 .../dir_0af1587c8378955de40f48b4bd1869f0_dep.png   |   Bin 1811 -> 0 bytes
 doc/html/dir_0d45166ba6790a432639a127a727f02c.html |    80 -
 .../dir_0d45166ba6790a432639a127a727f02c_dep.map   |     4 -
 .../dir_0d45166ba6790a432639a127a727f02c_dep.md5   |     1 -
 .../dir_0d45166ba6790a432639a127a727f02c_dep.png   |   Bin 2299 -> 0 bytes
 doc/html/dir_0f38b5d14ac73b43e2a48a75f9e70be8.html |    82 -
 .../dir_0f38b5d14ac73b43e2a48a75f9e70be8_dep.map   |     4 -
 .../dir_0f38b5d14ac73b43e2a48a75f9e70be8_dep.md5   |     1 -
 .../dir_0f38b5d14ac73b43e2a48a75f9e70be8_dep.png   |   Bin 2949 -> 0 bytes
 doc/html/dir_0f63d6441a2c250919e1e8723011eb2f.html |   108 -
 .../dir_0f63d6441a2c250919e1e8723011eb2f_dep.map   |    18 -
 .../dir_0f63d6441a2c250919e1e8723011eb2f_dep.md5   |     1 -
 .../dir_0f63d6441a2c250919e1e8723011eb2f_dep.png   |   Bin 6815 -> 0 bytes
 doc/html/dir_2676862852e3d558e3597542a81ecc63.html |    84 -
 .../dir_2676862852e3d558e3597542a81ecc63_dep.map   |     4 -
 .../dir_2676862852e3d558e3597542a81ecc63_dep.md5   |     1 -
 .../dir_2676862852e3d558e3597542a81ecc63_dep.png   |   Bin 2481 -> 0 bytes
 doc/html/dir_280a0ba2820d23d6529bf494f1ea3ddd.html |    82 -
 .../dir_280a0ba2820d23d6529bf494f1ea3ddd_dep.map   |     4 -
 .../dir_280a0ba2820d23d6529bf494f1ea3ddd_dep.md5   |     1 -
 .../dir_280a0ba2820d23d6529bf494f1ea3ddd_dep.png   |   Bin 3342 -> 0 bytes
 doc/html/dir_35acdce8930fac877097c845a64519e5.html |    84 -
 .../dir_35acdce8930fac877097c845a64519e5_dep.map   |     4 -
 .../dir_35acdce8930fac877097c845a64519e5_dep.md5   |     1 -
 .../dir_35acdce8930fac877097c845a64519e5_dep.png   |   Bin 2128 -> 0 bytes
 doc/html/dir_41d189c72498e24f979b227eb8e138b1.html |    82 -
 .../dir_41d189c72498e24f979b227eb8e138b1_dep.map   |     4 -
 .../dir_41d189c72498e24f979b227eb8e138b1_dep.md5   |     1 -
 .../dir_41d189c72498e24f979b227eb8e138b1_dep.png   |   Bin 3423 -> 0 bytes
 doc/html/dir_457de909e3893805a4d2d0b8c0742bd8.html |    85 -
 .../dir_457de909e3893805a4d2d0b8c0742bd8_dep.map   |     4 -
 .../dir_457de909e3893805a4d2d0b8c0742bd8_dep.md5   |     1 -
 .../dir_457de909e3893805a4d2d0b8c0742bd8_dep.png   |   Bin 2113 -> 0 bytes
 doc/html/dir_4dfaa1fe1382d1276d1c80b1d5035ade.html |    82 -
 .../dir_4dfaa1fe1382d1276d1c80b1d5035ade_dep.map   |     4 -
 .../dir_4dfaa1fe1382d1276d1c80b1d5035ade_dep.md5   |     1 -
 .../dir_4dfaa1fe1382d1276d1c80b1d5035ade_dep.png   |   Bin 3167 -> 0 bytes
 doc/html/dir_53adf0b982dc8545998aae3f283a5a58.html |   155 -
 .../dir_53adf0b982dc8545998aae3f283a5a58_dep.map   |     5 -
 .../dir_53adf0b982dc8545998aae3f283a5a58_dep.md5   |     1 -
 .../dir_53adf0b982dc8545998aae3f283a5a58_dep.png   |   Bin 2699 -> 0 bytes
 doc/html/dir_5785acc8d2e42f8795bdbe936856f26d.html |   121 -
 .../dir_5785acc8d2e42f8795bdbe936856f26d_dep.map   |     4 -
 .../dir_5785acc8d2e42f8795bdbe936856f26d_dep.md5   |     1 -
 .../dir_5785acc8d2e42f8795bdbe936856f26d_dep.png   |   Bin 1970 -> 0 bytes
 doc/html/dir_5f1e10fd305b434def78aaf73fd56d60.html |    82 -
 .../dir_5f1e10fd305b434def78aaf73fd56d60_dep.map   |     4 -
 .../dir_5f1e10fd305b434def78aaf73fd56d60_dep.md5   |     1 -
 .../dir_5f1e10fd305b434def78aaf73fd56d60_dep.png   |   Bin 2859 -> 0 bytes
 doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html |    90 -
 .../dir_68267d1309a1af8e8297ef4c3efbcdba_dep.map   |     9 -
 .../dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5   |     1 -
 .../dir_68267d1309a1af8e8297ef4c3efbcdba_dep.png   |   Bin 3609 -> 0 bytes
 doc/html/dir_6d2fd95b0bd390617ad5a1eb4a537b4a.html |   104 -
 .../dir_6d2fd95b0bd390617ad5a1eb4a537b4a_dep.map   |     4 -
 .../dir_6d2fd95b0bd390617ad5a1eb4a537b4a_dep.md5   |     1 -
 .../dir_6d2fd95b0bd390617ad5a1eb4a537b4a_dep.png   |   Bin 2340 -> 0 bytes
 doc/html/dir_849702d4228bd835bdf1201002937cb3.html |    82 -
 .../dir_849702d4228bd835bdf1201002937cb3_dep.map   |     4 -
 .../dir_849702d4228bd835bdf1201002937cb3_dep.md5   |     1 -
 .../dir_849702d4228bd835bdf1201002937cb3_dep.png   |   Bin 2018 -> 0 bytes
 doc/html/dir_89a0bd85ecec8fbb2c320310670be290.html |    82 -
 .../dir_89a0bd85ecec8fbb2c320310670be290_dep.map   |     4 -
 .../dir_89a0bd85ecec8fbb2c320310670be290_dep.md5   |     1 -
 .../dir_89a0bd85ecec8fbb2c320310670be290_dep.png   |   Bin 1924 -> 0 bytes
 doc/html/dir_ab1bbd5a6b4bd6507847335527b029bb.html |    84 -
 .../dir_ab1bbd5a6b4bd6507847335527b029bb_dep.map   |     4 -
 .../dir_ab1bbd5a6b4bd6507847335527b029bb_dep.md5   |     1 -
 .../dir_ab1bbd5a6b4bd6507847335527b029bb_dep.png   |   Bin 2640 -> 0 bytes
 doc/html/dir_b66e135988e27fdc966ddddb8708f514.html |    84 -
 .../dir_b66e135988e27fdc966ddddb8708f514_dep.map   |     4 -
 .../dir_b66e135988e27fdc966ddddb8708f514_dep.md5   |     1 -
 .../dir_b66e135988e27fdc966ddddb8708f514_dep.png   |   Bin 2172 -> 0 bytes
 doc/html/dir_b6b6de371025fb67c6b8623f3d3cd2ce.html |    84 -
 .../dir_b6b6de371025fb67c6b8623f3d3cd2ce_dep.map   |     4 -
 .../dir_b6b6de371025fb67c6b8623f3d3cd2ce_dep.md5   |     1 -
 .../dir_b6b6de371025fb67c6b8623f3d3cd2ce_dep.png   |   Bin 1933 -> 0 bytes
 doc/html/dir_b7cc22b4453454f1e686d9a2e78d988d.html |   116 -
 .../dir_b7cc22b4453454f1e686d9a2e78d988d_dep.map   |     4 -
 .../dir_b7cc22b4453454f1e686d9a2e78d988d_dep.md5   |     1 -
 .../dir_b7cc22b4453454f1e686d9a2e78d988d_dep.png   |   Bin 2189 -> 0 bytes
 doc/html/dir_b8eb6544d8d9ffceba16909a7b9d17d7.html |    82 -
 .../dir_b8eb6544d8d9ffceba16909a7b9d17d7_dep.map   |     4 -
 .../dir_b8eb6544d8d9ffceba16909a7b9d17d7_dep.md5   |     1 -
 .../dir_b8eb6544d8d9ffceba16909a7b9d17d7_dep.png   |   Bin 3559 -> 0 bytes
 doc/html/dir_d7b2ebecdb5f44d7fa09bdedebc881a7.html |    82 -
 .../dir_d7b2ebecdb5f44d7fa09bdedebc881a7_dep.map   |     4 -
 .../dir_d7b2ebecdb5f44d7fa09bdedebc881a7_dep.md5   |     1 -
 .../dir_d7b2ebecdb5f44d7fa09bdedebc881a7_dep.png   |   Bin 3237 -> 0 bytes
 doc/html/dir_e28b2035b152bb51229fe7a0fca4e376.html |    84 -
 .../dir_e28b2035b152bb51229fe7a0fca4e376_dep.map   |     4 -
 .../dir_e28b2035b152bb51229fe7a0fca4e376_dep.md5   |     1 -
 .../dir_e28b2035b152bb51229fe7a0fca4e376_dep.png   |   Bin 2228 -> 0 bytes
 doc/html/dir_e61db0d85028141ec5940fd7f2a6e0fc.html |    82 -
 .../dir_e61db0d85028141ec5940fd7f2a6e0fc_dep.map   |     4 -
 .../dir_e61db0d85028141ec5940fd7f2a6e0fc_dep.md5   |     1 -
 .../dir_e61db0d85028141ec5940fd7f2a6e0fc_dep.png   |   Bin 3205 -> 0 bytes
 doc/html/dir_e6df591b0639d4c4807ef64d058833e2.html |   118 -
 .../dir_e6df591b0639d4c4807ef64d058833e2_dep.map   |     4 -
 .../dir_e6df591b0639d4c4807ef64d058833e2_dep.md5   |     1 -
 .../dir_e6df591b0639d4c4807ef64d058833e2_dep.png   |   Bin 2355 -> 0 bytes
 doc/html/dir_ed1df9621940d6aa1183c365ad1750d2.html |    82 -
 .../dir_ed1df9621940d6aa1183c365ad1750d2_dep.map   |     4 -
 .../dir_ed1df9621940d6aa1183c365ad1750d2_dep.md5   |     1 -
 .../dir_ed1df9621940d6aa1183c365ad1750d2_dep.png   |   Bin 3342 -> 0 bytes
 doc/html/dir_f92e37ed5759424bff98155847b1034b.html |    82 -
 .../dir_f92e37ed5759424bff98155847b1034b_dep.map   |     4 -
 .../dir_f92e37ed5759424bff98155847b1034b_dep.md5   |     1 -
 .../dir_f92e37ed5759424bff98155847b1034b_dep.png   |   Bin 3299 -> 0 bytes
 doc/html/doxygen.css                               |  1366 --
 doc/html/doxygen.png                               |   Bin 3779 -> 0 bytes
 doc/html/dynsections.js                            |   104 -
 doc/html/files.html                                |   254 -
 doc/html/ftv2blank.png                             |   Bin 86 -> 0 bytes
 doc/html/ftv2cl.png                                |   Bin 453 -> 0 bytes
 doc/html/ftv2doc.png                               |   Bin 746 -> 0 bytes
 doc/html/ftv2folderclosed.png                      |   Bin 616 -> 0 bytes
 doc/html/ftv2folderopen.png                        |   Bin 597 -> 0 bytes
 doc/html/ftv2lastnode.png                          |   Bin 86 -> 0 bytes
 doc/html/ftv2link.png                              |   Bin 746 -> 0 bytes
 doc/html/ftv2mlastnode.png                         |   Bin 246 -> 0 bytes
 doc/html/ftv2mnode.png                             |   Bin 246 -> 0 bytes
 doc/html/ftv2mo.png                                |   Bin 403 -> 0 bytes
 doc/html/ftv2node.png                              |   Bin 86 -> 0 bytes
 doc/html/ftv2ns.png                                |   Bin 388 -> 0 bytes
 doc/html/ftv2plastnode.png                         |   Bin 229 -> 0 bytes
 doc/html/ftv2pnode.png                             |   Bin 229 -> 0 bytes
 doc/html/ftv2splitbar.png                          |   Bin 314 -> 0 bytes
 doc/html/ftv2vertline.png                          |   Bin 86 -> 0 bytes
 doc/html/functions.html                            |   137 -
 doc/html/functions_func.html                       |   134 -
 doc/html/functions_rela.html                       |    79 -
 doc/html/graph_legend.html                         |   127 -
 doc/html/graph_legend.md5                          |     1 -
 doc/html/graph_legend.png                          |   Bin 19871 -> 0 bytes
 doc/html/hierarchy.html                            |   189 -
 doc/html/index.html                                |   118 -
 doc/html/inherit_graph_0.map                       |     5 -
 doc/html/inherit_graph_0.md5                       |     1 -
 doc/html/inherit_graph_0.png                       |   Bin 3556 -> 0 bytes
 doc/html/inherit_graph_1.map                       |     3 -
 doc/html/inherit_graph_1.md5                       |     1 -
 doc/html/inherit_graph_1.png                       |   Bin 965 -> 0 bytes
 doc/html/inherit_graph_10.map                      |     3 -
 doc/html/inherit_graph_10.md5                      |     1 -
 doc/html/inherit_graph_10.png                      |   Bin 844 -> 0 bytes
 doc/html/inherit_graph_11.map                      |     3 -
 doc/html/inherit_graph_11.md5                      |     1 -
 doc/html/inherit_graph_11.png                      |   Bin 1409 -> 0 bytes
 doc/html/inherit_graph_12.map                      |     3 -
 doc/html/inherit_graph_12.md5                      |     1 -
 doc/html/inherit_graph_12.png                      |   Bin 1459 -> 0 bytes
 doc/html/inherit_graph_13.map                      |     3 -
 doc/html/inherit_graph_13.md5                      |     1 -
 doc/html/inherit_graph_13.png                      |   Bin 1343 -> 0 bytes
 doc/html/inherit_graph_14.map                      |     3 -
 doc/html/inherit_graph_14.md5                      |     1 -
 doc/html/inherit_graph_14.png                      |   Bin 1429 -> 0 bytes
 doc/html/inherit_graph_15.map                      |     3 -
 doc/html/inherit_graph_15.md5                      |     1 -
 doc/html/inherit_graph_15.png                      |   Bin 1196 -> 0 bytes
 doc/html/inherit_graph_16.map                      |     3 -
 doc/html/inherit_graph_16.md5                      |     1 -
 doc/html/inherit_graph_16.png                      |   Bin 1100 -> 0 bytes
 doc/html/inherit_graph_17.map                      |     3 -
 doc/html/inherit_graph_17.md5                      |     1 -
 doc/html/inherit_graph_17.png                      |   Bin 721 -> 0 bytes
 doc/html/inherit_graph_18.map                      |     6 -
 doc/html/inherit_graph_18.md5                      |     1 -
 doc/html/inherit_graph_18.png                      |   Bin 8335 -> 0 bytes
 doc/html/inherit_graph_19.map                      |     3 -
 doc/html/inherit_graph_19.md5                      |     1 -
 doc/html/inherit_graph_19.png                      |   Bin 1520 -> 0 bytes
 doc/html/inherit_graph_2.map                       |     3 -
 doc/html/inherit_graph_2.md5                       |     1 -
 doc/html/inherit_graph_2.png                       |   Bin 1840 -> 0 bytes
 doc/html/inherit_graph_20.map                      |     3 -
 doc/html/inherit_graph_20.md5                      |     1 -
 doc/html/inherit_graph_20.png                      |   Bin 1676 -> 0 bytes
 doc/html/inherit_graph_21.map                      |     3 -
 doc/html/inherit_graph_21.md5                      |     1 -
 doc/html/inherit_graph_21.png                      |   Bin 1481 -> 0 bytes
 doc/html/inherit_graph_22.map                      |     3 -
 doc/html/inherit_graph_22.md5                      |     1 -
 doc/html/inherit_graph_22.png                      |   Bin 1737 -> 0 bytes
 doc/html/inherit_graph_23.map                      |     3 -
 doc/html/inherit_graph_23.md5                      |     1 -
 doc/html/inherit_graph_23.png                      |   Bin 1754 -> 0 bytes
 doc/html/inherit_graph_24.map                      |     3 -
 doc/html/inherit_graph_24.md5                      |     1 -
 doc/html/inherit_graph_24.png                      |   Bin 1346 -> 0 bytes
 doc/html/inherit_graph_25.map                      |     3 -
 doc/html/inherit_graph_25.md5                      |     1 -
 doc/html/inherit_graph_25.png                      |   Bin 1822 -> 0 bytes
 doc/html/inherit_graph_26.map                      |     3 -
 doc/html/inherit_graph_26.md5                      |     1 -
 doc/html/inherit_graph_26.png                      |   Bin 2329 -> 0 bytes
 doc/html/inherit_graph_27.map                      |     3 -
 doc/html/inherit_graph_27.md5                      |     1 -
 doc/html/inherit_graph_27.png                      |   Bin 1572 -> 0 bytes
 doc/html/inherit_graph_28.map                      |     6 -
 doc/html/inherit_graph_28.md5                      |     1 -
 doc/html/inherit_graph_28.png                      |   Bin 7860 -> 0 bytes
 doc/html/inherit_graph_29.map                      |     3 -
 doc/html/inherit_graph_29.md5                      |     1 -
 doc/html/inherit_graph_29.png                      |   Bin 1411 -> 0 bytes
 doc/html/inherit_graph_3.map                       |     3 -
 doc/html/inherit_graph_3.md5                       |     1 -
 doc/html/inherit_graph_3.png                       |   Bin 1787 -> 0 bytes
 doc/html/inherit_graph_30.map                      |    30 -
 doc/html/inherit_graph_30.md5                      |     1 -
 doc/html/inherit_graph_30.png                      |   Bin 167041 -> 0 bytes
 doc/html/inherit_graph_31.map                      |     4 -
 doc/html/inherit_graph_31.md5                      |     1 -
 doc/html/inherit_graph_31.png                      |   Bin 5862 -> 0 bytes
 doc/html/inherit_graph_32.map                      |     4 -
 doc/html/inherit_graph_32.md5                      |     1 -
 doc/html/inherit_graph_32.png                      |   Bin 9013 -> 0 bytes
 doc/html/inherit_graph_33.map                      |     3 -
 doc/html/inherit_graph_33.md5                      |     1 -
 doc/html/inherit_graph_33.png                      |   Bin 1956 -> 0 bytes
 doc/html/inherit_graph_34.map                      |     3 -
 doc/html/inherit_graph_34.md5                      |     1 -
 doc/html/inherit_graph_34.png                      |   Bin 2724 -> 0 bytes
 doc/html/inherit_graph_35.map                      |     3 -
 doc/html/inherit_graph_35.md5                      |     1 -
 doc/html/inherit_graph_35.png                      |   Bin 1915 -> 0 bytes
 doc/html/inherit_graph_36.map                      |     3 -
 doc/html/inherit_graph_36.md5                      |     1 -
 doc/html/inherit_graph_36.png                      |   Bin 2334 -> 0 bytes
 doc/html/inherit_graph_37.map                      |     7 -
 doc/html/inherit_graph_37.md5                      |     1 -
 doc/html/inherit_graph_37.png                      |   Bin 8435 -> 0 bytes
 doc/html/inherit_graph_38.map                      |     4 -
 doc/html/inherit_graph_38.md5                      |     1 -
 doc/html/inherit_graph_38.png                      |   Bin 1729 -> 0 bytes
 doc/html/inherit_graph_39.map                      |     3 -
 doc/html/inherit_graph_39.md5                      |     1 -
 doc/html/inherit_graph_39.png                      |   Bin 1477 -> 0 bytes
 doc/html/inherit_graph_4.map                       |     3 -
 doc/html/inherit_graph_4.md5                       |     1 -
 doc/html/inherit_graph_4.png                       |   Bin 2311 -> 0 bytes
 doc/html/inherit_graph_40.map                      |     3 -
 doc/html/inherit_graph_40.md5                      |     1 -
 doc/html/inherit_graph_40.png                      |   Bin 1721 -> 0 bytes
 doc/html/inherit_graph_41.map                      |     3 -
 doc/html/inherit_graph_41.md5                      |     1 -
 doc/html/inherit_graph_41.png                      |   Bin 1134 -> 0 bytes
 doc/html/inherit_graph_42.map                      |     3 -
 doc/html/inherit_graph_42.md5                      |     1 -
 doc/html/inherit_graph_42.png                      |   Bin 1161 -> 0 bytes
 doc/html/inherit_graph_43.map                      |     3 -
 doc/html/inherit_graph_43.md5                      |     1 -
 doc/html/inherit_graph_43.png                      |   Bin 1350 -> 0 bytes
 doc/html/inherit_graph_44.map                      |     3 -
 doc/html/inherit_graph_44.md5                      |     1 -
 doc/html/inherit_graph_44.png                      |   Bin 1221 -> 0 bytes
 doc/html/inherit_graph_45.map                      |     4 -
 doc/html/inherit_graph_45.md5                      |     1 -
 doc/html/inherit_graph_45.png                      |   Bin 2164 -> 0 bytes
 doc/html/inherit_graph_46.map                      |     4 -
 doc/html/inherit_graph_46.md5                      |     1 -
 doc/html/inherit_graph_46.png                      |   Bin 2164 -> 0 bytes
 doc/html/inherit_graph_5.map                       |     5 -
 doc/html/inherit_graph_5.md5                       |     1 -
 doc/html/inherit_graph_5.png                       |   Bin 4682 -> 0 bytes
 doc/html/inherit_graph_6.map                       |     3 -
 doc/html/inherit_graph_6.md5                       |     1 -
 doc/html/inherit_graph_6.png                       |   Bin 1234 -> 0 bytes
 doc/html/inherit_graph_7.map                       |     3 -
 doc/html/inherit_graph_7.md5                       |     1 -
 doc/html/inherit_graph_7.png                       |   Bin 1350 -> 0 bytes
 doc/html/inherit_graph_8.map                       |     3 -
 doc/html/inherit_graph_8.md5                       |     1 -
 doc/html/inherit_graph_8.png                       |   Bin 1948 -> 0 bytes
 doc/html/inherit_graph_9.map                       |     3 -
 doc/html/inherit_graph_9.md5                       |     1 -
 doc/html/inherit_graph_9.png                       |   Bin 1636 -> 0 bytes
 doc/html/inherits.html                             |   259 -
 doc/html/md_apps.html                              |   100 -
 doc/html/md_description_pkstat.html                |    63 -
 doc/html/md_examples_pkann.html                    |    69 -
 doc/html/md_examples_pkascii2img.html              |   116 -
 doc/html/md_examples_pkascii2ogr.html              |    67 -
 doc/html/md_examples_pkcomposite.html              |    75 -
 doc/html/md_examples_pkcreatect.html               |    80 -
 doc/html/md_examples_pkcrop.html                   |    78 -
 doc/html/md_examples_pkdiff.html                   |    69 -
 doc/html/md_examples_pkdsm2shadow.html             |    67 -
 doc/html/md_examples_pkdumpimg.html                |    82 -
 doc/html/md_examples_pkdumpogr.html                |    87 -
 doc/html/md_examples_pkextract.html                |    95 -
 doc/html/md_examples_pkfilter.html                 |   113 -
 doc/html/md_examples_pkgetmask.html                |    69 -
 doc/html/md_examples_pkinfo.html                   |    83 -
 doc/html/md_examples_pkkalman.html                 |    75 -
 doc/html/md_examples_pkpolygonize.html             |    67 -
 doc/html/md_examples_pkreclass.html                |    73 -
 doc/html/md_examples_pksetmask.html                |    89 -
 doc/html/md_examples_pksieve.html                  |    67 -
 doc/html/md_examples_pkstatogr.html                |    69 -
 doc/html/md_examples_pksvm.html                    |    71 -
 doc/html/md_faq_pkcomposite.html                   |    87 -
 doc/html/md_faq_pksetmask.html                     |    68 -
 doc/html/md_header.html                            |    75 -
 doc/html/md_installation_linux.html                |   184 -
 doc/html/md_installation_plugins.html              |    70 -
 doc/html/md_installation_windows.html              |    88 -
 doc/html/md_mainpage.html                          |    63 -
 doc/html/myfann__cpp_8h_source.html                |  4061 ----
 doc/html/nav_f.png                                 |   Bin 153 -> 0 bytes
 doc/html/nav_g.png                                 |   Bin 95 -> 0 bytes
 doc/html/nav_h.png                                 |   Bin 98 -> 0 bytes
 doc/html/open.png                                  |   Bin 123 -> 0 bytes
 doc/html/pages.html                                |   130 -
 doc/html/pkann.html                                |   160 -
 doc/html/pkann_8cc_source.html                     |  1361 --
 doc/html/pkascii2img.html                          |   108 -
 doc/html/pkascii2img_8cc_source.html               |   244 -
 doc/html/pkascii2ogr.html                          |   106 -
 doc/html/pkascii2ogr_8cc_source.html               |   191 -
 doc/html/pkcomposite.html                          |   183 -
 doc/html/pkcomposite_8cc_source.html               |  1274 --
 doc/html/pkcomposite_8py_source.html               |   249 -
 doc/html/pkcomposite__gui_2main_8cc_source.html    |   104 -
 .../pkcomposite__gui_2mainwindow_8cc_source.html   |   332 -
 .../pkcomposite__gui_2mainwindow_8h_source.html    |   145 -
 doc/html/pkcreatect.html                           |   106 -
 doc/html/pkcreatect_8cc_source.html                |   280 -
 doc/html/pkcrop.html                               |   154 -
 doc/html/pkcrop_8cc_source.html                    |   854 -
 doc/html/pkcrop_8py_source.html                    |   216 -
 doc/html/pkcrop__gui_2main_8cc_source.html         |   104 -
 doc/html/pkcrop__gui_2mainwindow_8cc_source.html   |   379 -
 doc/html/pkcrop__gui_2mainwindow_8h_source.html    |   153 -
 doc/html/pkdiff.html                               |   138 -
 doc/html/pkdiff_8cc_source.html                    |   973 -
 doc/html/pkdiff__accuracy_8py_source.html          |   277 -
 doc/html/pkdiff__gui_2main_8cpp_source.html        |   103 -
 doc/html/pkdiff__gui_2mainwindow_8cpp_source.html  |   281 -
 doc/html/pkdiff__gui_2mainwindow_8h_source.html    |   141 -
 doc/html/pkdsm2shadow.html                         |   106 -
 doc/html/pkdsm2shadow_8cc_source.html              |   220 -
 doc/html/pkdumpimg.html                            |   113 -
 doc/html/pkdumpimg_8cc_source.html                 |   421 -
 doc/html/pkdumpogr.html                            |    99 -
 doc/html/pkdumpogr_8cc_source.html                 |   307 -
 doc/html/pkdumpogr_8h_source.html                  |   205 -
 doc/html/pkeditogr_8cc_source.html                 |   361 -
 doc/html/pkegcs.html                               |    97 -
 doc/html/pkegcs_8cc_source.html                    |   176 -
 doc/html/pkenhance_8cc_source.html                 |   274 -
 doc/html/pkextract.html                            |   170 -
 doc/html/pkextract_8cc_source.html                 |  2534 ---
 doc/html/pkextract_8py_source.html                 |   276 -
 doc/html/pkextract__grid_8py_source.html           |   262 -
 doc/html/pkextract__gui_2main_8cpp_source.html     |    84 -
 .../pkextract__gui_2mainwindow_8cpp_source.html    |   278 -
 doc/html/pkextract__gui_2mainwindow_8h_source.html |   119 -
 doc/html/pkextract__random_8py_source.html         |   265 -
 doc/html/pkfillnodata.html                         |    95 -
 doc/html/pkfillnodata_8cc_source.html              |   224 -
 doc/html/pkfilter.html                             |   271 -
 doc/html/pkfilter_8cc_source.html                  |  1046 -
 doc/html/pkfilter__spatial_8py_source.html         |   199 -
 doc/html/pkfilter__spectral_8py_source.html        |   193 -
 doc/html/pkfilterascii.html                        |   113 -
 doc/html/pkfilterascii_8cc_source.html             |   385 -
 doc/html/pkfilterdem.html                          |   107 -
 doc/html/pkfilterdem_8cc_source.html               |   462 -
 doc/html/pkfilterdem_8py_source.html               |   179 -
 doc/html/pkfsann.html                              |   131 -
 doc/html/pkfsann_8cc_source.html                   |   746 -
 doc/html/pkfsann_8h_source.html                    |   121 -
 doc/html/pkfssvm.html                              |   143 -
 doc/html/pkfssvm_8cc_source.html                   |   776 -
 doc/html/pkgetmask.html                            |   109 -
 doc/html/pkgetmask_8cc_source.html                 |   302 -
 doc/html/pkgetmask_8py_source.html                 |   212 -
 doc/html/pkinfo.html                               |   151 -
 doc/html/pkinfo_8cc_source.html                    |   460 -
 doc/html/pkkalman.html                             |   144 -
 doc/html/pkkalman1_8cc_source.html                 |  1959 --
 doc/html/pkkalman_8cc_source.html                  |  1956 --
 doc/html/pklas2img.html                            |   130 -
 doc/html/pklas2img_8cc_source.html                 |   652 -
 doc/html/pklas2img_8py_source.html                 |   222 -
 doc/html/pkndvi_8cc_source.html                    |   404 -
 doc/html/pkoptsvm.html                             |   147 -
 doc/html/pkoptsvm_8cc_source.html                  |   701 -
 doc/html/pkpolygonize.html                         |    98 -
 doc/html/pkpolygonize_8cc_source.html              |   203 -
 doc/html/pkreclass.html                            |   110 -
 doc/html/pkreclass_8cc_source.html                 |   436 -
 doc/html/pkreclass_8py_source.html                 |   211 -
 doc/html/pkregann.html                             |   110 -
 doc/html/pkregann_8cc_source.html                  |   444 -
 doc/html/pksensormodel_8h_source.html              |   155 -
 doc/html/pksetmask.html                            |   109 -
 doc/html/pksetmask_8cc_source.html                 |   405 -
 doc/html/pksetmask_8py_source.html                 |   200 -
 doc/html/pksieve.html                              |   102 -
 doc/html/pksieve_8cc_source.html                   |   196 -
 doc/html/pkstat.html                               |   140 -
 doc/html/pkstat_8cc_source.html                    |  1167 -
 doc/html/pkstatascii.html                          |   149 -
 doc/html/pkstatascii_8cc_source.html               |   488 -
 doc/html/pkstatogr.html                            |   117 -
 doc/html/pkstatogr_8cc_source.html                 |   283 -
 doc/html/pkstatprofile.html                        |   126 -
 doc/html/pkstatprofile_8cc_source.html             |   256 -
 doc/html/pkstatz.html                              |   128 -
 doc/html/pksvm.html                                |   176 -
 doc/html/pksvm_8cc_source.html                     |  1410 --
 doc/html/pksvm_8py_source.html                     |   215 -
 doc/html/pksvm__gui_2main_8cpp_source.html         |   103 -
 doc/html/pksvm__gui_2mainwindow_8cpp_source.html   |   353 -
 doc/html/pksvm__gui_2mainwindow_8h_source.html     |   151 -
 doc/html/pktestOption_8cc_source.html              |   129 -
 doc/html/pktoolsAlgorithmProvider_8py_source.html  |   200 -
 doc/html/pktoolsAlgorithm_8py_source.html          |   129 -
 doc/html/pktoolsUtils_8py_source.html              |   166 -
 ...ktools_2ProcessingPktoolsPlugin_8py_source.html |   123 -
 doc/html/pktools_2____init_____8py_source.html     |   103 -
 doc/html/pktools_2pkcomposite_8py_source.html      |   249 -
 doc/html/pktools_2pkcrop_8py_source.html           |   216 -
 doc/html/pktools_2pkdiff__accuracy_8py_source.html |   277 -
 doc/html/pktools_2pkextract_8py_source.html        |   278 -
 doc/html/pktools_2pkextract__grid_8py_source.html  |   262 -
 .../pktools_2pkextract__random_8py_source.html     |   265 -
 .../pktools_2pkfilter__spatial_8py_source.html     |   199 -
 .../pktools_2pkfilter__spectral_8py_source.html    |   193 -
 doc/html/pktools_2pkfilterdem_8py_source.html      |   179 -
 doc/html/pktools_2pkgetmask_8py_source.html        |   212 -
 doc/html/pktools_2pklas2img_8py_source.html        |   222 -
 doc/html/pktools_2pkreclass_8py_source.html        |   211 -
 doc/html/pktools_2pksetmask_8py_source.html        |   200 -
 doc/html/pktools_2pksvm_8py_source.html            |   214 -
 ...tools_2pktoolsAlgorithmProvider_8py_source.html |   200 -
 doc/html/pktools_2pktoolsAlgorithm_8py_source.html |   130 -
 doc/html/pktools_2pktoolsUtils_8py_source.html     |   166 -
 doc/html/structIndexValue-members.html             |    76 -
 doc/html/structIndexValue.html                     |    90 -
 doc/html/structPosValue-members.html               |    77 -
 doc/html/structPosValue.html                       |    93 -
 doc/html/structSolver_1_1SolutionInfo-members.html |    83 -
 doc/html/structSolver_1_1SolutionInfo.html         |   103 -
 doc/html/structdecision__function-members.html     |    76 -
 doc/html/structdecision__function.html             |    90 -
 doc/html/structsvm__model-members.html             |    85 -
 doc/html/structsvm__model.html                     |   124 -
 doc/html/structsvm__model__coll__graph.map         |     4 -
 doc/html/structsvm__model__coll__graph.md5         |     1 -
 doc/html/structsvm__model__coll__graph.png         |   Bin 5210 -> 0 bytes
 doc/html/structsvm__node-members.html              |    76 -
 doc/html/structsvm__node.html                      |    90 -
 doc/html/structsvm__parameter-members.html         |    90 -
 doc/html/structsvm__parameter.html                 |   132 -
 doc/html/structsvm__problem-members.html           |    77 -
 doc/html/structsvm__problem.html                   |   100 -
 doc/html/structsvm__problem__coll__graph.map       |     3 -
 doc/html/structsvm__problem__coll__graph.md5       |     1 -
 doc/html/structsvm__problem__coll__graph.png       |   Bin 3027 -> 0 bytes
 doc/html/svm_8cpp_source.html                      |  3212 ---
 doc/html/svm_8h_source.html                        |   178 -
 doc/html/sync_off.png                              |   Bin 853 -> 0 bytes
 doc/html/sync_on.png                               |   Bin 845 -> 0 bytes
 doc/html/tab_a.png                                 |   Bin 142 -> 0 bytes
 doc/html/tab_b.png                                 |   Bin 169 -> 0 bytes
 doc/html/tab_h.png                                 |   Bin 177 -> 0 bytes
 doc/html/tab_s.png                                 |   Bin 184 -> 0 bytes
 doc/html/tabs.css                                  |    60 -
 doc/html/vis__studio_2config_8h_source.html        |   153 -
 doc/installation_linux.dox                         |    73 +-
 doc/mainpage.dox                                   |     2 +-
 install-sh                                         |   520 -
 ltmain.sh => libtool                               |  6486 ++++--
 m4/ax_lib_gdal.m4                                  |   153 -
 m4/libtool.m4                                      |  7997 -------
 m4/ltoptions.m4                                    |   384 -
 m4/ltsugar.m4                                      |   123 -
 m4/ltversion.m4                                    |    23 -
 m4/lt~obsolete.m4                                  |    98 -
 missing                                            |   376 -
 pktools.pc                                         |    11 +
 qgis/CMakeLists.txt                                |     4 +
 qgis/ProcessingPktoolsPlugin.py                    |    48 +
 qgis/__init__.py                                   |    31 +
 {doc/html => qgis}/logo.png                        |   Bin
 qgis/metadata.txt                                  |    37 +
 qgis/pkcomposite.py                                |   155 +
 qgis/pkcrop.py                                     |   128 +
 qgis/pkdiff_accuracy.py                            |   187 +
 qgis/pkextract.py                                  |   188 +
 qgis/pkextract_grid.py                             |   175 +
 qgis/pkextract_random.py                           |   178 +
 qgis/pkfilter_spatial.py                           |   112 +
 qgis/pkfilter_spectral.py                          |   106 +
 qgis/pkfilterdem.py                                |    95 +
 qgis/pkgetmask.py                                  |   124 +
 qgis/pklas2img.py                                  |   131 +
 qgis/pkreclass.py                                  |   124 +
 qgis/pksetmask.py                                  |   113 +
 qgis/pksvm.py                                      |   129 +
 qgis/pktoolsAlgorithm.py                           |    56 +
 qgis/pktoolsAlgorithmProvider.py                   |   120 +
 qgis/pktoolsUtils.py                               |    90 +
 src/CMakeLists.txt                                 |   162 +
 src/algorithms/Filter.cc                           |    22 +-
 src/algorithms/Filter.h                            |    22 +-
 src/algorithms/Filter2d.cc                         |    86 +-
 src/algorithms/Filter2d.h                          |   200 +-
 src/algorithms/ImgRegression.cc                    |    12 +-
 src/algorithms/ImgRegression.h                     |    12 +-
 src/algorithms/{Makefile.in => Makefile}           |   447 +-
 src/algorithms/Makefile.am                         |     6 +-
 src/algorithms/Makefile.in                         |    43 +-
 src/algorithms/SVM_COPYRIGHT                       |    31 +
 src/algorithms/StatFactory.h                       |    47 +-
 src/algorithms/libalgorithms.la                    |    41 +
 src/apps/{Makefile.in => Makefile}                 |   790 +-
 src/apps/Makefile.am                               |    23 +-
 src/apps/Makefile.in                               |   238 +-
 src/apps/pkann                                     |   228 +
 src/apps/pkann.cc                                  |    18 +-
 src/apps/pkascii2img                               |   228 +
 src/apps/pkascii2img.cc                            |     2 +-
 src/apps/pkascii2ogr                               |   228 +
 src/apps/pkcomposite                               |   228 +
 src/apps/pkcomposite.cc                            |    97 +-
 src/apps/pkcomposite_app.cc~                       |   271 +
 src/apps/pkcreatect                                |   228 +
 src/apps/pkcreatect.cc                             |    14 +-
 src/apps/pkcrop                                    |   228 +
 src/apps/pkcrop.cc                                 |   116 +-
 src/apps/pkdiff                                    |   228 +
 src/apps/pkdiff.cc                                 |    13 +-
 src/apps/pkdsm2shadow                              |   228 +
 src/apps/pkdumpimg                                 |   228 +
 src/apps/pkdumpimg.cc                              |     6 +-
 src/apps/pkdumpogr                                 |   228 +
 src/apps/pkegcs                                    |   228 +
 src/apps/pkextract                                 |   228 +
 src/apps/pkextract.cc                              |    29 +-
 src/apps/pkextractimg                              |   228 +
 src/apps/pkextractimg.cc                           |   780 +
 src/apps/pkextractogr                              |   228 +
 src/apps/pkextractogr.cc                           |  1714 ++
 src/apps/pkfillnodata                              |   228 +
 src/apps/pkfilter                                  |   228 +
 src/apps/pkfilter.cc                               |    61 +-
 src/apps/pkfilterascii                             |   228 +
 src/apps/pkfilterdem                               |   228 +
 src/apps/pkfilterdem.cc                            |     2 +-
 src/apps/pkfsann                                   |   228 +
 src/apps/pkfssvm                                   |   228 +
 src/apps/pkgetmask                                 |   228 +
 src/apps/pkgetmask.cc                              |     4 +-
 src/apps/pkinfo                                    |   228 +
 src/apps/pkinfo.cc                                 |     2 +-
 src/apps/pkkalman                                  |   228 +
 src/apps/pkkalman.cc                               |   216 +-
 src/apps/pklas2img                                 |   228 +
 src/apps/pklas2img.cc                              |    66 +-
 src/apps/pkoptsvm                                  |   228 +
 src/apps/pkoptsvm.cc                               |     4 +-
 src/apps/pkpolygonize                              |   228 +
 src/apps/pkreclass                                 |   228 +
 src/apps/pkreclass.cc                              |     8 +-
 src/apps/pkregann                                  |   228 +
 src/apps/pksensormodel.h                           |    82 +
 src/apps/pksetmask                                 |   228 +
 src/apps/pksetmask.cc                              |    12 +-
 src/apps/pksieve                                   |   228 +
 src/apps/pkstat                                    |   228 +
 src/apps/pkstat.cc                                 |    25 +-
 src/apps/pkstatascii                               |   228 +
 src/apps/pkstatogr                                 |   228 +
 src/apps/pkstatprofile                             |   228 +
 src/apps/pksvm                                     |   228 +
 src/apps/pksvm.cc                                  |    18 +-
 src/base/{Makefile.in => Makefile}                 |   384 +-
 src/base/Makefile.in                               |    28 +-
 src/base/Optionpk.h                                |    89 +-
 src/base/Vector2d.cc                               |     0
 src/base/pktestOption                              |   Bin 0 -> 778880 bytes
 src/base/pktestOption.cc                           |     7 +-
 src/fileclasses/{Makefile.in => Makefile}          |   390 +-
 src/fileclasses/Makefile.in                        |    28 +-
 src/fileclasses/libfileClasses.la                  |    41 +
 src/imageclasses/{ImgUpdaterGdal.h => ImgGdal.h}   |    15 +-
 src/imageclasses/ImgRasterGdal.cc                  |   449 +-
 src/imageclasses/ImgRasterGdal.h                   |   142 +-
 src/imageclasses/ImgReaderGdal.cc                  |   122 +-
 src/imageclasses/ImgReaderGdal.h                   |   267 +-
 src/imageclasses/ImgReaderOgr.cc                   |    11 +-
 src/imageclasses/ImgUpdaterGdal.cc                 |     9 +
 src/imageclasses/ImgUpdaterGdal.h                  |     5 +
 src/imageclasses/ImgWriterGdal.cc                  |   341 +-
 src/imageclasses/ImgWriterGdal.h                   |   210 +-
 src/imageclasses/ImgWriterOgr.cc                   |    12 +-
 src/imageclasses/ImgWriterOgr.h                    |     2 +-
 src/imageclasses/{Makefile.in => Makefile}         |   402 +-
 src/imageclasses/Makefile.am                       |     2 +-
 src/imageclasses/Makefile.in                       |    30 +-
 src/imageclasses/libimageClasses.la                |    41 +
 src/lasclasses/FileReaderLas.cc                    |     6 +
 src/lasclasses/FileReaderLas.h                     |     5 +-
 src/lasclasses/{Makefile.in => Makefile}           |   390 +-
 src/lasclasses/Makefile.in                         |    28 +-
 src/lasclasses/liblasClasses.la                    |    41 +
 stamp-h1                                           |     1 +
 test/data/modis_ndvi_2010.tif                      |   Bin 0 -> 3149536 bytes
 test/data/nuts_italy.sqlite                        |   Bin 0 -> 14336 bytes
 1156 files changed, 22071 insertions(+), 157185 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..62d1383
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,393 @@
+###############################################################################
+#
+# CMake build scripts for PKTOOLS
+# 
+#
+# History
+# 2010/12/14 - Created by Peter Bunting for SPDLib
+# 2012/02/07 - Edited by Peter Bunting for PKTOOLS
+# 2014/11/22 - Edited by Peter Bunting for pktools
+# 2015/12/10 - Edited by Pieter Kempeneers and Kris Vanhoof
+# Change log
+# Find package lib
+# Boost: disable auto linking: add_definitions("-DBOOST_ALL_NO_LIB")
+# add cmake env variable Boost_COMPILER -vc110
+# FANN: create library CMake: add ADD_DEFINITIONS(-DFANN_DLL_EXPORTS)
+# GDAL: disabled macro for Visual Studio 2015
+#if defined(_MSC_VER) && (_MSC_VER < 1900)
+#  define snprintf _snprintf
+#endif
+#set CMAKE_INSTALL_PREFIX to C:/OSGeo4W64;C:/Users/kempenep/Downloads/FANN-2.2.0-Source/FANN-2.2.0-Source/install;C:/Users/kempenep/Downloads/armadillo-6.200.4/install;C:\Users\kempenep\Downloads\nlopt-2.4.2-dll64
+#
+###############################################################################
+cmake_minimum_required(VERSION 2.6.0)
+#cmake_minimum_required(VERSION 2.8)
+###############################################################################
+# Set Project name and version
+project (PKTOOLS)
+
+set (PROJECT_BINARY_DIR bin)
+set (PROJECT_LIBRARY_DIR lib)
+set (PROJECT_INCLUDE_DIR include/pktools)
+set (PROJECT_DOC_DIR doc)
+set (PROJECT_SOURCE_DIR src)
+
+# The version number.
+set (PKTOOLS_VERSION_MAJOR 2)
+set (PKTOOLS_VERSION_MINOR 6)
+set (PKTOOLS_VERSION_PATCH 7)
+set (PKTOOLS_VERSION "${PKTOOLS_VERSION_MAJOR}.${PKTOOLS_VERSION_MINOR}.${PKTOOLS_VERSION_PATCH}")
+set (PKTOOLS_PACKAGE_VERSION "${PKTOOLS_VERSION_MAJOR}.${PKTOOLS_VERSION_MINOR}.${PKTOOLS_VERSION_PATCH}")
+set (PKTOOLS_PACKAGE_STRING "PKTOOLS ${PKTOOLS_VERSION_MAJOR}.${PKTOOLS_VERSION_MINOR}.${PKTOOLS_VERSION_PATCH}")
+set (PKTOOLS_PACKAGE_BUGREPORT "kempenep at gmail.com")
+set (PKTOOLS_PACKAGE "pktools")
+set (PKTOOLS_COPYRIGHT_YEAR 2016)
+
+set (PKTOOLS_ALGORITHMS_VERSION_MAJOR 1)
+set (PKTOOLS_ALGORITHMS_VERSION_MINOR 6)
+set (PKTOOLS_ALGORITHMS_VERSION_PATCH 0)
+set (PKTOOLS_ALGORITHMS_VERSION "${PKTOOLS_ALGORITHMS_VERSION_MAJOR}.${PKTOOLS_ALGORITHMS_VERSION_MINOR}.${PKTOOLS_ALGORITHMS_VERSION_PATCH}")
+
+set (PKTOOLS_FILECLASSES_VERSION_MAJOR 1)
+set (PKTOOLS_FILECLASSES_VERSION_MINOR 6)
+set (PKTOOLS_FILECLASSES_VERSION_PATCH 0)
+set (PKTOOLS_FILECLASSES_VERSION "${PKTOOLS_FILECLASSES_VERSION_MAJOR}.${PKTOOLS_FILECLASSES_VERSION_MINOR}.${PKTOOLS_FILECLASSES_VERSION_PATCH}")
+
+set (PKTOOLS_IMAGECLASSES_VERSION_MAJOR 1)
+set (PKTOOLS_IMAGECLASSES_VERSION_MINOR 6)
+set (PKTOOLS_IMAGECLASSES_VERSION_PATCH 0)
+set (PKTOOLS_IMAGECLASSES_VERSION "${PKTOOLS_IMAGECLASSES_VERSION_MAJOR}.${PKTOOLS_IMAGECLASSES_VERSION_MINOR}.${PKTOOLS_IMAGECLASSES_VERSION_PATCH}")
+
+set (PKTOOLS_LASCLASSES_VERSION_MAJOR 1)
+set (PKTOOLS_LASCLASSES_VERSION_MINOR 6)
+set (PKTOOLS_LASCLASSES_VERSION_PATCH 0)
+set (PKTOOLS_LASCLASSES_VERSION "${PKTOOLS_LASCLASSES_VERSION_MAJOR}.${PKTOOLS_LASCLASSES_VERSION_MINOR}.${PKTOOLS_LASCLASSES_VERSION_PATCH}")
+
+# Name of C++ library
+set(PKTOOLS_BASE_LIB_NAME base)
+set(PKTOOLS_ALGORITHMS_LIB_NAME algorithms)
+set(PKTOOLS_FILECLASSES_LIB_NAME fileClasses)
+set(PKTOOLS_IMAGECLASSES_LIB_NAME imageClasses)
+set(PKTOOLS_LASCLASSES_LIB_NAME lasClasses)
+
+option (BUILD_SHARED_LIBS "Build with shared library" OFF)
+set(BUILD_WITH_LIBLAS FALSE CACHE BOOL "Choose if pktools is to be built with liblas")
+set(BUILD_WITH_FANN FALSE CACHE BOOL "Choose if pktools is to be built with fann")
+#set(BUILD_WITH_NLOPT FALSE CACHE BOOL "Choose if pktools is to be built with nlopt")
+set(PKTOOLS_WITH_UTILITIES TRUE CACHE BOOL "Choose if pktools utilities should be built")
+
+set(GSL_INCLUDE_DIR /usr/include CACHE PATH "Include PATH for GSL")
+set(GSL_LIB_PATH /usr/lib CACHE PATH "Library PATH for GSL")
+
+###############################################################################
+
+###############################################################################
+# CMake settings
+# cmake_minimum_required(VERSION 2.6.0)
+
+IF(NOT CMAKE_BUILD_TYPE)
+  #SET(CMAKE_BUILD_TYPE "DEBUG")
+  SET(CMAKE_BUILD_TYPE "RELEASE")
+  #SET(CMAKE_BUILD_TYPE "RELWITHDEBINFO")
+  #SET(CMAKE_BUILD_TYPE "MINSIZEREL")
+ENDIF()
+
+set(CMAKE_COLOR_MAKEFILE ON)
+
+# Allow advanced users to generate Makefiles printing detailed commands
+mark_as_advanced(CMAKE_VERBOSE_MAKEFILE)
+
+# Path to additional CMake modules
+list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules)
+###############################################################################
+
+###############################################################################
+# Setup configure file
+configure_file ( "cmake-config.h.in" "${CMAKE_CURRENT_BINARY_DIR}/base/config.h" @ONLY)
+include_directories("${CMAKE_CURRENT_BINARY_DIR}/base")
+add_definitions(-DHAVE_CONFIG_H)
+###############################################################################
+
+###############################################################################
+# Documentation
+#file(READ "doc/index.txt" README )
+file(WRITE "README.txt" "${README}")
+###############################################################################
+
+###############################################################################
+# Platform and compiler specific settings
+
+if(WIN32)
+    if (MSVC)
+        if (MSVC80 OR MSVC90 OR MSVC10)
+            add_definitions(-D_CRT_SECURE_NO_DEPRECATE)
+            add_definitions(-D_CRT_SECURE_NO_WARNINGS)
+            add_definitions(-D_CRT_NONSTDC_NO_WARNING)
+            add_definitions(-D_SCL_SECURE_NO_WARNINGS)
+        endif()
+        
+        if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
+            string(REGEX REPLACE "/W[0-4]" "/W4"
+                   CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
+        else()
+            set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
+        endif()
+
+        # Generate dot-user file with user-specific settings for Visual Studio project
+        set(MSVC_ENVIRONMENT_PATH "" CACHE STRING
+            "Custom PATH for Environment property in Visual Studio project configuration")
+        mark_as_advanced(MSVC_ENVIRONMENT_PATH)
+        set(VCPROJ_USER_ENVIRONMENT_PATH_DEBUG "${ENVIRONMENT_PATH}")
+        mark_as_advanced(VCPROJ_USER_ENVIRONMENT_PATH_DEBUG)
+
+    endif()
+
+	set(CMAKE_INCLUDE_PATH c:/osgeo4w/include;$ENV{CMAKE_INCLUDE_PATH})
+    set(CMAKE_LIBRARY_PATH c:/osgeo4w/lib;$ENV{CMAKE_LIBRARY_PATH})
+else()
+  # Recommended C++ compilation flags
+  # -Weffc++
+  set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -pg")
+  set(PKTOOLS_COMMON_CXX_FLAGS
+    "-Wall -Wpointer-arith -Wcast-align -Wcast-qual -Wredundant-decls -Wno-long-long")
+
+  if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
+
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC ${PKTOOLS_COMMON_CXX_FLAGS}")
+    if (CMAKE_COMPILER_IS_GNUCXX)
+      set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++98")
+    endif()
+
+  elseif("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" OR "${CMAKE_CXX_COMPILER}" MATCHES "clang")
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${PKTOOLS_COMMON_CXX_FLAGS}")
+  endif()
+endif(WIN32)
+
+if (APPLE)
+  set(SO_EXT dylib)
+ # set(CMAKE_FIND_FRAMEWORK "LAST")
+elseif(WIN32)
+  set(SO_EXT dll)
+else()
+  set(SO_EXT so)
+endif(APPLE)
+###############################################################################
+
+###############################################################################
+# Check the required libraries are present
+
+#include_directories(${GDAL_INCLUDE_DIR})
+#if (MSVC)
+#  set(GDAL_LIBRARIES -LIBPATH:${GDAL_LIB_PATH} gdal_i.lib)
+#else()
+#  set(GDAL_LIBRARIES -L${GDAL_LIB_PATH} -lgdal)
+#endif(MSVC)
+
+find_package(GDAL 1.10 REQUIRED)
+if(GDAL_FOUND)
+	include_directories(${GDAL_INCLUDE_DIRS})
+endif()
+
+find_package(GSL REQUIRED)
+if(GSL_FOUND)
+  include_directories(${GSL_INCLUDE_DIRS})
+  add_definitions(-DGSL_DLL)
+endif()
+
+find_package(Armadillo REQUIRED)
+if(ARMADILLO_FOUND)
+	include_directories(${ARMADILLO_INCLUDE_DIRS})
+endif()
+
+if (BUILD_WITH_LIBLAS)
+	find_package(LIBLAS)
+	if(LIBLAS_FOUND)
+	  include_directories(${LIBLAS_INCLUDE_DIRS})
+	endif()
+	set(Boost_DEBUG 0)
+	find_package(Boost COMPONENTS filesystem system)
+	if(Boost_FOUND)
+		include_directories(${Boost_INCLUDE_DIRS})
+		add_definitions("-DBOOST_ALL_NO_LIB")
+	endif()
+	
+#	include_directories(${BOOST_INCLUDE_DIR})
+#	if (MSVC)
+#		set(BOOST_LIBRARIES -LIBPATH:${BOOST_LIB_PATH} libboost_filesystem-vc100-mt-1_56.lib libboost_system-vc100-mt-1_56.lib)
+#	else()
+#		set(BOOST_LIBRARIES -L${BOOST_LIB_PATH} -lboost_filesystem -lboost_system)
+#	endif(MSVC)
+endif(BUILD_WITH_LIBLAS)
+
+if (BUILD_WITH_FANN)
+	find_package(FANN)
+	if(FANN_FOUND)
+		include_directories(${FANN_INCLUDE_DIRS})
+		add_definitions(-DFANN_DLL)
+	endif()
+endif(BUILD_WITH_FANN)
+
+# if (BUILD_WITH_NLOPT)
+#   find_package(NLOPT)
+#   if(NLOPT_FOUND)
+#     include_directories(${NLOPT_INCLUDE_DIRS})
+#     add_definitions(-DNLOPT_DLL)
+#   endif()
+# endif(BUILD_WITH_NLOPT)
+###############################################################################
+
+###############################################################################
+# Build libraries
+include_directories("${PROJECT_SOURCE_DIR}")
+add_subdirectory ("${PROJECT_SOURCE_DIR}")
+###############################################################################
+
+###############################################################################
+# Build executables
+
+#configure_file ( "cmake-config.in" "${PROJECT_BINARY_DIR}/pktools-config" @ONLY )
+#test
+configure_file ( "cmake-config.in" "${CMAKE_CURRENT_BINARY_DIR}/pktools-config" @ONLY )
+configure_file ( "cmake.pc.in" "pktools.pc"  @ONLY)
+
+
+set_property(GLOBAL PROPERTY USE_FOLDERS ON)
+
+set(PKLIBS ${PKTOOLS_BASE_LIB_NAME} ${PKTOOLS_IMAGECLASSES_LIB_NAME} ${PKTOOLS_FILECLASSES_LIB_NAME} ${PKTOOLS_ALGORITHMS_LIB_NAME} ${GDAL_LIBRARIES} ${GSL_LIBRARIES} ${ARMADILLO_LIBRARIES} ${Boost_LIBRARIES})
+
+set(PKUTILITIES
+  pkinfo
+  pkcrop
+  pkdiff
+  pkgetmask
+  pksetmask
+  pkcreatect 
+  pkdumpimg 
+  pkdumpogr 
+  pksieve 
+  pkstat
+  pkstatascii 
+  pkstatogr 
+  pkstatprofile
+  pkegcs 
+  pkextractimg
+  pkextractogr
+  pkfillnodata 
+  pkfilter 
+  pkfilterdem 
+  pkfilterascii 
+  pkdsm2shadow 
+  pkcomposite
+  pkpolygonize 
+  pkascii2img 
+  pksvm 
+  pkfssvm 
+  pkoptsvm
+  pkascii2ogr 
+  pkreclass 
+  pkkalman
+  )
+
+set(PKFANNUTILITIES
+	pkann
+	pkfsann
+	pkregann
+)
+
+# set(PKNLOPTUTILITIES
+# 	pkoptsvm
+# )
+
+if (PKTOOLS_WITH_UTILITIES)
+	foreach(UTILITY ${PKUTILITIES})
+    		add_executable(${UTILITY} src/apps/${UTILITY}.cc)
+    		target_link_libraries(${UTILITY} ${PKLIBS})
+    		set_target_properties(${UTILITY} PROPERTIES FOLDER utilities)
+	endforeach()
+
+	if (BUILD_WITH_LIBLAS)
+		set(PKLIBS ${PKLIBS} ${PKTOOLS_LASCLASSES_LIB_NAME})
+		foreach(PKLASUTILITY ${PKLASUTILITIES})
+		add_executable(${PKLASUTILITY} src/apps/${PKLASUTILITY}.cc)
+		target_link_libraries (${PKLASUTILITY} 
+		${PKLIBS} ${LIBLAS_LIBRARIES})
+    		set_target_properties(${PKLASUTILITY} PROPERTIES FOLDER utilities)
+		endforeach()
+	endif()
+	if (BUILD_WITH_FANN)
+		set(PKLIBS ${PKLIBS} ${FANN_LIBRARIES})
+		foreach(PKFANNUTILITY ${PKFANNUTILITIES})
+		add_executable(${PKFANNUTILITY} src/apps/${PKFANNUTILITY}.cc)
+		message(${PKLIBS})
+		target_link_libraries (${PKFANNUTILITY} ${PKLIBS})
+    		set_target_properties(${PKFANNUTILITY} PROPERTIES FOLDER utilities)
+		endforeach()
+	endif()
+	# if (BUILD_WITH_NLOPT)
+	# 	set(PKLIBS ${PKLIBS} ${NLOPT_LIBRARIES})
+	# 	foreach(PKNLOPTUTILITY ${PKNLOPTUTILITIES})
+	# 	add_executable(${PKNLOPTUTILITY} src/apps/${PKNLOPTUTILITY}.cc)
+	# 	message(${PKLIBS})
+	# 	target_link_libraries (${PKNLOPTUTILITY} ${PKLIBS})
+    	# 	set_target_properties(${PKNLOPTUTILITY} PROPERTIES FOLDER utilities)
+	# 	endforeach()
+	# endif()	
+	# add_custom_target(utilities DEPENDS ${PKUTILITIES} ${PKLASUTILITIES} ${PKFANNUTILITIES} ${PKNLOPTUTILITIES})
+	add_custom_target(utilities DEPENDS ${PKUTILITIES} ${PKLASUTILITIES} ${PKFANNUTILITIES})
+	set_target_properties(utilities PROPERTIES FOLDER 
+	phony)
+
+endif()
+
+
+	
+###############################################################################
+
+###############################################################################
+# Installation
+#install (FILES "${PROJECT_BINARY_DIR}/pktools-config" DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
+#install (FILES "${PROJECT_BINARY_DIR}/pktools-config" DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
+#test
+install (FILES "${CMAKE_CURRENT_BINARY_DIR}/pktools-config" DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
+install (FILES "pktools.pc" DESTINATION lib PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
+
+if (PKTOOLS_WITH_UTILITIES)
+	install (TARGETS ${PKUTILITIES} DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)	
+	if (BUILD_WITH_LIBLAS)
+		install (TARGETS ${PKLASUTILITIES} DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
+	endif(BUILD_WITH_LIBLAS)
+	if (BUILD_WITH_FANN)
+		install (TARGETS ${PKFANNUTILITIES} DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
+	endif(BUILD_WITH_FANN)
+	# if (BUILD_WITH_NLOPT)
+	# 	install (TARGETS ${PKNLOPTUTILITIES} DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
+	# endif(BUILD_WITH_NLOPT)
+	
+endif(PKTOOLS_WITH_UTILITIES)
+
+###############################################################################
+
+###############################################################################
+# Create Distribution
+SET(CPACK_SOURCE_GENERATOR "TGZ;ZIP;TBZ2")
+SET(CPACK_CMAKE_GENERATOR "Unix Makefiles")
+
+set(CPACK_SOURCE_PACKAGE_FILE_NAME
+  "${CMAKE_PROJECT_NAME}-${PKTOOLS_VERSION_MAJOR}.${PKTOOLS_VERSION_MINOR}.${PKTOOLS_VERSION_PATCH}")
+
+# Set files to ignore
+list(APPEND CPACK_SOURCE_IGNORE_FILES "_CPack_Packages")
+list(APPEND CPACK_SOURCE_IGNORE_FILES ".gz")
+list(APPEND CPACK_SOURCE_IGNORE_FILES ".bz2")
+list(APPEND CPACK_SOURCE_IGNORE_FILES ".zip")
+list(APPEND CPACK_SOURCE_IGNORE_FILES ".svn")
+list(APPEND CPACK_SOURCE_IGNORE_FILES "README")
+list(APPEND CPACK_SOURCE_IGNORE_FILES "HOWTORELEASE.txt")
+list(APPEND CPACK_SOURCE_IGNORE_FILES "CMakeCache.txt")
+list(APPEND CPACK_SOURCE_IGNORE_FILES "CPackConfig.cmake")
+list(APPEND CPACK_SOURCE_IGNORE_FILES "schemas")
+
+include(CPack)
+
+add_custom_target(dist COMMAND ${CMAKE_MAKE_PROGRAM} package_source)
+###############################################################################
diff --git a/ChangeLog b/ChangeLog
index 5ae0525..5a90e36 100755
--- a/ChangeLog
+++ b/ChangeLog
@@ -456,4 +456,20 @@ version 2.6.6
  - pkkalman
 	first release
 	support multi-band input and output
+ - pkextract
+	skip file if not within extent boundaries
+ - pklas2img
+	repair readNextPoint segfault
+	support of absmin and absmax rules
+	support of spacing attribute
 
+version 2.6.7
+	- pkextract deprecated: split into pkextractimg and pkextractogr
+	- pkextractogr: extract OGR vector dataset sample from raster dataset supporting multiple rules
+	- pkextractimg
+		extract raster dataset sample from raster dataset
+		support for change request sr#108995 (collect random samples with absolute threshold)
+		bug #47257 extract class label 0
+	- pkoptsvm: removed dependency from nlopt library. Only grid search supported.
+	- configure.ac: removed option to enable nlopt
+	- CMakeLists.txt: removed option to enable nlopt
diff --git a/INSTALL b/INSTALL
index 15bab20..be1e779 100644
--- a/INSTALL
+++ b/INSTALL
@@ -3,31 +3,19 @@ How to install pktools
 
 The simplest way to compile this package is:
 
-  1. `cd' to the directory containing the package's source code and type
-     `./configure' to configure the package for your system.  If you're
-     using `csh' on an old version of System V, you might need to type
-     `sh ./configure' instead to prevent `csh' from trying to execute
-     `configure' itself.
-     
-     You might need to execute:
-     
-     autoreconf -i
+  1. `cd' to the directory containing the package's source code and build out of source using cmake:
+     mkdir build
+     cd build
+     cmake ..
 
-     before you are able to configure (in case there is no configure file)
-     
-     configure options (use ./configure --help for help info)
-     
-        --with-gdal=<path to gdal-config file>
-     	--enable-fann
-	--enable-las
-	--enable-nlopt
+     to enable fann and liblas libraries, use
+     cmake -DBUILD_WITH_FANN=ON and -DBUILD_WITH_LIBLAS=ON respectively
 
+     In that case, please make sure to first install libfann-dev and liblas-dev.
+     
   2. Type `make' to compile the package.
 
-  3. Optionally, type `make check' to run any self-tests that come with
-     the package.
-
-  4. Type `make install' to install the programs and any data files and
+  3. Type `make install' to install the programs and any data files and
      documentation. You probably will need sudo rights (root access) to write into
      /usr/local/bin directory (default installation directory).
 
diff --git a/Makefile.am b/Makefile.am
deleted file mode 100755
index de912ef..0000000
--- a/Makefile.am
+++ /dev/null
@@ -1,42 +0,0 @@
-# to include m4 macros into aclocal.m4
-ACLOCAL_AMFLAGS = -I m4
-
-# the subdirectories of the project to go into
-SUBDIRS = src/base \
-	src/imageclasses \
-	src/algorithms \
-	src/fileclasses \
-	$(LASCLASSES_OPT) \
-	$(DOX_OPT) \
-	src/apps
-
-## The generated configuration header is installed in its own subdirectory of
-## $(libdir).  The reason for this is that the configuration information put
-## into this header file describes the target platform the installed library
-## has been built for.  Thus the file must not be installed into a location
-## intended for architecture-independent files, as defined by the Filesystem
-## Hierarchy Standard (FHS).
-## The nodist_ prefix instructs Automake to not generate rules for including
-## the listed files in the distribution on 'make dist'.  Files that are listed
-## in _HEADERS variables are normally included in the distribution, but the
-## configuration header file is generated at configure time and should not be
-## shipped with the source tarball.
-pktools_libincludedir = $(libdir)/pktools/include
-nodist_pktools_libinclude_HEADERS = config.h
-
-
-## Install the generated pkg-config file (.pc) into the expected location for
-## architecture-dependent package configuration information.  Occasionally,
-## pkg-config files are also used for architecture-independent data packages,
-## in which case the correct install location would be $(datadir)/pkgconfig.
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = pktools.pc
-
-########################################################################
-#             Additional files to be included in tarball               #
-########################################################################
-
-# Here we need include all files that are not mentioned in other Makefiles
-
-EXTRA_DIST = doc
-#bin_SCRIPTS = pktools-config
diff --git a/Makefile.in b/Makefile.in
deleted file mode 100644
index a727548..0000000
--- a/Makefile.in
+++ /dev/null
@@ -1,932 +0,0 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = .
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/configure $(am__configure_deps) \
-	$(srcdir)/config.h.in $(srcdir)/pktools.pc.in AUTHORS COPYING \
-	ChangeLog INSTALL NEWS README compile config.guess config.sub \
-	depcomp install-sh missing ltmain.sh
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_lib_gdal.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
- configure.lineno config.status.lineno
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = config.h
-CONFIG_CLEAN_FILES = pktools.pc
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_ at AM_V@)
-am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-SOURCES =
-DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
-	ctags-recursive dvi-recursive html-recursive info-recursive \
-	install-data-recursive install-dvi-recursive \
-	install-exec-recursive install-html-recursive \
-	install-info-recursive install-pdf-recursive \
-	install-ps-recursive install-recursive installcheck-recursive \
-	installdirs-recursive pdf-recursive ps-recursive \
-	tags-recursive uninstall-recursive
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(pkgconfigdir)" \
-	"$(DESTDIR)$(pktools_libincludedir)"
-DATA = $(pkgconfig_DATA)
-HEADERS = $(nodist_pktools_libinclude_HEADERS)
-RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
-  distclean-recursive maintainer-clean-recursive
-am__recursive_targets = \
-  $(RECURSIVE_TARGETS) \
-  $(RECURSIVE_CLEAN_TARGETS) \
-  $(am__extra_recursive_targets)
-AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
-	cscope distdir dist dist-all distcheck
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
-	$(LISP)config.h.in
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-CSCOPE = cscope
-DIST_SUBDIRS = $(SUBDIRS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-distdir = $(PACKAGE)-$(VERSION)
-top_distdir = $(distdir)
-am__remove_distdir = \
-  if test -d "$(distdir)"; then \
-    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
-      && rm -rf "$(distdir)" \
-      || { sleep 5 && rm -rf "$(distdir)"; }; \
-  else :; fi
-am__post_remove_distdir = $(am__remove_distdir)
-am__relativize = \
-  dir0=`pwd`; \
-  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
-  sed_rest='s,^[^/]*/*,,'; \
-  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
-  sed_butlast='s,/*[^/]*$$,,'; \
-  while test -n "$$dir1"; do \
-    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
-    if test "$$first" != "."; then \
-      if test "$$first" = ".."; then \
-        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
-        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
-      else \
-        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
-        if test "$$first2" = "$$first"; then \
-          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
-        else \
-          dir2="../$$dir2"; \
-        fi; \
-        dir0="$$dir0"/"$$first"; \
-      fi; \
-    fi; \
-    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
-  done; \
-  reldir="$$dir2"
-DIST_ARCHIVES = $(distdir).tar.gz
-GZIP_ENV = --best
-DIST_TARGETS = dist-gzip
-distuninstallcheck_listfiles = find . -type f -print
-am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
-  | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
-distcleancheck_listfiles = find . -type f -print
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_CXXFLAGS = @AM_CXXFLAGS@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AM_LDFLAGS = @AM_LDFLAGS@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FANN_CFLAGS = @FANN_CFLAGS@
-FANN_LIBS = @FANN_LIBS@
-FC = @FC@
-FCFLAGS = @FCFLAGS@
-FGREP = @FGREP@
-GDAL_CFLAGS = @GDAL_CFLAGS@
-GDAL_CONFIG = @GDAL_CONFIG@
-GDAL_DEP_LDFLAGS = @GDAL_DEP_LDFLAGS@
-GDAL_LDFLAGS = @GDAL_LDFLAGS@
-GDAL_OGR_ENABLED = @GDAL_OGR_ENABLED@
-GDAL_VERSION = @GDAL_VERSION@
-GREP = @GREP@
-GSL_CFLAGS = @GSL_CFLAGS@
-GSL_LIBS = @GSL_LIBS@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LASCLASSES_OPT = @LASCLASSES_OPT@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NLOPT_CFLAGS = @NLOPT_CFLAGS@
-NLOPT_LIBS = @NLOPT_LIBS@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PKTOOLS_SO_VERSION = @PKTOOLS_SO_VERSION@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_FC = @ac_ct_FC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-
-# to include m4 macros into aclocal.m4
-ACLOCAL_AMFLAGS = -I m4
-
-# the subdirectories of the project to go into
-SUBDIRS = src/base \
-	src/imageclasses \
-	src/algorithms \
-	src/fileclasses \
-	$(LASCLASSES_OPT) \
-	$(DOX_OPT) \
-	src/apps
-
-pktools_libincludedir = $(libdir)/pktools/include
-nodist_pktools_libinclude_HEADERS = config.h
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = pktools.pc
-
-########################################################################
-#             Additional files to be included in tarball               #
-########################################################################
-
-# Here we need include all files that are not mentioned in other Makefiles
-EXTRA_DIST = doc
-all: config.h
-	$(MAKE) $(AM_MAKEFLAGS) all-recursive
-
-.SUFFIXES:
-am--refresh: Makefile
-	@:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
-	      $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
-		&& exit 0; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    echo ' $(SHELL) ./config.status'; \
-	    $(SHELL) ./config.status;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	$(SHELL) ./config.status --recheck
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	$(am__cd) $(srcdir) && $(AUTOCONF)
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
-$(am__aclocal_m4_deps):
-
-config.h: stamp-h1
-	@test -f $@ || rm -f stamp-h1
-	@test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
-
-stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
-	@rm -f stamp-h1
-	cd $(top_builddir) && $(SHELL) ./config.status config.h
-$(srcdir)/config.h.in:  $(am__configure_deps) 
-	($(am__cd) $(top_srcdir) && $(AUTOHEADER))
-	rm -f stamp-h1
-	touch $@
-
-distclean-hdr:
-	-rm -f config.h stamp-h1
-pktools.pc: $(top_builddir)/config.status $(srcdir)/pktools.pc.in
-	cd $(top_builddir) && $(SHELL) ./config.status $@
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-distclean-libtool:
-	-rm -f libtool config.lt
-install-pkgconfigDATA: $(pkgconfig_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \
-	done
-
-uninstall-pkgconfigDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir)
-install-nodist_pktools_libincludeHEADERS: $(nodist_pktools_libinclude_HEADERS)
-	@$(NORMAL_INSTALL)
-	@list='$(nodist_pktools_libinclude_HEADERS)'; test -n "$(pktools_libincludedir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(pktools_libincludedir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(pktools_libincludedir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pktools_libincludedir)'"; \
-	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(pktools_libincludedir)" || exit $$?; \
-	done
-
-uninstall-nodist_pktools_libincludeHEADERS:
-	@$(NORMAL_UNINSTALL)
-	@list='$(nodist_pktools_libinclude_HEADERS)'; test -n "$(pktools_libincludedir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(pktools_libincludedir)'; $(am__uninstall_files_from_dir)
-
-# This directory's subdirectories are mostly independent; you can cd
-# into them and run 'make' without going through this Makefile.
-# To change the values of 'make' variables: instead of editing Makefiles,
-# (1) if the variable is set in 'config.status', edit 'config.status'
-#     (which will cause the Makefiles to be regenerated when you run 'make');
-# (2) otherwise, pass the desired values on the 'make' command line.
-$(am__recursive_targets):
-	@fail=; \
-	if $(am__make_keepgoing); then \
-	  failcom='fail=yes'; \
-	else \
-	  failcom='exit 1'; \
-	fi; \
-	dot_seen=no; \
-	target=`echo $@ | sed s/-recursive//`; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	for subdir in $$list; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    dot_seen=yes; \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done; \
-	if test "$$dot_seen" = "no"; then \
-	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
-	fi; test -z "$$fail"
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-recursive
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
-	  include_option=--etags-include; \
-	  empty_fix=.; \
-	else \
-	  include_option=--include; \
-	  empty_fix=; \
-	fi; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    test ! -f $$subdir/TAGS || \
-	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
-	  fi; \
-	done; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-recursive
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscope: cscope.files
-	test ! -s cscope.files \
-	  || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
-clean-cscope:
-	-rm -f cscope.files
-cscope.files: clean-cscope cscopelist
-cscopelist: cscopelist-recursive
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-	-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
-
-distdir: $(DISTFILES)
-	$(am__remove_distdir)
-	test -d "$(distdir)" || mkdir "$(distdir)"
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    $(am__make_dryrun) \
-	      || test -d "$(distdir)/$$subdir" \
-	      || $(MKDIR_P) "$(distdir)/$$subdir" \
-	      || exit 1; \
-	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
-	    $(am__relativize); \
-	    new_distdir=$$reldir; \
-	    dir1=$$subdir; dir2="$(top_distdir)"; \
-	    $(am__relativize); \
-	    new_top_distdir=$$reldir; \
-	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
-	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
-	    ($(am__cd) $$subdir && \
-	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$new_top_distdir" \
-	        distdir="$$new_distdir" \
-		am__remove_distdir=: \
-		am__skip_length_check=: \
-		am__skip_mode_fix=: \
-	        distdir) \
-	      || exit 1; \
-	  fi; \
-	done
-	-test -n "$(am__skip_mode_fix)" \
-	|| find "$(distdir)" -type d ! -perm -755 \
-		-exec chmod u+rwx,go+rx {} \; -o \
-	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
-	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
-	  ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
-	|| chmod -R a+r "$(distdir)"
-dist-gzip: distdir
-	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-	$(am__post_remove_distdir)
-
-dist-bzip2: distdir
-	tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
-	$(am__post_remove_distdir)
-
-dist-lzip: distdir
-	tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
-	$(am__post_remove_distdir)
-
-dist-xz: distdir
-	tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
-	$(am__post_remove_distdir)
-
-dist-tarZ: distdir
-	@echo WARNING: "Support for shar distribution archives is" \
-	               "deprecated." >&2
-	@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
-	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
-	$(am__post_remove_distdir)
-
-dist-shar: distdir
-	@echo WARNING: "Support for distribution archives compressed with" \
-		       "legacy program 'compress' is deprecated." >&2
-	@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
-	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
-	$(am__post_remove_distdir)
-
-dist-zip: distdir
-	-rm -f $(distdir).zip
-	zip -rq $(distdir).zip $(distdir)
-	$(am__post_remove_distdir)
-
-dist dist-all:
-	$(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
-	$(am__post_remove_distdir)
-
-# This target untars the dist file and tries a VPATH configuration.  Then
-# it guarantees that the distribution is self-contained by making another
-# tarfile.
-distcheck: dist
-	case '$(DIST_ARCHIVES)' in \
-	*.tar.gz*) \
-	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
-	*.tar.bz2*) \
-	  bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
-	*.tar.lz*) \
-	  lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
-	*.tar.xz*) \
-	  xz -dc $(distdir).tar.xz | $(am__untar) ;;\
-	*.tar.Z*) \
-	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
-	*.shar.gz*) \
-	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
-	*.zip*) \
-	  unzip $(distdir).zip ;;\
-	esac
-	chmod -R a-w $(distdir)
-	chmod u+w $(distdir)
-	mkdir $(distdir)/_build $(distdir)/_inst
-	chmod a-w $(distdir)
-	test -d $(distdir)/_build || exit 0; \
-	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
-	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
-	  && am__cwd=`pwd` \
-	  && $(am__cd) $(distdir)/_build \
-	  && ../configure \
-	    $(AM_DISTCHECK_CONFIGURE_FLAGS) \
-	    $(DISTCHECK_CONFIGURE_FLAGS) \
-	    --srcdir=.. --prefix="$$dc_install_base" \
-	  && $(MAKE) $(AM_MAKEFLAGS) \
-	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
-	  && $(MAKE) $(AM_MAKEFLAGS) check \
-	  && $(MAKE) $(AM_MAKEFLAGS) install \
-	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
-	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
-	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
-	        distuninstallcheck \
-	  && chmod -R a-w "$$dc_install_base" \
-	  && ({ \
-	       (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
-	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
-	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
-	  && rm -rf "$$dc_destdir" \
-	  && $(MAKE) $(AM_MAKEFLAGS) dist \
-	  && rm -rf $(DIST_ARCHIVES) \
-	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
-	  && cd "$$am__cwd" \
-	  || exit 1
-	$(am__post_remove_distdir)
-	@(echo "$(distdir) archives ready for distribution: "; \
-	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
-	  sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
-distuninstallcheck:
-	@test -n '$(distuninstallcheck_dir)' || { \
-	  echo 'ERROR: trying to run $@ with an empty' \
-	       '$$(distuninstallcheck_dir)' >&2; \
-	  exit 1; \
-	}; \
-	$(am__cd) '$(distuninstallcheck_dir)' || { \
-	  echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
-	  exit 1; \
-	}; \
-	test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
-	   || { echo "ERROR: files left after uninstall:" ; \
-	        if test -n "$(DESTDIR)"; then \
-	          echo "  (check DESTDIR support)"; \
-	        fi ; \
-	        $(distuninstallcheck_listfiles) ; \
-	        exit 1; } >&2
-distcleancheck: distclean
-	@if test '$(srcdir)' = . ; then \
-	  echo "ERROR: distcleancheck can only run from a VPATH build" ; \
-	  exit 1 ; \
-	fi
-	@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
-	  || { echo "ERROR: files left in build directory after distclean:" ; \
-	       $(distcleancheck_listfiles) ; \
-	       exit 1; } >&2
-check-am: all-am
-check: check-recursive
-all-am: Makefile $(DATA) $(HEADERS) config.h
-installdirs: installdirs-recursive
-installdirs-am:
-	for dir in "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(pktools_libincludedir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-recursive
-install-exec: install-exec-recursive
-install-data: install-data-recursive
-uninstall: uninstall-recursive
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-recursive
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-recursive
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-recursive
-	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-hdr \
-	distclean-libtool distclean-tags
-
-dvi: dvi-recursive
-
-dvi-am:
-
-html: html-recursive
-
-html-am:
-
-info: info-recursive
-
-info-am:
-
-install-data-am: install-nodist_pktools_libincludeHEADERS \
-	install-pkgconfigDATA
-
-install-dvi: install-dvi-recursive
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-recursive
-
-install-html-am:
-
-install-info: install-info-recursive
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-recursive
-
-install-pdf-am:
-
-install-ps: install-ps-recursive
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-recursive
-	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-	-rm -rf $(top_srcdir)/autom4te.cache
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-recursive
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-recursive
-
-pdf-am:
-
-ps: ps-recursive
-
-ps-am:
-
-uninstall-am: uninstall-nodist_pktools_libincludeHEADERS \
-	uninstall-pkgconfigDATA
-
-.MAKE: $(am__recursive_targets) all install-am install-strip
-
-.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
-	am--refresh check check-am clean clean-cscope clean-generic \
-	clean-libtool cscope cscopelist-am ctags ctags-am dist \
-	dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \
-	dist-xz dist-zip distcheck distclean distclean-generic \
-	distclean-hdr distclean-libtool distclean-tags distcleancheck \
-	distdir distuninstallcheck dvi dvi-am html html-am info \
-	info-am install install-am install-data install-data-am \
-	install-dvi install-dvi-am install-exec install-exec-am \
-	install-html install-html-am install-info install-info-am \
-	install-man install-nodist_pktools_libincludeHEADERS \
-	install-pdf install-pdf-am install-pkgconfigDATA install-ps \
-	install-ps-am install-strip installcheck installcheck-am \
-	installdirs installdirs-am maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
-	uninstall-am uninstall-nodist_pktools_libincludeHEADERS \
-	uninstall-pkgconfigDATA
-
-#bin_SCRIPTS = pktools-config
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/README b/README
deleted file mode 100644
index eca0de8..0000000
--- a/README
+++ /dev/null
@@ -1,16 +0,0 @@
-Description of pktools
-----------------------
-The version of this pktools distribution is 2.5.1
-pktools is a collection of programs written in C++ to perform operations, mostly on raster images. It heavily relies on the Geospatial Data Abstraction Library (GDAL, http://www.gdal.org) and OGR. The programs are similar to the gdal tools (gdalinfo, gdal_translate, gdal_merge,...) and some of the functionalities provided in pktools already exist in the gdal tools. The reason for implementing pktools is a combination of personal preference and additional functionality.
-
-License and distribution
-------------------------
-pktools is written by Pieter Kempeneers and is distributed under the GNU public license GPLv3. Refer to the file COPYING for copying conditions.
-
-Installation of pktools
------------------------
-To install the programs in pktools, refer to the file INSTALL
-
-Change history
--------------
-see Changelog
diff --git a/README.txt b/README.txt
new file mode 100644
index 0000000..e69de29
diff --git a/aclocal.m4 b/aclocal.m4
deleted file mode 100644
index e223108..0000000
--- a/aclocal.m4
+++ /dev/null
@@ -1,1352 +0,0 @@
-# generated automatically by aclocal 1.14.1 -*- Autoconf -*-
-
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
-
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
-m4_ifndef([AC_AUTOCONF_VERSION],
-  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
-[m4_warning([this file was generated for autoconf 2.69.
-You have another version of autoconf.  It may work, but is not guaranteed to.
-If you have problems, you may need to regenerate the build system entirely.
-To do so, use the procedure documented by the package, typically 'autoreconf'.])])
-
-# pkg.m4 - Macros to locate and utilise pkg-config.            -*- Autoconf -*-
-# serial 1 (pkg-config-0.24)
-# 
-# Copyright © 2004 Scott James Remnant <scott at netsplit.com>.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# PKG_PROG_PKG_CONFIG([MIN-VERSION])
-# ----------------------------------
-AC_DEFUN([PKG_PROG_PKG_CONFIG],
-[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
-m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
-m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
-AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
-AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
-AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
-
-if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
-	AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
-fi
-if test -n "$PKG_CONFIG"; then
-	_pkg_min_version=m4_default([$1], [0.9.0])
-	AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
-	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
-		AC_MSG_RESULT([yes])
-	else
-		AC_MSG_RESULT([no])
-		PKG_CONFIG=""
-	fi
-fi[]dnl
-])# PKG_PROG_PKG_CONFIG
-
-# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
-#
-# Check to see whether a particular set of modules exists.  Similar
-# to PKG_CHECK_MODULES(), but does not set variables or print errors.
-#
-# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
-# only at the first occurence in configure.ac, so if the first place
-# it's called might be skipped (such as if it is within an "if", you
-# have to call PKG_CHECK_EXISTS manually
-# --------------------------------------------------------------
-AC_DEFUN([PKG_CHECK_EXISTS],
-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
-if test -n "$PKG_CONFIG" && \
-    AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
-  m4_default([$2], [:])
-m4_ifvaln([$3], [else
-  $3])dnl
-fi])
-
-# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
-# ---------------------------------------------
-m4_define([_PKG_CONFIG],
-[if test -n "$$1"; then
-    pkg_cv_[]$1="$$1"
- elif test -n "$PKG_CONFIG"; then
-    PKG_CHECK_EXISTS([$3],
-                     [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`
-		      test "x$?" != "x0" && pkg_failed=yes ],
-		     [pkg_failed=yes])
- else
-    pkg_failed=untried
-fi[]dnl
-])# _PKG_CONFIG
-
-# _PKG_SHORT_ERRORS_SUPPORTED
-# -----------------------------
-AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi[]dnl
-])# _PKG_SHORT_ERRORS_SUPPORTED
-
-
-# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
-# [ACTION-IF-NOT-FOUND])
-#
-#
-# Note that if there is a possibility the first call to
-# PKG_CHECK_MODULES might not happen, you should be sure to include an
-# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
-#
-#
-# --------------------------------------------------------------
-AC_DEFUN([PKG_CHECK_MODULES],
-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
-AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
-AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
-
-pkg_failed=no
-AC_MSG_CHECKING([for $1])
-
-_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
-_PKG_CONFIG([$1][_LIBS], [libs], [$2])
-
-m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
-and $1[]_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.])
-
-if test $pkg_failed = yes; then
-   	AC_MSG_RESULT([no])
-        _PKG_SHORT_ERRORS_SUPPORTED
-        if test $_pkg_short_errors_supported = yes; then
-	        $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
-        else 
-	        $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
-
-	m4_default([$4], [AC_MSG_ERROR(
-[Package requirements ($2) were not met:
-
-$$1_PKG_ERRORS
-
-Consider adjusting the PKG_CONFIG_PATH environment variable if you
-installed software in a non-standard prefix.
-
-_PKG_TEXT])[]dnl
-        ])
-elif test $pkg_failed = untried; then
-     	AC_MSG_RESULT([no])
-	m4_default([$4], [AC_MSG_FAILURE(
-[The pkg-config script could not be found or is too old.  Make sure it
-is in your PATH or set the PKG_CONFIG environment variable to the full
-path to pkg-config.
-
-_PKG_TEXT
-
-To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
-        ])
-else
-	$1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
-	$1[]_LIBS=$pkg_cv_[]$1[]_LIBS
-        AC_MSG_RESULT([yes])
-	$3
-fi[]dnl
-])# PKG_CHECK_MODULES
-
-# Copyright (C) 2002-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_AUTOMAKE_VERSION(VERSION)
-# ----------------------------
-# Automake X.Y traces this macro to ensure aclocal.m4 has been
-# generated from the m4 files accompanying Automake X.Y.
-# (This private macro should not be called outside this file.)
-AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.14'
-dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
-dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.14.1], [],
-      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
-])
-
-# _AM_AUTOCONF_VERSION(VERSION)
-# -----------------------------
-# aclocal traces this macro to find the Autoconf version.
-# This is a private macro too.  Using m4_define simplifies
-# the logic in aclocal, which can simply ignore this definition.
-m4_define([_AM_AUTOCONF_VERSION], [])
-
-# AM_SET_CURRENT_AUTOMAKE_VERSION
-# -------------------------------
-# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
-# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
-AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.14.1])dnl
-m4_ifndef([AC_AUTOCONF_VERSION],
-  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
-
-# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
-# $ac_aux_dir to '$srcdir/foo'.  In other projects, it is set to
-# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
-#
-# Of course, Automake must honor this variable whenever it calls a
-# tool from the auxiliary directory.  The problem is that $srcdir (and
-# therefore $ac_aux_dir as well) can be either absolute or relative,
-# depending on how configure is run.  This is pretty annoying, since
-# it makes $ac_aux_dir quite unusable in subdirectories: in the top
-# source directory, any form will work fine, but in subdirectories a
-# relative path needs to be adjusted first.
-#
-# $ac_aux_dir/missing
-#    fails when called from a subdirectory if $ac_aux_dir is relative
-# $top_srcdir/$ac_aux_dir/missing
-#    fails if $ac_aux_dir is absolute,
-#    fails when called from a subdirectory in a VPATH build with
-#          a relative $ac_aux_dir
-#
-# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
-# are both prefixed by $srcdir.  In an in-source build this is usually
-# harmless because $srcdir is '.', but things will broke when you
-# start a VPATH build or use an absolute $srcdir.
-#
-# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
-# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
-#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
-# and then we would define $MISSING as
-#   MISSING="\${SHELL} $am_aux_dir/missing"
-# This will work as long as MISSING is not called from configure, because
-# unfortunately $(top_srcdir) has no meaning in configure.
-# However there are other variables, like CC, which are often used in
-# configure, and could therefore not use this "fixed" $ac_aux_dir.
-#
-# Another solution, used here, is to always expand $ac_aux_dir to an
-# absolute PATH.  The drawback is that using absolute paths prevent a
-# configured tree to be moved without reconfiguration.
-
-AC_DEFUN([AM_AUX_DIR_EXPAND],
-[dnl Rely on autoconf to set up CDPATH properly.
-AC_PREREQ([2.50])dnl
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
-])
-
-# AM_COND_IF                                            -*- Autoconf -*-
-
-# Copyright (C) 2008-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# _AM_COND_IF
-# _AM_COND_ELSE
-# _AM_COND_ENDIF
-# --------------
-# These macros are only used for tracing.
-m4_define([_AM_COND_IF])
-m4_define([_AM_COND_ELSE])
-m4_define([_AM_COND_ENDIF])
-
-# AM_COND_IF(COND, [IF-TRUE], [IF-FALSE])
-# ---------------------------------------
-# If the shell condition COND is true, execute IF-TRUE, otherwise execute
-# IF-FALSE.  Allow automake to learn about conditional instantiating macros
-# (the AC_CONFIG_FOOS).
-AC_DEFUN([AM_COND_IF],
-[m4_ifndef([_AM_COND_VALUE_$1],
-	   [m4_fatal([$0: no such condition "$1"])])dnl
-_AM_COND_IF([$1])dnl
-if test -z "$$1_TRUE"; then :
-  m4_n([$2])[]dnl
-m4_ifval([$3],
-[_AM_COND_ELSE([$1])dnl
-else
-  $3
-])dnl
-_AM_COND_ENDIF([$1])dnl
-fi[]dnl
-])
-
-# AM_CONDITIONAL                                            -*- Autoconf -*-
-
-# Copyright (C) 1997-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_CONDITIONAL(NAME, SHELL-CONDITION)
-# -------------------------------------
-# Define a conditional.
-AC_DEFUN([AM_CONDITIONAL],
-[AC_PREREQ([2.52])dnl
- m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
-       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
-AC_SUBST([$1_TRUE])dnl
-AC_SUBST([$1_FALSE])dnl
-_AM_SUBST_NOTMAKE([$1_TRUE])dnl
-_AM_SUBST_NOTMAKE([$1_FALSE])dnl
-m4_define([_AM_COND_VALUE_$1], [$2])dnl
-if $2; then
-  $1_TRUE=
-  $1_FALSE='#'
-else
-  $1_TRUE='#'
-  $1_FALSE=
-fi
-AC_CONFIG_COMMANDS_PRE(
-[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
-  AC_MSG_ERROR([[conditional "$1" was never defined.
-Usually this means the macro was only invoked conditionally.]])
-fi])])
-
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-
-# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
-# written in clear, in which case automake, when reading aclocal.m4,
-# will think it sees a *use*, and therefore will trigger all it's
-# C support machinery.  Also note that it means that autoscan, seeing
-# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
-
-
-# _AM_DEPENDENCIES(NAME)
-# ----------------------
-# See how the compiler implements dependency checking.
-# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
-# We try a few techniques and use that to set a single cache variable.
-#
-# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
-# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
-# dependency, and given that the user is not expected to run this macro,
-# just rely on AC_PROG_CC.
-AC_DEFUN([_AM_DEPENDENCIES],
-[AC_REQUIRE([AM_SET_DEPDIR])dnl
-AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
-AC_REQUIRE([AM_MAKE_INCLUDE])dnl
-AC_REQUIRE([AM_DEP_TRACK])dnl
-
-m4_if([$1], [CC],   [depcc="$CC"   am_compiler_list=],
-      [$1], [CXX],  [depcc="$CXX"  am_compiler_list=],
-      [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
-      [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
-      [$1], [UPC],  [depcc="$UPC"  am_compiler_list=],
-      [$1], [GCJ],  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
-                    [depcc="$$1"   am_compiler_list=])
-
-AC_CACHE_CHECK([dependency style of $depcc],
-               [am_cv_$1_dependencies_compiler_type],
-[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named 'D' -- because '-MD' means "put the output
-  # in D".
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
-
-  am_cv_$1_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
-  fi
-  am__universal=false
-  m4_case([$1], [CC],
-    [case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac],
-    [CXX],
-    [case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac])
-
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
-      # Solaris 10 /bin/sh.
-      echo '/* dummy */' > sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
-    # We check with '-c' and '-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle '-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs.
-    am__obj=sub/conftest.${OBJEXT-o}
-    am__minus_obj="-o $am__obj"
-    case $depmode in
-    gcc)
-      # This depmode causes a compiler race in universal mode.
-      test "$am__universal" = false || continue
-      ;;
-    nosideeffect)
-      # After this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested.
-      if test "x$enable_dependency_tracking" = xyes; then
-	continue
-      else
-	break
-      fi
-      ;;
-    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-      # This compiler won't grok '-c -o', but also, the minuso test has
-      # not run yet.  These depmodes are late enough in the game, and
-      # so weak that their functioning should not be impacted.
-      am__obj=conftest.${OBJEXT-o}
-      am__minus_obj=
-      ;;
-    none) break ;;
-    esac
-    if depmode=$depmode \
-       source=sub/conftest.c object=$am__obj \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_$1_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_$1_dependencies_compiler_type=none
-fi
-])
-AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
-AM_CONDITIONAL([am__fastdep$1], [
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
-])
-
-
-# AM_SET_DEPDIR
-# -------------
-# Choose a directory name for dependency files.
-# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
-AC_DEFUN([AM_SET_DEPDIR],
-[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
-])
-
-
-# AM_DEP_TRACK
-# ------------
-AC_DEFUN([AM_DEP_TRACK],
-[AC_ARG_ENABLE([dependency-tracking], [dnl
-AS_HELP_STRING(
-  [--enable-dependency-tracking],
-  [do not reject slow dependency extractors])
-AS_HELP_STRING(
-  [--disable-dependency-tracking],
-  [speeds up one-time build])])
-if test "x$enable_dependency_tracking" != xno; then
-  am_depcomp="$ac_aux_dir/depcomp"
-  AMDEPBACKSLASH='\'
-  am__nodep='_no'
-fi
-AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
-AC_SUBST([AMDEPBACKSLASH])dnl
-_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
-AC_SUBST([am__nodep])dnl
-_AM_SUBST_NOTMAKE([am__nodep])dnl
-])
-
-# Generate code to set up dependency tracking.              -*- Autoconf -*-
-
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-
-# _AM_OUTPUT_DEPENDENCY_COMMANDS
-# ------------------------------
-AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
-[{
-  # Older Autoconf quotes --file arguments for eval, but not when files
-  # are listed without --file.  Let's play safe and only enable the eval
-  # if we detect the quoting.
-  case $CONFIG_FILES in
-  *\'*) eval set x "$CONFIG_FILES" ;;
-  *)   set x $CONFIG_FILES ;;
-  esac
-  shift
-  for mf
-  do
-    # Strip MF so we end up with the name of the file.
-    mf=`echo "$mf" | sed -e 's/:.*$//'`
-    # Check whether this is an Automake generated Makefile or not.
-    # We used to match only the files named 'Makefile.in', but
-    # some people rename them; so instead we look at the file content.
-    # Grep'ing the first line is not enough: some people post-process
-    # each Makefile.in and add a new line on top of each file to say so.
-    # Grep'ing the whole file is not good either: AIX grep has a line
-    # limit of 2048, but all sed's we know have understand at least 4000.
-    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
-      dirpart=`AS_DIRNAME("$mf")`
-    else
-      continue
-    fi
-    # Extract the definition of DEPDIR, am__include, and am__quote
-    # from the Makefile without running 'make'.
-    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
-    test -z "$DEPDIR" && continue
-    am__include=`sed -n 's/^am__include = //p' < "$mf"`
-    test -z "$am__include" && continue
-    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-    # Find all dependency output files, they are included files with
-    # $(DEPDIR) in their names.  We invoke sed twice because it is the
-    # simplest approach to changing $(DEPDIR) to its actual value in the
-    # expansion.
-    for file in `sed -n "
-      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
-      # Make sure the directory exists.
-      test -f "$dirpart/$file" && continue
-      fdir=`AS_DIRNAME(["$file"])`
-      AS_MKDIR_P([$dirpart/$fdir])
-      # echo "creating $dirpart/$file"
-      echo '# dummy' > "$dirpart/$file"
-    done
-  done
-}
-])# _AM_OUTPUT_DEPENDENCY_COMMANDS
-
-
-# AM_OUTPUT_DEPENDENCY_COMMANDS
-# -----------------------------
-# This macro should only be invoked once -- use via AC_REQUIRE.
-#
-# This code is only required when automatic dependency tracking
-# is enabled.  FIXME.  This creates each '.P' file that we will
-# need in order to bootstrap the dependency handling code.
-AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
-[AC_CONFIG_COMMANDS([depfiles],
-     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
-     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
-])
-
-# Do all the work for Automake.                             -*- Autoconf -*-
-
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This macro actually does too much.  Some checks are only needed if
-# your package does certain things.  But this isn't really a big deal.
-
-dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
-m4_define([AC_PROG_CC],
-m4_defn([AC_PROG_CC])
-[_AM_PROG_CC_C_O
-])
-
-# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
-# AM_INIT_AUTOMAKE([OPTIONS])
-# -----------------------------------------------
-# The call with PACKAGE and VERSION arguments is the old style
-# call (pre autoconf-2.50), which is being phased out.  PACKAGE
-# and VERSION should now be passed to AC_INIT and removed from
-# the call to AM_INIT_AUTOMAKE.
-# We support both call styles for the transition.  After
-# the next Automake release, Autoconf can make the AC_INIT
-# arguments mandatory, and then we can depend on a new Autoconf
-# release and drop the old call support.
-AC_DEFUN([AM_INIT_AUTOMAKE],
-[AC_PREREQ([2.65])dnl
-dnl Autoconf wants to disallow AM_ names.  We explicitly allow
-dnl the ones we care about.
-m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
-AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
-AC_REQUIRE([AC_PROG_INSTALL])dnl
-if test "`cd $srcdir && pwd`" != "`pwd`"; then
-  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
-  # is not polluted with repeated "-I."
-  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
-  # test to see if srcdir already configured
-  if test -f $srcdir/config.status; then
-    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
-  fi
-fi
-
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
-  if (cygpath --version) >/dev/null 2>/dev/null; then
-    CYGPATH_W='cygpath -w'
-  else
-    CYGPATH_W=echo
-  fi
-fi
-AC_SUBST([CYGPATH_W])
-
-# Define the identity of the package.
-dnl Distinguish between old-style and new-style calls.
-m4_ifval([$2],
-[AC_DIAGNOSE([obsolete],
-             [$0: two- and three-arguments forms are deprecated.])
-m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
- AC_SUBST([PACKAGE], [$1])dnl
- AC_SUBST([VERSION], [$2])],
-[_AM_SET_OPTIONS([$1])dnl
-dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
-m4_if(
-  m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
-  [ok:ok],,
-  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
-
-_AM_IF_OPTION([no-define],,
-[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
- AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
-
-# Some tools Automake needs.
-AC_REQUIRE([AM_SANITY_CHECK])dnl
-AC_REQUIRE([AC_ARG_PROGRAM])dnl
-AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
-AM_MISSING_PROG([AUTOCONF], [autoconf])
-AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
-AM_MISSING_PROG([AUTOHEADER], [autoheader])
-AM_MISSING_PROG([MAKEINFO], [makeinfo])
-AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
-AC_REQUIRE([AC_PROG_MKDIR_P])dnl
-# For better backward compatibility.  To be removed once Automake 1.9.x
-# dies out for good.  For more background, see:
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
-AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
-# We need awk for the "check" target.  The system "awk" is bad on
-# some platforms.
-AC_REQUIRE([AC_PROG_AWK])dnl
-AC_REQUIRE([AC_PROG_MAKE_SET])dnl
-AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
-	      [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
-			     [_AM_PROG_TAR([v7])])])
-_AM_IF_OPTION([no-dependencies],,
-[AC_PROVIDE_IFELSE([AC_PROG_CC],
-		  [_AM_DEPENDENCIES([CC])],
-		  [m4_define([AC_PROG_CC],
-			     m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_CXX],
-		  [_AM_DEPENDENCIES([CXX])],
-		  [m4_define([AC_PROG_CXX],
-			     m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_OBJC],
-		  [_AM_DEPENDENCIES([OBJC])],
-		  [m4_define([AC_PROG_OBJC],
-			     m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
-		  [_AM_DEPENDENCIES([OBJCXX])],
-		  [m4_define([AC_PROG_OBJCXX],
-			     m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
-])
-AC_REQUIRE([AM_SILENT_RULES])dnl
-dnl The testsuite driver may need to know about EXEEXT, so add the
-dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This
-dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
-AC_CONFIG_COMMANDS_PRE(dnl
-[m4_provide_if([_AM_COMPILER_EXEEXT],
-  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
-
-# POSIX will say in a future version that running "rm -f" with no argument
-# is OK; and we want to be able to make that assumption in our Makefile
-# recipes.  So use an aggressive probe to check that the usage we want is
-# actually supported "in the wild" to an acceptable degree.
-# See automake bug#10828.
-# To make any issue more visible, cause the running configure to be aborted
-# by default if the 'rm' program in use doesn't match our expectations; the
-# user can still override this though.
-if rm -f && rm -fr && rm -rf; then : OK; else
-  cat >&2 <<'END'
-Oops!
-
-Your 'rm' program seems unable to run without file operands specified
-on the command line, even when the '-f' option is present.  This is contrary
-to the behaviour of most rm programs out there, and not conforming with
-the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
-
-Please tell bug-automake at gnu.org about your system, including the value
-of your $PATH and any error possibly output before this message.  This
-can help us improve future automake versions.
-
-END
-  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
-    echo 'Configuration will proceed anyway, since you have set the' >&2
-    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
-    echo >&2
-  else
-    cat >&2 <<'END'
-Aborting the configuration process, to ensure you take notice of the issue.
-
-You can download and install GNU coreutils to get an 'rm' implementation
-that behaves properly: <http://www.gnu.org/software/coreutils/>.
-
-If you want to complete the configuration process using your problematic
-'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
-to "yes", and re-run configure.
-
-END
-    AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
-  fi
-fi])
-
-dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
-dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
-dnl mangled by Autoconf and run in a shell conditional statement.
-m4_define([_AC_COMPILER_EXEEXT],
-m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
-
-# When config.status generates a header, we must update the stamp-h file.
-# This file resides in the same directory as the config header
-# that is generated.  The stamp files are numbered to have different names.
-
-# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
-# loop where config.status creates the headers, so we can generate
-# our stamp files there.
-AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
-[# Compute $1's index in $config_headers.
-_am_arg=$1
-_am_stamp_count=1
-for _am_header in $config_headers :; do
-  case $_am_header in
-    $_am_arg | $_am_arg:* )
-      break ;;
-    * )
-      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
-  esac
-done
-echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_INSTALL_SH
-# ------------------
-# Define $install_sh.
-AC_DEFUN([AM_PROG_INSTALL_SH],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-if test x"${install_sh}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\	*)
-    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
-  *)
-    install_sh="\${SHELL} $am_aux_dir/install-sh"
-  esac
-fi
-AC_SUBST([install_sh])])
-
-# Copyright (C) 2003-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# Check whether the underlying file-system supports filenames
-# with a leading dot.  For instance MS-DOS doesn't.
-AC_DEFUN([AM_SET_LEADING_DOT],
-[rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
-  am__leading_dot=.
-else
-  am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-AC_SUBST([am__leading_dot])])
-
-# Check to see how 'make' treats includes.	            -*- Autoconf -*-
-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_MAKE_INCLUDE()
-# -----------------
-# Check to see how make treats includes.
-AC_DEFUN([AM_MAKE_INCLUDE],
-[am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
-	@echo this is the am__doit target
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-AC_MSG_CHECKING([for style of include used by $am_make])
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from 'make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
-  am__include=include
-  am__quote=
-  _am_result=GNU
-  ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
-   echo '.include "confinc"' > confmf
-   case `$am_make -s -f confmf 2> /dev/null` in #(
-   *the\ am__doit\ target*)
-     am__include=.include
-     am__quote="\""
-     _am_result=BSD
-     ;;
-   esac
-fi
-AC_SUBST([am__include])
-AC_SUBST([am__quote])
-AC_MSG_RESULT([$_am_result])
-rm -f confinc confmf
-])
-
-# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
-
-# Copyright (C) 1997-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_MISSING_PROG(NAME, PROGRAM)
-# ------------------------------
-AC_DEFUN([AM_MISSING_PROG],
-[AC_REQUIRE([AM_MISSING_HAS_RUN])
-$1=${$1-"${am_missing_run}$2"}
-AC_SUBST($1)])
-
-# AM_MISSING_HAS_RUN
-# ------------------
-# Define MISSING if not defined so far and test if it is modern enough.
-# If it is, set am_missing_run to use it, otherwise, to nothing.
-AC_DEFUN([AM_MISSING_HAS_RUN],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-AC_REQUIRE_AUX_FILE([missing])dnl
-if test x"${MISSING+set}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\	*)
-    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
-  *)
-    MISSING="\${SHELL} $am_aux_dir/missing" ;;
-  esac
-fi
-# Use eval to expand $SHELL
-if eval "$MISSING --is-lightweight"; then
-  am_missing_run="$MISSING "
-else
-  am_missing_run=
-  AC_MSG_WARN(['missing' script is too old or missing])
-fi
-])
-
-# Helper functions for option handling.                     -*- Autoconf -*-
-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# _AM_MANGLE_OPTION(NAME)
-# -----------------------
-AC_DEFUN([_AM_MANGLE_OPTION],
-[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
-
-# _AM_SET_OPTION(NAME)
-# --------------------
-# Set option NAME.  Presently that only means defining a flag for this option.
-AC_DEFUN([_AM_SET_OPTION],
-[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
-
-# _AM_SET_OPTIONS(OPTIONS)
-# ------------------------
-# OPTIONS is a space-separated list of Automake options.
-AC_DEFUN([_AM_SET_OPTIONS],
-[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
-
-# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
-# -------------------------------------------
-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
-AC_DEFUN([_AM_IF_OPTION],
-[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# _AM_PROG_CC_C_O
-# ---------------
-# Like AC_PROG_CC_C_O, but changed for automake.  We rewrite AC_PROG_CC
-# to automatically call this.
-AC_DEFUN([_AM_PROG_CC_C_O],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-AC_REQUIRE_AUX_FILE([compile])dnl
-AC_LANG_PUSH([C])dnl
-AC_CACHE_CHECK(
-  [whether $CC understands -c and -o together],
-  [am_cv_prog_cc_c_o],
-  [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
-  # Make sure it works both with $CC and with simple cc.
-  # Following AC_PROG_CC_C_O, we do the test twice because some
-  # compilers refuse to overwrite an existing .o file with -o,
-  # though they will create one.
-  am_cv_prog_cc_c_o=yes
-  for am_i in 1 2; do
-    if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
-         && test -f conftest2.$ac_objext; then
-      : OK
-    else
-      am_cv_prog_cc_c_o=no
-      break
-    fi
-  done
-  rm -f core conftest*
-  unset am_i])
-if test "$am_cv_prog_cc_c_o" != yes; then
-   # Losing compiler, so override with the script.
-   # FIXME: It is wrong to rewrite CC.
-   # But if we don't then we get into trouble of one sort or another.
-   # A longer-term fix would be to have automake use am__CC in this case,
-   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
-   CC="$am_aux_dir/compile $CC"
-fi
-AC_LANG_POP([C])])
-
-# For backward compatibility.
-AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_RUN_LOG(COMMAND)
-# -------------------
-# Run COMMAND, save the exit status in ac_status, and log it.
-# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
-AC_DEFUN([AM_RUN_LOG],
-[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
-   ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-   (exit $ac_status); }])
-
-# Check to make sure that the build environment is sane.    -*- Autoconf -*-
-
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_SANITY_CHECK
-# ---------------
-AC_DEFUN([AM_SANITY_CHECK],
-[AC_MSG_CHECKING([whether build environment is sane])
-# Reject unsafe characters in $srcdir or the absolute working directory
-# name.  Accept space and tab only in the latter.
-am_lf='
-'
-case `pwd` in
-  *[[\\\"\#\$\&\'\`$am_lf]]*)
-    AC_MSG_ERROR([unsafe absolute working directory name]);;
-esac
-case $srcdir in
-  *[[\\\"\#\$\&\'\`$am_lf\ \	]]*)
-    AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
-esac
-
-# Do 'set' in a subshell so we don't clobber the current shell's
-# arguments.  Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
-   am_has_slept=no
-   for am_try in 1 2; do
-     echo "timestamp, slept: $am_has_slept" > conftest.file
-     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
-     if test "$[*]" = "X"; then
-	# -L didn't work.
-	set X `ls -t "$srcdir/configure" conftest.file`
-     fi
-     if test "$[*]" != "X $srcdir/configure conftest.file" \
-	&& test "$[*]" != "X conftest.file $srcdir/configure"; then
-
-	# If neither matched, then we have a broken ls.  This can happen
-	# if, for instance, CONFIG_SHELL is bash and it inherits a
-	# broken ls alias from the environment.  This has actually
-	# happened.  Such a system could not be considered "sane".
-	AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
-  alias in your environment])
-     fi
-     if test "$[2]" = conftest.file || test $am_try -eq 2; then
-       break
-     fi
-     # Just in case.
-     sleep 1
-     am_has_slept=yes
-   done
-   test "$[2]" = conftest.file
-   )
-then
-   # Ok.
-   :
-else
-   AC_MSG_ERROR([newly created file is older than distributed files!
-Check your system clock])
-fi
-AC_MSG_RESULT([yes])
-# If we didn't sleep, we still need to ensure time stamps of config.status and
-# generated files are strictly newer.
-am_sleep_pid=
-if grep 'slept: no' conftest.file >/dev/null 2>&1; then
-  ( sleep 1 ) &
-  am_sleep_pid=$!
-fi
-AC_CONFIG_COMMANDS_PRE(
-  [AC_MSG_CHECKING([that generated files are newer than configure])
-   if test -n "$am_sleep_pid"; then
-     # Hide warnings about reused PIDs.
-     wait $am_sleep_pid 2>/dev/null
-   fi
-   AC_MSG_RESULT([done])])
-rm -f conftest.file
-])
-
-# Copyright (C) 2009-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_SILENT_RULES([DEFAULT])
-# --------------------------
-# Enable less verbose build rules; with the default set to DEFAULT
-# ("yes" being less verbose, "no" or empty being verbose).
-AC_DEFUN([AM_SILENT_RULES],
-[AC_ARG_ENABLE([silent-rules], [dnl
-AS_HELP_STRING(
-  [--enable-silent-rules],
-  [less verbose build output (undo: "make V=1")])
-AS_HELP_STRING(
-  [--disable-silent-rules],
-  [verbose build output (undo: "make V=0")])dnl
-])
-case $enable_silent_rules in @%:@ (((
-  yes) AM_DEFAULT_VERBOSITY=0;;
-   no) AM_DEFAULT_VERBOSITY=1;;
-    *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
-esac
-dnl
-dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
-dnl do not support nested variable expansions.
-dnl See automake bug#9928 and bug#10237.
-am_make=${MAKE-make}
-AC_CACHE_CHECK([whether $am_make supports nested variables],
-   [am_cv_make_support_nested_variables],
-   [if AS_ECHO([['TRUE=$(BAR$(V))
-BAR0=false
-BAR1=true
-V=1
-am__doit:
-	@$(TRUE)
-.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
-  am_cv_make_support_nested_variables=yes
-else
-  am_cv_make_support_nested_variables=no
-fi])
-if test $am_cv_make_support_nested_variables = yes; then
-  dnl Using '$V' instead of '$(V)' breaks IRIX make.
-  AM_V='$(V)'
-  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
-else
-  AM_V=$AM_DEFAULT_VERBOSITY
-  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
-fi
-AC_SUBST([AM_V])dnl
-AM_SUBST_NOTMAKE([AM_V])dnl
-AC_SUBST([AM_DEFAULT_V])dnl
-AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
-AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
-AM_BACKSLASH='\'
-AC_SUBST([AM_BACKSLASH])dnl
-_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
-])
-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_INSTALL_STRIP
-# ---------------------
-# One issue with vendor 'install' (even GNU) is that you can't
-# specify the program used to strip binaries.  This is especially
-# annoying in cross-compiling environments, where the build's strip
-# is unlikely to handle the host's binaries.
-# Fortunately install-sh will honor a STRIPPROG variable, so we
-# always use install-sh in "make install-strip", and initialize
-# STRIPPROG with the value of the STRIP variable (set by the user).
-AC_DEFUN([AM_PROG_INSTALL_STRIP],
-[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-# Installed binaries are usually stripped using 'strip' when the user
-# run "make install-strip".  However 'strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the 'STRIP' environment variable to overrule this program.
-dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
-if test "$cross_compiling" != no; then
-  AC_CHECK_TOOL([STRIP], [strip], :)
-fi
-INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
-AC_SUBST([INSTALL_STRIP_PROGRAM])])
-
-# Copyright (C) 2006-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# _AM_SUBST_NOTMAKE(VARIABLE)
-# ---------------------------
-# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
-# This macro is traced by Automake.
-AC_DEFUN([_AM_SUBST_NOTMAKE])
-
-# AM_SUBST_NOTMAKE(VARIABLE)
-# --------------------------
-# Public sister of _AM_SUBST_NOTMAKE.
-AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
-
-# Check how to create a tarball.                            -*- Autoconf -*-
-
-# Copyright (C) 2004-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# _AM_PROG_TAR(FORMAT)
-# --------------------
-# Check how to create a tarball in format FORMAT.
-# FORMAT should be one of 'v7', 'ustar', or 'pax'.
-#
-# Substitute a variable $(am__tar) that is a command
-# writing to stdout a FORMAT-tarball containing the directory
-# $tardir.
-#     tardir=directory && $(am__tar) > result.tar
-#
-# Substitute a variable $(am__untar) that extract such
-# a tarball read from stdin.
-#     $(am__untar) < result.tar
-#
-AC_DEFUN([_AM_PROG_TAR],
-[# Always define AMTAR for backward compatibility.  Yes, it's still used
-# in the wild :-(  We should find a proper way to deprecate it ...
-AC_SUBST([AMTAR], ['$${TAR-tar}'])
-
-# We'll loop over all known methods to create a tar archive until one works.
-_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
-
-m4_if([$1], [v7],
-  [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
-
-  [m4_case([$1],
-    [ustar],
-     [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
-      # There is notably a 21 bits limit for the UID and the GID.  In fact,
-      # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
-      # and bug#13588).
-      am_max_uid=2097151 # 2^21 - 1
-      am_max_gid=$am_max_uid
-      # The $UID and $GID variables are not portable, so we need to resort
-      # to the POSIX-mandated id(1) utility.  Errors in the 'id' calls
-      # below are definitely unexpected, so allow the users to see them
-      # (that is, avoid stderr redirection).
-      am_uid=`id -u || echo unknown`
-      am_gid=`id -g || echo unknown`
-      AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
-      if test $am_uid -le $am_max_uid; then
-         AC_MSG_RESULT([yes])
-      else
-         AC_MSG_RESULT([no])
-         _am_tools=none
-      fi
-      AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
-      if test $am_gid -le $am_max_gid; then
-         AC_MSG_RESULT([yes])
-      else
-        AC_MSG_RESULT([no])
-        _am_tools=none
-      fi],
-
-  [pax],
-    [],
-
-  [m4_fatal([Unknown tar format])])
-
-  AC_MSG_CHECKING([how to create a $1 tar archive])
-
-  # Go ahead even if we have the value already cached.  We do so because we
-  # need to set the values for the 'am__tar' and 'am__untar' variables.
-  _am_tools=${am_cv_prog_tar_$1-$_am_tools}
-
-  for _am_tool in $_am_tools; do
-    case $_am_tool in
-    gnutar)
-      for _am_tar in tar gnutar gtar; do
-        AM_RUN_LOG([$_am_tar --version]) && break
-      done
-      am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
-      am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
-      am__untar="$_am_tar -xf -"
-      ;;
-    plaintar)
-      # Must skip GNU tar: if it does not support --format= it doesn't create
-      # ustar tarball either.
-      (tar --version) >/dev/null 2>&1 && continue
-      am__tar='tar chf - "$$tardir"'
-      am__tar_='tar chf - "$tardir"'
-      am__untar='tar xf -'
-      ;;
-    pax)
-      am__tar='pax -L -x $1 -w "$$tardir"'
-      am__tar_='pax -L -x $1 -w "$tardir"'
-      am__untar='pax -r'
-      ;;
-    cpio)
-      am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
-      am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
-      am__untar='cpio -i -H $1 -d'
-      ;;
-    none)
-      am__tar=false
-      am__tar_=false
-      am__untar=false
-      ;;
-    esac
-
-    # If the value was cached, stop now.  We just wanted to have am__tar
-    # and am__untar set.
-    test -n "${am_cv_prog_tar_$1}" && break
-
-    # tar/untar a dummy directory, and stop if the command works.
-    rm -rf conftest.dir
-    mkdir conftest.dir
-    echo GrepMe > conftest.dir/file
-    AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
-    rm -rf conftest.dir
-    if test -s conftest.tar; then
-      AM_RUN_LOG([$am__untar <conftest.tar])
-      AM_RUN_LOG([cat conftest.dir/file])
-      grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
-    fi
-  done
-  rm -rf conftest.dir
-
-  AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
-  AC_MSG_RESULT([$am_cv_prog_tar_$1])])
-
-AC_SUBST([am__tar])
-AC_SUBST([am__untar])
-]) # _AM_PROG_TAR
-
-m4_include([m4/ax_lib_gdal.m4])
-m4_include([m4/libtool.m4])
-m4_include([m4/ltoptions.m4])
-m4_include([m4/ltsugar.m4])
-m4_include([m4/ltversion.m4])
-m4_include([m4/lt~obsolete.m4])
diff --git a/config.h.in b/cmake-config.h.in
similarity index 98%
copy from config.h.in
copy to cmake-config.h.in
index 2eacbfd..d812a20 100644
--- a/config.h.in
+++ b/cmake-config.h.in
@@ -74,7 +74,7 @@
 #undef STDC_HEADERS
 
 /* Version number of package */
-#undef VERSION
+#define VERSION "@PKTOOLS_VERSION@"
 
 /* Define to `unsigned int' if <sys/types.h> does not define. */
 #undef size_t
diff --git a/cmake-config.in b/cmake-config.in
new file mode 100644
index 0000000..1354d0f
--- /dev/null
+++ b/cmake-config.in
@@ -0,0 +1,47 @@
+#!/bin/sh
+
+usage()
+{
+    cat <<EOF
+Usage: cmake-config [OPTIONS]
+Options:
+     [--prefix]
+     [--version]
+     [--libs]
+     [--cflags]
+     [--ldflags]
+     [--includes]
+EOF
+    exit $1
+}
+if test $# -eq 0; then
+  usage 1 1>&2
+fi
+while test $# -gt 0; do
+case "$1" in
+    -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
+    *) optarg= ;;
+esac
+case $1 in
+    --prefix)
+      echo @CMAKE_INSTALL_PREFIX@
+     ;;
+    --version)
+      echo @PKTOOLS_PACKAGE_VERSION@
+     ;;
+    --cflags)
+      echo -I at CMAKE_INSTALL_PREFIX@/include 
+      ;;
+    --libs)
+      echo -L at CMAKE_INSTALL_PREFIX@/@PROJECT_LIBRARY_DIR@ -l at PKTOOLS_ALGORITHMS_LIB_NAME@  -l at PKTOOLS_FILECLASSES_LIB_NAME@ -l at PKTOOLS_IMAGECLASSES_LIB_NAME@ 
+      ;;
+    --ldflags)
+      echo @CMAKE_INSTALL_PREFIX@/@PROJECT_LIBRARY_DIR@
+      ;;
+    --includes)
+      echo @CMAKE_INSTALL_PREFIX@/include
+      ;;
+  esac
+  shift
+done
+
diff --git a/cmake.pc.in b/cmake.pc.in
new file mode 100644
index 0000000..295b99a
--- /dev/null
+++ b/cmake.pc.in
@@ -0,0 +1,11 @@
+prefix=@CMAKE_INSTALL_PREFIX@
+exec_prefix=@CMAKE_INSTALL_PREFIX@\bin
+libdir=@CMAKE_INSTALL_PREFIX@\lib
+includedir=@CMAKE_INSTALL_PREFIX@\include
+
+Name: pktools
+Description: API library for pktools
+Requires: gdal gsl armadillo
+Version: @PACKAGE_VERSION@
+Libs: -L${libdir} -lbase -lalgorithms -limageClasses -lfileClasses -llasClasses
+Cflags: -I${includedir}/pktools
\ No newline at end of file
diff --git a/cmake/modules/FindFANN.cmake b/cmake/modules/FindFANN.cmake
new file mode 100644
index 0000000..42774f5
--- /dev/null
+++ b/cmake/modules/FindFANN.cmake
@@ -0,0 +1,28 @@
+
+find_path(FANN_INCLUDE_DIR fann.h
+    HINTS
+        ENV FANN_DIR
+        ENV FANN_ROOT
+    PATH_SUFFIXES
+        include
+        include/fann
+)
+
+find_library(FANN_LIBRARY floatfann
+    HINTS
+        ENV FANN_DIR
+        ENV FANN_ROOT
+    PATH_SUFFIXES
+        lib
+        lib/fann
+)
+
+set(FANN_INCLUDE_DIRS "${FANN_INCLUDE_DIR}")
+set(FANN_LIBRARIES "${FANN_LIBRARY}")
+
+include(FindPackageHandleStandardArgs)
+
+find_package_handle_standard_args(FANN DEFAULT_MSG
+    FANN_LIBRARY FANN_INCLUDE_DIR)
+
+mark_as_advanced(FANN_INCLUDE_DIR FANN_LIBRARY)
diff --git a/cmake/modules/FindGSL.cmake b/cmake/modules/FindGSL.cmake
new file mode 100644
index 0000000..e033c6a
--- /dev/null
+++ b/cmake/modules/FindGSL.cmake
@@ -0,0 +1,130 @@
+## 
+## Try to find gnu scientific library GSL  
+## (see http://www.gnu.org/software/gsl/)
+## Once run this will define: 
+## 
+## GSL_FOUND       = system has GSL lib
+##
+## GSL_LIBRARIES   = full path to the libraries
+##    on Unix/Linux with additional linker flags from "gsl-config --libs"
+## 
+## CMAKE_GSL_CXX_FLAGS  = Unix compiler flags for GSL, essentially "`gsl-config --cxxflags`"
+##
+## GSL_INCLUDE_DIR      = where to find headers 
+##
+## GSL_LINK_DIRECTORIES = link directories, useful for rpath on Unix
+## GSL_EXE_LINKER_FLAGS = rpath on Unix
+##
+## Felix Woelk 07/2004
+## minor corrections Jan Woetzel
+##
+## www.mip.informatik.uni-kiel.de
+## --------------------------------
+##
+
+
+IF(WIN32)
+
+  SET(GSL_MINGW_PREFIX "c:/msys/local" )
+  SET(GSL_MSVC_PREFIX "$ENV{LIB_DIR}")
+  FIND_LIBRARY(GSL_LIB gsl PATHS 
+    ${GSL_MINGW_PREFIX}/lib 
+    ${GSL_MSVC_PREFIX}/lib
+    )
+  #MSVC version of the lib is just called 'cblas'
+  FIND_LIBRARY(GSLCBLAS_LIB gslcblas cblas PATHS 
+    ${GSL_MINGW_PREFIX}/lib 
+    ${GSL_MSVC_PREFIX}/lib
+    )
+
+  FIND_PATH(GSL_INCLUDE_DIR gsl/gsl_blas.h 
+    ${GSL_MINGW_PREFIX}/include 
+    ${GSL_MSVC_PREFIX}/include
+    )
+
+  IF (GSL_LIB AND GSLCBLAS_LIB)
+    SET (GSL_LIBRARIES ${GSL_LIB} ${GSLCBLAS_LIB})
+  ENDIF (GSL_LIB AND GSLCBLAS_LIB)
+  
+ELSE(WIN32)
+  IF(UNIX) 
+    SET(GSL_CONFIG_PREFER_PATH "$ENV{GSL_HOME}/bin" CACHE STRING "preferred path to GSL (gsl-config)")
+    FIND_PROGRAM(GSL_CONFIG gsl-config
+      ${GSL_CONFIG_PREFER_PATH}
+      $ENV{LIB_DIR}/bin
+      /usr/local/bin/
+      /usr/bin/
+      )
+    # MESSAGE("DBG GSL_CONFIG ${GSL_CONFIG}")
+    
+    IF (GSL_CONFIG) 
+      # set CXXFLAGS to be fed into CXX_FLAGS by the user:
+      SET(GSL_CXX_FLAGS "`${GSL_CONFIG} --cflags`")
+      
+      # set INCLUDE_DIRS to prefix+include
+      EXEC_PROGRAM(${GSL_CONFIG}
+        ARGS --prefix
+        OUTPUT_VARIABLE GSL_PREFIX)
+      SET(GSL_INCLUDE_DIR ${GSL_PREFIX}/include CACHE STRING INTERNAL)
+
+      # set link libraries and link flags
+      EXEC_PROGRAM(${GSL_CONFIG}
+          ARGS --libs
+          OUTPUT_VARIABLE GSL_LIBRARIES)
+      
+      ## extract link dirs for rpath  
+      EXEC_PROGRAM(${GSL_CONFIG}
+        ARGS --libs
+        OUTPUT_VARIABLE GSL_CONFIG_LIBS )
+
+      ## split off the link dirs (for rpath)
+      ## use regular expression to match wildcard equivalent "-L*<endchar>"
+      ## with <endchar> is a space or a semicolon
+      STRING(REGEX MATCHALL "[-][L]([^ ;])+" 
+        GSL_LINK_DIRECTORIES_WITH_PREFIX 
+        "${GSL_CONFIG_LIBS}" )
+        #      MESSAGE("DBG  GSL_LINK_DIRECTORIES_WITH_PREFIX=${GSL_LINK_DIRECTORIES_WITH_PREFIX}")
+
+      ## remove prefix -L because we need the pure directory for LINK_DIRECTORIES
+      
+      IF (GSL_LINK_DIRECTORIES_WITH_PREFIX)
+        STRING(REGEX REPLACE "[-][L]" "" GSL_LINK_DIRECTORIES ${GSL_LINK_DIRECTORIES_WITH_PREFIX} )
+      ENDIF (GSL_LINK_DIRECTORIES_WITH_PREFIX)
+      SET(GSL_EXE_LINKER_FLAGS "-Wl,-rpath,${GSL_LINK_DIRECTORIES}" CACHE STRING INTERNAL)
+      #      MESSAGE("DBG  GSL_LINK_DIRECTORIES=${GSL_LINK_DIRECTORIES}")
+      #      MESSAGE("DBG  GSL_EXE_LINKER_FLAGS=${GSL_EXE_LINKER_FLAGS}")
+
+      #      ADD_DEFINITIONS("-DHAVE_GSL")
+      #      SET(GSL_DEFINITIONS "-DHAVE_GSL")
+      MARK_AS_ADVANCED(
+        GSL_CXX_FLAGS
+        GSL_INCLUDE_DIR
+        GSL_LIBRARIES
+        GSL_LINK_DIRECTORIES
+        GSL_DEFINITIONS
+      )
+      
+    ELSE(GSL_CONFIG)
+
+      IF (GSL_FIND_REQUIRED)
+         MESSAGE(FATAL_ERROR "Could not find gsl-config. Please set it manually. GSL_CONFIG=${GSL_CONFIG}")
+      ELSE (GSL_FIND_REQUIRED)
+         MESSAGE(STATUS "Could not find GSL")
+         # TODO: Avoid cmake complaints if GSL is not found
+      ENDIF (GSL_FIND_REQUIRED)
+
+    ENDIF(GSL_CONFIG)
+
+  ENDIF(UNIX)
+ENDIF(WIN32)
+
+
+IF(GSL_LIBRARIES)
+  IF(GSL_INCLUDE_DIR OR GSL_CXX_FLAGS)
+
+    SET(GSL_FOUND 1)
+    
+    MESSAGE(STATUS "Using GSL from ${GSL_PREFIX}")
+
+  ENDIF(GSL_INCLUDE_DIR OR GSL_CXX_FLAGS)
+ENDIF(GSL_LIBRARIES)
diff --git a/cmake/modules/FindLIBLAS.cmake b/cmake/modules/FindLIBLAS.cmake
new file mode 100644
index 0000000..1da6b1d
--- /dev/null
+++ b/cmake/modules/FindLIBLAS.cmake
@@ -0,0 +1,36 @@
+
+find_path(LIBLAS_INCLUDE_DIR liblas/liblas.hpp
+    HINTS
+        ENV LIBLAS_DIR
+        ENV LIBLAS_ROOT
+    PATH_SUFFIXES
+        include
+)
+
+find_library(LIBLAS_LIBRARY las
+    HINTS
+        ENV LIBLAS_DIR
+        ENV LIBLAS_ROOT
+    PATH_SUFFIXES
+        lib
+        liblas/
+)
+
+find_library(LIBLAS_C_LIBRARY las_c
+    HINTS
+        ENV LIBLAS_DIR
+        ENV LIBLAS_ROOT
+    PATH_SUFFIXES
+        lib
+        liblas/
+)
+
+set(LIBLAS_INCLUDE_DIRS "${LIBLAS_INCLUDE_DIR}")
+set(LIBLAS_LIBRARIES "${LIBLAS_LIBRARY}" "${LIBLAS_C_LIBRARY}")
+
+include(FindPackageHandleStandardArgs)
+
+find_package_handle_standard_args(LIBLAS DEFAULT_MSG
+    LIBLAS_LIBRARY LIBLAS_INCLUDE_DIR LIBLAS_C_LIBRARY)
+
+mark_as_advanced(LIBLAS_INCLUDE_DIR LIBLAS_LIBRARY LIBLAS_C_LIBRARY)
diff --git a/cmake/modules/FindNLOPT.cmake b/cmake/modules/FindNLOPT.cmake
new file mode 100644
index 0000000..3aec0fd
--- /dev/null
+++ b/cmake/modules/FindNLOPT.cmake
@@ -0,0 +1,28 @@
+find_path(NLOPT_INCLUDE_DIR nlopt.h
+    HINTS
+        ENV NLOPT_DIR
+        ENV NLOPT_ROOT
+    PATH_SUFFIXES
+        include
+        include/nlopt
+)
+
+#find_library(NLOPT_LIBRARY libnlopt-0
+find_library(NLOPT_LIBRARY nlopt
+  HINTS
+  ENV NLOPT_DIR
+  ENV NLOPT_ROOT
+  PATH_SUFFIXES
+  lib
+  lib/nlopt
+  )
+
+set(NLOPT_INCLUDE_DIRS "${NLOPT_INCLUDE_DIR}")
+set(NLOPT_LIBRARIES "${NLOPT_LIBRARY}")
+
+include(FindPackageHandleStandardArgs)
+
+find_package_handle_standard_args(NLOPT DEFAULT_MSG
+    NLOPT_LIBRARY NLOPT_INCLUDE_DIR)
+
+mark_as_advanced(NLOPT_INCLUDE_DIR NLOPT_LIBRARY)
\ No newline at end of file
diff --git a/compile b/compile
deleted file mode 100755
index 531136b..0000000
--- a/compile
+++ /dev/null
@@ -1,347 +0,0 @@
-#! /bin/sh
-# Wrapper for compilers which do not understand '-c -o'.
-
-scriptversion=2012-10-14.11; # UTC
-
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
-# Written by Tom Tromey <tromey at cygnus.com>.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# This file is maintained in Automake, please report
-# bugs to <bug-automake at gnu.org> or send patches to
-# <automake-patches at gnu.org>.
-
-nl='
-'
-
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent tools from complaining about whitespace usage.
-IFS=" ""	$nl"
-
-file_conv=
-
-# func_file_conv build_file lazy
-# Convert a $build file to $host form and store it in $file
-# Currently only supports Windows hosts. If the determined conversion
-# type is listed in (the comma separated) LAZY, no conversion will
-# take place.
-func_file_conv ()
-{
-  file=$1
-  case $file in
-    / | /[!/]*) # absolute file, and not a UNC file
-      if test -z "$file_conv"; then
-	# lazily determine how to convert abs files
-	case `uname -s` in
-	  MINGW*)
-	    file_conv=mingw
-	    ;;
-	  CYGWIN*)
-	    file_conv=cygwin
-	    ;;
-	  *)
-	    file_conv=wine
-	    ;;
-	esac
-      fi
-      case $file_conv/,$2, in
-	*,$file_conv,*)
-	  ;;
-	mingw/*)
-	  file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
-	  ;;
-	cygwin/*)
-	  file=`cygpath -m "$file" || echo "$file"`
-	  ;;
-	wine/*)
-	  file=`winepath -w "$file" || echo "$file"`
-	  ;;
-      esac
-      ;;
-  esac
-}
-
-# func_cl_dashL linkdir
-# Make cl look for libraries in LINKDIR
-func_cl_dashL ()
-{
-  func_file_conv "$1"
-  if test -z "$lib_path"; then
-    lib_path=$file
-  else
-    lib_path="$lib_path;$file"
-  fi
-  linker_opts="$linker_opts -LIBPATH:$file"
-}
-
-# func_cl_dashl library
-# Do a library search-path lookup for cl
-func_cl_dashl ()
-{
-  lib=$1
-  found=no
-  save_IFS=$IFS
-  IFS=';'
-  for dir in $lib_path $LIB
-  do
-    IFS=$save_IFS
-    if $shared && test -f "$dir/$lib.dll.lib"; then
-      found=yes
-      lib=$dir/$lib.dll.lib
-      break
-    fi
-    if test -f "$dir/$lib.lib"; then
-      found=yes
-      lib=$dir/$lib.lib
-      break
-    fi
-    if test -f "$dir/lib$lib.a"; then
-      found=yes
-      lib=$dir/lib$lib.a
-      break
-    fi
-  done
-  IFS=$save_IFS
-
-  if test "$found" != yes; then
-    lib=$lib.lib
-  fi
-}
-
-# func_cl_wrapper cl arg...
-# Adjust compile command to suit cl
-func_cl_wrapper ()
-{
-  # Assume a capable shell
-  lib_path=
-  shared=:
-  linker_opts=
-  for arg
-  do
-    if test -n "$eat"; then
-      eat=
-    else
-      case $1 in
-	-o)
-	  # configure might choose to run compile as 'compile cc -o foo foo.c'.
-	  eat=1
-	  case $2 in
-	    *.o | *.[oO][bB][jJ])
-	      func_file_conv "$2"
-	      set x "$@" -Fo"$file"
-	      shift
-	      ;;
-	    *)
-	      func_file_conv "$2"
-	      set x "$@" -Fe"$file"
-	      shift
-	      ;;
-	  esac
-	  ;;
-	-I)
-	  eat=1
-	  func_file_conv "$2" mingw
-	  set x "$@" -I"$file"
-	  shift
-	  ;;
-	-I*)
-	  func_file_conv "${1#-I}" mingw
-	  set x "$@" -I"$file"
-	  shift
-	  ;;
-	-l)
-	  eat=1
-	  func_cl_dashl "$2"
-	  set x "$@" "$lib"
-	  shift
-	  ;;
-	-l*)
-	  func_cl_dashl "${1#-l}"
-	  set x "$@" "$lib"
-	  shift
-	  ;;
-	-L)
-	  eat=1
-	  func_cl_dashL "$2"
-	  ;;
-	-L*)
-	  func_cl_dashL "${1#-L}"
-	  ;;
-	-static)
-	  shared=false
-	  ;;
-	-Wl,*)
-	  arg=${1#-Wl,}
-	  save_ifs="$IFS"; IFS=','
-	  for flag in $arg; do
-	    IFS="$save_ifs"
-	    linker_opts="$linker_opts $flag"
-	  done
-	  IFS="$save_ifs"
-	  ;;
-	-Xlinker)
-	  eat=1
-	  linker_opts="$linker_opts $2"
-	  ;;
-	-*)
-	  set x "$@" "$1"
-	  shift
-	  ;;
-	*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
-	  func_file_conv "$1"
-	  set x "$@" -Tp"$file"
-	  shift
-	  ;;
-	*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
-	  func_file_conv "$1" mingw
-	  set x "$@" "$file"
-	  shift
-	  ;;
-	*)
-	  set x "$@" "$1"
-	  shift
-	  ;;
-      esac
-    fi
-    shift
-  done
-  if test -n "$linker_opts"; then
-    linker_opts="-link$linker_opts"
-  fi
-  exec "$@" $linker_opts
-  exit 1
-}
-
-eat=
-
-case $1 in
-  '')
-     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
-     exit 1;
-     ;;
-  -h | --h*)
-    cat <<\EOF
-Usage: compile [--help] [--version] PROGRAM [ARGS]
-
-Wrapper for compilers which do not understand '-c -o'.
-Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
-arguments, and rename the output as expected.
-
-If you are trying to build a whole package this is not the
-right script to run: please start by reading the file 'INSTALL'.
-
-Report bugs to <bug-automake at gnu.org>.
-EOF
-    exit $?
-    ;;
-  -v | --v*)
-    echo "compile $scriptversion"
-    exit $?
-    ;;
-  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
-    func_cl_wrapper "$@"      # Doesn't return...
-    ;;
-esac
-
-ofile=
-cfile=
-
-for arg
-do
-  if test -n "$eat"; then
-    eat=
-  else
-    case $1 in
-      -o)
-	# configure might choose to run compile as 'compile cc -o foo foo.c'.
-	# So we strip '-o arg' only if arg is an object.
-	eat=1
-	case $2 in
-	  *.o | *.obj)
-	    ofile=$2
-	    ;;
-	  *)
-	    set x "$@" -o "$2"
-	    shift
-	    ;;
-	esac
-	;;
-      *.c)
-	cfile=$1
-	set x "$@" "$1"
-	shift
-	;;
-      *)
-	set x "$@" "$1"
-	shift
-	;;
-    esac
-  fi
-  shift
-done
-
-if test -z "$ofile" || test -z "$cfile"; then
-  # If no '-o' option was seen then we might have been invoked from a
-  # pattern rule where we don't need one.  That is ok -- this is a
-  # normal compilation that the losing compiler can handle.  If no
-  # '.c' file was seen then we are probably linking.  That is also
-  # ok.
-  exec "$@"
-fi
-
-# Name of file we expect compiler to create.
-cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
-
-# Create the lock directory.
-# Note: use '[/\\:.-]' here to ensure that we don't use the same name
-# that we are using for the .o file.  Also, base the name on the expected
-# object file name, since that is what matters with a parallel build.
-lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
-while true; do
-  if mkdir "$lockdir" >/dev/null 2>&1; then
-    break
-  fi
-  sleep 1
-done
-# FIXME: race condition here if user kills between mkdir and trap.
-trap "rmdir '$lockdir'; exit 1" 1 2 15
-
-# Run the compile.
-"$@"
-ret=$?
-
-if test -f "$cofile"; then
-  test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
-elif test -f "${cofile}bj"; then
-  test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
-fi
-
-rmdir "$lockdir"
-exit $ret
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/config.guess b/config.guess
deleted file mode 100755
index b79252d..0000000
--- a/config.guess
+++ /dev/null
@@ -1,1558 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-#   Copyright 1992-2013 Free Software Foundation, Inc.
-
-timestamp='2013-06-10'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <http://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program.  This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
-#
-# Originally written by Per Bothner.
-#
-# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
-#
-# Please send patches with a ChangeLog entry to config-patches at gnu.org.
-
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION]
-
-Output the configuration name of the system \`$me' is run on.
-
-Operation modes:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches at gnu.org>."
-
-version="\
-GNU config.guess ($timestamp)
-
-Originally written by Per Bothner.
-Copyright 1992-2013 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )	# Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help" >&2
-       exit 1 ;;
-    * )
-       break ;;
-  esac
-done
-
-if test $# != 0; then
-  echo "$me: too many arguments$help" >&2
-  exit 1
-fi
-
-trap 'exit 1' 1 2 15
-
-# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
-# compiler to aid in system detection is discouraged as it requires
-# temporary files to be created and, as you can see below, it is a
-# headache to deal with in a portable fashion.
-
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
-
-# Portable tmp directory creation inspired by the Autoconf team.
-
-set_cc_for_build='
-trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-: ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-dummy=$tmp/dummy ;
-tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
-case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,)    echo "int x;" > $dummy.c ;
-	for c in cc gcc c89 c99 ; do
-	  if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
-	     CC_FOR_BUILD="$c"; break ;
-	  fi ;
-	done ;
-	if test x"$CC_FOR_BUILD" = x ; then
-	  CC_FOR_BUILD=no_compiler_found ;
-	fi
-	;;
- ,,*)   CC_FOR_BUILD=$CC ;;
- ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
-esac ; set_cc_for_build= ;'
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi at noc.rutgers.edu 1994-08-24)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
-	PATH=$PATH:/.attbin ; export PATH
-fi
-
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-case "${UNAME_SYSTEM}" in
-Linux|GNU|GNU/*)
-	# If the system lacks a compiler, then just pick glibc.
-	# We could probably try harder.
-	LIBC=gnu
-
-	eval $set_cc_for_build
-	cat <<-EOF > $dummy.c
-	#include <features.h>
-	#if defined(__UCLIBC__)
-	LIBC=uclibc
-	#elif defined(__dietlibc__)
-	LIBC=dietlibc
-	#else
-	LIBC=gnu
-	#endif
-	EOF
-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
-	;;
-esac
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
-    *:NetBSD:*:*)
-	# NetBSD (nbsd) targets should (where applicable) match one or
-	# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
-	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
-	# switched to ELF, *-*-netbsd* would select the old
-	# object file format.  This provides both forward
-	# compatibility and a consistent mechanism for selecting the
-	# object file format.
-	#
-	# Note: NetBSD doesn't particularly care about the vendor
-	# portion of the name.  We always set it to "unknown".
-	sysctl="sysctl -n hw.machine_arch"
-	UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
-	    /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
-	case "${UNAME_MACHINE_ARCH}" in
-	    armeb) machine=armeb-unknown ;;
-	    arm*) machine=arm-unknown ;;
-	    sh3el) machine=shl-unknown ;;
-	    sh3eb) machine=sh-unknown ;;
-	    sh5el) machine=sh5le-unknown ;;
-	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
-	esac
-	# The Operating System including object format, if it has switched
-	# to ELF recently, or will in the future.
-	case "${UNAME_MACHINE_ARCH}" in
-	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
-		eval $set_cc_for_build
-		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
-			| grep -q __ELF__
-		then
-		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
-		    # Return netbsd for either.  FIX?
-		    os=netbsd
-		else
-		    os=netbsdelf
-		fi
-		;;
-	    *)
-		os=netbsd
-		;;
-	esac
-	# The OS release
-	# Debian GNU/NetBSD machines have a different userland, and
-	# thus, need a distinct triplet. However, they do not need
-	# kernel version information, so it can be replaced with a
-	# suitable tag, in the style of linux-gnu.
-	case "${UNAME_VERSION}" in
-	    Debian*)
-		release='-gnu'
-		;;
-	    *)
-		release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
-		;;
-	esac
-	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
-	# contains redundant information, the shorter form:
-	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-	echo "${machine}-${os}${release}"
-	exit ;;
-    *:Bitrig:*:*)
-	UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
-	echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
-	exit ;;
-    *:OpenBSD:*:*)
-	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
-	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
-	exit ;;
-    *:ekkoBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
-	exit ;;
-    *:SolidBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
-	exit ;;
-    macppc:MirBSD:*:*)
-	echo powerpc-unknown-mirbsd${UNAME_RELEASE}
-	exit ;;
-    *:MirBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
-	exit ;;
-    alpha:OSF1:*:*)
-	case $UNAME_RELEASE in
-	*4.0)
-		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
-		;;
-	*5.*)
-		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
-		;;
-	esac
-	# According to Compaq, /usr/sbin/psrinfo has been available on
-	# OSF/1 and Tru64 systems produced since 1995.  I hope that
-	# covers most systems running today.  This code pipes the CPU
-	# types through head -n 1, so we only detect the type of CPU 0.
-	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
-	case "$ALPHA_CPU_TYPE" in
-	    "EV4 (21064)")
-		UNAME_MACHINE="alpha" ;;
-	    "EV4.5 (21064)")
-		UNAME_MACHINE="alpha" ;;
-	    "LCA4 (21066/21068)")
-		UNAME_MACHINE="alpha" ;;
-	    "EV5 (21164)")
-		UNAME_MACHINE="alphaev5" ;;
-	    "EV5.6 (21164A)")
-		UNAME_MACHINE="alphaev56" ;;
-	    "EV5.6 (21164PC)")
-		UNAME_MACHINE="alphapca56" ;;
-	    "EV5.7 (21164PC)")
-		UNAME_MACHINE="alphapca57" ;;
-	    "EV6 (21264)")
-		UNAME_MACHINE="alphaev6" ;;
-	    "EV6.7 (21264A)")
-		UNAME_MACHINE="alphaev67" ;;
-	    "EV6.8CB (21264C)")
-		UNAME_MACHINE="alphaev68" ;;
-	    "EV6.8AL (21264B)")
-		UNAME_MACHINE="alphaev68" ;;
-	    "EV6.8CX (21264D)")
-		UNAME_MACHINE="alphaev68" ;;
-	    "EV6.9A (21264/EV69A)")
-		UNAME_MACHINE="alphaev69" ;;
-	    "EV7 (21364)")
-		UNAME_MACHINE="alphaev7" ;;
-	    "EV7.9 (21364A)")
-		UNAME_MACHINE="alphaev79" ;;
-	esac
-	# A Pn.n version is a patched version.
-	# A Vn.n version is a released version.
-	# A Tn.n version is a released field test version.
-	# A Xn.n version is an unreleased experimental baselevel.
-	# 1.2 uses "1.2" for uname -r.
-	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
-	exitcode=$?
-	trap '' 0
-	exit $exitcode ;;
-    Alpha\ *:Windows_NT*:*)
-	# How do we know it's Interix rather than the generic POSIX subsystem?
-	# Should we change UNAME_MACHINE based on the output of uname instead
-	# of the specific Alpha model?
-	echo alpha-pc-interix
-	exit ;;
-    21064:Windows_NT:50:3)
-	echo alpha-dec-winnt3.5
-	exit ;;
-    Amiga*:UNIX_System_V:4.0:*)
-	echo m68k-unknown-sysv4
-	exit ;;
-    *:[Aa]miga[Oo][Ss]:*:*)
-	echo ${UNAME_MACHINE}-unknown-amigaos
-	exit ;;
-    *:[Mm]orph[Oo][Ss]:*:*)
-	echo ${UNAME_MACHINE}-unknown-morphos
-	exit ;;
-    *:OS/390:*:*)
-	echo i370-ibm-openedition
-	exit ;;
-    *:z/VM:*:*)
-	echo s390-ibm-zvmoe
-	exit ;;
-    *:OS400:*:*)
-	echo powerpc-ibm-os400
-	exit ;;
-    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
-	echo arm-acorn-riscix${UNAME_RELEASE}
-	exit ;;
-    arm*:riscos:*:*|arm*:RISCOS:*:*)
-	echo arm-unknown-riscos
-	exit ;;
-    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
-	echo hppa1.1-hitachi-hiuxmpp
-	exit ;;
-    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
-	# akee at wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
-	if test "`(/bin/universe) 2>/dev/null`" = att ; then
-		echo pyramid-pyramid-sysv3
-	else
-		echo pyramid-pyramid-bsd
-	fi
-	exit ;;
-    NILE*:*:*:dcosx)
-	echo pyramid-pyramid-svr4
-	exit ;;
-    DRS?6000:unix:4.0:6*)
-	echo sparc-icl-nx6
-	exit ;;
-    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
-	case `/usr/bin/uname -p` in
-	    sparc) echo sparc-icl-nx7; exit ;;
-	esac ;;
-    s390x:SunOS:*:*)
-	echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    sun4H:SunOS:5.*:*)
-	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
-	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
-	echo i386-pc-auroraux${UNAME_RELEASE}
-	exit ;;
-    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
-	eval $set_cc_for_build
-	SUN_ARCH="i386"
-	# If there is a compiler, see if it is configured for 64-bit objects.
-	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
-	# This test works for both compilers.
-	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
-		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-		grep IS_64BIT_ARCH >/dev/null
-	    then
-		SUN_ARCH="x86_64"
-	    fi
-	fi
-	echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    sun4*:SunOS:6*:*)
-	# According to config.sub, this is the proper way to canonicalize
-	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
-	# it's likely to be more like Solaris than SunOS4.
-	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    sun4*:SunOS:*:*)
-	case "`/usr/bin/arch -k`" in
-	    Series*|S4*)
-		UNAME_RELEASE=`uname -v`
-		;;
-	esac
-	# Japanese Language versions have a version number like `4.1.3-JL'.
-	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
-	exit ;;
-    sun3*:SunOS:*:*)
-	echo m68k-sun-sunos${UNAME_RELEASE}
-	exit ;;
-    sun*:*:4.2BSD:*)
-	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
-	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
-	case "`/bin/arch`" in
-	    sun3)
-		echo m68k-sun-sunos${UNAME_RELEASE}
-		;;
-	    sun4)
-		echo sparc-sun-sunos${UNAME_RELEASE}
-		;;
-	esac
-	exit ;;
-    aushp:SunOS:*:*)
-	echo sparc-auspex-sunos${UNAME_RELEASE}
-	exit ;;
-    # The situation for MiNT is a little confusing.  The machine name
-    # can be virtually everything (everything which is not
-    # "atarist" or "atariste" at least should have a processor
-    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
-    # to the lowercase version "mint" (or "freemint").  Finally
-    # the system name "TOS" denotes a system which is actually not
-    # MiNT.  But MiNT is downward compatible to TOS, so this should
-    # be no problem.
-    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
-	echo m68k-atari-mint${UNAME_RELEASE}
-	exit ;;
-    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
-	echo m68k-atari-mint${UNAME_RELEASE}
-	exit ;;
-    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
-	echo m68k-atari-mint${UNAME_RELEASE}
-	exit ;;
-    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
-	echo m68k-milan-mint${UNAME_RELEASE}
-	exit ;;
-    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
-	echo m68k-hades-mint${UNAME_RELEASE}
-	exit ;;
-    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
-	echo m68k-unknown-mint${UNAME_RELEASE}
-	exit ;;
-    m68k:machten:*:*)
-	echo m68k-apple-machten${UNAME_RELEASE}
-	exit ;;
-    powerpc:machten:*:*)
-	echo powerpc-apple-machten${UNAME_RELEASE}
-	exit ;;
-    RISC*:Mach:*:*)
-	echo mips-dec-mach_bsd4.3
-	exit ;;
-    RISC*:ULTRIX:*:*)
-	echo mips-dec-ultrix${UNAME_RELEASE}
-	exit ;;
-    VAX*:ULTRIX*:*:*)
-	echo vax-dec-ultrix${UNAME_RELEASE}
-	exit ;;
-    2020:CLIX:*:* | 2430:CLIX:*:*)
-	echo clipper-intergraph-clix${UNAME_RELEASE}
-	exit ;;
-    mips:*:*:UMIPS | mips:*:*:RISCos)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-#ifdef __cplusplus
-#include <stdio.h>  /* for printf() prototype */
-	int main (int argc, char *argv[]) {
-#else
-	int main (argc, argv) int argc; char *argv[]; {
-#endif
-	#if defined (host_mips) && defined (MIPSEB)
-	#if defined (SYSTYPE_SYSV)
-	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
-	#endif
-	#if defined (SYSTYPE_SVR4)
-	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
-	#endif
-	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
-	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
-	#endif
-	#endif
-	  exit (-1);
-	}
-EOF
-	$CC_FOR_BUILD -o $dummy $dummy.c &&
-	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
-	  SYSTEM_NAME=`$dummy $dummyarg` &&
-	    { echo "$SYSTEM_NAME"; exit; }
-	echo mips-mips-riscos${UNAME_RELEASE}
-	exit ;;
-    Motorola:PowerMAX_OS:*:*)
-	echo powerpc-motorola-powermax
-	exit ;;
-    Motorola:*:4.3:PL8-*)
-	echo powerpc-harris-powermax
-	exit ;;
-    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
-	echo powerpc-harris-powermax
-	exit ;;
-    Night_Hawk:Power_UNIX:*:*)
-	echo powerpc-harris-powerunix
-	exit ;;
-    m88k:CX/UX:7*:*)
-	echo m88k-harris-cxux7
-	exit ;;
-    m88k:*:4*:R4*)
-	echo m88k-motorola-sysv4
-	exit ;;
-    m88k:*:3*:R3*)
-	echo m88k-motorola-sysv3
-	exit ;;
-    AViiON:dgux:*:*)
-	# DG/UX returns AViiON for all architectures
-	UNAME_PROCESSOR=`/usr/bin/uname -p`
-	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
-	then
-	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
-	       [ ${TARGET_BINARY_INTERFACE}x = x ]
-	    then
-		echo m88k-dg-dgux${UNAME_RELEASE}
-	    else
-		echo m88k-dg-dguxbcs${UNAME_RELEASE}
-	    fi
-	else
-	    echo i586-dg-dgux${UNAME_RELEASE}
-	fi
-	exit ;;
-    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
-	echo m88k-dolphin-sysv3
-	exit ;;
-    M88*:*:R3*:*)
-	# Delta 88k system running SVR3
-	echo m88k-motorola-sysv3
-	exit ;;
-    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
-	echo m88k-tektronix-sysv3
-	exit ;;
-    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
-	echo m68k-tektronix-bsd
-	exit ;;
-    *:IRIX*:*:*)
-	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
-	exit ;;
-    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
-	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
-	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
-    i*86:AIX:*:*)
-	echo i386-ibm-aix
-	exit ;;
-    ia64:AIX:*:*)
-	if [ -x /usr/bin/oslevel ] ; then
-		IBM_REV=`/usr/bin/oslevel`
-	else
-		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
-	fi
-	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
-	exit ;;
-    *:AIX:2:3)
-	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
-		eval $set_cc_for_build
-		sed 's/^		//' << EOF >$dummy.c
-		#include <sys/systemcfg.h>
-
-		main()
-			{
-			if (!__power_pc())
-				exit(1);
-			puts("powerpc-ibm-aix3.2.5");
-			exit(0);
-			}
-EOF
-		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
-		then
-			echo "$SYSTEM_NAME"
-		else
-			echo rs6000-ibm-aix3.2.5
-		fi
-	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
-		echo rs6000-ibm-aix3.2.4
-	else
-		echo rs6000-ibm-aix3.2
-	fi
-	exit ;;
-    *:AIX:*:[4567])
-	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
-	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
-		IBM_ARCH=rs6000
-	else
-		IBM_ARCH=powerpc
-	fi
-	if [ -x /usr/bin/oslevel ] ; then
-		IBM_REV=`/usr/bin/oslevel`
-	else
-		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
-	fi
-	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
-	exit ;;
-    *:AIX:*:*)
-	echo rs6000-ibm-aix
-	exit ;;
-    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
-	echo romp-ibm-bsd4.4
-	exit ;;
-    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
-	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
-	exit ;;                             # report: romp-ibm BSD 4.3
-    *:BOSX:*:*)
-	echo rs6000-bull-bosx
-	exit ;;
-    DPX/2?00:B.O.S.:*:*)
-	echo m68k-bull-sysv3
-	exit ;;
-    9000/[34]??:4.3bsd:1.*:*)
-	echo m68k-hp-bsd
-	exit ;;
-    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
-	echo m68k-hp-bsd4.4
-	exit ;;
-    9000/[34678]??:HP-UX:*:*)
-	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-	case "${UNAME_MACHINE}" in
-	    9000/31? )            HP_ARCH=m68000 ;;
-	    9000/[34]?? )         HP_ARCH=m68k ;;
-	    9000/[678][0-9][0-9])
-		if [ -x /usr/bin/getconf ]; then
-		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
-		    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-		    case "${sc_cpu_version}" in
-		      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
-		      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
-		      532)                      # CPU_PA_RISC2_0
-			case "${sc_kernel_bits}" in
-			  32) HP_ARCH="hppa2.0n" ;;
-			  64) HP_ARCH="hppa2.0w" ;;
-			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
-			esac ;;
-		    esac
-		fi
-		if [ "${HP_ARCH}" = "" ]; then
-		    eval $set_cc_for_build
-		    sed 's/^		//' << EOF >$dummy.c
-
-		#define _HPUX_SOURCE
-		#include <stdlib.h>
-		#include <unistd.h>
-
-		int main ()
-		{
-		#if defined(_SC_KERNEL_BITS)
-		    long bits = sysconf(_SC_KERNEL_BITS);
-		#endif
-		    long cpu  = sysconf (_SC_CPU_VERSION);
-
-		    switch (cpu)
-			{
-			case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
-			case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
-			case CPU_PA_RISC2_0:
-		#if defined(_SC_KERNEL_BITS)
-			    switch (bits)
-				{
-				case 64: puts ("hppa2.0w"); break;
-				case 32: puts ("hppa2.0n"); break;
-				default: puts ("hppa2.0"); break;
-				} break;
-		#else  /* !defined(_SC_KERNEL_BITS) */
-			    puts ("hppa2.0"); break;
-		#endif
-			default: puts ("hppa1.0"); break;
-			}
-		    exit (0);
-		}
-EOF
-		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
-		    test -z "$HP_ARCH" && HP_ARCH=hppa
-		fi ;;
-	esac
-	if [ ${HP_ARCH} = "hppa2.0w" ]
-	then
-	    eval $set_cc_for_build
-
-	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
-	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
-	    # generating 64-bit code.  GNU and HP use different nomenclature:
-	    #
-	    # $ CC_FOR_BUILD=cc ./config.guess
-	    # => hppa2.0w-hp-hpux11.23
-	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
-	    # => hppa64-hp-hpux11.23
-
-	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
-		grep -q __LP64__
-	    then
-		HP_ARCH="hppa2.0w"
-	    else
-		HP_ARCH="hppa64"
-	    fi
-	fi
-	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
-	exit ;;
-    ia64:HP-UX:*:*)
-	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-	echo ia64-hp-hpux${HPUX_REV}
-	exit ;;
-    3050*:HI-UX:*:*)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#include <unistd.h>
-	int
-	main ()
-	{
-	  long cpu = sysconf (_SC_CPU_VERSION);
-	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns
-	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
-	     results, however.  */
-	  if (CPU_IS_PA_RISC (cpu))
-	    {
-	      switch (cpu)
-		{
-		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
-		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
-		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
-		  default: puts ("hppa-hitachi-hiuxwe2"); break;
-		}
-	    }
-	  else if (CPU_IS_HP_MC68K (cpu))
-	    puts ("m68k-hitachi-hiuxwe2");
-	  else puts ("unknown-hitachi-hiuxwe2");
-	  exit (0);
-	}
-EOF
-	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
-		{ echo "$SYSTEM_NAME"; exit; }
-	echo unknown-hitachi-hiuxwe2
-	exit ;;
-    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
-	echo hppa1.1-hp-bsd
-	exit ;;
-    9000/8??:4.3bsd:*:*)
-	echo hppa1.0-hp-bsd
-	exit ;;
-    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
-	echo hppa1.0-hp-mpeix
-	exit ;;
-    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
-	echo hppa1.1-hp-osf
-	exit ;;
-    hp8??:OSF1:*:*)
-	echo hppa1.0-hp-osf
-	exit ;;
-    i*86:OSF1:*:*)
-	if [ -x /usr/sbin/sysversion ] ; then
-	    echo ${UNAME_MACHINE}-unknown-osf1mk
-	else
-	    echo ${UNAME_MACHINE}-unknown-osf1
-	fi
-	exit ;;
-    parisc*:Lites*:*:*)
-	echo hppa1.1-hp-lites
-	exit ;;
-    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
-	echo c1-convex-bsd
-	exit ;;
-    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
-	if getsysinfo -f scalar_acc
-	then echo c32-convex-bsd
-	else echo c2-convex-bsd
-	fi
-	exit ;;
-    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
-	echo c34-convex-bsd
-	exit ;;
-    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
-	echo c38-convex-bsd
-	exit ;;
-    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
-	echo c4-convex-bsd
-	exit ;;
-    CRAY*Y-MP:*:*:*)
-	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*[A-Z]90:*:*:*)
-	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
-	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
-	      -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*TS:*:*:*)
-	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*T3E:*:*:*)
-	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*SV1:*:*:*)
-	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    *:UNICOS/mp:*:*)
-	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
-	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-	FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
-	echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-	exit ;;
-    5000:UNIX_System_V:4.*:*)
-	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-	FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
-	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-	exit ;;
-    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
-	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
-	exit ;;
-    sparc*:BSD/OS:*:*)
-	echo sparc-unknown-bsdi${UNAME_RELEASE}
-	exit ;;
-    *:BSD/OS:*:*)
-	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
-	exit ;;
-    *:FreeBSD:*:*)
-	UNAME_PROCESSOR=`/usr/bin/uname -p`
-	case ${UNAME_PROCESSOR} in
-	    amd64)
-		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-	    *)
-		echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-	esac
-	exit ;;
-    i*:CYGWIN*:*)
-	echo ${UNAME_MACHINE}-pc-cygwin
-	exit ;;
-    *:MINGW64*:*)
-	echo ${UNAME_MACHINE}-pc-mingw64
-	exit ;;
-    *:MINGW*:*)
-	echo ${UNAME_MACHINE}-pc-mingw32
-	exit ;;
-    i*:MSYS*:*)
-	echo ${UNAME_MACHINE}-pc-msys
-	exit ;;
-    i*:windows32*:*)
-	# uname -m includes "-pc" on this system.
-	echo ${UNAME_MACHINE}-mingw32
-	exit ;;
-    i*:PW*:*)
-	echo ${UNAME_MACHINE}-pc-pw32
-	exit ;;
-    *:Interix*:*)
-	case ${UNAME_MACHINE} in
-	    x86)
-		echo i586-pc-interix${UNAME_RELEASE}
-		exit ;;
-	    authenticamd | genuineintel | EM64T)
-		echo x86_64-unknown-interix${UNAME_RELEASE}
-		exit ;;
-	    IA64)
-		echo ia64-unknown-interix${UNAME_RELEASE}
-		exit ;;
-	esac ;;
-    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
-	echo i${UNAME_MACHINE}-pc-mks
-	exit ;;
-    8664:Windows_NT:*)
-	echo x86_64-pc-mks
-	exit ;;
-    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
-	# How do we know it's Interix rather than the generic POSIX subsystem?
-	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
-	# UNAME_MACHINE based on the output of uname instead of i386?
-	echo i586-pc-interix
-	exit ;;
-    i*:UWIN*:*)
-	echo ${UNAME_MACHINE}-pc-uwin
-	exit ;;
-    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
-	echo x86_64-unknown-cygwin
-	exit ;;
-    p*:CYGWIN*:*)
-	echo powerpcle-unknown-cygwin
-	exit ;;
-    prep*:SunOS:5.*:*)
-	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    *:GNU:*:*)
-	# the GNU system
-	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
-	exit ;;
-    *:GNU/*:*:*)
-	# other systems with GNU libc and userland
-	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
-	exit ;;
-    i*86:Minix:*:*)
-	echo ${UNAME_MACHINE}-pc-minix
-	exit ;;
-    aarch64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    aarch64_be:Linux:*:*)
-	UNAME_MACHINE=aarch64_be
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    alpha:Linux:*:*)
-	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
-	  EV5)   UNAME_MACHINE=alphaev5 ;;
-	  EV56)  UNAME_MACHINE=alphaev56 ;;
-	  PCA56) UNAME_MACHINE=alphapca56 ;;
-	  PCA57) UNAME_MACHINE=alphapca56 ;;
-	  EV6)   UNAME_MACHINE=alphaev6 ;;
-	  EV67)  UNAME_MACHINE=alphaev67 ;;
-	  EV68*) UNAME_MACHINE=alphaev68 ;;
-	esac
-	objdump --private-headers /bin/sh | grep -q ld.so.1
-	if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    arc:Linux:*:* | arceb:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    arm*:Linux:*:*)
-	eval $set_cc_for_build
-	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
-	    | grep -q __ARM_EABI__
-	then
-	    echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	else
-	    if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
-		| grep -q __ARM_PCS_VFP
-	    then
-		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
-	    else
-		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
-	    fi
-	fi
-	exit ;;
-    avr32*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    cris:Linux:*:*)
-	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
-	exit ;;
-    crisv32:Linux:*:*)
-	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
-	exit ;;
-    frv:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    hexagon:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    i*86:Linux:*:*)
-	echo ${UNAME_MACHINE}-pc-linux-${LIBC}
-	exit ;;
-    ia64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    m32r*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    m68*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    mips:Linux:*:* | mips64:Linux:*:*)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#undef CPU
-	#undef ${UNAME_MACHINE}
-	#undef ${UNAME_MACHINE}el
-	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-	CPU=${UNAME_MACHINE}el
-	#else
-	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-	CPU=${UNAME_MACHINE}
-	#else
-	CPU=
-	#endif
-	#endif
-EOF
-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
-	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
-	;;
-    or1k:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    or32:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    padre:Linux:*:*)
-	echo sparc-unknown-linux-${LIBC}
-	exit ;;
-    parisc64:Linux:*:* | hppa64:Linux:*:*)
-	echo hppa64-unknown-linux-${LIBC}
-	exit ;;
-    parisc:Linux:*:* | hppa:Linux:*:*)
-	# Look for CPU level
-	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-	  PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
-	  PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
-	  *)    echo hppa-unknown-linux-${LIBC} ;;
-	esac
-	exit ;;
-    ppc64:Linux:*:*)
-	echo powerpc64-unknown-linux-${LIBC}
-	exit ;;
-    ppc:Linux:*:*)
-	echo powerpc-unknown-linux-${LIBC}
-	exit ;;
-    ppc64le:Linux:*:*)
-	echo powerpc64le-unknown-linux-${LIBC}
-	exit ;;
-    ppcle:Linux:*:*)
-	echo powerpcle-unknown-linux-${LIBC}
-	exit ;;
-    s390:Linux:*:* | s390x:Linux:*:*)
-	echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
-	exit ;;
-    sh64*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    sh*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    sparc:Linux:*:* | sparc64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    tile*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    vax:Linux:*:*)
-	echo ${UNAME_MACHINE}-dec-linux-${LIBC}
-	exit ;;
-    x86_64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    xtensa*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    i*86:DYNIX/ptx:4*:*)
-	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
-	# earlier versions are messed up and put the nodename in both
-	# sysname and nodename.
-	echo i386-sequent-sysv4
-	exit ;;
-    i*86:UNIX_SV:4.2MP:2.*)
-	# Unixware is an offshoot of SVR4, but it has its own version
-	# number series starting with 2...
-	# I am not positive that other SVR4 systems won't match this,
-	# I just have to hope.  -- rms.
-	# Use sysv4.2uw... so that sysv4* matches it.
-	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
-	exit ;;
-    i*86:OS/2:*:*)
-	# If we were able to find `uname', then EMX Unix compatibility
-	# is probably installed.
-	echo ${UNAME_MACHINE}-pc-os2-emx
-	exit ;;
-    i*86:XTS-300:*:STOP)
-	echo ${UNAME_MACHINE}-unknown-stop
-	exit ;;
-    i*86:atheos:*:*)
-	echo ${UNAME_MACHINE}-unknown-atheos
-	exit ;;
-    i*86:syllable:*:*)
-	echo ${UNAME_MACHINE}-pc-syllable
-	exit ;;
-    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
-	echo i386-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    i*86:*DOS:*:*)
-	echo ${UNAME_MACHINE}-pc-msdosdjgpp
-	exit ;;
-    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
-	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
-	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
-	else
-		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
-	fi
-	exit ;;
-    i*86:*:5:[678]*)
-	# UnixWare 7.x, OpenUNIX and OpenServer 6.
-	case `/bin/uname -X | grep "^Machine"` in
-	    *486*)	     UNAME_MACHINE=i486 ;;
-	    *Pentium)	     UNAME_MACHINE=i586 ;;
-	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
-	esac
-	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
-	exit ;;
-    i*86:*:3.2:*)
-	if test -f /usr/options/cb.name; then
-		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
-		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
-	elif /bin/uname -X 2>/dev/null >/dev/null ; then
-		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
-		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
-		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
-			&& UNAME_MACHINE=i586
-		(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
-			&& UNAME_MACHINE=i686
-		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
-			&& UNAME_MACHINE=i686
-		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
-	else
-		echo ${UNAME_MACHINE}-pc-sysv32
-	fi
-	exit ;;
-    pc:*:*:*)
-	# Left here for compatibility:
-	# uname -m prints for DJGPP always 'pc', but it prints nothing about
-	# the processor, so we play safe by assuming i586.
-	# Note: whatever this is, it MUST be the same as what config.sub
-	# prints for the "djgpp" host, or else GDB configury will decide that
-	# this is a cross-build.
-	echo i586-pc-msdosdjgpp
-	exit ;;
-    Intel:Mach:3*:*)
-	echo i386-pc-mach3
-	exit ;;
-    paragon:*:*:*)
-	echo i860-intel-osf1
-	exit ;;
-    i860:*:4.*:*) # i860-SVR4
-	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
-	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
-	else # Add other i860-SVR4 vendors below as they are discovered.
-	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
-	fi
-	exit ;;
-    mini*:CTIX:SYS*5:*)
-	# "miniframe"
-	echo m68010-convergent-sysv
-	exit ;;
-    mc68k:UNIX:SYSTEM5:3.51m)
-	echo m68k-convergent-sysv
-	exit ;;
-    M680?0:D-NIX:5.3:*)
-	echo m68k-diab-dnix
-	exit ;;
-    M68*:*:R3V[5678]*:*)
-	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
-    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
-	OS_REL=''
-	test -r /etc/.relid \
-	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
-	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
-    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
-	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-	  && { echo i486-ncr-sysv4; exit; } ;;
-    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
-	OS_REL='.3'
-	test -r /etc/.relid \
-	    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-	    && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
-	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
-	/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
-	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
-    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
-	echo m68k-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    mc68030:UNIX_System_V:4.*:*)
-	echo m68k-atari-sysv4
-	exit ;;
-    TSUNAMI:LynxOS:2.*:*)
-	echo sparc-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    rs6000:LynxOS:2.*:*)
-	echo rs6000-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
-	echo powerpc-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    SM[BE]S:UNIX_SV:*:*)
-	echo mips-dde-sysv${UNAME_RELEASE}
-	exit ;;
-    RM*:ReliantUNIX-*:*:*)
-	echo mips-sni-sysv4
-	exit ;;
-    RM*:SINIX-*:*:*)
-	echo mips-sni-sysv4
-	exit ;;
-    *:SINIX-*:*:*)
-	if uname -p 2>/dev/null >/dev/null ; then
-		UNAME_MACHINE=`(uname -p) 2>/dev/null`
-		echo ${UNAME_MACHINE}-sni-sysv4
-	else
-		echo ns32k-sni-sysv
-	fi
-	exit ;;
-    PENTIUM:*:4.0*:*)	# Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-			# says <Richard.M.Bartel at ccMail.Census.GOV>
-	echo i586-unisys-sysv4
-	exit ;;
-    *:UNIX_System_V:4*:FTX*)
-	# From Gerald Hewes <hewes at openmarket.com>.
-	# How about differentiating between stratus architectures? -djm
-	echo hppa1.1-stratus-sysv4
-	exit ;;
-    *:*:*:FTX*)
-	# From seanf at swdc.stratus.com.
-	echo i860-stratus-sysv4
-	exit ;;
-    i*86:VOS:*:*)
-	# From Paul.Green at stratus.com.
-	echo ${UNAME_MACHINE}-stratus-vos
-	exit ;;
-    *:VOS:*:*)
-	# From Paul.Green at stratus.com.
-	echo hppa1.1-stratus-vos
-	exit ;;
-    mc68*:A/UX:*:*)
-	echo m68k-apple-aux${UNAME_RELEASE}
-	exit ;;
-    news*:NEWS-OS:6*:*)
-	echo mips-sony-newsos6
-	exit ;;
-    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
-	if [ -d /usr/nec ]; then
-		echo mips-nec-sysv${UNAME_RELEASE}
-	else
-		echo mips-unknown-sysv${UNAME_RELEASE}
-	fi
-	exit ;;
-    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
-	echo powerpc-be-beos
-	exit ;;
-    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
-	echo powerpc-apple-beos
-	exit ;;
-    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
-	echo i586-pc-beos
-	exit ;;
-    BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.
-	echo i586-pc-haiku
-	exit ;;
-    x86_64:Haiku:*:*)
-	echo x86_64-unknown-haiku
-	exit ;;
-    SX-4:SUPER-UX:*:*)
-	echo sx4-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-5:SUPER-UX:*:*)
-	echo sx5-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-6:SUPER-UX:*:*)
-	echo sx6-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-7:SUPER-UX:*:*)
-	echo sx7-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-8:SUPER-UX:*:*)
-	echo sx8-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-8R:SUPER-UX:*:*)
-	echo sx8r-nec-superux${UNAME_RELEASE}
-	exit ;;
-    Power*:Rhapsody:*:*)
-	echo powerpc-apple-rhapsody${UNAME_RELEASE}
-	exit ;;
-    *:Rhapsody:*:*)
-	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
-	exit ;;
-    *:Darwin:*:*)
-	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
-	eval $set_cc_for_build
-	if test "$UNAME_PROCESSOR" = unknown ; then
-	    UNAME_PROCESSOR=powerpc
-	fi
-	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-	    if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-		grep IS_64BIT_ARCH >/dev/null
-	    then
-		case $UNAME_PROCESSOR in
-		    i386) UNAME_PROCESSOR=x86_64 ;;
-		    powerpc) UNAME_PROCESSOR=powerpc64 ;;
-		esac
-	    fi
-	fi
-	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
-	exit ;;
-    *:procnto*:*:* | *:QNX:[0123456789]*:*)
-	UNAME_PROCESSOR=`uname -p`
-	if test "$UNAME_PROCESSOR" = "x86"; then
-		UNAME_PROCESSOR=i386
-		UNAME_MACHINE=pc
-	fi
-	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
-	exit ;;
-    *:QNX:*:4*)
-	echo i386-pc-qnx
-	exit ;;
-    NEO-?:NONSTOP_KERNEL:*:*)
-	echo neo-tandem-nsk${UNAME_RELEASE}
-	exit ;;
-    NSE-*:NONSTOP_KERNEL:*:*)
-	echo nse-tandem-nsk${UNAME_RELEASE}
-	exit ;;
-    NSR-?:NONSTOP_KERNEL:*:*)
-	echo nsr-tandem-nsk${UNAME_RELEASE}
-	exit ;;
-    *:NonStop-UX:*:*)
-	echo mips-compaq-nonstopux
-	exit ;;
-    BS2000:POSIX*:*:*)
-	echo bs2000-siemens-sysv
-	exit ;;
-    DS/*:UNIX_System_V:*:*)
-	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
-	exit ;;
-    *:Plan9:*:*)
-	# "uname -m" is not consistent, so use $cputype instead. 386
-	# is converted to i386 for consistency with other x86
-	# operating systems.
-	if test "$cputype" = "386"; then
-	    UNAME_MACHINE=i386
-	else
-	    UNAME_MACHINE="$cputype"
-	fi
-	echo ${UNAME_MACHINE}-unknown-plan9
-	exit ;;
-    *:TOPS-10:*:*)
-	echo pdp10-unknown-tops10
-	exit ;;
-    *:TENEX:*:*)
-	echo pdp10-unknown-tenex
-	exit ;;
-    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
-	echo pdp10-dec-tops20
-	exit ;;
-    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
-	echo pdp10-xkl-tops20
-	exit ;;
-    *:TOPS-20:*:*)
-	echo pdp10-unknown-tops20
-	exit ;;
-    *:ITS:*:*)
-	echo pdp10-unknown-its
-	exit ;;
-    SEI:*:*:SEIUX)
-	echo mips-sei-seiux${UNAME_RELEASE}
-	exit ;;
-    *:DragonFly:*:*)
-	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
-	exit ;;
-    *:*VMS:*:*)
-	UNAME_MACHINE=`(uname -p) 2>/dev/null`
-	case "${UNAME_MACHINE}" in
-	    A*) echo alpha-dec-vms ; exit ;;
-	    I*) echo ia64-dec-vms ; exit ;;
-	    V*) echo vax-dec-vms ; exit ;;
-	esac ;;
-    *:XENIX:*:SysV)
-	echo i386-pc-xenix
-	exit ;;
-    i*86:skyos:*:*)
-	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
-	exit ;;
-    i*86:rdos:*:*)
-	echo ${UNAME_MACHINE}-pc-rdos
-	exit ;;
-    i*86:AROS:*:*)
-	echo ${UNAME_MACHINE}-pc-aros
-	exit ;;
-    x86_64:VMkernel:*:*)
-	echo ${UNAME_MACHINE}-unknown-esx
-	exit ;;
-esac
-
-eval $set_cc_for_build
-cat >$dummy.c <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
-  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
-     I don't know....  */
-  printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
-  printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
-	"4"
-#else
-	""
-#endif
-	); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
-  printf ("arm-acorn-riscix\n"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
-  printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
-  int version;
-  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
-  if (version < 4)
-    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
-  else
-    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
-  exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
-  printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
-  printf ("ns32k-encore-mach\n"); exit (0);
-#else
-  printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
-  printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
-  printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
-  printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
-    struct utsname un;
-
-    uname(&un);
-
-    if (strncmp(un.version, "V2", 2) == 0) {
-	printf ("i386-sequent-ptx2\n"); exit (0);
-    }
-    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
-	printf ("i386-sequent-ptx1\n"); exit (0);
-    }
-    printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-# if !defined (ultrix)
-#  include <sys/param.h>
-#  if defined (BSD)
-#   if BSD == 43
-      printf ("vax-dec-bsd4.3\n"); exit (0);
-#   else
-#    if BSD == 199006
-      printf ("vax-dec-bsd4.3reno\n"); exit (0);
-#    else
-      printf ("vax-dec-bsd\n"); exit (0);
-#    endif
-#   endif
-#  else
-    printf ("vax-dec-bsd\n"); exit (0);
-#  endif
-# else
-    printf ("vax-dec-ultrix\n"); exit (0);
-# endif
-#endif
-
-#if defined (alliant) && defined (i860)
-  printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
-  exit (1);
-}
-EOF
-
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
-	{ echo "$SYSTEM_NAME"; exit; }
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
-    case `getsysinfo -f cpu_type` in
-    c1*)
-	echo c1-convex-bsd
-	exit ;;
-    c2*)
-	if getsysinfo -f scalar_acc
-	then echo c32-convex-bsd
-	else echo c2-convex-bsd
-	fi
-	exit ;;
-    c34*)
-	echo c34-convex-bsd
-	exit ;;
-    c38*)
-	echo c38-convex-bsd
-	exit ;;
-    c4*)
-	echo c4-convex-bsd
-	exit ;;
-    esac
-fi
-
-cat >&2 <<EOF
-$0: unable to guess system type
-
-This script, last modified $timestamp, has failed to recognize
-the operating system you are using. It is advised that you
-download the most up to date version of the config scripts from
-
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
-and
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
-
-If the version you run ($0) is already up to date, please
-send the following data and any information you think might be
-pertinent to <config-patches at gnu.org> in order to provide the needed
-information to handle your system.
-
-config.guess timestamp = $timestamp
-
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
-
-hostinfo               = `(hostinfo) 2>/dev/null`
-/bin/universe          = `(/bin/universe) 2>/dev/null`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
-/bin/arch              = `(/bin/arch) 2>/dev/null`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
-
-UNAME_MACHINE = ${UNAME_MACHINE}
-UNAME_RELEASE = ${UNAME_RELEASE}
-UNAME_SYSTEM  = ${UNAME_SYSTEM}
-UNAME_VERSION = ${UNAME_VERSION}
-EOF
-
-exit 1
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/config.h.in b/config.h
similarity index 63%
rename from config.h.in
rename to config.h
index 2eacbfd..305d60f 100644
--- a/config.h.in
+++ b/config.h
@@ -1,80 +1,80 @@
+/* config.h.  Generated from config.h.in by configure.  */
 /* config.h.in.  Generated from configure.ac by autoheader.  */
 
 /* Define to 1 if you have the <dlfcn.h> header file. */
-#undef HAVE_DLFCN_H
+#define HAVE_DLFCN_H 1
 
 /* Define to 1 if GDAL library are available */
-#undef HAVE_GDAL
+#define HAVE_GDAL 1
 
 /* Define to 1 if you have the <gdal.h> header file. */
-#undef HAVE_GDAL_H
+/* #undef HAVE_GDAL_H */
 
 /* Define to 1 if GDAL library includes OGR support */
-#undef HAVE_GDAL_OGR
+#define HAVE_GDAL_OGR 1
 
 /* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
+#define HAVE_INTTYPES_H 1
 
 /* Define to 1 if you have the <iostream> header file. */
-#undef HAVE_IOSTREAM
+#define HAVE_IOSTREAM 1
 
 /* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
+#define HAVE_MEMORY_H 1
 
 /* Define to 1 if you have the <stdint.h> header file. */
-#undef HAVE_STDINT_H
+#define HAVE_STDINT_H 1
 
 /* Define to 1 if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
+#define HAVE_STDLIB_H 1
 
 /* Define to 1 if you have the <string> header file. */
-#undef HAVE_STRING
+#define HAVE_STRING 1
 
 /* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
+#define HAVE_STRINGS_H 1
 
 /* Define to 1 if you have the <string.h> header file. */
-#undef HAVE_STRING_H
+#define HAVE_STRING_H 1
 
 /* Define to 1 if you have the <sys/stat.h> header file. */
-#undef HAVE_SYS_STAT_H
+#define HAVE_SYS_STAT_H 1
 
 /* Define to 1 if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
+#define HAVE_SYS_TYPES_H 1
 
 /* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
+#define HAVE_UNISTD_H 1
 
-/* Define to the sub-directory in which libtool stores uninstalled libraries.
-   */
-#undef LT_OBJDIR
+/* Define to the sub-directory where libtool stores uninstalled libraries. */
+#define LT_OBJDIR ".libs/"
 
 /* Name of package */
-#undef PACKAGE
+#define PACKAGE "pktools"
 
 /* Define to the address where bug reports for this package should be sent. */
-#undef PACKAGE_BUGREPORT
+#define PACKAGE_BUGREPORT "kempenep at gmail.com"
 
 /* Define to the full name of this package. */
-#undef PACKAGE_NAME
+#define PACKAGE_NAME "pktools"
 
 /* Define to the full name and version of this package. */
-#undef PACKAGE_STRING
+#define PACKAGE_STRING "pktools 2.6.7"
 
 /* Define to the one symbol short name of this package. */
-#undef PACKAGE_TARNAME
+#define PACKAGE_TARNAME "pktools"
 
 /* Define to the home page for this package. */
-#undef PACKAGE_URL
+#define PACKAGE_URL ""
 
 /* Define to the version of this package. */
-#undef PACKAGE_VERSION
+#define PACKAGE_VERSION "2.6.7"
 
 /* Define to 1 if you have the ANSI C header files. */
-#undef STDC_HEADERS
+#define STDC_HEADERS 1
 
 /* Version number of package */
-#undef VERSION
+#define VERSION "2.6.7"
 
 /* Define to `unsigned int' if <sys/types.h> does not define. */
-#undef size_t
+/* #undef size_t */
diff --git a/config.sub b/config.sub
deleted file mode 100755
index 9633db7..0000000
--- a/config.sub
+++ /dev/null
@@ -1,1791 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-#   Copyright 1992-2013 Free Software Foundation, Inc.
-
-timestamp='2013-08-10'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <http://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program.  This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
-
-
-# Please send patches with a ChangeLog entry to config-patches at gnu.org.
-#
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support.  The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS
-       $0 [OPTION] ALIAS
-
-Canonicalize a configuration name.
-
-Operation modes:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches at gnu.org>."
-
-version="\
-GNU config.sub ($timestamp)
-
-Copyright 1992-2013 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )	# Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help"
-       exit 1 ;;
-
-    *local*)
-       # First pass through any local machine types.
-       echo $1
-       exit ;;
-
-    * )
-       break ;;
-  esac
-done
-
-case $# in
- 0) echo "$me: missing argument$help" >&2
-    exit 1;;
- 1) ;;
- *) echo "$me: too many arguments$help" >&2
-    exit 1;;
-esac
-
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
-  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
-  linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
-  knetbsd*-gnu* | netbsd*-gnu* | \
-  kopensolaris*-gnu* | \
-  storm-chaos* | os2-emx* | rtmk-nova*)
-    os=-$maybe_os
-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
-    ;;
-  android-linux)
-    os=-linux-android
-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
-    ;;
-  *)
-    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
-    if [ $basic_machine != $1 ]
-    then os=`echo $1 | sed 's/.*-/-/'`
-    else os=; fi
-    ;;
-esac
-
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work.  We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
-	-sun*os*)
-		# Prevent following clause from handling this invalid input.
-		;;
-	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
-	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
-	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
-	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-	-apple | -axis | -knuth | -cray | -microblaze*)
-		os=
-		basic_machine=$1
-		;;
-	-bluegene*)
-		os=-cnk
-		;;
-	-sim | -cisco | -oki | -wec | -winbond)
-		os=
-		basic_machine=$1
-		;;
-	-scout)
-		;;
-	-wrs)
-		os=-vxworks
-		basic_machine=$1
-		;;
-	-chorusos*)
-		os=-chorusos
-		basic_machine=$1
-		;;
-	-chorusrdb)
-		os=-chorusrdb
-		basic_machine=$1
-		;;
-	-hiux*)
-		os=-hiuxwe2
-		;;
-	-sco6)
-		os=-sco5v6
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco5)
-		os=-sco3.2v5
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco4)
-		os=-sco3.2v4
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco3.2.[4-9]*)
-		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco3.2v[4-9]*)
-		# Don't forget version if it is 3.2v4 or newer.
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco5v6*)
-		# Don't forget version if it is 3.2v4 or newer.
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco*)
-		os=-sco3.2v2
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-udk*)
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-isc)
-		os=-isc2.2
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-clix*)
-		basic_machine=clipper-intergraph
-		;;
-	-isc*)
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-lynx*178)
-		os=-lynxos178
-		;;
-	-lynx*5)
-		os=-lynxos5
-		;;
-	-lynx*)
-		os=-lynxos
-		;;
-	-ptx*)
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
-		;;
-	-windowsnt*)
-		os=`echo $os | sed -e 's/windowsnt/winnt/'`
-		;;
-	-psos*)
-		os=-psos
-		;;
-	-mint | -mint[0-9]*)
-		basic_machine=m68k-atari
-		os=-mint
-		;;
-esac
-
-# Decode aliases for certain CPU-COMPANY combinations.
-case $basic_machine in
-	# Recognize the basic CPU types without company name.
-	# Some are omitted here because they have special meanings below.
-	1750a | 580 \
-	| a29k \
-	| aarch64 | aarch64_be \
-	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
-	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
-	| am33_2.0 \
-	| arc | arceb \
-	| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
-	| avr | avr32 \
-	| be32 | be64 \
-	| bfin \
-	| c4x | c8051 | clipper \
-	| d10v | d30v | dlx | dsp16xx \
-	| epiphany \
-	| fido | fr30 | frv \
-	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
-	| hexagon \
-	| i370 | i860 | i960 | ia64 \
-	| ip2k | iq2000 \
-	| le32 | le64 \
-	| lm32 \
-	| m32c | m32r | m32rle | m68000 | m68k | m88k \
-	| maxq | mb | microblaze | microblazeel | mcore | mep | metag \
-	| mips | mipsbe | mipseb | mipsel | mipsle \
-	| mips16 \
-	| mips64 | mips64el \
-	| mips64octeon | mips64octeonel \
-	| mips64orion | mips64orionel \
-	| mips64r5900 | mips64r5900el \
-	| mips64vr | mips64vrel \
-	| mips64vr4100 | mips64vr4100el \
-	| mips64vr4300 | mips64vr4300el \
-	| mips64vr5000 | mips64vr5000el \
-	| mips64vr5900 | mips64vr5900el \
-	| mipsisa32 | mipsisa32el \
-	| mipsisa32r2 | mipsisa32r2el \
-	| mipsisa64 | mipsisa64el \
-	| mipsisa64r2 | mipsisa64r2el \
-	| mipsisa64sb1 | mipsisa64sb1el \
-	| mipsisa64sr71k | mipsisa64sr71kel \
-	| mipsr5900 | mipsr5900el \
-	| mipstx39 | mipstx39el \
-	| mn10200 | mn10300 \
-	| moxie \
-	| mt \
-	| msp430 \
-	| nds32 | nds32le | nds32be \
-	| nios | nios2 | nios2eb | nios2el \
-	| ns16k | ns32k \
-	| open8 \
-	| or1k | or32 \
-	| pdp10 | pdp11 | pj | pjl \
-	| powerpc | powerpc64 | powerpc64le | powerpcle \
-	| pyramid \
-	| rl78 | rx \
-	| score \
-	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
-	| sh64 | sh64le \
-	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
-	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
-	| spu \
-	| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
-	| ubicom32 \
-	| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
-	| we32k \
-	| x86 | xc16x | xstormy16 | xtensa \
-	| z8k | z80)
-		basic_machine=$basic_machine-unknown
-		;;
-	c54x)
-		basic_machine=tic54x-unknown
-		;;
-	c55x)
-		basic_machine=tic55x-unknown
-		;;
-	c6x)
-		basic_machine=tic6x-unknown
-		;;
-	m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
-		basic_machine=$basic_machine-unknown
-		os=-none
-		;;
-	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
-		;;
-	ms1)
-		basic_machine=mt-unknown
-		;;
-
-	strongarm | thumb | xscale)
-		basic_machine=arm-unknown
-		;;
-	xgate)
-		basic_machine=$basic_machine-unknown
-		os=-none
-		;;
-	xscaleeb)
-		basic_machine=armeb-unknown
-		;;
-
-	xscaleel)
-		basic_machine=armel-unknown
-		;;
-
-	# We use `pc' rather than `unknown'
-	# because (1) that's what they normally are, and
-	# (2) the word "unknown" tends to confuse beginning users.
-	i*86 | x86_64)
-	  basic_machine=$basic_machine-pc
-	  ;;
-	# Object if more than one company name word.
-	*-*-*)
-		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-		exit 1
-		;;
-	# Recognize the basic CPU types with company name.
-	580-* \
-	| a29k-* \
-	| aarch64-* | aarch64_be-* \
-	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
-	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
-	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
-	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
-	| avr-* | avr32-* \
-	| be32-* | be64-* \
-	| bfin-* | bs2000-* \
-	| c[123]* | c30-* | [cjt]90-* | c4x-* \
-	| c8051-* | clipper-* | craynv-* | cydra-* \
-	| d10v-* | d30v-* | dlx-* \
-	| elxsi-* \
-	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
-	| h8300-* | h8500-* \
-	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
-	| hexagon-* \
-	| i*86-* | i860-* | i960-* | ia64-* \
-	| ip2k-* | iq2000-* \
-	| le32-* | le64-* \
-	| lm32-* \
-	| m32c-* | m32r-* | m32rle-* \
-	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
-	| microblaze-* | microblazeel-* \
-	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
-	| mips16-* \
-	| mips64-* | mips64el-* \
-	| mips64octeon-* | mips64octeonel-* \
-	| mips64orion-* | mips64orionel-* \
-	| mips64r5900-* | mips64r5900el-* \
-	| mips64vr-* | mips64vrel-* \
-	| mips64vr4100-* | mips64vr4100el-* \
-	| mips64vr4300-* | mips64vr4300el-* \
-	| mips64vr5000-* | mips64vr5000el-* \
-	| mips64vr5900-* | mips64vr5900el-* \
-	| mipsisa32-* | mipsisa32el-* \
-	| mipsisa32r2-* | mipsisa32r2el-* \
-	| mipsisa64-* | mipsisa64el-* \
-	| mipsisa64r2-* | mipsisa64r2el-* \
-	| mipsisa64sb1-* | mipsisa64sb1el-* \
-	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
-	| mipsr5900-* | mipsr5900el-* \
-	| mipstx39-* | mipstx39el-* \
-	| mmix-* \
-	| mt-* \
-	| msp430-* \
-	| nds32-* | nds32le-* | nds32be-* \
-	| nios-* | nios2-* | nios2eb-* | nios2el-* \
-	| none-* | np1-* | ns16k-* | ns32k-* \
-	| open8-* \
-	| orion-* \
-	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
-	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
-	| pyramid-* \
-	| rl78-* | romp-* | rs6000-* | rx-* \
-	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
-	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
-	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
-	| sparclite-* \
-	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
-	| tahoe-* \
-	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
-	| tile*-* \
-	| tron-* \
-	| ubicom32-* \
-	| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
-	| vax-* \
-	| we32k-* \
-	| x86-* | x86_64-* | xc16x-* | xps100-* \
-	| xstormy16-* | xtensa*-* \
-	| ymp-* \
-	| z8k-* | z80-*)
-		;;
-	# Recognize the basic CPU types without company name, with glob match.
-	xtensa*)
-		basic_machine=$basic_machine-unknown
-		;;
-	# Recognize the various machine names and aliases which stand
-	# for a CPU type and a company and sometimes even an OS.
-	386bsd)
-		basic_machine=i386-unknown
-		os=-bsd
-		;;
-	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
-		basic_machine=m68000-att
-		;;
-	3b*)
-		basic_machine=we32k-att
-		;;
-	a29khif)
-		basic_machine=a29k-amd
-		os=-udi
-		;;
-	abacus)
-		basic_machine=abacus-unknown
-		;;
-	adobe68k)
-		basic_machine=m68010-adobe
-		os=-scout
-		;;
-	alliant | fx80)
-		basic_machine=fx80-alliant
-		;;
-	altos | altos3068)
-		basic_machine=m68k-altos
-		;;
-	am29k)
-		basic_machine=a29k-none
-		os=-bsd
-		;;
-	amd64)
-		basic_machine=x86_64-pc
-		;;
-	amd64-*)
-		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	amdahl)
-		basic_machine=580-amdahl
-		os=-sysv
-		;;
-	amiga | amiga-*)
-		basic_machine=m68k-unknown
-		;;
-	amigaos | amigados)
-		basic_machine=m68k-unknown
-		os=-amigaos
-		;;
-	amigaunix | amix)
-		basic_machine=m68k-unknown
-		os=-sysv4
-		;;
-	apollo68)
-		basic_machine=m68k-apollo
-		os=-sysv
-		;;
-	apollo68bsd)
-		basic_machine=m68k-apollo
-		os=-bsd
-		;;
-	aros)
-		basic_machine=i386-pc
-		os=-aros
-		;;
-	aux)
-		basic_machine=m68k-apple
-		os=-aux
-		;;
-	balance)
-		basic_machine=ns32k-sequent
-		os=-dynix
-		;;
-	blackfin)
-		basic_machine=bfin-unknown
-		os=-linux
-		;;
-	blackfin-*)
-		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
-		os=-linux
-		;;
-	bluegene*)
-		basic_machine=powerpc-ibm
-		os=-cnk
-		;;
-	c54x-*)
-		basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	c55x-*)
-		basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	c6x-*)
-		basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	c90)
-		basic_machine=c90-cray
-		os=-unicos
-		;;
-	cegcc)
-		basic_machine=arm-unknown
-		os=-cegcc
-		;;
-	convex-c1)
-		basic_machine=c1-convex
-		os=-bsd
-		;;
-	convex-c2)
-		basic_machine=c2-convex
-		os=-bsd
-		;;
-	convex-c32)
-		basic_machine=c32-convex
-		os=-bsd
-		;;
-	convex-c34)
-		basic_machine=c34-convex
-		os=-bsd
-		;;
-	convex-c38)
-		basic_machine=c38-convex
-		os=-bsd
-		;;
-	cray | j90)
-		basic_machine=j90-cray
-		os=-unicos
-		;;
-	craynv)
-		basic_machine=craynv-cray
-		os=-unicosmp
-		;;
-	cr16 | cr16-*)
-		basic_machine=cr16-unknown
-		os=-elf
-		;;
-	crds | unos)
-		basic_machine=m68k-crds
-		;;
-	crisv32 | crisv32-* | etraxfs*)
-		basic_machine=crisv32-axis
-		;;
-	cris | cris-* | etrax*)
-		basic_machine=cris-axis
-		;;
-	crx)
-		basic_machine=crx-unknown
-		os=-elf
-		;;
-	da30 | da30-*)
-		basic_machine=m68k-da30
-		;;
-	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
-		basic_machine=mips-dec
-		;;
-	decsystem10* | dec10*)
-		basic_machine=pdp10-dec
-		os=-tops10
-		;;
-	decsystem20* | dec20*)
-		basic_machine=pdp10-dec
-		os=-tops20
-		;;
-	delta | 3300 | motorola-3300 | motorola-delta \
-	      | 3300-motorola | delta-motorola)
-		basic_machine=m68k-motorola
-		;;
-	delta88)
-		basic_machine=m88k-motorola
-		os=-sysv3
-		;;
-	dicos)
-		basic_machine=i686-pc
-		os=-dicos
-		;;
-	djgpp)
-		basic_machine=i586-pc
-		os=-msdosdjgpp
-		;;
-	dpx20 | dpx20-*)
-		basic_machine=rs6000-bull
-		os=-bosx
-		;;
-	dpx2* | dpx2*-bull)
-		basic_machine=m68k-bull
-		os=-sysv3
-		;;
-	ebmon29k)
-		basic_machine=a29k-amd
-		os=-ebmon
-		;;
-	elxsi)
-		basic_machine=elxsi-elxsi
-		os=-bsd
-		;;
-	encore | umax | mmax)
-		basic_machine=ns32k-encore
-		;;
-	es1800 | OSE68k | ose68k | ose | OSE)
-		basic_machine=m68k-ericsson
-		os=-ose
-		;;
-	fx2800)
-		basic_machine=i860-alliant
-		;;
-	genix)
-		basic_machine=ns32k-ns
-		;;
-	gmicro)
-		basic_machine=tron-gmicro
-		os=-sysv
-		;;
-	go32)
-		basic_machine=i386-pc
-		os=-go32
-		;;
-	h3050r* | hiux*)
-		basic_machine=hppa1.1-hitachi
-		os=-hiuxwe2
-		;;
-	h8300hms)
-		basic_machine=h8300-hitachi
-		os=-hms
-		;;
-	h8300xray)
-		basic_machine=h8300-hitachi
-		os=-xray
-		;;
-	h8500hms)
-		basic_machine=h8500-hitachi
-		os=-hms
-		;;
-	harris)
-		basic_machine=m88k-harris
-		os=-sysv3
-		;;
-	hp300-*)
-		basic_machine=m68k-hp
-		;;
-	hp300bsd)
-		basic_machine=m68k-hp
-		os=-bsd
-		;;
-	hp300hpux)
-		basic_machine=m68k-hp
-		os=-hpux
-		;;
-	hp3k9[0-9][0-9] | hp9[0-9][0-9])
-		basic_machine=hppa1.0-hp
-		;;
-	hp9k2[0-9][0-9] | hp9k31[0-9])
-		basic_machine=m68000-hp
-		;;
-	hp9k3[2-9][0-9])
-		basic_machine=m68k-hp
-		;;
-	hp9k6[0-9][0-9] | hp6[0-9][0-9])
-		basic_machine=hppa1.0-hp
-		;;
-	hp9k7[0-79][0-9] | hp7[0-79][0-9])
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k78[0-9] | hp78[0-9])
-		# FIXME: really hppa2.0-hp
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
-		# FIXME: really hppa2.0-hp
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k8[0-9][13679] | hp8[0-9][13679])
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k8[0-9][0-9] | hp8[0-9][0-9])
-		basic_machine=hppa1.0-hp
-		;;
-	hppa-next)
-		os=-nextstep3
-		;;
-	hppaosf)
-		basic_machine=hppa1.1-hp
-		os=-osf
-		;;
-	hppro)
-		basic_machine=hppa1.1-hp
-		os=-proelf
-		;;
-	i370-ibm* | ibm*)
-		basic_machine=i370-ibm
-		;;
-	i*86v32)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-sysv32
-		;;
-	i*86v4*)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-sysv4
-		;;
-	i*86v)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-sysv
-		;;
-	i*86sol2)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-solaris2
-		;;
-	i386mach)
-		basic_machine=i386-mach
-		os=-mach
-		;;
-	i386-vsta | vsta)
-		basic_machine=i386-unknown
-		os=-vsta
-		;;
-	iris | iris4d)
-		basic_machine=mips-sgi
-		case $os in
-		    -irix*)
-			;;
-		    *)
-			os=-irix4
-			;;
-		esac
-		;;
-	isi68 | isi)
-		basic_machine=m68k-isi
-		os=-sysv
-		;;
-	m68knommu)
-		basic_machine=m68k-unknown
-		os=-linux
-		;;
-	m68knommu-*)
-		basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
-		os=-linux
-		;;
-	m88k-omron*)
-		basic_machine=m88k-omron
-		;;
-	magnum | m3230)
-		basic_machine=mips-mips
-		os=-sysv
-		;;
-	merlin)
-		basic_machine=ns32k-utek
-		os=-sysv
-		;;
-	microblaze*)
-		basic_machine=microblaze-xilinx
-		;;
-	mingw64)
-		basic_machine=x86_64-pc
-		os=-mingw64
-		;;
-	mingw32)
-		basic_machine=i686-pc
-		os=-mingw32
-		;;
-	mingw32ce)
-		basic_machine=arm-unknown
-		os=-mingw32ce
-		;;
-	miniframe)
-		basic_machine=m68000-convergent
-		;;
-	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
-		basic_machine=m68k-atari
-		os=-mint
-		;;
-	mips3*-*)
-		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
-		;;
-	mips3*)
-		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
-		;;
-	monitor)
-		basic_machine=m68k-rom68k
-		os=-coff
-		;;
-	morphos)
-		basic_machine=powerpc-unknown
-		os=-morphos
-		;;
-	msdos)
-		basic_machine=i386-pc
-		os=-msdos
-		;;
-	ms1-*)
-		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
-		;;
-	msys)
-		basic_machine=i686-pc
-		os=-msys
-		;;
-	mvs)
-		basic_machine=i370-ibm
-		os=-mvs
-		;;
-	nacl)
-		basic_machine=le32-unknown
-		os=-nacl
-		;;
-	ncr3000)
-		basic_machine=i486-ncr
-		os=-sysv4
-		;;
-	netbsd386)
-		basic_machine=i386-unknown
-		os=-netbsd
-		;;
-	netwinder)
-		basic_machine=armv4l-rebel
-		os=-linux
-		;;
-	news | news700 | news800 | news900)
-		basic_machine=m68k-sony
-		os=-newsos
-		;;
-	news1000)
-		basic_machine=m68030-sony
-		os=-newsos
-		;;
-	news-3600 | risc-news)
-		basic_machine=mips-sony
-		os=-newsos
-		;;
-	necv70)
-		basic_machine=v70-nec
-		os=-sysv
-		;;
-	next | m*-next )
-		basic_machine=m68k-next
-		case $os in
-		    -nextstep* )
-			;;
-		    -ns2*)
-		      os=-nextstep2
-			;;
-		    *)
-		      os=-nextstep3
-			;;
-		esac
-		;;
-	nh3000)
-		basic_machine=m68k-harris
-		os=-cxux
-		;;
-	nh[45]000)
-		basic_machine=m88k-harris
-		os=-cxux
-		;;
-	nindy960)
-		basic_machine=i960-intel
-		os=-nindy
-		;;
-	mon960)
-		basic_machine=i960-intel
-		os=-mon960
-		;;
-	nonstopux)
-		basic_machine=mips-compaq
-		os=-nonstopux
-		;;
-	np1)
-		basic_machine=np1-gould
-		;;
-	neo-tandem)
-		basic_machine=neo-tandem
-		;;
-	nse-tandem)
-		basic_machine=nse-tandem
-		;;
-	nsr-tandem)
-		basic_machine=nsr-tandem
-		;;
-	op50n-* | op60c-*)
-		basic_machine=hppa1.1-oki
-		os=-proelf
-		;;
-	openrisc | openrisc-*)
-		basic_machine=or32-unknown
-		;;
-	os400)
-		basic_machine=powerpc-ibm
-		os=-os400
-		;;
-	OSE68000 | ose68000)
-		basic_machine=m68000-ericsson
-		os=-ose
-		;;
-	os68k)
-		basic_machine=m68k-none
-		os=-os68k
-		;;
-	pa-hitachi)
-		basic_machine=hppa1.1-hitachi
-		os=-hiuxwe2
-		;;
-	paragon)
-		basic_machine=i860-intel
-		os=-osf
-		;;
-	parisc)
-		basic_machine=hppa-unknown
-		os=-linux
-		;;
-	parisc-*)
-		basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
-		os=-linux
-		;;
-	pbd)
-		basic_machine=sparc-tti
-		;;
-	pbb)
-		basic_machine=m68k-tti
-		;;
-	pc532 | pc532-*)
-		basic_machine=ns32k-pc532
-		;;
-	pc98)
-		basic_machine=i386-pc
-		;;
-	pc98-*)
-		basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentium | p5 | k5 | k6 | nexgen | viac3)
-		basic_machine=i586-pc
-		;;
-	pentiumpro | p6 | 6x86 | athlon | athlon_*)
-		basic_machine=i686-pc
-		;;
-	pentiumii | pentium2 | pentiumiii | pentium3)
-		basic_machine=i686-pc
-		;;
-	pentium4)
-		basic_machine=i786-pc
-		;;
-	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
-		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentiumpro-* | p6-* | 6x86-* | athlon-*)
-		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
-		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentium4-*)
-		basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pn)
-		basic_machine=pn-gould
-		;;
-	power)	basic_machine=power-ibm
-		;;
-	ppc | ppcbe)	basic_machine=powerpc-unknown
-		;;
-	ppc-* | ppcbe-*)
-		basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ppcle | powerpclittle | ppc-le | powerpc-little)
-		basic_machine=powerpcle-unknown
-		;;
-	ppcle-* | powerpclittle-*)
-		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ppc64)	basic_machine=powerpc64-unknown
-		;;
-	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
-		basic_machine=powerpc64le-unknown
-		;;
-	ppc64le-* | powerpc64little-*)
-		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ps2)
-		basic_machine=i386-ibm
-		;;
-	pw32)
-		basic_machine=i586-unknown
-		os=-pw32
-		;;
-	rdos | rdos64)
-		basic_machine=x86_64-pc
-		os=-rdos
-		;;
-	rdos32)
-		basic_machine=i386-pc
-		os=-rdos
-		;;
-	rom68k)
-		basic_machine=m68k-rom68k
-		os=-coff
-		;;
-	rm[46]00)
-		basic_machine=mips-siemens
-		;;
-	rtpc | rtpc-*)
-		basic_machine=romp-ibm
-		;;
-	s390 | s390-*)
-		basic_machine=s390-ibm
-		;;
-	s390x | s390x-*)
-		basic_machine=s390x-ibm
-		;;
-	sa29200)
-		basic_machine=a29k-amd
-		os=-udi
-		;;
-	sb1)
-		basic_machine=mipsisa64sb1-unknown
-		;;
-	sb1el)
-		basic_machine=mipsisa64sb1el-unknown
-		;;
-	sde)
-		basic_machine=mipsisa32-sde
-		os=-elf
-		;;
-	sei)
-		basic_machine=mips-sei
-		os=-seiux
-		;;
-	sequent)
-		basic_machine=i386-sequent
-		;;
-	sh)
-		basic_machine=sh-hitachi
-		os=-hms
-		;;
-	sh5el)
-		basic_machine=sh5le-unknown
-		;;
-	sh64)
-		basic_machine=sh64-unknown
-		;;
-	sparclite-wrs | simso-wrs)
-		basic_machine=sparclite-wrs
-		os=-vxworks
-		;;
-	sps7)
-		basic_machine=m68k-bull
-		os=-sysv2
-		;;
-	spur)
-		basic_machine=spur-unknown
-		;;
-	st2000)
-		basic_machine=m68k-tandem
-		;;
-	stratus)
-		basic_machine=i860-stratus
-		os=-sysv4
-		;;
-	strongarm-* | thumb-*)
-		basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	sun2)
-		basic_machine=m68000-sun
-		;;
-	sun2os3)
-		basic_machine=m68000-sun
-		os=-sunos3
-		;;
-	sun2os4)
-		basic_machine=m68000-sun
-		os=-sunos4
-		;;
-	sun3os3)
-		basic_machine=m68k-sun
-		os=-sunos3
-		;;
-	sun3os4)
-		basic_machine=m68k-sun
-		os=-sunos4
-		;;
-	sun4os3)
-		basic_machine=sparc-sun
-		os=-sunos3
-		;;
-	sun4os4)
-		basic_machine=sparc-sun
-		os=-sunos4
-		;;
-	sun4sol2)
-		basic_machine=sparc-sun
-		os=-solaris2
-		;;
-	sun3 | sun3-*)
-		basic_machine=m68k-sun
-		;;
-	sun4)
-		basic_machine=sparc-sun
-		;;
-	sun386 | sun386i | roadrunner)
-		basic_machine=i386-sun
-		;;
-	sv1)
-		basic_machine=sv1-cray
-		os=-unicos
-		;;
-	symmetry)
-		basic_machine=i386-sequent
-		os=-dynix
-		;;
-	t3e)
-		basic_machine=alphaev5-cray
-		os=-unicos
-		;;
-	t90)
-		basic_machine=t90-cray
-		os=-unicos
-		;;
-	tile*)
-		basic_machine=$basic_machine-unknown
-		os=-linux-gnu
-		;;
-	tx39)
-		basic_machine=mipstx39-unknown
-		;;
-	tx39el)
-		basic_machine=mipstx39el-unknown
-		;;
-	toad1)
-		basic_machine=pdp10-xkl
-		os=-tops20
-		;;
-	tower | tower-32)
-		basic_machine=m68k-ncr
-		;;
-	tpf)
-		basic_machine=s390x-ibm
-		os=-tpf
-		;;
-	udi29k)
-		basic_machine=a29k-amd
-		os=-udi
-		;;
-	ultra3)
-		basic_machine=a29k-nyu
-		os=-sym1
-		;;
-	v810 | necv810)
-		basic_machine=v810-nec
-		os=-none
-		;;
-	vaxv)
-		basic_machine=vax-dec
-		os=-sysv
-		;;
-	vms)
-		basic_machine=vax-dec
-		os=-vms
-		;;
-	vpp*|vx|vx-*)
-		basic_machine=f301-fujitsu
-		;;
-	vxworks960)
-		basic_machine=i960-wrs
-		os=-vxworks
-		;;
-	vxworks68)
-		basic_machine=m68k-wrs
-		os=-vxworks
-		;;
-	vxworks29k)
-		basic_machine=a29k-wrs
-		os=-vxworks
-		;;
-	w65*)
-		basic_machine=w65-wdc
-		os=-none
-		;;
-	w89k-*)
-		basic_machine=hppa1.1-winbond
-		os=-proelf
-		;;
-	xbox)
-		basic_machine=i686-pc
-		os=-mingw32
-		;;
-	xps | xps100)
-		basic_machine=xps100-honeywell
-		;;
-	xscale-* | xscalee[bl]-*)
-		basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
-		;;
-	ymp)
-		basic_machine=ymp-cray
-		os=-unicos
-		;;
-	z8k-*-coff)
-		basic_machine=z8k-unknown
-		os=-sim
-		;;
-	z80-*-coff)
-		basic_machine=z80-unknown
-		os=-sim
-		;;
-	none)
-		basic_machine=none-none
-		os=-none
-		;;
-
-# Here we handle the default manufacturer of certain CPU types.  It is in
-# some cases the only manufacturer, in others, it is the most popular.
-	w89k)
-		basic_machine=hppa1.1-winbond
-		;;
-	op50n)
-		basic_machine=hppa1.1-oki
-		;;
-	op60c)
-		basic_machine=hppa1.1-oki
-		;;
-	romp)
-		basic_machine=romp-ibm
-		;;
-	mmix)
-		basic_machine=mmix-knuth
-		;;
-	rs6000)
-		basic_machine=rs6000-ibm
-		;;
-	vax)
-		basic_machine=vax-dec
-		;;
-	pdp10)
-		# there are many clones, so DEC is not a safe bet
-		basic_machine=pdp10-unknown
-		;;
-	pdp11)
-		basic_machine=pdp11-dec
-		;;
-	we32k)
-		basic_machine=we32k-att
-		;;
-	sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
-		basic_machine=sh-unknown
-		;;
-	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
-		basic_machine=sparc-sun
-		;;
-	cydra)
-		basic_machine=cydra-cydrome
-		;;
-	orion)
-		basic_machine=orion-highlevel
-		;;
-	orion105)
-		basic_machine=clipper-highlevel
-		;;
-	mac | mpw | mac-mpw)
-		basic_machine=m68k-apple
-		;;
-	pmac | pmac-mpw)
-		basic_machine=powerpc-apple
-		;;
-	*-unknown)
-		# Make sure to match an already-canonicalized machine name.
-		;;
-	*)
-		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-		exit 1
-		;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
-	*-digital*)
-		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
-		;;
-	*-commodore*)
-		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
-		;;
-	*)
-		;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if [ x"$os" != x"" ]
-then
-case $os in
-	# First match some system type aliases
-	# that might get confused with valid system types.
-	# -solaris* is a basic system type, with this one exception.
-	-auroraux)
-		os=-auroraux
-		;;
-	-solaris1 | -solaris1.*)
-		os=`echo $os | sed -e 's|solaris1|sunos4|'`
-		;;
-	-solaris)
-		os=-solaris2
-		;;
-	-svr4*)
-		os=-sysv4
-		;;
-	-unixware*)
-		os=-sysv4.2uw
-		;;
-	-gnu/linux*)
-		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
-		;;
-	# First accept the basic system types.
-	# The portable systems comes first.
-	# Each alternative MUST END IN A *, to match a version number.
-	# -sysv* is not here because it comes later, after sysvr4.
-	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
-	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
-	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
-	      | -sym* | -kopensolaris* | -plan9* \
-	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
-	      | -aos* | -aros* \
-	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
-	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
-	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
-	      | -bitrig* | -openbsd* | -solidbsd* \
-	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
-	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
-	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
-	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
-	      | -chorusos* | -chorusrdb* | -cegcc* \
-	      | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-	      | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
-	      | -linux-newlib* | -linux-musl* | -linux-uclibc* \
-	      | -uxpv* | -beos* | -mpeix* | -udk* \
-	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
-	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
-	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
-	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
-	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
-	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
-	# Remember, each alternative MUST END IN *, to match a version number.
-		;;
-	-qnx*)
-		case $basic_machine in
-		    x86-* | i*86-*)
-			;;
-		    *)
-			os=-nto$os
-			;;
-		esac
-		;;
-	-nto-qnx*)
-		;;
-	-nto*)
-		os=`echo $os | sed -e 's|nto|nto-qnx|'`
-		;;
-	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
-	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
-	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
-		;;
-	-mac*)
-		os=`echo $os | sed -e 's|mac|macos|'`
-		;;
-	-linux-dietlibc)
-		os=-linux-dietlibc
-		;;
-	-linux*)
-		os=`echo $os | sed -e 's|linux|linux-gnu|'`
-		;;
-	-sunos5*)
-		os=`echo $os | sed -e 's|sunos5|solaris2|'`
-		;;
-	-sunos6*)
-		os=`echo $os | sed -e 's|sunos6|solaris3|'`
-		;;
-	-opened*)
-		os=-openedition
-		;;
-	-os400*)
-		os=-os400
-		;;
-	-wince*)
-		os=-wince
-		;;
-	-osfrose*)
-		os=-osfrose
-		;;
-	-osf*)
-		os=-osf
-		;;
-	-utek*)
-		os=-bsd
-		;;
-	-dynix*)
-		os=-bsd
-		;;
-	-acis*)
-		os=-aos
-		;;
-	-atheos*)
-		os=-atheos
-		;;
-	-syllable*)
-		os=-syllable
-		;;
-	-386bsd)
-		os=-bsd
-		;;
-	-ctix* | -uts*)
-		os=-sysv
-		;;
-	-nova*)
-		os=-rtmk-nova
-		;;
-	-ns2 )
-		os=-nextstep2
-		;;
-	-nsk*)
-		os=-nsk
-		;;
-	# Preserve the version number of sinix5.
-	-sinix5.*)
-		os=`echo $os | sed -e 's|sinix|sysv|'`
-		;;
-	-sinix*)
-		os=-sysv4
-		;;
-	-tpf*)
-		os=-tpf
-		;;
-	-triton*)
-		os=-sysv3
-		;;
-	-oss*)
-		os=-sysv3
-		;;
-	-svr4)
-		os=-sysv4
-		;;
-	-svr3)
-		os=-sysv3
-		;;
-	-sysvr4)
-		os=-sysv4
-		;;
-	# This must come after -sysvr4.
-	-sysv*)
-		;;
-	-ose*)
-		os=-ose
-		;;
-	-es1800*)
-		os=-ose
-		;;
-	-xenix)
-		os=-xenix
-		;;
-	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-		os=-mint
-		;;
-	-aros*)
-		os=-aros
-		;;
-	-zvmoe)
-		os=-zvmoe
-		;;
-	-dicos*)
-		os=-dicos
-		;;
-	-nacl*)
-		;;
-	-none)
-		;;
-	*)
-		# Get rid of the `-' at the beginning of $os.
-		os=`echo $os | sed 's/[^-]*-//'`
-		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
-		exit 1
-		;;
-esac
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system.  Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-case $basic_machine in
-	score-*)
-		os=-elf
-		;;
-	spu-*)
-		os=-elf
-		;;
-	*-acorn)
-		os=-riscix1.2
-		;;
-	arm*-rebel)
-		os=-linux
-		;;
-	arm*-semi)
-		os=-aout
-		;;
-	c4x-* | tic4x-*)
-		os=-coff
-		;;
-	c8051-*)
-		os=-elf
-		;;
-	hexagon-*)
-		os=-elf
-		;;
-	tic54x-*)
-		os=-coff
-		;;
-	tic55x-*)
-		os=-coff
-		;;
-	tic6x-*)
-		os=-coff
-		;;
-	# This must come before the *-dec entry.
-	pdp10-*)
-		os=-tops20
-		;;
-	pdp11-*)
-		os=-none
-		;;
-	*-dec | vax-*)
-		os=-ultrix4.2
-		;;
-	m68*-apollo)
-		os=-domain
-		;;
-	i386-sun)
-		os=-sunos4.0.2
-		;;
-	m68000-sun)
-		os=-sunos3
-		;;
-	m68*-cisco)
-		os=-aout
-		;;
-	mep-*)
-		os=-elf
-		;;
-	mips*-cisco)
-		os=-elf
-		;;
-	mips*-*)
-		os=-elf
-		;;
-	or1k-*)
-		os=-elf
-		;;
-	or32-*)
-		os=-coff
-		;;
-	*-tti)	# must be before sparc entry or we get the wrong os.
-		os=-sysv3
-		;;
-	sparc-* | *-sun)
-		os=-sunos4.1.1
-		;;
-	*-be)
-		os=-beos
-		;;
-	*-haiku)
-		os=-haiku
-		;;
-	*-ibm)
-		os=-aix
-		;;
-	*-knuth)
-		os=-mmixware
-		;;
-	*-wec)
-		os=-proelf
-		;;
-	*-winbond)
-		os=-proelf
-		;;
-	*-oki)
-		os=-proelf
-		;;
-	*-hp)
-		os=-hpux
-		;;
-	*-hitachi)
-		os=-hiux
-		;;
-	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
-		os=-sysv
-		;;
-	*-cbm)
-		os=-amigaos
-		;;
-	*-dg)
-		os=-dgux
-		;;
-	*-dolphin)
-		os=-sysv3
-		;;
-	m68k-ccur)
-		os=-rtu
-		;;
-	m88k-omron*)
-		os=-luna
-		;;
-	*-next )
-		os=-nextstep
-		;;
-	*-sequent)
-		os=-ptx
-		;;
-	*-crds)
-		os=-unos
-		;;
-	*-ns)
-		os=-genix
-		;;
-	i370-*)
-		os=-mvs
-		;;
-	*-next)
-		os=-nextstep3
-		;;
-	*-gould)
-		os=-sysv
-		;;
-	*-highlevel)
-		os=-bsd
-		;;
-	*-encore)
-		os=-bsd
-		;;
-	*-sgi)
-		os=-irix
-		;;
-	*-siemens)
-		os=-sysv4
-		;;
-	*-masscomp)
-		os=-rtu
-		;;
-	f30[01]-fujitsu | f700-fujitsu)
-		os=-uxpv
-		;;
-	*-rom68k)
-		os=-coff
-		;;
-	*-*bug)
-		os=-coff
-		;;
-	*-apple)
-		os=-macos
-		;;
-	*-atari*)
-		os=-mint
-		;;
-	*)
-		os=-none
-		;;
-esac
-fi
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer.  We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
-	*-unknown)
-		case $os in
-			-riscix*)
-				vendor=acorn
-				;;
-			-sunos*)
-				vendor=sun
-				;;
-			-cnk*|-aix*)
-				vendor=ibm
-				;;
-			-beos*)
-				vendor=be
-				;;
-			-hpux*)
-				vendor=hp
-				;;
-			-mpeix*)
-				vendor=hp
-				;;
-			-hiux*)
-				vendor=hitachi
-				;;
-			-unos*)
-				vendor=crds
-				;;
-			-dgux*)
-				vendor=dg
-				;;
-			-luna*)
-				vendor=omron
-				;;
-			-genix*)
-				vendor=ns
-				;;
-			-mvs* | -opened*)
-				vendor=ibm
-				;;
-			-os400*)
-				vendor=ibm
-				;;
-			-ptx*)
-				vendor=sequent
-				;;
-			-tpf*)
-				vendor=ibm
-				;;
-			-vxsim* | -vxworks* | -windiss*)
-				vendor=wrs
-				;;
-			-aux*)
-				vendor=apple
-				;;
-			-hms*)
-				vendor=hitachi
-				;;
-			-mpw* | -macos*)
-				vendor=apple
-				;;
-			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-				vendor=atari
-				;;
-			-vos*)
-				vendor=stratus
-				;;
-		esac
-		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
-		;;
-esac
-
-echo $basic_machine$os
-exit
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/configure b/configure
deleted file mode 100755
index 09f39d2..0000000
--- a/configure
+++ /dev/null
@@ -1,22520 +0,0 @@
-#! /bin/sh
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for pktools 2.6.6.
-#
-# Report bugs to <kempenep at gmail.com>.
-#
-#
-# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
-#
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-	expr "X$arg" : "X\\(.*\\)$as_nl";
-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""	$as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-as_myself=
-case $0 in #((
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-  done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-# Use a proper internal environment variable to ensure we don't fall
-  # into an infinite loop, continuously re-executing ourselves.
-  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
-    _as_can_reexec=no; export _as_can_reexec;
-    # We cannot yet assume a decent shell, so we have to provide a
-# neutralization value for shells without unset; and this also
-# works around shells that cannot unset nonexistent variables.
-# Preserve -v and -x to the replacement shell.
-BASH_ENV=/dev/null
-ENV=/dev/null
-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
-  *v*x* | *x*v* ) as_opts=-vx ;;
-  *v* ) as_opts=-v ;;
-  *x* ) as_opts=-x ;;
-  * ) as_opts= ;;
-esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-as_fn_exit 255
-  fi
-  # We don't want this to propagate to other subprocesses.
-          { _as_can_reexec=; unset _as_can_reexec;}
-if test "x$CONFIG_SHELL" = x; then
-  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '\${1+\"\$@\"}'='\"\$@\"'
-  setopt NO_GLOB_SUBST
-else
-  case \`(set -o) 2>/dev/null\` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-"
-  as_required="as_fn_return () { (exit \$1); }
-as_fn_success () { as_fn_return 0; }
-as_fn_failure () { as_fn_return 1; }
-as_fn_ret_success () { return 0; }
-as_fn_ret_failure () { return 1; }
-
-exitcode=0
-as_fn_success || { exitcode=1; echo as_fn_success failed.; }
-as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
-as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
-as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
-
-else
-  exitcode=1; echo positional parameters were not saved.
-fi
-test x\$exitcode = x0 || exit 1
-test -x / || exit 1"
-  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
-  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
-  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
-  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
-
-  test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
-    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
-    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
-    PATH=/empty FPATH=/empty; export PATH FPATH
-    test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
-      || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1
-test \$(( 1 + 1 )) = 2 || exit 1"
-  if (eval "$as_required") 2>/dev/null; then :
-  as_have_required=yes
-else
-  as_have_required=no
-fi
-  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
-
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-as_found=false
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  as_found=:
-  case $as_dir in #(
-	 /*)
-	   for as_base in sh bash ksh sh5; do
-	     # Try only shells that exist, to save several forks.
-	     as_shell=$as_dir/$as_base
-	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
-		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
-  CONFIG_SHELL=$as_shell as_have_required=yes
-		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
-  break 2
-fi
-fi
-	   done;;
-       esac
-  as_found=false
-done
-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
-	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
-  CONFIG_SHELL=$SHELL as_have_required=yes
-fi; }
-IFS=$as_save_IFS
-
-
-      if test "x$CONFIG_SHELL" != x; then :
-  export CONFIG_SHELL
-             # We cannot yet assume a decent shell, so we have to provide a
-# neutralization value for shells without unset; and this also
-# works around shells that cannot unset nonexistent variables.
-# Preserve -v and -x to the replacement shell.
-BASH_ENV=/dev/null
-ENV=/dev/null
-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
-  *v*x* | *x*v* ) as_opts=-vx ;;
-  *v* ) as_opts=-v ;;
-  *x* ) as_opts=-x ;;
-  * ) as_opts= ;;
-esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-exit 255
-fi
-
-    if test x$as_have_required = xno; then :
-  $as_echo "$0: This script requires a shell more modern than all"
-  $as_echo "$0: the shells that I found on your system."
-  if test x${ZSH_VERSION+set} = xset ; then
-    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
-    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
-  else
-    $as_echo "$0: Please tell bug-autoconf at gnu.org and kempenep at gmail.com
-$0: about your system, including any error possibly output
-$0: before this message. Then install a modern shell, or
-$0: manually run the script under such a shell if you do
-$0: have one."
-  fi
-  exit 1
-fi
-fi
-fi
-SHELL=${CONFIG_SHELL-/bin/sh}
-export SHELL
-# Unset more variables known to interfere with behavior of common tools.
-CLICOLOR_FORCE= GREP_OPTIONS=
-unset CLICOLOR_FORCE GREP_OPTIONS
-
-## --------------------- ##
-## M4sh Shell Functions. ##
-## --------------------- ##
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
-  { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
-  return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
-  set +e
-  as_fn_set_status $1
-  exit $1
-} # as_fn_exit
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || eval $as_mkdir_p || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
-  test -f "$1" && test -x "$1"
-} # as_fn_executable_p
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
-  eval 'as_fn_append ()
-  {
-    eval $1+=\$2
-  }'
-else
-  as_fn_append ()
-  {
-    eval $1=\$$1\$2
-  }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
-  eval 'as_fn_arith ()
-  {
-    as_val=$(( $* ))
-  }'
-else
-  as_fn_arith ()
-  {
-    as_val=`expr "$@" || test $? -eq 1`
-  }
-fi # as_fn_arith
-
-
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
-  as_status=$1; test $as_status -eq 0 && as_status=1
-  if test "$4"; then
-    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
-  fi
-  $as_echo "$as_me: error: $2" >&2
-  as_fn_exit $as_status
-} # as_fn_error
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-	 X"$0" : 'X\(//\)$' \| \
-	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-
-  as_lineno_1=$LINENO as_lineno_1a=$LINENO
-  as_lineno_2=$LINENO as_lineno_2a=$LINENO
-  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
-  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
-  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
-  sed -n '
-    p
-    /[$]LINENO/=
-  ' <$as_myself |
-    sed '
-      s/[$]LINENO.*/&-/
-      t lineno
-      b
-      :lineno
-      N
-      :loop
-      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
-      t loop
-      s/-\n.*//
-    ' >$as_me.lineno &&
-  chmod +x "$as_me.lineno" ||
-    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
-
-  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
-  # already done that, so ensure we don't try to do so again and fall
-  # in an infinite loop.  This has already happened in practice.
-  _as_can_reexec=no; export _as_can_reexec
-  # Don't try to exec as it changes $[0], causing all sort of problems
-  # (the dirname of $[0] is not the place where we might find the
-  # original and so on.  Autoconf is especially sensitive to this).
-  . "./$as_me.lineno"
-  # Exit status is that of the last command.
-  exit
-}
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
-  case `echo 'xy\c'` in
-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  xy)  ECHO_C='\c';;
-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
-       ECHO_T='	';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -pR'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -pR'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -pR'
-  fi
-else
-  as_ln_s='cp -pR'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p='mkdir -p "$as_dir"'
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-
-test -n "$DJDIR" || exec 7<&0 </dev/null
-exec 6>&1
-
-# Name of the host.
-# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
-# so uname gets run too.
-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
-
-#
-# Initializations.
-#
-ac_default_prefix=/usr/local
-ac_clean_files=
-ac_config_libobj_dir=.
-LIBOBJS=
-cross_compiling=no
-subdirs=
-MFLAGS=
-MAKEFLAGS=
-
-# Identity of this package.
-PACKAGE_NAME='pktools'
-PACKAGE_TARNAME='pktools'
-PACKAGE_VERSION='2.6.6'
-PACKAGE_STRING='pktools 2.6.6'
-PACKAGE_BUGREPORT='kempenep at gmail.com'
-PACKAGE_URL=''
-
-# Factoring default headers for most tests.
-ac_includes_default="\
-#include <stdio.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-# include <sys/stat.h>
-#endif
-#ifdef STDC_HEADERS
-# include <stdlib.h>
-# include <stddef.h>
-#else
-# ifdef HAVE_STDLIB_H
-#  include <stdlib.h>
-# endif
-#endif
-#ifdef HAVE_STRING_H
-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-#  include <memory.h>
-# endif
-# include <string.h>
-#endif
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
-#ifdef HAVE_INTTYPES_H
-# include <inttypes.h>
-#endif
-#ifdef HAVE_STDINT_H
-# include <stdint.h>
-#endif
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif"
-
-ac_unique_file="src/apps/pkinfo.cc"
-ac_subst_vars='am__EXEEXT_FALSE
-am__EXEEXT_TRUE
-LTLIBOBJS
-LIBOBJS
-PKTOOLS_SO_VERSION
-AM_LDFLAGS
-AM_CXXFLAGS
-USE_GSL_FALSE
-USE_GSL_TRUE
-GSL_LIBS
-GSL_CFLAGS
-USE_NLOPT_FALSE
-USE_NLOPT_TRUE
-NLOPT_LIBS
-NLOPT_CFLAGS
-LASCLASSES_OPT
-USE_LAS_FALSE
-USE_LAS_TRUE
-USE_FANN_FALSE
-USE_FANN_TRUE
-FANN_LIBS
-FANN_CFLAGS
-PKG_CONFIG_LIBDIR
-PKG_CONFIG_PATH
-PKG_CONFIG
-CXXCPP
-CPP
-OTOOL64
-OTOOL
-LIPO
-NMEDIT
-DSYMUTIL
-MANIFEST_TOOL
-RANLIB
-ac_ct_AR
-AR
-DLLTOOL
-OBJDUMP
-LN_S
-NM
-ac_ct_DUMPBIN
-DUMPBIN
-LD
-FGREP
-EGREP
-GREP
-SED
-am__fastdepCC_FALSE
-am__fastdepCC_TRUE
-CCDEPMODE
-ac_ct_CC
-CFLAGS
-CC
-host_os
-host_vendor
-host_cpu
-host
-build_os
-build_vendor
-build_cpu
-build
-LIBTOOL
-ac_ct_FC
-FCFLAGS
-FC
-am__fastdepCXX_FALSE
-am__fastdepCXX_TRUE
-CXXDEPMODE
-am__nodep
-AMDEPBACKSLASH
-AMDEP_FALSE
-AMDEP_TRUE
-am__quote
-am__include
-DEPDIR
-OBJEXT
-EXEEXT
-ac_ct_CXX
-CPPFLAGS
-LDFLAGS
-CXXFLAGS
-CXX
-GDAL_OGR_ENABLED
-GDAL_DEP_LDFLAGS
-GDAL_LDFLAGS
-GDAL_CFLAGS
-GDAL_VERSION
-GDAL_CONFIG
-AM_BACKSLASH
-AM_DEFAULT_VERBOSITY
-AM_DEFAULT_V
-AM_V
-am__untar
-am__tar
-AMTAR
-am__leading_dot
-SET_MAKE
-AWK
-mkdir_p
-MKDIR_P
-INSTALL_STRIP_PROGRAM
-STRIP
-install_sh
-MAKEINFO
-AUTOHEADER
-AUTOMAKE
-AUTOCONF
-ACLOCAL
-VERSION
-PACKAGE
-CYGPATH_W
-am__isrc
-INSTALL_DATA
-INSTALL_SCRIPT
-INSTALL_PROGRAM
-target_alias
-host_alias
-build_alias
-LIBS
-ECHO_T
-ECHO_N
-ECHO_C
-DEFS
-mandir
-localedir
-libdir
-psdir
-pdfdir
-dvidir
-htmldir
-infodir
-docdir
-oldincludedir
-includedir
-localstatedir
-sharedstatedir
-sysconfdir
-datadir
-datarootdir
-libexecdir
-sbindir
-bindir
-program_transform_name
-prefix
-exec_prefix
-PACKAGE_URL
-PACKAGE_BUGREPORT
-PACKAGE_STRING
-PACKAGE_VERSION
-PACKAGE_TARNAME
-PACKAGE_NAME
-PATH_SEPARATOR
-SHELL'
-ac_subst_files=''
-ac_user_opts='
-enable_option_checking
-enable_silent_rules
-with_gdal
-enable_dependency_tracking
-enable_shared
-enable_static
-with_pic
-enable_fast_install
-with_gnu_ld
-with_sysroot
-enable_libtool_lock
-enable_fann
-enable_las
-enable_nlopt
-'
-      ac_precious_vars='build_alias
-host_alias
-target_alias
-CXX
-CXXFLAGS
-LDFLAGS
-LIBS
-CPPFLAGS
-CCC
-FC
-FCFLAGS
-CC
-CFLAGS
-CPP
-CXXCPP
-PKG_CONFIG
-PKG_CONFIG_PATH
-PKG_CONFIG_LIBDIR
-FANN_CFLAGS
-FANN_LIBS
-NLOPT_CFLAGS
-NLOPT_LIBS
-GSL_CFLAGS
-GSL_LIBS'
-
-
-# Initialize some variables set by options.
-ac_init_help=
-ac_init_version=false
-ac_unrecognized_opts=
-ac_unrecognized_sep=
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-cache_file=/dev/null
-exec_prefix=NONE
-no_create=
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-verbose=
-x_includes=NONE
-x_libraries=NONE
-
-# Installation directory options.
-# These are left unexpanded so users can "make install exec_prefix=/foo"
-# and all the variables that are supposed to be based on exec_prefix
-# by default will actually change.
-# Use braces instead of parens because sh, perl, etc. also accept them.
-# (The list follows the same order as the GNU Coding Standards.)
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datarootdir='${prefix}/share'
-datadir='${datarootdir}'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
-infodir='${datarootdir}/info'
-htmldir='${docdir}'
-dvidir='${docdir}'
-pdfdir='${docdir}'
-psdir='${docdir}'
-libdir='${exec_prefix}/lib'
-localedir='${datarootdir}/locale'
-mandir='${datarootdir}/man'
-
-ac_prev=
-ac_dashdash=
-for ac_option
-do
-  # If the previous option needs an argument, assign it.
-  if test -n "$ac_prev"; then
-    eval $ac_prev=\$ac_option
-    ac_prev=
-    continue
-  fi
-
-  case $ac_option in
-  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
-  *=)   ac_optarg= ;;
-  *)    ac_optarg=yes ;;
-  esac
-
-  # Accept the important Cygnus configure options, so we can diagnose typos.
-
-  case $ac_dashdash$ac_option in
-  --)
-    ac_dashdash=yes ;;
-
-  -bindir | --bindir | --bindi | --bind | --bin | --bi)
-    ac_prev=bindir ;;
-  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-    bindir=$ac_optarg ;;
-
-  -build | --build | --buil | --bui | --bu)
-    ac_prev=build_alias ;;
-  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
-    build_alias=$ac_optarg ;;
-
-  -cache-file | --cache-file | --cache-fil | --cache-fi \
-  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-    ac_prev=cache_file ;;
-  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
-    cache_file=$ac_optarg ;;
-
-  --config-cache | -C)
-    cache_file=config.cache ;;
-
-  -datadir | --datadir | --datadi | --datad)
-    ac_prev=datadir ;;
-  -datadir=* | --datadir=* | --datadi=* | --datad=*)
-    datadir=$ac_optarg ;;
-
-  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
-  | --dataroo | --dataro | --datar)
-    ac_prev=datarootdir ;;
-  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
-  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
-    datarootdir=$ac_optarg ;;
-
-  -disable-* | --disable-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"enable_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval enable_$ac_useropt=no ;;
-
-  -docdir | --docdir | --docdi | --doc | --do)
-    ac_prev=docdir ;;
-  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
-    docdir=$ac_optarg ;;
-
-  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
-    ac_prev=dvidir ;;
-  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
-    dvidir=$ac_optarg ;;
-
-  -enable-* | --enable-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"enable_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval enable_$ac_useropt=\$ac_optarg ;;
-
-  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
-  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-  | --exec | --exe | --ex)
-    ac_prev=exec_prefix ;;
-  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
-  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
-  | --exec=* | --exe=* | --ex=*)
-    exec_prefix=$ac_optarg ;;
-
-  -gas | --gas | --ga | --g)
-    # Obsolete; use --with-gas.
-    with_gas=yes ;;
-
-  -help | --help | --hel | --he | -h)
-    ac_init_help=long ;;
-  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
-    ac_init_help=recursive ;;
-  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
-    ac_init_help=short ;;
-
-  -host | --host | --hos | --ho)
-    ac_prev=host_alias ;;
-  -host=* | --host=* | --hos=* | --ho=*)
-    host_alias=$ac_optarg ;;
-
-  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
-    ac_prev=htmldir ;;
-  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
-  | --ht=*)
-    htmldir=$ac_optarg ;;
-
-  -includedir | --includedir | --includedi | --included | --include \
-  | --includ | --inclu | --incl | --inc)
-    ac_prev=includedir ;;
-  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
-  | --includ=* | --inclu=* | --incl=* | --inc=*)
-    includedir=$ac_optarg ;;
-
-  -infodir | --infodir | --infodi | --infod | --info | --inf)
-    ac_prev=infodir ;;
-  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-    infodir=$ac_optarg ;;
-
-  -libdir | --libdir | --libdi | --libd)
-    ac_prev=libdir ;;
-  -libdir=* | --libdir=* | --libdi=* | --libd=*)
-    libdir=$ac_optarg ;;
-
-  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
-  | --libexe | --libex | --libe)
-    ac_prev=libexecdir ;;
-  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
-  | --libexe=* | --libex=* | --libe=*)
-    libexecdir=$ac_optarg ;;
-
-  -localedir | --localedir | --localedi | --localed | --locale)
-    ac_prev=localedir ;;
-  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
-    localedir=$ac_optarg ;;
-
-  -localstatedir | --localstatedir | --localstatedi | --localstated \
-  | --localstate | --localstat | --localsta | --localst | --locals)
-    ac_prev=localstatedir ;;
-  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
-    localstatedir=$ac_optarg ;;
-
-  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
-    ac_prev=mandir ;;
-  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-    mandir=$ac_optarg ;;
-
-  -nfp | --nfp | --nf)
-    # Obsolete; use --without-fp.
-    with_fp=no ;;
-
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c | -n)
-    no_create=yes ;;
-
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
-    no_recursion=yes ;;
-
-  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
-  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
-  | --oldin | --oldi | --old | --ol | --o)
-    ac_prev=oldincludedir ;;
-  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
-  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
-  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
-    oldincludedir=$ac_optarg ;;
-
-  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-    ac_prev=prefix ;;
-  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-    prefix=$ac_optarg ;;
-
-  -program-prefix | --program-prefix | --program-prefi | --program-pref \
-  | --program-pre | --program-pr | --program-p)
-    ac_prev=program_prefix ;;
-  -program-prefix=* | --program-prefix=* | --program-prefi=* \
-  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
-    program_prefix=$ac_optarg ;;
-
-  -program-suffix | --program-suffix | --program-suffi | --program-suff \
-  | --program-suf | --program-su | --program-s)
-    ac_prev=program_suffix ;;
-  -program-suffix=* | --program-suffix=* | --program-suffi=* \
-  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
-    program_suffix=$ac_optarg ;;
-
-  -program-transform-name | --program-transform-name \
-  | --program-transform-nam | --program-transform-na \
-  | --program-transform-n | --program-transform- \
-  | --program-transform | --program-transfor \
-  | --program-transfo | --program-transf \
-  | --program-trans | --program-tran \
-  | --progr-tra | --program-tr | --program-t)
-    ac_prev=program_transform_name ;;
-  -program-transform-name=* | --program-transform-name=* \
-  | --program-transform-nam=* | --program-transform-na=* \
-  | --program-transform-n=* | --program-transform-=* \
-  | --program-transform=* | --program-transfor=* \
-  | --program-transfo=* | --program-transf=* \
-  | --program-trans=* | --program-tran=* \
-  | --progr-tra=* | --program-tr=* | --program-t=*)
-    program_transform_name=$ac_optarg ;;
-
-  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
-    ac_prev=pdfdir ;;
-  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
-    pdfdir=$ac_optarg ;;
-
-  -psdir | --psdir | --psdi | --psd | --ps)
-    ac_prev=psdir ;;
-  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
-    psdir=$ac_optarg ;;
-
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil)
-    silent=yes ;;
-
-  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
-    ac_prev=sbindir ;;
-  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
-  | --sbi=* | --sb=*)
-    sbindir=$ac_optarg ;;
-
-  -sharedstatedir | --sharedstatedir | --sharedstatedi \
-  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-  | --sharedst | --shareds | --shared | --share | --shar \
-  | --sha | --sh)
-    ac_prev=sharedstatedir ;;
-  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
-  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
-  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
-  | --sha=* | --sh=*)
-    sharedstatedir=$ac_optarg ;;
-
-  -site | --site | --sit)
-    ac_prev=site ;;
-  -site=* | --site=* | --sit=*)
-    site=$ac_optarg ;;
-
-  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-    ac_prev=srcdir ;;
-  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-    srcdir=$ac_optarg ;;
-
-  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
-  | --syscon | --sysco | --sysc | --sys | --sy)
-    ac_prev=sysconfdir ;;
-  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
-  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-    sysconfdir=$ac_optarg ;;
-
-  -target | --target | --targe | --targ | --tar | --ta | --t)
-    ac_prev=target_alias ;;
-  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
-    target_alias=$ac_optarg ;;
-
-  -v | -verbose | --verbose | --verbos | --verbo | --verb)
-    verbose=yes ;;
-
-  -version | --version | --versio | --versi | --vers | -V)
-    ac_init_version=: ;;
-
-  -with-* | --with-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"with_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval with_$ac_useropt=\$ac_optarg ;;
-
-  -without-* | --without-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"with_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval with_$ac_useropt=no ;;
-
-  --x)
-    # Obsolete; use --with-x.
-    with_x=yes ;;
-
-  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
-  | --x-incl | --x-inc | --x-in | --x-i)
-    ac_prev=x_includes ;;
-  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
-  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
-    x_includes=$ac_optarg ;;
-
-  -x-libraries | --x-libraries | --x-librarie | --x-librari \
-  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
-    ac_prev=x_libraries ;;
-  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
-  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
-    x_libraries=$ac_optarg ;;
-
-  -*) as_fn_error $? "unrecognized option: \`$ac_option'
-Try \`$0 --help' for more information"
-    ;;
-
-  *=*)
-    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
-    # Reject names that are not valid shell variable names.
-    case $ac_envvar in #(
-      '' | [0-9]* | *[!_$as_cr_alnum]* )
-      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
-    esac
-    eval $ac_envvar=\$ac_optarg
-    export $ac_envvar ;;
-
-  *)
-    # FIXME: should be removed in autoconf 3.0.
-    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
-    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
-    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
-    ;;
-
-  esac
-done
-
-if test -n "$ac_prev"; then
-  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-  as_fn_error $? "missing argument to $ac_option"
-fi
-
-if test -n "$ac_unrecognized_opts"; then
-  case $enable_option_checking in
-    no) ;;
-    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
-    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
-  esac
-fi
-
-# Check all directory arguments for consistency.
-for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
-		datadir sysconfdir sharedstatedir localstatedir includedir \
-		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-		libdir localedir mandir
-do
-  eval ac_val=\$$ac_var
-  # Remove trailing slashes.
-  case $ac_val in
-    */ )
-      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
-      eval $ac_var=\$ac_val;;
-  esac
-  # Be sure to have absolute directory names.
-  case $ac_val in
-    [\\/$]* | ?:[\\/]* )  continue;;
-    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
-  esac
-  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
-done
-
-# There might be people who depend on the old broken behavior: `$host'
-# used to hold the argument of --host etc.
-# FIXME: To remove some day.
-build=$build_alias
-host=$host_alias
-target=$target_alias
-
-# FIXME: To remove some day.
-if test "x$host_alias" != x; then
-  if test "x$build_alias" = x; then
-    cross_compiling=maybe
-  elif test "x$build_alias" != "x$host_alias"; then
-    cross_compiling=yes
-  fi
-fi
-
-ac_tool_prefix=
-test -n "$host_alias" && ac_tool_prefix=$host_alias-
-
-test "$silent" = yes && exec 6>/dev/null
-
-
-ac_pwd=`pwd` && test -n "$ac_pwd" &&
-ac_ls_di=`ls -di .` &&
-ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
-  as_fn_error $? "working directory cannot be determined"
-test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
-  as_fn_error $? "pwd does not report name of working directory"
-
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
-  ac_srcdir_defaulted=yes
-  # Try the directory containing this script, then the parent directory.
-  ac_confdir=`$as_dirname -- "$as_myself" ||
-$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_myself" : 'X\(//\)[^/]' \| \
-	 X"$as_myself" : 'X\(//\)$' \| \
-	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_myself" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-  srcdir=$ac_confdir
-  if test ! -r "$srcdir/$ac_unique_file"; then
-    srcdir=..
-  fi
-else
-  ac_srcdir_defaulted=no
-fi
-if test ! -r "$srcdir/$ac_unique_file"; then
-  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
-  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
-fi
-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
-ac_abs_confdir=`(
-	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
-	pwd)`
-# When building in place, set srcdir=.
-if test "$ac_abs_confdir" = "$ac_pwd"; then
-  srcdir=.
-fi
-# Remove unnecessary trailing slashes from srcdir.
-# Double slashes in file names in object file debugging info
-# mess up M-x gdb in Emacs.
-case $srcdir in
-*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
-esac
-for ac_var in $ac_precious_vars; do
-  eval ac_env_${ac_var}_set=\${${ac_var}+set}
-  eval ac_env_${ac_var}_value=\$${ac_var}
-  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
-  eval ac_cv_env_${ac_var}_value=\$${ac_var}
-done
-
-#
-# Report the --help message.
-#
-if test "$ac_init_help" = "long"; then
-  # Omit some internal or obsolete options to make the list less imposing.
-  # This message is too long to be a string in the A/UX 3.1 sh.
-  cat <<_ACEOF
-\`configure' configures pktools 2.6.6 to adapt to many kinds of systems.
-
-Usage: $0 [OPTION]... [VAR=VALUE]...
-
-To assign environment variables (e.g., CC, CFLAGS...), specify them as
-VAR=VALUE.  See below for descriptions of some of the useful variables.
-
-Defaults for the options are specified in brackets.
-
-Configuration:
-  -h, --help              display this help and exit
-      --help=short        display options specific to this package
-      --help=recursive    display the short help of all the included packages
-  -V, --version           display version information and exit
-  -q, --quiet, --silent   do not print \`checking ...' messages
-      --cache-file=FILE   cache test results in FILE [disabled]
-  -C, --config-cache      alias for \`--cache-file=config.cache'
-  -n, --no-create         do not create output files
-      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
-
-Installation directories:
-  --prefix=PREFIX         install architecture-independent files in PREFIX
-                          [$ac_default_prefix]
-  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                          [PREFIX]
-
-By default, \`make install' will install all the files in
-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-for instance \`--prefix=\$HOME'.
-
-For better control, use the options below.
-
-Fine tuning of the installation directories:
-  --bindir=DIR            user executables [EPREFIX/bin]
-  --sbindir=DIR           system admin executables [EPREFIX/sbin]
-  --libexecdir=DIR        program executables [EPREFIX/libexec]
-  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
-  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
-  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
-  --libdir=DIR            object code libraries [EPREFIX/lib]
-  --includedir=DIR        C header files [PREFIX/include]
-  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
-  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
-  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
-  --infodir=DIR           info documentation [DATAROOTDIR/info]
-  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
-  --mandir=DIR            man documentation [DATAROOTDIR/man]
-  --docdir=DIR            documentation root [DATAROOTDIR/doc/pktools]
-  --htmldir=DIR           html documentation [DOCDIR]
-  --dvidir=DIR            dvi documentation [DOCDIR]
-  --pdfdir=DIR            pdf documentation [DOCDIR]
-  --psdir=DIR             ps documentation [DOCDIR]
-_ACEOF
-
-  cat <<\_ACEOF
-
-Program names:
-  --program-prefix=PREFIX            prepend PREFIX to installed program names
-  --program-suffix=SUFFIX            append SUFFIX to installed program names
-  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
-
-System types:
-  --build=BUILD     configure for building on BUILD [guessed]
-  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
-_ACEOF
-fi
-
-if test -n "$ac_init_help"; then
-  case $ac_init_help in
-     short | recursive ) echo "Configuration of pktools 2.6.6:";;
-   esac
-  cat <<\_ACEOF
-
-Optional Features:
-  --disable-option-checking  ignore unrecognized --enable/--with options
-  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
-  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-silent-rules   less verbose build output (undo: "make V=1")
-  --disable-silent-rules  verbose build output (undo: "make V=0")
-  --enable-dependency-tracking
-                          do not reject slow dependency extractors
-  --disable-dependency-tracking
-                          speeds up one-time build
-  --enable-shared[=PKGS]  build shared libraries [default=yes]
-  --enable-static[=PKGS]  build static libraries [default=yes]
-  --enable-fast-install[=PKGS]
-                          optimize for fast installation [default=yes]
-  --disable-libtool-lock  avoid locking (might break parallel builds)
-  --enable-fann           Enable feature fann
-  --enable-las            Enable feature las
-  --enable-nlopt          Enable feature nlopt
-
-Optional Packages:
-  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
-  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --with-gdal=[ARG]       Specify full path to gdal-config script
-  --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use
-                          both]
-  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
-  --with-sysroot=DIR Search for dependent libraries within DIR
-                        (or the compiler's sysroot if not specified).
-
-Some influential environment variables:
-  CXX         C++ compiler command
-  CXXFLAGS    C++ compiler flags
-  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
-              nonstandard directory <lib dir>
-  LIBS        libraries to pass to the linker, e.g. -l<library>
-  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
-              you have headers in a nonstandard directory <include dir>
-  FC          Fortran compiler command
-  FCFLAGS     Fortran compiler flags
-  CC          C compiler command
-  CFLAGS      C compiler flags
-  CPP         C preprocessor
-  CXXCPP      C++ preprocessor
-  PKG_CONFIG  path to pkg-config utility
-  PKG_CONFIG_PATH
-              directories to add to pkg-config's search path
-  PKG_CONFIG_LIBDIR
-              path overriding pkg-config's built-in search path
-  FANN_CFLAGS C compiler flags for FANN, overriding pkg-config
-  FANN_LIBS   linker flags for FANN, overriding pkg-config
-  NLOPT_CFLAGS
-              C compiler flags for NLOPT, overriding pkg-config
-  NLOPT_LIBS  linker flags for NLOPT, overriding pkg-config
-  GSL_CFLAGS  C compiler flags for GSL, overriding pkg-config
-  GSL_LIBS    linker flags for GSL, overriding pkg-config
-
-Use these variables to override the choices made by `configure' or to help
-it to find libraries and programs with nonstandard names/locations.
-
-Report bugs to <kempenep at gmail.com>.
-_ACEOF
-ac_status=$?
-fi
-
-if test "$ac_init_help" = "recursive"; then
-  # If there are subdirs, report their specific --help.
-  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
-    test -d "$ac_dir" ||
-      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
-      continue
-    ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-    cd "$ac_dir" || { ac_status=$?; continue; }
-    # Check for guested configure.
-    if test -f "$ac_srcdir/configure.gnu"; then
-      echo &&
-      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
-    elif test -f "$ac_srcdir/configure"; then
-      echo &&
-      $SHELL "$ac_srcdir/configure" --help=recursive
-    else
-      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
-    fi || ac_status=$?
-    cd "$ac_pwd" || { ac_status=$?; break; }
-  done
-fi
-
-test -n "$ac_init_help" && exit $ac_status
-if $ac_init_version; then
-  cat <<\_ACEOF
-pktools configure 2.6.6
-generated by GNU Autoconf 2.69
-
-Copyright (C) 2012 Free Software Foundation, Inc.
-This configure script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it.
-_ACEOF
-  exit
-fi
-
-## ------------------------ ##
-## Autoconf initialization. ##
-## ------------------------ ##
-
-# ac_fn_cxx_try_compile LINENO
-# ----------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
-ac_fn_cxx_try_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext
-  if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_cxx_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_cxx_try_compile
-
-# ac_fn_fc_try_compile LINENO
-# ---------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
-ac_fn_fc_try_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext
-  if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_fc_try_compile
-
-# ac_fn_c_try_compile LINENO
-# --------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext
-  if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_compile
-
-# ac_fn_c_try_link LINENO
-# -----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_link ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext conftest$ac_exeext
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 test -x conftest$ac_exeext
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
-  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
-  # interfere with the next link command; also delete a directory that is
-  # left behind by Apple's compiler.  We do this before executing the actions.
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_link
-
-# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists and can be compiled using the include files in
-# INCLUDES, setting the cache variable VAR accordingly.
-ac_fn_c_check_header_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_compile
-
-# ac_fn_c_try_cpp LINENO
-# ----------------------
-# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_cpp ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } > conftest.i && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-    ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_cpp
-
-# ac_fn_c_try_run LINENO
-# ----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
-# that executables *can* be run.
-ac_fn_c_try_run ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-       $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_retval=$ac_status
-fi
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_run
-
-# ac_fn_c_check_func LINENO FUNC VAR
-# ----------------------------------
-# Tests whether FUNC exists, setting the cache variable VAR accordingly
-ac_fn_c_check_func ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $2 innocuous_$2
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $2 (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $2
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $2 ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$2 || defined __stub___$2
-choke me
-#endif
-
-int
-main ()
-{
-return $2 ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_func
-
-# ac_fn_cxx_try_cpp LINENO
-# ------------------------
-# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
-ac_fn_cxx_try_cpp ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } > conftest.i && {
-	 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
-	 test ! -s conftest.err
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-    ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_cxx_try_cpp
-
-# ac_fn_cxx_try_link LINENO
-# -------------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
-ac_fn_cxx_try_link ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext conftest$ac_exeext
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_cxx_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 test -x conftest$ac_exeext
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
-  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
-  # interfere with the next link command; also delete a directory that is
-  # left behind by Apple's compiler.  We do this before executing the actions.
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_cxx_try_link
-
-# ac_fn_fc_try_link LINENO
-# ------------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
-ac_fn_fc_try_link ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext conftest$ac_exeext
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 test -x conftest$ac_exeext
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
-  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
-  # interfere with the next link command; also delete a directory that is
-  # left behind by Apple's compiler.  We do this before executing the actions.
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_fc_try_link
-
-# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
-ac_fn_c_check_header_mongrel ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if eval \${$3+:} false; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
-$as_echo_n "checking $2 usability... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_header_compiler=yes
-else
-  ac_header_compiler=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
-$as_echo_n "checking $2 presence... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <$2>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  ac_header_preproc=yes
-else
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
-  yes:no: )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( $as_echo "## --------------------------------- ##
-## Report this to kempenep at gmail.com ##
-## --------------------------------- ##"
-     ) | sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  eval "$3=\$ac_header_compiler"
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_mongrel
-
-# ac_fn_cxx_try_run LINENO
-# ------------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
-# that executables *can* be run.
-ac_fn_cxx_try_run ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-       $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_retval=$ac_status
-fi
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_cxx_try_run
-
-# ac_fn_cxx_check_header_mongrel LINENO HEADER VAR INCLUDES
-# ---------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
-ac_fn_cxx_check_header_mongrel ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if eval \${$3+:} false; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
-$as_echo_n "checking $2 usability... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_header_compiler=yes
-else
-  ac_header_compiler=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
-$as_echo_n "checking $2 presence... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <$2>
-_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
-  ac_header_preproc=yes
-else
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in #((
-  yes:no: )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( $as_echo "## --------------------------------- ##
-## Report this to kempenep at gmail.com ##
-## --------------------------------- ##"
-     ) | sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  eval "$3=\$ac_header_compiler"
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_cxx_check_header_mongrel
-
-# ac_fn_cxx_check_type LINENO TYPE VAR INCLUDES
-# ---------------------------------------------
-# Tests whether TYPE exists after having included INCLUDES, setting cache
-# variable VAR accordingly.
-ac_fn_cxx_check_type ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  eval "$3=no"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-if (sizeof ($2))
-	 return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-if (sizeof (($2)))
-	    return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-
-else
-  eval "$3=yes"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_cxx_check_type
-cat >config.log <<_ACEOF
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-It was created by pktools $as_me 2.6.6, which was
-generated by GNU Autoconf 2.69.  Invocation command line was
-
-  $ $0 $@
-
-_ACEOF
-exec 5>>config.log
-{
-cat <<_ASUNAME
-## --------- ##
-## Platform. ##
-## --------- ##
-
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
-
-/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
-/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
-/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
-
-_ASUNAME
-
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    $as_echo "PATH: $as_dir"
-  done
-IFS=$as_save_IFS
-
-} >&5
-
-cat >&5 <<_ACEOF
-
-
-## ----------- ##
-## Core tests. ##
-## ----------- ##
-
-_ACEOF
-
-
-# Keep a trace of the command line.
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Strip out --silent because we don't want to record it for future runs.
-# Also quote any args containing shell meta-characters.
-# Make two passes to allow for proper duplicate-argument suppression.
-ac_configure_args=
-ac_configure_args0=
-ac_configure_args1=
-ac_must_keep_next=false
-for ac_pass in 1 2
-do
-  for ac_arg
-  do
-    case $ac_arg in
-    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
-    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-    | -silent | --silent | --silen | --sile | --sil)
-      continue ;;
-    *\'*)
-      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    esac
-    case $ac_pass in
-    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
-    2)
-      as_fn_append ac_configure_args1 " '$ac_arg'"
-      if test $ac_must_keep_next = true; then
-	ac_must_keep_next=false # Got value, back to normal.
-      else
-	case $ac_arg in
-	  *=* | --config-cache | -C | -disable-* | --disable-* \
-	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
-	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
-	  | -with-* | --with-* | -without-* | --without-* | --x)
-	    case "$ac_configure_args0 " in
-	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
-	    esac
-	    ;;
-	  -* ) ac_must_keep_next=true ;;
-	esac
-      fi
-      as_fn_append ac_configure_args " '$ac_arg'"
-      ;;
-    esac
-  done
-done
-{ ac_configure_args0=; unset ac_configure_args0;}
-{ ac_configure_args1=; unset ac_configure_args1;}
-
-# When interrupted or exit'd, cleanup temporary files, and complete
-# config.log.  We remove comments because anyway the quotes in there
-# would cause problems or look ugly.
-# WARNING: Use '\'' to represent an apostrophe within the trap.
-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
-trap 'exit_status=$?
-  # Save into config.log some information that might help in debugging.
-  {
-    echo
-
-    $as_echo "## ---------------- ##
-## Cache variables. ##
-## ---------------- ##"
-    echo
-    # The following way of writing the cache mishandles newlines in values,
-(
-  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) { eval $ac_var=; unset $ac_var;} ;;
-      esac ;;
-    esac
-  done
-  (set) 2>&1 |
-    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      sed -n \
-	"s/'\''/'\''\\\\'\'''\''/g;
-	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
-      ;; #(
-    *)
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-)
-    echo
-
-    $as_echo "## ----------------- ##
-## Output variables. ##
-## ----------------- ##"
-    echo
-    for ac_var in $ac_subst_vars
-    do
-      eval ac_val=\$$ac_var
-      case $ac_val in
-      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-      esac
-      $as_echo "$ac_var='\''$ac_val'\''"
-    done | sort
-    echo
-
-    if test -n "$ac_subst_files"; then
-      $as_echo "## ------------------- ##
-## File substitutions. ##
-## ------------------- ##"
-      echo
-      for ac_var in $ac_subst_files
-      do
-	eval ac_val=\$$ac_var
-	case $ac_val in
-	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-	esac
-	$as_echo "$ac_var='\''$ac_val'\''"
-      done | sort
-      echo
-    fi
-
-    if test -s confdefs.h; then
-      $as_echo "## ----------- ##
-## confdefs.h. ##
-## ----------- ##"
-      echo
-      cat confdefs.h
-      echo
-    fi
-    test "$ac_signal" != 0 &&
-      $as_echo "$as_me: caught signal $ac_signal"
-    $as_echo "$as_me: exit $exit_status"
-  } >&5
-  rm -f core *.core core.conftest.* &&
-    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
-    exit $exit_status
-' 0
-for ac_signal in 1 2 13 15; do
-  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
-done
-ac_signal=0
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -f -r conftest* confdefs.h
-
-$as_echo "/* confdefs.h */" > confdefs.h
-
-# Predefined preprocessor variables.
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_URL "$PACKAGE_URL"
-_ACEOF
-
-
-# Let the site file select an alternate cache file if it wants to.
-# Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
-if test -n "$CONFIG_SITE"; then
-  # We do not want a PATH search for config.site.
-  case $CONFIG_SITE in #((
-    -*)  ac_site_file1=./$CONFIG_SITE;;
-    */*) ac_site_file1=$CONFIG_SITE;;
-    *)   ac_site_file1=./$CONFIG_SITE;;
-  esac
-elif test "x$prefix" != xNONE; then
-  ac_site_file1=$prefix/share/config.site
-  ac_site_file2=$prefix/etc/config.site
-else
-  ac_site_file1=$ac_default_prefix/share/config.site
-  ac_site_file2=$ac_default_prefix/etc/config.site
-fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
-do
-  test "x$ac_site_file" = xNONE && continue
-  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
-    sed 's/^/| /' "$ac_site_file" >&5
-    . "$ac_site_file" \
-      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "failed to load site script $ac_site_file
-See \`config.log' for more details" "$LINENO" 5; }
-  fi
-done
-
-if test -r "$cache_file"; then
-  # Some versions of bash will fail to source /dev/null (special files
-  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
-  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
-    case $cache_file in
-      [\\/]* | ?:[\\/]* ) . "$cache_file";;
-      *)                      . "./$cache_file";;
-    esac
-  fi
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
-  >$cache_file
-fi
-
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in $ac_precious_vars; do
-  eval ac_old_set=\$ac_cv_env_${ac_var}_set
-  eval ac_new_set=\$ac_env_${ac_var}_set
-  eval ac_old_val=\$ac_cv_env_${ac_var}_value
-  eval ac_new_val=\$ac_env_${ac_var}_value
-  case $ac_old_set,$ac_new_set in
-    set,)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,set)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,);;
-    *)
-      if test "x$ac_old_val" != "x$ac_new_val"; then
-	# differences in whitespace do not lead to failure.
-	ac_old_val_w=`echo x $ac_old_val`
-	ac_new_val_w=`echo x $ac_new_val`
-	if test "$ac_old_val_w" != "$ac_new_val_w"; then
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-	  ac_cache_corrupted=:
-	else
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
-	  eval $ac_var=\$ac_old_val
-	fi
-	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
-$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
-	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
-$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
-      fi;;
-  esac
-  # Pass precious variables to config.status.
-  if test "$ac_new_set" = set; then
-    case $ac_new_val in
-    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
-    *) ac_arg=$ac_var=$ac_new_val ;;
-    esac
-    case " $ac_configure_args " in
-      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
-      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
-    esac
-  fi
-done
-if $ac_cache_corrupted; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
-fi
-## -------------------- ##
-## Main body of script. ##
-## -------------------- ##
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-#AM_INIT_AUTOMAKE([-Wall -Werror foreign])
-am__api_version='1.14'
-
-ac_aux_dir=
-for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
-  if test -f "$ac_dir/install-sh"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install-sh -c"
-    break
-  elif test -f "$ac_dir/install.sh"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install.sh -c"
-    break
-  elif test -f "$ac_dir/shtool"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/shtool install -c"
-    break
-  fi
-done
-if test -z "$ac_aux_dir"; then
-  as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
-fi
-
-# These three variables are undocumented and unsupported,
-# and are intended to be withdrawn in a future Autoconf release.
-# They can cause serious problems if a builder's source tree is in a directory
-# whose full name contains unusual characters.
-ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
-ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
-ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
-
-
-# Find a good install program.  We prefer a C program (faster),
-# so one script is as good as another.  But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-# Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
-if test -z "$INSTALL"; then
-if ${ac_cv_path_install+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in #((
-  ./ | .// | /[cC]/* | \
-  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
-  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
-  /usr/ucb/* ) ;;
-  *)
-    # OSF1 and SCO ODT 3.0 have their own names for install.
-    # Don't use installbsd from OSF since it installs stuff as root
-    # by default.
-    for ac_prog in ginstall scoinst install; do
-      for ac_exec_ext in '' $ac_executable_extensions; do
-	if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
-	  if test $ac_prog = install &&
-	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-	    # AIX install.  It has an incompatible calling convention.
-	    :
-	  elif test $ac_prog = install &&
-	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-	    # program-specific install script used by HP pwplus--don't use.
-	    :
-	  else
-	    rm -rf conftest.one conftest.two conftest.dir
-	    echo one > conftest.one
-	    echo two > conftest.two
-	    mkdir conftest.dir
-	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
-	      test -s conftest.one && test -s conftest.two &&
-	      test -s conftest.dir/conftest.one &&
-	      test -s conftest.dir/conftest.two
-	    then
-	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-	      break 3
-	    fi
-	  fi
-	fi
-      done
-    done
-    ;;
-esac
-
-  done
-IFS=$as_save_IFS
-
-rm -rf conftest.one conftest.two conftest.dir
-
-fi
-  if test "${ac_cv_path_install+set}" = set; then
-    INSTALL=$ac_cv_path_install
-  else
-    # As a last resort, use the slow shell script.  Don't cache a
-    # value for INSTALL within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the value is a relative name.
-    INSTALL=$ac_install_sh
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
-$as_echo "$INSTALL" >&6; }
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
-$as_echo_n "checking whether build environment is sane... " >&6; }
-# Reject unsafe characters in $srcdir or the absolute working directory
-# name.  Accept space and tab only in the latter.
-am_lf='
-'
-case `pwd` in
-  *[\\\"\#\$\&\'\`$am_lf]*)
-    as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
-esac
-case $srcdir in
-  *[\\\"\#\$\&\'\`$am_lf\ \	]*)
-    as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
-esac
-
-# Do 'set' in a subshell so we don't clobber the current shell's
-# arguments.  Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
-   am_has_slept=no
-   for am_try in 1 2; do
-     echo "timestamp, slept: $am_has_slept" > conftest.file
-     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
-     if test "$*" = "X"; then
-	# -L didn't work.
-	set X `ls -t "$srcdir/configure" conftest.file`
-     fi
-     if test "$*" != "X $srcdir/configure conftest.file" \
-	&& test "$*" != "X conftest.file $srcdir/configure"; then
-
-	# If neither matched, then we have a broken ls.  This can happen
-	# if, for instance, CONFIG_SHELL is bash and it inherits a
-	# broken ls alias from the environment.  This has actually
-	# happened.  Such a system could not be considered "sane".
-	as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
-  alias in your environment" "$LINENO" 5
-     fi
-     if test "$2" = conftest.file || test $am_try -eq 2; then
-       break
-     fi
-     # Just in case.
-     sleep 1
-     am_has_slept=yes
-   done
-   test "$2" = conftest.file
-   )
-then
-   # Ok.
-   :
-else
-   as_fn_error $? "newly created file is older than distributed files!
-Check your system clock" "$LINENO" 5
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-# If we didn't sleep, we still need to ensure time stamps of config.status and
-# generated files are strictly newer.
-am_sleep_pid=
-if grep 'slept: no' conftest.file >/dev/null 2>&1; then
-  ( sleep 1 ) &
-  am_sleep_pid=$!
-fi
-
-rm -f conftest.file
-
-test "$program_prefix" != NONE &&
-  program_transform_name="s&^&$program_prefix&;$program_transform_name"
-# Use a double $ so make ignores it.
-test "$program_suffix" != NONE &&
-  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
-# Double any \ or $.
-# By default was `s,x,x', remove it if useless.
-ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
-program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
-
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
-
-if test x"${MISSING+set}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\	*)
-    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
-  *)
-    MISSING="\${SHELL} $am_aux_dir/missing" ;;
-  esac
-fi
-# Use eval to expand $SHELL
-if eval "$MISSING --is-lightweight"; then
-  am_missing_run="$MISSING "
-else
-  am_missing_run=
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
-$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
-fi
-
-if test x"${install_sh}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\	*)
-    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
-  *)
-    install_sh="\${SHELL} $am_aux_dir/install-sh"
-  esac
-fi
-
-# Installed binaries are usually stripped using 'strip' when the user
-# run "make install-strip".  However 'strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the 'STRIP' environment variable to overrule this program.
-if test "$cross_compiling" != no; then
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$STRIP"; then
-  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
-  ac_ct_STRIP=$STRIP
-  # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_STRIP"; then
-  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_STRIP="strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_STRIP" = x; then
-    STRIP=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    STRIP=$ac_ct_STRIP
-  fi
-else
-  STRIP="$ac_cv_prog_STRIP"
-fi
-
-fi
-INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
-$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
-if test -z "$MKDIR_P"; then
-  if ${ac_cv_path_mkdir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in mkdir gmkdir; do
-	 for ac_exec_ext in '' $ac_executable_extensions; do
-	   as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
-	   case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
-	     'mkdir (GNU coreutils) '* | \
-	     'mkdir (coreutils) '* | \
-	     'mkdir (fileutils) '4.1*)
-	       ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
-	       break 3;;
-	   esac
-	 done
-       done
-  done
-IFS=$as_save_IFS
-
-fi
-
-  test -d ./--version && rmdir ./--version
-  if test "${ac_cv_path_mkdir+set}" = set; then
-    MKDIR_P="$ac_cv_path_mkdir -p"
-  else
-    # As a last resort, use the slow shell script.  Don't cache a
-    # value for MKDIR_P within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the value is a relative name.
-    MKDIR_P="$ac_install_sh -d"
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
-$as_echo "$MKDIR_P" >&6; }
-
-for ac_prog in gawk mawk nawk awk
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AWK+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AWK"; then
-  ac_cv_prog_AWK="$AWK" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AWK="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-AWK=$ac_cv_prog_AWK
-if test -n "$AWK"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
-$as_echo "$AWK" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$AWK" && break
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
-set x ${MAKE-make}
-ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.make <<\_ACEOF
-SHELL = /bin/sh
-all:
-	@echo '@@@%%%=$(MAKE)=@@@%%%'
-_ACEOF
-# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
-case `${MAKE-make} -f conftest.make 2>/dev/null` in
-  *@@@%%%=?*=@@@%%%*)
-    eval ac_cv_prog_make_${ac_make}_set=yes;;
-  *)
-    eval ac_cv_prog_make_${ac_make}_set=no;;
-esac
-rm -f conftest.make
-fi
-if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  SET_MAKE=
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  SET_MAKE="MAKE=${MAKE-make}"
-fi
-
-rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
-  am__leading_dot=.
-else
-  am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-
-# Check whether --enable-silent-rules was given.
-if test "${enable_silent_rules+set}" = set; then :
-  enableval=$enable_silent_rules;
-fi
-
-case $enable_silent_rules in # (((
-  yes) AM_DEFAULT_VERBOSITY=0;;
-   no) AM_DEFAULT_VERBOSITY=1;;
-    *) AM_DEFAULT_VERBOSITY=1;;
-esac
-am_make=${MAKE-make}
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
-$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
-if ${am_cv_make_support_nested_variables+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if $as_echo 'TRUE=$(BAR$(V))
-BAR0=false
-BAR1=true
-V=1
-am__doit:
-	@$(TRUE)
-.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
-  am_cv_make_support_nested_variables=yes
-else
-  am_cv_make_support_nested_variables=no
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
-$as_echo "$am_cv_make_support_nested_variables" >&6; }
-if test $am_cv_make_support_nested_variables = yes; then
-    AM_V='$(V)'
-  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
-else
-  AM_V=$AM_DEFAULT_VERBOSITY
-  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
-fi
-AM_BACKSLASH='\'
-
-if test "`cd $srcdir && pwd`" != "`pwd`"; then
-  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
-  # is not polluted with repeated "-I."
-  am__isrc=' -I$(srcdir)'
-  # test to see if srcdir already configured
-  if test -f $srcdir/config.status; then
-    as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
-  fi
-fi
-
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
-  if (cygpath --version) >/dev/null 2>/dev/null; then
-    CYGPATH_W='cygpath -w'
-  else
-    CYGPATH_W=echo
-  fi
-fi
-
-
-# Define the identity of the package.
- PACKAGE='pktools'
- VERSION='2.6.6'
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE "$PACKAGE"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define VERSION "$VERSION"
-_ACEOF
-
-# Some tools Automake needs.
-
-ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
-
-
-AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
-
-
-AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
-
-
-AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
-
-
-MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
-
-# For better backward compatibility.  To be removed once Automake 1.9.x
-# dies out for good.  For more background, see:
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
-mkdir_p='$(MKDIR_P)'
-
-# We need awk for the "check" target.  The system "awk" is bad on
-# some platforms.
-# Always define AMTAR for backward compatibility.  Yes, it's still used
-# in the wild :-(  We should find a proper way to deprecate it ...
-AMTAR='$${TAR-tar}'
-
-
-# We'll loop over all known methods to create a tar archive until one works.
-_am_tools='gnutar  pax cpio none'
-
-am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
-
-
-
-
-
-
-# POSIX will say in a future version that running "rm -f" with no argument
-# is OK; and we want to be able to make that assumption in our Makefile
-# recipes.  So use an aggressive probe to check that the usage we want is
-# actually supported "in the wild" to an acceptable degree.
-# See automake bug#10828.
-# To make any issue more visible, cause the running configure to be aborted
-# by default if the 'rm' program in use doesn't match our expectations; the
-# user can still override this though.
-if rm -f && rm -fr && rm -rf; then : OK; else
-  cat >&2 <<'END'
-Oops!
-
-Your 'rm' program seems unable to run without file operands specified
-on the command line, even when the '-f' option is present.  This is contrary
-to the behaviour of most rm programs out there, and not conforming with
-the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
-
-Please tell bug-automake at gnu.org about your system, including the value
-of your $PATH and any error possibly output before this message.  This
-can help us improve future automake versions.
-
-END
-  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
-    echo 'Configuration will proceed anyway, since you have set the' >&2
-    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
-    echo >&2
-  else
-    cat >&2 <<'END'
-Aborting the configuration process, to ensure you take notice of the issue.
-
-You can download and install GNU coreutils to get an 'rm' implementation
-that behaves properly: <http://www.gnu.org/software/coreutils/>.
-
-If you want to complete the configuration process using your problematic
-'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
-to "yes", and re-run configure.
-
-END
-    as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
-  fi
-fi
-#AM_INIT_AUTOMAKE([subdir-objects]) #not working due to bug in autoconf, see Debian list: Bug #752993)
-
-
-
-
-# Check whether --with-gdal was given.
-if test "${with_gdal+set}" = set; then :
-  withval=$with_gdal; ac_gdal_config_path=$withval
-else
-  gdal_config_system=check
-fi
-
-
-        if test "x$gdal_config_system" = xcheck; then :
-  # Extract the first word of "gdal-config", so it can be a program name with args.
-set dummy gdal-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_GDAL_CONFIG+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $GDAL_CONFIG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_GDAL_CONFIG="$GDAL_CONFIG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_GDAL_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-GDAL_CONFIG=$ac_cv_path_GDAL_CONFIG
-if test -n "$GDAL_CONFIG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GDAL_CONFIG" >&5
-$as_echo "$GDAL_CONFIG" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-else
-  # Extract the first word of "gdal-config", so it can be a program name with args.
-set dummy gdal-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_GDAL_CONFIG+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $GDAL_CONFIG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_GDAL_CONFIG="$GDAL_CONFIG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in `dirname $ac_gdal_config_path 2> /dev/null`
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_GDAL_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  test -z "$ac_cv_path_GDAL_CONFIG" && ac_cv_path_GDAL_CONFIG="no"
-  ;;
-esac
-fi
-GDAL_CONFIG=$ac_cv_path_GDAL_CONFIG
-if test -n "$GDAL_CONFIG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GDAL_CONFIG" >&5
-$as_echo "$GDAL_CONFIG" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-
-fi
-
-    if test ! -x "$GDAL_CONFIG"; then
-        as_fn_error $? "gdal-config does not exist or it is not an exectuable file" "$LINENO" 5
-            GDAL_CONFIG="no"
-            found_gdal="no"
-    fi
-
-    GDAL_VERSION=""
-    GDAL_CFLAGS=""
-    GDAL_LDFLAGS=""
-    GDAL_DEP_LDFLAGS=""
-    GDAL_OGR_ENABLED=""
-
-
-
-    if test "$GDAL_CONFIG" != "no"; then
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GDAL library" >&5
-$as_echo_n "checking for GDAL library... " >&6; }
-
-        GDAL_VERSION="`$GDAL_CONFIG --version`"
-        GDAL_CFLAGS="`$GDAL_CONFIG --cflags`"
-        GDAL_LDFLAGS="`$GDAL_CONFIG --libs`"
-        GDAL_DEP_LDFLAGS="`$GDAL_CONFIG --dep-libs`"
-
-
-$as_echo "#define HAVE_GDAL 1" >>confdefs.h
-
-
-        found_gdal="yes"
-    else
-        found_gdal="no"
-    fi
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $found_gdal" >&5
-$as_echo "$found_gdal" >&6; }
-
-    if test "$found_gdal" = "yes"; then
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OGR support in GDAL library" >&5
-$as_echo_n "checking for OGR support in GDAL library... " >&6; }
-
-        GDAL_OGR_ENABLED="`$GDAL_CONFIG --ogr-enabled`"
-
-$as_echo "#define HAVE_GDAL_OGR 1" >>confdefs.h
-
-
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GDAL_OGR_ENABLED" >&5
-$as_echo "$GDAL_OGR_ENABLED" >&6; }
-    fi
-
-
-    gdal_version_req=
-    if test "$found_gdal" = "yes" -a -n "$gdal_version_req"; then
-
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking if GDAL version is >= $gdal_version_req" >&5
-$as_echo_n "checking if GDAL version is >= $gdal_version_req... " >&6; }
-
-                        gdal_version_req_major=`expr $gdal_version_req : '\([0-9]*\)'`
-        gdal_version_req_minor=`expr $gdal_version_req : '[0-9]*\.\([0-9]*\)'`
-        gdal_version_req_micro=`expr $gdal_version_req : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
-        if test "x$gdal_version_req_micro" = "x"; then
-            gdal_version_req_micro="0"
-        fi
-
-        gdal_version_req_number=`expr $gdal_version_req_major \* 1000000 \
-                                   \+ $gdal_version_req_minor \* 1000 \
-                                   \+ $gdal_version_req_micro`
-
-                        gdal_version_major=`expr $GDAL_VERSION : '\([0-9]*\)'`
-        gdal_version_minor=`expr $GDAL_VERSION : '[0-9]*\.\([0-9]*\)'`
-        gdal_version_micro=`expr $GDAL_VERSION : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
-        if test "x$gdal_version_micro" = "x"; then
-            gdal_version_micro="0"
-        fi
-
-        gdal_version_number=`expr $gdal_version_major \* 1000000 \
-                                   \+ $gdal_version_minor \* 1000 \
-                                   \+ $gdal_version_micro`
-
-        gdal_version_check=`expr $gdal_version_number \>\= $gdal_version_req_number`
-        if test "$gdal_version_check" = "1"; then
-            { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-        else
-            { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-as_fn_error $? "GDAL $GDAL_VERSION found, but required version is $gdal_version_req" "$LINENO" 5
-        fi
-    fi
-
-
-
-
-
-
-
-GDAL_FOUND="no"
-if test ! -z "$GDAL_CFLAGS" -a ! -z "$GDAL_LDFLAGS"; then
-GDAL_FOUND="yes"
-fi
-
-# check for C++ compiler and the library compiler
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-if test -z "$CXX"; then
-  if test -n "$CCC"; then
-    CXX=$CCC
-  else
-    if test -n "$ac_tool_prefix"; then
-  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CXX"; then
-  ac_cv_prog_CXX="$CXX" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CXX=$ac_cv_prog_CXX
-if test -n "$CXX"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
-$as_echo "$CXX" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CXX" && break
-  done
-fi
-if test -z "$CXX"; then
-  ac_ct_CXX=$CXX
-  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CXX"; then
-  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CXX="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
-if test -n "$ac_ct_CXX"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
-$as_echo "$ac_ct_CXX" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CXX" && break
-done
-
-  if test "x$ac_ct_CXX" = x; then
-    CXX="g++"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CXX=$ac_ct_CXX
-  fi
-fi
-
-  fi
-fi
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
-# Try to create an executable without -o first, disregard a.out.
-# It will help us diagnose broken compilers, and finding out an intuition
-# of exeext.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5
-$as_echo_n "checking whether the C++ compiler works... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-
-# The possible output files:
-ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
-
-ac_rmfiles=
-for ac_file in $ac_files
-do
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
-  esac
-done
-rm -f $ac_rmfiles
-
-if { { ac_try="$ac_link_default"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link_default") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
-# in a Makefile.  We should not override ac_cv_exeext if it was cached,
-# so that the user can short-circuit this test for compilers unknown to
-# Autoconf.
-for ac_file in $ac_files ''
-do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
-	;;
-    [ab].out )
-	# We found the default executable, but exeext='' is most
-	# certainly right.
-	break;;
-    *.* )
-	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
-	then :; else
-	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-	fi
-	# We set ac_cv_exeext here because the later test for it is not
-	# safe: cross compilers may not add the suffix if given an `-o'
-	# argument, so we may need to know it at that point already.
-	# Even if this section looks crufty: it has the advantage of
-	# actually working.
-	break;;
-    * )
-	break;;
-  esac
-done
-test "$ac_cv_exeext" = no && ac_cv_exeext=
-
-else
-  ac_file=''
-fi
-if test -z "$ac_file"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "C++ compiler cannot create executables
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5
-$as_echo_n "checking for C++ compiler default output file name... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
-ac_exeext=$ac_cv_exeext
-
-rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
-if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
-for ac_file in conftest.exe conftest conftest.*; do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-	  break;;
-    * ) break;;
-  esac
-done
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest conftest$ac_cv_exeext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
-$as_echo "$ac_cv_exeext" >&6; }
-
-rm -f conftest.$ac_ext
-EXEEXT=$ac_cv_exeext
-ac_exeext=$EXEEXT
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdio.h>
-int
-main ()
-{
-FILE *f = fopen ("conftest.out", "w");
- return ferror (f) || fclose (f) != 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files="$ac_clean_files conftest.out"
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
-if test "$cross_compiling" != yes; then
-  { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-  if { ac_try='./conftest$ac_cv_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then
-    cross_compiling=no
-  else
-    if test "$cross_compiling" = maybe; then
-	cross_compiling=yes
-    else
-	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run C++ compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details" "$LINENO" 5; }
-    fi
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
-
-rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if ${ac_cv_objext+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.o conftest.obj
-if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  for ac_file in conftest.o conftest.obj conftest.*; do
-  test -f "$ac_file" || continue;
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
-    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
-       break;;
-  esac
-done
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
-OBJEXT=$ac_cv_objext
-ac_objext=$OBJEXT
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
-$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
-if ${ac_cv_cxx_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
-$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GXX=yes
-else
-  GXX=
-fi
-ac_test_CXXFLAGS=${CXXFLAGS+set}
-ac_save_CXXFLAGS=$CXXFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
-$as_echo_n "checking whether $CXX accepts -g... " >&6; }
-if ${ac_cv_prog_cxx_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
-   ac_cxx_werror_flag=yes
-   ac_cv_prog_cxx_g=no
-   CXXFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_cv_prog_cxx_g=yes
-else
-  CXXFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-
-else
-  ac_cxx_werror_flag=$ac_save_cxx_werror_flag
-	 CXXFLAGS="-g"
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_cv_prog_cxx_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
-$as_echo "$ac_cv_prog_cxx_g" >&6; }
-if test "$ac_test_CXXFLAGS" = set; then
-  CXXFLAGS=$ac_save_CXXFLAGS
-elif test $ac_cv_prog_cxx_g = yes; then
-  if test "$GXX" = yes; then
-    CXXFLAGS="-g -O2"
-  else
-    CXXFLAGS="-g"
-  fi
-else
-  if test "$GXX" = yes; then
-    CXXFLAGS="-O2"
-  else
-    CXXFLAGS=
-  fi
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-DEPDIR="${am__leading_dot}deps"
-
-ac_config_commands="$ac_config_commands depfiles"
-
-
-am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
-	@echo this is the am__doit target
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
-$as_echo_n "checking for style of include used by $am_make... " >&6; }
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from 'make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
-  am__include=include
-  am__quote=
-  _am_result=GNU
-  ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
-   echo '.include "confinc"' > confmf
-   case `$am_make -s -f confmf 2> /dev/null` in #(
-   *the\ am__doit\ target*)
-     am__include=.include
-     am__quote="\""
-     _am_result=BSD
-     ;;
-   esac
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
-$as_echo "$_am_result" >&6; }
-rm -f confinc confmf
-
-# Check whether --enable-dependency-tracking was given.
-if test "${enable_dependency_tracking+set}" = set; then :
-  enableval=$enable_dependency_tracking;
-fi
-
-if test "x$enable_dependency_tracking" != xno; then
-  am_depcomp="$ac_aux_dir/depcomp"
-  AMDEPBACKSLASH='\'
-  am__nodep='_no'
-fi
- if test "x$enable_dependency_tracking" != xno; then
-  AMDEP_TRUE=
-  AMDEP_FALSE='#'
-else
-  AMDEP_TRUE='#'
-  AMDEP_FALSE=
-fi
-
-
-
-depcc="$CXX"  am_compiler_list=
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if ${am_cv_CXX_dependencies_compiler_type+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named 'D' -- because '-MD' means "put the output
-  # in D".
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
-
-  am_cv_CXX_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
-  fi
-  am__universal=false
-  case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac
-
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
-      # Solaris 10 /bin/sh.
-      echo '/* dummy */' > sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
-    # We check with '-c' and '-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle '-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs.
-    am__obj=sub/conftest.${OBJEXT-o}
-    am__minus_obj="-o $am__obj"
-    case $depmode in
-    gcc)
-      # This depmode causes a compiler race in universal mode.
-      test "$am__universal" = false || continue
-      ;;
-    nosideeffect)
-      # After this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested.
-      if test "x$enable_dependency_tracking" = xyes; then
-	continue
-      else
-	break
-      fi
-      ;;
-    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-      # This compiler won't grok '-c -o', but also, the minuso test has
-      # not run yet.  These depmodes are late enough in the game, and
-      # so weak that their functioning should not be impacted.
-      am__obj=conftest.${OBJEXT-o}
-      am__minus_obj=
-      ;;
-    none) break ;;
-    esac
-    if depmode=$depmode \
-       source=sub/conftest.c object=$am__obj \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_CXX_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_CXX_dependencies_compiler_type=none
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; }
-CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
-
- if
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
-  am__fastdepCXX_TRUE=
-  am__fastdepCXX_FALSE='#'
-else
-  am__fastdepCXX_TRUE='#'
-  am__fastdepCXX_FALSE=
-fi
-
-
-ac_ext=${ac_fc_srcext-f}
-ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
-ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_fc_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  for ac_prog in gfortran g95 xlf95 f95 fort ifort ifc efc pgfortran pgf95 lf95 ftn nagfor xlf90 f90 pgf90 pghpf epcf90 g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$FC"; then
-  ac_cv_prog_FC="$FC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_FC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-FC=$ac_cv_prog_FC
-if test -n "$FC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FC" >&5
-$as_echo "$FC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$FC" && break
-  done
-fi
-if test -z "$FC"; then
-  ac_ct_FC=$FC
-  for ac_prog in gfortran g95 xlf95 f95 fort ifort ifc efc pgfortran pgf95 lf95 ftn nagfor xlf90 f90 pgf90 pghpf epcf90 g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_FC"; then
-  ac_cv_prog_ac_ct_FC="$ac_ct_FC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_FC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_FC=$ac_cv_prog_ac_ct_FC
-if test -n "$ac_ct_FC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_FC" >&5
-$as_echo "$ac_ct_FC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_FC" && break
-done
-
-  if test "x$ac_ct_FC" = x; then
-    FC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    FC=$ac_ct_FC
-  fi
-fi
-
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-rm -f a.out
-
-# If we don't use `.F' as extension, the preprocessor is not run on the
-# input file.  (Note that this only needs to work for GNU compilers.)
-ac_save_ext=$ac_ext
-ac_ext=F
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU Fortran compiler" >&5
-$as_echo_n "checking whether we are using the GNU Fortran compiler... " >&6; }
-if ${ac_cv_fc_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat > conftest.$ac_ext <<_ACEOF
-      program main
-#ifndef __GNUC__
-       choke me
-#endif
-
-      end
-_ACEOF
-if ac_fn_fc_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_fc_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_fc_compiler_gnu" >&5
-$as_echo "$ac_cv_fc_compiler_gnu" >&6; }
-ac_ext=$ac_save_ext
-ac_test_FCFLAGS=${FCFLAGS+set}
-ac_save_FCFLAGS=$FCFLAGS
-FCFLAGS=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $FC accepts -g" >&5
-$as_echo_n "checking whether $FC accepts -g... " >&6; }
-if ${ac_cv_prog_fc_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  FCFLAGS=-g
-cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-if ac_fn_fc_try_compile "$LINENO"; then :
-  ac_cv_prog_fc_g=yes
-else
-  ac_cv_prog_fc_g=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_fc_g" >&5
-$as_echo "$ac_cv_prog_fc_g" >&6; }
-if test "$ac_test_FCFLAGS" = set; then
-  FCFLAGS=$ac_save_FCFLAGS
-elif test $ac_cv_prog_fc_g = yes; then
-  if test "x$ac_cv_fc_compiler_gnu" = xyes; then
-    FCFLAGS="-g -O2"
-  else
-    FCFLAGS="-g"
-  fi
-else
-  if test "x$ac_cv_fc_compiler_gnu" = xyes; then
-    FCFLAGS="-O2"
-  else
-    FCFLAGS=
-  fi
-fi
-
-if test $ac_compiler_gnu = yes; then
-  GFC=yes
-else
-  GFC=
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-case `pwd` in
-  *\ * | *\	*)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
-$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
-esac
-
-
-
-macro_version='2.4.2'
-macro_revision='1.3337'
-
-
-
-
-
-
-
-
-
-
-
-
-
-ltmain="$ac_aux_dir/ltmain.sh"
-
-# Make sure we can run config.sub.
-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
-  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
-$as_echo_n "checking build system type... " >&6; }
-if ${ac_cv_build+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_build_alias=$build_alias
-test "x$ac_build_alias" = x &&
-  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
-test "x$ac_build_alias" = x &&
-  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
-  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
-$as_echo "$ac_cv_build" >&6; }
-case $ac_cv_build in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
-esac
-build=$ac_cv_build
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_build
-shift
-build_cpu=$1
-build_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-build_os=$*
-IFS=$ac_save_IFS
-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
-$as_echo_n "checking host system type... " >&6; }
-if ${ac_cv_host+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$host_alias" = x; then
-  ac_cv_host=$ac_cv_build
-else
-  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
-    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
-$as_echo "$ac_cv_host" >&6; }
-case $ac_cv_host in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
-esac
-host=$ac_cv_host
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_host
-shift
-host_cpu=$1
-host_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-host_os=$*
-IFS=$ac_save_IFS
-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
-
-
-# Backslashify metacharacters that are still active within
-# double-quoted strings.
-sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\(["`\\]\)/\\\1/g'
-
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-# Sed substitution to delay expansion of an escaped single quote.
-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
-
-# Sed substitution to avoid accidental globbing in evaled expressions
-no_glob_subst='s/\*/\\\*/g'
-
-ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
-$as_echo_n "checking how to print strings... " >&6; }
-# Test print first, because it will be a builtin if present.
-if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
-   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
-  ECHO='print -r --'
-elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-  ECHO='printf %s\n'
-else
-  # Use this function as a fallback that always works.
-  func_fallback_echo ()
-  {
-    eval 'cat <<_LTECHO_EOF
-$1
-_LTECHO_EOF'
-  }
-  ECHO='func_fallback_echo'
-fi
-
-# func_echo_all arg...
-# Invoke $ECHO with all args, space-separated.
-func_echo_all ()
-{
-    $ECHO ""
-}
-
-case "$ECHO" in
-  printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
-$as_echo "printf" >&6; } ;;
-  print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
-$as_echo "print -r" >&6; } ;;
-  *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
-$as_echo "cat" >&6; } ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_CC"; then
-  ac_ct_CC=$CC
-  # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-else
-  CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
-          if test -n "$ac_tool_prefix"; then
-    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="${ac_tool_prefix}cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  fi
-fi
-if test -z "$CC"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-       ac_prog_rejected=yes
-       continue
-     fi
-    ac_cv_prog_CC="cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC
-  shift
-  if test $# != 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC to just the basename; use the full file name.
-    shift
-    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
-  fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$CC"; then
-  if test -n "$ac_tool_prefix"; then
-  for ac_prog in cl.exe
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CC" && break
-  done
-fi
-if test -z "$CC"; then
-  ac_ct_CC=$CC
-  for ac_prog in cl.exe
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CC" && break
-done
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-fi
-
-fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GCC=yes
-else
-  GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_c_werror_flag=$ac_c_werror_flag
-   ac_c_werror_flag=yes
-   ac_cv_prog_cc_g=no
-   CFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-else
-  CFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
-  ac_c_werror_flag=$ac_save_c_werror_flag
-	 CFLAGS="-g"
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-g"
-  fi
-else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
-  else
-    CFLAGS=
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
-{
-  return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
-  char *s;
-  va_list v;
-  va_start (v,p);
-  s = g (p, va_arg (v,int));
-  va_end (v);
-  return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-   inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
-  ;
-  return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC="$ac_save_CC $ac_arg"
-  if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_c89=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext
-  test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
-  x)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
-
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
-$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
-if ${am_cv_prog_cc_c_o+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-  # Make sure it works both with $CC and with simple cc.
-  # Following AC_PROG_CC_C_O, we do the test twice because some
-  # compilers refuse to overwrite an existing .o file with -o,
-  # though they will create one.
-  am_cv_prog_cc_c_o=yes
-  for am_i in 1 2; do
-    if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
-   ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); } \
-         && test -f conftest2.$ac_objext; then
-      : OK
-    else
-      am_cv_prog_cc_c_o=no
-      break
-    fi
-  done
-  rm -f core conftest*
-  unset am_i
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
-$as_echo "$am_cv_prog_cc_c_o" >&6; }
-if test "$am_cv_prog_cc_c_o" != yes; then
-   # Losing compiler, so override with the script.
-   # FIXME: It is wrong to rewrite CC.
-   # But if we don't then we get into trouble of one sort or another.
-   # A longer-term fix would be to have automake use am__CC in this case,
-   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
-   CC="$am_aux_dir/compile $CC"
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-depcc="$CC"   am_compiler_list=
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if ${am_cv_CC_dependencies_compiler_type+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named 'D' -- because '-MD' means "put the output
-  # in D".
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
-
-  am_cv_CC_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
-  fi
-  am__universal=false
-  case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac
-
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
-      # Solaris 10 /bin/sh.
-      echo '/* dummy */' > sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
-    # We check with '-c' and '-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle '-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs.
-    am__obj=sub/conftest.${OBJEXT-o}
-    am__minus_obj="-o $am__obj"
-    case $depmode in
-    gcc)
-      # This depmode causes a compiler race in universal mode.
-      test "$am__universal" = false || continue
-      ;;
-    nosideeffect)
-      # After this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested.
-      if test "x$enable_dependency_tracking" = xyes; then
-	continue
-      else
-	break
-      fi
-      ;;
-    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-      # This compiler won't grok '-c -o', but also, the minuso test has
-      # not run yet.  These depmodes are late enough in the game, and
-      # so weak that their functioning should not be impacted.
-      am__obj=conftest.${OBJEXT-o}
-      am__minus_obj=
-      ;;
-    none) break ;;
-    esac
-    if depmode=$depmode \
-       source=sub/conftest.c object=$am__obj \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_CC_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_CC_dependencies_compiler_type=none
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
-CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
-
- if
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
-  am__fastdepCC_TRUE=
-  am__fastdepCC_FALSE='#'
-else
-  am__fastdepCC_TRUE='#'
-  am__fastdepCC_FALSE=
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
-$as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if ${ac_cv_path_SED+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
-     for ac_i in 1 2 3 4 5 6 7; do
-       ac_script="$ac_script$as_nl$ac_script"
-     done
-     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
-     { ac_script=; unset ac_script;}
-     if test -z "$SED"; then
-  ac_path_SED_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in sed gsed; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_SED" || continue
-# Check for GNU ac_path_SED and select it if it is found.
-  # Check for GNU $ac_path_SED
-case `"$ac_path_SED" --version 2>&1` in
-*GNU*)
-  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo '' >> "conftest.nl"
-    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_SED_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_SED="$ac_path_SED"
-      ac_path_SED_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_SED_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_SED"; then
-    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
-  fi
-else
-  ac_cv_path_SED=$SED
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
-$as_echo "$ac_cv_path_SED" >&6; }
- SED="$ac_cv_path_SED"
-  rm -f conftest.sed
-
-test -z "$SED" && SED=sed
-Xsed="$SED -e 1s/^X//"
-
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if ${ac_cv_path_GREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$GREP"; then
-  ac_path_GREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in grep ggrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
-  # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_GREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_GREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_GREP"; then
-    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_GREP=$GREP
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if ${ac_cv_path_EGREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     if test -z "$EGREP"; then
-  ac_path_EGREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in egrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
-  # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'EGREP' >> "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_EGREP="$ac_path_EGREP"
-      ac_path_EGREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_EGREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_EGREP"; then
-    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_EGREP=$EGREP
-fi
-
-   fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
-$as_echo_n "checking for fgrep... " >&6; }
-if ${ac_cv_path_FGREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
-   then ac_cv_path_FGREP="$GREP -F"
-   else
-     if test -z "$FGREP"; then
-  ac_path_FGREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in fgrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_FGREP" || continue
-# Check for GNU ac_path_FGREP and select it if it is found.
-  # Check for GNU $ac_path_FGREP
-case `"$ac_path_FGREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'FGREP' >> "conftest.nl"
-    "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_FGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_FGREP="$ac_path_FGREP"
-      ac_path_FGREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_FGREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_FGREP"; then
-    as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_FGREP=$FGREP
-fi
-
-   fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
-$as_echo "$ac_cv_path_FGREP" >&6; }
- FGREP="$ac_cv_path_FGREP"
-
-
-test -z "$GREP" && GREP=grep
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then :
-  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
-else
-  with_gnu_ld=no
-fi
-
-ac_prog=ld
-if test "$GCC" = yes; then
-  # Check if gcc -print-prog-name=ld gives a path.
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
-$as_echo_n "checking for ld used by $CC... " >&6; }
-  case $host in
-  *-*-mingw*)
-    # gcc leaves a trailing carriage return which upsets mingw
-    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-  *)
-    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-  esac
-  case $ac_prog in
-    # Accept absolute paths.
-    [\\/]* | ?:[\\/]*)
-      re_direlt='/[^/][^/]*/\.\./'
-      # Canonicalize the pathname of ld
-      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
-      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
-	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
-      done
-      test -z "$LD" && LD="$ac_prog"
-      ;;
-  "")
-    # If it fails, then pretend we aren't using GCC.
-    ac_prog=ld
-    ;;
-  *)
-    # If it is relative, then search for the first ld in PATH.
-    with_gnu_ld=unknown
-    ;;
-  esac
-elif test "$with_gnu_ld" = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
-$as_echo_n "checking for GNU ld... " >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
-$as_echo_n "checking for non-GNU ld... " >&6; }
-fi
-if ${lt_cv_path_LD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$LD"; then
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  for ac_dir in $PATH; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD="$ac_dir/$ac_prog"
-      # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some variants of GNU ld only accept -v.
-      # Break only if it was the GNU/non-GNU ld that we prefer.
-      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-      *GNU* | *'with BFD'*)
-	test "$with_gnu_ld" != no && break
-	;;
-      *)
-	test "$with_gnu_ld" != yes && break
-	;;
-      esac
-    fi
-  done
-  IFS="$lt_save_ifs"
-else
-  lt_cv_path_LD="$LD" # Let the user override the test with a path.
-fi
-fi
-
-LD="$lt_cv_path_LD"
-if test -n "$LD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
-$as_echo "$LD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
-$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
-if ${lt_cv_prog_gnu_ld+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  # I'd rather use --version here, but apparently some GNU lds only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
-  lt_cv_prog_gnu_ld=yes
-  ;;
-*)
-  lt_cv_prog_gnu_ld=no
-  ;;
-esac
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
-$as_echo "$lt_cv_prog_gnu_ld" >&6; }
-with_gnu_ld=$lt_cv_prog_gnu_ld
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
-$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
-if ${lt_cv_path_NM+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$NM"; then
-  # Let the user override the test.
-  lt_cv_path_NM="$NM"
-else
-  lt_nm_to_check="${ac_tool_prefix}nm"
-  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
-    lt_nm_to_check="$lt_nm_to_check nm"
-  fi
-  for lt_tmp_nm in $lt_nm_to_check; do
-    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
-      IFS="$lt_save_ifs"
-      test -z "$ac_dir" && ac_dir=.
-      tmp_nm="$ac_dir/$lt_tmp_nm"
-      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
-	# Check to see if the nm accepts a BSD-compat flag.
-	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
-	#   nm: unknown option "B" ignored
-	# Tru64's nm complains that /dev/null is an invalid object file
-	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
-	*/dev/null* | *'Invalid file or object type'*)
-	  lt_cv_path_NM="$tmp_nm -B"
-	  break
-	  ;;
-	*)
-	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
-	  */dev/null*)
-	    lt_cv_path_NM="$tmp_nm -p"
-	    break
-	    ;;
-	  *)
-	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
-	    continue # so that we can try to find one that supports BSD flags
-	    ;;
-	  esac
-	  ;;
-	esac
-      fi
-    done
-    IFS="$lt_save_ifs"
-  done
-  : ${lt_cv_path_NM=no}
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
-$as_echo "$lt_cv_path_NM" >&6; }
-if test "$lt_cv_path_NM" != "no"; then
-  NM="$lt_cv_path_NM"
-else
-  # Didn't find any BSD compatible name lister, look for dumpbin.
-  if test -n "$DUMPBIN"; then :
-    # Let the user override the test.
-  else
-    if test -n "$ac_tool_prefix"; then
-  for ac_prog in dumpbin "link -dump"
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DUMPBIN+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DUMPBIN"; then
-  ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-DUMPBIN=$ac_cv_prog_DUMPBIN
-if test -n "$DUMPBIN"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
-$as_echo "$DUMPBIN" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$DUMPBIN" && break
-  done
-fi
-if test -z "$DUMPBIN"; then
-  ac_ct_DUMPBIN=$DUMPBIN
-  for ac_prog in dumpbin "link -dump"
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DUMPBIN"; then
-  ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
-if test -n "$ac_ct_DUMPBIN"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
-$as_echo "$ac_ct_DUMPBIN" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_DUMPBIN" && break
-done
-
-  if test "x$ac_ct_DUMPBIN" = x; then
-    DUMPBIN=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DUMPBIN=$ac_ct_DUMPBIN
-  fi
-fi
-
-    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
-    *COFF*)
-      DUMPBIN="$DUMPBIN -symbols"
-      ;;
-    *)
-      DUMPBIN=:
-      ;;
-    esac
-  fi
-
-  if test "$DUMPBIN" != ":"; then
-    NM="$DUMPBIN"
-  fi
-fi
-test -z "$NM" && NM=nm
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
-$as_echo_n "checking the name lister ($NM) interface... " >&6; }
-if ${lt_cv_nm_interface+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_nm_interface="BSD nm"
-  echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
-  (eval "$ac_compile" 2>conftest.err)
-  cat conftest.err >&5
-  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
-  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
-  cat conftest.err >&5
-  (eval echo "\"\$as_me:$LINENO: output\"" >&5)
-  cat conftest.out >&5
-  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
-    lt_cv_nm_interface="MS dumpbin"
-  fi
-  rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
-$as_echo "$lt_cv_nm_interface" >&6; }
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
-$as_echo_n "checking whether ln -s works... " >&6; }
-LN_S=$as_ln_s
-if test "$LN_S" = "ln -s"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
-$as_echo "no, using $LN_S" >&6; }
-fi
-
-# find the maximum length of command line arguments
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
-$as_echo_n "checking the maximum length of command line arguments... " >&6; }
-if ${lt_cv_sys_max_cmd_len+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-    i=0
-  teststring="ABCD"
-
-  case $build_os in
-  msdosdjgpp*)
-    # On DJGPP, this test can blow up pretty badly due to problems in libc
-    # (any single argument exceeding 2000 bytes causes a buffer overrun
-    # during glob expansion).  Even if it were fixed, the result of this
-    # check would be larger than it should be.
-    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
-    ;;
-
-  gnu*)
-    # Under GNU Hurd, this test is not required because there is
-    # no limit to the length of command line arguments.
-    # Libtool will interpret -1 as no limit whatsoever
-    lt_cv_sys_max_cmd_len=-1;
-    ;;
-
-  cygwin* | mingw* | cegcc*)
-    # On Win9x/ME, this test blows up -- it succeeds, but takes
-    # about 5 minutes as the teststring grows exponentially.
-    # Worse, since 9x/ME are not pre-emptively multitasking,
-    # you end up with a "frozen" computer, even though with patience
-    # the test eventually succeeds (with a max line length of 256k).
-    # Instead, let's just punt: use the minimum linelength reported by
-    # all of the supported platforms: 8192 (on NT/2K/XP).
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  mint*)
-    # On MiNT this can take a long time and run out of memory.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  amigaos*)
-    # On AmigaOS with pdksh, this test takes hours, literally.
-    # So we just punt and use a minimum line length of 8192.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
-    # This has been around since 386BSD, at least.  Likely further.
-    if test -x /sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
-    elif test -x /usr/sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
-    else
-      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
-    fi
-    # And add a safety zone
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    ;;
-
-  interix*)
-    # We know the value 262144 and hardcode it with a safety zone (like BSD)
-    lt_cv_sys_max_cmd_len=196608
-    ;;
-
-  os2*)
-    # The test takes a long time on OS/2.
-    lt_cv_sys_max_cmd_len=8192
-    ;;
-
-  osf*)
-    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
-    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
-    # nice to cause kernel panics so lets avoid the loop below.
-    # First set a reasonable default.
-    lt_cv_sys_max_cmd_len=16384
-    #
-    if test -x /sbin/sysconfig; then
-      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
-        *1*) lt_cv_sys_max_cmd_len=-1 ;;
-      esac
-    fi
-    ;;
-  sco3.2v5*)
-    lt_cv_sys_max_cmd_len=102400
-    ;;
-  sysv5* | sco5v6* | sysv4.2uw2*)
-    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
-    if test -n "$kargmax"; then
-      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[	 ]//'`
-    else
-      lt_cv_sys_max_cmd_len=32768
-    fi
-    ;;
-  *)
-    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len" && \
-	test undefined != "$lt_cv_sys_max_cmd_len"; then
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    else
-      # Make teststring a little bigger before we do anything with it.
-      # a 1K string should be a reasonable start.
-      for i in 1 2 3 4 5 6 7 8 ; do
-        teststring=$teststring$teststring
-      done
-      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
-      # If test is not a shell built-in, we'll probably end up computing a
-      # maximum length that is only half of the actual maximum length, but
-      # we can't tell.
-      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
-	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
-	      test $i != 17 # 1/2 MB should be enough
-      do
-        i=`expr $i + 1`
-        teststring=$teststring$teststring
-      done
-      # Only check the string length outside the loop.
-      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
-      teststring=
-      # Add a significant safety factor because C++ compilers can tack on
-      # massive amounts of additional arguments before passing them to the
-      # linker.  It appears as though 1/2 is a usable value.
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
-    fi
-    ;;
-  esac
-
-fi
-
-if test -n $lt_cv_sys_max_cmd_len ; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
-$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
-$as_echo "none" >&6; }
-fi
-max_cmd_len=$lt_cv_sys_max_cmd_len
-
-
-
-
-
-
-: ${CP="cp -f"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
-$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
-# Try some XSI features
-xsi_shell=no
-( _lt_dummy="a/b/c"
-  test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
-      = c,a/b,b/c, \
-    && eval 'test $(( 1 + 1 )) -eq 2 \
-    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
-  && xsi_shell=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
-$as_echo "$xsi_shell" >&6; }
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
-$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
-lt_shell_append=no
-( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
-    >/dev/null 2>&1 \
-  && lt_shell_append=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
-$as_echo "$lt_shell_append" >&6; }
-
-
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  lt_unset=unset
-else
-  lt_unset=false
-fi
-
-
-
-
-
-# test EBCDIC or ASCII
-case `echo X|tr X '\101'` in
- A) # ASCII based system
-    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
-  lt_SP2NL='tr \040 \012'
-  lt_NL2SP='tr \015\012 \040\040'
-  ;;
- *) # EBCDIC based system
-  lt_SP2NL='tr \100 \n'
-  lt_NL2SP='tr \r\n \100\100'
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
-$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
-if ${lt_cv_to_host_file_cmd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $host in
-  *-*-mingw* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
-        ;;
-      *-*-cygwin* )
-        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
-        ;;
-      * ) # otherwise, assume *nix
-        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
-        ;;
-    esac
-    ;;
-  *-*-cygwin* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
-        ;;
-      *-*-cygwin* )
-        lt_cv_to_host_file_cmd=func_convert_file_noop
-        ;;
-      * ) # otherwise, assume *nix
-        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
-        ;;
-    esac
-    ;;
-  * ) # unhandled hosts (and "normal" native builds)
-    lt_cv_to_host_file_cmd=func_convert_file_noop
-    ;;
-esac
-
-fi
-
-to_host_file_cmd=$lt_cv_to_host_file_cmd
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
-$as_echo "$lt_cv_to_host_file_cmd" >&6; }
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
-$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
-if ${lt_cv_to_tool_file_cmd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  #assume ordinary cross tools, or native build.
-lt_cv_to_tool_file_cmd=func_convert_file_noop
-case $host in
-  *-*-mingw* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
-        ;;
-    esac
-    ;;
-esac
-
-fi
-
-to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
-$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
-$as_echo_n "checking for $LD option to reload object files... " >&6; }
-if ${lt_cv_ld_reload_flag+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ld_reload_flag='-r'
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
-$as_echo "$lt_cv_ld_reload_flag" >&6; }
-reload_flag=$lt_cv_ld_reload_flag
-case $reload_flag in
-"" | " "*) ;;
-*) reload_flag=" $reload_flag" ;;
-esac
-reload_cmds='$LD$reload_flag -o $output$reload_objs'
-case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    if test "$GCC" != yes; then
-      reload_cmds=false
-    fi
-    ;;
-  darwin*)
-    if test "$GCC" = yes; then
-      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-    else
-      reload_cmds='$LD$reload_flag -o $output$reload_objs'
-    fi
-    ;;
-esac
-
-
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
-set dummy ${ac_tool_prefix}objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OBJDUMP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OBJDUMP"; then
-  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OBJDUMP=$ac_cv_prog_OBJDUMP
-if test -n "$OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
-$as_echo "$OBJDUMP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OBJDUMP"; then
-  ac_ct_OBJDUMP=$OBJDUMP
-  # Extract the first word of "objdump", so it can be a program name with args.
-set dummy objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OBJDUMP"; then
-  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_OBJDUMP="objdump"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
-if test -n "$ac_ct_OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
-$as_echo "$ac_ct_OBJDUMP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OBJDUMP" = x; then
-    OBJDUMP="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OBJDUMP=$ac_ct_OBJDUMP
-  fi
-else
-  OBJDUMP="$ac_cv_prog_OBJDUMP"
-fi
-
-test -z "$OBJDUMP" && OBJDUMP=objdump
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
-$as_echo_n "checking how to recognize dependent libraries... " >&6; }
-if ${lt_cv_deplibs_check_method+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_file_magic_cmd='$MAGIC_CMD'
-lt_cv_file_magic_test_file=
-lt_cv_deplibs_check_method='unknown'
-# Need to set the preceding variable on all platforms that support
-# interlibrary dependencies.
-# 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
-# 'pass_all' -- all dependencies passed with no checks.
-# 'test_compile' -- check by making test program.
-# 'file_magic [[regex]]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given extended regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
-
-case $host_os in
-aix[4-9]*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-beos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-bsdi[45]*)
-  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
-  lt_cv_file_magic_cmd='/usr/bin/file -L'
-  lt_cv_file_magic_test_file=/shlib/libc.so
-  ;;
-
-cygwin*)
-  # func_win32_libid is a shell function defined in ltmain.sh
-  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-  lt_cv_file_magic_cmd='func_win32_libid'
-  ;;
-
-mingw* | pw32*)
-  # Base MSYS/MinGW do not provide the 'file' command needed by
-  # func_win32_libid shell function, so use a weaker test based on 'objdump',
-  # unless we find 'file', for example because we are cross-compiling.
-  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
-  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
-    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-    lt_cv_file_magic_cmd='func_win32_libid'
-  else
-    # Keep this pattern in sync with the one in func_win32_libid.
-    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
-    lt_cv_file_magic_cmd='$OBJDUMP -f'
-  fi
-  ;;
-
-cegcc*)
-  # use the weaker test based on 'objdump'. See mingw*.
-  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
-  lt_cv_file_magic_cmd='$OBJDUMP -f'
-  ;;
-
-darwin* | rhapsody*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-freebsd* | dragonfly*)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    case $host_cpu in
-    i*86 )
-      # Not sure whether the presence of OpenBSD here was a mistake.
-      # Let's accept both of them until this is cleared up.
-      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
-      lt_cv_file_magic_cmd=/usr/bin/file
-      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-      ;;
-    esac
-  else
-    lt_cv_deplibs_check_method=pass_all
-  fi
-  ;;
-
-haiku*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-hpux10.20* | hpux11*)
-  lt_cv_file_magic_cmd=/usr/bin/file
-  case $host_cpu in
-  ia64*)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
-    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
-    ;;
-  hppa*64*)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'
-    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
-    ;;
-  *)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library'
-    lt_cv_file_magic_test_file=/usr/lib/libc.sl
-    ;;
-  esac
-  ;;
-
-interix[3-9]*)
-  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
-  lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $LD in
-  *-32|*"-32 ") libmagic=32-bit;;
-  *-n32|*"-n32 ") libmagic=N32;;
-  *-64|*"-64 ") libmagic=64-bit;;
-  *) libmagic=never-match;;
-  esac
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-netbsd* | netbsdelf*-gnu)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
-  fi
-  ;;
-
-newos6*)
-  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
-  lt_cv_file_magic_cmd=/usr/bin/file
-  lt_cv_file_magic_test_file=/usr/lib/libnls.so
-  ;;
-
-*nto* | *qnx*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-openbsd*)
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
-  fi
-  ;;
-
-osf3* | osf4* | osf5*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-rdos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-solaris*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv4 | sysv4.3*)
-  case $host_vendor in
-  motorola)
-    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
-    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
-    ;;
-  ncr)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  sequent)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
-    ;;
-  sni)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
-    lt_cv_file_magic_test_file=/lib/libc.so
-    ;;
-  siemens)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  pc)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  esac
-  ;;
-
-tpf*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-esac
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
-$as_echo "$lt_cv_deplibs_check_method" >&6; }
-
-file_magic_glob=
-want_nocaseglob=no
-if test "$build" = "$host"; then
-  case $host_os in
-  mingw* | pw32*)
-    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
-      want_nocaseglob=yes
-    else
-      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
-    fi
-    ;;
-  esac
-fi
-
-file_magic_cmd=$lt_cv_file_magic_cmd
-deplibs_check_method=$lt_cv_deplibs_check_method
-test -z "$deplibs_check_method" && deplibs_check_method=unknown
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DLLTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DLLTOOL"; then
-  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-DLLTOOL=$ac_cv_prog_DLLTOOL
-if test -n "$DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
-$as_echo "$DLLTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_DLLTOOL"; then
-  ac_ct_DLLTOOL=$DLLTOOL
-  # Extract the first word of "dlltool", so it can be a program name with args.
-set dummy dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DLLTOOL"; then
-  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
-if test -n "$ac_ct_DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
-$as_echo "$ac_ct_DLLTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_DLLTOOL" = x; then
-    DLLTOOL="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DLLTOOL=$ac_ct_DLLTOOL
-  fi
-else
-  DLLTOOL="$ac_cv_prog_DLLTOOL"
-fi
-
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
-$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
-if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_sharedlib_from_linklib_cmd='unknown'
-
-case $host_os in
-cygwin* | mingw* | pw32* | cegcc*)
-  # two different shell functions defined in ltmain.sh
-  # decide which to use based on capabilities of $DLLTOOL
-  case `$DLLTOOL --help 2>&1` in
-  *--identify-strict*)
-    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
-    ;;
-  *)
-    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
-    ;;
-  esac
-  ;;
-*)
-  # fallback: assume linklib IS sharedlib
-  lt_cv_sharedlib_from_linklib_cmd="$ECHO"
-  ;;
-esac
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
-$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
-sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
-test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
-
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  for ac_prog in ar
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AR"; then
-  ac_cv_prog_AR="$AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-AR=$ac_cv_prog_AR
-if test -n "$AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
-$as_echo "$AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$AR" && break
-  done
-fi
-if test -z "$AR"; then
-  ac_ct_AR=$AR
-  for ac_prog in ar
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_AR"; then
-  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_AR="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_AR=$ac_cv_prog_ac_ct_AR
-if test -n "$ac_ct_AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
-$as_echo "$ac_ct_AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_AR" && break
-done
-
-  if test "x$ac_ct_AR" = x; then
-    AR="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    AR=$ac_ct_AR
-  fi
-fi
-
-: ${AR=ar}
-: ${AR_FLAGS=cru}
-
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
-$as_echo_n "checking for archiver @FILE support... " >&6; }
-if ${lt_cv_ar_at_file+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ar_at_file=no
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  echo conftest.$ac_objext > conftest.lst
-      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
-      { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-  (eval $lt_ar_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-      if test "$ac_status" -eq 0; then
-	# Ensure the archiver fails upon bogus file names.
-	rm -f conftest.$ac_objext libconftest.a
-	{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-  (eval $lt_ar_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-	if test "$ac_status" -ne 0; then
-          lt_cv_ar_at_file=@
-        fi
-      fi
-      rm -f conftest.* libconftest.a
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
-$as_echo "$lt_cv_ar_at_file" >&6; }
-
-if test "x$lt_cv_ar_at_file" = xno; then
-  archiver_list_spec=
-else
-  archiver_list_spec=$lt_cv_ar_at_file
-fi
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$STRIP"; then
-  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
-  ac_ct_STRIP=$STRIP
-  # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_STRIP"; then
-  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_STRIP="strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_STRIP" = x; then
-    STRIP=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    STRIP=$ac_ct_STRIP
-  fi
-else
-  STRIP="$ac_cv_prog_STRIP"
-fi
-
-test -z "$STRIP" && STRIP=:
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_RANLIB+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$RANLIB"; then
-  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
-$as_echo "$RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_RANLIB"; then
-  ac_ct_RANLIB=$RANLIB
-  # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_RANLIB"; then
-  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_RANLIB="ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
-$as_echo "$ac_ct_RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_RANLIB" = x; then
-    RANLIB=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    RANLIB=$ac_ct_RANLIB
-  fi
-else
-  RANLIB="$ac_cv_prog_RANLIB"
-fi
-
-test -z "$RANLIB" && RANLIB=:
-
-
-
-
-
-
-# Determine commands to create old-style static archives.
-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
-old_postinstall_cmds='chmod 644 $oldlib'
-old_postuninstall_cmds=
-
-if test -n "$RANLIB"; then
-  case $host_os in
-  openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
-    ;;
-  *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
-    ;;
-  esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
-fi
-
-case $host_os in
-  darwin*)
-    lock_old_archive_extraction=yes ;;
-  *)
-    lock_old_archive_extraction=no ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-
-# Check for command to grab the raw symbol name followed by C symbol from nm.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
-$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
-if ${lt_cv_sys_global_symbol_pipe+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-# These are sane defaults that work on at least a few old systems.
-# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
-
-# Character class describing NM global symbol codes.
-symcode='[BCDEGRST]'
-
-# Regexp to match symbols that can be accessed directly from C.
-sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
-
-# Define system-specific variables.
-case $host_os in
-aix*)
-  symcode='[BCDT]'
-  ;;
-cygwin* | mingw* | pw32* | cegcc*)
-  symcode='[ABCDGISTW]'
-  ;;
-hpux*)
-  if test "$host_cpu" = ia64; then
-    symcode='[ABCDEGRST]'
-  fi
-  ;;
-irix* | nonstopux*)
-  symcode='[BCDEGRST]'
-  ;;
-osf*)
-  symcode='[BCDEGQRST]'
-  ;;
-solaris*)
-  symcode='[BDRT]'
-  ;;
-sco3.2v5*)
-  symcode='[DT]'
-  ;;
-sysv4.2uw2*)
-  symcode='[DT]'
-  ;;
-sysv5* | sco5v6* | unixware* | OpenUNIX*)
-  symcode='[ABDT]'
-  ;;
-sysv4)
-  symcode='[DFNSTU]'
-  ;;
-esac
-
-# If we're using GNU nm, then use its standard symbol codes.
-case `$NM -V 2>&1` in
-*GNU* | *'with BFD'*)
-  symcode='[ABCDGIRSTW]' ;;
-esac
-
-# Transform an extracted symbol line into a proper C declaration.
-# Some systems (esp. on ia64) link data and code symbols differently,
-# so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-
-# Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (void *) \&\2},/p'"
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
-
-# Handle CRLF in mingw tool chain
-opt_cr=
-case $build_os in
-mingw*)
-  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
-  ;;
-esac
-
-# Try without a prefix underscore, then with it.
-for ac_symprfx in "" "_"; do
-
-  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
-  symxfrm="\\1 $ac_symprfx\\2 \\2"
-
-  # Write the raw and C identifiers.
-  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-    # Fake it for dumpbin and say T for any non-static function
-    # and D for any global variable.
-    # Also find C++ and __fastcall symbols from MSVC++,
-    # which start with @ or ?.
-    lt_cv_sys_global_symbol_pipe="$AWK '"\
-"     {last_section=section; section=\$ 3};"\
-"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
-"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
-"     \$ 0!~/External *\|/{next};"\
-"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
-"     {if(hide[section]) next};"\
-"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
-"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
-"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
-"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
-"     ' prfx=^$ac_symprfx"
-  else
-    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[	 ]\($symcode$symcode*\)[	 ][	 ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
-  fi
-  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
-
-  # Check to see that the pipe works correctly.
-  pipe_works=no
-
-  rm -f conftest*
-  cat > conftest.$ac_ext <<_LT_EOF
-#ifdef __cplusplus
-extern "C" {
-#endif
-char nm_test_var;
-void nm_test_func(void);
-void nm_test_func(void){}
-#ifdef __cplusplus
-}
-#endif
-int main(){nm_test_var='a';nm_test_func();return(0);}
-_LT_EOF
-
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    # Now try to grab the symbols.
-    nlist=conftest.nm
-    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
-  (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s "$nlist"; then
-      # Try sorting and uniquifying the output.
-      if sort "$nlist" | uniq > "$nlist"T; then
-	mv -f "$nlist"T "$nlist"
-      else
-	rm -f "$nlist"T
-      fi
-
-      # Make sure that we snagged all the symbols we need.
-      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
-	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
-	  cat <<_LT_EOF > conftest.$ac_ext
-/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
-#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-/* DATA imports from DLLs on WIN32 con't be const, because runtime
-   relocations are performed -- see ld's documentation on pseudo-relocs.  */
-# define LT_DLSYM_CONST
-#elif defined(__osf__)
-/* This system does not cope well with relocations in const data.  */
-# define LT_DLSYM_CONST
-#else
-# define LT_DLSYM_CONST const
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-_LT_EOF
-	  # Now generate the symbol file.
-	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
-
-	  cat <<_LT_EOF >> conftest.$ac_ext
-
-/* The mapping between symbol names and symbols.  */
-LT_DLSYM_CONST struct {
-  const char *name;
-  void       *address;
-}
-lt__PROGRAM__LTX_preloaded_symbols[] =
-{
-  { "@PROGRAM@", (void *) 0 },
-_LT_EOF
-	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
-	  cat <<\_LT_EOF >> conftest.$ac_ext
-  {0, (void *) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
-  return lt__PROGRAM__LTX_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-_LT_EOF
-	  # Now try linking the two files.
-	  mv conftest.$ac_objext conftstm.$ac_objext
-	  lt_globsym_save_LIBS=$LIBS
-	  lt_globsym_save_CFLAGS=$CFLAGS
-	  LIBS="conftstm.$ac_objext"
-	  CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
-	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s conftest${ac_exeext}; then
-	    pipe_works=yes
-	  fi
-	  LIBS=$lt_globsym_save_LIBS
-	  CFLAGS=$lt_globsym_save_CFLAGS
-	else
-	  echo "cannot find nm_test_func in $nlist" >&5
-	fi
-      else
-	echo "cannot find nm_test_var in $nlist" >&5
-      fi
-    else
-      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
-    fi
-  else
-    echo "$progname: failed program was:" >&5
-    cat conftest.$ac_ext >&5
-  fi
-  rm -rf conftest* conftst*
-
-  # Do not use the global_symbol_pipe unless it works.
-  if test "$pipe_works" = yes; then
-    break
-  else
-    lt_cv_sys_global_symbol_pipe=
-  fi
-done
-
-fi
-
-if test -z "$lt_cv_sys_global_symbol_pipe"; then
-  lt_cv_sys_global_symbol_to_cdecl=
-fi
-if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
-$as_echo "failed" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
-$as_echo "ok" >&6; }
-fi
-
-# Response file support.
-if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-  nm_file_list_spec='@'
-elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
-  nm_file_list_spec='@'
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
-$as_echo_n "checking for sysroot... " >&6; }
-
-# Check whether --with-sysroot was given.
-if test "${with_sysroot+set}" = set; then :
-  withval=$with_sysroot;
-else
-  with_sysroot=no
-fi
-
-
-lt_sysroot=
-case ${with_sysroot} in #(
- yes)
-   if test "$GCC" = yes; then
-     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
-   fi
-   ;; #(
- /*)
-   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
-   ;; #(
- no|'')
-   ;; #(
- *)
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
-$as_echo "${with_sysroot}" >&6; }
-   as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
-   ;;
-esac
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
-$as_echo "${lt_sysroot:-no}" >&6; }
-
-
-
-
-
-# Check whether --enable-libtool-lock was given.
-if test "${enable_libtool_lock+set}" = set; then :
-  enableval=$enable_libtool_lock;
-fi
-
-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case $host in
-ia64-*-hpux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.$ac_objext` in
-      *ELF-32*)
-	HPUX_IA64_MODE="32"
-	;;
-      *ELF-64*)
-	HPUX_IA64_MODE="64"
-	;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-*-*-irix6*)
-  # Find out which ABI we are using.
-  echo '#line '$LINENO' "configure"' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    if test "$lt_cv_prog_gnu_ld" = yes; then
-      case `/usr/bin/file conftest.$ac_objext` in
-	*32-bit*)
-	  LD="${LD-ld} -melf32bsmip"
-	  ;;
-	*N32*)
-	  LD="${LD-ld} -melf32bmipn32"
-	  ;;
-	*64-bit*)
-	  LD="${LD-ld} -melf64bmip"
-	;;
-      esac
-    else
-      case `/usr/bin/file conftest.$ac_objext` in
-	*32-bit*)
-	  LD="${LD-ld} -32"
-	  ;;
-	*N32*)
-	  LD="${LD-ld} -n32"
-	  ;;
-	*64-bit*)
-	  LD="${LD-ld} -64"
-	  ;;
-      esac
-    fi
-  fi
-  rm -rf conftest*
-  ;;
-
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
-s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.o` in
-      *32-bit*)
-	case $host in
-	  x86_64-*kfreebsd*-gnu)
-	    LD="${LD-ld} -m elf_i386_fbsd"
-	    ;;
-	  x86_64-*linux*)
-	    case `/usr/bin/file conftest.o` in
-	      *x86-64*)
-		LD="${LD-ld} -m elf32_x86_64"
-		;;
-	      *)
-		LD="${LD-ld} -m elf_i386"
-		;;
-	    esac
-	    ;;
-	  powerpc64le-*)
-	    LD="${LD-ld} -m elf32lppclinux"
-	    ;;
-	  powerpc64-*)
-	    LD="${LD-ld} -m elf32ppclinux"
-	    ;;
-	  s390x-*linux*)
-	    LD="${LD-ld} -m elf_s390"
-	    ;;
-	  sparc64-*linux*)
-	    LD="${LD-ld} -m elf32_sparc"
-	    ;;
-	esac
-	;;
-      *64-bit*)
-	case $host in
-	  x86_64-*kfreebsd*-gnu)
-	    LD="${LD-ld} -m elf_x86_64_fbsd"
-	    ;;
-	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_x86_64"
-	    ;;
-	  powerpcle-*)
-	    LD="${LD-ld} -m elf64lppc"
-	    ;;
-	  powerpc-*)
-	    LD="${LD-ld} -m elf64ppc"
-	    ;;
-	  s390*-*linux*|s390*-*tpf*)
-	    LD="${LD-ld} -m elf64_s390"
-	    ;;
-	  sparc*-*linux*)
-	    LD="${LD-ld} -m elf64_sparc"
-	    ;;
-	esac
-	;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-
-*-*-sco3.2v5*)
-  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-  SAVE_CFLAGS="$CFLAGS"
-  CFLAGS="$CFLAGS -belf"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
-$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
-if ${lt_cv_cc_needs_belf+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  lt_cv_cc_needs_belf=yes
-else
-  lt_cv_cc_needs_belf=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-     ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
-$as_echo "$lt_cv_cc_needs_belf" >&6; }
-  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
-    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
-    CFLAGS="$SAVE_CFLAGS"
-  fi
-  ;;
-*-*solaris*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.o` in
-    *64-bit*)
-      case $lt_cv_prog_gnu_ld in
-      yes*)
-        case $host in
-        i?86-*-solaris*)
-          LD="${LD-ld} -m elf_x86_64"
-          ;;
-        sparc*-*-solaris*)
-          LD="${LD-ld} -m elf64_sparc"
-          ;;
-        esac
-        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
-        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
-          LD="${LD-ld}_sol2"
-        fi
-        ;;
-      *)
-	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
-	  LD="${LD-ld} -64"
-	fi
-	;;
-      esac
-      ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-esac
-
-need_locks="$enable_libtool_lock"
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
-set dummy ${ac_tool_prefix}mt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$MANIFEST_TOOL"; then
-  ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
-if test -n "$MANIFEST_TOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
-$as_echo "$MANIFEST_TOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
-  ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
-  # Extract the first word of "mt", so it can be a program name with args.
-set dummy mt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_MANIFEST_TOOL"; then
-  ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
-if test -n "$ac_ct_MANIFEST_TOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
-$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_MANIFEST_TOOL" = x; then
-    MANIFEST_TOOL=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
-  fi
-else
-  MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
-fi
-
-test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
-$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
-if ${lt_cv_path_mainfest_tool+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_path_mainfest_tool=no
-  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
-  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
-  cat conftest.err >&5
-  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
-    lt_cv_path_mainfest_tool=yes
-  fi
-  rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
-$as_echo "$lt_cv_path_mainfest_tool" >&6; }
-if test "x$lt_cv_path_mainfest_tool" != xyes; then
-  MANIFEST_TOOL=:
-fi
-
-
-
-
-
-
-  case $host_os in
-    rhapsody* | darwin*)
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DSYMUTIL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DSYMUTIL"; then
-  ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-DSYMUTIL=$ac_cv_prog_DSYMUTIL
-if test -n "$DSYMUTIL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
-$as_echo "$DSYMUTIL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_DSYMUTIL"; then
-  ac_ct_DSYMUTIL=$DSYMUTIL
-  # Extract the first word of "dsymutil", so it can be a program name with args.
-set dummy dsymutil; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DSYMUTIL"; then
-  ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
-if test -n "$ac_ct_DSYMUTIL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
-$as_echo "$ac_ct_DSYMUTIL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_DSYMUTIL" = x; then
-    DSYMUTIL=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DSYMUTIL=$ac_ct_DSYMUTIL
-  fi
-else
-  DSYMUTIL="$ac_cv_prog_DSYMUTIL"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
-set dummy ${ac_tool_prefix}nmedit; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_NMEDIT+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$NMEDIT"; then
-  ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-NMEDIT=$ac_cv_prog_NMEDIT
-if test -n "$NMEDIT"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
-$as_echo "$NMEDIT" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_NMEDIT"; then
-  ac_ct_NMEDIT=$NMEDIT
-  # Extract the first word of "nmedit", so it can be a program name with args.
-set dummy nmedit; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_NMEDIT"; then
-  ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_NMEDIT="nmedit"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
-if test -n "$ac_ct_NMEDIT"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
-$as_echo "$ac_ct_NMEDIT" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_NMEDIT" = x; then
-    NMEDIT=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    NMEDIT=$ac_ct_NMEDIT
-  fi
-else
-  NMEDIT="$ac_cv_prog_NMEDIT"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
-set dummy ${ac_tool_prefix}lipo; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_LIPO+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$LIPO"; then
-  ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-LIPO=$ac_cv_prog_LIPO
-if test -n "$LIPO"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
-$as_echo "$LIPO" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_LIPO"; then
-  ac_ct_LIPO=$LIPO
-  # Extract the first word of "lipo", so it can be a program name with args.
-set dummy lipo; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_LIPO"; then
-  ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_LIPO="lipo"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
-if test -n "$ac_ct_LIPO"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
-$as_echo "$ac_ct_LIPO" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_LIPO" = x; then
-    LIPO=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    LIPO=$ac_ct_LIPO
-  fi
-else
-  LIPO="$ac_cv_prog_LIPO"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}otool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OTOOL"; then
-  ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OTOOL=$ac_cv_prog_OTOOL
-if test -n "$OTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
-$as_echo "$OTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OTOOL"; then
-  ac_ct_OTOOL=$OTOOL
-  # Extract the first word of "otool", so it can be a program name with args.
-set dummy otool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OTOOL"; then
-  ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_OTOOL="otool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
-if test -n "$ac_ct_OTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
-$as_echo "$ac_ct_OTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OTOOL" = x; then
-    OTOOL=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OTOOL=$ac_ct_OTOOL
-  fi
-else
-  OTOOL="$ac_cv_prog_OTOOL"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
-set dummy ${ac_tool_prefix}otool64; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OTOOL64+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OTOOL64"; then
-  ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OTOOL64=$ac_cv_prog_OTOOL64
-if test -n "$OTOOL64"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
-$as_echo "$OTOOL64" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OTOOL64"; then
-  ac_ct_OTOOL64=$OTOOL64
-  # Extract the first word of "otool64", so it can be a program name with args.
-set dummy otool64; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OTOOL64"; then
-  ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_OTOOL64="otool64"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
-if test -n "$ac_ct_OTOOL64"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
-$as_echo "$ac_ct_OTOOL64" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OTOOL64" = x; then
-    OTOOL64=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OTOOL64=$ac_ct_OTOOL64
-  fi
-else
-  OTOOL64="$ac_cv_prog_OTOOL64"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
-$as_echo_n "checking for -single_module linker flag... " >&6; }
-if ${lt_cv_apple_cc_single_mod+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_apple_cc_single_mod=no
-      if test -z "${LT_MULTI_MODULE}"; then
-	# By default we will add the -single_module flag. You can override
-	# by either setting the environment variable LT_MULTI_MODULE
-	# non-empty at configure time, or by adding -multi_module to the
-	# link flags.
-	rm -rf libconftest.dylib*
-	echo "int foo(void){return 1;}" > conftest.c
-	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
--dynamiclib -Wl,-single_module conftest.c" >&5
-	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
-	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
-        _lt_result=$?
-	# If there is a non-empty error log, and "single_module"
-	# appears in it, assume the flag caused a linker warning
-        if test -s conftest.err && $GREP single_module conftest.err; then
-	  cat conftest.err >&5
-	# Otherwise, if the output was created with a 0 exit code from
-	# the compiler, it worked.
-	elif test -f libconftest.dylib && test $_lt_result -eq 0; then
-	  lt_cv_apple_cc_single_mod=yes
-	else
-	  cat conftest.err >&5
-	fi
-	rm -rf libconftest.dylib*
-	rm -f conftest.*
-      fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
-$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
-$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
-if ${lt_cv_ld_exported_symbols_list+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ld_exported_symbols_list=no
-      save_LDFLAGS=$LDFLAGS
-      echo "_main" > conftest.sym
-      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  lt_cv_ld_exported_symbols_list=yes
-else
-  lt_cv_ld_exported_symbols_list=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-	LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
-$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
-$as_echo_n "checking for -force_load linker flag... " >&6; }
-if ${lt_cv_ld_force_load+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ld_force_load=no
-      cat > conftest.c << _LT_EOF
-int forced_loaded() { return 2;}
-_LT_EOF
-      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
-      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
-      echo "$AR cru libconftest.a conftest.o" >&5
-      $AR cru libconftest.a conftest.o 2>&5
-      echo "$RANLIB libconftest.a" >&5
-      $RANLIB libconftest.a 2>&5
-      cat > conftest.c << _LT_EOF
-int main() { return 0;}
-_LT_EOF
-      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
-      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
-      _lt_result=$?
-      if test -s conftest.err && $GREP force_load conftest.err; then
-	cat conftest.err >&5
-      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
-	lt_cv_ld_force_load=yes
-      else
-	cat conftest.err >&5
-      fi
-        rm -f conftest.err libconftest.a conftest conftest.c
-        rm -rf conftest.dSYM
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
-$as_echo "$lt_cv_ld_force_load" >&6; }
-    case $host_os in
-    rhapsody* | darwin1.[012])
-      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
-    darwin1.*)
-      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-    darwin*) # darwin 5.x on
-      # if running on 10.5 or later, the deployment target defaults
-      # to the OS version, if on x86, and 10.4, the deployment
-      # target defaults to 10.4. Don't you love it?
-      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
-	10.0,*86*-darwin8*|10.0,*-darwin[91]*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-	10.[012]*)
-	  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-	10.*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-      esac
-    ;;
-  esac
-    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
-      _lt_dar_single_mod='$single_module'
-    fi
-    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
-      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
-    else
-      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
-    fi
-    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
-      _lt_dsymutil='~$DSYMUTIL $lib || :'
-    else
-      _lt_dsymutil=
-    fi
-    ;;
-  esac
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
-  CPP=
-fi
-if test -z "$CPP"; then
-  if ${ac_cv_prog_CPP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-      # Double quotes because CPP needs to be expanded
-    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-		     Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  break
-fi
-
-    done
-    ac_cv_prog_CPP=$CPP
-
-fi
-  CPP=$ac_cv_prog_CPP
-else
-  ac_cv_prog_CPP=$CPP
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-		     Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_stdc=yes
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then :
-  :
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-		   (('a' <= (c) && (c) <= 'i') \
-		     || ('j' <= (c) && (c) <= 'r') \
-		     || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-	|| toupper (i) != TOUPPER (i))
-      return 2;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
-
-fi
-
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
-		  inttypes.h stdint.h unistd.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-for ac_header in dlfcn.h
-do :
-  ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
-"
-if test "x$ac_cv_header_dlfcn_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_DLFCN_H 1
-_ACEOF
-
-fi
-
-done
-
-
-
-
-func_stripname_cnf ()
-{
-  case ${2} in
-  .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
-  *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
-  esac
-} # func_stripname_cnf
-
-
-
-
-
-
-# Set options
-
-
-
-        enable_dlopen=no
-
-
-  enable_win32_dll=no
-
-
-            # Check whether --enable-shared was given.
-if test "${enable_shared+set}" = set; then :
-  enableval=$enable_shared; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_shared=yes ;;
-    no) enable_shared=no ;;
-    *)
-      enable_shared=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_shared=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  enable_shared=yes
-fi
-
-
-
-
-
-
-
-
-
-  # Check whether --enable-static was given.
-if test "${enable_static+set}" = set; then :
-  enableval=$enable_static; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_static=yes ;;
-    no) enable_static=no ;;
-    *)
-     enable_static=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_static=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  enable_static=yes
-fi
-
-
-
-
-
-
-
-
-
-
-# Check whether --with-pic was given.
-if test "${with_pic+set}" = set; then :
-  withval=$with_pic; lt_p=${PACKAGE-default}
-    case $withval in
-    yes|no) pic_mode=$withval ;;
-    *)
-      pic_mode=default
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for lt_pkg in $withval; do
-	IFS="$lt_save_ifs"
-	if test "X$lt_pkg" = "X$lt_p"; then
-	  pic_mode=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  pic_mode=default
-fi
-
-
-test -z "$pic_mode" && pic_mode=default
-
-
-
-
-
-
-
-  # Check whether --enable-fast-install was given.
-if test "${enable_fast_install+set}" = set; then :
-  enableval=$enable_fast_install; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_fast_install=yes ;;
-    no) enable_fast_install=no ;;
-    *)
-      enable_fast_install=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_fast_install=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  enable_fast_install=yes
-fi
-
-
-
-
-
-
-
-
-
-
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ltmain"
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-test -z "$LN_S" && LN_S="ln -s"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-if test -n "${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
-$as_echo_n "checking for objdir... " >&6; }
-if ${lt_cv_objdir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  rm -f .libs 2>/dev/null
-mkdir .libs 2>/dev/null
-if test -d .libs; then
-  lt_cv_objdir=.libs
-else
-  # MS-DOS does not allow filenames that begin with a dot.
-  lt_cv_objdir=_libs
-fi
-rmdir .libs 2>/dev/null
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
-$as_echo "$lt_cv_objdir" >&6; }
-objdir=$lt_cv_objdir
-
-
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define LT_OBJDIR "$lt_cv_objdir/"
-_ACEOF
-
-
-
-
-case $host_os in
-aix3*)
-  # AIX sometimes has problems with the GCC collect2 program.  For some
-  # reason, if we set the COLLECT_NAMES environment variable, the problems
-  # vanish in a puff of smoke.
-  if test "X${COLLECT_NAMES+set}" != Xset; then
-    COLLECT_NAMES=
-    export COLLECT_NAMES
-  fi
-  ;;
-esac
-
-# Global variables:
-ofile=libtool
-can_build_shared=yes
-
-# All known linkers require a `.a' archive for static linking (except MSVC,
-# which needs '.lib').
-libext=a
-
-with_gnu_ld="$lt_cv_prog_gnu_ld"
-
-old_CC="$CC"
-old_CFLAGS="$CFLAGS"
-
-# Set sane defaults for various variables
-test -z "$CC" && CC=cc
-test -z "$LTCC" && LTCC=$CC
-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
-test -z "$LD" && LD=ld
-test -z "$ac_objext" && ac_objext=o
-
-for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
-
-
-# Only perform the check for file, if the check method requires it
-test -z "$MAGIC_CMD" && MAGIC_CMD=file
-case $deplibs_check_method in
-file_magic*)
-  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
-$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
-if ${lt_cv_path_MAGIC_CMD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $MAGIC_CMD in
-[\\/*] |  ?:[\\/]*)
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
-  for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/${ac_tool_prefix}file; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
-      if test -n "$file_magic_test_file"; then
-	case $deplibs_check_method in
-	"file_magic "*)
-	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-	    $EGREP "$file_magic_regex" > /dev/null; then
-	    :
-	  else
-	    cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool at gnu.org
-
-_LT_EOF
-	  fi ;;
-	esac
-      fi
-      break
-    fi
-  done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
-  ;;
-esac
-fi
-
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
-$as_echo "$MAGIC_CMD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-
-
-
-if test -z "$lt_cv_path_MAGIC_CMD"; then
-  if test -n "$ac_tool_prefix"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
-$as_echo_n "checking for file... " >&6; }
-if ${lt_cv_path_MAGIC_CMD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $MAGIC_CMD in
-[\\/*] |  ?:[\\/]*)
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
-  for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/file; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/file"
-      if test -n "$file_magic_test_file"; then
-	case $deplibs_check_method in
-	"file_magic "*)
-	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-	    $EGREP "$file_magic_regex" > /dev/null; then
-	    :
-	  else
-	    cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool at gnu.org
-
-_LT_EOF
-	  fi ;;
-	esac
-      fi
-      break
-    fi
-  done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
-  ;;
-esac
-fi
-
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
-$as_echo "$MAGIC_CMD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  else
-    MAGIC_CMD=:
-  fi
-fi
-
-  fi
-  ;;
-esac
-
-# Use C for the default configuration in the libtool script
-
-lt_save_CC="$CC"
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-# Source file extension for C test sources.
-ac_ext=c
-
-# Object file extension for compiled C test sources.
-objext=o
-objext=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='int main(){return(0);}'
-
-
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-# Save the default compiler, since it gets overwritten when the other
-# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
-compiler_DEFAULT=$CC
-
-# save warnings/boilerplate of simple test code
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-
-
-## CAVEAT EMPTOR:
-## There is no encapsulation within the following macros, do not change
-## the running order or otherwise move them around unless you know exactly
-## what you are doing...
-if test -n "$compiler"; then
-
-lt_prog_compiler_no_builtin_flag=
-
-if test "$GCC" = yes; then
-  case $cc_basename in
-  nvcc*)
-    lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
-  *)
-    lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
-  esac
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
-$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
-if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_rtti_exceptions=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="-fno-rtti -fno-exceptions"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_rtti_exceptions=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
-$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
-
-if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
-    lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
-else
-    :
-fi
-
-fi
-
-
-
-
-
-
-  lt_prog_compiler_wl=
-lt_prog_compiler_pic=
-lt_prog_compiler_static=
-
-
-  if test "$GCC" = yes; then
-    lt_prog_compiler_wl='-Wl,'
-    lt_prog_compiler_static='-static'
-
-    case $host_os in
-      aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            lt_prog_compiler_pic='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
-            lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      lt_prog_compiler_pic='-DDLL_EXPORT'
-      ;;
-
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      lt_prog_compiler_pic='-fno-common'
-      ;;
-
-    haiku*)
-      # PIC is the default for Haiku.
-      # The "-static" flag exists, but is broken.
-      lt_prog_compiler_static=
-      ;;
-
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic='-fPIC'
-	;;
-      esac
-      ;;
-
-    interix[3-9]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-
-    msdosdjgpp*)
-      # Just because we use GCC doesn't mean we suddenly get shared libraries
-      # on systems that don't support them.
-      lt_prog_compiler_can_build_shared=no
-      enable_shared=no
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic='-fPIC -shared'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	lt_prog_compiler_pic=-Kconform_pic
-      fi
-      ;;
-
-    *)
-      lt_prog_compiler_pic='-fPIC'
-      ;;
-    esac
-
-    case $cc_basename in
-    nvcc*) # Cuda Compiler Driver 2.2
-      lt_prog_compiler_wl='-Xlinker '
-      if test -n "$lt_prog_compiler_pic"; then
-        lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
-      fi
-      ;;
-    esac
-  else
-    # PORTME Check for flag to pass linker flags through the system compiler.
-    case $host_os in
-    aix*)
-      lt_prog_compiler_wl='-Wl,'
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static='-Bstatic'
-      else
-	lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
-      fi
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      lt_prog_compiler_pic='-DDLL_EXPORT'
-      ;;
-
-    hpux9* | hpux10* | hpux11*)
-      lt_prog_compiler_wl='-Wl,'
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic='+Z'
-	;;
-      esac
-      # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      lt_prog_compiler_static='${wl}-a ${wl}archive'
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      lt_prog_compiler_wl='-Wl,'
-      # PIC (with -KPIC) is the default.
-      lt_prog_compiler_static='-non_shared'
-      ;;
-
-    linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-      case $cc_basename in
-      # old Intel for x86_64 which still supported -KPIC.
-      ecc*)
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='-KPIC'
-	lt_prog_compiler_static='-static'
-        ;;
-      # icc used to be incompatible with GCC.
-      # ICC 10 doesn't accept -KPIC any more.
-      icc* | ifort*)
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='-fPIC'
-	lt_prog_compiler_static='-static'
-        ;;
-      # Lahey Fortran 8.1.
-      lf95*)
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='--shared'
-	lt_prog_compiler_static='--static'
-	;;
-      nagfor*)
-	# NAG Fortran compiler
-	lt_prog_compiler_wl='-Wl,-Wl,,'
-	lt_prog_compiler_pic='-PIC'
-	lt_prog_compiler_static='-Bstatic'
-	;;
-      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
-        # Portland Group compilers (*not* the Pentium gcc compiler,
-	# which looks to be a dead project)
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='-fpic'
-	lt_prog_compiler_static='-Bstatic'
-        ;;
-      ccc*)
-        lt_prog_compiler_wl='-Wl,'
-        # All Alpha code is PIC.
-        lt_prog_compiler_static='-non_shared'
-        ;;
-      xl* | bgxl* | bgf* | mpixl*)
-	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='-qpic'
-	lt_prog_compiler_static='-qstaticlink'
-	;;
-      *)
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
-	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
-	  lt_prog_compiler_pic='-KPIC'
-	  lt_prog_compiler_static='-Bstatic'
-	  lt_prog_compiler_wl=''
-	  ;;
-	*Sun\ F* | *Sun*Fortran*)
-	  lt_prog_compiler_pic='-KPIC'
-	  lt_prog_compiler_static='-Bstatic'
-	  lt_prog_compiler_wl='-Qoption ld '
-	  ;;
-	*Sun\ C*)
-	  # Sun C 5.9
-	  lt_prog_compiler_pic='-KPIC'
-	  lt_prog_compiler_static='-Bstatic'
-	  lt_prog_compiler_wl='-Wl,'
-	  ;;
-        *Intel*\ [CF]*Compiler*)
-	  lt_prog_compiler_wl='-Wl,'
-	  lt_prog_compiler_pic='-fPIC'
-	  lt_prog_compiler_static='-static'
-	  ;;
-	*Portland\ Group*)
-	  lt_prog_compiler_wl='-Wl,'
-	  lt_prog_compiler_pic='-fpic'
-	  lt_prog_compiler_static='-Bstatic'
-	  ;;
-	esac
-	;;
-      esac
-      ;;
-
-    newsos6)
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic='-fPIC -shared'
-      ;;
-
-    osf3* | osf4* | osf5*)
-      lt_prog_compiler_wl='-Wl,'
-      # All OSF/1 code is PIC.
-      lt_prog_compiler_static='-non_shared'
-      ;;
-
-    rdos*)
-      lt_prog_compiler_static='-non_shared'
-      ;;
-
-    solaris*)
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      case $cc_basename in
-      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
-	lt_prog_compiler_wl='-Qoption ld ';;
-      *)
-	lt_prog_compiler_wl='-Wl,';;
-      esac
-      ;;
-
-    sunos4*)
-      lt_prog_compiler_wl='-Qoption ld '
-      lt_prog_compiler_pic='-PIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    sysv4 | sysv4.2uw2* | sysv4.3*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec ;then
-	lt_prog_compiler_pic='-Kconform_pic'
-	lt_prog_compiler_static='-Bstatic'
-      fi
-      ;;
-
-    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    unicos*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_can_build_shared=no
-      ;;
-
-    uts4*)
-      lt_prog_compiler_pic='-pic'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    *)
-      lt_prog_compiler_can_build_shared=no
-      ;;
-    esac
-  fi
-
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    lt_prog_compiler_pic=
-    ;;
-  *)
-    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
-    ;;
-esac
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-if ${lt_cv_prog_compiler_pic+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
-$as_echo "$lt_cv_prog_compiler_pic" >&6; }
-lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$lt_prog_compiler_pic"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
-if ${lt_cv_prog_compiler_pic_works+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_works=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_pic_works=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
-$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
-
-if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
-    case $lt_prog_compiler_pic in
-     "" | " "*) ;;
-     *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
-     esac
-else
-    lt_prog_compiler_pic=
-     lt_prog_compiler_can_build_shared=no
-fi
-
-fi
-
-
-
-
-
-
-
-
-
-
-
-#
-# Check to make sure the static flag actually works.
-#
-wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if ${lt_cv_prog_compiler_static_works+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_static_works=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler_static_works=yes
-       fi
-     else
-       lt_cv_prog_compiler_static_works=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
-$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
-
-if test x"$lt_cv_prog_compiler_static_works" = xyes; then
-    :
-else
-    lt_prog_compiler_static=
-fi
-
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
-$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
-$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
-
-
-
-
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
-$as_echo_n "checking if we can lock with hard links... " >&6; }
-  hard_links=yes
-  $RM conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
-$as_echo "$hard_links" >&6; }
-  if test "$hard_links" = no; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
-
-  runpath_var=
-  allow_undefined_flag=
-  always_export_symbols=no
-  archive_cmds=
-  archive_expsym_cmds=
-  compiler_needs_object=no
-  enable_shared_with_static_runtimes=no
-  export_dynamic_flag_spec=
-  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  hardcode_automatic=no
-  hardcode_direct=no
-  hardcode_direct_absolute=no
-  hardcode_libdir_flag_spec=
-  hardcode_libdir_separator=
-  hardcode_minus_L=no
-  hardcode_shlibpath_var=unsupported
-  inherit_rpath=no
-  link_all_deplibs=unknown
-  module_cmds=
-  module_expsym_cmds=
-  old_archive_from_new_cmds=
-  old_archive_from_expsyms_cmds=
-  thread_safe_flag_spec=
-  whole_archive_flag_spec=
-  # include_expsyms should be a list of space-separated symbols to be *always*
-  # included in the symbol list
-  include_expsyms=
-  # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ` (' and `)$', so one must not match beginning or
-  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-  # as well as any symbol that contains `d'.
-  exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
-  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-  # platforms (ab)use it in PIC code, but their linkers get confused if
-  # the symbol is explicitly referenced.  Since portable code cannot
-  # rely on this symbol name, it's probably fine to never include it in
-  # preloaded symbol tables.
-  # Exclude shared library initialization/finalization symbols.
-  extract_expsyms_cmds=
-
-  case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    # FIXME: the MSVC++ port hasn't been tested in a loooong time
-    # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++.
-    if test "$GCC" != yes; then
-      with_gnu_ld=no
-    fi
-    ;;
-  interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++)
-    with_gnu_ld=yes
-    ;;
-  openbsd*)
-    with_gnu_ld=no
-    ;;
-  linux* | k*bsd*-gnu | gnu*)
-    link_all_deplibs=no
-    ;;
-  esac
-
-  ld_shlibs=yes
-
-  # On some targets, GNU ld is compatible enough with the native linker
-  # that we're better off using the native interface for both.
-  lt_use_gnu_ld_interface=no
-  if test "$with_gnu_ld" = yes; then
-    case $host_os in
-      aix*)
-	# The AIX port of GNU ld has always aspired to compatibility
-	# with the native linker.  However, as the warning in the GNU ld
-	# block says, versions before 2.19.5* couldn't really create working
-	# shared libraries, regardless of the interface used.
-	case `$LD -v 2>&1` in
-	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
-	  *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
-	  *\ \(GNU\ Binutils\)\ [3-9]*) ;;
-	  *)
-	    lt_use_gnu_ld_interface=yes
-	    ;;
-	esac
-	;;
-      *)
-	lt_use_gnu_ld_interface=yes
-	;;
-    esac
-  fi
-
-  if test "$lt_use_gnu_ld_interface" = yes; then
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='${wl}'
-
-    # Set some defaults for GNU ld with shared library support. These
-    # are reset later if shared libraries are not supported. Putting them
-    # here allows them to be overridden if necessary.
-    runpath_var=LD_RUN_PATH
-    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-    export_dynamic_flag_spec='${wl}--export-dynamic'
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-      whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-    else
-      whole_archive_flag_spec=
-    fi
-    supports_anon_versioning=no
-    case `$LD -v 2>&1` in
-      *GNU\ gold*) supports_anon_versioning=yes ;;
-      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
-      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-      *\ 2.11.*) ;; # other 2.11 versions
-      *) supports_anon_versioning=yes ;;
-    esac
-
-    # See if GNU ld supports shared libraries.
-    case $host_os in
-    aix[3-9]*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
-	ld_shlibs=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.19, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to install binutils
-*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
-*** You will then need to restart the configuration process.
-
-_LT_EOF
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            archive_expsym_cmds=''
-        ;;
-      m68k)
-            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec='-L$libdir'
-            hardcode_minus_L=yes
-        ;;
-      esac
-      ;;
-
-    beos*)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	allow_undefined_flag=unsupported
-	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
-	# support --undefined.  This deserves some investigation.  FIXME
-	archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      else
-	ld_shlibs=no
-      fi
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
-      # as there is no search path for DLLs.
-      hardcode_libdir_flag_spec='-L$libdir'
-      export_dynamic_flag_spec='${wl}--export-all-symbols'
-      allow_undefined_flag=unsupported
-      always_export_symbols=no
-      enable_shared_with_static_runtimes=yes
-      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
-      exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
-
-      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	# If the export-symbols file already is a .def file (1st line
-	# is EXPORTS), use it as is; otherwise, prepend...
-	archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	  cp $export_symbols $output_objdir/$soname.def;
-	else
-	  echo EXPORTS > $output_objdir/$soname.def;
-	  cat $export_symbols >> $output_objdir/$soname.def;
-	fi~
-	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      else
-	ld_shlibs=no
-      fi
-      ;;
-
-    haiku*)
-      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      link_all_deplibs=yes
-      ;;
-
-    interix[3-9]*)
-      hardcode_direct=no
-      hardcode_shlibpath_var=no
-      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-      export_dynamic_flag_spec='${wl}-E'
-      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-      # Instead, shared libraries are loaded at an image base (0x10000000 by
-      # default) and relocated if they conflict, which is a slow very memory
-      # consuming and fragmenting process.  To avoid this, we pick a random,
-      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      ;;
-
-    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
-      tmp_diet=no
-      if test "$host_os" = linux-dietlibc; then
-	case $cc_basename in
-	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
-	esac
-      fi
-      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
-	 && test "$tmp_diet" = no
-      then
-	tmp_addflag=' $pic_flag'
-	tmp_sharedflag='-shared'
-	case $cc_basename,$host_cpu in
-        pgcc*)				# Portland Group C compiler
-	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag'
-	  ;;
-	pgf77* | pgf90* | pgf95* | pgfortran*)
-					# Portland Group f77 and f90 compilers
-	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag -Mnomain' ;;
-	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
-	  tmp_addflag=' -i_dynamic' ;;
-	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
-	  tmp_addflag=' -i_dynamic -nofor_main' ;;
-	ifc* | ifort*)			# Intel Fortran compiler
-	  tmp_addflag=' -nofor_main' ;;
-	lf95*)				# Lahey Fortran 8.1
-	  whole_archive_flag_spec=
-	  tmp_sharedflag='--shared' ;;
-	xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
-	  tmp_sharedflag='-qmkshrobj'
-	  tmp_addflag= ;;
-	nvcc*)	# Cuda Compiler Driver 2.2
-	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  compiler_needs_object=yes
-	  ;;
-	esac
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)			# Sun C 5.9
-	  whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  compiler_needs_object=yes
-	  tmp_sharedflag='-G' ;;
-	*Sun\ F*)			# Sun Fortran 8.3
-	  tmp_sharedflag='-G' ;;
-	esac
-	archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-
-        if test "x$supports_anon_versioning" = xyes; then
-          archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
-	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	    echo "local: *; };" >> $output_objdir/$libname.ver~
-	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-        fi
-
-	case $cc_basename in
-	xlf* | bgf* | bgxlf* | mpixlf*)
-	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
-	  whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
-	  hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-	  archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
-	  if test "x$supports_anon_versioning" = xyes; then
-	    archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
-	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	      echo "local: *; };" >> $output_objdir/$libname.ver~
-	      $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-	  fi
-	  ;;
-	esac
-      else
-        ld_shlibs=no
-      fi
-      ;;
-
-    netbsd* | netbsdelf*-gnu)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-	wlarc=
-      else
-	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      fi
-      ;;
-
-    solaris*)
-      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
-	ld_shlibs=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs=no
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-      case `$LD -v 2>&1` in
-        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
-	ld_shlibs=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
-*** reliably create shared libraries on SCO systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-	;;
-	*)
-	  # For security reasons, it is highly recommended that you always
-	  # use absolute paths for naming shared libraries, and exclude the
-	  # DT_RUNPATH tag from executables and libraries.  But doing so
-	  # requires that you compile everything twice, which is a pain.
-	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-	    archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-	  else
-	    ld_shlibs=no
-	  fi
-	;;
-      esac
-      ;;
-
-    sunos4*)
-      archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      wlarc=
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    *)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs=no
-      fi
-      ;;
-    esac
-
-    if test "$ld_shlibs" = no; then
-      runpath_var=
-      hardcode_libdir_flag_spec=
-      export_dynamic_flag_spec=
-      whole_archive_flag_spec=
-    fi
-  else
-    # PORTME fill in a description of your system's linker (not GNU ld)
-    case $host_os in
-    aix3*)
-      allow_undefined_flag=unsupported
-      always_export_symbols=yes
-      archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      hardcode_minus_L=yes
-      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
-	# Neither direct hardcoding nor static linking is supported with a
-	# broken collect2.
-	hardcode_direct=unsupported
-      fi
-      ;;
-
-    aix[4-9]*)
-      if test "$host_cpu" = ia64; then
-	# On IA64, the linker does run time linking by default, so we don't
-	# have to do anything special.
-	aix_use_runtimelinking=no
-	exp_sym_flag='-Bexport'
-	no_entry_flag=""
-      else
-	# If we're using GNU nm, then we don't want the "-C" option.
-	# -C means demangle to AIX nm, but means don't demangle with GNU nm
-	# Also, AIX nm treats weak defined symbols like other global
-	# defined symbols, whereas GNU nm marks them as "W".
-	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-	  export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	else
-	  export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	fi
-	aix_use_runtimelinking=no
-
-	# Test if we are trying to use run time linking or normal
-	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
-	# need to do runtime linking.
-	case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
-	  for ld_flag in $LDFLAGS; do
-	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-	    aix_use_runtimelinking=yes
-	    break
-	  fi
-	  done
-	  ;;
-	esac
-
-	exp_sym_flag='-bexport'
-	no_entry_flag='-bnoentry'
-      fi
-
-      # When large executables or shared objects are built, AIX ld can
-      # have problems creating the table of contents.  If linking a library
-      # or program results in "error TOC overflow" add -mminimal-toc to
-      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-      archive_cmds=''
-      hardcode_direct=yes
-      hardcode_direct_absolute=yes
-      hardcode_libdir_separator=':'
-      link_all_deplibs=yes
-      file_list_spec='${wl}-f,'
-
-      if test "$GCC" = yes; then
-	case $host_os in aix4.[012]|aix4.[012].*)
-	# We only want to do this on AIX 4.2 and lower, the check
-	# below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" &&
-	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-	  then
-	  # We have reworked collect2
-	  :
-	  else
-	  # We have old collect2
-	  hardcode_direct=unsupported
-	  # It fails to find uninstalled libraries when the uninstalled
-	  # path is not listed in the libpath.  Setting hardcode_minus_L
-	  # to unsupported forces relinking
-	  hardcode_minus_L=yes
-	  hardcode_libdir_flag_spec='-L$libdir'
-	  hardcode_libdir_separator=
-	  fi
-	  ;;
-	esac
-	shared_flag='-shared'
-	if test "$aix_use_runtimelinking" = yes; then
-	  shared_flag="$shared_flag "'${wl}-G'
-	fi
-	link_all_deplibs=no
-      else
-	# not using gcc
-	if test "$host_cpu" = ia64; then
-	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-	# chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-	else
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag='${wl}-G'
-	  else
-	    shared_flag='${wl}-bM:SRE'
-	  fi
-	fi
-      fi
-
-      export_dynamic_flag_spec='${wl}-bexpall'
-      # It seems that -bexpall does not export symbols beginning with
-      # underscore (_), so it is better to generate a list of symbols to export.
-      always_export_symbols=yes
-      if test "$aix_use_runtimelinking" = yes; then
-	# Warning - without using the other runtime loading flags (-brtl),
-	# -berok will link without error, but may produce a broken library.
-	allow_undefined_flag='-berok'
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath_+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_="/usr/lib:/lib"
-  fi
-
-fi
-
-  aix_libpath=$lt_cv_aix_libpath_
-fi
-
-        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
-        archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-      else
-	if test "$host_cpu" = ia64; then
-	  hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
-	  allow_undefined_flag="-z nodefs"
-	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-	else
-	 # Determine the default libpath from the value encoded in an
-	 # empty executable.
-	 if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath_+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_="/usr/lib:/lib"
-  fi
-
-fi
-
-  aix_libpath=$lt_cv_aix_libpath_
-fi
-
-	 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
-	  # Warning - without using the other run time loading flags,
-	  # -berok will link without error, but may produce a broken library.
-	  no_undefined_flag=' ${wl}-bernotok'
-	  allow_undefined_flag=' ${wl}-berok'
-	  if test "$with_gnu_ld" = yes; then
-	    # We only use this code for GNU lds that support --whole-archive.
-	    whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	  else
-	    # Exported symbols can be pulled into shared objects from archives
-	    whole_archive_flag_spec='$convenience'
-	  fi
-	  archive_cmds_need_lc=yes
-	  # This is similar to how AIX traditionally builds its shared libraries.
-	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-	fi
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            archive_expsym_cmds=''
-        ;;
-      m68k)
-            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec='-L$libdir'
-            hardcode_minus_L=yes
-        ;;
-      esac
-      ;;
-
-    bsdi[45]*)
-      export_dynamic_flag_spec=-rdynamic
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      case $cc_basename in
-      cl*)
-	# Native MSVC
-	hardcode_libdir_flag_spec=' '
-	allow_undefined_flag=unsupported
-	always_export_symbols=yes
-	file_list_spec='@'
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-	archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	    sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-	  else
-	    sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-	  fi~
-	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-	  linknames='
-	# The linker will not automatically build a static lib if we build a DLL.
-	# _LT_TAGVAR(old_archive_from_new_cmds, )='true'
-	enable_shared_with_static_runtimes=yes
-	exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
-	export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-	# Don't use ranlib
-	old_postinstall_cmds='chmod 644 $oldlib'
-	postlink_cmds='lt_outputfile="@OUTPUT@"~
-	  lt_tool_outputfile="@TOOL_OUTPUT@"~
-	  case $lt_outputfile in
-	    *.exe|*.EXE) ;;
-	    *)
-	      lt_outputfile="$lt_outputfile.exe"
-	      lt_tool_outputfile="$lt_tool_outputfile.exe"
-	      ;;
-	  esac~
-	  if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-	    $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-	    $RM "$lt_outputfile.manifest";
-	  fi'
-	;;
-      *)
-	# Assume MSVC wrapper
-	hardcode_libdir_flag_spec=' '
-	allow_undefined_flag=unsupported
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-	# The linker will automatically build a .lib file if we build a DLL.
-	old_archive_from_new_cmds='true'
-	# FIXME: Should let the user specify the lib program.
-	old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
-	enable_shared_with_static_runtimes=yes
-	;;
-      esac
-      ;;
-
-    darwin* | rhapsody*)
-
-
-  archive_cmds_need_lc=no
-  hardcode_direct=no
-  hardcode_automatic=yes
-  hardcode_shlibpath_var=unsupported
-  if test "$lt_cv_ld_force_load" = "yes"; then
-    whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-
-  else
-    whole_archive_flag_spec=''
-  fi
-  link_all_deplibs=yes
-  allow_undefined_flag="$_lt_dar_allow_undefined"
-  case $cc_basename in
-     ifort*) _lt_dar_can_shared=yes ;;
-     *) _lt_dar_can_shared=$GCC ;;
-  esac
-  if test "$_lt_dar_can_shared" = "yes"; then
-    output_verbose_link_cmd=func_echo_all
-    archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-    module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-
-  else
-  ld_shlibs=no
-  fi
-
-      ;;
-
-    dgux*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_shlibpath_var=no
-      ;;
-
-    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-    # support.  Future versions do this automatically, but an explicit c++rt0.o
-    # does not break anything, and helps significantly (at the cost of a little
-    # extra space).
-    freebsd2.2*)
-      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2.*)
-      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct=yes
-      hardcode_minus_L=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
-      archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    hpux9*)
-      if test "$GCC" = yes; then
-	archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      else
-	archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      fi
-      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-      hardcode_libdir_separator=:
-      hardcode_direct=yes
-
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      hardcode_minus_L=yes
-      export_dynamic_flag_spec='${wl}-E'
-      ;;
-
-    hpux10*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-	hardcode_libdir_separator=:
-	hardcode_direct=yes
-	hardcode_direct_absolute=yes
-	export_dynamic_flag_spec='${wl}-E'
-	# hardcode_minus_L: Not really in the search PATH,
-	# but as the default location of the library.
-	hardcode_minus_L=yes
-      fi
-      ;;
-
-    hpux11*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      else
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-
-	  # Older versions of the 11.00 compiler do not understand -b yet
-	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
-$as_echo_n "checking if $CC understands -b... " >&6; }
-if ${lt_cv_prog_compiler__b+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler__b=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS -b"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler__b=yes
-       fi
-     else
-       lt_cv_prog_compiler__b=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
-$as_echo "$lt_cv_prog_compiler__b" >&6; }
-
-if test x"$lt_cv_prog_compiler__b" = xyes; then
-    archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-else
-    archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-fi
-
-	  ;;
-	esac
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-	hardcode_libdir_separator=:
-
-	case $host_cpu in
-	hppa*64*|ia64*)
-	  hardcode_direct=no
-	  hardcode_shlibpath_var=no
-	  ;;
-	*)
-	  hardcode_direct=yes
-	  hardcode_direct_absolute=yes
-	  export_dynamic_flag_spec='${wl}-E'
-
-	  # hardcode_minus_L: Not really in the search PATH,
-	  # but as the default location of the library.
-	  hardcode_minus_L=yes
-	  ;;
-	esac
-      fi
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      if test "$GCC" = yes; then
-	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	# Try to use the -exported_symbol ld option, if it does not
-	# work, assume that -exports_file does not work either and
-	# implicitly export all symbols.
-	# This should be the same for all languages, so no per-tag cache variable.
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
-$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
-if ${lt_cv_irix_exported_symbol+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  save_LDFLAGS="$LDFLAGS"
-	   LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-	   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-int foo (void) { return 0; }
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  lt_cv_irix_exported_symbol=yes
-else
-  lt_cv_irix_exported_symbol=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-           LDFLAGS="$save_LDFLAGS"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
-$as_echo "$lt_cv_irix_exported_symbol" >&6; }
-	if test "$lt_cv_irix_exported_symbol" = yes; then
-          archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-	fi
-      else
-	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      inherit_rpath=yes
-      link_all_deplibs=yes
-      ;;
-
-    netbsd* | netbsdelf*-gnu)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
-      else
-	archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
-      fi
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    newsos6)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct=yes
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      hardcode_shlibpath_var=no
-      ;;
-
-    *nto* | *qnx*)
-      ;;
-
-    openbsd*)
-      if test -f /usr/libexec/ld.so; then
-	hardcode_direct=yes
-	hardcode_shlibpath_var=no
-	hardcode_direct_absolute=yes
-	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	  archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-	  hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-	  export_dynamic_flag_spec='${wl}-E'
-	else
-	  case $host_os in
-	   openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-	     archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-	     hardcode_libdir_flag_spec='-R$libdir'
-	     ;;
-	   *)
-	     archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	     hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-	     ;;
-	  esac
-	fi
-      else
-	ld_shlibs=no
-      fi
-      ;;
-
-    os2*)
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_minus_L=yes
-      allow_undefined_flag=unsupported
-      archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-      ;;
-
-    osf3*)
-      if test "$GCC" = yes; then
-	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-      else
-	allow_undefined_flag=' -expect_unresolved \*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      ;;
-
-    osf4* | osf5*)	# as osf3* with the addition of -msym flag
-      if test "$GCC" = yes; then
-	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      else
-	allow_undefined_flag=' -expect_unresolved \*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
-
-	# Both c and cxx compiler support -rpath directly
-	hardcode_libdir_flag_spec='-rpath $libdir'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_separator=:
-      ;;
-
-    solaris*)
-      no_undefined_flag=' -z defs'
-      if test "$GCC" = yes; then
-	wlarc='${wl}'
-	archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-      else
-	case `$CC -V 2>&1` in
-	*"Compilers 5.0"*)
-	  wlarc=''
-	  archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
-	  ;;
-	*)
-	  wlarc='${wl}'
-	  archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-	  ;;
-	esac
-      fi
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_shlibpath_var=no
-      case $host_os in
-      solaris2.[0-5] | solaris2.[0-5].*) ;;
-      *)
-	# The compiler driver will combine and reorder linker options,
-	# but understands `-z linker_flag'.  GCC discards it without `$wl',
-	# but is careful enough not to reorder.
-	# Supported since Solaris 2.6 (maybe 2.5.1?)
-	if test "$GCC" = yes; then
-	  whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-	else
-	  whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
-	fi
-	;;
-      esac
-      link_all_deplibs=yes
-      ;;
-
-    sunos4*)
-      if test "x$host_vendor" = xsequent; then
-	# Use $CC to link under sequent, because it throws in some extra .o
-	# files that make .init and .fini sections work.
-	archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_direct=yes
-      hardcode_minus_L=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    sysv4)
-      case $host_vendor in
-	sni)
-	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct=yes # is this really true???
-	;;
-	siemens)
-	  ## LD is ld it makes a PLAMLIB
-	  ## CC just makes a GrossModule.
-	  archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-	  reload_cmds='$CC -r -o $output$reload_objs'
-	  hardcode_direct=no
-        ;;
-	motorola)
-	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct=no #Motorola manual says yes, but my tests say they lie
-	;;
-      esac
-      runpath_var='LD_RUN_PATH'
-      hardcode_shlibpath_var=no
-      ;;
-
-    sysv4.3*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_shlibpath_var=no
-      export_dynamic_flag_spec='-Bexport'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	hardcode_shlibpath_var=no
-	runpath_var=LD_RUN_PATH
-	hardcode_runpath_var=yes
-	ld_shlibs=yes
-      fi
-      ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      no_undefined_flag='${wl}-z,text'
-      archive_cmds_need_lc=no
-      hardcode_shlibpath_var=no
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We can NOT use -z defs as we might desire, because we do not
-      # link with -lc, and that would cause any symbols used from libc to
-      # always be unresolved, which means just about no library would
-      # ever link correctly.  If we're not using GNU ld we use -z text
-      # though, which does catch some bad symbols but isn't as heavy-handed
-      # as -z defs.
-      no_undefined_flag='${wl}-z,text'
-      allow_undefined_flag='${wl}-z,nodefs'
-      archive_cmds_need_lc=no
-      hardcode_shlibpath_var=no
-      hardcode_libdir_flag_spec='${wl}-R,$libdir'
-      hardcode_libdir_separator=':'
-      link_all_deplibs=yes
-      export_dynamic_flag_spec='${wl}-Bexport'
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    uts4*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_shlibpath_var=no
-      ;;
-
-    *)
-      ld_shlibs=no
-      ;;
-    esac
-
-    if test x$host_vendor = xsni; then
-      case $host in
-      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-	export_dynamic_flag_spec='${wl}-Blargedynsym'
-	;;
-      esac
-    fi
-  fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
-$as_echo "$ld_shlibs" >&6; }
-test "$ld_shlibs" = no && can_build_shared=no
-
-with_gnu_ld=$with_gnu_ld
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$archive_cmds_need_lc" in
-x|xyes)
-  # Assume -lc should be added
-  archive_cmds_need_lc=yes
-
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $archive_cmds in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
-$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
-if ${lt_cv_archive_cmds_need_lc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  $RM conftest*
-	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } 2>conftest.err; then
-	  soname=conftest
-	  lib=conftest
-	  libobjs=conftest.$ac_objext
-	  deplibs=
-	  wl=$lt_prog_compiler_wl
-	  pic_flag=$lt_prog_compiler_pic
-	  compiler_flags=-v
-	  linker_flags=-v
-	  verstring=
-	  output_objdir=.
-	  libname=conftest
-	  lt_save_allow_undefined_flag=$allow_undefined_flag
-	  allow_undefined_flag=
-	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
-  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-	  then
-	    lt_cv_archive_cmds_need_lc=no
-	  else
-	    lt_cv_archive_cmds_need_lc=yes
-	  fi
-	  allow_undefined_flag=$lt_save_allow_undefined_flag
-	else
-	  cat conftest.err 1>&5
-	fi
-	$RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
-$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
-      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
-$as_echo_n "checking dynamic linker characteristics... " >&6; }
-
-if test "$GCC" = yes; then
-  case $host_os in
-    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
-    *) lt_awk_arg="/^libraries:/" ;;
-  esac
-  case $host_os in
-    mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;;
-    *) lt_sed_strip_eq="s,=/,/,g" ;;
-  esac
-  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
-  case $lt_search_path_spec in
-  *\;*)
-    # if the path contains ";" then we assume it to be the separator
-    # otherwise default to the standard path separator (i.e. ":") - it is
-    # assumed that no part of a normal pathname contains ";" but that should
-    # okay in the real world where ";" in dirpaths is itself problematic.
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
-    ;;
-  *)
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
-    ;;
-  esac
-  # Ok, now we have the path, separated by spaces, we can step through it
-  # and add multilib dir if necessary.
-  lt_tmp_lt_search_path_spec=
-  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
-  for lt_sys_path in $lt_search_path_spec; do
-    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
-      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
-    else
-      test -d "$lt_sys_path" && \
-	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
-    fi
-  done
-  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
-BEGIN {RS=" "; FS="/|\n";} {
-  lt_foo="";
-  lt_count=0;
-  for (lt_i = NF; lt_i > 0; lt_i--) {
-    if ($lt_i != "" && $lt_i != ".") {
-      if ($lt_i == "..") {
-        lt_count++;
-      } else {
-        if (lt_count == 0) {
-          lt_foo="/" $lt_i lt_foo;
-        } else {
-          lt_count--;
-        }
-      }
-    }
-  }
-  if (lt_foo != "") { lt_freq[lt_foo]++; }
-  if (lt_freq[lt_foo] == 1) { print lt_foo; }
-}'`
-  # AWK program above erroneously prepends '/' to C:/dos/paths
-  # for these hosts.
-  case $host_os in
-    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
-      $SED 's,/\([A-Za-z]:\),\1,g'` ;;
-  esac
-  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
-else
-  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
-  ;;
-
-aix[4-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
-    # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[01] | aix4.[01].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
-	:
-      else
-	can_build_shared=no
-      fi
-      ;;
-    esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  case $host_cpu in
-  powerpc)
-    # Since July 2007 AmigaOS4 officially supports .so libraries.
-    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    ;;
-  m68k)
-    library_names_spec='$libname.ixlibrary $libname.a'
-    # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-    ;;
-  esac
-  ;;
-
-beos*)
-  library_names_spec='${libname}${shared_ext}'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[45]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32* | cegcc*)
-  version_type=windows
-  shrext_cmds=".dll"
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$cc_basename in
-  yes,*)
-    # gcc
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname~
-      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-      fi'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-
-      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    esac
-    dynamic_linker='Win32 ld.exe'
-    ;;
-
-  *,cl*)
-    # Native MSVC
-    libname_spec='$name'
-    soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-    library_names_spec='${libname}.dll.lib'
-
-    case $build_os in
-    mingw*)
-      sys_lib_search_path_spec=
-      lt_save_ifs=$IFS
-      IFS=';'
-      for lt_path in $LIB
-      do
-        IFS=$lt_save_ifs
-        # Let DOS variable expansion print the short 8.3 style file name.
-        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-      done
-      IFS=$lt_save_ifs
-      # Convert to MSYS style.
-      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
-      ;;
-    cygwin*)
-      # Convert to unix form, then to dos form, then back to unix form
-      # but this time dos style (no spaces!) so that the unix form looks
-      # like /cygdrive/c/PROGRA~1:/cygdr...
-      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      ;;
-    *)
-      sys_lib_search_path_spec="$LIB"
-      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-        # It is most probably a Windows format PATH.
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      # FIXME: find the short name or the path components, as spaces are
-      # common. (e.g. "Program Files" -> "PROGRA~1")
-      ;;
-    esac
-
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-    dynamic_linker='Win32 link.exe'
-    ;;
-
-  *)
-    # Assume MSVC wrapper
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    dynamic_linker='Win32 ld.exe'
-    ;;
-  esac
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-
-  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[23].*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2.*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[01]* | freebsdelf3.[01]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
-  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-haiku*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  dynamic_linker="$host_os runtime_loader"
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-    fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  hppa*64*)
-    shrext_cmds='.sl'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
-  postinstall_cmds='chmod 555 $lib'
-  # or fails outright, so override atomically:
-  install_override_mode=555
-  ;;
-
-interix[3-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux # correct to gnu/linux during the next big refactor
-	else
-		version_type=irix
-	fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-
-  # Some binutils ld are patched to set DT_RUNPATH
-  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_shlibpath_overrides_runpath=no
-    save_LDFLAGS=$LDFLAGS
-    save_libdir=$libdir
-    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
-	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
-  lt_cv_shlibpath_overrides_runpath=yes
-fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-    LDFLAGS=$save_LDFLAGS
-    libdir=$save_libdir
-
-fi
-
-  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Append ld.so.conf contents to the search path
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsdelf*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='NetBSD ld.elf_so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-*nto* | *qnx*)
-  version_type=qnx
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='ldqnx.so'
-  ;;
-
-openbsd*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
-  need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
-    *)				need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[89] | openbsd2.[89].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
-  ;;
-
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux # correct to gnu/linux during the next big refactor
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-	;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-uts4*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
-$as_echo "$dynamic_linker" >&6; }
-test "$dynamic_linker" = no && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
-$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
-hardcode_action=
-if test -n "$hardcode_libdir_flag_spec" ||
-   test -n "$runpath_var" ||
-   test "X$hardcode_automatic" = "Xyes" ; then
-
-  # We can hardcode non-existent directories.
-  if test "$hardcode_direct" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
-     test "$hardcode_minus_L" != no; then
-    # Linking always hardcodes the temporary library directory.
-    hardcode_action=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    hardcode_action=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  hardcode_action=unsupported
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
-$as_echo "$hardcode_action" >&6; }
-
-if test "$hardcode_action" = relink ||
-   test "$inherit_rpath" = yes; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-
-
-
-
-
-
-  if test "x$enable_dlopen" != xyes; then
-  enable_dlopen=unknown
-  enable_dlopen_self=unknown
-  enable_dlopen_self_static=unknown
-else
-  lt_cv_dlopen=no
-  lt_cv_dlopen_libs=
-
-  case $host_os in
-  beos*)
-    lt_cv_dlopen="load_add_on"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ;;
-
-  mingw* | pw32* | cegcc*)
-    lt_cv_dlopen="LoadLibrary"
-    lt_cv_dlopen_libs=
-    ;;
-
-  cygwin*)
-    lt_cv_dlopen="dlopen"
-    lt_cv_dlopen_libs=
-    ;;
-
-  darwin*)
-  # if libdl is installed we need to link against it
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dl_dlopen=yes
-else
-  ac_cv_lib_dl_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
-
-    lt_cv_dlopen="dyld"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-
-fi
-
-    ;;
-
-  *)
-    ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
-if test "x$ac_cv_func_shl_load" = xyes; then :
-  lt_cv_dlopen="shl_load"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
-$as_echo_n "checking for shl_load in -ldld... " >&6; }
-if ${ac_cv_lib_dld_shl_load+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char shl_load ();
-int
-main ()
-{
-return shl_load ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dld_shl_load=yes
-else
-  ac_cv_lib_dld_shl_load=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
-$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
-if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
-  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
-else
-  ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
-if test "x$ac_cv_func_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dl_dlopen=yes
-else
-  ac_cv_lib_dl_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
-$as_echo_n "checking for dlopen in -lsvld... " >&6; }
-if ${ac_cv_lib_svld_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lsvld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_svld_dlopen=yes
-else
-  ac_cv_lib_svld_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
-$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
-if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
-$as_echo_n "checking for dld_link in -ldld... " >&6; }
-if ${ac_cv_lib_dld_dld_link+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dld_link ();
-int
-main ()
-{
-return dld_link ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dld_dld_link=yes
-else
-  ac_cv_lib_dld_dld_link=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
-$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
-if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
-  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-    ;;
-  esac
-
-  if test "x$lt_cv_dlopen" != xno; then
-    enable_dlopen=yes
-  else
-    enable_dlopen=no
-  fi
-
-  case $lt_cv_dlopen in
-  dlopen)
-    save_CPPFLAGS="$CPPFLAGS"
-    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-
-    save_LDFLAGS="$LDFLAGS"
-    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-
-    save_LIBS="$LIBS"
-    LIBS="$lt_cv_dlopen_libs $LIBS"
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
-$as_echo_n "checking whether a program can dlopen itself... " >&6; }
-if ${lt_cv_dlopen_self+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  	  if test "$cross_compiling" = yes; then :
-  lt_cv_dlopen_self=cross
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-#line $LINENO "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL		RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL		DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL		0
-#  endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW		DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW	RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW	DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW	0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
-
-/* When -fvisbility=hidden is used, assume the code has been annotated
-   correspondingly for the symbols needed.  */
-#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-int fnord () __attribute__((visibility("default")));
-#endif
-
-int fnord () { return 42; }
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
-
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else
-        {
-	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
-          else puts (dlerror ());
-	}
-      /* dlclose (self); */
-    }
-  else
-    puts (dlerror ());
-
-  return status;
-}
-_LT_EOF
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) >&5 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
-      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
-      x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
-    esac
-  else :
-    # compilation failed
-    lt_cv_dlopen_self=no
-  fi
-fi
-rm -fr conftest*
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
-$as_echo "$lt_cv_dlopen_self" >&6; }
-
-    if test "x$lt_cv_dlopen_self" = xyes; then
-      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
-$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
-if ${lt_cv_dlopen_self_static+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  	  if test "$cross_compiling" = yes; then :
-  lt_cv_dlopen_self_static=cross
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-#line $LINENO "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL		RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL		DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL		0
-#  endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW		DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW	RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW	DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW	0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
-
-/* When -fvisbility=hidden is used, assume the code has been annotated
-   correspondingly for the symbols needed.  */
-#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-int fnord () __attribute__((visibility("default")));
-#endif
-
-int fnord () { return 42; }
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
-
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else
-        {
-	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
-          else puts (dlerror ());
-	}
-      /* dlclose (self); */
-    }
-  else
-    puts (dlerror ());
-
-  return status;
-}
-_LT_EOF
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) >&5 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
-      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
-      x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
-    esac
-  else :
-    # compilation failed
-    lt_cv_dlopen_self_static=no
-  fi
-fi
-rm -fr conftest*
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
-$as_echo "$lt_cv_dlopen_self_static" >&6; }
-    fi
-
-    CPPFLAGS="$save_CPPFLAGS"
-    LDFLAGS="$save_LDFLAGS"
-    LIBS="$save_LIBS"
-    ;;
-  esac
-
-  case $lt_cv_dlopen_self in
-  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
-  *) enable_dlopen_self=unknown ;;
-  esac
-
-  case $lt_cv_dlopen_self_static in
-  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-  *) enable_dlopen_self_static=unknown ;;
-  esac
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-striplib=
-old_striplib=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
-$as_echo_n "checking whether stripping libraries is possible... " >&6; }
-if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
-  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-# FIXME - insert some real tests, host_os isn't really good enough
-  case $host_os in
-  darwin*)
-    if test -n "$STRIP" ; then
-      striplib="$STRIP -x"
-      old_striplib="$STRIP -S"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-    else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-    fi
-    ;;
-  *)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-    ;;
-  esac
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-  # Report which library types will actually be built
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
-$as_echo_n "checking if libtool supports shared libraries... " >&6; }
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
-$as_echo "$can_build_shared" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
-$as_echo_n "checking whether to build shared libraries... " >&6; }
-  test "$can_build_shared" = "no" && enable_shared=no
-
-  # On AIX, shared libraries and static libraries use the same namespace, and
-  # are all built from PIC.
-  case $host_os in
-  aix3*)
-    test "$enable_shared" = yes && enable_static=no
-    if test -n "$RANLIB"; then
-      archive_cmds="$archive_cmds~\$RANLIB \$lib"
-      postinstall_cmds='$RANLIB $lib'
-    fi
-    ;;
-
-  aix[4-9]*)
-    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-      test "$enable_shared" = yes && enable_static=no
-    fi
-    ;;
-  esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
-$as_echo "$enable_shared" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
-$as_echo_n "checking whether to build static libraries... " >&6; }
-  # Make sure either enable_shared or enable_static is yes.
-  test "$enable_shared" = yes || enable_static=yes
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
-$as_echo "$enable_static" >&6; }
-
-
-
-
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-CC="$lt_save_CC"
-
-      if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
-    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
-    (test "X$CXX" != "Xg++"))) ; then
-  ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5
-$as_echo_n "checking how to run the C++ preprocessor... " >&6; }
-if test -z "$CXXCPP"; then
-  if ${ac_cv_prog_CXXCPP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-      # Double quotes because CXXCPP needs to be expanded
-    for CXXCPP in "$CXX -E" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_cxx_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-		     Syntax error
-_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  break
-fi
-
-    done
-    ac_cv_prog_CXXCPP=$CXXCPP
-
-fi
-  CXXCPP=$ac_cv_prog_CXXCPP
-else
-  ac_cv_prog_CXXCPP=$CXXCPP
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5
-$as_echo "$CXXCPP" >&6; }
-ac_preproc_ok=false
-for ac_cxx_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-		     Syntax error
-_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-else
-  _lt_caught_CXX_error=yes
-fi
-
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-archive_cmds_need_lc_CXX=no
-allow_undefined_flag_CXX=
-always_export_symbols_CXX=no
-archive_expsym_cmds_CXX=
-compiler_needs_object_CXX=no
-export_dynamic_flag_spec_CXX=
-hardcode_direct_CXX=no
-hardcode_direct_absolute_CXX=no
-hardcode_libdir_flag_spec_CXX=
-hardcode_libdir_separator_CXX=
-hardcode_minus_L_CXX=no
-hardcode_shlibpath_var_CXX=unsupported
-hardcode_automatic_CXX=no
-inherit_rpath_CXX=no
-module_cmds_CXX=
-module_expsym_cmds_CXX=
-link_all_deplibs_CXX=unknown
-old_archive_cmds_CXX=$old_archive_cmds
-reload_flag_CXX=$reload_flag
-reload_cmds_CXX=$reload_cmds
-no_undefined_flag_CXX=
-whole_archive_flag_spec_CXX=
-enable_shared_with_static_runtimes_CXX=no
-
-# Source file extension for C++ test sources.
-ac_ext=cpp
-
-# Object file extension for compiled C++ test sources.
-objext=o
-objext_CXX=$objext
-
-# No sense in running all these tests if we already determined that
-# the CXX compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_caught_CXX_error" != yes; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="int some_variable = 0;"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code='int main(int, char *[]) { return(0); }'
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-
-  # save warnings/boilerplate of simple test code
-  ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-
-  ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC=$CC
-  lt_save_CFLAGS=$CFLAGS
-  lt_save_LD=$LD
-  lt_save_GCC=$GCC
-  GCC=$GXX
-  lt_save_with_gnu_ld=$with_gnu_ld
-  lt_save_path_LD=$lt_cv_path_LD
-  if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
-    lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
-  else
-    $as_unset lt_cv_prog_gnu_ld
-  fi
-  if test -n "${lt_cv_path_LDCXX+set}"; then
-    lt_cv_path_LD=$lt_cv_path_LDCXX
-  else
-    $as_unset lt_cv_path_LD
-  fi
-  test -z "${LDCXX+set}" || LD=$LDCXX
-  CC=${CXX-"c++"}
-  CFLAGS=$CXXFLAGS
-  compiler=$CC
-  compiler_CXX=$CC
-  for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
-
-
-  if test -n "$compiler"; then
-    # We don't want -fno-exception when compiling C++ code, so set the
-    # no_builtin_flag separately
-    if test "$GXX" = yes; then
-      lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
-    else
-      lt_prog_compiler_no_builtin_flag_CXX=
-    fi
-
-    if test "$GXX" = yes; then
-      # Set up default GNU C++ configuration
-
-
-
-# Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then :
-  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
-else
-  with_gnu_ld=no
-fi
-
-ac_prog=ld
-if test "$GCC" = yes; then
-  # Check if gcc -print-prog-name=ld gives a path.
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
-$as_echo_n "checking for ld used by $CC... " >&6; }
-  case $host in
-  *-*-mingw*)
-    # gcc leaves a trailing carriage return which upsets mingw
-    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-  *)
-    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-  esac
-  case $ac_prog in
-    # Accept absolute paths.
-    [\\/]* | ?:[\\/]*)
-      re_direlt='/[^/][^/]*/\.\./'
-      # Canonicalize the pathname of ld
-      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
-      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
-	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
-      done
-      test -z "$LD" && LD="$ac_prog"
-      ;;
-  "")
-    # If it fails, then pretend we aren't using GCC.
-    ac_prog=ld
-    ;;
-  *)
-    # If it is relative, then search for the first ld in PATH.
-    with_gnu_ld=unknown
-    ;;
-  esac
-elif test "$with_gnu_ld" = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
-$as_echo_n "checking for GNU ld... " >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
-$as_echo_n "checking for non-GNU ld... " >&6; }
-fi
-if ${lt_cv_path_LD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$LD"; then
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  for ac_dir in $PATH; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD="$ac_dir/$ac_prog"
-      # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some variants of GNU ld only accept -v.
-      # Break only if it was the GNU/non-GNU ld that we prefer.
-      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-      *GNU* | *'with BFD'*)
-	test "$with_gnu_ld" != no && break
-	;;
-      *)
-	test "$with_gnu_ld" != yes && break
-	;;
-      esac
-    fi
-  done
-  IFS="$lt_save_ifs"
-else
-  lt_cv_path_LD="$LD" # Let the user override the test with a path.
-fi
-fi
-
-LD="$lt_cv_path_LD"
-if test -n "$LD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
-$as_echo "$LD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
-$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
-if ${lt_cv_prog_gnu_ld+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  # I'd rather use --version here, but apparently some GNU lds only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
-  lt_cv_prog_gnu_ld=yes
-  ;;
-*)
-  lt_cv_prog_gnu_ld=no
-  ;;
-esac
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
-$as_echo "$lt_cv_prog_gnu_ld" >&6; }
-with_gnu_ld=$lt_cv_prog_gnu_ld
-
-
-
-
-
-
-
-      # Check if GNU C++ uses GNU ld as the underlying linker, since the
-      # archiving commands below assume that GNU ld is being used.
-      if test "$with_gnu_ld" = yes; then
-        archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-        archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-
-        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-        export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-
-        # If archive_cmds runs LD, not CC, wlarc should be empty
-        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
-        #     investigate it a little bit more. (MM)
-        wlarc='${wl}'
-
-        # ancient GNU ld didn't support --whole-archive et. al.
-        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
-	  $GREP 'no-whole-archive' > /dev/null; then
-          whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-        else
-          whole_archive_flag_spec_CXX=
-        fi
-      else
-        with_gnu_ld=no
-        wlarc=
-
-        # A generic and very simple default shared library creation
-        # command for GNU C++ for the case where it uses the native
-        # linker, instead of GNU ld.  If possible, this setting should
-        # overridden to take advantage of the native linker features on
-        # the platform it is being used on.
-        archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-      fi
-
-      # Commands to make compiler produce verbose output that lists
-      # what "hidden" libraries, object files and flags are used when
-      # linking a shared library.
-      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-
-    else
-      GXX=no
-      with_gnu_ld=no
-      wlarc=
-    fi
-
-    # PORTME: fill in a description of your system's C++ link characteristics
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
-    ld_shlibs_CXX=yes
-    case $host_os in
-      aix3*)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=no
-        ;;
-      aix[4-9]*)
-        if test "$host_cpu" = ia64; then
-          # On IA64, the linker does run time linking by default, so we don't
-          # have to do anything special.
-          aix_use_runtimelinking=no
-          exp_sym_flag='-Bexport'
-          no_entry_flag=""
-        else
-          aix_use_runtimelinking=no
-
-          # Test if we are trying to use run time linking or normal
-          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-          # need to do runtime linking.
-          case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
-	    for ld_flag in $LDFLAGS; do
-	      case $ld_flag in
-	      *-brtl*)
-	        aix_use_runtimelinking=yes
-	        break
-	        ;;
-	      esac
-	    done
-	    ;;
-          esac
-
-          exp_sym_flag='-bexport'
-          no_entry_flag='-bnoentry'
-        fi
-
-        # When large executables or shared objects are built, AIX ld can
-        # have problems creating the table of contents.  If linking a library
-        # or program results in "error TOC overflow" add -mminimal-toc to
-        # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-        archive_cmds_CXX=''
-        hardcode_direct_CXX=yes
-        hardcode_direct_absolute_CXX=yes
-        hardcode_libdir_separator_CXX=':'
-        link_all_deplibs_CXX=yes
-        file_list_spec_CXX='${wl}-f,'
-
-        if test "$GXX" = yes; then
-          case $host_os in aix4.[012]|aix4.[012].*)
-          # We only want to do this on AIX 4.2 and lower, the check
-          # below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" &&
-	     strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-	  then
-	    # We have reworked collect2
-	    :
-	  else
-	    # We have old collect2
-	    hardcode_direct_CXX=unsupported
-	    # It fails to find uninstalled libraries when the uninstalled
-	    # path is not listed in the libpath.  Setting hardcode_minus_L
-	    # to unsupported forces relinking
-	    hardcode_minus_L_CXX=yes
-	    hardcode_libdir_flag_spec_CXX='-L$libdir'
-	    hardcode_libdir_separator_CXX=
-	  fi
-          esac
-          shared_flag='-shared'
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag="$shared_flag "'${wl}-G'
-	  fi
-        else
-          # not using gcc
-          if test "$host_cpu" = ia64; then
-	  # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-	  # chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-          else
-	    if test "$aix_use_runtimelinking" = yes; then
-	      shared_flag='${wl}-G'
-	    else
-	      shared_flag='${wl}-bM:SRE'
-	    fi
-          fi
-        fi
-
-        export_dynamic_flag_spec_CXX='${wl}-bexpall'
-        # It seems that -bexpall does not export symbols beginning with
-        # underscore (_), so it is better to generate a list of symbols to
-	# export.
-        always_export_symbols_CXX=yes
-        if test "$aix_use_runtimelinking" = yes; then
-          # Warning - without using the other runtime loading flags (-brtl),
-          # -berok will link without error, but may produce a broken library.
-          allow_undefined_flag_CXX='-berok'
-          # Determine the default libpath from the value encoded in an empty
-          # executable.
-          if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath__CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
-
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath__CXX"; then
-    lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath__CXX"; then
-    lt_cv_aix_libpath__CXX="/usr/lib:/lib"
-  fi
-
-fi
-
-  aix_libpath=$lt_cv_aix_libpath__CXX
-fi
-
-          hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
-
-          archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-        else
-          if test "$host_cpu" = ia64; then
-	    hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
-	    allow_undefined_flag_CXX="-z nodefs"
-	    archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-          else
-	    # Determine the default libpath from the value encoded in an
-	    # empty executable.
-	    if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath__CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
-
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath__CXX"; then
-    lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath__CXX"; then
-    lt_cv_aix_libpath__CXX="/usr/lib:/lib"
-  fi
-
-fi
-
-  aix_libpath=$lt_cv_aix_libpath__CXX
-fi
-
-	    hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
-	    # Warning - without using the other run time loading flags,
-	    # -berok will link without error, but may produce a broken library.
-	    no_undefined_flag_CXX=' ${wl}-bernotok'
-	    allow_undefined_flag_CXX=' ${wl}-berok'
-	    if test "$with_gnu_ld" = yes; then
-	      # We only use this code for GNU lds that support --whole-archive.
-	      whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	    else
-	      # Exported symbols can be pulled into shared objects from archives
-	      whole_archive_flag_spec_CXX='$convenience'
-	    fi
-	    archive_cmds_need_lc_CXX=yes
-	    # This is similar to how AIX traditionally builds its shared
-	    # libraries.
-	    archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-          fi
-        fi
-        ;;
-
-      beos*)
-	if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	  allow_undefined_flag_CXX=unsupported
-	  # Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
-	  # support --undefined.  This deserves some investigation.  FIXME
-	  archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	else
-	  ld_shlibs_CXX=no
-	fi
-	;;
-
-      chorus*)
-        case $cc_basename in
-          *)
-	  # FIXME: insert proper C++ library support
-	  ld_shlibs_CXX=no
-	  ;;
-        esac
-        ;;
-
-      cygwin* | mingw* | pw32* | cegcc*)
-	case $GXX,$cc_basename in
-	,cl* | no,cl*)
-	  # Native MSVC
-	  # hardcode_libdir_flag_spec is actually meaningless, as there is
-	  # no search path for DLLs.
-	  hardcode_libdir_flag_spec_CXX=' '
-	  allow_undefined_flag_CXX=unsupported
-	  always_export_symbols_CXX=yes
-	  file_list_spec_CXX='@'
-	  # Tell ltmain to make .lib files, not .a files.
-	  libext=lib
-	  # Tell ltmain to make .dll files, not .so files.
-	  shrext_cmds=".dll"
-	  # FIXME: Setting linknames here is a bad hack.
-	  archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-	  archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	      $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-	    else
-	      $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-	    fi~
-	    $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-	    linknames='
-	  # The linker will not automatically build a static lib if we build a DLL.
-	  # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true'
-	  enable_shared_with_static_runtimes_CXX=yes
-	  # Don't use ranlib
-	  old_postinstall_cmds_CXX='chmod 644 $oldlib'
-	  postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~
-	    lt_tool_outputfile="@TOOL_OUTPUT@"~
-	    case $lt_outputfile in
-	      *.exe|*.EXE) ;;
-	      *)
-		lt_outputfile="$lt_outputfile.exe"
-		lt_tool_outputfile="$lt_tool_outputfile.exe"
-		;;
-	    esac~
-	    func_to_tool_file "$lt_outputfile"~
-	    if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-	      $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-	      $RM "$lt_outputfile.manifest";
-	    fi'
-	  ;;
-	*)
-	  # g++
-	  # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
-	  # as there is no search path for DLLs.
-	  hardcode_libdir_flag_spec_CXX='-L$libdir'
-	  export_dynamic_flag_spec_CXX='${wl}--export-all-symbols'
-	  allow_undefined_flag_CXX=unsupported
-	  always_export_symbols_CXX=no
-	  enable_shared_with_static_runtimes_CXX=yes
-
-	  if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-	    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	    # If the export-symbols file already is a .def file (1st line
-	    # is EXPORTS), use it as is; otherwise, prepend...
-	    archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	      cp $export_symbols $output_objdir/$soname.def;
-	    else
-	      echo EXPORTS > $output_objdir/$soname.def;
-	      cat $export_symbols >> $output_objdir/$soname.def;
-	    fi~
-	    $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	  else
-	    ld_shlibs_CXX=no
-	  fi
-	  ;;
-	esac
-	;;
-      darwin* | rhapsody*)
-
-
-  archive_cmds_need_lc_CXX=no
-  hardcode_direct_CXX=no
-  hardcode_automatic_CXX=yes
-  hardcode_shlibpath_var_CXX=unsupported
-  if test "$lt_cv_ld_force_load" = "yes"; then
-    whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-
-  else
-    whole_archive_flag_spec_CXX=''
-  fi
-  link_all_deplibs_CXX=yes
-  allow_undefined_flag_CXX="$_lt_dar_allow_undefined"
-  case $cc_basename in
-     ifort*) _lt_dar_can_shared=yes ;;
-     *) _lt_dar_can_shared=$GCC ;;
-  esac
-  if test "$_lt_dar_can_shared" = "yes"; then
-    output_verbose_link_cmd=func_echo_all
-    archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-    module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-       if test "$lt_cv_apple_cc_single_mod" != "yes"; then
-      archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
-      archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
-    fi
-
-  else
-  ld_shlibs_CXX=no
-  fi
-
-	;;
-
-      dgux*)
-        case $cc_basename in
-          ec++*)
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-          ghcx*)
-	    # Green Hills C++ Compiler
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-          *)
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-        esac
-        ;;
-
-      freebsd2.*)
-        # C++ shared libraries reported to be fairly broken before
-	# switch to ELF
-        ld_shlibs_CXX=no
-        ;;
-
-      freebsd-elf*)
-        archive_cmds_need_lc_CXX=no
-        ;;
-
-      freebsd* | dragonfly*)
-        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
-        # conventions
-        ld_shlibs_CXX=yes
-        ;;
-
-      haiku*)
-        archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-        link_all_deplibs_CXX=yes
-        ;;
-
-      hpux9*)
-        hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
-        hardcode_libdir_separator_CXX=:
-        export_dynamic_flag_spec_CXX='${wl}-E'
-        hardcode_direct_CXX=yes
-        hardcode_minus_L_CXX=yes # Not in the search PATH,
-				             # but as the default
-				             # location of the library.
-
-        case $cc_basename in
-          CC*)
-            # FIXME: insert proper C++ library support
-            ld_shlibs_CXX=no
-            ;;
-          aCC*)
-            archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-            # Commands to make compiler produce verbose output that lists
-            # what "hidden" libraries, object files and flags are used when
-            # linking a shared library.
-            #
-            # There doesn't appear to be a way to prevent this compiler from
-            # explicitly linking system object files so we need to strip them
-            # from the output so that they don't get included in the library
-            # dependencies.
-            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-            ;;
-          *)
-            if test "$GXX" = yes; then
-              archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-            else
-              # FIXME: insert proper C++ library support
-              ld_shlibs_CXX=no
-            fi
-            ;;
-        esac
-        ;;
-
-      hpux10*|hpux11*)
-        if test $with_gnu_ld = no; then
-	  hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
-	  hardcode_libdir_separator_CXX=:
-
-          case $host_cpu in
-            hppa*64*|ia64*)
-              ;;
-            *)
-	      export_dynamic_flag_spec_CXX='${wl}-E'
-              ;;
-          esac
-        fi
-        case $host_cpu in
-          hppa*64*|ia64*)
-            hardcode_direct_CXX=no
-            hardcode_shlibpath_var_CXX=no
-            ;;
-          *)
-            hardcode_direct_CXX=yes
-            hardcode_direct_absolute_CXX=yes
-            hardcode_minus_L_CXX=yes # Not in the search PATH,
-					         # but as the default
-					         # location of the library.
-            ;;
-        esac
-
-        case $cc_basename in
-          CC*)
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-          aCC*)
-	    case $host_cpu in
-	      hppa*64*)
-	        archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	        ;;
-	      ia64*)
-	        archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	        ;;
-	      *)
-	        archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	        ;;
-	    esac
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-	    ;;
-          *)
-	    if test "$GXX" = yes; then
-	      if test $with_gnu_ld = no; then
-	        case $host_cpu in
-	          hppa*64*)
-	            archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	            ;;
-	          ia64*)
-	            archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	            ;;
-	          *)
-	            archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	            ;;
-	        esac
-	      fi
-	    else
-	      # FIXME: insert proper C++ library support
-	      ld_shlibs_CXX=no
-	    fi
-	    ;;
-        esac
-        ;;
-
-      interix[3-9]*)
-	hardcode_direct_CXX=no
-	hardcode_shlibpath_var_CXX=no
-	hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-	export_dynamic_flag_spec_CXX='${wl}-E'
-	# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-	# Instead, shared libraries are loaded at an image base (0x10000000 by
-	# default) and relocated if they conflict, which is a slow very memory
-	# consuming and fragmenting process.  To avoid this, we pick a random,
-	# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-	# time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-	archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-	archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-	;;
-      irix5* | irix6*)
-        case $cc_basename in
-          CC*)
-	    # SGI C++
-	    archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-
-	    # Archives containing C++ object files must be created using
-	    # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
-	    # necessary to make sure instantiated templates are included
-	    # in the archive.
-	    old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
-	    ;;
-          *)
-	    if test "$GXX" = yes; then
-	      if test "$with_gnu_ld" = no; then
-	        archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	      else
-	        archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
-	      fi
-	    fi
-	    link_all_deplibs_CXX=yes
-	    ;;
-        esac
-        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-        hardcode_libdir_separator_CXX=:
-        inherit_rpath_CXX=yes
-        ;;
-
-      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-        case $cc_basename in
-          KCC*)
-	    # Kuck and Associates, Inc. (KAI) C++ Compiler
-
-	    # KCC will only create a shared library if the output file
-	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
-	    # to its proper name (with version) after linking.
-	    archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-	    archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-
-	    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-
-	    # Archives containing C++ object files must be created using
-	    # "CC -Bstatic", where "CC" is the KAI C++ compiler.
-	    old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
-	    ;;
-	  icpc* | ecpc* )
-	    # Intel C++
-	    with_gnu_ld=yes
-	    # version 8.0 and above of icpc choke on multiply defined symbols
-	    # if we add $predep_objects and $postdep_objects, however 7.1 and
-	    # earlier do not add the objects themselves.
-	    case `$CC -V 2>&1` in
-	      *"Version 7."*)
-	        archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-		archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-		;;
-	      *)  # Version 8.0 or newer
-	        tmp_idyn=
-	        case $host_cpu in
-		  ia64*) tmp_idyn=' -i_dynamic';;
-		esac
-	        archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-		archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-		;;
-	    esac
-	    archive_cmds_need_lc_CXX=no
-	    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-	    whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	    ;;
-          pgCC* | pgcpp*)
-            # Portland Group C++ compiler
-	    case `$CC -V` in
-	    *pgCC\ [1-5].* | *pgcpp\ [1-5].*)
-	      prelink_cmds_CXX='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
-		compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
-	      old_archive_cmds_CXX='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
-		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
-		$RANLIB $oldlib'
-	      archive_cmds_CXX='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-	      archive_expsym_cmds_CXX='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
-	      ;;
-	    *) # Version 6 and above use weak symbols
-	      archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-	      archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
-	      ;;
-	    esac
-
-	    hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
-	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-	    whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-            ;;
-	  cxx*)
-	    # Compaq C++
-	    archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
-
-	    runpath_var=LD_RUN_PATH
-	    hardcode_libdir_flag_spec_CXX='-rpath $libdir'
-	    hardcode_libdir_separator_CXX=:
-
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
-	    ;;
-	  xl* | mpixl* | bgxl*)
-	    # IBM XL 8.0 on PPC, with GNU ld
-	    hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-	    archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    if test "x$supports_anon_versioning" = xyes; then
-	      archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~
-		cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-		echo "local: *; };" >> $output_objdir/$libname.ver~
-		$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-	    fi
-	    ;;
-	  *)
-	    case `$CC -V 2>&1 | sed 5q` in
-	    *Sun\ C*)
-	      # Sun C++ 5.9
-	      no_undefined_flag_CXX=' -zdefs'
-	      archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	      archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
-	      hardcode_libdir_flag_spec_CXX='-R$libdir'
-	      whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	      compiler_needs_object_CXX=yes
-
-	      # Not sure whether something based on
-	      # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
-	      # would be better.
-	      output_verbose_link_cmd='func_echo_all'
-
-	      # Archives containing C++ object files must be created using
-	      # "CC -xar", where "CC" is the Sun C++ compiler.  This is
-	      # necessary to make sure instantiated templates are included
-	      # in the archive.
-	      old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
-	      ;;
-	    esac
-	    ;;
-	esac
-	;;
-
-      lynxos*)
-        # FIXME: insert proper C++ library support
-	ld_shlibs_CXX=no
-	;;
-
-      m88k*)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=no
-	;;
-
-      mvs*)
-        case $cc_basename in
-          cxx*)
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-	  *)
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-	esac
-	;;
-
-      netbsd*)
-        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	  archive_cmds_CXX='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
-	  wlarc=
-	  hardcode_libdir_flag_spec_CXX='-R$libdir'
-	  hardcode_direct_CXX=yes
-	  hardcode_shlibpath_var_CXX=no
-	fi
-	# Workaround some broken pre-1.5 toolchains
-	output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
-	;;
-
-      *nto* | *qnx*)
-        ld_shlibs_CXX=yes
-	;;
-
-      openbsd2*)
-        # C++ shared libraries are fairly broken
-	ld_shlibs_CXX=no
-	;;
-
-      openbsd*)
-	if test -f /usr/libexec/ld.so; then
-	  hardcode_direct_CXX=yes
-	  hardcode_shlibpath_var_CXX=no
-	  hardcode_direct_absolute_CXX=yes
-	  archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-	  hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	    archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
-	    export_dynamic_flag_spec_CXX='${wl}-E'
-	    whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-	  fi
-	  output_verbose_link_cmd=func_echo_all
-	else
-	  ld_shlibs_CXX=no
-	fi
-	;;
-
-      osf3* | osf4* | osf5*)
-        case $cc_basename in
-          KCC*)
-	    # Kuck and Associates, Inc. (KAI) C++ Compiler
-
-	    # KCC will only create a shared library if the output file
-	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
-	    # to its proper name (with version) after linking.
-	    archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-
-	    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-	    hardcode_libdir_separator_CXX=:
-
-	    # Archives containing C++ object files must be created using
-	    # the KAI C++ compiler.
-	    case $host in
-	      osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;;
-	      *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;;
-	    esac
-	    ;;
-          RCC*)
-	    # Rational C++ 2.4.1
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-          cxx*)
-	    case $host in
-	      osf3*)
-	        allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
-	        archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-		;;
-	      *)
-	        allow_undefined_flag_CXX=' -expect_unresolved \*'
-	        archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	        archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
-	          echo "-hidden">> $lib.exp~
-	          $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~
-	          $RM $lib.exp'
-	        hardcode_libdir_flag_spec_CXX='-rpath $libdir'
-		;;
-	    esac
-
-	    hardcode_libdir_separator_CXX=:
-
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-	    ;;
-	  *)
-	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-	      allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
-	      case $host in
-	        osf3*)
-	          archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-		  ;;
-	        *)
-	          archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-		  ;;
-	      esac
-
-	      hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-	      hardcode_libdir_separator_CXX=:
-
-	      # Commands to make compiler produce verbose output that lists
-	      # what "hidden" libraries, object files and flags are used when
-	      # linking a shared library.
-	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-
-	    else
-	      # FIXME: insert proper C++ library support
-	      ld_shlibs_CXX=no
-	    fi
-	    ;;
-        esac
-        ;;
-
-      psos*)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=no
-        ;;
-
-      sunos4*)
-        case $cc_basename in
-          CC*)
-	    # Sun C++ 4.x
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-          lcc*)
-	    # Lucid
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-          *)
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-        esac
-        ;;
-
-      solaris*)
-        case $cc_basename in
-          CC* | sunCC*)
-	    # Sun C++ 4.2, 5.x and Centerline C++
-            archive_cmds_need_lc_CXX=yes
-	    no_undefined_flag_CXX=' -zdefs'
-	    archive_cmds_CXX='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	    archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	      $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-	    hardcode_libdir_flag_spec_CXX='-R$libdir'
-	    hardcode_shlibpath_var_CXX=no
-	    case $host_os in
-	      solaris2.[0-5] | solaris2.[0-5].*) ;;
-	      *)
-		# The compiler driver will combine and reorder linker options,
-		# but understands `-z linker_flag'.
-	        # Supported since Solaris 2.6 (maybe 2.5.1?)
-		whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract'
-	        ;;
-	    esac
-	    link_all_deplibs_CXX=yes
-
-	    output_verbose_link_cmd='func_echo_all'
-
-	    # Archives containing C++ object files must be created using
-	    # "CC -xar", where "CC" is the Sun C++ compiler.  This is
-	    # necessary to make sure instantiated templates are included
-	    # in the archive.
-	    old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
-	    ;;
-          gcx*)
-	    # Green Hills C++ Compiler
-	    archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-
-	    # The C++ compiler must be used to create the archive.
-	    old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
-	    ;;
-          *)
-	    # GNU C++ compiler with Solaris linker
-	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-	      no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
-	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
-	        archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-	        archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-		  $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-	        # Commands to make compiler produce verbose output that lists
-	        # what "hidden" libraries, object files and flags are used when
-	        # linking a shared library.
-	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-	      else
-	        # g++ 2.7 appears to require `-G' NOT `-shared' on this
-	        # platform.
-	        archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-	        archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-		  $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-	        # Commands to make compiler produce verbose output that lists
-	        # what "hidden" libraries, object files and flags are used when
-	        # linking a shared library.
-	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-	      fi
-
-	      hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
-	      case $host_os in
-		solaris2.[0-5] | solaris2.[0-5].*) ;;
-		*)
-		  whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-		  ;;
-	      esac
-	    fi
-	    ;;
-        esac
-        ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      no_undefined_flag_CXX='${wl}-z,text'
-      archive_cmds_need_lc_CXX=no
-      hardcode_shlibpath_var_CXX=no
-      runpath_var='LD_RUN_PATH'
-
-      case $cc_basename in
-        CC*)
-	  archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-      esac
-      ;;
-
-      sysv5* | sco3.2v5* | sco5v6*)
-	# Note: We can NOT use -z defs as we might desire, because we do not
-	# link with -lc, and that would cause any symbols used from libc to
-	# always be unresolved, which means just about no library would
-	# ever link correctly.  If we're not using GNU ld we use -z text
-	# though, which does catch some bad symbols but isn't as heavy-handed
-	# as -z defs.
-	no_undefined_flag_CXX='${wl}-z,text'
-	allow_undefined_flag_CXX='${wl}-z,nodefs'
-	archive_cmds_need_lc_CXX=no
-	hardcode_shlibpath_var_CXX=no
-	hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir'
-	hardcode_libdir_separator_CXX=':'
-	link_all_deplibs_CXX=yes
-	export_dynamic_flag_spec_CXX='${wl}-Bexport'
-	runpath_var='LD_RUN_PATH'
-
-	case $cc_basename in
-          CC*)
-	    archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~
-	      '"$old_archive_cmds_CXX"
-	    reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~
-	      '"$reload_cmds_CXX"
-	    ;;
-	  *)
-	    archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    ;;
-	esac
-      ;;
-
-      tandem*)
-        case $cc_basename in
-          NCC*)
-	    # NonStop-UX NCC 3.20
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-          *)
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-        esac
-        ;;
-
-      vxworks*)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=no
-        ;;
-
-      *)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=no
-        ;;
-    esac
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
-$as_echo "$ld_shlibs_CXX" >&6; }
-    test "$ld_shlibs_CXX" = no && can_build_shared=no
-
-    GCC_CXX="$GXX"
-    LD_CXX="$LD"
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    # Dependencies to place before and after the object being linked:
-predep_objects_CXX=
-postdep_objects_CXX=
-predeps_CXX=
-postdeps_CXX=
-compiler_lib_search_path_CXX=
-
-cat > conftest.$ac_ext <<_LT_EOF
-class Foo
-{
-public:
-  Foo (void) { a = 0; }
-private:
-  int a;
-};
-_LT_EOF
-
-
-_lt_libdeps_save_CFLAGS=$CFLAGS
-case "$CC $CFLAGS " in #(
-*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
-*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
-*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
-esac
-
-if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  # Parse the compiler output and extract the necessary
-  # objects, libraries and library flags.
-
-  # Sentinel used to keep track of whether or not we are before
-  # the conftest object file.
-  pre_test_object_deps_done=no
-
-  for p in `eval "$output_verbose_link_cmd"`; do
-    case ${prev}${p} in
-
-    -L* | -R* | -l*)
-       # Some compilers place space between "-{L,R}" and the path.
-       # Remove the space.
-       if test $p = "-L" ||
-          test $p = "-R"; then
-	 prev=$p
-	 continue
-       fi
-
-       # Expand the sysroot to ease extracting the directories later.
-       if test -z "$prev"; then
-         case $p in
-         -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
-         -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
-         -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
-         esac
-       fi
-       case $p in
-       =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
-       esac
-       if test "$pre_test_object_deps_done" = no; then
-	 case ${prev} in
-	 -L | -R)
-	   # Internal compiler library paths should come after those
-	   # provided the user.  The postdeps already come after the
-	   # user supplied libs so there is no need to process them.
-	   if test -z "$compiler_lib_search_path_CXX"; then
-	     compiler_lib_search_path_CXX="${prev}${p}"
-	   else
-	     compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}"
-	   fi
-	   ;;
-	 # The "-l" case would never come before the object being
-	 # linked, so don't bother handling this case.
-	 esac
-       else
-	 if test -z "$postdeps_CXX"; then
-	   postdeps_CXX="${prev}${p}"
-	 else
-	   postdeps_CXX="${postdeps_CXX} ${prev}${p}"
-	 fi
-       fi
-       prev=
-       ;;
-
-    *.lto.$objext) ;; # Ignore GCC LTO objects
-    *.$objext)
-       # This assumes that the test object file only shows up
-       # once in the compiler output.
-       if test "$p" = "conftest.$objext"; then
-	 pre_test_object_deps_done=yes
-	 continue
-       fi
-
-       if test "$pre_test_object_deps_done" = no; then
-	 if test -z "$predep_objects_CXX"; then
-	   predep_objects_CXX="$p"
-	 else
-	   predep_objects_CXX="$predep_objects_CXX $p"
-	 fi
-       else
-	 if test -z "$postdep_objects_CXX"; then
-	   postdep_objects_CXX="$p"
-	 else
-	   postdep_objects_CXX="$postdep_objects_CXX $p"
-	 fi
-       fi
-       ;;
-
-    *) ;; # Ignore the rest.
-
-    esac
-  done
-
-  # Clean up.
-  rm -f a.out a.exe
-else
-  echo "libtool.m4: error: problem compiling CXX test program"
-fi
-
-$RM -f confest.$objext
-CFLAGS=$_lt_libdeps_save_CFLAGS
-
-# PORTME: override above test on systems where it is broken
-case $host_os in
-interix[3-9]*)
-  # Interix 3.5 installs completely hosed .la files for C++, so rather than
-  # hack all around it, let's just trust "g++" to DTRT.
-  predep_objects_CXX=
-  postdep_objects_CXX=
-  postdeps_CXX=
-  ;;
-
-linux*)
-  case `$CC -V 2>&1 | sed 5q` in
-  *Sun\ C*)
-    # Sun C++ 5.9
-
-    # The more standards-conforming stlport4 library is
-    # incompatible with the Cstd library. Avoid specifying
-    # it if it's in CXXFLAGS. Ignore libCrun as
-    # -library=stlport4 depends on it.
-    case " $CXX $CXXFLAGS " in
-    *" -library=stlport4 "*)
-      solaris_use_stlport4=yes
-      ;;
-    esac
-
-    if test "$solaris_use_stlport4" != yes; then
-      postdeps_CXX='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
-
-solaris*)
-  case $cc_basename in
-  CC* | sunCC*)
-    # The more standards-conforming stlport4 library is
-    # incompatible with the Cstd library. Avoid specifying
-    # it if it's in CXXFLAGS. Ignore libCrun as
-    # -library=stlport4 depends on it.
-    case " $CXX $CXXFLAGS " in
-    *" -library=stlport4 "*)
-      solaris_use_stlport4=yes
-      ;;
-    esac
-
-    # Adding this requires a known-good setup of shared libraries for
-    # Sun compiler versions before 5.6, else PIC objects from an old
-    # archive will be linked into the output, leading to subtle bugs.
-    if test "$solaris_use_stlport4" != yes; then
-      postdeps_CXX='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
-esac
-
-
-case " $postdeps_CXX " in
-*" -lc "*) archive_cmds_need_lc_CXX=no ;;
-esac
- compiler_lib_search_dirs_CXX=
-if test -n "${compiler_lib_search_path_CXX}"; then
- compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    lt_prog_compiler_wl_CXX=
-lt_prog_compiler_pic_CXX=
-lt_prog_compiler_static_CXX=
-
-
-  # C++ specific cases for pic, static, wl, etc.
-  if test "$GXX" = yes; then
-    lt_prog_compiler_wl_CXX='-Wl,'
-    lt_prog_compiler_static_CXX='-static'
-
-    case $host_os in
-    aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static_CXX='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            lt_prog_compiler_pic_CXX='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
-            lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-    mingw* | cygwin* | os2* | pw32* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
-      ;;
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      lt_prog_compiler_pic_CXX='-fno-common'
-      ;;
-    *djgpp*)
-      # DJGPP does not support shared libraries at all
-      lt_prog_compiler_pic_CXX=
-      ;;
-    haiku*)
-      # PIC is the default for Haiku.
-      # The "-static" flag exists, but is broken.
-      lt_prog_compiler_static_CXX=
-      ;;
-    interix[3-9]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	lt_prog_compiler_pic_CXX=-Kconform_pic
-      fi
-      ;;
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-	;;
-      *)
-	lt_prog_compiler_pic_CXX='-fPIC'
-	;;
-      esac
-      ;;
-    *qnx* | *nto*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic_CXX='-fPIC -shared'
-      ;;
-    *)
-      lt_prog_compiler_pic_CXX='-fPIC'
-      ;;
-    esac
-  else
-    case $host_os in
-      aix[4-9]*)
-	# All AIX code is PIC.
-	if test "$host_cpu" = ia64; then
-	  # AIX 5 now supports IA64 processor
-	  lt_prog_compiler_static_CXX='-Bstatic'
-	else
-	  lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
-	fi
-	;;
-      chorus*)
-	case $cc_basename in
-	cxch68*)
-	  # Green Hills C++ Compiler
-	  # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
-	  ;;
-	esac
-	;;
-      mingw* | cygwin* | os2* | pw32* | cegcc*)
-	# This hack is so that the source file can tell whether it is being
-	# built for inclusion in a dll (and should export symbols for example).
-	lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
-	;;
-      dgux*)
-	case $cc_basename in
-	  ec++*)
-	    lt_prog_compiler_pic_CXX='-KPIC'
-	    ;;
-	  ghcx*)
-	    # Green Hills C++ Compiler
-	    lt_prog_compiler_pic_CXX='-pic'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      freebsd* | dragonfly*)
-	# FreeBSD uses GNU C++
-	;;
-      hpux9* | hpux10* | hpux11*)
-	case $cc_basename in
-	  CC*)
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
-	    if test "$host_cpu" != ia64; then
-	      lt_prog_compiler_pic_CXX='+Z'
-	    fi
-	    ;;
-	  aCC*)
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
-	    case $host_cpu in
-	    hppa*64*|ia64*)
-	      # +Z the default
-	      ;;
-	    *)
-	      lt_prog_compiler_pic_CXX='+Z'
-	      ;;
-	    esac
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      interix*)
-	# This is c89, which is MS Visual C++ (no shared libs)
-	# Anyone wants to do a port?
-	;;
-      irix5* | irix6* | nonstopux*)
-	case $cc_basename in
-	  CC*)
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_static_CXX='-non_shared'
-	    # CC pic flag -KPIC is the default.
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-	case $cc_basename in
-	  KCC*)
-	    # KAI C++ Compiler
-	    lt_prog_compiler_wl_CXX='--backend -Wl,'
-	    lt_prog_compiler_pic_CXX='-fPIC'
-	    ;;
-	  ecpc* )
-	    # old Intel C++ for x86_64 which still supported -KPIC.
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_pic_CXX='-KPIC'
-	    lt_prog_compiler_static_CXX='-static'
-	    ;;
-	  icpc* )
-	    # Intel C++, used to be incompatible with GCC.
-	    # ICC 10 doesn't accept -KPIC any more.
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_pic_CXX='-fPIC'
-	    lt_prog_compiler_static_CXX='-static'
-	    ;;
-	  pgCC* | pgcpp*)
-	    # Portland Group C++ compiler
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_pic_CXX='-fpic'
-	    lt_prog_compiler_static_CXX='-Bstatic'
-	    ;;
-	  cxx*)
-	    # Compaq C++
-	    # Make sure the PIC flag is empty.  It appears that all Alpha
-	    # Linux and Compaq Tru64 Unix objects are PIC.
-	    lt_prog_compiler_pic_CXX=
-	    lt_prog_compiler_static_CXX='-non_shared'
-	    ;;
-	  xlc* | xlC* | bgxl[cC]* | mpixl[cC]*)
-	    # IBM XL 8.0, 9.0 on PPC and BlueGene
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_pic_CXX='-qpic'
-	    lt_prog_compiler_static_CXX='-qstaticlink'
-	    ;;
-	  *)
-	    case `$CC -V 2>&1 | sed 5q` in
-	    *Sun\ C*)
-	      # Sun C++ 5.9
-	      lt_prog_compiler_pic_CXX='-KPIC'
-	      lt_prog_compiler_static_CXX='-Bstatic'
-	      lt_prog_compiler_wl_CXX='-Qoption ld '
-	      ;;
-	    esac
-	    ;;
-	esac
-	;;
-      lynxos*)
-	;;
-      m88k*)
-	;;
-      mvs*)
-	case $cc_basename in
-	  cxx*)
-	    lt_prog_compiler_pic_CXX='-W c,exportall'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      netbsd* | netbsdelf*-gnu)
-	;;
-      *qnx* | *nto*)
-        # QNX uses GNU C++, but need to define -shared option too, otherwise
-        # it will coredump.
-        lt_prog_compiler_pic_CXX='-fPIC -shared'
-        ;;
-      osf3* | osf4* | osf5*)
-	case $cc_basename in
-	  KCC*)
-	    lt_prog_compiler_wl_CXX='--backend -Wl,'
-	    ;;
-	  RCC*)
-	    # Rational C++ 2.4.1
-	    lt_prog_compiler_pic_CXX='-pic'
-	    ;;
-	  cxx*)
-	    # Digital/Compaq C++
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    # Make sure the PIC flag is empty.  It appears that all Alpha
-	    # Linux and Compaq Tru64 Unix objects are PIC.
-	    lt_prog_compiler_pic_CXX=
-	    lt_prog_compiler_static_CXX='-non_shared'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      psos*)
-	;;
-      solaris*)
-	case $cc_basename in
-	  CC* | sunCC*)
-	    # Sun C++ 4.2, 5.x and Centerline C++
-	    lt_prog_compiler_pic_CXX='-KPIC'
-	    lt_prog_compiler_static_CXX='-Bstatic'
-	    lt_prog_compiler_wl_CXX='-Qoption ld '
-	    ;;
-	  gcx*)
-	    # Green Hills C++ Compiler
-	    lt_prog_compiler_pic_CXX='-PIC'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      sunos4*)
-	case $cc_basename in
-	  CC*)
-	    # Sun C++ 4.x
-	    lt_prog_compiler_pic_CXX='-pic'
-	    lt_prog_compiler_static_CXX='-Bstatic'
-	    ;;
-	  lcc*)
-	    # Lucid
-	    lt_prog_compiler_pic_CXX='-pic'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-	case $cc_basename in
-	  CC*)
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_pic_CXX='-KPIC'
-	    lt_prog_compiler_static_CXX='-Bstatic'
-	    ;;
-	esac
-	;;
-      tandem*)
-	case $cc_basename in
-	  NCC*)
-	    # NonStop-UX NCC 3.20
-	    lt_prog_compiler_pic_CXX='-KPIC'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      vxworks*)
-	;;
-      *)
-	lt_prog_compiler_can_build_shared_CXX=no
-	;;
-    esac
-  fi
-
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    lt_prog_compiler_pic_CXX=
-    ;;
-  *)
-    lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
-    ;;
-esac
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-if ${lt_cv_prog_compiler_pic_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; }
-lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$lt_prog_compiler_pic_CXX"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; }
-if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_works_CXX=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_pic_works_CXX=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; }
-
-if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then
-    case $lt_prog_compiler_pic_CXX in
-     "" | " "*) ;;
-     *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
-     esac
-else
-    lt_prog_compiler_pic_CXX=
-     lt_prog_compiler_can_build_shared_CXX=no
-fi
-
-fi
-
-
-
-
-
-#
-# Check to make sure the static flag actually works.
-#
-wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if ${lt_cv_prog_compiler_static_works_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_static_works_CXX=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler_static_works_CXX=yes
-       fi
-     else
-       lt_cv_prog_compiler_static_works_CXX=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; }
-
-if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then
-    :
-else
-    lt_prog_compiler_static_CXX=
-fi
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o_CXX=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o_CXX=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o_CXX=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o_CXX=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
-
-
-
-
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
-$as_echo_n "checking if we can lock with hard links... " >&6; }
-  hard_links=yes
-  $RM conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
-$as_echo "$hard_links" >&6; }
-  if test "$hard_links" = no; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
-
-  export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
-  case $host_os in
-  aix[4-9]*)
-    # If we're using GNU nm, then we don't want the "-C" option.
-    # -C means demangle to AIX nm, but means don't demangle with GNU nm
-    # Also, AIX nm treats weak defined symbols like other global defined
-    # symbols, whereas GNU nm marks them as "W".
-    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-      export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-    else
-      export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-    fi
-    ;;
-  pw32*)
-    export_symbols_cmds_CXX="$ltdll_cmds"
-    ;;
-  cygwin* | mingw* | cegcc*)
-    case $cc_basename in
-    cl*)
-      exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
-      ;;
-    *)
-      export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
-      exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
-      ;;
-    esac
-    ;;
-  linux* | k*bsd*-gnu | gnu*)
-    link_all_deplibs_CXX=no
-    ;;
-  *)
-    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-    ;;
-  esac
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
-$as_echo "$ld_shlibs_CXX" >&6; }
-test "$ld_shlibs_CXX" = no && can_build_shared=no
-
-with_gnu_ld_CXX=$with_gnu_ld
-
-
-
-
-
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$archive_cmds_need_lc_CXX" in
-x|xyes)
-  # Assume -lc should be added
-  archive_cmds_need_lc_CXX=yes
-
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $archive_cmds_CXX in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
-$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
-if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  $RM conftest*
-	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } 2>conftest.err; then
-	  soname=conftest
-	  lib=conftest
-	  libobjs=conftest.$ac_objext
-	  deplibs=
-	  wl=$lt_prog_compiler_wl_CXX
-	  pic_flag=$lt_prog_compiler_pic_CXX
-	  compiler_flags=-v
-	  linker_flags=-v
-	  verstring=
-	  output_objdir=.
-	  libname=conftest
-	  lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
-	  allow_undefined_flag_CXX=
-	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
-  (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-	  then
-	    lt_cv_archive_cmds_need_lc_CXX=no
-	  else
-	    lt_cv_archive_cmds_need_lc_CXX=yes
-	  fi
-	  allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
-	else
-	  cat conftest.err 1>&5
-	fi
-	$RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5
-$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; }
-      archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
-$as_echo_n "checking dynamic linker characteristics... " >&6; }
-
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
-  ;;
-
-aix[4-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
-    # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[01] | aix4.[01].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
-	:
-      else
-	can_build_shared=no
-      fi
-      ;;
-    esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  case $host_cpu in
-  powerpc)
-    # Since July 2007 AmigaOS4 officially supports .so libraries.
-    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    ;;
-  m68k)
-    library_names_spec='$libname.ixlibrary $libname.a'
-    # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-    ;;
-  esac
-  ;;
-
-beos*)
-  library_names_spec='${libname}${shared_ext}'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[45]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32* | cegcc*)
-  version_type=windows
-  shrext_cmds=".dll"
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$cc_basename in
-  yes,*)
-    # gcc
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname~
-      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-      fi'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    esac
-    dynamic_linker='Win32 ld.exe'
-    ;;
-
-  *,cl*)
-    # Native MSVC
-    libname_spec='$name'
-    soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-    library_names_spec='${libname}.dll.lib'
-
-    case $build_os in
-    mingw*)
-      sys_lib_search_path_spec=
-      lt_save_ifs=$IFS
-      IFS=';'
-      for lt_path in $LIB
-      do
-        IFS=$lt_save_ifs
-        # Let DOS variable expansion print the short 8.3 style file name.
-        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-      done
-      IFS=$lt_save_ifs
-      # Convert to MSYS style.
-      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
-      ;;
-    cygwin*)
-      # Convert to unix form, then to dos form, then back to unix form
-      # but this time dos style (no spaces!) so that the unix form looks
-      # like /cygdrive/c/PROGRA~1:/cygdr...
-      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      ;;
-    *)
-      sys_lib_search_path_spec="$LIB"
-      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-        # It is most probably a Windows format PATH.
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      # FIXME: find the short name or the path components, as spaces are
-      # common. (e.g. "Program Files" -> "PROGRA~1")
-      ;;
-    esac
-
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-    dynamic_linker='Win32 link.exe'
-    ;;
-
-  *)
-    # Assume MSVC wrapper
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    dynamic_linker='Win32 ld.exe'
-    ;;
-  esac
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[23].*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2.*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[01]* | freebsdelf3.[01]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
-  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-haiku*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  dynamic_linker="$host_os runtime_loader"
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-    fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  hppa*64*)
-    shrext_cmds='.sl'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
-  postinstall_cmds='chmod 555 $lib'
-  # or fails outright, so override atomically:
-  install_override_mode=555
-  ;;
-
-interix[3-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux # correct to gnu/linux during the next big refactor
-	else
-		version_type=irix
-	fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-
-  # Some binutils ld are patched to set DT_RUNPATH
-  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_shlibpath_overrides_runpath=no
-    save_LDFLAGS=$LDFLAGS
-    save_libdir=$libdir
-    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \
-	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\""
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
-  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
-  lt_cv_shlibpath_overrides_runpath=yes
-fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-    LDFLAGS=$save_LDFLAGS
-    libdir=$save_libdir
-
-fi
-
-  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Append ld.so.conf contents to the search path
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsdelf*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='NetBSD ld.elf_so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-*nto* | *qnx*)
-  version_type=qnx
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='ldqnx.so'
-  ;;
-
-openbsd*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
-  need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
-    *)				need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[89] | openbsd2.[89].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
-  ;;
-
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux # correct to gnu/linux during the next big refactor
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-	;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-uts4*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
-$as_echo "$dynamic_linker" >&6; }
-test "$dynamic_linker" = no && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
-$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
-hardcode_action_CXX=
-if test -n "$hardcode_libdir_flag_spec_CXX" ||
-   test -n "$runpath_var_CXX" ||
-   test "X$hardcode_automatic_CXX" = "Xyes" ; then
-
-  # We can hardcode non-existent directories.
-  if test "$hardcode_direct_CXX" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no &&
-     test "$hardcode_minus_L_CXX" != no; then
-    # Linking always hardcodes the temporary library directory.
-    hardcode_action_CXX=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    hardcode_action_CXX=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  hardcode_action_CXX=unsupported
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5
-$as_echo "$hardcode_action_CXX" >&6; }
-
-if test "$hardcode_action_CXX" = relink ||
-   test "$inherit_rpath_CXX" = yes; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-
-
-
-
-
-
-
-  fi # test -n "$compiler"
-
-  CC=$lt_save_CC
-  CFLAGS=$lt_save_CFLAGS
-  LDCXX=$LD
-  LD=$lt_save_LD
-  GCC=$lt_save_GCC
-  with_gnu_ld=$lt_save_with_gnu_ld
-  lt_cv_path_LDCXX=$lt_cv_path_LD
-  lt_cv_path_LD=$lt_save_path_LD
-  lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
-  lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
-fi # test "$_lt_caught_CXX_error" != yes
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-
-
-      ac_ext=${ac_fc_srcext-f}
-ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
-ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_fc_compiler_gnu
-
-
-if test -z "$FC" || test "X$FC" = "Xno"; then
-  _lt_disable_FC=yes
-fi
-
-archive_cmds_need_lc_FC=no
-allow_undefined_flag_FC=
-always_export_symbols_FC=no
-archive_expsym_cmds_FC=
-export_dynamic_flag_spec_FC=
-hardcode_direct_FC=no
-hardcode_direct_absolute_FC=no
-hardcode_libdir_flag_spec_FC=
-hardcode_libdir_separator_FC=
-hardcode_minus_L_FC=no
-hardcode_automatic_FC=no
-inherit_rpath_FC=no
-module_cmds_FC=
-module_expsym_cmds_FC=
-link_all_deplibs_FC=unknown
-old_archive_cmds_FC=$old_archive_cmds
-reload_flag_FC=$reload_flag
-reload_cmds_FC=$reload_cmds
-no_undefined_flag_FC=
-whole_archive_flag_spec_FC=
-enable_shared_with_static_runtimes_FC=no
-
-# Source file extension for fc test sources.
-ac_ext=${ac_fc_srcext-f}
-
-# Object file extension for compiled fc test sources.
-objext=o
-objext_FC=$objext
-
-# No sense in running all these tests if we already determined that
-# the FC compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_disable_FC" != yes; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="\
-      subroutine t
-      return
-      end
-"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code="\
-      program t
-      end
-"
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-
-  # save warnings/boilerplate of simple test code
-  ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-
-  ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC="$CC"
-  lt_save_GCC=$GCC
-  lt_save_CFLAGS=$CFLAGS
-  CC=${FC-"f95"}
-  CFLAGS=$FCFLAGS
-  compiler=$CC
-  GCC=$ac_cv_fc_compiler_gnu
-
-  compiler_FC=$CC
-  for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
-
-
-  if test -n "$compiler"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
-$as_echo_n "checking if libtool supports shared libraries... " >&6; }
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
-$as_echo "$can_build_shared" >&6; }
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
-$as_echo_n "checking whether to build shared libraries... " >&6; }
-    test "$can_build_shared" = "no" && enable_shared=no
-
-    # On AIX, shared libraries and static libraries use the same namespace, and
-    # are all built from PIC.
-    case $host_os in
-      aix3*)
-        test "$enable_shared" = yes && enable_static=no
-        if test -n "$RANLIB"; then
-          archive_cmds="$archive_cmds~\$RANLIB \$lib"
-          postinstall_cmds='$RANLIB $lib'
-        fi
-        ;;
-      aix[4-9]*)
-	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-	  test "$enable_shared" = yes && enable_static=no
-	fi
-        ;;
-    esac
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
-$as_echo "$enable_shared" >&6; }
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
-$as_echo_n "checking whether to build static libraries... " >&6; }
-    # Make sure either enable_shared or enable_static is yes.
-    test "$enable_shared" = yes || enable_static=yes
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
-$as_echo "$enable_static" >&6; }
-
-    GCC_FC="$ac_cv_fc_compiler_gnu"
-    LD_FC="$LD"
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    # Dependencies to place before and after the object being linked:
-predep_objects_FC=
-postdep_objects_FC=
-predeps_FC=
-postdeps_FC=
-compiler_lib_search_path_FC=
-
-cat > conftest.$ac_ext <<_LT_EOF
-      subroutine foo
-      implicit none
-      integer a
-      a=0
-      return
-      end
-_LT_EOF
-
-
-_lt_libdeps_save_CFLAGS=$CFLAGS
-case "$CC $CFLAGS " in #(
-*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
-*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
-*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
-esac
-
-if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  # Parse the compiler output and extract the necessary
-  # objects, libraries and library flags.
-
-  # Sentinel used to keep track of whether or not we are before
-  # the conftest object file.
-  pre_test_object_deps_done=no
-
-  for p in `eval "$output_verbose_link_cmd"`; do
-    case ${prev}${p} in
-
-    -L* | -R* | -l*)
-       # Some compilers place space between "-{L,R}" and the path.
-       # Remove the space.
-       if test $p = "-L" ||
-          test $p = "-R"; then
-	 prev=$p
-	 continue
-       fi
-
-       # Expand the sysroot to ease extracting the directories later.
-       if test -z "$prev"; then
-         case $p in
-         -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
-         -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
-         -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
-         esac
-       fi
-       case $p in
-       =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
-       esac
-       if test "$pre_test_object_deps_done" = no; then
-	 case ${prev} in
-	 -L | -R)
-	   # Internal compiler library paths should come after those
-	   # provided the user.  The postdeps already come after the
-	   # user supplied libs so there is no need to process them.
-	   if test -z "$compiler_lib_search_path_FC"; then
-	     compiler_lib_search_path_FC="${prev}${p}"
-	   else
-	     compiler_lib_search_path_FC="${compiler_lib_search_path_FC} ${prev}${p}"
-	   fi
-	   ;;
-	 # The "-l" case would never come before the object being
-	 # linked, so don't bother handling this case.
-	 esac
-       else
-	 if test -z "$postdeps_FC"; then
-	   postdeps_FC="${prev}${p}"
-	 else
-	   postdeps_FC="${postdeps_FC} ${prev}${p}"
-	 fi
-       fi
-       prev=
-       ;;
-
-    *.lto.$objext) ;; # Ignore GCC LTO objects
-    *.$objext)
-       # This assumes that the test object file only shows up
-       # once in the compiler output.
-       if test "$p" = "conftest.$objext"; then
-	 pre_test_object_deps_done=yes
-	 continue
-       fi
-
-       if test "$pre_test_object_deps_done" = no; then
-	 if test -z "$predep_objects_FC"; then
-	   predep_objects_FC="$p"
-	 else
-	   predep_objects_FC="$predep_objects_FC $p"
-	 fi
-       else
-	 if test -z "$postdep_objects_FC"; then
-	   postdep_objects_FC="$p"
-	 else
-	   postdep_objects_FC="$postdep_objects_FC $p"
-	 fi
-       fi
-       ;;
-
-    *) ;; # Ignore the rest.
-
-    esac
-  done
-
-  # Clean up.
-  rm -f a.out a.exe
-else
-  echo "libtool.m4: error: problem compiling FC test program"
-fi
-
-$RM -f confest.$objext
-CFLAGS=$_lt_libdeps_save_CFLAGS
-
-# PORTME: override above test on systems where it is broken
-
-
-case " $postdeps_FC " in
-*" -lc "*) archive_cmds_need_lc_FC=no ;;
-esac
- compiler_lib_search_dirs_FC=
-if test -n "${compiler_lib_search_path_FC}"; then
- compiler_lib_search_dirs_FC=`echo " ${compiler_lib_search_path_FC}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-    lt_prog_compiler_wl_FC=
-lt_prog_compiler_pic_FC=
-lt_prog_compiler_static_FC=
-
-
-  if test "$GCC" = yes; then
-    lt_prog_compiler_wl_FC='-Wl,'
-    lt_prog_compiler_static_FC='-static'
-
-    case $host_os in
-      aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static_FC='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            lt_prog_compiler_pic_FC='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
-            lt_prog_compiler_pic_FC='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      lt_prog_compiler_pic_FC='-DDLL_EXPORT'
-      ;;
-
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      lt_prog_compiler_pic_FC='-fno-common'
-      ;;
-
-    haiku*)
-      # PIC is the default for Haiku.
-      # The "-static" flag exists, but is broken.
-      lt_prog_compiler_static_FC=
-      ;;
-
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic_FC='-fPIC'
-	;;
-      esac
-      ;;
-
-    interix[3-9]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-
-    msdosdjgpp*)
-      # Just because we use GCC doesn't mean we suddenly get shared libraries
-      # on systems that don't support them.
-      lt_prog_compiler_can_build_shared_FC=no
-      enable_shared=no
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic_FC='-fPIC -shared'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	lt_prog_compiler_pic_FC=-Kconform_pic
-      fi
-      ;;
-
-    *)
-      lt_prog_compiler_pic_FC='-fPIC'
-      ;;
-    esac
-
-    case $cc_basename in
-    nvcc*) # Cuda Compiler Driver 2.2
-      lt_prog_compiler_wl_FC='-Xlinker '
-      if test -n "$lt_prog_compiler_pic_FC"; then
-        lt_prog_compiler_pic_FC="-Xcompiler $lt_prog_compiler_pic_FC"
-      fi
-      ;;
-    esac
-  else
-    # PORTME Check for flag to pass linker flags through the system compiler.
-    case $host_os in
-    aix*)
-      lt_prog_compiler_wl_FC='-Wl,'
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static_FC='-Bstatic'
-      else
-	lt_prog_compiler_static_FC='-bnso -bI:/lib/syscalls.exp'
-      fi
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      lt_prog_compiler_pic_FC='-DDLL_EXPORT'
-      ;;
-
-    hpux9* | hpux10* | hpux11*)
-      lt_prog_compiler_wl_FC='-Wl,'
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic_FC='+Z'
-	;;
-      esac
-      # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      lt_prog_compiler_static_FC='${wl}-a ${wl}archive'
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      lt_prog_compiler_wl_FC='-Wl,'
-      # PIC (with -KPIC) is the default.
-      lt_prog_compiler_static_FC='-non_shared'
-      ;;
-
-    linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-      case $cc_basename in
-      # old Intel for x86_64 which still supported -KPIC.
-      ecc*)
-	lt_prog_compiler_wl_FC='-Wl,'
-	lt_prog_compiler_pic_FC='-KPIC'
-	lt_prog_compiler_static_FC='-static'
-        ;;
-      # icc used to be incompatible with GCC.
-      # ICC 10 doesn't accept -KPIC any more.
-      icc* | ifort*)
-	lt_prog_compiler_wl_FC='-Wl,'
-	lt_prog_compiler_pic_FC='-fPIC'
-	lt_prog_compiler_static_FC='-static'
-        ;;
-      # Lahey Fortran 8.1.
-      lf95*)
-	lt_prog_compiler_wl_FC='-Wl,'
-	lt_prog_compiler_pic_FC='--shared'
-	lt_prog_compiler_static_FC='--static'
-	;;
-      nagfor*)
-	# NAG Fortran compiler
-	lt_prog_compiler_wl_FC='-Wl,-Wl,,'
-	lt_prog_compiler_pic_FC='-PIC'
-	lt_prog_compiler_static_FC='-Bstatic'
-	;;
-      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
-        # Portland Group compilers (*not* the Pentium gcc compiler,
-	# which looks to be a dead project)
-	lt_prog_compiler_wl_FC='-Wl,'
-	lt_prog_compiler_pic_FC='-fpic'
-	lt_prog_compiler_static_FC='-Bstatic'
-        ;;
-      ccc*)
-        lt_prog_compiler_wl_FC='-Wl,'
-        # All Alpha code is PIC.
-        lt_prog_compiler_static_FC='-non_shared'
-        ;;
-      xl* | bgxl* | bgf* | mpixl*)
-	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
-	lt_prog_compiler_wl_FC='-Wl,'
-	lt_prog_compiler_pic_FC='-qpic'
-	lt_prog_compiler_static_FC='-qstaticlink'
-	;;
-      *)
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
-	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
-	  lt_prog_compiler_pic_FC='-KPIC'
-	  lt_prog_compiler_static_FC='-Bstatic'
-	  lt_prog_compiler_wl_FC=''
-	  ;;
-	*Sun\ F* | *Sun*Fortran*)
-	  lt_prog_compiler_pic_FC='-KPIC'
-	  lt_prog_compiler_static_FC='-Bstatic'
-	  lt_prog_compiler_wl_FC='-Qoption ld '
-	  ;;
-	*Sun\ C*)
-	  # Sun C 5.9
-	  lt_prog_compiler_pic_FC='-KPIC'
-	  lt_prog_compiler_static_FC='-Bstatic'
-	  lt_prog_compiler_wl_FC='-Wl,'
-	  ;;
-        *Intel*\ [CF]*Compiler*)
-	  lt_prog_compiler_wl_FC='-Wl,'
-	  lt_prog_compiler_pic_FC='-fPIC'
-	  lt_prog_compiler_static_FC='-static'
-	  ;;
-	*Portland\ Group*)
-	  lt_prog_compiler_wl_FC='-Wl,'
-	  lt_prog_compiler_pic_FC='-fpic'
-	  lt_prog_compiler_static_FC='-Bstatic'
-	  ;;
-	esac
-	;;
-      esac
-      ;;
-
-    newsos6)
-      lt_prog_compiler_pic_FC='-KPIC'
-      lt_prog_compiler_static_FC='-Bstatic'
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic_FC='-fPIC -shared'
-      ;;
-
-    osf3* | osf4* | osf5*)
-      lt_prog_compiler_wl_FC='-Wl,'
-      # All OSF/1 code is PIC.
-      lt_prog_compiler_static_FC='-non_shared'
-      ;;
-
-    rdos*)
-      lt_prog_compiler_static_FC='-non_shared'
-      ;;
-
-    solaris*)
-      lt_prog_compiler_pic_FC='-KPIC'
-      lt_prog_compiler_static_FC='-Bstatic'
-      case $cc_basename in
-      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
-	lt_prog_compiler_wl_FC='-Qoption ld ';;
-      *)
-	lt_prog_compiler_wl_FC='-Wl,';;
-      esac
-      ;;
-
-    sunos4*)
-      lt_prog_compiler_wl_FC='-Qoption ld '
-      lt_prog_compiler_pic_FC='-PIC'
-      lt_prog_compiler_static_FC='-Bstatic'
-      ;;
-
-    sysv4 | sysv4.2uw2* | sysv4.3*)
-      lt_prog_compiler_wl_FC='-Wl,'
-      lt_prog_compiler_pic_FC='-KPIC'
-      lt_prog_compiler_static_FC='-Bstatic'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec ;then
-	lt_prog_compiler_pic_FC='-Kconform_pic'
-	lt_prog_compiler_static_FC='-Bstatic'
-      fi
-      ;;
-
-    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-      lt_prog_compiler_wl_FC='-Wl,'
-      lt_prog_compiler_pic_FC='-KPIC'
-      lt_prog_compiler_static_FC='-Bstatic'
-      ;;
-
-    unicos*)
-      lt_prog_compiler_wl_FC='-Wl,'
-      lt_prog_compiler_can_build_shared_FC=no
-      ;;
-
-    uts4*)
-      lt_prog_compiler_pic_FC='-pic'
-      lt_prog_compiler_static_FC='-Bstatic'
-      ;;
-
-    *)
-      lt_prog_compiler_can_build_shared_FC=no
-      ;;
-    esac
-  fi
-
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    lt_prog_compiler_pic_FC=
-    ;;
-  *)
-    lt_prog_compiler_pic_FC="$lt_prog_compiler_pic_FC"
-    ;;
-esac
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-if ${lt_cv_prog_compiler_pic_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_FC=$lt_prog_compiler_pic_FC
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_FC" >&5
-$as_echo "$lt_cv_prog_compiler_pic_FC" >&6; }
-lt_prog_compiler_pic_FC=$lt_cv_prog_compiler_pic_FC
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$lt_prog_compiler_pic_FC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_FC works" >&5
-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_FC works... " >&6; }
-if ${lt_cv_prog_compiler_pic_works_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_works_FC=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic_FC"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_pic_works_FC=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_FC" >&5
-$as_echo "$lt_cv_prog_compiler_pic_works_FC" >&6; }
-
-if test x"$lt_cv_prog_compiler_pic_works_FC" = xyes; then
-    case $lt_prog_compiler_pic_FC in
-     "" | " "*) ;;
-     *) lt_prog_compiler_pic_FC=" $lt_prog_compiler_pic_FC" ;;
-     esac
-else
-    lt_prog_compiler_pic_FC=
-     lt_prog_compiler_can_build_shared_FC=no
-fi
-
-fi
-
-
-
-
-
-#
-# Check to make sure the static flag actually works.
-#
-wl=$lt_prog_compiler_wl_FC eval lt_tmp_static_flag=\"$lt_prog_compiler_static_FC\"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if ${lt_cv_prog_compiler_static_works_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_static_works_FC=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler_static_works_FC=yes
-       fi
-     else
-       lt_cv_prog_compiler_static_works_FC=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_FC" >&5
-$as_echo "$lt_cv_prog_compiler_static_works_FC" >&6; }
-
-if test x"$lt_cv_prog_compiler_static_works_FC" = xyes; then
-    :
-else
-    lt_prog_compiler_static_FC=
-fi
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o_FC=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o_FC=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_FC" >&5
-$as_echo "$lt_cv_prog_compiler_c_o_FC" >&6; }
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o_FC=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o_FC=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_FC" >&5
-$as_echo "$lt_cv_prog_compiler_c_o_FC" >&6; }
-
-
-
-
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o_FC" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
-$as_echo_n "checking if we can lock with hard links... " >&6; }
-  hard_links=yes
-  $RM conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
-$as_echo "$hard_links" >&6; }
-  if test "$hard_links" = no; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
-
-  runpath_var=
-  allow_undefined_flag_FC=
-  always_export_symbols_FC=no
-  archive_cmds_FC=
-  archive_expsym_cmds_FC=
-  compiler_needs_object_FC=no
-  enable_shared_with_static_runtimes_FC=no
-  export_dynamic_flag_spec_FC=
-  export_symbols_cmds_FC='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  hardcode_automatic_FC=no
-  hardcode_direct_FC=no
-  hardcode_direct_absolute_FC=no
-  hardcode_libdir_flag_spec_FC=
-  hardcode_libdir_separator_FC=
-  hardcode_minus_L_FC=no
-  hardcode_shlibpath_var_FC=unsupported
-  inherit_rpath_FC=no
-  link_all_deplibs_FC=unknown
-  module_cmds_FC=
-  module_expsym_cmds_FC=
-  old_archive_from_new_cmds_FC=
-  old_archive_from_expsyms_cmds_FC=
-  thread_safe_flag_spec_FC=
-  whole_archive_flag_spec_FC=
-  # include_expsyms should be a list of space-separated symbols to be *always*
-  # included in the symbol list
-  include_expsyms_FC=
-  # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ` (' and `)$', so one must not match beginning or
-  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-  # as well as any symbol that contains `d'.
-  exclude_expsyms_FC='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
-  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-  # platforms (ab)use it in PIC code, but their linkers get confused if
-  # the symbol is explicitly referenced.  Since portable code cannot
-  # rely on this symbol name, it's probably fine to never include it in
-  # preloaded symbol tables.
-  # Exclude shared library initialization/finalization symbols.
-  extract_expsyms_cmds=
-
-  case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    # FIXME: the MSVC++ port hasn't been tested in a loooong time
-    # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++.
-    if test "$GCC" != yes; then
-      with_gnu_ld=no
-    fi
-    ;;
-  interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++)
-    with_gnu_ld=yes
-    ;;
-  openbsd*)
-    with_gnu_ld=no
-    ;;
-  linux* | k*bsd*-gnu | gnu*)
-    link_all_deplibs_FC=no
-    ;;
-  esac
-
-  ld_shlibs_FC=yes
-
-  # On some targets, GNU ld is compatible enough with the native linker
-  # that we're better off using the native interface for both.
-  lt_use_gnu_ld_interface=no
-  if test "$with_gnu_ld" = yes; then
-    case $host_os in
-      aix*)
-	# The AIX port of GNU ld has always aspired to compatibility
-	# with the native linker.  However, as the warning in the GNU ld
-	# block says, versions before 2.19.5* couldn't really create working
-	# shared libraries, regardless of the interface used.
-	case `$LD -v 2>&1` in
-	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
-	  *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
-	  *\ \(GNU\ Binutils\)\ [3-9]*) ;;
-	  *)
-	    lt_use_gnu_ld_interface=yes
-	    ;;
-	esac
-	;;
-      *)
-	lt_use_gnu_ld_interface=yes
-	;;
-    esac
-  fi
-
-  if test "$lt_use_gnu_ld_interface" = yes; then
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='${wl}'
-
-    # Set some defaults for GNU ld with shared library support. These
-    # are reset later if shared libraries are not supported. Putting them
-    # here allows them to be overridden if necessary.
-    runpath_var=LD_RUN_PATH
-    hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
-    export_dynamic_flag_spec_FC='${wl}--export-dynamic'
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-      whole_archive_flag_spec_FC="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-    else
-      whole_archive_flag_spec_FC=
-    fi
-    supports_anon_versioning=no
-    case `$LD -v 2>&1` in
-      *GNU\ gold*) supports_anon_versioning=yes ;;
-      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
-      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-      *\ 2.11.*) ;; # other 2.11 versions
-      *) supports_anon_versioning=yes ;;
-    esac
-
-    # See if GNU ld supports shared libraries.
-    case $host_os in
-    aix[3-9]*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
-	ld_shlibs_FC=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.19, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to install binutils
-*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
-*** You will then need to restart the configuration process.
-
-_LT_EOF
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            archive_expsym_cmds_FC=''
-        ;;
-      m68k)
-            archive_cmds_FC='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec_FC='-L$libdir'
-            hardcode_minus_L_FC=yes
-        ;;
-      esac
-      ;;
-
-    beos*)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	allow_undefined_flag_FC=unsupported
-	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
-	# support --undefined.  This deserves some investigation.  FIXME
-	archive_cmds_FC='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      else
-	ld_shlibs_FC=no
-      fi
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # _LT_TAGVAR(hardcode_libdir_flag_spec, FC) is actually meaningless,
-      # as there is no search path for DLLs.
-      hardcode_libdir_flag_spec_FC='-L$libdir'
-      export_dynamic_flag_spec_FC='${wl}--export-all-symbols'
-      allow_undefined_flag_FC=unsupported
-      always_export_symbols_FC=no
-      enable_shared_with_static_runtimes_FC=yes
-      export_symbols_cmds_FC='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
-      exclude_expsyms_FC='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
-
-      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-        archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	# If the export-symbols file already is a .def file (1st line
-	# is EXPORTS), use it as is; otherwise, prepend...
-	archive_expsym_cmds_FC='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	  cp $export_symbols $output_objdir/$soname.def;
-	else
-	  echo EXPORTS > $output_objdir/$soname.def;
-	  cat $export_symbols >> $output_objdir/$soname.def;
-	fi~
-	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      else
-	ld_shlibs_FC=no
-      fi
-      ;;
-
-    haiku*)
-      archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      link_all_deplibs_FC=yes
-      ;;
-
-    interix[3-9]*)
-      hardcode_direct_FC=no
-      hardcode_shlibpath_var_FC=no
-      hardcode_libdir_flag_spec_FC='${wl}-rpath,$libdir'
-      export_dynamic_flag_spec_FC='${wl}-E'
-      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-      # Instead, shared libraries are loaded at an image base (0x10000000 by
-      # default) and relocated if they conflict, which is a slow very memory
-      # consuming and fragmenting process.  To avoid this, we pick a random,
-      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      archive_expsym_cmds_FC='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      ;;
-
-    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
-      tmp_diet=no
-      if test "$host_os" = linux-dietlibc; then
-	case $cc_basename in
-	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
-	esac
-      fi
-      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
-	 && test "$tmp_diet" = no
-      then
-	tmp_addflag=' $pic_flag'
-	tmp_sharedflag='-shared'
-	case $cc_basename,$host_cpu in
-        pgcc*)				# Portland Group C compiler
-	  whole_archive_flag_spec_FC='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag'
-	  ;;
-	pgf77* | pgf90* | pgf95* | pgfortran*)
-					# Portland Group f77 and f90 compilers
-	  whole_archive_flag_spec_FC='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag -Mnomain' ;;
-	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
-	  tmp_addflag=' -i_dynamic' ;;
-	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
-	  tmp_addflag=' -i_dynamic -nofor_main' ;;
-	ifc* | ifort*)			# Intel Fortran compiler
-	  tmp_addflag=' -nofor_main' ;;
-	lf95*)				# Lahey Fortran 8.1
-	  whole_archive_flag_spec_FC=
-	  tmp_sharedflag='--shared' ;;
-	xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
-	  tmp_sharedflag='-qmkshrobj'
-	  tmp_addflag= ;;
-	nvcc*)	# Cuda Compiler Driver 2.2
-	  whole_archive_flag_spec_FC='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  compiler_needs_object_FC=yes
-	  ;;
-	esac
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)			# Sun C 5.9
-	  whole_archive_flag_spec_FC='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  compiler_needs_object_FC=yes
-	  tmp_sharedflag='-G' ;;
-	*Sun\ F*)			# Sun Fortran 8.3
-	  tmp_sharedflag='-G' ;;
-	esac
-	archive_cmds_FC='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-
-        if test "x$supports_anon_versioning" = xyes; then
-          archive_expsym_cmds_FC='echo "{ global:" > $output_objdir/$libname.ver~
-	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	    echo "local: *; };" >> $output_objdir/$libname.ver~
-	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-        fi
-
-	case $cc_basename in
-	xlf* | bgf* | bgxlf* | mpixlf*)
-	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
-	  whole_archive_flag_spec_FC='--whole-archive$convenience --no-whole-archive'
-	  hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
-	  archive_cmds_FC='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
-	  if test "x$supports_anon_versioning" = xyes; then
-	    archive_expsym_cmds_FC='echo "{ global:" > $output_objdir/$libname.ver~
-	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	      echo "local: *; };" >> $output_objdir/$libname.ver~
-	      $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-	  fi
-	  ;;
-	esac
-      else
-        ld_shlibs_FC=no
-      fi
-      ;;
-
-    netbsd* | netbsdelf*-gnu)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	archive_cmds_FC='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-	wlarc=
-      else
-	archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      fi
-      ;;
-
-    solaris*)
-      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
-	ld_shlibs_FC=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs_FC=no
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-      case `$LD -v 2>&1` in
-        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
-	ld_shlibs_FC=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
-*** reliably create shared libraries on SCO systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-	;;
-	*)
-	  # For security reasons, it is highly recommended that you always
-	  # use absolute paths for naming shared libraries, and exclude the
-	  # DT_RUNPATH tag from executables and libraries.  But doing so
-	  # requires that you compile everything twice, which is a pain.
-	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	    hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
-	    archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    archive_expsym_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-	  else
-	    ld_shlibs_FC=no
-	  fi
-	;;
-      esac
-      ;;
-
-    sunos4*)
-      archive_cmds_FC='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      wlarc=
-      hardcode_direct_FC=yes
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    *)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs_FC=no
-      fi
-      ;;
-    esac
-
-    if test "$ld_shlibs_FC" = no; then
-      runpath_var=
-      hardcode_libdir_flag_spec_FC=
-      export_dynamic_flag_spec_FC=
-      whole_archive_flag_spec_FC=
-    fi
-  else
-    # PORTME fill in a description of your system's linker (not GNU ld)
-    case $host_os in
-    aix3*)
-      allow_undefined_flag_FC=unsupported
-      always_export_symbols_FC=yes
-      archive_expsym_cmds_FC='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      hardcode_minus_L_FC=yes
-      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
-	# Neither direct hardcoding nor static linking is supported with a
-	# broken collect2.
-	hardcode_direct_FC=unsupported
-      fi
-      ;;
-
-    aix[4-9]*)
-      if test "$host_cpu" = ia64; then
-	# On IA64, the linker does run time linking by default, so we don't
-	# have to do anything special.
-	aix_use_runtimelinking=no
-	exp_sym_flag='-Bexport'
-	no_entry_flag=""
-      else
-	# If we're using GNU nm, then we don't want the "-C" option.
-	# -C means demangle to AIX nm, but means don't demangle with GNU nm
-	# Also, AIX nm treats weak defined symbols like other global
-	# defined symbols, whereas GNU nm marks them as "W".
-	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-	  export_symbols_cmds_FC='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	else
-	  export_symbols_cmds_FC='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	fi
-	aix_use_runtimelinking=no
-
-	# Test if we are trying to use run time linking or normal
-	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
-	# need to do runtime linking.
-	case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
-	  for ld_flag in $LDFLAGS; do
-	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-	    aix_use_runtimelinking=yes
-	    break
-	  fi
-	  done
-	  ;;
-	esac
-
-	exp_sym_flag='-bexport'
-	no_entry_flag='-bnoentry'
-      fi
-
-      # When large executables or shared objects are built, AIX ld can
-      # have problems creating the table of contents.  If linking a library
-      # or program results in "error TOC overflow" add -mminimal-toc to
-      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-      archive_cmds_FC=''
-      hardcode_direct_FC=yes
-      hardcode_direct_absolute_FC=yes
-      hardcode_libdir_separator_FC=':'
-      link_all_deplibs_FC=yes
-      file_list_spec_FC='${wl}-f,'
-
-      if test "$GCC" = yes; then
-	case $host_os in aix4.[012]|aix4.[012].*)
-	# We only want to do this on AIX 4.2 and lower, the check
-	# below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" &&
-	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-	  then
-	  # We have reworked collect2
-	  :
-	  else
-	  # We have old collect2
-	  hardcode_direct_FC=unsupported
-	  # It fails to find uninstalled libraries when the uninstalled
-	  # path is not listed in the libpath.  Setting hardcode_minus_L
-	  # to unsupported forces relinking
-	  hardcode_minus_L_FC=yes
-	  hardcode_libdir_flag_spec_FC='-L$libdir'
-	  hardcode_libdir_separator_FC=
-	  fi
-	  ;;
-	esac
-	shared_flag='-shared'
-	if test "$aix_use_runtimelinking" = yes; then
-	  shared_flag="$shared_flag "'${wl}-G'
-	fi
-	link_all_deplibs_FC=no
-      else
-	# not using gcc
-	if test "$host_cpu" = ia64; then
-	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-	# chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-	else
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag='${wl}-G'
-	  else
-	    shared_flag='${wl}-bM:SRE'
-	  fi
-	fi
-      fi
-
-      export_dynamic_flag_spec_FC='${wl}-bexpall'
-      # It seems that -bexpall does not export symbols beginning with
-      # underscore (_), so it is better to generate a list of symbols to export.
-      always_export_symbols_FC=yes
-      if test "$aix_use_runtimelinking" = yes; then
-	# Warning - without using the other runtime loading flags (-brtl),
-	# -berok will link without error, but may produce a broken library.
-	allow_undefined_flag_FC='-berok'
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath__FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-if ac_fn_fc_try_link "$LINENO"; then :
-
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath__FC=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath__FC"; then
-    lt_cv_aix_libpath__FC=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath__FC"; then
-    lt_cv_aix_libpath__FC="/usr/lib:/lib"
-  fi
-
-fi
-
-  aix_libpath=$lt_cv_aix_libpath__FC
-fi
-
-        hardcode_libdir_flag_spec_FC='${wl}-blibpath:$libdir:'"$aix_libpath"
-        archive_expsym_cmds_FC='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-      else
-	if test "$host_cpu" = ia64; then
-	  hardcode_libdir_flag_spec_FC='${wl}-R $libdir:/usr/lib:/lib'
-	  allow_undefined_flag_FC="-z nodefs"
-	  archive_expsym_cmds_FC="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-	else
-	 # Determine the default libpath from the value encoded in an
-	 # empty executable.
-	 if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath__FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-if ac_fn_fc_try_link "$LINENO"; then :
-
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath__FC=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath__FC"; then
-    lt_cv_aix_libpath__FC=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath__FC"; then
-    lt_cv_aix_libpath__FC="/usr/lib:/lib"
-  fi
-
-fi
-
-  aix_libpath=$lt_cv_aix_libpath__FC
-fi
-
-	 hardcode_libdir_flag_spec_FC='${wl}-blibpath:$libdir:'"$aix_libpath"
-	  # Warning - without using the other run time loading flags,
-	  # -berok will link without error, but may produce a broken library.
-	  no_undefined_flag_FC=' ${wl}-bernotok'
-	  allow_undefined_flag_FC=' ${wl}-berok'
-	  if test "$with_gnu_ld" = yes; then
-	    # We only use this code for GNU lds that support --whole-archive.
-	    whole_archive_flag_spec_FC='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	  else
-	    # Exported symbols can be pulled into shared objects from archives
-	    whole_archive_flag_spec_FC='$convenience'
-	  fi
-	  archive_cmds_need_lc_FC=yes
-	  # This is similar to how AIX traditionally builds its shared libraries.
-	  archive_expsym_cmds_FC="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-	fi
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            archive_expsym_cmds_FC=''
-        ;;
-      m68k)
-            archive_cmds_FC='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec_FC='-L$libdir'
-            hardcode_minus_L_FC=yes
-        ;;
-      esac
-      ;;
-
-    bsdi[45]*)
-      export_dynamic_flag_spec_FC=-rdynamic
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      case $cc_basename in
-      cl*)
-	# Native MSVC
-	hardcode_libdir_flag_spec_FC=' '
-	allow_undefined_flag_FC=unsupported
-	always_export_symbols_FC=yes
-	file_list_spec_FC='@'
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	archive_cmds_FC='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-	archive_expsym_cmds_FC='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	    sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-	  else
-	    sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-	  fi~
-	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-	  linknames='
-	# The linker will not automatically build a static lib if we build a DLL.
-	# _LT_TAGVAR(old_archive_from_new_cmds, FC)='true'
-	enable_shared_with_static_runtimes_FC=yes
-	exclude_expsyms_FC='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
-	export_symbols_cmds_FC='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-	# Don't use ranlib
-	old_postinstall_cmds_FC='chmod 644 $oldlib'
-	postlink_cmds_FC='lt_outputfile="@OUTPUT@"~
-	  lt_tool_outputfile="@TOOL_OUTPUT@"~
-	  case $lt_outputfile in
-	    *.exe|*.EXE) ;;
-	    *)
-	      lt_outputfile="$lt_outputfile.exe"
-	      lt_tool_outputfile="$lt_tool_outputfile.exe"
-	      ;;
-	  esac~
-	  if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-	    $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-	    $RM "$lt_outputfile.manifest";
-	  fi'
-	;;
-      *)
-	# Assume MSVC wrapper
-	hardcode_libdir_flag_spec_FC=' '
-	allow_undefined_flag_FC=unsupported
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	archive_cmds_FC='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-	# The linker will automatically build a .lib file if we build a DLL.
-	old_archive_from_new_cmds_FC='true'
-	# FIXME: Should let the user specify the lib program.
-	old_archive_cmds_FC='lib -OUT:$oldlib$oldobjs$old_deplibs'
-	enable_shared_with_static_runtimes_FC=yes
-	;;
-      esac
-      ;;
-
-    darwin* | rhapsody*)
-
-
-  archive_cmds_need_lc_FC=no
-  hardcode_direct_FC=no
-  hardcode_automatic_FC=yes
-  hardcode_shlibpath_var_FC=unsupported
-  if test "$lt_cv_ld_force_load" = "yes"; then
-    whole_archive_flag_spec_FC='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-    compiler_needs_object_FC=yes
-  else
-    whole_archive_flag_spec_FC=''
-  fi
-  link_all_deplibs_FC=yes
-  allow_undefined_flag_FC="$_lt_dar_allow_undefined"
-  case $cc_basename in
-     ifort*) _lt_dar_can_shared=yes ;;
-     *) _lt_dar_can_shared=$GCC ;;
-  esac
-  if test "$_lt_dar_can_shared" = "yes"; then
-    output_verbose_link_cmd=func_echo_all
-    archive_cmds_FC="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    module_cmds_FC="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    archive_expsym_cmds_FC="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-    module_expsym_cmds_FC="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-
-  else
-  ld_shlibs_FC=no
-  fi
-
-      ;;
-
-    dgux*)
-      archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec_FC='-L$libdir'
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-    # support.  Future versions do this automatically, but an explicit c++rt0.o
-    # does not break anything, and helps significantly (at the cost of a little
-    # extra space).
-    freebsd2.2*)
-      archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-      hardcode_libdir_flag_spec_FC='-R$libdir'
-      hardcode_direct_FC=yes
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2.*)
-      archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct_FC=yes
-      hardcode_minus_L_FC=yes
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
-      archive_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-      hardcode_libdir_flag_spec_FC='-R$libdir'
-      hardcode_direct_FC=yes
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    hpux9*)
-      if test "$GCC" = yes; then
-	archive_cmds_FC='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      else
-	archive_cmds_FC='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      fi
-      hardcode_libdir_flag_spec_FC='${wl}+b ${wl}$libdir'
-      hardcode_libdir_separator_FC=:
-      hardcode_direct_FC=yes
-
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      hardcode_minus_L_FC=yes
-      export_dynamic_flag_spec_FC='${wl}-E'
-      ;;
-
-    hpux10*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	archive_cmds_FC='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_FC='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec_FC='${wl}+b ${wl}$libdir'
-	hardcode_libdir_separator_FC=:
-	hardcode_direct_FC=yes
-	hardcode_direct_absolute_FC=yes
-	export_dynamic_flag_spec_FC='${wl}-E'
-	# hardcode_minus_L: Not really in the search PATH,
-	# but as the default location of the library.
-	hardcode_minus_L_FC=yes
-      fi
-      ;;
-
-    hpux11*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds_FC='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds_FC='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  archive_cmds_FC='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      else
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds_FC='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds_FC='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	archive_cmds_FC='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec_FC='${wl}+b ${wl}$libdir'
-	hardcode_libdir_separator_FC=:
-
-	case $host_cpu in
-	hppa*64*|ia64*)
-	  hardcode_direct_FC=no
-	  hardcode_shlibpath_var_FC=no
-	  ;;
-	*)
-	  hardcode_direct_FC=yes
-	  hardcode_direct_absolute_FC=yes
-	  export_dynamic_flag_spec_FC='${wl}-E'
-
-	  # hardcode_minus_L: Not really in the search PATH,
-	  # but as the default location of the library.
-	  hardcode_minus_L_FC=yes
-	  ;;
-	esac
-      fi
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      if test "$GCC" = yes; then
-	archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	# Try to use the -exported_symbol ld option, if it does not
-	# work, assume that -exports_file does not work either and
-	# implicitly export all symbols.
-	# This should be the same for all languages, so no per-tag cache variable.
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
-$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
-if ${lt_cv_irix_exported_symbol+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  save_LDFLAGS="$LDFLAGS"
-	   LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-	   cat > conftest.$ac_ext <<_ACEOF
-
-      subroutine foo
-      end
-_ACEOF
-if ac_fn_fc_try_link "$LINENO"; then :
-  lt_cv_irix_exported_symbol=yes
-else
-  lt_cv_irix_exported_symbol=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-           LDFLAGS="$save_LDFLAGS"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
-$as_echo "$lt_cv_irix_exported_symbol" >&6; }
-	if test "$lt_cv_irix_exported_symbol" = yes; then
-          archive_expsym_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-	fi
-      else
-	archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-      fi
-      archive_cmds_need_lc_FC='no'
-      hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator_FC=:
-      inherit_rpath_FC=yes
-      link_all_deplibs_FC=yes
-      ;;
-
-    netbsd* | netbsdelf*-gnu)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
-      else
-	archive_cmds_FC='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
-      fi
-      hardcode_libdir_flag_spec_FC='-R$libdir'
-      hardcode_direct_FC=yes
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    newsos6)
-      archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct_FC=yes
-      hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator_FC=:
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    *nto* | *qnx*)
-      ;;
-
-    openbsd*)
-      if test -f /usr/libexec/ld.so; then
-	hardcode_direct_FC=yes
-	hardcode_shlibpath_var_FC=no
-	hardcode_direct_absolute_FC=yes
-	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	  archive_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-	  hardcode_libdir_flag_spec_FC='${wl}-rpath,$libdir'
-	  export_dynamic_flag_spec_FC='${wl}-E'
-	else
-	  case $host_os in
-	   openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-	     archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-	     hardcode_libdir_flag_spec_FC='-R$libdir'
-	     ;;
-	   *)
-	     archive_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	     hardcode_libdir_flag_spec_FC='${wl}-rpath,$libdir'
-	     ;;
-	  esac
-	fi
-      else
-	ld_shlibs_FC=no
-      fi
-      ;;
-
-    os2*)
-      hardcode_libdir_flag_spec_FC='-L$libdir'
-      hardcode_minus_L_FC=yes
-      allow_undefined_flag_FC=unsupported
-      archive_cmds_FC='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      old_archive_from_new_cmds_FC='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-      ;;
-
-    osf3*)
-      if test "$GCC" = yes; then
-	allow_undefined_flag_FC=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds_FC='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-      else
-	allow_undefined_flag_FC=' -expect_unresolved \*'
-	archive_cmds_FC='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-      fi
-      archive_cmds_need_lc_FC='no'
-      hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator_FC=:
-      ;;
-
-    osf4* | osf5*)	# as osf3* with the addition of -msym flag
-      if test "$GCC" = yes; then
-	allow_undefined_flag_FC=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds_FC='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
-      else
-	allow_undefined_flag_FC=' -expect_unresolved \*'
-	archive_cmds_FC='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds_FC='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
-
-	# Both c and cxx compiler support -rpath directly
-	hardcode_libdir_flag_spec_FC='-rpath $libdir'
-      fi
-      archive_cmds_need_lc_FC='no'
-      hardcode_libdir_separator_FC=:
-      ;;
-
-    solaris*)
-      no_undefined_flag_FC=' -z defs'
-      if test "$GCC" = yes; then
-	wlarc='${wl}'
-	archive_cmds_FC='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_FC='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-      else
-	case `$CC -V 2>&1` in
-	*"Compilers 5.0"*)
-	  wlarc=''
-	  archive_cmds_FC='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  archive_expsym_cmds_FC='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
-	  ;;
-	*)
-	  wlarc='${wl}'
-	  archive_cmds_FC='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds_FC='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-	  ;;
-	esac
-      fi
-      hardcode_libdir_flag_spec_FC='-R$libdir'
-      hardcode_shlibpath_var_FC=no
-      case $host_os in
-      solaris2.[0-5] | solaris2.[0-5].*) ;;
-      *)
-	# The compiler driver will combine and reorder linker options,
-	# but understands `-z linker_flag'.  GCC discards it without `$wl',
-	# but is careful enough not to reorder.
-	# Supported since Solaris 2.6 (maybe 2.5.1?)
-	if test "$GCC" = yes; then
-	  whole_archive_flag_spec_FC='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-	else
-	  whole_archive_flag_spec_FC='-z allextract$convenience -z defaultextract'
-	fi
-	;;
-      esac
-      link_all_deplibs_FC=yes
-      ;;
-
-    sunos4*)
-      if test "x$host_vendor" = xsequent; then
-	# Use $CC to link under sequent, because it throws in some extra .o
-	# files that make .init and .fini sections work.
-	archive_cmds_FC='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_FC='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      hardcode_libdir_flag_spec_FC='-L$libdir'
-      hardcode_direct_FC=yes
-      hardcode_minus_L_FC=yes
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    sysv4)
-      case $host_vendor in
-	sni)
-	  archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct_FC=yes # is this really true???
-	;;
-	siemens)
-	  ## LD is ld it makes a PLAMLIB
-	  ## CC just makes a GrossModule.
-	  archive_cmds_FC='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-	  reload_cmds_FC='$CC -r -o $output$reload_objs'
-	  hardcode_direct_FC=no
-        ;;
-	motorola)
-	  archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct_FC=no #Motorola manual says yes, but my tests say they lie
-	;;
-      esac
-      runpath_var='LD_RUN_PATH'
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    sysv4.3*)
-      archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_shlibpath_var_FC=no
-      export_dynamic_flag_spec_FC='-Bexport'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	hardcode_shlibpath_var_FC=no
-	runpath_var=LD_RUN_PATH
-	hardcode_runpath_var=yes
-	ld_shlibs_FC=yes
-      fi
-      ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      no_undefined_flag_FC='${wl}-z,text'
-      archive_cmds_need_lc_FC=no
-      hardcode_shlibpath_var_FC=no
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds_FC='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_FC='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_FC='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_FC='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We can NOT use -z defs as we might desire, because we do not
-      # link with -lc, and that would cause any symbols used from libc to
-      # always be unresolved, which means just about no library would
-      # ever link correctly.  If we're not using GNU ld we use -z text
-      # though, which does catch some bad symbols but isn't as heavy-handed
-      # as -z defs.
-      no_undefined_flag_FC='${wl}-z,text'
-      allow_undefined_flag_FC='${wl}-z,nodefs'
-      archive_cmds_need_lc_FC=no
-      hardcode_shlibpath_var_FC=no
-      hardcode_libdir_flag_spec_FC='${wl}-R,$libdir'
-      hardcode_libdir_separator_FC=':'
-      link_all_deplibs_FC=yes
-      export_dynamic_flag_spec_FC='${wl}-Bexport'
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds_FC='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_FC='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_FC='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_FC='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    uts4*)
-      archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec_FC='-L$libdir'
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    *)
-      ld_shlibs_FC=no
-      ;;
-    esac
-
-    if test x$host_vendor = xsni; then
-      case $host in
-      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-	export_dynamic_flag_spec_FC='${wl}-Blargedynsym'
-	;;
-      esac
-    fi
-  fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_FC" >&5
-$as_echo "$ld_shlibs_FC" >&6; }
-test "$ld_shlibs_FC" = no && can_build_shared=no
-
-with_gnu_ld_FC=$with_gnu_ld
-
-
-
-
-
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$archive_cmds_need_lc_FC" in
-x|xyes)
-  # Assume -lc should be added
-  archive_cmds_need_lc_FC=yes
-
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $archive_cmds_FC in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
-$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
-if ${lt_cv_archive_cmds_need_lc_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  $RM conftest*
-	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } 2>conftest.err; then
-	  soname=conftest
-	  lib=conftest
-	  libobjs=conftest.$ac_objext
-	  deplibs=
-	  wl=$lt_prog_compiler_wl_FC
-	  pic_flag=$lt_prog_compiler_pic_FC
-	  compiler_flags=-v
-	  linker_flags=-v
-	  verstring=
-	  output_objdir=.
-	  libname=conftest
-	  lt_save_allow_undefined_flag=$allow_undefined_flag_FC
-	  allow_undefined_flag_FC=
-	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_FC 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
-  (eval $archive_cmds_FC 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-	  then
-	    lt_cv_archive_cmds_need_lc_FC=no
-	  else
-	    lt_cv_archive_cmds_need_lc_FC=yes
-	  fi
-	  allow_undefined_flag_FC=$lt_save_allow_undefined_flag
-	else
-	  cat conftest.err 1>&5
-	fi
-	$RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_FC" >&5
-$as_echo "$lt_cv_archive_cmds_need_lc_FC" >&6; }
-      archive_cmds_need_lc_FC=$lt_cv_archive_cmds_need_lc_FC
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
-$as_echo_n "checking dynamic linker characteristics... " >&6; }
-
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
-  ;;
-
-aix[4-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
-    # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[01] | aix4.[01].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
-	:
-      else
-	can_build_shared=no
-      fi
-      ;;
-    esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  case $host_cpu in
-  powerpc)
-    # Since July 2007 AmigaOS4 officially supports .so libraries.
-    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    ;;
-  m68k)
-    library_names_spec='$libname.ixlibrary $libname.a'
-    # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-    ;;
-  esac
-  ;;
-
-beos*)
-  library_names_spec='${libname}${shared_ext}'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[45]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32* | cegcc*)
-  version_type=windows
-  shrext_cmds=".dll"
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$cc_basename in
-  yes,*)
-    # gcc
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname~
-      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-      fi'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    esac
-    dynamic_linker='Win32 ld.exe'
-    ;;
-
-  *,cl*)
-    # Native MSVC
-    libname_spec='$name'
-    soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-    library_names_spec='${libname}.dll.lib'
-
-    case $build_os in
-    mingw*)
-      sys_lib_search_path_spec=
-      lt_save_ifs=$IFS
-      IFS=';'
-      for lt_path in $LIB
-      do
-        IFS=$lt_save_ifs
-        # Let DOS variable expansion print the short 8.3 style file name.
-        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-      done
-      IFS=$lt_save_ifs
-      # Convert to MSYS style.
-      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
-      ;;
-    cygwin*)
-      # Convert to unix form, then to dos form, then back to unix form
-      # but this time dos style (no spaces!) so that the unix form looks
-      # like /cygdrive/c/PROGRA~1:/cygdr...
-      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      ;;
-    *)
-      sys_lib_search_path_spec="$LIB"
-      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-        # It is most probably a Windows format PATH.
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      # FIXME: find the short name or the path components, as spaces are
-      # common. (e.g. "Program Files" -> "PROGRA~1")
-      ;;
-    esac
-
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-    dynamic_linker='Win32 link.exe'
-    ;;
-
-  *)
-    # Assume MSVC wrapper
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    dynamic_linker='Win32 ld.exe'
-    ;;
-  esac
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[23].*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2.*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[01]* | freebsdelf3.[01]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
-  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-haiku*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  dynamic_linker="$host_os runtime_loader"
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-    fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  hppa*64*)
-    shrext_cmds='.sl'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
-  postinstall_cmds='chmod 555 $lib'
-  # or fails outright, so override atomically:
-  install_override_mode=555
-  ;;
-
-interix[3-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux # correct to gnu/linux during the next big refactor
-	else
-		version_type=irix
-	fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-
-  # Some binutils ld are patched to set DT_RUNPATH
-  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_shlibpath_overrides_runpath=no
-    save_LDFLAGS=$LDFLAGS
-    save_libdir=$libdir
-    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_FC\"; \
-	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_FC\""
-    cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-if ac_fn_fc_try_link "$LINENO"; then :
-  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
-  lt_cv_shlibpath_overrides_runpath=yes
-fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-    LDFLAGS=$save_LDFLAGS
-    libdir=$save_libdir
-
-fi
-
-  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Append ld.so.conf contents to the search path
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsdelf*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='NetBSD ld.elf_so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-*nto* | *qnx*)
-  version_type=qnx
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='ldqnx.so'
-  ;;
-
-openbsd*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
-  need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
-    *)				need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[89] | openbsd2.[89].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
-  ;;
-
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux # correct to gnu/linux during the next big refactor
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-	;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-uts4*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
-$as_echo "$dynamic_linker" >&6; }
-test "$dynamic_linker" = no && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
-$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
-hardcode_action_FC=
-if test -n "$hardcode_libdir_flag_spec_FC" ||
-   test -n "$runpath_var_FC" ||
-   test "X$hardcode_automatic_FC" = "Xyes" ; then
-
-  # We can hardcode non-existent directories.
-  if test "$hardcode_direct_FC" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, FC)" != no &&
-     test "$hardcode_minus_L_FC" != no; then
-    # Linking always hardcodes the temporary library directory.
-    hardcode_action_FC=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    hardcode_action_FC=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  hardcode_action_FC=unsupported
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_FC" >&5
-$as_echo "$hardcode_action_FC" >&6; }
-
-if test "$hardcode_action_FC" = relink ||
-   test "$inherit_rpath_FC" = yes; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-
-
-
-
-
-
-
-  fi # test -n "$compiler"
-
-  GCC=$lt_save_GCC
-  CC=$lt_save_CC
-  CFLAGS=$lt_save_CFLAGS
-fi # test "$_lt_disable_FC" != yes
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-
-
-
-
-
-
-
-
-        ac_config_commands="$ac_config_commands libtool"
-
-
-
-
-# Only expand once:
-
-
-
-# check if the source folder is correct
-
-
-
-# Check whether --with-gdal was given.
-if test "${with_gdal+set}" = set; then :
-  withval=$with_gdal; ac_gdal_config_path=$withval
-else
-  gdal_config_system=check
-fi
-
-
-        if test "x$gdal_config_system" = xcheck; then :
-  # Extract the first word of "gdal-config", so it can be a program name with args.
-set dummy gdal-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_GDAL_CONFIG+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $GDAL_CONFIG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_GDAL_CONFIG="$GDAL_CONFIG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_GDAL_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-GDAL_CONFIG=$ac_cv_path_GDAL_CONFIG
-if test -n "$GDAL_CONFIG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GDAL_CONFIG" >&5
-$as_echo "$GDAL_CONFIG" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-else
-  # Extract the first word of "gdal-config", so it can be a program name with args.
-set dummy gdal-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_GDAL_CONFIG+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $GDAL_CONFIG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_GDAL_CONFIG="$GDAL_CONFIG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in `dirname $ac_gdal_config_path 2> /dev/null`
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_GDAL_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  test -z "$ac_cv_path_GDAL_CONFIG" && ac_cv_path_GDAL_CONFIG="no"
-  ;;
-esac
-fi
-GDAL_CONFIG=$ac_cv_path_GDAL_CONFIG
-if test -n "$GDAL_CONFIG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GDAL_CONFIG" >&5
-$as_echo "$GDAL_CONFIG" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-
-fi
-
-    if test ! -x "$GDAL_CONFIG"; then
-        as_fn_error $? "gdal-config does not exist or it is not an exectuable file" "$LINENO" 5
-            GDAL_CONFIG="no"
-            found_gdal="no"
-    fi
-
-    GDAL_VERSION=""
-    GDAL_CFLAGS=""
-    GDAL_LDFLAGS=""
-    GDAL_DEP_LDFLAGS=""
-    GDAL_OGR_ENABLED=""
-
-
-
-    if test "$GDAL_CONFIG" != "no"; then
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GDAL library" >&5
-$as_echo_n "checking for GDAL library... " >&6; }
-
-        GDAL_VERSION="`$GDAL_CONFIG --version`"
-        GDAL_CFLAGS="`$GDAL_CONFIG --cflags`"
-        GDAL_LDFLAGS="`$GDAL_CONFIG --libs`"
-        GDAL_DEP_LDFLAGS="`$GDAL_CONFIG --dep-libs`"
-
-
-$as_echo "#define HAVE_GDAL 1" >>confdefs.h
-
-
-        found_gdal="yes"
-    else
-        found_gdal="no"
-    fi
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $found_gdal" >&5
-$as_echo "$found_gdal" >&6; }
-
-    if test "$found_gdal" = "yes"; then
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OGR support in GDAL library" >&5
-$as_echo_n "checking for OGR support in GDAL library... " >&6; }
-
-        GDAL_OGR_ENABLED="`$GDAL_CONFIG --ogr-enabled`"
-
-$as_echo "#define HAVE_GDAL_OGR 1" >>confdefs.h
-
-
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GDAL_OGR_ENABLED" >&5
-$as_echo "$GDAL_OGR_ENABLED" >&6; }
-    fi
-
-
-    gdal_version_req=1.10.0
-    if test "$found_gdal" = "yes" -a -n "$gdal_version_req"; then
-
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking if GDAL version is >= $gdal_version_req" >&5
-$as_echo_n "checking if GDAL version is >= $gdal_version_req... " >&6; }
-
-                        gdal_version_req_major=`expr $gdal_version_req : '\([0-9]*\)'`
-        gdal_version_req_minor=`expr $gdal_version_req : '[0-9]*\.\([0-9]*\)'`
-        gdal_version_req_micro=`expr $gdal_version_req : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
-        if test "x$gdal_version_req_micro" = "x"; then
-            gdal_version_req_micro="0"
-        fi
-
-        gdal_version_req_number=`expr $gdal_version_req_major \* 1000000 \
-                                   \+ $gdal_version_req_minor \* 1000 \
-                                   \+ $gdal_version_req_micro`
-
-                        gdal_version_major=`expr $GDAL_VERSION : '\([0-9]*\)'`
-        gdal_version_minor=`expr $GDAL_VERSION : '[0-9]*\.\([0-9]*\)'`
-        gdal_version_micro=`expr $GDAL_VERSION : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
-        if test "x$gdal_version_micro" = "x"; then
-            gdal_version_micro="0"
-        fi
-
-        gdal_version_number=`expr $gdal_version_major \* 1000000 \
-                                   \+ $gdal_version_minor \* 1000 \
-                                   \+ $gdal_version_micro`
-
-        gdal_version_check=`expr $gdal_version_number \>\= $gdal_version_req_number`
-        if test "$gdal_version_check" = "1"; then
-            { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-        else
-            { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-as_fn_error $? "GDAL $GDAL_VERSION found, but required version is $gdal_version_req" "$LINENO" 5
-        fi
-    fi
-
-
-
-
-
-
-
-for ac_header in gdal.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "gdal.h" "ac_cv_header_gdal_h" "$ac_includes_default"
-if test "x$ac_cv_header_gdal_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_GDAL_H 1
-_ACEOF
-
-fi
-
-done
-
-
-
-
-
-# Check whether --enable-fann was given.
-if test "${enable_fann+set}" = set; then :
-  enableval=$enable_fann;
-fi
-
-
-
-
-
-
-
-
-
-if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
-	if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
-set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PKG_CONFIG+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $PKG_CONFIG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-PKG_CONFIG=$ac_cv_path_PKG_CONFIG
-if test -n "$PKG_CONFIG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
-$as_echo "$PKG_CONFIG" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_path_PKG_CONFIG"; then
-  ac_pt_PKG_CONFIG=$PKG_CONFIG
-  # Extract the first word of "pkg-config", so it can be a program name with args.
-set dummy pkg-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $ac_pt_PKG_CONFIG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
-if test -n "$ac_pt_PKG_CONFIG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
-$as_echo "$ac_pt_PKG_CONFIG" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_pt_PKG_CONFIG" = x; then
-    PKG_CONFIG=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    PKG_CONFIG=$ac_pt_PKG_CONFIG
-  fi
-else
-  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
-fi
-
-fi
-if test -n "$PKG_CONFIG"; then
-	_pkg_min_version=0.9.0
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
-$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
-	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
-		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-	else
-		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-		PKG_CONFIG=""
-	fi
-fi
-if test "x$enable_fann" = "xyes"; then :
-
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FANN" >&5
-$as_echo_n "checking for FANN... " >&6; }
-
-if test -n "$FANN_CFLAGS"; then
-    pkg_cv_FANN_CFLAGS="$FANN_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fann >= 2.1.0\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "fann >= 2.1.0") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_FANN_CFLAGS=`$PKG_CONFIG --cflags "fann >= 2.1.0" 2>/dev/null`
-		      test "x$?" != "x0" && pkg_failed=yes
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-if test -n "$FANN_LIBS"; then
-    pkg_cv_FANN_LIBS="$FANN_LIBS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fann >= 2.1.0\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "fann >= 2.1.0") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_FANN_LIBS=`$PKG_CONFIG --libs "fann >= 2.1.0" 2>/dev/null`
-		      test "x$?" != "x0" && pkg_failed=yes
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-	        FANN_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "fann >= 2.1.0" 2>&1`
-        else
-	        FANN_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "fann >= 2.1.0" 2>&1`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$FANN_PKG_ERRORS" >&5
-
-	HAVE_FANN=0
-elif test $pkg_failed = untried; then
-     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-	HAVE_FANN=0
-else
-	FANN_CFLAGS=$pkg_cv_FANN_CFLAGS
-	FANN_LIBS=$pkg_cv_FANN_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-	HAVE_FANN=1
-fi
- if test "$HAVE_FANN" -eq 1; then
-  USE_FANN_TRUE=
-  USE_FANN_FALSE='#'
-else
-  USE_FANN_TRUE='#'
-  USE_FANN_FALSE=
-fi
-
-
-else
-
- if false; then
-  USE_FANN_TRUE=
-  USE_FANN_FALSE='#'
-else
-  USE_FANN_TRUE='#'
-  USE_FANN_FALSE=
-fi
-
-
-fi
-
-
-
-# Check whether --enable-las was given.
-if test "${enable_las+set}" = set; then :
-  enableval=$enable_las;
-fi
-
-
-if test "x$enable_las" = "xyes"; then :
-
- if true; then
-  USE_LAS_TRUE=
-  USE_LAS_FALSE='#'
-else
-  USE_LAS_TRUE='#'
-  USE_LAS_FALSE=
-fi
-
-LASCLASSES_OPT="src/lasclasses"
-
-
-else
-
- if false; then
-  USE_LAS_TRUE=
-  USE_LAS_FALSE='#'
-else
-  USE_LAS_TRUE='#'
-  USE_LAS_FALSE=
-fi
-
-
-fi
-
-# Check whether --enable-nlopt was given.
-if test "${enable_nlopt+set}" = set; then :
-  enableval=$enable_nlopt;
-fi
-
-
-if test "x$enable_nlopt" = "xyes"; then :
-
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for NLOPT" >&5
-$as_echo_n "checking for NLOPT... " >&6; }
-
-if test -n "$NLOPT_CFLAGS"; then
-    pkg_cv_NLOPT_CFLAGS="$NLOPT_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"nlopt >= 2.1.0\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "nlopt >= 2.1.0") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_NLOPT_CFLAGS=`$PKG_CONFIG --cflags "nlopt >= 2.1.0" 2>/dev/null`
-		      test "x$?" != "x0" && pkg_failed=yes
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-if test -n "$NLOPT_LIBS"; then
-    pkg_cv_NLOPT_LIBS="$NLOPT_LIBS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"nlopt >= 2.1.0\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "nlopt >= 2.1.0") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_NLOPT_LIBS=`$PKG_CONFIG --libs "nlopt >= 2.1.0" 2>/dev/null`
-		      test "x$?" != "x0" && pkg_failed=yes
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-	        NLOPT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "nlopt >= 2.1.0" 2>&1`
-        else
-	        NLOPT_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "nlopt >= 2.1.0" 2>&1`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$NLOPT_PKG_ERRORS" >&5
-
-	HAVE_NLOPT=0
-elif test $pkg_failed = untried; then
-     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-	HAVE_NLOPT=0
-else
-	NLOPT_CFLAGS=$pkg_cv_NLOPT_CFLAGS
-	NLOPT_LIBS=$pkg_cv_NLOPT_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-	HAVE_NLOPT=1
-fi
- if test "$HAVE_NLOPT" -eq 1; then
-  USE_NLOPT_TRUE=
-  USE_NLOPT_FALSE='#'
-else
-  USE_NLOPT_TRUE='#'
-  USE_NLOPT_FALSE=
-fi
-
-
-else
-
- if false; then
-  USE_NLOPT_TRUE=
-  USE_NLOPT_FALSE='#'
-else
-  USE_NLOPT_TRUE='#'
-  USE_NLOPT_FALSE=
-fi
-
-
-fi
-
-
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GSL" >&5
-$as_echo_n "checking for GSL... " >&6; }
-
-if test -n "$GSL_CFLAGS"; then
-    pkg_cv_GSL_CFLAGS="$GSL_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gsl >= 1.14\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "gsl >= 1.14") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_GSL_CFLAGS=`$PKG_CONFIG --cflags "gsl >= 1.14" 2>/dev/null`
-		      test "x$?" != "x0" && pkg_failed=yes
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-if test -n "$GSL_LIBS"; then
-    pkg_cv_GSL_LIBS="$GSL_LIBS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gsl >= 1.14\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "gsl >= 1.14") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_GSL_LIBS=`$PKG_CONFIG --libs "gsl >= 1.14" 2>/dev/null`
-		      test "x$?" != "x0" && pkg_failed=yes
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-	        GSL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gsl >= 1.14" 2>&1`
-        else
-	        GSL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gsl >= 1.14" 2>&1`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$GSL_PKG_ERRORS" >&5
-
-	HAVE_GSL=0
-elif test $pkg_failed = untried; then
-     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-	HAVE_GSL=0
-else
-	GSL_CFLAGS=$pkg_cv_GSL_CFLAGS
-	GSL_LIBS=$pkg_cv_GSL_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-	HAVE_GSL=1
-fi
- if test "$HAVE_GSL" -eq 1; then
-  USE_GSL_TRUE=
-  USE_GSL_FALSE='#'
-else
-  USE_GSL_TRUE='#'
-  USE_GSL_FALSE=
-fi
-
-
-# use the C++ compiler for the following checks
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-
-# Checks for header files.
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_cv_header_stdc=yes
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then :
-  :
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-		   (('a' <= (c) && (c) <= 'i') \
-		     || ('j' <= (c) && (c) <= 'r') \
-		     || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-	|| toupper (i) != TOUPPER (i))
-      return 2;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_run "$LINENO"; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
-
-fi
-
-for ac_header in string
-do :
-  ac_fn_cxx_check_header_mongrel "$LINENO" "string" "ac_cv_header_string" "$ac_includes_default"
-if test "x$ac_cv_header_string" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_STRING 1
-_ACEOF
-
-fi
-
-done
-
-for ac_header in iostream
-do :
-  ac_fn_cxx_check_header_mongrel "$LINENO" "iostream" "ac_cv_header_iostream" "$ac_includes_default"
-if test "x$ac_cv_header_iostream" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_IOSTREAM 1
-_ACEOF
-
-fi
-
-done
-
-
-# Checks for typedefs, structures, and compiler characteristics.
-ac_fn_cxx_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
-if test "x$ac_cv_type_size_t" = xyes; then :
-
-else
-
-cat >>confdefs.h <<_ACEOF
-#define size_t unsigned int
-_ACEOF
-
-fi
-
-
-# distribute additional compiler and linker flags
-# --> set these variables instead of CXXFLAGS or LDFLAGS
-
-
-
-
-# Define these substitions here to keep all version information in one place.
-# For information on how to properly maintain the library version information,
-# refer to the libtool manual, section "Updating library version information":
-# http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
-PKTOOLS_SO_VERSION=1:6:0
-
-
-# files to generate via autotools (.am or .in source files)
-ac_config_headers="$ac_config_headers config.h"
-
-#frankie says: "You should not distribute the config.h file, but the config.h.in file only".
-#AC_CONFIG_HEADERS([config.h])
-
-if test -z "$USE_LAS_TRUE"; then :
-  ac_config_files="$ac_config_files src/lasclasses/Makefile"
-
-fi
-ac_config_files="$ac_config_files Makefile src/base/Makefile src/algorithms/Makefile src/imageclasses/Makefile src/fileclasses/Makefile src/apps/Makefile pktools.pc:pktools.pc.in"
-
-# generate the final Makefile etc.
-cat >confcache <<\_ACEOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs, see configure's option --config-cache.
-# It is not useful on other systems.  If it contains results you don't
-# want to keep, you may remove or edit it.
-#
-# config.status only pays attention to the cache file if you give it
-# the --recheck option to rerun configure.
-#
-# `ac_cv_env_foo' variables (set or unset) will be overridden when
-# loading this file, other *unset* `ac_cv_foo' will be assigned the
-# following values.
-
-_ACEOF
-
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, we kill variables containing newlines.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(
-  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) { eval $ac_var=; unset $ac_var;} ;;
-      esac ;;
-    esac
-  done
-
-  (set) 2>&1 |
-    case $as_nl`(ac_space=' '; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      # `set' does not quote correctly, so add quotes: double-quote
-      # substitution turns \\\\ into \\, and sed turns \\ into \.
-      sed -n \
-	"s/'/'\\\\''/g;
-	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
-      ;; #(
-    *)
-      # `set' quotes correctly as required by POSIX, so do not add quotes.
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-) |
-  sed '
-     /^ac_cv_env_/b end
-     t clear
-     :clear
-     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
-     t end
-     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
-     :end' >>confcache
-if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
-  if test -w "$cache_file"; then
-    if test "x$cache_file" != "x/dev/null"; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
-$as_echo "$as_me: updating cache $cache_file" >&6;}
-      if test ! -f "$cache_file" || test -h "$cache_file"; then
-	cat confcache >"$cache_file"
-      else
-        case $cache_file in #(
-        */* | ?:*)
-	  mv -f confcache "$cache_file"$$ &&
-	  mv -f "$cache_file"$$ "$cache_file" ;; #(
-        *)
-	  mv -f confcache "$cache_file" ;;
-	esac
-      fi
-    fi
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
-  fi
-fi
-rm -f confcache
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-DEFS=-DHAVE_CONFIG_H
-
-ac_libobjs=
-ac_ltlibobjs=
-U=
-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
-  # 1. Remove the extension, and $U if already installed.
-  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
-  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
-  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
-  #    will be set to the directory where LIBOBJS objects are built.
-  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
-  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
-done
-LIBOBJS=$ac_libobjs
-
-LTLIBOBJS=$ac_ltlibobjs
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
-$as_echo_n "checking that generated files are newer than configure... " >&6; }
-   if test -n "$am_sleep_pid"; then
-     # Hide warnings about reused PIDs.
-     wait $am_sleep_pid 2>/dev/null
-   fi
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
-$as_echo "done" >&6; }
- if test -n "$EXEEXT"; then
-  am__EXEEXT_TRUE=
-  am__EXEEXT_FALSE='#'
-else
-  am__EXEEXT_TRUE='#'
-  am__EXEEXT_FALSE=
-fi
-
-if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
-  as_fn_error $? "conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
-  as_fn_error $? "conditional \"am__fastdepCXX\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
-  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${USE_FANN_TRUE}" && test -z "${USE_FANN_FALSE}"; then
-  as_fn_error $? "conditional \"USE_FANN\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${USE_FANN_TRUE}" && test -z "${USE_FANN_FALSE}"; then
-  as_fn_error $? "conditional \"USE_FANN\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${USE_LAS_TRUE}" && test -z "${USE_LAS_FALSE}"; then
-  as_fn_error $? "conditional \"USE_LAS\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${USE_LAS_TRUE}" && test -z "${USE_LAS_FALSE}"; then
-  as_fn_error $? "conditional \"USE_LAS\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${USE_NLOPT_TRUE}" && test -z "${USE_NLOPT_FALSE}"; then
-  as_fn_error $? "conditional \"USE_NLOPT\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${USE_NLOPT_TRUE}" && test -z "${USE_NLOPT_FALSE}"; then
-  as_fn_error $? "conditional \"USE_NLOPT\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${USE_GSL_TRUE}" && test -z "${USE_GSL_FALSE}"; then
-  as_fn_error $? "conditional \"USE_GSL\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-
-: "${CONFIG_STATUS=./config.status}"
-ac_write_fail=0
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
-as_write_fail=0
-cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate the current configuration.
-# Compiler output produced by configure, useful for debugging
-# configure, is in config.log if it exists.
-
-debug=false
-ac_cs_recheck=false
-ac_cs_silent=false
-
-SHELL=\${CONFIG_SHELL-$SHELL}
-export SHELL
-_ASEOF
-cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-	expr "X$arg" : "X\\(.*\\)$as_nl";
-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""	$as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-as_myself=
-case $0 in #((
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-  done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
-  as_status=$1; test $as_status -eq 0 && as_status=1
-  if test "$4"; then
-    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
-  fi
-  $as_echo "$as_me: error: $2" >&2
-  as_fn_exit $as_status
-} # as_fn_error
-
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
-  return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
-  set +e
-  as_fn_set_status $1
-  exit $1
-} # as_fn_exit
-
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
-  { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
-  eval 'as_fn_append ()
-  {
-    eval $1+=\$2
-  }'
-else
-  as_fn_append ()
-  {
-    eval $1=\$$1\$2
-  }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
-  eval 'as_fn_arith ()
-  {
-    as_val=$(( $* ))
-  }'
-else
-  as_fn_arith ()
-  {
-    as_val=`expr "$@" || test $? -eq 1`
-  }
-fi # as_fn_arith
-
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-	 X"$0" : 'X\(//\)$' \| \
-	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
-  case `echo 'xy\c'` in
-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  xy)  ECHO_C='\c';;
-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
-       ECHO_T='	';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -pR'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -pR'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -pR'
-  fi
-else
-  as_ln_s='cp -pR'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || eval $as_mkdir_p || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p='mkdir -p "$as_dir"'
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
-  test -f "$1" && test -x "$1"
-} # as_fn_executable_p
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-exec 6>&1
-## ----------------------------------- ##
-## Main body of $CONFIG_STATUS script. ##
-## ----------------------------------- ##
-_ASEOF
-test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# Save the log message, to keep $0 and so on meaningful, and to
-# report actual input values of CONFIG_FILES etc. instead of their
-# values after options handling.
-ac_log="
-This file was extended by pktools $as_me 2.6.6, which was
-generated by GNU Autoconf 2.69.  Invocation command line was
-
-  CONFIG_FILES    = $CONFIG_FILES
-  CONFIG_HEADERS  = $CONFIG_HEADERS
-  CONFIG_LINKS    = $CONFIG_LINKS
-  CONFIG_COMMANDS = $CONFIG_COMMANDS
-  $ $0 $@
-
-on `(hostname || uname -n) 2>/dev/null | sed 1q`
-"
-
-_ACEOF
-
-case $ac_config_files in *"
-"*) set x $ac_config_files; shift; ac_config_files=$*;;
-esac
-
-case $ac_config_headers in *"
-"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
-esac
-
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-# Files that config.status was made for.
-config_files="$ac_config_files"
-config_headers="$ac_config_headers"
-config_commands="$ac_config_commands"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-ac_cs_usage="\
-\`$as_me' instantiates files and other configuration actions
-from templates according to the current configuration.  Unless the files
-and actions are specified as TAGs, all are instantiated by default.
-
-Usage: $0 [OPTION]... [TAG]...
-
-  -h, --help       print this help, then exit
-  -V, --version    print version number and configuration settings, then exit
-      --config     print configuration, then exit
-  -q, --quiet, --silent
-                   do not print progress messages
-  -d, --debug      don't remove temporary files
-      --recheck    update $as_me by reconfiguring in the same conditions
-      --file=FILE[:TEMPLATE]
-                   instantiate the configuration file FILE
-      --header=FILE[:TEMPLATE]
-                   instantiate the configuration header FILE
-
-Configuration files:
-$config_files
-
-Configuration headers:
-$config_headers
-
-Configuration commands:
-$config_commands
-
-Report bugs to <kempenep at gmail.com>."
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
-ac_cs_version="\\
-pktools config.status 2.6.6
-configured by $0, generated by GNU Autoconf 2.69,
-  with options \\"\$ac_cs_config\\"
-
-Copyright (C) 2012 Free Software Foundation, Inc.
-This config.status script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it."
-
-ac_pwd='$ac_pwd'
-srcdir='$srcdir'
-INSTALL='$INSTALL'
-MKDIR_P='$MKDIR_P'
-AWK='$AWK'
-test -n "\$AWK" || AWK=awk
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# The default lists apply if the user does not specify any file.
-ac_need_defaults=:
-while test $# != 0
-do
-  case $1 in
-  --*=?*)
-    ac_option=`expr "X$1" : 'X\([^=]*\)='`
-    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
-    ac_shift=:
-    ;;
-  --*=)
-    ac_option=`expr "X$1" : 'X\([^=]*\)='`
-    ac_optarg=
-    ac_shift=:
-    ;;
-  *)
-    ac_option=$1
-    ac_optarg=$2
-    ac_shift=shift
-    ;;
-  esac
-
-  case $ac_option in
-  # Handling of the options.
-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-    ac_cs_recheck=: ;;
-  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
-    $as_echo "$ac_cs_version"; exit ;;
-  --config | --confi | --conf | --con | --co | --c )
-    $as_echo "$ac_cs_config"; exit ;;
-  --debug | --debu | --deb | --de | --d | -d )
-    debug=: ;;
-  --file | --fil | --fi | --f )
-    $ac_shift
-    case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    '') as_fn_error $? "missing file argument" ;;
-    esac
-    as_fn_append CONFIG_FILES " '$ac_optarg'"
-    ac_need_defaults=false;;
-  --header | --heade | --head | --hea )
-    $ac_shift
-    case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    esac
-    as_fn_append CONFIG_HEADERS " '$ac_optarg'"
-    ac_need_defaults=false;;
-  --he | --h)
-    # Conflict between --help and --header
-    as_fn_error $? "ambiguous option: \`$1'
-Try \`$0 --help' for more information.";;
-  --help | --hel | -h )
-    $as_echo "$ac_cs_usage"; exit ;;
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil | --si | --s)
-    ac_cs_silent=: ;;
-
-  # This is an error.
-  -*) as_fn_error $? "unrecognized option: \`$1'
-Try \`$0 --help' for more information." ;;
-
-  *) as_fn_append ac_config_targets " $1"
-     ac_need_defaults=false ;;
-
-  esac
-  shift
-done
-
-ac_configure_extra_args=
-
-if $ac_cs_silent; then
-  exec 6>/dev/null
-  ac_configure_extra_args="$ac_configure_extra_args --silent"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-if \$ac_cs_recheck; then
-  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
-  shift
-  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
-  CONFIG_SHELL='$SHELL'
-  export CONFIG_SHELL
-  exec "\$@"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-exec 5>>config.log
-{
-  echo
-  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-## Running $as_me. ##
-_ASBOX
-  $as_echo "$ac_log"
-} >&5
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-#
-# INIT-COMMANDS
-#
-AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
-
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-sed_quote_subst='$sed_quote_subst'
-double_quote_subst='$double_quote_subst'
-delay_variable_subst='$delay_variable_subst'
-macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
-macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
-enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
-enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
-pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
-enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
-SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
-ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
-PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
-host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
-host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
-host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
-build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
-build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
-build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
-SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
-Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
-GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
-EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
-FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
-LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
-NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
-LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
-max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
-ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
-exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
-lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
-lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
-lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
-lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
-lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
-reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
-reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
-OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
-deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
-file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
-file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
-want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
-DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
-sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
-AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
-AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
-archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
-STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
-RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
-old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
-old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
-lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
-CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
-CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
-compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
-GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
-nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
-lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
-objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
-MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
-lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
-need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
-MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
-DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
-NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
-LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
-OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
-libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
-shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
-extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
-archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
-enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
-export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
-whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
-compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
-old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
-old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
-archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
-archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
-module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
-module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
-with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
-allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
-no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
-hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
-hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
-hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
-hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
-inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
-link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
-always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
-export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
-exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
-include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
-prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
-postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
-file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
-variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
-need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
-need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
-version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
-runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
-shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
-shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
-libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
-library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
-soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
-install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
-postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
-finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
-finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
-hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
-sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
-sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`'
-hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
-enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
-enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
-enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
-old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
-striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`'
-predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`'
-postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`'
-predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`'
-postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`'
-LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`'
-LD_FC='`$ECHO "$LD_FC" | $SED "$delay_single_quote_subst"`'
-reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`'
-reload_flag_FC='`$ECHO "$reload_flag_FC" | $SED "$delay_single_quote_subst"`'
-reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-reload_cmds_FC='`$ECHO "$reload_cmds_FC" | $SED "$delay_single_quote_subst"`'
-old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-old_archive_cmds_FC='`$ECHO "$old_archive_cmds_FC" | $SED "$delay_single_quote_subst"`'
-compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`'
-compiler_FC='`$ECHO "$compiler_FC" | $SED "$delay_single_quote_subst"`'
-GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`'
-GCC_FC='`$ECHO "$GCC_FC" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_no_builtin_flag_FC='`$ECHO "$lt_prog_compiler_no_builtin_flag_FC" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_pic_FC='`$ECHO "$lt_prog_compiler_pic_FC" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_wl_FC='`$ECHO "$lt_prog_compiler_wl_FC" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_static_FC='`$ECHO "$lt_prog_compiler_static_FC" | $SED "$delay_single_quote_subst"`'
-lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`'
-lt_cv_prog_compiler_c_o_FC='`$ECHO "$lt_cv_prog_compiler_c_o_FC" | $SED "$delay_single_quote_subst"`'
-archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`'
-archive_cmds_need_lc_FC='`$ECHO "$archive_cmds_need_lc_FC" | $SED "$delay_single_quote_subst"`'
-enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`'
-enable_shared_with_static_runtimes_FC='`$ECHO "$enable_shared_with_static_runtimes_FC" | $SED "$delay_single_quote_subst"`'
-export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
-export_dynamic_flag_spec_FC='`$ECHO "$export_dynamic_flag_spec_FC" | $SED "$delay_single_quote_subst"`'
-whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
-whole_archive_flag_spec_FC='`$ECHO "$whole_archive_flag_spec_FC" | $SED "$delay_single_quote_subst"`'
-compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`'
-compiler_needs_object_FC='`$ECHO "$compiler_needs_object_FC" | $SED "$delay_single_quote_subst"`'
-old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-old_archive_from_new_cmds_FC='`$ECHO "$old_archive_from_new_cmds_FC" | $SED "$delay_single_quote_subst"`'
-old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-old_archive_from_expsyms_cmds_FC='`$ECHO "$old_archive_from_expsyms_cmds_FC" | $SED "$delay_single_quote_subst"`'
-archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-archive_cmds_FC='`$ECHO "$archive_cmds_FC" | $SED "$delay_single_quote_subst"`'
-archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-archive_expsym_cmds_FC='`$ECHO "$archive_expsym_cmds_FC" | $SED "$delay_single_quote_subst"`'
-module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-module_cmds_FC='`$ECHO "$module_cmds_FC" | $SED "$delay_single_quote_subst"`'
-module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-module_expsym_cmds_FC='`$ECHO "$module_expsym_cmds_FC" | $SED "$delay_single_quote_subst"`'
-with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`'
-with_gnu_ld_FC='`$ECHO "$with_gnu_ld_FC" | $SED "$delay_single_quote_subst"`'
-allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
-allow_undefined_flag_FC='`$ECHO "$allow_undefined_flag_FC" | $SED "$delay_single_quote_subst"`'
-no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
-no_undefined_flag_FC='`$ECHO "$no_undefined_flag_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_FC='`$ECHO "$hardcode_libdir_flag_spec_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_separator_FC='`$ECHO "$hardcode_libdir_separator_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_FC='`$ECHO "$hardcode_direct_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_absolute_FC='`$ECHO "$hardcode_direct_absolute_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_minus_L_FC='`$ECHO "$hardcode_minus_L_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_shlibpath_var_FC='`$ECHO "$hardcode_shlibpath_var_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_automatic_FC='`$ECHO "$hardcode_automatic_FC" | $SED "$delay_single_quote_subst"`'
-inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`'
-inherit_rpath_FC='`$ECHO "$inherit_rpath_FC" | $SED "$delay_single_quote_subst"`'
-link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`'
-link_all_deplibs_FC='`$ECHO "$link_all_deplibs_FC" | $SED "$delay_single_quote_subst"`'
-always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`'
-always_export_symbols_FC='`$ECHO "$always_export_symbols_FC" | $SED "$delay_single_quote_subst"`'
-export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-export_symbols_cmds_FC='`$ECHO "$export_symbols_cmds_FC" | $SED "$delay_single_quote_subst"`'
-exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
-exclude_expsyms_FC='`$ECHO "$exclude_expsyms_FC" | $SED "$delay_single_quote_subst"`'
-include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
-include_expsyms_FC='`$ECHO "$include_expsyms_FC" | $SED "$delay_single_quote_subst"`'
-prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-prelink_cmds_FC='`$ECHO "$prelink_cmds_FC" | $SED "$delay_single_quote_subst"`'
-postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-postlink_cmds_FC='`$ECHO "$postlink_cmds_FC" | $SED "$delay_single_quote_subst"`'
-file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`'
-file_list_spec_FC='`$ECHO "$file_list_spec_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_action_FC='`$ECHO "$hardcode_action_FC" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_dirs_FC='`$ECHO "$compiler_lib_search_dirs_FC" | $SED "$delay_single_quote_subst"`'
-predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`'
-predep_objects_FC='`$ECHO "$predep_objects_FC" | $SED "$delay_single_quote_subst"`'
-postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`'
-postdep_objects_FC='`$ECHO "$postdep_objects_FC" | $SED "$delay_single_quote_subst"`'
-predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`'
-predeps_FC='`$ECHO "$predeps_FC" | $SED "$delay_single_quote_subst"`'
-postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`'
-postdeps_FC='`$ECHO "$postdeps_FC" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_path_FC='`$ECHO "$compiler_lib_search_path_FC" | $SED "$delay_single_quote_subst"`'
-
-LTCC='$LTCC'
-LTCFLAGS='$LTCFLAGS'
-compiler='$compiler_DEFAULT'
-
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
-  eval 'cat <<_LTECHO_EOF
-\$1
-_LTECHO_EOF'
-}
-
-# Quote evaled strings.
-for var in SHELL \
-ECHO \
-PATH_SEPARATOR \
-SED \
-GREP \
-EGREP \
-FGREP \
-LD \
-NM \
-LN_S \
-lt_SP2NL \
-lt_NL2SP \
-reload_flag \
-OBJDUMP \
-deplibs_check_method \
-file_magic_cmd \
-file_magic_glob \
-want_nocaseglob \
-DLLTOOL \
-sharedlib_from_linklib_cmd \
-AR \
-AR_FLAGS \
-archiver_list_spec \
-STRIP \
-RANLIB \
-CC \
-CFLAGS \
-compiler \
-lt_cv_sys_global_symbol_pipe \
-lt_cv_sys_global_symbol_to_cdecl \
-lt_cv_sys_global_symbol_to_c_name_address \
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
-nm_file_list_spec \
-lt_prog_compiler_no_builtin_flag \
-lt_prog_compiler_pic \
-lt_prog_compiler_wl \
-lt_prog_compiler_static \
-lt_cv_prog_compiler_c_o \
-need_locks \
-MANIFEST_TOOL \
-DSYMUTIL \
-NMEDIT \
-LIPO \
-OTOOL \
-OTOOL64 \
-shrext_cmds \
-export_dynamic_flag_spec \
-whole_archive_flag_spec \
-compiler_needs_object \
-with_gnu_ld \
-allow_undefined_flag \
-no_undefined_flag \
-hardcode_libdir_flag_spec \
-hardcode_libdir_separator \
-exclude_expsyms \
-include_expsyms \
-file_list_spec \
-variables_saved_for_relink \
-libname_spec \
-library_names_spec \
-soname_spec \
-install_override_mode \
-finish_eval \
-old_striplib \
-striplib \
-compiler_lib_search_dirs \
-predep_objects \
-postdep_objects \
-predeps \
-postdeps \
-compiler_lib_search_path \
-LD_CXX \
-LD_FC \
-reload_flag_CXX \
-reload_flag_FC \
-compiler_CXX \
-compiler_FC \
-lt_prog_compiler_no_builtin_flag_CXX \
-lt_prog_compiler_no_builtin_flag_FC \
-lt_prog_compiler_pic_CXX \
-lt_prog_compiler_pic_FC \
-lt_prog_compiler_wl_CXX \
-lt_prog_compiler_wl_FC \
-lt_prog_compiler_static_CXX \
-lt_prog_compiler_static_FC \
-lt_cv_prog_compiler_c_o_CXX \
-lt_cv_prog_compiler_c_o_FC \
-export_dynamic_flag_spec_CXX \
-export_dynamic_flag_spec_FC \
-whole_archive_flag_spec_CXX \
-whole_archive_flag_spec_FC \
-compiler_needs_object_CXX \
-compiler_needs_object_FC \
-with_gnu_ld_CXX \
-with_gnu_ld_FC \
-allow_undefined_flag_CXX \
-allow_undefined_flag_FC \
-no_undefined_flag_CXX \
-no_undefined_flag_FC \
-hardcode_libdir_flag_spec_CXX \
-hardcode_libdir_flag_spec_FC \
-hardcode_libdir_separator_CXX \
-hardcode_libdir_separator_FC \
-exclude_expsyms_CXX \
-exclude_expsyms_FC \
-include_expsyms_CXX \
-include_expsyms_FC \
-file_list_spec_CXX \
-file_list_spec_FC \
-compiler_lib_search_dirs_CXX \
-compiler_lib_search_dirs_FC \
-predep_objects_CXX \
-predep_objects_FC \
-postdep_objects_CXX \
-postdep_objects_FC \
-predeps_CXX \
-predeps_FC \
-postdeps_CXX \
-postdeps_FC \
-compiler_lib_search_path_CXX \
-compiler_lib_search_path_FC; do
-    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
-    *[\\\\\\\`\\"\\\$]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-# Double-quote double-evaled strings.
-for var in reload_cmds \
-old_postinstall_cmds \
-old_postuninstall_cmds \
-old_archive_cmds \
-extract_expsyms_cmds \
-old_archive_from_new_cmds \
-old_archive_from_expsyms_cmds \
-archive_cmds \
-archive_expsym_cmds \
-module_cmds \
-module_expsym_cmds \
-export_symbols_cmds \
-prelink_cmds \
-postlink_cmds \
-postinstall_cmds \
-postuninstall_cmds \
-finish_cmds \
-sys_lib_search_path_spec \
-sys_lib_dlsearch_path_spec \
-reload_cmds_CXX \
-reload_cmds_FC \
-old_archive_cmds_CXX \
-old_archive_cmds_FC \
-old_archive_from_new_cmds_CXX \
-old_archive_from_new_cmds_FC \
-old_archive_from_expsyms_cmds_CXX \
-old_archive_from_expsyms_cmds_FC \
-archive_cmds_CXX \
-archive_cmds_FC \
-archive_expsym_cmds_CXX \
-archive_expsym_cmds_FC \
-module_cmds_CXX \
-module_cmds_FC \
-module_expsym_cmds_CXX \
-module_expsym_cmds_FC \
-export_symbols_cmds_CXX \
-export_symbols_cmds_FC \
-prelink_cmds_CXX \
-prelink_cmds_FC \
-postlink_cmds_CXX \
-postlink_cmds_FC; do
-    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
-    *[\\\\\\\`\\"\\\$]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-ac_aux_dir='$ac_aux_dir'
-xsi_shell='$xsi_shell'
-lt_shell_append='$lt_shell_append'
-
-# See if we are running on zsh, and set the options which allow our
-# commands through without removal of \ escapes INIT.
-if test -n "\${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
-fi
-
-
-    PACKAGE='$PACKAGE'
-    VERSION='$VERSION'
-    TIMESTAMP='$TIMESTAMP'
-    RM='$RM'
-    ofile='$ofile'
-
-
-
-
-
-
-
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-
-# Handling of arguments.
-for ac_config_target in $ac_config_targets
-do
-  case $ac_config_target in
-    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
-    "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
-    "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
-    "src/lasclasses/Makefile") CONFIG_FILES="$CONFIG_FILES src/lasclasses/Makefile" ;;
-    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-    "src/base/Makefile") CONFIG_FILES="$CONFIG_FILES src/base/Makefile" ;;
-    "src/algorithms/Makefile") CONFIG_FILES="$CONFIG_FILES src/algorithms/Makefile" ;;
-    "src/imageclasses/Makefile") CONFIG_FILES="$CONFIG_FILES src/imageclasses/Makefile" ;;
-    "src/fileclasses/Makefile") CONFIG_FILES="$CONFIG_FILES src/fileclasses/Makefile" ;;
-    "src/apps/Makefile") CONFIG_FILES="$CONFIG_FILES src/apps/Makefile" ;;
-    "pktools.pc") CONFIG_FILES="$CONFIG_FILES pktools.pc:pktools.pc.in" ;;
-
-  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
-  esac
-done
-
-
-# If the user did not use the arguments to specify the items to instantiate,
-# then the envvar interface is used.  Set only those that are not.
-# We use the long form for the default assignment because of an extremely
-# bizarre bug on SunOS 4.1.3.
-if $ac_need_defaults; then
-  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
-  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
-  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
-fi
-
-# Have a temporary directory for convenience.  Make it in the build tree
-# simply because there is no reason against having it here, and in addition,
-# creating and moving files from /tmp can sometimes cause problems.
-# Hook for its removal unless debugging.
-# Note that there is a small window in which the directory will not be cleaned:
-# after its creation but before its name has been assigned to `$tmp'.
-$debug ||
-{
-  tmp= ac_tmp=
-  trap 'exit_status=$?
-  : "${ac_tmp:=$tmp}"
-  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
-' 0
-  trap 'as_fn_exit 1' 1 2 13 15
-}
-# Create a (secure) tmp directory for tmp files.
-
-{
-  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
-  test -d "$tmp"
-}  ||
-{
-  tmp=./conf$$-$RANDOM
-  (umask 077 && mkdir "$tmp")
-} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
-ac_tmp=$tmp
-
-# Set up the scripts for CONFIG_FILES section.
-# No need to generate them if there are no CONFIG_FILES.
-# This happens for instance with `./config.status config.h'.
-if test -n "$CONFIG_FILES"; then
-
-
-ac_cr=`echo X | tr X '\015'`
-# On cygwin, bash can eat \r inside `` if the user requested igncr.
-# But we know of no other shell where ac_cr would be empty at this
-# point, so we can use a bashism as a fallback.
-if test "x$ac_cr" = x; then
-  eval ac_cr=\$\'\\r\'
-fi
-ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
-if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
-  ac_cs_awk_cr='\\r'
-else
-  ac_cs_awk_cr=$ac_cr
-fi
-
-echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
-_ACEOF
-
-
-{
-  echo "cat >conf$$subs.awk <<_ACEOF" &&
-  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
-  echo "_ACEOF"
-} >conf$$subs.sh ||
-  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
-ac_delim='%!_!# '
-for ac_last_try in false false false false false :; do
-  . ./conf$$subs.sh ||
-    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-
-  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
-  if test $ac_delim_n = $ac_delim_num; then
-    break
-  elif $ac_last_try; then
-    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-  else
-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-  fi
-done
-rm -f conf$$subs.sh
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
-_ACEOF
-sed -n '
-h
-s/^/S["/; s/!.*/"]=/
-p
-g
-s/^[^!]*!//
-:repl
-t repl
-s/'"$ac_delim"'$//
-t delim
-:nl
-h
-s/\(.\{148\}\)..*/\1/
-t more1
-s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
-p
-n
-b repl
-:more1
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t nl
-:delim
-h
-s/\(.\{148\}\)..*/\1/
-t more2
-s/["\\]/\\&/g; s/^/"/; s/$/"/
-p
-b
-:more2
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t delim
-' <conf$$subs.awk | sed '
-/^[^""]/{
-  N
-  s/\n//
-}
-' >>$CONFIG_STATUS || ac_write_fail=1
-rm -f conf$$subs.awk
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-_ACAWK
-cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
-  for (key in S) S_is_set[key] = 1
-  FS = ""
-
-}
-{
-  line = $ 0
-  nfields = split(line, field, "@")
-  substed = 0
-  len = length(field[1])
-  for (i = 2; i < nfields; i++) {
-    key = field[i]
-    keylen = length(key)
-    if (S_is_set[key]) {
-      value = S[key]
-      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
-      len += length(value) + length(field[++i])
-      substed = 1
-    } else
-      len += 1 + keylen
-  }
-
-  print line
-}
-
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
-  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
-else
-  cat
-fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
-  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
-_ACEOF
-
-# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
-# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
-# trailing colons and then remove the whole line if VPATH becomes empty
-# (actually we leave an empty line to preserve line numbers).
-if test "x$srcdir" = x.; then
-  ac_vpsub='/^[	 ]*VPATH[	 ]*=[	 ]*/{
-h
-s///
-s/^/:/
-s/[	 ]*$/:/
-s/:\$(srcdir):/:/g
-s/:\${srcdir}:/:/g
-s/:@srcdir@:/:/g
-s/^:*//
-s/:*$//
-x
-s/\(=[	 ]*\).*/\1/
-G
-s/\n//
-s/^[^=]*=[	 ]*$//
-}'
-fi
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-fi # test -n "$CONFIG_FILES"
-
-# Set up the scripts for CONFIG_HEADERS section.
-# No need to generate them if there are no CONFIG_HEADERS.
-# This happens for instance with `./config.status Makefile'.
-if test -n "$CONFIG_HEADERS"; then
-cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
-BEGIN {
-_ACEOF
-
-# Transform confdefs.h into an awk script `defines.awk', embedded as
-# here-document in config.status, that substitutes the proper values into
-# config.h.in to produce config.h.
-
-# Create a delimiter string that does not exist in confdefs.h, to ease
-# handling of long lines.
-ac_delim='%!_!# '
-for ac_last_try in false false :; do
-  ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
-  if test -z "$ac_tt"; then
-    break
-  elif $ac_last_try; then
-    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
-  else
-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-  fi
-done
-
-# For the awk script, D is an array of macro values keyed by name,
-# likewise P contains macro parameters if any.  Preserve backslash
-# newline sequences.
-
-ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
-sed -n '
-s/.\{148\}/&'"$ac_delim"'/g
-t rset
-:rset
-s/^[	 ]*#[	 ]*define[	 ][	 ]*/ /
-t def
-d
-:def
-s/\\$//
-t bsnl
-s/["\\]/\\&/g
-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
-D["\1"]=" \3"/p
-s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2"/p
-d
-:bsnl
-s/["\\]/\\&/g
-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
-D["\1"]=" \3\\\\\\n"\\/p
-t cont
-s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
-t cont
-d
-:cont
-n
-s/.\{148\}/&'"$ac_delim"'/g
-t clear
-:clear
-s/\\$//
-t bsnlc
-s/["\\]/\\&/g; s/^/"/; s/$/"/p
-d
-:bsnlc
-s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
-b cont
-' <confdefs.h | sed '
-s/'"$ac_delim"'/"\\\
-"/g' >>$CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-  for (key in D) D_is_set[key] = 1
-  FS = ""
-}
-/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
-  line = \$ 0
-  split(line, arg, " ")
-  if (arg[1] == "#") {
-    defundef = arg[2]
-    mac1 = arg[3]
-  } else {
-    defundef = substr(arg[1], 2)
-    mac1 = arg[2]
-  }
-  split(mac1, mac2, "(") #)
-  macro = mac2[1]
-  prefix = substr(line, 1, index(line, defundef) - 1)
-  if (D_is_set[macro]) {
-    # Preserve the white space surrounding the "#".
-    print prefix "define", macro P[macro] D[macro]
-    next
-  } else {
-    # Replace #undef with comments.  This is necessary, for example,
-    # in the case of _POSIX_SOURCE, which is predefined and required
-    # on some systems where configure will not decide to define it.
-    if (defundef == "undef") {
-      print "/*", prefix defundef, macro, "*/"
-      next
-    }
-  }
-}
-{ print }
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
-fi # test -n "$CONFIG_HEADERS"
-
-
-eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS"
-shift
-for ac_tag
-do
-  case $ac_tag in
-  :[FHLC]) ac_mode=$ac_tag; continue;;
-  esac
-  case $ac_mode$ac_tag in
-  :[FHL]*:*);;
-  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
-  :[FH]-) ac_tag=-:-;;
-  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
-  esac
-  ac_save_IFS=$IFS
-  IFS=:
-  set x $ac_tag
-  IFS=$ac_save_IFS
-  shift
-  ac_file=$1
-  shift
-
-  case $ac_mode in
-  :L) ac_source=$1;;
-  :[FH])
-    ac_file_inputs=
-    for ac_f
-    do
-      case $ac_f in
-      -) ac_f="$ac_tmp/stdin";;
-      *) # Look for the file first in the build tree, then in the source tree
-	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
-	 # because $ac_f cannot contain `:'.
-	 test -f "$ac_f" ||
-	   case $ac_f in
-	   [\\/$]*) false;;
-	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
-	   esac ||
-	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
-      esac
-      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
-      as_fn_append ac_file_inputs " '$ac_f'"
-    done
-
-    # Let's still pretend it is `configure' which instantiates (i.e., don't
-    # use $as_me), people would be surprised to read:
-    #    /* config.h.  Generated by config.status.  */
-    configure_input='Generated from '`
-	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
-	`' by configure.'
-    if test x"$ac_file" != x-; then
-      configure_input="$ac_file.  $configure_input"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
-$as_echo "$as_me: creating $ac_file" >&6;}
-    fi
-    # Neutralize special characters interpreted by sed in replacement strings.
-    case $configure_input in #(
-    *\&* | *\|* | *\\* )
-       ac_sed_conf_input=`$as_echo "$configure_input" |
-       sed 's/[\\\\&|]/\\\\&/g'`;; #(
-    *) ac_sed_conf_input=$configure_input;;
-    esac
-
-    case $ac_tag in
-    *:-:* | *:-) cat >"$ac_tmp/stdin" \
-      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
-    esac
-    ;;
-  esac
-
-  ac_dir=`$as_dirname -- "$ac_file" ||
-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$ac_file" : 'X\(//\)[^/]' \| \
-	 X"$ac_file" : 'X\(//\)$' \| \
-	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-  as_dir="$ac_dir"; as_fn_mkdir_p
-  ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-
-  case $ac_mode in
-  :F)
-  #
-  # CONFIG_FILE
-  #
-
-  case $INSTALL in
-  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
-  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
-  esac
-  ac_MKDIR_P=$MKDIR_P
-  case $MKDIR_P in
-  [\\/$]* | ?:[\\/]* ) ;;
-  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
-  esac
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# If the template does not know about datarootdir, expand it.
-# FIXME: This hack should be removed a few years after 2.60.
-ac_datarootdir_hack=; ac_datarootdir_seen=
-ac_sed_dataroot='
-/datarootdir/ {
-  p
-  q
-}
-/@datadir@/p
-/@docdir@/p
-/@infodir@/p
-/@localedir@/p
-/@mandir@/p'
-case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
-*datarootdir*) ac_datarootdir_seen=yes;;
-*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-  ac_datarootdir_hack='
-  s&@datadir@&$datadir&g
-  s&@docdir@&$docdir&g
-  s&@infodir@&$infodir&g
-  s&@localedir@&$localedir&g
-  s&@mandir@&$mandir&g
-  s&\\\${datarootdir}&$datarootdir&g' ;;
-esac
-_ACEOF
-
-# Neutralize VPATH when `$srcdir' = `.'.
-# Shell code in configure.ac might set extrasub.
-# FIXME: do we really want to maintain this feature?
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_sed_extra="$ac_vpsub
-$extrasub
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-:t
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s|@configure_input@|$ac_sed_conf_input|;t t
-s&@top_builddir@&$ac_top_builddir_sub&;t t
-s&@top_build_prefix@&$ac_top_build_prefix&;t t
-s&@srcdir@&$ac_srcdir&;t t
-s&@abs_srcdir@&$ac_abs_srcdir&;t t
-s&@top_srcdir@&$ac_top_srcdir&;t t
-s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
-s&@builddir@&$ac_builddir&;t t
-s&@abs_builddir@&$ac_abs_builddir&;t t
-s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
-s&@INSTALL@&$ac_INSTALL&;t t
-s&@MKDIR_P@&$ac_MKDIR_P&;t t
-$ac_datarootdir_hack
-"
-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
-  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-
-test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
-  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
-  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
-      "$ac_tmp/out"`; test -z "$ac_out"; } &&
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined" >&5
-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined" >&2;}
-
-  rm -f "$ac_tmp/stdin"
-  case $ac_file in
-  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
-  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
-  esac \
-  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
- ;;
-  :H)
-  #
-  # CONFIG_HEADER
-  #
-  if test x"$ac_file" != x-; then
-    {
-      $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
-    } >"$ac_tmp/config.h" \
-      || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-    if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
-$as_echo "$as_me: $ac_file is unchanged" >&6;}
-    else
-      rm -f "$ac_file"
-      mv "$ac_tmp/config.h" "$ac_file" \
-	|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
-    fi
-  else
-    $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
-      || as_fn_error $? "could not create -" "$LINENO" 5
-  fi
-# Compute "$ac_file"'s index in $config_headers.
-_am_arg="$ac_file"
-_am_stamp_count=1
-for _am_header in $config_headers :; do
-  case $_am_header in
-    $_am_arg | $_am_arg:* )
-      break ;;
-    * )
-      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
-  esac
-done
-echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
-$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$_am_arg" : 'X\(//\)[^/]' \| \
-	 X"$_am_arg" : 'X\(//\)$' \| \
-	 X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$_am_arg" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`/stamp-h$_am_stamp_count
- ;;
-
-  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
-$as_echo "$as_me: executing $ac_file commands" >&6;}
- ;;
-  esac
-
-
-  case $ac_file$ac_mode in
-    "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
-  # Older Autoconf quotes --file arguments for eval, but not when files
-  # are listed without --file.  Let's play safe and only enable the eval
-  # if we detect the quoting.
-  case $CONFIG_FILES in
-  *\'*) eval set x "$CONFIG_FILES" ;;
-  *)   set x $CONFIG_FILES ;;
-  esac
-  shift
-  for mf
-  do
-    # Strip MF so we end up with the name of the file.
-    mf=`echo "$mf" | sed -e 's/:.*$//'`
-    # Check whether this is an Automake generated Makefile or not.
-    # We used to match only the files named 'Makefile.in', but
-    # some people rename them; so instead we look at the file content.
-    # Grep'ing the first line is not enough: some people post-process
-    # each Makefile.in and add a new line on top of each file to say so.
-    # Grep'ing the whole file is not good either: AIX grep has a line
-    # limit of 2048, but all sed's we know have understand at least 4000.
-    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
-      dirpart=`$as_dirname -- "$mf" ||
-$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$mf" : 'X\(//\)[^/]' \| \
-	 X"$mf" : 'X\(//\)$' \| \
-	 X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$mf" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-    else
-      continue
-    fi
-    # Extract the definition of DEPDIR, am__include, and am__quote
-    # from the Makefile without running 'make'.
-    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
-    test -z "$DEPDIR" && continue
-    am__include=`sed -n 's/^am__include = //p' < "$mf"`
-    test -z "$am__include" && continue
-    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-    # Find all dependency output files, they are included files with
-    # $(DEPDIR) in their names.  We invoke sed twice because it is the
-    # simplest approach to changing $(DEPDIR) to its actual value in the
-    # expansion.
-    for file in `sed -n "
-      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
-      # Make sure the directory exists.
-      test -f "$dirpart/$file" && continue
-      fdir=`$as_dirname -- "$file" ||
-$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$file" : 'X\(//\)[^/]' \| \
-	 X"$file" : 'X\(//\)$' \| \
-	 X"$file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      as_dir=$dirpart/$fdir; as_fn_mkdir_p
-      # echo "creating $dirpart/$file"
-      echo '# dummy' > "$dirpart/$file"
-    done
-  done
-}
- ;;
-    "libtool":C)
-
-    # See if we are running on zsh, and set the options which allow our
-    # commands through without removal of \ escapes.
-    if test -n "${ZSH_VERSION+set}" ; then
-      setopt NO_GLOB_SUBST
-    fi
-
-    cfgfile="${ofile}T"
-    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
-    $RM "$cfgfile"
-
-    cat <<_LT_EOF >> "$cfgfile"
-#! $SHELL
-
-# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-# NOTE: Changes made to this file will be lost: look at ltmain.sh.
-#
-#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-#                 Foundation, Inc.
-#   Written by Gordon Matzigkeit, 1996
-#
-#   This file is part of GNU Libtool.
-#
-# GNU Libtool is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
-# the License, or (at your option) any later version.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING.  If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
-# obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-
-# The names of the tagged configurations supported by this script.
-available_tags="CXX FC "
-
-# ### BEGIN LIBTOOL CONFIG
-
-# Which release of libtool.m4 was used?
-macro_version=$macro_version
-macro_revision=$macro_revision
-
-# Whether or not to build shared libraries.
-build_libtool_libs=$enable_shared
-
-# Whether or not to build static libraries.
-build_old_libs=$enable_static
-
-# What type of objects to build.
-pic_mode=$pic_mode
-
-# Whether or not to optimize for fast installation.
-fast_install=$enable_fast_install
-
-# Shell to use when invoking shell scripts.
-SHELL=$lt_SHELL
-
-# An echo program that protects backslashes.
-ECHO=$lt_ECHO
-
-# The PATH separator for the build system.
-PATH_SEPARATOR=$lt_PATH_SEPARATOR
-
-# The host system.
-host_alias=$host_alias
-host=$host
-host_os=$host_os
-
-# The build system.
-build_alias=$build_alias
-build=$build
-build_os=$build_os
-
-# A sed program that does not truncate output.
-SED=$lt_SED
-
-# Sed that helps us avoid accidentally triggering echo(1) options like -n.
-Xsed="\$SED -e 1s/^X//"
-
-# A grep program that handles long lines.
-GREP=$lt_GREP
-
-# An ERE matcher.
-EGREP=$lt_EGREP
-
-# A literal string matcher.
-FGREP=$lt_FGREP
-
-# A BSD- or MS-compatible name lister.
-NM=$lt_NM
-
-# Whether we need soft or hard links.
-LN_S=$lt_LN_S
-
-# What is the maximum length of a command?
-max_cmd_len=$max_cmd_len
-
-# Object file suffix (normally "o").
-objext=$ac_objext
-
-# Executable file suffix (normally "").
-exeext=$exeext
-
-# whether the shell understands "unset".
-lt_unset=$lt_unset
-
-# turn spaces into newlines.
-SP2NL=$lt_lt_SP2NL
-
-# turn newlines into spaces.
-NL2SP=$lt_lt_NL2SP
-
-# convert \$build file names to \$host format.
-to_host_file_cmd=$lt_cv_to_host_file_cmd
-
-# convert \$build files to toolchain format.
-to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-
-# An object symbol dumper.
-OBJDUMP=$lt_OBJDUMP
-
-# Method to check whether dependent libraries are shared objects.
-deplibs_check_method=$lt_deplibs_check_method
-
-# Command to use when deplibs_check_method = "file_magic".
-file_magic_cmd=$lt_file_magic_cmd
-
-# How to find potential files when deplibs_check_method = "file_magic".
-file_magic_glob=$lt_file_magic_glob
-
-# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
-want_nocaseglob=$lt_want_nocaseglob
-
-# DLL creation program.
-DLLTOOL=$lt_DLLTOOL
-
-# Command to associate shared and link libraries.
-sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
-
-# The archiver.
-AR=$lt_AR
-
-# Flags to create an archive.
-AR_FLAGS=$lt_AR_FLAGS
-
-# How to feed a file listing to the archiver.
-archiver_list_spec=$lt_archiver_list_spec
-
-# A symbol stripping program.
-STRIP=$lt_STRIP
-
-# Commands used to install an old-style archive.
-RANLIB=$lt_RANLIB
-old_postinstall_cmds=$lt_old_postinstall_cmds
-old_postuninstall_cmds=$lt_old_postuninstall_cmds
-
-# Whether to use a lock for old archive extraction.
-lock_old_archive_extraction=$lock_old_archive_extraction
-
-# A C compiler.
-LTCC=$lt_CC
-
-# LTCC compiler flags.
-LTCFLAGS=$lt_CFLAGS
-
-# Take the output of nm and produce a listing of raw symbols and C names.
-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
-
-# Transform the output of nm in a proper C declaration.
-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
-
-# Transform the output of nm in a C name address pair.
-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
-
-# Transform the output of nm in a C name address pair when lib prefix is needed.
-global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
-
-# Specify filename containing input files for \$NM.
-nm_file_list_spec=$lt_nm_file_list_spec
-
-# The root where to search for dependent libraries,and in which our libraries should be installed.
-lt_sysroot=$lt_sysroot
-
-# The name of the directory that contains temporary libtool files.
-objdir=$objdir
-
-# Used to examine libraries when file_magic_cmd begins with "file".
-MAGIC_CMD=$MAGIC_CMD
-
-# Must we lock files when doing compilation?
-need_locks=$lt_need_locks
-
-# Manifest tool.
-MANIFEST_TOOL=$lt_MANIFEST_TOOL
-
-# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
-DSYMUTIL=$lt_DSYMUTIL
-
-# Tool to change global to local symbols on Mac OS X.
-NMEDIT=$lt_NMEDIT
-
-# Tool to manipulate fat objects and archives on Mac OS X.
-LIPO=$lt_LIPO
-
-# ldd/readelf like tool for Mach-O binaries on Mac OS X.
-OTOOL=$lt_OTOOL
-
-# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
-OTOOL64=$lt_OTOOL64
-
-# Old archive suffix (normally "a").
-libext=$libext
-
-# Shared library suffix (normally ".so").
-shrext_cmds=$lt_shrext_cmds
-
-# The commands to extract the exported symbol list from a shared archive.
-extract_expsyms_cmds=$lt_extract_expsyms_cmds
-
-# Variables whose values should be saved in libtool wrapper scripts and
-# restored at link time.
-variables_saved_for_relink=$lt_variables_saved_for_relink
-
-# Do we need the "lib" prefix for modules?
-need_lib_prefix=$need_lib_prefix
-
-# Do we need a version for libraries?
-need_version=$need_version
-
-# Library versioning type.
-version_type=$version_type
-
-# Shared library runtime path variable.
-runpath_var=$runpath_var
-
-# Shared library path variable.
-shlibpath_var=$shlibpath_var
-
-# Is shlibpath searched before the hard-coded library search path?
-shlibpath_overrides_runpath=$shlibpath_overrides_runpath
-
-# Format of library name prefix.
-libname_spec=$lt_libname_spec
-
-# List of archive names.  First name is the real one, the rest are links.
-# The last name is the one that the linker finds with -lNAME
-library_names_spec=$lt_library_names_spec
-
-# The coded name of the library, if different from the real name.
-soname_spec=$lt_soname_spec
-
-# Permission mode override for installation of shared libraries.
-install_override_mode=$lt_install_override_mode
-
-# Command to use after installation of a shared archive.
-postinstall_cmds=$lt_postinstall_cmds
-
-# Command to use after uninstallation of a shared archive.
-postuninstall_cmds=$lt_postuninstall_cmds
-
-# Commands used to finish a libtool library installation in a directory.
-finish_cmds=$lt_finish_cmds
-
-# As "finish_cmds", except a single script fragment to be evaled but
-# not shown.
-finish_eval=$lt_finish_eval
-
-# Whether we should hardcode library paths into libraries.
-hardcode_into_libs=$hardcode_into_libs
-
-# Compile-time system search path for libraries.
-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
-
-# Run-time system search path for libraries.
-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
-
-# Whether dlopen is supported.
-dlopen_support=$enable_dlopen
-
-# Whether dlopen of programs is supported.
-dlopen_self=$enable_dlopen_self
-
-# Whether dlopen of statically linked programs is supported.
-dlopen_self_static=$enable_dlopen_self_static
-
-# Commands to strip libraries.
-old_striplib=$lt_old_striplib
-striplib=$lt_striplib
-
-
-# The linker used to build libraries.
-LD=$lt_LD
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag
-reload_cmds=$lt_reload_cmds
-
-# Commands used to build an old-style archive.
-old_archive_cmds=$lt_old_archive_cmds
-
-# A language specific compiler.
-CC=$lt_compiler
-
-# Is the compiler the GNU compiler?
-with_gcc=$GCC
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc
-
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec
-
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object=$lt_compiler_needs_object
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
-
-# Commands used to build a shared archive.
-archive_cmds=$lt_archive_cmds
-archive_expsym_cmds=$lt_archive_expsym_cmds
-
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=$lt_module_cmds
-module_expsym_cmds=$lt_module_expsym_cmds
-
-# Whether we are building with GNU ld or not.
-with_gnu_ld=$lt_with_gnu_ld
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag
-
-# Flag that enforces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
-
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=$hardcode_direct
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
-# library is relocated.
-hardcode_direct_absolute=$hardcode_direct_absolute
-
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=$hardcode_minus_L
-
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var
-
-# Set to "yes" if building a shared library automatically hardcodes DIR
-# into the library and all subsequent libraries and executables linked
-# against it.
-hardcode_automatic=$hardcode_automatic
-
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=$inherit_rpath
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs
-
-# Set to "yes" if exported symbols are required.
-always_export_symbols=$always_export_symbols
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms
-
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=$lt_prelink_cmds
-
-# Commands necessary for finishing linking programs.
-postlink_cmds=$lt_postlink_cmds
-
-# Specify filename containing input files.
-file_list_spec=$lt_file_list_spec
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action
-
-# The directories searched by this compiler when creating a shared library.
-compiler_lib_search_dirs=$lt_compiler_lib_search_dirs
-
-# Dependencies to place before and after the objects being linked to
-# create a shared library.
-predep_objects=$lt_predep_objects
-postdep_objects=$lt_postdep_objects
-predeps=$lt_predeps
-postdeps=$lt_postdeps
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=$lt_compiler_lib_search_path
-
-# ### END LIBTOOL CONFIG
-
-_LT_EOF
-
-  case $host_os in
-  aix3*)
-    cat <<\_LT_EOF >> "$cfgfile"
-# AIX sometimes has problems with the GCC collect2 program.  For some
-# reason, if we set the COLLECT_NAMES environment variable, the problems
-# vanish in a puff of smoke.
-if test "X${COLLECT_NAMES+set}" != Xset; then
-  COLLECT_NAMES=
-  export COLLECT_NAMES
-fi
-_LT_EOF
-    ;;
-  esac
-
-
-ltmain="$ac_aux_dir/ltmain.sh"
-
-
-  # We use sed instead of cat because bash on DJGPP gets confused if
-  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
-  # text mode, it properly converts lines to CR/LF.  This bash problem
-  # is reportedly fixed, but why not run on old versions too?
-  sed '$q' "$ltmain" >> "$cfgfile" \
-     || (rm -f "$cfgfile"; exit 1)
-
-  if test x"$xsi_shell" = xyes; then
-  sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
-func_dirname ()\
-{\
-\    case ${1} in\
-\      */*) func_dirname_result="${1%/*}${2}" ;;\
-\      *  ) func_dirname_result="${3}" ;;\
-\    esac\
-} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_basename ()$/,/^} # func_basename /c\
-func_basename ()\
-{\
-\    func_basename_result="${1##*/}"\
-} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
-func_dirname_and_basename ()\
-{\
-\    case ${1} in\
-\      */*) func_dirname_result="${1%/*}${2}" ;;\
-\      *  ) func_dirname_result="${3}" ;;\
-\    esac\
-\    func_basename_result="${1##*/}"\
-} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
-func_stripname ()\
-{\
-\    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
-\    # positional parameters, so assign one to ordinary parameter first.\
-\    func_stripname_result=${3}\
-\    func_stripname_result=${func_stripname_result#"${1}"}\
-\    func_stripname_result=${func_stripname_result%"${2}"}\
-} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
-func_split_long_opt ()\
-{\
-\    func_split_long_opt_name=${1%%=*}\
-\    func_split_long_opt_arg=${1#*=}\
-} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
-func_split_short_opt ()\
-{\
-\    func_split_short_opt_arg=${1#??}\
-\    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
-} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
-func_lo2o ()\
-{\
-\    case ${1} in\
-\      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
-\      *)    func_lo2o_result=${1} ;;\
-\    esac\
-} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_xform ()$/,/^} # func_xform /c\
-func_xform ()\
-{\
-    func_xform_result=${1%.*}.lo\
-} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_arith ()$/,/^} # func_arith /c\
-func_arith ()\
-{\
-    func_arith_result=$(( $* ))\
-} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_len ()$/,/^} # func_len /c\
-func_len ()\
-{\
-    func_len_result=${#1}\
-} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-fi
-
-if test x"$lt_shell_append" = xyes; then
-  sed -e '/^func_append ()$/,/^} # func_append /c\
-func_append ()\
-{\
-    eval "${1}+=\\${2}"\
-} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
-func_append_quoted ()\
-{\
-\    func_quote_for_eval "${2}"\
-\    eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
-} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  # Save a `func_append' function call where possible by direct use of '+='
-  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
-    && mv -f "$cfgfile.tmp" "$cfgfile" \
-      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-  test 0 -eq $? || _lt_function_replace_fail=:
-else
-  # Save a `func_append' function call even when '+=' is not available
-  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
-    && mv -f "$cfgfile.tmp" "$cfgfile" \
-      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-  test 0 -eq $? || _lt_function_replace_fail=:
-fi
-
-if test x"$_lt_function_replace_fail" = x":"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
-$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
-fi
-
-
-   mv -f "$cfgfile" "$ofile" ||
-    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
-  chmod +x "$ofile"
-
-
-    cat <<_LT_EOF >> "$ofile"
-
-# ### BEGIN LIBTOOL TAG CONFIG: CXX
-
-# The linker used to build libraries.
-LD=$lt_LD_CXX
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag_CXX
-reload_cmds=$lt_reload_cmds_CXX
-
-# Commands used to build an old-style archive.
-old_archive_cmds=$lt_old_archive_cmds_CXX
-
-# A language specific compiler.
-CC=$lt_compiler_CXX
-
-# Is the compiler the GNU compiler?
-with_gcc=$GCC_CXX
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic_CXX
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl_CXX
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static_CXX
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc_CXX
-
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
-
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object=$lt_compiler_needs_object_CXX
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
-
-# Commands used to build a shared archive.
-archive_cmds=$lt_archive_cmds_CXX
-archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
-
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=$lt_module_cmds_CXX
-module_expsym_cmds=$lt_module_expsym_cmds_CXX
-
-# Whether we are building with GNU ld or not.
-with_gnu_ld=$lt_with_gnu_ld_CXX
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag_CXX
-
-# Flag that enforces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag_CXX
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
-
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=$hardcode_direct_CXX
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
-# library is relocated.
-hardcode_direct_absolute=$hardcode_direct_absolute_CXX
-
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=$hardcode_minus_L_CXX
-
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
-
-# Set to "yes" if building a shared library automatically hardcodes DIR
-# into the library and all subsequent libraries and executables linked
-# against it.
-hardcode_automatic=$hardcode_automatic_CXX
-
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=$inherit_rpath_CXX
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs_CXX
-
-# Set to "yes" if exported symbols are required.
-always_export_symbols=$always_export_symbols_CXX
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds_CXX
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms_CXX
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms_CXX
-
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=$lt_prelink_cmds_CXX
-
-# Commands necessary for finishing linking programs.
-postlink_cmds=$lt_postlink_cmds_CXX
-
-# Specify filename containing input files.
-file_list_spec=$lt_file_list_spec_CXX
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action_CXX
-
-# The directories searched by this compiler when creating a shared library.
-compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX
-
-# Dependencies to place before and after the objects being linked to
-# create a shared library.
-predep_objects=$lt_predep_objects_CXX
-postdep_objects=$lt_postdep_objects_CXX
-predeps=$lt_predeps_CXX
-postdeps=$lt_postdeps_CXX
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
-
-# ### END LIBTOOL TAG CONFIG: CXX
-_LT_EOF
-
-
-    cat <<_LT_EOF >> "$ofile"
-
-# ### BEGIN LIBTOOL TAG CONFIG: FC
-
-# The linker used to build libraries.
-LD=$lt_LD_FC
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag_FC
-reload_cmds=$lt_reload_cmds_FC
-
-# Commands used to build an old-style archive.
-old_archive_cmds=$lt_old_archive_cmds_FC
-
-# A language specific compiler.
-CC=$lt_compiler_FC
-
-# Is the compiler the GNU compiler?
-with_gcc=$GCC_FC
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_FC
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic_FC
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl_FC
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static_FC
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o_FC
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc_FC
-
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_FC
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_FC
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec_FC
-
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object=$lt_compiler_needs_object_FC
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_FC
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_FC
-
-# Commands used to build a shared archive.
-archive_cmds=$lt_archive_cmds_FC
-archive_expsym_cmds=$lt_archive_expsym_cmds_FC
-
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=$lt_module_cmds_FC
-module_expsym_cmds=$lt_module_expsym_cmds_FC
-
-# Whether we are building with GNU ld or not.
-with_gnu_ld=$lt_with_gnu_ld_FC
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag_FC
-
-# Flag that enforces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag_FC
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_FC
-
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator_FC
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=$hardcode_direct_FC
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
-# library is relocated.
-hardcode_direct_absolute=$hardcode_direct_absolute_FC
-
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=$hardcode_minus_L_FC
-
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var_FC
-
-# Set to "yes" if building a shared library automatically hardcodes DIR
-# into the library and all subsequent libraries and executables linked
-# against it.
-hardcode_automatic=$hardcode_automatic_FC
-
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=$inherit_rpath_FC
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs_FC
-
-# Set to "yes" if exported symbols are required.
-always_export_symbols=$always_export_symbols_FC
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds_FC
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms_FC
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms_FC
-
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=$lt_prelink_cmds_FC
-
-# Commands necessary for finishing linking programs.
-postlink_cmds=$lt_postlink_cmds_FC
-
-# Specify filename containing input files.
-file_list_spec=$lt_file_list_spec_FC
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action_FC
-
-# The directories searched by this compiler when creating a shared library.
-compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_FC
-
-# Dependencies to place before and after the objects being linked to
-# create a shared library.
-predep_objects=$lt_predep_objects_FC
-postdep_objects=$lt_postdep_objects_FC
-predeps=$lt_predeps_FC
-postdeps=$lt_postdeps_FC
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=$lt_compiler_lib_search_path_FC
-
-# ### END LIBTOOL TAG CONFIG: FC
-_LT_EOF
-
- ;;
-
-  esac
-done # for ac_tag
-
-
-as_fn_exit 0
-_ACEOF
-ac_clean_files=$ac_clean_files_save
-
-test $ac_write_fail = 0 ||
-  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
-
-
-# configure is writing to config.log, and then calls config.status.
-# config.status does its own redirection, appending to config.log.
-# Unfortunately, on DOS this fails, as config.log is still kept open
-# by configure, so config.status won't be able to write to it; its
-# output is simply discarded.  So we exec the FD to /dev/null,
-# effectively closing config.log, so it can be properly (re)opened and
-# appended to by config.status.  When coming back to configure, we
-# need to make the FD available again.
-if test "$no_create" != yes; then
-  ac_cs_success=:
-  ac_config_status_args=
-  test "$silent" = yes &&
-    ac_config_status_args="$ac_config_status_args --quiet"
-  exec 5>/dev/null
-  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
-  exec 5>>config.log
-  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
-  # would make configure fail if this is the last instruction.
-  $ac_cs_success || as_fn_exit 1
-fi
-if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
-fi
-
diff --git a/configure.ac b/configure.ac
deleted file mode 100644
index 909a3ad..0000000
--- a/configure.ac
+++ /dev/null
@@ -1,137 +0,0 @@
-AC_INIT([pktools], [2.6.6], [kempenep at gmail.com])
-#AM_INIT_AUTOMAKE([-Wall -Werror foreign])
-AM_INIT_AUTOMAKE([-Wall -Wno-extra-portability foreign])
-#AM_INIT_AUTOMAKE([subdir-objects]) #not working due to bug in autoconf, see Debian list: Bug #752993)
-AC_CONFIG_MACRO_DIR([m4])
-
-AX_LIB_GDAL()
-GDAL_FOUND="no"
-if test ! -z "$GDAL_CFLAGS" -a ! -z "$GDAL_LDFLAGS"; then
-GDAL_FOUND="yes"
-fi
-dnl AC_MSG_WARN([$GDAL_VERSION])
-dnl AC_MSG_WARN([$GDAL_CFLAGS])
-dnl AC_MSG_WARN([$GDAL_LDFLAGS])
-dnl AC_MSG_WARN([$GDAL_DEP_LDFLAGS])
-dnl AC_MSG_WARN([$GDAL_OGR_ENABLED])
-
-# check for C++ compiler and the library compiler
-AC_PROG_CXX
-AC_PROG_FC
-LT_INIT
-
-# check if the source folder is correct
-AC_CONFIG_SRCDIR([src/apps/pkinfo.cc])
-AX_LIB_GDAL([1.10.0]) dnl uncomment if gdal version 1.10.0 is required
-
-AC_CHECK_HEADERS([gdal.h])
-
-dnl uncomment if there is a need to compile doc in distro
-dnl check if doxygen is installed
-
-dnl AC_CHECK_PROGS([DOXYGEN], [doxygen])
-dnl if test -z "$DOXYGEN";
-dnl    then AC_MSG_WARN([Doxygen not found - continuing without Doxygen support])
-dnl fi
-
-dnl Check to see if we have Doxygen and if so, add some files to later be processed.
-dnl AM_CONDITIONAL([HAVE_DOXYGEN],[test -n "$DOXYGEN"])
-dnl #AM_COND_IF([HAVE_DOXYGEN],
-dnl 	DOX_OPT="doc"
-	dnl AC_SUBST([DOX_OPT])
-	dnl [AC_CONFIG_FILES([
-      	dnl doc/Doxyfile
-      	dnl doc/Makefile])])
-
-dnl Default-disabled features
-AC_ARG_ENABLE([fann],
-AS_HELP_STRING([--enable-fann], [Enable feature fann]))
-
-AS_IF([test "x$enable_fann" = "xyes"], [
-PKG_CHECK_MODULES(FANN, fann >= 2.1.0, [HAVE_FANN=1], [HAVE_FANN=0])
-AM_CONDITIONAL([USE_FANN], [test "$HAVE_FANN" -eq 1])
-dnl AC_MSG_WARN("USE_FANN=true")
-], [
-AM_CONDITIONAL(USE_FANN, false)
-dnl AC_MSG_WARN("USE_FANN=false")
-])
-
-dnl AC_ARG_ENABLE([svm],
-dnl     AS_HELP_STRING([--enable-svm], [Enable feature svm]))
-
-dnl AS_IF([test "x$enable_svm" = "xyes"], [
-dnl 	AM_CONDITIONAL(USE_SVM, true)
-dnl 	AC_MSG_WARN("USE_SVM=true")
-dnl 	])
-
-AC_ARG_ENABLE([las],
-AS_HELP_STRING([--enable-las], [Enable feature las]))
-
-AS_IF([test "x$enable_las" = "xyes"], [
-AM_CONDITIONAL(USE_LAS, true)
-dnl AC_MSG_WARN("USE_LAS=true")
-LASCLASSES_OPT="src/lasclasses"
-AC_SUBST([LASCLASSES_OPT])
-], [
-AM_CONDITIONAL(USE_LAS, false)
-dnl AC_MSG_WARN("USE_LAS=false")
-])
-
-AC_ARG_ENABLE([nlopt],
-AS_HELP_STRING([--enable-nlopt], [Enable feature nlopt]))
-
-AS_IF([test "x$enable_nlopt" = "xyes"], [
-PKG_CHECK_MODULES(NLOPT, nlopt >= 2.1.0, [HAVE_NLOPT=1], [HAVE_NLOPT=0])
-AM_CONDITIONAL([USE_NLOPT], [test "$HAVE_NLOPT" -eq 1])
-dnl AC_MSG_WARN("USE_NLOPT=true")
-], [
-AM_CONDITIONAL(USE_NLOPT, false)
-dnl AC_MSG_WARN("USE_NLOPT=false")
-])
-
-
-PKG_CHECK_MODULES(GSL, gsl >= 1.14, [HAVE_GSL=1], [HAVE_GSL=0])
-AM_CONDITIONAL([USE_GSL], [test "$HAVE_GSL" -eq 1])
-
-# use the C++ compiler for the following checks
-AC_LANG([C++])
-
-# Checks for header files.
-AC_HEADER_STDC
-AC_CHECK_HEADERS([string])
-AC_CHECK_HEADERS([iostream])
-
-# Checks for typedefs, structures, and compiler characteristics.
-AC_TYPE_SIZE_T
-
-# distribute additional compiler and linker flags
-# --> set these variables instead of CXXFLAGS or LDFLAGS
-AC_SUBST([AM_CXXFLAGS])
-AC_SUBST([AM_LDFLAGS])
-AC_SUBST([LIBS])
-
-# Define these substitions here to keep all version information in one place.
-# For information on how to properly maintain the library version information,
-# refer to the libtool manual, section "Updating library version information":
-# http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
-AC_SUBST([PKTOOLS_SO_VERSION], [1:6:0])
-
-# files to generate via autotools (.am or .in source files)
-AC_CONFIG_HEADERS([config.h])
-#frankie says: "You should not distribute the config.h file, but the config.h.in file only".
-#AC_CONFIG_HEADERS([config.h])
-
-AM_COND_IF([USE_LAS],
-	[AC_CONFIG_FILES([
-	src/lasclasses/Makefile])])
-AC_CONFIG_FILES([
-	Makefile
-	src/base/Makefile
-	src/algorithms/Makefile
-	src/imageclasses/Makefile
-	src/fileclasses/Makefile
-	src/apps/Makefile
-	pktools.pc:pktools.pc.in
-	])
-# generate the final Makefile etc.
-AC_OUTPUT
diff --git a/depcomp b/depcomp
deleted file mode 100755
index df8eea7..0000000
--- a/depcomp
+++ /dev/null
@@ -1,630 +0,0 @@
-#! /bin/sh
-# depcomp - compile a program generating dependencies as side-effects
-
-scriptversion=2009-04-28.21; # UTC
-
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
-# Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Originally written by Alexandre Oliva <oliva at dcc.unicamp.br>.
-
-case $1 in
-  '')
-     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
-     exit 1;
-     ;;
-  -h | --h*)
-    cat <<\EOF
-Usage: depcomp [--help] [--version] PROGRAM [ARGS]
-
-Run PROGRAMS ARGS to compile a file, generating dependencies
-as side-effects.
-
-Environment variables:
-  depmode     Dependency tracking mode.
-  source      Source file read by `PROGRAMS ARGS'.
-  object      Object file output by `PROGRAMS ARGS'.
-  DEPDIR      directory where to store dependencies.
-  depfile     Dependency file to output.
-  tmpdepfile  Temporary file to use when outputing dependencies.
-  libtool     Whether libtool is used (yes/no).
-
-Report bugs to <bug-automake at gnu.org>.
-EOF
-    exit $?
-    ;;
-  -v | --v*)
-    echo "depcomp $scriptversion"
-    exit $?
-    ;;
-esac
-
-if test -z "$depmode" || test -z "$source" || test -z "$object"; then
-  echo "depcomp: Variables source, object and depmode must be set" 1>&2
-  exit 1
-fi
-
-# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
-depfile=${depfile-`echo "$object" |
-  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
-tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
-
-rm -f "$tmpdepfile"
-
-# Some modes work just like other modes, but use different flags.  We
-# parameterize here, but still list the modes in the big case below,
-# to make depend.m4 easier to write.  Note that we *cannot* use a case
-# here, because this file can only contain one case statement.
-if test "$depmode" = hp; then
-  # HP compiler uses -M and no extra arg.
-  gccflag=-M
-  depmode=gcc
-fi
-
-if test "$depmode" = dashXmstdout; then
-   # This is just like dashmstdout with a different argument.
-   dashmflag=-xM
-   depmode=dashmstdout
-fi
-
-cygpath_u="cygpath -u -f -"
-if test "$depmode" = msvcmsys; then
-   # This is just like msvisualcpp but w/o cygpath translation.
-   # Just convert the backslash-escaped backslashes to single forward
-   # slashes to satisfy depend.m4
-   cygpath_u="sed s,\\\\\\\\,/,g"
-   depmode=msvisualcpp
-fi
-
-case "$depmode" in
-gcc3)
-## gcc 3 implements dependency tracking that does exactly what
-## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
-## it if -MD -MP comes after the -MF stuff.  Hmm.
-## Unfortunately, FreeBSD c89 acceptance of flags depends upon
-## the command line argument order; so add the flags where they
-## appear in depend2.am.  Note that the slowdown incurred here
-## affects only configure: in makefiles, %FASTDEP% shortcuts this.
-  for arg
-  do
-    case $arg in
-    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
-    *)  set fnord "$@" "$arg" ;;
-    esac
-    shift # fnord
-    shift # $arg
-  done
-  "$@"
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  mv "$tmpdepfile" "$depfile"
-  ;;
-
-gcc)
-## There are various ways to get dependency output from gcc.  Here's
-## why we pick this rather obscure method:
-## - Don't want to use -MD because we'd like the dependencies to end
-##   up in a subdir.  Having to rename by hand is ugly.
-##   (We might end up doing this anyway to support other compilers.)
-## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
-##   -MM, not -M (despite what the docs say).
-## - Using -M directly means running the compiler twice (even worse
-##   than renaming).
-  if test -z "$gccflag"; then
-    gccflag=-MD,
-  fi
-  "$@" -Wp,"$gccflag$tmpdepfile"
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
-## The second -e expression handles DOS-style file names with drive letters.
-  sed -e 's/^[^:]*: / /' \
-      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
-## This next piece of magic avoids the `deleted header file' problem.
-## The problem is that when a header file which appears in a .P file
-## is deleted, the dependency causes make to die (because there is
-## typically no way to rebuild the header).  We avoid this by adding
-## dummy dependencies for each header file.  Too bad gcc doesn't do
-## this for us directly.
-  tr ' ' '
-' < "$tmpdepfile" |
-## Some versions of gcc put a space before the `:'.  On the theory
-## that the space means something, we add a space to the output as
-## well.
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-hp)
-  # This case exists only to let depend.m4 do its work.  It works by
-  # looking at the text of this script.  This case will never be run,
-  # since it is checked for above.
-  exit 1
-  ;;
-
-sgi)
-  if test "$libtool" = yes; then
-    "$@" "-Wp,-MDupdate,$tmpdepfile"
-  else
-    "$@" -MDupdate "$tmpdepfile"
-  fi
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-
-  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
-    echo "$object : \\" > "$depfile"
-
-    # Clip off the initial element (the dependent).  Don't try to be
-    # clever and replace this with sed code, as IRIX sed won't handle
-    # lines with more than a fixed number of characters (4096 in
-    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
-    # the IRIX cc adds comments like `#:fec' to the end of the
-    # dependency line.
-    tr ' ' '
-' < "$tmpdepfile" \
-    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
-    tr '
-' ' ' >> "$depfile"
-    echo >> "$depfile"
-
-    # The second pass generates a dummy entry for each header file.
-    tr ' ' '
-' < "$tmpdepfile" \
-   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
-   >> "$depfile"
-  else
-    # The sourcefile does not contain any dependencies, so just
-    # store a dummy comment line, to avoid errors with the Makefile
-    # "include basename.Plo" scheme.
-    echo "#dummy" > "$depfile"
-  fi
-  rm -f "$tmpdepfile"
-  ;;
-
-aix)
-  # The C for AIX Compiler uses -M and outputs the dependencies
-  # in a .u file.  In older versions, this file always lives in the
-  # current directory.  Also, the AIX compiler puts `$object:' at the
-  # start of each line; $object doesn't have directory information.
-  # Version 6 uses the directory in both cases.
-  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-  test "x$dir" = "x$object" && dir=
-  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-  if test "$libtool" = yes; then
-    tmpdepfile1=$dir$base.u
-    tmpdepfile2=$base.u
-    tmpdepfile3=$dir.libs/$base.u
-    "$@" -Wc,-M
-  else
-    tmpdepfile1=$dir$base.u
-    tmpdepfile2=$dir$base.u
-    tmpdepfile3=$dir$base.u
-    "$@" -M
-  fi
-  stat=$?
-
-  if test $stat -eq 0; then :
-  else
-    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
-    exit $stat
-  fi
-
-  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
-  do
-    test -f "$tmpdepfile" && break
-  done
-  if test -f "$tmpdepfile"; then
-    # Each line is of the form `foo.o: dependent.h'.
-    # Do two passes, one to just change these to
-    # `$object: dependent.h' and one to simply `dependent.h:'.
-    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
-    # That's a tab and a space in the [].
-    sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
-  else
-    # The sourcefile does not contain any dependencies, so just
-    # store a dummy comment line, to avoid errors with the Makefile
-    # "include basename.Plo" scheme.
-    echo "#dummy" > "$depfile"
-  fi
-  rm -f "$tmpdepfile"
-  ;;
-
-icc)
-  # Intel's C compiler understands `-MD -MF file'.  However on
-  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
-  # ICC 7.0 will fill foo.d with something like
-  #    foo.o: sub/foo.c
-  #    foo.o: sub/foo.h
-  # which is wrong.  We want:
-  #    sub/foo.o: sub/foo.c
-  #    sub/foo.o: sub/foo.h
-  #    sub/foo.c:
-  #    sub/foo.h:
-  # ICC 7.1 will output
-  #    foo.o: sub/foo.c sub/foo.h
-  # and will wrap long lines using \ :
-  #    foo.o: sub/foo.c ... \
-  #     sub/foo.h ... \
-  #     ...
-
-  "$@" -MD -MF "$tmpdepfile"
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-  # Each line is of the form `foo.o: dependent.h',
-  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
-  # Do two passes, one to just change these to
-  # `$object: dependent.h' and one to simply `dependent.h:'.
-  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
-  # Some versions of the HPUX 10.20 sed can't process this invocation
-  # correctly.  Breaking it into two sed invocations is a workaround.
-  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
-    sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-hp2)
-  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
-  # compilers, which have integrated preprocessors.  The correct option
-  # to use with these is +Maked; it writes dependencies to a file named
-  # 'foo.d', which lands next to the object file, wherever that
-  # happens to be.
-  # Much of this is similar to the tru64 case; see comments there.
-  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-  test "x$dir" = "x$object" && dir=
-  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-  if test "$libtool" = yes; then
-    tmpdepfile1=$dir$base.d
-    tmpdepfile2=$dir.libs/$base.d
-    "$@" -Wc,+Maked
-  else
-    tmpdepfile1=$dir$base.d
-    tmpdepfile2=$dir$base.d
-    "$@" +Maked
-  fi
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-     rm -f "$tmpdepfile1" "$tmpdepfile2"
-     exit $stat
-  fi
-
-  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
-  do
-    test -f "$tmpdepfile" && break
-  done
-  if test -f "$tmpdepfile"; then
-    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
-    # Add `dependent.h:' lines.
-    sed -ne '2,${
-	       s/^ *//
-	       s/ \\*$//
-	       s/$/:/
-	       p
-	     }' "$tmpdepfile" >> "$depfile"
-  else
-    echo "#dummy" > "$depfile"
-  fi
-  rm -f "$tmpdepfile" "$tmpdepfile2"
-  ;;
-
-tru64)
-   # The Tru64 compiler uses -MD to generate dependencies as a side
-   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
-   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
-   # dependencies in `foo.d' instead, so we check for that too.
-   # Subdirectories are respected.
-   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-   test "x$dir" = "x$object" && dir=
-   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-
-   if test "$libtool" = yes; then
-      # With Tru64 cc, shared objects can also be used to make a
-      # static library.  This mechanism is used in libtool 1.4 series to
-      # handle both shared and static libraries in a single compilation.
-      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
-      #
-      # With libtool 1.5 this exception was removed, and libtool now
-      # generates 2 separate objects for the 2 libraries.  These two
-      # compilations output dependencies in $dir.libs/$base.o.d and
-      # in $dir$base.o.d.  We have to check for both files, because
-      # one of the two compilations can be disabled.  We should prefer
-      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
-      # automatically cleaned when .libs/ is deleted, while ignoring
-      # the former would cause a distcleancheck panic.
-      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
-      tmpdepfile2=$dir$base.o.d          # libtool 1.5
-      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
-      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
-      "$@" -Wc,-MD
-   else
-      tmpdepfile1=$dir$base.o.d
-      tmpdepfile2=$dir$base.d
-      tmpdepfile3=$dir$base.d
-      tmpdepfile4=$dir$base.d
-      "$@" -MD
-   fi
-
-   stat=$?
-   if test $stat -eq 0; then :
-   else
-      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
-      exit $stat
-   fi
-
-   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
-   do
-     test -f "$tmpdepfile" && break
-   done
-   if test -f "$tmpdepfile"; then
-      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
-      # That's a tab and a space in the [].
-      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
-   else
-      echo "#dummy" > "$depfile"
-   fi
-   rm -f "$tmpdepfile"
-   ;;
-
-#nosideeffect)
-  # This comment above is used by automake to tell side-effect
-  # dependency tracking mechanisms from slower ones.
-
-dashmstdout)
-  # Important note: in order to support this mode, a compiler *must*
-  # always write the preprocessed file to stdout, regardless of -o.
-  "$@" || exit $?
-
-  # Remove the call to Libtool.
-  if test "$libtool" = yes; then
-    while test "X$1" != 'X--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-
-  # Remove `-o $object'.
-  IFS=" "
-  for arg
-  do
-    case $arg in
-    -o)
-      shift
-      ;;
-    $object)
-      shift
-      ;;
-    *)
-      set fnord "$@" "$arg"
-      shift # fnord
-      shift # $arg
-      ;;
-    esac
-  done
-
-  test -z "$dashmflag" && dashmflag=-M
-  # Require at least two characters before searching for `:'
-  # in the target name.  This is to cope with DOS-style filenames:
-  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
-  "$@" $dashmflag |
-    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
-  rm -f "$depfile"
-  cat < "$tmpdepfile" > "$depfile"
-  tr ' ' '
-' < "$tmpdepfile" | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-dashXmstdout)
-  # This case only exists to satisfy depend.m4.  It is never actually
-  # run, as this mode is specially recognized in the preamble.
-  exit 1
-  ;;
-
-makedepend)
-  "$@" || exit $?
-  # Remove any Libtool call
-  if test "$libtool" = yes; then
-    while test "X$1" != 'X--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-  # X makedepend
-  shift
-  cleared=no eat=no
-  for arg
-  do
-    case $cleared in
-    no)
-      set ""; shift
-      cleared=yes ;;
-    esac
-    if test $eat = yes; then
-      eat=no
-      continue
-    fi
-    case "$arg" in
-    -D*|-I*)
-      set fnord "$@" "$arg"; shift ;;
-    # Strip any option that makedepend may not understand.  Remove
-    # the object too, otherwise makedepend will parse it as a source file.
-    -arch)
-      eat=yes ;;
-    -*|$object)
-      ;;
-    *)
-      set fnord "$@" "$arg"; shift ;;
-    esac
-  done
-  obj_suffix=`echo "$object" | sed 's/^.*\././'`
-  touch "$tmpdepfile"
-  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
-  rm -f "$depfile"
-  cat < "$tmpdepfile" > "$depfile"
-  sed '1,2d' "$tmpdepfile" | tr ' ' '
-' | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile" "$tmpdepfile".bak
-  ;;
-
-cpp)
-  # Important note: in order to support this mode, a compiler *must*
-  # always write the preprocessed file to stdout.
-  "$@" || exit $?
-
-  # Remove the call to Libtool.
-  if test "$libtool" = yes; then
-    while test "X$1" != 'X--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-
-  # Remove `-o $object'.
-  IFS=" "
-  for arg
-  do
-    case $arg in
-    -o)
-      shift
-      ;;
-    $object)
-      shift
-      ;;
-    *)
-      set fnord "$@" "$arg"
-      shift # fnord
-      shift # $arg
-      ;;
-    esac
-  done
-
-  "$@" -E |
-    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
-    sed '$ s: \\$::' > "$tmpdepfile"
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  cat < "$tmpdepfile" >> "$depfile"
-  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-msvisualcpp)
-  # Important note: in order to support this mode, a compiler *must*
-  # always write the preprocessed file to stdout.
-  "$@" || exit $?
-
-  # Remove the call to Libtool.
-  if test "$libtool" = yes; then
-    while test "X$1" != 'X--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-
-  IFS=" "
-  for arg
-  do
-    case "$arg" in
-    -o)
-      shift
-      ;;
-    $object)
-      shift
-      ;;
-    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
-	set fnord "$@"
-	shift
-	shift
-	;;
-    *)
-	set fnord "$@" "$arg"
-	shift
-	shift
-	;;
-    esac
-  done
-  "$@" -E 2>/dev/null |
-  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
-  echo "	" >> "$depfile"
-  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-msvcmsys)
-  # This case exists only to let depend.m4 do its work.  It works by
-  # looking at the text of this script.  This case will never be run,
-  # since it is checked for above.
-  exit 1
-  ;;
-
-none)
-  exec "$@"
-  ;;
-
-*)
-  echo "Unknown depmode $depmode" 1>&2
-  exit 1
-  ;;
-esac
-
-exit 0
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/doc/Doxyfile b/doc/Doxyfile
index 628836d..de0ad39 100644
--- a/doc/Doxyfile
+++ b/doc/Doxyfile
@@ -38,7 +38,7 @@ PROJECT_NAME           = pktools
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 2.6.6
+PROJECT_NUMBER         = 2.6.7
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
diff --git a/doc/Doxyfile.good b/doc/Doxyfile.good
deleted file mode 100644
index 526a058..0000000
--- a/doc/Doxyfile.good
+++ /dev/null
@@ -1,1899 +0,0 @@
-# Doxyfile 1.8.6
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project.
-#
-# All text after a double hash (##) is considered a comment and is placed in
-# front of the TAG it is preceding.
-#
-# All text after a single hash (#) is considered a comment and will be ignored.
-# The format is:
-# TAG = value [value, ...]
-# For lists, items can also be appended using:
-# TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (\" \").
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# This tag specifies the encoding used for all characters in the config file
-# that follow. The default is UTF-8 which is also the encoding used for all text
-# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
-# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
-# for the list of possible encodings.
-# The default value is: UTF-8.
-
-DOXYFILE_ENCODING      = UTF-8
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
-# double-quotes, unless you are using Doxywizard) that should identify the
-# project for which the documentation is generated. This name is used in the
-# title of most generated pages and in a few other places.
-# The default value is: My Project.
-
-PROJECT_NAME           = pktools
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
-# could be handy for archiving the generated documentation or if some version
-# control system is used.
-
-PROJECT_NUMBER         = 2.6.3
-
-# Using the PROJECT_BRIEF tag one can provide an optional one line description
-# for a project that appears at the top of each page and should give viewer a
-# quick idea about the purpose of the project. Keep the description short.
-
-PROJECT_BRIEF          = "Processing Kernel for remote sensing data"
-
-# With the PROJECT_LOGO tag one can specify an logo or icon that is included in
-# the documentation. The maximum height of the logo should not exceed 55 pixels
-# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo
-# to the output directory.
-
-PROJECT_LOGO           = logo.png
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
-# into which the generated documentation will be written. If a relative path is
-# entered, it will be relative to the location where doxygen was started. If
-# left blank the current directory will be used.
-
-OUTPUT_DIRECTORY       =
-
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub-
-# directories (in 2 levels) under the output directory of each output format and
-# will distribute the generated files over these directories. Enabling this
-# option can be useful when feeding doxygen a huge amount of source files, where
-# putting all generated files in the same directory would otherwise causes
-# performance problems for the file system.
-# The default value is: NO.
-
-CREATE_SUBDIRS         = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,
-# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),
-# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,
-# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),
-# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,
-# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,
-# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
-# Ukrainian and Vietnamese.
-# The default value is: English.
-
-OUTPUT_LANGUAGE        = English
-
-# If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member
-# descriptions after the members that are listed in the file and class
-# documentation (similar to Javadoc). Set to NO to disable this.
-# The default value is: YES.
-
-BRIEF_MEMBER_DESC      = YES
-
-# If the REPEAT_BRIEF tag is set to YES doxygen will prepend the brief
-# description of a member or function before the detailed description
-#
-# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
-# The default value is: YES.
-
-REPEAT_BRIEF           = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator that is
-# used to form the text in various listings. Each string in this list, if found
-# as the leading text of the brief description, will be stripped from the text
-# and the result, after processing the whole list, is used as the annotated
-# text. Otherwise, the brief description is used as-is. If left blank, the
-# following values are used ($name is automatically replaced with the name of
-# the entity):The $name class, The $name widget, The $name file, is, provides,
-# specifies, contains, represents, a, an and the.
-
-ABBREVIATE_BRIEF       =
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# doxygen will generate a detailed section even if there is only a brief
-# description.
-# The default value is: NO.
-
-ALWAYS_DETAILED_SEC    = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
-# inherited members of a class in the documentation of that class as if those
-# members were ordinary class members. Constructors, destructors and assignment
-# operators of the base classes will not be shown.
-# The default value is: NO.
-
-INLINE_INHERITED_MEMB  = NO
-
-# If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path
-# before files name in the file list and in the header files. If set to NO the
-# shortest path that makes the file name unique will be used
-# The default value is: YES.
-
-FULL_PATH_NAMES        = YES
-
-# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
-# Stripping is only done if one of the specified strings matches the left-hand
-# part of the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the path to
-# strip.
-#
-# Note that you can specify absolute paths here, but also relative paths, which
-# will be relative from the directory where doxygen is started.
-# This tag requires that the tag FULL_PATH_NAMES is set to YES.
-
-STRIP_FROM_PATH        =
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
-# path mentioned in the documentation of a class, which tells the reader which
-# header file to include in order to use a class. If left blank only the name of
-# the header file containing the class definition is used. Otherwise one should
-# specify the list of include paths that are normally passed to the compiler
-# using the -I flag.
-
-STRIP_FROM_INC_PATH    =
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
-# less readable) file names. This can be useful is your file systems doesn't
-# support long names like on DOS, Mac, or CD-ROM.
-# The default value is: NO.
-
-SHORT_NAMES            = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
-# first line (until the first dot) of a Javadoc-style comment as the brief
-# description. If set to NO, the Javadoc-style will behave just like regular Qt-
-# style comments (thus requiring an explicit @brief command for a brief
-# description.)
-# The default value is: NO.
-
-JAVADOC_AUTOBRIEF      = NO
-
-# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
-# line (until the first dot) of a Qt-style comment as the brief description. If
-# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
-# requiring an explicit \brief command for a brief description.)
-# The default value is: NO.
-
-QT_AUTOBRIEF           = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
-# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
-# a brief description. This used to be the default behavior. The new default is
-# to treat a multi-line C++ comment block as a detailed description. Set this
-# tag to YES if you prefer the old behavior instead.
-#
-# Note that setting this tag to YES also means that rational rose comments are
-# not recognized any more.
-# The default value is: NO.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
-# documentation from any documented member that it re-implements.
-# The default value is: YES.
-
-INHERIT_DOCS           = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a
-# new page for each member. If set to NO, the documentation of a member will be
-# part of the file/class/namespace that contains it.
-# The default value is: NO.
-
-SEPARATE_MEMBER_PAGES  = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
-# uses this value to replace tabs by spaces in code fragments.
-# Minimum value: 1, maximum value: 16, default value: 4.
-
-TAB_SIZE               = 4
-
-# This tag can be used to specify a number of aliases that act as commands in
-# the documentation. An alias has the form:
-# name=value
-# For example adding
-# "sideeffect=@par Side Effects:\n"
-# will allow you to put the command \sideeffect (or @sideeffect) in the
-# documentation, which will result in a user-defined paragraph with heading
-# "Side Effects:". You can put \n's in the value part of an alias to insert
-# newlines.
-
-ALIASES                =
-
-# This tag can be used to specify a number of word-keyword mappings (TCL only).
-# A mapping has the form "name=value". For example adding "class=itcl::class"
-# will allow you to use the command class in the itcl::class meaning.
-
-TCL_SUBST              =
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
-# only. Doxygen will then generate output that is more tailored for C. For
-# instance, some of the names that are used will be different. The list of all
-# members will be omitted, etc.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_FOR_C  = NO
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
-# Python sources only. Doxygen will then generate output that is more tailored
-# for that language. For instance, namespaces will be presented as packages,
-# qualified scopes will look different, etc.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_JAVA   = NO
-
-# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
-# sources. Doxygen will then generate output that is tailored for Fortran.
-# The default value is: NO.
-
-OPTIMIZE_FOR_FORTRAN   = NO
-
-# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
-# sources. Doxygen will then generate output that is tailored for VHDL.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_VHDL   = NO
-
-# Doxygen selects the parser to use depending on the extension of the files it
-# parses. With this tag you can assign which parser to use for a given
-# extension. Doxygen has a built-in mapping, but you can override or extend it
-# using this tag. The format is ext=language, where ext is a file extension, and
-# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
-# C#, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL. For instance to make
-# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
-# (default is Fortran), use: inc=Fortran f=C.
-#
-# Note For files without extension you can use no_extension as a placeholder.
-#
-# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
-# the files are not read by doxygen.
-
-EXTENSION_MAPPING      += dox=md
-
-# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
-# according to the Markdown format, which allows for more readable
-# documentation. See http://daringfireball.net/projects/markdown/ for details.
-# The output of markdown processing is further processed by doxygen, so you can
-# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
-# case of backward compatibilities issues.
-# The default value is: YES.
-
-MARKDOWN_SUPPORT       = YES
-
-# When enabled doxygen tries to link words that correspond to documented classes,
-# or namespaces to their corresponding documentation. Such a link can be
-# prevented in individual cases by by putting a % sign in front of the word or
-# globally by setting AUTOLINK_SUPPORT to NO.
-
-AUTOLINK_SUPPORT       = YES
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
-# to include (a tag file for) the STL sources as input, then you should
-# set this tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
-# func(std::string) {}). This also makes the inheritance and collaboration
-# diagrams that involve STL classes more complete and accurate.
-
-BUILTIN_STL_SUPPORT    = YES
-
-# If you use Microsoft's C++/CLI language, you should set this option to YES to
-# enable parsing support.
-
-CPP_CLI_SUPPORT        = NO
-
-# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
-# Doxygen will parse them like normal C++ but will assume all classes use public
-# instead of private inheritance when no explicit protection keyword is present.
-
-SIP_SUPPORT            = NO
-
-# For Microsoft's IDL there are propget and propput attributes to indicate
-# getter and setter methods for a property. Setting this option to YES (the
-# default) will make doxygen replace the get and set methods by a property in
-# the documentation. This will only work if the methods are indeed getting or
-# setting a simple type. If this is not the case, or you want to show the
-# methods anyway, you should set this option to NO.
-
-IDL_PROPERTY_SUPPORT   = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES, then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-
-DISTRIBUTE_GROUP_DOC   = NO
-
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
-# the same type (for instance a group of public functions) to be put as a
-# subgroup of that type (e.g. under the Public Functions section). Set it to
-# NO to prevent subgrouping. Alternatively, this can be done per class using
-# the \nosubgrouping command.
-
-SUBGROUPING            = YES
-
-# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and
-# unions are shown inside the group in which they are included (e.g. using
-# @ingroup) instead of on a separate page (for HTML and Man pages) or
-# section (for LaTeX and RTF).
-
-INLINE_GROUPED_CLASSES = NO
-
-# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and
-# unions with only public data fields will be shown inline in the documentation
-# of the scope in which they are defined (i.e. file, namespace, or group
-# documentation), provided this scope is documented. If set to NO (the default),
-# structs, classes, and unions are shown on a separate page (for HTML and Man
-# pages) or section (for LaTeX and RTF).
-
-INLINE_SIMPLE_STRUCTS  = NO
-
-# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
-# is documented as struct, union, or enum with the name of the typedef. So
-# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
-# with name TypeT. When disabled the typedef will appear as a member of a file,
-# namespace, or class. And the struct will be named TypeS. This can typically
-# be useful for C code in case the coding convention dictates that all compound
-# types are typedef'ed and only the typedef is referenced, never the tag name.
-
-TYPEDEF_HIDES_STRUCT   = NO
-
-# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
-# determine which symbols to keep in memory and which to flush to disk.
-# When the cache is full, less often used symbols will be written to disk.
-# For small to medium size projects (<1000 input files) the default value is
-# probably good enough. For larger projects a too small cache size can cause
-# doxygen to be busy swapping symbols to and from disk most of the time
-# causing a significant performance penalty.
-# If the system has enough physical memory increasing the cache will improve the
-# performance by keeping more symbols in memory. Note that the value works on
-# a logarithmic scale so increasing the size by one will roughly double the
-# memory usage. The cache size is given by this formula:
-# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
-# corresponding to a cache size of 2^16 = 65536 symbols.
-
-#SYMBOL_CACHE_SIZE      = 0
-
-# Similar to the SYMBOL_CACHE_SIZE the size of the symbol lookup cache can be
-# set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given
-# their name and scope. Since this can be an expensive process and often the
-# same symbol appear multiple times in the code, doxygen keeps a cache of
-# pre-resolved symbols. If the cache is too small doxygen will become slower.
-# If the cache is too large, memory is wasted. The cache size is given by this
-# formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range is 0..9, the default is 0,
-# corresponding to a cache size of 2^16 = 65536 symbols.
-
-LOOKUP_CACHE_SIZE      = 0
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
-# documentation are documented, even if no documentation was available.
-# Private class members and static file members will be hidden unless
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
-
-EXTRACT_ALL            = NO
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
-# will be included in the documentation.
-
-EXTRACT_PRIVATE        = NO
-
-# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
-# scope will be included in the documentation.
-
-EXTRACT_PACKAGE        = NO
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file
-# will be included in the documentation.
-
-EXTRACT_STATIC         = NO
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
-# defined locally in source files will be included in the documentation.
-# If set to NO only classes defined in header files are included.
-
-EXTRACT_LOCAL_CLASSES  = YES
-
-# This flag is only useful for Objective-C code. When set to YES local
-# methods, which are defined in the implementation section but not in
-# the interface are included in the documentation.
-# If set to NO (the default) only methods in the interface are included.
-
-EXTRACT_LOCAL_METHODS  = NO
-
-# If this flag is set to YES, the members of anonymous namespaces will be
-# extracted and appear in the documentation as a namespace called
-# 'anonymous_namespace{file}', where file will be replaced with the base
-# name of the file that contains the anonymous namespace. By default
-# anonymous namespaces are hidden.
-
-EXTRACT_ANON_NSPACES   = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
-# undocumented members of documented classes, files or namespaces.
-# If set to NO (the default) these members will be included in the
-# various overviews, but no documentation section is generated.
-# This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_MEMBERS     = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy.
-# If set to NO (the default) these classes will be included in the various
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_CLASSES     = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
-# friend (class|struct|union) declarations.
-# If set to NO (the default) these declarations will be included in the
-# documentation.
-
-HIDE_FRIEND_COMPOUNDS  = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
-# documentation blocks found inside the body of a function.
-# If set to NO (the default) these blocks will be appended to the
-# function's detailed documentation block.
-
-HIDE_IN_BODY_DOCS      = NO
-
-# The INTERNAL_DOCS tag determines if documentation
-# that is typed after a \internal command is included. If the tag is set
-# to NO (the default) then the documentation will be excluded.
-# Set it to YES to include the internal documentation.
-
-INTERNAL_DOCS          = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
-# file names in lower-case letters. If set to YES upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# and Mac users are advised to set this option to NO.
-
-CASE_SENSE_NAMES       = YES
-
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
-# will show members with their full class and namespace scopes in the
-# documentation. If set to YES the scope will be hidden.
-
-HIDE_SCOPE_NAMES       = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
-# will put a list of the files that are included by a file in the documentation
-# of that file.
-
-SHOW_INCLUDE_FILES     = YES
-
-# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen
-# will list include files with double quotes in the documentation
-# rather than with sharp brackets.
-
-FORCE_LOCAL_INCLUDES   = NO
-
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
-# is inserted in the documentation for inline members.
-
-INLINE_INFO            = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
-# will sort the (detailed) documentation of file and class members
-# alphabetically by member name. If set to NO the members will appear in
-# declaration order.
-
-SORT_MEMBER_DOCS       = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
-# brief documentation of file, namespace and class members alphabetically
-# by member name. If set to NO (the default) the members will appear in
-# declaration order.
-
-SORT_BRIEF_DOCS        = NO
-
-# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen
-# will sort the (brief and detailed) documentation of class members so that
-# constructors and destructors are listed first. If set to NO (the default)
-# the constructors will appear in the respective orders defined by
-# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS.
-# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO
-# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
-
-SORT_MEMBERS_CTORS_1ST = NO
-
-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
-# hierarchy of group names into alphabetical order. If set to NO (the default)
-# the group names will appear in their defined order.
-
-SORT_GROUP_NAMES       = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
-# sorted by fully-qualified names, including namespaces. If set to
-# NO (the default), the class list will be sorted only by class name,
-# not including the namespace part.
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the
-# alphabetical list.
-
-SORT_BY_SCOPE_NAME     = NO
-
-# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to
-# do proper type resolution of all parameters of a function it will reject a
-# match between the prototype and the implementation of a member function even
-# if there is only one candidate or it is obvious which candidate to choose
-# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen
-# will still accept a match between prototype and implementation in such cases.
-
-STRICT_PROTO_MATCHING  = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or
-# disable (NO) the todo list. This list is created by putting \todo
-# commands in the documentation.
-
-GENERATE_TODOLIST      = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or
-# disable (NO) the test list. This list is created by putting \test
-# commands in the documentation.
-
-GENERATE_TESTLIST      = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or
-# disable (NO) the bug list. This list is created by putting \bug
-# commands in the documentation.
-
-GENERATE_BUGLIST       = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
-# disable (NO) the deprecated list. This list is created by putting
-# \deprecated commands in the documentation.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional
-# documentation sections, marked by \if section-label ... \endif
-# and \cond section-label ... \endcond blocks.
-
-ENABLED_SECTIONS       =
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
-# the initial value of a variable or macro consists of for it to appear in
-# the documentation. If the initializer consists of more lines than specified
-# here it will be hidden. Use a value of 0 to hide initializers completely.
-# The appearance of the initializer of individual variables and macros in the
-# documentation can be controlled using \showinitializer or \hideinitializer
-# command in the documentation regardless of this setting.
-
-MAX_INITIALIZER_LINES  = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
-# at the bottom of the documentation of classes and structs. If set to YES the
-# list will mention the files that were used to generate the documentation.
-
-SHOW_USED_FILES        = YES
-
-# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
-# This will remove the Files entry from the Quick Index and from the
-# Folder Tree View (if specified). The default is YES.
-
-SHOW_FILES             = YES
-
-# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
-# Namespaces page.
-# This will remove the Namespaces entry from the Quick Index
-# and from the Folder Tree View (if specified). The default is YES.
-
-SHOW_NAMESPACES        = YES
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that
-# doxygen should invoke to get the current version for each file (typically from
-# the version control system). Doxygen will invoke the program by executing (via
-# popen()) the command <command> <input-file>, where <command> is the value of
-# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
-# provided by doxygen. Whatever the program writes to standard output
-# is used as the file version. See the manual for examples.
-
-FILE_VERSION_FILTER    =
-
-# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
-# by doxygen. The layout file controls the global structure of the generated
-# output files in an output format independent way. To create the layout file
-# that represents doxygen's defaults, run doxygen with the -l option.
-# You can optionally specify a file name after the option, if omitted
-# DoxygenLayout.xml will be used as the name of the layout file.
-
-LAYOUT_FILE            =
-
-# The CITE_BIB_FILES tag can be used to specify one or more bib files
-# containing the references data. This must be a list of .bib files. The
-# .bib extension is automatically appended if omitted. Using this command
-# requires the bibtex tool to be installed. See also
-# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style
-# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this
-# feature you need bibtex and perl available in the search path. Do not use
-# file names with spaces, bibtex cannot handle them.
-
-CITE_BIB_FILES         =
-
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated
-# by doxygen. Possible values are YES and NO. If left blank NO is used.
-
-QUIET                  = NO
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated by doxygen. Possible values are YES and NO. If left blank
-# NO is used.
-
-WARNINGS               = YES
-
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
-# automatically be disabled.
-
-WARN_IF_UNDOCUMENTED   = YES
-
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some
-# parameters in a documented function, or documenting parameters that
-# don't exist or using markup commands wrongly.
-
-WARN_IF_DOC_ERROR      = YES
-
-# The WARN_NO_PARAMDOC option can be enabled to get warnings for
-# functions that are documented, but have no documentation for their parameters
-# or return value. If set to NO (the default) doxygen will only warn about
-# wrong or incomplete parameter documentation, but not about the absence of
-# documentation.
-
-WARN_NO_PARAMDOC       = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that
-# doxygen can produce. The string should contain the $file, $line, and $text
-# tags, which will be replaced by the file and line number from which the
-# warning originated and the warning text. Optionally the format may contain
-# $version, which will be replaced by the version of the file (if it could
-# be obtained via FILE_VERSION_FILTER)
-
-WARN_FORMAT            = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning
-# and error messages should be written. If left blank the output is written
-# to stderr.
-
-WARN_LOGFILE           =
-
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag can be used to specify the files and/or directories that contain
-# documented source files. You may enter file names like "myfile.cpp" or
-# directories like "/usr/src/myproject". Separate the files or directories
-# with spaces.
-
-INPUT                  =
-
-# This tag can be used to specify the character encoding of the source files
-# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
-# also the default input encoding. Doxygen uses libiconv (or the iconv built
-# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
-# the list of possible encodings.
-
-INPUT_ENCODING         = UTF-8
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank the following patterns are tested:
-# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh
-# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py
-# *.f90 *.f *.for *.vhd *.vhdl
-
-FILE_PATTERNS          =
-
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories
-# should be searched for input files as well. Possible values are YES and NO.
-# If left blank NO is used.
-
-RECURSIVE              = YES
-
-# The EXCLUDE tag can be used to specify files and/or directories that should be
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-# Note that relative paths are relative to the directory from which doxygen is
-# run.
-
-EXCLUDE                =
-
-# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
-# directories that are symbolic links (a Unix file system feature) are excluded
-# from the input.
-
-EXCLUDE_SYMLINKS       = NO
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories. Note that the wildcards are matched
-# against the file with absolute path, so to exclude all test directories
-# for example use the pattern */test/*
-
-EXCLUDE_PATTERNS       =
-
-# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
-# (namespaces, classes, functions, etc.) that should be excluded from the
-# output. The symbol name can be a fully qualified name, a word, or if the
-# wildcard * is used, a substring. Examples: ANamespace, AClass,
-# AClass::ANamespace, ANamespace::*Test
-
-EXCLUDE_SYMBOLS        =
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or
-# directories that contain example code fragments that are included (see
-# the \include command).
-
-EXAMPLE_PATH           =
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank all files are included.
-
-EXAMPLE_PATTERNS       =
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude
-# commands irrespective of the value of the RECURSIVE tag.
-# Possible values are YES and NO. If left blank NO is used.
-
-EXAMPLE_RECURSIVE      = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or
-# directories that contain image that are included in the documentation (see
-# the \image command).
-
-IMAGE_PATH             =
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command <filter> <input-file>, where <filter>
-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
-# input file. Doxygen will then use the output that the filter program writes
-# to standard output.
-# If FILTER_PATTERNS is specified, this tag will be
-# ignored.
-
-INPUT_FILTER           =
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis.
-# Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match.
-# The filters are a list of the form:
-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
-# info on how filters are used. If FILTER_PATTERNS is empty or if
-# non of the patterns match the file name, INPUT_FILTER is applied.
-
-FILTER_PATTERNS        =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER) will be used to filter the input files when producing source
-# files to browse (i.e. when SOURCE_BROWSER is set to YES).
-
-FILTER_SOURCE_FILES    = NO
-
-# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
-# pattern. A pattern will override the setting for FILTER_PATTERN (if any)
-# and it is also possible to disable source filtering for a specific pattern
-# using *.ext= (so without naming a filter). This option only has effect when
-# FILTER_SOURCE_FILES is enabled.
-
-FILTER_SOURCE_PATTERNS =
-
-# If the USE_MD_FILE_AS_MAINPAGE tag refers to the name of a markdown file that
-# is part of the input, its contents will be placed on the main page (index.html).
-# This can be useful if you have a project on for instance GitHub and want reuse
-# the introduction page also for the doxygen output.
-
-USE_MDFILE_AS_MAINPAGE =
-
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will
-# be generated. Documented entities will be cross-referenced with these sources.
-# Note: To get rid of all source code in the generated output, make sure also
-# VERBATIM_HEADERS is set to NO.
-
-SOURCE_BROWSER         = YES
-
-# Setting the INLINE_SOURCES tag to YES will include the body
-# of functions and classes directly in the documentation.
-
-INLINE_SOURCES         = YES
-
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
-# doxygen to hide any special comment blocks from generated source code
-# fragments. Normal C, C++ and Fortran comments will always remain visible.
-
-STRIP_CODE_COMMENTS    = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES
-# then for each documented function all documented
-# functions referencing it will be listed.
-
-REFERENCED_BY_RELATION = NO
-
-# If the REFERENCES_RELATION tag is set to YES
-# then for each documented function all documented entities
-# called/used by that function will be listed.
-
-REFERENCES_RELATION    = NO
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
-# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
-# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
-# link to the source code.
-# Otherwise they will link to the documentation.
-
-REFERENCES_LINK_SOURCE = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code
-# will point to the HTML generated by the htags(1) tool instead of doxygen
-# built-in source browser. The htags tool is part of GNU's global source
-# tagging system (see http://www.gnu.org/software/global/global.html). You
-# will need version 4.8.6 or higher.
-
-USE_HTAGS              = NO
-
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
-# will generate a verbatim copy of the header file for each class for
-# which an include is specified. Set to NO to disable this.
-
-VERBATIM_HEADERS       = YES
-
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
-# of all compounds will be generated. Enable this if the project
-# contains a lot of classes, structs, unions or interfaces.
-
-ALPHABETICAL_INDEX     = YES
-
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
-# in which this list will be split (can be a number in the range [1..20])
-
-COLS_IN_ALPHA_INDEX    = 5
-
-# In case all classes in a project start with a common prefix, all
-# classes will be put under the same header in the alphabetical index.
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
-# should be ignored while generating the index headers.
-
-IGNORE_PREFIX          =
-
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
-# generate HTML output.
-
-GENERATE_HTML          = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `html' will be used as the default path.
-
-HTML_OUTPUT            = html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
-# doxygen will generate files with .html extension.
-
-HTML_FILE_EXTENSION    = .html
-
-# The HTML_HEADER tag can be used to specify a personal HTML header for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard header. Note that when using a custom header you are responsible
-#  for the proper inclusion of any scripts and style sheets that doxygen
-# needs, which is dependent on the configuration options used.
-# It is advised to generate a default header using "doxygen -w html
-# header.html footer.html stylesheet.css YourConfigFile" and then modify
-# that header. Note that the header is subject to change so you typically
-# have to redo this when upgrading to a newer version of doxygen or when
-# changing the value of configuration settings such as GENERATE_TREEVIEW!
-
-HTML_HEADER            =
-
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard footer.
-
-HTML_FOOTER            = footer.html
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
-# style sheet that is used by each HTML page. It can be used to
-# fine-tune the look of the HTML output. If left blank doxygen will
-# generate a default style sheet. Note that it is recommended to use
-# HTML_EXTRA_STYLESHEET instead of this one, as it is more robust and this
-# tag will in the future become obsolete.
-
-HTML_STYLESHEET        =
-
-# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional
-# user-defined cascading style sheet that is included after the standard
-# style sheets created by doxygen. Using this option one can overrule
-# certain style aspects. This is preferred over using HTML_STYLESHEET
-# since it does not replace the standard style sheet and is therefor more
-# robust against future updates. Doxygen will copy the style sheet file to
-# the output directory.
-
-HTML_EXTRA_STYLESHEET  =
-
-# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
-# other source files which should be copied to the HTML output directory. Note
-# that these files will be copied to the base HTML output directory. Use the
-# $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
-# files. In the HTML_STYLESHEET file, use the file name only. Also note that
-# the files will be copied as-is; there are no commands or markers available.
-
-HTML_EXTRA_FILES       =
-
-# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
-# Doxygen will adjust the colors in the style sheet and background images
-# according to this color. Hue is specified as an angle on a colorwheel,
-# see http://en.wikipedia.org/wiki/Hue for more information.
-# For instance the value 0 represents red, 60 is yellow, 120 is green,
-# 180 is cyan, 240 is blue, 300 purple, and 360 is red again.
-# The allowed range is 0 to 359.
-
-HTML_COLORSTYLE_HUE    = 220
-
-# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of
-# the colors in the HTML output. For a value of 0 the output will use
-# grayscales only. A value of 255 will produce the most vivid colors.
-
-HTML_COLORSTYLE_SAT    = 100
-
-# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to
-# the luminance component of the colors in the HTML output. Values below
-# 100 gradually make the output lighter, whereas values above 100 make
-# the output darker. The value divided by 100 is the actual gamma applied,
-# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2,
-# and 100 does not change the gamma.
-
-HTML_COLORSTYLE_GAMMA  = 80
-
-# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
-# page will contain the date and time when the page was generated. Setting
-# this to NO can help when comparing the output of multiple runs.
-
-HTML_TIMESTAMP         = YES
-
-# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
-# documentation will contain sections that can be hidden and shown after the
-# page has loaded.
-
-HTML_DYNAMIC_SECTIONS  = NO
-
-# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of
-# entries shown in the various tree structured indices initially; the user
-# can expand and collapse entries dynamically later on. Doxygen will expand
-# the tree to such a level that at most the specified number of entries are
-# visible (unless a fully collapsed tree already exceeds this amount).
-# So setting the number of entries 1 will produce a full collapsed tree by
-# default. 0 is a special value representing an infinite number of entries
-# and will result in a full expanded tree by default.
-
-HTML_INDEX_NUM_ENTRIES = 100
-
-# If the GENERATE_DOCSET tag is set to YES, additional index files
-# will be generated that can be used as input for Apple's Xcode 3
-# integrated development environment, introduced with OSX 10.5 (Leopard).
-# To create a documentation set, doxygen will generate a Makefile in the
-# HTML output directory. Running make will produce the docset in that
-# directory and running "make install" will install the docset in
-# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
-# it at startup.
-# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
-# for more information.
-
-GENERATE_DOCSET        = NO
-
-# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
-# feed. A documentation feed provides an umbrella under which multiple
-# documentation sets from a single provider (such as a company or product suite)
-# can be grouped.
-
-DOCSET_FEEDNAME        = "Doxygen generated docs"
-
-# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
-# should uniquely identify the documentation set bundle. This should be a
-# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
-# will append .docset to the name.
-
-DOCSET_BUNDLE_ID       = org.doxygen.Project
-
-# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely
-# identify the documentation publisher. This should be a reverse domain-name
-# style string, e.g. com.mycompany.MyDocSet.documentation.
-
-DOCSET_PUBLISHER_ID    = org.doxygen.Publisher
-
-# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher.
-
-DOCSET_PUBLISHER_NAME  = Publisher
-
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files
-# will be generated that can be used as input for tools like the
-# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
-# of the generated HTML documentation.
-
-GENERATE_HTMLHELP      = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
-# be used to specify the file name of the resulting .chm file. You
-# can add a path in front of the file if the result should not be
-# written to the html output directory.
-
-CHM_FILE               =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
-# be used to specify the location (absolute path including file name) of
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
-# the HTML help compiler on the generated index.hhp.
-
-HHC_LOCATION           =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
-# controls if a separate .chi index file is generated (YES) or that
-# it should be included in the master .chm file (NO).
-
-GENERATE_CHI           = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
-# is used to encode HtmlHelp index (hhk), content (hhc) and project file
-# content.
-
-CHM_INDEX_ENCODING     =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
-# controls whether a binary table of contents is generated (YES) or a
-# normal table of contents (NO) in the .chm file.
-
-BINARY_TOC             = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members
-# to the contents of the HTML help documentation and to the tree view.
-
-TOC_EXPAND             = NO
-
-# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
-# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated
-# that can be used as input for Qt's qhelpgenerator to generate a
-# Qt Compressed Help (.qch) of the generated HTML documentation.
-
-GENERATE_QHP           = NO
-
-# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
-# be used to specify the file name of the resulting .qch file.
-# The path specified is relative to the HTML output folder.
-
-QCH_FILE               =
-
-# The QHP_NAMESPACE tag specifies the namespace to use when generating
-# Qt Help Project output. For more information please see
-# http://doc.trolltech.com/qthelpproject.html#namespace
-
-QHP_NAMESPACE          = org.doxygen.Project
-
-# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
-# Qt Help Project output. For more information please see
-# http://doc.trolltech.com/qthelpproject.html#virtual-folders
-
-QHP_VIRTUAL_FOLDER     = doc
-
-# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to
-# add. For more information please see
-# http://doc.trolltech.com/qthelpproject.html#custom-filters
-
-QHP_CUST_FILTER_NAME   =
-
-# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the
-# custom filter to add. For more information please see
-# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">
-# Qt Help Project / Custom Filters</a>.
-
-QHP_CUST_FILTER_ATTRS  =
-
-# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
-# project's
-# filter section matches.
-# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">
-# Qt Help Project / Filter Attributes</a>.
-
-QHP_SECT_FILTER_ATTRS  =
-
-# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
-# be used to specify the location of Qt's qhelpgenerator.
-# If non-empty doxygen will try to run qhelpgenerator on the generated
-# .qhp file.
-
-QHG_LOCATION           =
-
-# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files
-#  will be generated, which together with the HTML files, form an Eclipse help
-# plugin. To install this plugin and make it available under the help contents
-# menu in Eclipse, the contents of the directory containing the HTML and XML
-# files needs to be copied into the plugins directory of eclipse. The name of
-# the directory within the plugins directory should be the same as
-# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before
-# the help appears.
-
-GENERATE_ECLIPSEHELP   = NO
-
-# A unique identifier for the eclipse help plugin. When installing the plugin
-# the directory name containing the HTML and XML files should also have
-# this name.
-
-ECLIPSE_DOC_ID         = org.doxygen.Project
-
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs)
-# at top of each HTML page. The value NO (the default) enables the index and
-# the value YES disables it. Since the tabs have the same information as the
-# navigation tree you can set this option to NO if you already set
-# GENERATE_TREEVIEW to YES.
-
-DISABLE_INDEX          = NO
-
-# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
-# structure should be generated to display hierarchical information.
-# If the tag value is set to YES, a side panel will be generated
-# containing a tree-like index structure (just like the one that
-# is generated for HTML Help). For this to work a browser that supports
-# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
-# Windows users are probably better off using the HTML help feature.
-# Since the tree basically has the same information as the tab index you
-# could consider to set DISABLE_INDEX to NO when enabling this option.
-
-GENERATE_TREEVIEW      = NO
-
-# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values
-# (range [0,1..20]) that doxygen will group on one line in the generated HTML
-# documentation. Note that a value of 0 will completely suppress the enum
-# values from appearing in the overview section.
-
-ENUM_VALUES_PER_LINE   = 4
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
-# used to set the initial width (in pixels) of the frame in which the tree
-# is shown.
-
-TREEVIEW_WIDTH         = 250
-
-# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open
-# links to external symbols imported via tag files in a separate window.
-
-EXT_LINKS_IN_WINDOW    = NO
-
-# Use this tag to change the font size of Latex formulas included
-# as images in the HTML documentation. The default is 10. Note that
-# when you change the font size after a successful doxygen run you need
-# to manually remove any form_*.png images from the HTML output directory
-# to force them to be regenerated.
-
-FORMULA_FONTSIZE       = 10
-
-# Use the FORMULA_TRANPARENT tag to determine whether or not the images
-# generated for formulas are transparent PNGs. Transparent PNGs are
-# not supported properly for IE 6.0, but are supported on all modern browsers.
-# Note that when changing this option you need to delete any form_*.png files
-# in the HTML output before the changes have effect.
-
-FORMULA_TRANSPARENT    = YES
-
-# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax
-# (see http://www.mathjax.org) which uses client side Javascript for the
-# rendering instead of using prerendered bitmaps. Use this if you do not
-# have LaTeX installed or if you want to formulas look prettier in the HTML
-# output. When enabled you may also need to install MathJax separately and
-# configure the path to it using the MATHJAX_RELPATH option.
-
-USE_MATHJAX            = NO
-
-# When MathJax is enabled you can set the default output format to be used for
-# thA MathJax output. Supported types are HTML-CSS, NativeMML (i.e. MathML) and
-# SVG. The default value is HTML-CSS, which is slower, but has the best
-# compatibility.
-
-MATHJAX_FORMAT         = HTML-CSS
-
-# When MathJax is enabled you need to specify the location relative to the
-# HTML output directory using the MATHJAX_RELPATH option. The destination
-# directory should contain the MathJax.js script. For instance, if the mathjax
-# directory is located at the same level as the HTML output directory, then
-# MATHJAX_RELPATH should be ../mathjax. The default value points to
-# the MathJax Content Delivery Network so you can quickly see the result without
-# installing MathJax.
-# However, it is strongly recommended to install a local
-# copy of MathJax from http://www.mathjax.org before deployment.
-
-MATHJAX_RELPATH        = http://cdn.mathjax.org/mathjax/latest
-
-# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension
-# names that should be enabled during MathJax rendering.
-
-MATHJAX_EXTENSIONS     =
-
-# When the SEARCHENGINE tag is enabled doxygen will generate a search box
-# for the HTML output. The underlying search engine uses javascript
-# and DHTML and should work on any modern browser. Note that when using
-# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets
-# (GENERATE_DOCSET) there is already a search function so this one should
-# typically be disabled. For large projects the javascript based search engine
-# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
-
-SEARCHENGINE           = NO
-
-# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
-# implemented using a web server instead of a web client using Javascript.
-# There are two flavours of web server based search depending on the
-# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for
-# searching and an index file used by the script. When EXTERNAL_SEARCH is
-# enabled the indexing and searching needs to be provided by external tools.
-# See the manual for details.
-
-SERVER_BASED_SEARCH    = NO
-
-# When EXTERNAL_SEARCH is enabled doxygen will no longer generate the PHP
-# script for searching. Instead the search results are written to an XML file
-# which needs to be processed by an external indexer. Doxygen will invoke an
-# external search engine pointed to by the SEARCHENGINE_URL option to obtain
-# the search results. Doxygen ships with an example indexer (doxyindexer) and
-# search engine (doxysearch.cgi) which are based on the open source search engine
-# library Xapian. See the manual for configuration details.
-
-EXTERNAL_SEARCH        = NO
-
-# The SEARCHENGINE_URL should point to a search engine hosted by a web server
-# which will returned the search results when EXTERNAL_SEARCH is enabled.
-# Doxygen ships with an example search engine (doxysearch) which is based on
-# the open source search engine library Xapian. See the manual for configuration
-# details.
-
-SEARCHENGINE_URL       =
-
-# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
-# search data is written to a file for indexing by an external tool. With the
-# SEARCHDATA_FILE tag the name of this file can be specified.
-
-SEARCHDATA_FILE        = searchdata.xml
-
-# When SERVER_BASED_SEARCH AND EXTERNAL_SEARCH are both enabled the
-# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
-# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
-# projects and redirect the results back to the right project.
-
-EXTERNAL_SEARCH_ID     =
-
-# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
-# projects other than the one defined by this configuration file, but that are
-# all added to the same external search index. Each project needs to have a
-# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id
-# of to a relative location where the documentation can be found.
-# The format is: EXTRA_SEARCH_MAPPINGS = id1=loc1 id2=loc2 ...
-
-EXTRA_SEARCH_MAPPINGS  =
-
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
-# generate Latex output.
-
-GENERATE_LATEX         = YES
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `latex' will be used as the default path.
-
-LATEX_OUTPUT           = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked. If left blank `latex' will be used as the default command name.
-# Note that when enabling USE_PDFLATEX this option is only used for
-# generating bitmaps for formulas in the HTML output, but not in the
-# Makefile that is written to the output directory.
-
-LATEX_CMD_NAME         = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
-# generate index for LaTeX. If left blank `makeindex' will be used as the
-# default command name.
-
-MAKEINDEX_CMD_NAME     = makeindex
-
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
-# LaTeX documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_LATEX          = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used
-# by the printer. Possible values are: a4, letter, legal and
-# executive. If left blank a4wide will be used.
-
-PAPER_TYPE             = a4
-
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
-# packages that should be included in the LaTeX output.
-
-EXTRA_PACKAGES         =
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
-# the generated latex document. The header should contain everything until
-# the first chapter. If it is left blank doxygen will generate a
-# standard header. Notice: only use this tag if you know what you are doing!
-
-LATEX_HEADER           =
-
-# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for
-# the generated latex document. The footer should contain everything after
-# the last chapter. If it is left blank doxygen will generate a
-# standard footer. Notice: only use this tag if you know what you are doing!
-
-LATEX_FOOTER           =
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will
-# contain links (just like the HTML output) instead of page references
-# This makes the output suitable for online browsing using a pdf viewer.
-
-PDF_HYPERLINKS         = YES
-
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
-# plain latex in the generated Makefile. Set this option to YES to get a
-# higher quality PDF documentation.
-
-USE_PDFLATEX           = YES
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
-# command to the generated LaTeX files. This will instruct LaTeX to keep
-# running if errors occur, instead of asking the user for help.
-# This option is also used when generating formulas in HTML.
-
-LATEX_BATCHMODE        = NO
-
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not
-# include the index chapters (such as File Index, Compound Index, etc.)
-# in the output.
-
-LATEX_HIDE_INDICES     = NO
-
-# If LATEX_SOURCE_CODE is set to YES then doxygen will include
-# source code with syntax highlighting in the LaTeX output.
-# Note that which sources are shown also depends on other settings
-# such as SOURCE_BROWSER.
-
-LATEX_SOURCE_CODE      = NO
-
-# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
-# bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See
-# http://en.wikipedia.org/wiki/BibTeX for more info.
-
-LATEX_BIB_STYLE        = plain
-
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
-# The RTF output is optimized for Word 97 and may not look very pretty with
-# other RTF readers or editors.
-
-GENERATE_RTF           = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `rtf' will be used as the default path.
-
-RTF_OUTPUT             = rtf
-
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
-# RTF documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_RTF            = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
-# will contain hyperlink fields. The RTF file will
-# contain links (just like the HTML output) instead of page references.
-# This makes the output suitable for online browsing using WORD or other
-# programs which support those fields.
-# Note: wordpad (write) and others do not support links.
-
-RTF_HYPERLINKS         = NO
-
-# Load style sheet definitions from file. Syntax is similar to doxygen's
-# config file, i.e. a series of assignments. You only have to provide
-# replacements, missing definitions are set to their default value.
-
-RTF_STYLESHEET_FILE    =
-
-# Set optional variables used in the generation of an rtf document.
-# Syntax is similar to doxygen's config file.
-
-RTF_EXTENSIONS_FILE    =
-
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
-# generate man pages
-
-GENERATE_MAN           = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `man' will be used as the default path.
-
-MAN_OUTPUT             = man
-
-# The MAN_EXTENSION tag determines the extension that is added to
-# the generated man pages (default is the subroutine's section .3)
-
-MAN_EXTENSION          = .3
-
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
-# then it will generate one additional man file for each entity
-# documented in the real man page(s). These additional files
-# only source the real man page, but without them the man command
-# would be unable to find the correct page. The default is NO.
-
-MAN_LINKS              = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES Doxygen will
-# generate an XML file that captures the structure of
-# the code including all documentation.
-
-GENERATE_XML           = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `xml' will be used as the default path.
-
-XML_OUTPUT             = xml
-
-# The XML_SCHEMA tag can be used to specify an XML schema,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_SCHEMA             =
-
-# The XML_DTD tag can be used to specify an XML DTD,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_DTD                =
-
-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
-# dump the program listings (including syntax highlighting
-# and cross-referencing information) to the XML output. Note that
-# enabling this will significantly increase the size of the XML output.
-
-XML_PROGRAMLISTING     = YES
-
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
-# generate an AutoGen Definitions (see autogen.sf.net) file
-# that captures the structure of the code including all
-# documentation. Note that this feature is still experimental
-# and incomplete at the moment.
-
-GENERATE_AUTOGEN_DEF   = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES Doxygen will
-# generate a Perl module file that captures the structure of
-# the code including all documentation. Note that this
-# feature is still experimental and incomplete at the
-# moment.
-
-GENERATE_PERLMOD       = NO
-
-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
-# the necessary Makefile rules, Perl scripts and LaTeX code to be able
-# to generate PDF and DVI output from the Perl module output.
-
-PERLMOD_LATEX          = NO
-
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
-# nicely formatted so it can be parsed by a human reader.
-# This is useful
-# if you want to understand what is going on.
-# On the other hand, if this
-# tag is set to NO the size of the Perl module output will be much smaller
-# and Perl will parse it just the same.
-
-PERLMOD_PRETTY         = YES
-
-# The names of the make variables in the generated doxyrules.make file
-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
-# This is useful so different doxyrules.make files included by the same
-# Makefile don't overwrite each other's variables.
-
-PERLMOD_MAKEVAR_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
-# evaluate all C-preprocessor directives found in the sources and include
-# files.
-
-ENABLE_PREPROCESSING   = YES
-
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
-# names in the source code. If set to NO (the default) only conditional
-# compilation will be performed. Macro expansion can be done in a controlled
-# way by setting EXPAND_ONLY_PREDEF to YES.
-
-MACRO_EXPANSION        = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
-# then the macro expansion is limited to the macros specified with the
-# PREDEFINED and EXPAND_AS_DEFINED tags.
-
-EXPAND_ONLY_PREDEF     = NO
-
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
-# pointed to by INCLUDE_PATH will be searched when a #include is found.
-
-SEARCH_INCLUDES        = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by
-# the preprocessor.
-
-INCLUDE_PATH           =
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
-# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will
-# be used.
-
-INCLUDE_FILE_PATTERNS  =
-
-# The PREDEFINED tag can be used to specify one or more macro names that
-# are defined before the preprocessor is started (similar to the -D option of
-# gcc). The argument of the tag is a list of macros of the form: name
-# or name=definition (no spaces). If the definition and the = are
-# omitted =1 is assumed. To prevent a macro definition from being
-# undefined via #undef or recursively expanded use the := operator
-# instead of the = operator.
-
-PREDEFINED             = DOXYGEN_SHOULD_SKIP_THIS
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
-# this tag can be used to specify a list of macro names that should be expanded.
-# The macro definition that is found in the sources will be used.
-# Use the PREDEFINED tag if you want to use a different macro definition that
-# overrules the definition found in the source code.
-
-EXPAND_AS_DEFINED      =
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
-# doxygen's preprocessor will remove all references to function-like macros
-# that are alone on a line, have an all uppercase name, and do not end with a
-# semicolon, because these will confuse the parser if not removed.
-
-SKIP_FUNCTION_MACROS   = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to external references
-#---------------------------------------------------------------------------
-
-# The TAGFILES option can be used to specify one or more tagfiles. For each
-# tag file the location of the external documentation should be added. The
-# format of a tag file without this location is as follows:
-#
-# TAGFILES = file1 file2 ...
-# Adding location for the tag files is done as follows:
-#
-# TAGFILES = file1=loc1 "file2 = loc2" ...
-# where "loc1" and "loc2" can be relative or absolute paths
-# or URLs. Note that each tag file must have a unique name (where the name does
-# NOT include the path). If a tag file is not located in the directory in which
-# doxygen is run, you must also specify the path to the tagfile here.
-
-TAGFILES               =
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create
-# a tag file that is based on the input files it reads.
-
-GENERATE_TAGFILE       =
-
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed
-# in the class index. If set to NO only the inherited external classes
-# will be listed.
-
-ALLEXTERNALS           = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
-# in the modules index. If set to NO, only the current project's groups will
-# be listed.
-
-EXTERNAL_GROUPS        = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of `which perl').
-
-PERL_PATH              = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
-# or super classes. Setting the tag to NO turns the diagrams off. Note that
-# this option also works with HAVE_DOT disabled, but it is recommended to
-# install and use dot, since it yields more powerful graphs.
-
-CLASS_DIAGRAMS         = YES
-
-# You can define message sequence charts within doxygen comments using the \msc
-# command. Doxygen will then run the mscgen tool (see
-# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
-# documentation. The MSCGEN_PATH tag allows you to specify the directory where
-# the mscgen tool resides. If left empty the tool is assumed to be found in the
-# default search path.
-
-MSCGEN_PATH            =
-
-# If set to YES, the inheritance and collaboration graphs will hide
-# inheritance and usage relations if the target is undocumented
-# or is not a class.
-
-HIDE_UNDOC_RELATIONS   = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz, a graph visualization
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section
-# have no effect if this option is set to NO (the default)
-
-HAVE_DOT               = YES
-
-# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is
-# allowed to run in parallel. When set to 0 (the default) doxygen will
-# base this on the number of processors available in the system. You can set it
-# explicitly to a value larger than 0 to get control over the balance
-# between CPU load and processing speed.
-
-DOT_NUM_THREADS        = 0
-
-# By default doxygen will use the Helvetica font for all dot files that
-# doxygen generates. When you want a differently looking font you can specify
-# the font name using DOT_FONTNAME. You need to make sure dot is able to find
-# the font, which can be done by putting it in a standard location or by setting
-# the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the
-# directory containing the font.
-
-DOT_FONTNAME           = Helvetica
-
-# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
-# The default size is 10pt.
-
-DOT_FONTSIZE           = 10
-
-# By default doxygen will tell dot to use the Helvetica font.
-# If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to
-# set the path where dot can find it.
-
-DOT_FONTPATH           =
-
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect inheritance relations. Setting this tag to YES will force the
-# CLASS_DIAGRAMS tag to NO.
-
-CLASS_GRAPH            = YES
-
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect implementation dependencies (inheritance, containment, and
-# class references variables) of the class with other documented classes.
-
-COLLABORATION_GRAPH    = YES
-
-# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for groups, showing the direct groups dependencies
-
-GROUP_GRAPHS           = YES
-
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
-# collaboration diagrams in a style similar to the OMG's Unified Modeling
-# Language.
-
-UML_LOOK               = NO
-
-# If the UML_LOOK tag is enabled, the fields and methods are shown inside
-# the class node. If there are many fields or methods and many nodes the
-# graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS
-# threshold limits the number of items for each type to make the size more
-# managable. Set this to 0 for no limit. Note that the threshold may be
-# exceeded by 50% before the limit is enforced.
-
-UML_LIMIT_NUM_FIELDS   = 10
-
-# If set to YES, the inheritance and collaboration graphs will show the
-# relations between templates and their instances.
-
-TEMPLATE_RELATIONS     = NO
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
-# tags are set to YES then doxygen will generate a graph for each documented
-# file showing the direct and indirect include dependencies of the file with
-# other documented files.
-
-INCLUDE_GRAPH          = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
-# documented header file showing the documented files that directly or
-# indirectly include this file.
-
-INCLUDED_BY_GRAPH      = YES
-
-# If the CALL_GRAPH and HAVE_DOT options are set to YES then
-# doxygen will generate a call dependency graph for every global function
-# or class method. Note that enabling this option will significantly increase
-# the time of a run. So in most cases it will be better to enable call graphs
-# for selected functions only using the \callgraph command.
-
-CALL_GRAPH             = NO
-
-# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
-# doxygen will generate a caller dependency graph for every global function
-# or class method. Note that enabling this option will significantly increase
-# the time of a run. So in most cases it will be better to enable caller
-# graphs for selected functions only using the \callergraph command.
-
-CALLER_GRAPH           = NO
-
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
-# will generate a graphical hierarchy of all classes instead of a textual one.
-
-GRAPHICAL_HIERARCHY    = YES
-
-# If the DIRECTORY_GRAPH and HAVE_DOT tags are set to YES
-# then doxygen will show the dependencies a directory has on other directories
-# in a graphical way. The dependency relations are determined by the #include
-# relations between the files in the directories.
-
-DIRECTORY_GRAPH        = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot. Possible values are svg, png, jpg, or gif.
-# If left blank png will be used. If you choose svg you need to set
-# HTML_FILE_EXTENSION to xhtml in order to make the SVG files
-# visible in IE 9+ (other browsers do not have this requirement).
-
-DOT_IMAGE_FORMAT       = png
-
-# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
-# enable generation of interactive SVG images that allow zooming and panning.
-# Note that this requires a modern browser other than Internet Explorer.
-# Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you
-# need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files
-# visible. Older versions of IE do not have SVG support.
-
-INTERACTIVE_SVG        = NO
-
-# The tag DOT_PATH can be used to specify the path where the dot tool can be
-# found. If left blank, it is assumed the dot tool can be found in the path.
-
-DOT_PATH               =
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the
-# \dotfile command).
-
-DOTFILE_DIRS           =
-
-# The MSCFILE_DIRS tag can be used to specify one or more directories that
-# contain msc files that are included in the documentation (see the
-# \mscfile command).
-
-MSCFILE_DIRS           =
-
-# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
-# nodes that will be shown in the graph. If the number of nodes in a graph
-# becomes larger than this value, doxygen will truncate the graph, which is
-# visualized by representing a node as a red box. Note that doxygen if the
-# number of direct children of the root node in a graph is already larger than
-# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
-# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
-
-DOT_GRAPH_MAX_NODES    = 50
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
-# graphs generated by dot. A depth value of 3 means that only nodes reachable
-# from the root by following a path via at most 3 edges will be shown. Nodes
-# that lay further from the root node will be omitted. Note that setting this
-# option to 1 or 2 may greatly reduce the computation time needed for large
-# code bases. Also note that the size of a graph can be further restricted by
-# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
-
-MAX_DOT_GRAPH_DEPTH    = 0
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
-# background. This is disabled by default, because dot on Windows does not
-# seem to support this out of the box. Warning: Depending on the platform used,
-# enabling this option may lead to badly anti-aliased labels on the edges of
-# a graph (i.e. they become hard to read).
-
-DOT_TRANSPARENT        = NO
-
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
-# files in one run (i.e. multiple -o and -T options on the command line). This
-# makes dot run faster, but since only newer versions of dot (>1.8.10)
-# support this, this feature is disabled by default.
-
-DOT_MULTI_TARGETS      = NO
-
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
-# generate a legend page explaining the meaning of the various boxes and
-# arrows in the dot generated graphs.
-
-GENERATE_LEGEND        = YES
-
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
-# remove the intermediate dot files that are used to generate
-# the various graphs.
-
-DOT_CLEANUP            = YES
diff --git a/doc/Doxyfile.in~ b/doc/Doxyfile.in~
deleted file mode 100644
index 137facb..0000000
--- a/doc/Doxyfile.in~
+++ /dev/null
@@ -1,2303 +0,0 @@
-# Doxyfile 1.8.6
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project.
-#
-# All text after a double hash (##) is considered a comment and is placed in
-# front of the TAG it is preceding.
-#
-# All text after a single hash (#) is considered a comment and will be ignored.
-# The format is:
-# TAG = value [value, ...]
-# For lists, items can also be appended using:
-# TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (\" \").
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# This tag specifies the encoding used for all characters in the config file
-# that follow. The default is UTF-8 which is also the encoding used for all text
-# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
-# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
-# for the list of possible encodings.
-# The default value is: UTF-8.
-
-DOXYFILE_ENCODING      = UTF-8
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
-# double-quotes, unless you are using Doxywizard) that should identify the
-# project for which the documentation is generated. This name is used in the
-# title of most generated pages and in a few other places.
-# The default value is: My Project.
-
-PROJECT_NAME           = "My Project"
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
-# could be handy for archiving the generated documentation or if some version
-# control system is used.
-
-PROJECT_NUMBER         =
-
-# Using the PROJECT_BRIEF tag one can provide an optional one line description
-# for a project that appears at the top of each page and should give viewer a
-# quick idea about the purpose of the project. Keep the description short.
-
-PROJECT_BRIEF          =
-
-# With the PROJECT_LOGO tag one can specify an logo or icon that is included in
-# the documentation. The maximum height of the logo should not exceed 55 pixels
-# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo
-# to the output directory.
-
-PROJECT_LOGO           =
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
-# into which the generated documentation will be written. If a relative path is
-# entered, it will be relative to the location where doxygen was started. If
-# left blank the current directory will be used.
-
-OUTPUT_DIRECTORY       =
-
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub-
-# directories (in 2 levels) under the output directory of each output format and
-# will distribute the generated files over these directories. Enabling this
-# option can be useful when feeding doxygen a huge amount of source files, where
-# putting all generated files in the same directory would otherwise causes
-# performance problems for the file system.
-# The default value is: NO.
-
-CREATE_SUBDIRS         = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,
-# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),
-# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,
-# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),
-# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,
-# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,
-# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
-# Ukrainian and Vietnamese.
-# The default value is: English.
-
-OUTPUT_LANGUAGE        = English
-
-# If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member
-# descriptions after the members that are listed in the file and class
-# documentation (similar to Javadoc). Set to NO to disable this.
-# The default value is: YES.
-
-BRIEF_MEMBER_DESC      = YES
-
-# If the REPEAT_BRIEF tag is set to YES doxygen will prepend the brief
-# description of a member or function before the detailed description
-#
-# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
-# The default value is: YES.
-
-REPEAT_BRIEF           = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator that is
-# used to form the text in various listings. Each string in this list, if found
-# as the leading text of the brief description, will be stripped from the text
-# and the result, after processing the whole list, is used as the annotated
-# text. Otherwise, the brief description is used as-is. If left blank, the
-# following values are used ($name is automatically replaced with the name of
-# the entity):The $name class, The $name widget, The $name file, is, provides,
-# specifies, contains, represents, a, an and the.
-
-ABBREVIATE_BRIEF       =
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# doxygen will generate a detailed section even if there is only a brief
-# description.
-# The default value is: NO.
-
-ALWAYS_DETAILED_SEC    = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
-# inherited members of a class in the documentation of that class as if those
-# members were ordinary class members. Constructors, destructors and assignment
-# operators of the base classes will not be shown.
-# The default value is: NO.
-
-INLINE_INHERITED_MEMB  = NO
-
-# If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path
-# before files name in the file list and in the header files. If set to NO the
-# shortest path that makes the file name unique will be used
-# The default value is: YES.
-
-FULL_PATH_NAMES        = YES
-
-# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
-# Stripping is only done if one of the specified strings matches the left-hand
-# part of the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the path to
-# strip.
-#
-# Note that you can specify absolute paths here, but also relative paths, which
-# will be relative from the directory where doxygen is started.
-# This tag requires that the tag FULL_PATH_NAMES is set to YES.
-
-STRIP_FROM_PATH        =
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
-# path mentioned in the documentation of a class, which tells the reader which
-# header file to include in order to use a class. If left blank only the name of
-# the header file containing the class definition is used. Otherwise one should
-# specify the list of include paths that are normally passed to the compiler
-# using the -I flag.
-
-STRIP_FROM_INC_PATH    =
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
-# less readable) file names. This can be useful is your file systems doesn't
-# support long names like on DOS, Mac, or CD-ROM.
-# The default value is: NO.
-
-SHORT_NAMES            = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
-# first line (until the first dot) of a Javadoc-style comment as the brief
-# description. If set to NO, the Javadoc-style will behave just like regular Qt-
-# style comments (thus requiring an explicit @brief command for a brief
-# description.)
-# The default value is: NO.
-
-JAVADOC_AUTOBRIEF      = NO
-
-# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
-# line (until the first dot) of a Qt-style comment as the brief description. If
-# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
-# requiring an explicit \brief command for a brief description.)
-# The default value is: NO.
-
-QT_AUTOBRIEF           = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
-# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
-# a brief description. This used to be the default behavior. The new default is
-# to treat a multi-line C++ comment block as a detailed description. Set this
-# tag to YES if you prefer the old behavior instead.
-#
-# Note that setting this tag to YES also means that rational rose comments are
-# not recognized any more.
-# The default value is: NO.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
-# documentation from any documented member that it re-implements.
-# The default value is: YES.
-
-INHERIT_DOCS           = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a
-# new page for each member. If set to NO, the documentation of a member will be
-# part of the file/class/namespace that contains it.
-# The default value is: NO.
-
-SEPARATE_MEMBER_PAGES  = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
-# uses this value to replace tabs by spaces in code fragments.
-# Minimum value: 1, maximum value: 16, default value: 4.
-
-TAB_SIZE               = 4
-
-# This tag can be used to specify a number of aliases that act as commands in
-# the documentation. An alias has the form:
-# name=value
-# For example adding
-# "sideeffect=@par Side Effects:\n"
-# will allow you to put the command \sideeffect (or @sideeffect) in the
-# documentation, which will result in a user-defined paragraph with heading
-# "Side Effects:". You can put \n's in the value part of an alias to insert
-# newlines.
-
-ALIASES                =
-
-# This tag can be used to specify a number of word-keyword mappings (TCL only).
-# A mapping has the form "name=value". For example adding "class=itcl::class"
-# will allow you to use the command class in the itcl::class meaning.
-
-TCL_SUBST              =
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
-# only. Doxygen will then generate output that is more tailored for C. For
-# instance, some of the names that are used will be different. The list of all
-# members will be omitted, etc.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_FOR_C  = NO
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
-# Python sources only. Doxygen will then generate output that is more tailored
-# for that language. For instance, namespaces will be presented as packages,
-# qualified scopes will look different, etc.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_JAVA   = NO
-
-# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
-# sources. Doxygen will then generate output that is tailored for Fortran.
-# The default value is: NO.
-
-OPTIMIZE_FOR_FORTRAN   = NO
-
-# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
-# sources. Doxygen will then generate output that is tailored for VHDL.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_VHDL   = NO
-
-# Doxygen selects the parser to use depending on the extension of the files it
-# parses. With this tag you can assign which parser to use for a given
-# extension. Doxygen has a built-in mapping, but you can override or extend it
-# using this tag. The format is ext=language, where ext is a file extension, and
-# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
-# C#, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL. For instance to make
-# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
-# (default is Fortran), use: inc=Fortran f=C.
-#
-# Note For files without extension you can use no_extension as a placeholder.
-#
-# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
-# the files are not read by doxygen.
-
-EXTENSION_MAPPING      =
-
-# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
-# according to the Markdown format, which allows for more readable
-# documentation. See http://daringfireball.net/projects/markdown/ for details.
-# The output of markdown processing is further processed by doxygen, so you can
-# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
-# case of backward compatibilities issues.
-# The default value is: YES.
-
-MARKDOWN_SUPPORT       = YES
-
-# When enabled doxygen tries to link words that correspond to documented
-# classes, or namespaces to their corresponding documentation. Such a link can
-# be prevented in individual cases by by putting a % sign in front of the word
-# or globally by setting AUTOLINK_SUPPORT to NO.
-# The default value is: YES.
-
-AUTOLINK_SUPPORT       = YES
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
-# to include (a tag file for) the STL sources as input, then you should set this
-# tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string);
-# versus func(std::string) {}). This also make the inheritance and collaboration
-# diagrams that involve STL classes more complete and accurate.
-# The default value is: NO.
-
-BUILTIN_STL_SUPPORT    = NO
-
-# If you use Microsoft's C++/CLI language, you should set this option to YES to
-# enable parsing support.
-# The default value is: NO.
-
-CPP_CLI_SUPPORT        = NO
-
-# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
-# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
-# will parse them like normal C++ but will assume all classes use public instead
-# of private inheritance when no explicit protection keyword is present.
-# The default value is: NO.
-
-SIP_SUPPORT            = NO
-
-# For Microsoft's IDL there are propget and propput attributes to indicate
-# getter and setter methods for a property. Setting this option to YES will make
-# doxygen to replace the get and set methods by a property in the documentation.
-# This will only work if the methods are indeed getting or setting a simple
-# type. If this is not the case, or you want to show the methods anyway, you
-# should set this option to NO.
-# The default value is: YES.
-
-IDL_PROPERTY_SUPPORT   = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES, then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-# The default value is: NO.
-
-DISTRIBUTE_GROUP_DOC   = NO
-
-# Set the SUBGROUPING tag to YES to allow class member groups of the same type
-# (for instance a group of public functions) to be put as a subgroup of that
-# type (e.g. under the Public Functions section). Set it to NO to prevent
-# subgrouping. Alternatively, this can be done per class using the
-# \nosubgrouping command.
-# The default value is: YES.
-
-SUBGROUPING            = YES
-
-# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
-# are shown inside the group in which they are included (e.g. using \ingroup)
-# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
-# and RTF).
-#
-# Note that this feature does not work in combination with
-# SEPARATE_MEMBER_PAGES.
-# The default value is: NO.
-
-INLINE_GROUPED_CLASSES = NO
-
-# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
-# with only public data fields or simple typedef fields will be shown inline in
-# the documentation of the scope in which they are defined (i.e. file,
-# namespace, or group documentation), provided this scope is documented. If set
-# to NO, structs, classes, and unions are shown on a separate page (for HTML and
-# Man pages) or section (for LaTeX and RTF).
-# The default value is: NO.
-
-INLINE_SIMPLE_STRUCTS  = NO
-
-# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
-# enum is documented as struct, union, or enum with the name of the typedef. So
-# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
-# with name TypeT. When disabled the typedef will appear as a member of a file,
-# namespace, or class. And the struct will be named TypeS. This can typically be
-# useful for C code in case the coding convention dictates that all compound
-# types are typedef'ed and only the typedef is referenced, never the tag name.
-# The default value is: NO.
-
-TYPEDEF_HIDES_STRUCT   = NO
-
-# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
-# cache is used to resolve symbols given their name and scope. Since this can be
-# an expensive process and often the same symbol appears multiple times in the
-# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
-# doxygen will become slower. If the cache is too large, memory is wasted. The
-# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
-# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
-# symbols. At the end of a run doxygen will report the cache usage and suggest
-# the optimal cache size from a speed point of view.
-# Minimum value: 0, maximum value: 9, default value: 0.
-
-LOOKUP_CACHE_SIZE      = 0
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
-# documentation are documented, even if no documentation was available. Private
-# class members and static file members will be hidden unless the
-# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
-# Note: This will also disable the warnings about undocumented members that are
-# normally produced when WARNINGS is set to YES.
-# The default value is: NO.
-
-EXTRACT_ALL            = NO
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class will
-# be included in the documentation.
-# The default value is: NO.
-
-EXTRACT_PRIVATE        = NO
-
-# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
-# scope will be included in the documentation.
-# The default value is: NO.
-
-EXTRACT_PACKAGE        = NO
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file will be
-# included in the documentation.
-# The default value is: NO.
-
-EXTRACT_STATIC         = NO
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined
-# locally in source files will be included in the documentation. If set to NO
-# only classes defined in header files are included. Does not have any effect
-# for Java sources.
-# The default value is: YES.
-
-EXTRACT_LOCAL_CLASSES  = YES
-
-# This flag is only useful for Objective-C code. When set to YES local methods,
-# which are defined in the implementation section but not in the interface are
-# included in the documentation. If set to NO only methods in the interface are
-# included.
-# The default value is: NO.
-
-EXTRACT_LOCAL_METHODS  = NO
-
-# If this flag is set to YES, the members of anonymous namespaces will be
-# extracted and appear in the documentation as a namespace called
-# 'anonymous_namespace{file}', where file will be replaced with the base name of
-# the file that contains the anonymous namespace. By default anonymous namespace
-# are hidden.
-# The default value is: NO.
-
-EXTRACT_ANON_NSPACES   = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
-# undocumented members inside documented classes or files. If set to NO these
-# members will be included in the various overviews, but no documentation
-# section is generated. This option has no effect if EXTRACT_ALL is enabled.
-# The default value is: NO.
-
-HIDE_UNDOC_MEMBERS     = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy. If set
-# to NO these classes will be included in the various overviews. This option has
-# no effect if EXTRACT_ALL is enabled.
-# The default value is: NO.
-
-HIDE_UNDOC_CLASSES     = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
-# (class|struct|union) declarations. If set to NO these declarations will be
-# included in the documentation.
-# The default value is: NO.
-
-HIDE_FRIEND_COMPOUNDS  = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
-# documentation blocks found inside the body of a function. If set to NO these
-# blocks will be appended to the function's detailed documentation block.
-# The default value is: NO.
-
-HIDE_IN_BODY_DOCS      = NO
-
-# The INTERNAL_DOCS tag determines if documentation that is typed after a
-# \internal command is included. If the tag is set to NO then the documentation
-# will be excluded. Set it to YES to include the internal documentation.
-# The default value is: NO.
-
-INTERNAL_DOCS          = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
-# names in lower-case letters. If set to YES upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# and Mac users are advised to set this option to NO.
-# The default value is: system dependent.
-
-CASE_SENSE_NAMES       = YES
-
-# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
-# their full class and namespace scopes in the documentation. If set to YES the
-# scope will be hidden.
-# The default value is: NO.
-
-HIDE_SCOPE_NAMES       = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
-# the files that are included by a file in the documentation of that file.
-# The default value is: YES.
-
-SHOW_INCLUDE_FILES     = YES
-
-# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
-# grouped member an include statement to the documentation, telling the reader
-# which file to include in order to use the member.
-# The default value is: NO.
-
-SHOW_GROUPED_MEMB_INC  = NO
-
-# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
-# files with double quotes in the documentation rather than with sharp brackets.
-# The default value is: NO.
-
-FORCE_LOCAL_INCLUDES   = NO
-
-# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
-# documentation for inline members.
-# The default value is: YES.
-
-INLINE_INFO            = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
-# (detailed) documentation of file and class members alphabetically by member
-# name. If set to NO the members will appear in declaration order.
-# The default value is: YES.
-
-SORT_MEMBER_DOCS       = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
-# descriptions of file, namespace and class members alphabetically by member
-# name. If set to NO the members will appear in declaration order. Note that
-# this will also influence the order of the classes in the class list.
-# The default value is: NO.
-
-SORT_BRIEF_DOCS        = NO
-
-# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
-# (brief and detailed) documentation of class members so that constructors and
-# destructors are listed first. If set to NO the constructors will appear in the
-# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
-# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
-# member documentation.
-# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
-# detailed member documentation.
-# The default value is: NO.
-
-SORT_MEMBERS_CTORS_1ST = NO
-
-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
-# of group names into alphabetical order. If set to NO the group names will
-# appear in their defined order.
-# The default value is: NO.
-
-SORT_GROUP_NAMES       = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
-# fully-qualified names, including namespaces. If set to NO, the class list will
-# be sorted only by class name, not including the namespace part.
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the alphabetical
-# list.
-# The default value is: NO.
-
-SORT_BY_SCOPE_NAME     = NO
-
-# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
-# type resolution of all parameters of a function it will reject a match between
-# the prototype and the implementation of a member function even if there is
-# only one candidate or it is obvious which candidate to choose by doing a
-# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
-# accept a match between prototype and implementation in such cases.
-# The default value is: NO.
-
-STRICT_PROTO_MATCHING  = NO
-
-# The GENERATE_TODOLIST tag can be used to enable ( YES) or disable ( NO) the
-# todo list. This list is created by putting \todo commands in the
-# documentation.
-# The default value is: YES.
-
-GENERATE_TODOLIST      = YES
-
-# The GENERATE_TESTLIST tag can be used to enable ( YES) or disable ( NO) the
-# test list. This list is created by putting \test commands in the
-# documentation.
-# The default value is: YES.
-
-GENERATE_TESTLIST      = YES
-
-# The GENERATE_BUGLIST tag can be used to enable ( YES) or disable ( NO) the bug
-# list. This list is created by putting \bug commands in the documentation.
-# The default value is: YES.
-
-GENERATE_BUGLIST       = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable ( YES) or disable ( NO)
-# the deprecated list. This list is created by putting \deprecated commands in
-# the documentation.
-# The default value is: YES.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional documentation
-# sections, marked by \if <section_label> ... \endif and \cond <section_label>
-# ... \endcond blocks.
-
-ENABLED_SECTIONS       =
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
-# initial value of a variable or macro / define can have for it to appear in the
-# documentation. If the initializer consists of more lines than specified here
-# it will be hidden. Use a value of 0 to hide initializers completely. The
-# appearance of the value of individual variables and macros / defines can be
-# controlled using \showinitializer or \hideinitializer command in the
-# documentation regardless of this setting.
-# Minimum value: 0, maximum value: 10000, default value: 30.
-
-MAX_INITIALIZER_LINES  = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
-# the bottom of the documentation of classes and structs. If set to YES the list
-# will mention the files that were used to generate the documentation.
-# The default value is: YES.
-
-SHOW_USED_FILES        = YES
-
-# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
-# will remove the Files entry from the Quick Index and from the Folder Tree View
-# (if specified).
-# The default value is: YES.
-
-SHOW_FILES             = YES
-
-# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
-# page. This will remove the Namespaces entry from the Quick Index and from the
-# Folder Tree View (if specified).
-# The default value is: YES.
-
-SHOW_NAMESPACES        = YES
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that
-# doxygen should invoke to get the current version for each file (typically from
-# the version control system). Doxygen will invoke the program by executing (via
-# popen()) the command command input-file, where command is the value of the
-# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
-# by doxygen. Whatever the program writes to standard output is used as the file
-# version. For an example see the documentation.
-
-FILE_VERSION_FILTER    =
-
-# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
-# by doxygen. The layout file controls the global structure of the generated
-# output files in an output format independent way. To create the layout file
-# that represents doxygen's defaults, run doxygen with the -l option. You can
-# optionally specify a file name after the option, if omitted DoxygenLayout.xml
-# will be used as the name of the layout file.
-#
-# Note that if you run doxygen from a directory containing a file called
-# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
-# tag is left empty.
-
-LAYOUT_FILE            =
-
-# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
-# the reference definitions. This must be a list of .bib files. The .bib
-# extension is automatically appended if omitted. This requires the bibtex tool
-# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
-# For LaTeX the style of the bibliography can be controlled using
-# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
-# search path. Do not use file names with spaces, bibtex cannot handle them. See
-# also \cite for info how to create references.
-
-CITE_BIB_FILES         =
-
-#---------------------------------------------------------------------------
-# Configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated to
-# standard output by doxygen. If QUIET is set to YES this implies that the
-# messages are off.
-# The default value is: NO.
-
-QUIET                  = NO
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES
-# this implies that the warnings are on.
-#
-# Tip: Turn warnings on while writing the documentation.
-# The default value is: YES.
-
-WARNINGS               = YES
-
-# If the WARN_IF_UNDOCUMENTED tag is set to YES, then doxygen will generate
-# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
-# will automatically be disabled.
-# The default value is: YES.
-
-WARN_IF_UNDOCUMENTED   = YES
-
-# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some parameters
-# in a documented function, or documenting parameters that don't exist or using
-# markup commands wrongly.
-# The default value is: YES.
-
-WARN_IF_DOC_ERROR      = YES
-
-# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
-# are documented, but have no documentation for their parameters or return
-# value. If set to NO doxygen will only warn about wrong or incomplete parameter
-# documentation, but not about the absence of documentation.
-# The default value is: NO.
-
-WARN_NO_PARAMDOC       = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that doxygen
-# can produce. The string should contain the $file, $line, and $text tags, which
-# will be replaced by the file and line number from which the warning originated
-# and the warning text. Optionally the format may contain $version, which will
-# be replaced by the version of the file (if it could be obtained via
-# FILE_VERSION_FILTER)
-# The default value is: $file:$line: $text.
-
-WARN_FORMAT            = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning and error
-# messages should be written. If left blank the output is written to standard
-# error (stderr).
-
-WARN_LOGFILE           =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag is used to specify the files and/or directories that contain
-# documented source files. You may enter file names like myfile.cpp or
-# directories like /usr/src/myproject. Separate the files or directories with
-# spaces.
-# Note: If this tag is empty the current directory is searched.
-
-INPUT                  =
-
-# This tag can be used to specify the character encoding of the source files
-# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
-# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
-# documentation (see: http://www.gnu.org/software/libiconv) for the list of
-# possible encodings.
-# The default value is: UTF-8.
-
-INPUT_ENCODING         = UTF-8
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
-# *.h) to filter out the source-files in the directories. If left blank the
-# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii,
-# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp,
-# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown,
-# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
-# *.qsf, *.as and *.js.
-
-FILE_PATTERNS          =
-
-# The RECURSIVE tag can be used to specify whether or not subdirectories should
-# be searched for input files as well.
-# The default value is: NO.
-
-RECURSIVE              = NO
-
-# The EXCLUDE tag can be used to specify files and/or directories that should be
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-#
-# Note that relative paths are relative to the directory from which doxygen is
-# run.
-
-EXCLUDE                =
-
-# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
-# directories that are symbolic links (a Unix file system feature) are excluded
-# from the input.
-# The default value is: NO.
-
-EXCLUDE_SYMLINKS       = NO
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories.
-#
-# Note that the wildcards are matched against the file with absolute path, so to
-# exclude all test directories for example use the pattern */test/*
-
-EXCLUDE_PATTERNS       =
-
-# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
-# (namespaces, classes, functions, etc.) that should be excluded from the
-# output. The symbol name can be a fully qualified name, a word, or if the
-# wildcard * is used, a substring. Examples: ANamespace, AClass,
-# AClass::ANamespace, ANamespace::*Test
-#
-# Note that the wildcards are matched against the file with absolute path, so to
-# exclude all test directories use the pattern */test/*
-
-EXCLUDE_SYMBOLS        =
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or directories
-# that contain example code fragments that are included (see the \include
-# command).
-
-EXAMPLE_PATH           =
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
-# *.h) to filter out the source-files in the directories. If left blank all
-# files are included.
-
-EXAMPLE_PATTERNS       =
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude commands
-# irrespective of the value of the RECURSIVE tag.
-# The default value is: NO.
-
-EXAMPLE_RECURSIVE      = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or directories
-# that contain images that are to be included in the documentation (see the
-# \image command).
-
-IMAGE_PATH             =
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command:
-#
-# <filter> <input-file>
-#
-# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the
-# name of an input file. Doxygen will then use the output that the filter
-# program writes to standard output. If FILTER_PATTERNS is specified, this tag
-# will be ignored.
-#
-# Note that the filter must not add or remove lines; it is applied before the
-# code is scanned, but not when the output code is generated. If lines are added
-# or removed, the anchors will not be placed correctly.
-
-INPUT_FILTER           =
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis. Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match. The filters are a list of the form: pattern=filter
-# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
-# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
-# patterns match the file name, INPUT_FILTER is applied.
-
-FILTER_PATTERNS        =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER ) will also be used to filter the input files that are used for
-# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
-# The default value is: NO.
-
-FILTER_SOURCE_FILES    = NO
-
-# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
-# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
-# it is also possible to disable source filtering for a specific pattern using
-# *.ext= (so without naming a filter).
-# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
-
-FILTER_SOURCE_PATTERNS =
-
-# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
-# is part of the input, its contents will be placed on the main page
-# (index.html). This can be useful if you have a project on for instance GitHub
-# and want to reuse the introduction page also for the doxygen output.
-
-USE_MDFILE_AS_MAINPAGE =
-
-#---------------------------------------------------------------------------
-# Configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
-# generated. Documented entities will be cross-referenced with these sources.
-#
-# Note: To get rid of all source code in the generated output, make sure that
-# also VERBATIM_HEADERS is set to NO.
-# The default value is: NO.
-
-SOURCE_BROWSER         = NO
-
-# Setting the INLINE_SOURCES tag to YES will include the body of functions,
-# classes and enums directly into the documentation.
-# The default value is: NO.
-
-INLINE_SOURCES         = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
-# special comment blocks from generated source code fragments. Normal C, C++ and
-# Fortran comments will always remain visible.
-# The default value is: YES.
-
-STRIP_CODE_COMMENTS    = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
-# function all documented functions referencing it will be listed.
-# The default value is: NO.
-
-REFERENCED_BY_RELATION = NO
-
-# If the REFERENCES_RELATION tag is set to YES then for each documented function
-# all documented entities called/used by that function will be listed.
-# The default value is: NO.
-
-REFERENCES_RELATION    = NO
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
-# to YES, then the hyperlinks from functions in REFERENCES_RELATION and
-# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
-# link to the documentation.
-# The default value is: YES.
-
-REFERENCES_LINK_SOURCE = YES
-
-# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
-# source code will show a tooltip with additional information such as prototype,
-# brief description and links to the definition and documentation. Since this
-# will make the HTML file larger and loading of large files a bit slower, you
-# can opt to disable this feature.
-# The default value is: YES.
-# This tag requires that the tag SOURCE_BROWSER is set to YES.
-
-SOURCE_TOOLTIPS        = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code will
-# point to the HTML generated by the htags(1) tool instead of doxygen built-in
-# source browser. The htags tool is part of GNU's global source tagging system
-# (see http://www.gnu.org/software/global/global.html). You will need version
-# 4.8.6 or higher.
-#
-# To use it do the following:
-# - Install the latest version of global
-# - Enable SOURCE_BROWSER and USE_HTAGS in the config file
-# - Make sure the INPUT points to the root of the source tree
-# - Run doxygen as normal
-#
-# Doxygen will invoke htags (and that will in turn invoke gtags), so these
-# tools must be available from the command line (i.e. in the search path).
-#
-# The result: instead of the source browser generated by doxygen, the links to
-# source code will now point to the output of htags.
-# The default value is: NO.
-# This tag requires that the tag SOURCE_BROWSER is set to YES.
-
-USE_HTAGS              = NO
-
-# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
-# verbatim copy of the header file for each class for which an include is
-# specified. Set to NO to disable this.
-# See also: Section \class.
-# The default value is: YES.
-
-VERBATIM_HEADERS       = YES
-
-#---------------------------------------------------------------------------
-# Configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
-# compounds will be generated. Enable this if the project contains a lot of
-# classes, structs, unions or interfaces.
-# The default value is: YES.
-
-ALPHABETICAL_INDEX     = YES
-
-# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
-# which the alphabetical index list will be split.
-# Minimum value: 1, maximum value: 20, default value: 5.
-# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
-
-COLS_IN_ALPHA_INDEX    = 5
-
-# In case all classes in a project start with a common prefix, all classes will
-# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
-# can be used to specify a prefix (or a list of prefixes) that should be ignored
-# while generating the index headers.
-# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
-
-IGNORE_PREFIX          =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES doxygen will generate HTML output
-# The default value is: YES.
-
-GENERATE_HTML          = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: html.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_OUTPUT            = html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
-# generated HTML page (for example: .htm, .php, .asp).
-# The default value is: .html.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_FILE_EXTENSION    = .html
-
-# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
-# each generated HTML page. If the tag is left blank doxygen will generate a
-# standard header.
-#
-# To get valid HTML the header file that includes any scripts and style sheets
-# that doxygen needs, which is dependent on the configuration options used (e.g.
-# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
-# default header using
-# doxygen -w html new_header.html new_footer.html new_stylesheet.css
-# YourConfigFile
-# and then modify the file new_header.html. See also section "Doxygen usage"
-# for information on how to generate the default header that doxygen normally
-# uses.
-# Note: The header is subject to change so you typically have to regenerate the
-# default header when upgrading to a newer version of doxygen. For a description
-# of the possible markers and block names see the documentation.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_HEADER            =
-
-# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
-# generated HTML page. If the tag is left blank doxygen will generate a standard
-# footer. See HTML_HEADER for more information on how to generate a default
-# footer and what special commands can be used inside the footer. See also
-# section "Doxygen usage" for information on how to generate the default footer
-# that doxygen normally uses.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_FOOTER            =
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
-# sheet that is used by each HTML page. It can be used to fine-tune the look of
-# the HTML output. If left blank doxygen will generate a default style sheet.
-# See also section "Doxygen usage" for information on how to generate the style
-# sheet that doxygen normally uses.
-# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
-# it is more robust and this tag (HTML_STYLESHEET) will in the future become
-# obsolete.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_STYLESHEET        =
-
-# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional user-
-# defined cascading style sheet that is included after the standard style sheets
-# created by doxygen. Using this option one can overrule certain style aspects.
-# This is preferred over using HTML_STYLESHEET since it does not replace the
-# standard style sheet and is therefor more robust against future updates.
-# Doxygen will copy the style sheet file to the output directory. For an example
-# see the documentation.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_EXTRA_STYLESHEET  =
-
-# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
-# other source files which should be copied to the HTML output directory. Note
-# that these files will be copied to the base HTML output directory. Use the
-# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
-# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
-# files will be copied as-is; there are no commands or markers available.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_EXTRA_FILES       =
-
-# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
-# will adjust the colors in the stylesheet and background images according to
-# this color. Hue is specified as an angle on a colorwheel, see
-# http://en.wikipedia.org/wiki/Hue for more information. For instance the value
-# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
-# purple, and 360 is red again.
-# Minimum value: 0, maximum value: 359, default value: 220.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_HUE    = 220
-
-# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
-# in the HTML output. For a value of 0 the output will use grayscales only. A
-# value of 255 will produce the most vivid colors.
-# Minimum value: 0, maximum value: 255, default value: 100.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_SAT    = 100
-
-# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
-# luminance component of the colors in the HTML output. Values below 100
-# gradually make the output lighter, whereas values above 100 make the output
-# darker. The value divided by 100 is the actual gamma applied, so 80 represents
-# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
-# change the gamma.
-# Minimum value: 40, maximum value: 240, default value: 80.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_GAMMA  = 80
-
-# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
-# page will contain the date and time when the page was generated. Setting this
-# to NO can help when comparing the output of multiple runs.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_TIMESTAMP         = YES
-
-# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
-# documentation will contain sections that can be hidden and shown after the
-# page has loaded.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_DYNAMIC_SECTIONS  = NO
-
-# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
-# shown in the various tree structured indices initially; the user can expand
-# and collapse entries dynamically later on. Doxygen will expand the tree to
-# such a level that at most the specified number of entries are visible (unless
-# a fully collapsed tree already exceeds this amount). So setting the number of
-# entries 1 will produce a full collapsed tree by default. 0 is a special value
-# representing an infinite number of entries and will result in a full expanded
-# tree by default.
-# Minimum value: 0, maximum value: 9999, default value: 100.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_INDEX_NUM_ENTRIES = 100
-
-# If the GENERATE_DOCSET tag is set to YES, additional index files will be
-# generated that can be used as input for Apple's Xcode 3 integrated development
-# environment (see: http://developer.apple.com/tools/xcode/), introduced with
-# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
-# Makefile in the HTML output directory. Running make will produce the docset in
-# that directory and running make install will install the docset in
-# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
-# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
-# for more information.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_DOCSET        = NO
-
-# This tag determines the name of the docset feed. A documentation feed provides
-# an umbrella under which multiple documentation sets from a single provider
-# (such as a company or product suite) can be grouped.
-# The default value is: Doxygen generated docs.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_FEEDNAME        = "Doxygen generated docs"
-
-# This tag specifies a string that should uniquely identify the documentation
-# set bundle. This should be a reverse domain-name style string, e.g.
-# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_BUNDLE_ID       = org.doxygen.Project
-
-# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
-# the documentation publisher. This should be a reverse domain-name style
-# string, e.g. com.mycompany.MyDocSet.documentation.
-# The default value is: org.doxygen.Publisher.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_PUBLISHER_ID    = org.doxygen.Publisher
-
-# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
-# The default value is: Publisher.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_PUBLISHER_NAME  = Publisher
-
-# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
-# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
-# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
-# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
-# Windows.
-#
-# The HTML Help Workshop contains a compiler that can convert all HTML output
-# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
-# files are now used as the Windows 98 help format, and will replace the old
-# Windows help format (.hlp) on all Windows platforms in the future. Compressed
-# HTML files also contain an index, a table of contents, and you can search for
-# words in the documentation. The HTML workshop also contains a viewer for
-# compressed HTML files.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_HTMLHELP      = NO
-
-# The CHM_FILE tag can be used to specify the file name of the resulting .chm
-# file. You can add a path in front of the file if the result should not be
-# written to the html output directory.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-CHM_FILE               =
-
-# The HHC_LOCATION tag can be used to specify the location (absolute path
-# including file name) of the HTML help compiler ( hhc.exe). If non-empty
-# doxygen will try to run the HTML help compiler on the generated index.hhp.
-# The file has to be specified with full path.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-HHC_LOCATION           =
-
-# The GENERATE_CHI flag controls if a separate .chi index file is generated (
-# YES) or that it should be included in the master .chm file ( NO).
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-GENERATE_CHI           = NO
-
-# The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc)
-# and project file content.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-CHM_INDEX_ENCODING     =
-
-# The BINARY_TOC flag controls whether a binary table of contents is generated (
-# YES) or a normal table of contents ( NO) in the .chm file.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-BINARY_TOC             = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members to
-# the table of contents of the HTML help documentation and to the tree view.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-TOC_EXPAND             = NO
-
-# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
-# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
-# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
-# (.qch) of the generated HTML documentation.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_QHP           = NO
-
-# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
-# the file name of the resulting .qch file. The path specified is relative to
-# the HTML output folder.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QCH_FILE               =
-
-# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
-# Project output. For more information please see Qt Help Project / Namespace
-# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_NAMESPACE          = org.doxygen.Project
-
-# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
-# Help Project output. For more information please see Qt Help Project / Virtual
-# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-
-# folders).
-# The default value is: doc.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_VIRTUAL_FOLDER     = doc
-
-# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
-# filter to add. For more information please see Qt Help Project / Custom
-# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
-# filters).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_CUST_FILTER_NAME   =
-
-# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
-# custom filter to add. For more information please see Qt Help Project / Custom
-# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
-# filters).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_CUST_FILTER_ATTRS  =
-
-# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
-# project's filter section matches. Qt Help Project / Filter Attributes (see:
-# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_SECT_FILTER_ATTRS  =
-
-# The QHG_LOCATION tag can be used to specify the location of Qt's
-# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
-# generated .qhp file.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHG_LOCATION           =
-
-# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
-# generated, together with the HTML files, they form an Eclipse help plugin. To
-# install this plugin and make it available under the help contents menu in
-# Eclipse, the contents of the directory containing the HTML and XML files needs
-# to be copied into the plugins directory of eclipse. The name of the directory
-# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
-# After copying Eclipse needs to be restarted before the help appears.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_ECLIPSEHELP   = NO
-
-# A unique identifier for the Eclipse help plugin. When installing the plugin
-# the directory name containing the HTML and XML files should also have this
-# name. Each documentation set should have its own identifier.
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
-
-ECLIPSE_DOC_ID         = org.doxygen.Project
-
-# If you want full control over the layout of the generated HTML pages it might
-# be necessary to disable the index and replace it with your own. The
-# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
-# of each HTML page. A value of NO enables the index and the value YES disables
-# it. Since the tabs in the index contain the same information as the navigation
-# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-DISABLE_INDEX          = NO
-
-# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
-# structure should be generated to display hierarchical information. If the tag
-# value is set to YES, a side panel will be generated containing a tree-like
-# index structure (just like the one that is generated for HTML Help). For this
-# to work a browser that supports JavaScript, DHTML, CSS and frames is required
-# (i.e. any modern browser). Windows users are probably better off using the
-# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can
-# further fine-tune the look of the index. As an example, the default style
-# sheet generated by doxygen has an example that shows how to put an image at
-# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
-# the same information as the tab index, you could consider setting
-# DISABLE_INDEX to YES when enabling this option.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_TREEVIEW      = NO
-
-# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
-# doxygen will group on one line in the generated HTML documentation.
-#
-# Note that a value of 0 will completely suppress the enum values from appearing
-# in the overview section.
-# Minimum value: 0, maximum value: 20, default value: 4.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-ENUM_VALUES_PER_LINE   = 4
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
-# to set the initial width (in pixels) of the frame in which the tree is shown.
-# Minimum value: 0, maximum value: 1500, default value: 250.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-TREEVIEW_WIDTH         = 250
-
-# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to
-# external symbols imported via tag files in a separate window.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-EXT_LINKS_IN_WINDOW    = NO
-
-# Use this tag to change the font size of LaTeX formulas included as images in
-# the HTML documentation. When you change the font size after a successful
-# doxygen run you need to manually remove any form_*.png images from the HTML
-# output directory to force them to be regenerated.
-# Minimum value: 8, maximum value: 50, default value: 10.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-FORMULA_FONTSIZE       = 10
-
-# Use the FORMULA_TRANPARENT tag to determine whether or not the images
-# generated for formulas are transparent PNGs. Transparent PNGs are not
-# supported properly for IE 6.0, but are supported on all modern browsers.
-#
-# Note that when changing this option you need to delete any form_*.png files in
-# the HTML output directory before the changes have effect.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-FORMULA_TRANSPARENT    = YES
-
-# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
-# http://www.mathjax.org) which uses client side Javascript for the rendering
-# instead of using prerendered bitmaps. Use this if you do not have LaTeX
-# installed or if you want to formulas look prettier in the HTML output. When
-# enabled you may also need to install MathJax separately and configure the path
-# to it using the MATHJAX_RELPATH option.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-USE_MATHJAX            = NO
-
-# When MathJax is enabled you can set the default output format to be used for
-# the MathJax output. See the MathJax site (see:
-# http://docs.mathjax.org/en/latest/output.html) for more details.
-# Possible values are: HTML-CSS (which is slower, but has the best
-# compatibility), NativeMML (i.e. MathML) and SVG.
-# The default value is: HTML-CSS.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_FORMAT         = HTML-CSS
-
-# When MathJax is enabled you need to specify the location relative to the HTML
-# output directory using the MATHJAX_RELPATH option. The destination directory
-# should contain the MathJax.js script. For instance, if the mathjax directory
-# is located at the same level as the HTML output directory, then
-# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
-# Content Delivery Network so you can quickly see the result without installing
-# MathJax. However, it is strongly recommended to install a local copy of
-# MathJax from http://www.mathjax.org before deployment.
-# The default value is: http://cdn.mathjax.org/mathjax/latest.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_RELPATH        = http://cdn.mathjax.org/mathjax/latest
-
-# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
-# extension names that should be enabled during MathJax rendering. For example
-# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_EXTENSIONS     =
-
-# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
-# of code that will be used on startup of the MathJax code. See the MathJax site
-# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
-# example see the documentation.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_CODEFILE       =
-
-# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
-# the HTML output. The underlying search engine uses javascript and DHTML and
-# should work on any modern browser. Note that when using HTML help
-# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
-# there is already a search function so this one should typically be disabled.
-# For large projects the javascript based search engine can be slow, then
-# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
-# search using the keyboard; to jump to the search box use <access key> + S
-# (what the <access key> is depends on the OS and browser, but it is typically
-# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down
-# key> to jump into the search results window, the results can be navigated
-# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel
-# the search. The filter options can be selected when the cursor is inside the
-# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>
-# to select a filter and <Enter> or <escape> to activate or cancel the filter
-# option.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-SEARCHENGINE           = YES
-
-# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
-# implemented using a web server instead of a web client using Javascript. There
-# are two flavours of web server based searching depending on the
-# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for
-# searching and an index file used by the script. When EXTERNAL_SEARCH is
-# enabled the indexing and searching needs to be provided by external tools. See
-# the section "External Indexing and Searching" for details.
-# The default value is: NO.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SERVER_BASED_SEARCH    = NO
-
-# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
-# script for searching. Instead the search results are written to an XML file
-# which needs to be processed by an external indexer. Doxygen will invoke an
-# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
-# search results.
-#
-# Doxygen ships with an example indexer ( doxyindexer) and search engine
-# (doxysearch.cgi) which are based on the open source search engine library
-# Xapian (see: http://xapian.org/).
-#
-# See the section "External Indexing and Searching" for details.
-# The default value is: NO.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTERNAL_SEARCH        = NO
-
-# The SEARCHENGINE_URL should point to a search engine hosted by a web server
-# which will return the search results when EXTERNAL_SEARCH is enabled.
-#
-# Doxygen ships with an example indexer ( doxyindexer) and search engine
-# (doxysearch.cgi) which are based on the open source search engine library
-# Xapian (see: http://xapian.org/). See the section "External Indexing and
-# Searching" for details.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SEARCHENGINE_URL       =
-
-# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
-# search data is written to a file for indexing by an external tool. With the
-# SEARCHDATA_FILE tag the name of this file can be specified.
-# The default file is: searchdata.xml.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SEARCHDATA_FILE        = searchdata.xml
-
-# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
-# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
-# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
-# projects and redirect the results back to the right project.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTERNAL_SEARCH_ID     =
-
-# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
-# projects other than the one defined by this configuration file, but that are
-# all added to the same external search index. Each project needs to have a
-# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
-# to a relative location where the documentation can be found. The format is:
-# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTRA_SEARCH_MAPPINGS  =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES doxygen will generate LaTeX output.
-# The default value is: YES.
-
-GENERATE_LATEX         = YES
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: latex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_OUTPUT           = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked.
-#
-# Note that when enabling USE_PDFLATEX this option is only used for generating
-# bitmaps for formulas in the HTML output, but not in the Makefile that is
-# written to the output directory.
-# The default file is: latex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_CMD_NAME         = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
-# index for LaTeX.
-# The default file is: makeindex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-MAKEINDEX_CMD_NAME     = makeindex
-
-# If the COMPACT_LATEX tag is set to YES doxygen generates more compact LaTeX
-# documents. This may be useful for small projects and may help to save some
-# trees in general.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-COMPACT_LATEX          = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used by the
-# printer.
-# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
-# 14 inches) and executive (7.25 x 10.5 inches).
-# The default value is: a4.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-PAPER_TYPE             = a4
-
-# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
-# that should be included in the LaTeX output. To get the times font for
-# instance you can specify
-# EXTRA_PACKAGES=times
-# If left blank no extra packages will be included.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-EXTRA_PACKAGES         =
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
-# generated LaTeX document. The header should contain everything until the first
-# chapter. If it is left blank doxygen will generate a standard header. See
-# section "Doxygen usage" for information on how to let doxygen write the
-# default header to a separate file.
-#
-# Note: Only use a user-defined header if you know what you are doing! The
-# following commands have a special meaning inside the header: $title,
-# $datetime, $date, $doxygenversion, $projectname, $projectnumber. Doxygen will
-# replace them by respectively the title of the page, the current date and time,
-# only the current date, the version number of doxygen, the project name (see
-# PROJECT_NAME), or the project number (see PROJECT_NUMBER).
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_HEADER           =
-
-# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
-# generated LaTeX document. The footer should contain everything after the last
-# chapter. If it is left blank doxygen will generate a standard footer.
-#
-# Note: Only use a user-defined footer if you know what you are doing!
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_FOOTER           =
-
-# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
-# other source files which should be copied to the LATEX_OUTPUT output
-# directory. Note that the files will be copied as-is; there are no commands or
-# markers available.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_EXTRA_FILES      =
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
-# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
-# contain links (just like the HTML output) instead of page references. This
-# makes the output suitable for online browsing using a PDF viewer.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-PDF_HYPERLINKS         = YES
-
-# If the LATEX_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
-# the PDF file directly from the LaTeX files. Set this option to YES to get a
-# higher quality PDF documentation.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-USE_PDFLATEX           = YES
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
-# command to the generated LaTeX files. This will instruct LaTeX to keep running
-# if errors occur, instead of asking the user for help. This option is also used
-# when generating formulas in HTML.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_BATCHMODE        = NO
-
-# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
-# index chapters (such as File Index, Compound Index, etc.) in the output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_HIDE_INDICES     = NO
-
-# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source
-# code with syntax highlighting in the LaTeX output.
-#
-# Note that which sources are shown also depends on other settings such as
-# SOURCE_BROWSER.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_SOURCE_CODE      = NO
-
-# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
-# bibliography, e.g. plainnat, or ieeetr. See
-# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
-# The default value is: plain.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_BIB_STYLE        = plain
-
-#---------------------------------------------------------------------------
-# Configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES doxygen will generate RTF output. The
-# RTF output is optimized for Word 97 and may not look too pretty with other RTF
-# readers/editors.
-# The default value is: NO.
-
-GENERATE_RTF           = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: rtf.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_OUTPUT             = rtf
-
-# If the COMPACT_RTF tag is set to YES doxygen generates more compact RTF
-# documents. This may be useful for small projects and may help to save some
-# trees in general.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-COMPACT_RTF            = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will
-# contain hyperlink fields. The RTF file will contain links (just like the HTML
-# output) instead of page references. This makes the output suitable for online
-# browsing using Word or some other Word compatible readers that support those
-# fields.
-#
-# Note: WordPad (write) and others do not support links.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_HYPERLINKS         = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's config
-# file, i.e. a series of assignments. You only have to provide replacements,
-# missing definitions are set to their default value.
-#
-# See also section "Doxygen usage" for information on how to generate the
-# default style sheet that doxygen normally uses.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_STYLESHEET_FILE    =
-
-# Set optional variables used in the generation of an RTF document. Syntax is
-# similar to doxygen's config file. A template extensions file can be generated
-# using doxygen -e rtf extensionFile.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_EXTENSIONS_FILE    =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES doxygen will generate man pages for
-# classes and files.
-# The default value is: NO.
-
-GENERATE_MAN           = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it. A directory man3 will be created inside the directory specified by
-# MAN_OUTPUT.
-# The default directory is: man.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_OUTPUT             = man
-
-# The MAN_EXTENSION tag determines the extension that is added to the generated
-# man pages. In case the manual section does not start with a number, the number
-# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
-# optional.
-# The default value is: .3.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_EXTENSION          = .3
-
-# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
-# will generate one additional man file for each entity documented in the real
-# man page(s). These additional files only source the real man page, but without
-# them the man command would be unable to find the correct page.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_LINKS              = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES doxygen will generate an XML file that
-# captures the structure of the code including all documentation.
-# The default value is: NO.
-
-GENERATE_XML           = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: xml.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_OUTPUT             = xml
-
-# The XML_SCHEMA tag can be used to specify a XML schema, which can be used by a
-# validating XML parser to check the syntax of the XML files.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_SCHEMA             =
-
-# The XML_DTD tag can be used to specify a XML DTD, which can be used by a
-# validating XML parser to check the syntax of the XML files.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_DTD                =
-
-# If the XML_PROGRAMLISTING tag is set to YES doxygen will dump the program
-# listings (including syntax highlighting and cross-referencing information) to
-# the XML output. Note that enabling this will significantly increase the size
-# of the XML output.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_PROGRAMLISTING     = YES
-
-#---------------------------------------------------------------------------
-# Configuration options related to the DOCBOOK output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_DOCBOOK tag is set to YES doxygen will generate Docbook files
-# that can be used to generate PDF.
-# The default value is: NO.
-
-GENERATE_DOCBOOK       = NO
-
-# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
-# front of it.
-# The default directory is: docbook.
-# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
-
-DOCBOOK_OUTPUT         = docbook
-
-#---------------------------------------------------------------------------
-# Configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES doxygen will generate an AutoGen
-# Definitions (see http://autogen.sf.net) file that captures the structure of
-# the code including all documentation. Note that this feature is still
-# experimental and incomplete at the moment.
-# The default value is: NO.
-
-GENERATE_AUTOGEN_DEF   = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES doxygen will generate a Perl module
-# file that captures the structure of the code including all documentation.
-#
-# Note that this feature is still experimental and incomplete at the moment.
-# The default value is: NO.
-
-GENERATE_PERLMOD       = NO
-
-# If the PERLMOD_LATEX tag is set to YES doxygen will generate the necessary
-# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
-# output from the Perl module output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_LATEX          = NO
-
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be nicely
-# formatted so it can be parsed by a human reader. This is useful if you want to
-# understand what is going on. On the other hand, if this tag is set to NO the
-# size of the Perl module output will be much smaller and Perl will parse it
-# just the same.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_PRETTY         = YES
-
-# The names of the make variables in the generated doxyrules.make file are
-# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful
-# so different doxyrules.make files included by the same Makefile don't
-# overwrite each other's variables.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_MAKEVAR_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES doxygen will evaluate all
-# C-preprocessor directives found in the sources and include files.
-# The default value is: YES.
-
-ENABLE_PREPROCESSING   = YES
-
-# If the MACRO_EXPANSION tag is set to YES doxygen will expand all macro names
-# in the source code. If set to NO only conditional compilation will be
-# performed. Macro expansion can be done in a controlled way by setting
-# EXPAND_ONLY_PREDEF to YES.
-# The default value is: NO.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-MACRO_EXPANSION        = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
-# the macro expansion is limited to the macros specified with the PREDEFINED and
-# EXPAND_AS_DEFINED tags.
-# The default value is: NO.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-EXPAND_ONLY_PREDEF     = NO
-
-# If the SEARCH_INCLUDES tag is set to YES the includes files in the
-# INCLUDE_PATH will be searched if a #include is found.
-# The default value is: YES.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-SEARCH_INCLUDES        = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by the
-# preprocessor.
-# This tag requires that the tag SEARCH_INCLUDES is set to YES.
-
-INCLUDE_PATH           =
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
-# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will be
-# used.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-INCLUDE_FILE_PATTERNS  =
-
-# The PREDEFINED tag can be used to specify one or more macro names that are
-# defined before the preprocessor is started (similar to the -D option of e.g.
-# gcc). The argument of the tag is a list of macros of the form: name or
-# name=definition (no spaces). If the definition and the "=" are omitted, "=1"
-# is assumed. To prevent a macro definition from being undefined via #undef or
-# recursively expanded use the := operator instead of the = operator.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-PREDEFINED             =
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
-# tag can be used to specify a list of macro names that should be expanded. The
-# macro definition that is found in the sources will be used. Use the PREDEFINED
-# tag if you want to use a different macro definition that overrules the
-# definition found in the source code.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-EXPAND_AS_DEFINED      =
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
-# remove all refrences to function-like macros that are alone on a line, have an
-# all uppercase name, and do not end with a semicolon. Such function macros are
-# typically used for boiler-plate code, and will confuse the parser if not
-# removed.
-# The default value is: YES.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-SKIP_FUNCTION_MACROS   = YES
-
-#---------------------------------------------------------------------------
-# Configuration options related to external references
-#---------------------------------------------------------------------------
-
-# The TAGFILES tag can be used to specify one or more tag files. For each tag
-# file the location of the external documentation should be added. The format of
-# a tag file without this location is as follows:
-# TAGFILES = file1 file2 ...
-# Adding location for the tag files is done as follows:
-# TAGFILES = file1=loc1 "file2 = loc2" ...
-# where loc1 and loc2 can be relative or absolute paths or URLs. See the
-# section "Linking to external documentation" for more information about the use
-# of tag files.
-# Note: Each tag file must have an unique name (where the name does NOT include
-# the path). If a tag file is not located in the directory in which doxygen is
-# run, you must also specify the path to the tagfile here.
-
-TAGFILES               =
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create a
-# tag file that is based on the input files it reads. See section "Linking to
-# external documentation" for more information about the usage of tag files.
-
-GENERATE_TAGFILE       =
-
-# If the ALLEXTERNALS tag is set to YES all external class will be listed in the
-# class index. If set to NO only the inherited external classes will be listed.
-# The default value is: NO.
-
-ALLEXTERNALS           = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed in
-# the modules index. If set to NO, only the current project's groups will be
-# listed.
-# The default value is: YES.
-
-EXTERNAL_GROUPS        = YES
-
-# If the EXTERNAL_PAGES tag is set to YES all external pages will be listed in
-# the related pages index. If set to NO, only the current project's pages will
-# be listed.
-# The default value is: YES.
-
-EXTERNAL_PAGES         = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of 'which perl').
-# The default file (with absolute path) is: /usr/bin/perl.
-
-PERL_PATH              = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES doxygen will generate a class diagram
-# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
-# NO turns the diagrams off. Note that this option also works with HAVE_DOT
-# disabled, but it is recommended to install and use dot, since it yields more
-# powerful graphs.
-# The default value is: YES.
-
-CLASS_DIAGRAMS         = YES
-
-# You can define message sequence charts within doxygen comments using the \msc
-# command. Doxygen will then run the mscgen tool (see:
-# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the
-# documentation. The MSCGEN_PATH tag allows you to specify the directory where
-# the mscgen tool resides. If left empty the tool is assumed to be found in the
-# default search path.
-
-MSCGEN_PATH            =
-
-# You can include diagrams made with dia in doxygen documentation. Doxygen will
-# then run dia to produce the diagram and insert it in the documentation. The
-# DIA_PATH tag allows you to specify the directory where the dia binary resides.
-# If left empty dia is assumed to be found in the default search path.
-
-DIA_PATH               =
-
-# If set to YES, the inheritance and collaboration graphs will hide inheritance
-# and usage relations if the target is undocumented or is not a class.
-# The default value is: YES.
-
-HIDE_UNDOC_RELATIONS   = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz (see:
-# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
-# Bell Labs. The other options in this section have no effect if this option is
-# set to NO
-# The default value is: NO.
-
-HAVE_DOT               = NO
-
-# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
-# to run in parallel. When set to 0 doxygen will base this on the number of
-# processors available in the system. You can set it explicitly to a value
-# larger than 0 to get control over the balance between CPU load and processing
-# speed.
-# Minimum value: 0, maximum value: 32, default value: 0.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_NUM_THREADS        = 0
-
-# When you want a differently looking font n the dot files that doxygen
-# generates you can specify the font name using DOT_FONTNAME. You need to make
-# sure dot is able to find the font, which can be done by putting it in a
-# standard location or by setting the DOTFONTPATH environment variable or by
-# setting DOT_FONTPATH to the directory containing the font.
-# The default value is: Helvetica.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTNAME           = Helvetica
-
-# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
-# dot graphs.
-# Minimum value: 4, maximum value: 24, default value: 10.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTSIZE           = 10
-
-# By default doxygen will tell dot to use the default font as specified with
-# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
-# the path where dot can find it using this tag.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTPATH           =
-
-# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
-# each documented class showing the direct and indirect inheritance relations.
-# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CLASS_GRAPH            = YES
-
-# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a
-# graph for each documented class showing the direct and indirect implementation
-# dependencies (inheritance, containment, and class references variables) of the
-# class with other documented classes.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-COLLABORATION_GRAPH    = YES
-
-# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
-# groups, showing the direct groups dependencies.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GROUP_GRAPHS           = YES
-
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
-# collaboration diagrams in a style similar to the OMG's Unified Modeling
-# Language.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-UML_LOOK               = NO
-
-# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
-# class node. If there are many fields or methods and many nodes the graph may
-# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the
-# number of items for each type to make the size more manageable. Set this to 0
-# for no limit. Note that the threshold may be exceeded by 50% before the limit
-# is enforced. So when you set the threshold to 10, up to 15 fields may appear,
-# but if the number exceeds 15, the total amount of fields shown is limited to
-# 10.
-# Minimum value: 0, maximum value: 100, default value: 10.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-UML_LIMIT_NUM_FIELDS   = 10
-
-# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
-# collaboration graphs will show the relations between templates and their
-# instances.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-TEMPLATE_RELATIONS     = NO
-
-# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
-# YES then doxygen will generate a graph for each documented file showing the
-# direct and indirect include dependencies of the file with other documented
-# files.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INCLUDE_GRAPH          = YES
-
-# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are
-# set to YES then doxygen will generate a graph for each documented file showing
-# the direct and indirect include dependencies of the file with other documented
-# files.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INCLUDED_BY_GRAPH      = YES
-
-# If the CALL_GRAPH tag is set to YES then doxygen will generate a call
-# dependency graph for every global function or class method.
-#
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable call graphs for selected
-# functions only using the \callgraph command.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CALL_GRAPH             = NO
-
-# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
-# dependency graph for every global function or class method.
-#
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable caller graphs for selected
-# functions only using the \callergraph command.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CALLER_GRAPH           = NO
-
-# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
-# hierarchy of all classes instead of a textual one.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GRAPHICAL_HIERARCHY    = YES
-
-# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the
-# dependencies a directory has on other directories in a graphical way. The
-# dependency relations are determined by the #include relations between the
-# files in the directories.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DIRECTORY_GRAPH        = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot.
-# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
-# to make the SVG files visible in IE 9+ (other browsers do not have this
-# requirement).
-# Possible values are: png, jpg, gif and svg.
-# The default value is: png.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_IMAGE_FORMAT       = png
-
-# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
-# enable generation of interactive SVG images that allow zooming and panning.
-#
-# Note that this requires a modern browser other than Internet Explorer. Tested
-# and working are Firefox, Chrome, Safari, and Opera.
-# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
-# the SVG files visible. Older versions of IE do not have SVG support.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INTERACTIVE_SVG        = NO
-
-# The DOT_PATH tag can be used to specify the path where the dot tool can be
-# found. If left blank, it is assumed the dot tool can be found in the path.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_PATH               =
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the \dotfile
-# command).
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOTFILE_DIRS           =
-
-# The MSCFILE_DIRS tag can be used to specify one or more directories that
-# contain msc files that are included in the documentation (see the \mscfile
-# command).
-
-MSCFILE_DIRS           =
-
-# The DIAFILE_DIRS tag can be used to specify one or more directories that
-# contain dia files that are included in the documentation (see the \diafile
-# command).
-
-DIAFILE_DIRS           =
-
-# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
-# that will be shown in the graph. If the number of nodes in a graph becomes
-# larger than this value, doxygen will truncate the graph, which is visualized
-# by representing a node as a red box. Note that doxygen if the number of direct
-# children of the root node in a graph is already larger than
-# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that
-# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
-# Minimum value: 0, maximum value: 10000, default value: 50.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_GRAPH_MAX_NODES    = 50
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
-# generated by dot. A depth value of 3 means that only nodes reachable from the
-# root by following a path via at most 3 edges will be shown. Nodes that lay
-# further from the root node will be omitted. Note that setting this option to 1
-# or 2 may greatly reduce the computation time needed for large code bases. Also
-# note that the size of a graph can be further restricted by
-# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
-# Minimum value: 0, maximum value: 1000, default value: 0.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-MAX_DOT_GRAPH_DEPTH    = 0
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
-# background. This is disabled by default, because dot on Windows does not seem
-# to support this out of the box.
-#
-# Warning: Depending on the platform used, enabling this option may lead to
-# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
-# read).
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_TRANSPARENT        = NO
-
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
-# files in one run (i.e. multiple -o and -T options on the command line). This
-# makes dot run faster, but since only newer versions of dot (>1.8.10) support
-# this, this feature is disabled by default.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_MULTI_TARGETS      = YES
-
-# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
-# explaining the meaning of the various boxes and arrows in the dot generated
-# graphs.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GENERATE_LEGEND        = YES
-
-# If the DOT_CLEANUP tag is set to YES doxygen will remove the intermediate dot
-# files that are used to generate the various graphs.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_CLEANUP            = YES
diff --git a/doc/Doxyfile~ b/doc/Doxyfile~
deleted file mode 100644
index 92987e3..0000000
--- a/doc/Doxyfile~
+++ /dev/null
@@ -1,1869 +0,0 @@
-# Doxyfile 1.8.3.1
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project.
-#
-# All text after a hash (#) is considered a comment and will be ignored.
-# The format is:
-#       TAG = value [value, ...]
-# For lists items can also be appended using:
-#       TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (" ").
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# This tag specifies the encoding used for all characters in the config file
-# that follow. The default is UTF-8 which is also the encoding used for all
-# text before the first occurrence of this tag. Doxygen uses libiconv (or the
-# iconv built into libc) for the transcoding. See
-# http://www.gnu.org/software/libiconv for the list of possible encodings.
-
-DOXYFILE_ENCODING      = UTF-8
-
-# The PROJECT_NAME tag is a single word (or sequence of words) that should
-# identify the project. Note that if you do not use Doxywizard you need
-# to put quotes around the project name if it contains spaces.
-
-PROJECT_NAME           = 
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number.
-# This could be handy for archiving the generated documentation or
-# if some version control system is used.
-
-PROJECT_NUMBER         =
-
-# Using the PROJECT_BRIEF tag one can provide an optional one line description
-# for a project that appears at the top of each page and should give viewer
-# a quick idea about the purpose of the project. Keep the description short.
-
-PROJECT_BRIEF          = "Processing Kernel for remote sensing data"
-
-# With the PROJECT_LOGO tag one can specify an logo or icon that is
-# included in the documentation. The maximum height of the logo should not
-# exceed 55 pixels and the maximum width should not exceed 200 pixels.
-# Doxygen will copy the logo to the output directory.
-
-PROJECT_LOGO           = doc/logo.png
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
-# base path where the generated documentation will be put.
-# If a relative path is entered, it will be relative to the location
-# where doxygen was started. If left blank the current directory will be used.
-
-OUTPUT_DIRECTORY       =
-
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
-# 4096 sub-directories (in 2 levels) under the output directory of each output
-# format and will distribute the generated files over these directories.
-# Enabling this option can be useful when feeding doxygen a huge amount of
-# source files, where putting all generated files in the same directory would
-# otherwise cause performance problems for the file system.
-
-CREATE_SUBDIRS         = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# The default language is English, other supported languages are:
-# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
-# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
-# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
-# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
-# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak,
-# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
-
-OUTPUT_LANGUAGE        = English
-
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
-# include brief member descriptions after the members that are listed in
-# the file and class documentation (similar to JavaDoc).
-# Set to NO to disable this.
-
-BRIEF_MEMBER_DESC      = YES
-
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
-# the brief description of a member or function before the detailed description.
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
-
-REPEAT_BRIEF           = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator
-# that is used to form the text in various listings. Each string
-# in this list, if found as the leading text of the brief description, will be
-# stripped from the text and the result after processing the whole list, is
-# used as the annotated text. Otherwise, the brief description is used as-is.
-# If left blank, the following values are used ("$name" is automatically
-# replaced with the name of the entity): "The $name class" "The $name widget"
-# "The $name file" "is" "provides" "specifies" "contains"
-# "represents" "a" "an" "the"
-
-ABBREVIATE_BRIEF       =
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# Doxygen will generate a detailed section even if there is only a brief
-# description.
-
-ALWAYS_DETAILED_SEC    = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
-# inherited members of a class in the documentation of that class as if those
-# members were ordinary class members. Constructors, destructors and assignment
-# operators of the base classes will not be shown.
-
-INLINE_INHERITED_MEMB  = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
-# path before files name in the file list and in the header files. If set
-# to NO the shortest path that makes the file name unique will be used.
-
-FULL_PATH_NAMES        = YES
-
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
-# can be used to strip a user-defined part of the path. Stripping is
-# only done if one of the specified strings matches the left-hand part of
-# the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the
-# path to strip. Note that you specify absolute paths here, but also
-# relative paths, which will be relative from the directory where doxygen is
-# started.
-
-STRIP_FROM_PATH        =
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
-# the path mentioned in the documentation of a class, which tells
-# the reader which header file to include in order to use a class.
-# If left blank only the name of the header file containing the class
-# definition is used. Otherwise one should specify the include paths that
-# are normally passed to the compiler using the -I flag.
-
-STRIP_FROM_INC_PATH    =
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
-# (but less readable) file names. This can be useful if your file system
-# doesn't support long names like on DOS, Mac, or CD-ROM.
-
-SHORT_NAMES            = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
-# will interpret the first line (until the first dot) of a JavaDoc-style
-# comment as the brief description. If set to NO, the JavaDoc
-# comments will behave just like regular Qt-style comments
-# (thus requiring an explicit @brief command for a brief description.)
-
-JAVADOC_AUTOBRIEF      = NO
-
-# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
-# interpret the first line (until the first dot) of a Qt-style
-# comment as the brief description. If set to NO, the comments
-# will behave just like regular Qt-style comments (thus requiring
-# an explicit \brief command for a brief description.)
-
-QT_AUTOBRIEF           = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
-# treat a multi-line C++ special comment block (i.e. a block of //! or ///
-# comments) as a brief description. This used to be the default behaviour.
-# The new default is to treat a multi-line C++ comment block as a detailed
-# description. Set this tag to YES if you prefer the old behaviour instead.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
-# member inherits the documentation from any documented member that it
-# re-implements.
-
-INHERIT_DOCS           = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
-# a new page for each member. If set to NO, the documentation of a member will
-# be part of the file/class/namespace that contains it.
-
-SEPARATE_MEMBER_PAGES  = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab.
-# Doxygen uses this value to replace tabs by spaces in code fragments.
-
-TAB_SIZE               = 4
-
-# This tag can be used to specify a number of aliases that acts
-# as commands in the documentation. An alias has the form "name=value".
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to
-# put the command \sideeffect (or @sideeffect) in the documentation, which
-# will result in a user-defined paragraph with heading "Side Effects:".
-# You can put \n's in the value part of an alias to insert newlines.
-
-ALIASES                =
-
-# This tag can be used to specify a number of word-keyword mappings (TCL only).
-# A mapping has the form "name=value". For example adding
-# "class=itcl::class" will allow you to use the command class in the
-# itcl::class meaning.
-
-TCL_SUBST              =
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
-# sources only. Doxygen will then generate output that is more tailored for C.
-# For instance, some of the names that are used will be different. The list
-# of all members will be omitted, etc.
-
-OPTIMIZE_OUTPUT_FOR_C  = NO
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
-# sources only. Doxygen will then generate output that is more tailored for
-# Java. For instance, namespaces will be presented as packages, qualified
-# scopes will look different, etc.
-
-OPTIMIZE_OUTPUT_JAVA   = NO
-
-# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
-# sources only. Doxygen will then generate output that is more tailored for
-# Fortran.
-
-OPTIMIZE_FOR_FORTRAN   = NO
-
-# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
-# sources. Doxygen will then generate output that is tailored for
-# VHDL.
-
-OPTIMIZE_OUTPUT_VHDL   = NO
-
-# Doxygen selects the parser to use depending on the extension of the files it
-# parses. With this tag you can assign which parser to use for a given
-# extension. Doxygen has a built-in mapping, but you can override or extend it
-# using this tag. The format is ext=language, where ext is a file extension,
-# and language is one of the parsers supported by doxygen: IDL, Java,
-# Javascript, CSharp, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL, C,
-# C++. For instance to make doxygen treat .inc files as Fortran files (default
-# is PHP), and .f files as C (default is Fortran), use: inc=Fortran f=C. Note
-# that for custom extensions you also need to set FILE_PATTERNS otherwise the
-# files are not read by doxygen.
-
-EXTENSION_MAPPING      += dox=md
-
-# If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all
-# comments according to the Markdown format, which allows for more readable
-# documentation. See http://daringfireball.net/projects/markdown/ for details.
-# The output of markdown processing is further processed by doxygen, so you
-# can mix doxygen, HTML, and XML commands with Markdown formatting.
-# Disable only in case of backward compatibilities issues.
-
-MARKDOWN_SUPPORT       = YES
-
-# When enabled doxygen tries to link words that correspond to documented classes,
-# or namespaces to their corresponding documentation. Such a link can be
-# prevented in individual cases by by putting a % sign in front of the word or
-# globally by setting AUTOLINK_SUPPORT to NO.
-
-AUTOLINK_SUPPORT       = YES
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
-# to include (a tag file for) the STL sources as input, then you should
-# set this tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
-# func(std::string) {}). This also makes the inheritance and collaboration
-# diagrams that involve STL classes more complete and accurate.
-
-BUILTIN_STL_SUPPORT    = YES
-
-# If you use Microsoft's C++/CLI language, you should set this option to YES to
-# enable parsing support.
-
-CPP_CLI_SUPPORT        = NO
-
-# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
-# Doxygen will parse them like normal C++ but will assume all classes use public
-# instead of private inheritance when no explicit protection keyword is present.
-
-SIP_SUPPORT            = NO
-
-# For Microsoft's IDL there are propget and propput attributes to indicate
-# getter and setter methods for a property. Setting this option to YES (the
-# default) will make doxygen replace the get and set methods by a property in
-# the documentation. This will only work if the methods are indeed getting or
-# setting a simple type. If this is not the case, or you want to show the
-# methods anyway, you should set this option to NO.
-
-IDL_PROPERTY_SUPPORT   = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES, then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-
-DISTRIBUTE_GROUP_DOC   = NO
-
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
-# the same type (for instance a group of public functions) to be put as a
-# subgroup of that type (e.g. under the Public Functions section). Set it to
-# NO to prevent subgrouping. Alternatively, this can be done per class using
-# the \nosubgrouping command.
-
-SUBGROUPING            = YES
-
-# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and
-# unions are shown inside the group in which they are included (e.g. using
-# @ingroup) instead of on a separate page (for HTML and Man pages) or
-# section (for LaTeX and RTF).
-
-INLINE_GROUPED_CLASSES = NO
-
-# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and
-# unions with only public data fields will be shown inline in the documentation
-# of the scope in which they are defined (i.e. file, namespace, or group
-# documentation), provided this scope is documented. If set to NO (the default),
-# structs, classes, and unions are shown on a separate page (for HTML and Man
-# pages) or section (for LaTeX and RTF).
-
-INLINE_SIMPLE_STRUCTS  = NO
-
-# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
-# is documented as struct, union, or enum with the name of the typedef. So
-# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
-# with name TypeT. When disabled the typedef will appear as a member of a file,
-# namespace, or class. And the struct will be named TypeS. This can typically
-# be useful for C code in case the coding convention dictates that all compound
-# types are typedef'ed and only the typedef is referenced, never the tag name.
-
-TYPEDEF_HIDES_STRUCT   = NO
-
-# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
-# determine which symbols to keep in memory and which to flush to disk.
-# When the cache is full, less often used symbols will be written to disk.
-# For small to medium size projects (<1000 input files) the default value is
-# probably good enough. For larger projects a too small cache size can cause
-# doxygen to be busy swapping symbols to and from disk most of the time
-# causing a significant performance penalty.
-# If the system has enough physical memory increasing the cache will improve the
-# performance by keeping more symbols in memory. Note that the value works on
-# a logarithmic scale so increasing the size by one will roughly double the
-# memory usage. The cache size is given by this formula:
-# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
-# corresponding to a cache size of 2^16 = 65536 symbols.
-
-#SYMBOL_CACHE_SIZE      = 0
-
-# Similar to the SYMBOL_CACHE_SIZE the size of the symbol lookup cache can be
-# set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given
-# their name and scope. Since this can be an expensive process and often the
-# same symbol appear multiple times in the code, doxygen keeps a cache of
-# pre-resolved symbols. If the cache is too small doxygen will become slower.
-# If the cache is too large, memory is wasted. The cache size is given by this
-# formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range is 0..9, the default is 0,
-# corresponding to a cache size of 2^16 = 65536 symbols.
-
-LOOKUP_CACHE_SIZE      = 0
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
-# documentation are documented, even if no documentation was available.
-# Private class members and static file members will be hidden unless
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
-
-EXTRACT_ALL            = NO
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
-# will be included in the documentation.
-
-EXTRACT_PRIVATE        = NO
-
-# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
-# scope will be included in the documentation.
-
-EXTRACT_PACKAGE        = NO
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file
-# will be included in the documentation.
-
-EXTRACT_STATIC         = NO
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
-# defined locally in source files will be included in the documentation.
-# If set to NO only classes defined in header files are included.
-
-EXTRACT_LOCAL_CLASSES  = YES
-
-# This flag is only useful for Objective-C code. When set to YES local
-# methods, which are defined in the implementation section but not in
-# the interface are included in the documentation.
-# If set to NO (the default) only methods in the interface are included.
-
-EXTRACT_LOCAL_METHODS  = NO
-
-# If this flag is set to YES, the members of anonymous namespaces will be
-# extracted and appear in the documentation as a namespace called
-# 'anonymous_namespace{file}', where file will be replaced with the base
-# name of the file that contains the anonymous namespace. By default
-# anonymous namespaces are hidden.
-
-EXTRACT_ANON_NSPACES   = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
-# undocumented members of documented classes, files or namespaces.
-# If set to NO (the default) these members will be included in the
-# various overviews, but no documentation section is generated.
-# This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_MEMBERS     = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy.
-# If set to NO (the default) these classes will be included in the various
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_CLASSES     = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
-# friend (class|struct|union) declarations.
-# If set to NO (the default) these declarations will be included in the
-# documentation.
-
-HIDE_FRIEND_COMPOUNDS  = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
-# documentation blocks found inside the body of a function.
-# If set to NO (the default) these blocks will be appended to the
-# function's detailed documentation block.
-
-HIDE_IN_BODY_DOCS      = NO
-
-# The INTERNAL_DOCS tag determines if documentation
-# that is typed after a \internal command is included. If the tag is set
-# to NO (the default) then the documentation will be excluded.
-# Set it to YES to include the internal documentation.
-
-INTERNAL_DOCS          = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
-# file names in lower-case letters. If set to YES upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# and Mac users are advised to set this option to NO.
-
-CASE_SENSE_NAMES       = YES
-
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
-# will show members with their full class and namespace scopes in the
-# documentation. If set to YES the scope will be hidden.
-
-HIDE_SCOPE_NAMES       = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
-# will put a list of the files that are included by a file in the documentation
-# of that file.
-
-SHOW_INCLUDE_FILES     = YES
-
-# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen
-# will list include files with double quotes in the documentation
-# rather than with sharp brackets.
-
-FORCE_LOCAL_INCLUDES   = NO
-
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
-# is inserted in the documentation for inline members.
-
-INLINE_INFO            = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
-# will sort the (detailed) documentation of file and class members
-# alphabetically by member name. If set to NO the members will appear in
-# declaration order.
-
-SORT_MEMBER_DOCS       = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
-# brief documentation of file, namespace and class members alphabetically
-# by member name. If set to NO (the default) the members will appear in
-# declaration order.
-
-SORT_BRIEF_DOCS        = NO
-
-# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen
-# will sort the (brief and detailed) documentation of class members so that
-# constructors and destructors are listed first. If set to NO (the default)
-# the constructors will appear in the respective orders defined by
-# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS.
-# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO
-# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
-
-SORT_MEMBERS_CTORS_1ST = NO
-
-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
-# hierarchy of group names into alphabetical order. If set to NO (the default)
-# the group names will appear in their defined order.
-
-SORT_GROUP_NAMES       = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
-# sorted by fully-qualified names, including namespaces. If set to
-# NO (the default), the class list will be sorted only by class name,
-# not including the namespace part.
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the
-# alphabetical list.
-
-SORT_BY_SCOPE_NAME     = NO
-
-# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to
-# do proper type resolution of all parameters of a function it will reject a
-# match between the prototype and the implementation of a member function even
-# if there is only one candidate or it is obvious which candidate to choose
-# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen
-# will still accept a match between prototype and implementation in such cases.
-
-STRICT_PROTO_MATCHING  = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or
-# disable (NO) the todo list. This list is created by putting \todo
-# commands in the documentation.
-
-GENERATE_TODOLIST      = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or
-# disable (NO) the test list. This list is created by putting \test
-# commands in the documentation.
-
-GENERATE_TESTLIST      = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or
-# disable (NO) the bug list. This list is created by putting \bug
-# commands in the documentation.
-
-GENERATE_BUGLIST       = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
-# disable (NO) the deprecated list. This list is created by putting
-# \deprecated commands in the documentation.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional
-# documentation sections, marked by \if section-label ... \endif
-# and \cond section-label ... \endcond blocks.
-
-ENABLED_SECTIONS       =
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
-# the initial value of a variable or macro consists of for it to appear in
-# the documentation. If the initializer consists of more lines than specified
-# here it will be hidden. Use a value of 0 to hide initializers completely.
-# The appearance of the initializer of individual variables and macros in the
-# documentation can be controlled using \showinitializer or \hideinitializer
-# command in the documentation regardless of this setting.
-
-MAX_INITIALIZER_LINES  = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
-# at the bottom of the documentation of classes and structs. If set to YES the
-# list will mention the files that were used to generate the documentation.
-
-SHOW_USED_FILES        = YES
-
-# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
-# This will remove the Files entry from the Quick Index and from the
-# Folder Tree View (if specified). The default is YES.
-
-SHOW_FILES             = YES
-
-# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
-# Namespaces page.
-# This will remove the Namespaces entry from the Quick Index
-# and from the Folder Tree View (if specified). The default is YES.
-
-SHOW_NAMESPACES        = YES
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that
-# doxygen should invoke to get the current version for each file (typically from
-# the version control system). Doxygen will invoke the program by executing (via
-# popen()) the command <command> <input-file>, where <command> is the value of
-# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
-# provided by doxygen. Whatever the program writes to standard output
-# is used as the file version. See the manual for examples.
-
-FILE_VERSION_FILTER    =
-
-# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
-# by doxygen. The layout file controls the global structure of the generated
-# output files in an output format independent way. To create the layout file
-# that represents doxygen's defaults, run doxygen with the -l option.
-# You can optionally specify a file name after the option, if omitted
-# DoxygenLayout.xml will be used as the name of the layout file.
-
-LAYOUT_FILE            =
-
-# The CITE_BIB_FILES tag can be used to specify one or more bib files
-# containing the references data. This must be a list of .bib files. The
-# .bib extension is automatically appended if omitted. Using this command
-# requires the bibtex tool to be installed. See also
-# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style
-# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this
-# feature you need bibtex and perl available in the search path. Do not use
-# file names with spaces, bibtex cannot handle them.
-
-CITE_BIB_FILES         =
-
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated
-# by doxygen. Possible values are YES and NO. If left blank NO is used.
-
-QUIET                  = NO
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated by doxygen. Possible values are YES and NO. If left blank
-# NO is used.
-
-WARNINGS               = YES
-
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
-# automatically be disabled.
-
-WARN_IF_UNDOCUMENTED   = YES
-
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some
-# parameters in a documented function, or documenting parameters that
-# don't exist or using markup commands wrongly.
-
-WARN_IF_DOC_ERROR      = YES
-
-# The WARN_NO_PARAMDOC option can be enabled to get warnings for
-# functions that are documented, but have no documentation for their parameters
-# or return value. If set to NO (the default) doxygen will only warn about
-# wrong or incomplete parameter documentation, but not about the absence of
-# documentation.
-
-WARN_NO_PARAMDOC       = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that
-# doxygen can produce. The string should contain the $file, $line, and $text
-# tags, which will be replaced by the file and line number from which the
-# warning originated and the warning text. Optionally the format may contain
-# $version, which will be replaced by the version of the file (if it could
-# be obtained via FILE_VERSION_FILTER)
-
-WARN_FORMAT            = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning
-# and error messages should be written. If left blank the output is written
-# to stderr.
-
-WARN_LOGFILE           =
-
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag can be used to specify the files and/or directories that contain
-# documented source files. You may enter file names like "myfile.cpp" or
-# directories like "/usr/src/myproject". Separate the files or directories
-# with spaces.
-
-INPUT                  =
-
-# This tag can be used to specify the character encoding of the source files
-# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
-# also the default input encoding. Doxygen uses libiconv (or the iconv built
-# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
-# the list of possible encodings.
-
-INPUT_ENCODING         = UTF-8
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank the following patterns are tested:
-# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh
-# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py
-# *.f90 *.f *.for *.vhd *.vhdl
-
-FILE_PATTERNS          =
-
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories
-# should be searched for input files as well. Possible values are YES and NO.
-# If left blank NO is used.
-
-RECURSIVE              = YES
-
-# The EXCLUDE tag can be used to specify files and/or directories that should be
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-# Note that relative paths are relative to the directory from which doxygen is
-# run.
-
-EXCLUDE                =
-
-# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
-# directories that are symbolic links (a Unix file system feature) are excluded
-# from the input.
-
-EXCLUDE_SYMLINKS       = NO
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories. Note that the wildcards are matched
-# against the file with absolute path, so to exclude all test directories
-# for example use the pattern */test/*
-
-EXCLUDE_PATTERNS       =
-
-# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
-# (namespaces, classes, functions, etc.) that should be excluded from the
-# output. The symbol name can be a fully qualified name, a word, or if the
-# wildcard * is used, a substring. Examples: ANamespace, AClass,
-# AClass::ANamespace, ANamespace::*Test
-
-EXCLUDE_SYMBOLS        =
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or
-# directories that contain example code fragments that are included (see
-# the \include command).
-
-EXAMPLE_PATH           =
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank all files are included.
-
-EXAMPLE_PATTERNS       =
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude
-# commands irrespective of the value of the RECURSIVE tag.
-# Possible values are YES and NO. If left blank NO is used.
-
-EXAMPLE_RECURSIVE      = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or
-# directories that contain image that are included in the documentation (see
-# the \image command).
-
-IMAGE_PATH             =
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command <filter> <input-file>, where <filter>
-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
-# input file. Doxygen will then use the output that the filter program writes
-# to standard output.
-# If FILTER_PATTERNS is specified, this tag will be
-# ignored.
-
-INPUT_FILTER           =
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis.
-# Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match.
-# The filters are a list of the form:
-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
-# info on how filters are used. If FILTER_PATTERNS is empty or if
-# non of the patterns match the file name, INPUT_FILTER is applied.
-
-FILTER_PATTERNS        =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER) will be used to filter the input files when producing source
-# files to browse (i.e. when SOURCE_BROWSER is set to YES).
-
-FILTER_SOURCE_FILES    = NO
-
-# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
-# pattern. A pattern will override the setting for FILTER_PATTERN (if any)
-# and it is also possible to disable source filtering for a specific pattern
-# using *.ext= (so without naming a filter). This option only has effect when
-# FILTER_SOURCE_FILES is enabled.
-
-FILTER_SOURCE_PATTERNS =
-
-# If the USE_MD_FILE_AS_MAINPAGE tag refers to the name of a markdown file that
-# is part of the input, its contents will be placed on the main page (index.html).
-# This can be useful if you have a project on for instance GitHub and want reuse
-# the introduction page also for the doxygen output.
-
-USE_MDFILE_AS_MAINPAGE =
-
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will
-# be generated. Documented entities will be cross-referenced with these sources.
-# Note: To get rid of all source code in the generated output, make sure also
-# VERBATIM_HEADERS is set to NO.
-
-SOURCE_BROWSER         = YES
-
-# Setting the INLINE_SOURCES tag to YES will include the body
-# of functions and classes directly in the documentation.
-
-INLINE_SOURCES         = YES
-
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
-# doxygen to hide any special comment blocks from generated source code
-# fragments. Normal C, C++ and Fortran comments will always remain visible.
-
-STRIP_CODE_COMMENTS    = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES
-# then for each documented function all documented
-# functions referencing it will be listed.
-
-REFERENCED_BY_RELATION = NO
-
-# If the REFERENCES_RELATION tag is set to YES
-# then for each documented function all documented entities
-# called/used by that function will be listed.
-
-REFERENCES_RELATION    = NO
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
-# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
-# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
-# link to the source code.
-# Otherwise they will link to the documentation.
-
-REFERENCES_LINK_SOURCE = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code
-# will point to the HTML generated by the htags(1) tool instead of doxygen
-# built-in source browser. The htags tool is part of GNU's global source
-# tagging system (see http://www.gnu.org/software/global/global.html). You
-# will need version 4.8.6 or higher.
-
-USE_HTAGS              = NO
-
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
-# will generate a verbatim copy of the header file for each class for
-# which an include is specified. Set to NO to disable this.
-
-VERBATIM_HEADERS       = YES
-
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
-# of all compounds will be generated. Enable this if the project
-# contains a lot of classes, structs, unions or interfaces.
-
-ALPHABETICAL_INDEX     = YES
-
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
-# in which this list will be split (can be a number in the range [1..20])
-
-COLS_IN_ALPHA_INDEX    = 5
-
-# In case all classes in a project start with a common prefix, all
-# classes will be put under the same header in the alphabetical index.
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
-# should be ignored while generating the index headers.
-
-IGNORE_PREFIX          =
-
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
-# generate HTML output.
-
-GENERATE_HTML          = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `html' will be used as the default path.
-
-HTML_OUTPUT            = html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
-# doxygen will generate files with .html extension.
-
-HTML_FILE_EXTENSION    = .html
-
-# The HTML_HEADER tag can be used to specify a personal HTML header for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard header. Note that when using a custom header you are responsible
-#  for the proper inclusion of any scripts and style sheets that doxygen
-# needs, which is dependent on the configuration options used.
-# It is advised to generate a default header using "doxygen -w html
-# header.html footer.html stylesheet.css YourConfigFile" and then modify
-# that header. Note that the header is subject to change so you typically
-# have to redo this when upgrading to a newer version of doxygen or when
-# changing the value of configuration settings such as GENERATE_TREEVIEW!
-
-HTML_HEADER            =
-
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard footer.
-
-HTML_FOOTER            = doc/footer.html
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
-# style sheet that is used by each HTML page. It can be used to
-# fine-tune the look of the HTML output. If left blank doxygen will
-# generate a default style sheet. Note that it is recommended to use
-# HTML_EXTRA_STYLESHEET instead of this one, as it is more robust and this
-# tag will in the future become obsolete.
-
-HTML_STYLESHEET        =
-
-# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional
-# user-defined cascading style sheet that is included after the standard
-# style sheets created by doxygen. Using this option one can overrule
-# certain style aspects. This is preferred over using HTML_STYLESHEET
-# since it does not replace the standard style sheet and is therefor more
-# robust against future updates. Doxygen will copy the style sheet file to
-# the output directory.
-
-HTML_EXTRA_STYLESHEET  =
-
-# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
-# other source files which should be copied to the HTML output directory. Note
-# that these files will be copied to the base HTML output directory. Use the
-# $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
-# files. In the HTML_STYLESHEET file, use the file name only. Also note that
-# the files will be copied as-is; there are no commands or markers available.
-
-HTML_EXTRA_FILES       =
-
-# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
-# Doxygen will adjust the colors in the style sheet and background images
-# according to this color. Hue is specified as an angle on a colorwheel,
-# see http://en.wikipedia.org/wiki/Hue for more information.
-# For instance the value 0 represents red, 60 is yellow, 120 is green,
-# 180 is cyan, 240 is blue, 300 purple, and 360 is red again.
-# The allowed range is 0 to 359.
-
-HTML_COLORSTYLE_HUE    = 220
-
-# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of
-# the colors in the HTML output. For a value of 0 the output will use
-# grayscales only. A value of 255 will produce the most vivid colors.
-
-HTML_COLORSTYLE_SAT    = 100
-
-# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to
-# the luminance component of the colors in the HTML output. Values below
-# 100 gradually make the output lighter, whereas values above 100 make
-# the output darker. The value divided by 100 is the actual gamma applied,
-# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2,
-# and 100 does not change the gamma.
-
-HTML_COLORSTYLE_GAMMA  = 80
-
-# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
-# page will contain the date and time when the page was generated. Setting
-# this to NO can help when comparing the output of multiple runs.
-
-HTML_TIMESTAMP         = YES
-
-# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
-# documentation will contain sections that can be hidden and shown after the
-# page has loaded.
-
-HTML_DYNAMIC_SECTIONS  = NO
-
-# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of
-# entries shown in the various tree structured indices initially; the user
-# can expand and collapse entries dynamically later on. Doxygen will expand
-# the tree to such a level that at most the specified number of entries are
-# visible (unless a fully collapsed tree already exceeds this amount).
-# So setting the number of entries 1 will produce a full collapsed tree by
-# default. 0 is a special value representing an infinite number of entries
-# and will result in a full expanded tree by default.
-
-HTML_INDEX_NUM_ENTRIES = 100
-
-# If the GENERATE_DOCSET tag is set to YES, additional index files
-# will be generated that can be used as input for Apple's Xcode 3
-# integrated development environment, introduced with OSX 10.5 (Leopard).
-# To create a documentation set, doxygen will generate a Makefile in the
-# HTML output directory. Running make will produce the docset in that
-# directory and running "make install" will install the docset in
-# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
-# it at startup.
-# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
-# for more information.
-
-GENERATE_DOCSET        = NO
-
-# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
-# feed. A documentation feed provides an umbrella under which multiple
-# documentation sets from a single provider (such as a company or product suite)
-# can be grouped.
-
-DOCSET_FEEDNAME        = "Doxygen generated docs"
-
-# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
-# should uniquely identify the documentation set bundle. This should be a
-# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
-# will append .docset to the name.
-
-DOCSET_BUNDLE_ID       = org.doxygen.Project
-
-# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely
-# identify the documentation publisher. This should be a reverse domain-name
-# style string, e.g. com.mycompany.MyDocSet.documentation.
-
-DOCSET_PUBLISHER_ID    = org.doxygen.Publisher
-
-# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher.
-
-DOCSET_PUBLISHER_NAME  = Publisher
-
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files
-# will be generated that can be used as input for tools like the
-# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
-# of the generated HTML documentation.
-
-GENERATE_HTMLHELP      = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
-# be used to specify the file name of the resulting .chm file. You
-# can add a path in front of the file if the result should not be
-# written to the html output directory.
-
-CHM_FILE               =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
-# be used to specify the location (absolute path including file name) of
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
-# the HTML help compiler on the generated index.hhp.
-
-HHC_LOCATION           =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
-# controls if a separate .chi index file is generated (YES) or that
-# it should be included in the master .chm file (NO).
-
-GENERATE_CHI           = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
-# is used to encode HtmlHelp index (hhk), content (hhc) and project file
-# content.
-
-CHM_INDEX_ENCODING     =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
-# controls whether a binary table of contents is generated (YES) or a
-# normal table of contents (NO) in the .chm file.
-
-BINARY_TOC             = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members
-# to the contents of the HTML help documentation and to the tree view.
-
-TOC_EXPAND             = NO
-
-# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
-# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated
-# that can be used as input for Qt's qhelpgenerator to generate a
-# Qt Compressed Help (.qch) of the generated HTML documentation.
-
-GENERATE_QHP           = NO
-
-# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
-# be used to specify the file name of the resulting .qch file.
-# The path specified is relative to the HTML output folder.
-
-QCH_FILE               =
-
-# The QHP_NAMESPACE tag specifies the namespace to use when generating
-# Qt Help Project output. For more information please see
-# http://doc.trolltech.com/qthelpproject.html#namespace
-
-QHP_NAMESPACE          = org.doxygen.Project
-
-# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
-# Qt Help Project output. For more information please see
-# http://doc.trolltech.com/qthelpproject.html#virtual-folders
-
-QHP_VIRTUAL_FOLDER     = doc
-
-# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to
-# add. For more information please see
-# http://doc.trolltech.com/qthelpproject.html#custom-filters
-
-QHP_CUST_FILTER_NAME   =
-
-# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the
-# custom filter to add. For more information please see
-# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">
-# Qt Help Project / Custom Filters</a>.
-
-QHP_CUST_FILTER_ATTRS  =
-
-# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
-# project's
-# filter section matches.
-# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">
-# Qt Help Project / Filter Attributes</a>.
-
-QHP_SECT_FILTER_ATTRS  =
-
-# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
-# be used to specify the location of Qt's qhelpgenerator.
-# If non-empty doxygen will try to run qhelpgenerator on the generated
-# .qhp file.
-
-QHG_LOCATION           =
-
-# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files
-#  will be generated, which together with the HTML files, form an Eclipse help
-# plugin. To install this plugin and make it available under the help contents
-# menu in Eclipse, the contents of the directory containing the HTML and XML
-# files needs to be copied into the plugins directory of eclipse. The name of
-# the directory within the plugins directory should be the same as
-# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before
-# the help appears.
-
-GENERATE_ECLIPSEHELP   = NO
-
-# A unique identifier for the eclipse help plugin. When installing the plugin
-# the directory name containing the HTML and XML files should also have
-# this name.
-
-ECLIPSE_DOC_ID         = org.doxygen.Project
-
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs)
-# at top of each HTML page. The value NO (the default) enables the index and
-# the value YES disables it. Since the tabs have the same information as the
-# navigation tree you can set this option to NO if you already set
-# GENERATE_TREEVIEW to YES.
-
-DISABLE_INDEX          = NO
-
-# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
-# structure should be generated to display hierarchical information.
-# If the tag value is set to YES, a side panel will be generated
-# containing a tree-like index structure (just like the one that
-# is generated for HTML Help). For this to work a browser that supports
-# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
-# Windows users are probably better off using the HTML help feature.
-# Since the tree basically has the same information as the tab index you
-# could consider to set DISABLE_INDEX to NO when enabling this option.
-
-GENERATE_TREEVIEW      = NO
-
-# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values
-# (range [0,1..20]) that doxygen will group on one line in the generated HTML
-# documentation. Note that a value of 0 will completely suppress the enum
-# values from appearing in the overview section.
-
-ENUM_VALUES_PER_LINE   = 4
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
-# used to set the initial width (in pixels) of the frame in which the tree
-# is shown.
-
-TREEVIEW_WIDTH         = 250
-
-# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open
-# links to external symbols imported via tag files in a separate window.
-
-EXT_LINKS_IN_WINDOW    = NO
-
-# Use this tag to change the font size of Latex formulas included
-# as images in the HTML documentation. The default is 10. Note that
-# when you change the font size after a successful doxygen run you need
-# to manually remove any form_*.png images from the HTML output directory
-# to force them to be regenerated.
-
-FORMULA_FONTSIZE       = 10
-
-# Use the FORMULA_TRANPARENT tag to determine whether or not the images
-# generated for formulas are transparent PNGs. Transparent PNGs are
-# not supported properly for IE 6.0, but are supported on all modern browsers.
-# Note that when changing this option you need to delete any form_*.png files
-# in the HTML output before the changes have effect.
-
-FORMULA_TRANSPARENT    = YES
-
-# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax
-# (see http://www.mathjax.org) which uses client side Javascript for the
-# rendering instead of using prerendered bitmaps. Use this if you do not
-# have LaTeX installed or if you want to formulas look prettier in the HTML
-# output. When enabled you may also need to install MathJax separately and
-# configure the path to it using the MATHJAX_RELPATH option.
-
-USE_MATHJAX            = NO
-
-# When MathJax is enabled you can set the default output format to be used for
-# thA MathJax output. Supported types are HTML-CSS, NativeMML (i.e. MathML) and
-# SVG. The default value is HTML-CSS, which is slower, but has the best
-# compatibility.
-
-MATHJAX_FORMAT         = HTML-CSS
-
-# When MathJax is enabled you need to specify the location relative to the
-# HTML output directory using the MATHJAX_RELPATH option. The destination
-# directory should contain the MathJax.js script. For instance, if the mathjax
-# directory is located at the same level as the HTML output directory, then
-# MATHJAX_RELPATH should be ../mathjax. The default value points to
-# the MathJax Content Delivery Network so you can quickly see the result without
-# installing MathJax.
-# However, it is strongly recommended to install a local
-# copy of MathJax from http://www.mathjax.org before deployment.
-
-MATHJAX_RELPATH        = http://cdn.mathjax.org/mathjax/latest
-
-# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension
-# names that should be enabled during MathJax rendering.
-
-MATHJAX_EXTENSIONS     =
-
-# When the SEARCHENGINE tag is enabled doxygen will generate a search box
-# for the HTML output. The underlying search engine uses javascript
-# and DHTML and should work on any modern browser. Note that when using
-# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets
-# (GENERATE_DOCSET) there is already a search function so this one should
-# typically be disabled. For large projects the javascript based search engine
-# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
-
-SEARCHENGINE           = NO
-
-# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
-# implemented using a web server instead of a web client using Javascript.
-# There are two flavours of web server based search depending on the
-# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for
-# searching and an index file used by the script. When EXTERNAL_SEARCH is
-# enabled the indexing and searching needs to be provided by external tools.
-# See the manual for details.
-
-SERVER_BASED_SEARCH    = NO
-
-# When EXTERNAL_SEARCH is enabled doxygen will no longer generate the PHP
-# script for searching. Instead the search results are written to an XML file
-# which needs to be processed by an external indexer. Doxygen will invoke an
-# external search engine pointed to by the SEARCHENGINE_URL option to obtain
-# the search results. Doxygen ships with an example indexer (doxyindexer) and
-# search engine (doxysearch.cgi) which are based on the open source search engine
-# library Xapian. See the manual for configuration details.
-
-EXTERNAL_SEARCH        = NO
-
-# The SEARCHENGINE_URL should point to a search engine hosted by a web server
-# which will returned the search results when EXTERNAL_SEARCH is enabled.
-# Doxygen ships with an example search engine (doxysearch) which is based on
-# the open source search engine library Xapian. See the manual for configuration
-# details.
-
-SEARCHENGINE_URL       =
-
-# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
-# search data is written to a file for indexing by an external tool. With the
-# SEARCHDATA_FILE tag the name of this file can be specified.
-
-SEARCHDATA_FILE        = searchdata.xml
-
-# When SERVER_BASED_SEARCH AND EXTERNAL_SEARCH are both enabled the
-# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
-# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
-# projects and redirect the results back to the right project.
-
-EXTERNAL_SEARCH_ID     =
-
-# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
-# projects other than the one defined by this configuration file, but that are
-# all added to the same external search index. Each project needs to have a
-# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id
-# of to a relative location where the documentation can be found.
-# The format is: EXTRA_SEARCH_MAPPINGS = id1=loc1 id2=loc2 ...
-
-EXTRA_SEARCH_MAPPINGS  =
-
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
-# generate Latex output.
-
-GENERATE_LATEX         = YES
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `latex' will be used as the default path.
-
-LATEX_OUTPUT           = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked. If left blank `latex' will be used as the default command name.
-# Note that when enabling USE_PDFLATEX this option is only used for
-# generating bitmaps for formulas in the HTML output, but not in the
-# Makefile that is written to the output directory.
-
-LATEX_CMD_NAME         = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
-# generate index for LaTeX. If left blank `makeindex' will be used as the
-# default command name.
-
-MAKEINDEX_CMD_NAME     = makeindex
-
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
-# LaTeX documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_LATEX          = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used
-# by the printer. Possible values are: a4, letter, legal and
-# executive. If left blank a4wide will be used.
-
-PAPER_TYPE             = a4
-
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
-# packages that should be included in the LaTeX output.
-
-EXTRA_PACKAGES         =
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
-# the generated latex document. The header should contain everything until
-# the first chapter. If it is left blank doxygen will generate a
-# standard header. Notice: only use this tag if you know what you are doing!
-
-LATEX_HEADER           =
-
-# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for
-# the generated latex document. The footer should contain everything after
-# the last chapter. If it is left blank doxygen will generate a
-# standard footer. Notice: only use this tag if you know what you are doing!
-
-LATEX_FOOTER           =
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will
-# contain links (just like the HTML output) instead of page references
-# This makes the output suitable for online browsing using a pdf viewer.
-
-PDF_HYPERLINKS         = YES
-
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
-# plain latex in the generated Makefile. Set this option to YES to get a
-# higher quality PDF documentation.
-
-USE_PDFLATEX           = YES
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
-# command to the generated LaTeX files. This will instruct LaTeX to keep
-# running if errors occur, instead of asking the user for help.
-# This option is also used when generating formulas in HTML.
-
-LATEX_BATCHMODE        = NO
-
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not
-# include the index chapters (such as File Index, Compound Index, etc.)
-# in the output.
-
-LATEX_HIDE_INDICES     = NO
-
-# If LATEX_SOURCE_CODE is set to YES then doxygen will include
-# source code with syntax highlighting in the LaTeX output.
-# Note that which sources are shown also depends on other settings
-# such as SOURCE_BROWSER.
-
-LATEX_SOURCE_CODE      = NO
-
-# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
-# bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See
-# http://en.wikipedia.org/wiki/BibTeX for more info.
-
-LATEX_BIB_STYLE        = plain
-
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
-# The RTF output is optimized for Word 97 and may not look very pretty with
-# other RTF readers or editors.
-
-GENERATE_RTF           = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `rtf' will be used as the default path.
-
-RTF_OUTPUT             = rtf
-
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
-# RTF documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_RTF            = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
-# will contain hyperlink fields. The RTF file will
-# contain links (just like the HTML output) instead of page references.
-# This makes the output suitable for online browsing using WORD or other
-# programs which support those fields.
-# Note: wordpad (write) and others do not support links.
-
-RTF_HYPERLINKS         = NO
-
-# Load style sheet definitions from file. Syntax is similar to doxygen's
-# config file, i.e. a series of assignments. You only have to provide
-# replacements, missing definitions are set to their default value.
-
-RTF_STYLESHEET_FILE    =
-
-# Set optional variables used in the generation of an rtf document.
-# Syntax is similar to doxygen's config file.
-
-RTF_EXTENSIONS_FILE    =
-
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
-# generate man pages
-
-GENERATE_MAN           = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `man' will be used as the default path.
-
-MAN_OUTPUT             = man
-
-# The MAN_EXTENSION tag determines the extension that is added to
-# the generated man pages (default is the subroutine's section .3)
-
-MAN_EXTENSION          = .3
-
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
-# then it will generate one additional man file for each entity
-# documented in the real man page(s). These additional files
-# only source the real man page, but without them the man command
-# would be unable to find the correct page. The default is NO.
-
-MAN_LINKS              = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES Doxygen will
-# generate an XML file that captures the structure of
-# the code including all documentation.
-
-GENERATE_XML           = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `xml' will be used as the default path.
-
-XML_OUTPUT             = xml
-
-# The XML_SCHEMA tag can be used to specify an XML schema,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_SCHEMA             =
-
-# The XML_DTD tag can be used to specify an XML DTD,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_DTD                =
-
-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
-# dump the program listings (including syntax highlighting
-# and cross-referencing information) to the XML output. Note that
-# enabling this will significantly increase the size of the XML output.
-
-XML_PROGRAMLISTING     = YES
-
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
-# generate an AutoGen Definitions (see autogen.sf.net) file
-# that captures the structure of the code including all
-# documentation. Note that this feature is still experimental
-# and incomplete at the moment.
-
-GENERATE_AUTOGEN_DEF   = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES Doxygen will
-# generate a Perl module file that captures the structure of
-# the code including all documentation. Note that this
-# feature is still experimental and incomplete at the
-# moment.
-
-GENERATE_PERLMOD       = NO
-
-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
-# the necessary Makefile rules, Perl scripts and LaTeX code to be able
-# to generate PDF and DVI output from the Perl module output.
-
-PERLMOD_LATEX          = NO
-
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
-# nicely formatted so it can be parsed by a human reader.
-# This is useful
-# if you want to understand what is going on.
-# On the other hand, if this
-# tag is set to NO the size of the Perl module output will be much smaller
-# and Perl will parse it just the same.
-
-PERLMOD_PRETTY         = YES
-
-# The names of the make variables in the generated doxyrules.make file
-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
-# This is useful so different doxyrules.make files included by the same
-# Makefile don't overwrite each other's variables.
-
-PERLMOD_MAKEVAR_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
-# evaluate all C-preprocessor directives found in the sources and include
-# files.
-
-ENABLE_PREPROCESSING   = YES
-
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
-# names in the source code. If set to NO (the default) only conditional
-# compilation will be performed. Macro expansion can be done in a controlled
-# way by setting EXPAND_ONLY_PREDEF to YES.
-
-MACRO_EXPANSION        = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
-# then the macro expansion is limited to the macros specified with the
-# PREDEFINED and EXPAND_AS_DEFINED tags.
-
-EXPAND_ONLY_PREDEF     = NO
-
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
-# pointed to by INCLUDE_PATH will be searched when a #include is found.
-
-SEARCH_INCLUDES        = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by
-# the preprocessor.
-
-INCLUDE_PATH           =
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
-# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will
-# be used.
-
-INCLUDE_FILE_PATTERNS  =
-
-# The PREDEFINED tag can be used to specify one or more macro names that
-# are defined before the preprocessor is started (similar to the -D option of
-# gcc). The argument of the tag is a list of macros of the form: name
-# or name=definition (no spaces). If the definition and the = are
-# omitted =1 is assumed. To prevent a macro definition from being
-# undefined via #undef or recursively expanded use the := operator
-# instead of the = operator.
-
-PREDEFINED             = DOXYGEN_SHOULD_SKIP_THIS
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
-# this tag can be used to specify a list of macro names that should be expanded.
-# The macro definition that is found in the sources will be used.
-# Use the PREDEFINED tag if you want to use a different macro definition that
-# overrules the definition found in the source code.
-
-EXPAND_AS_DEFINED      =
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
-# doxygen's preprocessor will remove all references to function-like macros
-# that are alone on a line, have an all uppercase name, and do not end with a
-# semicolon, because these will confuse the parser if not removed.
-
-SKIP_FUNCTION_MACROS   = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to external references
-#---------------------------------------------------------------------------
-
-# The TAGFILES option can be used to specify one or more tagfiles. For each
-# tag file the location of the external documentation should be added. The
-# format of a tag file without this location is as follows:
-#
-# TAGFILES = file1 file2 ...
-# Adding location for the tag files is done as follows:
-#
-# TAGFILES = file1=loc1 "file2 = loc2" ...
-# where "loc1" and "loc2" can be relative or absolute paths
-# or URLs. Note that each tag file must have a unique name (where the name does
-# NOT include the path). If a tag file is not located in the directory in which
-# doxygen is run, you must also specify the path to the tagfile here.
-
-TAGFILES               =
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create
-# a tag file that is based on the input files it reads.
-
-GENERATE_TAGFILE       =
-
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed
-# in the class index. If set to NO only the inherited external classes
-# will be listed.
-
-ALLEXTERNALS           = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
-# in the modules index. If set to NO, only the current project's groups will
-# be listed.
-
-EXTERNAL_GROUPS        = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of `which perl').
-
-PERL_PATH              = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
-# or super classes. Setting the tag to NO turns the diagrams off. Note that
-# this option also works with HAVE_DOT disabled, but it is recommended to
-# install and use dot, since it yields more powerful graphs.
-
-CLASS_DIAGRAMS         = YES
-
-# You can define message sequence charts within doxygen comments using the \msc
-# command. Doxygen will then run the mscgen tool (see
-# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
-# documentation. The MSCGEN_PATH tag allows you to specify the directory where
-# the mscgen tool resides. If left empty the tool is assumed to be found in the
-# default search path.
-
-MSCGEN_PATH            =
-
-# If set to YES, the inheritance and collaboration graphs will hide
-# inheritance and usage relations if the target is undocumented
-# or is not a class.
-
-HIDE_UNDOC_RELATIONS   = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz, a graph visualization
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section
-# have no effect if this option is set to NO (the default)
-
-HAVE_DOT               = YES
-
-# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is
-# allowed to run in parallel. When set to 0 (the default) doxygen will
-# base this on the number of processors available in the system. You can set it
-# explicitly to a value larger than 0 to get control over the balance
-# between CPU load and processing speed.
-
-DOT_NUM_THREADS        = 0
-
-# By default doxygen will use the Helvetica font for all dot files that
-# doxygen generates. When you want a differently looking font you can specify
-# the font name using DOT_FONTNAME. You need to make sure dot is able to find
-# the font, which can be done by putting it in a standard location or by setting
-# the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the
-# directory containing the font.
-
-DOT_FONTNAME           = Helvetica
-
-# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
-# The default size is 10pt.
-
-DOT_FONTSIZE           = 10
-
-# By default doxygen will tell dot to use the Helvetica font.
-# If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to
-# set the path where dot can find it.
-
-DOT_FONTPATH           =
-
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect inheritance relations. Setting this tag to YES will force the
-# CLASS_DIAGRAMS tag to NO.
-
-CLASS_GRAPH            = YES
-
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect implementation dependencies (inheritance, containment, and
-# class references variables) of the class with other documented classes.
-
-COLLABORATION_GRAPH    = YES
-
-# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for groups, showing the direct groups dependencies
-
-GROUP_GRAPHS           = YES
-
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
-# collaboration diagrams in a style similar to the OMG's Unified Modeling
-# Language.
-
-UML_LOOK               = NO
-
-# If the UML_LOOK tag is enabled, the fields and methods are shown inside
-# the class node. If there are many fields or methods and many nodes the
-# graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS
-# threshold limits the number of items for each type to make the size more
-# managable. Set this to 0 for no limit. Note that the threshold may be
-# exceeded by 50% before the limit is enforced.
-
-UML_LIMIT_NUM_FIELDS   = 10
-
-# If set to YES, the inheritance and collaboration graphs will show the
-# relations between templates and their instances.
-
-TEMPLATE_RELATIONS     = NO
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
-# tags are set to YES then doxygen will generate a graph for each documented
-# file showing the direct and indirect include dependencies of the file with
-# other documented files.
-
-INCLUDE_GRAPH          = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
-# documented header file showing the documented files that directly or
-# indirectly include this file.
-
-INCLUDED_BY_GRAPH      = YES
-
-# If the CALL_GRAPH and HAVE_DOT options are set to YES then
-# doxygen will generate a call dependency graph for every global function
-# or class method. Note that enabling this option will significantly increase
-# the time of a run. So in most cases it will be better to enable call graphs
-# for selected functions only using the \callgraph command.
-
-CALL_GRAPH             = NO
-
-# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
-# doxygen will generate a caller dependency graph for every global function
-# or class method. Note that enabling this option will significantly increase
-# the time of a run. So in most cases it will be better to enable caller
-# graphs for selected functions only using the \callergraph command.
-
-CALLER_GRAPH           = NO
-
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
-# will generate a graphical hierarchy of all classes instead of a textual one.
-
-GRAPHICAL_HIERARCHY    = YES
-
-# If the DIRECTORY_GRAPH and HAVE_DOT tags are set to YES
-# then doxygen will show the dependencies a directory has on other directories
-# in a graphical way. The dependency relations are determined by the #include
-# relations between the files in the directories.
-
-DIRECTORY_GRAPH        = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot. Possible values are svg, png, jpg, or gif.
-# If left blank png will be used. If you choose svg you need to set
-# HTML_FILE_EXTENSION to xhtml in order to make the SVG files
-# visible in IE 9+ (other browsers do not have this requirement).
-
-DOT_IMAGE_FORMAT       = png
-
-# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
-# enable generation of interactive SVG images that allow zooming and panning.
-# Note that this requires a modern browser other than Internet Explorer.
-# Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you
-# need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files
-# visible. Older versions of IE do not have SVG support.
-
-INTERACTIVE_SVG        = NO
-
-# The tag DOT_PATH can be used to specify the path where the dot tool can be
-# found. If left blank, it is assumed the dot tool can be found in the path.
-
-DOT_PATH               =
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the
-# \dotfile command).
-
-DOTFILE_DIRS           =
-
-# The MSCFILE_DIRS tag can be used to specify one or more directories that
-# contain msc files that are included in the documentation (see the
-# \mscfile command).
-
-MSCFILE_DIRS           =
-
-# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
-# nodes that will be shown in the graph. If the number of nodes in a graph
-# becomes larger than this value, doxygen will truncate the graph, which is
-# visualized by representing a node as a red box. Note that doxygen if the
-# number of direct children of the root node in a graph is already larger than
-# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
-# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
-
-DOT_GRAPH_MAX_NODES    = 50
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
-# graphs generated by dot. A depth value of 3 means that only nodes reachable
-# from the root by following a path via at most 3 edges will be shown. Nodes
-# that lay further from the root node will be omitted. Note that setting this
-# option to 1 or 2 may greatly reduce the computation time needed for large
-# code bases. Also note that the size of a graph can be further restricted by
-# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
-
-MAX_DOT_GRAPH_DEPTH    = 0
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
-# background. This is disabled by default, because dot on Windows does not
-# seem to support this out of the box. Warning: Depending on the platform used,
-# enabling this option may lead to badly anti-aliased labels on the edges of
-# a graph (i.e. they become hard to read).
-
-DOT_TRANSPARENT        = NO
-
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
-# files in one run (i.e. multiple -o and -T options on the command line). This
-# makes dot run faster, but since only newer versions of dot (>1.8.10)
-# support this, this feature is disabled by default.
-
-DOT_MULTI_TARGETS      = NO
-
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
-# generate a legend page explaining the meaning of the various boxes and
-# arrows in the dot generated graphs.
-
-GENERATE_LEGEND        = YES
-
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
-# remove the intermediate dot files that are used to generate
-# the various graphs.
-
-DOT_CLEANUP            = YES
diff --git a/doc/Makefile.am b/doc/Makefile.am
deleted file mode 100644
index e604c94..0000000
--- a/doc/Makefile.am
+++ /dev/null
@@ -1,17 +0,0 @@
-if HAVE_DOXYGEN
-#directory = $(top_srcdir)/doc/man/man3/
-#dist_man_MANS = $(directory)/man_page_1.3 $(directory)/man_page_2.3
-#$(directory)/man_page_1.3: doxyfile.stamp
-#$(directory)/man_page_2.3: doxyfile.stamp
-
-doxyfile.stamp:
-#	$(top_srcdir)/doc/createappsdox.sh $(top_srcdir)
-	$(DOXYGEN) Doxyfile
-	echo Timestamp > doxyfile.stamp
-
-CLEANFILES = doxyfile.stamp
-
-all-local: doxyfile.stamp
-clean-local:
-	rm -rf $(top_srcdir)/doc/html
-endif 
diff --git a/doc/apps.dox b/doc/apps.dox
index b0ee58a..b620db3 100644
--- a/doc/apps.dox
+++ b/doc/apps.dox
@@ -11,6 +11,8 @@
 - \ref pkdumpogr  dump ogr file to text file or standard output
 - \ref pkegcs  Utility for raster files in European Grid Coordinate System
 - \ref pkextract  extract pixel values from raster image from a (vector or raster) sample
+- \ref pkextractimg  extract pixel values from raster image using a raster sample
+- \ref pkextractogr  extract pixel values from raster image from a (vector or raster) sample
 - \ref pkfillnodata  program to fill holes in raster image
 - \ref pkfilterascii  program to filter data in an ASCII file
 - \ref pkfilter  program to filter raster images
diff --git a/doc/apps.dox~ b/doc/apps.dox~
deleted file mode 100644
index 836cf34..0000000
--- a/doc/apps.dox~
+++ /dev/null
@@ -1,35 +0,0 @@
-\section available_tools Available tools
-- \ref pkann  classify raster image using Artificial Neural Network
-- \ref pkascii2img  program to create raster image based on ascii file
-- \ref pkascii2ogr  program to create vector points or polygons from text file
-- \ref pkcomposite  program to mosaic and composite geo-referenced images
-- \ref pkcreatect  program to create and import colour table to GTiff image
-- \ref pkcrop  perform raster data operations on image such as crop, extract and stack bands
-- \ref pkdiff  program to compare two raster image files
-- \ref pkdsm2shadow  program to calculate sun shadow based on digital surface model and sun angles
-- \ref pkdumpimg  program to dump image content to ascii or std out
-- \ref pkdumpogr  dump ogr file to text file or standard output
-- \ref pkegcs  Utility for raster files in European Grid Coordinate System
-- \ref pkextract  extract pixel values from raster image from a (vector or raster) sample
-- \ref pkfillnodata  program to fill holes in raster image
-- \ref pkfilterascii  program to filter data in an ASCII file
-- \ref pkfilter  program to filter raster images
-- \ref pkfilterdem  Filter digital elevation model raster datasets
-- \ref pkfsann  feature selection for artificial neural network classifier pkann
-- \ref pkfssvm  feature selection for support vector machine classifier pksvm
-- \ref pkgetmask  program to create mask image based on values in input raster image
-- \ref pkinfo  Report basic information from raster datasets (similar to gdalinfo)
-- \ref pkkalman1 
-- \ref pkkalman  produce kalman filtered raster time series
-- \ref pklas2img  Rasterize LAS/LAZ point clouds with filtering/compositing options
-- \ref pkoptsvm  program to optimize parameters for support vector machine classifier pksvm
-- \ref pkpolygonize  program to make vector file from raster image
-- \ref pkreclass  program to replace pixel values in raster image
-- \ref pkregann  regression with artificial neural network (multi-layer perceptron)
-- \ref pksetmask  program to apply mask image (set invalid values) to raster image
-- \ref pksieve  program to sieve filter raster image
-- \ref pkstatascii  program to calculate basic statistics from text file
-- \ref pkstat  program to calculate basic statistics from raster dataset
-- \ref pkstatogr  program to calculate basic statistics from vector file
-- \ref pkstatprofile  program to calculate statistics in temporal or spectral profile
-- \ref pksvm  classify raster image using Support Vector Machine
diff --git a/doc/examples_pkkalman.dox b/doc/examples_pkkalman.dox
deleted file mode 100644
index c0a26cf..0000000
--- a/doc/examples_pkkalman.dox
+++ /dev/null
@@ -1,31 +0,0 @@
-\section examples_pkkalman Examples of pkkalman
-
-Assimilate fine spatial resolution NDVI time series acquired at (100 m) with median spatial resolution NDVI time series (300 m). Both time series consist of ten acquisitions in time (provided as a multi-band raster dataset), but fine spatial resolution data are sparse due to cloud coverage. Missing data are characterized by the option -obsnodata. Coarse spatial resolution data have occasional cloud cover too (-modnodata 255). The spatial coverage of the model must be at least the spatial [...]
-
-\code
-pkkalman -obs fine_10band.tif -mod coarse_10band.tif -obsnodata 255 -modnodata 255 -dir forward -ofw fine_filled.tif
-\endcode
-
-Same as above, but run in forward, backward and smooth mode. Here we provide output filenames for the uncertainties of the predicted time series.
-
-\code
-pkkalman -obs fine_10band.tif -mod coarse_10band.tif -obsnodata 255 -modnodata 255 -dir forward -ofw fine_forward_10band.tif -u_ofw fine_forward_uncert_10band.tif -dir backward -ofb fine_backward_10band.tif -u_obw fine_backward_uncert_10band.tif -dir smooth -ofw fine_smooth_10band.tif -u_ofb fine_smooth_uncert_10band.tif
-\endcode
-
-If the observation time series is not complete, i.e., has less acquisitions than the model, we must explicitly provide the time sequence. Here, the observation at fine spatial resolution is based on two acquisitions only (at times 3 and 8). The model at coarse spatial resolution is based on ten acquisitions (at times 1-10).
-
-\code
-pkkalman -obs fine_2band.tif -mod coarse_10band.tif -obsnodata 255 -modnodata 255 -dir forward -ofw fine_forward_10band.tif -tmod 1 -tmod 2 -tmod 3 -tmod 4 -tmod 5 -tmod 6 -tmod 7 -tmod 8 -tmod 9 -tmod 10 -tobs 3 -tobs 8
-\endcode
-
-In the following example the missing data are not coded within the observations, but read from an external mask:
-
-\code
-pkkalman -obs fine_10band.tif -mod coarse_10band.tif -obsmask finemask_10band.tif -modmask coarsemask_10band.tif -msknodata 1 -mskband 0 -dir forward -ofw fine_forward_10band.tif
-\endcode
-
-The observations and model can be provided as multiple single-band raster datasets. The time sequence for the two observations and ten model inputs are explicitly provided via the options -tobs and tmod.
-
-\code
-pkkalman -obs fine_1.tif -obs fine_2.tif -obsmask finemask_1.tif -obs finemask_2.tif -mod coarse_1.tif -mod coarse_2.tif -mod coarse_3.tif -mod coarse_4.tif -mod coarse_5.tif -mod coarse_6.tif -mod coarse_7.tif -mod coarse_8.tif -mod coarse_9.tif -mod coarse_10.tif -modmask coarsemask_1.tif -modmask coarsemask_2.tif -modmask coarsemask_3.tif -modmask coarsemask_4.tif -modmask coarsemask_5.tif -modmask coarsemask_6.tif -modmask coarsemask_7.tif -modmask coarsemask_8.tif -modmask coarsemas [...]
-\endcode
diff --git a/doc/examples_pkkalman.dox~ b/doc/examples_pkkalman.dox~
deleted file mode 100644
index 9cf0f99..0000000
--- a/doc/examples_pkkalman.dox~
+++ /dev/null
@@ -1,14 +0,0 @@
-\section examples_pkkalman Examples of pkkalman
-
-Assimilate fine spatial resolution NDVI time series acquired at (100 m) with median spatial resolution NDVI time series (300 m). Both time series have temporal resolution of 10 days, but fine spatial resolution data are sparse due to cloud coverage (missing data characterized by -obsnodata 255). Coarse spatial resolution data have occasional cloud cover too (-modnodata 255). Run the kalman filter in forward mode only.
-
-\code
-pkkalman -obs fine.tif -mod coarse.tif -obsnodata 255 -modnodata 255 -dir forward -ofw fine_filled.tif
-\endcode
-
-Same as above, but run in forward, backward and smooth mode. Write uncertainties of predicted time series as fine_forward_uncert.tif.
-
-\code
-pkkalman -obs fine.tif -mod coarse.tif -obsnodata 255 -modnodata 255 -dir forward -ofw fine_forward.tif -dir backward -ofb fine_backward.tif -dir smooth -ofw fine_smooth.tif -u_ofw fine_forward_uncert.tif -u_obw fine_backward_uncert.tif -u_ofb fine_smooth_uncert.tif
-\endcode
-
diff --git a/doc/faq_pksetmask.dox b/doc/faq_pksetmask.dox
index f87e284..1501246 100644
--- a/doc/faq_pksetmask.dox
+++ b/doc/faq_pksetmask.dox
@@ -4,5 +4,5 @@
 
  A1. This can be done using two masks, selecting the input image as the secondary mask. Choose the secondary operator acting on the secondary mask such that the condition is always true (e.g, < 255 ).
 \code
-pksetmask -i input.tif -m mask.tif -t 1 -f 0 --operator '='  -m input.tif -t 255 -f 255 --operator '<'  -o output.tif
+pksetmask -i input.tif -m mask.tif -t nodata -msknodata 0 --operator '='  -m input.tif -nodata 255 -msknodata 255 --operator '<'  -o output.tif
 \endcode
diff --git a/doc/header.dox b/doc/header.dox
deleted file mode 100644
index 72e0d33..0000000
--- a/doc/header.dox
+++ /dev/null
@@ -1,16 +0,0 @@
-\section thetool thetool
-theshortdescription
-
-## SYNOPSIS
-<code>
-thesynopsis
-</code>
-
-## DESCRIPTION ##
-thelongdescription
-
-## OPTIONS ##
- - use either `-short` or `--long` options (both `--long=value` and `--long value` are supported)
- - short option `-h` shows basic options only, long option `--help` shows all options
-|short|long|type|default|description|
-|-----|----|----|-------|-----------|
diff --git a/doc/html/ConfusionMatrix_8cc_source.html b/doc/html/ConfusionMatrix_8cc_source.html
deleted file mode 100644
index 15b696c..0000000
--- a/doc/html/ConfusionMatrix_8cc_source.html
+++ /dev/null
@@ -1,358 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/algorithms/ConfusionMatrix.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_e6df591b0639d4c4807ef64d058833e2.html">algorithms</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">ConfusionMatrix.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">ConfusionMatrix.cc: class for (classification accuracy) confusion matrix</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2012 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "ConfusionMatrix.h"</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <iostream></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <numeric></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> </div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="keyword">using namespace </span>confusionmatrix;</div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keywordtype">bool</span> compareClass(<span class="keyword">const</span> std::string& string1, <span class="keyword">const</span> std::string& string2){</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span>   <span class="keywordtype">int</span> int1=string2type<int>(string1);</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span>   <span class="keywordtype">int</span> int2=string2type<int>(string2);</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span>   <span class="keywordflow">return</span>(int1<int2);</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> };</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> </div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> ConfusionMatrix::ConfusionMatrix()</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>   : m_classes(),m_results(),m_se95(true),m_format(ASCII)</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> {</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> }</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> </div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> ConfusionMatrix::~ConfusionMatrix()</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> {</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> }</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> </div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="comment">//constructor where class names are 0,1,...,nclass-1</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span> ConfusionMatrix::ConfusionMatrix(<span class="keywordtype">short</span> nclass){</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   resize(nclass);</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span> }</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span> </div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span> ConfusionMatrix::ConfusionMatrix(<span class="keyword">const</span> std::vector<std::string>& classNames){</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   setClassNames(classNames);</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span> }</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span> </div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span> <span class="comment">//copy constructor</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span> ConfusionMatrix::ConfusionMatrix(<span class="keyword">const</span> <a class="code" href="classconfusionmatrix_1_1ConfusionMatrix.html">ConfusionMatrix</a>& cm){</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>   setClassNames(cm.m_classes);</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>   setResults(cm.m_results);</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span> }</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span> </div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span> <span class="comment">//assignment operator</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span> <a class="code" href="classconfusionmatrix_1_1ConfusionMatrix.html">ConfusionMatrix</a>& ConfusionMatrix::operator=(<span class="keyword">const</span> <a class="code" href="classconfusionmatrix_1_1ConfusionMatrix.html">ConfusionMatrix</a>& cm){</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>   <span class="comment">//check for self-assignment by comparing the address of the implicit object and parameter</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>   <span class="keywordflow">if</span>(<span class="keyword">this</span>==&cm)</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     setClassNames(cm.m_classes);</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     setResults(cm.m_results);</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>   }</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>   <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span> }</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span> </div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span> <a class="code" href="classconfusionmatrix_1_1ConfusionMatrix.html">ConfusionMatrix</a>& ConfusionMatrix::operator+=(<span class="keyword">const</span> <a class="code" href="classconfusionmatrix_1_1ConfusionMatrix.html">ConfusionMatrix</a> &cm)</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span> {</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>   <span class="keywordflow">if</span>(cm.m_classes.size()!=this->m_classes.size()){</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     std::cerr << <span class="stringliteral">"error0: "</span><< cm.m_classes.size() << <span class="stringliteral">"!="</span> << this->m_classes.size() << std::endl;</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>     exit(0);</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>   }</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>   <span class="keywordflow">if</span>(cm.m_results.size()!=this->m_results.size()){</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>     std::cerr << <span class="stringliteral">"error1: "</span><< cm.m_results.size() << <span class="stringliteral">"!="</span> << this->m_results.size() << std::endl;</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>     exit(1);</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>   }</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<m_results.size();++irow){</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>     <span class="keywordflow">if</span>(cm.m_results[irow].size()!=this->m_results[irow].size()){</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>       std::cerr << <span class="stringliteral">"error2: "</span> << cm.m_results[irow].size() << <span class="stringliteral">"!="</span> << this->m_results[irow].size() << std::endl;</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>       exit(2);</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     }</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<m_results[irow].size();++icol)</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>       this->m_results[irow][icol]+=cm.m_results[irow][icol];</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>   }</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span> }</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span> </div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span> <a class="code" href="classconfusionmatrix_1_1ConfusionMatrix.html">ConfusionMatrix</a>& ConfusionMatrix::operator*=(<span class="keywordtype">double</span> weight)</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span> {</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<m_results.size();++irow){</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<m_results[irow].size();++icol)</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>       m_results[irow][icol]*=weight;</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   }</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span> }</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span> </div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span> <span class="keywordtype">void</span> ConfusionMatrix::sortClassNames(){</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>   sort(m_classes.begin(),m_classes.end(),compareClass);</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span> }</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span> </div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span> <a class="code" href="classconfusionmatrix_1_1ConfusionMatrix.html">ConfusionMatrix</a> ConfusionMatrix::operator*(<span class="keywordtype">double</span> weight)</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span> {</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>   <a class="code" href="classconfusionmatrix_1_1ConfusionMatrix.html">ConfusionMatrix</a> result = *<span class="keyword">this</span>;<span class="comment">//make a copy of myself</span></div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>   result*=weight;</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>   <span class="keywordflow">return</span> result;</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span> }</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span> </div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span> <span class="keywordtype">void</span> ConfusionMatrix::resize(<span class="keywordtype">short</span> nclass){</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   m_classes.resize(nclass);</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>   <span class="keywordflow">for</span>(<span class="keywordtype">short</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>     std::ostringstream osclass;</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     osclass << iclass;</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     m_classes[iclass]=osclass.str();</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>   }</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>   m_results.resize(nclass,nclass);</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span> }</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span> </div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span> <span class="keywordtype">void</span> ConfusionMatrix::setClassNames(<span class="keyword">const</span> std::vector<std::string>& classNames, <span class="keywordtype">bool</span> doSort){</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>   m_classes=classNames;</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>   <span class="keywordflow">if</span>(doSort)</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>     sortClassNames();</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>   <span class="keywordflow">if</span>(m_results.size()!=m_classes.size())</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     m_results.resize(m_classes.size(),m_classes.size());</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span> }</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span> </div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span> <span class="keywordtype">void</span> ConfusionMatrix::pushBackClassName(<span class="keyword">const</span> std::string& className, <span class="keywordtype">bool</span> doSort){</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>   m_classes.push_back(className);</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>   <span class="keywordflow">if</span>(doSort)</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>     sortClassNames();</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>   <span class="keywordflow">if</span>(m_results.size()!=m_classes.size())</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>     m_results.resize(m_classes.size(),m_classes.size());</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span> }  </div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span> </div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span> </div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span> <span class="keywordtype">void</span> ConfusionMatrix::setResults(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<double></a>& theResults){</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>   m_results=theResults;</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span> }</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span> </div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span> <span class="keywordtype">void</span> ConfusionMatrix::clearResults(){</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>   m_results.clear();</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>   m_results.resize(m_classes.size(),m_classes.size());</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span> }</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span> </div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span> <span class="keywordtype">void</span> ConfusionMatrix::setResult(<span class="keyword">const</span> std::string& theRef, <span class="keyword">const</span> std::string& theClass, <span class="keywordtype">double</span> theResult){</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>   <span class="comment">// int ir=distance(m_classes.begin(),find(m_classes.begin(),m_classes.end(),theRef));</span></div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>   <span class="comment">// int ic=distance(m_classes.begin(),find(m_classes.begin(),m_classes.end(),theClass));</span></div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>   <span class="comment">// assert(ir>=0);</span></div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>   <span class="comment">// assert(ir<m_results.size());</span></div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>   <span class="comment">// assert(ic>=0);</span></div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>   <span class="comment">// assert(ic<m_results[ir].size());</span></div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>   <span class="keywordtype">int</span> ir=getClassIndex(theRef);</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>   <span class="keywordtype">int</span> ic=getClassIndex(theClass);</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>   m_results[ir][ic]=theResult;</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span> }</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span> </div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span> <span class="keywordtype">void</span> ConfusionMatrix::incrementResult(<span class="keyword">const</span> std::string& theRef, <span class="keyword">const</span> std::string& theClass, <span class="keywordtype">double</span> theIncrement){</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>   <span class="comment">// int ir=distance(m_classes.begin(),find(m_classes.begin(),m_classes.end(),theRef));</span></div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   <span class="comment">// int ic=distance(m_classes.begin(),find(m_classes.begin(),m_classes.end(),theClass));</span></div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>   <span class="keywordtype">int</span> ir=getClassIndex(theRef);</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>   <span class="keywordtype">int</span> ic=getClassIndex(theClass);</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>   assert(ir>=0);</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>   <span class="keywordflow">if</span>(ir>=m_results.size())</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>     std::cerr << <span class="stringliteral">"Error: "</span> << theRef << <span class="stringliteral">" not found in class ConfusionMatrix when incrementing for class "</span> << theClass << std::endl;</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>   assert(ir<m_results.size());</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>   assert(ic>=0);</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>   assert(ic<m_results[ir].size());</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>   m_results[ir][ic]+=theIncrement;</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span> }</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span> </div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span> <span class="keywordtype">double</span> ConfusionMatrix::nReference(<span class="keyword">const</span> std::string& theRef)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>   <span class="comment">// int ir=distance(m_classes.begin(),find(m_classes.begin(),m_classes.end(),theRef));</span></div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>   <span class="keywordtype">int</span> ir=getClassIndex(theRef);</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>   <span class="keywordflow">return</span> accumulate(m_results[ir].begin(),m_results[ir].end(),0);</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span> }</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span> </div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span> <span class="keywordtype">double</span> ConfusionMatrix::nReference()<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>   <span class="keywordtype">double</span> nref=0;</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ir=0;ir<m_classes.size();++ir)</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>     nref+=accumulate(m_results[ir].begin(),m_results[ir].end(),0);</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>   <span class="keywordflow">return</span> nref;</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span> }</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span> </div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span> <span class="keywordtype">double</span> ConfusionMatrix::nClassified(<span class="keyword">const</span> std::string& theClass)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>   <span class="comment">// int ic=distance(m_classes.begin(),find(m_classes.begin(),m_classes.end(),theClass));</span></div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>   <span class="keywordtype">int</span> ic=getClassIndex(theClass);</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>   <span class="keywordtype">double</span> nclassified=0;</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iref=0;iref<m_results.size();++iref){</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>     assert(ic<m_results[iref].size());</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>     nclassified+=m_results[iref][ic];</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>   }</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>   <span class="keywordflow">return</span>(nclassified);</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span> }</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span> </div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span> <span class="keywordtype">double</span> ConfusionMatrix::pa(<span class="keyword">const</span> std::string& theClass, <span class="keywordtype">double</span>* se95)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>   assert(m_results.size());</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>   assert(m_results.size()==m_classes.size());</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>   <span class="keywordtype">double</span> producer=0;</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>   <span class="comment">// int ir=distance(m_classes.begin(),find(m_classes.begin(),m_classes.end(),theClass));</span></div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>   <span class="keywordtype">int</span> ir=getClassIndex(theClass);</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>   assert(ir>=0);</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>   assert(ir<m_results.size());</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>   assert(!theClass.compare(m_classes[ir]));</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<m_results.size();++iclass){</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>     assert(iclass<m_results[ir].size());</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>     producer+=m_results[ir][iclass];</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>   }</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>   <span class="keywordtype">double</span> dpa=(producer>0)? static_cast<double>(m_results[ir][ir])/producer : 0;</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>   <span class="keywordtype">double</span> dqa=1.0-dpa;</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>   <span class="keywordflow">if</span>(se95!=NULL)</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>     *se95=(dpa<1&&dpa>0)? sqrt(dpa*dqa/(producer-1)) : 0;</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>   <span class="keywordflow">return</span> dpa;</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span> }</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span> </div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span> <span class="keywordtype">int</span> ConfusionMatrix::pa_pct(<span class="keyword">const</span> std::string& theClass, <span class="keywordtype">double</span>* se95)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>   <span class="keywordtype">double</span> dpa=pa(theClass,se95);</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>   <span class="keywordflow">if</span>(se95!=NULL)</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>     *se95=<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(0.5+1000*(*se95)))/10.0;</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>   <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(0.5+100.0*dpa);</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span> }</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>     </div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span> </div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span> <span class="keywordtype">double</span> ConfusionMatrix::ua(<span class="keyword">const</span> std::string& theClass, <span class="keywordtype">double</span>* se95)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>   assert(m_results.size());</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>   assert(m_results.size()==m_classes.size());</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>   <span class="keywordtype">double</span> user=0;</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>   <span class="comment">// int ic=distance(m_classes.begin(),find(m_classes.begin(),m_classes.end(),theClass));</span></div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>   <span class="keywordtype">int</span> ic=getClassIndex(theClass);</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>   assert(ic>=0);</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>   assert(ic<m_results.size());</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>   assert(!theClass.compare(m_classes[ic]));</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iref=0;iref<m_results.size();++iref){</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>     assert(ic<m_results[iref].size());</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>     user+=m_results[iref][ic];</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>   }</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>   <span class="keywordtype">double</span> dua=(user>0)? static_cast<double>(m_results[ic][ic])/user : 0;</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>   <span class="keywordtype">double</span> dva=1.0-dva;</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>   <span class="keywordflow">if</span>(se95!=NULL)</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>     *se95=(dua<1&&dua>0)? sqrt(dua*dva/(user-1)) : 0;</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>   <span class="keywordflow">return</span> dua;</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span> }</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span> </div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span> <span class="keywordtype">int</span> ConfusionMatrix::ua_pct(<span class="keyword">const</span> std::string& theClass,<span class="keywordtype">double</span>* se95)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>   <span class="keywordtype">double</span> dua=ua(theClass,se95);</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>   <span class="keywordflow">if</span>(se95!=NULL)</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>     *se95=<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(0.5+1000*(*se95)))/10.0;</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>   <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(0.5+100.0*dua);</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span> }</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span> </div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span> <span class="keywordtype">double</span> ConfusionMatrix::oa(<span class="keywordtype">double</span>* se95)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>   <span class="keywordtype">double</span> ntotal=m_results.sum();</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>   <span class="keywordtype">double</span> pChance=0;</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>   <span class="keywordtype">double</span> pCorrect=0;</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<m_classes.size();++iclass)</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>     pCorrect+=static_cast<double>(m_results[iclass][iclass])/ntotal;</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>   <span class="keywordtype">double</span> qCorrect=1-pCorrect;</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>   <span class="keywordflow">if</span>(se95!=NULL)</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>     *se95=(pCorrect<1&&pCorrect>0)? sqrt(pCorrect*qCorrect/(ntotal-1)) : 0;</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>   <span class="keywordflow">if</span>(ntotal>0)</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>     <span class="keywordflow">return</span>(pCorrect);</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>     <span class="keywordflow">return</span>(0);</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span> }</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span> </div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span> <span class="keywordtype">int</span> ConfusionMatrix::oa_pct(<span class="keywordtype">double</span>* se95)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>   <span class="keywordtype">double</span> doa=oa(se95);</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>   <span class="keywordflow">if</span>(se95!=NULL)</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>     *se95=<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(0.5+1000*(*se95)))/10.0;</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>   <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(0.5+100.0*doa);</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span> }</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span> </div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span> <span class="keywordtype">double</span> ConfusionMatrix::kappa()<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>   <span class="keywordtype">double</span> ntotal=m_results.sum();</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>   <span class="keywordtype">double</span> pChance=0;</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>   <span class="keywordtype">double</span> pCorrect=0;</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<m_classes.size();++iclass){</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>     pChance+=nClassified(m_classes[iclass])*nReference(m_classes[iclass])/ntotal/ntotal;</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>     pCorrect+=<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(m_results[iclass][iclass])/ntotal;</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>   }</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>   <span class="keywordflow">if</span>(pChance<1)</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>     <span class="keywordflow">return</span>((pCorrect-pChance)/(1-pChance));</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>     <span class="keywordflow">return</span>(0);</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span> }</div>
-<div class="ttc" id="classVector2d_html"><div class="ttname"><a href="classVector2d.html">Vector2d< double ></a></div></div>
-<div class="ttc" id="classconfusionmatrix_1_1ConfusionMatrix_html"><div class="ttname"><a href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></div><div class="ttdef"><b>Definition:</b> <a href="ConfusionMatrix_8h_source.html#l00032">ConfusionMatrix.h:32</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/ConfusionMatrix_8h_source.html b/doc/html/ConfusionMatrix_8h_source.html
deleted file mode 100644
index aa1cccd..0000000
--- a/doc/html/ConfusionMatrix_8h_source.html
+++ /dev/null
@@ -1,272 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/algorithms/ConfusionMatrix.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_e6df591b0639d4c4807ef64d058833e2.html">algorithms</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">ConfusionMatrix.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">ConfusionMatrix.h: class for (classification accuracy) confusion matrix</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2012 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#ifndef _CONFUSIONMATRIX_H_</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor"></span><span class="preprocessor">#define _CONFUSIONMATRIX_H_</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <sstream></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <vector></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "base/Vector2d.h"</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> </div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">namespace </span>confusionmatrix</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> {</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>   <span class="keyword">enum</span> CM_FORMAT { ASCII = 0, LATEX = 1, HTML = 2 };</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> </div>
-<div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="classconfusionmatrix_1_1ConfusionMatrix.html">   32</a></span> <span class="keyword">class </span><a class="code" href="classconfusionmatrix_1_1ConfusionMatrix.html">ConfusionMatrix</a>{</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>   <a class="code" href="classconfusionmatrix_1_1ConfusionMatrix.html">ConfusionMatrix</a>();</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>   <a class="code" href="classconfusionmatrix_1_1ConfusionMatrix.html">ConfusionMatrix</a>(<span class="keywordtype">short</span> nclass);</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   <a class="code" href="classconfusionmatrix_1_1ConfusionMatrix.html">ConfusionMatrix</a>(<span class="keyword">const</span> std::vector<std::string>& classNames);</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>   <a class="code" href="classconfusionmatrix_1_1ConfusionMatrix.html">ConfusionMatrix</a>(<span class="keyword">const</span> <a class="code" href="classconfusionmatrix_1_1ConfusionMatrix.html">ConfusionMatrix</a>& cm);</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>   <a class="code" href="classconfusionmatrix_1_1ConfusionMatrix.html">ConfusionMatrix</a>& operator=(<span class="keyword">const</span> <a class="code" href="classconfusionmatrix_1_1ConfusionMatrix.html">ConfusionMatrix</a>& cm);</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>   <span class="keywordtype">short</span> size()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_results.size();};</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   <span class="keywordtype">void</span> resize(<span class="keywordtype">short</span> nclass);</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>   <span class="keywordtype">void</span> setClassNames(<span class="keyword">const</span> std::vector<std::string>& classNames, <span class="keywordtype">bool</span> doSort=<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   <span class="keywordtype">void</span> pushBackClassName(<span class="keyword">const</span> std::string& className, <span class="keywordtype">bool</span> doSort=<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   <span class="keywordtype">void</span> setResults(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<double></a>& theResults);</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   <span class="keywordtype">void</span> setResult(<span class="keyword">const</span> std::string& theRef, <span class="keyword">const</span> std::string& theClass, <span class="keywordtype">double</span> theResult);</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   <span class="keywordtype">void</span> incrementResult(<span class="keyword">const</span> std::string& theRef, <span class="keyword">const</span> std::string& theClass, <span class="keywordtype">double</span> theIncrement);</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>   <span class="keywordtype">void</span> clearResults();</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   <span class="keywordtype">double</span> nReference(<span class="keyword">const</span> std::string& theRef) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>   <span class="keywordtype">double</span> nReference() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>   <span class="keywordtype">double</span> nClassified(<span class="keyword">const</span> std::string& theRef) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>   <span class="keywordtype">int</span> nClasses()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_classes.size();};</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>   std::string getClass(<span class="keywordtype">int</span> iclass)<span class="keyword"> const </span>{assert(iclass>=0);assert(iclass<m_classes.size());<span class="keywordflow">return</span> m_classes[iclass];};</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>   <span class="keywordtype">int</span> getClassIndex(std::string className)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     <span class="keywordtype">int</span> index=0;</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     <span class="keywordflow">for</span>(index=0;index<m_classes.size();++index){</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>       <span class="keywordflow">if</span>(m_classes[index]==className)</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     }</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     <span class="keywordflow">if</span>(index>=m_classes.size())</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>       index=-1;</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     <span class="keywordflow">return</span> index;</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     <span class="comment">//    int index=distance(m_classes.begin(),find(m_classes.begin(),m_classes.end(),className));</span></div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     <span class="comment">//    assert(index>=0);</span></div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     <span class="comment">//    if(index<m_results.size())</span></div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     <span class="comment">//      return(index);</span></div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     <span class="comment">//    else</span></div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     <span class="comment">//      return(-1);</span></div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>   }</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>   std::vector<std::string> getClassNames()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_classes;};</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>   ~<a class="code" href="classconfusionmatrix_1_1ConfusionMatrix.html">ConfusionMatrix</a>();</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>   <span class="keywordtype">double</span> pa(<span class="keyword">const</span> std::string& theClass, <span class="keywordtype">double</span>* se95=NULL) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>   <span class="keywordtype">double</span> ua(<span class="keyword">const</span> std::string& theClass, <span class="keywordtype">double</span>* se95=NULL) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>   <span class="keywordtype">double</span> oa(<span class="keywordtype">double</span>* se95=NULL) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>   <span class="keywordtype">int</span> pa_pct(<span class="keyword">const</span> std::string& theClass, <span class="keywordtype">double</span>* se95=NULL) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>   <span class="keywordtype">int</span> ua_pct(<span class="keyword">const</span> std::string& theClass, <span class="keywordtype">double</span>* se95=NULL) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>   <span class="keywordtype">int</span> oa_pct(<span class="keywordtype">double</span>* se95=NULL) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>   <span class="keywordtype">double</span> kappa() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>   <a class="code" href="classconfusionmatrix_1_1ConfusionMatrix.html">ConfusionMatrix</a>& operator*=(<span class="keywordtype">double</span> weight);</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>   <a class="code" href="classconfusionmatrix_1_1ConfusionMatrix.html">ConfusionMatrix</a> operator*(<span class="keywordtype">double</span> weight);</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>   <a class="code" href="classconfusionmatrix_1_1ConfusionMatrix.html">ConfusionMatrix</a>& operator+=(<span class="keyword">const</span> <a class="code" href="classconfusionmatrix_1_1ConfusionMatrix.html">ConfusionMatrix</a> &cm);</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>   <a class="code" href="classconfusionmatrix_1_1ConfusionMatrix.html">ConfusionMatrix</a> operator+(<span class="keyword">const</span> <a class="code" href="classconfusionmatrix_1_1ConfusionMatrix.html">ConfusionMatrix</a> &cm){</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>     <span class="keywordflow">return</span> <a class="code" href="classconfusionmatrix_1_1ConfusionMatrix.html">ConfusionMatrix</a>(*<span class="keyword">this</span>)+=cm;</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>   }</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   <span class="keywordtype">void</span> sortClassNames();</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span> </div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>   <span class="keywordtype">void</span> reportSE95(<span class="keywordtype">bool</span> doReport) {m_se95=doReport;};</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   <span class="keywordtype">void</span> setFormat(<span class="keyword">const</span> CM_FORMAT& theFormat) {m_format=theFormat;};</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>   <span class="keywordtype">void</span> setFormat(<span class="keyword">const</span> std::string theFormat) {m_format=getFormat(theFormat);};</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   CM_FORMAT getFormat()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_format;};</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>  </div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>   <span class="keyword">static</span> <span class="keyword">const</span> CM_FORMAT getFormat(<span class="keyword">const</span> std::string theFormat){</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     <span class="keywordflow">if</span>(theFormat==<span class="stringliteral">"ascii"</span>) <span class="keywordflow">return</span>(ASCII);</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(theFormat==<span class="stringliteral">"latex"</span>) <span class="keywordflow">return</span>(LATEX);</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>       std::string errorString=<span class="stringliteral">"Format not supported: "</span>;</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>       errorString+=theFormat;</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>       errorString+=<span class="stringliteral">" use ascii or latex"</span>;</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>       <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     }</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>   };</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span> </div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>   <span class="keyword">friend</span> std::ostream& operator<<(std::ostream& os, <span class="keyword">const</span> <a class="code" href="classconfusionmatrix_1_1ConfusionMatrix.html">ConfusionMatrix</a> &cm){</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     std::ostringstream streamLine;</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     <span class="comment">/* streamosclass << iclass; */</span></div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     <span class="comment">/* m_classes[iclass]=osclass.str(); */</span></div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span> </div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     std::string fieldSeparator=<span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     std::string lineSeparator=<span class="stringliteral">""</span>;</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     std::string mathMode=<span class="stringliteral">""</span>;</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>     <span class="keywordflow">switch</span>(cm.getFormat()){</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>     <span class="keywordflow">case</span>(LATEX):</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>       fieldSeparator=<span class="stringliteral">" & "</span>;</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>       lineSeparator=<span class="stringliteral">"\\\\"</span>;</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>       mathMode=<span class="stringliteral">"$"</span>;</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     <span class="keywordflow">case</span>(ASCII):</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>       fieldSeparator=<span class="stringliteral">"\t"</span>;</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>       lineSeparator=<span class="stringliteral">""</span>;</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>       mathMode=<span class="stringliteral">""</span>;</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>     }</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span> </div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>     <span class="keywordtype">double</span> se95_ua=0;</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     <span class="keywordtype">double</span> se95_pa=0;</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>     <span class="keywordtype">double</span> se95_oa=0;</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     <span class="keywordtype">double</span> dua=0;</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>     <span class="keywordtype">double</span> dpa=0;</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>     <span class="keywordtype">double</span> doa=0;</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span> </div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>     doa = cm.oa(&se95_oa);</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span> </div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>     <span class="keywordflow">if</span>(cm.getFormat()==LATEX){</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>       os << <span class="stringliteral">"\\documentclass{article}"</span> << std::endl;</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>       os << <span class="stringliteral">"\\begin{document}"</span> << std::endl;</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>     }</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>     os << <span class="stringliteral">"Kappa = "</span> << mathMode << cm.kappa() << mathMode ;</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>     os << <span class="stringliteral">", Overall Acc. = "</span> << mathMode << 100.0*cm.oa() << mathMode ;</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>     <span class="keywordflow">if</span>(cm.m_se95)</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>       os << <span class="stringliteral">" ("</span> << mathMode << se95_oa << mathMode << <span class="stringliteral">")"</span>;</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>     os << std::endl;</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>     os << std::endl;</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>     <span class="keywordflow">if</span>(cm.getFormat()==LATEX){</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>       os << <span class="stringliteral">"\\begin{tabular}{@{}l"</span>;</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<cm.nClasses();++iclass)</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>     os << <span class="stringliteral">"l"</span>;</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>       os << <span class="stringliteral">"}"</span> << std::endl;</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>       os << <span class="stringliteral">"\\hline"</span> << std::endl;</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>     }</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>     </div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>     os << <span class="stringliteral">"Class"</span>;</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<cm.nClasses();++iclass)</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>       os << fieldSeparator << cm.m_classes[iclass];</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>     os << lineSeparator << std::endl;</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>     <span class="keywordflow">if</span>(cm.getFormat()==LATEX)</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>       os << <span class="stringliteral">"\\hline"</span> << std::endl;</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>     assert(cm.m_classes.size()==cm.m_results.size());</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<cm.m_results.size();++irow){</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>       os << cm.m_classes[irow];</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<cm.m_results[irow].size();++icol)</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>         os << fieldSeparator << cm.m_results[irow][icol];</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>       os << lineSeparator<< std::endl;</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>     }</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>     <span class="keywordflow">if</span>(cm.getFormat()==LATEX){</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>       os << <span class="stringliteral">"\\hline"</span> << std::endl;</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>     }</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>       os << std::endl;</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span> </div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>     os << <span class="stringliteral">"User' Acc."</span>;</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<cm.nClasses();++iclass){</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>       dua=cm.ua_pct(cm.m_classes[iclass],&se95_ua);</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>       os << fieldSeparator << dua;</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>       <span class="keywordflow">if</span>(cm.m_se95)</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>     os << <span class="stringliteral">" ("</span> << se95_ua << <span class="stringliteral">")"</span>;</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>     }</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>     os << lineSeparator<< std::endl;</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>     os << <span class="stringliteral">"Prod. Acc."</span>;</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<cm.nClasses();++iclass){</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>       dpa=cm.pa_pct(cm.m_classes[iclass],&se95_ua);</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>       os << fieldSeparator << dpa;</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>       <span class="keywordflow">if</span>(cm.m_se95)</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>     os << <span class="stringliteral">" ("</span> << se95_pa << <span class="stringliteral">")"</span>;</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>     }</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>     os << lineSeparator<< std::endl;</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>     <span class="keywordflow">if</span>(cm.getFormat()==LATEX){</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>       os << <span class="stringliteral">"\\end{tabular}"</span> << std::endl;</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>       os << <span class="stringliteral">"\\end{document}"</span> << std::endl;</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>     }</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>     <span class="keywordflow">return</span> os;</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>   };</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span> <span class="keyword">private</span>:</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>   std::vector<std::string> m_classes;</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> m_results;</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>   CM_FORMAT m_format;</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>   <span class="keywordtype">bool</span> m_se95;</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span> };</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span> }</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span> <span class="preprocessor">#endif </span><span class="comment">/* _CONFUSIONMATRIX_H_ */</span><span class="preprocessor"></span></div>
-<div class="ttc" id="classVector2d_html"><div class="ttname"><a href="classVector2d.html">Vector2d< double ></a></div></div>
-<div class="ttc" id="classconfusionmatrix_1_1ConfusionMatrix_html"><div class="ttname"><a href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></div><div class="ttdef"><b>Definition:</b> <a href="ConfusionMatrix_8h_source.html#l00032">ConfusionMatrix.h:32</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/CostFactorySVM_8cc_source.html b/doc/html/CostFactorySVM_8cc_source.html
deleted file mode 100644
index 1984842..0000000
--- a/doc/html/CostFactorySVM_8cc_source.html
+++ /dev/null
@@ -1,256 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/algorithms/CostFactorySVM.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_e6df591b0639d4c4807ef64d058833e2.html">algorithms</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">CostFactorySVM.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">CostFactorySVM.cc: select features, typical use: feature selection for classification</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "CostFactorySVM.h"</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "svm.h"</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> </div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#define Malloc(type,n) (type *)malloc((n)*sizeof(type))</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> CostFactorySVM::CostFactorySVM()</div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span>     : <a class="code" href="classCostFactory.html">CostFactory</a>(2,0), m_svm_type(<span class="stringliteral">"C_SVC"</span>), m_kernel_type(<span class="stringliteral">"radial"</span>), m_kernel_degree(3), m_gamma(1.0), m_coef0(0), m_ccost(1000), m_nu(0.5),  m_epsilon_loss(100), m_cache(100), m_epsilon_tol(0.001), m_shrinking(false), m_prob_est(true){</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> }</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> </div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> CostFactorySVM::~CostFactorySVM(){</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> }</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> </div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> CostFactorySVM::CostFactorySVM(std::string svm_type, std::string kernel_type, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> kernel_degree, <span class="keywordtype">float</span> gamma, <span class="keywordtype">float</span> coef0, <span class="keywordtype">float</span> ccost, <span class="keywordtype">float</span> nu,  <span class="keywordtype">float</span> epsilon_loss, <span [...]
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>     : <a class="code" href="classCostFactory.html">CostFactory</a>(cv,verbose), m_svm_type(svm_type), m_kernel_type(kernel_type), m_kernel_degree(kernel_degree), m_gamma(gamma), m_coef0(coef0), m_ccost(ccost), m_nu(nu),  m_epsilon_loss(epsilon_loss), m_cache(cache), m_epsilon_tol(epsilon_tol), m_shrinking(shrinking), m_prob_est(prob_est){};</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> </div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keywordtype">double</span> CostFactorySVM::getCost(<span class="keyword">const</span> std::vector<<a class="code" href="classVector2d.html">Vector2d<float></a> > &trainingFeatures){</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   std::map<std::string, svm::SVM_TYPE> svmMap;</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>   svmMap[<span class="stringliteral">"C_SVC"</span>]=svm::C_SVC;</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>   svmMap[<span class="stringliteral">"nu_SVC"</span>]=svm::nu_SVC;</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   svmMap[<span class="stringliteral">"one_class"</span>]=svm::one_class;</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>   svmMap[<span class="stringliteral">"epsilon_SVR"</span>]=svm::epsilon_SVR;</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   svmMap[<span class="stringliteral">"nu_SVR"</span>]=svm::nu_SVR;</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span> </div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   std::map<std::string, svm::KERNEL_TYPE> kernelMap;</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span> </div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>   kernelMap[<span class="stringliteral">"linear"</span>]=svm::linear;</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   kernelMap[<span class="stringliteral">"polynomial"</span>]=svm::polynomial;</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>   kernelMap[<span class="stringliteral">"radial"</span>]=svm::radial;</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>   kernelMap[<span class="stringliteral">"sigmoid;"</span>]=svm::sigmoid;</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span> </div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> nclass=trainingFeatures.size();</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ntraining=0;</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ntest=0;</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     ntraining+=m_nctraining[iclass];</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     ntest+=m_nctest[iclass];</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>   }</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>   <span class="keywordflow">if</span>(ntest)</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     assert(!m_cv);</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>   <span class="keywordflow">if</span>(!m_cv)</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     assert(ntest);</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> nFeatures=trainingFeatures[0][0].size();</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span> </div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>   <span class="keyword">struct </span><a class="code" href="structsvm__parameter.html">svm_parameter</a> param;</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>   param.svm_type = svmMap[m_svm_type];</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>   param.kernel_type = kernelMap[m_kernel_type];</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>   param.degree = m_kernel_degree;</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>   param.gamma = (m_gamma>0)? m_gamma : 1.0/nFeatures;</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>   param.coef0 = m_coef0;</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>   param.nu = m_nu;</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>   param.cache_size = m_cache;</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>   param.C = m_ccost;</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>   param.eps = m_epsilon_tol;</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>   param.p = m_epsilon_loss;</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>   param.shrinking = (m_shrinking)? 1 : 0;</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>   param.probability = (m_prob_est)? 1 : 0;</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>   param.nr_weight = 0;<span class="comment">//not used: I use priors and balancing</span></div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>   param.weight_label = NULL;</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>   param.weight = NULL;</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>   param.verbose=(m_verbose>1)? <span class="keyword">true</span>:<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>   <span class="keyword">struct </span><a class="code" href="structsvm__model.html">svm_model</a>* svm;</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>   <span class="keyword">struct </span><a class="code" href="structsvm__problem.html">svm_problem</a> prob;</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   <span class="keyword">struct </span><a class="code" href="structsvm__node.html">svm_node</a>* x_space;</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span> </div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>   prob.l=ntraining;</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   prob.y = Malloc(<span class="keywordtype">double</span>,prob.l);</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>   prob.x = Malloc(<span class="keyword">struct</span> <a class="code" href="structsvm__node.html">svm_node</a> *,prob.l);</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   x_space = Malloc(<span class="keyword">struct</span> <a class="code" href="structsvm__node.html">svm_node</a>,(nFeatures+1)*ntraining);</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> spaceIndex=0;</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>   <span class="keywordtype">int</span> lIndex=0;</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     <span class="comment">// for(int isample=0;isample<trainingFeatures[iclass].size();++isample){</span></div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<m_nctraining[iclass];++isample){</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>       prob.x[lIndex]=&(x_space[spaceIndex]);</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ifeature=0;ifeature<nFeatures;++ifeature){</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>         x_space[spaceIndex].index=ifeature+1;</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>         x_space[spaceIndex].value=trainingFeatures[iclass][isample][ifeature];</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>         ++spaceIndex;</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>       }</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>       x_space[spaceIndex++].index=-1;</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>       prob.y[lIndex]=iclass;</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>       ++lIndex;</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     }</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>   }</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span> </div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>   assert(lIndex==prob.l);</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>   <span class="keywordflow">if</span>(m_verbose>2)</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     std::cout << <span class="stringliteral">"checking parameters"</span> << std::endl;</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   svm_check_parameter(&prob,&param);</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   <span class="keywordflow">if</span>(m_verbose>2)</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>     std::cout << <span class="stringliteral">"parameters ok, training"</span> << std::endl;</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>   svm=svm_train(&prob,&param);</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>   <span class="keywordflow">if</span>(m_verbose>2)</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     std::cout << <span class="stringliteral">"SVM is now trained"</span> << std::endl;</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span> </div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>   m_cm.clearResults();</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>   <span class="keywordflow">if</span>(m_cv>1){</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     <span class="keywordtype">double</span> *target = Malloc(<span class="keywordtype">double</span>,prob.l);</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>     svm_cross_validation(&prob,&param,m_cv,target);</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>     assert(param.svm_type != EPSILON_SVR&&param.svm_type != NU_SVR);<span class="comment">//only for regression</span></div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<prob.l;i++){</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>       std::string refClassName=m_nameVector[prob.y[i]];</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>       std::string className=m_nameVector[target[i]];</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>       <span class="keywordflow">if</span>(m_classValueMap.size())</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>     m_cm.incrementResult(type2string<short>(m_classValueMap[refClassName]),type2string<short>(m_classValueMap[className]),1.0);</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>     m_cm.incrementResult(m_cm.getClass(prob.y[i]),m_cm.getClass(target[i]),1.0);</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>     }</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>     free(target);</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>   }</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>     <span class="keyword">struct </span><a class="code" href="structsvm__node.html">svm_node</a> *x_test;</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>     std::vector<double> result(nclass);</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>     x_test = Malloc(<span class="keyword">struct</span> <a class="code" href="structsvm__node.html">svm_node</a>,(nFeatures+1));</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<m_nctest[iclass];++isample){</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ifeature=0;ifeature<nFeatures;++ifeature){</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>       x_test[ifeature].index=ifeature+1;</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>       x_test[ifeature].value=trainingFeatures[iclass][m_nctraining[iclass]+isample][ifeature];</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>     }</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>     x_test[nFeatures].index=-1;</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>     <span class="keywordtype">double</span> predict_label=0;</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>     assert(svm_check_probability_model(svm));</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>     predict_label = svm_predict_probability(svm,x_test,&(result[0]));</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>     <span class="comment">// predict_label = svm_predict(svm,x_test);</span></div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>     std::string refClassName=m_nameVector[iclass];</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>     std::string className=m_nameVector[<span class="keyword">static_cast<</span><span class="keywordtype">short</span><span class="keyword">></span>(predict_label)];</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>     <span class="keywordflow">if</span>(m_classValueMap.size())</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>       m_cm.incrementResult(type2string<short>(m_classValueMap[refClassName]),type2string<short>(m_classValueMap[className]),1.0);</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>       m_cm.incrementResult(refClassName,className,1.0);</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>       }</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>     }</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>     free(x_test);</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>   }</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>   <span class="keywordflow">if</span>(m_verbose>1)</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>     std::cout << m_cm << std::endl;</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>   assert(m_cm.nReference());</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   <span class="comment">// if(m_verbose)</span></div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span> </div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>   <span class="comment">// std::cout << m_cm << std::endl;</span></div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>   <span class="comment">// std::cout << "Kappa: " << m_cm.kappa() << std::endl;</span></div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>   <span class="comment">// double se95_oa=0;</span></div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>   <span class="comment">// double doa=0;</span></div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>   <span class="comment">// doa=m_cm.oa_pct(&se95_oa);</span></div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>   <span class="comment">// std::cout << "Overall Accuracy: " << doa << " (" << se95_oa << ")"  << std::endl;</span></div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span> </div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>   <span class="comment">// *NOTE* Because svm_model contains pointers to svm_problem, you can</span></div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>   <span class="comment">// not free the memory used by svm_problem if you are still using the</span></div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>   <span class="comment">// svm_model produced by svm_train(). </span></div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>   <span class="comment">// however, we will re-train the svm later on after the feature selection</span></div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>   free(prob.y);</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>   free(prob.x);</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>   free(x_space);</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>   svm_free_and_destroy_model(&(svm));</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span> </div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>   <span class="keywordflow">return</span>(m_cm.kappa());</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span> }</div>
-<div class="ttc" id="structsvm__parameter_html"><div class="ttname"><a href="structsvm__parameter.html">svm_parameter</a></div><div class="ttdef"><b>Definition:</b> <a href="svm_8h_source.html#l00028">svm.h:28</a></div></div>
-<div class="ttc" id="structsvm__model_html"><div class="ttname"><a href="structsvm__model.html">svm_model</a></div><div class="ttdef"><b>Definition:</b> <a href="svm_8h_source.html#l00053">svm.h:53</a></div></div>
-<div class="ttc" id="classVector2d_html"><div class="ttname"><a href="classVector2d.html">Vector2d</a></div><div class="ttdef"><b>Definition:</b> <a href="Vector2d_8h_source.html#l00031">Vector2d.h:31</a></div></div>
-<div class="ttc" id="structsvm__node_html"><div class="ttname"><a href="structsvm__node.html">svm_node</a></div><div class="ttdef"><b>Definition:</b> <a href="svm_8h_source.html#l00012">svm.h:12</a></div></div>
-<div class="ttc" id="classCostFactory_html"><div class="ttname"><a href="classCostFactory.html">CostFactory</a></div><div class="ttdef"><b>Definition:</b> <a href="CostFactory_8h_source.html#l00030">CostFactory.h:30</a></div></div>
-<div class="ttc" id="structsvm__problem_html"><div class="ttname"><a href="structsvm__problem.html">svm_problem</a></div><div class="ttdef"><b>Definition:</b> <a href="svm_8h_source.html#l00018">svm.h:18</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/CostFactorySVM_8h_source.html b/doc/html/CostFactorySVM_8h_source.html
deleted file mode 100644
index 653bf06..0000000
--- a/doc/html/CostFactorySVM_8h_source.html
+++ /dev/null
@@ -1,131 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/algorithms/CostFactorySVM.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_e6df591b0639d4c4807ef64d058833e2.html">algorithms</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">CostFactorySVM.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">CostFactorySVM.h: select features, typical use: feature selection for classification</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2012 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#ifndef _COSTFACTORYSVM_H_</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor"></span><span class="preprocessor">#define _COSTFACTORYSVM_H_</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <math.h></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <vector></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include <map></span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "base/Vector2d.h"</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "CostFactory.h"</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> </div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">namespace </span>svm{</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>   <span class="keyword">enum</span> SVM_TYPE {C_SVC=0, nu_SVC=1,one_class=2, epsilon_SVR=3, nu_SVR=4};</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span>   <span class="keyword">enum</span> KERNEL_TYPE {linear=0,polynomial=1,radial=2,sigmoid=3};</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> }</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> </div>
-<div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="classCostFactorySVM.html">   34</a></span> <span class="keyword">class </span><a class="code" href="classCostFactorySVM.html">CostFactorySVM</a> : <span class="keyword">public</span> <a class="code" href="classCostFactory.html">CostFactory</a></div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> {</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <a class="code" href="classCostFactorySVM.html">CostFactorySVM</a>();</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <a class="code" href="classCostFactorySVM.html">CostFactorySVM</a>(std::string svm_type, std::string kernel_type, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> kernel_degree, <span class="keywordtype">float</span> gamma, <span class="keywordtype">float</span> coef0, <span class="keywordtype">float</span> ccost, <span class="keywordtype">float</span> nu,  <span class="keywordty [...]
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> ~<a class="code" href="classCostFactorySVM.html">CostFactorySVM</a>();</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> <span class="keywordtype">double</span> getCost(<span class="keyword">const</span> std::vector<<a class="code" href="classVector2d.html">Vector2d<float></a> > &trainingFeatures);</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>   </div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span> <span class="keyword">private</span>:</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span> std::string m_svm_type;</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span> std::string m_kernel_type;</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> m_kernel_degree;</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span> <span class="keywordtype">float</span> m_gamma;</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span> <span class="keywordtype">float</span> m_coef0;</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span> <span class="keywordtype">float</span> m_ccost;</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span> <span class="keywordtype">float</span> m_nu;</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span> <span class="keywordtype">float</span> m_epsilon_loss;</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span> <span class="keywordtype">int</span> m_cache;</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span> <span class="keywordtype">float</span> m_epsilon_tol;</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span> <span class="keywordtype">bool</span> m_shrinking;</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span> <span class="keywordtype">bool</span> m_prob_est;</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span> };</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span> <span class="preprocessor">#endif</span></div>
-<div class="ttc" id="classVector2d_html"><div class="ttname"><a href="classVector2d.html">Vector2d</a></div><div class="ttdef"><b>Definition:</b> <a href="Vector2d_8h_source.html#l00031">Vector2d.h:31</a></div></div>
-<div class="ttc" id="classCostFactorySVM_html"><div class="ttname"><a href="classCostFactorySVM.html">CostFactorySVM</a></div><div class="ttdef"><b>Definition:</b> <a href="CostFactorySVM_8h_source.html#l00034">CostFactorySVM.h:34</a></div></div>
-<div class="ttc" id="classCostFactory_html"><div class="ttname"><a href="classCostFactory.html">CostFactory</a></div><div class="ttdef"><b>Definition:</b> <a href="CostFactory_8h_source.html#l00030">CostFactory.h:30</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/CostFactory_8h_source.html b/doc/html/CostFactory_8h_source.html
deleted file mode 100644
index dd35020..0000000
--- a/doc/html/CostFactory_8h_source.html
+++ /dev/null
@@ -1,137 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/algorithms/CostFactory.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_e6df591b0639d4c4807ef64d058833e2.html">algorithms</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">CostFactory.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">CostFactory.h: select features, typical use: feature selection for classification</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2012 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#ifndef _COSTFACTORY_H_</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor"></span><span class="preprocessor">#define _COSTFACTORY_H_</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <math.h></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <vector></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include <map></span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "ConfusionMatrix.h"</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "base/Vector2d.h"</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> </div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> </div>
-<div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="classCostFactory.html">   30</a></span> <span class="keyword">class </span><a class="code" href="classCostFactory.html">CostFactory</a>{</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>   <a class="code" href="classCostFactory.html">CostFactory</a>(<span class="keywordtype">void</span>){};</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>   <a class="code" href="classCostFactory.html">CostFactory</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> cv, <span class="keywordtype">short</span> verbose) : m_cv(cv), m_verbose(verbose){};</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> </div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>   <span class="keyword">virtual</span> ~<a class="code" href="classCostFactory.html">CostFactory</a>(<span class="keywordtype">void</span>){};</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   <span class="keywordtype">void</span> setCv(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> cv){m_cv=cv;};</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>   <span class="keywordtype">void</span> setClassValueMap(<span class="keyword">const</span> std::string& classname, <span class="keywordtype">short</span> classvalue){ m_classValueMap[classname]=classvalue;};</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>   std::map<std::string,short> getClassValueMap(){<span class="keywordflow">return</span> m_classValueMap;};</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>   std::vector<std::string> getNameVector(){<span class="keywordflow">return</span> m_nameVector;};</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   <span class="keywordtype">void</span> setNameVector(std::vector<std::string>& nameVector){m_nameVector=nameVector;};</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>   <span class="keywordtype">int</span> getClassIndex(std::string classname)<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_cm.getClassIndex(classname);};</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   <span class="comment">//pushBackClassName is for confusion matrix</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   <span class="keywordtype">void</span> pushBackClassName(std::string classname){m_cm.pushBackClassName(classname,<span class="keyword">true</span>);};<span class="comment">//doSort=true</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   <span class="comment">//pushBackName is for nameVector in CostFactory</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   <span class="keywordtype">void</span> pushBackName(std::string classname){m_nameVector.push_back(classname);};</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>   <span class="keywordtype">void</span> setNcTraining(<span class="keyword">const</span> std::vector<unsigned int> nctraining){m_nctraining=nctraining;};</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   <span class="keywordtype">void</span> setNcTest(<span class="keyword">const</span> std::vector<unsigned int> nctest){m_nctest=nctest;};</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>   <span class="comment">//getCost needs to be implemented case by case (e.g., SVM, ANN)</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>   <span class="keyword">virtual</span> <span class="keywordtype">double</span> getCost(<span class="keyword">const</span> std::vector<<a class="code" href="classVector2d.html">Vector2d<float></a> > &trainingFeatures)=0;</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>   </div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span> <span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>   <a class="code" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a> m_cm;</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>   std::map<std::string,short> m_classValueMap;</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>   std::vector<std::string> m_nameVector;</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>   std::vector<unsigned int> m_nctraining;</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>   std::vector<unsigned int> m_nctest;</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> m_cv;</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>   <span class="comment">/* std::string m_classname; */</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>   <span class="keywordtype">short</span> m_classvalue;</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>   <span class="keywordtype">short</span> m_verbose;</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span> };</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span> <span class="preprocessor">#endif</span></div>
-<div class="ttc" id="classVector2d_html"><div class="ttname"><a href="classVector2d.html">Vector2d</a></div><div class="ttdef"><b>Definition:</b> <a href="Vector2d_8h_source.html#l00031">Vector2d.h:31</a></div></div>
-<div class="ttc" id="classconfusionmatrix_1_1ConfusionMatrix_html"><div class="ttname"><a href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></div><div class="ttdef"><b>Definition:</b> <a href="ConfusionMatrix_8h_source.html#l00032">ConfusionMatrix.h:32</a></div></div>
-<div class="ttc" id="classCostFactory_html"><div class="ttname"><a href="classCostFactory.html">CostFactory</a></div><div class="ttdef"><b>Definition:</b> <a href="CostFactory_8h_source.html#l00030">CostFactory.h:30</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/Egcs_8cc_source.html b/doc/html/Egcs_8cc_source.html
deleted file mode 100644
index d85a99d..0000000
--- a/doc/html/Egcs_8cc_source.html
+++ /dev/null
@@ -1,280 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/algorithms/Egcs.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_e6df591b0639d4c4807ef64d058833e2.html">algorithms</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">Egcs.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">Egcs.cc: Conversions from and to european grid coding system</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2012 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "Egcs.h"</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <iostream></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <sstream></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <iomanip></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <assert.h></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> Egcs::Egcs(){</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> }</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> </div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="comment">// Egcs::Egcs(unsigned short level)</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="comment">//   : m_level(level){</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="comment">// }</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> </div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> </div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> Egcs::Egcs(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> level)</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> {</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   m_level=level;</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> }</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> Egcs::cell2level(<span class="keyword">const</span> std::string& cellCode)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   <span class="keywordtype">size_t</span> pos=cellCode.find(<span class="stringliteral">"-"</span>);</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>   std::string TILE=cellCode.substr(0,pos);</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> level=0;</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   <span class="keywordtype">int</span> base_level=19-(TILE.size()/2-1)*3;</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   <span class="keywordtype">int</span> quad_level=0;</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   <span class="keywordflow">if</span>(pos!=std::string::npos)</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     quad_level=cellCode.size()-pos-1;</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   <span class="keywordflow">if</span>(quad_level>1)</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     level=base_level-2;</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(quad_level>0)</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     level=base_level-1;</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     level=base_level;</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>   <span class="keywordflow">return</span> level;</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span> }</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span> </div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span> Egcs::~Egcs(){</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span> }</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span> </div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> Egcs::res2level(<span class="keywordtype">double</span> resolution)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>   <span class="keywordtype">double</span> base=pow(10,log(resolution*4.0)/log(10.0));</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>   <span class="keywordtype">double</span> diff=base/(2*resolution);</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>   <span class="keywordflow">return</span> 0.5+(log(base)/log(10.0)*3+1-diff);</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span> }</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span> </div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span> <span class="keywordtype">double</span> Egcs::getResolution()<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> exponent=(m_level+1)/3;</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>   <span class="keywordtype">double</span> base=pow(10.0,exponent);</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>   <span class="keywordflow">if</span>((m_level)%3==2)</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     <span class="keywordflow">return</span>(base/4);</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>((m_level)%3==0)</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     <span class="keywordflow">return</span>(base/2);</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>     <span class="keywordflow">return</span>(base);</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span> }</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span> </div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span> <span class="keywordtype">void</span> Egcs::force2grid(<span class="keywordtype">double</span>& ulx, <span class="keywordtype">double</span>& uly, <span class="keywordtype">double</span>& lrx, <span class="keywordtype">double</span> &lry)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>   <span class="keywordtype">double</span> dx=getResolution();</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>   <span class="keywordtype">double</span> dy=dx;</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>   <span class="comment">//ulx</span></div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>   ulx=floor(ulx);</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>   ulx-=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(ulx)%(static_cast<int>(dx));</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>   <span class="comment">//uly</span></div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   uly=ceil(uly);</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>   <span class="keywordflow">if</span>(static_cast<int>(uly)%static_cast<int>(dy))</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>     uly+=dy;</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   uly-=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(uly)%(static_cast<int>(dy));</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>   <span class="comment">//lrx</span></div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   lrx=ceil(lrx);</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>   <span class="keywordflow">if</span>(static_cast<int>(lrx)%static_cast<int>(dx))</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     lrx+=dx;</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>   lrx-=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(lrx)%(static_cast<int>(dx));</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   <span class="comment">//lry</span></div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>   lry=floor(lry);</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   lry-=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(lry)%(static_cast<int>(dy));</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span> }</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span> </div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span> <span class="keywordtype">void</span> Egcs::cell2bb(<span class="keyword">const</span> std::string& cellCode, <span class="keywordtype">int</span> &ulx, <span class="keywordtype">int</span> &uly, <span class="keywordtype">int</span> &lrx, <span class="keywordtype">int</span> &lry)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>   <span class="keywordtype">size_t</span> pos=cellCode.find(<span class="stringliteral">"-"</span>);</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>   std::string TILE=cellCode.substr(0,pos);</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>   std::string TILEX=TILE.substr(0,TILE.size()/2);</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>   std::string TILEY=TILE.substr(TILE.size()/2);</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>   std::string QUAD;</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>   <span class="keywordtype">char</span> QUAD1,QUAD2;</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>   std::istringstream stilex(TILEX);</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>   std::istringstream stiley(TILEY);</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>   <span class="keywordtype">int</span> llx,lly;</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>   stilex >> llx;</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>   stiley >> lly;</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   llx*=getBaseSize();</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   lly*=getBaseSize();</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>   <span class="keywordflow">switch</span>((19-m_level)%3){</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>   <span class="keywordflow">case</span>(0):<span class="comment">//there should be no QUAD</span></div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     assert(pos==std::string::npos);</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>   <span class="keywordflow">case</span>(2):<span class="comment">//there is a QUAD2</span></div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     assert(pos+1!=std::string::npos);</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     QUAD=cellCode.substr(pos+1);</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     QUAD2=QUAD.substr(1,1).c_str()[0];</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>     <span class="keywordflow">switch</span>(QUAD2){</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>     <span class="keywordflow">case</span>(<span class="charliteral">'A'</span>):</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>     <span class="keywordflow">case</span>(<span class="charliteral">'C'</span>):</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>       lly+=getBaseSize()/4;</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>     <span class="keywordflow">case</span>(<span class="charliteral">'D'</span>):</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>       lly+=getBaseSize()/4;</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>     <span class="keywordflow">case</span>(<span class="charliteral">'B'</span>):</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>       llx+=getBaseSize()/4;</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>     }</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>   <span class="keywordflow">case</span>(1):<span class="comment">//QUAD1: deliberate fall through from case(2)!</span></div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>     <span class="keywordflow">if</span>(!QUAD.size()){</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>       assert(pos+1!=std::string::npos);</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>       QUAD=cellCode.substr(pos+1);</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>     }</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>     QUAD1=QUAD.substr(0,1).c_str()[0];</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>     <span class="keywordflow">switch</span>(QUAD1){</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>     <span class="keywordflow">case</span>(<span class="charliteral">'A'</span>):</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>     <span class="keywordflow">case</span>(<span class="charliteral">'C'</span>):</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>       lly+=getBaseSize()/2;</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>     <span class="keywordflow">case</span>(<span class="charliteral">'D'</span>):</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>       lly+=getBaseSize()/2;</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>     <span class="keywordflow">case</span>(<span class="charliteral">'B'</span>):</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>       llx+=getBaseSize()/2;</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>     }</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>   }</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>   ulx=llx;</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>   uly=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(lly+getSize());</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>   lrx=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(llx+getSize());</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>   lry=lly;</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span> }</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span> </div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span> <span class="keywordtype">void</span> Egcs::cell2mid(<span class="keyword">const</span> std::string& cellCode, <span class="keywordtype">double</span>& midX, <span class="keywordtype">double</span>& midY)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>   <span class="keywordtype">int</span> ulx,uly,lrx,lry;</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   cell2bb(cellCode,ulx,uly,lrx,lry);</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>   midX=(ulx+lrx)/2.0;</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>   midY=(lry+uly)/2.0;</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span> }</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span> </div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span> std::string Egcs::geo2cell(<span class="keywordtype">double</span> geoX, <span class="keywordtype">double</span> geoY)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>   <span class="keywordtype">int</span> ndgts=7-(m_level+1)/3;</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>   <span class="keywordtype">double</span> xcel=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(geoX)/getBaseSize();</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>   <span class="keywordtype">double</span> ycel=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(geoY)/getBaseSize();</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>   std::ostringstream osx;</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>   std::ostringstream osy, osxy;</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>   <span class="comment">// osx << setprecision(ndgts) << xcel;</span></div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>   <span class="comment">// osy << setprecision(ndgts) << ycel;</span></div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>   <span class="comment">// osx << setprecision(0) << fixed << geoX;</span></div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>   <span class="comment">// osy << setprecision(0) << fixed << geoY;</span></div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>   osx << std::fixed << geoX;</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>   osy << std::fixed << geoY;</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>   std::string quad1=<span class="stringliteral">""</span>;</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>   std::string quad2=<span class="stringliteral">""</span>;</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>   <span class="keywordflow">switch</span>((19-m_level)%3){</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>   <span class="keywordflow">case</span>(2):</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>     <span class="keywordflow">if</span>(static_cast<int>(geoX)%(getBaseSize()/2)>=getBaseSize()/2.0){</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>       <span class="keywordflow">if</span>(static_cast<int>(geoY)%(getBaseSize()/2)>=getBaseSize()/2.0)</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>         quad2=<span class="stringliteral">"D"</span>;</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>         quad2=<span class="stringliteral">"B"</span>;</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>     }</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(static_cast<int>(geoY)%getBaseSize()>=getBaseSize()/4.0)</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>       quad2=<span class="stringliteral">"C"</span>;</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>       quad2=<span class="stringliteral">"A"</span>;</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>   <span class="keywordflow">case</span>(1):<span class="comment">//deliberate fall through!</span></div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>     <span class="keywordflow">if</span>(static_cast<int>(geoX)%getBaseSize()>=getBaseSize()/2.0){</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>       <span class="keywordflow">if</span>(static_cast<int>(geoY)%getBaseSize()>=getBaseSize()/2.0)</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>         quad1=<span class="stringliteral">"-D"</span>;</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>         quad1=<span class="stringliteral">"-B"</span>;</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>     }</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(static_cast<int>(geoY)%getBaseSize()>=getBaseSize()/2.0)</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>       quad1=<span class="stringliteral">"-C"</span>;</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>       quad1=<span class="stringliteral">"-A"</span>;</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>   <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>   }</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>   osxy << osx.str().substr(0,ndgts) << osy.str().substr(0,ndgts) << quad1 << quad2;</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>   <span class="keywordflow">return</span> osxy.str();</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span> }</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span> </div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/Egcs_8h_source.html b/doc/html/Egcs_8h_source.html
deleted file mode 100644
index 8a47643..0000000
--- a/doc/html/Egcs_8h_source.html
+++ /dev/null
@@ -1,128 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/algorithms/Egcs.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_e6df591b0639d4c4807ef64d058833e2.html">algorithms</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">Egcs.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">Egcs.h: Conversions from and to european grid coding system</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2012 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <math.h></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <string></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> </div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#ifndef _EGCS_H_</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor"></span><span class="preprocessor">#define _EGCS_H_</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="classEgcs.html">   26</a></span> <span class="keyword">class </span><a class="code" href="classEgcs.html">Egcs</a></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> {</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span>   <a class="code" href="classEgcs.html">Egcs</a>();</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>   <a class="code" href="classEgcs.html">Egcs</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> level);</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span>   <span class="comment">/* Egcs(unsigned short level); */</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>   ~<a class="code" href="classEgcs.html">Egcs</a>();</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> cell2level(<span class="keyword">const</span> std::string& cellCode) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>   std::string geo2cell(<span class="keywordtype">double</span> x, <span class="keywordtype">double</span> y) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>   <span class="keywordtype">double</span> getSize()<span class="keyword"> const </span>{<span class="keywordflow">return</span> getBaseSize()*pow(2.0,(m_level-19)%3);};</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   <span class="keywordtype">void</span> setLevel(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> level){m_level=level;};</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> getLevel()<span class="keyword"> const</span>{<span class="keywordflow">return</span> m_level;};</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> res2level(<span class="keywordtype">double</span> resolution) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>   <span class="keywordtype">double</span> getResolution() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   <span class="keywordtype">void</span> force2grid(<span class="keywordtype">double</span>& ulx, <span class="keywordtype">double</span>& uly, <span class="keywordtype">double</span>& lrx, <span class="keywordtype">double</span> &lry) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>   <span class="keywordtype">void</span> cell2bb(<span class="keyword">const</span> std::string& cellCode, <span class="keywordtype">int</span> &ulx, <span class="keywordtype">int</span> &uly, <span class="keywordtype">int</span> &lrx, <span class="keywordtype">int</span> &lry) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   <span class="keywordtype">void</span> cell2mid(<span class="keyword">const</span> std::string& cellCode, <span class="keywordtype">double</span>& midX, <span class="keywordtype">double</span>& midY) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span> <span class="keyword">private</span>:</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   <span class="keywordtype">int</span> getBaseSize()<span class="keyword"> const </span>{<span class="keywordflow">return</span> pow(10.0,(m_level+1)/3);};</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> m_level;</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span> <span class="comment">// level square scheme         example</span></div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span> <span class="comment">// 19    1000km xy             32</span></div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span> <span class="comment">// 18     500km xy-q           32-A</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span> <span class="comment">// 17     250km xy-qq          32-AB</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span> <span class="comment">// 16     100km xxyy           3320</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span> <span class="comment">// 5       25m  xxxxxyyyyy-qq  3346720658-DC</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span> <span class="comment">// 1        1m  xxxxxxxyyyyyyy 33467652065889</span></div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span> };</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span> <span class="preprocessor">#endif // _EGCS_H_</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span> <span class="preprocessor"></span></div>
-<div class="ttc" id="classEgcs_html"><div class="ttname"><a href="classEgcs.html">Egcs</a></div><div class="ttdef"><b>Definition:</b> <a href="Egcs_8h_source.html#l00026">Egcs.h:26</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/FeatureSelector_8h_source.html b/doc/html/FeatureSelector_8h_source.html
deleted file mode 100644
index 34b6759..0000000
--- a/doc/html/FeatureSelector_8h_source.html
+++ /dev/null
@@ -1,440 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/algorithms/FeatureSelector.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_e6df591b0639d4c4807ef64d058833e2.html">algorithms</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">FeatureSelector.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">FeatureSelector.h: select features, typical use: feature selection for classification</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2012 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#ifndef _FEATURESELECTOR_H_</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor"></span><span class="preprocessor">#define _FEATURESELECTOR_H_</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <math.h></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <vector></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include <list></span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include <algorithm></span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include <iostream></span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include <iomanip></span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include "ConfusionMatrix.h"</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include "base/IndexValue.h"</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="preprocessor">#include "base/Vector2d.h"</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="preprocessor">#include "gsl/gsl_combination.h"</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="preprocessor">#include "CostFactory.h"</span></div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> </div>
-<div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="classFeatureSelector.html">   35</a></span> <span class="keyword">class </span><a class="code" href="classFeatureSelector.html">FeatureSelector</a></div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> {</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>  <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>   <a class="code" href="classFeatureSelector.html">FeatureSelector</a>(){};</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>   ~<a class="code" href="classFeatureSelector.html">FeatureSelector</a>(){};</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> forward(std::vector< <a class="code" href="classVector2d.html">Vector2d<T></a> >& v, <a class="code" href="classCostFactory.html">CostFactory</a>& theCostFactory, std::list<int>& subset, <span class="keywordtype">int</span> maxFeatures=0, <span class="keywordt [...]
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> backward(std::vector< <a class="code" href="classVector2d.html">Vector2d<T></a> >& v, <a class="code" href="classCostFactory.html">CostFactory</a>& theCostFactory, std::list<int>& subset, <span class="keywordtype">int</span> minFeatures, <span class="keywordty [...]
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> floating(std::vector< <a class="code" href="classVector2d.html">Vector2d<T></a> >& v, <a class="code" href="classCostFactory.html">CostFactory</a>& theCostFactory, std::list<int>& subset, <span class="keywordtype">int</span> maxFeatures=0, <span class="keyword [...]
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> bruteForce(std::vector< <a class="code" href="classVector2d.html">Vector2d<T></a> >& v, <a class="code" href="classCostFactory.html">CostFactory</a>& theCostFactory, std::list<int>& subset, <span class="keywordtype">int</span> maxFeatures=0, <span class="keywo [...]
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   </div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   <span class="keyword">private</span>:</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> addFeature(std::vector< <a class="code" href="classVector2d.html">Vector2d<T></a> >& v, <a class="code" href="classCostFactory.html">CostFactory</a>& theCostFactory, std::list<int>& subset, <span class="keywordtype">short</span> verbose=0);</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> removeFeature(std::vector< <a class="code" href="classVector2d.html">Vector2d<T></a> >& v, <a class="code" href="classCostFactory.html">CostFactory</a>& theCostFactory, std::list<int>& subset, <span class="keywordtype">int</span>& r, <span class="keywordty [...]
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> forwardUnivariate(std::vector< <a class="code" href="classVector2d.html">Vector2d<T></a> >& v, <a class="code" href="classCostFactory.html">CostFactory</a>& theCostFactory, std::list<int>& subset, <span class="keywordtype">int</span> maxFeatures=0, <span class [...]
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span> };</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span> </div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span> <span class="comment">//sequential forward selection Univariate (N single best features)</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> FeatureSelector::forwardUnivariate(std::vector< <a class="code" href="classVector2d.html">Vector2d<T></a> >& v, <a class="code" href="classCostFactory.html">CostFactory</a>& theCostFactory, std::list<int>& subset, <span class="keywordtype">int</span> maxFeatures [...]
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>   <span class="keywordtype">int</span> maxLevels=v[0][0].size();</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>   <span class="keywordflow">if</span>(!maxFeatures)</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     maxFeatures=maxLevels;</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>   <span class="keywordtype">int</span> k=subset.size();</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>   <span class="keywordflow">if</span>(k>=maxFeatures)</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     <span class="keywordflow">return</span> -1;</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>   std::vector<IndexValue> cost(maxLevels);</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>   std::list<int> tmpset=subset;<span class="comment">//temporary set of selected features (levels)</span></div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>   std::vector< Vector2d<T> > tmp(v.size());</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ilevel=0;ilevel<maxLevels;++ilevel){</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     <span class="keywordflow">if</span>(find(tmpset.begin(),tmpset.end(),ilevel)==tmpset.end()){</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>       tmpset.push_back(ilevel);</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<v.size();++iclass){</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span> <span class="comment">//  tmp[iclass].resize(v[iclass].size());</span></div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>     v[iclass].selectCols(tmpset,tmp[iclass]);</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>       }</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     <a class="code" href="structIndexValue.html">IndexValue</a> pv;</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     pv.position=ilevel;</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>     pv.value=theCostFactory.getCost(tmp);</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>     cost[ilevel]=pv;</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>       }</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>       <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>     <a class="code" href="structIndexValue.html">IndexValue</a> pv;</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>     pv.position=ilevel;</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>     pv.value=-1;</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>     cost[ilevel]=pv;</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>       }</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>       tmpset.pop_back();</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     }</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   }</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>   sort(cost.begin(),cost.end(),<a class="code" href="classCompare__IndexValue.html">Compare_IndexValue</a>());<span class="comment">//decreasing order</span></div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>   <span class="keywordtype">int</span> ilevel=0;</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   <span class="keywordflow">while</span>((subset.size()<maxFeatures)&&(ilevel<maxLevels)){</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>     <span class="keywordflow">if</span>(cost[ilevel].value>0)</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>       subset.push_back(cost[ilevel].position);</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>       std::cout << <span class="stringliteral">"feature "</span> << subset.back() << <span class="stringliteral">" has cost: "</span> << cost[ilevel].value << std::endl;</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     ++ilevel;</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   }</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>   <span class="keywordtype">double</span> maxCost=-1;</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   <span class="keywordflow">while</span>(subset.size()){</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<v.size();++iclass){</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span> <span class="comment">//       tmp[iclass].resize(v[iclass].size());</span></div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>       v[iclass].selectCols(subset,tmp[iclass]);</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     }</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>       maxCost=theCostFactory.getCost(tmp);</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     }</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>       subset.pop_back();</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     }</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     <span class="keywordflow">return</span> maxCost;</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>   }</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span> }</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span> </div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span> <span class="comment">//sequential forward selection Multivariate (Combination of N best features)</span></div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> FeatureSelector::forward(std::vector< <a class="code" href="classVector2d.html">Vector2d<T></a> >& v, <a class="code" href="classCostFactory.html">CostFactory</a>& theCostFactory, std::list<int>& subset, <span class="keywordtype">int</span> maxFeatures, <span cl [...]
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>   <span class="comment">//Select feature with the best value (get maximal cost for 1 feature)</span></div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>   <span class="keywordtype">double</span> maxCost=0;</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   <span class="keywordtype">int</span> maxLevels=v[0][0].size();</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>   <span class="keywordflow">if</span>(!maxFeatures)</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     maxFeatures=maxLevels;</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>   <span class="keywordflow">while</span>(subset.size()<maxFeatures){</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     maxCost=addFeature(v,theCostFactory,subset,verbose);</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>     <span class="keywordflow">if</span>(verbose){</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>       <span class="keywordflow">for</span>(std::list<int>::const_iterator lit=subset.begin();lit!=subset.end();++lit)</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>         std::cout << *lit << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>       std::cout << std::endl;</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>       <span class="comment">// std::cout << "added " << subset.back() << ", " << subset.size() << "/" << maxFeatures << " features selected with cost: " << maxCost << std::endl;</span></div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     }</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>   }<span class="comment">//while</span></div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>   <span class="keywordflow">return</span> maxCost;</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span> }</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span> </div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span> <span class="comment">//sequential backward selection</span></div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> FeatureSelector::backward(std::vector< <a class="code" href="classVector2d.html">Vector2d<T></a> >& v, <a class="code" href="classCostFactory.html">CostFactory</a>& theCostFactory, std::list<int>& subset, <span class="keywordtype">int</span> minFeatures, <span c [...]
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>   <span class="comment">//Select features with least effect on cost when removed (obtain minFeatures eventually)</span></div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>   <span class="keywordtype">double</span> maxCost=0;</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>   <span class="keywordtype">int</span> removedFeature;</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>   <span class="keywordflow">if</span>(subset.empty()){</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iFeature=0;iFeature<v[0][0].size();++iFeature)</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>       subset.push_back(iFeature);</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>   }</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>   <span class="keywordflow">if</span>(subset.size()==minFeatures)</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>     maxCost=theCostFactory.getCost(v);</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>   <span class="keywordflow">while</span>(subset.size()>minFeatures){</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>     maxCost=removeFeature(v,theCostFactory,subset,removedFeature,verbose);</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>     <span class="keywordflow">if</span>(verbose){</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>       <span class="keywordflow">for</span>(std::list<int>::const_iterator lit=subset.begin();lit!=subset.end();++lit)</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>         std::cout << *lit << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>       std::cout << std::endl;</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>       <span class="comment">// std::cout << "removed " << removedFeature << ", " << subset.size() << "/" << minFeatures << " features remain with cost: " << maxCost << std::endl;</span></div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>     }</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>   }<span class="comment">//while</span></div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>   <span class="keywordflow">return</span> maxCost;</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span> }</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span> </div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span> <span class="comment">//floating search</span></div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> FeatureSelector::floating(std::vector< <a class="code" href="classVector2d.html">Vector2d<T></a> >& v, <a class="code" href="classCostFactory.html">CostFactory</a>& theCostFactory, std::list<int>& subset, <span class="keywordtype">int</span> maxFeatures, <span c [...]
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>   std::vector<T> cost;</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>   <span class="keywordtype">int</span> maxLevels=v[0][0].size();</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>   <span class="keywordflow">if</span>(maxFeatures<1)</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>     maxFeatures=maxLevels;</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>   <span class="keywordtype">int</span> k=subset.size();</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   <span class="keywordflow">if</span>(k>=maxFeatures)</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>     <span class="keywordflow">return</span> -1;</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>   <span class="keywordflow">while</span>(cost.size()<subset.size())</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>     cost.push_back(1);<span class="comment">//init original features as cost 1</span></div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>   cost.push_back(addFeature(v,theCostFactory,subset,verbose));</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>   ++k;</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>   <span class="keywordflow">if</span>(verbose>1)</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>     std::cout << <span class="stringliteral">"added "</span> << subset.back() << <span class="stringliteral">", "</span> << subset.size() << <span class="stringliteral">"/"</span> << maxFeatures << <span class="stringliteral">" features selected with cost: "</span> << cost.back() << std::endl;</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(verbose){</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>     <span class="keywordflow">for</span>(std::list<int>::const_iterator lit=subset.begin();lit!=subset.end();++lit)</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>       std::cout << *lit << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>     std::cout << std::endl;</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>   }</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>   <span class="keywordflow">while</span>(k<maxFeatures){</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>     cost.push_back(addFeature(v,theCostFactory,subset,verbose));</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>     ++k;</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>     <span class="keywordflow">if</span>(verbose>1)</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>     std::cout << <span class="stringliteral">"added "</span> << subset.back() << <span class="stringliteral">", "</span> << subset.size() << <span class="stringliteral">"/"</span> << maxFeatures << <span class="stringliteral">" features selected with cost: "</span> << cost.back() << std::endl;</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(verbose){</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>       <span class="keywordflow">for</span>(std::list<int>::const_iterator lit=subset.begin();lit!=subset.end();++lit)</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>         std::cout << *lit << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>       std::cout << <span class="stringliteral">" (cost: "</span> << cost.back() << <span class="stringliteral">")"</span> << std::endl;</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>     }</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span> </div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>     <span class="keywordflow">while</span>(k>1){</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>       <span class="keywordtype">int</span> x_r;</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>       <span class="keywordtype">double</span> cost_r=removeFeature(v,theCostFactory,subset,x_r,verbose);</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>       <span class="keywordflow">if</span>(cost_r>cost[k-1]+epsilon){</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>     --k;</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>     cost[k]=cost_r;</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>     cost.pop_back();</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>     <span class="keywordflow">if</span>(verbose>1)</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>       std::cout << <span class="stringliteral">"removed "</span> << x_r << <span class="stringliteral">", "</span> << subset.size() << <span class="stringliteral">"/"</span> << maxFeatures << <span class="stringliteral">" features remain with cost: "</span> << cost_r << std::endl;</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(verbose){</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>           <span class="keywordflow">for</span>(std::list<int>::const_iterator lit=subset.begin();lit!=subset.end();++lit)</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>             std::cout << *lit << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>           std::cout << <span class="stringliteral">" (cost: "</span> << cost.back() << <span class="stringliteral">")"</span> << std::endl;</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>         }</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>       }</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(cost_r>=0){</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>     subset.push_back(x_r);</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>       }</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>         std::cout << <span class="stringliteral">"could not remove any feature"</span> << std::endl;</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>       cost.pop_back();</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>     }</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>   }</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>   <span class="keywordflow">return</span> cost.back();</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span> }</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span> </div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span> <span class="comment">//brute force search (search for all possible combinations and select best)</span></div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> FeatureSelector::bruteForce(std::vector< <a class="code" href="classVector2d.html">Vector2d<T></a> >& v, <a class="code" href="classCostFactory.html">CostFactory</a>& theCostFactory, std::list<int>& subset, <span class="keywordtype">int</span> maxFeatures, <span [...]
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>   <span class="keywordtype">int</span> maxLevels=v[0][0].size();</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>   <span class="keywordflow">if</span>(maxFeatures<1)</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>     maxFeatures=maxLevels;</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>   <span class="keywordtype">int</span> k=subset.size();</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>   <span class="keywordflow">if</span>(k>=maxFeatures)</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>     <span class="keywordflow">return</span> -1;</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span> <span class="comment">//   gslmm::combination c(v1[0].size(),maxFeatures,false);</span></div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>   gsl_combination *c;</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>   c=gsl_combination_calloc(v[0][0].size(),maxFeatures);</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>   </div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>   std::list<int> tmpset;<span class="comment">//temporary set of selected features (levels)</span></div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>   std::vector< Vector2d<T> > tmpv(v.size());</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>   std::list<int> catchset;<span class="comment">//restore set in case of catch all the way to last level (no better cost)</span></div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>   <span class="comment">//initialize maxCost with actual cost for current subset (-1 if empty subset) </span></div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>   <span class="keywordtype">double</span> maxCost=-1;</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>   <span class="keywordtype">double</span> cost;</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>   <span class="keywordflow">if</span>(subset.size()>=maxLevels)</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>     <span class="keywordflow">return</span> maxCost;</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>   gsl_combination_next(c);</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>   <span class="keywordflow">do</span>{</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ifeature=0;ifeature<maxFeatures;++ifeature)</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>       tmpset.push_back(c->data[ifeature]);</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<v.size();++iclass)</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>       v[iclass].selectCols(tmpset,tmpv[iclass]);</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>       cost=theCostFactory.getCost(tmpv);</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>     }</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>     <span class="keywordflow">catch</span>(...){ <span class="comment">//singular matrix encountered</span></div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>       catchset=tmpset;<span class="comment">//this tmpset resulted in failure of getCost</span></div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>       <span class="keywordflow">if</span>(verbose){</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>         std::cout << <span class="stringliteral">"Could not get cost from set: "</span> << std::endl;</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>     gsl_combination_fprintf(stdout,c,<span class="stringliteral">" %u"</span>);</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>     printf(<span class="stringliteral">"\n"</span>);</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>       }      </div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>       tmpset.clear();</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>     }</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>     <span class="keywordflow">if</span>(maxCost<cost){ <span class="comment">//set with better cost is found</span></div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>       maxCost=cost;</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>       subset=tmpset;</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>     }</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>     tmpset.clear();</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>   }<span class="keywordflow">while</span>(gsl_combination_next(c)==GSL_SUCCESS);</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>   gsl_combination_free(c);</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span> <span class="comment">//   }while(c.next());  </span></div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>   <span class="keywordflow">if</span>(maxCost<0) <span class="comment">//no level added to better maxCost than current subset (catchset)</span></div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>     subset=catchset;</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>   <span class="comment">//test: assert list contains no duplicate elements</span></div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>   <span class="keywordflow">for</span>(std::list<int>::iterator lit=subset.begin();lit!=subset.end();++lit){</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>     std::list<int>::iterator lit2=lit;<span class="comment">//start searching from next element</span></div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>     assert(find(++lit2,subset.end(),*lit)==subset.end());</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>   }</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>   <span class="keywordflow">return</span> maxCost;</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span> }</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span> </div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> FeatureSelector::addFeature(std::vector< <a class="code" href="classVector2d.html">Vector2d<T></a> >& v, <a class="code" href="classCostFactory.html">CostFactory</a>& theCostFactory, std::list<int>& subset, <span class="keywordtype">short</span> verbose){</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>   <span class="comment">//select feature with the best value (get maximal cost for 1 feature)</span></div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>   std::list<int> tmpset=subset;<span class="comment">//temporary set of selected features (levels)</span></div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>   std::vector< Vector2d<T> > tmp(v.size());</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>   std::list<int> catchset;<span class="comment">//restore set in case of catch all the way to last level (no better cost)</span></div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>   <span class="comment">//initialize maxCost with actual cost for current subset (-1 if empty subset) </span></div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>   <span class="keywordtype">double</span> maxCost=-1;</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>   <span class="keywordtype">double</span> cost;</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>   <span class="keywordtype">int</span> maxLevels=v[0][0].size();</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>   <span class="keywordflow">if</span>(subset.size()>=maxLevels)</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>     <span class="keywordflow">return</span> maxCost;</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ilevel=0;ilevel<maxLevels;++ilevel){</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>     <span class="keywordflow">if</span>(find(tmpset.begin(),tmpset.end(),ilevel)!=tmpset.end())</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>     tmpset.push_back(ilevel);</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<v.size();++iclass){</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span> <span class="comment">//       tmp[iclass].resize(v[iclass].size());</span></div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>       v[iclass].selectCols(tmpset,tmp[iclass]);</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>     }</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>       cost=theCostFactory.getCost(tmp);</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>     }</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>     <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>       catchset=tmpset;<span class="comment">//this tmpset resulted in singular matrix</span></div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>       <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>         std::cout << <span class="stringliteral">"Could not add feature "</span> << tmpset.back() << std::endl;</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>       tmpset.pop_back();</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>     }</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>     <span class="keywordflow">if</span>(maxCost<cost){ <span class="comment">//level with better cost is found</span></div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>       maxCost=cost;</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>       subset=tmpset;</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>     }</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>     tmpset.pop_back();</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>   }</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>   <span class="keywordflow">if</span>(maxCost<0) <span class="comment">//no level added to better maxCost than current subset (catchset)</span></div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>     subset=catchset;</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>   <span class="comment">//test: assert list contains no duplicate elements</span></div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>   <span class="keywordflow">for</span>(std::list<int>::iterator lit=subset.begin();lit!=subset.end();++lit){</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>     std::list<int>::iterator lit2=lit;<span class="comment">//start searching from next element</span></div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>     assert(find(++lit2,subset.end(),*lit)==subset.end());</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>   }</div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>   <span class="keywordflow">return</span> maxCost;</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span> }</div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span> </div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> FeatureSelector::removeFeature(std::vector< <a class="code" href="classVector2d.html">Vector2d<T></a> >& v, <a class="code" href="classCostFactory.html">CostFactory</a>& theCostFactory, std::list<int>& subset, <span class="keywordtype">int</span>& r, <span c [...]
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>   <span class="comment">//find the feature that has the least effect on the cost when it is removed from subset</span></div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>   std::list<int> tmpset=subset;<span class="comment">//temporary set of selected features (levels)</span></div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>   std::vector< Vector2d<T> > tmp(v.size());</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>   <span class="keywordtype">int</span> nFeatures=subset.size();</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>   std::list<int> catchset;<span class="comment">//restore set in case of catch all the way to last level (no better cost)</span></div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>   <span class="comment">//initialize maxCost with actual cost for current subset (-1 if empty subset) </span></div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>   <span class="keywordtype">double</span> maxCost=-1;</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>   <span class="keywordtype">int</span> last;</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>   <span class="keywordtype">double</span> cost;</div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>   <span class="keywordtype">int</span> maxLevels=v[0][0].size();</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>   <span class="keywordflow">if</span>(subset.size()>maxLevels||subset.empty()){</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>     <span class="keywordflow">return</span> maxCost;</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>   }</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>   std::list<int>::const_iterator it;</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<nFeatures;++i){</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>     last=tmpset.back();</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>     tmpset.pop_back();</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<v.size();++iclass){</div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span> <span class="comment">//       tmp[iclass].resize(v[iclass].size());</span></div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>       v[iclass].selectCols(tmpset,tmp[iclass]);</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>     }</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>       cost=theCostFactory.getCost(tmp);</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>     }</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>     <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>       catchset=tmpset;<span class="comment">//this tmpset resulted in singular matrix</span></div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>       <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>         std::cout << <span class="stringliteral">"Could not remove feature "</span> << last << std::endl;</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>       tmpset.push_front(last);</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>     }</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>     <span class="keywordflow">if</span>(maxCost<cost){ <span class="comment">//level with better cost is found</span></div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>       maxCost=cost;</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>       subset=tmpset;</div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>       r=last;</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>     }</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>     tmpset.push_front(last);</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>   }</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>   <span class="keywordflow">if</span>(maxCost<0){<span class="comment">//all levels removed were caught</span></div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>     subset=catchset;</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>   }</div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>   <span class="comment">//test: assert list contains no duplicate elements</span></div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>   <span class="keywordflow">for</span>(std::list<int>::iterator lit=subset.begin();lit!=subset.end();++lit){</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>     std::list<int>::iterator lit2=lit;<span class="comment">//start searching from next element</span></div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>     assert(find(++lit2,subset.end(),*lit)==subset.end());</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>   }</div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>   <span class="keywordflow">return</span> maxCost;</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span> }</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span> </div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span> <span class="preprocessor">#endif </span><span class="comment">/* _FEATURESELECTOR_H_ */</span><span class="preprocessor"></span></div>
-<div class="ttc" id="classCompare__IndexValue_html"><div class="ttname"><a href="classCompare__IndexValue.html">Compare_IndexValue</a></div><div class="ttdef"><b>Definition:</b> <a href="IndexValue_8h_source.html#l00027">IndexValue.h:27</a></div></div>
-<div class="ttc" id="classVector2d_html"><div class="ttname"><a href="classVector2d.html">Vector2d</a></div><div class="ttdef"><b>Definition:</b> <a href="Vector2d_8h_source.html#l00031">Vector2d.h:31</a></div></div>
-<div class="ttc" id="structIndexValue_html"><div class="ttname"><a href="structIndexValue.html">IndexValue</a></div><div class="ttdef"><b>Definition:</b> <a href="IndexValue_8h_source.html#l00023">IndexValue.h:23</a></div></div>
-<div class="ttc" id="classFeatureSelector_html"><div class="ttname"><a href="classFeatureSelector.html">FeatureSelector</a></div><div class="ttdef"><b>Definition:</b> <a href="FeatureSelector_8h_source.html#l00035">FeatureSelector.h:35</a></div></div>
-<div class="ttc" id="classCostFactory_html"><div class="ttname"><a href="classCostFactory.html">CostFactory</a></div><div class="ttdef"><b>Definition:</b> <a href="CostFactory_8h_source.html#l00030">CostFactory.h:30</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/FileReaderAscii_8cc_source.html b/doc/html/FileReaderAscii_8cc_source.html
deleted file mode 100644
index 828f1c2..0000000
--- a/doc/html/FileReaderAscii_8cc_source.html
+++ /dev/null
@@ -1,313 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/fileclasses/FileReaderAscii.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_849702d4228bd835bdf1201002937cb3.html">fileclasses</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">FileReaderAscii.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">FileReaderAscii.cc: class to read ASCII files using (colum based)</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2013 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> </div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <iostream></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "FileReaderAscii.h"</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> </div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> FileReaderAscii::FileReaderAscii(<span class="keywordtype">void</span>)</div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span>   : m_min(0),m_max(0),m_minRow(0),m_maxRow(0),m_fs(<span class="stringliteral">' '</span>),m_comment(<span class="stringliteral">'#'</span>){</div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> }</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> </div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> FileReaderAscii::FileReaderAscii(<span class="keyword">const</span> std::string& filename)</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span>   : m_min(0),m_max(0),m_minRow(0),m_maxRow(0),m_fs(<span class="stringliteral">' '</span>),m_comment(<span class="stringliteral">'#'</span>){</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>   open(filename);</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> }</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> </div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> FileReaderAscii::FileReaderAscii(<span class="keyword">const</span> std::string& filename, <span class="keyword">const</span> <span class="keywordtype">char</span>& fieldseparator)</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>   : m_min(0),m_max(0),m_minRow(0),m_maxRow(0),m_fs(fieldseparator),m_comment(<span class="stringliteral">'#'</span>){</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>   open(filename);</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> }</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> FileReaderAscii::~FileReaderAscii(<span class="keywordtype">void</span>)</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> {</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> }</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> </div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span> <span class="keywordtype">void</span> FileReaderAscii::open(<span class="keyword">const</span> std::string& filename){</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   m_filename=filename;</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   m_ifstream.open(filename.c_str(),std::ios_base::in);</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   <span class="keywordflow">if</span>(!(m_ifstream)){</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     std::string errorString;</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     errorString=<span class="stringliteral">"Error: could not open file "</span>;</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     errorString+=filename;</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>   }</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span> }</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span> </div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span> <span class="keywordtype">void</span> FileReaderAscii::close(){</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>   m_ifstream.close();</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>   <span class="comment">//  m_ifstream.clear();</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span> }</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span> </div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> FileReaderAscii::nrOfCol(<span class="keywordtype">bool</span> checkCols, <span class="keywordtype">bool</span> verbose){</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>   reset();</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> totalCol=0;</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nrow=0;</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>   <span class="keywordflow">if</span>(m_fs><span class="charliteral">' '</span>&&m_fs<=<span class="charliteral">'~'</span>){<span class="comment">//field separator is a regular character (minimum ASCII code is space, maximum ASCII code is tilde)</span></div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>       std::cout << <span class="stringliteral">"reading csv file "</span> << m_filename << std::endl;</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     std::string csvRecord;</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     <span class="keywordflow">while</span>(getline(m_ifstream,csvRecord)){<span class="comment">//read a line</span></div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>       std::istringstream csvstream(csvRecord);</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>       std::string item;</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ncol=0;</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>       <span class="keywordtype">bool</span> isComment=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>       <span class="keywordflow">while</span>(getline(csvstream,item,m_fs)){<span class="comment">//read a column</span></div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>         <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>           std::cout << item << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>         <span class="keywordtype">size_t</span> pos=item.find(m_comment);</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>         <span class="keywordflow">if</span>(pos!=std::string::npos){</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>           <span class="keywordflow">if</span>(pos>0)</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>             item=item.substr(0,pos-1);</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>           <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>             std::cout << <span class="stringliteral">"comment found, string is "</span> << item << std::endl;</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>           isComment=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>         }</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>         ++ncol;</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>         <span class="keywordflow">if</span>(isComment)</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>       }</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>       <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>         std::cout << std::endl << <span class="stringliteral">"number of columns: "</span> << ncol << std::endl;</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>       <span class="keywordflow">if</span>(!totalCol)</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>         totalCol=ncol;</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(checkCols){</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>         <span class="keywordflow">if</span>(totalCol!=ncol){</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>           std::ostringstream ess;</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>           ess << <span class="stringliteral">"Error: different number of cols found in line "</span> << nrow << <span class="stringliteral">" ("</span> << ncol << <span class="stringliteral">"!="</span> << totalCol << <span class="stringliteral">")"</span> << std::endl;</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>           <span class="keywordflow">throw</span>(ess.str());</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>         }</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>         ++nrow;</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>       }</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     }</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>   }</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>   <span class="keywordflow">else</span>{<span class="comment">//space or tab delimited fields</span></div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>       std::cout << <span class="stringliteral">"space or tab delimited fields"</span> << std::endl;</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     std::string spaceRecord;</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     <span class="keywordflow">while</span>(!getline(m_ifstream, spaceRecord).eof()){</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>       <span class="keywordflow">if</span>(verbose>1)</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>         std::cout << spaceRecord << std::endl;</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>       std::istringstream lineStream(spaceRecord);</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>       std::string item;</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ncol=0;</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>       <span class="keywordtype">bool</span> isComment=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>       <span class="keywordflow">while</span>(lineStream >> item){</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>         <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>           std::cout << item << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>         <span class="keywordtype">size_t</span> pos=item.find(m_comment);</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>         <span class="keywordflow">if</span>(pos!=std::string::npos){</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>           <span class="keywordflow">if</span>(pos>0)</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>             item=item.substr(0,pos-1);</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>           <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>             std::cout << <span class="stringliteral">"comment found, string is "</span> << item << std::endl;</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>           isComment=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>         }</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>         ++ncol;</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>         <span class="keywordflow">if</span>(isComment)</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>       }</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>       <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>         std::cout << std::endl << <span class="stringliteral">"number of columns: "</span> << ncol << std::endl;</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>       <span class="keywordflow">if</span>(!totalCol)</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>         totalCol=ncol;</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(checkCols){</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>         <span class="keywordflow">if</span>(totalCol!=ncol){</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>           std::ostringstream ess;</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>           ess << <span class="stringliteral">"Error: different number of cols found in line "</span> << nrow << <span class="stringliteral">" ("</span> << ncol << <span class="stringliteral">"!="</span> << totalCol << <span class="stringliteral">")"</span> << std::endl;</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>           <span class="keywordflow">throw</span>(ess.str());</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>         }</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>       }</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>       ++nrow;</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>     }</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>   }</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>   <span class="keywordflow">return</span> totalCol;</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span> }</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span> </div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> FileReaderAscii::nrOfRow(<span class="keywordtype">bool</span> checkCols, <span class="keywordtype">bool</span> verbose){</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>   reset();</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> totalCol=0;</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nrow=0;</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ncomment=0;</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>   <span class="keywordflow">if</span>(m_fs><span class="charliteral">' '</span>&&m_fs<=<span class="charliteral">'~'</span>){<span class="comment">//field separator is a regular character (minimum ASCII code is space, maximum ASCII code is tilde)</span></div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>       std::cout << <span class="stringliteral">"reading csv file "</span> << m_filename << std::endl;</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>     std::string csvRecord;</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>     <span class="keywordflow">while</span>(getline(m_ifstream,csvRecord)){<span class="comment">//read a line</span></div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>       std::istringstream csvstream(csvRecord);</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>       std::string item;</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ncol=0;</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>       <span class="keywordtype">bool</span> isComment=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>       <span class="keywordflow">while</span>(getline(csvstream,item,m_fs)){<span class="comment">//read a column</span></div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>         <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>           std::cout << item << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>         <span class="keywordtype">size_t</span> pos=item.find(m_comment);</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>         <span class="keywordflow">if</span>(pos!=std::string::npos){</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>           <span class="keywordflow">if</span>(pos>0){</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>             <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>               std::cout << <span class="stringliteral">"comment found, string is "</span> << item << std::endl;</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>             isComment=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>           }</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>           <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>             ++ncomment;</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>           }</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>         }</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>         ++ncol;</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>         <span class="keywordflow">if</span>(isComment)</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>       }</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>       <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>         std::cout << std::endl;</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>       <span class="keywordflow">if</span>(checkCols){</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>         <span class="keywordflow">if</span>(totalCol!=ncol){</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>           std::ostringstream ess;</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>           ess << <span class="stringliteral">"Error: different number of cols found in line "</span> << nrow << <span class="stringliteral">" ("</span> << ncol << <span class="stringliteral">"!="</span> << totalCol << <span class="stringliteral">")"</span> << std::endl;</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>           <span class="keywordflow">throw</span>(ess.str());</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>         }</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>       }</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>       ++nrow;</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>     }</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>   }</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>   <span class="keywordflow">else</span>{<span class="comment">//space or tab delimited fields</span></div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>       std::cout << <span class="stringliteral">"space or tab delimited fields"</span> << std::endl;</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>     std::string spaceRecord;</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>     <span class="keywordtype">int</span> totalCol=0;</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>     <span class="keywordflow">while</span>(!getline(m_ifstream, spaceRecord).eof()){</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>       <span class="keywordflow">if</span>(verbose>1)</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>         std::cout << spaceRecord << std::endl;</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>       std::istringstream lineStream(spaceRecord);</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>       std::string item;</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ncol=0;</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>       <span class="keywordtype">bool</span> isComment=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>       <span class="keywordflow">while</span>(lineStream >> item){</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>         <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>           std::cout << item << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>         <span class="keywordtype">size_t</span> pos=item.find(m_comment);</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>         <span class="keywordflow">if</span>(pos!=std::string::npos){</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>           <span class="keywordflow">if</span>(pos>0){</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>             <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>               std::cout << <span class="stringliteral">"comment found, string is "</span> << item << std::endl;</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>             isComment=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>           }</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>           <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>             ++ncomment;</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>           }</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>         }</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>         ++ncol;</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>         <span class="keywordflow">if</span>(isComment)</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>       }</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>       <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>         std::cout << std::endl << <span class="stringliteral">"number of columns: "</span> << ncol << std::endl;</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>       <span class="keywordflow">if</span>(checkCols){</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>         <span class="keywordflow">if</span>(totalCol!=ncol){</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>           std::ostringstream ess;</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>           ess << <span class="stringliteral">"Error: different number of cols found in line "</span> << nrow << <span class="stringliteral">" ("</span> << ncol << <span class="stringliteral">"!="</span> << totalCol << <span class="stringliteral">")"</span> << std::endl;</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>           <span class="keywordflow">throw</span>(ess.str());</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>         }</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>       }</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>       ++nrow;</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>     }</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>   }</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>   <span class="keywordflow">return</span> nrow;</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span> }</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span> </div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/FileReaderAscii_8h_source.html b/doc/html/FileReaderAscii_8h_source.html
deleted file mode 100644
index 69ac361..0000000
--- a/doc/html/FileReaderAscii_8h_source.html
+++ /dev/null
@@ -1,374 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/fileclasses/FileReaderAscii.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_849702d4228bd835bdf1201002937cb3.html">fileclasses</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">FileReaderAscii.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">FileReaderAscii.h: class to read ASCII files using (colum based)</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2013 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#ifndef _IMGREADERASCII_H_</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor"></span><span class="preprocessor">#define _IMGREADERASCII_H_</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <string></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <vector></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include <fstream></span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include <armadillo></span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> </div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="comment">//--------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="classFileReaderAscii.html">   30</a></span> <span class="keyword">class </span><a class="code" href="classFileReaderAscii.html">FileReaderAscii</a></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> {</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>   <a class="code" href="classFileReaderAscii.html">FileReaderAscii</a>(<span class="keywordtype">void</span>);</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>   <a class="code" href="classFileReaderAscii.html">FileReaderAscii</a>(<span class="keyword">const</span> std::string& filename);</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>   <a class="code" href="classFileReaderAscii.html">FileReaderAscii</a>(<span class="keyword">const</span> std::string& filename, <span class="keyword">const</span> <span class="keywordtype">char</span>& fieldseparator);</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   ~<a class="code" href="classFileReaderAscii.html">FileReaderAscii</a>(<span class="keywordtype">void</span>);</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>   <span class="keywordtype">void</span> reset(){m_ifstream.clear();m_ifstream.seekg(0,std::ios::beg);};</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>   <span class="keywordtype">void</span> open(<span class="keyword">const</span> std::string& filename);</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>   <span class="keywordtype">void</span> close(<span class="keywordtype">void</span>);</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   <span class="keywordtype">void</span> setFieldSeparator(<span class="keyword">const</span> <span class="keywordtype">char</span>& fieldseparator){m_fs=fieldseparator;};</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>   <span class="keywordtype">void</span> setMinRow(<span class="keywordtype">int</span> minRow){m_minRow=minRow;};</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   <span class="keywordtype">void</span> setMaxRow(<span class="keywordtype">int</span> maxRow){m_maxRow=maxRow;};</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   <span class="keywordtype">void</span> setComment(<span class="keywordtype">char</span> comment){m_comment=comment;};</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nrOfCol(<span class="keywordtype">bool</span> checkCols=<span class="keyword">false</span>, <span class="keywordtype">bool</span> verbose=<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nrOfRow(<span class="keywordtype">bool</span> checkCols=<span class="keyword">false</span>, <span class="keywordtype">bool</span> verbose=<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> readData(std::vector<std::vector<T> > &dataVector, <span class="keyword">const</span> std::vector<int> &cols, <span class="keywordtype">double</span> scale=1.0, <span class="keywordtype">double</span> offset=0.0, <span class= [...]
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> readData(std::vector<T> &dataVector, <span class="keywordtype">int</span> col, <span class="keywordtype">double</span> scale=1.0, <span class="keywordtype">double</span> offset=0, <span class="keywordtype">bool</span> verbose=<span class="ke [...]
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span> </div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>   <span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>   std::string m_filename;</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>   std::ifstream m_ifstream;</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>   <span class="keywordtype">char</span> m_fs;</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>   <span class="keywordtype">char</span> m_comment;</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>   <span class="keywordtype">double</span> m_min;</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>   <span class="keywordtype">double</span> m_max;</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>   <span class="keywordtype">int</span> m_minRow;</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>   <span class="keywordtype">int</span> m_maxRow;</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span> };</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span> </div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> FileReaderAscii::readData(std::vector<T> &dataVector, <span class="keywordtype">int</span> col, <span class="keywordtype">double</span> scale, <span class="keywordtype">double</span> offset, <span class="keywordtype">bool</span> verbose){</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>   reset();</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>   dataVector.clear();</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>   <span class="keywordtype">int</span> nrow=0;</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>   <span class="keywordtype">bool</span> withinRange=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>   <span class="keywordflow">if</span>(m_fs><span class="charliteral">' '</span>&&m_fs<=<span class="charliteral">'~'</span>){<span class="comment">//field separator is a regular character (minimum ASCII code is space, maximum ASCII code is tilde)</span></div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>       std::cout << <span class="stringliteral">"reading csv file "</span> << m_filename << std::endl;</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     std::string csvRecord;</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     <span class="keywordflow">while</span>(getline(m_ifstream,csvRecord)){<span class="comment">//read a line</span></div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>       withinRange=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>       <span class="keywordflow">if</span>(nrow<m_minRow)</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>         withinRange=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>       <span class="keywordflow">if</span>(m_maxRow>m_minRow)</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>         <span class="keywordflow">if</span>(nrow>m_maxRow)</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>           withinRange=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>       <span class="keywordflow">if</span>(withinRange){</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>         std::istringstream csvstream(csvRecord);</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>         std::string item;</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>         <span class="keywordtype">int</span> ncol=0;</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>         <span class="keywordtype">bool</span> isComment=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>         <span class="keywordflow">while</span>(getline(csvstream,item,m_fs)){<span class="comment">//read a column</span></div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>           <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>             std::cout << item << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>           <span class="keywordtype">size_t</span> pos=item.find(m_comment);</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>           <span class="keywordflow">if</span>(pos!=std::string::npos){</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>             isComment=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>             <span class="keywordflow">if</span>(pos>0)</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>               item=item.substr(0,pos-1);</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>             <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>               std::cout << <span class="stringliteral">"comment found, string is "</span> << item << std::endl;</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>           }</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>           <span class="keywordflow">if</span>(ncol==col){</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>             T value=scale*string2type<T>(item)+offset;</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>             <span class="keywordflow">if</span>((value>=m_min&&value<=m_max)||m_max<=m_min)</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>               dataVector.push_back(value);</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>           }</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>           ++ncol;</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>           <span class="keywordflow">if</span>(isComment)</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>         }</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>         <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>           std::cout << std::endl;</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>         <span class="keywordflow">if</span>(dataVector.size()&&ncol<=col){</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>           std::ostringstream ess;</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>           ess << <span class="stringliteral">"Error: different number of cols found in line "</span> << nrow << <span class="stringliteral">" ("</span> << ncol << <span class="stringliteral">")"</span> << std::endl;</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>           <span class="keywordflow">throw</span>(ess.str());</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>         }</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>       }</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>       ++nrow;</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>     }</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     assert(dataVector.size());</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   }</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>   <span class="keywordflow">else</span>{<span class="comment">//space or tab delimited fields</span></div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>       std::cout << <span class="stringliteral">"space or tab delimited fields"</span> << std::endl;</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     std::string spaceRecord;</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>     <span class="keywordflow">while</span>(!getline(m_ifstream, spaceRecord).eof()){</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>       withinRange=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>       <span class="keywordflow">if</span>(nrow<m_minRow)</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>         withinRange=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>       <span class="keywordflow">if</span>(m_maxRow>m_minRow)</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>         <span class="keywordflow">if</span>(nrow>m_maxRow)</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>           withinRange=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>       <span class="keywordflow">if</span>(withinRange){</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>         <span class="keywordflow">if</span>(verbose>1)</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>           std::cout << spaceRecord << std::endl;</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>         std::istringstream lineStream(spaceRecord);</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>         std::string item;</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>         <span class="keywordtype">int</span> ncol=0;</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>         <span class="keywordtype">bool</span> isComment=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>         <span class="keywordflow">while</span>(lineStream >> item){</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>           <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>             std::cout << item << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>           <span class="comment">// std::istringstream itemStream(item);</span></div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>           <span class="keywordtype">size_t</span> pos=item.find(m_comment);</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>           <span class="keywordflow">if</span>(pos!=std::string::npos){</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>             isComment=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>             <span class="keywordflow">if</span>(pos>0)</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>               item=item.substr(0,pos-1);</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>             <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>               std::cout << <span class="stringliteral">"comment found, string is "</span> << item << std::endl;</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>           }</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>           T value=scale*string2type<T>(item)+offset;</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>           <span class="comment">// T value=string2type<T>(item);</span></div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>           <span class="keywordflow">if</span>(ncol==col){</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>             <span class="keywordflow">if</span>((value>=m_min&&value<=m_max)||m_max<=m_min)</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>               dataVector.push_back(value);</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>           }</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>           ++ncol;</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>           <span class="keywordflow">if</span>(isComment)</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>         }</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>         <span class="keywordflow">if</span>(verbose>1)</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>           std::cout << std::endl;</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>         <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>           std::cout << <span class="stringliteral">"number of columns: "</span> << ncol << std::endl;</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>         <span class="keywordflow">if</span>(dataVector.size()&&ncol<=col){</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>           std::ostringstream ess;</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>           ess << <span class="stringliteral">"Error: different number of cols found in line "</span> << nrow << <span class="stringliteral">" ("</span> << ncol << <span class="stringliteral">")"</span> << std::endl;</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>           <span class="keywordflow">throw</span>(ess.str());</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>         }</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>       }</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>       ++nrow;</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>     }</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>   }</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>   <span class="keywordflow">return</span> dataVector.size();</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span> }</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span> </div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> FileReaderAscii::readData(std::vector<std::vector<T> > &dataVector, <span class="keyword">const</span> std::vector<int> &cols, <span class="keywordtype">double</span> scale, <span class="keywordtype">double</span> offset, <span [...]
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>   reset();</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>   dataVector.clear();</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>   <span class="keywordflow">if</span>(!transpose)</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>     dataVector.resize(cols.size());</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>   <span class="keywordtype">int</span> nrow=0;</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>   <span class="keywordtype">bool</span> withinRange=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>   <span class="keywordflow">if</span>(m_fs><span class="charliteral">' '</span>&&m_fs<=<span class="charliteral">'~'</span>){<span class="comment">//field separator is a regular character (minimum ASCII code is space, maximum ASCII code is tilde)</span></div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>       std::cout << <span class="stringliteral">"reading csv file "</span> << m_filename << std::endl;</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>     std::string csvRecord;</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>     <span class="keywordflow">while</span>(getline(m_ifstream,csvRecord)){<span class="comment">//read a line</span></div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>       std::vector<T> sampleVector;</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>       withinRange=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>       <span class="keywordflow">if</span>(nrow<m_minRow)</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>         withinRange=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>       <span class="keywordflow">if</span>(m_maxRow>m_minRow)</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>         <span class="keywordflow">if</span>(nrow>m_maxRow)</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>           withinRange=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>       <span class="keywordflow">if</span>(withinRange){</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>         std::istringstream csvstream(csvRecord);</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>         std::string item;</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>         <span class="keywordtype">int</span> ncol=0;</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>         <span class="keywordtype">bool</span> isComment=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>         <span class="keywordflow">while</span>(getline(csvstream,item,m_fs)){<span class="comment">//read a column</span></div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>           <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>             std::cout << item << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>           <span class="keywordtype">size_t</span> pos=item.find(m_comment);</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>           <span class="keywordflow">if</span>(pos!=std::string::npos){</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>             isComment=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>             <span class="keywordflow">if</span>(pos>0)</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>               item=item.substr(0,pos-1);</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>             <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>               std::cout << <span class="stringliteral">"comment found, string is "</span> << item << std::endl;</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>           }</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<cols.size();++icol){</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>             <span class="keywordflow">if</span>(ncol==cols[icol]){</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>               T value=scale*string2type<T>(item)+offset;</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>               <span class="comment">// T value=string2type<T>(item);</span></div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>               <span class="keywordflow">if</span>((value>=m_min&&value<=m_max)||m_max<=m_min){</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>                 <span class="keywordflow">if</span>(transpose)</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>                   sampleVector.push_back(value);</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>                 <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>                   dataVector[icol].push_back(value);</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>               }</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>             }</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>           }</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>           ++ncol;</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>           <span class="keywordflow">if</span>(isComment)</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>         }</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>         <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>           std::cout << std::endl;</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>         <span class="comment">// if(dataVector.back().size())</span></div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>         <span class="comment">//   assert(ncol>=cols[0]);</span></div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>       }</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>       <span class="keywordflow">if</span>(sampleVector.size()&&transpose)</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>         dataVector.push_back(sampleVector);</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>       ++nrow;</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>     }</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>     assert(dataVector.size());</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>   }</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>   <span class="keywordflow">else</span>{<span class="comment">//space or tab delimited fields</span></div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>       std::cout << <span class="stringliteral">"space or tab delimited fields"</span> << std::endl;</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>     std::string spaceRecord;</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>     <span class="keywordflow">while</span>(!getline(m_ifstream, spaceRecord).eof()){</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>       std::vector<T> sampleVector;</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>       withinRange=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>       <span class="keywordflow">if</span>(nrow<m_minRow)</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>         withinRange=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>       <span class="keywordflow">if</span>(m_maxRow>m_minRow)</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>         <span class="keywordflow">if</span>(nrow>m_maxRow)</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>           withinRange=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>       <span class="keywordflow">if</span>(withinRange){</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>         <span class="keywordflow">if</span>(verbose>1)</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>           std::cout << spaceRecord << std::endl;</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>         std::istringstream lineStream(spaceRecord);</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>         std::string item;</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>         <span class="keywordtype">int</span> ncol=0;</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>         <span class="keywordtype">bool</span> isComment=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>         <span class="keywordflow">while</span>(lineStream >> item){</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>           <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>             std::cout << item << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>           <span class="comment">// std::istringstream itemStream(item);</span></div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>           <span class="keywordtype">size_t</span> pos=item.find(m_comment);</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>           <span class="keywordflow">if</span>(pos!=std::string::npos){</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>             isComment=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>             <span class="keywordflow">if</span>(pos>0)</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>               item=item.substr(0,pos-1);</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>             <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>               std::cout << <span class="stringliteral">"comment found, string is "</span> << item << std::endl;</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>           }</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>           T value=scale*string2type<T>(item)+offset;</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>           <span class="comment">// T value=string2type<T>(item);</span></div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<cols.size();++icol){</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>             <span class="keywordflow">if</span>(ncol==cols[icol]){</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>               <span class="keywordflow">if</span>((value>=m_min&&value<=m_max)||m_max<=m_min){</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>                 <span class="keywordflow">if</span>(transpose)</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>                   sampleVector.push_back(value);</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>                 <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>                   dataVector[icol].push_back(value);</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>               }</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>             }</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>           }</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>           ++ncol;</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>           <span class="keywordflow">if</span>(isComment)</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>         }</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>         <span class="keywordflow">if</span>(verbose>1)</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>           std::cout << std::endl;</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>         <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>           std::cout << <span class="stringliteral">"number of columns: "</span> << ncol << std::endl;</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>         <span class="comment">// if(dataVector.back().size())</span></div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>         <span class="comment">//   assert(ncol>=cols[0]);</span></div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>       }</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>       <span class="keywordflow">if</span>(sampleVector.size()&&transpose)</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>         dataVector.push_back(sampleVector);</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>       ++nrow;</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>     }</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>   }</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>   <span class="keywordflow">return</span> dataVector.size();</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span> }</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span> </div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span> <span class="preprocessor">#endif // _IMGREADERASCII_H_</span></div>
-<div class="ttc" id="classFileReaderAscii_html"><div class="ttname"><a href="classFileReaderAscii.html">FileReaderAscii</a></div><div class="ttdef"><b>Definition:</b> <a href="FileReaderAscii_8h_source.html#l00030">FileReaderAscii.h:30</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/FileReaderLas_8cc_source.html b/doc/html/FileReaderLas_8cc_source.html
deleted file mode 100644
index 125f4c6..0000000
--- a/doc/html/FileReaderLas_8cc_source.html
+++ /dev/null
@@ -1,253 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/lasclasses/FileReaderLas.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_89a0bd85ecec8fbb2c320310670be290.html">lasclasses</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">FileReaderLas.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">FileReaderLas.cc: class to read LAS files using liblas API library</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2012 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <string></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <iostream></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <fstream></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "FileReaderLas.h"</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="comment">//---------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> LastReturnFilter::LastReturnFilter(  ) : liblas::FilterI(eInclusion) {}</div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> </div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keywordtype">bool</span> LastReturnFilter::filter(<span class="keyword">const</span> liblas::Point& p)</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> {</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> </div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>   <span class="comment">// If the GetReturnNumber equals the GetNumberOfReturns,</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span>   <span class="comment">// we're a last return</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> </div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>   <span class="keywordtype">bool</span> output = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>   <span class="keywordflow">if</span> (p.GetReturnNumber() == p.GetNumberOfReturns())</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>     {</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>       output = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>     }</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>   <span class="comment">// If the type is switched to eExclusion, we'll throw out all last returns.</span></div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   <span class="keywordflow">if</span> (GetType() == eExclusion && output == <span class="keyword">true</span>)</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     {</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>       output = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     } <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     output = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   }</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>   <span class="keywordflow">return</span> output;</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span> }</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span> </div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span> FileReaderLas::FileReaderLas(<span class="keywordtype">void</span>)</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span> {</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>   m_reader=NULL;</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>   m_ifstream=NULL;</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span> }</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span> </div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span> FileReaderLas::FileReaderLas(<span class="keyword">const</span> std::string& filename)</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span> {</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>   open(filename);</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span> }</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span> </div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span> FileReaderLas::~FileReaderLas(<span class="keywordtype">void</span>)</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span> {</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>   <span class="keyword">delete</span> m_ifstream;</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>   <span class="keyword">delete</span> m_reader;</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span> }</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span> </div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span> <span class="comment">//---------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span> </div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span> <span class="keywordtype">void</span> FileReaderLas::open(<span class="keyword">const</span> std::string& filename)</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span> {</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>   m_filename = filename;</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>   setCodec(filename);</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span> }</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span> </div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span> <span class="comment">//---------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span> <span class="keywordtype">void</span> FileReaderLas::close(<span class="keywordtype">void</span>)</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span> {</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>   m_ifstream->close();</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>   m_ifstream=NULL;</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>   m_reader=NULL;</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span> }</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span> </div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span> <span class="comment">//---------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span> <span class="keywordtype">void</span> FileReaderLas::setCodec(<span class="keyword">const</span> std::string& filename){</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>   m_ifstream = <span class="keyword">new</span>(std::ifstream);</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>   m_ifstream->open(m_filename.c_str(),std::ios::in|std::ios::binary);</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   liblas::ReaderFactory f;</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>   liblas::Reader reader = f.CreateWithStream(*m_ifstream);</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   m_reader=<span class="keyword">new</span> liblas::Reader(reader);</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>   <span class="comment">// m_reader = new liblas::Reader(*m_ifstream);</span></div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>   <span class="comment">//Note: It is possible to use the basic liblas::Reader constructor that takes in a std::istream, but it will not be able to account for the fact that the file might be compressed. Using the ReaderFactory will take care of all of this for you.</span></div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>   <span class="comment">// m_reader=&rfactory.CreateWithStream(ifs);</span></div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span> }</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span> </div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span> liblas::Header <span class="keyword">const</span>& FileReaderLas::getHeader()<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   <span class="keywordflow">return</span>(m_reader->GetHeader());</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span> }</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span> </div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span> <span class="keywordtype">bool</span> FileReaderLas::isCompressed()<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>   <span class="keywordflow">return</span> getHeader().Compressed();</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span> }</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span> </div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> FileReaderLas::getPointCount()<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>   <span class="keywordflow">return</span> getHeader().GetPointRecordsCount();</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span> }</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span> </div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span> <span class="keywordtype">void</span> FileReaderLas::las2ascii(<span class="keyword">const</span> std::string& filename, <span class="keywordtype">bool</span> verbose)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>   std::ofstream fpoints(filename.c_str(),std::ios::out);</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>   fpoints << <span class="stringliteral">"#"</span>;</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   fpoints << <span class="stringliteral">"X"</span> << <span class="stringliteral">","</span> << <span class="stringliteral">"Y"</span> << <span class="stringliteral">","</span> << <span class="stringliteral">"Z"</span> << std::endl;</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>     std::cout << <span class="stringliteral">"reset reading"</span> << std::endl;</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>   m_reader->Reset();</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     std::cout << <span class="stringliteral">"going through points"</span> << std::endl;</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>   <span class="keywordflow">while</span>(m_reader->ReadNextPoint()){</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     liblas::Point <span class="keyword">const</span>& thePoint=m_reader->GetPoint();</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     <span class="keywordtype">double</span> x=thePoint.GetX();</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     <span class="keywordtype">double</span> y=thePoint.GetY();</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>     <span class="keywordtype">double</span> z=thePoint.GetZ();</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>     fpoints.precision(12);</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>     fpoints << x << <span class="stringliteral">","</span> << y << <span class="stringliteral">","</span> << z << std::endl;</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   }</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>   fpoints.close();</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span> }</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span> </div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span> <span class="keywordtype">void</span> FileReaderLas::getExtent(<span class="keywordtype">double</span>& ulx, <span class="keywordtype">double</span>& uly, <span class="keywordtype">double</span>& lrx, <span class="keywordtype">double</span>& lry)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>   <span class="keyword">const</span> liblas::Header& theHeader=getHeader();</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>   ulx=theHeader.GetMinX();</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>   uly=theHeader.GetMaxY();</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>   lrx=theHeader.GetMaxX();</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>   lry=theHeader.GetMinY();</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span> }</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span> </div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span> <span class="keywordtype">double</span> FileReaderLas::getMinZ()<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>   <span class="keywordflow">return</span>(getHeader().GetMinZ());</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span> }</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span> </div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span> <span class="keywordtype">double</span> FileReaderLas::getMaxZ()<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>   <span class="keywordflow">return</span>(getHeader().GetMaxZ());</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span> }</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span> </div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span> <span class="comment">//todo: does not work ??</span></div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span> <span class="comment">// void FileReaderLas::addBoundsFilter(double ulx, double uly, double lrx, double lry){</span></div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span> <span class="comment">//   liblas::Bounds<double> bounds = liblas::Bounds<double>(ulx,lry,lrx,uly);</span></div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span> <span class="comment">//   typedef liblas::BoundsFilter filter;</span></div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span> <span class="comment">//   filter* bounds_filter = new filter(bounds);</span></div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span> <span class="comment">//   bounds_filter->SetType(liblas::FilterI::eInclusion);</span></div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span> <span class="comment">//   m_filters.push_back(liblas::FilterPtr(bounds_filter));</span></div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span> <span class="comment">// }</span></div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span> </div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span> <span class="keywordtype">void</span> FileReaderLas::addReturnsFilter(std::vector<unsigned short> <span class="keyword">const</span>& returns){</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>   <span class="keyword">typedef</span> liblas::ReturnFilter filter;</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>   filter* return_filter;</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>   std::vector<boost::uint16_t> returns_t;</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>   <span class="keywordflow">if</span>(returns[0]<0)</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>     return_filter=<span class="keyword">new</span> filter(returns_t,<span class="keyword">true</span>);</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> index=0;index<returns.size();++index){</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>       assert(returns[index]>0);</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>       returns_t.push_back(returns[index]);</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>     }</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>     return_filter=<span class="keyword">new</span> filter(returns_t,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>   }</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>   m_filters.push_back(liblas::FilterPtr(return_filter));</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span> }</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span> </div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span> <span class="keywordtype">void</span> FileReaderLas::addClassFilter(std::vector<unsigned short> <span class="keyword">const</span>& classes){</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span> </div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>   std::vector<liblas::FilterPtr> filters;</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>   std::vector<liblas::Classification> theClasses;</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<classes.size();++iclass){</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>     liblas::Classification aClass(classes[iclass]);</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>     theClasses.push_back(aClass);</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>   }</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>   liblas::FilterPtr class_filter = liblas::FilterPtr(<span class="keyword">new</span> liblas::ClassificationFilter(theClasses));</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>   <span class="comment">// eInclusion means to keep the classes that match.  eExclusion would</span></div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>   <span class="comment">// throw out those that matched</span></div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>   class_filter->SetType(liblas::FilterI::eInclusion);</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>   m_filters.push_back(class_filter);</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span> }</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span> </div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/FileReaderLas_8h_source.html b/doc/html/FileReaderLas_8h_source.html
deleted file mode 100644
index 6f6a68e..0000000
--- a/doc/html/FileReaderLas_8h_source.html
+++ /dev/null
@@ -1,146 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/lasclasses/FileReaderLas.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_89a0bd85ecec8fbb2c320310670be290.html">lasclasses</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">FileReaderLas.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">FileReaderLas.h: class to read LAS files using liblas API library</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2012 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#ifndef _IMGREADERLAS_H_</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor"></span><span class="preprocessor">#define _IMGREADERLAS_H_</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <string></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <vector></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "liblas/liblas.hpp"</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> </div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="comment">//--------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="classLastReturnFilter.html">   28</a></span> <span class="keyword">class </span><a class="code" href="classLastReturnFilter.html">LastReturnFilter</a>: <span class="keyword">public</span> liblas::FilterI</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> {</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span>   <a class="code" href="classLastReturnFilter.html">LastReturnFilter</a>();</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>   <span class="keywordtype">bool</span> filter(<span class="keyword">const</span> liblas::Point& point);</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> </div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">private</span>:</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>   <a class="code" href="classLastReturnFilter.html">LastReturnFilter</a>(<a class="code" href="classLastReturnFilter.html">LastReturnFilter</a> <span class="keyword">const</span>& other);</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   <a class="code" href="classLastReturnFilter.html">LastReturnFilter</a>& operator=(<a class="code" href="classLastReturnFilter.html">LastReturnFilter</a> <span class="keyword">const</span>& rhs);</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> };</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
-<div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="classFileReaderLas.html">   39</a></span> <span class="keyword">class </span><a class="code" href="classFileReaderLas.html">FileReaderLas</a></div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> {</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   <a class="code" href="classFileReaderLas.html">FileReaderLas</a>(<span class="keywordtype">void</span>);</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   <a class="code" href="classFileReaderLas.html">FileReaderLas</a>(<span class="keyword">const</span> std::string& filename);</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   ~<a class="code" href="classFileReaderLas.html">FileReaderLas</a>(<span class="keywordtype">void</span>);</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   <span class="keywordtype">void</span> open(<span class="keyword">const</span> std::string& filename);</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>   <span class="keywordtype">void</span> close(<span class="keywordtype">void</span>);</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   liblas::Header <span class="keyword">const</span>& getHeader() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>   <span class="keywordtype">bool</span> isCompressed() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> getPointCount() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>   <span class="keywordtype">void</span> las2ascii(<span class="keyword">const</span> std::string& filename, <span class="keywordtype">bool</span> verbose=<span class="keyword">false</span>) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>   <span class="keyword">template</span><<span class="keyword">typename</span> T> liblas::Bounds<T> getExtent()<span class="keyword"> const </span>{<span class="keywordflow">return</span> getHeader().GetExtent();};</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>   <span class="keywordtype">void</span> getExtent(<span class="keywordtype">double</span>& ulx, <span class="keywordtype">double</span>& uly, <span class="keywordtype">double</span>& lrx, <span class="keywordtype">double</span>& lry) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>   <span class="keywordtype">double</span> getMinZ() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>   <span class="keywordtype">double</span> getMaxZ() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>   <span class="keywordtype">void</span> resetReader(){m_reader->Reset();};</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>   <span class="keywordtype">void</span> setFilter(std::vector<liblas::FilterPtr> <span class="keyword">const</span>& filters);</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>   <span class="keywordtype">bool</span> <span class="keyword">const</span>& readNextPoint(liblas::Point& thePoint){<span class="keywordtype">bool</span> returnValue=m_reader->ReadNextPoint();thePoint=m_reader->GetPoint();<span class="keywordflow">return</span>(returnValue);};</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>   liblas::Point <span class="keyword">const</span>& readPointAt(std::size_t n){m_reader->ReadPointAt(n);<span class="keywordflow">return</span> m_reader->GetPoint();};</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>   <span class="comment">// void addBoundsFilter(double ulx, double uly, double lrx, double lry);</span></div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>   <span class="keywordtype">void</span> addReturnsFilter(std::vector<unsigned short> <span class="keyword">const</span>& returns);</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>   <span class="keywordtype">void</span> addClassFilter(std::vector<unsigned short> <span class="keyword">const</span>& classes);</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>   <span class="keywordtype">void</span> setFilters(<span class="keyword">const</span> std::vector<liblas::FilterPtr>& filters){m_filters=filters;setFilters();};</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>   <span class="keywordtype">void</span> setFilters(){m_reader->SetFilters(m_filters);};</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span> <span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>   <span class="keywordtype">void</span> setCodec(<span class="keyword">const</span> std::string& filename);</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>   std::string m_filename;</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>   std::ifstream *m_ifstream;</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>   liblas::Reader* m_reader;</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>   std::vector<liblas::FilterPtr> m_filters;</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span> };</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span> </div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span> <span class="preprocessor">#endif // _IMGREADERLAS_H_</span></div>
-<div class="ttc" id="classFileReaderLas_html"><div class="ttname"><a href="classFileReaderLas.html">FileReaderLas</a></div><div class="ttdef"><b>Definition:</b> <a href="FileReaderLas_8h_source.html#l00039">FileReaderLas.h:39</a></div></div>
-<div class="ttc" id="classLastReturnFilter_html"><div class="ttname"><a href="classLastReturnFilter.html">LastReturnFilter</a></div><div class="ttdef"><b>Definition:</b> <a href="FileReaderLas_8h_source.html#l00028">FileReaderLas.h:28</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/Filter2d_8cc_source.html b/doc/html/Filter2d_8cc_source.html
deleted file mode 100644
index 7714075..0000000
--- a/doc/html/Filter2d_8cc_source.html
+++ /dev/null
@@ -1,1394 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/algorithms/Filter2d.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_e6df591b0639d4c4807ef64d058833e2.html">algorithms</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">Filter2d.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">Filter2d.cc: class for filtering images</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2012 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <sstream></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <iomanip></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <iostream></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <cmath></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "Filter2d.h"</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "StatFactory.h"</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="comment">// #include "imageclasses/ImgUtils.h"</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> </div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> filter2d::Filter2d::Filter2d(<span class="keywordtype">void</span>)</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> {</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> }</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> </div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> filter2d::Filter2d::Filter2d(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<double></a> &taps)</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>   : m_taps(taps)</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> {</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> }</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> </div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="keywordtype">int</span> filter2d::Filter2d::pushNoDataValue(<span class="keywordtype">double</span> noDataValue)</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> {</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>   <span class="keywordflow">if</span>(find(m_noDataValues.begin(),m_noDataValues.end(),noDataValue)==m_noDataValues.end())</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     m_noDataValues.push_back(noDataValue);</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>   <span class="keywordflow">return</span>(m_noDataValues.size());</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span> }</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span> </div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span> <span class="keywordtype">void</span> filter2d::Filter2d::setTaps(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<double></a> &taps)</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span> {</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>   m_taps=taps;</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span> }</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span> </div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span> <span class="keywordtype">void</span> filter2d::Filter2d::smoothNoData(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keywordtype">int</span> dim)</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span> {</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>   smoothNoData(input, output,dim,dim);</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span> }</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span> </div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span> <span class="keywordtype">void</span> filter2d::Filter2d::smooth(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keywordtype">int</span> dim)</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span> {</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>   smooth(input, output,dim,dim);</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span> }</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span> </div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span> <span class="keywordtype">void</span> filter2d::Filter2d::smoothNoData(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keywordtype">int</span> dimX, <span class="keywordtype">int</span> dimY)</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span> {</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>   m_taps.resize(dimY);</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=0;j<dimY;++j){</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     m_taps[j].resize(dimX);</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<dimX;++i)</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>       m_taps[j][i]=1.0;</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>   }</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>   filter(input,output,<span class="keyword">false</span>,<span class="keyword">true</span>,<span class="keyword">true</span>);</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span> }</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span> </div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span> <span class="keywordtype">void</span> filter2d::Filter2d::smooth(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keywordtype">int</span> dimX, <span class="keywordtype">int</span> dimY)</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span> {</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>   m_taps.resize(dimY);</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=0;j<dimY;++j){</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>     m_taps[j].resize(dimX);</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<dimX;++i)</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>       m_taps[j][i]=1.0;</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>   }</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>   filter(input,output,<span class="keyword">false</span>,<span class="keyword">true</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span> }</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span> </div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>     </div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span> <span class="keywordtype">void</span> filter2d::Filter2d::filter(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keywordtype">bool</span> absolute, <span class="keywordtype">bool</span> normalize, <span class="keywordtype">bool</span> noData)</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span> {</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>   <span class="keywordtype">int</span> dimX=m_taps[0].size();<span class="comment">//horizontal!!!</span></div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>   <span class="keywordtype">int</span> dimY=m_taps.size();<span class="comment">//vertical!!!</span></div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   <span class="comment">//  byte* tmpbuf=new byte[input.rowSize()];</span></div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>   <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>   pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input.nrOfBand();++iband){</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>     <a class="code" href="classVector2d.html">Vector2d<double></a> inBuffer(dimY,input.nrOfCol());</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>     std::vector<double> outBuffer(input.nrOfCol());</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>     <span class="keywordtype">int</span> indexI=0;</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     <span class="keywordtype">int</span> indexJ=0;</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     <span class="comment">//initialize last half of inBuffer</span></div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=-(dimY-1)/2;j<=dimY/2;++j){</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>         input.readData(inBuffer[indexJ],GDT_Float64,abs(j),iband);</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>       }</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>       <span class="keywordflow">catch</span>(std::string errorstring){</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     std::cerr << errorstring << <span class="stringliteral">"in line "</span> << indexJ << std::endl;</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>       }</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>       ++indexJ;</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     }</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span> </div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y=0;y<input.nrOfRow();++y){</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>       <span class="keywordflow">if</span>(y){<span class="comment">//inBuffer already initialized for y=0</span></div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>     <span class="comment">//erase first line from inBuffer</span></div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>     <span class="keywordflow">if</span>(dimY>1)</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>       inBuffer.erase(inBuffer.begin());</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     <span class="comment">//read extra line and push back to inBuffer if not out of bounds</span></div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     <span class="keywordflow">if</span>(y+dimY/2<input.nrOfRow()){</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>       <span class="comment">//allocate buffer</span></div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>       <span class="keywordflow">if</span>(dimY>1)</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>         inBuffer.push_back(inBuffer.back());</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>             input.readData(inBuffer[inBuffer.size()-1],GDT_Float64,y+dimY/2,iband);</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>       }</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>       <span class="keywordflow">catch</span>(std::string errorstring){</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>         std::cerr << errorstring << <span class="stringliteral">"in band "</span> << iband << <span class="stringliteral">", line "</span> << y << std::endl;</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>       }</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     }</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>           <span class="keywordtype">int</span> over=y+dimY/2-input.nrOfRow();</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>           <span class="keywordtype">int</span> index=(inBuffer.size()-1)-over;</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>           assert(index>=0);</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>           assert(index<inBuffer.size());</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>           inBuffer.push_back(inBuffer[index]);</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>         }</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>       }</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x=0;x<input.nrOfCol();++x){</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>     outBuffer[x]=0;</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>         <span class="keywordtype">double</span> norm=0;</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>         <span class="keywordtype">bool</span> masked=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>         <span class="keywordflow">if</span>(noData){<span class="comment">//only filter noData values</span></div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> imask=0;imask<m_noDataValues.size();++imask){</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>             <span class="keywordflow">if</span>(inBuffer[(dimY-1)/2][x]==m_noDataValues[imask]){</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>               masked=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>             }</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>           }</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>           <span class="keywordflow">if</span>(!masked){</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>             outBuffer[x]=inBuffer[(dimY-1)/2][x];</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>             <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>           }</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>         }</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>         assert(!noData||masked);</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=-(dimY-1)/2;j<=dimY/2;++j){</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=-(dimX-1)/2;i<=dimX/2;++i){</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>         indexI=x+i;</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>         indexJ=(dimY-1)/2+j;</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>         <span class="comment">//check if out of bounds</span></div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>         <span class="keywordflow">if</span>(x<(dimX-1)/2)</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>           indexI=x+abs(i);</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(x>=input.nrOfCol()-(dimX-1)/2)</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>           indexI=x-abs(i);</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>         <span class="keywordflow">if</span>(y<(dimY-1)/2)</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>           indexJ=(dimY-1)/2+abs(j);</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(y>=input.nrOfRow()-(dimY-1)/2)</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>           indexJ=(dimY-1)/2-abs(j);</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>             <span class="comment">//do not take masked values into account</span></div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>             masked=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> imask=0;imask<m_noDataValues.size();++imask){</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>           <span class="keywordflow">if</span>(inBuffer[indexJ][indexI]==m_noDataValues[imask]){</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>         masked=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>           }</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>         }</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>         <span class="keywordflow">if</span>(!masked){</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>               outBuffer[x]+=(m_taps[(dimY-1)/2+j][(dimX-1)/2+i]*inBuffer[indexJ][indexI]);</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>               norm+=m_taps[(dimY-1)/2+j][(dimX-1)/2+i];</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>             }</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>       }</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>         }</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>         <span class="keywordflow">if</span>(absolute)</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>           outBuffer[x]=(normalize&&norm)? abs(outBuffer[x])/norm : abs(outBuffer[x]);</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(normalize&&norm!=0)</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>           outBuffer[x]=outBuffer[x]/norm;</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>       }</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>       <span class="comment">//write outBuffer to file</span></div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>         output.writeData(outBuffer,GDT_Float64,y,iband);</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>       }</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>       <span class="keywordflow">catch</span>(std::string errorstring){</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>         std::cerr << errorstring << <span class="stringliteral">"in band "</span> << iband << <span class="stringliteral">", line "</span> << y << std::endl;</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>       }</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>       progress=(1.0+y);</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>       progress+=(output.nrOfRow()*iband);</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>       progress/=output.nrOfBand()*output.nrOfRow();</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>       pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>     }</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>   }</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span> }</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span> </div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span> </div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span> <span class="keywordtype">void</span> filter2d::Filter2d::majorVoting(<span class="keyword">const</span> std::string& inputFilename, <span class="keyword">const</span> std::string& outputFilename,<span class="keywordtype">int</span> dim,<span class="keyword">const</span> std::vector<int> &prior)</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span> {</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>   <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>   pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span> </div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>   <span class="keywordtype">bool</span> usePriors=<span class="keyword">true</span>;  </div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>   <span class="keywordflow">if</span>(prior.empty()){</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>     std::cout << <span class="stringliteral">"no prior information"</span> << std::endl;</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>     usePriors=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>   }</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>     std::cout << <span class="stringliteral">"using priors "</span>;    </div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<prior.size();++iclass)</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>       std::cout << <span class="stringliteral">" "</span> << static_cast<short>(prior[iclass]);</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>     std::cout << std::endl;    </div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>   }  </div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span> </div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>   <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> input;</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>   <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> output;</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>   input.open(inputFilename);</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>   output.open(outputFilename,input);</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>   <span class="keywordtype">int</span> dimX=0;<span class="comment">//horizontal!!!</span></div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>   <span class="keywordtype">int</span> dimY=0;<span class="comment">//vertical!!!</span></div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>   <span class="keywordflow">if</span>(dim){</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>     dimX=dim;</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>     dimY=dim;</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>   }</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>     dimX=m_taps[0].size();</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>     dimY=m_taps.size();</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>   }</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span> </div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>   assert(dimX);</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>   assert(dimY);</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span> </div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> inBuffer(dimY,input.nrOfCol());</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>   std::vector<double> outBuffer(input.nrOfCol());</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>   <span class="keywordtype">int</span> indexI=0;</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>   <span class="keywordtype">int</span> indexJ=0;</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>   <span class="comment">//initialize last half of inBuffer</span></div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=-(dimY-1)/2;j<=dimY/2;++j){</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>         input.readData(inBuffer[indexJ],GDT_Float64,abs(j));</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>       }</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>       <span class="keywordflow">catch</span>(std::string errorstring){</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>     std::cerr << errorstring << <span class="stringliteral">"in line "</span> << indexJ << std::endl;</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>       }</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>       ++indexJ;</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>     }</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span> </div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y=0;y<input.nrOfRow();++y){</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>     <span class="keywordflow">if</span>(y){<span class="comment">//inBuffer already initialized for y=0</span></div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>       <span class="comment">//erase first line from inBuffer</span></div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>       <span class="keywordflow">if</span>(dimY>1)</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>     inBuffer.erase(inBuffer.begin());</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>       <span class="comment">//read extra line and push back to inBuffer if not out of bounds</span></div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>       <span class="keywordflow">if</span>(y+dimY/2<input.nrOfRow()){</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>     <span class="comment">//allocate buffer</span></div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>     <span class="keywordflow">if</span>(dimY>1)</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>       inBuffer.push_back(inBuffer.back());</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>           input.readData(inBuffer[inBuffer.size()-1],GDT_Float64,y+dimY/2);</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>     }</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>     <span class="keywordflow">catch</span>(std::string errorstring){</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>       std::cerr << errorstring << <span class="stringliteral">"in line"</span> << y << std::endl;</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>     }</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>       }</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>         <span class="keywordtype">int</span> over=y+dimY/2-input.nrOfRow();</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>         <span class="keywordtype">int</span> index=(inBuffer.size()-1)-over;</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>         assert(index>=0);</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>         assert(index<inBuffer.size());</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>         inBuffer.push_back(inBuffer[index]);</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>       }</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>     }</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x=0;x<input.nrOfCol();++x){</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>       outBuffer[x]=0;</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>       std::map<int,int> occurrence;</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>       <span class="keywordtype">int</span> centre=dimX*(dimY-1)/2+(dimX-1)/2;</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=-(dimY-1)/2;j<=dimY/2;++j){</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=-(dimX-1)/2;i<=dimX/2;++i){</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>       indexI=x+i;</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>       <span class="comment">//check if out of bounds</span></div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>           <span class="keywordflow">if</span>(indexI<0)</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>             indexI=-indexI;</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>           <span class="keywordflow">else</span> <span class="keywordflow">if</span>(indexI>=input.nrOfCol())</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>             indexI=input.nrOfCol()-i;</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>           <span class="keywordflow">if</span>(y+j<0)</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>             indexJ=-j;</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>           <span class="keywordflow">else</span> <span class="keywordflow">if</span>(y+j>=input.nrOfRow())</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>             indexJ=(dimY>2) ? (dimY-1)/2-j : 0;</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>             indexJ=(dimY-1)/2+j;</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span> </div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>       <span class="comment">// if(x<dimX/2)</span></div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>       <span class="comment">//   indexI=x+abs(i);</span></div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>       <span class="comment">// else if(x>=input.nrOfCol()-dimX/2)</span></div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>       <span class="comment">//   indexI=x-abs(i);</span></div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>       <span class="comment">// if(y<dimY/2)</span></div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>       <span class="comment">//   indexJ=dimY/2+abs(j);</span></div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>       <span class="comment">// else if(y>=input.nrOfRow()-dimY/2)</span></div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>       <span class="comment">//   indexJ=dimY/2-abs(j);</span></div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>       <span class="keywordflow">if</span>(usePriors){</div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>         occurrence[inBuffer[indexJ][indexI]]+=prior[inBuffer[indexJ][indexI]-1];</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>       }   </div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>         ++occurrence[inBuffer[indexJ][indexI]];</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>     }</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>       }</div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>       std::map<int,int>::const_iterator maxit=occurrence.begin();</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>       <span class="keywordflow">for</span>(std::map<int,int>::const_iterator mit=occurrence.begin();mit!=occurrence.end();++mit){</div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>     <span class="keywordflow">if</span>(mit->second>maxit->second)</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>       maxit=mit;</div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>       }</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>       <span class="keywordflow">if</span>(occurrence[inBuffer[(dimY-1)/2][x]]<maxit->second)<span class="comment">//</span></div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>     outBuffer[x]=maxit->first;</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>       <span class="keywordflow">else</span><span class="comment">//favorize original value in case of ties</span></div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>     outBuffer[x]=inBuffer[(dimY-1)/2][x];</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>     }</div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>     <span class="comment">//write outBuffer to file</span></div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>       output.writeData(outBuffer,GDT_Float64,y);</div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>     }</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>     <span class="keywordflow">catch</span>(std::string errorstring){</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>       std::cerr << errorstring << <span class="stringliteral">"in line"</span> << y << std::endl;</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>     }</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>     progress=(1.0+y)/output.nrOfRow();</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>   }</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>   input.close();</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>   output.close();</div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span> }</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span> </div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span> <span class="keywordtype">void</span> filter2d::Filter2d::median(<span class="keyword">const</span> std::string& inputFilename, <span class="keyword">const</span> std::string& outputFilename,<span class="keywordtype">int</span> dim, <span class="keywordtype">bool</span> disc)</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span> {</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>   <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> input;</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>   <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> output;</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>   input.open(inputFilename);</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>   output.open(outputFilename,input);</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>   doit(input,output,<span class="stringliteral">"median"</span>,dim,disc);</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span> }</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span> </div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span> <span class="keywordtype">void</span> filter2d::Filter2d::var(<span class="keyword">const</span> std::string& inputFilename, <span class="keyword">const</span> std::string& outputFilename,<span class="keywordtype">int</span> dim, <span class="keywordtype">bool</span> disc)</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span> {</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>   <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> input;</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>   <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> output;</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>   input.open(inputFilename);</div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>   output.open(outputFilename,input);</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>   doit(input,output,<span class="stringliteral">"var"</span>,dim,disc);</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span> }</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span> </div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span> <span class="keywordtype">void</span> filter2d::Filter2d::doit(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keyword">const</span> std::string& method, <span class="keywordtype">int</span> dim, <span class="keywordtype">short</span> down, <span class="k [...]
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span> {</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>   doit(input,output,method,dim,dim,down,disc);</div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span> }</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span> </div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span> <span class="keywordtype">void</span> filter2d::Filter2d::doit(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keyword">const</span> std::string& method, <span class="keywordtype">int</span> dimX, <span class="keywordtype">int</span> dimY, <span class="ke [...]
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span> {</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>   <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>   pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span> </div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>   assert(dimX);</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>   assert(dimY);</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span> </div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>   <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input.nrOfBand();++iband){</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>     <a class="code" href="classVector2d.html">Vector2d<double></a> inBuffer(dimY,input.nrOfCol());</div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>     std::vector<double> outBuffer((input.nrOfCol()+down-1)/down);</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>     <span class="keywordtype">int</span> indexI=0;</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>     <span class="keywordtype">int</span> indexJ=0;</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>     <span class="comment">//initialize last half of inBuffer</span></div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=-(dimY-1)/2;j<=dimY/2;++j){</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>         input.readData(inBuffer[indexJ],GDT_Float64,abs(j),iband);</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>       }</div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>       <span class="keywordflow">catch</span>(std::string errorstring){</div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>     std::cerr << errorstring << <span class="stringliteral">"in line "</span> << indexJ << std::endl;</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>       }</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>       ++indexJ;</div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>     }</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y=0;y<input.nrOfRow();++y){</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>       <span class="keywordflow">if</span>(y){<span class="comment">//inBuffer already initialized for y=0</span></div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>     <span class="comment">//erase first line from inBuffer</span></div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>     <span class="keywordflow">if</span>(dimY>1)</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>       inBuffer.erase(inBuffer.begin());</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>     <span class="comment">//read extra line and push back to inBuffer if not out of bounds</span></div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>     <span class="keywordflow">if</span>(y+dimY/2<input.nrOfRow()){</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>           <span class="comment">//allocate buffer</span></div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>       <span class="keywordflow">if</span>(dimY>1)</div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>         inBuffer.push_back(inBuffer.back());</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>             input.readData(inBuffer[inBuffer.size()-1],GDT_Float64,y+dimY/2,iband);</div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>       }</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>       <span class="keywordflow">catch</span>(std::string errorstring){</div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>         std::cerr << errorstring << <span class="stringliteral">"in band "</span> << iband << <span class="stringliteral">", line "</span> << y << std::endl;</div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>       }</div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>     }</div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>           <span class="keywordtype">int</span> over=y+dimY/2-input.nrOfRow();</div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span>           <span class="keywordtype">int</span> index=(inBuffer.size()-1)-over;</div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>           assert(index>=0);</div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>           assert(index<inBuffer.size());</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>           inBuffer.push_back(inBuffer[index]);</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span>         }</div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>       }</div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span>       <span class="keywordflow">if</span>((y+1+down/2)%down)</div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>         <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x=0;x<input.nrOfCol();++x){</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>         <span class="keywordflow">if</span>((x+1+down/2)%down)</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>           <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span>     outBuffer[x/down]=0;</div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>     std::vector<double> windowBuffer;</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>     std::map<long int,int> occurrence;</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>         <span class="keywordtype">int</span> centre=dimX*(dimY-1)/2+(dimX-1)/2;</div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=-(dimY-1)/2;j<=dimY/2;++j){</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=-(dimX-1)/2;i<=dimX/2;++i){</div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>         <span class="keywordtype">double</span> d2=i*i+j*j;<span class="comment">//square distance</span></div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>             <span class="keywordflow">if</span>(disc&&(d2>(dimX/2)*(dimY/2)))</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span>               <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>         indexI=x+i;</div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span>         <span class="comment">//check if out of bounds</span></div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span>         <span class="keywordflow">if</span>(indexI<0)</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>           indexI=-indexI;</div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(indexI>=input.nrOfCol())</div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span>           indexI=input.nrOfCol()-i;</div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span>         <span class="keywordflow">if</span>(y+j<0)</div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span>           indexJ=-j;</div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(y+j>=input.nrOfRow())</div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span>           indexJ=(dimY>2) ? (dimY-1)/2-j : 0;</div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span>           indexJ=(dimY-1)/2+j;</div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>         <span class="keywordtype">bool</span> masked=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> imask=0;imask<m_noDataValues.size();++imask){</div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span>           <span class="keywordflow">if</span>(inBuffer[indexJ][indexI]==m_noDataValues[imask]){</div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span>         masked=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span>           }</div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span>         }</div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span>         <span class="keywordflow">if</span>(!masked){</div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span>               std::vector<short>::const_iterator vit=m_class.begin();</div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span>               <span class="keywordflow">if</span>(!m_class.size())</div>
-<div class="line"><a name="l00445"></a><span class="lineno">  445</span>                 ++occurrence[inBuffer[indexJ][indexI]];</div>
-<div class="line"><a name="l00446"></a><span class="lineno">  446</span>               <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00447"></a><span class="lineno">  447</span>                 <span class="keywordflow">while</span>(vit!=m_class.end()){</div>
-<div class="line"><a name="l00448"></a><span class="lineno">  448</span>                   <span class="keywordflow">if</span>(inBuffer[indexJ][indexI]==*(vit++))</div>
-<div class="line"><a name="l00449"></a><span class="lineno">  449</span>                     ++occurrence[inBuffer[indexJ][indexI]];</div>
-<div class="line"><a name="l00450"></a><span class="lineno">  450</span>                 }</div>
-<div class="line"><a name="l00451"></a><span class="lineno">  451</span>               }</div>
-<div class="line"><a name="l00452"></a><span class="lineno">  452</span>               windowBuffer.push_back(inBuffer[indexJ][indexI]);</div>
-<div class="line"><a name="l00453"></a><span class="lineno">  453</span>             }</div>
-<div class="line"><a name="l00454"></a><span class="lineno">  454</span>       }</div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span>         }</div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</span>         <span class="keywordflow">switch</span>(getFilterType(method)){</div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span>         <span class="keywordflow">case</span>(filter2d::nvalid):</div>
-<div class="line"><a name="l00458"></a><span class="lineno">  458</span>       outBuffer[x/down]=stat.nvalid(windowBuffer);</div>
-<div class="line"><a name="l00459"></a><span class="lineno">  459</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00460"></a><span class="lineno">  460</span>         <span class="keywordflow">case</span>(filter2d::median):</div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span>           <span class="keywordflow">if</span>(windowBuffer.empty())</div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span>             outBuffer[x/down]=(m_noDataValues.size())? m_noDataValues[0] : 0;</div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00464"></a><span class="lineno">  464</span>             outBuffer[x/down]=stat.median(windowBuffer);</div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>         <span class="keywordflow">case</span>(filter2d::var):{</div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span>           <span class="keywordflow">if</span>(windowBuffer.empty())</div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span>             outBuffer[x/down]=(m_noDataValues.size())? m_noDataValues[0] : 0;</div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00470"></a><span class="lineno">  470</span>             outBuffer[x/down]=stat.var(windowBuffer);</div>
-<div class="line"><a name="l00471"></a><span class="lineno">  471</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00472"></a><span class="lineno">  472</span>         }</div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span>         <span class="keywordflow">case</span>(filter2d::stdev):{</div>
-<div class="line"><a name="l00474"></a><span class="lineno">  474</span>           <span class="keywordflow">if</span>(windowBuffer.empty())</div>
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span>             outBuffer[x/down]=(m_noDataValues.size())? m_noDataValues[0] : 0;</div>
-<div class="line"><a name="l00476"></a><span class="lineno">  476</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00477"></a><span class="lineno">  477</span>             outBuffer[x/down]=sqrt(stat.var(windowBuffer));</div>
-<div class="line"><a name="l00478"></a><span class="lineno">  478</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00479"></a><span class="lineno">  479</span>         }</div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span>         <span class="keywordflow">case</span>(filter2d::mean):{</div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span>           <span class="keywordflow">if</span>(windowBuffer.empty())</div>
-<div class="line"><a name="l00482"></a><span class="lineno">  482</span>             outBuffer[x/down]=(m_noDataValues.size())? m_noDataValues[0] : 0;</div>
-<div class="line"><a name="l00483"></a><span class="lineno">  483</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00484"></a><span class="lineno">  484</span>             outBuffer[x/down]=stat.mean(windowBuffer);</div>
-<div class="line"><a name="l00485"></a><span class="lineno">  485</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00486"></a><span class="lineno">  486</span>         }</div>
-<div class="line"><a name="l00487"></a><span class="lineno">  487</span>         <span class="keywordflow">case</span>(filter2d::min):{</div>
-<div class="line"><a name="l00488"></a><span class="lineno">  488</span>           <span class="keywordflow">if</span>(windowBuffer.empty())</div>
-<div class="line"><a name="l00489"></a><span class="lineno">  489</span>             outBuffer[x/down]=(m_noDataValues.size())? m_noDataValues[0] : 0;</div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span>            outBuffer[x/down]=stat.mymin(windowBuffer);</div>
-<div class="line"><a name="l00492"></a><span class="lineno">  492</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00493"></a><span class="lineno">  493</span>         }</div>
-<div class="line"><a name="l00494"></a><span class="lineno">  494</span>         <span class="keywordflow">case</span>(filter2d::ismin):{</div>
-<div class="line"><a name="l00495"></a><span class="lineno">  495</span>            <span class="keywordflow">if</span>(windowBuffer.empty())</div>
-<div class="line"><a name="l00496"></a><span class="lineno">  496</span>             outBuffer[x/down]=(m_noDataValues.size())? m_noDataValues[0] : 0;</div>
-<div class="line"><a name="l00497"></a><span class="lineno">  497</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span>             outBuffer[x/down]=(stat.mymin(windowBuffer)==windowBuffer[centre])? 1:0;</div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00500"></a><span class="lineno">  500</span>         }</div>
-<div class="line"><a name="l00501"></a><span class="lineno">  501</span>         <span class="keywordflow">case</span>(filter2d::minmax):{<span class="comment">//is the same as homog?</span></div>
-<div class="line"><a name="l00502"></a><span class="lineno">  502</span>           <span class="keywordtype">double</span> min=0;</div>
-<div class="line"><a name="l00503"></a><span class="lineno">  503</span>           <span class="keywordtype">double</span> max=0;</div>
-<div class="line"><a name="l00504"></a><span class="lineno">  504</span>           <span class="keywordflow">if</span>(windowBuffer.empty())</div>
-<div class="line"><a name="l00505"></a><span class="lineno">  505</span>             outBuffer[x/down]=(m_noDataValues.size())? m_noDataValues[0] : 0;</div>
-<div class="line"><a name="l00506"></a><span class="lineno">  506</span>           <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span>             stat.minmax(windowBuffer,windowBuffer.begin(),windowBuffer.end(),min,max);</div>
-<div class="line"><a name="l00508"></a><span class="lineno">  508</span>             <span class="keywordflow">if</span>(min!=max)</div>
-<div class="line"><a name="l00509"></a><span class="lineno">  509</span>               outBuffer[x/down]=0;</div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span>               outBuffer[x/down]=windowBuffer[centre];<span class="comment">//centre pixels</span></div>
-<div class="line"><a name="l00512"></a><span class="lineno">  512</span>           }</div>
-<div class="line"><a name="l00513"></a><span class="lineno">  513</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span>         }</div>
-<div class="line"><a name="l00515"></a><span class="lineno">  515</span>         <span class="keywordflow">case</span>(filter2d::max):{</div>
-<div class="line"><a name="l00516"></a><span class="lineno">  516</span>           <span class="keywordflow">if</span>(windowBuffer.empty())</div>
-<div class="line"><a name="l00517"></a><span class="lineno">  517</span>             outBuffer[x/down]=(m_noDataValues.size())? m_noDataValues[0] : 0;</div>
-<div class="line"><a name="l00518"></a><span class="lineno">  518</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00519"></a><span class="lineno">  519</span>             outBuffer[x/down]=stat.mymax(windowBuffer);</div>
-<div class="line"><a name="l00520"></a><span class="lineno">  520</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00521"></a><span class="lineno">  521</span>         }</div>
-<div class="line"><a name="l00522"></a><span class="lineno">  522</span>         <span class="keywordflow">case</span>(filter2d::ismax):{</div>
-<div class="line"><a name="l00523"></a><span class="lineno">  523</span>           <span class="keywordflow">if</span>(windowBuffer.empty())</div>
-<div class="line"><a name="l00524"></a><span class="lineno">  524</span>             outBuffer[x/down]=(m_noDataValues.size())? m_noDataValues[0] : 0;</div>
-<div class="line"><a name="l00525"></a><span class="lineno">  525</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00526"></a><span class="lineno">  526</span>             outBuffer[x/down]=(stat.mymax(windowBuffer)==windowBuffer[centre])? 1:0;</div>
-<div class="line"><a name="l00527"></a><span class="lineno">  527</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00528"></a><span class="lineno">  528</span>         }</div>
-<div class="line"><a name="l00529"></a><span class="lineno">  529</span>         <span class="keywordflow">case</span>(filter2d::order):{</div>
-<div class="line"><a name="l00530"></a><span class="lineno">  530</span>           <span class="keywordflow">if</span>(windowBuffer.empty())</div>
-<div class="line"><a name="l00531"></a><span class="lineno">  531</span>             outBuffer[x/down]=(m_noDataValues.size())? m_noDataValues[0] : 0;</div>
-<div class="line"><a name="l00532"></a><span class="lineno">  532</span>           <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00533"></a><span class="lineno">  533</span>             <span class="keywordtype">double</span> lbound=0;</div>
-<div class="line"><a name="l00534"></a><span class="lineno">  534</span>             <span class="keywordtype">double</span> ubound=dimX*dimY;</div>
-<div class="line"><a name="l00535"></a><span class="lineno">  535</span>             <span class="keywordtype">double</span> theMin=stat.mymin(windowBuffer);</div>
-<div class="line"><a name="l00536"></a><span class="lineno">  536</span>             <span class="keywordtype">double</span> theMax=stat.mymax(windowBuffer);</div>
-<div class="line"><a name="l00537"></a><span class="lineno">  537</span>             <span class="keywordtype">double</span> scale=(ubound-lbound)/(theMax-theMin);</div>
-<div class="line"><a name="l00538"></a><span class="lineno">  538</span>             outBuffer[x/down]=<span class="keyword">static_cast<</span><span class="keywordtype">short</span><span class="keyword">></span>(scale*(windowBuffer[centre]-theMin)+lbound);</div>
-<div class="line"><a name="l00539"></a><span class="lineno">  539</span>           }</div>
-<div class="line"><a name="l00540"></a><span class="lineno">  540</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00541"></a><span class="lineno">  541</span>         }</div>
-<div class="line"><a name="l00542"></a><span class="lineno">  542</span>         <span class="keywordflow">case</span>(filter2d::sum):{</div>
-<div class="line"><a name="l00543"></a><span class="lineno">  543</span>           outBuffer[x/down]=stat.sum(windowBuffer);</div>
-<div class="line"><a name="l00544"></a><span class="lineno">  544</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00545"></a><span class="lineno">  545</span>         }</div>
-<div class="line"><a name="l00546"></a><span class="lineno">  546</span>     <span class="keywordflow">case</span>(filter2d::percentile):{</div>
-<div class="line"><a name="l00547"></a><span class="lineno">  547</span>       assert(m_threshold.size());</div>
-<div class="line"><a name="l00548"></a><span class="lineno">  548</span>       outBuffer[x/down]=stat.percentile(windowBuffer,windowBuffer.begin(),windowBuffer.end(),m_threshold[0]);</div>
-<div class="line"><a name="l00549"></a><span class="lineno">  549</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00550"></a><span class="lineno">  550</span>     }</div>
-<div class="line"><a name="l00551"></a><span class="lineno">  551</span>         <span class="keywordflow">case</span>(filter2d::proportion):{</div>
-<div class="line"><a name="l00552"></a><span class="lineno">  552</span>       <span class="keywordflow">if</span>(windowBuffer.size()){</div>
-<div class="line"><a name="l00553"></a><span class="lineno">  553</span>         <span class="keywordtype">double</span> sum=stat.sum(windowBuffer);</div>
-<div class="line"><a name="l00554"></a><span class="lineno">  554</span>         <span class="keywordflow">if</span>(sum)</div>
-<div class="line"><a name="l00555"></a><span class="lineno">  555</span>           outBuffer[x/down]=100.0*windowBuffer[centre]/stat.sum(windowBuffer);</div>
-<div class="line"><a name="l00556"></a><span class="lineno">  556</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00557"></a><span class="lineno">  557</span>           outBuffer[x/down]=(m_noDataValues.size())? m_noDataValues[0] : 0;</div>
-<div class="line"><a name="l00558"></a><span class="lineno">  558</span>       }</div>
-<div class="line"><a name="l00559"></a><span class="lineno">  559</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00560"></a><span class="lineno">  560</span>         outBuffer[x/down]=(m_noDataValues.size())? m_noDataValues[0] : 0;</div>
-<div class="line"><a name="l00561"></a><span class="lineno">  561</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00562"></a><span class="lineno">  562</span>     }</div>
-<div class="line"><a name="l00563"></a><span class="lineno">  563</span>         <span class="keywordflow">case</span>(filter2d::homog):</div>
-<div class="line"><a name="l00564"></a><span class="lineno">  564</span>       <span class="keywordflow">if</span>(occurrence.size()==1)<span class="comment">//all values in window are the same</span></div>
-<div class="line"><a name="l00565"></a><span class="lineno">  565</span>         outBuffer[x/down]=inBuffer[(dimY-1)/2][x];</div>
-<div class="line"><a name="l00566"></a><span class="lineno">  566</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00567"></a><span class="lineno">  567</span>         outBuffer[x/down]=(m_noDataValues.size())? m_noDataValues[0] : 0;</div>
-<div class="line"><a name="l00568"></a><span class="lineno">  568</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00569"></a><span class="lineno">  569</span>         <span class="keywordflow">case</span>(filter2d::heterog):{</div>
-<div class="line"><a name="l00570"></a><span class="lineno">  570</span>       <span class="keywordflow">if</span>(occurrence.size()==windowBuffer.size())</div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span>         outBuffer[x/down]=inBuffer[(dimY-1)/2][x];</div>
-<div class="line"><a name="l00572"></a><span class="lineno">  572</span>       <span class="keywordflow">else</span>      </div>
-<div class="line"><a name="l00573"></a><span class="lineno">  573</span>         outBuffer[x/down]=(m_noDataValues.size())? m_noDataValues[0] : 0;</div>
-<div class="line"><a name="l00574"></a><span class="lineno">  574</span>       <span class="comment">// if(occurrence.size()==1)//all values in window are the same</span></div>
-<div class="line"><a name="l00575"></a><span class="lineno">  575</span>       <span class="comment">//   outBuffer[x/down]=(m_noDataValues.size())? m_noDataValues[0] : 0;</span></div>
-<div class="line"><a name="l00576"></a><span class="lineno">  576</span>       <span class="comment">// else</span></div>
-<div class="line"><a name="l00577"></a><span class="lineno">  577</span>       <span class="comment">//   outBuffer[x/down]=inBuffer[(dimY-1)/2][x];</span></div>
-<div class="line"><a name="l00578"></a><span class="lineno">  578</span>           <span class="comment">// break;</span></div>
-<div class="line"><a name="l00579"></a><span class="lineno">  579</span>           <span class="comment">// for(std::vector<double>::const_iterator wit=windowBuffer.begin();wit!=windowBuffer.end();++wit){</span></div>
-<div class="line"><a name="l00580"></a><span class="lineno">  580</span>           <span class="comment">//   if(wit==windowBuffer.begin()+windowBuffer.size()/2)</span></div>
-<div class="line"><a name="l00581"></a><span class="lineno">  581</span>           <span class="comment">//     continue;</span></div>
-<div class="line"><a name="l00582"></a><span class="lineno">  582</span>           <span class="comment">//   else if(*wit!=inBuffer[(dimY-1)/2][x]){</span></div>
-<div class="line"><a name="l00583"></a><span class="lineno">  583</span>           <span class="comment">//     outBuffer[x/down]=1;</span></div>
-<div class="line"><a name="l00584"></a><span class="lineno">  584</span>       <span class="comment">//     break;</span></div>
-<div class="line"><a name="l00585"></a><span class="lineno">  585</span>       <span class="comment">//   }</span></div>
-<div class="line"><a name="l00586"></a><span class="lineno">  586</span>           <span class="comment">//   else if(*wit==inBuffer[(dimY-1)/2][x]){//todo:wit mag niet central pixel zijn</span></div>
-<div class="line"><a name="l00587"></a><span class="lineno">  587</span>           <span class="comment">//     outBuffer[x/down]=(m_noDataValues.size())? m_noDataValues[0] : 0;</span></div>
-<div class="line"><a name="l00588"></a><span class="lineno">  588</span>           <span class="comment">//     break;</span></div>
-<div class="line"><a name="l00589"></a><span class="lineno">  589</span>           <span class="comment">//   }</span></div>
-<div class="line"><a name="l00590"></a><span class="lineno">  590</span>           <span class="comment">// }</span></div>
-<div class="line"><a name="l00591"></a><span class="lineno">  591</span>           <span class="comment">// break;</span></div>
-<div class="line"><a name="l00592"></a><span class="lineno">  592</span>         }</div>
-<div class="line"><a name="l00593"></a><span class="lineno">  593</span>         <span class="keywordflow">case</span>(filter2d::density):{</div>
-<div class="line"><a name="l00594"></a><span class="lineno">  594</span>       <span class="keywordflow">if</span>(windowBuffer.size()){</div>
-<div class="line"><a name="l00595"></a><span class="lineno">  595</span>         std::vector<short>::const_iterator vit=m_class.begin();</div>
-<div class="line"><a name="l00596"></a><span class="lineno">  596</span>         <span class="keywordflow">while</span>(vit!=m_class.end())</div>
-<div class="line"><a name="l00597"></a><span class="lineno">  597</span>           outBuffer[x/down]+=100.0*occurrence[*(vit++)]/windowBuffer.size();</div>
-<div class="line"><a name="l00598"></a><span class="lineno">  598</span>       }</div>
-<div class="line"><a name="l00599"></a><span class="lineno">  599</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00600"></a><span class="lineno">  600</span>         outBuffer[x/down]=(m_noDataValues.size())? m_noDataValues[0] : 0;</div>
-<div class="line"><a name="l00601"></a><span class="lineno">  601</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00602"></a><span class="lineno">  602</span>     }</div>
-<div class="line"><a name="l00603"></a><span class="lineno">  603</span>         <span class="keywordflow">case</span>(filter2d::countid):{</div>
-<div class="line"><a name="l00604"></a><span class="lineno">  604</span>       <span class="keywordflow">if</span>(windowBuffer.size())</div>
-<div class="line"><a name="l00605"></a><span class="lineno">  605</span>         outBuffer[x/down]=occurrence.size();</div>
-<div class="line"><a name="l00606"></a><span class="lineno">  606</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00607"></a><span class="lineno">  607</span>         outBuffer[x/down]=(m_noDataValues.size())? m_noDataValues[0] : 0;</div>
-<div class="line"><a name="l00608"></a><span class="lineno">  608</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00609"></a><span class="lineno">  609</span>     }</div>
-<div class="line"><a name="l00610"></a><span class="lineno">  610</span>         <span class="keywordflow">case</span>(filter2d::mode):{</div>
-<div class="line"><a name="l00611"></a><span class="lineno">  611</span>       <span class="keywordflow">if</span>(occurrence.size()){</div>
-<div class="line"><a name="l00612"></a><span class="lineno">  612</span>             std::map<long int,int>::const_iterator maxit=occurrence.begin();</div>
-<div class="line"><a name="l00613"></a><span class="lineno">  613</span>             <span class="keywordflow">for</span>(std::map<long int,int>::const_iterator mit=occurrence.begin();mit!=occurrence.end();++mit){</div>
-<div class="line"><a name="l00614"></a><span class="lineno">  614</span>               <span class="keywordflow">if</span>(mit->second>maxit->second)</div>
-<div class="line"><a name="l00615"></a><span class="lineno">  615</span>                 maxit=mit;</div>
-<div class="line"><a name="l00616"></a><span class="lineno">  616</span>             }</div>
-<div class="line"><a name="l00617"></a><span class="lineno">  617</span>             <span class="keywordflow">if</span>(occurrence[inBuffer[(dimY-1)/2][x]]<maxit->second)<span class="comment">//</span></div>
-<div class="line"><a name="l00618"></a><span class="lineno">  618</span>               outBuffer[x/down]=maxit->first;</div>
-<div class="line"><a name="l00619"></a><span class="lineno">  619</span>             <span class="keywordflow">else</span><span class="comment">//favorize original value in case of ties</span></div>
-<div class="line"><a name="l00620"></a><span class="lineno">  620</span>               outBuffer[x/down]=inBuffer[(dimY-1)/2][x];</div>
-<div class="line"><a name="l00621"></a><span class="lineno">  621</span>       }</div>
-<div class="line"><a name="l00622"></a><span class="lineno">  622</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00623"></a><span class="lineno">  623</span>         outBuffer[x/down]=(m_noDataValues.size())? m_noDataValues[0] : 0;</div>
-<div class="line"><a name="l00624"></a><span class="lineno">  624</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00625"></a><span class="lineno">  625</span>         }</div>
-<div class="line"><a name="l00626"></a><span class="lineno">  626</span>         <span class="keywordflow">case</span>(filter2d::threshold):{</div>
-<div class="line"><a name="l00627"></a><span class="lineno">  627</span>           assert(m_class.size()==m_threshold.size());</div>
-<div class="line"><a name="l00628"></a><span class="lineno">  628</span>       <span class="keywordflow">if</span>(windowBuffer.size()){</div>
-<div class="line"><a name="l00629"></a><span class="lineno">  629</span>             outBuffer[x/down]=inBuffer[(dimY-1)/2][x];<span class="comment">//initialize with original value (in case thresholds not met)</span></div>
-<div class="line"><a name="l00630"></a><span class="lineno">  630</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<m_class.size();++iclass){</div>
-<div class="line"><a name="l00631"></a><span class="lineno">  631</span>               <span class="keywordflow">if</span>(100.0*(occurrence[m_class[iclass]])/windowBuffer.size()>m_threshold[iclass])</div>
-<div class="line"><a name="l00632"></a><span class="lineno">  632</span>                 outBuffer[x/down]=m_class[iclass];</div>
-<div class="line"><a name="l00633"></a><span class="lineno">  633</span>             }</div>
-<div class="line"><a name="l00634"></a><span class="lineno">  634</span>           }</div>
-<div class="line"><a name="l00635"></a><span class="lineno">  635</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00636"></a><span class="lineno">  636</span>         outBuffer[x/down]=(m_noDataValues.size())? m_noDataValues[0] : 0;</div>
-<div class="line"><a name="l00637"></a><span class="lineno">  637</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00638"></a><span class="lineno">  638</span>         }</div>
-<div class="line"><a name="l00639"></a><span class="lineno">  639</span>         <span class="keywordflow">case</span>(filter2d::scramble):{<span class="comment">//could be done more efficiently window by window with random shuffling entire buffer and assigning entire buffer at once to output image...</span></div>
-<div class="line"><a name="l00640"></a><span class="lineno">  640</span>       <span class="keywordflow">if</span>(windowBuffer.size()){</div>
-<div class="line"><a name="l00641"></a><span class="lineno">  641</span>             <span class="keywordtype">int</span> randomIndex=std::rand()%windowBuffer.size();</div>
-<div class="line"><a name="l00642"></a><span class="lineno">  642</span>         <span class="keywordflow">if</span>(randomIndex>=windowBuffer.size())</div>
-<div class="line"><a name="l00643"></a><span class="lineno">  643</span>           outBuffer[x/down]=windowBuffer.back();</div>
-<div class="line"><a name="l00644"></a><span class="lineno">  644</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(randomIndex<0)</div>
-<div class="line"><a name="l00645"></a><span class="lineno">  645</span>           outBuffer[x/down]=windowBuffer[0];</div>
-<div class="line"><a name="l00646"></a><span class="lineno">  646</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00647"></a><span class="lineno">  647</span>           outBuffer[x/down]=windowBuffer[randomIndex];</div>
-<div class="line"><a name="l00648"></a><span class="lineno">  648</span>           }</div>
-<div class="line"><a name="l00649"></a><span class="lineno">  649</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00650"></a><span class="lineno">  650</span>         outBuffer[x/down]=(m_noDataValues.size())? m_noDataValues[0] : 0;</div>
-<div class="line"><a name="l00651"></a><span class="lineno">  651</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00652"></a><span class="lineno">  652</span>         }</div>
-<div class="line"><a name="l00653"></a><span class="lineno">  653</span>         <span class="keywordflow">case</span>(filter2d::mixed):{</div>
-<div class="line"><a name="l00654"></a><span class="lineno">  654</span>           <span class="keyword">enum</span> Type { BF=11, CF=12, MF=13, NF=20, W=30 };</div>
-<div class="line"><a name="l00655"></a><span class="lineno">  655</span>           <span class="keywordtype">double</span> nBF=occurrence[BF];</div>
-<div class="line"><a name="l00656"></a><span class="lineno">  656</span>           <span class="keywordtype">double</span> nCF=occurrence[CF];</div>
-<div class="line"><a name="l00657"></a><span class="lineno">  657</span>           <span class="keywordtype">double</span> nMF=occurrence[MF];</div>
-<div class="line"><a name="l00658"></a><span class="lineno">  658</span>           <span class="keywordtype">double</span> nNF=occurrence[NF];</div>
-<div class="line"><a name="l00659"></a><span class="lineno">  659</span>           <span class="keywordtype">double</span> nW=occurrence[W];</div>
-<div class="line"><a name="l00660"></a><span class="lineno">  660</span>       <span class="keywordflow">if</span>(windowBuffer.size()){</div>
-<div class="line"><a name="l00661"></a><span class="lineno">  661</span>             <span class="keywordflow">if</span>((nBF+nCF+nMF)&&(nBF+nCF+nMF>=nNF+nW)){<span class="comment">//forest</span></div>
-<div class="line"><a name="l00662"></a><span class="lineno">  662</span>               <span class="keywordflow">if</span>(nBF/(nBF+nCF)>=0.75)</div>
-<div class="line"><a name="l00663"></a><span class="lineno">  663</span>                 outBuffer[x/down]=BF;</div>
-<div class="line"><a name="l00664"></a><span class="lineno">  664</span>               <span class="keywordflow">else</span> <span class="keywordflow">if</span>(nCF/(nBF+nCF)>=0.75)</div>
-<div class="line"><a name="l00665"></a><span class="lineno">  665</span>                 outBuffer[x/down]=CF;</div>
-<div class="line"><a name="l00666"></a><span class="lineno">  666</span>               <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00667"></a><span class="lineno">  667</span>                 outBuffer[x/down]=MF;</div>
-<div class="line"><a name="l00668"></a><span class="lineno">  668</span>             }</div>
-<div class="line"><a name="l00669"></a><span class="lineno">  669</span>             <span class="keywordflow">else</span>{<span class="comment">//non-forest</span></div>
-<div class="line"><a name="l00670"></a><span class="lineno">  670</span>               <span class="keywordflow">if</span>(nW&&(nW>=nNF))</div>
-<div class="line"><a name="l00671"></a><span class="lineno">  671</span>                 outBuffer[x/down]=W;</div>
-<div class="line"><a name="l00672"></a><span class="lineno">  672</span>               <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00673"></a><span class="lineno">  673</span>                 outBuffer[x/down]=NF;</div>
-<div class="line"><a name="l00674"></a><span class="lineno">  674</span>             }</div>
-<div class="line"><a name="l00675"></a><span class="lineno">  675</span>           }</div>
-<div class="line"><a name="l00676"></a><span class="lineno">  676</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00677"></a><span class="lineno">  677</span>         outBuffer[x/down]=inBuffer[indexJ][indexI];</div>
-<div class="line"><a name="l00678"></a><span class="lineno">  678</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00679"></a><span class="lineno">  679</span>         }</div>
-<div class="line"><a name="l00680"></a><span class="lineno">  680</span>         <span class="keywordflow">default</span>:{</div>
-<div class="line"><a name="l00681"></a><span class="lineno">  681</span>       std::ostringstream ess;</div>
-<div class="line"><a name="l00682"></a><span class="lineno">  682</span>       ess << <span class="stringliteral">"Error: filter method "</span> << method << <span class="stringliteral">" not supported"</span> << std::endl;</div>
-<div class="line"><a name="l00683"></a><span class="lineno">  683</span>       <span class="keywordflow">throw</span>(ess.str());</div>
-<div class="line"><a name="l00684"></a><span class="lineno">  684</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00685"></a><span class="lineno">  685</span>     }</div>
-<div class="line"><a name="l00686"></a><span class="lineno">  686</span>         }</div>
-<div class="line"><a name="l00687"></a><span class="lineno">  687</span>       }</div>
-<div class="line"><a name="l00688"></a><span class="lineno">  688</span>       progress=(1.0+y/down);</div>
-<div class="line"><a name="l00689"></a><span class="lineno">  689</span>       progress+=(output.nrOfRow()*iband);</div>
-<div class="line"><a name="l00690"></a><span class="lineno">  690</span>       progress/=output.nrOfBand()*output.nrOfRow();</div>
-<div class="line"><a name="l00691"></a><span class="lineno">  691</span>       pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00692"></a><span class="lineno">  692</span>       <span class="comment">//write outBuffer to file</span></div>
-<div class="line"><a name="l00693"></a><span class="lineno">  693</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00694"></a><span class="lineno">  694</span>         output.writeData(outBuffer,GDT_Float64,y/down,iband);</div>
-<div class="line"><a name="l00695"></a><span class="lineno">  695</span>       }</div>
-<div class="line"><a name="l00696"></a><span class="lineno">  696</span>       <span class="keywordflow">catch</span>(std::string errorstring){</div>
-<div class="line"><a name="l00697"></a><span class="lineno">  697</span>     std::cerr << errorstring << <span class="stringliteral">"in band "</span> << iband << <span class="stringliteral">", line "</span> << y << std::endl;</div>
-<div class="line"><a name="l00698"></a><span class="lineno">  698</span>       }</div>
-<div class="line"><a name="l00699"></a><span class="lineno">  699</span>     }</div>
-<div class="line"><a name="l00700"></a><span class="lineno">  700</span>   }</div>
-<div class="line"><a name="l00701"></a><span class="lineno">  701</span>   pfnProgress(1.0,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00702"></a><span class="lineno">  702</span> }</div>
-<div class="line"><a name="l00703"></a><span class="lineno">  703</span> </div>
-<div class="line"><a name="l00704"></a><span class="lineno">  704</span> <span class="keywordtype">void</span> filter2d::Filter2d::mrf(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keywordtype">int</span> dimX, <span class="keywordtype">int</span> dimY, <span class="keywordtype">double</span> beta, <span class="keywordtype">bool [...]
-<div class="line"><a name="l00705"></a><span class="lineno">  705</span>   assert(m_class.size()>1);</div>
-<div class="line"><a name="l00706"></a><span class="lineno">  706</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> fullBeta(m_class.size(),m_class.size());</div>
-<div class="line"><a name="l00707"></a><span class="lineno">  707</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass1=0;iclass1<m_class.size();++iclass1)</div>
-<div class="line"><a name="l00708"></a><span class="lineno">  708</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass2=0;iclass2<m_class.size();++iclass2)</div>
-<div class="line"><a name="l00709"></a><span class="lineno">  709</span>       fullBeta[iclass1][iclass2]=beta;</div>
-<div class="line"><a name="l00710"></a><span class="lineno">  710</span>   mrf(input,output,dimX,dimY,fullBeta,eightConnectivity,down,verbose);</div>
-<div class="line"><a name="l00711"></a><span class="lineno">  711</span> }</div>
-<div class="line"><a name="l00712"></a><span class="lineno">  712</span> </div>
-<div class="line"><a name="l00713"></a><span class="lineno">  713</span> <span class="comment">//beta[classTo][classFrom]</span></div>
-<div class="line"><a name="l00714"></a><span class="lineno">  714</span> <span class="keywordtype">void</span> filter2d::Filter2d::mrf(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keywordtype">int</span> dimX, <span class="keywordtype">int</span> dimY, <a class="code" href="classVector2d.html">Vector2d<double></a> beta, < [...]
-<div class="line"><a name="l00715"></a><span class="lineno">  715</span> {</div>
-<div class="line"><a name="l00716"></a><span class="lineno">  716</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00717"></a><span class="lineno">  717</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00718"></a><span class="lineno">  718</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00719"></a><span class="lineno">  719</span>   <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l00720"></a><span class="lineno">  720</span>   pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00721"></a><span class="lineno">  721</span> </div>
-<div class="line"><a name="l00722"></a><span class="lineno">  722</span>   assert(dimX);</div>
-<div class="line"><a name="l00723"></a><span class="lineno">  723</span>   assert(dimY);</div>
-<div class="line"><a name="l00724"></a><span class="lineno">  724</span> </div>
-<div class="line"><a name="l00725"></a><span class="lineno">  725</span>   <a class="code" href="classVector2d.html">Vector2d<short></a> inBuffer(dimY,input.nrOfCol());</div>
-<div class="line"><a name="l00726"></a><span class="lineno">  726</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> outBuffer(m_class.size(),(input.nrOfCol()+down-1)/down);</div>
-<div class="line"><a name="l00727"></a><span class="lineno">  727</span>   assert(input.nrOfBand()==1);</div>
-<div class="line"><a name="l00728"></a><span class="lineno">  728</span>   assert(output.nrOfBand()==m_class.size());</div>
-<div class="line"><a name="l00729"></a><span class="lineno">  729</span>   assert(m_class.size()>1);</div>
-<div class="line"><a name="l00730"></a><span class="lineno">  730</span>   assert(beta.size()==m_class.size());</div>
-<div class="line"><a name="l00731"></a><span class="lineno">  731</span>   <span class="keywordtype">int</span> indexI=0;</div>
-<div class="line"><a name="l00732"></a><span class="lineno">  732</span>   <span class="keywordtype">int</span> indexJ=0;</div>
-<div class="line"><a name="l00733"></a><span class="lineno">  733</span>   <span class="comment">//initialize last half of inBuffer</span></div>
-<div class="line"><a name="l00734"></a><span class="lineno">  734</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=-(dimY-1)/2;j<=dimY/2;++j){</div>
-<div class="line"><a name="l00735"></a><span class="lineno">  735</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00736"></a><span class="lineno">  736</span>       input.readData(inBuffer[indexJ],GDT_Int16,abs(j));</div>
-<div class="line"><a name="l00737"></a><span class="lineno">  737</span>     }</div>
-<div class="line"><a name="l00738"></a><span class="lineno">  738</span>     <span class="keywordflow">catch</span>(std::string errorstring){</div>
-<div class="line"><a name="l00739"></a><span class="lineno">  739</span>       std::cerr << errorstring << <span class="stringliteral">"in line "</span> << indexJ << std::endl;</div>
-<div class="line"><a name="l00740"></a><span class="lineno">  740</span>     }</div>
-<div class="line"><a name="l00741"></a><span class="lineno">  741</span>     ++indexJ;</div>
-<div class="line"><a name="l00742"></a><span class="lineno">  742</span>   }</div>
-<div class="line"><a name="l00743"></a><span class="lineno">  743</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y=0;y<input.nrOfRow();++y){</div>
-<div class="line"><a name="l00744"></a><span class="lineno">  744</span>     <span class="keywordflow">if</span>(y){<span class="comment">//inBuffer already initialized for y=0</span></div>
-<div class="line"><a name="l00745"></a><span class="lineno">  745</span>       <span class="comment">//erase first line from inBuffer</span></div>
-<div class="line"><a name="l00746"></a><span class="lineno">  746</span>       <span class="keywordflow">if</span>(dimY>1)</div>
-<div class="line"><a name="l00747"></a><span class="lineno">  747</span>     inBuffer.erase(inBuffer.begin());</div>
-<div class="line"><a name="l00748"></a><span class="lineno">  748</span>       <span class="comment">//read extra line and push back to inBuffer if not out of bounds</span></div>
-<div class="line"><a name="l00749"></a><span class="lineno">  749</span>       <span class="keywordflow">if</span>(y+dimY/2<input.nrOfRow()){</div>
-<div class="line"><a name="l00750"></a><span class="lineno">  750</span>         <span class="comment">//allocate buffer</span></div>
-<div class="line"><a name="l00751"></a><span class="lineno">  751</span>     <span class="keywordflow">if</span>(dimY>1)</div>
-<div class="line"><a name="l00752"></a><span class="lineno">  752</span>       inBuffer.push_back(inBuffer.back());</div>
-<div class="line"><a name="l00753"></a><span class="lineno">  753</span>         <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00754"></a><span class="lineno">  754</span>           input.readData(inBuffer[inBuffer.size()-1],GDT_Int16,y+dimY/2);</div>
-<div class="line"><a name="l00755"></a><span class="lineno">  755</span>         }</div>
-<div class="line"><a name="l00756"></a><span class="lineno">  756</span>         <span class="keywordflow">catch</span>(std::string errorstring){</div>
-<div class="line"><a name="l00757"></a><span class="lineno">  757</span>           std::cerr << errorstring << <span class="stringliteral">"in line "</span> << y << std::endl;</div>
-<div class="line"><a name="l00758"></a><span class="lineno">  758</span>         }</div>
-<div class="line"><a name="l00759"></a><span class="lineno">  759</span>       }</div>
-<div class="line"><a name="l00760"></a><span class="lineno">  760</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00761"></a><span class="lineno">  761</span>         <span class="keywordtype">int</span> over=y+dimY/2-input.nrOfRow();</div>
-<div class="line"><a name="l00762"></a><span class="lineno">  762</span>         <span class="keywordtype">int</span> index=(inBuffer.size()-1)-over;</div>
-<div class="line"><a name="l00763"></a><span class="lineno">  763</span>         assert(index>=0);</div>
-<div class="line"><a name="l00764"></a><span class="lineno">  764</span>         assert(index<inBuffer.size());</div>
-<div class="line"><a name="l00765"></a><span class="lineno">  765</span>         inBuffer.push_back(inBuffer[index]);</div>
-<div class="line"><a name="l00766"></a><span class="lineno">  766</span>       }</div>
-<div class="line"><a name="l00767"></a><span class="lineno">  767</span>     }</div>
-<div class="line"><a name="l00768"></a><span class="lineno">  768</span>     <span class="keywordflow">if</span>((y+1+down/2)%down)</div>
-<div class="line"><a name="l00769"></a><span class="lineno">  769</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00770"></a><span class="lineno">  770</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x=0;x<input.nrOfCol();++x){</div>
-<div class="line"><a name="l00771"></a><span class="lineno">  771</span>       <span class="keywordflow">if</span>((x+1+down/2)%down)</div>
-<div class="line"><a name="l00772"></a><span class="lineno">  772</span>         <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00773"></a><span class="lineno">  773</span>       std::vector<short> potential(m_class.size());</div>
-<div class="line"><a name="l00774"></a><span class="lineno">  774</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<m_class.size();++iclass){</div>
-<div class="line"><a name="l00775"></a><span class="lineno">  775</span>         potential[iclass]=0;</div>
-<div class="line"><a name="l00776"></a><span class="lineno">  776</span>         outBuffer[iclass][x/down]=0;</div>
-<div class="line"><a name="l00777"></a><span class="lineno">  777</span>       }</div>
-<div class="line"><a name="l00778"></a><span class="lineno">  778</span>       std::vector<double> windowBuffer;</div>
-<div class="line"><a name="l00779"></a><span class="lineno">  779</span>       <span class="keywordtype">int</span> centre=dimX*(dimY-1)/2+(dimX-1)/2;</div>
-<div class="line"><a name="l00780"></a><span class="lineno">  780</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=-(dimY-1)/2;j<=dimY/2;++j){</div>
-<div class="line"><a name="l00781"></a><span class="lineno">  781</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=-(dimX-1)/2;i<=dimX/2;++i){</div>
-<div class="line"><a name="l00782"></a><span class="lineno">  782</span>           <span class="keywordflow">if</span>(i!=0&&j!=0&&!eightConnectivity)</div>
-<div class="line"><a name="l00783"></a><span class="lineno">  783</span>             <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00784"></a><span class="lineno">  784</span>           <span class="keywordflow">if</span>(i==0&&j==0)</div>
-<div class="line"><a name="l00785"></a><span class="lineno">  785</span>             <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00786"></a><span class="lineno">  786</span>           indexI=x+i;</div>
-<div class="line"><a name="l00787"></a><span class="lineno">  787</span>           <span class="comment">//check if out of bounds</span></div>
-<div class="line"><a name="l00788"></a><span class="lineno">  788</span>           <span class="keywordflow">if</span>(indexI<0)</div>
-<div class="line"><a name="l00789"></a><span class="lineno">  789</span>             indexI=-indexI;</div>
-<div class="line"><a name="l00790"></a><span class="lineno">  790</span>           <span class="keywordflow">else</span> <span class="keywordflow">if</span>(indexI>=input.nrOfCol())</div>
-<div class="line"><a name="l00791"></a><span class="lineno">  791</span>             indexI=input.nrOfCol()-i;</div>
-<div class="line"><a name="l00792"></a><span class="lineno">  792</span>           <span class="keywordflow">if</span>(y+j<0)</div>
-<div class="line"><a name="l00793"></a><span class="lineno">  793</span>             indexJ=-j;</div>
-<div class="line"><a name="l00794"></a><span class="lineno">  794</span>           <span class="keywordflow">else</span> <span class="keywordflow">if</span>(y+j>=input.nrOfRow())</div>
-<div class="line"><a name="l00795"></a><span class="lineno">  795</span>             indexJ=(dimY>2) ? (dimY-1)/2-j : 0;</div>
-<div class="line"><a name="l00796"></a><span class="lineno">  796</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00797"></a><span class="lineno">  797</span>             indexJ=(dimY-1)/2+j;</div>
-<div class="line"><a name="l00798"></a><span class="lineno">  798</span>           <span class="keywordtype">bool</span> masked=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00799"></a><span class="lineno">  799</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> imask=0;imask<m_noDataValues.size();++imask){</div>
-<div class="line"><a name="l00800"></a><span class="lineno">  800</span>             <span class="keywordflow">if</span>(inBuffer[indexJ][indexI]==m_noDataValues[imask]){</div>
-<div class="line"><a name="l00801"></a><span class="lineno">  801</span>               masked=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00802"></a><span class="lineno">  802</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00803"></a><span class="lineno">  803</span>             }</div>
-<div class="line"><a name="l00804"></a><span class="lineno">  804</span>           }</div>
-<div class="line"><a name="l00805"></a><span class="lineno">  805</span>           <span class="keywordflow">if</span>(!masked){</div>
-<div class="line"><a name="l00806"></a><span class="lineno">  806</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<m_class.size();++iclass){</div>
-<div class="line"><a name="l00807"></a><span class="lineno">  807</span>               <span class="keywordflow">if</span>(inBuffer[indexJ][indexI]==m_class[iclass])</div>
-<div class="line"><a name="l00808"></a><span class="lineno">  808</span>                 potential[iclass]+=1;</div>
-<div class="line"><a name="l00809"></a><span class="lineno">  809</span>             }</div>
-<div class="line"><a name="l00810"></a><span class="lineno">  810</span>           }</div>
-<div class="line"><a name="l00811"></a><span class="lineno">  811</span>         }</div>
-<div class="line"><a name="l00812"></a><span class="lineno">  812</span>       }</div>
-<div class="line"><a name="l00813"></a><span class="lineno">  813</span>       <span class="keywordtype">double</span> norm=0;</div>
-<div class="line"><a name="l00814"></a><span class="lineno">  814</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass1=0;iclass1<m_class.size();++iclass1){</div>
-<div class="line"><a name="l00815"></a><span class="lineno">  815</span>     assert(beta[iclass1].size()==m_class.size());</div>
-<div class="line"><a name="l00816"></a><span class="lineno">  816</span>         <span class="keywordtype">double</span> pot=0;</div>
-<div class="line"><a name="l00817"></a><span class="lineno">  817</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass2=0;iclass2<m_class.size();++iclass2)</div>
-<div class="line"><a name="l00818"></a><span class="lineno">  818</span>       <span class="keywordflow">if</span>(iclass2!=iclass1)</div>
-<div class="line"><a name="l00819"></a><span class="lineno">  819</span>         pot+=potential[iclass2]*beta[iclass1][iclass2];</div>
-<div class="line"><a name="l00820"></a><span class="lineno">  820</span>         <span class="keywordtype">double</span> prior=exp(-pot);</div>
-<div class="line"><a name="l00821"></a><span class="lineno">  821</span>         outBuffer[iclass1][x/down]=prior;</div>
-<div class="line"><a name="l00822"></a><span class="lineno">  822</span>         norm+=prior;</div>
-<div class="line"><a name="l00823"></a><span class="lineno">  823</span>       }</div>
-<div class="line"><a name="l00824"></a><span class="lineno">  824</span>       <span class="keywordflow">if</span>(norm){</div>
-<div class="line"><a name="l00825"></a><span class="lineno">  825</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass1=0;iclass1<m_class.size();++iclass1)</div>
-<div class="line"><a name="l00826"></a><span class="lineno">  826</span>           outBuffer[iclass1][x/down]/=norm;</div>
-<div class="line"><a name="l00827"></a><span class="lineno">  827</span>       }</div>
-<div class="line"><a name="l00828"></a><span class="lineno">  828</span>     }</div>
-<div class="line"><a name="l00829"></a><span class="lineno">  829</span>     progress=(1.0+y/down)/output.nrOfRow();</div>
-<div class="line"><a name="l00830"></a><span class="lineno">  830</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00831"></a><span class="lineno">  831</span>     <span class="comment">//write outBuffer to file</span></div>
-<div class="line"><a name="l00832"></a><span class="lineno">  832</span>     assert(outBuffer.size()==m_class.size());</div>
-<div class="line"><a name="l00833"></a><span class="lineno">  833</span>     assert(y<output.nrOfRow());</div>
-<div class="line"><a name="l00834"></a><span class="lineno">  834</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<m_class.size();++iclass){</div>
-<div class="line"><a name="l00835"></a><span class="lineno">  835</span>       assert(outBuffer[iclass].size()==output.nrOfCol());</div>
-<div class="line"><a name="l00836"></a><span class="lineno">  836</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00837"></a><span class="lineno">  837</span>         output.writeData(outBuffer[iclass],GDT_Float64,y/down,iclass);</div>
-<div class="line"><a name="l00838"></a><span class="lineno">  838</span>       }</div>
-<div class="line"><a name="l00839"></a><span class="lineno">  839</span>       <span class="keywordflow">catch</span>(std::string errorstring){</div>
-<div class="line"><a name="l00840"></a><span class="lineno">  840</span>         std::cerr << errorstring << <span class="stringliteral">"in class "</span> << iclass << <span class="stringliteral">", line "</span> << y << std::endl;</div>
-<div class="line"><a name="l00841"></a><span class="lineno">  841</span>       }</div>
-<div class="line"><a name="l00842"></a><span class="lineno">  842</span>     }</div>
-<div class="line"><a name="l00843"></a><span class="lineno">  843</span>   }</div>
-<div class="line"><a name="l00844"></a><span class="lineno">  844</span> }</div>
-<div class="line"><a name="l00845"></a><span class="lineno">  845</span> </div>
-<div class="line"><a name="l00846"></a><span class="lineno">  846</span> <span class="keywordtype">void</span> filter2d::Filter2d::shift(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keywordtype">double</span> offsetX, <span class="keywordtype">double</span> offsetY, <span class="keywordtype">double</span> randomSigma, RESAMPLE  [...]
-<div class="line"><a name="l00847"></a><span class="lineno">  847</span> {</div>
-<div class="line"><a name="l00848"></a><span class="lineno">  848</span>   assert(input.nrOfCol()==output.nrOfCol());</div>
-<div class="line"><a name="l00849"></a><span class="lineno">  849</span>   assert(input.nrOfRow()==output.nrOfRow());</div>
-<div class="line"><a name="l00850"></a><span class="lineno">  850</span>   assert(input.nrOfBand()==output.nrOfBand());</div>
-<div class="line"><a name="l00851"></a><span class="lineno">  851</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00852"></a><span class="lineno">  852</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00853"></a><span class="lineno">  853</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00854"></a><span class="lineno">  854</span>   <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l00855"></a><span class="lineno">  855</span>   pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00856"></a><span class="lineno">  856</span>   <span class="comment">//process band per band in memory</span></div>
-<div class="line"><a name="l00857"></a><span class="lineno">  857</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> inBuffer(input.nrOfRow(),output.nrOfCol());</div>
-<div class="line"><a name="l00858"></a><span class="lineno">  858</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> outBuffer(input.nrOfRow(),output.nrOfCol());</div>
-<div class="line"><a name="l00859"></a><span class="lineno">  859</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input.nrOfBand();++iband){</div>
-<div class="line"><a name="l00860"></a><span class="lineno">  860</span>     input.readDataBlock(inBuffer,GDT_Float64,0,inBuffer.nCols()-1,0,inBuffer.nRows()-1,iband);</div>
-<div class="line"><a name="l00861"></a><span class="lineno">  861</span>     shift(inBuffer,outBuffer,offsetX,offsetY,randomSigma,resample,verbose);</div>
-<div class="line"><a name="l00862"></a><span class="lineno">  862</span>     output.writeDataBlock(outBuffer,GDT_Float64,0,outBuffer.nCols()-1,0,outBuffer.nRows()-1,iband);</div>
-<div class="line"><a name="l00863"></a><span class="lineno">  863</span>   }</div>
-<div class="line"><a name="l00864"></a><span class="lineno">  864</span> }</div>
-<div class="line"><a name="l00865"></a><span class="lineno">  865</span> </div>
-<div class="line"><a name="l00866"></a><span class="lineno">  866</span> <span class="comment">//todo: re-implement without dependency of CImg and reg libraries</span></div>
-<div class="line"><a name="l00867"></a><span class="lineno">  867</span> <span class="comment">// void filter2d::Filter2d::dwt_texture(const std::string& inputFilename, const std::string& outputFilename,int dim, int scale, int down, int iband, bool verbose)</span></div>
-<div class="line"><a name="l00868"></a><span class="lineno">  868</span> <span class="comment">// {</span></div>
-<div class="line"><a name="l00869"></a><span class="lineno">  869</span> <span class="comment">//   ImgReaderGdal input;</span></div>
-<div class="line"><a name="l00870"></a><span class="lineno">  870</span> <span class="comment">//   ImgWriterGdal output;</span></div>
-<div class="line"><a name="l00871"></a><span class="lineno">  871</span> <span class="comment">//   if(verbose)</span></div>
-<div class="line"><a name="l00872"></a><span class="lineno">  872</span> <span class="comment">//     std::cout << "opening file " << inputFilename << std::endl;</span></div>
-<div class="line"><a name="l00873"></a><span class="lineno">  873</span> <span class="comment">//   input.open(inputFilename);</span></div>
-<div class="line"><a name="l00874"></a><span class="lineno">  874</span> <span class="comment">//   double magicX=1,magicY=1;</span></div>
-<div class="line"><a name="l00875"></a><span class="lineno">  875</span> <span class="comment">//   output.open(outputFilename,(input.nrOfCol()+down-1)/down,(input.nrOfRow()+down-1)/down,scale*3,GDT_Float32,input.getImageType());</span></div>
-<div class="line"><a name="l00876"></a><span class="lineno">  876</span> <span class="comment">//   if(input.isGeoRef()){</span></div>
-<div class="line"><a name="l00877"></a><span class="lineno">  877</span> <span class="comment">//     output.setProjection(input.getProjection());</span></div>
-<div class="line"><a name="l00878"></a><span class="lineno">  878</span> <span class="comment">//     output.copyGeoTransform(input);</span></div>
-<div class="line"><a name="l00879"></a><span class="lineno">  879</span> <span class="comment">//   }</span></div>
-<div class="line"><a name="l00880"></a><span class="lineno">  880</span> <span class="comment">//   if(verbose)</span></div>
-<div class="line"><a name="l00881"></a><span class="lineno">  881</span> <span class="comment">//     std::cout << "Dimension texture (row x col x band) = " << (input.nrOfCol()+down-1)/down << " x " << (input.nrOfRow()+down-1)/down << " x " << scale*3 << std::endl;</span></div>
-<div class="line"><a name="l00882"></a><span class="lineno">  882</span> <span class="comment">//   assert(dim%2);</span></div>
-<div class="line"><a name="l00883"></a><span class="lineno">  883</span> <span class="comment">//   int dimX=dim;</span></div>
-<div class="line"><a name="l00884"></a><span class="lineno">  884</span> <span class="comment">//   int dimY=dim;</span></div>
-<div class="line"><a name="l00885"></a><span class="lineno">  885</span> <span class="comment">//   Vector2d<float> inBuffer(dimY,input.nrOfCol());</span></div>
-<div class="line"><a name="l00886"></a><span class="lineno">  886</span> <span class="comment">//   Vector2d<float> outBuffer(scale*3,(input.nrOfCol()+down-1)/down);</span></div>
-<div class="line"><a name="l00887"></a><span class="lineno">  887</span> <span class="comment">//   //initialize last half of inBuffer</span></div>
-<div class="line"><a name="l00888"></a><span class="lineno">  888</span> <span class="comment">//   int indexI=0;</span></div>
-<div class="line"><a name="l00889"></a><span class="lineno">  889</span> <span class="comment">//   int indexJ=0;</span></div>
-<div class="line"><a name="l00890"></a><span class="lineno">  890</span> <span class="comment">//   for(int j=-dimY/2;j<(dimY+1)/2;++j){</span></div>
-<div class="line"><a name="l00891"></a><span class="lineno">  891</span> <span class="comment">//     try{</span></div>
-<div class="line"><a name="l00892"></a><span class="lineno">  892</span> <span class="comment">//       if(verbose)</span></div>
-<div class="line"><a name="l00893"></a><span class="lineno">  893</span> <span class="comment">//  cout << "reading input line " << abs(j) << std::endl;</span></div>
-<div class="line"><a name="l00894"></a><span class="lineno">  894</span> <span class="comment">//       input.readData(inBuffer[indexJ],GDT_Float32,abs(j),iband);</span></div>
-<div class="line"><a name="l00895"></a><span class="lineno">  895</span> <span class="comment">//       ++indexJ;</span></div>
-<div class="line"><a name="l00896"></a><span class="lineno">  896</span> <span class="comment">//     }</span></div>
-<div class="line"><a name="l00897"></a><span class="lineno">  897</span> <span class="comment">//     catch(std::string errorstring){</span></div>
-<div class="line"><a name="l00898"></a><span class="lineno">  898</span> <span class="comment">//       std::cerr << errorstring << "in band " << iband << ", line " << indexJ << std::endl;</span></div>
-<div class="line"><a name="l00899"></a><span class="lineno">  899</span> <span class="comment">//     }</span></div>
-<div class="line"><a name="l00900"></a><span class="lineno">  900</span> <span class="comment">//   }</span></div>
-<div class="line"><a name="l00901"></a><span class="lineno">  901</span> <span class="comment">//   const char* pszMessage;</span></div>
-<div class="line"><a name="l00902"></a><span class="lineno">  902</span> <span class="comment">//   void* pProgressArg=NULL;</span></div>
-<div class="line"><a name="l00903"></a><span class="lineno">  903</span> <span class="comment">//   GDALProgressFunc pfnProgress=GDALTermProgress;</span></div>
-<div class="line"><a name="l00904"></a><span class="lineno">  904</span> <span class="comment">//   double progress=0;</span></div>
-<div class="line"><a name="l00905"></a><span class="lineno">  905</span> <span class="comment">//   pfnProgress(progress,pszMessage,pProgressArg);</span></div>
-<div class="line"><a name="l00906"></a><span class="lineno">  906</span> <span class="comment">//   for(int y=0;y<input.nrOfRow();y+=down){</span></div>
-<div class="line"><a name="l00907"></a><span class="lineno">  907</span> <span class="comment">//     if(verbose)</span></div>
-<div class="line"><a name="l00908"></a><span class="lineno">  908</span> <span class="comment">//       std::cout << "calculating line " << y/down << std::endl;</span></div>
-<div class="line"><a name="l00909"></a><span class="lineno">  909</span> <span class="comment">//     if(y){//inBuffer already initialized for y=0</span></div>
-<div class="line"><a name="l00910"></a><span class="lineno">  910</span> <span class="comment">//       //erase first line from inBuffer</span></div>
-<div class="line"><a name="l00911"></a><span class="lineno">  911</span> <span class="comment">//       inBuffer.erase(inBuffer.begin());</span></div>
-<div class="line"><a name="l00912"></a><span class="lineno">  912</span> <span class="comment">//       //read extra line and push back to inBuffer if not out of bounds</span></div>
-<div class="line"><a name="l00913"></a><span class="lineno">  913</span> <span class="comment">//       if(y+dimY/2<input.nrOfRow()){</span></div>
-<div class="line"><a name="l00914"></a><span class="lineno">  914</span> <span class="comment">//  //allocate buffer</span></div>
-<div class="line"><a name="l00915"></a><span class="lineno">  915</span> <span class="comment">//  inBuffer.push_back(inBuffer.back());</span></div>
-<div class="line"><a name="l00916"></a><span class="lineno">  916</span> <span class="comment">//  try{</span></div>
-<div class="line"><a name="l00917"></a><span class="lineno">  917</span> <span class="comment">//    if(verbose)</span></div>
-<div class="line"><a name="l00918"></a><span class="lineno">  918</span> <span class="comment">//      std::cout << "reading input line " << y+dimY/2 << std::endl;</span></div>
-<div class="line"><a name="l00919"></a><span class="lineno">  919</span> <span class="comment">//           input.readData(inBuffer[inBuffer.size()-1],GDT_Float32,y+dimY/2,iband);</span></div>
-<div class="line"><a name="l00920"></a><span class="lineno">  920</span> <span class="comment">//  }</span></div>
-<div class="line"><a name="l00921"></a><span class="lineno">  921</span> <span class="comment">//  catch(std::string errorstring){</span></div>
-<div class="line"><a name="l00922"></a><span class="lineno">  922</span> <span class="comment">//    std::cerr << errorstring << "in band " << iband << ", line " << y << std::endl;</span></div>
-<div class="line"><a name="l00923"></a><span class="lineno">  923</span> <span class="comment">//  }</span></div>
-<div class="line"><a name="l00924"></a><span class="lineno">  924</span> <span class="comment">//       }</span></div>
-<div class="line"><a name="l00925"></a><span class="lineno">  925</span> <span class="comment">//     }</span></div>
-<div class="line"><a name="l00926"></a><span class="lineno">  926</span> <span class="comment">//     for(int x=0;x<input.nrOfCol();x+=down){</span></div>
-<div class="line"><a name="l00927"></a><span class="lineno">  927</span> <span class="comment">//       Vector2d<double> texture_feature(scale,3);</span></div>
-<div class="line"><a name="l00928"></a><span class="lineno">  928</span> <span class="comment">//       CImg<> texture_in(dimX,dimY);</span></div>
-<div class="line"><a name="l00929"></a><span class="lineno">  929</span> <span class="comment">//       int r=0;//index for row of texture_in</span></div>
-<div class="line"><a name="l00930"></a><span class="lineno">  930</span> <span class="comment">//       for(int j=-dimY/2;j<(dimY+1)/2;++j){</span></div>
-<div class="line"><a name="l00931"></a><span class="lineno">  931</span> <span class="comment">//  int c=0;</span></div>
-<div class="line"><a name="l00932"></a><span class="lineno">  932</span> <span class="comment">//  for(int i=-dimX/2;i<(dimX+1)/2;++i){</span></div>
-<div class="line"><a name="l00933"></a><span class="lineno">  933</span> <span class="comment">//    indexI=x+i;</span></div>
-<div class="line"><a name="l00934"></a><span class="lineno">  934</span> <span class="comment">//    //check if out of bounds</span></div>
-<div class="line"><a name="l00935"></a><span class="lineno">  935</span> <span class="comment">//    if(indexI<0)</span></div>
-<div class="line"><a name="l00936"></a><span class="lineno">  936</span> <span class="comment">//      indexI=-indexI;</span></div>
-<div class="line"><a name="l00937"></a><span class="lineno">  937</span> <span class="comment">//    else if(indexI>=input.nrOfCol())</span></div>
-<div class="line"><a name="l00938"></a><span class="lineno">  938</span> <span class="comment">//      indexI=input.nrOfCol()-i;</span></div>
-<div class="line"><a name="l00939"></a><span class="lineno">  939</span> <span class="comment">//    if(y+j<0)</span></div>
-<div class="line"><a name="l00940"></a><span class="lineno">  940</span> <span class="comment">//      indexJ=-j;</span></div>
-<div class="line"><a name="l00941"></a><span class="lineno">  941</span> <span class="comment">//    else if(y+j>=input.nrOfRow())</span></div>
-<div class="line"><a name="l00942"></a><span class="lineno">  942</span> <span class="comment">//      indexJ=dimY/2-j;//indexJ=inBuffer.size()-1-j;</span></div>
-<div class="line"><a name="l00943"></a><span class="lineno">  943</span> <span class="comment">//    else</span></div>
-<div class="line"><a name="l00944"></a><span class="lineno">  944</span> <span class="comment">//      indexJ=dimY/2+j;</span></div>
-<div class="line"><a name="l00945"></a><span class="lineno">  945</span> <span class="comment">//    assert(indexJ<inBuffer.size());</span></div>
-<div class="line"><a name="l00946"></a><span class="lineno">  946</span> <span class="comment">//    assert(indexI<inBuffer[indexJ].size());</span></div>
-<div class="line"><a name="l00947"></a><span class="lineno">  947</span> <span class="comment">//    texture_in(r,c)=inBuffer[indexJ][indexI];</span></div>
-<div class="line"><a name="l00948"></a><span class="lineno">  948</span> <span class="comment">//    c++;</span></div>
-<div class="line"><a name="l00949"></a><span class="lineno">  949</span> <span class="comment">//  }</span></div>
-<div class="line"><a name="l00950"></a><span class="lineno">  950</span> <span class="comment">//  ++r;</span></div>
-<div class="line"><a name="l00951"></a><span class="lineno">  951</span> <span class="comment">//       }</span></div>
-<div class="line"><a name="l00952"></a><span class="lineno">  952</span> <span class="comment">//       texture_in.dwt_texture(texture_feature,scale);</span></div>
-<div class="line"><a name="l00953"></a><span class="lineno">  953</span> <span class="comment">//       for(int v=0;v<scale*3;++v)</span></div>
-<div class="line"><a name="l00954"></a><span class="lineno">  954</span> <span class="comment">//  outBuffer[v][x/down]=texture_feature[v/3][v%3];</span></div>
-<div class="line"><a name="l00955"></a><span class="lineno">  955</span> <span class="comment">//     }</span></div>
-<div class="line"><a name="l00956"></a><span class="lineno">  956</span> <span class="comment">//     //write outBuffer to file</span></div>
-<div class="line"><a name="l00957"></a><span class="lineno">  957</span> <span class="comment">//     try{</span></div>
-<div class="line"><a name="l00958"></a><span class="lineno">  958</span> <span class="comment">//       if(verbose)</span></div>
-<div class="line"><a name="l00959"></a><span class="lineno">  959</span> <span class="comment">//         std::cout << "writing line " << y/down << std::endl;</span></div>
-<div class="line"><a name="l00960"></a><span class="lineno">  960</span> <span class="comment">//       for(int v=0;v<scale*3;++v)</span></div>
-<div class="line"><a name="l00961"></a><span class="lineno">  961</span> <span class="comment">//         output.writeData(outBuffer[v],GDT_Float32,y/down,v);</span></div>
-<div class="line"><a name="l00962"></a><span class="lineno">  962</span> <span class="comment">//     }</span></div>
-<div class="line"><a name="l00963"></a><span class="lineno">  963</span> <span class="comment">//     catch(std::string errorstring){</span></div>
-<div class="line"><a name="l00964"></a><span class="lineno">  964</span> <span class="comment">//       std::cerr << errorstring << "in band " << iband << ", line " << y << std::endl;</span></div>
-<div class="line"><a name="l00965"></a><span class="lineno">  965</span> <span class="comment">//     }</span></div>
-<div class="line"><a name="l00966"></a><span class="lineno">  966</span> <span class="comment">//     progress=(1.0+y)/output.nrOfRow();</span></div>
-<div class="line"><a name="l00967"></a><span class="lineno">  967</span> <span class="comment">//     pfnProgress(progress,pszMessage,pProgressArg);</span></div>
-<div class="line"><a name="l00968"></a><span class="lineno">  968</span> <span class="comment">//   }</span></div>
-<div class="line"><a name="l00969"></a><span class="lineno">  969</span> <span class="comment">//   input.close();</span></div>
-<div class="line"><a name="l00970"></a><span class="lineno">  970</span> <span class="comment">//   output.close();</span></div>
-<div class="line"><a name="l00971"></a><span class="lineno">  971</span> <span class="comment">// }</span></div>
-<div class="line"><a name="l00972"></a><span class="lineno">  972</span> </div>
-<div class="line"><a name="l00973"></a><span class="lineno">  973</span> <span class="keywordtype">void</span> filter2d::Filter2d::morphology(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keyword">const</span> std::string& method, <span class="keywordtype">int</span> dimX, <span class="keywordtype">int</span> dimY, <span cla [...]
-<div class="line"><a name="l00974"></a><span class="lineno">  974</span> {</div>
-<div class="line"><a name="l00975"></a><span class="lineno">  975</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00976"></a><span class="lineno">  976</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00977"></a><span class="lineno">  977</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00978"></a><span class="lineno">  978</span>   <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l00979"></a><span class="lineno">  979</span>   pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00980"></a><span class="lineno">  980</span> </div>
-<div class="line"><a name="l00981"></a><span class="lineno">  981</span>   assert(dimX);</div>
-<div class="line"><a name="l00982"></a><span class="lineno">  982</span>   assert(dimY);</div>
-<div class="line"><a name="l00983"></a><span class="lineno">  983</span> </div>
-<div class="line"><a name="l00984"></a><span class="lineno">  984</span>   <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00985"></a><span class="lineno">  985</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input.nrOfBand();++iband){</div>
-<div class="line"><a name="l00986"></a><span class="lineno">  986</span>     <a class="code" href="classVector2d.html">Vector2d<double></a> inBuffer(dimY,input.nrOfCol());</div>
-<div class="line"><a name="l00987"></a><span class="lineno">  987</span>     std::vector<double> outBuffer(input.nrOfCol());</div>
-<div class="line"><a name="l00988"></a><span class="lineno">  988</span>     <span class="keywordtype">int</span> indexI=0;</div>
-<div class="line"><a name="l00989"></a><span class="lineno">  989</span>     <span class="keywordtype">int</span> indexJ=0;</div>
-<div class="line"><a name="l00990"></a><span class="lineno">  990</span>     <span class="comment">//initialize last half of inBuffer</span></div>
-<div class="line"><a name="l00991"></a><span class="lineno">  991</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=-(dimY-1)/2;j<=dimY/2;++j){</div>
-<div class="line"><a name="l00992"></a><span class="lineno">  992</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00993"></a><span class="lineno">  993</span>     input.readData(inBuffer[indexJ],GDT_Float64,abs(j),iband);</div>
-<div class="line"><a name="l00994"></a><span class="lineno">  994</span>     ++indexJ;</div>
-<div class="line"><a name="l00995"></a><span class="lineno">  995</span>       }</div>
-<div class="line"><a name="l00996"></a><span class="lineno">  996</span>       <span class="keywordflow">catch</span>(std::string errorstring){</div>
-<div class="line"><a name="l00997"></a><span class="lineno">  997</span>     std::cerr << errorstring << <span class="stringliteral">"in line "</span> << indexJ << std::endl;</div>
-<div class="line"><a name="l00998"></a><span class="lineno">  998</span>       }</div>
-<div class="line"><a name="l00999"></a><span class="lineno">  999</span>     }</div>
-<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y=0;y<input.nrOfRow();++y){</div>
-<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>       <span class="keywordflow">if</span>(y){<span class="comment">//inBuffer already initialized for y=0</span></div>
-<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>     <span class="comment">//erase first line from inBuffer</span></div>
-<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>     <span class="keywordflow">if</span>(dimY>1)</div>
-<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>       inBuffer.erase(inBuffer.begin());</div>
-<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>     <span class="comment">//read extra line and push back to inBuffer if not out of bounds</span></div>
-<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>     <span class="keywordflow">if</span>(y+dimY/2<input.nrOfRow()){</div>
-<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>       <span class="comment">//allocate buffer</span></div>
-<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>       <span class="keywordflow">if</span>(dimY>1)</div>
-<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>         inBuffer.push_back(inBuffer.back());</div>
-<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>             input.readData(inBuffer[inBuffer.size()-1],GDT_Float64,y+dimY/2,iband);</div>
-<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>       }</div>
-<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>       <span class="keywordflow">catch</span>(std::string errorstring){</div>
-<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>         std::cerr << errorstring << <span class="stringliteral">"in band "</span> << iband << <span class="stringliteral">", line "</span> << y << std::endl;</div>
-<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>       }</div>
-<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>     }</div>
-<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>           <span class="keywordtype">int</span> over=y+dimY/2-input.nrOfRow();</div>
-<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>           <span class="keywordtype">int</span> index=(inBuffer.size()-1)-over;</div>
-<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>           assert(index>=0);</div>
-<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>           assert(index<inBuffer.size());</div>
-<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>           inBuffer.push_back(inBuffer[index]);</div>
-<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>         }</div>
-<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>       }</div>
-<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x=0;x<input.nrOfCol();++x){</div>
-<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>         <span class="keywordtype">double</span> currentValue=inBuffer[(dimY-1)/2][x];</div>
-<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>     outBuffer[x]=currentValue;</div>
-<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>     std::vector<double> statBuffer;</div>
-<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>     <span class="keywordtype">bool</span> currentMasked=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>         <span class="keywordtype">int</span> centre=dimX*(dimY-1)/2+(dimX-1)/2;</div>
-<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> imask=0;imask<m_noDataValues.size();++imask){</div>
-<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>       <span class="keywordflow">if</span>(currentValue==m_noDataValues[imask]){</div>
-<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>         currentMasked=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>       }</div>
-<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>     }</div>
-<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>     <span class="keywordflow">if</span>(currentMasked){</div>
-<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>       outBuffer[x]=currentValue;</div>
-<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>     }</div>
-<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=-(dimY-1)/2;j<=dimY/2;++j){</div>
-<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=-(dimX-1)/2;i<=dimX/2;++i){</div>
-<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>               <span class="keywordtype">double</span> d2=i*i+j*j;<span class="comment">//square distance</span></div>
-<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>               <span class="keywordflow">if</span>(disc&&(d2>(dimX/2)*(dimY/2)))</div>
-<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>                 <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>           <span class="keywordflow">if</span>(angle.size()){</div>
-<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>             <span class="keywordtype">double</span> theta;</div>
-<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>         <span class="comment">//use polar coordinates in radians</span></div>
-<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>             <span class="keywordflow">if</span>(i>0){</div>
-<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>           <span class="keywordflow">if</span>(j<0)</div>
-<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>             theta=atan(static_cast<double>(-j)/(static_cast<double>(i)));</div>
-<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>             theta=-atan(static_cast<double>(j)/(static_cast<double>(i)));</div>
-<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>         }</div>
-<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>             <span class="keywordflow">else</span> <span class="keywordflow">if</span>(i<0){</div>
-<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>           <span class="keywordflow">if</span>(j<0)</div>
-<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>             theta=PI-atan(static_cast<double>(-j)/(static_cast<double>(-i)));</div>
-<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>             theta=PI+atan(static_cast<double>(j)/(static_cast<double>(-i)));</div>
-<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>         }</div>
-<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>             <span class="keywordflow">else</span> <span class="keywordflow">if</span>(j<0)</div>
-<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>               theta=PI/2.0;</div>
-<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>             <span class="keywordflow">else</span> <span class="keywordflow">if</span>(j>0)</div>
-<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>               theta=3.0*PI/2.0;</div>
-<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>         <span class="comment">//convert to North (0), East (90), South (180), West (270) in degrees</span></div>
-<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>         theta=360-(theta/PI*180)+90;</div>
-<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>         <span class="keywordflow">if</span>(theta<0)</div>
-<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>           theta+=360;</div>
-<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>         <span class="keywordflow">while</span>(theta>360)</div>
-<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>           theta-=360;</div>
-<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>         <span class="keywordtype">bool</span> alligned=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iangle=0;iangle<angle.size();++iangle){</div>
-<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>           <span class="keywordflow">if</span>(sqrt((theta-angle[iangle])*(theta-angle[iangle]))<10){</div>
-<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>             alligned=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>           }</div>
-<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>         }</div>
-<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>         <span class="keywordflow">if</span>(!alligned)</div>
-<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>           <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>           }</div>
-<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>           indexI=x+i;</div>
-<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>           <span class="comment">//check if out of bounds</span></div>
-<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>           <span class="keywordflow">if</span>(indexI<0)</div>
-<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>         indexI=-indexI;</div>
-<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>           <span class="keywordflow">else</span> <span class="keywordflow">if</span>(indexI>=input.nrOfCol())</div>
-<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>         indexI=input.nrOfCol()-i;</div>
-<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>           <span class="keywordflow">if</span>(y+j<0)</div>
-<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>         indexJ=-j;</div>
-<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>               <span class="keywordflow">else</span> <span class="keywordflow">if</span>(y+j>=input.nrOfRow())</div>
-<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>                 indexJ=(dimY>2) ? (dimY-1)/2-j : 0;</div>
-<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>               <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>                 indexJ=(dimY-1)/2+j;</div>
-<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>               <span class="comment">//todo: introduce novalue as this: ?</span></div>
-<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>               <span class="comment">// if(inBuffer[indexJ][indexI]==(m_noDataValues.size())? m_noDataValues[0] : 0)</span></div>
-<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>               <span class="comment">//   continue;</span></div>
-<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>               <span class="keywordtype">bool</span> masked=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> imask=0;imask<m_noDataValues.size();++imask){</div>
-<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>         <span class="keywordflow">if</span>(inBuffer[indexJ][indexI]==m_noDataValues[imask]){</div>
-<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>           masked=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>         }</div>
-<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>           }</div>
-<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>           <span class="keywordflow">if</span>(!masked){</div>
-<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>         <span class="keywordtype">short</span> binValue=0;</div>
-<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<m_class.size();++iclass){</div>
-<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>           <span class="keywordflow">if</span>(inBuffer[indexJ][indexI]==m_class[iclass]){</div>
-<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>             binValue=1;</div>
-<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>           }</div>
-<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>         }</div>
-<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>         <span class="keywordflow">if</span>(m_class.size())</div>
-<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>           statBuffer.push_back(binValue);</div>
-<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>           statBuffer.push_back(inBuffer[indexJ][indexI]);</div>
-<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>           }</div>
-<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>         }</div>
-<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>           }</div>
-<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>       <span class="keywordflow">if</span>(statBuffer.size()){</div>
-<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>             <span class="keywordflow">switch</span>(getFilterType(method)){</div>
-<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>             <span class="keywordflow">case</span>(filter2d::dilate):</div>
-<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>               outBuffer[x]=stat.mymax(statBuffer);</div>
-<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>             <span class="keywordflow">case</span>(filter2d::erode):</div>
-<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>               outBuffer[x]=stat.mymin(statBuffer);</div>
-<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>             <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>               std::ostringstream ess;</div>
-<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>               ess << <span class="stringliteral">"Error:  morphology method "</span> << method << <span class="stringliteral">" not supported, choose "</span> << filter2d::dilate << <span class="stringliteral">" (dilate) or "</span> << filter2d::erode << <span class="stringliteral">" (erode)"</span> << std::endl;</div>
-<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>               <span class="keywordflow">throw</span>(ess.str());</div>
-<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>             }</div>
-<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>           }</div>
-<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>       <span class="keywordflow">if</span>(outBuffer[x]&&m_class.size())</div>
-<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>         outBuffer[x]=m_class[0];</div>
-<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>     }</div>
-<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>       }</div>
-<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>       <span class="comment">//write outBuffer to file</span></div>
-<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>         output.writeData(outBuffer,GDT_Float64,y,iband);</div>
-<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>       }</div>
-<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>       <span class="keywordflow">catch</span>(std::string errorstring){</div>
-<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>     std::cerr << errorstring << <span class="stringliteral">"in band "</span> << iband << <span class="stringliteral">", line "</span> << y << std::endl;</div>
-<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>       }</div>
-<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>       progress=(1.0+y);</div>
-<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>       progress+=(output.nrOfRow()*iband);</div>
-<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>       progress/=output.nrOfBand()*output.nrOfRow();</div>
-<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>       pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>     }</div>
-<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>   }</div>
-<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span> }</div>
-<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span> </div>
-<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span> <span class="keywordtype">void</span> filter2d::Filter2d::shadowDsm(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keywordtype">double</span> sza, <span class="keywordtype">double</span> saa, <span class="keywordtype">double</span> pixelSize, <span class="ke [...]
-<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>   <a class="code" href="classVector2d.html">Vector2d<float></a> inputBuffer;</div>
-<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>   <a class="code" href="classVector2d.html">Vector2d<float></a> outputBuffer;</div>
-<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>   input.readDataBlock(inputBuffer, GDT_Float32, 0, input.nrOfCol()-1, 0, input.nrOfRow()-1, 0);</div>
-<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>   shadowDsm(inputBuffer, outputBuffer, sza, saa, pixelSize, shadowFlag);</div>
-<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>   output.writeDataBlock(outputBuffer,GDT_Float32,0,output.nrOfCol()-1,0,output.nrOfRow()-1,0);</div>
-<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span> }</div>
-<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span> </div>
-<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span> <span class="keywordtype">void</span> filter2d::Filter2d::dwtForward(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keyword">const</span> std::string& wavelet_type, <span class="keywordtype">int</span> family){</div>
-<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>   <a class="code" href="classVector2d.html">Vector2d<float></a> theBuffer;</div>
-<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input.nrOfBand();++iband){</div>
-<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>     input.readDataBlock(theBuffer, GDT_Float32, 0, input.nrOfCol()-1, 0, input.nrOfRow()-1, iband);</div>
-<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>     std::cout << <span class="stringliteral">"filtering band "</span> << iband << std::endl << std::flush;</div>
-<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>     dwtForward(theBuffer, wavelet_type, family);</div>
-<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>     output.writeDataBlock(theBuffer,GDT_Float32,0,output.nrOfCol()-1,0,output.nrOfRow()-1,iband);</div>
-<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>   }</div>
-<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span> }</div>
-<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span> </div>
-<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span> <span class="keywordtype">void</span> filter2d::Filter2d::dwtInverse(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keyword">const</span> std::string& wavelet_type, <span class="keywordtype">int</span> family){</div>
-<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>   <a class="code" href="classVector2d.html">Vector2d<float></a> theBuffer;</div>
-<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input.nrOfBand();++iband){</div>
-<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>     input.readDataBlock(theBuffer, GDT_Float32, 0, input.nrOfCol()-1, 0, input.nrOfRow()-1, iband);</div>
-<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>     std::cout << <span class="stringliteral">"filtering band "</span> << iband << std::endl << std::flush;</div>
-<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>     dwtInverse(theBuffer, wavelet_type, family);</div>
-<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>     output.writeDataBlock(theBuffer,GDT_Float32,0,output.nrOfCol()-1,0,output.nrOfRow()-1,iband);</div>
-<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>   }</div>
-<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span> }</div>
-<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span> </div>
-<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span> <span class="keywordtype">void</span> filter2d::Filter2d::dwtCut(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keyword">const</span> std::string& wavelet_type, <span class="keywordtype">int</span> family, <span class="keywordtype">double</span> cut, <sp [...]
-<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>   <a class="code" href="classVector2d.html">Vector2d<float></a> theBuffer;</div>
-<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input.nrOfBand();++iband){</div>
-<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>     input.readDataBlock(theBuffer, GDT_Float32, 0, input.nrOfCol()-1, 0, input.nrOfRow()-1, iband);</div>
-<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>     std::cout << <span class="stringliteral">"filtering band "</span> << iband << std::endl << std::flush;</div>
-<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>     dwtCut(theBuffer, wavelet_type, family, cut);</div>
-<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>     output.writeDataBlock(theBuffer,GDT_Float32,0,output.nrOfCol()-1,0,output.nrOfRow()-1,iband);</div>
-<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>   }</div>
-<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span> }</div>
-<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span> </div>
-<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span> <span class="keywordtype">void</span> filter2d::Filter2d::linearFeature(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keywordtype">float</span> angle, <span class="keywordtype">float</span> angleStep, <span class="keywordtype">float</span> maxDistance, <spa [...]
-<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>   <a class="code" href="classVector2d.html">Vector2d<float></a> inputBuffer;</div>
-<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>   std::vector< Vector2d<float> > outputBuffer;</div>
-<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>   input.readDataBlock(inputBuffer, GDT_Float32, 0, input.nrOfCol()-1, 0, input.nrOfRow()-1, band);</div>
-<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>   <span class="keywordflow">if</span>(maxDistance<=0)</div>
-<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>     maxDistance=sqrt(static_cast<float>(input.nrOfCol()*input.nrOfRow()));</div>
-<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>   linearFeature(inputBuffer,outputBuffer,angle,angleStep,maxDistance,eps, l1, a1, l2, a2,verbose);</div>
-<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<outputBuffer.size();++iband)</div>
-<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>     output.writeDataBlock(outputBuffer[iband],GDT_Float32,0,output.nrOfCol()-1,0,output.nrOfRow()-1,iband);</div>
-<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span> }</div>
-<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span> </div>
-<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span> <span class="keywordtype">void</span> filter2d::Filter2d::linearFeature(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<float></a>& input, std::vector< <a class="code" href="classVector2d.html">Vector2d<float></a> >& output, <span class="keywordtype">float</span> angle, <span class="keywordtype">float</span> angleStep, <span class="keywordtype">flo [...]
-<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span> {</div>
-<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>   output.clear();</div>
-<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>   <span class="keywordtype">int</span> nband=0;<span class="comment">//linear feature</span></div>
-<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>   <span class="keywordflow">if</span>(l1)</div>
-<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>     ++nband;</div>
-<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>   <span class="keywordflow">if</span>(a1)</div>
-<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>     ++nband;</div>
-<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>   <span class="keywordflow">if</span>(l2)</div>
-<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>     ++nband;</div>
-<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>   <span class="keywordflow">if</span>(a2)</div>
-<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>     ++nband;</div>
-<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>   output.resize(nband);</div>
-<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<output.size();++iband)</div>
-<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>     output[iband].resize(input.nRows(),input.nCols());</div>
-<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>   <span class="keywordflow">if</span>(maxDistance<=0)</div>
-<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>     maxDistance=sqrt(static_cast<float>(input.nRows()*input.nCols()));</div>
-<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>   <span class="keywordtype">int</span> indexI=0;</div>
-<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>   <span class="keywordtype">int</span> indexJ=0;</div>
-<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>   <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>   pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y=0;y<input.nRows();++y){</div>
-<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x=0;x<input.nCols();++x){</div>
-<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>       <span class="keywordtype">float</span> currentValue=input[y][x];</div>
-<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>       <span class="comment">//find values equal to current value with some error margin</span></div>
-<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>       <span class="comment">//todo: add distance for two opposite directions</span></div>
-<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>       <span class="keywordtype">float</span> lineDistance1=0;<span class="comment">//longest line of object</span></div>
-<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>       <span class="keywordtype">float</span> lineDistance2=maxDistance;<span class="comment">//shortest line of object</span></div>
-<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>       <span class="keywordtype">float</span> lineAngle1=0;<span class="comment">//angle to longest line (North=0)</span></div>
-<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>       <span class="keywordtype">float</span> lineAngle2=0;<span class="comment">//angle to shortest line (North=0)</span></div>
-<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>       <span class="keywordtype">float</span> northAngle=0;<span class="comment">//rotating angle</span></div>
-<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>       <span class="keywordflow">for</span>(northAngle=0;northAngle<180;northAngle+=angleStep){</div>
-<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>     <span class="keywordflow">if</span>(angle<=360&&angle>=0&&angle!=northAngle)</div>
-<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>     <span class="comment">//test</span></div>
-<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>       std::cout << <span class="stringliteral">"northAngle: "</span> << northAngle << std::endl;</div>
-<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>     <span class="keywordtype">float</span> currentDistance=0;</div>
-<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>     <span class="keywordtype">float</span> theDir=0;</div>
-<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>     <span class="keywordflow">for</span>(<span class="keywordtype">short</span> side=0;side<=1;side+=1){</div>
-<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>       theDir=PI/2.0-DEG2RAD(northAngle)+side*PI;<span class="comment">//in radians</span></div>
-<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>       <span class="comment">//test</span></div>
-<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>       <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>         std::cout << <span class="stringliteral">"theDir in deg: "</span> << RAD2DEG(theDir) << std::endl;</div>
-<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>       <span class="keywordflow">if</span>(theDir<0)</div>
-<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>         theDir+=2*PI;</div>
-<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>       <span class="comment">//test</span></div>
-<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>       <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>         std::cout << <span class="stringliteral">"theDir in deg: "</span> << RAD2DEG(theDir) << std::endl;</div>
-<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>       <span class="keywordtype">float</span> nextValue=currentValue;</div>
-<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>       <span class="keywordflow">for</span>(<span class="keywordtype">float</span> currentRay=1;currentRay<maxDistance;++currentRay){</div>
-<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>         indexI=x+currentRay*cos(theDir);</div>
-<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>         indexJ=y-currentRay*sin(theDir);</div>
-<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>         <span class="keywordflow">if</span>(indexJ<0||indexJ>=input.size())</div>
-<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>         <span class="keywordflow">if</span>(indexI<0||indexI>=input[indexJ].size())</div>
-<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>         nextValue=input[indexJ][indexI];</div>
-<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>         <span class="keywordflow">if</span>(verbose){</div>
-<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>           std::cout << <span class="stringliteral">"x: "</span> << x << std::endl;</div>
-<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>           std::cout << <span class="stringliteral">"y: "</span> << y << std::endl;</div>
-<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>           std::cout << <span class="stringliteral">"currentValue: "</span> << currentValue << std::endl;</div>
-<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>           std::cout << <span class="stringliteral">"theDir in degrees: "</span> << RAD2DEG(theDir) << std::endl;</div>
-<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>           std::cout << <span class="stringliteral">"cos(theDir): "</span> << cos(theDir) << std::endl;</div>
-<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>           std::cout << <span class="stringliteral">"sin(theDir): "</span> << sin(theDir) << std::endl;</div>
-<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>           std::cout << <span class="stringliteral">"currentRay: "</span> << currentRay << std::endl;</div>
-<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>           std::cout << <span class="stringliteral">"currentDistance: "</span> << currentDistance << std::endl;</div>
-<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>           std::cout << <span class="stringliteral">"indexI: "</span> << indexI << std::endl;</div>
-<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>           std::cout << <span class="stringliteral">"indexJ: "</span> << indexJ << std::endl;</div>
-<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>           std::cout << <span class="stringliteral">"nextValue: "</span> << nextValue << std::endl;</div>
-<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>         }</div>
-<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>         <span class="keywordflow">if</span>(fabs(currentValue-nextValue)<=eps){</div>
-<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>           ++currentDistance;</div>
-<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>           <span class="comment">//test</span></div>
-<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>           <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>         std::cout << <span class="stringliteral">"currentDistance: "</span> << currentDistance << <span class="stringliteral">", continue"</span> << std::endl;</div>
-<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>         }</div>
-<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>           <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>         std::cout << <span class="stringliteral">"currentDistance: "</span> << currentDistance << <span class="stringliteral">", break"</span> << std::endl;</div>
-<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>         }</div>
-<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>       }</div>
-<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>     }</div>
-<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>     <span class="keywordflow">if</span>(lineDistance1<currentDistance){</div>
-<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>       lineDistance1=currentDistance;</div>
-<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>       lineAngle1=northAngle;</div>
-<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>     }</div>
-<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>     <span class="keywordflow">if</span>(lineDistance2>currentDistance){</div>
-<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>       lineDistance2=currentDistance;</div>
-<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>       lineAngle2=northAngle;</div>
-<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>     }</div>
-<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>     <span class="keywordflow">if</span>(verbose){</div>
-<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>       std::cout << <span class="stringliteral">"lineDistance1: "</span> << lineDistance1 << std::endl;</div>
-<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>       std::cout << <span class="stringliteral">"lineAngle1: "</span> << lineAngle1 << std::endl;</div>
-<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>       std::cout << <span class="stringliteral">"lineDistance2: "</span> << lineDistance2 << std::endl;</div>
-<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>       std::cout << <span class="stringliteral">"lineAngle2: "</span> << lineAngle2 << std::endl;</div>
-<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>     }</div>
-<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>       }</div>
-<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>       <span class="keywordtype">int</span> iband=0;</div>
-<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>       <span class="keywordflow">if</span>(l1)</div>
-<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>     output[iband++][y][x]=lineDistance1;</div>
-<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>       <span class="keywordflow">if</span>(a1)</div>
-<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>     output[iband++][y][x]=lineAngle1;</div>
-<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>       <span class="keywordflow">if</span>(l2)</div>
-<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>     output[iband++][y][x]=lineDistance2;</div>
-<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>       <span class="keywordflow">if</span>(a2)</div>
-<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>     output[iband++][y][x]=lineAngle2;</div>
-<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>       assert(iband==nband);</div>
-<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>     }</div>
-<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>     progress=(1.0+y);</div>
-<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>     progress/=input.nRows();</div>
-<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>   }</div>
-<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span> }</div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-<div class="ttc" id="classImgWriterGdal_html"><div class="ttname"><a href="classImgWriterGdal.html">ImgWriterGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgWriterGdal_8h_source.html#l00033">ImgWriterGdal.h:33</a></div></div>
-<div class="ttc" id="classVector2d_html"><div class="ttname"><a href="classVector2d.html">Vector2d< double ></a></div></div>
-<div class="ttc" id="classstatfactory_1_1StatFactory_html"><div class="ttname"><a href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></div><div class="ttdef"><b>Definition:</b> <a href="StatFactory_8h_source.html#l00043">StatFactory.h:43</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/Filter2d_8h_source.html b/doc/html/Filter2d_8h_source.html
deleted file mode 100644
index 24a7561..0000000
--- a/doc/html/Filter2d_8h_source.html
+++ /dev/null
@@ -1,1446 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/algorithms/Filter2d.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_e6df591b0639d4c4807ef64d058833e2.html">algorithms</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">Filter2d.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">Filter2d.h: class for filtering images</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2012 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#ifndef _MYFILTER2D_H_</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor"></span><span class="preprocessor">#define _MYFILTER2D_H_</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#ifndef PI</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor"></span><span class="preprocessor">#define PI 3.1415926535897932384626433832795</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#ifndef DEG2RAD</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor"></span><span class="preprocessor">#define DEG2RAD(DEG) (DEG/180.0*PI)</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="preprocessor">#ifndef RAD2DEG</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="preprocessor"></span><span class="preprocessor">#define RAD2DEG(RAD) (RAD/PI*180)</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="preprocessor">#ifdef WIN32</span></div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="preprocessor"></span><span class="preprocessor">#include <process.h></span></div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="preprocessor">#define getpid _getpid</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> <span class="preprocessor">#include <assert.h></span></div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="preprocessor">#include <math.h></span></div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span> <span class="preprocessor">#include <limits></span></div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span> <span class="preprocessor">#include <vector></span></div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span> <span class="preprocessor">#include <string></span></div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span> <span class="preprocessor">#include <map></span></div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span> {</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span> <span class="preprocessor">#include <gsl/gsl_sort.h></span></div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span> <span class="preprocessor">#include <gsl/gsl_wavelet.h></span></div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span> <span class="preprocessor">#include <gsl/gsl_wavelet2d.h></span></div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span> <span class="preprocessor">#include <gsl/gsl_rng.h></span></div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span> <span class="preprocessor">#include <gsl/gsl_randist.h></span></div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span> }</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span> <span class="preprocessor">#include "base/Vector2d.h"</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span> <span class="preprocessor">#include "Filter.h"</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span> <span class="preprocessor">#include "imageclasses/ImgReaderGdal.h"</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span> <span class="preprocessor">#include "imageclasses/ImgWriterGdal.h"</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span> <span class="preprocessor">#include "algorithms/StatFactory.h"</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span> </div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span> <span class="keyword">namespace </span>filter2d</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span> {</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>   <span class="keyword">enum</span> FILTER_TYPE { median=100, var=101 , min=102, max=103, sum=104, mean=105, minmax=106, dilate=107, erode=108, close=109, open=110, homog=111, sobelx=112, sobely=113, sobelxy=114, sobelyx=115, smooth=116, density=117, mode=118, mixed=119, threshold=120, ismin=121, ismax=122, heterog=123, order=124, stdev=125, mrf=126, dwt=127, dwti=128, dwt_cut=129, scramble=130, shift=131, line [...]
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span> </div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>   <span class="keyword">enum</span> RESAMPLE { NEAR = 0, BILINEAR = 1, BICUBIC = 2 };<span class="comment">//bicubic not supported yet...</span></div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>   </div>
-<div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classfilter2d_1_1Filter2d.html">   65</a></span> <span class="keyword">class </span><a class="code" href="classfilter2d_1_1Filter2d.html">Filter2d</a></div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span> {</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>   <a class="code" href="classfilter2d_1_1Filter2d.html">Filter2d</a>(<span class="keywordtype">void</span>);</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>   <a class="code" href="classfilter2d_1_1Filter2d.html">Filter2d</a>(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<double></a> &taps);</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>   <span class="keyword">virtual</span> ~<a class="code" href="classfilter2d_1_1Filter2d.html">Filter2d</a>(){};</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>   <span class="keyword">static</span> FILTER_TYPE getFilterType(<span class="keyword">const</span> std::string filterType){</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>     std::map<std::string, FILTER_TYPE> m_filterMap;</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>     initMap(m_filterMap);</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>     <span class="keywordflow">return</span> m_filterMap[filterType];</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>   };</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>   <span class="keyword">static</span> <span class="keyword">const</span> RESAMPLE getResampleType(<span class="keyword">const</span> std::string resampleType){</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>     <span class="keywordflow">if</span>(resampleType==<span class="stringliteral">"near"</span>) <span class="keywordflow">return</span>(NEAR);</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(resampleType==<span class="stringliteral">"bilinear"</span>) <span class="keywordflow">return</span>(BILINEAR);</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>       std::string errorString=<span class="stringliteral">"resampling type not supported: "</span>;</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>       errorString+=resampleType;</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>       errorString+=<span class="stringliteral">" use near or bilinear"</span>;</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>       <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     }</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>   };</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span> </div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>   <span class="keywordtype">void</span> setTaps(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<double></a> &taps);</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   <span class="comment">/* void setNoValue(double noValue=0){m_noValue=noValue;}; */</span></div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>   <span class="keywordtype">void</span> pushClass(<span class="keywordtype">short</span> theClass=1){m_class.push_back(theClass);};</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>   <span class="keywordtype">int</span> pushNoDataValue(<span class="keywordtype">double</span> noDataValue=0);<span class="comment">//{m_mask.push_back(theMask);};</span></div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>   <span class="keywordtype">void</span> pushThreshold(<span class="keywordtype">double</span> theThreshold){m_threshold.push_back(theThreshold);};</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   <span class="keywordtype">void</span> setThresholds(<span class="keyword">const</span> std::vector<double>& theThresholds){m_threshold=theThresholds;};</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>   <span class="keywordtype">void</span> setClasses(<span class="keyword">const</span> std::vector<short>& theClasses){m_class=theClasses;};</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   <span class="keywordtype">void</span> filter(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keywordtype">bool</span> absolute=<span class="keyword">false</span>, <span class="keywordtype">bool</span> normalize=<span class="keyword">false</span>, <span clas [...]
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   <span class="keywordtype">void</span> smooth(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output,<span class="keywordtype">int</span> dim);</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>   <span class="keywordtype">void</span> smooth(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output,<span class="keywordtype">int</span> dimX, <span class="keywordtype">int</span> dimY);</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>   <span class="keywordtype">void</span> smoothNoData(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output,<span class="keywordtype">int</span> dim);</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>   <span class="keywordtype">void</span> smoothNoData(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output,<span class="keywordtype">int</span> dimX, <span class="keywordtype">int</span> dimY);</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>   <span class="keyword">template</span><<span class="keyword">class</span> T1, <span class="keyword">class</span> T2> <span class="keywordtype">void</span> filter(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T1></a>& inputVector, <a class="code" href="classVector2d.html">Vector2d<T2></a>& outputVector);</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>   <span class="keyword">template</span><<span class="keyword">class</span> T1, <span class="keyword">class</span> T2> <span class="keywordtype">void</span> smooth(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T1></a>& inputVector, <a class="code" href="classVector2d.html">Vector2d<T2></a>& outputVector,<span class="keywordtype">int</span> dim);</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>   <span class="keyword">template</span><<span class="keyword">class</span> T1, <span class="keyword">class</span> T2> <span class="keywordtype">void</span> smooth(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T1></a>& inputVector, <a class="code" href="classVector2d.html">Vector2d<T2></a>& outputVector,<span class="keywordtype">int</span> dimX, < [...]
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>   <span class="keywordtype">void</span> dwtForward(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keyword">const</span> std::string& wavelet_type, <span class="keywordtype">int</span> family);</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>   <span class="keywordtype">void</span> dwtInverse(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keyword">const</span> std::string& wavelet_type, <span class="keywordtype">int</span> family);</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>   <span class="keywordtype">void</span> dwtCut(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keyword">const</span> std::string& wavelet_type, <span class="keywordtype">int</span> family, <span class="keywordtype">double</span> cut, <span class="keywordt [...]
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> dwtForward(<a class="code" href="classVector2d.html">Vector2d<T></a>& data, <span class="keyword">const</span> std::string& wavelet_type, <span class="keywordtype">int</span> family);</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> dwtInverse(<a class="code" href="classVector2d.html">Vector2d<T></a>& data, <span class="keyword">const</span> std::string& wavelet_type, <span class="keywordtype">int</span> family);</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> dwtCut(<a class="code" href="classVector2d.html">Vector2d<T></a>& data, <span class="keyword">const</span> std::string& wavelet_type, <span class="keywordtype">int</span> family, <span class="keywordtype">double</span> cut);</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>   <span class="keywordtype">void</span> majorVoting(<span class="keyword">const</span> std::string& inputFilename, <span class="keyword">const</span> std::string& outputFilename,<span class="keywordtype">int</span> dim=0,<span class="keyword">const</span> std::vector<int> &prior=std::vector<int>());</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   <span class="comment">/* void homogeneousSpatial(const std::string& inputFilename, const std::string& outputFilename, int dim, bool disc=false, int noValue=0); */</span></div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   <span class="keywordtype">void</span> doit(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keyword">const</span> std::string& method, <span class="keywordtype">int</span> dim, <span class="keywordtype">short</span> down=1, <span class="keywordtype">bool [...]
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>   <span class="keywordtype">void</span> doit(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keyword">const</span> std::string& method, <span class="keywordtype">int</span> dimX, <span class="keywordtype">int</span> dimY, <span class="keywordtype">short</ [...]
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>   <span class="keywordtype">void</span> mrf(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keywordtype">int</span> dimX, <span class="keywordtype">int</span> dimY, <span class="keywordtype">double</span> beta, <span class="keywordtype">bool</span> eightConne [...]
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>   <span class="keywordtype">void</span> mrf(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keywordtype">int</span> dimX, <span class="keywordtype">int</span> dimY, <a class="code" href="classVector2d.html">Vector2d<double></a> beta, <span class="keywor [...]
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   <span class="keyword">template</span><<span class="keyword">class</span> T1, <span class="keyword">class</span> T2> <span class="keywordtype">void</span> doit(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T1></a>& inputVector, <a class="code" href="classVector2d.html">Vector2d<T2></a>& outputVector, <span class="keyword">const</span> std::strin [...]
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>   <span class="keywordtype">void</span> median(<span class="keyword">const</span> std::string& inputFilename, <span class="keyword">const</span> std::string& outputFilename, <span class="keywordtype">int</span> dim, <span class="keywordtype">bool</span> disc=<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>   <span class="keywordtype">void</span> var(<span class="keyword">const</span> std::string& inputFilename, <span class="keyword">const</span> std::string& outputFilename, <span class="keywordtype">int</span> dim, <span class="keywordtype">bool</span> disc=<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>   <span class="keywordtype">void</span> morphology(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keyword">const</span> std::string& method, <span class="keywordtype">int</span> dimX, <span class="keywordtype">int</span> dimY, <span class="keyword">const [...]
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> morphology(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T></a>& input, <a class="code" href="classVector2d.html">Vector2d<T></a>& output, <span class="k [...]
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> dsm2dtm_nwse(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T></a>& inputDSM, <a class="code" href="classVector2d.html">Vector2d<T></a>& outputMask, <span [...]
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> dsm2dtm_nesw(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T></a>& inputDSM, <a class="code" href="classVector2d.html">Vector2d<T></a>& outputMask, <span [...]
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> dsm2dtm_senw(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T></a>& inputDSM, <a class="code" href="classVector2d.html">Vector2d<T></a>& outputMask, <span [...]
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> dsm2dtm_swne(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T></a>& inputDSM, <a class="code" href="classVector2d.html">Vector2d<T></a>& outputMask, <span [...]
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> shadowDsm(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T></a>& input, <a class="code" href="classVector2d.html">Vector2d<T></a>& output, <span class="keywordtype">double</span> sza, <span class="keywordtype">double</span> saa, <spa [...]
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>   <span class="keywordtype">void</span> shadowDsm(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keywordtype">double</span> sza, <span class="keywordtype">double</span> saa, <span class="keywordtype">double</span> pixelSize, <span class="keywordtype">short</ [...]
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>   <span class="keywordtype">void</span> dwt_texture(<span class="keyword">const</span> std::string& inputFilename, <span class="keyword">const</span> std::string& outputFilename,<span class="keywordtype">int</span> dim, <span class="keywordtype">int</span> scale, <span class="keywordtype">int</span> down=1, <span class="keywordtype">int</span> iband=0, <span class="keywordtype">bool</span> verbose=<span [...]
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>   <span class="keywordtype">void</span> shift(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keywordtype">double</span> offsetX=0, <span class="keywordtype">double</span> offsetY=0, <span class="keywordtype">double</span> randomSigma=0, RESAMPLE resample=BIL [...]
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> shift(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T></a>& input, <a class="code" href="classVector2d.html">Vector2d<T></a>& output, <span class="keywordtype">double</span> offsetX=0, <span class="keywordtype">double</span> offsetY [...]
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>   <span class="keywordtype">void</span> linearFeature(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<float></a>& input, std::vector< <a class="code" href="classVector2d.html">Vector2d<float></a> >& output, <span class="keywordtype">float</span> angle=361, <span class="keywordtype">float</span> angleStep=1, <span class="keywordtype">float</span> ma [...]
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>   <span class="keywordtype">void</span> linearFeature(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keywordtype">float</span> angle=361, <span class="keywordtype">float</span> angleStep=1, <span class="keywordtype">float</span> maxDistance=0, <span class="k [...]
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>   </div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span> <span class="keyword">private</span>:</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>   <span class="keyword">static</span> <span class="keywordtype">void</span> initMap(std::map<std::string, FILTER_TYPE>& m_filterMap){</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>     <span class="comment">//initialize selMap</span></div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>     m_filterMap[<span class="stringliteral">"median"</span>]=filter2d::median;</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>     m_filterMap[<span class="stringliteral">"nvalid"</span>]=filter2d::nvalid;</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>     m_filterMap[<span class="stringliteral">"var"</span>]=filter2d::var;</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>     m_filterMap[<span class="stringliteral">"min"</span>]=filter2d::min;</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>     m_filterMap[<span class="stringliteral">"max"</span>]=filter2d::max;</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>     m_filterMap[<span class="stringliteral">"sum"</span>]=filter2d::sum;</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>     m_filterMap[<span class="stringliteral">"mean"</span>]=filter2d::mean;</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>     m_filterMap[<span class="stringliteral">"minmax"</span>]=filter2d::minmax;</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>     m_filterMap[<span class="stringliteral">"dilate"</span>]=filter2d::dilate;</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>     m_filterMap[<span class="stringliteral">"erode"</span>]=filter2d::erode;</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>     m_filterMap[<span class="stringliteral">"close"</span>]=filter2d::close;</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>     m_filterMap[<span class="stringliteral">"open"</span>]=filter2d::open;</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>     m_filterMap[<span class="stringliteral">"homog"</span>]=filter2d::homog;</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>     m_filterMap[<span class="stringliteral">"sobelx"</span>]=filter2d::sobelx;</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>     m_filterMap[<span class="stringliteral">"sobely"</span>]=filter2d::sobely;</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>     m_filterMap[<span class="stringliteral">"sobelxy"</span>]=filter2d::sobelxy;</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>     m_filterMap[<span class="stringliteral">"sobelyx"</span>]=filter2d::sobelyx;</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>     m_filterMap[<span class="stringliteral">"smooth"</span>]=filter2d::smooth;</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>     m_filterMap[<span class="stringliteral">"density"</span>]=filter2d::density;</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>     m_filterMap[<span class="stringliteral">"mode"</span>]=filter2d::mode;</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>     m_filterMap[<span class="stringliteral">"mixed"</span>]=filter2d::mixed;</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>     m_filterMap[<span class="stringliteral">"smoothnodata"</span>]=filter2d::smoothnodata;</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>     m_filterMap[<span class="stringliteral">"threshold"</span>]=filter2d::threshold;</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>     m_filterMap[<span class="stringliteral">"ismin"</span>]=filter2d::ismin;</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>     m_filterMap[<span class="stringliteral">"ismax"</span>]=filter2d::ismax;</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>     m_filterMap[<span class="stringliteral">"heterog"</span>]=filter2d::heterog;</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>     m_filterMap[<span class="stringliteral">"order"</span>]=filter2d::order;</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>     m_filterMap[<span class="stringliteral">"stdev"</span>]=filter2d::stdev;</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>     m_filterMap[<span class="stringliteral">"mrf"</span>]=filter2d::mrf;</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>     m_filterMap[<span class="stringliteral">"dwt"</span>]=filter2d::dwt;</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>     m_filterMap[<span class="stringliteral">"dwti"</span>]=filter2d::dwti;</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>     m_filterMap[<span class="stringliteral">"dwt_cut"</span>]=filter2d::dwt_cut;</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>     m_filterMap[<span class="stringliteral">"dwt_cut_from"</span>]=filter2d::dwt_cut_from;</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>     m_filterMap[<span class="stringliteral">"scramble"</span>]=filter2d::scramble;</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>     m_filterMap[<span class="stringliteral">"shift"</span>]=filter2d::shift;</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>     m_filterMap[<span class="stringliteral">"linearfeature"</span>]=filter2d::linearfeature;</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>     m_filterMap[<span class="stringliteral">"countid"</span>]=filter2d::countid;</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>     m_filterMap[<span class="stringliteral">"savgolay"</span>]=filter2d::savgolay;</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>     m_filterMap[<span class="stringliteral">"percentile"</span>]=filter2d::percentile;</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>     m_filterMap[<span class="stringliteral">"proportion"</span>]=filter2d::proportion;</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>   }</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span> </div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> m_taps;</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>   <span class="comment">/* double m_noValue; */</span></div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>   std::vector<short> m_class;</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>   <span class="comment">/* std::vector<short> m_mask; */</span></div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>   std::vector<double> m_noDataValues;</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>   std::vector<double> m_threshold;</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span> };</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span> </div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span> </div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>  <span class="keyword">template</span><<span class="keyword">class</span> T1, <span class="keyword">class</span> T2> <span class="keywordtype">void</span> Filter2d::smooth(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T1></a>& inputVector, <a class="code" href="classVector2d.html">Vector2d<T2></a>& outputVector,<span class="keywordtype">int</span [...]
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>   {</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>     smooth(inputVector,outputVector,dim,dim);</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>   }</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span> </div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>  <span class="keyword">template</span><<span class="keyword">class</span> T1, <span class="keyword">class</span> T2> <span class="keywordtype">void</span> Filter2d::smooth(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T1></a>& inputVector, <a class="code" href="classVector2d.html">Vector2d<T2></a>& outputVector,<span class="keywordtype">int</span [...]
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>   {</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>     m_taps.resize(dimY);</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=0;j<dimY;++j){</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>       m_taps[j].resize(dimX);</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<dimX;++i)</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>     m_taps[j][i]=1.0/dimX/dimY;</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>     }</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>     filter(inputVector,outputVector);</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>   }</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>   </div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>   <span class="keyword">template</span><<span class="keyword">class</span> T1, <span class="keyword">class</span> T2> <span class="keywordtype">void</span> Filter2d::filter(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T1></a>& inputVector, <a class="code" href="classVector2d.html">Vector2d<T2></a>& outputVector)</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>   {</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>     outputVector.resize(inputVector.size());</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>     <span class="keywordtype">int</span> dimX=m_taps[0].size();<span class="comment">//horizontal!!!</span></div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>     <span class="keywordtype">int</span> dimY=m_taps.size();<span class="comment">//vertical!!!</span></div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>     <a class="code" href="classVector2d.html">Vector2d<T1></a> inBuffer(dimY);</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>     std::vector<T2> outBuffer(inputVector[0].size());</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>     <span class="comment">//initialize last half of inBuffer</span></div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>     <span class="keywordtype">int</span> indexI=0;</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>     <span class="keywordtype">int</span> indexJ=0;</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>     <span class="comment">//initialize last half of inBuffer</span></div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=-(dimY-1)/2;j<=dimY/2;++j){</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>       inBuffer[indexJ]=inputVector[abs(j)];</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>       ++indexJ;</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>     }</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span> </div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y=0;y<inputVector.size();++y){</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>       <span class="keywordflow">if</span>(y){<span class="comment">//inBuffer already initialized for y=0</span></div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>         <span class="comment">//erase first line from inBuffer</span></div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>         inBuffer.erase(inBuffer.begin());</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>         <span class="comment">//read extra line and push back to inBuffer if not out of bounds</span></div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>         <span class="keywordflow">if</span>(y+dimY/2<inputVector.size()){</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>       <span class="comment">//allocate buffer</span></div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>           inBuffer.push_back(inputVector[y+dimY/2]);</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>         }</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>           <span class="keywordtype">int</span> over=y+dimY/2-inputVector.nRows();</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>           <span class="keywordtype">int</span> index=(inBuffer.size()-1)-over;</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>           assert(index>=0);</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>           assert(index<inBuffer.size());</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>           inBuffer.push_back(inBuffer[index]);</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>         }</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>       }</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x=0;x<inputVector.nCols();++x){</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>         outBuffer[x]=0;</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=-(dimY-1)/2;j<=dimY/2;++j){</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=-(dimX-1)/2;i<=dimX/2;++i){</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>         indexI=x+i;</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>         indexJ=(dimY-1)/2+j;</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>         <span class="comment">//check if out of bounds</span></div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>         <span class="keywordflow">if</span>(x<(dimX-1)/2)</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>           indexI=x+abs(i);</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(x>=inputVector.nCols()-(dimX-1)/2)</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>           indexI=x-abs(i);</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>         <span class="keywordflow">if</span>(y<(dimY-1)/2)</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>           indexJ=(dimY-1)/2+abs(j);</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(y>=inputVector.nRows()-(dimY-1)/2)</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>           indexJ=(dimY-1)/2-abs(j);</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>             outBuffer[x]+=(m_taps[(dimY-1)/2+j][(dimX-1)/2+i]*inBuffer[indexJ][indexI]);</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>           }</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>         }</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>       }</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>       <span class="comment">//copy outBuffer to outputVector</span></div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>       outputVector[y]=outBuffer;</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>     }</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>   }</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span> </div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span> <span class="keyword">template</span><<span class="keyword">class</span> T1, <span class="keyword">class</span> T2> <span class="keywordtype">void</span> Filter2d::doit(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T1></a>& inputVector, <a class="code" href="classVector2d.html">Vector2d<T2></a>& outputVector, <span class="keyword">const</span> st [...]
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span> {</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>   <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>   pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span> </div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>   <span class="keywordtype">double</span> noDataValue=0;</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>   <span class="keywordflow">if</span>(m_noDataValues.size())</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>     noDataValue=m_noDataValues[0];</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span> </div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>   assert(dimX);</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>   assert(dimY);</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span> </div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>   <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>   outputVector.resize((inputVector.size()+down-1)/down);</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>   <a class="code" href="classVector2d.html">Vector2d<T1></a> inBuffer(dimY);</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>   std::vector<T2> outBuffer((inputVector[0].size()+down-1)/down);</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>   <span class="keywordtype">int</span> indexI=0;</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>   <span class="keywordtype">int</span> indexJ=0;</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>   <span class="comment">//initialize last half of inBuffer</span></div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=-(dimY-1)/2;j<=dimY/2;++j){</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>     inBuffer[indexJ]=inputVector[abs(j)];</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>     ++indexJ;</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>   }</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y=0;y<inputVector.size();++y){</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>     <span class="keywordflow">if</span>(y){<span class="comment">//inBuffer already initialized for y=0</span></div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>       <span class="comment">//erase first line from inBuffer</span></div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>       inBuffer.erase(inBuffer.begin());</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>       <span class="comment">//read extra line and push back to inBuffer if not out of bounds</span></div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>       <span class="keywordflow">if</span>(y+dimY/2<inputVector.size())</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>     inBuffer.push_back(inputVector[y+dimY/2]);</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>         <span class="keywordtype">int</span> over=y+dimY/2-inputVector.size();</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>         <span class="keywordtype">int</span> index=(inBuffer.size()-1)-over;</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>         assert(index>=0);</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>         assert(index<inBuffer.size());</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>         inBuffer.push_back(inBuffer[index]);</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>       }</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>     }</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>     <span class="keywordflow">if</span>((y+1+down/2)%down)</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x=0;x<inputVector[0].size();++x){</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>       <span class="keywordflow">if</span>((x+1+down/2)%down)</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>         <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>       outBuffer[x/down]=0;</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>       std::vector<double> windowBuffer;</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>       std::map<int,int> occurrence;</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>       <span class="keywordtype">int</span> centre=dimX*(dimY-1)/2+(dimX-1)/2;</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=-(dimY-1)/2;j<=dimY/2;++j){</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=-(dimX-1)/2;i<=dimX/2;++i){</div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>       indexI=x+i;</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>       <span class="comment">//check if out of bounds</span></div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>           <span class="keywordflow">if</span>(indexI<0)</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>             indexI=-indexI;</div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>           <span class="keywordflow">else</span> <span class="keywordflow">if</span>(indexI>=inputVector[0].size())</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>             indexI=inputVector[0].size()-i;</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>           <span class="keywordflow">if</span>(y+j<0)</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>             indexJ=-j;</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>           <span class="keywordflow">else</span> <span class="keywordflow">if</span>(y+j>=inputVector.size())</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>             indexJ=(dimY>2) ? (dimY-1)/2-j : 0;</div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>             indexJ=(dimY-1)/2+j;</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>           <span class="keywordtype">bool</span> masked=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> imask=0;imask<m_noDataValues.size();++imask){</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>             <span class="keywordflow">if</span>(inBuffer[indexJ][indexI]==m_noDataValues[imask]){</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>               masked=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>             }</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>           }</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>           <span class="keywordflow">if</span>(!masked){</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>             std::vector<short>::const_iterator vit=m_class.begin();</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>             <span class="comment">//todo: test if this works (only add occurrence if within defined classes)!</span></div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>             <span class="keywordflow">if</span>(!m_class.size())</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>               ++occurrence[inBuffer[indexJ][indexI]];</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>             <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>               <span class="keywordflow">while</span>(vit!=m_class.end()){</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>                 <span class="keywordflow">if</span>(inBuffer[indexJ][indexI]==*(vit++))</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>                   ++occurrence[inBuffer[indexJ][indexI]];</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>               }</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>             }</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>             windowBuffer.push_back(inBuffer[indexJ][indexI]);</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>           }</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>         }</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>       }</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>       <span class="keywordflow">switch</span>(getFilterType(method)){</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>       <span class="keywordflow">case</span>(filter2d::nvalid):</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>     outBuffer[x/down]=stat.nvalid(windowBuffer);</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>       <span class="keywordflow">case</span>(filter2d::median):</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>         <span class="keywordflow">if</span>(windowBuffer.empty())</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>           outBuffer[x/down]=noDataValue;</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>           outBuffer[x/down]=stat.median(windowBuffer);</div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>       <span class="keywordflow">case</span>(filter2d::var):{</div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>         <span class="keywordflow">if</span>(windowBuffer.empty())</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>           outBuffer[x/down]=noDataValue;</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>           outBuffer[x/down]=stat.var(windowBuffer);</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>       }</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>       <span class="keywordflow">case</span>(filter2d::stdev):{</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>         <span class="keywordflow">if</span>(windowBuffer.empty())</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>           outBuffer[x/down]=noDataValue;</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>           outBuffer[x/down]=sqrt(stat.var(windowBuffer));</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>       }</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>       <span class="keywordflow">case</span>(filter2d::mean):{</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>         <span class="keywordflow">if</span>(windowBuffer.empty())</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>           outBuffer[x/down]=noDataValue;</div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>           outBuffer[x/down]=stat.mean(windowBuffer);</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>       }</div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>       <span class="keywordflow">case</span>(filter2d::min):{</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>         <span class="keywordflow">if</span>(windowBuffer.empty())</div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>           outBuffer[x/down]=noDataValue;</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>           outBuffer[x/down]=stat.mymin(windowBuffer);</div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>       }</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>       <span class="keywordflow">case</span>(filter2d::ismin):{</div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>         <span class="keywordflow">if</span>(windowBuffer.empty())</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>           outBuffer[x/down]=noDataValue;</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>           outBuffer[x/down]=(stat.mymin(windowBuffer)==windowBuffer[centre])? 1:0;</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>       }</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>       <span class="keywordflow">case</span>(filter2d::minmax):{</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>         <span class="keywordtype">double</span> min=0;</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>         <span class="keywordtype">double</span> max=0;</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>         <span class="keywordflow">if</span>(windowBuffer.empty())</div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>           outBuffer[x/down]=noDataValue;</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>           stat.minmax(windowBuffer,windowBuffer.begin(),windowBuffer.end(),min,max);</div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>           <span class="keywordflow">if</span>(min!=max)</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>             outBuffer[x/down]=0;</div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>             outBuffer[x/down]=windowBuffer[centre];<span class="comment">//centre pixels</span></div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>         }</div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>       }</div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span>       <span class="keywordflow">case</span>(filter2d::max):{</div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>         <span class="keywordflow">if</span>(windowBuffer.empty())</div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>           outBuffer[x/down]=noDataValue;</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span>           outBuffer[x/down]=stat.mymax(windowBuffer);</div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span>       }</div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>       <span class="keywordflow">case</span>(filter2d::ismax):{</div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>         <span class="keywordflow">if</span>(windowBuffer.empty())</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>           outBuffer[x/down]=noDataValue;</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span>           outBuffer[x/down]=(stat.mymax(windowBuffer)==windowBuffer[centre])? 1:0;</div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>       }</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>       <span class="keywordflow">case</span>(filter2d::order):{</div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>         <span class="keywordflow">if</span>(windowBuffer.empty())</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span>           outBuffer[x/down]=noDataValue;</div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>           <span class="keywordtype">double</span> lbound=0;</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span>           <span class="keywordtype">double</span> ubound=dimX*dimY;</div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>           <span class="keywordtype">double</span> theMin=stat.mymin(windowBuffer);</div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span>           <span class="keywordtype">double</span> theMax=stat.mymax(windowBuffer);</div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span>           <span class="keywordtype">double</span> scale=(ubound-lbound)/(theMax-theMin);</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>           outBuffer[x/down]=<span class="keyword">static_cast<</span><span class="keywordtype">short</span><span class="keyword">></span>(scale*(windowBuffer[centre]-theMin)+lbound);</div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span>         }</div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span>       }</div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span>       <span class="keywordflow">case</span>(filter2d::sum):{</div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span>         outBuffer[x/down]=stat.sum(windowBuffer);</div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span>       }</div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span>       <span class="keywordflow">case</span>(filter2d::percentile):{</div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>     assert(m_threshold.size());</div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>         outBuffer[x/down]=stat.percentile(windowBuffer,windowBuffer.begin(),windowBuffer.end(),m_threshold[0]);</div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span>       }</div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span>       <span class="keywordflow">case</span>(filter2d::proportion):{</div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span>     assert(m_threshold.size());</div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span>     <span class="keywordtype">double</span> sum=stat.sum(windowBuffer);</div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span>     <span class="keywordflow">if</span>(sum)</div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span>       outBuffer[x/down]=windowBuffer[centre]/sum;</div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00445"></a><span class="lineno">  445</span>       outBuffer[x/down]=noDataValue;</div>
-<div class="line"><a name="l00446"></a><span class="lineno">  446</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00447"></a><span class="lineno">  447</span>       }</div>
-<div class="line"><a name="l00448"></a><span class="lineno">  448</span>       <span class="keywordflow">case</span>(filter2d::homog):</div>
-<div class="line"><a name="l00449"></a><span class="lineno">  449</span>         <span class="keywordflow">if</span>(occurrence.size()==1)<span class="comment">//all values in window must be the same</span></div>
-<div class="line"><a name="l00450"></a><span class="lineno">  450</span>           outBuffer[x/down]=inBuffer[(dimY-1)/2][x];</div>
-<div class="line"><a name="l00451"></a><span class="lineno">  451</span>         <span class="keywordflow">else</span><span class="comment">//favorize original value in case of ties</span></div>
-<div class="line"><a name="l00452"></a><span class="lineno">  452</span>           outBuffer[x/down]=noDataValue;</div>
-<div class="line"><a name="l00453"></a><span class="lineno">  453</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00454"></a><span class="lineno">  454</span>       <span class="keywordflow">case</span>(filter2d::heterog):{</div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span>         <span class="keywordflow">for</span>(std::vector<double>::const_iterator wit=windowBuffer.begin();wit!=windowBuffer.end();++wit){</div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</span>           <span class="keywordflow">if</span>(wit==windowBuffer.begin()+windowBuffer.size()/2)</div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span>             <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00458"></a><span class="lineno">  458</span>           <span class="keywordflow">else</span> <span class="keywordflow">if</span>(*wit!=inBuffer[(dimY-1)/2][x])</div>
-<div class="line"><a name="l00459"></a><span class="lineno">  459</span>             outBuffer[x/down]=1;</div>
-<div class="line"><a name="l00460"></a><span class="lineno">  460</span>           <span class="keywordflow">else</span> <span class="keywordflow">if</span>(*wit==inBuffer[(dimY-1)/2][x]){<span class="comment">//todo:wit mag niet central pixel zijn</span></div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span>             outBuffer[x/down]=noDataValue;</div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span>           }</div>
-<div class="line"><a name="l00464"></a><span class="lineno">  464</span>         }</div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>       }</div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span>       <span class="keywordflow">case</span>(filter2d::density):{</div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span>         <span class="keywordflow">if</span>(windowBuffer.size()){</div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span>           std::vector<short>::const_iterator vit=m_class.begin();</div>
-<div class="line"><a name="l00470"></a><span class="lineno">  470</span>           <span class="keywordflow">while</span>(vit!=m_class.end())</div>
-<div class="line"><a name="l00471"></a><span class="lineno">  471</span>             outBuffer[x/down]+=100.0*occurrence[*(vit++)]/windowBuffer.size();</div>
-<div class="line"><a name="l00472"></a><span class="lineno">  472</span>         }</div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00474"></a><span class="lineno">  474</span>           outBuffer[x/down]=noDataValue;</div>
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00476"></a><span class="lineno">  476</span>       }</div>
-<div class="line"><a name="l00477"></a><span class="lineno">  477</span>       <span class="keywordflow">case</span>(filter2d::countid):{</div>
-<div class="line"><a name="l00478"></a><span class="lineno">  478</span>     <span class="keywordflow">if</span>(windowBuffer.size())</div>
-<div class="line"><a name="l00479"></a><span class="lineno">  479</span>       outBuffer[x/down]=occurrence.size();</div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span>       outBuffer[x/down]=noDataValue;</div>
-<div class="line"><a name="l00482"></a><span class="lineno">  482</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00483"></a><span class="lineno">  483</span>       }</div>
-<div class="line"><a name="l00484"></a><span class="lineno">  484</span>       <span class="keywordflow">case</span>(filter2d::mode):{</div>
-<div class="line"><a name="l00485"></a><span class="lineno">  485</span>         <span class="keywordflow">if</span>(occurrence.size()){</div>
-<div class="line"><a name="l00486"></a><span class="lineno">  486</span>           std::map<int,int>::const_iterator maxit=occurrence.begin();</div>
-<div class="line"><a name="l00487"></a><span class="lineno">  487</span>           <span class="keywordflow">for</span>(std::map<int,int>::const_iterator mit=occurrence.begin();mit!=occurrence.end();++mit){</div>
-<div class="line"><a name="l00488"></a><span class="lineno">  488</span>             <span class="keywordflow">if</span>(mit->second>maxit->second)</div>
-<div class="line"><a name="l00489"></a><span class="lineno">  489</span>               maxit=mit;</div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span>           }</div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span>           <span class="keywordflow">if</span>(occurrence[inBuffer[(dimY-1)/2][x]]<maxit->second)<span class="comment">//</span></div>
-<div class="line"><a name="l00492"></a><span class="lineno">  492</span>             outBuffer[x/down]=maxit->first;</div>
-<div class="line"><a name="l00493"></a><span class="lineno">  493</span>           <span class="keywordflow">else</span><span class="comment">//favorize original value in case of ties</span></div>
-<div class="line"><a name="l00494"></a><span class="lineno">  494</span>             outBuffer[x/down]=inBuffer[(dimY-1)/2][x];</div>
-<div class="line"><a name="l00495"></a><span class="lineno">  495</span>         }</div>
-<div class="line"><a name="l00496"></a><span class="lineno">  496</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00497"></a><span class="lineno">  497</span>           outBuffer[x/down]=noDataValue;</div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span>       }</div>
-<div class="line"><a name="l00500"></a><span class="lineno">  500</span>       <span class="keywordflow">case</span>(filter2d::threshold):{</div>
-<div class="line"><a name="l00501"></a><span class="lineno">  501</span>         assert(m_class.size()==m_threshold.size());</div>
-<div class="line"><a name="l00502"></a><span class="lineno">  502</span>         <span class="keywordflow">if</span>(windowBuffer.size()){</div>
-<div class="line"><a name="l00503"></a><span class="lineno">  503</span>           outBuffer[x/down]=inBuffer[(dimY-1)/2][x];<span class="comment">//initialize with original value (in case thresholds not met)</span></div>
-<div class="line"><a name="l00504"></a><span class="lineno">  504</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<m_class.size();++iclass){</div>
-<div class="line"><a name="l00505"></a><span class="lineno">  505</span>             <span class="keywordflow">if</span>(100.0*(occurrence[m_class[iclass]])/windowBuffer.size()>m_threshold[iclass])</div>
-<div class="line"><a name="l00506"></a><span class="lineno">  506</span>               outBuffer[x/down]=m_class[iclass];</div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span>           }</div>
-<div class="line"><a name="l00508"></a><span class="lineno">  508</span>         }</div>
-<div class="line"><a name="l00509"></a><span class="lineno">  509</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span>           outBuffer[x/down]=noDataValue;</div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00512"></a><span class="lineno">  512</span>       }</div>
-<div class="line"><a name="l00513"></a><span class="lineno">  513</span>       <span class="keywordflow">case</span>(filter2d::scramble):{<span class="comment">//could be done more efficiently window by window with random shuffling entire buffer and assigning entire buffer at once to output image...</span></div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span>     <span class="keywordflow">if</span>(windowBuffer.size()){</div>
-<div class="line"><a name="l00515"></a><span class="lineno">  515</span>       <span class="keywordtype">int</span> randomIndex=std::rand()%windowBuffer.size();</div>
-<div class="line"><a name="l00516"></a><span class="lineno">  516</span>       <span class="keywordflow">if</span>(randomIndex>=windowBuffer.size())</div>
-<div class="line"><a name="l00517"></a><span class="lineno">  517</span>         outBuffer[x/down]=windowBuffer.back();</div>
-<div class="line"><a name="l00518"></a><span class="lineno">  518</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(randomIndex<0)</div>
-<div class="line"><a name="l00519"></a><span class="lineno">  519</span>         outBuffer[x/down]=windowBuffer[0];</div>
-<div class="line"><a name="l00520"></a><span class="lineno">  520</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00521"></a><span class="lineno">  521</span>         outBuffer[x/down]=windowBuffer[randomIndex];</div>
-<div class="line"><a name="l00522"></a><span class="lineno">  522</span>     }</div>
-<div class="line"><a name="l00523"></a><span class="lineno">  523</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00524"></a><span class="lineno">  524</span>       outBuffer[x/down]=noDataValue;</div>
-<div class="line"><a name="l00525"></a><span class="lineno">  525</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00526"></a><span class="lineno">  526</span>       }</div>
-<div class="line"><a name="l00527"></a><span class="lineno">  527</span>       <span class="keywordflow">case</span>(filter2d::mixed):{</div>
-<div class="line"><a name="l00528"></a><span class="lineno">  528</span>         <span class="keyword">enum</span> MixType { BF=11, CF=12, MF=13, NF=20, W=30 };</div>
-<div class="line"><a name="l00529"></a><span class="lineno">  529</span>         <span class="keywordtype">double</span> nBF=occurrence[BF];</div>
-<div class="line"><a name="l00530"></a><span class="lineno">  530</span>         <span class="keywordtype">double</span> nCF=occurrence[CF];</div>
-<div class="line"><a name="l00531"></a><span class="lineno">  531</span>         <span class="keywordtype">double</span> nMF=occurrence[MF];</div>
-<div class="line"><a name="l00532"></a><span class="lineno">  532</span>         <span class="keywordtype">double</span> nNF=occurrence[NF];</div>
-<div class="line"><a name="l00533"></a><span class="lineno">  533</span>         <span class="keywordtype">double</span> nW=occurrence[W];</div>
-<div class="line"><a name="l00534"></a><span class="lineno">  534</span>         <span class="keywordflow">if</span>(windowBuffer.size()){</div>
-<div class="line"><a name="l00535"></a><span class="lineno">  535</span>           <span class="keywordflow">if</span>((nBF+nCF+nMF)&&(nBF+nCF+nMF>=nNF+nW)){<span class="comment">//forest</span></div>
-<div class="line"><a name="l00536"></a><span class="lineno">  536</span>             <span class="keywordflow">if</span>(nBF/(nBF+nCF)>=0.75)</div>
-<div class="line"><a name="l00537"></a><span class="lineno">  537</span>               outBuffer[x/down]=BF;</div>
-<div class="line"><a name="l00538"></a><span class="lineno">  538</span>             <span class="keywordflow">else</span> <span class="keywordflow">if</span>(nCF/(nBF+nCF)>=0.75)</div>
-<div class="line"><a name="l00539"></a><span class="lineno">  539</span>               outBuffer[x/down]=CF;</div>
-<div class="line"><a name="l00540"></a><span class="lineno">  540</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00541"></a><span class="lineno">  541</span>               outBuffer[x/down]=MF;</div>
-<div class="line"><a name="l00542"></a><span class="lineno">  542</span>           }</div>
-<div class="line"><a name="l00543"></a><span class="lineno">  543</span>           <span class="keywordflow">else</span>{<span class="comment">//non-forest</span></div>
-<div class="line"><a name="l00544"></a><span class="lineno">  544</span>             <span class="keywordflow">if</span>(nW&&(nW>=nNF))</div>
-<div class="line"><a name="l00545"></a><span class="lineno">  545</span>               outBuffer[x/down]=W;</div>
-<div class="line"><a name="l00546"></a><span class="lineno">  546</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00547"></a><span class="lineno">  547</span>               outBuffer[x/down]=NF;</div>
-<div class="line"><a name="l00548"></a><span class="lineno">  548</span>           }</div>
-<div class="line"><a name="l00549"></a><span class="lineno">  549</span>         }</div>
-<div class="line"><a name="l00550"></a><span class="lineno">  550</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00551"></a><span class="lineno">  551</span>           outBuffer[x/down]=inBuffer[indexJ][indexI];</div>
-<div class="line"><a name="l00552"></a><span class="lineno">  552</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00553"></a><span class="lineno">  553</span>       }</div>
-<div class="line"><a name="l00554"></a><span class="lineno">  554</span>       <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00555"></a><span class="lineno">  555</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00556"></a><span class="lineno">  556</span>       }</div>
-<div class="line"><a name="l00557"></a><span class="lineno">  557</span>     }</div>
-<div class="line"><a name="l00558"></a><span class="lineno">  558</span>     progress=(1.0+y/down);</div>
-<div class="line"><a name="l00559"></a><span class="lineno">  559</span>     progress+=(outputVector.size());</div>
-<div class="line"><a name="l00560"></a><span class="lineno">  560</span>     progress/=outputVector.size();</div>
-<div class="line"><a name="l00561"></a><span class="lineno">  561</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00562"></a><span class="lineno">  562</span>     <span class="comment">//copy outBuffer to outputVector</span></div>
-<div class="line"><a name="l00563"></a><span class="lineno">  563</span>     outputVector[y/down]=outBuffer;</div>
-<div class="line"><a name="l00564"></a><span class="lineno">  564</span>   }</div>
-<div class="line"><a name="l00565"></a><span class="lineno">  565</span> }</div>
-<div class="line"><a name="l00566"></a><span class="lineno">  566</span> </div>
-<div class="line"><a name="l00567"></a><span class="lineno">  567</span> <span class="comment">// class Compare_mapValue{</span></div>
-<div class="line"><a name="l00568"></a><span class="lineno">  568</span> <span class="comment">// public:</span></div>
-<div class="line"><a name="l00569"></a><span class="lineno">  569</span> <span class="comment">//   int operator() (const map<int,int>::value_type& v1, const map<int, int>::value_type& v2) const{</span></div>
-<div class="line"><a name="l00570"></a><span class="lineno">  570</span> <span class="comment">//     return (v1.second)>(v2.second);</span></div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span> <span class="comment">//   }</span></div>
-<div class="line"><a name="l00572"></a><span class="lineno">  572</span> <span class="comment">// };</span></div>
-<div class="line"><a name="l00573"></a><span class="lineno">  573</span> </div>
-<div class="line"><a name="l00574"></a><span class="lineno">  574</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> Filter2d::shift(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T></a>& input, <a class="code" href="classVector2d.html">Vector2d<T></a>& output, <span class="keywordtype">double</span> offsetX, <span class="keywordtype">double</span> o [...]
-<div class="line"><a name="l00575"></a><span class="lineno">  575</span>   output.resize(input.nRows(),input.nCols());</div>
-<div class="line"><a name="l00576"></a><span class="lineno">  576</span>   <span class="keyword">const</span> gsl_rng_type *rangenType;</div>
-<div class="line"><a name="l00577"></a><span class="lineno">  577</span>   gsl_rng *rangen;</div>
-<div class="line"><a name="l00578"></a><span class="lineno">  578</span>   gsl_rng_env_setup();</div>
-<div class="line"><a name="l00579"></a><span class="lineno">  579</span>   rangenType=gsl_rng_default;</div>
-<div class="line"><a name="l00580"></a><span class="lineno">  580</span>   rangen=gsl_rng_alloc(rangenType);</div>
-<div class="line"><a name="l00581"></a><span class="lineno">  581</span>   <span class="keywordtype">long</span> seed=time(NULL)*getpid();</div>
-<div class="line"><a name="l00582"></a><span class="lineno">  582</span>   gsl_rng_set(rangen,seed);</div>
-<div class="line"><a name="l00583"></a><span class="lineno">  583</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00584"></a><span class="lineno">  584</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00585"></a><span class="lineno">  585</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00586"></a><span class="lineno">  586</span>   <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l00587"></a><span class="lineno">  587</span>   pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00588"></a><span class="lineno">  588</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=0;j<input.nRows();++j){</div>
-<div class="line"><a name="l00589"></a><span class="lineno">  589</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<input.nCols();++i){</div>
-<div class="line"><a name="l00590"></a><span class="lineno">  590</span>       T theValue=0;</div>
-<div class="line"><a name="l00591"></a><span class="lineno">  591</span>       <span class="keywordtype">double</span> randomX=0;</div>
-<div class="line"><a name="l00592"></a><span class="lineno">  592</span>       <span class="keywordtype">double</span> randomY=0;</div>
-<div class="line"><a name="l00593"></a><span class="lineno">  593</span>       <span class="keywordflow">if</span>(randomSigma>0){</div>
-<div class="line"><a name="l00594"></a><span class="lineno">  594</span>         randomX=gsl_ran_gaussian(rangen,randomSigma);</div>
-<div class="line"><a name="l00595"></a><span class="lineno">  595</span>         randomY=gsl_ran_gaussian(rangen,randomSigma);</div>
-<div class="line"><a name="l00596"></a><span class="lineno">  596</span>       }</div>
-<div class="line"><a name="l00597"></a><span class="lineno">  597</span>       <span class="keywordtype">double</span> readCol=i+offsetX+randomX;</div>
-<div class="line"><a name="l00598"></a><span class="lineno">  598</span>       <span class="keywordtype">double</span> readRow=j+offsetY+randomY;</div>
-<div class="line"><a name="l00599"></a><span class="lineno">  599</span>       <span class="keywordflow">if</span>(readRow<0)</div>
-<div class="line"><a name="l00600"></a><span class="lineno">  600</span>         readRow=0;</div>
-<div class="line"><a name="l00601"></a><span class="lineno">  601</span>       <span class="keywordflow">if</span>(readRow>input.nRows()-1)</div>
-<div class="line"><a name="l00602"></a><span class="lineno">  602</span>         readRow=input.nRows()-1;</div>
-<div class="line"><a name="l00603"></a><span class="lineno">  603</span>       <span class="keywordflow">if</span>(readCol<0)</div>
-<div class="line"><a name="l00604"></a><span class="lineno">  604</span>         readCol=0;</div>
-<div class="line"><a name="l00605"></a><span class="lineno">  605</span>       <span class="keywordflow">if</span>(readCol>input.nCols()-1)</div>
-<div class="line"><a name="l00606"></a><span class="lineno">  606</span>         readCol=input.nCols()-1;</div>
-<div class="line"><a name="l00607"></a><span class="lineno">  607</span>       <span class="keywordflow">switch</span>(resample){</div>
-<div class="line"><a name="l00608"></a><span class="lineno">  608</span>       <span class="keywordflow">case</span>(BILINEAR):{</div>
-<div class="line"><a name="l00609"></a><span class="lineno">  609</span>         <span class="keywordtype">double</span> lowerRow=readRow-0.5;</div>
-<div class="line"><a name="l00610"></a><span class="lineno">  610</span>         <span class="keywordtype">double</span> upperRow=readRow+0.5;</div>
-<div class="line"><a name="l00611"></a><span class="lineno">  611</span>         lowerRow=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(lowerRow);</div>
-<div class="line"><a name="l00612"></a><span class="lineno">  612</span>         upperRow=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(upperRow);</div>
-<div class="line"><a name="l00613"></a><span class="lineno">  613</span>         <span class="keywordtype">double</span> lowerCol=readCol-0.5;</div>
-<div class="line"><a name="l00614"></a><span class="lineno">  614</span>         <span class="keywordtype">double</span> upperCol=readCol+0.5;</div>
-<div class="line"><a name="l00615"></a><span class="lineno">  615</span>         lowerCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(lowerCol);</div>
-<div class="line"><a name="l00616"></a><span class="lineno">  616</span>         upperCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(upperCol);</div>
-<div class="line"><a name="l00617"></a><span class="lineno">  617</span>         assert(lowerRow>=0);</div>
-<div class="line"><a name="l00618"></a><span class="lineno">  618</span>         assert(lowerRow<input.nRows());</div>
-<div class="line"><a name="l00619"></a><span class="lineno">  619</span>         assert(lowerCol>=0);</div>
-<div class="line"><a name="l00620"></a><span class="lineno">  620</span>         assert(lowerCol<input.nCols());</div>
-<div class="line"><a name="l00621"></a><span class="lineno">  621</span>         assert(upperRow>=0);</div>
-<div class="line"><a name="l00622"></a><span class="lineno">  622</span>         assert(upperRow<input.nRows());</div>
-<div class="line"><a name="l00623"></a><span class="lineno">  623</span>         assert(upperCol>=0);</div>
-<div class="line"><a name="l00624"></a><span class="lineno">  624</span>         <span class="keywordflow">if</span>(upperCol>=input.nCols()){</div>
-<div class="line"><a name="l00625"></a><span class="lineno">  625</span>           std::cout << <span class="stringliteral">"upperCol: "</span> << upperCol << std::endl;</div>
-<div class="line"><a name="l00626"></a><span class="lineno">  626</span>           std::cout << <span class="stringliteral">"readCol: "</span> << readCol << std::endl;</div>
-<div class="line"><a name="l00627"></a><span class="lineno">  627</span>           std::cout << <span class="stringliteral">"readCol+0.5: "</span> << readCol+0.5 << std::endl;</div>
-<div class="line"><a name="l00628"></a><span class="lineno">  628</span>           std::cout << <span class="stringliteral">"static_cast<int>(readCol+0.5): "</span> << <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(readCol+0.5) << std::endl;</div>
-<div class="line"><a name="l00629"></a><span class="lineno">  629</span>         }</div>
-<div class="line"><a name="l00630"></a><span class="lineno">  630</span>         assert(upperCol<input.nCols());</div>
-<div class="line"><a name="l00631"></a><span class="lineno">  631</span>         <span class="keywordtype">double</span> c00=input[lowerRow][lowerCol];</div>
-<div class="line"><a name="l00632"></a><span class="lineno">  632</span>         <span class="keywordtype">double</span> c11=input[upperRow][upperCol];</div>
-<div class="line"><a name="l00633"></a><span class="lineno">  633</span>         <span class="keywordtype">double</span> c01=input[lowerRow][upperCol];</div>
-<div class="line"><a name="l00634"></a><span class="lineno">  634</span>         <span class="keywordtype">double</span> c10=input[upperRow][lowerCol];</div>
-<div class="line"><a name="l00635"></a><span class="lineno">  635</span>         <span class="keywordtype">double</span> a=(upperCol-readCol)*c00+(readCol-lowerCol)*c01;</div>
-<div class="line"><a name="l00636"></a><span class="lineno">  636</span>         <span class="keywordtype">double</span> b=(upperCol-readCol)*c10+(readCol-lowerCol)*c11;</div>
-<div class="line"><a name="l00637"></a><span class="lineno">  637</span>         theValue=(upperRow-readRow)*a+(readRow-lowerRow)*b;</div>
-<div class="line"><a name="l00638"></a><span class="lineno">  638</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00639"></a><span class="lineno">  639</span>       }</div>
-<div class="line"><a name="l00640"></a><span class="lineno">  640</span>       <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00641"></a><span class="lineno">  641</span>         theValue=input[<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(readRow)][static_cast<int>(readCol)];</div>
-<div class="line"><a name="l00642"></a><span class="lineno">  642</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00643"></a><span class="lineno">  643</span>       }</div>
-<div class="line"><a name="l00644"></a><span class="lineno">  644</span>       assert(j>=0);</div>
-<div class="line"><a name="l00645"></a><span class="lineno">  645</span>       assert(j<output.nRows());</div>
-<div class="line"><a name="l00646"></a><span class="lineno">  646</span>       assert(i>=0);</div>
-<div class="line"><a name="l00647"></a><span class="lineno">  647</span>       assert(i<output.nCols());</div>
-<div class="line"><a name="l00648"></a><span class="lineno">  648</span>       output[j][i]=theValue;</div>
-<div class="line"><a name="l00649"></a><span class="lineno">  649</span>     }</div>
-<div class="line"><a name="l00650"></a><span class="lineno">  650</span>     progress=(1.0+j);</div>
-<div class="line"><a name="l00651"></a><span class="lineno">  651</span>     progress/=output.nRows();</div>
-<div class="line"><a name="l00652"></a><span class="lineno">  652</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00653"></a><span class="lineno">  653</span>   }</div>
-<div class="line"><a name="l00654"></a><span class="lineno">  654</span>   gsl_rng_free(rangen);</div>
-<div class="line"><a name="l00655"></a><span class="lineno">  655</span> }</div>
-<div class="line"><a name="l00656"></a><span class="lineno">  656</span> </div>
-<div class="line"><a name="l00657"></a><span class="lineno">  657</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> Filter2d::morphology(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T></a>& input, <a class="code" href="classVector2d.html">Vector2d<T></a>& output, <span  [...]
-<div class="line"><a name="l00658"></a><span class="lineno">  658</span> {</div>
-<div class="line"><a name="l00659"></a><span class="lineno">  659</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00660"></a><span class="lineno">  660</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00661"></a><span class="lineno">  661</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00662"></a><span class="lineno">  662</span>   <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l00663"></a><span class="lineno">  663</span>   pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00664"></a><span class="lineno">  664</span> </div>
-<div class="line"><a name="l00665"></a><span class="lineno">  665</span>   <span class="keywordtype">double</span> noDataValue=0;</div>
-<div class="line"><a name="l00666"></a><span class="lineno">  666</span>   <span class="keywordflow">if</span>(m_noDataValues.size())</div>
-<div class="line"><a name="l00667"></a><span class="lineno">  667</span>     noDataValue=m_noDataValues[0];</div>
-<div class="line"><a name="l00668"></a><span class="lineno">  668</span> </div>
-<div class="line"><a name="l00669"></a><span class="lineno">  669</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> nchange=0;</div>
-<div class="line"><a name="l00670"></a><span class="lineno">  670</span>   assert(dimX);</div>
-<div class="line"><a name="l00671"></a><span class="lineno">  671</span>   assert(dimY);</div>
-<div class="line"><a name="l00672"></a><span class="lineno">  672</span>   <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00673"></a><span class="lineno">  673</span>   <a class="code" href="classVector2d.html">Vector2d<T></a> inBuffer(dimY,input.nCols());</div>
-<div class="line"><a name="l00674"></a><span class="lineno">  674</span>   output.clear();</div>
-<div class="line"><a name="l00675"></a><span class="lineno">  675</span>   output.resize(input.nRows(),input.nCols());</div>
-<div class="line"><a name="l00676"></a><span class="lineno">  676</span>   <span class="keywordtype">int</span> indexI=0;</div>
-<div class="line"><a name="l00677"></a><span class="lineno">  677</span>   <span class="keywordtype">int</span> indexJ=0;</div>
-<div class="line"><a name="l00678"></a><span class="lineno">  678</span>   <span class="comment">//initialize last half of inBuffer</span></div>
-<div class="line"><a name="l00679"></a><span class="lineno">  679</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=-(dimY-1)/2;j<=dimY/2;++j){</div>
-<div class="line"><a name="l00680"></a><span class="lineno">  680</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<input.nCols();++i)</div>
-<div class="line"><a name="l00681"></a><span class="lineno">  681</span>       inBuffer[indexJ][i]=input[abs(j)][i];</div>
-<div class="line"><a name="l00682"></a><span class="lineno">  682</span>     ++indexJ;</div>
-<div class="line"><a name="l00683"></a><span class="lineno">  683</span>   }</div>
-<div class="line"><a name="l00684"></a><span class="lineno">  684</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y=0;y<input.nRows();++y){</div>
-<div class="line"><a name="l00685"></a><span class="lineno">  685</span>     <span class="keywordflow">if</span>(y){<span class="comment">//inBuffer already initialized for y=0</span></div>
-<div class="line"><a name="l00686"></a><span class="lineno">  686</span>       <span class="comment">//erase first line from inBuffer</span></div>
-<div class="line"><a name="l00687"></a><span class="lineno">  687</span>       inBuffer.erase(inBuffer.begin());</div>
-<div class="line"><a name="l00688"></a><span class="lineno">  688</span>       <span class="comment">//read extra line and push back to inBuffer if not out of bounds</span></div>
-<div class="line"><a name="l00689"></a><span class="lineno">  689</span>       <span class="keywordflow">if</span>(y+dimY/2<input.nRows()){</div>
-<div class="line"><a name="l00690"></a><span class="lineno">  690</span>         <span class="comment">//allocate buffer</span></div>
-<div class="line"><a name="l00691"></a><span class="lineno">  691</span>         inBuffer.push_back(inBuffer.back());</div>
-<div class="line"><a name="l00692"></a><span class="lineno">  692</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<input.nCols();++i)</div>
-<div class="line"><a name="l00693"></a><span class="lineno">  693</span>           inBuffer[inBuffer.size()-1][i]=input[y+dimY/2][i];</div>
-<div class="line"><a name="l00694"></a><span class="lineno">  694</span>       }</div>
-<div class="line"><a name="l00695"></a><span class="lineno">  695</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00696"></a><span class="lineno">  696</span>         <span class="keywordtype">int</span> over=y+dimY/2-input.nRows();</div>
-<div class="line"><a name="l00697"></a><span class="lineno">  697</span>         <span class="keywordtype">int</span> index=(inBuffer.size()-1)-over;</div>
-<div class="line"><a name="l00698"></a><span class="lineno">  698</span>         assert(index>=0);</div>
-<div class="line"><a name="l00699"></a><span class="lineno">  699</span>         assert(index<inBuffer.size());</div>
-<div class="line"><a name="l00700"></a><span class="lineno">  700</span>         inBuffer.push_back(inBuffer[index]);</div>
-<div class="line"><a name="l00701"></a><span class="lineno">  701</span>       }</div>
-<div class="line"><a name="l00702"></a><span class="lineno">  702</span>     }</div>
-<div class="line"><a name="l00703"></a><span class="lineno">  703</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x=0;x<input.nCols();++x){</div>
-<div class="line"><a name="l00704"></a><span class="lineno">  704</span>       output[y][x]=0;</div>
-<div class="line"><a name="l00705"></a><span class="lineno">  705</span>       <span class="keywordtype">double</span> currentValue=inBuffer[(dimY-1)/2][x];</div>
-<div class="line"><a name="l00706"></a><span class="lineno">  706</span>       std::vector<double> statBuffer;</div>
-<div class="line"><a name="l00707"></a><span class="lineno">  707</span>       <span class="keywordtype">bool</span> currentMasked=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00708"></a><span class="lineno">  708</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> imask=0;imask<m_noDataValues.size();++imask){</div>
-<div class="line"><a name="l00709"></a><span class="lineno">  709</span>         <span class="keywordflow">if</span>(currentValue==m_noDataValues[imask]){</div>
-<div class="line"><a name="l00710"></a><span class="lineno">  710</span>           currentMasked=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00711"></a><span class="lineno">  711</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00712"></a><span class="lineno">  712</span>         }</div>
-<div class="line"><a name="l00713"></a><span class="lineno">  713</span>       }</div>
-<div class="line"><a name="l00714"></a><span class="lineno">  714</span>       output[y][x]=currentValue;<span class="comment">//introduced due to hThreshold</span></div>
-<div class="line"><a name="l00715"></a><span class="lineno">  715</span>       <span class="keywordflow">if</span>(currentMasked){</div>
-<div class="line"><a name="l00716"></a><span class="lineno">  716</span>         output[y][x]=currentValue;</div>
-<div class="line"><a name="l00717"></a><span class="lineno">  717</span>       }</div>
-<div class="line"><a name="l00718"></a><span class="lineno">  718</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00719"></a><span class="lineno">  719</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=-(dimY-1)/2;j<=dimY/2;++j){</div>
-<div class="line"><a name="l00720"></a><span class="lineno">  720</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=-(dimX-1)/2;i<=dimX/2;++i){</div>
-<div class="line"><a name="l00721"></a><span class="lineno">  721</span>             <span class="keywordtype">double</span> d2=i*i+j*j;<span class="comment">//square distance</span></div>
-<div class="line"><a name="l00722"></a><span class="lineno">  722</span>             <span class="keywordflow">if</span>(disc&&(d2>(dimX/2)*(dimY/2)))</div>
-<div class="line"><a name="l00723"></a><span class="lineno">  723</span>               <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00724"></a><span class="lineno">  724</span>             indexI=x+i;</div>
-<div class="line"><a name="l00725"></a><span class="lineno">  725</span>             <span class="comment">//check if out of bounds</span></div>
-<div class="line"><a name="l00726"></a><span class="lineno">  726</span>             <span class="keywordflow">if</span>(indexI<0)</div>
-<div class="line"><a name="l00727"></a><span class="lineno">  727</span>               indexI=-indexI;</div>
-<div class="line"><a name="l00728"></a><span class="lineno">  728</span>             <span class="keywordflow">else</span> <span class="keywordflow">if</span>(indexI>=input.nCols())</div>
-<div class="line"><a name="l00729"></a><span class="lineno">  729</span>               indexI=input.nCols()-i;</div>
-<div class="line"><a name="l00730"></a><span class="lineno">  730</span>             <span class="keywordflow">if</span>(y+j<0)</div>
-<div class="line"><a name="l00731"></a><span class="lineno">  731</span>               indexJ=-j;</div>
-<div class="line"><a name="l00732"></a><span class="lineno">  732</span>             <span class="keywordflow">else</span> <span class="keywordflow">if</span>(y+j>=input.nRows())</div>
-<div class="line"><a name="l00733"></a><span class="lineno">  733</span>                 indexJ=(dimY>2) ? (dimY-1)/2-j : 0;</div>
-<div class="line"><a name="l00734"></a><span class="lineno">  734</span>               <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00735"></a><span class="lineno">  735</span>                 indexJ=(dimY-1)/2+j;</div>
-<div class="line"><a name="l00736"></a><span class="lineno">  736</span>             <span class="keywordflow">if</span>(inBuffer[indexJ][indexI]==noDataValue)</div>
-<div class="line"><a name="l00737"></a><span class="lineno">  737</span>               <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00738"></a><span class="lineno">  738</span>             <span class="keywordtype">bool</span> masked=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00739"></a><span class="lineno">  739</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> imask=0;imask<m_noDataValues.size();++imask){</div>
-<div class="line"><a name="l00740"></a><span class="lineno">  740</span>               <span class="keywordflow">if</span>(inBuffer[indexJ][indexI]==m_noDataValues[imask]){</div>
-<div class="line"><a name="l00741"></a><span class="lineno">  741</span>                 masked=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00742"></a><span class="lineno">  742</span>                 <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00743"></a><span class="lineno">  743</span>               }</div>
-<div class="line"><a name="l00744"></a><span class="lineno">  744</span>             }</div>
-<div class="line"><a name="l00745"></a><span class="lineno">  745</span>             <span class="keywordflow">if</span>(!masked){</div>
-<div class="line"><a name="l00746"></a><span class="lineno">  746</span>               <span class="keywordtype">short</span> binValue=0;</div>
-<div class="line"><a name="l00747"></a><span class="lineno">  747</span>               <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<m_class.size();++iclass){</div>
-<div class="line"><a name="l00748"></a><span class="lineno">  748</span>                 <span class="keywordflow">if</span>(inBuffer[indexJ][indexI]==m_class[iclass]){</div>
-<div class="line"><a name="l00749"></a><span class="lineno">  749</span>                   binValue=1;</div>
-<div class="line"><a name="l00750"></a><span class="lineno">  750</span>                   <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00751"></a><span class="lineno">  751</span>                 }</div>
-<div class="line"><a name="l00752"></a><span class="lineno">  752</span>               }</div>
-<div class="line"><a name="l00753"></a><span class="lineno">  753</span>               <span class="keywordflow">if</span>(m_class.size())</div>
-<div class="line"><a name="l00754"></a><span class="lineno">  754</span>                 statBuffer.push_back(binValue);</div>
-<div class="line"><a name="l00755"></a><span class="lineno">  755</span>               <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00756"></a><span class="lineno">  756</span>                 statBuffer.push_back(inBuffer[indexJ][indexI]);</div>
-<div class="line"><a name="l00757"></a><span class="lineno">  757</span>             }</div>
-<div class="line"><a name="l00758"></a><span class="lineno">  758</span>           }</div>
-<div class="line"><a name="l00759"></a><span class="lineno">  759</span>         }</div>
-<div class="line"><a name="l00760"></a><span class="lineno">  760</span>         <span class="keywordflow">if</span>(statBuffer.size()){</div>
-<div class="line"><a name="l00761"></a><span class="lineno">  761</span>           <span class="keywordflow">switch</span>(getFilterType(method)){</div>
-<div class="line"><a name="l00762"></a><span class="lineno">  762</span>           <span class="keywordflow">case</span>(filter2d::dilate):</div>
-<div class="line"><a name="l00763"></a><span class="lineno">  763</span>             <span class="keywordflow">if</span>(output[y][x]<stat.mymax(statBuffer)-hThreshold){</div>
-<div class="line"><a name="l00764"></a><span class="lineno">  764</span>               output[y][x]=stat.mymax(statBuffer);</div>
-<div class="line"><a name="l00765"></a><span class="lineno">  765</span>               ++nchange;</div>
-<div class="line"><a name="l00766"></a><span class="lineno">  766</span>             }</div>
-<div class="line"><a name="l00767"></a><span class="lineno">  767</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00768"></a><span class="lineno">  768</span>           <span class="keywordflow">case</span>(filter2d::erode):</div>
-<div class="line"><a name="l00769"></a><span class="lineno">  769</span>             <span class="keywordflow">if</span>(output[y][x]>stat.mymin(statBuffer)+hThreshold){</div>
-<div class="line"><a name="l00770"></a><span class="lineno">  770</span>               output[y][x]=stat.mymin(statBuffer);</div>
-<div class="line"><a name="l00771"></a><span class="lineno">  771</span>               ++nchange;</div>
-<div class="line"><a name="l00772"></a><span class="lineno">  772</span>             }</div>
-<div class="line"><a name="l00773"></a><span class="lineno">  773</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00774"></a><span class="lineno">  774</span>           <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00775"></a><span class="lineno">  775</span>             std::ostringstream ess;</div>
-<div class="line"><a name="l00776"></a><span class="lineno">  776</span>             ess << <span class="stringliteral">"Error:  morphology method "</span> << method << <span class="stringliteral">" not supported, choose "</span> << filter2d::dilate << <span class="stringliteral">" (dilate) or "</span> << filter2d::erode << <span class="stringliteral">" (erode)"</span> << std::endl;</div>
-<div class="line"><a name="l00777"></a><span class="lineno">  777</span>             <span class="keywordflow">throw</span>(ess.str());</div>
-<div class="line"><a name="l00778"></a><span class="lineno">  778</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00779"></a><span class="lineno">  779</span>           }</div>
-<div class="line"><a name="l00780"></a><span class="lineno">  780</span>           <span class="keywordflow">if</span>(output[y][x]&&m_class.size())</div>
-<div class="line"><a name="l00781"></a><span class="lineno">  781</span>             output[y][x]=m_class[0];</div>
-<div class="line"><a name="l00782"></a><span class="lineno">  782</span>           <span class="comment">// else{</span></div>
-<div class="line"><a name="l00783"></a><span class="lineno">  783</span>           <span class="comment">//   assert(m_noDataValues.size());</span></div>
-<div class="line"><a name="l00784"></a><span class="lineno">  784</span>           <span class="comment">//   output[x]=m_noDataValues[0];</span></div>
-<div class="line"><a name="l00785"></a><span class="lineno">  785</span>           <span class="comment">// }</span></div>
-<div class="line"><a name="l00786"></a><span class="lineno">  786</span>         }</div>
-<div class="line"><a name="l00787"></a><span class="lineno">  787</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00788"></a><span class="lineno">  788</span>           output[y][x]=noDataValue;</div>
-<div class="line"><a name="l00789"></a><span class="lineno">  789</span>       }</div>
-<div class="line"><a name="l00790"></a><span class="lineno">  790</span>     }</div>
-<div class="line"><a name="l00791"></a><span class="lineno">  791</span>     progress=(1.0+y);</div>
-<div class="line"><a name="l00792"></a><span class="lineno">  792</span>     progress/=output.nRows();</div>
-<div class="line"><a name="l00793"></a><span class="lineno">  793</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00794"></a><span class="lineno">  794</span>   }</div>
-<div class="line"><a name="l00795"></a><span class="lineno">  795</span>   <span class="keywordflow">return</span> nchange;</div>
-<div class="line"><a name="l00796"></a><span class="lineno">  796</span> }</div>
-<div class="line"><a name="l00797"></a><span class="lineno">  797</span> </div>
-<div class="line"><a name="l00798"></a><span class="lineno">  798</span>  <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> Filter2d::dsm2dtm_nwse(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T></a>& inputDSM, <a class="code" href="classVector2d.html">Vector2d<T></a>& outputMa [...]
-<div class="line"><a name="l00799"></a><span class="lineno">  799</span> {</div>
-<div class="line"><a name="l00800"></a><span class="lineno">  800</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00801"></a><span class="lineno">  801</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00802"></a><span class="lineno">  802</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00803"></a><span class="lineno">  803</span>   <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l00804"></a><span class="lineno">  804</span>   pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00805"></a><span class="lineno">  805</span> </div>
-<div class="line"><a name="l00806"></a><span class="lineno">  806</span>   <a class="code" href="classVector2d.html">Vector2d<T></a> tmpDSM(inputDSM);</div>
-<div class="line"><a name="l00807"></a><span class="lineno">  807</span>   <span class="keywordtype">double</span> noDataValue=0;</div>
-<div class="line"><a name="l00808"></a><span class="lineno">  808</span>   <span class="keywordflow">if</span>(m_noDataValues.size())</div>
-<div class="line"><a name="l00809"></a><span class="lineno">  809</span>     noDataValue=m_noDataValues[0];</div>
-<div class="line"><a name="l00810"></a><span class="lineno">  810</span> </div>
-<div class="line"><a name="l00811"></a><span class="lineno">  811</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> nchange=0;</div>
-<div class="line"><a name="l00812"></a><span class="lineno">  812</span>   <span class="keywordtype">int</span> dimX=dim;</div>
-<div class="line"><a name="l00813"></a><span class="lineno">  813</span>   <span class="keywordtype">int</span> dimY=dim;</div>
-<div class="line"><a name="l00814"></a><span class="lineno">  814</span>   assert(dimX);</div>
-<div class="line"><a name="l00815"></a><span class="lineno">  815</span>   assert(dimY);</div>
-<div class="line"><a name="l00816"></a><span class="lineno">  816</span>   <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00817"></a><span class="lineno">  817</span>   <a class="code" href="classVector2d.html">Vector2d<T></a> inBuffer(dimY,inputDSM.nCols());</div>
-<div class="line"><a name="l00818"></a><span class="lineno">  818</span>   <span class="keywordflow">if</span>(outputMask.size()!=inputDSM.nRows())</div>
-<div class="line"><a name="l00819"></a><span class="lineno">  819</span>     outputMask.resize(inputDSM.nRows());</div>
-<div class="line"><a name="l00820"></a><span class="lineno">  820</span>   <span class="keywordtype">int</span> indexI=0;</div>
-<div class="line"><a name="l00821"></a><span class="lineno">  821</span>   <span class="keywordtype">int</span> indexJ=0;</div>
-<div class="line"><a name="l00822"></a><span class="lineno">  822</span>   <span class="comment">//initialize last half of inBuffer</span></div>
-<div class="line"><a name="l00823"></a><span class="lineno">  823</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=-(dimY-1)/2;j<=dimY/2;++j){</div>
-<div class="line"><a name="l00824"></a><span class="lineno">  824</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<inputDSM.nCols();++i)</div>
-<div class="line"><a name="l00825"></a><span class="lineno">  825</span>       inBuffer[indexJ][i]=tmpDSM[abs(j)][i];</div>
-<div class="line"><a name="l00826"></a><span class="lineno">  826</span>     ++indexJ;</div>
-<div class="line"><a name="l00827"></a><span class="lineno">  827</span>   }</div>
-<div class="line"><a name="l00828"></a><span class="lineno">  828</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y=0;y<tmpDSM.nRows();++y){</div>
-<div class="line"><a name="l00829"></a><span class="lineno">  829</span>     <span class="keywordflow">if</span>(y){<span class="comment">//inBuffer already initialized for y=0</span></div>
-<div class="line"><a name="l00830"></a><span class="lineno">  830</span>       <span class="comment">//erase first line from inBuffer</span></div>
-<div class="line"><a name="l00831"></a><span class="lineno">  831</span>       inBuffer.erase(inBuffer.begin());</div>
-<div class="line"><a name="l00832"></a><span class="lineno">  832</span>       <span class="comment">//read extra line and push back to inBuffer if not out of bounds</span></div>
-<div class="line"><a name="l00833"></a><span class="lineno">  833</span>       <span class="keywordflow">if</span>(y+dimY/2<tmpDSM.nRows()){</div>
-<div class="line"><a name="l00834"></a><span class="lineno">  834</span>         <span class="comment">//allocate buffer</span></div>
-<div class="line"><a name="l00835"></a><span class="lineno">  835</span>         inBuffer.push_back(inBuffer.back());</div>
-<div class="line"><a name="l00836"></a><span class="lineno">  836</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<tmpDSM.nCols();++i)</div>
-<div class="line"><a name="l00837"></a><span class="lineno">  837</span>           inBuffer[inBuffer.size()-1][i]=tmpDSM[y+dimY/2][i];</div>
-<div class="line"><a name="l00838"></a><span class="lineno">  838</span>       }</div>
-<div class="line"><a name="l00839"></a><span class="lineno">  839</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00840"></a><span class="lineno">  840</span>         <span class="keywordtype">int</span> over=y+dimY/2-tmpDSM.nRows();</div>
-<div class="line"><a name="l00841"></a><span class="lineno">  841</span>         <span class="keywordtype">int</span> index=(inBuffer.size()-1)-over;</div>
-<div class="line"><a name="l00842"></a><span class="lineno">  842</span>         assert(index>=0);</div>
-<div class="line"><a name="l00843"></a><span class="lineno">  843</span>         assert(index<inBuffer.size());</div>
-<div class="line"><a name="l00844"></a><span class="lineno">  844</span>         inBuffer.push_back(inBuffer[index]);</div>
-<div class="line"><a name="l00845"></a><span class="lineno">  845</span>       }</div>
-<div class="line"><a name="l00846"></a><span class="lineno">  846</span>     }</div>
-<div class="line"><a name="l00847"></a><span class="lineno">  847</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x=0;x<tmpDSM.nCols();++x){</div>
-<div class="line"><a name="l00848"></a><span class="lineno">  848</span>       <span class="keywordtype">double</span> centerValue=inBuffer[(dimY-1)/2][x];</div>
-<div class="line"><a name="l00849"></a><span class="lineno">  849</span>       <span class="keywordtype">short</span> nmasked=0;</div>
-<div class="line"><a name="l00850"></a><span class="lineno">  850</span>       std::vector<T> neighbors;</div>
-<div class="line"><a name="l00851"></a><span class="lineno">  851</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=-(dimY-1)/2;j<=dimY/2;++j){</div>
-<div class="line"><a name="l00852"></a><span class="lineno">  852</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=-(dimX-1)/2;i<=dimX/2;++i){</div>
-<div class="line"><a name="l00853"></a><span class="lineno">  853</span>       indexI=x+i;</div>
-<div class="line"><a name="l00854"></a><span class="lineno">  854</span>       <span class="comment">//check if out of bounds</span></div>
-<div class="line"><a name="l00855"></a><span class="lineno">  855</span>       <span class="keywordflow">if</span>(indexI<0)</div>
-<div class="line"><a name="l00856"></a><span class="lineno">  856</span>         indexI=-indexI;</div>
-<div class="line"><a name="l00857"></a><span class="lineno">  857</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(indexI>=tmpDSM.nCols())</div>
-<div class="line"><a name="l00858"></a><span class="lineno">  858</span>         indexI=tmpDSM.nCols()-i;</div>
-<div class="line"><a name="l00859"></a><span class="lineno">  859</span>       <span class="keywordflow">if</span>(y+j<0)</div>
-<div class="line"><a name="l00860"></a><span class="lineno">  860</span>         indexJ=-j;</div>
-<div class="line"><a name="l00861"></a><span class="lineno">  861</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(y+j>=tmpDSM.nRows())</div>
-<div class="line"><a name="l00862"></a><span class="lineno">  862</span>         indexJ=(dimY>2) ? (dimY-1)/2-j : 0;</div>
-<div class="line"><a name="l00863"></a><span class="lineno">  863</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00864"></a><span class="lineno">  864</span>         indexJ=(dimY-1)/2+j;</div>
-<div class="line"><a name="l00865"></a><span class="lineno">  865</span>       <span class="keywordtype">double</span> difference=(centerValue-inBuffer[indexJ][indexI]);</div>
-<div class="line"><a name="l00866"></a><span class="lineno">  866</span>       <span class="keywordflow">if</span>(i||j)<span class="comment">//skip centerValue</span></div>
-<div class="line"><a name="l00867"></a><span class="lineno">  867</span>         neighbors.push_back(inBuffer[indexJ][indexI]);</div>
-<div class="line"><a name="l00868"></a><span class="lineno">  868</span>       <span class="keywordflow">if</span>(difference>hThreshold)</div>
-<div class="line"><a name="l00869"></a><span class="lineno">  869</span>         ++nmasked;</div>
-<div class="line"><a name="l00870"></a><span class="lineno">  870</span>     }</div>
-<div class="line"><a name="l00871"></a><span class="lineno">  871</span>       }</div>
-<div class="line"><a name="l00872"></a><span class="lineno">  872</span>       <span class="keywordflow">if</span>(nmasked<=nlimit){</div>
-<div class="line"><a name="l00873"></a><span class="lineno">  873</span>     ++nchange;</div>
-<div class="line"><a name="l00874"></a><span class="lineno">  874</span>     <span class="comment">//reset pixel in outputMask</span></div>
-<div class="line"><a name="l00875"></a><span class="lineno">  875</span>     outputMask[y][x]=0;</div>
-<div class="line"><a name="l00876"></a><span class="lineno">  876</span>       }</div>
-<div class="line"><a name="l00877"></a><span class="lineno">  877</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00878"></a><span class="lineno">  878</span>     <span class="comment">//reset pixel height in tmpDSM</span></div>
-<div class="line"><a name="l00879"></a><span class="lineno">  879</span>     sort(neighbors.begin(),neighbors.end());</div>
-<div class="line"><a name="l00880"></a><span class="lineno">  880</span>     assert(neighbors.size()>1);</div>
-<div class="line"><a name="l00881"></a><span class="lineno">  881</span>     inBuffer[(dimY-1)/2][x]=neighbors[1];</div>
-<div class="line"><a name="l00882"></a><span class="lineno">  882</span>     <span class="comment">/* inBuffer[(dimY-1)/2][x]=stat.mymin(neighbors); */</span></div>
-<div class="line"><a name="l00883"></a><span class="lineno">  883</span>       }</div>
-<div class="line"><a name="l00884"></a><span class="lineno">  884</span>     }</div>
-<div class="line"><a name="l00885"></a><span class="lineno">  885</span>     progress=(1.0+y);</div>
-<div class="line"><a name="l00886"></a><span class="lineno">  886</span>     progress/=outputMask.nRows();</div>
-<div class="line"><a name="l00887"></a><span class="lineno">  887</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00888"></a><span class="lineno">  888</span>   }</div>
-<div class="line"><a name="l00889"></a><span class="lineno">  889</span>   <span class="keywordflow">return</span> nchange;</div>
-<div class="line"><a name="l00890"></a><span class="lineno">  890</span> }</div>
-<div class="line"><a name="l00891"></a><span class="lineno">  891</span> </div>
-<div class="line"><a name="l00892"></a><span class="lineno">  892</span>  <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> Filter2d::dsm2dtm_nesw(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T></a>& inputDSM, <a class="code" href="classVector2d.html">Vector2d<T></a>& outputMa [...]
-<div class="line"><a name="l00893"></a><span class="lineno">  893</span> {</div>
-<div class="line"><a name="l00894"></a><span class="lineno">  894</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00895"></a><span class="lineno">  895</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00896"></a><span class="lineno">  896</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00897"></a><span class="lineno">  897</span>   <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l00898"></a><span class="lineno">  898</span>   pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00899"></a><span class="lineno">  899</span> </div>
-<div class="line"><a name="l00900"></a><span class="lineno">  900</span>   <a class="code" href="classVector2d.html">Vector2d<T></a> tmpDSM(inputDSM);</div>
-<div class="line"><a name="l00901"></a><span class="lineno">  901</span>   <span class="keywordtype">double</span> noDataValue=0;</div>
-<div class="line"><a name="l00902"></a><span class="lineno">  902</span>   <span class="keywordflow">if</span>(m_noDataValues.size())</div>
-<div class="line"><a name="l00903"></a><span class="lineno">  903</span>     noDataValue=m_noDataValues[0];</div>
-<div class="line"><a name="l00904"></a><span class="lineno">  904</span> </div>
-<div class="line"><a name="l00905"></a><span class="lineno">  905</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> nchange=0;</div>
-<div class="line"><a name="l00906"></a><span class="lineno">  906</span>   <span class="keywordtype">int</span> dimX=dim;</div>
-<div class="line"><a name="l00907"></a><span class="lineno">  907</span>   <span class="keywordtype">int</span> dimY=dim;</div>
-<div class="line"><a name="l00908"></a><span class="lineno">  908</span>   assert(dimX);</div>
-<div class="line"><a name="l00909"></a><span class="lineno">  909</span>   assert(dimY);</div>
-<div class="line"><a name="l00910"></a><span class="lineno">  910</span>   <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00911"></a><span class="lineno">  911</span>   <a class="code" href="classVector2d.html">Vector2d<T></a> inBuffer(dimY,inputDSM.nCols());</div>
-<div class="line"><a name="l00912"></a><span class="lineno">  912</span>   <span class="keywordflow">if</span>(outputMask.size()!=inputDSM.nRows())</div>
-<div class="line"><a name="l00913"></a><span class="lineno">  913</span>     outputMask.resize(inputDSM.nRows());</div>
-<div class="line"><a name="l00914"></a><span class="lineno">  914</span>   <span class="keywordtype">int</span> indexI=0;</div>
-<div class="line"><a name="l00915"></a><span class="lineno">  915</span>   <span class="keywordtype">int</span> indexJ=0;</div>
-<div class="line"><a name="l00916"></a><span class="lineno">  916</span>   <span class="comment">//initialize last half of inBuffer</span></div>
-<div class="line"><a name="l00917"></a><span class="lineno">  917</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=-(dimY-1)/2;j<=dimY/2;++j){</div>
-<div class="line"><a name="l00918"></a><span class="lineno">  918</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<inputDSM.nCols();++i)</div>
-<div class="line"><a name="l00919"></a><span class="lineno">  919</span>       inBuffer[indexJ][i]=tmpDSM[abs(j)][i];</div>
-<div class="line"><a name="l00920"></a><span class="lineno">  920</span>     ++indexJ;</div>
-<div class="line"><a name="l00921"></a><span class="lineno">  921</span>   }</div>
-<div class="line"><a name="l00922"></a><span class="lineno">  922</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y=0;y<tmpDSM.nRows();++y){</div>
-<div class="line"><a name="l00923"></a><span class="lineno">  923</span>     <span class="keywordflow">if</span>(y){<span class="comment">//inBuffer already initialized for y=0</span></div>
-<div class="line"><a name="l00924"></a><span class="lineno">  924</span>       <span class="comment">//erase first line from inBuffer</span></div>
-<div class="line"><a name="l00925"></a><span class="lineno">  925</span>       inBuffer.erase(inBuffer.begin());</div>
-<div class="line"><a name="l00926"></a><span class="lineno">  926</span>       <span class="comment">//read extra line and push back to inBuffer if not out of bounds</span></div>
-<div class="line"><a name="l00927"></a><span class="lineno">  927</span>       <span class="keywordflow">if</span>(y+dimY/2<tmpDSM.nRows()){</div>
-<div class="line"><a name="l00928"></a><span class="lineno">  928</span>         <span class="comment">//allocate buffer</span></div>
-<div class="line"><a name="l00929"></a><span class="lineno">  929</span>         inBuffer.push_back(inBuffer.back());</div>
-<div class="line"><a name="l00930"></a><span class="lineno">  930</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<tmpDSM.nCols();++i)</div>
-<div class="line"><a name="l00931"></a><span class="lineno">  931</span>           inBuffer[inBuffer.size()-1][i]=tmpDSM[y+dimY/2][i];</div>
-<div class="line"><a name="l00932"></a><span class="lineno">  932</span>       }</div>
-<div class="line"><a name="l00933"></a><span class="lineno">  933</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00934"></a><span class="lineno">  934</span>         <span class="keywordtype">int</span> over=y+dimY/2-tmpDSM.nRows();</div>
-<div class="line"><a name="l00935"></a><span class="lineno">  935</span>         <span class="keywordtype">int</span> index=(inBuffer.size()-1)-over;</div>
-<div class="line"><a name="l00936"></a><span class="lineno">  936</span>         assert(index>=0);</div>
-<div class="line"><a name="l00937"></a><span class="lineno">  937</span>         assert(index<inBuffer.size());</div>
-<div class="line"><a name="l00938"></a><span class="lineno">  938</span>         inBuffer.push_back(inBuffer[index]);</div>
-<div class="line"><a name="l00939"></a><span class="lineno">  939</span>       }</div>
-<div class="line"><a name="l00940"></a><span class="lineno">  940</span>     }</div>
-<div class="line"><a name="l00941"></a><span class="lineno">  941</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x=tmpDSM.nCols()-1;x>=0;--x){</div>
-<div class="line"><a name="l00942"></a><span class="lineno">  942</span>       <span class="keywordtype">double</span> centerValue=inBuffer[(dimY-1)/2][x];</div>
-<div class="line"><a name="l00943"></a><span class="lineno">  943</span>       <span class="keywordtype">short</span> nmasked=0;</div>
-<div class="line"><a name="l00944"></a><span class="lineno">  944</span>       std::vector<T> neighbors;</div>
-<div class="line"><a name="l00945"></a><span class="lineno">  945</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=-(dimY-1)/2;j<=dimY/2;++j){</div>
-<div class="line"><a name="l00946"></a><span class="lineno">  946</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=-(dimX-1)/2;i<=dimX/2;++i){</div>
-<div class="line"><a name="l00947"></a><span class="lineno">  947</span>       indexI=x+i;</div>
-<div class="line"><a name="l00948"></a><span class="lineno">  948</span>       <span class="comment">//check if out of bounds</span></div>
-<div class="line"><a name="l00949"></a><span class="lineno">  949</span>       <span class="keywordflow">if</span>(indexI<0)</div>
-<div class="line"><a name="l00950"></a><span class="lineno">  950</span>         indexI=-indexI;</div>
-<div class="line"><a name="l00951"></a><span class="lineno">  951</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(indexI>=tmpDSM.nCols())</div>
-<div class="line"><a name="l00952"></a><span class="lineno">  952</span>         indexI=tmpDSM.nCols()-i;</div>
-<div class="line"><a name="l00953"></a><span class="lineno">  953</span>       <span class="keywordflow">if</span>(y+j<0)</div>
-<div class="line"><a name="l00954"></a><span class="lineno">  954</span>         indexJ=-j;</div>
-<div class="line"><a name="l00955"></a><span class="lineno">  955</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(y+j>=tmpDSM.nRows())</div>
-<div class="line"><a name="l00956"></a><span class="lineno">  956</span>         indexJ=(dimY>2) ? (dimY-1)/2-j : 0;</div>
-<div class="line"><a name="l00957"></a><span class="lineno">  957</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00958"></a><span class="lineno">  958</span>         indexJ=(dimY-1)/2+j;</div>
-<div class="line"><a name="l00959"></a><span class="lineno">  959</span>       <span class="keywordtype">double</span> difference=(centerValue-inBuffer[indexJ][indexI]);</div>
-<div class="line"><a name="l00960"></a><span class="lineno">  960</span>       <span class="keywordflow">if</span>(i||j)<span class="comment">//skip centerValue</span></div>
-<div class="line"><a name="l00961"></a><span class="lineno">  961</span>         neighbors.push_back(inBuffer[indexJ][indexI]);</div>
-<div class="line"><a name="l00962"></a><span class="lineno">  962</span>       <span class="keywordflow">if</span>(difference>hThreshold)</div>
-<div class="line"><a name="l00963"></a><span class="lineno">  963</span>         ++nmasked;</div>
-<div class="line"><a name="l00964"></a><span class="lineno">  964</span>     }</div>
-<div class="line"><a name="l00965"></a><span class="lineno">  965</span>       }</div>
-<div class="line"><a name="l00966"></a><span class="lineno">  966</span>       <span class="keywordflow">if</span>(nmasked<=nlimit){</div>
-<div class="line"><a name="l00967"></a><span class="lineno">  967</span>     ++nchange;</div>
-<div class="line"><a name="l00968"></a><span class="lineno">  968</span>     <span class="comment">//reset pixel in outputMask</span></div>
-<div class="line"><a name="l00969"></a><span class="lineno">  969</span>     outputMask[y][x]=0;</div>
-<div class="line"><a name="l00970"></a><span class="lineno">  970</span>       }</div>
-<div class="line"><a name="l00971"></a><span class="lineno">  971</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00972"></a><span class="lineno">  972</span>     <span class="comment">//reset pixel height in tmpDSM</span></div>
-<div class="line"><a name="l00973"></a><span class="lineno">  973</span>     sort(neighbors.begin(),neighbors.end());</div>
-<div class="line"><a name="l00974"></a><span class="lineno">  974</span>     assert(neighbors.size()>1);</div>
-<div class="line"><a name="l00975"></a><span class="lineno">  975</span>     inBuffer[(dimY-1)/2][x]=neighbors[1];</div>
-<div class="line"><a name="l00976"></a><span class="lineno">  976</span>     <span class="comment">/* inBuffer[(dimY-1)/2][x]=stat.mymin(neighbors); */</span></div>
-<div class="line"><a name="l00977"></a><span class="lineno">  977</span>       }</div>
-<div class="line"><a name="l00978"></a><span class="lineno">  978</span>     }</div>
-<div class="line"><a name="l00979"></a><span class="lineno">  979</span>     progress=(1.0+y);</div>
-<div class="line"><a name="l00980"></a><span class="lineno">  980</span>     progress/=outputMask.nRows();</div>
-<div class="line"><a name="l00981"></a><span class="lineno">  981</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00982"></a><span class="lineno">  982</span>   }</div>
-<div class="line"><a name="l00983"></a><span class="lineno">  983</span>   <span class="keywordflow">return</span> nchange;</div>
-<div class="line"><a name="l00984"></a><span class="lineno">  984</span> }</div>
-<div class="line"><a name="l00985"></a><span class="lineno">  985</span> </div>
-<div class="line"><a name="l00986"></a><span class="lineno">  986</span>  <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> Filter2d::dsm2dtm_senw(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T></a>& inputDSM, <a class="code" href="classVector2d.html">Vector2d<T></a>& outputMa [...]
-<div class="line"><a name="l00987"></a><span class="lineno">  987</span> {</div>
-<div class="line"><a name="l00988"></a><span class="lineno">  988</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00989"></a><span class="lineno">  989</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00990"></a><span class="lineno">  990</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00991"></a><span class="lineno">  991</span>   <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l00992"></a><span class="lineno">  992</span>   pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00993"></a><span class="lineno">  993</span> </div>
-<div class="line"><a name="l00994"></a><span class="lineno">  994</span>   <a class="code" href="classVector2d.html">Vector2d<T></a> tmpDSM(inputDSM);</div>
-<div class="line"><a name="l00995"></a><span class="lineno">  995</span>   <span class="keywordtype">double</span> noDataValue=0;</div>
-<div class="line"><a name="l00996"></a><span class="lineno">  996</span>   <span class="keywordflow">if</span>(m_noDataValues.size())</div>
-<div class="line"><a name="l00997"></a><span class="lineno">  997</span>     noDataValue=m_noDataValues[0];</div>
-<div class="line"><a name="l00998"></a><span class="lineno">  998</span> </div>
-<div class="line"><a name="l00999"></a><span class="lineno">  999</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> nchange=0;</div>
-<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>   <span class="keywordtype">int</span> dimX=dim;</div>
-<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>   <span class="keywordtype">int</span> dimY=dim;</div>
-<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>   assert(dimX);</div>
-<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>   assert(dimY);</div>
-<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>   <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>   <a class="code" href="classVector2d.html">Vector2d<T></a> inBuffer(dimY,inputDSM.nCols());</div>
-<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>   <span class="keywordflow">if</span>(outputMask.size()!=inputDSM.nRows())</div>
-<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>     outputMask.resize(inputDSM.nRows());</div>
-<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>   <span class="keywordtype">int</span> indexI=0;</div>
-<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>   <span class="keywordtype">int</span> indexJ=inputDSM.nRows()-1;</div>
-<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>   <span class="comment">//initialize first half of inBuffer</span></div>
-<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=inputDSM.nRows()-dimY/2;j<inputDSM.nRows();--j){</div>
-<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<inputDSM.nCols();++i)</div>
-<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>       inBuffer[indexJ][i]=tmpDSM[abs(j)][i];</div>
-<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>     ++indexJ;</div>
-<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>   }</div>
-<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y=tmpDSM.nRows()-1;y>=0;--y){</div>
-<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>     <span class="keywordflow">if</span>(y<tmpDSM.nRows()-1){<span class="comment">//inBuffer already initialized for y=tmpDSM.nRows()-1</span></div>
-<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>       <span class="comment">//erase last line from inBuffer</span></div>
-<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>       inBuffer.erase(inBuffer.end()-1);</div>
-<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>       <span class="comment">//read extra line and insert to inBuffer if not out of bounds</span></div>
-<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>       <span class="keywordflow">if</span>(y-dimY/2>0){</div>
-<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>         <span class="comment">//allocate buffer</span></div>
-<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>         inBuffer.insert(inBuffer.begin(),inBuffer.back());</div>
-<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<tmpDSM.nCols();++i)</div>
-<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>           inBuffer[0][i]=tmpDSM[y-dimY/2][i];</div>
-<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>       }</div>
-<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>         inBuffer.insert(inBuffer.begin(),inBuffer[abs(y-dimY/2)]);</div>
-<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>       }</div>
-<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>     }</div>
-<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x=tmpDSM.nCols()-1;x>=0;--x){</div>
-<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>       <span class="keywordtype">double</span> centerValue=inBuffer[(dimY-1)/2][x];</div>
-<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>       <span class="keywordtype">short</span> nmasked=0;</div>
-<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>       std::vector<T> neighbors;</div>
-<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=-(dimY-1)/2;j<=dimY/2;++j){</div>
-<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=-(dimX-1)/2;i<=dimX/2;++i){</div>
-<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>       indexI=x+i;</div>
-<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>       <span class="comment">//check if out of bounds</span></div>
-<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>       <span class="keywordflow">if</span>(indexI<0)</div>
-<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>         indexI=-indexI;</div>
-<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(indexI>=tmpDSM.nCols())</div>
-<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>         indexI=tmpDSM.nCols()-i;</div>
-<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>       <span class="keywordflow">if</span>(y+j<0)</div>
-<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>         indexJ=-j;</div>
-<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(y+j>=tmpDSM.nRows())</div>
-<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>         indexJ=(dimY>2) ? (dimY-1)/2-j : 0;</div>
-<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>         indexJ=(dimY-1)/2+j;</div>
-<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>       <span class="keywordtype">double</span> difference=(centerValue-inBuffer[indexJ][indexI]);</div>
-<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>       <span class="keywordflow">if</span>(i||j)<span class="comment">//skip centerValue</span></div>
-<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>         neighbors.push_back(inBuffer[indexJ][indexI]);</div>
-<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>       <span class="keywordflow">if</span>(difference>hThreshold)</div>
-<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>         ++nmasked;</div>
-<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>     }</div>
-<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>       }</div>
-<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>       <span class="keywordflow">if</span>(nmasked<=nlimit){</div>
-<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>     ++nchange;</div>
-<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>     <span class="comment">//reset pixel in outputMask</span></div>
-<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>     outputMask[y][x]=0;</div>
-<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>       }</div>
-<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>     <span class="comment">//reset pixel height in tmpDSM</span></div>
-<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>     sort(neighbors.begin(),neighbors.end());</div>
-<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>     assert(neighbors.size()>1);</div>
-<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>     inBuffer[(dimY-1)/2][x]=neighbors[1];</div>
-<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>     <span class="comment">/* inBuffer[(dimY-1)/2][x]=stat.mymin(neighbors); */</span></div>
-<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>       }</div>
-<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>     }</div>
-<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>     progress=(1.0+y);</div>
-<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>     progress/=outputMask.nRows();</div>
-<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>   }</div>
-<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>   <span class="keywordflow">return</span> nchange;</div>
-<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span> }</div>
-<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span> </div>
-<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>  <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> Filter2d::dsm2dtm_swne(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T></a>& inputDSM, <a class="code" href="classVector2d.html">Vector2d<T></a>& outputMa [...]
-<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span> {</div>
-<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>   <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>   pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span> </div>
-<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>   <a class="code" href="classVector2d.html">Vector2d<T></a> tmpDSM(inputDSM);</div>
-<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>   <span class="keywordtype">double</span> noDataValue=0;</div>
-<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>   <span class="keywordflow">if</span>(m_noDataValues.size())</div>
-<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>     noDataValue=m_noDataValues[0];</div>
-<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span> </div>
-<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> nchange=0;</div>
-<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>   <span class="keywordtype">int</span> dimX=dim;</div>
-<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>   <span class="keywordtype">int</span> dimY=dim;</div>
-<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>   assert(dimX);</div>
-<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>   assert(dimY);</div>
-<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>   <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>   <a class="code" href="classVector2d.html">Vector2d<T></a> inBuffer(dimY,inputDSM.nCols());</div>
-<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>   <span class="keywordflow">if</span>(outputMask.size()!=inputDSM.nRows())</div>
-<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>     outputMask.resize(inputDSM.nRows());</div>
-<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>   <span class="keywordtype">int</span> indexI=0;</div>
-<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>   <span class="keywordtype">int</span> indexJ=0;</div>
-<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>   <span class="comment">//initialize first half of inBuffer</span></div>
-<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=inputDSM.nRows()-dimY/2;j<inputDSM.nRows();--j){</div>
-<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<inputDSM.nCols();++i)</div>
-<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>       inBuffer[indexJ][i]=tmpDSM[abs(j)][i];</div>
-<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>     ++indexJ;</div>
-<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>   }</div>
-<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y=tmpDSM.nRows()-1;y>=0;--y){</div>
-<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>     <span class="keywordflow">if</span>(y<tmpDSM.nRows()-1){<span class="comment">//inBuffer already initialized for y=0</span></div>
-<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>       <span class="comment">//erase last line from inBuffer</span></div>
-<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>       inBuffer.erase(inBuffer.end()-1);</div>
-<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>       <span class="comment">//read extra line and insert to inBuffer if not out of bounds</span></div>
-<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>       <span class="keywordflow">if</span>(y-dimY/2>0){</div>
-<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>         <span class="comment">//allocate buffer</span></div>
-<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>         inBuffer.insert(inBuffer.begin(),inBuffer.back());</div>
-<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<tmpDSM.nCols();++i)</div>
-<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>           inBuffer[0][i]=tmpDSM[y-dimY/2][i];</div>
-<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>       }</div>
-<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>         inBuffer.insert(inBuffer.begin(),inBuffer[abs(y-dimY/2)]);</div>
-<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>       }</div>
-<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>     }</div>
-<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x=0;x<tmpDSM.nCols();++x){</div>
-<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>       <span class="keywordtype">double</span> centerValue=inBuffer[(dimY-1)/2][x];</div>
-<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>       <span class="keywordtype">short</span> nmasked=0;</div>
-<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>       std::vector<T> neighbors;</div>
-<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=-(dimY-1)/2;j<=dimY/2;++j){</div>
-<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=-(dimX-1)/2;i<=dimX/2;++i){</div>
-<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>       indexI=x+i;</div>
-<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>       <span class="comment">//check if out of bounds</span></div>
-<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>       <span class="keywordflow">if</span>(indexI<0)</div>
-<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>         indexI=-indexI;</div>
-<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(indexI>=tmpDSM.nCols())</div>
-<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>         indexI=tmpDSM.nCols()-i;</div>
-<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>       <span class="keywordflow">if</span>(y+j<0)</div>
-<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>         indexJ=-j;</div>
-<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(y+j>=tmpDSM.nRows())</div>
-<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>         indexJ=(dimY>2) ? (dimY-1)/2-j : 0;</div>
-<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>         indexJ=(dimY-1)/2+j;</div>
-<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>       <span class="keywordtype">double</span> difference=(centerValue-inBuffer[indexJ][indexI]);</div>
-<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>       <span class="keywordflow">if</span>(i||j)<span class="comment">//skip centerValue</span></div>
-<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>         neighbors.push_back(inBuffer[indexJ][indexI]);</div>
-<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>       <span class="keywordflow">if</span>(difference>hThreshold)</div>
-<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>         ++nmasked;</div>
-<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>     }</div>
-<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>       }</div>
-<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>       <span class="keywordflow">if</span>(nmasked<=nlimit){</div>
-<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>     ++nchange;</div>
-<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>     <span class="comment">//reset pixel in outputMask</span></div>
-<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>     outputMask[y][x]=0;</div>
-<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>       }</div>
-<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>     <span class="comment">//reset pixel height in tmpDSM</span></div>
-<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>     sort(neighbors.begin(),neighbors.end());</div>
-<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>     assert(neighbors.size()>1);</div>
-<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>     inBuffer[(dimY-1)/2][x]=neighbors[1];</div>
-<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>     <span class="comment">/* inBuffer[(dimY-1)/2][x]=stat.mymin(neighbors); */</span></div>
-<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>       }</div>
-<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>     }</div>
-<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>     progress=(1.0+y);</div>
-<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>     progress/=outputMask.nRows();</div>
-<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>   }</div>
-<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>   <span class="keywordflow">return</span> nchange;</div>
-<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span> }</div>
-<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span> </div>
-<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> Filter2d::shadowDsm(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T></a>& input, <a class="code" href="classVector2d.html">Vector2d<T></a>& output, <span class="keywordtype">double</span> sza, <span class="keywordtype">double</span> [...]
-<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span> {</div>
-<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ncols=input.nCols();</div>
-<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>   output.clear();</div>
-<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>   output.resize(input.nRows(),ncols);</div>
-<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>   <span class="comment">//do we need to initialize output?</span></div>
-<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>   <span class="comment">// for(int y=0;y<output.nRows();++y)</span></div>
-<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>   <span class="comment">//   for(int x=0;x<output.nCols();++x)</span></div>
-<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>   <span class="comment">//     output[y][x]=0;</span></div>
-<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>   <span class="keywordtype">int</span> indexI=0;</div>
-<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>   <span class="keywordtype">int</span> indexJ=0;</div>
-<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>   <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>   pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y=0;y<input.nRows();++y){</div>
-<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x=0;x<input.nCols();++x){</div>
-<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>       <span class="keywordtype">double</span> currentValue=input[y][x];</div>
-<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>       <span class="keywordtype">int</span> theDist=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(sqrt((currentValue*tan(DEG2RAD(sza))/pixelSize)*(currentValue*tan(DEG2RAD(sza))/pixelSize)));<span class="comment">//in pixels</span></div>
-<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>       <span class="keywordtype">double</span> theDir=DEG2RAD(saa)+PI/2.0;</div>
-<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>       <span class="keywordflow">if</span>(theDir<0)</div>
-<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>         theDir+=2*PI;</div>
-<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> d=0;d<theDist;++d){<span class="comment">//d in pixels</span></div>
-<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>         indexI=x+d*cos(theDir);<span class="comment">//in pixels</span></div>
-<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>         indexJ=y+d*sin(theDir);<span class="comment">//in pixels</span></div>
-<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>         <span class="keywordflow">if</span>(indexJ<0||indexJ>=input.size())</div>
-<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>           <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>         <span class="keywordflow">if</span>(indexI<0||indexI>=input[indexJ].size())</div>
-<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>           <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>         <span class="keywordflow">if</span>(input[indexJ][indexI]<currentValue-d*pixelSize/tan(DEG2RAD(sza))){<span class="comment">//in m</span></div>
-<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>           output[indexJ][indexI]=shadowFlag;</div>
-<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>         }</div>
-<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>       }</div>
-<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>     }</div>
-<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>     progress=(1.0+y);</div>
-<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>     progress/=output.nRows();</div>
-<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>   }</div>
-<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span> }</div>
-<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span> </div>
-<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> Filter2d::dwtForward(<a class="code" href="classVector2d.html">Vector2d<T></a>& theBuffer, <span class="keyword">const</span> std::string& wavelet_type, <span class="keywordtype">int</span> family){</div>
-<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>   <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>   pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span> </div>
-<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>   <span class="keywordtype">int</span> nRow=theBuffer.size();</div>
-<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>   assert(nRow);</div>
-<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>   <span class="keywordtype">int</span> nCol=theBuffer[0].size();</div>
-<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>   assert(nCol);</div>
-<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>   <span class="comment">//make sure data size if power of 2</span></div>
-<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>   <span class="keywordflow">while</span>(theBuffer.size()&(theBuffer.size()-1))</div>
-<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>     theBuffer.push_back(theBuffer.back());</div>
-<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<theBuffer.size();++irow)</div>
-<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>     <span class="keywordflow">while</span>(theBuffer[irow].size()&(theBuffer[irow].size()-1))</div>
-<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>       theBuffer[irow].push_back(theBuffer[irow].back());</div>
-<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>   std::vector<double> vdata(theBuffer.size()*theBuffer[0].size());</div>
-<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>   <span class="keywordtype">double</span>* data=&(vdata[0]);</div>
-<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<theBuffer.size();++irow){</div>
-<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<theBuffer[0].size();++icol){</div>
-<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>       <span class="keywordtype">int</span> index=irow*theBuffer[0].size()+icol;</div>
-<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>       data[index]=theBuffer[irow][icol];</div>
-<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>     }</div>
-<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>   }</div>
-<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>   <span class="keywordtype">int</span> nsize=theBuffer.size()*theBuffer[0].size();</div>
-<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>   gsl_wavelet *w;</div>
-<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>   gsl_wavelet_workspace *work;</div>
-<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>   assert(nsize);</div>
-<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>   w=gsl_wavelet_alloc(filter::Filter::getWaveletType(wavelet_type),family);</div>
-<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>   work=gsl_wavelet_workspace_alloc(nsize);</div>
-<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>   gsl_wavelet2d_nstransform_forward (w, data, theBuffer.size(), theBuffer.size(),theBuffer[0].size(), work);</div>
-<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>   theBuffer.erase(theBuffer.begin()+nRow,theBuffer.end());</div>
-<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<theBuffer.size();++irow){</div>
-<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>     theBuffer[irow].erase(theBuffer[irow].begin()+nCol,theBuffer[irow].end());</div>
-<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<theBuffer[irow].size();++icol){</div>
-<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>       <span class="keywordtype">int</span> index=irow*theBuffer[irow].size()+icol;</div>
-<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>       theBuffer[irow][icol]=data[index];</div>
-<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>     }</div>
-<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>     progress=(1.0+irow);</div>
-<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>     progress/=theBuffer.nRows();</div>
-<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>   }</div>
-<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>   gsl_wavelet_free (w);</div>
-<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>   gsl_wavelet_workspace_free (work);</div>
-<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span> }</div>
-<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span> </div>
-<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> Filter2d::dwtInverse(<a class="code" href="classVector2d.html">Vector2d<T></a>& theBuffer, <span class="keyword">const</span> std::string& wavelet_type, <span class="keywordtype">int</span> family){</div>
-<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>   <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>   pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span> </div>
-<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>   <span class="keywordtype">int</span> nRow=theBuffer.size();</div>
-<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>   assert(nRow);</div>
-<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>   <span class="keywordtype">int</span> nCol=theBuffer[0].size();</div>
-<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>   assert(nCol);</div>
-<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>   <span class="comment">//make sure data size if power of 2</span></div>
-<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>   <span class="keywordflow">while</span>(theBuffer.size()&(theBuffer.size()-1))</div>
-<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>     theBuffer.push_back(theBuffer.back());</div>
-<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<theBuffer.size();++irow)</div>
-<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>     <span class="keywordflow">while</span>(theBuffer[irow].size()&(theBuffer[irow].size()-1))</div>
-<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>       theBuffer[irow].push_back(theBuffer[irow].back());</div>
-<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>   std::vector<double> vdata(theBuffer.size()*theBuffer[0].size());</div>
-<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>   <span class="keywordtype">double</span>* data=&(vdata[0]);</div>
-<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>   <span class="comment">//double data[theBuffer.size()*theBuffer[0].size()];</span></div>
-<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<theBuffer.size();++irow){</div>
-<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<theBuffer[0].size();++icol){</div>
-<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>       <span class="keywordtype">int</span> index=irow*theBuffer[0].size()+icol;</div>
-<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>       data[index]=theBuffer[irow][icol];</div>
-<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>     }</div>
-<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>   }</div>
-<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>   <span class="keywordtype">int</span> nsize=theBuffer.size()*theBuffer[0].size();</div>
-<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>   gsl_wavelet *w;</div>
-<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>   gsl_wavelet_workspace *work;</div>
-<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>   assert(nsize);</div>
-<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>   w=gsl_wavelet_alloc(filter::Filter::getWaveletType(wavelet_type),family);</div>
-<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>   work=gsl_wavelet_workspace_alloc(nsize);</div>
-<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>   gsl_wavelet2d_nstransform_inverse (w, data, theBuffer.size(), theBuffer.size(),theBuffer[0].size(), work);</div>
-<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>   theBuffer.erase(theBuffer.begin()+nRow,theBuffer.end());</div>
-<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<theBuffer.size();++irow){</div>
-<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>     theBuffer[irow].erase(theBuffer[irow].begin()+nCol,theBuffer[irow].end());</div>
-<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<theBuffer[irow].size();++icol){</div>
-<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>       <span class="keywordtype">int</span> index=irow*theBuffer[irow].size()+icol;</div>
-<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>       theBuffer[irow][icol]=data[index];</div>
-<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>     }</div>
-<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>     progress=(1.0+irow);</div>
-<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>     progress/=theBuffer.nRows();</div>
-<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>   }</div>
-<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>   gsl_wavelet_free (w);</div>
-<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>   gsl_wavelet_workspace_free (work);</div>
-<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span> }</div>
-<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span> </div>
-<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> Filter2d::dwtCut(<a class="code" href="classVector2d.html">Vector2d<T></a>& theBuffer, <span class="keyword">const</span> std::string& wavelet_type, <span class="keywordtype">int</span> family, <span class="keywordtype">double</span> cut){</div>
-<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>   <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>   pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span> </div>
-<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>   <span class="keywordtype">int</span> nRow=theBuffer.size();</div>
-<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>   assert(nRow);</div>
-<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>   <span class="keywordtype">int</span> nCol=theBuffer[0].size();</div>
-<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>   assert(nCol);</div>
-<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>   <span class="comment">//make sure data size if power of 2</span></div>
-<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>   <span class="keywordflow">while</span>(theBuffer.size()&(theBuffer.size()-1))</div>
-<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>     theBuffer.push_back(theBuffer.back());</div>
-<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<theBuffer.size();++irow)</div>
-<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>     <span class="keywordflow">while</span>(theBuffer[irow].size()&(theBuffer[irow].size()-1))</div>
-<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>       theBuffer[irow].push_back(theBuffer[irow].back());</div>
-<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>   <span class="keywordtype">double</span>* data=<span class="keyword">new</span> <span class="keywordtype">double</span>[theBuffer.size()*theBuffer[0].size()];</div>
-<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>   <span class="keywordtype">double</span>* abscoeff=<span class="keyword">new</span> <span class="keywordtype">double</span>[theBuffer.size()*theBuffer[0].size()];</div>
-<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>   <span class="keywordtype">size_t</span>* p=<span class="keyword">new</span> <span class="keywordtype">size_t</span>[theBuffer.size()*theBuffer[0].size()];</div>
-<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<theBuffer.size();++irow){</div>
-<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<theBuffer[0].size();++icol){</div>
-<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>       <span class="keywordtype">int</span> index=irow*theBuffer[0].size()+icol;</div>
-<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>       assert(index<theBuffer.size()*theBuffer[0].size());</div>
-<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>       data[index]=theBuffer[irow][icol];</div>
-<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>     }</div>
-<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>   }</div>
-<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>   <span class="keywordtype">int</span> nsize=theBuffer.size()*theBuffer[0].size();</div>
-<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>   gsl_wavelet *w;</div>
-<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>   gsl_wavelet_workspace *work;</div>
-<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>   assert(nsize);</div>
-<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>   w=gsl_wavelet_alloc(filter::Filter::getWaveletType(wavelet_type),family);</div>
-<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>   work=gsl_wavelet_workspace_alloc(nsize);</div>
-<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>   gsl_wavelet2d_nstransform_forward (w, data, theBuffer.size(), theBuffer[0].size(),theBuffer[0].size(), work);</div>
-<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<theBuffer.size();++irow){</div>
-<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<theBuffer[0].size();++icol){</div>
-<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>       <span class="keywordtype">int</span> index=irow*theBuffer[0].size()+icol;</div>
-<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>       abscoeff[index]=fabs(data[index]);</div>
-<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>     }</div>
-<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>   }</div>
-<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>   <span class="keywordtype">int</span> nc=(100-cut)/100.0*nsize;</div>
-<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>   gsl_sort_index(p,abscoeff,1,nsize);</div>
-<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;(i+nc)<nsize;i++)</div>
-<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>    data[p[i]]=0;</div>
-<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>   gsl_wavelet2d_nstransform_inverse (w, data, theBuffer.size(), theBuffer[0].size(),theBuffer[0].size(), work);</div>
-<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<theBuffer.size();++irow){</div>
-<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<theBuffer[irow].size();++icol){</div>
-<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>       <span class="keywordtype">int</span> index=irow*theBuffer[irow].size()+icol;</div>
-<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>       theBuffer[irow][icol]=data[index];</div>
-<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>     }</div>
-<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>     progress=(1.0+irow);</div>
-<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>     progress/=theBuffer.nRows();</div>
-<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>   }</div>
-<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>   theBuffer.erase(theBuffer.begin()+nRow,theBuffer.end());</div>
-<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<theBuffer.size();++irow)</div>
-<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>     theBuffer[irow].erase(theBuffer[irow].begin()+nCol,theBuffer[irow].end());</div>
-<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>   <span class="keyword">delete</span>[] data;</div>
-<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>   <span class="keyword">delete</span>[] abscoeff;</div>
-<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>   <span class="keyword">delete</span>[] p;</div>
-<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>   gsl_wavelet_free (w);</div>
-<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>   gsl_wavelet_workspace_free (work);</div>
-<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span> </div>
-<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span> }</div>
-<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span> </div>
-<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span> }</div>
-<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span> </div>
-<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span> <span class="preprocessor">#endif </span><span class="comment">/* _MYFILTER_H_ */</span><span class="preprocessor"></span></div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-<div class="ttc" id="classImgWriterGdal_html"><div class="ttname"><a href="classImgWriterGdal.html">ImgWriterGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgWriterGdal_8h_source.html#l00033">ImgWriterGdal.h:33</a></div></div>
-<div class="ttc" id="classfilter2d_1_1Filter2d_html"><div class="ttname"><a href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></div><div class="ttdef"><b>Definition:</b> <a href="Filter2d_8h_source.html#l00065">Filter2d.h:65</a></div></div>
-<div class="ttc" id="classVector2d_html"><div class="ttname"><a href="classVector2d.html">Vector2d< double ></a></div></div>
-<div class="ttc" id="classstatfactory_1_1StatFactory_html"><div class="ttname"><a href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></div><div class="ttdef"><b>Definition:</b> <a href="StatFactory_8h_source.html#l00043">StatFactory.h:43</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/Filter_8cc_source.html b/doc/html/Filter_8cc_source.html
deleted file mode 100644
index 9c53e6a..0000000
--- a/doc/html/Filter_8cc_source.html
+++ /dev/null
@@ -1,862 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/algorithms/Filter.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_e6df591b0639d4c4807ef64d058833e2.html">algorithms</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">Filter.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">Filter.cc: class for filtering</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2012 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "Filter.h"</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <assert.h></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <math.h></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <iostream></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> </div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> </div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> filter::Filter::Filter(<span class="keywordtype">void</span>)</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span>   : m_padding(<span class="stringliteral">"symmetric"</span>)</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> {</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> }</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> </div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> </div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> filter::Filter::Filter(<span class="keyword">const</span> vector<double> &taps)</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>   : m_padding(<span class="stringliteral">"symmetric"</span>)</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> {</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   setTaps(taps);</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> }</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="keywordtype">void</span> filter::Filter::setTaps(<span class="keyword">const</span> vector<double> &taps, <span class="keywordtype">bool</span> normalize)</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> {</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>   m_taps.resize(taps.size());</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   <span class="keywordtype">double</span> norm=0;</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> itap=0;itap<taps.size();++itap)</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     norm+=taps[itap];</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   <span class="keywordflow">if</span>(norm){</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> itap=0;itap<taps.size();++itap)</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>       m_taps[itap]=taps[itap]/norm;</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>   }</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     m_taps=taps;</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>   assert(m_taps.size()%2);</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span> }</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span> </div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> filter::Filter::pushNoDataValue(<span class="keywordtype">double</span> noDataValue){</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>   <span class="keywordflow">if</span>(find(m_noDataValues.begin(),m_noDataValues.end(),noDataValue)==m_noDataValues.end())</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     m_noDataValues.push_back(noDataValue);</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>   <span class="keywordflow">return</span> m_noDataValues.size();</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span> };</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span> </div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> filter::Filter::setNoDataValues(std::vector<double> vnodata){</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>   m_noDataValues=vnodata;</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>   <span class="keywordflow">return</span> m_noDataValues.size();</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span> };</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span> </div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span> <span class="keywordtype">void</span> filter::Filter::dwtForward(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keyword">const</span> std::string& wavelet_type, <span class="keywordtype">int</span> family){</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>   <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>   pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> lineInput(input.nrOfBand(),input.nrOfCol());</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> lineOutput(input.nrOfBand(),input.nrOfCol());</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y=0;y<input.nrOfRow();++y){</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input.nrOfBand();++iband)</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>       input.readData(lineInput[iband],GDT_Float64,y,iband);</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>     vector<double> pixelInput(input.nrOfBand());</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x=0;x<input.nrOfCol();++x){</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>       pixelInput=lineInput.selectCol(x);</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>       dwtForward(pixelInput,wavelet_type,family);</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input.nrOfBand();++iband)</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>         lineOutput[iband][x]=pixelInput[iband];</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     }</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input.nrOfBand();++iband){</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>         output.writeData(lineOutput[iband],GDT_Float64,y,iband);</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>       }</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>         cerr << errorstring << <span class="stringliteral">"in band "</span> << iband << <span class="stringliteral">", line "</span> << y << endl;</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>       }</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     }</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     progress=(1.0+y)/output.nrOfRow();</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>   }</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span> }</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span> </div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span> <span class="keywordtype">void</span> filter::Filter::dwtInverse(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keyword">const</span> std::string& wavelet_type, <span class="keywordtype">int</span> family){</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>   <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>   pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> lineInput(input.nrOfBand(),input.nrOfCol());</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> lineOutput(input.nrOfBand(),input.nrOfCol());</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y=0;y<input.nrOfRow();++y){</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input.nrOfBand();++iband)</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>       input.readData(lineInput[iband],GDT_Float64,y,iband);</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     vector<double> pixelInput(input.nrOfBand());</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x=0;x<input.nrOfCol();++x){</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>       pixelInput=lineInput.selectCol(x);</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>       dwtInverse(pixelInput,wavelet_type,family);</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input.nrOfBand();++iband)</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>         lineOutput[iband][x]=pixelInput[iband];</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     }</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input.nrOfBand();++iband){</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>         output.writeData(lineOutput[iband],GDT_Float64,y,iband);</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>       }</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>         cerr << errorstring << <span class="stringliteral">"in band "</span> << iband << <span class="stringliteral">", line "</span> << y << endl;</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>       }</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>     }</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>     progress=(1.0+y)/output.nrOfRow();</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>   }</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span> }</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span> </div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span> <span class="keywordtype">void</span> filter::Filter::dwtCut(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keyword">const</span> std::string& wavelet_type, <span class="keywordtype">int</span> family, <span class="keywordtype">double</span> cut){</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>   <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>   pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> lineInput(input.nrOfBand(),input.nrOfCol());</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> lineOutput(input.nrOfBand(),input.nrOfCol());</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y=0;y<input.nrOfRow();++y){</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input.nrOfBand();++iband)</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>       input.readData(lineInput[iband],GDT_Float64,y,iband);</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>     vector<double> pixelInput(input.nrOfBand());</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x=0;x<input.nrOfCol();++x){</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>       pixelInput=lineInput.selectCol(x);</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>       dwtCut(pixelInput,wavelet_type,family,cut);</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input.nrOfBand();++iband)</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>         lineOutput[iband][x]=pixelInput[iband];</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>     }</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input.nrOfBand();++iband){</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>         output.writeData(lineOutput[iband],GDT_Float64,y,iband);</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>       }</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>         cerr << errorstring << <span class="stringliteral">"in band "</span> << iband << <span class="stringliteral">", line "</span> << y << endl;</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>       }</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>     }</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>     progress=(1.0+y)/output.nrOfRow();</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>   }</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span> }</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span> </div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span> <span class="keywordtype">void</span> filter::Filter::dwtCutFrom(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keyword">const</span> std::string& wavelet_type, <span class="keywordtype">int</span> family, <span class="keywordtype">int</span> band){</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>   <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>   pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> lineInput(input.nrOfBand(),input.nrOfCol());</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> lineOutput(input.nrOfBand(),input.nrOfCol());</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y=0;y<input.nrOfRow();++y){</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input.nrOfBand();++iband)</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>       input.readData(lineInput[iband],GDT_Float64,y,iband);</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>     vector<double> pixelInput(input.nrOfBand());</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x=0;x<input.nrOfCol();++x){</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>       pixelInput=lineInput.selectCol(x);</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>       dwtForward(pixelInput,wavelet_type,family);</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input.nrOfBand();++iband){</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>     <span class="keywordflow">if</span>(iband>=band)</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>       pixelInput[iband]=0;</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>       }</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>       dwtInverse(pixelInput,wavelet_type,family);</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input.nrOfBand();++iband)</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>     lineOutput[iband][x]=pixelInput[iband];</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>     }</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input.nrOfBand();++iband){</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>         output.writeData(lineOutput[iband],GDT_Float64,y,iband);</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>       }</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>         cerr << errorstring << <span class="stringliteral">"in band "</span> << iband << <span class="stringliteral">", line "</span> << y << endl;</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>       }</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>     }</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>     progress=(1.0+y)/output.nrOfRow();</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>   }</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span> }</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span> </div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span> <span class="comment">//todo: support different padding strategies</span></div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span> <span class="keywordtype">void</span> filter::Filter::dwtForward(std::vector<double>& data, <span class="keyword">const</span> std::string& wavelet_type, <span class="keywordtype">int</span> family){</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>   <span class="keywordtype">int</span> origsize=data.size();</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>   <span class="comment">//make sure data size if power of 2</span></div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>   <span class="keywordflow">while</span>(data.size()&(data.size()-1))</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>     data.push_back(data.back());</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>       </div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>   <span class="keywordtype">int</span> nsize=data.size();</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>   gsl_wavelet *w;</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>   gsl_wavelet_workspace *work;</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>   assert(nsize);</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>   w=gsl_wavelet_alloc(getWaveletType(wavelet_type),family);</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>   work=gsl_wavelet_workspace_alloc(nsize);</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>   gsl_wavelet_transform_forward(w,&(data[0]),1,nsize,work);</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>   data.erase(data.begin()+origsize,data.end());</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>   gsl_wavelet_free (w);</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>   gsl_wavelet_workspace_free (work);</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span> }</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span> </div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span> <span class="comment">//todo: support different padding strategies</span></div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span> <span class="keywordtype">void</span> filter::Filter::dwtInverse(std::vector<double>& data, <span class="keyword">const</span> std::string& wavelet_type, <span class="keywordtype">int</span> family){</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>   <span class="keywordtype">int</span> origsize=data.size();</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>   <span class="comment">//make sure data size if power of 2</span></div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>   <span class="keywordflow">while</span>(data.size()&(data.size()-1))</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>     data.push_back(data.back());</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>   <span class="keywordtype">int</span> nsize=data.size();</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>   gsl_wavelet *w;</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>   gsl_wavelet_workspace *work;</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>   assert(nsize);</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>   w=gsl_wavelet_alloc(getWaveletType(wavelet_type),family);</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>   work=gsl_wavelet_workspace_alloc(nsize);</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>   gsl_wavelet_transform_inverse(w,&(data[0]),1,nsize,work);</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>   data.erase(data.begin()+origsize,data.end());</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>   gsl_wavelet_free (w);</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>   gsl_wavelet_workspace_free (work);</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span> }</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span> </div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span> <span class="comment">//todo: support different padding strategies</span></div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span> <span class="keywordtype">void</span> filter::Filter::dwtCut(std::vector<double>& data, <span class="keyword">const</span> std::string& wavelet_type, <span class="keywordtype">int</span> family, <span class="keywordtype">double</span> cut){</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>   <span class="keywordtype">int</span> origsize=data.size();</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>   <span class="comment">//make sure data size if power of 2</span></div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>   <span class="keywordflow">while</span>(data.size()&(data.size()-1))</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>     data.push_back(data.back());</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>   <span class="keywordtype">int</span> nsize=data.size();</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>   gsl_wavelet *w;</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>   gsl_wavelet_workspace *work;</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>   assert(nsize);</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>   w=gsl_wavelet_alloc(getWaveletType(wavelet_type),family);</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>   work=gsl_wavelet_workspace_alloc(nsize);</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>   gsl_wavelet_transform_forward(w,&(data[0]),1,nsize,work);</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>   std::vector<double> abscoeff(data.size());</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>   <span class="keywordtype">size_t</span>* p=<span class="keyword">new</span> <span class="keywordtype">size_t</span>[data.size()];</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> index=0;index<data.size();++index){</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>     abscoeff[index]=fabs(data[index]);</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>   }</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>   <span class="keywordtype">int</span> nc=(100-cut)/100.0*nsize;</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>   gsl_sort_index(p,&(abscoeff[0]),1,nsize);</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;(i+nc)<nsize;i++)</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>     data[p[i]]=0;</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>   gsl_wavelet_transform_inverse(w,&(data[0]),1,nsize,work);</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>   data.erase(data.begin()+origsize,data.end());</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>   <span class="keyword">delete</span>[] p;</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>   gsl_wavelet_free (w);</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>   gsl_wavelet_workspace_free (work);</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span> }</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span> </div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span> <span class="keywordtype">void</span> filter::Filter::morphology(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keyword">const</span> std::string& method, <span class="keywordtype">int</span> dim, <span class="keywordtype">short</span> verbose)</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span> {</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>   <span class="comment">// bool bverbose=(verbose>1)? true:false;</span></div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> lineInput(input.nrOfBand(),input.nrOfCol());</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> lineOutput(input.nrOfBand(),input.nrOfCol());</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>   <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>   pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y=0;y<input.nrOfRow();++y){</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input.nrOfBand();++iband)</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>       input.readData(lineInput[iband],GDT_Float64,y,iband);</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>     vector<double> pixelInput(input.nrOfBand());</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>     vector<double> pixelOutput(input.nrOfBand());</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x=0;x<input.nrOfCol();++x){</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>       pixelInput=lineInput.selectCol(x);</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>       filter(pixelInput,pixelOutput,method,dim);</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>       <span class="comment">// morphology(pixelInput,pixelOutput,method,dim,bverbose);</span></div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input.nrOfBand();++iband)</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>         lineOutput[iband][x]=pixelOutput[iband];</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>     }</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input.nrOfBand();++iband){</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>         output.writeData(lineOutput[iband],GDT_Float64,y,iband);</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>       }</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>         cerr << errorstring << <span class="stringliteral">"in band "</span> << iband << <span class="stringliteral">", line "</span> << y << endl;</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>       }</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>     }</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>     progress=(1.0+y)/output.nrOfRow();</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>   }</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span> }</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span> </div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span> <span class="keywordtype">void</span> filter::Filter::smoothNoData(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <span class="keyword">const</span> std::string& interpolationType, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output)</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span> {</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> lineInput(input.nrOfBand(),input.nrOfCol());</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> lineOutput(input.nrOfBand(),input.nrOfCol());</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>   <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>   pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y=0;y<input.nrOfRow();++y){</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input.nrOfBand();++iband)</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>       input.readData(lineInput[iband],GDT_Float64,y,iband);</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>     vector<double> pixelInput(input.nrOfBand());</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>     vector<double> pixelOutput(input.nrOfBand());</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x=0;x<input.nrOfCol();++x){</div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>       pixelInput=lineInput.selectCol(x);</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>       smoothNoData(pixelInput,interpolationType,pixelOutput);</div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input.nrOfBand();++iband)</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>         lineOutput[iband][x]=pixelOutput[iband];</div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>     }</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input.nrOfBand();++iband){</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>         output.writeData(lineOutput[iband],GDT_Float64,y,iband);</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>       }</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>         cerr << errorstring << <span class="stringliteral">"in band "</span> << iband << <span class="stringliteral">", line "</span> << y << endl;</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>       }</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>     }</div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>     progress=(1.0+y)/output.nrOfRow();</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>   }</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span> }</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span> </div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span> <span class="keywordtype">void</span> filter::Filter::smooth(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keywordtype">short</span> dim)</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span> {</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>   assert(dim>0);</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>   m_taps.resize(dim);</div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> itap=0;itap<dim;++itap)</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>     m_taps[itap]=1.0/dim;</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>   filter(input,output);</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span> }</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span> </div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span> <span class="keywordtype">void</span> filter::Filter::filter(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output)</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span> {</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> lineInput(input.nrOfBand(),input.nrOfCol());</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> lineOutput(input.nrOfBand(),input.nrOfCol());</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>   <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>   pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y=0;y<input.nrOfRow();++y){</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input.nrOfBand();++iband)</div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>       input.readData(lineInput[iband],GDT_Float64,y,iband);</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>     vector<double> pixelInput(input.nrOfBand());</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>     vector<double> pixelOutput(input.nrOfBand());</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x=0;x<input.nrOfCol();++x){</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>       pixelInput=lineInput.selectCol(x);</div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>       filter(pixelInput,pixelOutput);</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input.nrOfBand();++iband)</div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>         lineOutput[iband][x]=pixelOutput[iband];</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>     }</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input.nrOfBand();++iband){</div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>         output.writeData(lineOutput[iband],GDT_Float64,y,iband);</div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>       }</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>         cerr << errorstring << <span class="stringliteral">"in band "</span> << iband << <span class="stringliteral">", line "</span> << y << endl;</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>       }</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>     }</div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>     progress=(1.0+y)/output.nrOfRow();</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>   }</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span> }</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span> </div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span> <span class="keywordtype">void</span> filter::Filter::stat(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keyword">const</span> std::string& method)</div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span> {</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> lineInput(input.nrOfBand(),input.nrOfCol());</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>   assert(output.nrOfCol()==input.nrOfCol());</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>   vector<double> lineOutput(output.nrOfCol());</div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>   <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>   stat.setNoDataValues(m_noDataValues);</div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>   <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>   pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y=0;y<input.nrOfRow();++y){</div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input.nrOfBand();++iband)</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>       input.readData(lineInput[iband],GDT_Float64,y,iband);</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>     vector<double> pixelInput(input.nrOfBand());</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x=0;x<input.nrOfCol();++x){</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>       pixelInput=lineInput.selectCol(x);</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>       <span class="keywordflow">switch</span>(getFilterType(method)){</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>       <span class="keywordflow">case</span>(filter::median):</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>     lineOutput[x]=stat.median(pixelInput);</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>       <span class="keywordflow">case</span>(filter::min):</div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>     lineOutput[x]=stat.mymin(pixelInput);</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>       <span class="keywordflow">case</span>(filter::max):</div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>     lineOutput[x]=stat.mymax(pixelInput);</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>       <span class="keywordflow">case</span>(filter::sum):</div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>     lineOutput[x]=stat.sum(pixelInput);</div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>       <span class="keywordflow">case</span>(filter::var):</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>     lineOutput[x]=stat.var(pixelInput);</div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>       <span class="keywordflow">case</span>(filter::stdev):</div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>     lineOutput[x]=sqrt(stat.var(pixelInput));</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span>       <span class="keywordflow">case</span>(filter::mean):</div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>     lineOutput[x]=stat.mean(pixelInput);</div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>       <span class="keywordflow">case</span>(filter::percentile):</div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>     assert(m_threshold.size());</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>     lineOutput[x]=stat.percentile(pixelInput,pixelInput.begin(),pixelInput.end(),m_threshold[0]);</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span>       <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>     std::string errorString=<span class="stringliteral">"method not supported"</span>;</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>       }</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span>     }</div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>       output.writeData(lineOutput,GDT_Float64,y);</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span>     }</div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>     <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span>       cerr << errorstring << <span class="stringliteral">"in line "</span> << y << endl;</div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span>     }</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>     progress=(1.0+y)/output.nrOfRow();</div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span>   }</div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span> }</div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span> </div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span> <span class="keywordtype">void</span> filter::Filter::stats(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keyword">const</span> vector<std::string>& methods)</div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span> {</div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span>   assert(output.nrOfBand()==methods.size());</div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> lineInput(input.nrOfBand(),input.nrOfCol());</div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>   assert(output.nrOfCol()==input.nrOfCol());</div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> lineOutput(methods.size(),output.nrOfCol());</div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span>   <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span>   stat.setNoDataValues(m_noDataValues);</div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span>   <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span>   pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y=0;y<input.nrOfRow();++y){</div>
-<div class="line"><a name="l00445"></a><span class="lineno">  445</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input.nrOfBand();++iband)</div>
-<div class="line"><a name="l00446"></a><span class="lineno">  446</span>       input.readData(lineInput[iband],GDT_Float64,y,iband);</div>
-<div class="line"><a name="l00447"></a><span class="lineno">  447</span>     vector<double> pixelInput(input.nrOfBand());</div>
-<div class="line"><a name="l00448"></a><span class="lineno">  448</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x=0;x<input.nrOfCol();++x){</div>
-<div class="line"><a name="l00449"></a><span class="lineno">  449</span>       pixelInput=lineInput.selectCol(x);</div>
-<div class="line"><a name="l00450"></a><span class="lineno">  450</span>       <span class="keywordtype">int</span> ithreshold=0;<span class="comment">//threshold to use for percentiles</span></div>
-<div class="line"><a name="l00451"></a><span class="lineno">  451</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> imethod=0;imethod<methods.size();++imethod){</div>
-<div class="line"><a name="l00452"></a><span class="lineno">  452</span>     <span class="keywordflow">switch</span>(getFilterType(methods[imethod])){</div>
-<div class="line"><a name="l00453"></a><span class="lineno">  453</span>     <span class="keywordflow">case</span>(filter::nvalid):</div>
-<div class="line"><a name="l00454"></a><span class="lineno">  454</span>       lineOutput[imethod][x]=stat.nvalid(pixelInput);</div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</span>     <span class="keywordflow">case</span>(filter::median):</div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span>       lineOutput[imethod][x]=stat.median(pixelInput);</div>
-<div class="line"><a name="l00458"></a><span class="lineno">  458</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00459"></a><span class="lineno">  459</span>     <span class="keywordflow">case</span>(filter::min):</div>
-<div class="line"><a name="l00460"></a><span class="lineno">  460</span>       lineOutput[imethod][x]=stat.mymin(pixelInput);</div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span>     <span class="keywordflow">case</span>(filter::max):</div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span>       lineOutput[imethod][x]=stat.mymax(pixelInput);</div>
-<div class="line"><a name="l00464"></a><span class="lineno">  464</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span>     <span class="keywordflow">case</span>(filter::sum):</div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>       lineOutput[imethod][x]=stat.sum(pixelInput);</div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span>     <span class="keywordflow">case</span>(filter::var):</div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span>       lineOutput[imethod][x]=stat.var(pixelInput);</div>
-<div class="line"><a name="l00470"></a><span class="lineno">  470</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00471"></a><span class="lineno">  471</span>     <span class="keywordflow">case</span>(filter::stdev):</div>
-<div class="line"><a name="l00472"></a><span class="lineno">  472</span>       lineOutput[imethod][x]=sqrt(stat.var(pixelInput));</div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00474"></a><span class="lineno">  474</span>     <span class="keywordflow">case</span>(filter::mean):</div>
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span>       lineOutput[imethod][x]=stat.mean(pixelInput);</div>
-<div class="line"><a name="l00476"></a><span class="lineno">  476</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00477"></a><span class="lineno">  477</span>     <span class="keywordflow">case</span>(filter::percentile):{</div>
-<div class="line"><a name="l00478"></a><span class="lineno">  478</span>       assert(m_threshold.size());</div>
-<div class="line"><a name="l00479"></a><span class="lineno">  479</span>       <span class="keywordtype">double</span> threshold=(ithreshold<m_threshold.size())? m_threshold[ithreshold] : m_threshold[0];</div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span>       lineOutput[imethod][x]=stat.percentile(pixelInput,pixelInput.begin(),pixelInput.end(),threshold);</div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span>       ++ithreshold;</div>
-<div class="line"><a name="l00482"></a><span class="lineno">  482</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00483"></a><span class="lineno">  483</span>     }</div>
-<div class="line"><a name="l00484"></a><span class="lineno">  484</span>     <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00485"></a><span class="lineno">  485</span>       std::string errorString=<span class="stringliteral">"method not supported"</span>;</div>
-<div class="line"><a name="l00486"></a><span class="lineno">  486</span>       <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00487"></a><span class="lineno">  487</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00488"></a><span class="lineno">  488</span>     }</div>
-<div class="line"><a name="l00489"></a><span class="lineno">  489</span>       }</div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span>     }</div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> imethod=0;imethod<methods.size();++imethod){</div>
-<div class="line"><a name="l00492"></a><span class="lineno">  492</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00493"></a><span class="lineno">  493</span>     output.writeData(lineOutput[imethod],GDT_Float64,y,imethod);</div>
-<div class="line"><a name="l00494"></a><span class="lineno">  494</span>       }</div>
-<div class="line"><a name="l00495"></a><span class="lineno">  495</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00496"></a><span class="lineno">  496</span>     cerr << errorstring << <span class="stringliteral">"in line "</span> << y << endl;</div>
-<div class="line"><a name="l00497"></a><span class="lineno">  497</span>       }</div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span>     }</div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span>     progress=(1.0+y)/output.nrOfRow();</div>
-<div class="line"><a name="l00500"></a><span class="lineno">  500</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00501"></a><span class="lineno">  501</span>   }</div>
-<div class="line"><a name="l00502"></a><span class="lineno">  502</span> }</div>
-<div class="line"><a name="l00503"></a><span class="lineno">  503</span> </div>
-<div class="line"><a name="l00504"></a><span class="lineno">  504</span> <span class="keywordtype">void</span> filter::Filter::filter(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keyword">const</span> std::string& method, <span class="keywordtype">int</span> dim)</div>
-<div class="line"><a name="l00505"></a><span class="lineno">  505</span> {</div>
-<div class="line"><a name="l00506"></a><span class="lineno">  506</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> lineInput(input.nrOfBand(),input.nrOfCol());</div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> lineOutput(input.nrOfBand(),input.nrOfCol());;</div>
-<div class="line"><a name="l00508"></a><span class="lineno">  508</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00509"></a><span class="lineno">  509</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span>   <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l00512"></a><span class="lineno">  512</span>   pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00513"></a><span class="lineno">  513</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y=0;y<input.nrOfRow();++y){</div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input.nrOfBand();++iband)</div>
-<div class="line"><a name="l00515"></a><span class="lineno">  515</span>       input.readData(lineInput[iband],GDT_Float64,y,iband);</div>
-<div class="line"><a name="l00516"></a><span class="lineno">  516</span>     vector<double> pixelInput(input.nrOfBand());</div>
-<div class="line"><a name="l00517"></a><span class="lineno">  517</span>     vector<double> pixelOutput;</div>
-<div class="line"><a name="l00518"></a><span class="lineno">  518</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x=0;x<input.nrOfCol();++x){</div>
-<div class="line"><a name="l00519"></a><span class="lineno">  519</span>       pixelInput=lineInput.selectCol(x);</div>
-<div class="line"><a name="l00520"></a><span class="lineno">  520</span>       filter(pixelInput,pixelOutput,method,dim);</div>
-<div class="line"><a name="l00521"></a><span class="lineno">  521</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<pixelOutput.size();++iband){</div>
-<div class="line"><a name="l00522"></a><span class="lineno">  522</span>         lineOutput[iband][x]=pixelOutput[iband];</div>
-<div class="line"><a name="l00523"></a><span class="lineno">  523</span>     <span class="comment">// if(pixelInput[iband]!=0)</span></div>
-<div class="line"><a name="l00524"></a><span class="lineno">  524</span>     <span class="comment">//   assert(pixelOutput[iband]!=0);</span></div>
-<div class="line"><a name="l00525"></a><span class="lineno">  525</span>       }</div>
-<div class="line"><a name="l00526"></a><span class="lineno">  526</span>     }</div>
-<div class="line"><a name="l00527"></a><span class="lineno">  527</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input.nrOfBand();++iband){</div>
-<div class="line"><a name="l00528"></a><span class="lineno">  528</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00529"></a><span class="lineno">  529</span>         output.writeData(lineOutput[iband],GDT_Float64,y,iband);</div>
-<div class="line"><a name="l00530"></a><span class="lineno">  530</span>       }</div>
-<div class="line"><a name="l00531"></a><span class="lineno">  531</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00532"></a><span class="lineno">  532</span>         cerr << errorstring << <span class="stringliteral">"in band "</span> << iband << <span class="stringliteral">", line "</span> << y << endl;</div>
-<div class="line"><a name="l00533"></a><span class="lineno">  533</span>       }</div>
-<div class="line"><a name="l00534"></a><span class="lineno">  534</span>     }</div>
-<div class="line"><a name="l00535"></a><span class="lineno">  535</span>     progress=(1.0+y)/output.nrOfRow();</div>
-<div class="line"><a name="l00536"></a><span class="lineno">  536</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00537"></a><span class="lineno">  537</span>   }</div>
-<div class="line"><a name="l00538"></a><span class="lineno">  538</span> }</div>
-<div class="line"><a name="l00539"></a><span class="lineno">  539</span> </div>
-<div class="line"><a name="l00540"></a><span class="lineno">  540</span> <span class="keywordtype">void</span> filter::Filter::getSavGolayCoefficients(vector<double> &tapz, <span class="keywordtype">int</span> np, <span class="keywordtype">int</span> nl, <span class="keywordtype">int</span> nr, <span class="keywordtype">int</span> ld, <span class="keywordtype">int</span> m) {</div>
-<div class="line"><a name="l00541"></a><span class="lineno">  541</span>   <span class="keywordtype">int</span> j, k, imj, ipj, kk, mm;</div>
-<div class="line"><a name="l00542"></a><span class="lineno">  542</span>   <span class="keywordtype">double</span> d, fac, sum;</div>
-<div class="line"><a name="l00543"></a><span class="lineno">  543</span> </div>
-<div class="line"><a name="l00544"></a><span class="lineno">  544</span>   <span class="comment">// c.resize(nl+1+nr);</span></div>
-<div class="line"><a name="l00545"></a><span class="lineno">  545</span>   vector<double> tmpc(np);</div>
-<div class="line"><a name="l00546"></a><span class="lineno">  546</span>   <span class="keywordflow">if</span>(np < nl + nr + 1 || nl < 0 || nr < 0 || ld > m || nl + nr < m) {</div>
-<div class="line"><a name="l00547"></a><span class="lineno">  547</span>     cerr << <span class="stringliteral">"bad args in savgol"</span> << endl;</div>
-<div class="line"><a name="l00548"></a><span class="lineno">  548</span>     <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l00549"></a><span class="lineno">  549</span>   }</div>
-<div class="line"><a name="l00550"></a><span class="lineno">  550</span>   vector<int> indx(m + 1, 0);</div>
-<div class="line"><a name="l00551"></a><span class="lineno">  551</span>   vector<double> a((m + 1) * (m + 1), 0.0);</div>
-<div class="line"><a name="l00552"></a><span class="lineno">  552</span>   vector<double> b(m + 1, 0.0);</div>
-<div class="line"><a name="l00553"></a><span class="lineno">  553</span> </div>
-<div class="line"><a name="l00554"></a><span class="lineno">  554</span>   <span class="keywordflow">for</span>(ipj = 0; ipj <= (m << 1); ++ipj) {</div>
-<div class="line"><a name="l00555"></a><span class="lineno">  555</span>     sum = (ipj ? 0.0 : 1.0);</div>
-<div class="line"><a name="l00556"></a><span class="lineno">  556</span>     <span class="keywordflow">for</span>(k = 1; k <= nr; ++k)</div>
-<div class="line"><a name="l00557"></a><span class="lineno">  557</span>       sum += (<span class="keywordtype">int</span>)pow((<span class="keywordtype">double</span>)k, (<span class="keywordtype">double</span>)ipj);</div>
-<div class="line"><a name="l00558"></a><span class="lineno">  558</span>     <span class="keywordflow">for</span>(k = 1; k <= nl; ++k)</div>
-<div class="line"><a name="l00559"></a><span class="lineno">  559</span>       sum += (<span class="keywordtype">int</span>)pow((<span class="keywordtype">double</span>) - k, (<span class="keywordtype">double</span>)ipj);</div>
-<div class="line"><a name="l00560"></a><span class="lineno">  560</span>     mm = (ipj < 2 * m - ipj ? ipj : 2 * m - ipj);</div>
-<div class="line"><a name="l00561"></a><span class="lineno">  561</span>     <span class="keywordflow">for</span>(imj = -mm; imj <= mm; imj += 2)</div>
-<div class="line"><a name="l00562"></a><span class="lineno">  562</span>       a[(ipj + imj) / 2 * (m + 1) + (ipj - imj) / 2] = sum;</div>
-<div class="line"><a name="l00563"></a><span class="lineno">  563</span>   }</div>
-<div class="line"><a name="l00564"></a><span class="lineno">  564</span>   ludcmp(a, indx, d);</div>
-<div class="line"><a name="l00565"></a><span class="lineno">  565</span> </div>
-<div class="line"><a name="l00566"></a><span class="lineno">  566</span>   <span class="keywordflow">for</span>(j = 0; j < m + 1; ++j)</div>
-<div class="line"><a name="l00567"></a><span class="lineno">  567</span>     b[j] = 0.0;</div>
-<div class="line"><a name="l00568"></a><span class="lineno">  568</span>   b[ld] = 1.0;</div>
-<div class="line"><a name="l00569"></a><span class="lineno">  569</span> </div>
-<div class="line"><a name="l00570"></a><span class="lineno">  570</span>   lubksb(a, indx, b);</div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span>   <span class="comment">// for(kk = 0; kk < np; ++kk)</span></div>
-<div class="line"><a name="l00572"></a><span class="lineno">  572</span>   <span class="comment">//   c[kk] = 0.0;</span></div>
-<div class="line"><a name="l00573"></a><span class="lineno">  573</span>   <span class="keywordflow">for</span>(k = -nl; k <= nr; ++k) {</div>
-<div class="line"><a name="l00574"></a><span class="lineno">  574</span>   <span class="comment">// for(k = -nl; k < nr; ++k) {</span></div>
-<div class="line"><a name="l00575"></a><span class="lineno">  575</span>     sum = b[0];</div>
-<div class="line"><a name="l00576"></a><span class="lineno">  576</span>     fac = 1.0;</div>
-<div class="line"><a name="l00577"></a><span class="lineno">  577</span>     <span class="keywordflow">for</span>(mm = 1; mm <= m; ++mm)</div>
-<div class="line"><a name="l00578"></a><span class="lineno">  578</span>       sum += b[mm] * (fac *= k);</div>
-<div class="line"><a name="l00579"></a><span class="lineno">  579</span>     <span class="comment">// store in wrap=around order</span></div>
-<div class="line"><a name="l00580"></a><span class="lineno">  580</span>     kk = (np - k) % np;</div>
-<div class="line"><a name="l00581"></a><span class="lineno">  581</span>     <span class="comment">//re-order c as I need for taps</span></div>
-<div class="line"><a name="l00582"></a><span class="lineno">  582</span>     <span class="comment">// kk=k+nl;</span></div>
-<div class="line"><a name="l00583"></a><span class="lineno">  583</span>     tmpc[kk] = sum;</div>
-<div class="line"><a name="l00584"></a><span class="lineno">  584</span>   }</div>
-<div class="line"><a name="l00585"></a><span class="lineno">  585</span>   tapz.resize(nl+1+nr);</div>
-<div class="line"><a name="l00586"></a><span class="lineno">  586</span>   <span class="comment">//  for(k=0;k<nl+1+nr)</span></div>
-<div class="line"><a name="l00587"></a><span class="lineno">  587</span>   tapz[tapz.size()/2]=tmpc[0];</div>
-<div class="line"><a name="l00588"></a><span class="lineno">  588</span>   <span class="comment">//past data points</span></div>
-<div class="line"><a name="l00589"></a><span class="lineno">  589</span>   <span class="keywordflow">for</span>(k=1;k<=tapz.size()/2;++k)</div>
-<div class="line"><a name="l00590"></a><span class="lineno">  590</span>     tapz[tapz.size()/2-k]=tmpc[k];</div>
-<div class="line"><a name="l00591"></a><span class="lineno">  591</span>   <span class="comment">//future data points</span></div>
-<div class="line"><a name="l00592"></a><span class="lineno">  592</span>   <span class="keywordflow">for</span>(k=1;k<=tapz.size()/2;++k)</div>
-<div class="line"><a name="l00593"></a><span class="lineno">  593</span>     tapz[tapz.size()/2+k]=tmpc[np-k];</div>
-<div class="line"><a name="l00594"></a><span class="lineno">  594</span> }</div>
-<div class="line"><a name="l00595"></a><span class="lineno">  595</span> </div>
-<div class="line"><a name="l00596"></a><span class="lineno">  596</span> <span class="keywordtype">void</span> filter::Filter::ludcmp(vector<double> &a, vector<int> &indx, <span class="keywordtype">double</span> &d) {</div>
-<div class="line"><a name="l00597"></a><span class="lineno">  597</span>   <span class="keyword">const</span> <span class="keywordtype">double</span> TINY = 1.0e-20;</div>
-<div class="line"><a name="l00598"></a><span class="lineno">  598</span>   <span class="keywordtype">int</span> i, imax = -1, j, k;</div>
-<div class="line"><a name="l00599"></a><span class="lineno">  599</span>   <span class="keywordtype">double</span> big, dum, sum, temp;</div>
-<div class="line"><a name="l00600"></a><span class="lineno">  600</span> </div>
-<div class="line"><a name="l00601"></a><span class="lineno">  601</span>   <span class="keywordtype">int</span> n = indx.size();</div>
-<div class="line"><a name="l00602"></a><span class="lineno">  602</span>   vector<double> vv(n, 0.0);</div>
-<div class="line"><a name="l00603"></a><span class="lineno">  603</span> </div>
-<div class="line"><a name="l00604"></a><span class="lineno">  604</span>   d = 1.0;</div>
-<div class="line"><a name="l00605"></a><span class="lineno">  605</span>   <span class="keywordflow">for</span>(i = 0; i < n; ++i) {</div>
-<div class="line"><a name="l00606"></a><span class="lineno">  606</span>     big = 0.0;</div>
-<div class="line"><a name="l00607"></a><span class="lineno">  607</span>     <span class="keywordflow">for</span>(j = 0; j < n; ++j)</div>
-<div class="line"><a name="l00608"></a><span class="lineno">  608</span>       <span class="keywordflow">if</span>((temp = fabs(a[i * n + j])) > big) big = temp;</div>
-<div class="line"><a name="l00609"></a><span class="lineno">  609</span> </div>
-<div class="line"><a name="l00610"></a><span class="lineno">  610</span>     <span class="keywordflow">if</span>(big == 0.0) {</div>
-<div class="line"><a name="l00611"></a><span class="lineno">  611</span>       cerr << <span class="stringliteral">"Singular matrix in routine ludcmp"</span> << endl;</div>
-<div class="line"><a name="l00612"></a><span class="lineno">  612</span>       <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l00613"></a><span class="lineno">  613</span>     }</div>
-<div class="line"><a name="l00614"></a><span class="lineno">  614</span>     vv[i] = 1. / big;</div>
-<div class="line"><a name="l00615"></a><span class="lineno">  615</span>   }</div>
-<div class="line"><a name="l00616"></a><span class="lineno">  616</span> </div>
-<div class="line"><a name="l00617"></a><span class="lineno">  617</span>   <span class="keywordflow">for</span>(j = 0; j < n; ++j) {</div>
-<div class="line"><a name="l00618"></a><span class="lineno">  618</span>     <span class="keywordflow">for</span>(i = 0; i < j; ++i) {</div>
-<div class="line"><a name="l00619"></a><span class="lineno">  619</span>       sum = a[i * n + j];</div>
-<div class="line"><a name="l00620"></a><span class="lineno">  620</span>       <span class="keywordflow">for</span>(k = 0; k < i; ++k)</div>
-<div class="line"><a name="l00621"></a><span class="lineno">  621</span>     sum -= a[i * n + k] * a[k * n + j];</div>
-<div class="line"><a name="l00622"></a><span class="lineno">  622</span>       a[i * n + j] = sum;</div>
-<div class="line"><a name="l00623"></a><span class="lineno">  623</span>     }</div>
-<div class="line"><a name="l00624"></a><span class="lineno">  624</span>     big = 0.0;</div>
-<div class="line"><a name="l00625"></a><span class="lineno">  625</span>     <span class="keywordflow">for</span>(i = j; i < n; ++i) {</div>
-<div class="line"><a name="l00626"></a><span class="lineno">  626</span>       sum = a[i * n + j];</div>
-<div class="line"><a name="l00627"></a><span class="lineno">  627</span>       <span class="keywordflow">for</span>(k = 0; k < j; ++k)</div>
-<div class="line"><a name="l00628"></a><span class="lineno">  628</span>     sum -= a[i * n + k] * a[k * n + j];</div>
-<div class="line"><a name="l00629"></a><span class="lineno">  629</span>       a[i * n + j] = sum;</div>
-<div class="line"><a name="l00630"></a><span class="lineno">  630</span>       <span class="keywordflow">if</span>((dum = vv[i] * fabs(sum)) >= big) {</div>
-<div class="line"><a name="l00631"></a><span class="lineno">  631</span>     big = dum;</div>
-<div class="line"><a name="l00632"></a><span class="lineno">  632</span>     imax = i;</div>
-<div class="line"><a name="l00633"></a><span class="lineno">  633</span>       }</div>
-<div class="line"><a name="l00634"></a><span class="lineno">  634</span>     }</div>
-<div class="line"><a name="l00635"></a><span class="lineno">  635</span> </div>
-<div class="line"><a name="l00636"></a><span class="lineno">  636</span>     <span class="keywordflow">if</span>(j != imax) {</div>
-<div class="line"><a name="l00637"></a><span class="lineno">  637</span>       <span class="keywordflow">for</span>(k = 0; k < n; ++k) {</div>
-<div class="line"><a name="l00638"></a><span class="lineno">  638</span>     dum = a[imax * n + k];</div>
-<div class="line"><a name="l00639"></a><span class="lineno">  639</span>     a[imax * n + k] = a[j * n + k];</div>
-<div class="line"><a name="l00640"></a><span class="lineno">  640</span>     a[j * n + k] = dum;</div>
-<div class="line"><a name="l00641"></a><span class="lineno">  641</span>       }</div>
-<div class="line"><a name="l00642"></a><span class="lineno">  642</span>       d = -d;</div>
-<div class="line"><a name="l00643"></a><span class="lineno">  643</span>       vv[imax] = vv[j];</div>
-<div class="line"><a name="l00644"></a><span class="lineno">  644</span>     }</div>
-<div class="line"><a name="l00645"></a><span class="lineno">  645</span>     indx[j] = imax;</div>
-<div class="line"><a name="l00646"></a><span class="lineno">  646</span>     <span class="keywordflow">if</span>(a[j * n + j] == 0.0) a[j * n + j] = TINY;</div>
-<div class="line"><a name="l00647"></a><span class="lineno">  647</span>     <span class="keywordflow">if</span>(j != n - 1) {</div>
-<div class="line"><a name="l00648"></a><span class="lineno">  648</span>       dum = 1. / a[j * n + j];</div>
-<div class="line"><a name="l00649"></a><span class="lineno">  649</span>       <span class="keywordflow">for</span>(i = j + 1; i < n; ++i)</div>
-<div class="line"><a name="l00650"></a><span class="lineno">  650</span>     a[i * n + j] *= dum;</div>
-<div class="line"><a name="l00651"></a><span class="lineno">  651</span>     }</div>
-<div class="line"><a name="l00652"></a><span class="lineno">  652</span>   }</div>
-<div class="line"><a name="l00653"></a><span class="lineno">  653</span> }</div>
-<div class="line"><a name="l00654"></a><span class="lineno">  654</span> </div>
-<div class="line"><a name="l00655"></a><span class="lineno">  655</span> <span class="keywordtype">void</span> filter::Filter::lubksb(vector<double> &a, vector<int> &indx, vector<double> &b) {</div>
-<div class="line"><a name="l00656"></a><span class="lineno">  656</span>   <span class="keywordtype">int</span> i, ii = 0, ip, j;</div>
-<div class="line"><a name="l00657"></a><span class="lineno">  657</span>   <span class="keywordtype">double</span> sum;</div>
-<div class="line"><a name="l00658"></a><span class="lineno">  658</span>   <span class="keywordtype">int</span> n = indx.size();</div>
-<div class="line"><a name="l00659"></a><span class="lineno">  659</span> </div>
-<div class="line"><a name="l00660"></a><span class="lineno">  660</span>   <span class="keywordflow">for</span>(i = 0; i < n; ++i) {</div>
-<div class="line"><a name="l00661"></a><span class="lineno">  661</span>     ip = indx[i];</div>
-<div class="line"><a name="l00662"></a><span class="lineno">  662</span>     sum = b[ip];</div>
-<div class="line"><a name="l00663"></a><span class="lineno">  663</span>     b[ip] = b[i];</div>
-<div class="line"><a name="l00664"></a><span class="lineno">  664</span>     <span class="keywordflow">if</span>(ii != 0)</div>
-<div class="line"><a name="l00665"></a><span class="lineno">  665</span>       <span class="keywordflow">for</span>(j = ii - 1; j < i; ++j)</div>
-<div class="line"><a name="l00666"></a><span class="lineno">  666</span>     sum -= a[i * n + j] * b[j];</div>
-<div class="line"><a name="l00667"></a><span class="lineno">  667</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(sum != 0.0)</div>
-<div class="line"><a name="l00668"></a><span class="lineno">  668</span>       ii = i + 1;</div>
-<div class="line"><a name="l00669"></a><span class="lineno">  669</span>     b[i] = sum;</div>
-<div class="line"><a name="l00670"></a><span class="lineno">  670</span>   }</div>
-<div class="line"><a name="l00671"></a><span class="lineno">  671</span>   <span class="keywordflow">for</span>(i = n - 1; i >= 0; --i) {</div>
-<div class="line"><a name="l00672"></a><span class="lineno">  672</span>     sum = b[i];</div>
-<div class="line"><a name="l00673"></a><span class="lineno">  673</span>     <span class="keywordflow">for</span>(j = i + 1; j < n; ++j)</div>
-<div class="line"><a name="l00674"></a><span class="lineno">  674</span>       sum -= a[i * n + j] * b[j];</div>
-<div class="line"><a name="l00675"></a><span class="lineno">  675</span>     b[i] = sum / a[i * n + i];</div>
-<div class="line"><a name="l00676"></a><span class="lineno">  676</span>   }</div>
-<div class="line"><a name="l00677"></a><span class="lineno">  677</span> }</div>
-<div class="line"><a name="l00678"></a><span class="lineno">  678</span> </div>
-<div class="line"><a name="l00679"></a><span class="lineno">  679</span> <span class="keywordtype">double</span> filter::Filter::getCentreWavelength(<span class="keyword">const</span> std::vector<double> &wavelengthIn, <span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<double></a>& srf, <span class="keyword">const</span> std::string& interpolationType, <span class="keywordtype">double</span> delta, <span class="keywordtype"> [...]
-<div class="line"><a name="l00680"></a><span class="lineno">  680</span> {  </div>
-<div class="line"><a name="l00681"></a><span class="lineno">  681</span>   assert(srf.size()==2);<span class="comment">//[0]: wavelength, [1]: response function</span></div>
-<div class="line"><a name="l00682"></a><span class="lineno">  682</span>   <span class="keywordtype">int</span> nband=srf[0].size(); </div>
-<div class="line"><a name="l00683"></a><span class="lineno">  683</span>   <span class="keywordtype">double</span> start=floor(wavelengthIn[0]);</div>
-<div class="line"><a name="l00684"></a><span class="lineno">  684</span>   <span class="keywordtype">double</span> end=ceil(wavelengthIn.back());</div>
-<div class="line"><a name="l00685"></a><span class="lineno">  685</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00686"></a><span class="lineno">  686</span>     std::cout << <span class="stringliteral">"wavelengths in ["</span> << start << <span class="stringliteral">","</span> << end << <span class="stringliteral">"]"</span> << std::endl << std::flush;</div>
-<div class="line"><a name="l00687"></a><span class="lineno">  687</span> </div>
-<div class="line"><a name="l00688"></a><span class="lineno">  688</span>   <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00689"></a><span class="lineno">  689</span> </div>
-<div class="line"><a name="l00690"></a><span class="lineno">  690</span>   gsl_interp_accel *acc;</div>
-<div class="line"><a name="l00691"></a><span class="lineno">  691</span>   stat.allocAcc(acc);</div>
-<div class="line"><a name="l00692"></a><span class="lineno">  692</span>   gsl_spline *spline;</div>
-<div class="line"><a name="l00693"></a><span class="lineno">  693</span>   stat.getSpline(interpolationType,nband,spline);</div>
-<div class="line"><a name="l00694"></a><span class="lineno">  694</span>   stat.initSpline(spline,&(srf[0][0]),&(srf[1][0]),nband);</div>
-<div class="line"><a name="l00695"></a><span class="lineno">  695</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00696"></a><span class="lineno">  696</span>     std::cout << <span class="stringliteral">"calculating norm of srf"</span> << std::endl << std::flush;</div>
-<div class="line"><a name="l00697"></a><span class="lineno">  697</span>   <span class="keywordtype">double</span> norm=0;</div>
-<div class="line"><a name="l00698"></a><span class="lineno">  698</span>   norm=gsl_spline_eval_integ(spline,srf[0].front(),srf[0].back(),acc);</div>
-<div class="line"><a name="l00699"></a><span class="lineno">  699</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00700"></a><span class="lineno">  700</span>     std::cout << <span class="stringliteral">"norm of srf: "</span> << norm << std::endl << std::flush;</div>
-<div class="line"><a name="l00701"></a><span class="lineno">  701</span>   gsl_spline_free(spline);</div>
-<div class="line"><a name="l00702"></a><span class="lineno">  702</span>   gsl_interp_accel_free(acc);  </div>
-<div class="line"><a name="l00703"></a><span class="lineno">  703</span>   std::vector<double> wavelength_fine;</div>
-<div class="line"><a name="l00704"></a><span class="lineno">  704</span>   <span class="keywordflow">for</span>(<span class="keywordtype">double</span> win=floor(wavelengthIn[0]);win<=ceil(wavelengthIn.back());win+=delta)</div>
-<div class="line"><a name="l00705"></a><span class="lineno">  705</span>     wavelength_fine.push_back(win);</div>
-<div class="line"><a name="l00706"></a><span class="lineno">  706</span> </div>
-<div class="line"><a name="l00707"></a><span class="lineno">  707</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00708"></a><span class="lineno">  708</span>     std::cout << <span class="stringliteral">"interpolate wavelengths to "</span> << wavelength_fine.size() << <span class="stringliteral">" entries "</span> << std::endl;</div>
-<div class="line"><a name="l00709"></a><span class="lineno">  709</span>   std::vector<double> srf_fine;<span class="comment">//spectral response function, interpolated for wavelength_fine</span></div>
-<div class="line"><a name="l00710"></a><span class="lineno">  710</span> </div>
-<div class="line"><a name="l00711"></a><span class="lineno">  711</span>   stat.interpolateUp(srf[0],srf[1],wavelength_fine,interpolationType,srf_fine,verbose);</div>
-<div class="line"><a name="l00712"></a><span class="lineno">  712</span>   assert(srf_fine.size()==wavelength_fine.size());</div>
-<div class="line"><a name="l00713"></a><span class="lineno">  713</span> </div>
-<div class="line"><a name="l00714"></a><span class="lineno">  714</span>   gsl_interp_accel *accOut;</div>
-<div class="line"><a name="l00715"></a><span class="lineno">  715</span>   stat.allocAcc(accOut);</div>
-<div class="line"><a name="l00716"></a><span class="lineno">  716</span>   gsl_spline *splineOut;</div>
-<div class="line"><a name="l00717"></a><span class="lineno">  717</span>   stat.getSpline(interpolationType,wavelength_fine.size(),splineOut);</div>
-<div class="line"><a name="l00718"></a><span class="lineno">  718</span>   assert(splineOut);</div>
-<div class="line"><a name="l00719"></a><span class="lineno">  719</span> </div>
-<div class="line"><a name="l00720"></a><span class="lineno">  720</span>   std::vector<double> wavelengthOut(wavelength_fine.size());</div>
-<div class="line"><a name="l00721"></a><span class="lineno">  721</span> </div>
-<div class="line"><a name="l00722"></a><span class="lineno">  722</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<wavelengthOut.size();++iband)</div>
-<div class="line"><a name="l00723"></a><span class="lineno">  723</span>     wavelengthOut[iband]=wavelength_fine[iband]*srf_fine[iband];</div>
-<div class="line"><a name="l00724"></a><span class="lineno">  724</span> </div>
-<div class="line"><a name="l00725"></a><span class="lineno">  725</span>   stat.initSpline(splineOut,&(wavelength_fine[0]),&(wavelengthOut[0]),wavelength_fine.size());</div>
-<div class="line"><a name="l00726"></a><span class="lineno">  726</span>   <span class="keywordtype">double</span> centreWavelength=gsl_spline_eval_integ(splineOut,start,end,accOut)/norm;</div>
-<div class="line"><a name="l00727"></a><span class="lineno">  727</span>   </div>
-<div class="line"><a name="l00728"></a><span class="lineno">  728</span>   gsl_spline_free(splineOut);</div>
-<div class="line"><a name="l00729"></a><span class="lineno">  729</span>   gsl_interp_accel_free(accOut);</div>
-<div class="line"><a name="l00730"></a><span class="lineno">  730</span> </div>
-<div class="line"><a name="l00731"></a><span class="lineno">  731</span>   <span class="keywordflow">return</span>(centreWavelength);</div>
-<div class="line"><a name="l00732"></a><span class="lineno">  732</span> }</div>
-<div class="line"><a name="l00733"></a><span class="lineno">  733</span> </div>
-<div class="line"><a name="l00734"></a><span class="lineno">  734</span> <span class="comment">// void filter::Filter::applyFwhm(const vector<double> &wavelengthIn, const ImgReaderGdal& input, const vector<double> &wavelengthOut, const vector<double> &fwhm, const std::string& interpolationType, ImgWriterGdal& output, bool verbose){</span></div>
-<div class="line"><a name="l00735"></a><span class="lineno">  735</span> <span class="comment">//   Vector2d<double> lineInput(input.nrOfBand(),input.nrOfCol());</span></div>
-<div class="line"><a name="l00736"></a><span class="lineno">  736</span> <span class="comment">//   Vector2d<double> lineOutput(wavelengthOut.size(),input.nrOfCol());</span></div>
-<div class="line"><a name="l00737"></a><span class="lineno">  737</span> <span class="comment">//   const char* pszMessage;</span></div>
-<div class="line"><a name="l00738"></a><span class="lineno">  738</span> <span class="comment">//   void* pProgressArg=NULL;</span></div>
-<div class="line"><a name="l00739"></a><span class="lineno">  739</span> <span class="comment">//   GDALProgressFunc pfnProgress=GDALTermProgress;</span></div>
-<div class="line"><a name="l00740"></a><span class="lineno">  740</span> <span class="comment">//   double progress=0;</span></div>
-<div class="line"><a name="l00741"></a><span class="lineno">  741</span> <span class="comment">//   pfnProgress(progress,pszMessage,pProgressArg);</span></div>
-<div class="line"><a name="l00742"></a><span class="lineno">  742</span> <span class="comment">//   for(int y=0;y<input.nrOfRow();++y){</span></div>
-<div class="line"><a name="l00743"></a><span class="lineno">  743</span> <span class="comment">//     for(int iband=0;iband<input.nrOfBand();++iband)</span></div>
-<div class="line"><a name="l00744"></a><span class="lineno">  744</span> <span class="comment">//       input.readData(lineInput[iband],GDT_Float64,y,iband);</span></div>
-<div class="line"><a name="l00745"></a><span class="lineno">  745</span> <span class="comment">//     applyFwhm<double>(wavelengthIn,lineInput,wavelengthOut,fwhm, interpolationType, lineOutput, verbose);</span></div>
-<div class="line"><a name="l00746"></a><span class="lineno">  746</span> <span class="comment">//     for(int iband=0;iband<output.nrOfBand();++iband){</span></div>
-<div class="line"><a name="l00747"></a><span class="lineno">  747</span> <span class="comment">//       try{</span></div>
-<div class="line"><a name="l00748"></a><span class="lineno">  748</span> <span class="comment">//         output.writeData(lineOutput[iband],GDT_Float64,y,iband);</span></div>
-<div class="line"><a name="l00749"></a><span class="lineno">  749</span> <span class="comment">//       }</span></div>
-<div class="line"><a name="l00750"></a><span class="lineno">  750</span> <span class="comment">//       catch(string errorstring){</span></div>
-<div class="line"><a name="l00751"></a><span class="lineno">  751</span> <span class="comment">//         cerr << errorstring << "in band " << iband << ", line " << y << endl;</span></div>
-<div class="line"><a name="l00752"></a><span class="lineno">  752</span> <span class="comment">//       }</span></div>
-<div class="line"><a name="l00753"></a><span class="lineno">  753</span> <span class="comment">//     }</span></div>
-<div class="line"><a name="l00754"></a><span class="lineno">  754</span> <span class="comment">//     progress=(1.0+y)/output.nrOfRow();</span></div>
-<div class="line"><a name="l00755"></a><span class="lineno">  755</span> <span class="comment">//     pfnProgress(progress,pszMessage,pProgressArg);</span></div>
-<div class="line"><a name="l00756"></a><span class="lineno">  756</span> <span class="comment">//   }</span></div>
-<div class="line"><a name="l00757"></a><span class="lineno">  757</span> <span class="comment">// }</span></div>
-<div class="line"><a name="l00758"></a><span class="lineno">  758</span> </div>
-<div class="line"><a name="l00759"></a><span class="lineno">  759</span> <span class="comment">// void filter::Filter::applySrf(const vector<double> &wavelengthIn, const ImgReaderGdal& input, const vector< Vector2d<double> > &srf, const std::string& interpolationType, ImgWriterGdal& output, bool verbose){</span></div>
-<div class="line"><a name="l00760"></a><span class="lineno">  760</span> <span class="comment">//   assert(output.nrOfBand()==srf.size());</span></div>
-<div class="line"><a name="l00761"></a><span class="lineno">  761</span> <span class="comment">//   double centreWavelength=0;</span></div>
-<div class="line"><a name="l00762"></a><span class="lineno">  762</span> <span class="comment">//   Vector2d<double> lineInput(input.nrOfBand(),input.nrOfCol());</span></div>
-<div class="line"><a name="l00763"></a><span class="lineno">  763</span> <span class="comment">//   const char* pszMessage;</span></div>
-<div class="line"><a name="l00764"></a><span class="lineno">  764</span> <span class="comment">//   void* pProgressArg=NULL;</span></div>
-<div class="line"><a name="l00765"></a><span class="lineno">  765</span> <span class="comment">//   GDALProgressFunc pfnProgress=GDALTermProgress;</span></div>
-<div class="line"><a name="l00766"></a><span class="lineno">  766</span> <span class="comment">//   double progress=0;</span></div>
-<div class="line"><a name="l00767"></a><span class="lineno">  767</span> <span class="comment">//   pfnProgress(progress,pszMessage,pProgressArg);</span></div>
-<div class="line"><a name="l00768"></a><span class="lineno">  768</span> <span class="comment">//   for(int y=0;y<input.nrOfRow();++y){</span></div>
-<div class="line"><a name="l00769"></a><span class="lineno">  769</span> <span class="comment">//     for(int iband=0;iband<input.nrOfBand();++iband)</span></div>
-<div class="line"><a name="l00770"></a><span class="lineno">  770</span> <span class="comment">//       input.readData(lineInput[iband],GDT_Float64,y,iband);</span></div>
-<div class="line"><a name="l00771"></a><span class="lineno">  771</span> <span class="comment">//     for(int isrf=0;isrf<srf.size();++isrf){</span></div>
-<div class="line"><a name="l00772"></a><span class="lineno">  772</span> <span class="comment">//       vector<double> lineOutput(input.nrOfCol());</span></div>
-<div class="line"><a name="l00773"></a><span class="lineno">  773</span> <span class="comment">//       centreWavelength=applySrf<double>(wavelengthIn,lineInput,srf[isrf], interpolationType, lineOutput, verbose);</span></div>
-<div class="line"><a name="l00774"></a><span class="lineno">  774</span> <span class="comment">//       for(int iband=0;iband<output.nrOfBand();++iband){</span></div>
-<div class="line"><a name="l00775"></a><span class="lineno">  775</span> <span class="comment">//         try{</span></div>
-<div class="line"><a name="l00776"></a><span class="lineno">  776</span> <span class="comment">//           output.writeData(lineOutput,GDT_Float64,y,isrf);</span></div>
-<div class="line"><a name="l00777"></a><span class="lineno">  777</span> <span class="comment">//         }</span></div>
-<div class="line"><a name="l00778"></a><span class="lineno">  778</span> <span class="comment">//         catch(string errorstring){</span></div>
-<div class="line"><a name="l00779"></a><span class="lineno">  779</span> <span class="comment">//           cerr << errorstring << "in band " << iband << ", line " << y << endl;</span></div>
-<div class="line"><a name="l00780"></a><span class="lineno">  780</span> <span class="comment">//         }</span></div>
-<div class="line"><a name="l00781"></a><span class="lineno">  781</span> <span class="comment">//       }</span></div>
-<div class="line"><a name="l00782"></a><span class="lineno">  782</span> <span class="comment">//     }</span></div>
-<div class="line"><a name="l00783"></a><span class="lineno">  783</span> <span class="comment">//     progress=(1.0+y)/output.nrOfRow();</span></div>
-<div class="line"><a name="l00784"></a><span class="lineno">  784</span> <span class="comment">//     pfnProgress(progress,pszMessage,pProgressArg);</span></div>
-<div class="line"><a name="l00785"></a><span class="lineno">  785</span> <span class="comment">//   }</span></div>
-<div class="line"><a name="l00786"></a><span class="lineno">  786</span> <span class="comment">// }</span></div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-<div class="ttc" id="classImgWriterGdal_html"><div class="ttname"><a href="classImgWriterGdal.html">ImgWriterGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgWriterGdal_8h_source.html#l00033">ImgWriterGdal.h:33</a></div></div>
-<div class="ttc" id="classVector2d_html"><div class="ttname"><a href="classVector2d.html">Vector2d< double ></a></div></div>
-<div class="ttc" id="classstatfactory_1_1StatFactory_html"><div class="ttname"><a href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></div><div class="ttdef"><b>Definition:</b> <a href="StatFactory_8h_source.html#l00043">StatFactory.h:43</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/Filter_8h_source.html b/doc/html/Filter_8h_source.html
deleted file mode 100644
index d95084a..0000000
--- a/doc/html/Filter_8h_source.html
+++ /dev/null
@@ -1,931 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/algorithms/Filter.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_e6df591b0639d4c4807ef64d058833e2.html">algorithms</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">Filter.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">Filter.h: class for filtering</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2012 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#ifndef _MYFILTER_H_</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor"></span><span class="preprocessor">#define _MYFILTER_H_</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <vector></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <iostream></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span> {</div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include <gsl/gsl_sort.h></span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include <gsl/gsl_wavelet.h></span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> }</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include "StatFactory.h"</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include "imageclasses/ImgReaderGdal.h"</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="preprocessor">#include "imageclasses/ImgWriterGdal.h"</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> </div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">namespace </span>filter</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> {</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>   </div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   <span class="keyword">enum</span> FILTER_TYPE { median=0, var=1 , min=2, max=3, sum=4, mean=5, minmax=6, dilate=7, erode=8, close=9, open=10, homog=11, sobelx=12, sobely=13, sobelxy=14, sobelyx=-14, smooth=15, density=16, mode=17, mixed=18, smoothnodata=19, threshold=20, ismin=21, ismax=22, heterog=23, order=24, stdev=25, dwt=26, dwti=27, dwt_cut=28, dwt_cut_from=29, savgolay=30, percentile=31, nvalid=32};</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>    <span class="keyword">enum</span> PADDING { symmetric=0, replicate=1, circular=2, zero=3};</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> </div>
-<div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classfilter_1_1Filter.html">   40</a></span> <span class="keyword">class </span><a class="code" href="classfilter_1_1Filter.html">Filter</a></div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> {</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   <a class="code" href="classfilter_1_1Filter.html">Filter</a>(<span class="keywordtype">void</span>);</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   <a class="code" href="classfilter_1_1Filter.html">Filter</a>(<span class="keyword">const</span> std::vector<double> &taps);</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   <span class="keyword">virtual</span> ~<a class="code" href="classfilter_1_1Filter.html">Filter</a>(){};</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span> </div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   <span class="keywordtype">void</span> setPadding(<span class="keyword">const</span> std::string& padString){</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     m_padding=padString;</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>   };</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span> </div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>   <span class="keyword">static</span> <span class="keyword">const</span> gsl_wavelet_type* getWaveletType(<span class="keyword">const</span> std::string waveletType){</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     <span class="keywordflow">if</span>(waveletType==<span class="stringliteral">"daubechies"</span>) <span class="keywordflow">return</span>(gsl_wavelet_daubechies);</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     <span class="keywordflow">if</span>(waveletType==<span class="stringliteral">"daubechies_centered"</span>) <span class="keywordflow">return</span>(gsl_wavelet_daubechies_centered);</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     <span class="keywordflow">if</span>(waveletType==<span class="stringliteral">"haar"</span>) <span class="keywordflow">return</span>(gsl_wavelet_haar);</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     <span class="keywordflow">if</span>(waveletType==<span class="stringliteral">"haar_centered"</span>) <span class="keywordflow">return</span>(gsl_wavelet_haar_centered);</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <span class="keywordflow">if</span>(waveletType==<span class="stringliteral">"bspline"</span>) <span class="keywordflow">return</span>(gsl_wavelet_bspline);</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     <span class="keywordflow">if</span>(waveletType==<span class="stringliteral">"bspline_centered"</span>) <span class="keywordflow">return</span>(gsl_wavelet_bspline_centered);</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>   }</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>   <span class="keyword">static</span> FILTER_TYPE getFilterType(<span class="keyword">const</span> std::string filterType){</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     std::map<std::string, FILTER_TYPE> m_filterMap;</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     initFilterMap(m_filterMap);</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     <span class="keywordflow">return</span> m_filterMap[filterType];</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>   };</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span> </div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>   <span class="keywordtype">void</span> setTaps(<span class="keyword">const</span> std::vector<double> &taps, <span class="keywordtype">bool</span> normalize=<span class="keyword">true</span>);</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>   <span class="keywordtype">void</span> pushClass(<span class="keywordtype">short</span> theClass=1){m_class.push_back(theClass);};</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>   <span class="keywordtype">void</span> pushMask(<span class="keywordtype">short</span> theMask=0){m_mask.push_back(theMask);};</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> pushNoDataValue(<span class="keywordtype">double</span> noDataValue);</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> setNoDataValues(std::vector<double> vnodata);</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>   <span class="keywordtype">void</span> pushThreshold(<span class="keywordtype">double</span> theThreshold){m_threshold.push_back(theThreshold);};</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>   <span class="keywordtype">void</span> setThresholds(<span class="keyword">const</span> std::vector<double>& theThresholds){m_threshold=theThresholds;};</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> filter(<span class="keyword">const</span> std::vector<T>& input, std::vector<T>& output);</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> filter(<span class="keyword">const</span> std::vector<T>& input, std::vector<T>& output, <span class="keyword">const</span> std::string& method, <span class="keywordtype">int</span> dim);</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> smooth(<span class="keyword">const</span> std::vector<T>& input, std::vector<T>& output, <span class="keywordtype">short</span> dim);</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> smoothNoData(<span class="keyword">const</span> std::vector<T>& input, <span class="keyword">const</span> std::string& interpolationType, std::vector<T>& output);</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> filter(T* input, <span class="keywordtype">int</span> inputSize, std::vector<T>& output);</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> smooth(T* input, <span class="keywordtype">int</span> inputSize, std::vector<T>& output, <span class="keywordtype">short</span> dim);</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>   <span class="comment">//template<class T> void morphology(const std::vector<T>& input, std::vector<T>& output, const std::string& method, int dim, bool verbose=false);</span></div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>   <span class="keywordtype">void</span> morphology(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keyword">const</span> std::string& method, <span class="keywordtype">int</span> dim, <span class="keywordtype">short</span> verbose=0);</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>   <span class="keywordtype">void</span> filter(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output);</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>   <span class="keywordtype">void</span> stat(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keyword">const</span> std::string& method);</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>   <span class="keywordtype">void</span> stats(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keyword">const</span> std::vector<std::string >& methods);</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   <span class="keywordtype">void</span> filter(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keyword">const</span> std::string& method, <span class="keywordtype">int</span> dim);</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>   <span class="keywordtype">void</span> getSavGolayCoefficients(std::vector<double> &c, <span class="keywordtype">int</span> np, <span class="keywordtype">int</span> nl, <span class="keywordtype">int</span> nr, <span class="keywordtype">int</span> ld, <span class="keywordtype">int</span> m);</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>   <span class="keywordtype">void</span> ludcmp(std::vector<double> &a, std::vector<int> &indx, <span class="keywordtype">double</span> &d);</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   <span class="keywordtype">void</span> lubksb(std::vector<double> &a, std::vector<int> &indx, std::vector<double> &b);</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>   <span class="comment">/* void savgolay(const ImgReaderGdal& input, ImgWriterGdal& output, int np, int nl, int nr, int m); */</span></div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   <span class="keywordtype">void</span> smooth(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keywordtype">short</span> dim);</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>   <span class="keywordtype">void</span> smoothNoData(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <span class="keyword">const</span> std::string& interpolationType, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output);</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>   <span class="keywordtype">double</span> getCentreWavelength(<span class="keyword">const</span> std::vector<double> &wavelengthIn, <span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<double></a>& srf, <span class="keyword">const</span> std::string& interpolationType, <span class="keywordtype">double</span> delta=1.0, <span class="keywordtype">bool</span [...]
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> applySrf(<span class="keyword">const</span> std::vector<double> &wavelengthIn, <span class="keyword">const</span> std::vector<T>& input, <span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<double></a>& srf, <span class="keywor [...]
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> applySrf(<span class="keyword">const</span> std::vector<double> &wavelengthIn, <span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T></a>& input, <span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<d [...]
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span> </div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> applyFwhm(<span class="keyword">const</span> std::vector<double> &wavelengthIn, <span class="keyword">const</span> std::vector<T>& input, <span class="keyword">const</span> std::vector<double> &wavelengthOut, <span class="keyword">const</span> std::vector<dou [...]
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> applyFwhm(<span class="keyword">const</span> std::vector<double> &wavelengthIn, <span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T></a>& input, <span class="keyword">const</span> std::vector<double> &wavelengthOut, <span clas [...]
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>   <span class="keywordtype">void</span> dwtForward(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keyword">const</span> std::string& wavelet_type, <span class="keywordtype">int</span> family);</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>   <span class="keywordtype">void</span> dwtInverse(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keyword">const</span> std::string& wavelet_type, <span class="keywordtype">int</span> family);</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>   <span class="keywordtype">void</span> dwtCut(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keyword">const</span> std::string& wavelet_type, <span class="keywordtype">int</span> family, <span class="keywordtype">double</span> cut);</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>   <span class="keywordtype">void</span> dwtForward(std::vector<double>& data, <span class="keyword">const</span> std::string& wavelet_type, <span class="keywordtype">int</span> family);</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>   <span class="keywordtype">void</span> dwtInverse(std::vector<double>& data, <span class="keyword">const</span> std::string& wavelet_type, <span class="keywordtype">int</span> family);</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>   <span class="keywordtype">void</span> dwtCut(std::vector<double>& data, <span class="keyword">const</span> std::string& wavelet_type, <span class="keywordtype">int</span> family, <span class="keywordtype">double</span> cut);</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>   <span class="keywordtype">void</span> dwtCutFrom(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keyword">const</span> std::string& wavelet_type, <span class="keywordtype">int</span> family, <span class="keywordtype">int</span> band);</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span> </div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span> <span class="keyword">private</span>:</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span> </div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>   <span class="keyword">static</span> <span class="keywordtype">void</span> initFilterMap(std::map<std::string, FILTER_TYPE>& m_filterMap){</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     <span class="comment">//initialize Map</span></div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     m_filterMap[<span class="stringliteral">"dwt"</span>]=filter::dwt;</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>     m_filterMap[<span class="stringliteral">"dwti"</span>]=filter::dwti;</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>     m_filterMap[<span class="stringliteral">"dwt_cut"</span>]=filter::dwt_cut;</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>     m_filterMap[<span class="stringliteral">"dwt_cut_from"</span>]=filter::dwt_cut_from;</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>     m_filterMap[<span class="stringliteral">"stdev"</span>]=filter::stdev;</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     m_filterMap[<span class="stringliteral">"var"</span>]=filter::var;</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     m_filterMap[<span class="stringliteral">"min"</span>]=filter::min;</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     m_filterMap[<span class="stringliteral">"max"</span>]=filter::max;</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     m_filterMap[<span class="stringliteral">"sum"</span>]=filter::sum;</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     m_filterMap[<span class="stringliteral">"mean"</span>]=filter::mean;</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     m_filterMap[<span class="stringliteral">"minmax"</span>]=filter::minmax;</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>     m_filterMap[<span class="stringliteral">"dilate"</span>]=filter::dilate;</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>     m_filterMap[<span class="stringliteral">"erode"</span>]=filter::erode;</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>     m_filterMap[<span class="stringliteral">"close"</span>]=filter::close;</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>     m_filterMap[<span class="stringliteral">"open"</span>]=filter::open;</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>     m_filterMap[<span class="stringliteral">"homog"</span>]=filter::homog;</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     m_filterMap[<span class="stringliteral">"sobelx"</span>]=filter::sobelx;</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>     m_filterMap[<span class="stringliteral">"sobely"</span>]=filter::sobely;</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     m_filterMap[<span class="stringliteral">"sobelxy"</span>]=filter::sobelxy;</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>     m_filterMap[<span class="stringliteral">"sobelyx"</span>]=filter::sobelyx;</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>     m_filterMap[<span class="stringliteral">"smooth"</span>]=filter::smooth;</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>     m_filterMap[<span class="stringliteral">"density"</span>]=filter::density;</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>     m_filterMap[<span class="stringliteral">"mode"</span>]=filter::mode;</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>     m_filterMap[<span class="stringliteral">"mixed"</span>]=filter::mixed;</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>     m_filterMap[<span class="stringliteral">"smoothnodata"</span>]=filter::smoothnodata;</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>     m_filterMap[<span class="stringliteral">"threshold"</span>]=filter::threshold;</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>     m_filterMap[<span class="stringliteral">"ismin"</span>]=filter::ismin;</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>     m_filterMap[<span class="stringliteral">"ismax"</span>]=filter::ismax;</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>     m_filterMap[<span class="stringliteral">"heterog"</span>]=filter::heterog;</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>     m_filterMap[<span class="stringliteral">"order"</span>]=filter::order;</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>     m_filterMap[<span class="stringliteral">"nvalid"</span>]=filter::nvalid;</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>     m_filterMap[<span class="stringliteral">"median"</span>]=filter::median;</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>     m_filterMap[<span class="stringliteral">"savgolay"</span>]=filter::savgolay;</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>     m_filterMap[<span class="stringliteral">"percentile"</span>]=filter::percentile;</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>   }</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span> </div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span> </div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>   <span class="keyword">static</span> PADDING getPadding(<span class="keyword">const</span> std::string& padString){</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>     std::map<std::string, PADDING> padMap;</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>     padMap[<span class="stringliteral">"zero"</span>]=filter::zero;</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>     padMap[<span class="stringliteral">"symmetric"</span>]=filter::symmetric;</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>     padMap[<span class="stringliteral">"replicate"</span>]=filter::replicate;</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>     padMap[<span class="stringliteral">"circular"</span>]=filter::circular;</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>     <span class="keywordflow">return</span>(padMap[padString]);</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>   };</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span> </div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>   std::vector<double> m_taps;</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>   std::vector<short> m_class;</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>   std::vector<short> m_mask;</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>   std::string m_padding;</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>   std::vector<double> m_noDataValues;</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   std::vector<double> m_threshold;</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span> };</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span> </div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span> </div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span> <span class="comment">//input[band], output</span></div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span> <span class="comment">//returns wavelength for which srf is maximum</span></div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> Filter::applySrf(<span class="keyword">const</span> std::vector<double> &wavelengthIn, <span class="keyword">const</span> std::vector<T>& input, <span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<double></a>& srf, <span class [...]
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span> {  </div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>   assert(srf.size()==2);<span class="comment">//[0]: wavelength, [1]: response function</span></div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>   <span class="keywordtype">int</span> nband=srf[0].size(); </div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>   <span class="keywordtype">double</span> start=floor(wavelengthIn[0]);</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>   <span class="keywordtype">double</span> end=ceil(wavelengthIn.back());</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>     std::cout << <span class="stringliteral">"wavelengths in ["</span> << start << <span class="stringliteral">","</span> << end << <span class="stringliteral">"]"</span> << std::endl << std::flush;</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span> </div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>   <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span> </div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>   gsl_interp_accel *acc;</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>   stat.allocAcc(acc);</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>   gsl_spline *spline;</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>   stat.getSpline(interpolationType,nband,spline);</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>   stat.initSpline(spline,&(srf[0][0]),&(srf[1][0]),nband);</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>     std::cout << <span class="stringliteral">"calculating norm of srf"</span> << std::endl << std::flush;</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>   <span class="keywordtype">double</span> norm=0;</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>   norm=gsl_spline_eval_integ(spline,srf[0].front(),srf[0].back(),acc);</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>     std::cout << <span class="stringliteral">"norm of srf: "</span> << norm << std::endl << std::flush;</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>   gsl_spline_free(spline);</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>   gsl_interp_accel_free(acc);  </div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>   <span class="comment">//interpolate input and srf to delta</span></div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>   </div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>   std::vector<double> wavelength_fine;</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>   <span class="keywordflow">for</span>(<span class="keywordtype">double</span> win=floor(wavelengthIn[0]);win<=ceil(wavelengthIn.back());win+=delta)</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>     wavelength_fine.push_back(win);</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span> </div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>     std::cout << <span class="stringliteral">"interpolate wavelengths to "</span> << wavelength_fine.size() << <span class="stringliteral">" entries "</span> << std::endl;</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>   std::vector<double> srf_fine;<span class="comment">//spectral response function, interpolated for wavelength_fine</span></div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span> </div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>   stat.interpolateUp(srf[0],srf[1],wavelength_fine,interpolationType,srf_fine,verbose);</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>   assert(srf_fine.size()==wavelength_fine.size());</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span> </div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>   gsl_interp_accel *accOut;</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>   stat.allocAcc(accOut);</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>   gsl_spline *splineOut;</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>   stat.getSpline(interpolationType,wavelength_fine.size(),splineOut);</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>   assert(splineOut);</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span> </div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>   assert(wavelengthIn.size()==input.size());</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>   std::vector<double> input_fine;</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>   std::vector<double> product(wavelength_fine.size());</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>   std::vector<double> wavelengthOut(wavelength_fine.size());</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>   stat.interpolateUp(wavelengthIn,input,wavelength_fine,interpolationType,input_fine,verbose);</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span> </div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>     std::cout << <span class="stringliteral">"input_fine.size(): "</span> << input_fine.size() << std::endl;</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input_fine.size();++iband){</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>     product[iband]=input_fine[iband]*srf_fine[iband];</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>     wavelengthOut[iband]=wavelength_fine[iband]*srf_fine[iband];</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>   }</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span> </div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>   assert(input_fine.size()==srf_fine.size());</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>   assert(input_fine.size()==wavelength_fine.size());</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>   stat.initSpline(splineOut,&(wavelength_fine[0]),&(product[0]),wavelength_fine.size());</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>   <span class="keywordflow">if</span>(normalize)</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>     output=gsl_spline_eval_integ(splineOut,start,end,accOut)/norm;</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>     output=gsl_spline_eval_integ(splineOut,start,end,accOut);</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span> </div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>   stat.initSpline(splineOut,&(wavelength_fine[0]),&(wavelengthOut[0]),wavelength_fine.size());</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>   <span class="keywordtype">double</span> centreWavelength=gsl_spline_eval_integ(splineOut,start,end,accOut)/norm;</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>   </div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>   gsl_spline_free(splineOut);</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>   gsl_interp_accel_free(accOut);</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span> </div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>   <span class="keywordflow">return</span>(centreWavelength);</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span> }</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span> </div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span> <span class="comment">//input[band][sample], output[sample] (if !transposeInput)</span></div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span> <span class="comment">//returns wavelength for which srf is maximum</span></div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> Filter::applySrf(<span class="keyword">const</span> std::vector<double> &wavelengthIn, <span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T></a>& input, <span class="keyword">const</span> <a class="code" href="classVector2d.html">Vecto [...]
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span> {  </div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>   assert(srf.size()==2);<span class="comment">//[0]: wavelength, [1]: response function</span></div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>   <span class="keywordtype">int</span> nband=srf[0].size(); </div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nsample=(transposeInput)? input.size():input[0].size();</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>   output.resize((nsample+down-1)/down);</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>   <span class="keywordtype">double</span> start=floor(wavelengthIn[0]);</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>   <span class="keywordtype">double</span> end=ceil(wavelengthIn.back());</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>     std::cout << <span class="stringliteral">"wavelengths in ["</span> << start << <span class="stringliteral">","</span> << end << <span class="stringliteral">"]"</span> << std::endl << std::flush;</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span> </div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>   <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span> </div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>   gsl_interp_accel *acc;</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>   stat.allocAcc(acc);</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>   gsl_spline *spline;</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>   stat.getSpline(interpolationType,nband,spline);</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>   stat.initSpline(spline,&(srf[0][0]),&(srf[1][0]),nband);</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>     std::cout << <span class="stringliteral">"calculating norm of srf"</span> << std::endl << std::flush;</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>   <span class="keywordtype">double</span> norm=0;</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>   norm=gsl_spline_eval_integ(spline,srf[0].front(),srf[0].back(),acc);</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>     std::cout << <span class="stringliteral">"norm of srf: "</span> << norm << std::endl << std::flush;</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>   gsl_spline_free(spline);</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>   gsl_interp_accel_free(acc);  </div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>   <span class="comment">//interpolate input and srf to delta</span></div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>   </div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>   std::vector<double> wavelength_fine;</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>   <span class="keywordflow">for</span>(<span class="keywordtype">double</span> win=floor(wavelengthIn[0]);win<=ceil(wavelengthIn.back());win+=delta)</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>     wavelength_fine.push_back(win);</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span> </div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>     std::cout << <span class="stringliteral">"interpolate wavelengths to "</span> << wavelength_fine.size() << <span class="stringliteral">" entries "</span> << std::endl;</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>   std::vector<double> srf_fine;<span class="comment">//spectral response function, interpolated for wavelength_fine</span></div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span> </div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>   stat.interpolateUp(srf[0],srf[1],wavelength_fine,interpolationType,srf_fine,verbose);</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>   assert(srf_fine.size()==wavelength_fine.size());</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span> </div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>   gsl_interp_accel *accOut;</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>   stat.allocAcc(accOut);</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>   gsl_spline *splineOut;</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>   stat.getSpline(interpolationType,wavelength_fine.size(),splineOut);</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>   assert(splineOut);</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span> </div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>   std::vector<double> wavelengthOut;</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>   <span class="keywordtype">double</span> centreWavelength=0;</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<nsample;++isample){</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>     <span class="keywordflow">if</span>((isample+1+down/2)%down)</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>     std::vector<T> inputValues;</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>     <span class="keywordflow">if</span>(transposeInput)</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>       inputValues=input[isample];</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>       input.selectCol(isample,inputValues);</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>     assert(wavelengthIn.size()==inputValues.size());</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>     std::vector<double> input_fine;</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>     std::vector<double> product(wavelength_fine.size());</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>     stat.interpolateUp(wavelengthIn,inputValues,wavelength_fine,interpolationType,input_fine,verbose);</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span> </div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input_fine.size();++iband){</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>       product[iband]=input_fine[iband]*srf_fine[iband];</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>       <span class="keywordflow">if</span>(wavelengthOut.size()<input_fine.size())</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>         wavelengthOut.push_back(wavelength_fine[iband]*srf_fine[iband]);</div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>     }</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span> </div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>     assert(input_fine.size()==srf_fine.size());</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>     assert(input_fine.size()==wavelength_fine.size());</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>     stat.initSpline(splineOut,&(wavelength_fine[0]),&(product[0]),wavelength_fine.size());</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>     <span class="keywordflow">if</span>(normalize)</div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>       output[isample/down]=gsl_spline_eval_integ(splineOut,start,end,accOut)/norm;</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>       output[isample/down]=gsl_spline_eval_integ(splineOut,start,end,accOut);</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span> </div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>     stat.initSpline(splineOut,&(wavelength_fine[0]),&(wavelengthOut[0]),wavelength_fine.size());</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>     <span class="keywordflow">if</span>(centreWavelength>0);</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>       centreWavelength=gsl_spline_eval_integ(splineOut,start,end,accOut)/norm;</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>   }</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>   gsl_spline_free(splineOut);</div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>   gsl_interp_accel_free(accOut);</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span> </div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>   <span class="keywordflow">return</span>(centreWavelength);</div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span> }</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span> </div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> Filter::applyFwhm(<span class="keyword">const</span> std::vector<double> &wavelengthIn, <span class="keyword">const</span> std::vector<T>& input, <span class="keyword">const</span> std::vector<double> &wavelengthOut, <span class="keyword">const</span> std::vector& [...]
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>   <span class="keywordtype">double</span> delta=1;<span class="comment">//1 nm resolution</span></div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>   std::vector<double> stddev(fwhm.size());</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> index=0;index<fwhm.size();++index)</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>     stddev[index]=fwhm[index]/2.0/sqrt(2*log(2.0));<span class="comment">//http://mathworld.wolfram.com/FullWidthatHalfMaximum.html</span></div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>   assert(wavelengthOut.size()==fwhm.size());</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>   assert(wavelengthIn.size()==input.size());</div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>   assert(wavelengthIn[0]<=wavelengthOut[0]);</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>   assert(wavelengthIn.back()>=wavelengthOut.back());</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>   <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>   std::vector<double> input_fine;</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>   std::vector<double> wavelength_fine;</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>   <span class="keywordflow">for</span>(<span class="keywordtype">double</span> win=floor(wavelengthIn[0]);win<=ceil(wavelengthIn.back());win+=delta)</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>     wavelength_fine.push_back(win);</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>   <span class="keywordflow">if</span>(verbose){</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> index=0;index<wavelength_fine.size();++index)</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>       std::cout << <span class="stringliteral">" "</span> << wavelength_fine[index];</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>     std::cout << std::endl;</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>     std::cout << <span class="stringliteral">"interpolate input wavelength to "</span> << delta << <span class="stringliteral">" nm resolution (size="</span> << wavelength_fine.size() << <span class="stringliteral">")"</span> << std::endl;</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>   }</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>   stat.interpolateUp(wavelengthIn,input,wavelength_fine,interpolationType,input_fine,verbose);</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>   <span class="keywordtype">int</span> nbandIn=wavelength_fine.size();</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>     </div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>   <span class="keywordtype">int</span> nbandOut=wavelengthOut.size();</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>   output.resize(nbandOut);</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> tf(nbandIn,nbandOut);</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> indexOut=0;indexOut<nbandOut;++indexOut){</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>     <span class="keywordtype">double</span> norm=0;</div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> indexIn=0;indexIn<nbandIn;++indexIn){</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>       <span class="comment">// tf(indexIn,indexOut)=</span></div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>       tf[indexIn][indexOut]=</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>         exp((wavelengthOut[indexOut]-wavelength_fine[indexIn])</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>             *(wavelength_fine[indexIn]-wavelengthOut[indexOut])</div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>             /2.0/stddev[indexOut]</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>             /stddev[indexOut]);</div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>       tf[indexIn][indexOut]/=sqrt(2.0*M_PI);</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>       tf[indexIn][indexOut]/=stddev[indexOut];</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>       norm+=tf[indexIn][indexOut];</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>     }</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>     output[indexOut]=0;</div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> indexIn=0;indexIn<nbandIn;++indexIn)</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>       output[indexOut]+=input_fine[indexIn]*tf[indexIn][indexOut]/norm;</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>   }</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span> }</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span> </div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span> </div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>   <span class="comment">//input[inBand][sample], output[outBand][sample]</span></div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> Filter::applyFwhm(<span class="keyword">const</span> std::vector<double> &wavelengthIn, <span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T></a>& input, <span class="keyword">const</span> std::vector<double> &wavelengthOut, <s [...]
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>   <span class="keywordtype">double</span> delta=1;<span class="comment">//1 nm resolution</span></div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>   std::vector<double> stddev(fwhm.size());</div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> index=0;index<fwhm.size();++index)</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>     stddev[index]=fwhm[index]/2.0/sqrt(2*log(2.0));<span class="comment">//http://mathworld.wolfram.com/FullWidthatHalfMaximum.html</span></div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>   <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>   std::vector<double> wavelength_fine;</div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>   <span class="keywordflow">for</span>(<span class="keywordtype">double</span> win=floor(wavelengthIn[0]);win<=ceil(wavelengthIn.back());win+=delta)</div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>     wavelength_fine.push_back(win);</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>   assert(wavelengthOut.size()==fwhm.size());</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>   assert(wavelengthIn[0]<=wavelengthOut[0]);</div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>   assert(wavelengthIn.back()>=wavelengthOut.back());</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>   <span class="keywordflow">if</span>(verbose){</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> index=0;index<wavelength_fine.size();++index)</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>       std::cout << <span class="stringliteral">" "</span> << wavelength_fine[index];</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>     std::cout << std::endl;</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>     std::cout << <span class="stringliteral">"interpolate input wavelength to "</span> << delta << <span class="stringliteral">" nm resolution (size="</span> << wavelength_fine.size() << <span class="stringliteral">")"</span> << std::endl;</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>   }</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>   <span class="keywordtype">int</span> nbandIn=wavelength_fine.size();</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>   <span class="keywordtype">int</span> nbandOut=wavelengthOut.size();</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>   output.resize(nbandOut,(input[0].size()+down-1)/down);</div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span> </div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> tf(nbandIn,nbandOut);</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>   std::vector<double> norm(nbandOut);</div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> indexOut=0;indexOut<nbandOut;++indexOut){</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>     norm[indexOut]=0;</div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> indexIn=0;indexIn<nbandIn;++indexIn){</div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>       tf[indexIn][indexOut]=</div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>         exp((wavelengthOut[indexOut]-wavelength_fine[indexIn])</div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>             *(wavelength_fine[indexIn]-wavelengthOut[indexOut])</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>             /2.0/stddev[indexOut]</div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span>             /stddev[indexOut]);</div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>       tf[indexIn][indexOut]/=sqrt(2.0*M_PI);</div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>       tf[indexIn][indexOut]/=stddev[indexOut];</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>       norm[indexOut]+=tf[indexIn][indexOut];</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span>     }</div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>   }</div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span> </div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<input[0].size();++isample){</div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>     <span class="keywordflow">if</span>((isample+1+down/2)%down)</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>     std::vector<T> inputValues;</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span>     input.selectCol(isample,inputValues);</div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>     assert(wavelengthIn.size()==inputValues.size());</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> indexOut=0;indexOut<nbandOut;++indexOut){</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>       std::vector<double> input_fine;</div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>       stat.interpolateUp(wavelengthIn,inputValues,wavelength_fine,interpolationType,input_fine,verbose);</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span>       output[indexOut][(isample+down-1)/down]=0;</div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> indexIn=0;indexIn<nbandIn;++indexIn){</div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>         output[indexOut][(isample+down-1)/down]+=input_fine[indexIn]*tf[indexIn][indexOut]/norm[indexOut];</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span>       }</div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>     }</div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span>   }</div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span> }</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span> </div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> Filter::smooth(<span class="keyword">const</span> std::vector<T>& input, std::vector<T>& output, <span class="keywordtype">short</span> dim)</div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span> {</div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span>   assert(dim>0);</div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span>   m_taps.resize(dim);</div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> itap=0;itap<dim;++itap)</div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span>     m_taps[itap]=1.0/dim;</div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span>   filter(input,output);</div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span>  }</div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span> </div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> Filter::smoothNoData(<span class="keyword">const</span> std::vector<T>& input, <span class="keyword">const</span> std::string& interpolationType, std::vector<T>& output)</div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span> {</div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span>   <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span>   stat.setNoDataValues(m_noDataValues);</div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span>   std::vector<double> abscis(input.size());</div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<abscis.size();++i)</div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span>     abscis[i]=i;</div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span>   stat.interpolateNoData(abscis,input,interpolationType,output);</div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span>  }</div>
-<div class="line"><a name="l00445"></a><span class="lineno">  445</span> </div>
-<div class="line"><a name="l00446"></a><span class="lineno">  446</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> Filter::filter(<span class="keyword">const</span> std::vector<T>& input, std::vector<T>& output)</div>
-<div class="line"><a name="l00447"></a><span class="lineno">  447</span> {</div>
-<div class="line"><a name="l00448"></a><span class="lineno">  448</span>   assert(input.size()>=m_taps.size());</div>
-<div class="line"><a name="l00449"></a><span class="lineno">  449</span>   output.resize(input.size());</div>
-<div class="line"><a name="l00450"></a><span class="lineno">  450</span>   <span class="keywordtype">int</span> i=0;</div>
-<div class="line"><a name="l00451"></a><span class="lineno">  451</span>   <span class="comment">//start: extend input by padding</span></div>
-<div class="line"><a name="l00452"></a><span class="lineno">  452</span>   <span class="keywordflow">for</span>(i=0;i<m_taps.size()/2;++i){</div>
-<div class="line"><a name="l00453"></a><span class="lineno">  453</span>     <span class="comment">//todo:introduce nodata?</span></div>
-<div class="line"><a name="l00454"></a><span class="lineno">  454</span>     output[i]=m_taps[m_taps.size()/2]*input[i];</div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> t=1;t<=m_taps.size()/2;++t){</div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</span>       output[i]+=m_taps[m_taps.size()/2+t]*input[i+t];</div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span>       <span class="keywordflow">if</span>(i>=t)</div>
-<div class="line"><a name="l00458"></a><span class="lineno">  458</span>     output[i]+=m_taps[m_taps.size()/2-t]*input[i-t];</div>
-<div class="line"><a name="l00459"></a><span class="lineno">  459</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00460"></a><span class="lineno">  460</span>     <span class="keywordflow">switch</span>(getPadding(m_padding)){</div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span>     <span class="keywordflow">case</span>(replicate):</div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span>       output[i]+=m_taps[m_taps.size()/2-t]*input[0];</div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00464"></a><span class="lineno">  464</span>     <span class="keywordflow">case</span>(circular):</div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span>       output[i]+=m_taps[m_taps.size()/2-t]*input[input.size()+i-t];</div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span>     <span class="keywordflow">case</span>(zero):</div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span>       output[i]+=m_taps[m_taps.size()/2-t]*0;</div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00470"></a><span class="lineno">  470</span>     <span class="keywordflow">case</span>(symmetric):</div>
-<div class="line"><a name="l00471"></a><span class="lineno">  471</span>     <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00472"></a><span class="lineno">  472</span>       output[i]+=m_taps[m_taps.size()/2-t]*input[t-i];</div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00474"></a><span class="lineno">  474</span>     }</div>
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span>       }</div>
-<div class="line"><a name="l00476"></a><span class="lineno">  476</span>     }</div>
-<div class="line"><a name="l00477"></a><span class="lineno">  477</span>   }</div>
-<div class="line"><a name="l00478"></a><span class="lineno">  478</span>   <span class="comment">//main</span></div>
-<div class="line"><a name="l00479"></a><span class="lineno">  479</span>   <span class="keywordflow">for</span>(i=m_taps.size()/2;i<input.size()-m_taps.size()/2;++i){</div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span>     <span class="comment">//todo:introduce nodata</span></div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span>     T leaveOut=(*(m_taps.begin()))*input[i-m_taps.size()/2];</div>
-<div class="line"><a name="l00482"></a><span class="lineno">  482</span>     T include=(m_taps.back())*input[i+m_taps.size()/2];</div>
-<div class="line"><a name="l00483"></a><span class="lineno">  483</span>     output[i]=0;</div>
-<div class="line"><a name="l00484"></a><span class="lineno">  484</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> t=0;t<m_taps.size();++t)</div>
-<div class="line"><a name="l00485"></a><span class="lineno">  485</span>       output[i]+=input[i-m_taps.size()/2+t]*m_taps[t];</div>
-<div class="line"><a name="l00486"></a><span class="lineno">  486</span>   }</div>
-<div class="line"><a name="l00487"></a><span class="lineno">  487</span>   <span class="comment">//end: extend input by padding</span></div>
-<div class="line"><a name="l00488"></a><span class="lineno">  488</span>   <span class="keywordflow">for</span>(i=input.size()-m_taps.size()/2;i<input.size();++i){</div>
-<div class="line"><a name="l00489"></a><span class="lineno">  489</span>     <span class="comment">//todo:introduce nodata?</span></div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span>     output[i]=m_taps[m_taps.size()/2]*input[i];</div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span>     <span class="comment">//todo:introduce nodata?</span></div>
-<div class="line"><a name="l00492"></a><span class="lineno">  492</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> t=1;t<=m_taps.size()/2;++t){</div>
-<div class="line"><a name="l00493"></a><span class="lineno">  493</span>       output[i]+=m_taps[m_taps.size()/2-t]*input[i-t];</div>
-<div class="line"><a name="l00494"></a><span class="lineno">  494</span>       <span class="keywordflow">if</span>(i+t<input.size())</div>
-<div class="line"><a name="l00495"></a><span class="lineno">  495</span>     output[i]+=m_taps[m_taps.size()/2+t]*input[i+t];</div>
-<div class="line"><a name="l00496"></a><span class="lineno">  496</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00497"></a><span class="lineno">  497</span>     <span class="keywordflow">switch</span>(getPadding(m_padding)){</div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span>     <span class="keywordflow">case</span>(replicate):</div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span>       output[i]+=m_taps[m_taps.size()/2+t]*input.back();</div>
-<div class="line"><a name="l00500"></a><span class="lineno">  500</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00501"></a><span class="lineno">  501</span>     <span class="keywordflow">case</span>(circular):</div>
-<div class="line"><a name="l00502"></a><span class="lineno">  502</span>       output[i]+=m_taps[m_taps.size()/2+t]*input[t-1];</div>
-<div class="line"><a name="l00503"></a><span class="lineno">  503</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00504"></a><span class="lineno">  504</span>     <span class="keywordflow">case</span>(zero):</div>
-<div class="line"><a name="l00505"></a><span class="lineno">  505</span>       output[i]+=m_taps[m_taps.size()/2+t]*0;</div>
-<div class="line"><a name="l00506"></a><span class="lineno">  506</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span>     <span class="keywordflow">case</span>(symmetric):</div>
-<div class="line"><a name="l00508"></a><span class="lineno">  508</span>     <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00509"></a><span class="lineno">  509</span>       output[i]+=m_taps[m_taps.size()/2+t]*input[i-t];</div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span>     }</div>
-<div class="line"><a name="l00512"></a><span class="lineno">  512</span>       }</div>
-<div class="line"><a name="l00513"></a><span class="lineno">  513</span>     <span class="comment">//output[i]+=(m_taps[m_taps.size()/2+t]+m_taps[m_taps.size()/2-t])*input[i-t];</span></div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span>     }</div>
-<div class="line"><a name="l00515"></a><span class="lineno">  515</span>   }</div>
-<div class="line"><a name="l00516"></a><span class="lineno">  516</span> }</div>
-<div class="line"><a name="l00517"></a><span class="lineno">  517</span> </div>
-<div class="line"><a name="l00518"></a><span class="lineno">  518</span> <span class="comment">//todo: filling statBuffer can be optimized (no need to clear and fill entire buffer, just push back new value...)</span></div>
-<div class="line"><a name="l00519"></a><span class="lineno">  519</span>  <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> Filter::filter(<span class="keyword">const</span> std::vector<T>& input, std::vector<T>& output, <span class="keyword">const</span> std::string& method, <span class="keywordtype">int</span> dim)</div>
-<div class="line"><a name="l00520"></a><span class="lineno">  520</span> {</div>
-<div class="line"><a name="l00521"></a><span class="lineno">  521</span>   <span class="keywordtype">bool</span> verbose=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00522"></a><span class="lineno">  522</span>   assert(dim);</div>
-<div class="line"><a name="l00523"></a><span class="lineno">  523</span>   output.resize(input.size());</div>
-<div class="line"><a name="l00524"></a><span class="lineno">  524</span>   <span class="keywordtype">int</span> i=0;</div>
-<div class="line"><a name="l00525"></a><span class="lineno">  525</span>   <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00526"></a><span class="lineno">  526</span>   stat.setNoDataValues(m_noDataValues);</div>
-<div class="line"><a name="l00527"></a><span class="lineno">  527</span>   std::vector<T> statBuffer;</div>
-<div class="line"><a name="l00528"></a><span class="lineno">  528</span>   <span class="keywordtype">short</span> binValue=0;</div>
-<div class="line"><a name="l00529"></a><span class="lineno">  529</span>   <span class="comment">//start: extend input by padding</span></div>
-<div class="line"><a name="l00530"></a><span class="lineno">  530</span>   <span class="keywordflow">for</span>(i=0;i<dim/2;++i){</div>
-<div class="line"><a name="l00531"></a><span class="lineno">  531</span>     binValue=0;</div>
-<div class="line"><a name="l00532"></a><span class="lineno">  532</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<m_class.size();++iclass){</div>
-<div class="line"><a name="l00533"></a><span class="lineno">  533</span>       <span class="keywordflow">if</span>(input[i]==m_class[iclass]){</div>
-<div class="line"><a name="l00534"></a><span class="lineno">  534</span>         binValue=m_class[0];</div>
-<div class="line"><a name="l00535"></a><span class="lineno">  535</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00536"></a><span class="lineno">  536</span>       }</div>
-<div class="line"><a name="l00537"></a><span class="lineno">  537</span>     }</div>
-<div class="line"><a name="l00538"></a><span class="lineno">  538</span>     <span class="keywordflow">if</span>(m_class.size())</div>
-<div class="line"><a name="l00539"></a><span class="lineno">  539</span>       statBuffer.push_back(binValue);</div>
-<div class="line"><a name="l00540"></a><span class="lineno">  540</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00541"></a><span class="lineno">  541</span>       statBuffer.push_back(input[i]);</div>
-<div class="line"><a name="l00542"></a><span class="lineno">  542</span> </div>
-<div class="line"><a name="l00543"></a><span class="lineno">  543</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> t=1;t<=dim/2;++t){</div>
-<div class="line"><a name="l00544"></a><span class="lineno">  544</span>       T theValue=input[i+t];</div>
-<div class="line"><a name="l00545"></a><span class="lineno">  545</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<m_class.size();++iclass){</div>
-<div class="line"><a name="l00546"></a><span class="lineno">  546</span>         <span class="keywordflow">if</span>(theValue==m_class[iclass]){</div>
-<div class="line"><a name="l00547"></a><span class="lineno">  547</span>           binValue=m_class[0];</div>
-<div class="line"><a name="l00548"></a><span class="lineno">  548</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00549"></a><span class="lineno">  549</span>         }</div>
-<div class="line"><a name="l00550"></a><span class="lineno">  550</span>       }</div>
-<div class="line"><a name="l00551"></a><span class="lineno">  551</span>       <span class="keywordflow">if</span>(m_class.size())</div>
-<div class="line"><a name="l00552"></a><span class="lineno">  552</span>     statBuffer.push_back(binValue);</div>
-<div class="line"><a name="l00553"></a><span class="lineno">  553</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00554"></a><span class="lineno">  554</span>     statBuffer.push_back(theValue);</div>
-<div class="line"><a name="l00555"></a><span class="lineno">  555</span> </div>
-<div class="line"><a name="l00556"></a><span class="lineno">  556</span>       <span class="keywordflow">if</span>(i>=t){</div>
-<div class="line"><a name="l00557"></a><span class="lineno">  557</span>     theValue=input[i-t];</div>
-<div class="line"><a name="l00558"></a><span class="lineno">  558</span>       }</div>
-<div class="line"><a name="l00559"></a><span class="lineno">  559</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00560"></a><span class="lineno">  560</span>     <span class="keywordflow">switch</span>(getPadding(m_padding)){</div>
-<div class="line"><a name="l00561"></a><span class="lineno">  561</span>     <span class="keywordflow">case</span>(replicate):</div>
-<div class="line"><a name="l00562"></a><span class="lineno">  562</span>       theValue=input[0];</div>
-<div class="line"><a name="l00563"></a><span class="lineno">  563</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00564"></a><span class="lineno">  564</span>     <span class="keywordflow">case</span>(circular):</div>
-<div class="line"><a name="l00565"></a><span class="lineno">  565</span>       theValue=input[input.size()+i-t];</div>
-<div class="line"><a name="l00566"></a><span class="lineno">  566</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00567"></a><span class="lineno">  567</span>     <span class="keywordflow">case</span>(zero):</div>
-<div class="line"><a name="l00568"></a><span class="lineno">  568</span>       theValue=0;</div>
-<div class="line"><a name="l00569"></a><span class="lineno">  569</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00570"></a><span class="lineno">  570</span>     <span class="keywordflow">case</span>(symmetric):</div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span>     <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00572"></a><span class="lineno">  572</span>       theValue=input[t-i];</div>
-<div class="line"><a name="l00573"></a><span class="lineno">  573</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00574"></a><span class="lineno">  574</span>     }</div>
-<div class="line"><a name="l00575"></a><span class="lineno">  575</span>       }</div>
-<div class="line"><a name="l00576"></a><span class="lineno">  576</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<m_class.size();++iclass){</div>
-<div class="line"><a name="l00577"></a><span class="lineno">  577</span>         <span class="keywordflow">if</span>(theValue==m_class[iclass]){</div>
-<div class="line"><a name="l00578"></a><span class="lineno">  578</span>           binValue=m_class[0];</div>
-<div class="line"><a name="l00579"></a><span class="lineno">  579</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00580"></a><span class="lineno">  580</span>         }</div>
-<div class="line"><a name="l00581"></a><span class="lineno">  581</span>       }</div>
-<div class="line"><a name="l00582"></a><span class="lineno">  582</span>       <span class="keywordflow">if</span>(m_class.size())</div>
-<div class="line"><a name="l00583"></a><span class="lineno">  583</span>     statBuffer.push_back(binValue);</div>
-<div class="line"><a name="l00584"></a><span class="lineno">  584</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00585"></a><span class="lineno">  585</span>     statBuffer.push_back(theValue);</div>
-<div class="line"><a name="l00586"></a><span class="lineno">  586</span>     }</div>
-<div class="line"><a name="l00587"></a><span class="lineno">  587</span> </div>
-<div class="line"><a name="l00588"></a><span class="lineno">  588</span>     <span class="keywordflow">switch</span>(getFilterType(method)){</div>
-<div class="line"><a name="l00589"></a><span class="lineno">  589</span>     <span class="keywordflow">case</span>(filter::nvalid):</div>
-<div class="line"><a name="l00590"></a><span class="lineno">  590</span>       output[i]=stat.nvalid(statBuffer);</div>
-<div class="line"><a name="l00591"></a><span class="lineno">  591</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00592"></a><span class="lineno">  592</span>     <span class="keywordflow">case</span>(filter::median):</div>
-<div class="line"><a name="l00593"></a><span class="lineno">  593</span>       output[i]=stat.median(statBuffer);</div>
-<div class="line"><a name="l00594"></a><span class="lineno">  594</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00595"></a><span class="lineno">  595</span>     <span class="keywordflow">case</span>(filter::min):</div>
-<div class="line"><a name="l00596"></a><span class="lineno">  596</span>     <span class="keywordflow">case</span>(filter::erode):</div>
-<div class="line"><a name="l00597"></a><span class="lineno">  597</span>       output[i]=stat.mymin(statBuffer);</div>
-<div class="line"><a name="l00598"></a><span class="lineno">  598</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00599"></a><span class="lineno">  599</span>     <span class="keywordflow">case</span>(filter::max):</div>
-<div class="line"><a name="l00600"></a><span class="lineno">  600</span>     <span class="keywordflow">case</span>(filter::dilate):</div>
-<div class="line"><a name="l00601"></a><span class="lineno">  601</span>       output[i]=stat.mymax(statBuffer);</div>
-<div class="line"><a name="l00602"></a><span class="lineno">  602</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00603"></a><span class="lineno">  603</span>     <span class="keywordflow">case</span>(filter::sum):</div>
-<div class="line"><a name="l00604"></a><span class="lineno">  604</span>       output[i]=sqrt(stat.sum(statBuffer));</div>
-<div class="line"><a name="l00605"></a><span class="lineno">  605</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00606"></a><span class="lineno">  606</span>     <span class="keywordflow">case</span>(filter::var):</div>
-<div class="line"><a name="l00607"></a><span class="lineno">  607</span>       output[i]=stat.var(statBuffer);</div>
-<div class="line"><a name="l00608"></a><span class="lineno">  608</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00609"></a><span class="lineno">  609</span>     <span class="keywordflow">case</span>(filter::stdev):</div>
-<div class="line"><a name="l00610"></a><span class="lineno">  610</span>       output[i]=sqrt(stat.var(statBuffer));</div>
-<div class="line"><a name="l00611"></a><span class="lineno">  611</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00612"></a><span class="lineno">  612</span>     <span class="keywordflow">case</span>(filter::mean):</div>
-<div class="line"><a name="l00613"></a><span class="lineno">  613</span>       output[i]=stat.mean(statBuffer);</div>
-<div class="line"><a name="l00614"></a><span class="lineno">  614</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00615"></a><span class="lineno">  615</span>     <span class="keywordflow">case</span>(filter::percentile):</div>
-<div class="line"><a name="l00616"></a><span class="lineno">  616</span>       assert(m_threshold.size());</div>
-<div class="line"><a name="l00617"></a><span class="lineno">  617</span>       output[i]=stat.percentile(statBuffer,statBuffer.begin(),statBuffer.end(),m_threshold[0]);</div>
-<div class="line"><a name="l00618"></a><span class="lineno">  618</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00619"></a><span class="lineno">  619</span>     <span class="keywordflow">default</span>:{</div>
-<div class="line"><a name="l00620"></a><span class="lineno">  620</span>       std::ostringstream ess;</div>
-<div class="line"><a name="l00621"></a><span class="lineno">  621</span>       ess << <span class="stringliteral">"method "</span> << method << <span class="stringliteral">" ("</span> << getFilterType(method) << <span class="stringliteral">") not supported"</span>;</div>
-<div class="line"><a name="l00622"></a><span class="lineno">  622</span>       <span class="keywordflow">throw</span>(ess.str());</div>
-<div class="line"><a name="l00623"></a><span class="lineno">  623</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00624"></a><span class="lineno">  624</span>     }</div>
-<div class="line"><a name="l00625"></a><span class="lineno">  625</span>     }</div>
-<div class="line"><a name="l00626"></a><span class="lineno">  626</span>   }</div>
-<div class="line"><a name="l00627"></a><span class="lineno">  627</span>   <span class="comment">//main</span></div>
-<div class="line"><a name="l00628"></a><span class="lineno">  628</span>   statBuffer.clear();</div>
-<div class="line"><a name="l00629"></a><span class="lineno">  629</span>   <span class="keywordflow">for</span>(i=dim/2;i<input.size()-dim/2;++i){</div>
-<div class="line"><a name="l00630"></a><span class="lineno">  630</span>     binValue=0;</div>
-<div class="line"><a name="l00631"></a><span class="lineno">  631</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> t=0;t<dim;++t){</div>
-<div class="line"><a name="l00632"></a><span class="lineno">  632</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<m_class.size();++iclass){</div>
-<div class="line"><a name="l00633"></a><span class="lineno">  633</span>         <span class="keywordflow">if</span>(input[i-dim/2+t]==m_class[iclass]){</div>
-<div class="line"><a name="l00634"></a><span class="lineno">  634</span>           binValue=m_class[0];</div>
-<div class="line"><a name="l00635"></a><span class="lineno">  635</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00636"></a><span class="lineno">  636</span>         }</div>
-<div class="line"><a name="l00637"></a><span class="lineno">  637</span>       }</div>
-<div class="line"><a name="l00638"></a><span class="lineno">  638</span>       <span class="keywordflow">if</span>(m_class.size())</div>
-<div class="line"><a name="l00639"></a><span class="lineno">  639</span>         statBuffer.push_back(binValue);</div>
-<div class="line"><a name="l00640"></a><span class="lineno">  640</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00641"></a><span class="lineno">  641</span>         statBuffer.push_back(input[i-dim/2+t]);</div>
-<div class="line"><a name="l00642"></a><span class="lineno">  642</span>     }</div>
-<div class="line"><a name="l00643"></a><span class="lineno">  643</span>     <span class="keywordflow">switch</span>(getFilterType(method)){</div>
-<div class="line"><a name="l00644"></a><span class="lineno">  644</span>     <span class="keywordflow">case</span>(filter::nvalid):</div>
-<div class="line"><a name="l00645"></a><span class="lineno">  645</span>       output[i]=stat.nvalid(statBuffer);</div>
-<div class="line"><a name="l00646"></a><span class="lineno">  646</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00647"></a><span class="lineno">  647</span>     <span class="keywordflow">case</span>(filter::median):</div>
-<div class="line"><a name="l00648"></a><span class="lineno">  648</span>       output[i]=stat.median(statBuffer);</div>
-<div class="line"><a name="l00649"></a><span class="lineno">  649</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00650"></a><span class="lineno">  650</span>     <span class="keywordflow">case</span>(filter::min):</div>
-<div class="line"><a name="l00651"></a><span class="lineno">  651</span>     <span class="keywordflow">case</span>(filter::erode):</div>
-<div class="line"><a name="l00652"></a><span class="lineno">  652</span>       output[i]=stat.mymin(statBuffer);</div>
-<div class="line"><a name="l00653"></a><span class="lineno">  653</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00654"></a><span class="lineno">  654</span>     <span class="keywordflow">case</span>(filter::max):</div>
-<div class="line"><a name="l00655"></a><span class="lineno">  655</span>     <span class="keywordflow">case</span>(filter::dilate):</div>
-<div class="line"><a name="l00656"></a><span class="lineno">  656</span>       output[i]=stat.mymax(statBuffer);</div>
-<div class="line"><a name="l00657"></a><span class="lineno">  657</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00658"></a><span class="lineno">  658</span>     <span class="keywordflow">case</span>(filter::sum):</div>
-<div class="line"><a name="l00659"></a><span class="lineno">  659</span>       output[i]=sqrt(stat.sum(statBuffer));</div>
-<div class="line"><a name="l00660"></a><span class="lineno">  660</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00661"></a><span class="lineno">  661</span>     <span class="keywordflow">case</span>(filter::var):</div>
-<div class="line"><a name="l00662"></a><span class="lineno">  662</span>       output[i]=stat.var(statBuffer);</div>
-<div class="line"><a name="l00663"></a><span class="lineno">  663</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00664"></a><span class="lineno">  664</span>     <span class="keywordflow">case</span>(filter::mean):</div>
-<div class="line"><a name="l00665"></a><span class="lineno">  665</span>       output[i]=stat.mean(statBuffer);</div>
-<div class="line"><a name="l00666"></a><span class="lineno">  666</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00667"></a><span class="lineno">  667</span>     <span class="keywordflow">case</span>(filter::percentile):</div>
-<div class="line"><a name="l00668"></a><span class="lineno">  668</span>       assert(m_threshold.size());</div>
-<div class="line"><a name="l00669"></a><span class="lineno">  669</span>       output[i]=stat.percentile(statBuffer,statBuffer.begin(),statBuffer.end(),m_threshold[0]);</div>
-<div class="line"><a name="l00670"></a><span class="lineno">  670</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00671"></a><span class="lineno">  671</span>     <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00672"></a><span class="lineno">  672</span>       std::string errorString=<span class="stringliteral">"method not supported"</span>;</div>
-<div class="line"><a name="l00673"></a><span class="lineno">  673</span>       <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00674"></a><span class="lineno">  674</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00675"></a><span class="lineno">  675</span>     }</div>
-<div class="line"><a name="l00676"></a><span class="lineno">  676</span>     statBuffer.clear();</div>
-<div class="line"><a name="l00677"></a><span class="lineno">  677</span>   }</div>
-<div class="line"><a name="l00678"></a><span class="lineno">  678</span>   <span class="comment">//end: extend input by padding</span></div>
-<div class="line"><a name="l00679"></a><span class="lineno">  679</span>   <span class="keywordflow">for</span>(i=input.size()-dim/2;i<input.size();++i){</div>
-<div class="line"><a name="l00680"></a><span class="lineno">  680</span>     binValue=0;</div>
-<div class="line"><a name="l00681"></a><span class="lineno">  681</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<m_class.size();++iclass){</div>
-<div class="line"><a name="l00682"></a><span class="lineno">  682</span>       <span class="keywordflow">if</span>(input[i]==m_class[iclass]){</div>
-<div class="line"><a name="l00683"></a><span class="lineno">  683</span>     binValue=m_class[0];</div>
-<div class="line"><a name="l00684"></a><span class="lineno">  684</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00685"></a><span class="lineno">  685</span>       }</div>
-<div class="line"><a name="l00686"></a><span class="lineno">  686</span>     }</div>
-<div class="line"><a name="l00687"></a><span class="lineno">  687</span>     <span class="keywordflow">if</span>(m_class.size())</div>
-<div class="line"><a name="l00688"></a><span class="lineno">  688</span>       statBuffer.push_back(binValue);</div>
-<div class="line"><a name="l00689"></a><span class="lineno">  689</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00690"></a><span class="lineno">  690</span>       statBuffer.push_back(input[i]);</div>
-<div class="line"><a name="l00691"></a><span class="lineno">  691</span> </div>
-<div class="line"><a name="l00692"></a><span class="lineno">  692</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> t=1;t<=dim/2;++t){</div>
-<div class="line"><a name="l00693"></a><span class="lineno">  693</span>       T theValue=input[i-t];</div>
-<div class="line"><a name="l00694"></a><span class="lineno">  694</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<m_class.size();++iclass){</div>
-<div class="line"><a name="l00695"></a><span class="lineno">  695</span>     <span class="keywordflow">if</span>(theValue==m_class[iclass]){</div>
-<div class="line"><a name="l00696"></a><span class="lineno">  696</span>       binValue=m_class[0];</div>
-<div class="line"><a name="l00697"></a><span class="lineno">  697</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00698"></a><span class="lineno">  698</span>     }</div>
-<div class="line"><a name="l00699"></a><span class="lineno">  699</span>       }</div>
-<div class="line"><a name="l00700"></a><span class="lineno">  700</span>       <span class="keywordflow">if</span>(m_class.size())</div>
-<div class="line"><a name="l00701"></a><span class="lineno">  701</span>     statBuffer.push_back(binValue);</div>
-<div class="line"><a name="l00702"></a><span class="lineno">  702</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00703"></a><span class="lineno">  703</span>     statBuffer.push_back(theValue);</div>
-<div class="line"><a name="l00704"></a><span class="lineno">  704</span>       <span class="keywordflow">if</span>(i+t<input.size())</div>
-<div class="line"><a name="l00705"></a><span class="lineno">  705</span>     theValue=input[i+t];</div>
-<div class="line"><a name="l00706"></a><span class="lineno">  706</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00707"></a><span class="lineno">  707</span>     <span class="keywordflow">switch</span>(getPadding(m_padding)){</div>
-<div class="line"><a name="l00708"></a><span class="lineno">  708</span>     <span class="keywordflow">case</span>(replicate):</div>
-<div class="line"><a name="l00709"></a><span class="lineno">  709</span>       theValue=input.back();</div>
-<div class="line"><a name="l00710"></a><span class="lineno">  710</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00711"></a><span class="lineno">  711</span>     <span class="keywordflow">case</span>(circular):</div>
-<div class="line"><a name="l00712"></a><span class="lineno">  712</span>       theValue=input[t-1];</div>
-<div class="line"><a name="l00713"></a><span class="lineno">  713</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00714"></a><span class="lineno">  714</span>     <span class="keywordflow">case</span>(zero):</div>
-<div class="line"><a name="l00715"></a><span class="lineno">  715</span>       theValue=0;</div>
-<div class="line"><a name="l00716"></a><span class="lineno">  716</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00717"></a><span class="lineno">  717</span>     <span class="keywordflow">case</span>(symmetric):</div>
-<div class="line"><a name="l00718"></a><span class="lineno">  718</span>     <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00719"></a><span class="lineno">  719</span>       theValue=input[i-t];</div>
-<div class="line"><a name="l00720"></a><span class="lineno">  720</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00721"></a><span class="lineno">  721</span>     }</div>
-<div class="line"><a name="l00722"></a><span class="lineno">  722</span>       }</div>
-<div class="line"><a name="l00723"></a><span class="lineno">  723</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<m_class.size();++iclass){</div>
-<div class="line"><a name="l00724"></a><span class="lineno">  724</span>     <span class="keywordflow">if</span>(theValue==m_class[iclass]){</div>
-<div class="line"><a name="l00725"></a><span class="lineno">  725</span>       binValue=m_class[0];</div>
-<div class="line"><a name="l00726"></a><span class="lineno">  726</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00727"></a><span class="lineno">  727</span>     }</div>
-<div class="line"><a name="l00728"></a><span class="lineno">  728</span>       }</div>
-<div class="line"><a name="l00729"></a><span class="lineno">  729</span>       <span class="keywordflow">if</span>(m_class.size())</div>
-<div class="line"><a name="l00730"></a><span class="lineno">  730</span>     statBuffer.push_back(binValue);</div>
-<div class="line"><a name="l00731"></a><span class="lineno">  731</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00732"></a><span class="lineno">  732</span>     statBuffer.push_back(theValue);</div>
-<div class="line"><a name="l00733"></a><span class="lineno">  733</span>     }</div>
-<div class="line"><a name="l00734"></a><span class="lineno">  734</span>     <span class="keywordflow">switch</span>(getFilterType(method)){</div>
-<div class="line"><a name="l00735"></a><span class="lineno">  735</span>     <span class="keywordflow">case</span>(filter::nvalid):</div>
-<div class="line"><a name="l00736"></a><span class="lineno">  736</span>       output[i]=stat.nvalid(statBuffer);</div>
-<div class="line"><a name="l00737"></a><span class="lineno">  737</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00738"></a><span class="lineno">  738</span>     <span class="keywordflow">case</span>(filter::median):</div>
-<div class="line"><a name="l00739"></a><span class="lineno">  739</span>       output[i]=stat.median(statBuffer);</div>
-<div class="line"><a name="l00740"></a><span class="lineno">  740</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00741"></a><span class="lineno">  741</span>     <span class="keywordflow">case</span>(filter::min):</div>
-<div class="line"><a name="l00742"></a><span class="lineno">  742</span>     <span class="keywordflow">case</span>(filter::erode):</div>
-<div class="line"><a name="l00743"></a><span class="lineno">  743</span>       output[i]=stat.mymin(statBuffer);</div>
-<div class="line"><a name="l00744"></a><span class="lineno">  744</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00745"></a><span class="lineno">  745</span>     <span class="keywordflow">case</span>(filter::max):</div>
-<div class="line"><a name="l00746"></a><span class="lineno">  746</span>     <span class="keywordflow">case</span>(filter::dilate):</div>
-<div class="line"><a name="l00747"></a><span class="lineno">  747</span>       output[i]=stat.mymax(statBuffer);</div>
-<div class="line"><a name="l00748"></a><span class="lineno">  748</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00749"></a><span class="lineno">  749</span>     <span class="keywordflow">case</span>(filter::sum):</div>
-<div class="line"><a name="l00750"></a><span class="lineno">  750</span>       output[i]=sqrt(stat.sum(statBuffer));</div>
-<div class="line"><a name="l00751"></a><span class="lineno">  751</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00752"></a><span class="lineno">  752</span>     <span class="keywordflow">case</span>(filter::var):</div>
-<div class="line"><a name="l00753"></a><span class="lineno">  753</span>       output[i]=stat.var(statBuffer);</div>
-<div class="line"><a name="l00754"></a><span class="lineno">  754</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00755"></a><span class="lineno">  755</span>     <span class="keywordflow">case</span>(filter::mean):</div>
-<div class="line"><a name="l00756"></a><span class="lineno">  756</span>       output[i]=stat.mean(statBuffer);</div>
-<div class="line"><a name="l00757"></a><span class="lineno">  757</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00758"></a><span class="lineno">  758</span>     <span class="keywordflow">case</span>(filter::percentile):</div>
-<div class="line"><a name="l00759"></a><span class="lineno">  759</span>       assert(m_threshold.size());</div>
-<div class="line"><a name="l00760"></a><span class="lineno">  760</span>       output[i]=stat.percentile(statBuffer,statBuffer.begin(),statBuffer.end(),m_threshold[0]);</div>
-<div class="line"><a name="l00761"></a><span class="lineno">  761</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00762"></a><span class="lineno">  762</span>     <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00763"></a><span class="lineno">  763</span>       std::string errorString=<span class="stringliteral">"method not supported"</span>;</div>
-<div class="line"><a name="l00764"></a><span class="lineno">  764</span>       <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00765"></a><span class="lineno">  765</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00766"></a><span class="lineno">  766</span>     }</div>
-<div class="line"><a name="l00767"></a><span class="lineno">  767</span>   }</div>
-<div class="line"><a name="l00768"></a><span class="lineno">  768</span>  }</div>
-<div class="line"><a name="l00769"></a><span class="lineno">  769</span> </div>
-<div class="line"><a name="l00770"></a><span class="lineno">  770</span>  <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> Filter::smooth(T* input, <span class="keywordtype">int</span> inputSize, std::vector<T>& output, <span class="keywordtype">short</span> dim)</div>
-<div class="line"><a name="l00771"></a><span class="lineno">  771</span> {</div>
-<div class="line"><a name="l00772"></a><span class="lineno">  772</span>   assert(dim>0);</div>
-<div class="line"><a name="l00773"></a><span class="lineno">  773</span>   m_taps.resize(dim);</div>
-<div class="line"><a name="l00774"></a><span class="lineno">  774</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> itap=0;itap<dim;++itap)</div>
-<div class="line"><a name="l00775"></a><span class="lineno">  775</span>     m_taps[itap]=1.0/dim;</div>
-<div class="line"><a name="l00776"></a><span class="lineno">  776</span>   filter(input,output);</div>
-<div class="line"><a name="l00777"></a><span class="lineno">  777</span>  }</div>
-<div class="line"><a name="l00778"></a><span class="lineno">  778</span> </div>
-<div class="line"><a name="l00779"></a><span class="lineno">  779</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> Filter::filter(T* input, <span class="keywordtype">int</span> inputSize, std::vector<T>& output)</div>
-<div class="line"><a name="l00780"></a><span class="lineno">  780</span> {</div>
-<div class="line"><a name="l00781"></a><span class="lineno">  781</span>   assert(inputSize>=m_taps.size());</div>
-<div class="line"><a name="l00782"></a><span class="lineno">  782</span>   output.resize(inputSize);</div>
-<div class="line"><a name="l00783"></a><span class="lineno">  783</span>   <span class="keywordtype">int</span> i=0;</div>
-<div class="line"><a name="l00784"></a><span class="lineno">  784</span> </div>
-<div class="line"><a name="l00785"></a><span class="lineno">  785</span>   <span class="comment">//start: extend input by padding</span></div>
-<div class="line"><a name="l00786"></a><span class="lineno">  786</span>   <span class="keywordflow">for</span>(i=0;i<m_taps.size()/2;++i){</div>
-<div class="line"><a name="l00787"></a><span class="lineno">  787</span>     <span class="comment">//todo:introduce nodata</span></div>
-<div class="line"><a name="l00788"></a><span class="lineno">  788</span>     output[i]=m_taps[m_taps.size()/2]*input[i];</div>
-<div class="line"><a name="l00789"></a><span class="lineno">  789</span> </div>
-<div class="line"><a name="l00790"></a><span class="lineno">  790</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> t=1;t<=m_taps.size()/2;++t){</div>
-<div class="line"><a name="l00791"></a><span class="lineno">  791</span>       output[i]+=m_taps[m_taps.size()/2+t]*input[i+t];</div>
-<div class="line"><a name="l00792"></a><span class="lineno">  792</span>       <span class="keywordflow">if</span>(i>=t)</div>
-<div class="line"><a name="l00793"></a><span class="lineno">  793</span>     output[i]+=m_taps[m_taps.size()/2-t]*input[i-t];</div>
-<div class="line"><a name="l00794"></a><span class="lineno">  794</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00795"></a><span class="lineno">  795</span>     <span class="keywordflow">switch</span>(getPadding(m_padding)){</div>
-<div class="line"><a name="l00796"></a><span class="lineno">  796</span>     <span class="keywordflow">case</span>(replicate):</div>
-<div class="line"><a name="l00797"></a><span class="lineno">  797</span>       output[i]+=m_taps[m_taps.size()/2-t]*input[0];</div>
-<div class="line"><a name="l00798"></a><span class="lineno">  798</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00799"></a><span class="lineno">  799</span>     <span class="keywordflow">case</span>(circular):</div>
-<div class="line"><a name="l00800"></a><span class="lineno">  800</span>       output[i]+=m_taps[m_taps.size()/2-t]*input[input.size()+i-t];</div>
-<div class="line"><a name="l00801"></a><span class="lineno">  801</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00802"></a><span class="lineno">  802</span>     <span class="keywordflow">case</span>(zero):</div>
-<div class="line"><a name="l00803"></a><span class="lineno">  803</span>       output[i]+=m_taps[m_taps.size()/2-t]*0;</div>
-<div class="line"><a name="l00804"></a><span class="lineno">  804</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00805"></a><span class="lineno">  805</span>     <span class="keywordflow">case</span>(symmetric):</div>
-<div class="line"><a name="l00806"></a><span class="lineno">  806</span>     <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00807"></a><span class="lineno">  807</span>       output[i]+=m_taps[m_taps.size()/2-t]*input[t-i];</div>
-<div class="line"><a name="l00808"></a><span class="lineno">  808</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00809"></a><span class="lineno">  809</span>     }</div>
-<div class="line"><a name="l00810"></a><span class="lineno">  810</span>       }</div>
-<div class="line"><a name="l00811"></a><span class="lineno">  811</span>     }</div>
-<div class="line"><a name="l00812"></a><span class="lineno">  812</span>   }</div>
-<div class="line"><a name="l00813"></a><span class="lineno">  813</span>   <span class="comment">//main</span></div>
-<div class="line"><a name="l00814"></a><span class="lineno">  814</span>   <span class="keywordflow">for</span>(i=m_taps.size()/2;i<input.size()-m_taps.size()/2;++i){</div>
-<div class="line"><a name="l00815"></a><span class="lineno">  815</span>     <span class="comment">//todo:introduce nodata</span></div>
-<div class="line"><a name="l00816"></a><span class="lineno">  816</span>     T leaveOut=(*(m_taps.begin()))*input[i-m_taps.size()/2];</div>
-<div class="line"><a name="l00817"></a><span class="lineno">  817</span>     T include=(m_taps.back())*input[i+m_taps.size()/2];</div>
-<div class="line"><a name="l00818"></a><span class="lineno">  818</span>     output[i]=0;</div>
-<div class="line"><a name="l00819"></a><span class="lineno">  819</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> t=0;t<m_taps.size();++t)</div>
-<div class="line"><a name="l00820"></a><span class="lineno">  820</span>       output[i]+=input[i-m_taps.size()/2+t]*m_taps[t];</div>
-<div class="line"><a name="l00821"></a><span class="lineno">  821</span>   }</div>
-<div class="line"><a name="l00822"></a><span class="lineno">  822</span>   <span class="comment">//end: extend input by padding</span></div>
-<div class="line"><a name="l00823"></a><span class="lineno">  823</span>   <span class="keywordflow">for</span>(i=input.size()-m_taps.size()/2;i<input.size();++i){</div>
-<div class="line"><a name="l00824"></a><span class="lineno">  824</span>     <span class="comment">//todo:introduce nodata</span></div>
-<div class="line"><a name="l00825"></a><span class="lineno">  825</span>     output[i]=m_taps[m_taps.size()/2]*input[i];</div>
-<div class="line"><a name="l00826"></a><span class="lineno">  826</span>     <span class="comment">//todo:introduce nodata</span></div>
-<div class="line"><a name="l00827"></a><span class="lineno">  827</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> t=1;t<=m_taps.size()/2;++t){</div>
-<div class="line"><a name="l00828"></a><span class="lineno">  828</span>       output[i]+=m_taps[m_taps.size()/2-t]*input[i-t];</div>
-<div class="line"><a name="l00829"></a><span class="lineno">  829</span>       <span class="keywordflow">if</span>(i+t<input.size())</div>
-<div class="line"><a name="l00830"></a><span class="lineno">  830</span>     output[i]+=m_taps[m_taps.size()/2+t]*input[i+t];</div>
-<div class="line"><a name="l00831"></a><span class="lineno">  831</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00832"></a><span class="lineno">  832</span>     <span class="keywordflow">switch</span>(getPadding(m_padding)){</div>
-<div class="line"><a name="l00833"></a><span class="lineno">  833</span>     <span class="keywordflow">case</span>(replicate):</div>
-<div class="line"><a name="l00834"></a><span class="lineno">  834</span>       output[i]+=m_taps[m_taps.size()/2+t]*input.back();</div>
-<div class="line"><a name="l00835"></a><span class="lineno">  835</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00836"></a><span class="lineno">  836</span>     <span class="keywordflow">case</span>(circular):</div>
-<div class="line"><a name="l00837"></a><span class="lineno">  837</span>       output[i]+=m_taps[m_taps.size()/2+t]*input[t-1];</div>
-<div class="line"><a name="l00838"></a><span class="lineno">  838</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00839"></a><span class="lineno">  839</span>     <span class="keywordflow">case</span>(zero):</div>
-<div class="line"><a name="l00840"></a><span class="lineno">  840</span>       output[i]+=m_taps[m_taps.size()/2+t]*0;</div>
-<div class="line"><a name="l00841"></a><span class="lineno">  841</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00842"></a><span class="lineno">  842</span>     <span class="keywordflow">case</span>(symmetric):</div>
-<div class="line"><a name="l00843"></a><span class="lineno">  843</span>     <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00844"></a><span class="lineno">  844</span>       output[i]+=m_taps[m_taps.size()/2+t]*input[i-t];</div>
-<div class="line"><a name="l00845"></a><span class="lineno">  845</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00846"></a><span class="lineno">  846</span>     }</div>
-<div class="line"><a name="l00847"></a><span class="lineno">  847</span>       }</div>
-<div class="line"><a name="l00848"></a><span class="lineno">  848</span>     }</div>
-<div class="line"><a name="l00849"></a><span class="lineno">  849</span>   }</div>
-<div class="line"><a name="l00850"></a><span class="lineno">  850</span> }</div>
-<div class="line"><a name="l00851"></a><span class="lineno">  851</span> </div>
-<div class="line"><a name="l00852"></a><span class="lineno">  852</span> }</div>
-<div class="line"><a name="l00853"></a><span class="lineno">  853</span> </div>
-<div class="line"><a name="l00854"></a><span class="lineno">  854</span> <span class="preprocessor">#endif </span><span class="comment">/* _MYFILTER_H_ */</span><span class="preprocessor"></span></div>
-<div class="ttc" id="classfilter_1_1Filter_html"><div class="ttname"><a href="classfilter_1_1Filter.html">filter::Filter</a></div><div class="ttdef"><b>Definition:</b> <a href="Filter_8h_source.html#l00040">Filter.h:40</a></div></div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-<div class="ttc" id="classImgWriterGdal_html"><div class="ttname"><a href="classImgWriterGdal.html">ImgWriterGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgWriterGdal_8h_source.html#l00033">ImgWriterGdal.h:33</a></div></div>
-<div class="ttc" id="classVector2d_html"><div class="ttname"><a href="classVector2d.html">Vector2d< double ></a></div></div>
-<div class="ttc" id="classstatfactory_1_1StatFactory_html"><div class="ttname"><a href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></div><div class="ttdef"><b>Definition:</b> <a href="StatFactory_8h_source.html#l00043">StatFactory.h:43</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/Filter__old_8h_source.html b/doc/html/Filter__old_8h_source.html
deleted file mode 100644
index 4a3130a..0000000
--- a/doc/html/Filter__old_8h_source.html
+++ /dev/null
@@ -1,982 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/algorithms/Filter_old.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_e6df591b0639d4c4807ef64d058833e2.html">algorithms</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">Filter_old.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">Filter.h: class for filtering</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2012 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#ifndef _MYFILTER_H_</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor"></span><span class="preprocessor">#define _MYFILTER_H_</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <vector></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <iostream></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span> {</div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include <gsl/gsl_sort.h></span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include <gsl/gsl_wavelet.h></span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> }</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include "StatFactory.h"</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include "imageclasses/ImgReaderGdal.h"</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="preprocessor">#include "imageclasses/ImgWriterGdal.h"</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> </div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">namespace </span>filter</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> {</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>   </div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   <span class="keyword">enum</span> FILTER_TYPE { median=0, var=1 , min=2, max=3, sum=4, mean=5, minmax=6, dilate=7, erode=8, close=9, open=10, homog=11, sobelx=12, sobely=13, sobelxy=14, sobelyx=-14, smooth=15, density=16, majority=17, mixed=18, smoothnodata=19, threshold=20, ismin=21, ismax=22, heterog=23, order=24, stdev=25, dwt=26, dwti=27, dwt_cut=28, dwt_cut_from=29};</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>   <span class="keyword">enum</span> PADDING { symmetric=0, replicate=1, circular=2, constant=3};</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> </div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> <span class="keyword">class </span>Filter</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> {</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   Filter(<span class="keywordtype">void</span>);</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   Filter(<span class="keyword">const</span> std::vector<double> &taps);</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   <span class="keyword">virtual</span> ~Filter(){};</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>   <span class="keyword">static</span> PADDING getPadding(<span class="keyword">const</span> std::string& padString){</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     std::map<std::string, PADDING> padMap;</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     padMap[<span class="stringliteral">"constant"</span>]=filter::constant;</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     padMap[<span class="stringliteral">"symmetric"</span>]=filter::symmetric;</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     padMap[<span class="stringliteral">"replicate"</span>]=filter::replicate;</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     padMap[<span class="stringliteral">"circular"</span>]=filter::circular;</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     <span class="keywordflow">return</span>(padMap[padString]);</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>   };</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span> </div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>   <span class="keyword">static</span> <span class="keyword">const</span> gsl_wavelet_type* getWaveletType(<span class="keyword">const</span> std::string waveletType){</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <span class="keywordflow">if</span>(waveletType==<span class="stringliteral">"daubechies"</span>) <span class="keywordflow">return</span>(gsl_wavelet_daubechies);</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     <span class="keywordflow">if</span>(waveletType==<span class="stringliteral">"daubechies_centered"</span>) <span class="keywordflow">return</span>(gsl_wavelet_daubechies_centered);</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     <span class="keywordflow">if</span>(waveletType==<span class="stringliteral">"haar"</span>) <span class="keywordflow">return</span>(gsl_wavelet_haar);</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     <span class="keywordflow">if</span>(waveletType==<span class="stringliteral">"haar_centered"</span>) <span class="keywordflow">return</span>(gsl_wavelet_haar_centered);</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     <span class="keywordflow">if</span>(waveletType==<span class="stringliteral">"bspline"</span>) <span class="keywordflow">return</span>(gsl_wavelet_bspline);</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     <span class="keywordflow">if</span>(waveletType==<span class="stringliteral">"bspline_centered"</span>) <span class="keywordflow">return</span>(gsl_wavelet_bspline_centered);</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>   }</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>   <span class="keyword">static</span> FILTER_TYPE getFilterType(<span class="keyword">const</span> std::string filterType){</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     std::map<std::string, FILTER_TYPE> m_filterMap;</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     initFilterMap(m_filterMap);</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     <span class="keywordflow">return</span> m_filterMap[filterType];</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>   };</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>   <span class="keywordtype">void</span> setTaps(<span class="keyword">const</span> std::vector<double> &taps, <span class="keywordtype">bool</span> normalize=<span class="keyword">true</span>);</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>   <span class="keywordtype">void</span> pushClass(<span class="keywordtype">short</span> theClass=1){m_class.push_back(theClass);};</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>   <span class="keywordtype">void</span> pushMask(<span class="keywordtype">short</span> theMask=0){m_mask.push_back(theMask);};</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> filter(<span class="keyword">const</span> std::vector<T>& input, std::vector<T>& output);</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> filter(<span class="keyword">const</span> std::vector<T>& input, std::vector<T>& output, <span class="keyword">const</span> std::string& method, <span class="keywordtype">int</span> dim);</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> smooth(<span class="keyword">const</span> std::vector<T>& input, std::vector<T>& output, <span class="keywordtype">short</span> dim);</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> filter(T* input, <span class="keywordtype">int</span> inputSize, std::vector<T>& output);</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> smooth(T* input, <span class="keywordtype">int</span> inputSize, std::vector<T>& output, <span class="keywordtype">short</span> dim);</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> morphology(<span class="keyword">const</span> std::vector<T>& input, std::vector<T>& output, <span class="keyword">const</span> std::string& method, <span class="keywordtype">int</span> dim, <span class="keywordtype">bool</span> verbose=<span class="keyword">false</sp [...]
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>   <span class="keywordtype">void</span> morphology(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keyword">const</span> std::string& method, <span class="keywordtype">int</span> dim, <span class="keywordtype">short</span> verbose=0);</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>   <span class="keywordtype">void</span> filter(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output);</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>   <span class="keywordtype">void</span> stat(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keyword">const</span> std::string& method);</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>   <span class="keywordtype">void</span> filter(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keyword">const</span> std::string& method, <span class="keywordtype">int</span> dim);</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>   <span class="keywordtype">void</span> smooth(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keywordtype">short</span> dim);</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>   <span class="keywordtype">double</span> getCentreWavelength(<span class="keyword">const</span> std::vector<double> &wavelengthIn, <span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<double></a>& srf, <span class="keyword">const</span> std::string& interpolationType, <span class="keywordtype">double</span> delta=1.0, <span class="keywordtype">bool</span [...]
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> applySrf(<span class="keyword">const</span> std::vector<double> &wavelengthIn, <span class="keyword">const</span> std::vector<T>& input, <span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<double></a>& srf, <span class="keywor [...]
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> applySrf(<span class="keyword">const</span> std::vector<double> &wavelengthIn, <span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T></a>& input, <span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<d [...]
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span> </div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> applyFwhm(<span class="keyword">const</span> std::vector<double> &wavelengthIn, <span class="keyword">const</span> std::vector<T>& input, <span class="keyword">const</span> std::vector<double> &wavelengthOut, <span class="keyword">const</span> std::vector<dou [...]
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> applyFwhm(<span class="keyword">const</span> std::vector<double> &wavelengthIn, <span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T></a>& input, <span class="keyword">const</span> std::vector<double> &wavelengthOut, <span clas [...]
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   <span class="keywordtype">void</span> dwtForward(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keyword">const</span> std::string& wavelet_type, <span class="keywordtype">int</span> family);</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>   <span class="keywordtype">void</span> dwtInverse(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keyword">const</span> std::string& wavelet_type, <span class="keywordtype">int</span> family);</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>   <span class="keywordtype">void</span> dwtCut(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keyword">const</span> std::string& wavelet_type, <span class="keywordtype">int</span> family, <span class="keywordtype">double</span> cut);</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>   <span class="keywordtype">void</span> dwtForward(std::vector<double>& data, <span class="keyword">const</span> std::string& wavelet_type, <span class="keywordtype">int</span> family);</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   <span class="keywordtype">void</span> dwtInverse(std::vector<double>& data, <span class="keyword">const</span> std::string& wavelet_type, <span class="keywordtype">int</span> family);</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>   <span class="keywordtype">void</span> dwtCut(std::vector<double>& data, <span class="keyword">const</span> std::string& wavelet_type, <span class="keywordtype">int</span> family, <span class="keywordtype">double</span> cut);</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   <span class="keywordtype">void</span> dwtCutFrom(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& input, <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>& output, <span class="keyword">const</span> std::string& wavelet_type, <span class="keywordtype">int</span> family, <span class="keywordtype">int</span> band);</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span> </div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span> <span class="keyword">private</span>:</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span> </div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>   <span class="keyword">static</span> <span class="keywordtype">void</span> initFilterMap(std::map<std::string, FILTER_TYPE>& m_filterMap){</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     <span class="comment">//initialize Map</span></div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     m_filterMap[<span class="stringliteral">"dwt"</span>]=filter::dwt;</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     m_filterMap[<span class="stringliteral">"dwti"</span>]=filter::dwti;</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     m_filterMap[<span class="stringliteral">"dwt_cut"</span>]=filter::dwt_cut;</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     m_filterMap[<span class="stringliteral">"dwt_cut_from"</span>]=filter::dwt_cut_from;</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     m_filterMap[<span class="stringliteral">"stdev"</span>]=filter::stdev;</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     m_filterMap[<span class="stringliteral">"var"</span>]=filter::var;</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     m_filterMap[<span class="stringliteral">"min"</span>]=filter::min;</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     m_filterMap[<span class="stringliteral">"max"</span>]=filter::max;</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     m_filterMap[<span class="stringliteral">"sum"</span>]=filter::sum;</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>     m_filterMap[<span class="stringliteral">"mean"</span>]=filter::mean;</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>     m_filterMap[<span class="stringliteral">"minmax"</span>]=filter::minmax;</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>     m_filterMap[<span class="stringliteral">"dilate"</span>]=filter::dilate;</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>     m_filterMap[<span class="stringliteral">"erode"</span>]=filter::erode;</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     m_filterMap[<span class="stringliteral">"close"</span>]=filter::close;</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     m_filterMap[<span class="stringliteral">"open"</span>]=filter::open;</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     m_filterMap[<span class="stringliteral">"homog"</span>]=filter::homog;</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     m_filterMap[<span class="stringliteral">"sobelx"</span>]=filter::sobelx;</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     m_filterMap[<span class="stringliteral">"sobely"</span>]=filter::sobely;</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     m_filterMap[<span class="stringliteral">"sobelxy"</span>]=filter::sobelxy;</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>     m_filterMap[<span class="stringliteral">"sobelyx"</span>]=filter::sobelyx;</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>     m_filterMap[<span class="stringliteral">"smooth"</span>]=filter::smooth;</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>     m_filterMap[<span class="stringliteral">"density"</span>]=filter::density;</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>     m_filterMap[<span class="stringliteral">"majority"</span>]=filter::majority;</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>     m_filterMap[<span class="stringliteral">"mixed"</span>]=filter::mixed;</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     m_filterMap[<span class="stringliteral">"smoothnodata"</span>]=filter::smoothnodata;</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>     m_filterMap[<span class="stringliteral">"threshold"</span>]=filter::threshold;</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     m_filterMap[<span class="stringliteral">"ismin"</span>]=filter::ismin;</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>     m_filterMap[<span class="stringliteral">"ismax"</span>]=filter::ismax;</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>     m_filterMap[<span class="stringliteral">"heterog"</span>]=filter::heterog;</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>     m_filterMap[<span class="stringliteral">"order"</span>]=filter::order;</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>     m_filterMap[<span class="stringliteral">"median"</span>]=filter::median;</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>   }</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span> </div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>   std::vector<double> m_taps;</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>   std::vector<short> m_class;</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>   std::vector<short> m_mask;</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>   std::string m_padding;</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span> };</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span> </div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span> <span class="comment">//input[band], output</span></div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span> <span class="comment">//returns wavelength for which srf is maximum</span></div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> Filter::applySrf(<span class="keyword">const</span> std::vector<double> &wavelengthIn, <span class="keyword">const</span> std::vector<T>& input, <span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<double></a>& srf, <span class [...]
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span> {  </div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>   assert(srf.size()==2);<span class="comment">//[0]: wavelength, [1]: response function</span></div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>   <span class="keywordtype">int</span> nband=srf[0].size(); </div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>   <span class="keywordtype">double</span> start=floor(wavelengthIn[0]);</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>   <span class="keywordtype">double</span> end=ceil(wavelengthIn.back());</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>     std::cout << <span class="stringliteral">"wavelengths in ["</span> << start << <span class="stringliteral">","</span> << end << <span class="stringliteral">"]"</span> << std::endl << std::flush;</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span> </div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>   <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span> </div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>   gsl_interp_accel *acc;</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>   stat.allocAcc(acc);</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>   gsl_spline *spline;</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>   stat.getSpline(interpolationType,nband,spline);</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>   stat.initSpline(spline,&(srf[0][0]),&(srf[1][0]),nband);</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>     std::cout << <span class="stringliteral">"calculating norm of srf"</span> << std::endl << std::flush;</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   <span class="keywordtype">double</span> norm=0;</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>   norm=gsl_spline_eval_integ(spline,srf[0].front(),srf[0].back(),acc);</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>     std::cout << <span class="stringliteral">"norm of srf: "</span> << norm << std::endl << std::flush;</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>   gsl_spline_free(spline);</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>   gsl_interp_accel_free(acc);  </div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>   <span class="comment">//interpolate input and srf to delta</span></div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>   </div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>   std::vector<double> wavelength_fine;</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>   <span class="keywordflow">for</span>(<span class="keywordtype">double</span> win=floor(wavelengthIn[0]);win<=ceil(wavelengthIn.back());win+=delta)</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>     wavelength_fine.push_back(win);</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span> </div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>     std::cout << <span class="stringliteral">"interpolate wavelengths to "</span> << wavelength_fine.size() << <span class="stringliteral">" entries "</span> << std::endl;</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>   std::vector<double> srf_fine;<span class="comment">//spectral response function, interpolated for wavelength_fine</span></div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span> </div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>   stat.interpolateUp(srf[0],srf[1],wavelength_fine,interpolationType,srf_fine,verbose);</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>   assert(srf_fine.size()==wavelength_fine.size());</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span> </div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>   gsl_interp_accel *accOut;</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>   stat.allocAcc(accOut);</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>   gsl_spline *splineOut;</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>   stat.getSpline(interpolationType,wavelength_fine.size(),splineOut);</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>   assert(splineOut);</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span> </div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>   assert(wavelengthIn.size()==input.size());</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>   std::vector<double> input_fine;</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>   std::vector<double> product(wavelength_fine.size());</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>   std::vector<double> wavelengthOut(wavelength_fine.size());</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>   stat.interpolateUp(wavelengthIn,input,wavelength_fine,interpolationType,input_fine,verbose);</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span> </div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>     std::cout << <span class="stringliteral">"input_fine.size(): "</span> << input_fine.size() << std::endl;</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input_fine.size();++iband){</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>     product[iband]=input_fine[iband]*srf_fine[iband];</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>     wavelengthOut[iband]=wavelength_fine[iband]*srf_fine[iband];</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>   }</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span> </div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>   assert(input_fine.size()==srf_fine.size());</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>   assert(input_fine.size()==wavelength_fine.size());</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>   stat.initSpline(splineOut,&(wavelength_fine[0]),&(product[0]),wavelength_fine.size());</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>   <span class="keywordflow">if</span>(normalize)</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>     output=gsl_spline_eval_integ(splineOut,start,end,accOut)/norm;</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>     output=gsl_spline_eval_integ(splineOut,start,end,accOut);</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span> </div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>   stat.initSpline(splineOut,&(wavelength_fine[0]),&(wavelengthOut[0]),wavelength_fine.size());</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>   <span class="keywordtype">double</span> centreWavelength=gsl_spline_eval_integ(splineOut,start,end,accOut)/norm;</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>   </div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>   gsl_spline_free(splineOut);</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>   gsl_interp_accel_free(accOut);</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span> </div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>   <span class="comment">// double maxResponse=0;</span></div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>   <span class="comment">// int maxIndex=0;</span></div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>   <span class="comment">// for(int index=0;index<srf[1].size();++index){</span></div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>     <span class="comment">// if(maxResponse<srf[1][index]){</span></div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>     <span class="comment">//   maxResponse=srf[1][index];</span></div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>     <span class="comment">//   maxIndex=index;</span></div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>     <span class="comment">// }</span></div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>   <span class="comment">// }</span></div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>   <span class="comment">// return(srf[0][maxIndex]);</span></div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>   <span class="keywordflow">return</span>(centreWavelength);</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span> }</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span> </div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span> <span class="comment">//input[band][sample], output[sample] (if !transposeInput)</span></div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span> <span class="comment">//returns wavelength for which srf is maximum</span></div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> Filter::applySrf(<span class="keyword">const</span> std::vector<double> &wavelengthIn, <span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T></a>& input, <span class="keyword">const</span> <a class="code" href="classVector2d.html">Vecto [...]
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span> {  </div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>   assert(srf.size()==2);<span class="comment">//[0]: wavelength, [1]: response function</span></div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>   <span class="keywordtype">int</span> nband=srf[0].size(); </div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nsample=(transposeInput)? input.size():input[0].size();</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>   output.resize((nsample+down-1)/down);</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>   <span class="keywordtype">double</span> start=floor(wavelengthIn[0]);</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>   <span class="keywordtype">double</span> end=ceil(wavelengthIn.back());</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>     std::cout << <span class="stringliteral">"wavelengths in ["</span> << start << <span class="stringliteral">","</span> << end << <span class="stringliteral">"]"</span> << std::endl << std::flush;</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span> </div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>   <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span> </div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>   gsl_interp_accel *acc;</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>   stat.allocAcc(acc);</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>   gsl_spline *spline;</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>   stat.getSpline(interpolationType,nband,spline);</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>   stat.initSpline(spline,&(srf[0][0]),&(srf[1][0]),nband);</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>     std::cout << <span class="stringliteral">"calculating norm of srf"</span> << std::endl << std::flush;</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>   <span class="keywordtype">double</span> norm=0;</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>   norm=gsl_spline_eval_integ(spline,srf[0].front(),srf[0].back(),acc);</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>     std::cout << <span class="stringliteral">"norm of srf: "</span> << norm << std::endl << std::flush;</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>   gsl_spline_free(spline);</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>   gsl_interp_accel_free(acc);  </div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>   <span class="comment">//interpolate input and srf to delta</span></div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>   </div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>   std::vector<double> wavelength_fine;</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>   <span class="keywordflow">for</span>(<span class="keywordtype">double</span> win=floor(wavelengthIn[0]);win<=ceil(wavelengthIn.back());win+=delta)</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>     wavelength_fine.push_back(win);</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span> </div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>     std::cout << <span class="stringliteral">"interpolate wavelengths to "</span> << wavelength_fine.size() << <span class="stringliteral">" entries "</span> << std::endl;</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>   std::vector<double> srf_fine;<span class="comment">//spectral response function, interpolated for wavelength_fine</span></div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span> </div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>   stat.interpolateUp(srf[0],srf[1],wavelength_fine,interpolationType,srf_fine,verbose);</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>   assert(srf_fine.size()==wavelength_fine.size());</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span> </div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>   gsl_interp_accel *accOut;</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>   stat.allocAcc(accOut);</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>   gsl_spline *splineOut;</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>   stat.getSpline(interpolationType,wavelength_fine.size(),splineOut);</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>   assert(splineOut);</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span> </div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>   std::vector<double> wavelengthOut;</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>   <span class="keywordtype">double</span> centreWavelength=0;</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<nsample;++isample){</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>     <span class="keywordflow">if</span>((isample+1+down/2)%down)</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>     std::vector<T> inputValues;</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>     <span class="keywordflow">if</span>(transposeInput)</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>       inputValues=input[isample];</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>       input.selectCol(isample,inputValues);</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>     assert(wavelengthIn.size()==inputValues.size());</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>     std::vector<double> input_fine;</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>     std::vector<double> product(wavelength_fine.size());</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>     stat.interpolateUp(wavelengthIn,inputValues,wavelength_fine,interpolationType,input_fine,verbose);</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span> </div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input_fine.size();++iband){</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>       product[iband]=input_fine[iband]*srf_fine[iband];</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>       <span class="keywordflow">if</span>(wavelengthOut.size()<input_fine.size())</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>         wavelengthOut.push_back(wavelength_fine[iband]*srf_fine[iband]);</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>     }</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span> </div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>     assert(input_fine.size()==srf_fine.size());</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>     assert(input_fine.size()==wavelength_fine.size());</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>     stat.initSpline(splineOut,&(wavelength_fine[0]),&(product[0]),wavelength_fine.size());</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>     <span class="keywordflow">if</span>(normalize)</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>       output[isample/down]=gsl_spline_eval_integ(splineOut,start,end,accOut)/norm;</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>       output[isample/down]=gsl_spline_eval_integ(splineOut,start,end,accOut);</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span> </div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>     stat.initSpline(splineOut,&(wavelength_fine[0]),&(wavelengthOut[0]),wavelength_fine.size());</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>     <span class="keywordflow">if</span>(centreWavelength>0);</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>       centreWavelength=gsl_spline_eval_integ(splineOut,start,end,accOut)/norm;</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>   }</div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>   gsl_spline_free(splineOut);</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>   gsl_interp_accel_free(accOut);</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span> </div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>   <span class="comment">// double maxResponse=0;</span></div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>   <span class="comment">// int maxIndex=0;</span></div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>   <span class="comment">// for(int index=0;index<srf[1].size();++index){</span></div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>     <span class="comment">// if(maxResponse<srf[1][index]){</span></div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>     <span class="comment">//   maxResponse=srf[1][index];</span></div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>     <span class="comment">//   maxIndex=index;</span></div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>     <span class="comment">// }</span></div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>   <span class="comment">// }</span></div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>   <span class="comment">// return(srf[0][maxIndex]);</span></div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>   <span class="keywordflow">return</span>(centreWavelength);</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span> }</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span> </div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> Filter::applyFwhm(<span class="keyword">const</span> std::vector<double> &wavelengthIn, <span class="keyword">const</span> std::vector<T>& input, <span class="keyword">const</span> std::vector<double> &wavelengthOut, <span class="keyword">const</span> std::vector& [...]
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>   <span class="keywordtype">double</span> delta=1;<span class="comment">//1 nm resolution</span></div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>   std::vector<double> stddev(fwhm.size());</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> index=0;index<fwhm.size();++index)</div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>     stddev[index]=fwhm[index]/2.0/sqrt(2*log(2.0));<span class="comment">//http://mathworld.wolfram.com/FullWidthatHalfMaximum.html</span></div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>   assert(wavelengthOut.size()==fwhm.size());</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>   assert(wavelengthIn.size()==input.size());</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>   assert(wavelengthIn[0]<=wavelengthOut[0]);</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>   assert(wavelengthIn.back()>=wavelengthOut.back());</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>   <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>   std::vector<double> input_fine;</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>   std::vector<double> wavelength_fine;</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>   <span class="keywordflow">for</span>(<span class="keywordtype">double</span> win=floor(wavelengthIn[0]);win<=ceil(wavelengthIn.back());win+=delta)</div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>     wavelength_fine.push_back(win);</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>   <span class="keywordflow">if</span>(verbose){</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> index=0;index<wavelength_fine.size();++index)</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>       std::cout << <span class="stringliteral">" "</span> << wavelength_fine[index];</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>     std::cout << std::endl;</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>     std::cout << <span class="stringliteral">"interpolate input wavelength to "</span> << delta << <span class="stringliteral">" nm resolution (size="</span> << wavelength_fine.size() << <span class="stringliteral">")"</span> << std::endl;</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>   }</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>   stat.interpolateUp(wavelengthIn,input,wavelength_fine,interpolationType,input_fine,verbose);</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>   <span class="keywordtype">int</span> nbandIn=wavelength_fine.size();</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>     </div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>   <span class="keywordtype">int</span> nbandOut=wavelengthOut.size();</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>   output.resize(nbandOut);</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> tf(nbandIn,nbandOut);</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> indexOut=0;indexOut<nbandOut;++indexOut){</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>     <span class="keywordtype">double</span> norm=0;</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> indexIn=0;indexIn<nbandIn;++indexIn){</div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>       <span class="comment">// tf(indexIn,indexOut)=</span></div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>       tf[indexIn][indexOut]=</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>         exp((wavelengthOut[indexOut]-wavelength_fine[indexIn])</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>             *(wavelength_fine[indexIn]-wavelengthOut[indexOut])</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>             /2.0/stddev[indexOut]</div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>             /stddev[indexOut]);</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>       tf[indexIn][indexOut]/=sqrt(2.0*M_PI);</div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>       tf[indexIn][indexOut]/=stddev[indexOut];</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>       norm+=tf[indexIn][indexOut];</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>     }</div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>     output[indexOut]=0;</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> indexIn=0;indexIn<nbandIn;++indexIn)</div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>       output[indexOut]+=input_fine[indexIn]*tf[indexIn][indexOut]/norm;</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>   }</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span> }</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span> </div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span> </div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>   <span class="comment">//input[inBand][sample], output[outBand][sample]</span></div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> Filter::applyFwhm(<span class="keyword">const</span> std::vector<double> &wavelengthIn, <span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T></a>& input, <span class="keyword">const</span> std::vector<double> &wavelengthOut, <s [...]
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>   <span class="keywordtype">double</span> delta=1;<span class="comment">//1 nm resolution</span></div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>   std::vector<double> stddev(fwhm.size());</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> index=0;index<fwhm.size();++index)</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>     stddev[index]=fwhm[index]/2.0/sqrt(2*log(2.0));<span class="comment">//http://mathworld.wolfram.com/FullWidthatHalfMaximum.html</span></div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>   <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>   std::vector<double> wavelength_fine;</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>   <span class="keywordflow">for</span>(<span class="keywordtype">double</span> win=floor(wavelengthIn[0]);win<=ceil(wavelengthIn.back());win+=delta)</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>     wavelength_fine.push_back(win);</div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>   assert(wavelengthOut.size()==fwhm.size());</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>   assert(wavelengthIn[0]<=wavelengthOut[0]);</div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>   assert(wavelengthIn.back()>=wavelengthOut.back());</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>   <span class="keywordflow">if</span>(verbose){</div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> index=0;index<wavelength_fine.size();++index)</div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>       std::cout << <span class="stringliteral">" "</span> << wavelength_fine[index];</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>     std::cout << std::endl;</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>     std::cout << <span class="stringliteral">"interpolate input wavelength to "</span> << delta << <span class="stringliteral">" nm resolution (size="</span> << wavelength_fine.size() << <span class="stringliteral">")"</span> << std::endl;</div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>   }</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>   <span class="keywordtype">int</span> nbandIn=wavelength_fine.size();</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>   <span class="keywordtype">int</span> nbandOut=wavelengthOut.size();</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>   output.resize(nbandOut,(input[0].size()+down-1)/down);</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span> </div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> tf(nbandIn,nbandOut);</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>   std::vector<double> norm(nbandOut);</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> indexOut=0;indexOut<nbandOut;++indexOut){</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>     norm[indexOut]=0;</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> indexIn=0;indexIn<nbandIn;++indexIn){</div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>       tf[indexIn][indexOut]=</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>         exp((wavelengthOut[indexOut]-wavelength_fine[indexIn])</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>             *(wavelength_fine[indexIn]-wavelengthOut[indexOut])</div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>             /2.0/stddev[indexOut]</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>             /stddev[indexOut]);</div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>       tf[indexIn][indexOut]/=sqrt(2.0*M_PI);</div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>       tf[indexIn][indexOut]/=stddev[indexOut];</div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>       norm[indexOut]+=tf[indexIn][indexOut];</div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>     }</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>   }</div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span> </div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<input[0].size();++isample){</div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>     <span class="keywordflow">if</span>((isample+1+down/2)%down)</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span>     std::vector<T> inputValues;</div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>     input.selectCol(isample,inputValues);</div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span>     assert(wavelengthIn.size()==inputValues.size());</div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> indexOut=0;indexOut<nbandOut;++indexOut){</div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>       std::vector<double> input_fine;</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>       stat.interpolateUp(wavelengthIn,inputValues,wavelength_fine,interpolationType,input_fine,verbose);</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>       output[indexOut][(isample+down-1)/down]=0;</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> indexIn=0;indexIn<nbandIn;++indexIn){</div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>         output[indexOut][(isample+down-1)/down]+=input_fine[indexIn]*tf[indexIn][indexOut]/norm[indexOut];</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>       }</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>     }</div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>   }</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span> }</div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span> </div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> Filter::smooth(<span class="keyword">const</span> std::vector<T>& input, std::vector<T>& output, <span class="keywordtype">short</span> dim)</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span> {</div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>   assert(dim>0);</div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span>   m_taps.resize(dim);</div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> itap=0;itap<dim;++itap)</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>     m_taps[itap]=1.0/dim;</div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span>   filter(input,output);</div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span>  }</div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span> </div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> Filter::filter(<span class="keyword">const</span> std::vector<T>& input, std::vector<T>& output)</div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span> {</div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span>   assert(input.size()>m_taps.size());</div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span>   output.resize(input.size());</div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span>   <span class="keywordtype">int</span> i=0;</div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>   <span class="comment">//start: extend input with mirrored version of itself</span></div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>   <span class="keywordflow">for</span>(i=0;i<m_taps.size()/2;++i){</div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span>     <span class="comment">//todo:introduce nodata</span></div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span>     output[i]=m_taps[m_taps.size()/2]*input[i];</div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> t=1;t<=m_taps.size()/2;++t){</div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span>       output[i]+=m_taps[m_taps.size()/2+t]*input[i+t];</div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span>       <span class="keywordflow">if</span>(i>=t)</div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span>     output[i]+=m_taps[m_taps.size()/2-t]*input[i-t];</div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span>     <span class="keywordflow">switch</span>(getPadding(m_padding)){</div>
-<div class="line"><a name="l00445"></a><span class="lineno">  445</span>     <span class="keywordflow">case</span>(replicate):</div>
-<div class="line"><a name="l00446"></a><span class="lineno">  446</span>       output[i]+=m_taps[m_taps.size()/2-t]*input[0];</div>
-<div class="line"><a name="l00447"></a><span class="lineno">  447</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00448"></a><span class="lineno">  448</span>     <span class="keywordflow">case</span>(circular):</div>
-<div class="line"><a name="l00449"></a><span class="lineno">  449</span>       output[i]+=m_taps[m_taps.size()/2-t]*input[input.size()+i-t];</div>
-<div class="line"><a name="l00450"></a><span class="lineno">  450</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00451"></a><span class="lineno">  451</span>     <span class="keywordflow">case</span>(constant):</div>
-<div class="line"><a name="l00452"></a><span class="lineno">  452</span>       output[i]+=m_taps[m_taps.size()/2-t]*0;</div>
-<div class="line"><a name="l00453"></a><span class="lineno">  453</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00454"></a><span class="lineno">  454</span>     <span class="keywordflow">case</span>(symmetric):</div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span>     <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</span>       output[i]+=m_taps[m_taps.size()/2-t]*input[t-i];</div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00458"></a><span class="lineno">  458</span>     }</div>
-<div class="line"><a name="l00459"></a><span class="lineno">  459</span>       }</div>
-<div class="line"><a name="l00460"></a><span class="lineno">  460</span>       <span class="comment">//output[i]+=(m_taps[m_taps.size()/2+t]+m_taps[m_taps.size()/2-t])*input[i+t];</span></div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span>     }</div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span>   }</div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span>   <span class="comment">//main</span></div>
-<div class="line"><a name="l00464"></a><span class="lineno">  464</span>   <span class="keywordflow">for</span>(i=m_taps.size()/2;i<input.size()-m_taps.size()/2;++i){</div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span>     <span class="comment">//todo:introduce nodata</span></div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>     T leaveOut=(*(m_taps.begin()))*input[i-m_taps.size()/2];</div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span>     T include=(m_taps.back())*input[i+m_taps.size()/2];</div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span>     output[i]=0;</div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> t=0;t<m_taps.size();++t)</div>
-<div class="line"><a name="l00470"></a><span class="lineno">  470</span>       output[i]+=input[i-m_taps.size()/2+t]*m_taps[t];</div>
-<div class="line"><a name="l00471"></a><span class="lineno">  471</span>   }</div>
-<div class="line"><a name="l00472"></a><span class="lineno">  472</span>   <span class="comment">//end: extend input with mirrored version of itself</span></div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span>   <span class="keywordflow">for</span>(i=input.size()-m_taps.size()/2;i<input.size();++i){</div>
-<div class="line"><a name="l00474"></a><span class="lineno">  474</span>     <span class="comment">//todo:introduce nodata</span></div>
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span>     output[i]=m_taps[m_taps.size()/2]*input[i];</div>
-<div class="line"><a name="l00476"></a><span class="lineno">  476</span>     <span class="comment">//todo:introduce nodata</span></div>
-<div class="line"><a name="l00477"></a><span class="lineno">  477</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> t=1;t<=m_taps.size()/2;++t){</div>
-<div class="line"><a name="l00478"></a><span class="lineno">  478</span>       output[i]+=m_taps[m_taps.size()/2-t]*input[i-t];</div>
-<div class="line"><a name="l00479"></a><span class="lineno">  479</span>       <span class="keywordflow">if</span>(i+t<input.size())</div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span>     output[i]+=m_taps[m_taps.size()/2+t]*input[i+t];</div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00482"></a><span class="lineno">  482</span>     <span class="keywordflow">switch</span>(getPadding(m_padding)){</div>
-<div class="line"><a name="l00483"></a><span class="lineno">  483</span>     <span class="keywordflow">case</span>(replicate):</div>
-<div class="line"><a name="l00484"></a><span class="lineno">  484</span>       output[i]+=m_taps[m_taps.size()/2+t]*input.back();</div>
-<div class="line"><a name="l00485"></a><span class="lineno">  485</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00486"></a><span class="lineno">  486</span>     <span class="keywordflow">case</span>(circular):</div>
-<div class="line"><a name="l00487"></a><span class="lineno">  487</span>       output[i]+=m_taps[m_taps.size()/2+t]*input[t-1];</div>
-<div class="line"><a name="l00488"></a><span class="lineno">  488</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00489"></a><span class="lineno">  489</span>     <span class="keywordflow">case</span>(constant):</div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span>       output[i]+=m_taps[m_taps.size()/2+t]*0;</div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00492"></a><span class="lineno">  492</span>     <span class="keywordflow">case</span>(symmetric):</div>
-<div class="line"><a name="l00493"></a><span class="lineno">  493</span>     <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00494"></a><span class="lineno">  494</span>       output[i]+=m_taps[m_taps.size()/2+t]*input[i-t];</div>
-<div class="line"><a name="l00495"></a><span class="lineno">  495</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00496"></a><span class="lineno">  496</span>     }</div>
-<div class="line"><a name="l00497"></a><span class="lineno">  497</span>       }</div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span>     <span class="comment">//output[i]+=(m_taps[m_taps.size()/2+t]+m_taps[m_taps.size()/2-t])*input[i-t];</span></div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span>     }</div>
-<div class="line"><a name="l00500"></a><span class="lineno">  500</span>   }</div>
-<div class="line"><a name="l00501"></a><span class="lineno">  501</span> }</div>
-<div class="line"><a name="l00502"></a><span class="lineno">  502</span> </div>
-<div class="line"><a name="l00503"></a><span class="lineno">  503</span>  <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> Filter::filter(<span class="keyword">const</span> std::vector<T>& input, std::vector<T>& output, <span class="keyword">const</span> std::string& method, <span class="keywordtype">int</span> dim)</div>
-<div class="line"><a name="l00504"></a><span class="lineno">  504</span> {</div>
-<div class="line"><a name="l00505"></a><span class="lineno">  505</span>   <span class="keywordtype">bool</span> verbose=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00506"></a><span class="lineno">  506</span>   assert(dim);</div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span>   output.resize(input.size());</div>
-<div class="line"><a name="l00508"></a><span class="lineno">  508</span>   <span class="keywordtype">int</span> i=0;</div>
-<div class="line"><a name="l00509"></a><span class="lineno">  509</span>   <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span>   std::vector<T> statBuffer;</div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span>   <span class="keywordtype">short</span> binValue=0;</div>
-<div class="line"><a name="l00512"></a><span class="lineno">  512</span>   <span class="comment">//start: extend input with mirrored version of itself</span></div>
-<div class="line"><a name="l00513"></a><span class="lineno">  513</span>   <span class="keywordflow">for</span>(i=0;i<dim/2;++i){</div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span>     binValue=0;</div>
-<div class="line"><a name="l00515"></a><span class="lineno">  515</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<m_class.size();++iclass){</div>
-<div class="line"><a name="l00516"></a><span class="lineno">  516</span>       <span class="keywordflow">if</span>(input[i]==m_class[iclass]){</div>
-<div class="line"><a name="l00517"></a><span class="lineno">  517</span>         binValue=m_class[0];</div>
-<div class="line"><a name="l00518"></a><span class="lineno">  518</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00519"></a><span class="lineno">  519</span>       }</div>
-<div class="line"><a name="l00520"></a><span class="lineno">  520</span>     }</div>
-<div class="line"><a name="l00521"></a><span class="lineno">  521</span>     <span class="keywordflow">if</span>(m_class.size())</div>
-<div class="line"><a name="l00522"></a><span class="lineno">  522</span>       statBuffer.push_back(binValue);</div>
-<div class="line"><a name="l00523"></a><span class="lineno">  523</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00524"></a><span class="lineno">  524</span>       statBuffer.push_back(input[i]);</div>
-<div class="line"><a name="l00525"></a><span class="lineno">  525</span> </div>
-<div class="line"><a name="l00526"></a><span class="lineno">  526</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> t=1;t<=dim/2;++t){</div>
-<div class="line"><a name="l00527"></a><span class="lineno">  527</span>       T theValue=input[i+t];</div>
-<div class="line"><a name="l00528"></a><span class="lineno">  528</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<m_class.size();++iclass){</div>
-<div class="line"><a name="l00529"></a><span class="lineno">  529</span>         <span class="keywordflow">if</span>(theValue==m_class[iclass]){</div>
-<div class="line"><a name="l00530"></a><span class="lineno">  530</span>           binValue=m_class[0];</div>
-<div class="line"><a name="l00531"></a><span class="lineno">  531</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00532"></a><span class="lineno">  532</span>         }</div>
-<div class="line"><a name="l00533"></a><span class="lineno">  533</span>       }</div>
-<div class="line"><a name="l00534"></a><span class="lineno">  534</span>       <span class="keywordflow">if</span>(m_class.size())</div>
-<div class="line"><a name="l00535"></a><span class="lineno">  535</span>     statBuffer.push_back(binValue);</div>
-<div class="line"><a name="l00536"></a><span class="lineno">  536</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00537"></a><span class="lineno">  537</span>     statBuffer.push_back(theValue);</div>
-<div class="line"><a name="l00538"></a><span class="lineno">  538</span> </div>
-<div class="line"><a name="l00539"></a><span class="lineno">  539</span>       <span class="keywordflow">if</span>(i>=t){</div>
-<div class="line"><a name="l00540"></a><span class="lineno">  540</span>     theValue=input[i-t];</div>
-<div class="line"><a name="l00541"></a><span class="lineno">  541</span>       }</div>
-<div class="line"><a name="l00542"></a><span class="lineno">  542</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00543"></a><span class="lineno">  543</span>     <span class="keywordflow">switch</span>(getPadding(m_padding)){</div>
-<div class="line"><a name="l00544"></a><span class="lineno">  544</span>     <span class="keywordflow">case</span>(replicate):</div>
-<div class="line"><a name="l00545"></a><span class="lineno">  545</span>       theValue=input[0];</div>
-<div class="line"><a name="l00546"></a><span class="lineno">  546</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00547"></a><span class="lineno">  547</span>     <span class="keywordflow">case</span>(circular):</div>
-<div class="line"><a name="l00548"></a><span class="lineno">  548</span>       theValue=input[input.size()+i-t];</div>
-<div class="line"><a name="l00549"></a><span class="lineno">  549</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00550"></a><span class="lineno">  550</span>     <span class="keywordflow">case</span>(constant):</div>
-<div class="line"><a name="l00551"></a><span class="lineno">  551</span>       theValue=0;</div>
-<div class="line"><a name="l00552"></a><span class="lineno">  552</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00553"></a><span class="lineno">  553</span>     <span class="keywordflow">case</span>(symmetric):</div>
-<div class="line"><a name="l00554"></a><span class="lineno">  554</span>     <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00555"></a><span class="lineno">  555</span>       theValue=input[t-i];</div>
-<div class="line"><a name="l00556"></a><span class="lineno">  556</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00557"></a><span class="lineno">  557</span>     }</div>
-<div class="line"><a name="l00558"></a><span class="lineno">  558</span>       }</div>
-<div class="line"><a name="l00559"></a><span class="lineno">  559</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<m_class.size();++iclass){</div>
-<div class="line"><a name="l00560"></a><span class="lineno">  560</span>         <span class="keywordflow">if</span>(theValue==m_class[iclass]){</div>
-<div class="line"><a name="l00561"></a><span class="lineno">  561</span>           binValue=m_class[0];</div>
-<div class="line"><a name="l00562"></a><span class="lineno">  562</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00563"></a><span class="lineno">  563</span>         }</div>
-<div class="line"><a name="l00564"></a><span class="lineno">  564</span>       }</div>
-<div class="line"><a name="l00565"></a><span class="lineno">  565</span>       <span class="keywordflow">if</span>(m_class.size())</div>
-<div class="line"><a name="l00566"></a><span class="lineno">  566</span>     statBuffer.push_back(binValue);</div>
-<div class="line"><a name="l00567"></a><span class="lineno">  567</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00568"></a><span class="lineno">  568</span>     statBuffer.push_back(theValue);</div>
-<div class="line"><a name="l00569"></a><span class="lineno">  569</span>     }</div>
-<div class="line"><a name="l00570"></a><span class="lineno">  570</span> </div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span>     <span class="keywordflow">switch</span>(getFilterType(method)){</div>
-<div class="line"><a name="l00572"></a><span class="lineno">  572</span>     <span class="keywordflow">case</span>(filter::median):</div>
-<div class="line"><a name="l00573"></a><span class="lineno">  573</span>       output[i]=stat.median(statBuffer);</div>
-<div class="line"><a name="l00574"></a><span class="lineno">  574</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00575"></a><span class="lineno">  575</span>     <span class="keywordflow">case</span>(filter::min):</div>
-<div class="line"><a name="l00576"></a><span class="lineno">  576</span>       output[i]=stat.mymin(statBuffer);</div>
-<div class="line"><a name="l00577"></a><span class="lineno">  577</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00578"></a><span class="lineno">  578</span>     <span class="keywordflow">case</span>(filter::max):</div>
-<div class="line"><a name="l00579"></a><span class="lineno">  579</span>       output[i]=stat.mymax(statBuffer);</div>
-<div class="line"><a name="l00580"></a><span class="lineno">  580</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00581"></a><span class="lineno">  581</span>     <span class="keywordflow">case</span>(filter::sum):</div>
-<div class="line"><a name="l00582"></a><span class="lineno">  582</span>       output[i]=sqrt(stat.sum(statBuffer));</div>
-<div class="line"><a name="l00583"></a><span class="lineno">  583</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00584"></a><span class="lineno">  584</span>     <span class="keywordflow">case</span>(filter::var):</div>
-<div class="line"><a name="l00585"></a><span class="lineno">  585</span>       output[i]=stat.var(statBuffer);</div>
-<div class="line"><a name="l00586"></a><span class="lineno">  586</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00587"></a><span class="lineno">  587</span>     <span class="keywordflow">case</span>(filter::mean):</div>
-<div class="line"><a name="l00588"></a><span class="lineno">  588</span>       output[i]=stat.mean(statBuffer);</div>
-<div class="line"><a name="l00589"></a><span class="lineno">  589</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00590"></a><span class="lineno">  590</span>     <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00591"></a><span class="lineno">  591</span>       std::string errorString=<span class="stringliteral">"method not supported"</span>;</div>
-<div class="line"><a name="l00592"></a><span class="lineno">  592</span>       <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00593"></a><span class="lineno">  593</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00594"></a><span class="lineno">  594</span>     }</div>
-<div class="line"><a name="l00595"></a><span class="lineno">  595</span>   }</div>
-<div class="line"><a name="l00596"></a><span class="lineno">  596</span>   <span class="comment">//main</span></div>
-<div class="line"><a name="l00597"></a><span class="lineno">  597</span>   statBuffer.clear();</div>
-<div class="line"><a name="l00598"></a><span class="lineno">  598</span>   <span class="keywordflow">for</span>(i=dim/2;i<input.size()-dim/2;++i){</div>
-<div class="line"><a name="l00599"></a><span class="lineno">  599</span>     binValue=0;</div>
-<div class="line"><a name="l00600"></a><span class="lineno">  600</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> t=0;t<dim;++t){</div>
-<div class="line"><a name="l00601"></a><span class="lineno">  601</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<m_class.size();++iclass){</div>
-<div class="line"><a name="l00602"></a><span class="lineno">  602</span>         <span class="keywordflow">if</span>(input[i-dim/2+t]==m_class[iclass]){</div>
-<div class="line"><a name="l00603"></a><span class="lineno">  603</span>           binValue=m_class[0];</div>
-<div class="line"><a name="l00604"></a><span class="lineno">  604</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00605"></a><span class="lineno">  605</span>         }</div>
-<div class="line"><a name="l00606"></a><span class="lineno">  606</span>       }</div>
-<div class="line"><a name="l00607"></a><span class="lineno">  607</span>       <span class="keywordflow">if</span>(m_class.size())</div>
-<div class="line"><a name="l00608"></a><span class="lineno">  608</span>         statBuffer.push_back(binValue);</div>
-<div class="line"><a name="l00609"></a><span class="lineno">  609</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00610"></a><span class="lineno">  610</span>         statBuffer.push_back(input[i-dim/2+t]);</div>
-<div class="line"><a name="l00611"></a><span class="lineno">  611</span>     }</div>
-<div class="line"><a name="l00612"></a><span class="lineno">  612</span>     <span class="keywordflow">switch</span>(getFilterType(method)){</div>
-<div class="line"><a name="l00613"></a><span class="lineno">  613</span>     <span class="keywordflow">case</span>(filter::median):</div>
-<div class="line"><a name="l00614"></a><span class="lineno">  614</span>       output[i]=stat.median(statBuffer);</div>
-<div class="line"><a name="l00615"></a><span class="lineno">  615</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00616"></a><span class="lineno">  616</span>     <span class="keywordflow">case</span>(filter::min):</div>
-<div class="line"><a name="l00617"></a><span class="lineno">  617</span>       output[i]=stat.mymin(statBuffer);</div>
-<div class="line"><a name="l00618"></a><span class="lineno">  618</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00619"></a><span class="lineno">  619</span>     <span class="keywordflow">case</span>(filter::max):</div>
-<div class="line"><a name="l00620"></a><span class="lineno">  620</span>       output[i]=stat.mymax(statBuffer);</div>
-<div class="line"><a name="l00621"></a><span class="lineno">  621</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00622"></a><span class="lineno">  622</span>     <span class="keywordflow">case</span>(filter::sum):</div>
-<div class="line"><a name="l00623"></a><span class="lineno">  623</span>       output[i]=sqrt(stat.sum(statBuffer));</div>
-<div class="line"><a name="l00624"></a><span class="lineno">  624</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00625"></a><span class="lineno">  625</span>     <span class="keywordflow">case</span>(filter::var):</div>
-<div class="line"><a name="l00626"></a><span class="lineno">  626</span>       output[i]=stat.var(statBuffer);</div>
-<div class="line"><a name="l00627"></a><span class="lineno">  627</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00628"></a><span class="lineno">  628</span>     <span class="keywordflow">case</span>(filter::mean):</div>
-<div class="line"><a name="l00629"></a><span class="lineno">  629</span>       output[i]=stat.mean(statBuffer);</div>
-<div class="line"><a name="l00630"></a><span class="lineno">  630</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00631"></a><span class="lineno">  631</span>     <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00632"></a><span class="lineno">  632</span>       std::string errorString=<span class="stringliteral">"method not supported"</span>;</div>
-<div class="line"><a name="l00633"></a><span class="lineno">  633</span>       <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00634"></a><span class="lineno">  634</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00635"></a><span class="lineno">  635</span>     }</div>
-<div class="line"><a name="l00636"></a><span class="lineno">  636</span>     statBuffer.clear();</div>
-<div class="line"><a name="l00637"></a><span class="lineno">  637</span>   }</div>
-<div class="line"><a name="l00638"></a><span class="lineno">  638</span>   <span class="comment">//end: extend input with mirrored version of itself</span></div>
-<div class="line"><a name="l00639"></a><span class="lineno">  639</span>   <span class="keywordflow">for</span>(i=input.size()-dim/2;i<input.size();++i){</div>
-<div class="line"><a name="l00640"></a><span class="lineno">  640</span>     binValue=0;</div>
-<div class="line"><a name="l00641"></a><span class="lineno">  641</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<m_class.size();++iclass){</div>
-<div class="line"><a name="l00642"></a><span class="lineno">  642</span>       <span class="keywordflow">if</span>(input[i]==m_class[iclass]){</div>
-<div class="line"><a name="l00643"></a><span class="lineno">  643</span>     binValue=m_class[0];</div>
-<div class="line"><a name="l00644"></a><span class="lineno">  644</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00645"></a><span class="lineno">  645</span>       }</div>
-<div class="line"><a name="l00646"></a><span class="lineno">  646</span>     }</div>
-<div class="line"><a name="l00647"></a><span class="lineno">  647</span>     <span class="keywordflow">if</span>(m_class.size())</div>
-<div class="line"><a name="l00648"></a><span class="lineno">  648</span>       statBuffer.push_back(binValue);</div>
-<div class="line"><a name="l00649"></a><span class="lineno">  649</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00650"></a><span class="lineno">  650</span>       statBuffer.push_back(input[i]);</div>
-<div class="line"><a name="l00651"></a><span class="lineno">  651</span> </div>
-<div class="line"><a name="l00652"></a><span class="lineno">  652</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> t=1;t<=dim/2;++t){</div>
-<div class="line"><a name="l00653"></a><span class="lineno">  653</span>       T theValue=input[i-t];</div>
-<div class="line"><a name="l00654"></a><span class="lineno">  654</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<m_class.size();++iclass){</div>
-<div class="line"><a name="l00655"></a><span class="lineno">  655</span>     <span class="keywordflow">if</span>(theValue==m_class[iclass]){</div>
-<div class="line"><a name="l00656"></a><span class="lineno">  656</span>       binValue=m_class[0];</div>
-<div class="line"><a name="l00657"></a><span class="lineno">  657</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00658"></a><span class="lineno">  658</span>     }</div>
-<div class="line"><a name="l00659"></a><span class="lineno">  659</span>       }</div>
-<div class="line"><a name="l00660"></a><span class="lineno">  660</span>       <span class="keywordflow">if</span>(m_class.size())</div>
-<div class="line"><a name="l00661"></a><span class="lineno">  661</span>     statBuffer.push_back(binValue);</div>
-<div class="line"><a name="l00662"></a><span class="lineno">  662</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00663"></a><span class="lineno">  663</span>     statBuffer.push_back(theValue);</div>
-<div class="line"><a name="l00664"></a><span class="lineno">  664</span>       <span class="keywordflow">if</span>(i+t<input.size())</div>
-<div class="line"><a name="l00665"></a><span class="lineno">  665</span>     theValue=input[i+t];</div>
-<div class="line"><a name="l00666"></a><span class="lineno">  666</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00667"></a><span class="lineno">  667</span>     <span class="keywordflow">switch</span>(getPadding(m_padding)){</div>
-<div class="line"><a name="l00668"></a><span class="lineno">  668</span>     replicate:</div>
-<div class="line"><a name="l00669"></a><span class="lineno">  669</span>       theValue=input.back();</div>
-<div class="line"><a name="l00670"></a><span class="lineno">  670</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00671"></a><span class="lineno">  671</span>     circular:</div>
-<div class="line"><a name="l00672"></a><span class="lineno">  672</span>       theValue=input[t-1];</div>
-<div class="line"><a name="l00673"></a><span class="lineno">  673</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00674"></a><span class="lineno">  674</span>     constant:</div>
-<div class="line"><a name="l00675"></a><span class="lineno">  675</span>       theValue=0;</div>
-<div class="line"><a name="l00676"></a><span class="lineno">  676</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00677"></a><span class="lineno">  677</span>     symmetric:</div>
-<div class="line"><a name="l00678"></a><span class="lineno">  678</span>     <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00679"></a><span class="lineno">  679</span>       theValue=input[i-t];</div>
-<div class="line"><a name="l00680"></a><span class="lineno">  680</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00681"></a><span class="lineno">  681</span>     }</div>
-<div class="line"><a name="l00682"></a><span class="lineno">  682</span>       }</div>
-<div class="line"><a name="l00683"></a><span class="lineno">  683</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<m_class.size();++iclass){</div>
-<div class="line"><a name="l00684"></a><span class="lineno">  684</span>     <span class="keywordflow">if</span>(theValue==m_class[iclass]){</div>
-<div class="line"><a name="l00685"></a><span class="lineno">  685</span>       binValue=m_class[0];</div>
-<div class="line"><a name="l00686"></a><span class="lineno">  686</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00687"></a><span class="lineno">  687</span>     }</div>
-<div class="line"><a name="l00688"></a><span class="lineno">  688</span>       }</div>
-<div class="line"><a name="l00689"></a><span class="lineno">  689</span>       <span class="keywordflow">if</span>(m_class.size())</div>
-<div class="line"><a name="l00690"></a><span class="lineno">  690</span>     statBuffer.push_back(binValue);</div>
-<div class="line"><a name="l00691"></a><span class="lineno">  691</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00692"></a><span class="lineno">  692</span>     statBuffer.push_back(theValue);</div>
-<div class="line"><a name="l00693"></a><span class="lineno">  693</span>     }</div>
-<div class="line"><a name="l00694"></a><span class="lineno">  694</span>     <span class="keywordflow">switch</span>(getFilterType(method)){</div>
-<div class="line"><a name="l00695"></a><span class="lineno">  695</span>     <span class="keywordflow">case</span>(filter::median):</div>
-<div class="line"><a name="l00696"></a><span class="lineno">  696</span>       output[i]=stat.median(statBuffer);</div>
-<div class="line"><a name="l00697"></a><span class="lineno">  697</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00698"></a><span class="lineno">  698</span>     <span class="keywordflow">case</span>(filter::min):</div>
-<div class="line"><a name="l00699"></a><span class="lineno">  699</span>       output[i]=stat.mymin(statBuffer);</div>
-<div class="line"><a name="l00700"></a><span class="lineno">  700</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00701"></a><span class="lineno">  701</span>     <span class="keywordflow">case</span>(filter::max):</div>
-<div class="line"><a name="l00702"></a><span class="lineno">  702</span>       output[i]=stat.mymax(statBuffer);</div>
-<div class="line"><a name="l00703"></a><span class="lineno">  703</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00704"></a><span class="lineno">  704</span>     <span class="keywordflow">case</span>(filter::sum):</div>
-<div class="line"><a name="l00705"></a><span class="lineno">  705</span>       output[i]=sqrt(stat.sum(statBuffer));</div>
-<div class="line"><a name="l00706"></a><span class="lineno">  706</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00707"></a><span class="lineno">  707</span>     <span class="keywordflow">case</span>(filter::var):</div>
-<div class="line"><a name="l00708"></a><span class="lineno">  708</span>       output[i]=stat.var(statBuffer);</div>
-<div class="line"><a name="l00709"></a><span class="lineno">  709</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00710"></a><span class="lineno">  710</span>     <span class="keywordflow">case</span>(filter::mean):</div>
-<div class="line"><a name="l00711"></a><span class="lineno">  711</span>       output[i]=stat.mean(statBuffer);</div>
-<div class="line"><a name="l00712"></a><span class="lineno">  712</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00713"></a><span class="lineno">  713</span>     <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00714"></a><span class="lineno">  714</span>       std::string errorString=<span class="stringliteral">"method not supported"</span>;</div>
-<div class="line"><a name="l00715"></a><span class="lineno">  715</span>       <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00716"></a><span class="lineno">  716</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00717"></a><span class="lineno">  717</span>     }</div>
-<div class="line"><a name="l00718"></a><span class="lineno">  718</span>   }</div>
-<div class="line"><a name="l00719"></a><span class="lineno">  719</span>  }</div>
-<div class="line"><a name="l00720"></a><span class="lineno">  720</span> </div>
-<div class="line"><a name="l00721"></a><span class="lineno">  721</span> </div>
-<div class="line"><a name="l00722"></a><span class="lineno">  722</span>  <span class="comment">//todo: this function is redundant, can be incorporated within filter</span></div>
-<div class="line"><a name="l00723"></a><span class="lineno">  723</span>  <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> Filter::morphology(<span class="keyword">const</span> std::vector<T>& input, std::vector<T>& output, <span class="keyword">const</span> std::string& method, <span class="keywordtype">int</span> dim, <span class="keywordtype">bool</span> verbose)</div>
-<div class="line"><a name="l00724"></a><span class="lineno">  724</span> {</div>
-<div class="line"><a name="l00725"></a><span class="lineno">  725</span>   assert(dim);</div>
-<div class="line"><a name="l00726"></a><span class="lineno">  726</span>   output.resize((input.size());</div>
-<div class="line"><a name="l00727"></a><span class="lineno">  727</span>   <span class="keywordtype">int</span> i=0;</div>
-<div class="line"><a name="l00728"></a><span class="lineno">  728</span>   <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00729"></a><span class="lineno">  729</span>   std::vector<T> statBuffer;</div>
-<div class="line"><a name="l00730"></a><span class="lineno">  730</span>   <span class="keywordtype">short</span> binValue=0;</div>
-<div class="line"><a name="l00731"></a><span class="lineno">  731</span>   <span class="comment">//start: extend input with mirrored version of itself</span></div>
-<div class="line"><a name="l00732"></a><span class="lineno">  732</span>   <span class="keywordflow">for</span>(i=0;i<dim/2;++i){</div>
-<div class="line"><a name="l00733"></a><span class="lineno">  733</span>     binValue=0;</div>
-<div class="line"><a name="l00734"></a><span class="lineno">  734</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<m_class.size();++iclass){</div>
-<div class="line"><a name="l00735"></a><span class="lineno">  735</span>       <span class="keywordflow">if</span>(input[i]==m_class[iclass]){</div>
-<div class="line"><a name="l00736"></a><span class="lineno">  736</span>         binValue=m_class[0];</div>
-<div class="line"><a name="l00737"></a><span class="lineno">  737</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00738"></a><span class="lineno">  738</span>       }</div>
-<div class="line"><a name="l00739"></a><span class="lineno">  739</span>     }</div>
-<div class="line"><a name="l00740"></a><span class="lineno">  740</span>     <span class="keywordflow">if</span>(m_class.size())</div>
-<div class="line"><a name="l00741"></a><span class="lineno">  741</span>       statBuffer.push_back(binValue);</div>
-<div class="line"><a name="l00742"></a><span class="lineno">  742</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00743"></a><span class="lineno">  743</span>       statBuffer.push_back(input[i]);</div>
-<div class="line"><a name="l00744"></a><span class="lineno">  744</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> t=1;t<=dim/2;++t){</div>
-<div class="line"><a name="l00745"></a><span class="lineno">  745</span>       binValue=0;</div>
-<div class="line"><a name="l00746"></a><span class="lineno">  746</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<m_class.size();++iclass){</div>
-<div class="line"><a name="l00747"></a><span class="lineno">  747</span>         <span class="keywordflow">if</span>(input[i+t]==m_class[iclass]){</div>
-<div class="line"><a name="l00748"></a><span class="lineno">  748</span>           binValue=m_class[0];</div>
-<div class="line"><a name="l00749"></a><span class="lineno">  749</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00750"></a><span class="lineno">  750</span>         }</div>
-<div class="line"><a name="l00751"></a><span class="lineno">  751</span>       }</div>
-<div class="line"><a name="l00752"></a><span class="lineno">  752</span>       <span class="keywordflow">if</span>(m_class.size()){</div>
-<div class="line"><a name="l00753"></a><span class="lineno">  753</span>         statBuffer.push_back(binValue);</div>
-<div class="line"><a name="l00754"></a><span class="lineno">  754</span>         statBuffer.push_back(binValue);</div>
-<div class="line"><a name="l00755"></a><span class="lineno">  755</span>       }</div>
-<div class="line"><a name="l00756"></a><span class="lineno">  756</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00757"></a><span class="lineno">  757</span>         statBuffer.push_back(input[i+t]);</div>
-<div class="line"><a name="l00758"></a><span class="lineno">  758</span>         statBuffer.push_back(input[i+t]);</div>
-<div class="line"><a name="l00759"></a><span class="lineno">  759</span>       }</div>
-<div class="line"><a name="l00760"></a><span class="lineno">  760</span>     }</div>
-<div class="line"><a name="l00761"></a><span class="lineno">  761</span>     <span class="comment">/* assert(statBuffer.size()==dim); */</span></div>
-<div class="line"><a name="l00762"></a><span class="lineno">  762</span>     <span class="keywordflow">switch</span>(getFilterType(method)){</div>
-<div class="line"><a name="l00763"></a><span class="lineno">  763</span>     <span class="keywordflow">case</span>(filter::dilate):</div>
-<div class="line"><a name="l00764"></a><span class="lineno">  764</span>       output[i]=stat.mymax(statBuffer);</div>
-<div class="line"><a name="l00765"></a><span class="lineno">  765</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00766"></a><span class="lineno">  766</span>     <span class="keywordflow">case</span>(filter::erode):</div>
-<div class="line"><a name="l00767"></a><span class="lineno">  767</span>       output[i]=stat.mymin(statBuffer);</div>
-<div class="line"><a name="l00768"></a><span class="lineno">  768</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00769"></a><span class="lineno">  769</span>     <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00770"></a><span class="lineno">  770</span>       std::string errorString=<span class="stringliteral">"method not supported"</span>;</div>
-<div class="line"><a name="l00771"></a><span class="lineno">  771</span>       <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00772"></a><span class="lineno">  772</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00773"></a><span class="lineno">  773</span>     }</div>
-<div class="line"><a name="l00774"></a><span class="lineno">  774</span>     <span class="keywordflow">if</span>(verbose){</div>
-<div class="line"><a name="l00775"></a><span class="lineno">  775</span>       std::cout << <span class="stringliteral">"buffer: "</span>;</div>
-<div class="line"><a name="l00776"></a><span class="lineno">  776</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ibuf=0;ibuf<statBuffer.size();++ibuf)</div>
-<div class="line"><a name="l00777"></a><span class="lineno">  777</span>         std::cout << statBuffer[ibuf] << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00778"></a><span class="lineno">  778</span>       std::cout << <span class="stringliteral">"->"</span> << output[i] << std::endl;</div>
-<div class="line"><a name="l00779"></a><span class="lineno">  779</span>     }</div>
-<div class="line"><a name="l00780"></a><span class="lineno">  780</span>   }</div>
-<div class="line"><a name="l00781"></a><span class="lineno">  781</span>   <span class="comment">//main</span></div>
-<div class="line"><a name="l00782"></a><span class="lineno">  782</span>   statBuffer.clear();</div>
-<div class="line"><a name="l00783"></a><span class="lineno">  783</span>   <span class="keywordflow">for</span>(i=dim/2;i<input.size()-dim/2;++i){</div>
-<div class="line"><a name="l00784"></a><span class="lineno">  784</span>     binValue=0;</div>
-<div class="line"><a name="l00785"></a><span class="lineno">  785</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> t=0;t<dim;++t){</div>
-<div class="line"><a name="l00786"></a><span class="lineno">  786</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<m_class.size();++iclass){</div>
-<div class="line"><a name="l00787"></a><span class="lineno">  787</span>         <span class="keywordflow">if</span>(input[i-dim/2+t]==m_class[iclass]){</div>
-<div class="line"><a name="l00788"></a><span class="lineno">  788</span>           binValue=m_class[0];</div>
-<div class="line"><a name="l00789"></a><span class="lineno">  789</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00790"></a><span class="lineno">  790</span>         }</div>
-<div class="line"><a name="l00791"></a><span class="lineno">  791</span>       }</div>
-<div class="line"><a name="l00792"></a><span class="lineno">  792</span>       <span class="keywordflow">if</span>(m_class.size())</div>
-<div class="line"><a name="l00793"></a><span class="lineno">  793</span>         statBuffer.push_back(binValue);</div>
-<div class="line"><a name="l00794"></a><span class="lineno">  794</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00795"></a><span class="lineno">  795</span>         statBuffer.push_back(input[i-dim/2+t]);</div>
-<div class="line"><a name="l00796"></a><span class="lineno">  796</span>     }</div>
-<div class="line"><a name="l00797"></a><span class="lineno">  797</span>     <span class="comment">/* assert(statBuffer.size()==dim); */</span></div>
-<div class="line"><a name="l00798"></a><span class="lineno">  798</span>     <span class="keywordflow">switch</span>(getFilterType(method)){</div>
-<div class="line"><a name="l00799"></a><span class="lineno">  799</span>     <span class="keywordflow">case</span>(filter::dilate):</div>
-<div class="line"><a name="l00800"></a><span class="lineno">  800</span>       output[i]=stat.mymax(statBuffer);</div>
-<div class="line"><a name="l00801"></a><span class="lineno">  801</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00802"></a><span class="lineno">  802</span>     <span class="keywordflow">case</span>(filter::erode):</div>
-<div class="line"><a name="l00803"></a><span class="lineno">  803</span>       output[i]=stat.mymin(statBuffer);</div>
-<div class="line"><a name="l00804"></a><span class="lineno">  804</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00805"></a><span class="lineno">  805</span>     <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00806"></a><span class="lineno">  806</span>       std::string errorString=<span class="stringliteral">"method not supported"</span>;</div>
-<div class="line"><a name="l00807"></a><span class="lineno">  807</span>       <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00808"></a><span class="lineno">  808</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00809"></a><span class="lineno">  809</span>     }</div>
-<div class="line"><a name="l00810"></a><span class="lineno">  810</span>     <span class="keywordflow">if</span>(verbose){</div>
-<div class="line"><a name="l00811"></a><span class="lineno">  811</span>       std::cout << <span class="stringliteral">"buffer: "</span>;</div>
-<div class="line"><a name="l00812"></a><span class="lineno">  812</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ibuf=0;ibuf<statBuffer.size();++ibuf)</div>
-<div class="line"><a name="l00813"></a><span class="lineno">  813</span>         std::cout << statBuffer[ibuf] << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00814"></a><span class="lineno">  814</span>       std::cout << <span class="stringliteral">"->"</span> << output[i] << std::endl;</div>
-<div class="line"><a name="l00815"></a><span class="lineno">  815</span>     }</div>
-<div class="line"><a name="l00816"></a><span class="lineno">  816</span>     statBuffer.clear();</div>
-<div class="line"><a name="l00817"></a><span class="lineno">  817</span>   }</div>
-<div class="line"><a name="l00818"></a><span class="lineno">  818</span>   <span class="comment">//end: extend input with mirrored version of itself</span></div>
-<div class="line"><a name="l00819"></a><span class="lineno">  819</span>   <span class="keywordflow">for</span>(i=input.size()-dim/2;i<input.size();++i){</div>
-<div class="line"><a name="l00820"></a><span class="lineno">  820</span>       binValue=0;</div>
-<div class="line"><a name="l00821"></a><span class="lineno">  821</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<m_class.size();++iclass){</div>
-<div class="line"><a name="l00822"></a><span class="lineno">  822</span>         <span class="keywordflow">if</span>(input[i]==m_class[iclass]){</div>
-<div class="line"><a name="l00823"></a><span class="lineno">  823</span>           binValue=m_class[0];</div>
-<div class="line"><a name="l00824"></a><span class="lineno">  824</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00825"></a><span class="lineno">  825</span>         }</div>
-<div class="line"><a name="l00826"></a><span class="lineno">  826</span>       }</div>
-<div class="line"><a name="l00827"></a><span class="lineno">  827</span>       <span class="keywordflow">if</span>(m_class.size())</div>
-<div class="line"><a name="l00828"></a><span class="lineno">  828</span>         statBuffer.push_back(binValue);</div>
-<div class="line"><a name="l00829"></a><span class="lineno">  829</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00830"></a><span class="lineno">  830</span>         statBuffer.push_back(input[i]);</div>
-<div class="line"><a name="l00831"></a><span class="lineno">  831</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> t=1;t<=dim/2;++t){</div>
-<div class="line"><a name="l00832"></a><span class="lineno">  832</span>         binValue=0;</div>
-<div class="line"><a name="l00833"></a><span class="lineno">  833</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<m_class.size();++iclass){</div>
-<div class="line"><a name="l00834"></a><span class="lineno">  834</span>           <span class="keywordflow">if</span>(input[i-t]==m_class[iclass]){</div>
-<div class="line"><a name="l00835"></a><span class="lineno">  835</span>             binValue=m_class[0];</div>
-<div class="line"><a name="l00836"></a><span class="lineno">  836</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00837"></a><span class="lineno">  837</span>           }</div>
-<div class="line"><a name="l00838"></a><span class="lineno">  838</span>         }</div>
-<div class="line"><a name="l00839"></a><span class="lineno">  839</span>         <span class="keywordflow">if</span>(m_class.size()){</div>
-<div class="line"><a name="l00840"></a><span class="lineno">  840</span>           statBuffer.push_back(binValue);</div>
-<div class="line"><a name="l00841"></a><span class="lineno">  841</span>           statBuffer.push_back(binValue);</div>
-<div class="line"><a name="l00842"></a><span class="lineno">  842</span>         }</div>
-<div class="line"><a name="l00843"></a><span class="lineno">  843</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00844"></a><span class="lineno">  844</span>           statBuffer.push_back(input[i-t]);</div>
-<div class="line"><a name="l00845"></a><span class="lineno">  845</span>           statBuffer.push_back(input[i-t]);</div>
-<div class="line"><a name="l00846"></a><span class="lineno">  846</span>         }</div>
-<div class="line"><a name="l00847"></a><span class="lineno">  847</span>       }</div>
-<div class="line"><a name="l00848"></a><span class="lineno">  848</span>     }</div>
-<div class="line"><a name="l00849"></a><span class="lineno">  849</span>     <span class="keywordflow">switch</span>(getFilterType(method)){</div>
-<div class="line"><a name="l00850"></a><span class="lineno">  850</span>     <span class="keywordflow">case</span>(filter::dilate):</div>
-<div class="line"><a name="l00851"></a><span class="lineno">  851</span>       output[i]=stat.mymax(statBuffer);</div>
-<div class="line"><a name="l00852"></a><span class="lineno">  852</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00853"></a><span class="lineno">  853</span>     <span class="keywordflow">case</span>(filter::erode):</div>
-<div class="line"><a name="l00854"></a><span class="lineno">  854</span>       output[i]=stat.mymin(statBuffer);</div>
-<div class="line"><a name="l00855"></a><span class="lineno">  855</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00856"></a><span class="lineno">  856</span>     <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00857"></a><span class="lineno">  857</span>       std::string errorString=<span class="stringliteral">"method not supported"</span>;</div>
-<div class="line"><a name="l00858"></a><span class="lineno">  858</span>       <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00859"></a><span class="lineno">  859</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00860"></a><span class="lineno">  860</span>     }</div>
-<div class="line"><a name="l00861"></a><span class="lineno">  861</span>     <span class="keywordflow">if</span>(verbose){</div>
-<div class="line"><a name="l00862"></a><span class="lineno">  862</span>       std::cout << <span class="stringliteral">"buffer: "</span>;</div>
-<div class="line"><a name="l00863"></a><span class="lineno">  863</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ibuf=0;ibuf<statBuffer.size();++ibuf)</div>
-<div class="line"><a name="l00864"></a><span class="lineno">  864</span>         std::cout << statBuffer[ibuf] << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00865"></a><span class="lineno">  865</span>       std::cout << <span class="stringliteral">"->"</span> << output[i] << std::endl;</div>
-<div class="line"><a name="l00866"></a><span class="lineno">  866</span>     }</div>
-<div class="line"><a name="l00867"></a><span class="lineno">  867</span>   }</div>
-<div class="line"><a name="l00868"></a><span class="lineno">  868</span> }</div>
-<div class="line"><a name="l00869"></a><span class="lineno">  869</span> </div>
-<div class="line"><a name="l00870"></a><span class="lineno">  870</span>  <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> Filter::smooth(T* input, <span class="keywordtype">int</span> inputSize, std::vector<T>& output, <span class="keywordtype">short</span> dim)</div>
-<div class="line"><a name="l00871"></a><span class="lineno">  871</span> {</div>
-<div class="line"><a name="l00872"></a><span class="lineno">  872</span>   assert(dim>0);</div>
-<div class="line"><a name="l00873"></a><span class="lineno">  873</span>   m_taps.resize(dim);</div>
-<div class="line"><a name="l00874"></a><span class="lineno">  874</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> itap=0;itap<dim;++itap)</div>
-<div class="line"><a name="l00875"></a><span class="lineno">  875</span>     m_taps[itap]=1.0/dim;</div>
-<div class="line"><a name="l00876"></a><span class="lineno">  876</span>   filter(input,output);</div>
-<div class="line"><a name="l00877"></a><span class="lineno">  877</span>  }</div>
-<div class="line"><a name="l00878"></a><span class="lineno">  878</span> </div>
-<div class="line"><a name="l00879"></a><span class="lineno">  879</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> Filter::filter(T* input, <span class="keywordtype">int</span> inputSize, std::vector<T>& output)</div>
-<div class="line"><a name="l00880"></a><span class="lineno">  880</span> {</div>
-<div class="line"><a name="l00881"></a><span class="lineno">  881</span>   output.resize((inputSize);</div>
-<div class="line"><a name="l00882"></a><span class="lineno">  882</span>   <span class="keywordtype">int</span> i=0;</div>
-<div class="line"><a name="l00883"></a><span class="lineno">  883</span>   <span class="comment">//start: extend input with mirrored version of itself</span></div>
-<div class="line"><a name="l00884"></a><span class="lineno">  884</span>   <span class="keywordflow">for</span>(i=0;i<m_taps.size()/2;++i){</div>
-<div class="line"><a name="l00885"></a><span class="lineno">  885</span>     output[i]=m_taps[m_taps.size()/2]*input[i];</div>
-<div class="line"><a name="l00886"></a><span class="lineno">  886</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> t=1;t<=m_taps.size()/2;++t)</div>
-<div class="line"><a name="l00887"></a><span class="lineno">  887</span>       output[i]+=(m_taps[m_taps.size()/2+t]+m_taps[m_taps.size()/2-t])*input[i+t];</div>
-<div class="line"><a name="l00888"></a><span class="lineno">  888</span>   }</div>
-<div class="line"><a name="l00889"></a><span class="lineno">  889</span>   <span class="comment">//main</span></div>
-<div class="line"><a name="l00890"></a><span class="lineno">  890</span>   <span class="keywordflow">for</span>(i=m_taps.size()/2;i<inputSize-m_taps.size()/2;++i){</div>
-<div class="line"><a name="l00891"></a><span class="lineno">  891</span>     T leaveOut=(*(m_taps.begin()))*input[i-m_taps.size()/2];</div>
-<div class="line"><a name="l00892"></a><span class="lineno">  892</span>     T include=(m_taps.back())*input[i+m_taps.size()/2];</div>
-<div class="line"><a name="l00893"></a><span class="lineno">  893</span>     output[i]=0;</div>
-<div class="line"><a name="l00894"></a><span class="lineno">  894</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> t=0;t<m_taps.size();++t)</div>
-<div class="line"><a name="l00895"></a><span class="lineno">  895</span>       output[i]+=input[i-m_taps.size()/2+t]*m_taps[t];</div>
-<div class="line"><a name="l00896"></a><span class="lineno">  896</span>   }</div>
-<div class="line"><a name="l00897"></a><span class="lineno">  897</span>   <span class="comment">//end: extend input with mirrored version of itself</span></div>
-<div class="line"><a name="l00898"></a><span class="lineno">  898</span>   <span class="keywordflow">for</span>(i=inputSize-m_taps.size()/2;i<inputSize;++i){</div>
-<div class="line"><a name="l00899"></a><span class="lineno">  899</span>     output[i]=m_taps[m_taps.size()/2]*input[i];</div>
-<div class="line"><a name="l00900"></a><span class="lineno">  900</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> t=1;t<=m_taps.size()/2;++t)</div>
-<div class="line"><a name="l00901"></a><span class="lineno">  901</span>       output[i]+=(m_taps[m_taps.size()/2+t]+m_taps[m_taps.size()/2-t])*input[i-t];</div>
-<div class="line"><a name="l00902"></a><span class="lineno">  902</span>   }</div>
-<div class="line"><a name="l00903"></a><span class="lineno">  903</span> }</div>
-<div class="line"><a name="l00904"></a><span class="lineno">  904</span> }</div>
-<div class="line"><a name="l00905"></a><span class="lineno">  905</span> </div>
-<div class="line"><a name="l00906"></a><span class="lineno">  906</span> <span class="preprocessor">#endif </span><span class="comment">/* _MYFILTER_H_ */</span><span class="preprocessor"></span></div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-<div class="ttc" id="classImgWriterGdal_html"><div class="ttname"><a href="classImgWriterGdal.html">ImgWriterGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgWriterGdal_8h_source.html#l00033">ImgWriterGdal.h:33</a></div></div>
-<div class="ttc" id="classVector2d_html"><div class="ttname"><a href="classVector2d.html">Vector2d< double ></a></div></div>
-<div class="ttc" id="classstatfactory_1_1StatFactory_html"><div class="ttname"><a href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></div><div class="ttdef"><b>Definition:</b> <a href="StatFactory_8h_source.html#l00043">StatFactory.h:43</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/ImgGdal_8h_source.html b/doc/html/ImgGdal_8h_source.html
deleted file mode 100644
index 47441ed..0000000
--- a/doc/html/ImgGdal_8h_source.html
+++ /dev/null
@@ -1,125 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/imageclasses/ImgGdal.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_6d2fd95b0bd390617ad5a1eb4a537b4a.html">imageclasses</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">ImgGdal.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">ImgUpdaterGdal.h: class to read raster files using GDAL API library</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2012 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#ifndef _IMGUPDATERGDAL_H_</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor"></span><span class="preprocessor">#define _IMGUPDATERGDAL_H_</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "ImgReaderGdal.h"</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "ImgWriterGdal.h"</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="comment">//--------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno"><a class="line" href="classImgUpdaterGdal.html">   27</a></span> <span class="keyword">class </span><a class="code" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a> : <span class="keyword">public</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>, <span class="keyword">public</span> <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> {</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>   <a class="code" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a>(<span class="keywordtype">void</span>);</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span>   <a class="code" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a>(<span class="keyword">const</span> std::string& filename){open(filename);};</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>   ~<a class="code" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a>(<span class="keywordtype">void</span>);</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>   <span class="keywordtype">void</span> open(<span class="keyword">const</span> std::string& filename);</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>   <span class="keywordtype">void</span> close(<span class="keywordtype">void</span>);</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> </div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>   <span class="keywordtype">void</span> setCodec();<span class="comment">//double magicX, double magicY);</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>   std::string m_filename;</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   GDALDataset *m_gds;</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>   <span class="keywordtype">int</span> m_ncol;</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   <span class="keywordtype">int</span> m_nrow;</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   <span class="keywordtype">int</span> m_nband;</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   <span class="keywordtype">double</span> m_gt[6];</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   std::vector<double> m_noDataValues;</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>   std::vector<double> m_scale;</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   std::vector<double> m_offset;</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span> };</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span> </div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span> <span class="preprocessor">#endif // _IMGUPDATERGDAL_H_</span></div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-<div class="ttc" id="classImgWriterGdal_html"><div class="ttname"><a href="classImgWriterGdal.html">ImgWriterGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgWriterGdal_8h_source.html#l00033">ImgWriterGdal.h:33</a></div></div>
-<div class="ttc" id="classImgUpdaterGdal_html"><div class="ttname"><a href="classImgUpdaterGdal.html">ImgUpdaterGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgGdal_8h_source.html#l00027">ImgGdal.h:27</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/ImgRasterGdal_8cc_source.html b/doc/html/ImgRasterGdal_8cc_source.html
deleted file mode 100644
index dee282b..0000000
--- a/doc/html/ImgRasterGdal_8cc_source.html
+++ /dev/null
@@ -1,414 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/imageclasses/ImgRasterGdal.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_6d2fd95b0bd390617ad5a1eb4a537b4a.html">imageclasses</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">ImgRasterGdal.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">ImgRasterGdal.cc: class to read raster files using GDAL API library</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2012 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <iostream></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "ImgRasterGdal.h"</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> </div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> ImgRasterGdal::ImgRasterGdal(<span class="keywordtype">void</span>)</div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span>   : m_gds(NULL), m_ncol(0), m_nrow(0), m_nband(0)</div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> {}</div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> </div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="comment">//--------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keywordtype">void</span> ImgRasterGdal::close(<span class="keywordtype">void</span>)</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> {</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>   GDALClose(m_gds);</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> }</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> </div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> std::string ImgRasterGdal::getProjection(<span class="keywordtype">void</span>)<span class="keyword"> const </span></div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>   std::string theProjection=m_gds->GetProjectionRef();</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   <span class="comment">// size_t startpos,endpos;</span></div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>   <span class="comment">// while((startpos=theProjection.find(",AUTHORITY"))!=std::string::npos){</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>   <span class="comment">//   endpos=theProjection.find("]",startpos+1,1)+1;</span></div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>   <span class="comment">//   theProjection.erase(startpos,endpos-startpos);</span></div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   <span class="comment">// }</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>   <span class="keywordflow">return</span> theProjection;</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span> }</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span> </div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span> std::string ImgRasterGdal::getProjectionRef(<span class="keywordtype">void</span>)<span class="keyword"> const </span></div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>   std::string theProjection;</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   <span class="keywordflow">if</span>(m_gds->GetProjectionRef())</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     <span class="keywordflow">return</span>(m_gds->GetProjectionRef());</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     <span class="keywordflow">return</span> <span class="stringliteral">""</span>;</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span> }</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span> </div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span> GDALDataType ImgRasterGdal::getDataType(<span class="keywordtype">int</span> band)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>   assert(band<m_nband+1);</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>   <span class="keywordflow">return</span> (m_gds->GetRasterBand(band+1))->GetRasterDataType();</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span> }</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span> </div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span> GDALRasterBand* ImgRasterGdal::getRasterBand(<span class="keywordtype">int</span> band)</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span> {</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>   assert(band<m_nband+1);</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>   <span class="keywordflow">return</span> (m_gds->GetRasterBand(band+1));</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span> }</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span> </div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span> GDALColorTable* ImgRasterGdal::getColorTable(<span class="keywordtype">int</span> band)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>   assert(band<m_nband+1);</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>   <span class="keywordflow">return</span> (m_gds->GetRasterBand(band+1))->GetColorTable();</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span> }</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span> </div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span> std::string ImgRasterGdal::getDriverDescription()<span class="keyword"> const</span></div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>   <span class="keywordflow">return</span> m_gds->GetDriver()->GetDescription();</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span> }</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span> </div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span> <span class="keywordtype">void</span> ImgRasterGdal::getGeoTransform(<span class="keywordtype">double</span>* gt)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>   m_gds->GetGeoTransform(gt);</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span> }</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span> </div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span> <span class="comment">// void ImgRasterGdal::getGeoTransform(double& ulx, double& uly, double& deltaX, double& deltaY, double& rot1, double& rot2) const</span></div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span> <span class="comment">// {</span></div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span> <span class="comment">//   double adfGeoTransform[6];// { 444720, 30, 0, 3751320, 0, -30 };</span></div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span> <span class="comment">//   m_gds->GetGeoTransform(adfGeoTransform);</span></div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span> <span class="comment">//   ulx=adfGeoTransform[0];</span></div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span> <span class="comment">//   deltaX=adfGeoTransform[1];</span></div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span> <span class="comment">//   rot1=adfGeoTransform[2];</span></div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span> <span class="comment">//   uly=adfGeoTransform[3];</span></div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span> <span class="comment">//   rot2=adfGeoTransform[4];</span></div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span> <span class="comment">//   deltaY=-adfGeoTransform[5];//convention of GDAL!</span></div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span> <span class="comment">// }</span></div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span> </div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span> std::string ImgRasterGdal::getGeoTransform()<span class="keyword"> const</span></div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   <span class="keywordtype">double</span> gt[6];<span class="comment">// { 444720, 30, 0, 3751320, 0, -30 };</span></div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   m_gds->GetGeoTransform(gt);</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>   std::ostringstream s;</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>   s << <span class="stringliteral">"["</span> << gt[0] << <span class="stringliteral">","</span> << gt[1] << <span class="stringliteral">","</span> << gt[2] << <span class="stringliteral">","</span> << gt[3] << <span class="stringliteral">","</span> << gt[4] << <span class="stringliteral">",& [...]
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>   <span class="keywordflow">return</span>(s.str());</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>   <span class="comment">// if(!isGeoRef())</span></div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>   <span class="comment">//   return("");</span></div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>   <span class="comment">// else{</span></div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>   <span class="comment">//   double adfGeoTransform[6];// { 444720, 30, 0, 3751320, 0, -30 };</span></div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>   <span class="comment">//   m_gds->GetGeoTransform(adfGeoTransform);</span></div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>   <span class="comment">//   double ulx=adfGeoTransform[0];</span></div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>   <span class="comment">//   double deltaX=adfGeoTransform[1];</span></div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>   <span class="comment">//   double rot1=adfGeoTransform[2];</span></div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>   <span class="comment">//   double uly=adfGeoTransform[3];</span></div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>   <span class="comment">//   double rot2=adfGeoTransform[4];</span></div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   <span class="comment">//   double deltaY=-adfGeoTransform[5];//convention of GDAL!</span></div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   <span class="comment">//   std::ostringstream s;</span></div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>   <span class="comment">//   s << "[" << ulx << "," << deltaX << "," << rot1 << "," << uly << "," << rot2 << "," << -deltaY << "]";</span></div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>   <span class="comment">//   return(s.str());</span></div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>   <span class="comment">// }</span></div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span> }</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span> </div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span> <span class="keywordtype">char</span>** ImgRasterGdal::getMetadata()</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span> {</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>   <span class="keywordflow">if</span>(m_gds->GetMetadata()!=NULL)</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>     <span class="keywordflow">return</span>(m_gds->GetMetadata());</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>     <span class="keywordflow">return</span> (<span class="keywordtype">char</span>**)<span class="stringliteral">""</span>;</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span> }</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span> </div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span> <span class="keywordtype">char</span>** ImgRasterGdal::getMetadata()<span class="keyword"> const</span></div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>   <span class="keywordflow">if</span>(m_gds->GetMetadata()!=NULL)</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>     <span class="keywordflow">return</span>(m_gds->GetMetadata());</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>   <span class="keywordflow">else</span> </div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>     <span class="keywordflow">return</span> (<span class="keywordtype">char</span>**)<span class="stringliteral">""</span>;</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span> }</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span> </div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span> <span class="keywordtype">void</span> ImgRasterGdal::getMetadata(std::list<std::string>& metadata)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>   <span class="keywordtype">char</span>** cmetadata=m_gds->GetMetadata();</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>   <span class="keywordflow">while</span>(*cmetadata!=NULL){</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>     metadata.push_back(*(cmetadata));</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>     ++cmetadata;</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>   }</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span> }</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span> </div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span> std::string ImgRasterGdal::getDescription()<span class="keyword"> const</span></div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>   <span class="keywordflow">if</span>(m_gds->GetDriver()->GetDescription()!=NULL)</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>     <span class="keywordflow">return</span> m_gds->GetDriver()->GetDescription();</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>     <span class="keywordflow">return</span> <span class="stringliteral">""</span>;</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span> }</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span> </div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span> std::string ImgRasterGdal::getMetadataItem()<span class="keyword"> const </span></div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>   <span class="keywordflow">if</span>(m_gds->GetDriver()->GetMetadataItem( GDAL_DMD_LONGNAME )!=NULL)</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>     <span class="keywordflow">return</span> m_gds->GetDriver()->GetMetadataItem( GDAL_DMD_LONGNAME );</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>     <span class="keywordflow">return</span> <span class="stringliteral">""</span>;</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span> }</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span> std::string ImgRasterGdal::getImageDescription()<span class="keyword"> const </span></div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>   <span class="keywordflow">if</span>(m_gds->GetDriver()->GetMetadataItem(<span class="stringliteral">"TIFFTAG_IMAGEDESCRIPTION"</span>)!=NULL)</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>     <span class="keywordflow">return</span> m_gds->GetDriver()->GetMetadataItem(<span class="stringliteral">"TIFFTAG_IMAGEDESCRIPTION"</span>);</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>     <span class="keywordflow">return</span> <span class="stringliteral">""</span>;</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span> }</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span> </div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span> std::string ImgRasterGdal::getInterleave()<span class="keyword"> const</span></div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>   <span class="keywordflow">if</span>(m_gds->GetMetadataItem( <span class="stringliteral">"INTERLEAVE"</span>, <span class="stringliteral">"IMAGE_STRUCTURE"</span>))</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>     <span class="keywordflow">return</span> m_gds->GetMetadataItem( <span class="stringliteral">"INTERLEAVE"</span>, <span class="stringliteral">"IMAGE_STRUCTURE"</span>);</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>     <span class="keywordflow">return</span>(<span class="stringliteral">"BAND"</span>);</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span> }</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span> </div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span> std::string ImgRasterGdal::getCompression()<span class="keyword"> const</span></div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>   <span class="keywordflow">if</span>(m_gds->GetMetadataItem( <span class="stringliteral">"COMPRESSION"</span>, <span class="stringliteral">"IMAGE_STRUCTURE"</span>))</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>     <span class="keywordflow">return</span> m_gds->GetMetadataItem( <span class="stringliteral">"COMPRESSION"</span>, <span class="stringliteral">"IMAGE_STRUCTURE"</span>);</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>     <span class="keywordflow">return</span>(<span class="stringliteral">"NONE"</span>);</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span> }</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span> </div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span> <span class="keywordtype">bool</span> ImgRasterGdal::getBoundingBox(<span class="keywordtype">double</span>& ulx, <span class="keywordtype">double</span>& uly, <span class="keywordtype">double</span>& lrx, <span class="keywordtype">double</span>& lry)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>   <span class="keywordtype">double</span> gt[6];<span class="comment">// { 444720, 30, 0, 3751320, 0, -30 };</span></div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>   m_gds->GetGeoTransform(gt);</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span> </div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>   <span class="comment">//assuming</span></div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>   <span class="comment">//adfGeotransform[0]: ULX (upper left X coordinate)</span></div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>   <span class="comment">//adfGeotransform[1]: $cos(\alpha)\cdot\textrm{Xres}$</span></div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>   <span class="comment">//adfGeotransform[2]: $-sin(\alpha)\cdot\textrm{Xres}$</span></div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>   <span class="comment">//adfGeotransform[3]: ULY (upper left Y coordinate)</span></div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>   <span class="comment">//adfGeotransform[4]: $-sin(\alpha)\cdot\textrm{Yres}$</span></div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>   <span class="comment">//adfGeotransform[5]: $-cos(\alpha)\cdot\textrm{Yres}$</span></div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>   ulx=gt[0];</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>   uly=gt[3];</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>   lrx=gt[0]+nrOfCol()*gt[1]+nrOfRow()*gt[2];</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>   lry=gt[3]+nrOfCol()*gt[4]+nrOfRow()*gt[5];</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>   <span class="keywordflow">if</span>(isGeoRef()){</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>     <span class="comment">// ulx=m_ulx;</span></div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>     <span class="comment">// uly=m_uly;</span></div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>     <span class="comment">// lrx=ulx+nrOfCol()*m_delta_x;</span></div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>     <span class="comment">// lry=uly-nrOfRow()*m_delta_y;</span></div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>   }</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>     <span class="comment">// ulx=0;</span></div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>     <span class="comment">// uly=nrOfRow()-1;</span></div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>     <span class="comment">// lrx=nrOfCol()-1;</span></div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>     <span class="comment">// lry=0;</span></div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>   }</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span> }</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span> </div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span> <span class="keywordtype">bool</span> ImgRasterGdal::getCenterPos(<span class="keywordtype">double</span>& x, <span class="keywordtype">double</span>& y)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>   <span class="keywordtype">double</span> gt[6];<span class="comment">// { 444720, 30, 0, 3751320, 0, -30 };</span></div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>   m_gds->GetGeoTransform(gt);</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span> </div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>   <span class="comment">//assuming</span></div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>   <span class="comment">//adfGeotransform[0]: ULX (upper left X coordinate)</span></div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>   <span class="comment">//adfGeotransform[1]: $cos(\alpha)\cdot\textrm{Xres}$</span></div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>   <span class="comment">//adfGeotransform[2]: $-sin(\alpha)\cdot\textrm{Xres}$</span></div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>   <span class="comment">//adfGeotransform[3]: ULY (upper left Y coordinate)</span></div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>   <span class="comment">//adfGeotransform[4]: $-sin(\alpha)\cdot\textrm{Yres}$</span></div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>   <span class="comment">//adfGeotransform[5]: $-cos(\alpha)\cdot\textrm{Yres}$</span></div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>   x=gt[0]+(nrOfCol()/2.0)*gt[1]+(nrOfRow()/2.0)*gt[2];</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>   y=gt[3]+(nrOfCol()/2.0)*gt[4]+(nrOfRow()/2.0)*gt[5];</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>   <span class="keywordflow">if</span>(isGeoRef()){</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>     <span class="comment">// x=m_ulx+(nrOfCol()/2.0)*m_delta_x;</span></div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>     <span class="comment">// y=m_uly-(nrOfRow()/2.0)*m_delta_y;</span></div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>   }</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>     <span class="comment">// x=nrOfCol()/2.0;</span></div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>     <span class="comment">// y=nrOfRow()/2.0;</span></div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>   }</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span> }</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span> </div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span> <span class="comment">//i and j represent fraction of pixels, return true if image is georeferenced</span></div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span> <span class="keywordtype">bool</span> ImgRasterGdal::geo2image(<span class="keywordtype">double</span> x, <span class="keywordtype">double</span> y, <span class="keywordtype">double</span>& i, <span class="keywordtype">double</span>& j)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>   <span class="comment">//double values are returned, caller is responsible for interpolation step</span></div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>   <span class="keywordtype">double</span> gt[6];<span class="comment">// { 444720, 30, 0, 3751320, 0, -30 };</span></div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>   m_gds->GetGeoTransform(gt);</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>   <span class="comment">//assuming</span></div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>   <span class="comment">//adfGeotransform[0]: ULX (upper left X coordinate)</span></div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>   <span class="comment">//adfGeotransform[1]: $cos(\alpha)\cdot\textrm{Xres}$</span></div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>   <span class="comment">//adfGeotransform[2]: $-sin(\alpha)\cdot\textrm{Xres}$</span></div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>   <span class="comment">//adfGeotransform[3]: ULY (upper left Y coordinate)</span></div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>   <span class="comment">//adfGeotransform[4]: $-sin(\alpha)\cdot\textrm{Yres}$</span></div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>   <span class="comment">//adfGeotransform[5]: $-cos(\alpha)\cdot\textrm{Yres}$</span></div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span> </div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>   <span class="keywordtype">double</span> denom=(gt[1]-gt[2]*gt[4]/gt[5]);</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>   <span class="keywordtype">double</span> eps=0.00001;</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>   <span class="keywordflow">if</span>(fabs(denom)>eps){</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>     i=(x-gt[0]-gt[2]/gt[5]*(y-gt[3]))/denom;</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>     j=(y-gt[3]-gt[4]*(x-gt[0]-gt[2]/gt[5]*(y-gt[3]))/denom)/gt[5];</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>   }</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>   <span class="keywordflow">if</span>(isGeoRef()){</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>     <span class="comment">// double ulx=m_ulx;</span></div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>     <span class="comment">// double uly=m_uly;</span></div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>     <span class="comment">// i=(x-ulx)/m_delta_x;</span></div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>     <span class="comment">// j=(uly-y)/m_delta_y;</span></div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>   }</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>     <span class="comment">// i=x;</span></div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>     <span class="comment">// j=nrOfRow()-y;</span></div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>   }</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span> }</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span> </div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span> <span class="comment">//x and y represent center of pixel, return true if image is georeferenced</span></div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span> <span class="keywordtype">bool</span> ImgRasterGdal::image2geo(<span class="keywordtype">double</span> i, <span class="keywordtype">double</span> j, <span class="keywordtype">double</span>& x, <span class="keywordtype">double</span>& y)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>   <span class="keywordtype">double</span> gt[6];<span class="comment">// { 444720, 30, 0, 3751320, 0, -30 };</span></div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>   m_gds->GetGeoTransform(gt);</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span> </div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>   <span class="comment">//assuming</span></div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>   <span class="comment">//adfGeotransform[0]: ULX (upper left X coordinate)</span></div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>   <span class="comment">//adfGeotransform[1]: $cos(\alpha)\cdot\textrm{Xres}$</span></div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>   <span class="comment">//adfGeotransform[2]: $-sin(\alpha)\cdot\textrm{Xres}$</span></div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>   <span class="comment">//adfGeotransform[3]: ULY (upper left Y coordinate)</span></div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>   <span class="comment">//adfGeotransform[4]: $-sin(\alpha)\cdot\textrm{Yres}$</span></div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>   <span class="comment">//adfGeotransform[5]: $-cos(\alpha)\cdot\textrm{Yres}$</span></div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span> </div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>   x=gt[0]+(0.5+i)*gt[1]+(0.5+j)*gt[2];</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>   y=gt[3]+(0.5+i)*gt[4]+(0.5+j)*gt[5];</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>   <span class="keywordflow">if</span>(isGeoRef()){</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>     <span class="comment">// x=m_ulx+(0.5+i)*m_delta_x;</span></div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>     <span class="comment">// y=m_uly-(0.5+j)*m_delta_y;</span></div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>   }</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>     <span class="comment">// x=0.5+i;</span></div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>     <span class="comment">// y=nrOfRow()-(0.5+j);</span></div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>   }</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span> }</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span> </div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span> <span class="keywordtype">bool</span> ImgRasterGdal::covers(<span class="keywordtype">double</span> x, <span class="keywordtype">double</span>  y)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>   <span class="keywordtype">double</span> theULX, theULY, theLRX, theLRY;</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>   getBoundingBox(theULX,theULY,theLRX,theLRY);</div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>   <span class="keywordflow">return</span>((x > theULX)&&</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>          (x < theLRX)&&</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>          (y < theULY)&&</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>          (y >theLRY));</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span> }</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span> </div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span> <span class="keywordtype">bool</span> ImgRasterGdal::covers(<span class="keywordtype">double</span> ulx, <span class="keywordtype">double</span>  uly, <span class="keywordtype">double</span> lrx, <span class="keywordtype">double</span> lry)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>   <span class="keywordtype">double</span> theULX, theULY, theLRX, theLRY;</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>   getBoundingBox(theULX,theULY,theLRX,theLRY);</div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>   <span class="keywordflow">return</span>((ulx < theLRX)&&(lrx > theULX)&&(lry < theULY)&&(uly > theLRY));</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span> }</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span> </div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span> <span class="keywordtype">int</span> ImgRasterGdal::getNoDataValues(std::vector<double>& noDataValues)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>   <span class="keywordflow">if</span>(m_noDataValues.size()){</div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>     noDataValues=m_noDataValues;</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>     <span class="keywordflow">return</span> m_noDataValues.size();</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>   }</div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>     <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span> }</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span> </div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span> <span class="keywordtype">int</span> ImgRasterGdal::pushNoDataValue(<span class="keywordtype">double</span> noDataValue)</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span> {</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>   <span class="keywordflow">if</span>(find(m_noDataValues.begin(),m_noDataValues.end(),noDataValue)==m_noDataValues.end())</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>     m_noDataValues.push_back(noDataValue);</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>   <span class="keywordflow">return</span>(m_noDataValues.size());</div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span> }</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span> </div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span> <span class="comment">// bool ImgRasterGdal::setNoDataValue(double noDataValue,int band)</span></div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span> <span class="comment">// {</span></div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span> <span class="comment">//   GDALRasterBand  *poBand;</span></div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span> <span class="comment">//   poBand = m_gds->GetRasterBand(band+1);</span></div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span> <span class="comment">//   if(poBand->SetNoDataValue(noDataValue)!=CE_None)</span></div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span> <span class="comment">//     return false;</span></div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span> <span class="comment">//   else</span></div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span> <span class="comment">//     return true;</span></div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span> <span class="comment">// }</span></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/ImgRasterGdal_8h_source.html b/doc/html/ImgRasterGdal_8h_source.html
deleted file mode 100644
index 26c3f05..0000000
--- a/doc/html/ImgRasterGdal_8h_source.html
+++ /dev/null
@@ -1,175 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/imageclasses/ImgRasterGdal.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_6d2fd95b0bd390617ad5a1eb4a537b4a.html">imageclasses</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">ImgRasterGdal.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">ImgRasterGdal.h: class to read raster files using GDAL API library</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2012 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#ifndef _IMGRASTERGDAL_H_</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor"></span><span class="preprocessor">#define _IMGRASTERGDAL_H_</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <fstream></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <sstream></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include <string></span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include <vector></span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include <list></span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include <algorithm></span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include <assert.h></span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include "gdal_priv.h"</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> </div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">enum</span> RESAMPLE { NEAR = 0, BILINEAR = 1, BICUBIC = 2 };</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> </div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="comment">//--------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="classImgRasterGdal.html">   35</a></span> <span class="keyword">class </span><a class="code" href="classImgRasterGdal.html">ImgRasterGdal</a></div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> {</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>   <a class="code" href="classImgRasterGdal.html">ImgRasterGdal</a>(<span class="keywordtype">void</span>);</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>   <span class="keyword">virtual</span> ~<a class="code" href="classImgRasterGdal.html">ImgRasterGdal</a>(<span class="keywordtype">void</span>){};</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> </div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> close(<span class="keywordtype">void</span>);</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   std::string getFileName()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_filename;};</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   <span class="keywordtype">int</span> nrOfCol(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_ncol;};</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   <span class="keywordtype">int</span> nrOfRow(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_nrow;};</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   <span class="keywordtype">int</span> nrOfBand(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_nband;};</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>   <span class="keywordtype">bool</span> isGeoRef()<span class="keyword"> const </span>{<span class="keywordtype">double</span> gt[6];getGeoTransform(gt);<span class="keywordflow">if</span>(gt[5]<0) <span class="keywordflow">return</span> <span class="keyword">true</span>;<span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;};</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   std::string getProjection(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>   std::string getProjectionRef(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>   std::string getGeoTransform() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>   <span class="keywordtype">void</span> getGeoTransform(<span class="keywordtype">double</span>* gt) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>   <span class="keywordtype">bool</span> getBoundingBox (<span class="keywordtype">double</span>& ulx, <span class="keywordtype">double</span>& uly, <span class="keywordtype">double</span>& lrx, <span class="keywordtype">double</span>& lry) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>   <span class="keywordtype">bool</span> getCenterPos(<span class="keywordtype">double</span>& x, <span class="keywordtype">double</span>& y) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>   <span class="keywordtype">double</span> getUlx()<span class="keyword"> const </span>{<span class="keywordtype">double</span> ulx, uly, lrx,lry;getBoundingBox(ulx,uly,lrx,lry);<span class="keywordflow">return</span>(ulx);};</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>   <span class="keywordtype">double</span> getUly()<span class="keyword"> const </span>{<span class="keywordtype">double</span> ulx, uly, lrx,lry;getBoundingBox(ulx,uly,lrx,lry);<span class="keywordflow">return</span>(uly);};</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>   <span class="keywordtype">double</span> getLrx()<span class="keyword"> const </span>{<span class="keywordtype">double</span> ulx, uly, lrx,lry;getBoundingBox(ulx,uly,lrx,lry);<span class="keywordflow">return</span>(lrx);};</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>   <span class="keywordtype">double</span> getLry()<span class="keyword"> const </span>{<span class="keywordtype">double</span> ulx, uly, lrx,lry;getBoundingBox(ulx,uly,lrx,lry);<span class="keywordflow">return</span>(lry);};</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span> </div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>   <span class="keywordtype">int</span> getNoDataValues(std::vector<double>& noDataValues) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>   <span class="keywordtype">bool</span> isNoData(<span class="keywordtype">double</span> value)<span class="keyword"> const</span>{<span class="keywordflow">if</span>(m_noDataValues.empty()) <span class="keywordflow">return</span> <span class="keyword">false</span>;<span class="keywordflow">else</span> <span class="keywordflow">return</span> find(m_noDataValues.begin(),m_noDataValues.end(),value)!=m_noDataValue [...]
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>   <span class="keywordtype">int</span> pushNoDataValue(<span class="keywordtype">double</span> noDataValue);</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>   <span class="keywordtype">int</span> setNoData(<span class="keyword">const</span> std::vector<double> nodata){m_noDataValues=nodata; <span class="keywordflow">return</span>(m_noDataValues.size());};</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>   CPLErr GDALSetNoDataValue(<span class="keywordtype">double</span> noDataValue, <span class="keywordtype">int</span> band=0) {<span class="keywordflow">return</span> getRasterBand(band)->SetNoDataValue(noDataValue);};</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>   <span class="keywordtype">bool</span> covers(<span class="keywordtype">double</span> x, <span class="keywordtype">double</span> y) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>   <span class="keywordtype">bool</span> covers(<span class="keywordtype">double</span> ulx, <span class="keywordtype">double</span>  uly, <span class="keywordtype">double</span> lrx, <span class="keywordtype">double</span> lry) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>   <span class="keywordtype">bool</span> geo2image(<span class="keywordtype">double</span> x, <span class="keywordtype">double</span> y, <span class="keywordtype">double</span>& i, <span class="keywordtype">double</span>& j) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>   <span class="keywordtype">bool</span> image2geo(<span class="keywordtype">double</span> i, <span class="keywordtype">double</span> j, <span class="keywordtype">double</span>& x, <span class="keywordtype">double</span>& y) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>   <span class="keywordtype">double</span> getDeltaX(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordtype">double</span> gt[6];getGeoTransform(gt);<span class="keywordflow">return</span> gt[1];};</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>   <span class="keywordtype">double</span> getDeltaY(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordtype">double</span> gt[6];getGeoTransform(gt);<span class="keywordflow">return</span> -gt[5];};</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span> </div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>   GDALDataType getDataType(<span class="keywordtype">int</span> band=0) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>   GDALRasterBand* getRasterBand(<span class="keywordtype">int</span> band=0);</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>   GDALColorTable* getColorTable(<span class="keywordtype">int</span> band=0) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>   std::string getDriverDescription() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>   std::string getImageType()<span class="keyword"> const</span>{<span class="keywordflow">return</span> getDriverDescription();};</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span> <span class="comment">//   std::string getImageType() const{return "GTiff";};</span></div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>   std::string getInterleave() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>   std::string getCompression() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>   GDALDataset* getDataset(){<span class="keywordflow">return</span> m_gds;};</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>   <span class="keywordtype">char</span>** getMetadata();</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>   <span class="keywordtype">char</span>** getMetadata() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>   <span class="keywordtype">void</span> getMetadata(std::list<std::string>& metadata) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span> </div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   std::string getDescription() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>   std::string getMetadataItem() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>   std::string getImageDescription() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span> </div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>;</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>;</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span> </div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span> <span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>   std::string m_filename;</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   GDALDataset *m_gds;</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>   <span class="keywordtype">int</span> m_ncol;</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   <span class="keywordtype">int</span> m_nrow;</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   <span class="keywordtype">int</span> m_nband;</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>   <span class="keywordtype">double</span> m_gt[6];</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>   std::vector<double> m_noDataValues;</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span> };</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span> </div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span> <span class="preprocessor">#endif // _IMGRASTERGDAL_H_</span></div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-<div class="ttc" id="classImgWriterGdal_html"><div class="ttname"><a href="classImgWriterGdal.html">ImgWriterGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgWriterGdal_8h_source.html#l00033">ImgWriterGdal.h:33</a></div></div>
-<div class="ttc" id="classImgRasterGdal_html"><div class="ttname"><a href="classImgRasterGdal.html">ImgRasterGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgRasterGdal_8h_source.html#l00035">ImgRasterGdal.h:35</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/ImgReaderGdal_8cc_source.html b/doc/html/ImgReaderGdal_8cc_source.html
deleted file mode 100644
index cccab6b..0000000
--- a/doc/html/ImgReaderGdal_8cc_source.html
+++ /dev/null
@@ -1,467 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/imageclasses/ImgReaderGdal.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_6d2fd95b0bd390617ad5a1eb4a537b4a.html">imageclasses</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">ImgReaderGdal.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">ImgReaderGdal.cc: class to read raster files using GDAL API library</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2012 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "ImgReaderGdal.h"</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <assert.h></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <sstream></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <iostream></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <gsl/gsl_cdf.h></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> ImgReaderGdal::ImgReaderGdal(<span class="keywordtype">void</span>){};</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> </div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> ImgReaderGdal::~ImgReaderGdal(<span class="keywordtype">void</span>)</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> {</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>   <span class="comment">// delete m_gds;</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="comment">//   GDALDumpOpenDatasets(stderr);</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="comment">//   GDALDestroyDriverManager();//could be used by other objects...</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> }</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> </div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="comment">//--------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keywordtype">void</span> ImgReaderGdal::open(<span class="keyword">const</span> std::string& filename, <span class="keyword">const</span> GDALAccess& readMode)</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> {</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>   m_filename = filename;</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>   setCodec(readMode);</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> }</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> </div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span> <span class="keywordtype">void</span> ImgReaderGdal::close(<span class="keywordtype">void</span>)</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span> {</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   ImgRasterGdal::close();</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span> }</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span> </div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span> <span class="keywordtype">void</span> ImgReaderGdal::setCodec(<span class="keyword">const</span> GDALAccess& readMode)</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span> {</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>   GDALAllRegister();</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>   m_gds = (GDALDataset *) GDALOpen(m_filename.c_str(), readMode );</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>   <span class="keywordflow">if</span>(m_gds == NULL){</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     std::string errorString=<span class="stringliteral">"FileOpenError"</span>;</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>   }</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>   m_ncol= m_gds->GetRasterXSize();</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>   m_nrow= m_gds->GetRasterYSize();</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>   m_nband= m_gds->GetRasterCount();</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>   <span class="comment">// m_isGeoRef=( static_cast<std::string>(m_gds->GetProjectionRef())  != "" );</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>   <span class="comment">// m_magic_x=magicX;</span></div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>   <span class="comment">// m_magic_y=magicY;</span></div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>   <span class="keywordtype">double</span> adfGeoTransform[6];</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>   m_gds->GetGeoTransform( adfGeoTransform );</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>   <span class="comment">// if( m_gds->GetGeoTransform( adfGeoTransform ) == CE_None ){</span></div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>   m_gt[0]=adfGeoTransform[0];</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>   m_gt[1]=adfGeoTransform[1];</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>   m_gt[2]=adfGeoTransform[2];</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>   m_gt[3]=adfGeoTransform[3];</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>   m_gt[4]=adfGeoTransform[4];</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>   m_gt[5]=adfGeoTransform[5];</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>   <span class="comment">// }</span></div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>   <span class="comment">// else{</span></div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>   <span class="comment">//   m_gt[0]=0;</span></div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>   <span class="comment">//   m_gt[1]=1;</span></div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>   <span class="comment">//   m_gt[2]=0;</span></div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>   <span class="comment">//   m_gt[3]=0;</span></div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>   <span class="comment">//   m_gt[4]=0;</span></div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>   <span class="comment">//   m_gt[5]=1;</span></div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>   <span class="comment">// }</span></div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span> }</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span> </div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span> </div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span> <span class="keywordtype">double</span> ImgReaderGdal::getMin(<span class="keywordtype">int</span>& x, <span class="keywordtype">int</span>& y, <span class="keywordtype">int</span> band)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   <span class="keywordtype">double</span> minValue=0;</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>   std::vector<double> lineBuffer(nrOfCol());</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>   <span class="keywordtype">bool</span> isValid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<nrOfRow();++irow){</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>     readData(lineBuffer,GDT_Float64,irow,band);</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<nrOfCol();++icol){</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>       <span class="keywordflow">if</span>(isNoData(lineBuffer[icol]))</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>       <span class="keywordflow">if</span>(isValid){</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     <span class="keywordflow">if</span>(lineBuffer[icol]<minValue){</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>           y=irow;</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>           x=icol;</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>           minValue=lineBuffer[icol];</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>         }</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>       }</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     y=irow;</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     x=icol;</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     minValue=lineBuffer[icol];</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     isValid=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>       }</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     }</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>   }</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>   <span class="keywordflow">if</span>(isValid)</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     <span class="keywordflow">return</span> minValue;</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>     <span class="keywordflow">throw</span>(static_cast<std::string>(<span class="stringliteral">"Warning: not initialized"</span>));</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span> }</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span> </div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span> <span class="keywordtype">double</span> ImgReaderGdal::getMax(<span class="keywordtype">int</span>& x, <span class="keywordtype">int</span>& y, <span class="keywordtype">int</span> band)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>   <span class="keywordtype">double</span> maxValue=0;</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   std::vector<double> lineBuffer(nrOfCol());</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>   <span class="keywordtype">bool</span> isValid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<nrOfRow();++irow){</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     readData(lineBuffer,GDT_Float64,irow,band);</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<nrOfCol();++icol){</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>       <span class="keywordflow">if</span>(isNoData(lineBuffer[icol]))</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>       <span class="keywordflow">if</span>(isValid){</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>     <span class="keywordflow">if</span>(lineBuffer[icol]>maxValue){</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>           y=irow;</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>           x=icol;</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>           maxValue=lineBuffer[icol];</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>         }</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>       }</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>     y=irow;</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>     x=icol;</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>     maxValue=lineBuffer[icol];</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>     isValid=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>       }</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>     }</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>   }</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>   <span class="keywordflow">if</span>(isValid)</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>     <span class="keywordflow">return</span> maxValue;</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>     <span class="keywordflow">throw</span>(static_cast<std::string>(<span class="stringliteral">"Warning: not initialized"</span>));</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span> }</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span> </div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span> <span class="keywordtype">void</span> ImgReaderGdal::getMinMax(<span class="keywordtype">int</span> startCol, <span class="keywordtype">int</span> endCol, <span class="keywordtype">int</span> startRow, <span class="keywordtype">int</span> endRow, <span class="keywordtype">int</span> band, <span class="keywordtype">double</span>& minValue, <span class="keywordtype">double</span>& maxValue)<span class="ke [...]
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>   <span class="keywordtype">bool</span> isConstraint=(maxValue>minValue);</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>   <span class="keywordtype">double</span> minConstraint=minValue;</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>   <span class="keywordtype">double</span> maxConstraint=maxValue;</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>   std::vector<double> lineBuffer(endCol-startCol+1);</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>   <span class="keywordtype">bool</span> isValid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>   assert(endRow<nrOfRow());</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=startCol;irow<endRow+1;++irow){</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>     readData(lineBuffer,GDT_Float64,startCol,endCol,irow,band);</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<lineBuffer.size();++icol){</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>       <span class="keywordflow">if</span>(isNoData(lineBuffer[icol]))</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>       <span class="keywordflow">if</span>(isValid){</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>     <span class="keywordflow">if</span>(isConstraint){</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>       <span class="keywordflow">if</span>(lineBuffer[icol]<minConstraint)</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>         <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>       <span class="keywordflow">if</span>(lineBuffer[icol]>maxConstraint)</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>         <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>     }</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>     <span class="keywordflow">if</span>(lineBuffer[icol]<minValue)</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>       minValue=lineBuffer[icol];</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>     <span class="keywordflow">if</span>(lineBuffer[icol]>maxValue)</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>       maxValue=lineBuffer[icol];</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>       }</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>     <span class="keywordflow">if</span>(isConstraint){</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>       <span class="keywordflow">if</span>(lineBuffer[icol]<minConstraint)</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>         <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>       <span class="keywordflow">if</span>(lineBuffer[icol]>maxConstraint)</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>         <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>     }</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>     minValue=lineBuffer[icol];</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>     maxValue=lineBuffer[icol];</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>     isValid=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>       }</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>     }</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>   }</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>   <span class="keywordflow">if</span>(!isValid)</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>     <span class="keywordflow">throw</span>(static_cast<std::string>(<span class="stringliteral">"Warning: not initialized"</span>));</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span> }</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span> </div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span> <span class="keywordtype">void</span> ImgReaderGdal::getMinMax(<span class="keywordtype">double</span>& minValue, <span class="keywordtype">double</span>& maxValue, <span class="keywordtype">int</span> band)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>   <span class="keywordtype">bool</span> isConstraint=(maxValue>minValue);</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>   <span class="keywordtype">double</span> minConstraint=minValue;</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>   <span class="keywordtype">double</span> maxConstraint=maxValue;</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>   std::vector<double> lineBuffer(nrOfCol());</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>   <span class="keywordtype">bool</span> isValid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<nrOfRow();++irow){</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>     readData(lineBuffer,GDT_Float64,irow,band);</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<nrOfCol();++icol){</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>       <span class="keywordflow">if</span>(isNoData(lineBuffer[icol]))</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>       <span class="keywordflow">if</span>(isValid){</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>     <span class="keywordflow">if</span>(isConstraint){</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>       <span class="keywordflow">if</span>(lineBuffer[icol]<minConstraint)</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>         <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>       <span class="keywordflow">if</span>(lineBuffer[icol]>maxConstraint)</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>         <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>     }</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>     <span class="keywordflow">if</span>(lineBuffer[icol]<minValue)</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>       minValue=lineBuffer[icol];</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>     <span class="keywordflow">if</span>(lineBuffer[icol]>maxValue)</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>       maxValue=lineBuffer[icol];</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>       }</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>     <span class="keywordflow">if</span>(isConstraint){</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>       <span class="keywordflow">if</span>(lineBuffer[icol]<minConstraint)</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>         <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>       <span class="keywordflow">if</span>(lineBuffer[icol]>maxConstraint)</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>         <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>     }</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>     minValue=lineBuffer[icol];</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>     maxValue=lineBuffer[icol];</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>     isValid=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>       }</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>     }</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>   }</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>   <span class="keywordflow">if</span>(!isValid)</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>     <span class="keywordflow">throw</span>(static_cast<std::string>(<span class="stringliteral">"Warning: not initialized"</span>));</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span> }</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span> </div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span> <span class="keywordtype">double</span> ImgReaderGdal::getHistogram(std::vector<double>& histvector, <span class="keywordtype">double</span>& min, <span class="keywordtype">double</span>& max, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>& nbin, <span class="keywordtype">int</span> theBand, <span class="keywordtype">bool</span> kde){</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>   <span class="keywordtype">double</span> minValue=0;</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>   <span class="keywordtype">double</span> maxValue=0;</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>       </div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>   <span class="keywordflow">if</span>(min>=max)</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>     getMinMax(minValue,maxValue,theBand);</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>     minValue=min;</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>     maxValue=max;</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>   }</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>   <span class="keywordflow">if</span>(min<max&&min>minValue)</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>     minValue=min;</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>   <span class="keywordflow">if</span>(min<max&&max<maxValue)</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>     maxValue=max;</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>   min=minValue;</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>   max=maxValue;</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span> </div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>   <span class="keywordtype">double</span> sigma=0;</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>   <span class="keywordflow">if</span>(kde){</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>     <span class="keywordtype">double</span> meanValue=0;</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>     <span class="keywordtype">double</span> stdDev=0;</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>     GDALProgressFunc pfnProgress;</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>     <span class="keywordtype">void</span>* pProgressData;</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>     GDALRasterBand* rasterBand;</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>     rasterBand=getRasterBand(theBand);</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>     rasterBand->ComputeStatistics(0,&minValue,&maxValue,&meanValue,&stdDev,pfnProgress,pProgressData);</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>     <span class="comment">//rest minvalue and MaxValue as ComputeStatistics does not account for nodata, scale and offset</span></div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>     minValue=min;</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>     maxValue=max;</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span> </div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>     <span class="keywordflow">if</span>(m_scale.size()>theBand){</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>       stdDev*=m_scale[theBand];</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>     }</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>     sigma=1.06*stdDev*pow(getNvalid(theBand),-0.2);</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>   }</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span> </div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>   <span class="keywordtype">double</span> scale=0;</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>   <span class="keywordflow">if</span>(maxValue>minValue){</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>     <span class="keywordflow">if</span>(nbin==0)</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>       nbin=maxValue-minValue+1;</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>     scale=<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(nbin-1)/(maxValue-minValue);</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>   }</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>     nbin=1;</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>   assert(nbin>0);</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>   <span class="keywordflow">if</span>(histvector.size()!=nbin){</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>     histvector.resize(nbin);</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<nbin;histvector[i++]=0);</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>   }</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>   <span class="keywordtype">double</span> nvalid=0;</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> nsample=0;</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> ninvalid=0;</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>   std::vector<double> lineBuffer(nrOfCol());</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<nrOfRow();++irow){</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>     readData(lineBuffer,GDT_Float64,irow,theBand);</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<nrOfCol();++icol){</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>       <span class="keywordflow">if</span>(isNoData(lineBuffer[icol]))</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>         ++ninvalid;</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(lineBuffer[icol]>maxValue)</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>         ++ninvalid;</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(lineBuffer[icol]<minValue)</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>         ++ninvalid;</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(nbin==1)</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>     ++histvector[0];</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>       <span class="keywordflow">else</span>{<span class="comment">//scale to [0:nbin]</span></div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>     <span class="keywordflow">if</span>(sigma>0){</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>       <span class="comment">//create kde for Gaussian basis function</span></div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>       <span class="comment">//todo: speed up by calculating first and last bin with non-zero contriubtion...</span></div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>       <span class="comment">//todo: calculate real surface below pdf by using gsl_cdf_gaussian_P(x-mean+binsize,sigma)-gsl_cdf_gaussian_P(x-mean,sigma)</span></div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>       <span class="comment">//hiero</span></div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ibin=0;ibin<nbin;++ibin){</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>         <span class="keywordtype">double</span> icenter=minValue+<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(maxValue-minValue)*(ibin+0.5)/nbin;</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>         <span class="keywordtype">double</span> thePdf=gsl_ran_gaussian_pdf(lineBuffer[icol]-icenter, sigma);</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>         histvector[ibin]+=thePdf;</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>         nvalid+=thePdf;</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>       }</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>     }</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>       <span class="keywordtype">int</span> theBin=<span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span><span class="keyword">></span>(scale*(lineBuffer[icol]-minValue));</div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>       assert(theBin>=0);</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>       assert(theBin<nbin);</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>       ++histvector[theBin];</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>       ++nvalid;</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>     }</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>       <span class="comment">// else if(lineBuffer[icol]==maxValue)</span></div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>       <span class="comment">//   ++histvector[nbin-1];</span></div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>       <span class="comment">// else</span></div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>       <span class="comment">//   ++histvector[static_cast<int>(static_cast<double>(lineBuffer[icol]-minValue)/(maxValue-minValue)*(nbin-1))];</span></div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>       }</div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>     }</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>   }</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>   <span class="comment">// unsigned long int nvalid=nrOfCol()*nrOfRow()-ninvalid;</span></div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>   <span class="keywordflow">return</span> nvalid;</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span> }</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span> </div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span> <span class="keywordtype">void</span> ImgReaderGdal::getRange(std::vector<short>& range, <span class="keywordtype">int</span> band)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>   std::vector<short> lineBuffer(nrOfCol());</div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>   range.clear();</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<nrOfRow();++irow){</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>     readData(lineBuffer,GDT_Int16,irow,band);</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<nrOfCol();++icol){</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>       <span class="keywordflow">if</span>(find(range.begin(),range.end(),lineBuffer[icol])==range.end())</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>         range.push_back(lineBuffer[icol]);</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>     }</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>   }</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>   sort(range.begin(),range.end());</div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span> }</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span> </div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> ImgReaderGdal::getNvalid(<span class="keywordtype">int</span> band)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> nvalid=0;</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>   <span class="keywordflow">if</span>(m_noDataValues.size()){</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>     std::vector<double> lineBuffer(nrOfCol());</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<nrOfRow();++irow){</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>       readData(lineBuffer,GDT_Float64,irow,band);</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<nrOfCol();++icol){</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>     <span class="keywordflow">if</span>(isNoData(lineBuffer[icol]))</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>       ++nvalid;</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>       }</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>     }</div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>     <span class="keywordflow">return</span> nvalid;</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>   }</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>     <span class="keywordflow">return</span>(nrOfCol()*nrOfRow());</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span> }</div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span> </div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span> </div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span> <span class="keywordtype">void</span> ImgReaderGdal::getRefPix(<span class="keywordtype">double</span>& refX, <span class="keywordtype">double</span> &refY, <span class="keywordtype">int</span> band)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>   std::vector<double> lineBuffer(nrOfCol());</div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>   <span class="keywordtype">double</span> validCol=0;</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>   <span class="keywordtype">double</span> validRow=0;</div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>   <span class="keywordtype">int</span> nvalidCol=0;</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>   <span class="keywordtype">int</span> nvalidRow=0;</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<nrOfRow();++irow){</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>     readData(lineBuffer,GDT_Float64,irow,band);</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<nrOfCol();++icol){</div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>       <span class="comment">// bool valid=(find(m_noDataValues.begin(),m_noDataValues.end(),lineBuffer[icol])==m_noDataValues.end());</span></div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>       <span class="comment">// if(valid){</span></div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>       <span class="keywordflow">if</span>(!isNoData(lineBuffer[icol])){</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>         validCol+=icol+1;</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>         ++nvalidCol;</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>         validRow+=irow+1;</div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>         ++nvalidRow;</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>       }</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>     }</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>   }</div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>   <span class="keywordflow">if</span>(isGeoRef()){</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>     <span class="comment">//reference coordinate is lower left corner of pixel in center of gravity</span></div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>     <span class="comment">//we need geo coordinates for exactly this location: validCol(Row)/nvalidCol(Row)-0.5</span></div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>     <span class="keywordtype">double</span> cgravi=validCol/nvalidCol-0.5;</div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>     <span class="keywordtype">double</span> cgravj=validRow/nvalidRow-0.5;</div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>     <span class="keywordtype">double</span> refpixeli=floor(cgravi);</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>     <span class="keywordtype">double</span> refpixelj=ceil(cgravj-1);</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>     <span class="comment">//but image2geo provides location at center of pixel (shifted half pixel right down)</span></div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>     image2geo(refpixeli,refpixelj,refX,refY);</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>     <span class="comment">//refX and refY now refer to center of gravity pixel</span></div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>     refX-=0.5*getDeltaX();<span class="comment">//shift to left corner</span></div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>     refY-=0.5*getDeltaY();<span class="comment">//shift to lower left corner</span></div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>   }</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>     refX=floor(validCol/nvalidCol-0.5);<span class="comment">//left corner</span></div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>     refY=floor(validRow/nvalidRow-0.5);<span class="comment">//upper corner</span></div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>     <span class="comment">//shift to lower left corner of pixel</span></div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>     refY+=1;</div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>       </div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>   }</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span> }</div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/ImgReaderGdal_8h_source.html b/doc/html/ImgReaderGdal_8h_source.html
deleted file mode 100644
index e777796..0000000
--- a/doc/html/ImgReaderGdal_8h_source.html
+++ /dev/null
@@ -1,330 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/imageclasses/ImgReaderGdal.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_6d2fd95b0bd390617ad5a1eb4a537b4a.html">imageclasses</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">ImgReaderGdal.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">ImgReaderGdal.h: class to read raster files using GDAL API library</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2012 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#ifndef _IMGREADERGDAL_H_</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor"></span><span class="preprocessor">#define _IMGREADERGDAL_H_</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "ImgRasterGdal.h"</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <assert.h></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include <fstream></span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include <string></span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include <sstream></span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include "gdal_priv.h"</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include "base/Vector2d.h"</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> </div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="comment">//--------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="classImgReaderGdal.html">   32</a></span> <span class="keyword">class </span><a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> : <span class="keyword">public</span> <span class="keyword">virtual</span> <a class="code" href="classImgRasterGdal.html">ImgRasterGdal</a></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> {</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>   <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>(<span class="keywordtype">void</span>);</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>(<span class="keyword">const</span> std::string& filename, <span class="keyword">const</span> GDALAccess& readMode=GA_ReadOnly){open(filename, readMode);};</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>   ~<a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>(<span class="keywordtype">void</span>);</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>   <span class="keywordtype">void</span> open(<span class="keyword">const</span> std::string& filename, <span class="keyword">const</span> GDALAccess& readMode=GA_ReadOnly);</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>   <span class="keywordtype">void</span> close(<span class="keywordtype">void</span>);</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> </div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>   <span class="keywordtype">void</span> setScale(<span class="keywordtype">double</span> theScale, <span class="keywordtype">int</span> band=0){</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     <span class="comment">/* if(getRasterBand(band)->SetScale(theScale)==CE_Failure){ */</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     <span class="keywordflow">if</span>(m_scale.size()!=nrOfBand()){<span class="comment">//initialize</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>       m_scale.resize(nrOfBand());</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nrOfBand();++iband)</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     m_scale[iband]=1.0;</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     }</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     m_scale[band]=theScale;</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     <span class="comment">/* }; */</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>   }</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>   <span class="keywordtype">void</span> setOffset(<span class="keywordtype">double</span> theOffset, <span class="keywordtype">int</span> band=0){</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     <span class="comment">/* if(getRasterBand(band)->SetOffset(theOffset)==CE_Failure){ */</span></div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     <span class="keywordflow">if</span>(m_offset.size()!=nrOfBand()){</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>       m_offset.resize(nrOfBand());</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nrOfBand();++iband)</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     m_offset[iband]=0.0;</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     }</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>       m_offset[band]=theOffset;</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     <span class="comment">/* }; */</span></div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>   }</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>   <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keywordtype">void</span> readData(T& value, <span class="keyword">const</span> GDALDataType& dataType, <span class="keywordtype">int</span> col, <span class="keywordtype">int</span> row, <span class="keywordtype">int</span> band=0) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>   <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keywordtype">void</span> readData(std::vector<T>& buffer, <span class="keyword">const</span> GDALDataType& dataType , <span class="keywordtype">int</span> minCol, <span class="keywordtype">int</span> maxCol, <span class="keywordtype">int</span> row, <span class="keywordtype">int</span> band=0) <span [...]
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>   <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keywordtype">void</span> readData(std::vector<T>& buffer, <span class="keyword">const</span> GDALDataType& dataType , <span class="keywordtype">int</span> minCol, <span class="keywordtype">int</span> maxCol, <span class="keywordtype">double</span> row, <span class="keywordtype">int</span> band=0, RE [...]
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>   <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keywordtype">void</span> readDataBlock(<a class="code" href="classVector2d.html">Vector2d<T></a>& buffer, <span class="keyword">const</span> GDALDataType& dataType , <span class="keywordtype">int</span> minCol, <span class="keywordtype">int</span> maxCol, <span class="keywordtype">int</span> minRow, [...]
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>   <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keywordtype">void</span> readDataBlock(std::vector<T>& buffer, <span class="keyword">const</span> GDALDataType& dataType , <span class="keywordtype">int</span> minCol, <span class="keywordtype">int</span> maxCol, <span class="keywordtype">int</span> minRow, <span class="keywordtype">int</span> maxRo [...]
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>   <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keywordtype">void</span> readData(std::vector<T>& buffer, <span class="keyword">const</span> GDALDataType& dataType, <span class="keywordtype">int</span> row, <span class="keywordtype">int</span> band=0) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>   <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keywordtype">void</span> readData(std::vector<T>& buffer, <span class="keyword">const</span> GDALDataType& dataType, <span class="keywordtype">double</span> row, <span class="keywordtype">int</span> band=0, RESAMPLE resample=NEAR) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>   <span class="keywordtype">void</span> getMinMax(<span class="keywordtype">int</span> startCol, <span class="keywordtype">int</span> endCol, <span class="keywordtype">int</span> startRow, <span class="keywordtype">int</span> endRow, <span class="keywordtype">int</span> band, <span class="keywordtype">double</span>& minValue, <span class="keywordtype">double</span>& maxValue) <span class="keyword">const [...]
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>   <span class="keywordtype">void</span> getMinMax(<span class="keywordtype">double</span>& minValue, <span class="keywordtype">double</span>& maxValue, <span class="keywordtype">int</span> band=0) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>   <span class="keywordtype">double</span> getMin(<span class="keywordtype">int</span>& col, <span class="keywordtype">int</span>& row, <span class="keywordtype">int</span> band=0) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>   <span class="keywordtype">double</span> getHistogram(std::vector<double>& histvector, <span class="keywordtype">double</span>& min, <span class="keywordtype">double</span>& max,<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>& nbin, <span class="keywordtype">int</span> theBand=0, <span class="keywordtype">bool</span> kde=<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>   <span class="keywordtype">double</span> getMax(<span class="keywordtype">int</span>& col, <span class="keywordtype">int</span>& row, <span class="keywordtype">int</span> band=0) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>   <span class="keywordtype">void</span> getRefPix(<span class="keywordtype">double</span>& refX, <span class="keywordtype">double</span> &refY, <span class="keywordtype">int</span> band=0) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>   <span class="keywordtype">void</span> getRange(std::vector<short>& range, <span class="keywordtype">int</span> Band=0) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> getNvalid(<span class="keywordtype">int</span> band) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span> </div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span> <span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>   <span class="keywordtype">void</span> setCodec(<span class="keyword">const</span> GDALAccess& readMode=GA_ReadOnly);</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span> </div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>   std::vector<double> m_scale;</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>   std::vector<double> m_offset;</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span> };</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span> </div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span> <span class="comment">//     adfGeoTransform[0] /* top left x */</span></div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span> <span class="comment">//     adfGeoTransform[1] /* w-e pixel resolution */</span></div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span> <span class="comment">//     adfGeoTransform[2] /* rotation, 0 if image is "north up" */</span></div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span> <span class="comment">//     adfGeoTransform[3] /* top left y */</span></div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span> <span class="comment">//     adfGeoTransform[4] /* rotation, 0 if image is "north up" */</span></div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span> <span class="comment">//     adfGeoTransform[5] /* n-s pixel resolution */</span></div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span> </div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keywordtype">void</span> ImgReaderGdal::readData(T& value, <span class="keyword">const</span> GDALDataType& dataType, <span class="keywordtype">int</span> col, <span class="keywordtype">int</span> row, <span class="keywordtype">int</span> band)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>   <span class="comment">//fetch raster band</span></div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   GDALRasterBand  *poBand;</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   assert(band<nrOfBand()+1);</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>   poBand = m_gds->GetRasterBand(band+1);<span class="comment">//GDAL uses 1 based index</span></div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>   assert(col<nrOfCol());</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>   assert(col>=0);</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>   assert(row<nrOfRow());</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>   assert(row>=0);</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>   poBand->RasterIO(GF_Read,col,row,1,1,&value,1,1,dataType,0,0);</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>   <span class="keywordflow">if</span>(m_scale.size()>band)</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     value=static_cast<double>(value)*m_scale[band];</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>   <span class="keywordflow">if</span>(m_offset.size()>band)</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     value=static_cast<double>(value)+m_offset[band];</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span> }</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span> </div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keywordtype">void</span> ImgReaderGdal::readData(std::vector<T>& buffer, <span class="keyword">const</span> GDALDataType& dataType, <span class="keywordtype">int</span> minCol, <span class="keywordtype">int</span> maxCol, <span class="keywordtype">int</span> row, <span class="keywordtype">int</span> b [...]
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   <span class="comment">//fetch raster band</span></div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>   GDALRasterBand  *poBand;</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>   assert(band<nrOfBand()+1);</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>   poBand = m_gds->GetRasterBand(band+1);<span class="comment">//GDAL uses 1 based index</span></div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   assert(minCol<nrOfCol());</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>   assert(minCol>=0);</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>   assert(maxCol<nrOfCol());</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>   assert(minCol<=maxCol);</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>   assert(row<nrOfRow());</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>   assert(row>=0);</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>   <span class="keywordflow">if</span>(buffer.size()!=maxCol-minCol+1)</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>     buffer.resize(maxCol-minCol+1);</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   poBand->RasterIO(GF_Read,minCol,row,buffer.size(),1,&(buffer[0]),buffer.size(),1,dataType,0,0);</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>   <span class="keywordflow">if</span>(m_scale.size()>band||m_offset.size()>band){</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     <span class="keywordtype">double</span> theScale=1;</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>     <span class="keywordtype">double</span> theOffset=0;</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     <span class="keywordflow">if</span>(m_scale.size()>band)</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>       theScale=m_scale[band];</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>     <span class="keywordflow">if</span>(m_offset.size()>band)</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>       theOffset=m_offset[band];</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> index=0;index<buffer.size();++index)</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>       buffer[index]=theScale*static_cast<double>(buffer[index])+theOffset;</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>   }</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span> }</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span> </div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keywordtype">void</span> ImgReaderGdal::readData(std::vector<T>& buffer, <span class="keyword">const</span> GDALDataType& dataType , <span class="keywordtype">int</span> minCol, <span class="keywordtype">int</span> maxCol, <span class="keywordtype">double</span> row, <span class="keywordtype">int</spa [...]
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>   <span class="comment">//todo: make upper and lower row depend on isGeo...</span></div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>   std::vector<T> readBuffer_upper;</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>   std::vector<T> readBuffer_lower;</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>   <span class="keywordflow">if</span>(buffer.size()!=maxCol-minCol+1)</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>     buffer.resize(maxCol-minCol+1);</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>   <span class="keywordtype">double</span> upperRow=row-0.5;</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>   upperRow=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(upperRow);</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>   <span class="keywordtype">double</span> lowerRow=row+0.5;</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>   lowerRow=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(lowerRow);</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>   <span class="keywordflow">switch</span>(resample){</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>   <span class="keywordflow">case</span>(BILINEAR):</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>     <span class="keywordflow">if</span>(lowerRow>=nrOfRow())</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>       lowerRow=nrOfRow()-1;</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>     <span class="keywordflow">if</span>(upperRow<0)</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>       upperRow=0;</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>     readData(readBuffer_upper,GDT_Float64,minCol,maxCol,static_cast<int>(upperRow),band);</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>     readData(readBuffer_lower,GDT_Float64,minCol,maxCol,static_cast<int>(lowerRow),band);</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>     <span class="comment">//do interpolation in y</span></div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<maxCol-minCol+1;++icol){</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>       buffer[icol]=(lowerRow-row+0.5)*readBuffer_upper[icol]+(1-lowerRow+row-0.5)*readBuffer_lower[icol];</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>     }</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>     readData(buffer,GDT_Float64,minCol,maxCol,static_cast<int>(row),band);</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>   }</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span> }</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span> </div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keywordtype">void</span> ImgReaderGdal::readDataBlock(<a class="code" href="classVector2d.html">Vector2d<T></a>& buffer, <span class="keyword">const</span> GDALDataType& dataType , <span class="keywordtype">int</span> minCol, <span class="keywordtype">int</span> maxCol, <span class="keywordtype">int</ [...]
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>   buffer.resize(maxRow-minRow+1);</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=minRow;irow<=maxRow;++irow){</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>     buffer[irow-minRow].resize(maxCol-minCol+1);</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>     readData(buffer[irow-minRow],dataType,minCol,maxCol,irow,band);</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>   }</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span> }</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>   </div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keywordtype">void</span> ImgReaderGdal::readDataBlock(std::vector<T>& buffer, <span class="keyword">const</span> GDALDataType& dataType , <span class="keywordtype">int</span> minCol, <span class="keywordtype">int</span> maxCol, <span class="keywordtype">int</span> minRow, <span class="keywordtype">int [...]
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>   <span class="keywordtype">double</span> theScale=1;</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>   <span class="keywordtype">double</span> theOffset=0;</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>   <span class="keywordflow">if</span>(m_scale.size()>band)</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>     theScale=m_scale[band];</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>   <span class="keywordflow">if</span>(m_offset.size()>band)</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>     theOffset=m_offset[band];</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>   <span class="comment">//fetch raster band</span></div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>   GDALRasterBand  *poBand;</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>   assert(band<nrOfBand()+1);</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>   poBand = m_gds->GetRasterBand(band+1);<span class="comment">//GDAL uses 1 based index</span></div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>   <span class="keywordflow">if</span>(minCol>=nrOfCol() ||</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>      (minCol<0) ||</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>      (maxCol>=nrOfCol()) ||</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>      (minCol>maxCol) ||</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>      (minRow>=nrOfRow()) ||</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>      (minRow<0) ||</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>      (maxRow>=nrOfRow()) ||</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>      (minRow>maxRow)){</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>     std::string errorString=<span class="stringliteral">"block not within image boundaries"</span>;</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>   }</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>   <span class="comment">/* assert(minCol<nrOfCol()); */</span></div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>   <span class="comment">/* assert(minCol>=0); */</span></div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>   <span class="comment">/* assert(maxCol<nrOfCol()); */</span></div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>   <span class="comment">/* assert(minCol<=maxCol); */</span></div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>   <span class="comment">/* assert(minRow<nrOfRow()); */</span></div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>   <span class="comment">/* assert(minRow>=0); */</span></div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>   <span class="comment">/* assert(maxRow<nrOfRow()); */</span></div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>   <span class="comment">/* assert(minRow<=maxRow); */</span></div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>   <span class="keywordflow">if</span>(buffer.size()!=(maxRow-minRow+1)*(maxCol-minCol+1))</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>     buffer.resize((maxRow-minRow+1)*(maxCol-minCol+1));</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>   poBand->RasterIO(GF_Read,minCol,minRow,maxCol-minCol+1,maxRow-minRow+1,&(buffer[0]),(maxCol-minCol+1),(maxRow-minRow+1),dataType,0,0);</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>   <span class="keywordflow">if</span>(m_scale.size()>band||m_offset.size()>band){</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> index=0;index<buffer.size();++index)</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>       buffer[index]=theScale*buffer[index]+theOffset;</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>   }</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span> }</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span> </div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span> <span class="comment">// template<typename T> void ImgReaderGdal::readDataBlock(vector<T>& buffer, const GDALDataType& dataType , int minCol, int maxCol, int minRow, int maxRow, int band) const</span></div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span> <span class="comment">// {</span></div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span> <span class="comment">//   assert(band<nrOfBand()+1);</span></div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span> <span class="comment">//   assert(minCol<nrOfCol());</span></div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span> <span class="comment">//   assert(minCol>=0);</span></div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span> <span class="comment">//   assert(maxCol<nrOfCol());</span></div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span> <span class="comment">//   assert(minCol<=maxCol);</span></div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span> <span class="comment">//   assert(minRow<nrOfRow());</span></div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span> <span class="comment">//   assert(minRow>=0);</span></div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span> <span class="comment">//   assert(maxRow<nrOfRow());</span></div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span> <span class="comment">//   assert(minRow<=maxRow);</span></div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span> <span class="comment">//   if(buffer.size()!=(maxRow-minRow+1)*(maxCol-minCol+1))</span></div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span> <span class="comment">//     buffer.resize((maxRow-minRow+1)*(maxCol-minCol+1));</span></div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span> <span class="comment">//   //fetch raster band</span></div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span> <span class="comment">//   GDALRasterBand  *poBand;</span></div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span> <span class="comment">//   assert(band<nrOfBand()+1);</span></div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span> <span class="comment">//   poBand = m_gds->GetRasterBand(band+1);//GDAL uses 1 based index</span></div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span> <span class="comment">//   for(int irow=0;irow<maxRow-minRow+1;++irow)</span></div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span> <span class="comment">//     poBand->RasterIO(GF_Read,minCol,minRow+irow,maxCol-minCol+1,1,&(buffer[irow*(maxCol-minCol+1)]),maxCol-minCol+1,1,dataType,0,0);</span></div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span> <span class="comment">// }</span></div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>   </div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keywordtype">void</span> ImgReaderGdal::readData(std::vector<T>& buffer, <span class="keyword">const</span> GDALDataType& dataType, <span class="keywordtype">int</span> row, <span class="keywordtype">int</span> band)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>   readData(buffer,dataType,0,nrOfCol()-1,row,band);</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span> }</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span> </div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keywordtype">void</span> ImgReaderGdal::readData(std::vector<T>& buffer, <span class="keyword">const</span> GDALDataType& dataType, <span class="keywordtype">double</span> row, <span class="keywordtype">int</span> band, RESAMPLE resample)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>   readData(buffer,dataType,0,nrOfCol()-1,row,band,resample);</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span> }</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span> </div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span> </div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span> <span class="preprocessor">#endif // _IMGREADERGDAL_H_</span></div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span> <span class="comment">//       //fetch raster band</span></div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span> <span class="comment">//   GDALRasterBand  *poBand;</span></div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span> <span class="comment">//   assert(band<nrOfBand()+1);</span></div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span> <span class="comment">//   poBand = m_gds->GetRasterBand(band+1);//GDAL uses 1 based index</span></div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span> <span class="comment">//   buffer.resize(maxCol-minCol+1);</span></div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span> <span class="comment">//   assert(minCol<nrOfCol());</span></div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span> <span class="comment">//   assert(row<nrOfRow());</span></div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span> <span class="comment">//   poBand->RasterIO(GF_Read,minCol,row,buffer.size(),1,&(buffer[0]),buffer.size(),1,GDT_Int16,0,0);</span></div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-<div class="ttc" id="classVector2d_html"><div class="ttname"><a href="classVector2d.html">Vector2d</a></div><div class="ttdef"><b>Definition:</b> <a href="Vector2d_8h_source.html#l00031">Vector2d.h:31</a></div></div>
-<div class="ttc" id="classImgRasterGdal_html"><div class="ttname"><a href="classImgRasterGdal.html">ImgRasterGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgRasterGdal_8h_source.html#l00035">ImgRasterGdal.h:35</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/ImgReaderOgr_8cc_source.html b/doc/html/ImgReaderOgr_8cc_source.html
deleted file mode 100644
index 7497692..0000000
--- a/doc/html/ImgReaderOgr_8cc_source.html
+++ /dev/null
@@ -1,509 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/imageclasses/ImgReaderOgr.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_6d2fd95b0bd390617ad5a1eb4a537b4a.html">imageclasses</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">ImgReaderOgr.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">ImgReaderOgr.cc: class to read vector files using OGR API library</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2012 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <iostream></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <fstream></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "ImgReaderOgr.h"</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "ImgWriterOgr.h"</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "cpl_string.h"</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="comment">//---------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> ImgReaderOgr::ImgReaderOgr(<span class="keywordtype">void</span>)</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span>   : m_fs(<span class="stringliteral">' '</span>)</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> {}</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> </div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> ImgReaderOgr::ImgReaderOgr(<span class="keyword">const</span> std::string& filename)</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> {</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>   open(filename);</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> }</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> </div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> ImgReaderOgr::~ImgReaderOgr(<span class="keywordtype">void</span>)</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> {</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> }</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="comment">//---------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> </div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="keywordtype">void</span> ImgReaderOgr::open(<span class="keyword">const</span> std::string& filename)</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span> {</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   m_fs=<span class="charliteral">' '</span>;</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   m_filename = filename;</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   setCodec();</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span> }</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span> </div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span> <span class="comment">//---------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span> <span class="keywordtype">void</span> ImgReaderOgr::close(<span class="keywordtype">void</span>)</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span> {</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span> <span class="preprocessor">#if GDAL_VERSION_MAJOR < 2</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span> <span class="preprocessor"></span>  OGRDataSource::DestroyDataSource(m_datasource);</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span> <span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span> <span class="preprocessor"></span>  GDALClose(m_datasource);</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span> <span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span> <span class="preprocessor"></span>}</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span> </div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span> <span class="comment">//---------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span> <span class="keywordtype">void</span> ImgReaderOgr::setCodec(<span class="keywordtype">void</span>){</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span> <span class="preprocessor">#if GDAL_VERSION_MAJOR < 2</span></div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span> <span class="preprocessor"></span>  <span class="comment">//register the drivers</span></div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>   OGRRegisterAll();</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>   <span class="comment">//open the input OGR datasource. Datasources can be files, RDBMSes, directories full of files, or even remote web services depending on the driver being used. However, the datasource name is always a single string.</span></div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>   m_datasource = OGRSFDriverRegistrar::Open(m_filename.c_str(), FALSE);<span class="comment">//FAlSE: do not update</span></div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span> <span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span> <span class="preprocessor"></span>  <span class="comment">//register the drivers</span></div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>   GDALAllRegister();</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>   <span class="comment">//open the input OGR datasource. Datasources can be files, RDBMSes, directories full of files, or even remote web services depending on the driver being used. However, the datasource name is always a single string.</span></div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>   m_datasource = (GDALDataset*) GDALOpenEx(m_filename.c_str(), GDAL_OF_READONLY, NULL, NULL, NULL);</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span> <span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span> <span class="preprocessor"></span>  <span class="keywordflow">if</span>( m_datasource == NULL ){</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>     std::string errorString=<span class="stringliteral">"Open failed"</span>;</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>   }</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span> }</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span> </div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span> <span class="keywordtype">bool</span> ImgReaderOgr::getExtent(<span class="keywordtype">double</span>& ulx, <span class="keywordtype">double</span>& uly, <span class="keywordtype">double</span>& lrx, <span class="keywordtype">double</span>& lry, <span class="keywordtype">int</span> layer)</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span> {</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>   OGREnvelope oExt;</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>   <span class="keywordflow">if</span>(getLayer(layer)->GetExtent(&oExt,TRUE)==OGRERR_NONE){</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>     ulx=oExt.MinX;</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     uly=oExt.MaxY;</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     lrx=oExt.MaxX;</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     lry=oExt.MinY;</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   }</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span> }</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span> </div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span> <span class="keywordtype">bool</span> ImgReaderOgr::getExtent(<span class="keywordtype">double</span>& ulx, <span class="keywordtype">double</span>& uly, <span class="keywordtype">double</span>& lrx, <span class="keywordtype">double</span>& lry)</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span> {</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>   <span class="keywordtype">bool</span> success=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   OGREnvelope oExt;</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ilayer=0;ilayer<getLayerCount();++ilayer){</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     <span class="keywordflow">if</span>(getLayer(ilayer)->GetExtent(&oExt,TRUE)==OGRERR_NONE){</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>       <span class="keywordflow">if</span>(!ilayer){</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     ulx=oExt.MinX;</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     uly=oExt.MaxY;</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     lrx=oExt.MaxX;</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     lry=oExt.MinY;</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>       }</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     <span class="keywordflow">if</span>(ulx>oExt.MinX)</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>       ulx=oExt.MinX;</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     <span class="keywordflow">if</span>(uly<oExt.MaxY)</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>       uly=oExt.MaxY;</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     <span class="keywordflow">if</span>(lrx<oExt.MaxX)</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>       lrx=oExt.MaxX;</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>     <span class="keywordflow">if</span>(lry>oExt.MinY)</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>       lry=oExt.MinY;</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>       }</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>       success=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     }</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>       success=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>   }</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>   <span class="keywordflow">return</span> success;</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span> }</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span> </div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> ImgReaderOgr::getFeatureCount(<span class="keywordtype">int</span> layer)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>   <span class="keywordflow">return</span>(m_datasource->GetLayer(layer)->GetFeatureCount());</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span> }</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span> </div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span> <span class="keywordtype">int</span> ImgReaderOgr::getFieldCount(<span class="keywordtype">int</span> layer)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>   <span class="keywordflow">if</span>(layer<0)</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>     layer=m_datasource->GetLayerCount()-1;</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>   assert(m_datasource->GetLayerCount()>layer);</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>   OGRLayer  *poLayer;</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>   <span class="keywordflow">if</span>((poLayer = m_datasource->GetLayer(layer))==NULL){</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>     std::string errorstring=<span class="stringliteral">"Could not get layer"</span>;</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>     <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>   }</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>   OGRFeatureDefn *poFDefn = poLayer->GetLayerDefn();</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>   <span class="keywordflow">return</span>(poFDefn->GetFieldCount());</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span> }</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span> </div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span> <span class="keywordtype">int</span> ImgReaderOgr::getFields(std::vector<std::string>& fields, <span class="keywordtype">int</span> layer)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>   <span class="keywordflow">if</span>(layer<0)</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>     layer=m_datasource->GetLayerCount()-1;</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>   assert(m_datasource->GetLayerCount()>layer);</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>   OGRLayer  *poLayer;</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>   <span class="keywordflow">if</span>((poLayer = m_datasource->GetLayer(layer))==NULL){</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>     std::string errorstring=<span class="stringliteral">"Could not get layer"</span>;</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>     <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>   }</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>   OGRFeatureDefn *poFDefn = poLayer->GetLayerDefn();</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>   fields.clear();</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>   fields.resize(poFDefn->GetFieldCount());</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iField=0;iField<poFDefn->GetFieldCount();++iField){</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>     OGRFieldDefn *poFieldDefn = poFDefn->GetFieldDefn(iField);</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>     fields[iField]=poFieldDefn->GetNameRef();</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>   }</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>   <span class="keywordflow">return</span>(fields.size());</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span> }</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span> </div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span> <span class="keywordtype">int</span> ImgReaderOgr::getFields(std::vector<OGRFieldDefn*>& fields, <span class="keywordtype">int</span> layer)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>   <span class="keywordflow">if</span>(layer<0)</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>     layer=m_datasource->GetLayerCount()-1;</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>   assert(m_datasource->GetLayerCount()>layer);</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>   OGRLayer  *poLayer;</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>   <span class="keywordflow">if</span>((poLayer = m_datasource->GetLayer(layer))==NULL){</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>     std::string errorstring=<span class="stringliteral">"Could not get layer"</span>;</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>     <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>   }</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>   OGRFeatureDefn *poFDefn = poLayer->GetLayerDefn();</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>   fields.clear();</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>   fields.resize(poFDefn->GetFieldCount());</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iField=0;iField<poFDefn->GetFieldCount();++iField){</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>     OGRFieldDefn *poFieldDefn = poFDefn->GetFieldDefn(iField);</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>     fields[iField]=poFDefn->GetFieldDefn(iField);</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>   }</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>   assert(fields.size()==getFieldCount(layer));</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>   <span class="keywordflow">return</span>(fields.size());</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span> }</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span> </div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span> std::string ImgReaderOgr::getProjection(<span class="keywordtype">int</span> layer)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>   <span class="keywordflow">if</span>(m_datasource->GetLayer(layer)->GetSpatialRef()){</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>     <span class="keywordtype">char</span>* ppszResult;</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>     m_datasource->GetLayer(layer)->GetSpatialRef()->exportToWkt(&ppszResult);</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>     <span class="keywordflow">return</span>(ppszResult);</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>   }</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>     <span class="keywordflow">return</span> <span class="stringliteral">""</span>;</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span> }</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span> </div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span> OGRwkbGeometryType ImgReaderOgr::getGeometryType(<span class="keywordtype">int</span> layer)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>   <span class="keywordflow">return</span> m_datasource->GetLayer(layer)->GetLayerDefn()->GetGeomType();</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span> }</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span> </div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span> std::ostream& operator<<(std::ostream& theOstream, <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a>& theImageReader){</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>   <span class="comment">//An OGRDataSource can potentially have many layers associated with it. The number of layers available can be queried with OGRDataSource::GetLayerCount() and individual layers fetched by index using OGRDataSource::GetLayer(). However, we wil just fetch the layer by name.</span></div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>   <span class="comment">//todo: try to open and catch if failure...</span></div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>   <span class="comment">// ofstream fpoints(filename.c_str(),ios::out);</span></div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span> </div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>   <span class="keywordtype">int</span> nlayerRead=theImageReader.getDataSource()->GetLayerCount();</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>       </div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ilayer=0;ilayer<nlayerRead;++ilayer){</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>     OGRLayer *readLayer=theImageReader.getLayer(ilayer);</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>     OGRFeatureDefn *poFDefn = readLayer->GetLayerDefn();</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span> </div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>     theOstream << <span class="stringliteral">"#"</span>;</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>     <span class="keywordtype">int</span> iField=0;</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iField=0;iField<poFDefn->GetFieldCount();++iField){</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>       OGRFieldDefn *poFieldDefn = poFDefn->GetFieldDefn(iField);</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>       std::string fieldname=poFieldDefn->GetNameRef();</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>       theOstream << fieldname << theImageReader.getFieldSeparator();</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>     }</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>     theOstream << std::endl;</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span> </div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>     readLayer->ResetReading();</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>   </div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>     <span class="comment">//start reading features from the layer</span></div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>     OGRFeature *poFeature;</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>     <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> ifeature=0;</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>     <span class="keywordflow">while</span>( (poFeature = readLayer->GetNextFeature()) != NULL ){</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>       OGRGeometry *poGeometry;</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>       poGeometry = poFeature->GetGeometryRef();</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>       assert(poGeometry != NULL);</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>       <span class="keywordtype">double</span> x,y;</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>       <span class="keywordflow">if</span>(wkbFlatten(poGeometry->getGeometryType()) == wkbPoint){</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>     OGRPoint *poPoint = (OGRPoint *) poGeometry;</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>     x=poPoint->getX();</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>     y=poPoint->getY();</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>       }</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>       std::vector<std::string> vfields(poFDefn->GetFieldCount());</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>       std::string featurename;</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>       std::vector<std::string>::iterator fit=vfields.begin();</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iField=0;iField<poFDefn->GetFieldCount();++iField){</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>     *(fit++)=poFeature->GetFieldAsString(iField);</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>       }</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>       theOstream.precision(12);</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>       <span class="keywordflow">if</span>(wkbFlatten(poGeometry->getGeometryType()) == wkbPoint)</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>     theOstream << x << theImageReader.getFieldSeparator() << y;</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>       <span class="keywordflow">for</span>(fit=vfields.begin();fit!=vfields.end();++fit)</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>     theOstream << theImageReader.getFieldSeparator() << *fit;</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>       theOstream << std::endl;</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>       ++ifeature;</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>     }</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>   }</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>   <span class="keywordflow">return</span>(theOstream);</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span> }</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span> </div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span> <span class="comment">// OGRLayer * ImgReaderOgr::executeSql(const std::string& output, const std::string& sqlStatement, OGRGeometry* spatialFilter)</span></div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span> <span class="comment">// {</span></div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span> <span class="comment">//   OGRLayer *poResultSet;</span></div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span> <span class="comment">//   poResultSet = m_datasource->ExecuteSQL(sqlStatement.c_str(), spatialFilter,NULL );</span></div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span> </div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span> <span class="comment">//   if( poResultSet != NULL ){</span></div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span> <span class="comment">//     ImgWriterOgr imgWriter;</span></div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span> <span class="comment">//     imgWriter.open(output);</span></div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span> <span class="comment">//     imgWriter.copyLayer(poResultSet,output);</span></div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span> <span class="comment">//     m_datasource->ReleaseResultSet( poResultSet );</span></div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span> <span class="comment">//     imgWriter.close();</span></div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span> <span class="comment">//   }</span></div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span> <span class="comment">// }</span></div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span> </div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ImgReaderOgr::readDataImageOgr(std::map<std::string,<a class="code" href="classVector2d.html">Vector2d<float></a> > &mapPixels, <span class="comment">//[classNr][pixelNr][bandNr],</span></div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>                         std::vector<std::string>& fields,</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>                         <span class="keyword">const</span> std::vector<unsigned short>& bands,</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>                         <span class="keyword">const</span> std::string& label,</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>                         <span class="keyword">const</span> std::vector<std::string>& layers,</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>                         <span class="keywordtype">int</span> verbose)</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span> {</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>   mapPixels.clear();</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>   <span class="keywordtype">int</span> nsample=0;</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>   <span class="keywordtype">int</span> totalSamples=0;  </div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>   <span class="keywordtype">int</span> nband=0;</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>     std::cout << <span class="stringliteral">"reading OGR dataset "</span> << m_filename  << std::endl;</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ilayer=0;ilayer<getLayerCount();++ilayer){</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>     std::string currentLayername=getLayer(ilayer)->GetName();</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>     <span class="keywordflow">if</span>(layers.size())</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>       <span class="keywordflow">if</span>(find(layers.begin(),layers.end(),currentLayername)==layers.end())</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>       <span class="comment">//only retain bands in fields</span></div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>       getFields(fields,ilayer);</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>       std::vector<std::string>::iterator fit=fields.begin();</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>       <span class="keywordflow">if</span>(verbose>1)</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>     std::cout << <span class="stringliteral">"reading fields: "</span>;</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>       <span class="keywordflow">while</span>(fit!=fields.end()){</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>       std::cout << *fit << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>       <span class="comment">// size_t pos=(*fit).find_first_not_of("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_ ");</span></div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>     <span class="keywordflow">if</span>((*fit).substr(0,1)==<span class="stringliteral">"B"</span>||(*fit).substr(0,1)==<span class="stringliteral">"b"</span>){</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>       <span class="comment">// if((*fit).substr(1).find_first_not_of("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_ ")!=std::string::npos){</span></div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>       std::size_t digits=(*fit).substr(1,1).find_first_of(<span class="stringliteral">"0123456789"</span>);</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>       std::size_t digite=(*fit).substr(1).find_first_not_of(<span class="stringliteral">"0123456789"</span>);</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>       <span class="keywordflow">if</span>((*fit)==<span class="stringliteral">"B"</span> || (*fit)==<span class="stringliteral">"b"</span> || (*fit)==<span class="stringliteral">"Band"</span>)<span class="comment">//B is only band</span></div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>         ++fit;</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(digits!=std::string::npos&&digite==std::string::npos){</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>         std::string digitString=(*fit).substr(digits);</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>         <span class="comment">// int theBand=atoi((*fit).substr(1).c_str());</span></div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>         <span class="keywordtype">int</span> theBand=atoi(digitString.c_str());</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>         <span class="keywordflow">if</span>(bands.size()){</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>           <span class="keywordtype">bool</span> validBand=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<bands.size();++iband){</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>         <span class="keywordflow">if</span>(theBand==bands[iband])</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>           validBand=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>           }</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>           <span class="keywordflow">if</span>(validBand)</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>         ++fit;</div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>         fields.erase(fit);</div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>         }</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>           ++fit;</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>       }</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>         fields.erase(fit);</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>     }</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>       fields.erase(fit);</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>       }</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>       <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>     std::cout << std::endl;</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>       <span class="keywordflow">if</span>(verbose){</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>     std::cout << <span class="stringliteral">"fields:"</span>;</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>       <span class="keywordflow">for</span>(std::vector<std::string>::iterator fit=fields.begin();fit!=fields.end();++fit)</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>     std::cout << <span class="stringliteral">" "</span> << *fit;</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>       std::cout << std::endl;</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>       }</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>       <span class="keywordflow">if</span>(!nband){</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>       std::cout << <span class="stringliteral">"reading data"</span> << std::endl;</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>     nband=readData(mapPixels,OFTReal,fields,label,ilayer,<span class="keyword">true</span>,verbose==2);</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>       }</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>     assert(nband==readData(mapPixels,OFTReal,fields,label,ilayer,<span class="keyword">true</span>,<span class="keyword">false</span>));</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>       }</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>       nsample=getFeatureCount(ilayer);</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>       totalSamples+=nsample;</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>       <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>     std::cout << <span class="stringliteral">": "</span> << nsample << <span class="stringliteral">" samples read with "</span> << nband << <span class="stringliteral">" bands"</span> << std::endl;</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>     }</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>     <span class="keywordflow">catch</span>(std::string e){</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>       std::ostringstream estr;</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>       estr << e << <span class="stringliteral">" "</span> << m_filename;</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>       <span class="keywordflow">throw</span>(estr.str());</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>     }</div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>   }</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>     std::cout << <span class="stringliteral">"total number of samples read "</span> << totalSamples << std::endl;</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>   <span class="keywordflow">return</span> totalSamples;</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span> }</div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span> </div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ImgReaderOgr::readDataImageOgr(std::map<std::string,<a class="code" href="classVector2d.html">Vector2d<float></a> > &mapPixels, <span class="comment">//[classNr][pixelNr][bandNr],</span></div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>                         std::vector<std::string>& fields,</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>                         <span class="keywordtype">double</span> start,</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>                         <span class="keywordtype">double</span> end,</div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>                         <span class="keyword">const</span> std::string& label,</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>                         <span class="keyword">const</span> std::vector<std::string>& layers,</div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>                         <span class="keywordtype">int</span> verbose)</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span> {</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>   mapPixels.clear();</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>   <span class="keywordtype">int</span> nsample=0;</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>   <span class="keywordtype">int</span> totalSamples=0;  </div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>   <span class="keywordtype">int</span> nband=0;</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>     std::cout << <span class="stringliteral">"reading OGR dataset file "</span> << m_filename  << std::endl;</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ilayer=0;ilayer<getLayerCount();++ilayer){</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>     std::string currentLayername=getLayer(ilayer)->GetName();</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>     <span class="keywordflow">if</span>(layers.size())</div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>       <span class="keywordflow">if</span>(find(layers.begin(),layers.end(),currentLayername)==layers.end())</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>       <span class="comment">//only retain bands in fields</span></div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>       getFields(fields,ilayer);</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>       std::vector<std::string>::iterator fit=fields.begin();</div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>       <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>     std::cout << <span class="stringliteral">"reading fields: "</span>;</div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>       <span class="keywordflow">while</span>(fit!=fields.end()){</div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>       std::cout << *fit << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>     <span class="keywordflow">if</span>((*fit).substr(0,1)==<span class="stringliteral">"B"</span>||(*fit).substr(0,1)==<span class="stringliteral">"b"</span>){</div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>       <span class="comment">// if((*fit).substr(1).find_first_not_of("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_ ")!=std::string::npos){</span></div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>       std::size_t digits=(*fit).substr(1,1).find_first_of(<span class="stringliteral">"0123456789"</span>);</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>       std::size_t digite=(*fit).substr(1).find_first_not_of(<span class="stringliteral">"0123456789"</span>);</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>       <span class="keywordflow">if</span>(*fit==<span class="stringliteral">"B"</span> || *fit==<span class="stringliteral">"b"</span>|| *fit==<span class="stringliteral">"Band"</span>)</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>         ++fit;</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(digits!=std::string::npos&&digite==std::string::npos){</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>         std::string digitString=(*fit).substr(digits);</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>         <span class="keywordtype">int</span> iband=atoi(digitString.c_str());</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>         <span class="comment">// int iband=atoi((*fit).substr(1).c_str());</span></div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>         <span class="keywordflow">if</span>((start||end)&&(iband<start||iband>end))</div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>           fields.erase(fit);</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>           ++fit;</div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>       }</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>         fields.erase(fit);</div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>     }</div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>       fields.erase(fit);</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>       }</div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span>       <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>     std::cout << std::endl;</div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>       <span class="keywordflow">if</span>(verbose){</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>     std::cout << <span class="stringliteral">"fields:"</span>;</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span>     <span class="keywordflow">for</span>(std::vector<std::string>::iterator fit=fields.begin();fit!=fields.end();++fit)</div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>       std::cout << <span class="stringliteral">" "</span> << *fit;</div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span>     std::cout << std::endl;</div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>       }</div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>       <span class="keywordflow">if</span>(!nband){</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>       std::cout << <span class="stringliteral">"reading data"</span> << std::endl;</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span>     nband=readData(mapPixels,OFTReal,fields,label,ilayer,<span class="keyword">true</span>,verbose==2);</div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>       }</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>     assert(nband==readData(mapPixels,OFTReal,fields,label,ilayer,<span class="keyword">true</span>,<span class="keyword">false</span>));</div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>       }</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span>       nsample=getFeatureCount(ilayer);</div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>       totalSamples+=nsample;</div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>       <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span>     std::cout << <span class="stringliteral">": "</span> << nsample << <span class="stringliteral">" samples read with "</span> << nband << <span class="stringliteral">" bands"</span> << std::endl;</div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>     }</div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span>     <span class="keywordflow">catch</span>(std::string e){</div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span>       std::ostringstream estr;</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>       estr << e << <span class="stringliteral">" "</span> << m_filename;</div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span>       <span class="keywordflow">throw</span>(estr.str());</div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span>     }</div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span>       std::cout << <span class="stringliteral">": "</span> << nsample << <span class="stringliteral">" samples read with "</span> << nband << <span class="stringliteral">" bands"</span> << std::endl;</div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span>   }</div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span>     std::cout << <span class="stringliteral">"total number of samples read "</span> << totalSamples << std::endl;</div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span>   <span class="keywordflow">return</span> totalSamples;</div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span> }</div>
-<div class="ttc" id="classVector2d_html"><div class="ttname"><a href="classVector2d.html">Vector2d</a></div><div class="ttdef"><b>Definition:</b> <a href="Vector2d_8h_source.html#l00031">Vector2d.h:31</a></div></div>
-<div class="ttc" id="classImgReaderOgr_html"><div class="ttname"><a href="classImgReaderOgr.html">ImgReaderOgr</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderOgr_8h_source.html#l00035">ImgReaderOgr.h:35</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/ImgReaderOgr_8h_source.html b/doc/html/ImgReaderOgr_8h_source.html
deleted file mode 100644
index fab87ac..0000000
--- a/doc/html/ImgReaderOgr_8h_source.html
+++ /dev/null
@@ -1,1035 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/imageclasses/ImgReaderOgr.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_6d2fd95b0bd390617ad5a1eb4a537b4a.html">imageclasses</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">ImgReaderOgr.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">ImgReaderOgr.h: class to read vector files using OGR API library</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2012 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#ifndef _IMGREADEROGR_H_</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor"></span><span class="preprocessor">#define _IMGREADEROGR_H_</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <assert.h></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <fstream></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include <string></span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include <sstream></span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include <map></span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include <vector></span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include <iostream></span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include "ogrsf_frmts.h"</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="preprocessor">#include "base/Vector2d.h"</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="preprocessor">#include "ImgReaderGdal.h"</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> </div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="comment">//--------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="classImgReaderOgr.html">   35</a></span> <span class="keyword">class </span><a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a></div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> {</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>   <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a>(<span class="keywordtype">void</span>);</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>   <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a>(<span class="keyword">const</span> std::string& filename);</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   ~<a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a>(<span class="keywordtype">void</span>);</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>   <span class="keywordtype">void</span> open(<span class="keyword">const</span> std::string& filename);</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   <span class="keywordtype">void</span> close(<span class="keywordtype">void</span>);</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   <span class="comment">//   int readData(Vector2d<double>& data, const OGRFieldType& fieldType, std::vector<std::string>& fields, int layer=0, bool pos=false);//default layer 0 and no pos information in data</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   <span class="keyword">template</span> <<span class="keyword">typename</span> T> <span class="keywordtype">int</span> readXY(std::vector<T>& xVector, std::vector<T>& yVector, <span class="keywordtype">int</span> layer=0, <span class="keywordtype">bool</span> verbose=<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   <span class="keyword">template</span> <<span class="keyword">typename</span> T> <span class="keywordtype">int</span> readY(std::vector<T>& yVector, <span class="keywordtype">int</span> layer=0, <span class="keywordtype">bool</span> verbose=<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>   <span class="keyword">template</span> <<span class="keyword">typename</span> T> <span class="keywordtype">int</span> readData(std::vector<T>& data, <span class="keyword">const</span> OGRFieldType& fieldType, std::vector<std::string>& fields, OGRFeature *poFeature, <span class="keywordtype">int</span> layer=0, <span class="keywordtype">bool</span> pos=<span class="keyword">false</ [...]
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   <span class="keyword">template</span> <<span class="keyword">typename</span> T> <span class="keywordtype">int</span> readData(std::vector<T>& data, <span class="keyword">const</span> OGRFieldType& fieldType, <span class="keyword">const</span> std::string& theField, <span class="keywordtype">int</span> layer=0, <span class="keywordtype">bool</span> verbose=<span class="keyword">false</s [...]
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>   <span class="keyword">template</span> <<span class="keyword">typename</span> T> <span class="keywordtype">int</span> readData(<a class="code" href="classVector2d.html">Vector2d<T></a>& data, <span class="keyword">const</span> OGRFieldType& fieldType, std::vector<std::string>& fields, <span class="keywordtype">int</span> layer=0, <span class="keywordtype">bool</span> pos=<span cla [...]
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>   <span class="keyword">template</span> <<span class="keyword">typename</span> T> <span class="keywordtype">int</span> readData(std::map<<span class="keywordtype">int</span>,<a class="code" href="classVector2d.html">Vector2d<T></a> >& data, <span class="keyword">const</span> OGRFieldType& fieldType, std::vector<std::string>& fields, <span class="keyword">const</span> std::str [...]
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>   <span class="keyword">template</span> <<span class="keyword">typename</span> T> <span class="keywordtype">int</span> readData(std::map<std::string,<a class="code" href="classVector2d.html">Vector2d<T></a> >& data, <span class="keyword">const</span> OGRFieldType& fieldType, std::vector<std::string>& fields, <span class="keyword">const</span> std::string& label, <span cla [...]
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> readDataImageOgr(std::map<std::string,<a class="code" href="classVector2d.html">Vector2d<float></a> > &mapPixels, <span class="comment">//[classNr][pixelNr][bandNr],</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>                 std::vector<std::string>& fields,</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>                 <span class="keyword">const</span> std::vector<unsigned short>& bands,</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>                 <span class="keyword">const</span> std::string& label,</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>                 <span class="keyword">const</span> std::vector<std::string>& layers,</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>                 <span class="keywordtype">int</span> verbose=<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span> </div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> readDataImageOgr(std::map<std::string,<a class="code" href="classVector2d.html">Vector2d<float></a> > &mapPixels, <span class="comment">//[classNr][pixelNr][bandNr],</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>                 std::vector<std::string>& fields,</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>                 <span class="keywordtype">double</span> start,</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>                 <span class="keywordtype">double</span> end,</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>                 <span class="keyword">const</span> std::string& label,</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>                 <span class="keyword">const</span> std::vector<std::string>& layers,</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>                 <span class="keywordtype">int</span> verbose=<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span> </div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>   <span class="comment">//  void shape2ascii(std::ostream& theOstream, const std::string& pointname, int layer=0, bool verbose=false);</span></div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> getFeatureCount(<span class="keywordtype">int</span> layer=0) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>   <span class="keywordtype">int</span> getFieldCount(<span class="keywordtype">int</span> layer=0) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>   OGRLayer* getLayer(<span class="keywordtype">int</span> layer=0){<span class="keywordflow">return</span> m_datasource->GetLayer(layer);};</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>   std::string getProjection(<span class="keywordtype">int</span> layer=0) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>   OGRwkbGeometryType getGeometryType(<span class="keywordtype">int</span> layer=0) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>   std::string getLayerName(<span class="keywordtype">int</span> layer=0){<span class="keywordflow">return</span> m_datasource->GetLayer(layer)->GetLayerDefn()->GetName();};</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>   <span class="comment">//  int getLayer(int layer=0) const;</span></div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>   <span class="keywordtype">int</span> getFields(std::vector<std::string>& fields, <span class="keywordtype">int</span> layer=0) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>   <span class="keywordtype">int</span> getFields(std::vector<OGRFieldDefn*>& fields, <span class="keywordtype">int</span> layer=0) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span> <span class="preprocessor">#if GDAL_VERSION_MAJOR < 2</span></div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span> <span class="preprocessor"></span>  OGRDataSource* getDataSource(<span class="keywordtype">void</span>) {<span class="keywordflow">return</span> m_datasource;};</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>   OGRSFDriver* getDriver(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_datasource->GetDriver();};</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span> <span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span> <span class="preprocessor"></span>  GDALDataset* getDataSource(<span class="keywordtype">void</span>) {<span class="keywordflow">return</span> m_datasource;};</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>   GDALDriver* getDriver(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_datasource->GetDriver();};</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span> <span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span> <span class="preprocessor"></span>  <span class="keywordtype">int</span> getLayerCount(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_datasource->GetLayerCount();};</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span> <span class="comment">//   OGRLayer *executeSql(const std::string& output,const std::string& sqlStatement, OGRGeometry* spatialFilter=NULL);</span></div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>   <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keywordtype">int</span> readSql(<a class="code" href="classVector2d.html">Vector2d<T></a>& data, <span class="keyword">const</span> OGRFieldType& fieldType, std::vector<std::string>& fields, <span class="keyword">const</span> std::string& sqlStatement, OGRGeometry* spatialFilter=NULL,  [...]
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keywordtype">int</span> readSql(std::map<<span class="keywordtype">int</span>,<a class="code" href="classVector2d.html">Vector2d<T></a> >& data, <span class="keyword">const</span> OGRFieldType& fieldType, std::vector<std::string>& fields, <span class="keyword">const</span> std::strin [...]
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>   <span class="keywordtype">bool</span> getExtent(<span class="keywordtype">double</span>& ulx, <span class="keywordtype">double</span>& uly, <span class="keywordtype">double</span>& lrx, <span class="keywordtype">double</span>& lry, <span class="keywordtype">int</span> layer);</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   <span class="keywordtype">bool</span> getExtent(<span class="keywordtype">double</span>& ulx, <span class="keywordtype">double</span>& uly, <span class="keywordtype">double</span>& lrx, <span class="keywordtype">double</span>& lry);</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span> </div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>   <span class="keywordtype">void</span> setFieldSeparator(<span class="keyword">const</span> <span class="keywordtype">char</span> fs){ m_fs=fs;};</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>   <span class="keywordtype">char</span> getFieldSeparator()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_fs;};</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   <span class="keyword">friend</span> std::ostream& operator<<(std::ostream& theOstream, <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a>& theImageReader);</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>   </div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span> <span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   <span class="keywordtype">void</span> setCodec(<span class="keywordtype">void</span>);</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span> </div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>   std::string m_filename;</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span> <span class="preprocessor">#if GDAL_VERSION_MAJOR < 2</span></div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span> <span class="preprocessor"></span>  OGRDataSource *m_datasource;</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span> <span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span> <span class="preprocessor"></span>  GDALDataset *m_datasource;</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span> <span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span> <span class="preprocessor"></span>  <span class="keywordtype">char</span> m_fs;</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span> };</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span> </div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span> <span class="comment">//read data from all features in a map, organized by classes</span></div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T> <span class="keywordtype">int</span> ImgReaderOgr::readData(std::map<<span class="keywordtype">int</span>,<a class="code" href="classVector2d.html">Vector2d<T></a> >& data, <span class="keyword">const</span> OGRFieldType& fieldType, std::vector<std::string>& fields, <span class="keyword">const</sp [...]
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span> {</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   assert(m_datasource->GetLayerCount()>layer);</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   OGRLayer  *poLayer;</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>     std::cout << <span class="stringliteral">"number of layers: "</span> << m_datasource->GetLayerCount() << std::endl;</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>   poLayer = m_datasource->GetLayer(layer);</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   <span class="keywordflow">if</span>(poLayer!=NULL){</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     OGRFeatureDefn *poFDefn = poLayer->GetLayerDefn();</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     <span class="keywordflow">if</span>(fields.empty()){</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>       fields.resize(poFDefn->GetFieldCount());</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>       <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>         std::cout << <span class="stringliteral">"resized fields to "</span> << fields.size() << std::endl;</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>     }</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>     <span class="comment">//start reading features from the layer</span></div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>     OGRFeature *poFeature;</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>       std::cout << <span class="stringliteral">"reset reading"</span> << std::endl;</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>     poLayer->ResetReading();</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> ifeature=0;</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>     <span class="keywordtype">int</span> posOffset=(pos)?2:0;</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>       std::cout << <span class="stringliteral">"going through features"</span> << std::endl << std::flush;</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>     <span class="keywordtype">int</span> theClass=0;</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>     <span class="keywordflow">while</span>( (poFeature = poLayer->GetNextFeature()) != NULL ){</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>       std::vector<T> theFeature;<span class="comment">//(fields.size()+posOffset);//x,y+selectedfields</span></div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>       <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>         std::cout << <span class="stringliteral">"reading feature "</span> << ifeature << std::endl << std::flush;</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>       OGRGeometry *poGeometry;</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>       poGeometry = poFeature->GetGeometryRef();</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>       <span class="keywordflow">if</span>(verbose){</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>         <span class="keywordflow">if</span>(poGeometry == NULL)</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>           std::cerr << <span class="stringliteral">"no geometry defined"</span> << std::endl << std::flush;</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(wkbFlatten(poGeometry->getGeometryType()) != wkbPoint)</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>           std::cerr << <span class="stringliteral">"Warning: poGeometry type: "</span> << wkbFlatten(poGeometry->getGeometryType()) << std::endl << std::flush;</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>       }</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>       assert(poGeometry != NULL );</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>              <span class="comment">// && wkbFlatten(poGeometry->getGeometryType()) == wkbPoint);</span></div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>       <span class="keywordflow">if</span>(pos){</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>         <span class="keywordflow">if</span>(wkbFlatten(poGeometry->getGeometryType()) == wkbPoint){</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>           OGRPoint *poPoint;</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>           poPoint = (OGRPoint *) poGeometry;</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>           theFeature.push_back(poPoint->getX());</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>           theFeature.push_back(poPoint->getY());</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>         }</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(wkbFlatten(poGeometry->getGeometryType()) == wkbPolygon){</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>           OGRPoint thePoint;</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>           OGRPolygon * poPolygon = (OGRPolygon *) poGeometry;</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>           poPolygon->Centroid(&thePoint);</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>           theFeature.push_back(thePoint.getX());</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>           theFeature.push_back(thePoint.getY());</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>         }        </div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>           <span class="comment">//Centroid for non polygon geometry not supported until OGR 1.8.0, comment out if version < 1.8.0 is installed...";</span></div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>           OGRPoint thePoint;</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>           poGeometry->Centroid(&thePoint);</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>           theFeature.push_back(thePoint.getX());</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>           theFeature.push_back(thePoint.getY());</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>         }       </div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>       }</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>       <span class="comment">// OGRFeatureDefn *poFDefn = poLayer->GetLayerDefn();</span></div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>       std::string featurename;</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iField=0;iField<poFDefn->GetFieldCount();++iField){</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>         OGRFieldDefn *poFieldDefn = poFDefn->GetFieldDefn(iField);</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>         std::string fieldname=poFieldDefn->GetNameRef();</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>         <span class="keywordflow">if</span>(fieldname==label)</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>           theClass=poFeature->GetFieldAsInteger(iField);</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>           <span class="keywordflow">switch</span>(fieldType){</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>           <span class="keywordflow">case</span>(OFTReal):</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>             <span class="keywordflow">if</span>(fields.size()<poFDefn->GetFieldCount()){</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>               <span class="keywordflow">if</span>(find(fields.begin(),fields.end(),fieldname)!=fields.end())</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>                 theFeature.push_back(poFeature->GetFieldAsDouble(iField));</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>             }</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>             <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>               fields[iField]=fieldname;</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>               theFeature.push_back(poFeature->GetFieldAsDouble(iField));</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>             }</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>           <span class="keywordflow">case</span>(OFTInteger):</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>             <span class="keywordflow">if</span>(fields.size()<poFDefn->GetFieldCount()){</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>               <span class="keywordflow">if</span>(find(fields.begin(),fields.end(),fieldname)!=fields.end())</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>                 theFeature.push_back(poFeature->GetFieldAsDouble(iField));</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>             }</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>             <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>               fields[iField]=fieldname;</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>               theFeature.push_back(poFeature->GetFieldAsDouble(iField));</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>             }</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>           <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>             {</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>               std::string errorstring=<span class="stringliteral">"field type not supported in ImgReaderOgr::ReadData"</span>;</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>               <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>             }</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>           }</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>         }</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>       }</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>       data[theClass].push_back(theFeature);</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>       ++ifeature;</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>       ++ifeature;</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>     }</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>       std::cout << <span class="stringliteral">"number of features read: "</span> << ifeature << std::endl << std::flush;</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>     <span class="keyword">typename</span> std::map<int,Vector2d<T> >::const_iterator mit=data.begin();</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>     <span class="keywordtype">int</span> nband=0;</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>       std::cout << <span class="stringliteral">"read classes: "</span> << std::flush;</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>     <span class="keywordflow">while</span>(mit!=data.end()){</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>       <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>         std::cout << mit->first << <span class="stringliteral">" "</span> << std::flush;</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>       <span class="keywordflow">if</span>(!nband)</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>         nband=fields.size();</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>       <span class="keywordflow">if</span>(pos)</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>         assert((mit->second)[0].size()==nband+2);</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>         assert((mit->second)[0].size()==nband);</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>       ++mit;</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>     }</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>       std::cout << std::endl << std::flush;</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>     <span class="keywordflow">return</span>(nband);</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>   }</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>     std::ostringstream ess;</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>     ess << <span class="stringliteral">"no layer in "</span> << m_filename;</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>     <span class="keywordflow">throw</span>(ess.str());</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>   }</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span> }</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span> </div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span> <span class="comment">//read data from all features in a map, organized by class names</span></div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T> <span class="keywordtype">int</span> ImgReaderOgr::readData(std::map<std::string,<a class="code" href="classVector2d.html">Vector2d<T></a> >& data, <span class="keyword">const</span> OGRFieldType& fieldType, std::vector<std::string>& fields, <span class="keyword">const</span> std::string& labe [...]
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span> {</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>   assert(m_datasource->GetLayerCount()>layer);</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>   OGRLayer  *poLayer;</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>     std::cout << <span class="stringliteral">"number of layers: "</span> << m_datasource->GetLayerCount() << std::endl;</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>   poLayer = m_datasource->GetLayer(layer);</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>   <span class="keywordflow">if</span>(poLayer!=NULL){</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>     OGRFeatureDefn *poFDefn = poLayer->GetLayerDefn();</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>     assert(poFDefn!=NULL);</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span> </div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>     <span class="keywordflow">if</span>(fields.empty()){</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>       fields.resize(poFDefn->GetFieldCount());</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>       <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>         std::cout << <span class="stringliteral">"resized fields to "</span> << fields.size() << std::endl;</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>     }</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span> </div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>     <span class="comment">//start reading features from the layer</span></div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>     OGRFeature *poFeature;</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>       std::cout << <span class="stringliteral">"reset reading"</span> << std::endl;</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>     poLayer->ResetReading();</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>     <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> ifeature=0;</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>     <span class="keywordtype">int</span> posOffset=(pos)?2:0;</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>       std::cout << <span class="stringliteral">"going through features to fill in string map"</span> << std::endl << std::flush;</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>     std::string theClass;</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>     <span class="keywordflow">while</span>( (poFeature = poLayer->GetNextFeature()) != NULL ){</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>       std::vector<T> theFeature;<span class="comment">//(fields.size()+posOffset);//x,y+selectedfields</span></div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>       <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>         std::cout << <span class="stringliteral">"reading feature "</span> << ifeature << std::endl << std::flush;</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>       OGRGeometry *poGeometry;</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>       poGeometry = poFeature->GetGeometryRef();</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>       <span class="keywordflow">if</span>(verbose){</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>         <span class="keywordflow">if</span>(poGeometry == NULL)</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>           std::cerr << <span class="stringliteral">"no geometry defined"</span> << std::endl << std::flush;</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(wkbFlatten(poGeometry->getGeometryType()) != wkbPoint)</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>           std::cerr << <span class="stringliteral">"Warning: poGeometry type: "</span> << wkbFlatten(poGeometry->getGeometryType()) << std::endl << std::flush;</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>       }</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>       assert(poGeometry != NULL );</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>              <span class="comment">// && wkbFlatten(poGeometry->getGeometryType()) == wkbPoint);</span></div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>       <span class="keywordflow">if</span>(pos){</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>         <span class="keywordflow">if</span>(wkbFlatten(poGeometry->getGeometryType()) == wkbPoint){</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>           OGRPoint *poPoint;</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>           poPoint = (OGRPoint *) poGeometry;</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>           theFeature.push_back(poPoint->getX());</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>           theFeature.push_back(poPoint->getY());</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>         }</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(wkbFlatten(poGeometry->getGeometryType()) == wkbPolygon){</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>           OGRPoint thePoint;</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>           poGeometry->Centroid(&thePoint);</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>           theFeature.push_back(thePoint.getX());</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>           theFeature.push_back(thePoint.getY());</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>         }        </div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>           <span class="comment">//Centroid for non polygon geometry not supported until OGR 1.8.0, comment out if version < 1.8.0 is installed...";</span></div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>           OGRPoint thePoint;</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>           poGeometry->Centroid(&thePoint);</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>           theFeature.push_back(thePoint.getX());</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>           theFeature.push_back(thePoint.getY());</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>         }       </div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>       }</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>       <span class="comment">// OGRFeatureDefn *poFDefn = poLayer->GetLayerDefn();//got LayerDefn already...</span></div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>       std::string featurename;</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iField=0;iField<poFDefn->GetFieldCount();++iField){</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>         OGRFieldDefn *poFieldDefn = poFDefn->GetFieldDefn(iField);</div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>         std::string fieldname=poFieldDefn->GetNameRef();</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>         <span class="keywordflow">if</span>(fieldname==label){</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>           theClass=poFeature->GetFieldAsString(iField);</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>           <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>             std::cout << <span class="stringliteral">"read feature for "</span> << theClass << std::endl;</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>         }</div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>           <span class="keywordflow">switch</span>(fieldType){</div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>           <span class="keywordflow">case</span>(OFTReal):</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>             <span class="keywordflow">if</span>(fields.size()<poFDefn->GetFieldCount()){</div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>               <span class="keywordflow">if</span>(find(fields.begin(),fields.end(),fieldname)!=fields.end())</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>                 theFeature.push_back(poFeature->GetFieldAsDouble(iField));</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>             }</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>             <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>               fields[iField]=fieldname;</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>               theFeature.push_back(poFeature->GetFieldAsDouble(iField));</div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>             }</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>           <span class="keywordflow">case</span>(OFTInteger):</div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>             <span class="keywordflow">if</span>(fields.size()<poFDefn->GetFieldCount()){</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>               <span class="keywordflow">if</span>(find(fields.begin(),fields.end(),fieldname)!=fields.end())</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>                 theFeature.push_back(poFeature->GetFieldAsDouble(iField));</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>             }</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>             <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>               fields[iField]=fieldname;</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>               theFeature.push_back(poFeature->GetFieldAsDouble(iField));</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>             }</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>           <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>             {</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>               std::string errorstring=<span class="stringliteral">"field type not supported in ImgReaderOgr::ReadData"</span>;</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>               <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>             }</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>           }</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>         }</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>         assert(poFDefn!=NULL);</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>       }</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>       data[theClass].push_back(theFeature);</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>       ++ifeature;</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>     }</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>       std::cout << <span class="stringliteral">"number of features read: "</span> << ifeature << std::endl << std::flush;</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>     <span class="keyword">typename</span> std::map<std::string,Vector2d<T> >::const_iterator mit=data.begin();</div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>     <span class="keywordtype">int</span> nband=0;</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>       std::cout << <span class="stringliteral">"read classes: "</span> << std::flush;</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>     <span class="keywordflow">while</span>(mit!=data.end()){</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>       <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>         std::cout << mit->first << <span class="stringliteral">" "</span> << std::flush;</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>       <span class="keywordflow">if</span>(!nband)</div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>         nband=fields.size();</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>       <span class="keywordflow">if</span>(pos)</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>         assert((mit->second)[0].size()==nband+2);</div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>         assert((mit->second)[0].size()==nband);</div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>       ++mit;</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>     }</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>       std::cout << std::endl << std::flush;</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>     <span class="keywordflow">return</span>(nband);</div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>   }</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>     std::ostringstream ess;</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>     ess << <span class="stringliteral">"no layer in "</span> << m_filename;</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>     <span class="keywordflow">throw</span>(ess.str());</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>   }</div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span> }</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span> </div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span> <span class="comment">//read x positions</span></div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T> <span class="keywordtype">int</span> ImgReaderOgr::readXY(std::vector<T>& xVector, std::vector<T>& yVector, <span class="keywordtype">int</span> layer, <span class="keywordtype">bool</span> verbose){</div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>   assert(m_datasource->GetLayerCount()>layer);</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>   OGRLayer  *poLayer;</div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>     std::cout << <span class="stringliteral">"number of layers: "</span> << m_datasource->GetLayerCount() << std::endl;</div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>   poLayer = m_datasource->GetLayer(layer);</div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>   OGRFeatureDefn *poFDefn = poLayer->GetLayerDefn();</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>   <span class="comment">//start reading features from the layer</span></div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>   OGRFeature *poFeature;</div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>     std::cout << <span class="stringliteral">"reset reading"</span> << std::endl;</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>   poLayer->ResetReading();</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> ifeature=0;</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>     std::cout << <span class="stringliteral">"going through features"</span> << std::endl << std::flush;</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>   <span class="keywordflow">while</span>( (poFeature = poLayer->GetNextFeature()) != NULL ){</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>       std::cout << <span class="stringliteral">"reading feature "</span> << ifeature << std::endl << std::flush;</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>     OGRGeometry *poGeometry;</div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>     poGeometry = poFeature->GetGeometryRef();</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>     <span class="keywordflow">if</span>(verbose){</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>       <span class="keywordflow">if</span>(poGeometry == NULL)</div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>         std::cerr << <span class="stringliteral">"no geometry defined"</span> << std::endl << std::flush;</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>       <span class="keywordflow">else</span><span class="comment">// if(wkbFlatten(poGeometry->getGeometryType()) != wkbPoint)</span></div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>         std::cout << <span class="stringliteral">"poGeometry type: "</span> << wkbFlatten(poGeometry->getGeometryType()) << std::endl;</div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>     }</div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>     <span class="comment">// assert(poGeometry != NULL </span></div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>     <span class="comment">//        && wkbFlatten(poGeometry->getGeometryType()) == wkbPoint);</span></div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>     OGRPoint *poPoint = (OGRPoint *) poGeometry;</div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span>     xVector.push_back(poPoint->getX());</div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>     yVector.push_back(poPoint->getY());</div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>     ++ifeature;</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>   }</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span>   assert(xVector.size()==yVector.size());</div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>   <span class="keywordflow">if</span>(xVector.size()){</div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span>     <span class="keywordflow">return</span> xVector.size();</div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>   }</div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>     std::ostringstream ess;</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>     ess << <span class="stringliteral">"no layer in "</span> << m_filename;</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span>     <span class="keywordflow">throw</span>(ess.str());</div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>   }</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span> }</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span> </div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span> <span class="comment">//read data from a single feature</span></div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T> <span class="keywordtype">int</span> ImgReaderOgr::readData(std::vector<T>& data, <span class="keyword">const</span> OGRFieldType& fieldType, std::vector<std::string>& fields, OGRFeature *poFeature, <span class="keywordtype">int</span> layer, <span class="keywordtype">bool</span> pos, <span class="keywo [...]
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span> {</div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>   assert(m_datasource->GetLayerCount()>layer);</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span>   OGRLayer  *poLayer;</div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span>     std::cout << <span class="stringliteral">"number of layers: "</span> << m_datasource->GetLayerCount() << std::endl;</div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span>   poLayer = m_datasource->GetLayer(layer);</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>   OGRFeatureDefn *poFDefn = poLayer->GetLayerDefn();</div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span>   <span class="keywordflow">if</span>(fields.empty()){</div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span>     fields.resize(poFDefn->GetFieldCount());</div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span>       std::cout << <span class="stringliteral">"resized fields to "</span> << fields.size() << std::endl;</div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span>   }</div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span>   OGRGeometry *poGeometry;</div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span>   poGeometry = poFeature->GetGeometryRef();</div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span>   <span class="keywordflow">if</span>(verbose){</div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>     <span class="keywordflow">if</span>(poGeometry == NULL)</div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>       std::cerr << <span class="stringliteral">"no geometry defined"</span> << std::endl << std::flush;</div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(wkbFlatten(poGeometry->getGeometryType()) != wkbPoint)</div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span>       std::cerr << <span class="stringliteral">"poGeometry type: "</span> << wkbFlatten(poGeometry->getGeometryType()) << std::endl << std::flush;</div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span>   }</div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span>   assert(poGeometry != NULL);</div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span>          <span class="comment">// && wkbFlatten(poGeometry->getGeometryType()) == wkbPoint);</span></div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span>   OGRPoint *poPoint = (OGRPoint *) poGeometry;</div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span>   <span class="keywordflow">if</span>(pos){</div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span>     <span class="keywordflow">if</span>(wkbFlatten(poGeometry->getGeometryType()) == wkbPoint){</div>
-<div class="line"><a name="l00445"></a><span class="lineno">  445</span>       OGRPoint *poPoint;</div>
-<div class="line"><a name="l00446"></a><span class="lineno">  446</span>       poPoint = (OGRPoint *) poGeometry;</div>
-<div class="line"><a name="l00447"></a><span class="lineno">  447</span>       data.push_back(poPoint->getX());</div>
-<div class="line"><a name="l00448"></a><span class="lineno">  448</span>       data.push_back(poPoint->getY());</div>
-<div class="line"><a name="l00449"></a><span class="lineno">  449</span>     }</div>
-<div class="line"><a name="l00450"></a><span class="lineno">  450</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(wkbFlatten(poGeometry->getGeometryType()) == wkbPolygon){</div>
-<div class="line"><a name="l00451"></a><span class="lineno">  451</span>       OGRPoint thePoint;</div>
-<div class="line"><a name="l00452"></a><span class="lineno">  452</span>       poGeometry->Centroid(&thePoint);</div>
-<div class="line"><a name="l00453"></a><span class="lineno">  453</span>       data.push_back(thePoint.getX());</div>
-<div class="line"><a name="l00454"></a><span class="lineno">  454</span>       data.push_back(thePoint.getY());</div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span>     }        </div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span>       <span class="comment">//Centroid for non polygon geometry not supported until OGR 1.8.0, comment out if version < 1.8.0 is installed...";</span></div>
-<div class="line"><a name="l00458"></a><span class="lineno">  458</span>       OGRPoint thePoint;</div>
-<div class="line"><a name="l00459"></a><span class="lineno">  459</span>       poGeometry->Centroid(&thePoint);</div>
-<div class="line"><a name="l00460"></a><span class="lineno">  460</span>       data.push_back(thePoint.getX());</div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span>       data.push_back(thePoint.getY());</div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span>     }       </div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span> </div>
-<div class="line"><a name="l00464"></a><span class="lineno">  464</span>   }</div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span>   std::string featurename;</div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iField=0;iField<poFDefn->GetFieldCount();++iField){</div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span>     OGRFieldDefn *poFieldDefn = poFDefn->GetFieldDefn(iField);</div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span>     std::string fieldname=poFieldDefn->GetNameRef();</div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span>     <span class="keywordflow">switch</span>(fieldType){</div>
-<div class="line"><a name="l00470"></a><span class="lineno">  470</span>     <span class="keywordflow">case</span>(OFTReal):</div>
-<div class="line"><a name="l00471"></a><span class="lineno">  471</span>       <span class="keywordflow">if</span>(fields.size()<poFDefn->GetFieldCount()){</div>
-<div class="line"><a name="l00472"></a><span class="lineno">  472</span>         <span class="keywordflow">if</span>(find(fields.begin(),fields.end(),fieldname)!=fields.end())</div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span>           data.push_back(poFeature->GetFieldAsDouble(iField));</div>
-<div class="line"><a name="l00474"></a><span class="lineno">  474</span>       }</div>
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00476"></a><span class="lineno">  476</span>         fields[iField]=fieldname;</div>
-<div class="line"><a name="l00477"></a><span class="lineno">  477</span>         data.push_back(poFeature->GetFieldAsDouble(iField));</div>
-<div class="line"><a name="l00478"></a><span class="lineno">  478</span>       }</div>
-<div class="line"><a name="l00479"></a><span class="lineno">  479</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span>     <span class="keywordflow">case</span>(OFTInteger):</div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span>       <span class="keywordflow">if</span>(fields.size()<poFDefn->GetFieldCount()){</div>
-<div class="line"><a name="l00482"></a><span class="lineno">  482</span>         <span class="keywordflow">if</span>(find(fields.begin(),fields.end(),fieldname)!=fields.end())</div>
-<div class="line"><a name="l00483"></a><span class="lineno">  483</span>           data.push_back(poFeature->GetFieldAsDouble(iField));</div>
-<div class="line"><a name="l00484"></a><span class="lineno">  484</span>       }</div>
-<div class="line"><a name="l00485"></a><span class="lineno">  485</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00486"></a><span class="lineno">  486</span>         fields[iField]=fieldname;</div>
-<div class="line"><a name="l00487"></a><span class="lineno">  487</span>         data.push_back(poFeature->GetFieldAsDouble(iField));</div>
-<div class="line"><a name="l00488"></a><span class="lineno">  488</span>       }</div>
-<div class="line"><a name="l00489"></a><span class="lineno">  489</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span>     <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span>       {</div>
-<div class="line"><a name="l00492"></a><span class="lineno">  492</span>         std::string errorstring=<span class="stringliteral">"field type not supported in ImgReaderOgr::ReadData"</span>;</div>
-<div class="line"><a name="l00493"></a><span class="lineno">  493</span>         <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00494"></a><span class="lineno">  494</span>       }</div>
-<div class="line"><a name="l00495"></a><span class="lineno">  495</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00496"></a><span class="lineno">  496</span>     }</div>
-<div class="line"><a name="l00497"></a><span class="lineno">  497</span>   }</div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span>   <span class="comment">//   assert(data.size()==ifeature);</span></div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span>   <span class="keywordflow">if</span>(data.size()){</div>
-<div class="line"><a name="l00500"></a><span class="lineno">  500</span>     <span class="keywordflow">if</span>(pos)</div>
-<div class="line"><a name="l00501"></a><span class="lineno">  501</span>       assert(data.size()==fields.size()+2);</div>
-<div class="line"><a name="l00502"></a><span class="lineno">  502</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00503"></a><span class="lineno">  503</span>       assert(data.size()==fields.size());</div>
-<div class="line"><a name="l00504"></a><span class="lineno">  504</span>     <span class="keywordflow">return</span> fields.size();</div>
-<div class="line"><a name="l00505"></a><span class="lineno">  505</span>   }</div>
-<div class="line"><a name="l00506"></a><span class="lineno">  506</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span>     std::ostringstream ess;</div>
-<div class="line"><a name="l00508"></a><span class="lineno">  508</span>     ess << <span class="stringliteral">"no layer in "</span> << m_filename;</div>
-<div class="line"><a name="l00509"></a><span class="lineno">  509</span>     <span class="keywordflow">throw</span>(ess.str());</div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span>   }</div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span> }</div>
-<div class="line"><a name="l00512"></a><span class="lineno">  512</span> </div>
-<div class="line"><a name="l00513"></a><span class="lineno">  513</span> <span class="comment">//read one field from all features</span></div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T> <span class="keyword">inline</span> <span class="keywordtype">int</span> ImgReaderOgr::readData(std::vector<T>& data, <span class="keyword">const</span> OGRFieldType& fieldType, <span class="keyword">const</span> std::string& theField, <span class="keywordtype">int</span> layer, <span class="keywordtype">bool [...]
-<div class="line"><a name="l00515"></a><span class="lineno">  515</span> {</div>
-<div class="line"><a name="l00516"></a><span class="lineno">  516</span>   assert(m_datasource->GetLayerCount()>layer);</div>
-<div class="line"><a name="l00517"></a><span class="lineno">  517</span>   OGRLayer  *poLayer;</div>
-<div class="line"><a name="l00518"></a><span class="lineno">  518</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00519"></a><span class="lineno">  519</span>     std::cout << <span class="stringliteral">"number of layers: "</span> << m_datasource->GetLayerCount() << std::endl;</div>
-<div class="line"><a name="l00520"></a><span class="lineno">  520</span>   poLayer = m_datasource->GetLayer(layer);</div>
-<div class="line"><a name="l00521"></a><span class="lineno">  521</span>   OGRFeatureDefn *poFDefn = poLayer->GetLayerDefn();</div>
-<div class="line"><a name="l00522"></a><span class="lineno">  522</span>   <span class="keywordtype">int</span> nfield=(theField!=<span class="stringliteral">""</span>)? poFDefn->GetFieldCount() : 1;</div>
-<div class="line"><a name="l00523"></a><span class="lineno">  523</span>   <span class="keywordflow">if</span>(theField==<span class="stringliteral">""</span>){</div>
-<div class="line"><a name="l00524"></a><span class="lineno">  524</span>     <span class="comment">//read first field available </span></div>
-<div class="line"><a name="l00525"></a><span class="lineno">  525</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00526"></a><span class="lineno">  526</span>       std::cout << <span class="stringliteral">"read first field from total of "</span> << nfield << std::endl;</div>
-<div class="line"><a name="l00527"></a><span class="lineno">  527</span>   }</div>
-<div class="line"><a name="l00528"></a><span class="lineno">  528</span> </div>
-<div class="line"><a name="l00529"></a><span class="lineno">  529</span>   <span class="comment">//start reading features from the layer</span></div>
-<div class="line"><a name="l00530"></a><span class="lineno">  530</span>   OGRFeature *poFeature;</div>
-<div class="line"><a name="l00531"></a><span class="lineno">  531</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00532"></a><span class="lineno">  532</span>     std::cout << <span class="stringliteral">"reset reading"</span> << std::endl;</div>
-<div class="line"><a name="l00533"></a><span class="lineno">  533</span>   poLayer->ResetReading();</div>
-<div class="line"><a name="l00534"></a><span class="lineno">  534</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> ifeature=0;</div>
-<div class="line"><a name="l00535"></a><span class="lineno">  535</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00536"></a><span class="lineno">  536</span>     std::cout << <span class="stringliteral">"going through features"</span> << std::endl << std::flush;</div>
-<div class="line"><a name="l00537"></a><span class="lineno">  537</span>   <span class="keywordflow">while</span>( (poFeature = poLayer->GetNextFeature()) != NULL ){</div>
-<div class="line"><a name="l00538"></a><span class="lineno">  538</span>     <span class="comment">// std::vector<T> theFeature;//(fields.size()+posOffset);//x,y+selectedfields</span></div>
-<div class="line"><a name="l00539"></a><span class="lineno">  539</span>     T theFeature;</div>
-<div class="line"><a name="l00540"></a><span class="lineno">  540</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00541"></a><span class="lineno">  541</span>       std::cout << <span class="stringliteral">"reading feature "</span> << ifeature << std::endl << std::flush;</div>
-<div class="line"><a name="l00542"></a><span class="lineno">  542</span>     OGRGeometry *poGeometry;</div>
-<div class="line"><a name="l00543"></a><span class="lineno">  543</span>     poGeometry = poFeature->GetGeometryRef();</div>
-<div class="line"><a name="l00544"></a><span class="lineno">  544</span>     <span class="keywordflow">if</span>(verbose){</div>
-<div class="line"><a name="l00545"></a><span class="lineno">  545</span>       <span class="keywordflow">if</span>(poGeometry == NULL)</div>
-<div class="line"><a name="l00546"></a><span class="lineno">  546</span>         std::cerr << <span class="stringliteral">"no geometry defined"</span> << std::endl << std::flush;</div>
-<div class="line"><a name="l00547"></a><span class="lineno">  547</span>       <span class="keywordflow">else</span><span class="comment">// if(wkbFlatten(poGeometry->getGeometryType()) != wkbPoint)</span></div>
-<div class="line"><a name="l00548"></a><span class="lineno">  548</span>         std::cout << <span class="stringliteral">"poGeometry type: "</span> << wkbFlatten(poGeometry->getGeometryType()) << std::endl;</div>
-<div class="line"><a name="l00549"></a><span class="lineno">  549</span>     }</div>
-<div class="line"><a name="l00550"></a><span class="lineno">  550</span>     <span class="comment">// assert(poGeometry != NULL </span></div>
-<div class="line"><a name="l00551"></a><span class="lineno">  551</span>     <span class="comment">//        && wkbFlatten(poGeometry->getGeometryType()) == wkbPoint);</span></div>
-<div class="line"><a name="l00552"></a><span class="lineno">  552</span>     OGRPoint *poPoint = (OGRPoint *) poGeometry;</div>
-<div class="line"><a name="l00553"></a><span class="lineno">  553</span> </div>
-<div class="line"><a name="l00554"></a><span class="lineno">  554</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iField=0;iField<nfield;++iField){</div>
-<div class="line"><a name="l00555"></a><span class="lineno">  555</span>       OGRFieldDefn *poFieldDefn = poFDefn->GetFieldDefn(iField);</div>
-<div class="line"><a name="l00556"></a><span class="lineno">  556</span>       std::string fieldname=poFieldDefn->GetNameRef();</div>
-<div class="line"><a name="l00557"></a><span class="lineno">  557</span>       <span class="keywordflow">if</span>(fieldname!=theField)</div>
-<div class="line"><a name="l00558"></a><span class="lineno">  558</span>         <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00559"></a><span class="lineno">  559</span>       <span class="keywordflow">switch</span>(fieldType){</div>
-<div class="line"><a name="l00560"></a><span class="lineno">  560</span>       <span class="keywordflow">case</span>(OFTInteger):</div>
-<div class="line"><a name="l00561"></a><span class="lineno">  561</span>       <span class="keywordflow">case</span>(OFTReal):</div>
-<div class="line"><a name="l00562"></a><span class="lineno">  562</span>         theFeature=poFeature->GetFieldAsDouble(iField);</div>
-<div class="line"><a name="l00563"></a><span class="lineno">  563</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00564"></a><span class="lineno">  564</span>       <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00565"></a><span class="lineno">  565</span>         {</div>
-<div class="line"><a name="l00566"></a><span class="lineno">  566</span>           std::string errorstring=<span class="stringliteral">"field type not supported in ImgReaderOgr::ReadData"</span>;</div>
-<div class="line"><a name="l00567"></a><span class="lineno">  567</span>           <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00568"></a><span class="lineno">  568</span>         }</div>
-<div class="line"><a name="l00569"></a><span class="lineno">  569</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00570"></a><span class="lineno">  570</span>       }</div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span>     }</div>
-<div class="line"><a name="l00572"></a><span class="lineno">  572</span>     data.push_back(theFeature);</div>
-<div class="line"><a name="l00573"></a><span class="lineno">  573</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00574"></a><span class="lineno">  574</span>       std::cout << <span class="stringliteral">"feature is: "</span> << theFeature << std::endl;</div>
-<div class="line"><a name="l00575"></a><span class="lineno">  575</span>     ++ifeature;</div>
-<div class="line"><a name="l00576"></a><span class="lineno">  576</span>   }</div>
-<div class="line"><a name="l00577"></a><span class="lineno">  577</span>   <span class="keywordflow">if</span>(data.size()){</div>
-<div class="line"><a name="l00578"></a><span class="lineno">  578</span>     <span class="keywordflow">return</span> data.size();</div>
-<div class="line"><a name="l00579"></a><span class="lineno">  579</span>   }</div>
-<div class="line"><a name="l00580"></a><span class="lineno">  580</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00581"></a><span class="lineno">  581</span>     std::ostringstream ess;</div>
-<div class="line"><a name="l00582"></a><span class="lineno">  582</span>     ess << <span class="stringliteral">"no layer in "</span> << m_filename;</div>
-<div class="line"><a name="l00583"></a><span class="lineno">  583</span>     <span class="keywordflow">throw</span>(ess.str());</div>
-<div class="line"><a name="l00584"></a><span class="lineno">  584</span>   }</div>
-<div class="line"><a name="l00585"></a><span class="lineno">  585</span> }</div>
-<div class="line"><a name="l00586"></a><span class="lineno">  586</span> </div>
-<div class="line"><a name="l00587"></a><span class="lineno">  587</span> <span class="comment">//specialization for string: read one field from all features</span></div>
-<div class="line"><a name="l00588"></a><span class="lineno">  588</span> <span class="keyword">template</span> <> <span class="keyword">inline</span> <span class="keywordtype">int</span> ImgReaderOgr::readData(std::vector<std::string>& data, <span class="keyword">const</span> OGRFieldType& fieldType, <span class="keyword">const</span> std::string& theField, <span class="keywordtype">int</span> layer, <span class="keywordtype">bool</span> verbose)</div>
-<div class="line"><a name="l00589"></a><span class="lineno">  589</span> {</div>
-<div class="line"><a name="l00590"></a><span class="lineno">  590</span>   assert(m_datasource->GetLayerCount()>layer);</div>
-<div class="line"><a name="l00591"></a><span class="lineno">  591</span>   OGRLayer  *poLayer;</div>
-<div class="line"><a name="l00592"></a><span class="lineno">  592</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00593"></a><span class="lineno">  593</span>     std::cout << <span class="stringliteral">"number of layers: "</span> << m_datasource->GetLayerCount() << std::endl;</div>
-<div class="line"><a name="l00594"></a><span class="lineno">  594</span>   poLayer = m_datasource->GetLayer(layer);</div>
-<div class="line"><a name="l00595"></a><span class="lineno">  595</span>   OGRFeatureDefn *poFDefn = poLayer->GetLayerDefn();</div>
-<div class="line"><a name="l00596"></a><span class="lineno">  596</span>   <span class="keywordtype">int</span> nfield=(theField!=<span class="stringliteral">""</span>)? poFDefn->GetFieldCount() : 1;</div>
-<div class="line"><a name="l00597"></a><span class="lineno">  597</span>   <span class="keywordflow">if</span>(theField==<span class="stringliteral">""</span>){</div>
-<div class="line"><a name="l00598"></a><span class="lineno">  598</span>     <span class="comment">//read first field available </span></div>
-<div class="line"><a name="l00599"></a><span class="lineno">  599</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00600"></a><span class="lineno">  600</span>       std::cout << <span class="stringliteral">"read first field from total of "</span> << nfield << std::endl;</div>
-<div class="line"><a name="l00601"></a><span class="lineno">  601</span>   }</div>
-<div class="line"><a name="l00602"></a><span class="lineno">  602</span> </div>
-<div class="line"><a name="l00603"></a><span class="lineno">  603</span>   <span class="comment">//start reading features from the layer</span></div>
-<div class="line"><a name="l00604"></a><span class="lineno">  604</span>   OGRFeature *poFeature;</div>
-<div class="line"><a name="l00605"></a><span class="lineno">  605</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00606"></a><span class="lineno">  606</span>     std::cout << <span class="stringliteral">"reset reading"</span> << std::endl;</div>
-<div class="line"><a name="l00607"></a><span class="lineno">  607</span>   poLayer->ResetReading();</div>
-<div class="line"><a name="l00608"></a><span class="lineno">  608</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> ifeature=0;</div>
-<div class="line"><a name="l00609"></a><span class="lineno">  609</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00610"></a><span class="lineno">  610</span>     std::cout << <span class="stringliteral">"going through features"</span> << std::endl << std::flush;</div>
-<div class="line"><a name="l00611"></a><span class="lineno">  611</span>   <span class="keywordflow">while</span>( (poFeature = poLayer->GetNextFeature()) != NULL ){</div>
-<div class="line"><a name="l00612"></a><span class="lineno">  612</span>     std::string theFeature;</div>
-<div class="line"><a name="l00613"></a><span class="lineno">  613</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00614"></a><span class="lineno">  614</span>       std::cout << <span class="stringliteral">"reading feature "</span> << ifeature << std::endl << std::flush;</div>
-<div class="line"><a name="l00615"></a><span class="lineno">  615</span>     OGRGeometry *poGeometry;</div>
-<div class="line"><a name="l00616"></a><span class="lineno">  616</span>     poGeometry = poFeature->GetGeometryRef();</div>
-<div class="line"><a name="l00617"></a><span class="lineno">  617</span>     <span class="keywordflow">if</span>(verbose){</div>
-<div class="line"><a name="l00618"></a><span class="lineno">  618</span>       <span class="keywordflow">if</span>(poGeometry == NULL)</div>
-<div class="line"><a name="l00619"></a><span class="lineno">  619</span>         std::cerr << <span class="stringliteral">"no geometry defined"</span> << std::endl << std::flush;</div>
-<div class="line"><a name="l00620"></a><span class="lineno">  620</span>       <span class="keywordflow">else</span><span class="comment">// if(wkbFlatten(poGeometry->getGeometryType()) != wkbPoint)</span></div>
-<div class="line"><a name="l00621"></a><span class="lineno">  621</span>         std::cout << <span class="stringliteral">"poGeometry type: "</span> << wkbFlatten(poGeometry->getGeometryType()) << std::endl;</div>
-<div class="line"><a name="l00622"></a><span class="lineno">  622</span>     }</div>
-<div class="line"><a name="l00623"></a><span class="lineno">  623</span>     <span class="comment">// assert(poGeometry != NULL </span></div>
-<div class="line"><a name="l00624"></a><span class="lineno">  624</span>     <span class="comment">//        && wkbFlatten(poGeometry->getGeometryType()) == wkbPoint);</span></div>
-<div class="line"><a name="l00625"></a><span class="lineno">  625</span>     OGRPoint *poPoint = (OGRPoint *) poGeometry;</div>
-<div class="line"><a name="l00626"></a><span class="lineno">  626</span> </div>
-<div class="line"><a name="l00627"></a><span class="lineno">  627</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iField=0;iField<nfield;++iField){</div>
-<div class="line"><a name="l00628"></a><span class="lineno">  628</span>       OGRFieldDefn *poFieldDefn = poFDefn->GetFieldDefn(iField);</div>
-<div class="line"><a name="l00629"></a><span class="lineno">  629</span>       std::string fieldname=poFieldDefn->GetNameRef();</div>
-<div class="line"><a name="l00630"></a><span class="lineno">  630</span>       <span class="keywordflow">if</span>(fieldname!=theField)</div>
-<div class="line"><a name="l00631"></a><span class="lineno">  631</span>         <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00632"></a><span class="lineno">  632</span>       <span class="keywordflow">switch</span>(fieldType){</div>
-<div class="line"><a name="l00633"></a><span class="lineno">  633</span>       <span class="keywordflow">case</span>(OFTInteger):</div>
-<div class="line"><a name="l00634"></a><span class="lineno">  634</span>       <span class="keywordflow">case</span>(OFTReal):</div>
-<div class="line"><a name="l00635"></a><span class="lineno">  635</span>       <span class="keywordflow">case</span>(OFTString):</div>
-<div class="line"><a name="l00636"></a><span class="lineno">  636</span>         theFeature=poFeature->GetFieldAsString(iField);</div>
-<div class="line"><a name="l00637"></a><span class="lineno">  637</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00638"></a><span class="lineno">  638</span>       <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00639"></a><span class="lineno">  639</span>         {</div>
-<div class="line"><a name="l00640"></a><span class="lineno">  640</span>           std::string errorstring=<span class="stringliteral">"field type not supported in ImgReaderOgr::ReadData"</span>;</div>
-<div class="line"><a name="l00641"></a><span class="lineno">  641</span>           <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00642"></a><span class="lineno">  642</span>         }</div>
-<div class="line"><a name="l00643"></a><span class="lineno">  643</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00644"></a><span class="lineno">  644</span>       }</div>
-<div class="line"><a name="l00645"></a><span class="lineno">  645</span>     }</div>
-<div class="line"><a name="l00646"></a><span class="lineno">  646</span>     data.push_back(theFeature);</div>
-<div class="line"><a name="l00647"></a><span class="lineno">  647</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00648"></a><span class="lineno">  648</span>       std::cout << <span class="stringliteral">"feature is: "</span> << theFeature << std::endl;</div>
-<div class="line"><a name="l00649"></a><span class="lineno">  649</span>     ++ifeature;</div>
-<div class="line"><a name="l00650"></a><span class="lineno">  650</span>   }</div>
-<div class="line"><a name="l00651"></a><span class="lineno">  651</span>   <span class="keywordflow">if</span>(data.size()){</div>
-<div class="line"><a name="l00652"></a><span class="lineno">  652</span>     <span class="keywordflow">return</span> data.size();</div>
-<div class="line"><a name="l00653"></a><span class="lineno">  653</span>   }</div>
-<div class="line"><a name="l00654"></a><span class="lineno">  654</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00655"></a><span class="lineno">  655</span>     std::ostringstream ess;</div>
-<div class="line"><a name="l00656"></a><span class="lineno">  656</span>     ess << <span class="stringliteral">"no layer in "</span> << m_filename;</div>
-<div class="line"><a name="l00657"></a><span class="lineno">  657</span>     <span class="keywordflow">throw</span>(ess.str());</div>
-<div class="line"><a name="l00658"></a><span class="lineno">  658</span>   }</div>
-<div class="line"><a name="l00659"></a><span class="lineno">  659</span> }</div>
-<div class="line"><a name="l00660"></a><span class="lineno">  660</span> </div>
-<div class="line"><a name="l00661"></a><span class="lineno">  661</span> <span class="comment">//read data from all features  </span></div>
-<div class="line"><a name="l00662"></a><span class="lineno">  662</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T> <span class="keywordtype">int</span> ImgReaderOgr::readData(<a class="code" href="classVector2d.html">Vector2d<T></a>& data, <span class="keyword">const</span> OGRFieldType& fieldType, std::vector<std::string>& fields, <span class="keywordtype">int</span> layer, <span class="keywordtype">bool</span> pos [...]
-<div class="line"><a name="l00663"></a><span class="lineno">  663</span> {</div>
-<div class="line"><a name="l00664"></a><span class="lineno">  664</span>   assert(m_datasource->GetLayerCount()>layer);</div>
-<div class="line"><a name="l00665"></a><span class="lineno">  665</span>   OGRLayer  *poLayer;</div>
-<div class="line"><a name="l00666"></a><span class="lineno">  666</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00667"></a><span class="lineno">  667</span>     std::cout << <span class="stringliteral">"number of layers: "</span> << m_datasource->GetLayerCount() << std::endl;</div>
-<div class="line"><a name="l00668"></a><span class="lineno">  668</span>   poLayer = m_datasource->GetLayer(layer);</div>
-<div class="line"><a name="l00669"></a><span class="lineno">  669</span>   OGRFeatureDefn *poFDefn = poLayer->GetLayerDefn();</div>
-<div class="line"><a name="l00670"></a><span class="lineno">  670</span>   <span class="keywordflow">if</span>(fields.empty()){</div>
-<div class="line"><a name="l00671"></a><span class="lineno">  671</span>     fields.resize(poFDefn->GetFieldCount());</div>
-<div class="line"><a name="l00672"></a><span class="lineno">  672</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00673"></a><span class="lineno">  673</span>       std::cout << <span class="stringliteral">"resized fields to "</span> << fields.size() << std::endl;</div>
-<div class="line"><a name="l00674"></a><span class="lineno">  674</span>   }</div>
-<div class="line"><a name="l00675"></a><span class="lineno">  675</span>   <span class="comment">//start reading features from the layer</span></div>
-<div class="line"><a name="l00676"></a><span class="lineno">  676</span>   OGRFeature *poFeature;</div>
-<div class="line"><a name="l00677"></a><span class="lineno">  677</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00678"></a><span class="lineno">  678</span>     std::cout << <span class="stringliteral">"reset reading"</span> << std::endl;</div>
-<div class="line"><a name="l00679"></a><span class="lineno">  679</span>   poLayer->ResetReading();</div>
-<div class="line"><a name="l00680"></a><span class="lineno">  680</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> ifeature=0;</div>
-<div class="line"><a name="l00681"></a><span class="lineno">  681</span>   <span class="keywordtype">int</span> posOffset=(pos)?2:0;</div>
-<div class="line"><a name="l00682"></a><span class="lineno">  682</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00683"></a><span class="lineno">  683</span>     std::cout << <span class="stringliteral">"going through features"</span> << std::endl << std::flush;</div>
-<div class="line"><a name="l00684"></a><span class="lineno">  684</span>   <span class="keywordflow">while</span>( (poFeature = poLayer->GetNextFeature()) != NULL ){</div>
-<div class="line"><a name="l00685"></a><span class="lineno">  685</span>     std::vector<T> theFeature;<span class="comment">//(fields.size()+posOffset);//x,y+selectedfields</span></div>
-<div class="line"><a name="l00686"></a><span class="lineno">  686</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00687"></a><span class="lineno">  687</span>       std::cout << <span class="stringliteral">"reading feature "</span> << ifeature << std::endl << std::flush;</div>
-<div class="line"><a name="l00688"></a><span class="lineno">  688</span>     OGRGeometry *poGeometry;</div>
-<div class="line"><a name="l00689"></a><span class="lineno">  689</span>     poGeometry = poFeature->GetGeometryRef();</div>
-<div class="line"><a name="l00690"></a><span class="lineno">  690</span>     <span class="keywordflow">if</span>(verbose){</div>
-<div class="line"><a name="l00691"></a><span class="lineno">  691</span>       <span class="keywordflow">if</span>(poGeometry == NULL)</div>
-<div class="line"><a name="l00692"></a><span class="lineno">  692</span>         std::cerr << <span class="stringliteral">"no geometry defined"</span> << std::endl << std::flush;</div>
-<div class="line"><a name="l00693"></a><span class="lineno">  693</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(wkbFlatten(poGeometry->getGeometryType()) != wkbPoint)</div>
-<div class="line"><a name="l00694"></a><span class="lineno">  694</span>         std::cerr << <span class="stringliteral">"poGeometry type: "</span> << wkbFlatten(poGeometry->getGeometryType()) << std::endl << std::flush;</div>
-<div class="line"><a name="l00695"></a><span class="lineno">  695</span>     }</div>
-<div class="line"><a name="l00696"></a><span class="lineno">  696</span>     assert(poGeometry != NULL </div>
-<div class="line"><a name="l00697"></a><span class="lineno">  697</span>            && wkbFlatten(poGeometry->getGeometryType()) == wkbPoint);</div>
-<div class="line"><a name="l00698"></a><span class="lineno">  698</span>     OGRPoint *poPoint = (OGRPoint *) poGeometry;</div>
-<div class="line"><a name="l00699"></a><span class="lineno">  699</span>     <span class="keywordflow">if</span>(pos){</div>
-<div class="line"><a name="l00700"></a><span class="lineno">  700</span>       theFeature.push_back(poPoint->getX());</div>
-<div class="line"><a name="l00701"></a><span class="lineno">  701</span>       theFeature.push_back(poPoint->getY());</div>
-<div class="line"><a name="l00702"></a><span class="lineno">  702</span>     }</div>
-<div class="line"><a name="l00703"></a><span class="lineno">  703</span>     OGRFeatureDefn *poFDefn = poLayer->GetLayerDefn();</div>
-<div class="line"><a name="l00704"></a><span class="lineno">  704</span>     std::string featurename;</div>
-<div class="line"><a name="l00705"></a><span class="lineno">  705</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iField=0;iField<poFDefn->GetFieldCount();++iField){</div>
-<div class="line"><a name="l00706"></a><span class="lineno">  706</span>       OGRFieldDefn *poFieldDefn = poFDefn->GetFieldDefn(iField);</div>
-<div class="line"><a name="l00707"></a><span class="lineno">  707</span>       std::string fieldname=poFieldDefn->GetNameRef();</div>
-<div class="line"><a name="l00708"></a><span class="lineno">  708</span>       <span class="keywordflow">switch</span>(fieldType){</div>
-<div class="line"><a name="l00709"></a><span class="lineno">  709</span>       <span class="keywordflow">case</span>(OFTReal):</div>
-<div class="line"><a name="l00710"></a><span class="lineno">  710</span>         <span class="keywordflow">if</span>(fields.size()<poFDefn->GetFieldCount()){</div>
-<div class="line"><a name="l00711"></a><span class="lineno">  711</span>           <span class="keywordflow">if</span>(find(fields.begin(),fields.end(),fieldname)!=fields.end())</div>
-<div class="line"><a name="l00712"></a><span class="lineno">  712</span>             theFeature.push_back(poFeature->GetFieldAsDouble(iField));</div>
-<div class="line"><a name="l00713"></a><span class="lineno">  713</span>         }</div>
-<div class="line"><a name="l00714"></a><span class="lineno">  714</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00715"></a><span class="lineno">  715</span>           fields[iField]=fieldname;</div>
-<div class="line"><a name="l00716"></a><span class="lineno">  716</span>           theFeature.push_back(poFeature->GetFieldAsDouble(iField));</div>
-<div class="line"><a name="l00717"></a><span class="lineno">  717</span>         }</div>
-<div class="line"><a name="l00718"></a><span class="lineno">  718</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00719"></a><span class="lineno">  719</span>       <span class="keywordflow">case</span>(OFTInteger):</div>
-<div class="line"><a name="l00720"></a><span class="lineno">  720</span>         <span class="keywordflow">if</span>(fields.size()<poFDefn->GetFieldCount()){</div>
-<div class="line"><a name="l00721"></a><span class="lineno">  721</span>           <span class="keywordflow">if</span>(find(fields.begin(),fields.end(),fieldname)!=fields.end())</div>
-<div class="line"><a name="l00722"></a><span class="lineno">  722</span>             theFeature.push_back(poFeature->GetFieldAsDouble(iField));</div>
-<div class="line"><a name="l00723"></a><span class="lineno">  723</span>         }</div>
-<div class="line"><a name="l00724"></a><span class="lineno">  724</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00725"></a><span class="lineno">  725</span>           fields[iField]=fieldname;</div>
-<div class="line"><a name="l00726"></a><span class="lineno">  726</span>           theFeature.push_back(poFeature->GetFieldAsDouble(iField));</div>
-<div class="line"><a name="l00727"></a><span class="lineno">  727</span>         }</div>
-<div class="line"><a name="l00728"></a><span class="lineno">  728</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00729"></a><span class="lineno">  729</span>       <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00730"></a><span class="lineno">  730</span>         {</div>
-<div class="line"><a name="l00731"></a><span class="lineno">  731</span>           std::string errorstring=<span class="stringliteral">"field type not supported in ImgReaderOgr::ReadData"</span>;</div>
-<div class="line"><a name="l00732"></a><span class="lineno">  732</span>           <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00733"></a><span class="lineno">  733</span>         }</div>
-<div class="line"><a name="l00734"></a><span class="lineno">  734</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00735"></a><span class="lineno">  735</span>       }</div>
-<div class="line"><a name="l00736"></a><span class="lineno">  736</span>     }</div>
-<div class="line"><a name="l00737"></a><span class="lineno">  737</span>     data.push_back(theFeature);</div>
-<div class="line"><a name="l00738"></a><span class="lineno">  738</span>     ++ifeature;</div>
-<div class="line"><a name="l00739"></a><span class="lineno">  739</span>   }</div>
-<div class="line"><a name="l00740"></a><span class="lineno">  740</span> <span class="comment">//   assert(data.size()==ifeature);</span></div>
-<div class="line"><a name="l00741"></a><span class="lineno">  741</span>   <span class="keywordflow">if</span>(data.size()){</div>
-<div class="line"><a name="l00742"></a><span class="lineno">  742</span>     <span class="keywordflow">if</span>(pos)</div>
-<div class="line"><a name="l00743"></a><span class="lineno">  743</span>       assert(data[0].size()==fields.size()+2);</div>
-<div class="line"><a name="l00744"></a><span class="lineno">  744</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00745"></a><span class="lineno">  745</span>       assert(data[0].size()==fields.size());</div>
-<div class="line"><a name="l00746"></a><span class="lineno">  746</span>     <span class="keywordflow">return</span> fields.size();</div>
-<div class="line"><a name="l00747"></a><span class="lineno">  747</span>   }</div>
-<div class="line"><a name="l00748"></a><span class="lineno">  748</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00749"></a><span class="lineno">  749</span>     std::ostringstream ess;</div>
-<div class="line"><a name="l00750"></a><span class="lineno">  750</span>     ess << <span class="stringliteral">"no layer in "</span> << m_filename;</div>
-<div class="line"><a name="l00751"></a><span class="lineno">  751</span>     <span class="keywordflow">throw</span>(ess.str());</div>
-<div class="line"><a name="l00752"></a><span class="lineno">  752</span>   }</div>
-<div class="line"><a name="l00753"></a><span class="lineno">  753</span> }</div>
-<div class="line"><a name="l00754"></a><span class="lineno">  754</span> </div>
-<div class="line"><a name="l00755"></a><span class="lineno">  755</span> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keywordtype">int</span> ImgReaderOgr::readSql(std::map<<span class="keywordtype">int</span>, <a class="code" href="classVector2d.html">Vector2d<T></a> >& data, <span class="keyword">const</span> OGRFieldType& fieldType, std::vector<std::string>& fields, <span class="keyword">const</spa [...]
-<div class="line"><a name="l00756"></a><span class="lineno">  756</span> {</div>
-<div class="line"><a name="l00757"></a><span class="lineno">  757</span>   assert(m_datasource->GetLayerCount()>layer);</div>
-<div class="line"><a name="l00758"></a><span class="lineno">  758</span>   OGRLayer *poLayer;</div>
-<div class="line"><a name="l00759"></a><span class="lineno">  759</span>   poLayer = m_datasource->ExecuteSQL(sqlStatement.c_str(), spatialFilter,NULL );</div>
-<div class="line"><a name="l00760"></a><span class="lineno">  760</span>   <span class="keywordflow">if</span>(poLayer!=NULL){</div>
-<div class="line"><a name="l00761"></a><span class="lineno">  761</span>     OGRFeatureDefn *poFDefn = poLayer->GetLayerDefn();</div>
-<div class="line"><a name="l00762"></a><span class="lineno">  762</span>     <span class="keywordflow">if</span>(fields.empty()){</div>
-<div class="line"><a name="l00763"></a><span class="lineno">  763</span>       fields.resize(poFDefn->GetFieldCount());</div>
-<div class="line"><a name="l00764"></a><span class="lineno">  764</span>       <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00765"></a><span class="lineno">  765</span>         std::cout << <span class="stringliteral">"resized fields to "</span> << fields.size() << std::endl;</div>
-<div class="line"><a name="l00766"></a><span class="lineno">  766</span>     }</div>
-<div class="line"><a name="l00767"></a><span class="lineno">  767</span>     <span class="comment">//start reading features from the layer</span></div>
-<div class="line"><a name="l00768"></a><span class="lineno">  768</span>     OGRFeature *poFeature;</div>
-<div class="line"><a name="l00769"></a><span class="lineno">  769</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00770"></a><span class="lineno">  770</span>       std::cout << <span class="stringliteral">"reset reading"</span> << std::endl;</div>
-<div class="line"><a name="l00771"></a><span class="lineno">  771</span>     poLayer->ResetReading();</div>
-<div class="line"><a name="l00772"></a><span class="lineno">  772</span>     <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> ifeature=0;</div>
-<div class="line"><a name="l00773"></a><span class="lineno">  773</span>     <span class="keywordtype">int</span> posOffset=(pos)?2:0;</div>
-<div class="line"><a name="l00774"></a><span class="lineno">  774</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00775"></a><span class="lineno">  775</span>       std::cout << <span class="stringliteral">"going through features"</span> << std::endl << std::flush;</div>
-<div class="line"><a name="l00776"></a><span class="lineno">  776</span>     <span class="keywordtype">int</span> theClass=0;</div>
-<div class="line"><a name="l00777"></a><span class="lineno">  777</span>     <span class="keywordflow">while</span>( (poFeature = poLayer->GetNextFeature()) != NULL ){</div>
-<div class="line"><a name="l00778"></a><span class="lineno">  778</span>       std::vector<T> theFeature;<span class="comment">//(fields.size()+posOffset);//x,y+selectedfields</span></div>
-<div class="line"><a name="l00779"></a><span class="lineno">  779</span>       <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00780"></a><span class="lineno">  780</span>         std::cout << <span class="stringliteral">"reading feature "</span> << ifeature << std::endl << std::flush;</div>
-<div class="line"><a name="l00781"></a><span class="lineno">  781</span>       OGRGeometry *poGeometry;</div>
-<div class="line"><a name="l00782"></a><span class="lineno">  782</span>       poGeometry = poFeature->GetGeometryRef();</div>
-<div class="line"><a name="l00783"></a><span class="lineno">  783</span>       <span class="keywordflow">if</span>(verbose){</div>
-<div class="line"><a name="l00784"></a><span class="lineno">  784</span>         <span class="keywordflow">if</span>(poGeometry == NULL)</div>
-<div class="line"><a name="l00785"></a><span class="lineno">  785</span>           std::cerr << <span class="stringliteral">"no geometry defined"</span> << std::endl << std::flush;</div>
-<div class="line"><a name="l00786"></a><span class="lineno">  786</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(wkbFlatten(poGeometry->getGeometryType()) != wkbPoint)</div>
-<div class="line"><a name="l00787"></a><span class="lineno">  787</span>           std::cerr << <span class="stringliteral">"poGeometry type: "</span> << wkbFlatten(poGeometry->getGeometryType()) << std::endl << std::flush;</div>
-<div class="line"><a name="l00788"></a><span class="lineno">  788</span>       }</div>
-<div class="line"><a name="l00789"></a><span class="lineno">  789</span>       assert(poGeometry != NULL </div>
-<div class="line"><a name="l00790"></a><span class="lineno">  790</span>              && wkbFlatten(poGeometry->getGeometryType()) == wkbPoint);</div>
-<div class="line"><a name="l00791"></a><span class="lineno">  791</span>       OGRPoint *poPoint = (OGRPoint *) poGeometry;</div>
-<div class="line"><a name="l00792"></a><span class="lineno">  792</span>       <span class="keywordflow">if</span>(pos){</div>
-<div class="line"><a name="l00793"></a><span class="lineno">  793</span>         theFeature.push_back(poPoint->getX());</div>
-<div class="line"><a name="l00794"></a><span class="lineno">  794</span>         theFeature.push_back(poPoint->getY());</div>
-<div class="line"><a name="l00795"></a><span class="lineno">  795</span>       }</div>
-<div class="line"><a name="l00796"></a><span class="lineno">  796</span>       OGRFeatureDefn *poFDefn = poLayer->GetLayerDefn();</div>
-<div class="line"><a name="l00797"></a><span class="lineno">  797</span>       std::string featurename;</div>
-<div class="line"><a name="l00798"></a><span class="lineno">  798</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iField=0;iField<poFDefn->GetFieldCount();++iField){</div>
-<div class="line"><a name="l00799"></a><span class="lineno">  799</span>         OGRFieldDefn *poFieldDefn = poFDefn->GetFieldDefn(iField);</div>
-<div class="line"><a name="l00800"></a><span class="lineno">  800</span>         std::string fieldname=poFieldDefn->GetNameRef();</div>
-<div class="line"><a name="l00801"></a><span class="lineno">  801</span>         <span class="keywordflow">if</span>(fieldname==label)</div>
-<div class="line"><a name="l00802"></a><span class="lineno">  802</span>           theClass=poFeature->GetFieldAsInteger(iField);</div>
-<div class="line"><a name="l00803"></a><span class="lineno">  803</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00804"></a><span class="lineno">  804</span>           <span class="keywordflow">switch</span>(fieldType){</div>
-<div class="line"><a name="l00805"></a><span class="lineno">  805</span>           <span class="keywordflow">case</span>(OFTReal):</div>
-<div class="line"><a name="l00806"></a><span class="lineno">  806</span>             <span class="keywordflow">if</span>(fields.size()<poFDefn->GetFieldCount()){</div>
-<div class="line"><a name="l00807"></a><span class="lineno">  807</span>               <span class="keywordflow">if</span>(find(fields.begin(),fields.end(),fieldname)!=fields.end())</div>
-<div class="line"><a name="l00808"></a><span class="lineno">  808</span>                 theFeature.push_back(poFeature->GetFieldAsDouble(iField));</div>
-<div class="line"><a name="l00809"></a><span class="lineno">  809</span>             }</div>
-<div class="line"><a name="l00810"></a><span class="lineno">  810</span>             <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00811"></a><span class="lineno">  811</span>               fields[iField]=fieldname;</div>
-<div class="line"><a name="l00812"></a><span class="lineno">  812</span>               theFeature.push_back(poFeature->GetFieldAsDouble(iField));</div>
-<div class="line"><a name="l00813"></a><span class="lineno">  813</span>             }</div>
-<div class="line"><a name="l00814"></a><span class="lineno">  814</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00815"></a><span class="lineno">  815</span>           <span class="keywordflow">case</span>(OFTInteger):</div>
-<div class="line"><a name="l00816"></a><span class="lineno">  816</span>             <span class="keywordflow">if</span>(fields.size()<poFDefn->GetFieldCount()){</div>
-<div class="line"><a name="l00817"></a><span class="lineno">  817</span>               <span class="keywordflow">if</span>(find(fields.begin(),fields.end(),fieldname)!=fields.end())</div>
-<div class="line"><a name="l00818"></a><span class="lineno">  818</span>                 theFeature.push_back(poFeature->GetFieldAsDouble(iField));</div>
-<div class="line"><a name="l00819"></a><span class="lineno">  819</span>             }</div>
-<div class="line"><a name="l00820"></a><span class="lineno">  820</span>             <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00821"></a><span class="lineno">  821</span>               fields[iField]=fieldname;</div>
-<div class="line"><a name="l00822"></a><span class="lineno">  822</span>               theFeature.push_back(poFeature->GetFieldAsDouble(iField));</div>
-<div class="line"><a name="l00823"></a><span class="lineno">  823</span>             }</div>
-<div class="line"><a name="l00824"></a><span class="lineno">  824</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00825"></a><span class="lineno">  825</span>           <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00826"></a><span class="lineno">  826</span>             {</div>
-<div class="line"><a name="l00827"></a><span class="lineno">  827</span>               std::string errorstring=<span class="stringliteral">"field type not supported in ImgReaderOgr::ReadData"</span>;</div>
-<div class="line"><a name="l00828"></a><span class="lineno">  828</span>               <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00829"></a><span class="lineno">  829</span>             }</div>
-<div class="line"><a name="l00830"></a><span class="lineno">  830</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00831"></a><span class="lineno">  831</span>           }</div>
-<div class="line"><a name="l00832"></a><span class="lineno">  832</span>         }</div>
-<div class="line"><a name="l00833"></a><span class="lineno">  833</span>       }</div>
-<div class="line"><a name="l00834"></a><span class="lineno">  834</span>       data[theClass].push_back(theFeature);</div>
-<div class="line"><a name="l00835"></a><span class="lineno">  835</span>       ++ifeature;</div>
-<div class="line"><a name="l00836"></a><span class="lineno">  836</span>     }</div>
-<div class="line"><a name="l00837"></a><span class="lineno">  837</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00838"></a><span class="lineno">  838</span>       std::cout << <span class="stringliteral">"number of features read: "</span> << ifeature << std::endl << std::flush;</div>
-<div class="line"><a name="l00839"></a><span class="lineno">  839</span>     <span class="keyword">typename</span> std::map<int,Vector2d<T> >::const_iterator mit=data.begin();</div>
-<div class="line"><a name="l00840"></a><span class="lineno">  840</span>     <span class="keywordtype">int</span> nband=0;</div>
-<div class="line"><a name="l00841"></a><span class="lineno">  841</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00842"></a><span class="lineno">  842</span>       std::cout << <span class="stringliteral">"read classes: "</span> << std::flush;</div>
-<div class="line"><a name="l00843"></a><span class="lineno">  843</span>     <span class="keywordflow">while</span>(mit!=data.end()){</div>
-<div class="line"><a name="l00844"></a><span class="lineno">  844</span>       <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00845"></a><span class="lineno">  845</span>         std::cout << mit->first << <span class="stringliteral">" "</span> << std::flush;</div>
-<div class="line"><a name="l00846"></a><span class="lineno">  846</span>       <span class="keywordflow">if</span>(!nband)</div>
-<div class="line"><a name="l00847"></a><span class="lineno">  847</span>         nband=fields.size();</div>
-<div class="line"><a name="l00848"></a><span class="lineno">  848</span>       <span class="keywordflow">if</span>(pos)</div>
-<div class="line"><a name="l00849"></a><span class="lineno">  849</span>         assert((mit->second)[0].size()==nband+2);</div>
-<div class="line"><a name="l00850"></a><span class="lineno">  850</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00851"></a><span class="lineno">  851</span>         assert((mit->second)[0].size()==nband);</div>
-<div class="line"><a name="l00852"></a><span class="lineno">  852</span>       ++mit;</div>
-<div class="line"><a name="l00853"></a><span class="lineno">  853</span>     }</div>
-<div class="line"><a name="l00854"></a><span class="lineno">  854</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00855"></a><span class="lineno">  855</span>       std::cout << std::endl << std::flush;</div>
-<div class="line"><a name="l00856"></a><span class="lineno">  856</span>     <span class="keywordflow">return</span>(nband);</div>
-<div class="line"><a name="l00857"></a><span class="lineno">  857</span>   }</div>
-<div class="line"><a name="l00858"></a><span class="lineno">  858</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00859"></a><span class="lineno">  859</span>     std::ostringstream ess;</div>
-<div class="line"><a name="l00860"></a><span class="lineno">  860</span>     ess << <span class="stringliteral">"no layer in "</span> << m_filename;</div>
-<div class="line"><a name="l00861"></a><span class="lineno">  861</span>     <span class="keywordflow">throw</span>(ess.str());</div>
-<div class="line"><a name="l00862"></a><span class="lineno">  862</span>   }</div>
-<div class="line"><a name="l00863"></a><span class="lineno">  863</span> }</div>
-<div class="line"><a name="l00864"></a><span class="lineno">  864</span> </div>
-<div class="line"><a name="l00865"></a><span class="lineno">  865</span> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keywordtype">int</span> ImgReaderOgr::readSql(<a class="code" href="classVector2d.html">Vector2d<T></a>& data, <span class="keyword">const</span> OGRFieldType& fieldType, std::vector<std::string>& fields, <span class="keyword">const</span> std::string& sqlStatement, OGRGeometry* spatialF [...]
-<div class="line"><a name="l00866"></a><span class="lineno">  866</span> {</div>
-<div class="line"><a name="l00867"></a><span class="lineno">  867</span>   assert(m_datasource->GetLayerCount()>layer);</div>
-<div class="line"><a name="l00868"></a><span class="lineno">  868</span>   OGRLayer *poLayer;</div>
-<div class="line"><a name="l00869"></a><span class="lineno">  869</span>   poLayer = m_datasource->ExecuteSQL(sqlStatement.c_str(), spatialFilter,NULL );</div>
-<div class="line"><a name="l00870"></a><span class="lineno">  870</span>   <span class="keywordflow">if</span>(poLayer!=NULL){</div>
-<div class="line"><a name="l00871"></a><span class="lineno">  871</span>     OGRFeatureDefn *poFDefn = poLayer->GetLayerDefn();</div>
-<div class="line"><a name="l00872"></a><span class="lineno">  872</span>     <span class="keywordflow">if</span>(fields.empty()){</div>
-<div class="line"><a name="l00873"></a><span class="lineno">  873</span>       fields.resize(poFDefn->GetFieldCount());</div>
-<div class="line"><a name="l00874"></a><span class="lineno">  874</span>       <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00875"></a><span class="lineno">  875</span>         std::cout << <span class="stringliteral">"resized fields to "</span> << fields.size() << std::endl;</div>
-<div class="line"><a name="l00876"></a><span class="lineno">  876</span>     }</div>
-<div class="line"><a name="l00877"></a><span class="lineno">  877</span>     <span class="comment">//start reading features from the layer</span></div>
-<div class="line"><a name="l00878"></a><span class="lineno">  878</span>     OGRFeature *poFeature;</div>
-<div class="line"><a name="l00879"></a><span class="lineno">  879</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00880"></a><span class="lineno">  880</span>       std::cout << <span class="stringliteral">"reset reading"</span> << std::endl;</div>
-<div class="line"><a name="l00881"></a><span class="lineno">  881</span>     poLayer->ResetReading();</div>
-<div class="line"><a name="l00882"></a><span class="lineno">  882</span>     <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> ifeature=0;</div>
-<div class="line"><a name="l00883"></a><span class="lineno">  883</span>     <span class="keywordtype">int</span> posOffset=(pos)?2:0;</div>
-<div class="line"><a name="l00884"></a><span class="lineno">  884</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00885"></a><span class="lineno">  885</span>       std::cout << <span class="stringliteral">"going through features"</span> << std::endl << std::flush;</div>
-<div class="line"><a name="l00886"></a><span class="lineno">  886</span>     <span class="keywordflow">while</span>( (poFeature = poLayer->GetNextFeature()) != NULL ){</div>
-<div class="line"><a name="l00887"></a><span class="lineno">  887</span>       std::vector<T> theFeature;<span class="comment">//(fields.size()+posOffset);//x,y+selectedfields</span></div>
-<div class="line"><a name="l00888"></a><span class="lineno">  888</span>       <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00889"></a><span class="lineno">  889</span>         std::cout << <span class="stringliteral">"reading feature "</span> << ifeature << std::endl << std::flush;</div>
-<div class="line"><a name="l00890"></a><span class="lineno">  890</span>       OGRGeometry *poGeometry;</div>
-<div class="line"><a name="l00891"></a><span class="lineno">  891</span>       poGeometry = poFeature->GetGeometryRef();</div>
-<div class="line"><a name="l00892"></a><span class="lineno">  892</span>       <span class="keywordflow">if</span>(verbose){</div>
-<div class="line"><a name="l00893"></a><span class="lineno">  893</span>         <span class="keywordflow">if</span>(poGeometry == NULL)</div>
-<div class="line"><a name="l00894"></a><span class="lineno">  894</span>           std::cerr << <span class="stringliteral">"no geometry defined"</span> << std::endl << std::flush;</div>
-<div class="line"><a name="l00895"></a><span class="lineno">  895</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(wkbFlatten(poGeometry->getGeometryType()) != wkbPoint)</div>
-<div class="line"><a name="l00896"></a><span class="lineno">  896</span>           std::cerr << <span class="stringliteral">"poGeometry type: "</span> << wkbFlatten(poGeometry->getGeometryType()) << std::endl << std::flush;</div>
-<div class="line"><a name="l00897"></a><span class="lineno">  897</span>       }</div>
-<div class="line"><a name="l00898"></a><span class="lineno">  898</span>       assert(poGeometry != NULL </div>
-<div class="line"><a name="l00899"></a><span class="lineno">  899</span>              && wkbFlatten(poGeometry->getGeometryType()) == wkbPoint);</div>
-<div class="line"><a name="l00900"></a><span class="lineno">  900</span>       OGRPoint *poPoint = (OGRPoint *) poGeometry;</div>
-<div class="line"><a name="l00901"></a><span class="lineno">  901</span>       <span class="keywordflow">if</span>(pos){</div>
-<div class="line"><a name="l00902"></a><span class="lineno">  902</span>         theFeature.push_back(poPoint->getX());</div>
-<div class="line"><a name="l00903"></a><span class="lineno">  903</span>         theFeature.push_back(poPoint->getY());</div>
-<div class="line"><a name="l00904"></a><span class="lineno">  904</span>       }</div>
-<div class="line"><a name="l00905"></a><span class="lineno">  905</span>       OGRFeatureDefn *poFDefn = poLayer->GetLayerDefn();</div>
-<div class="line"><a name="l00906"></a><span class="lineno">  906</span>       std::string featurename;</div>
-<div class="line"><a name="l00907"></a><span class="lineno">  907</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iField=0;iField<poFDefn->GetFieldCount();++iField){</div>
-<div class="line"><a name="l00908"></a><span class="lineno">  908</span>         OGRFieldDefn *poFieldDefn = poFDefn->GetFieldDefn(iField);</div>
-<div class="line"><a name="l00909"></a><span class="lineno">  909</span>         std::string fieldname=poFieldDefn->GetNameRef();</div>
-<div class="line"><a name="l00910"></a><span class="lineno">  910</span>         <span class="keywordflow">switch</span>(fieldType){</div>
-<div class="line"><a name="l00911"></a><span class="lineno">  911</span>         <span class="keywordflow">case</span>(OFTReal):</div>
-<div class="line"><a name="l00912"></a><span class="lineno">  912</span>           <span class="keywordflow">if</span>(fields.size()<poFDefn->GetFieldCount()){</div>
-<div class="line"><a name="l00913"></a><span class="lineno">  913</span>             <span class="keywordflow">if</span>(find(fields.begin(),fields.end(),fieldname)!=fields.end())</div>
-<div class="line"><a name="l00914"></a><span class="lineno">  914</span>               theFeature.push_back(poFeature->GetFieldAsDouble(iField));</div>
-<div class="line"><a name="l00915"></a><span class="lineno">  915</span>           }</div>
-<div class="line"><a name="l00916"></a><span class="lineno">  916</span>           <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00917"></a><span class="lineno">  917</span>             fields[iField]=fieldname;</div>
-<div class="line"><a name="l00918"></a><span class="lineno">  918</span>             theFeature.push_back(poFeature->GetFieldAsDouble(iField));</div>
-<div class="line"><a name="l00919"></a><span class="lineno">  919</span>           }</div>
-<div class="line"><a name="l00920"></a><span class="lineno">  920</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00921"></a><span class="lineno">  921</span>         <span class="keywordflow">case</span>(OFTInteger):</div>
-<div class="line"><a name="l00922"></a><span class="lineno">  922</span>           <span class="keywordflow">if</span>(fields.size()<poFDefn->GetFieldCount()){</div>
-<div class="line"><a name="l00923"></a><span class="lineno">  923</span>             <span class="keywordflow">if</span>(find(fields.begin(),fields.end(),fieldname)!=fields.end())</div>
-<div class="line"><a name="l00924"></a><span class="lineno">  924</span>               theFeature.push_back(poFeature->GetFieldAsDouble(iField));</div>
-<div class="line"><a name="l00925"></a><span class="lineno">  925</span>           }</div>
-<div class="line"><a name="l00926"></a><span class="lineno">  926</span>           <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00927"></a><span class="lineno">  927</span>             fields[iField]=fieldname;</div>
-<div class="line"><a name="l00928"></a><span class="lineno">  928</span>             theFeature.push_back(poFeature->GetFieldAsDouble(iField));</div>
-<div class="line"><a name="l00929"></a><span class="lineno">  929</span>           }</div>
-<div class="line"><a name="l00930"></a><span class="lineno">  930</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00931"></a><span class="lineno">  931</span>         <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00932"></a><span class="lineno">  932</span>           {</div>
-<div class="line"><a name="l00933"></a><span class="lineno">  933</span>             std::string errorstring=<span class="stringliteral">"field type not supported in ImgReaderOgr::ReadData"</span>;</div>
-<div class="line"><a name="l00934"></a><span class="lineno">  934</span>             <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00935"></a><span class="lineno">  935</span>           }</div>
-<div class="line"><a name="l00936"></a><span class="lineno">  936</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00937"></a><span class="lineno">  937</span>         }</div>
-<div class="line"><a name="l00938"></a><span class="lineno">  938</span>       }</div>
-<div class="line"><a name="l00939"></a><span class="lineno">  939</span>       data.push_back(theFeature);</div>
-<div class="line"><a name="l00940"></a><span class="lineno">  940</span>       ++ifeature;</div>
-<div class="line"><a name="l00941"></a><span class="lineno">  941</span>     }</div>
-<div class="line"><a name="l00942"></a><span class="lineno">  942</span>     m_datasource->ReleaseResultSet( poLayer );</div>
-<div class="line"><a name="l00943"></a><span class="lineno">  943</span>     <span class="comment">//   assert(data.size()==ifeature);</span></div>
-<div class="line"><a name="l00944"></a><span class="lineno">  944</span>     <span class="keywordflow">if</span>(data.size()){</div>
-<div class="line"><a name="l00945"></a><span class="lineno">  945</span>       <span class="keywordflow">if</span>(pos)</div>
-<div class="line"><a name="l00946"></a><span class="lineno">  946</span>         assert(data[0].size()==fields.size()+2);</div>
-<div class="line"><a name="l00947"></a><span class="lineno">  947</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00948"></a><span class="lineno">  948</span>         assert(data[0].size()==fields.size());</div>
-<div class="line"><a name="l00949"></a><span class="lineno">  949</span>       <span class="keywordflow">return</span> fields.size();</div>
-<div class="line"><a name="l00950"></a><span class="lineno">  950</span>     }</div>
-<div class="line"><a name="l00951"></a><span class="lineno">  951</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00952"></a><span class="lineno">  952</span>       <span class="keywordflow">return</span>(0);</div>
-<div class="line"><a name="l00953"></a><span class="lineno">  953</span>   }</div>
-<div class="line"><a name="l00954"></a><span class="lineno">  954</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00955"></a><span class="lineno">  955</span>     std::ostringstream ess;</div>
-<div class="line"><a name="l00956"></a><span class="lineno">  956</span>     ess << <span class="stringliteral">"no layer in "</span> << m_filename;</div>
-<div class="line"><a name="l00957"></a><span class="lineno">  957</span>     <span class="keywordflow">throw</span>(ess.str());</div>
-<div class="line"><a name="l00958"></a><span class="lineno">  958</span>   }</div>
-<div class="line"><a name="l00959"></a><span class="lineno">  959</span> }</div>
-<div class="line"><a name="l00960"></a><span class="lineno">  960</span> </div>
-<div class="line"><a name="l00961"></a><span class="lineno">  961</span> <span class="preprocessor">#endif // _IMGREADEROGR_H_</span></div>
-<div class="ttc" id="classVector2d_html"><div class="ttname"><a href="classVector2d.html">Vector2d</a></div><div class="ttdef"><b>Definition:</b> <a href="Vector2d_8h_source.html#l00031">Vector2d.h:31</a></div></div>
-<div class="ttc" id="classImgReaderOgr_html"><div class="ttname"><a href="classImgReaderOgr.html">ImgReaderOgr</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderOgr_8h_source.html#l00035">ImgReaderOgr.h:35</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/ImgRegression_8cc_source.html b/doc/html/ImgRegression_8cc_source.html
deleted file mode 100644
index e4fa02b..0000000
--- a/doc/html/ImgRegression_8cc_source.html
+++ /dev/null
@@ -1,468 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/algorithms/ImgRegression.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_e6df591b0639d4c4807ef64d058833e2.html">algorithms</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">ImgRegression.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">ImgRegression.cc: class to calculate regression between two raster datasets</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "ImgRegression.h"</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <iostream></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> </div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="keyword">using namespace </span>imgregression;</div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> </div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> ImgRegression::ImgRegression(<span class="keywordtype">void</span>)</div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> : m_threshold(0), m_down(1)</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> {}</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> </div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> ImgRegression::~ImgRegression(<span class="keywordtype">void</span>)</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> {}</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> </div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keywordtype">double</span> ImgRegression::getRMSE(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& imgReader1, <span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& imgReader2, <span class="keywordtype">double</span>& c0, <span class="keywordtype">double</span>& c1, <span class="keywor [...]
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>   c0=0;</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>   c1=1;</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>   <span class="keywordtype">int</span> icol1=0,irow1=0;</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   std::vector<double> rowBuffer1(imgReader1.nrOfCol());</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>   std::vector<double> rowBuffer2(imgReader2.nrOfCol());</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>   std::vector<double> buffer1;</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>   std::vector<double> buffer2;</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> </div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>   srand(time(NULL));</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   <span class="keywordflow">for</span>(irow1=0;irow1<imgReader1.nrOfRow();++irow1){</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     <span class="keywordflow">if</span>(irow1%m_down)</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     icol1=0;</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     <span class="keywordtype">double</span> icol2=0,irow2=0;</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     <span class="keywordtype">double</span> geox=0,geoy=0;</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     imgReader1.readData(rowBuffer1,GDT_Float64,irow1,band1);</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     imgReader1.image2geo(icol1,irow1,geox,geoy);</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     imgReader2.geo2image(geox,geoy,icol2,irow2);</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     icol2=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(icol2);</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     irow2=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(irow2);</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     <span class="keywordflow">if</span>(irow2<0||irow2>=imgReader2.nrOfRow())</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     imgReader2.readData(rowBuffer2,GDT_Float64,irow2,band2);</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <span class="keywordflow">for</span>(icol1=0;icol1<imgReader1.nrOfCol();++icol1){</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>       <span class="keywordflow">if</span>(icol1%m_down)</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>       <span class="keywordflow">if</span>(m_threshold>0){<span class="comment">//percentual value</span></div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     <span class="keywordtype">double</span> p=<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(rand())/(RAND_MAX);</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     p*=100.0;</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     <span class="keywordflow">if</span>(p>m_threshold)</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>       <span class="keywordflow">continue</span>;<span class="comment">//do not select for now, go to next column</span></div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>       }</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>       imgReader1.image2geo(icol1,irow1,geox,geoy);</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>       imgReader2.geo2image(geox,geoy,icol2,irow2);</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>       <span class="keywordflow">if</span>(icol2<0||icol2>=imgReader2.nrOfCol())</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>       icol2=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(icol2);</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>       irow2=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(irow2);</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>       <span class="comment">//check for nodata</span></div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>       <span class="keywordtype">double</span> value1=rowBuffer1[icol1];</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>       <span class="keywordtype">double</span> value2=rowBuffer2[icol2];</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>       <span class="keywordflow">if</span>(imgReader1.isNoData(value1)||imgReader2.isNoData(value2))</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span> </div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>       buffer1.push_back(value1);</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>       buffer2.push_back(value2);</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>       <span class="keywordflow">if</span>(verbose>1)</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>     std::cout << geox << <span class="stringliteral">" "</span> << geoy << <span class="stringliteral">" "</span> << icol1 << <span class="stringliteral">" "</span> << irow1 << <span class="stringliteral">" "</span> << icol2 << <span class="stringliteral">" "</span> << irow2 << <span class=" [...]
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>     }</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>   }</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   <span class="keywordtype">double</span> err=0;</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>   <span class="keywordflow">if</span>(buffer1.size()&&buffer2.size()){</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>     <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>     err=stat.linear_regression_err(buffer1,buffer2,c0,c1);</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>   }</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     std::cout << <span class="stringliteral">"linear regression based on "</span> << buffer1.size() << <span class="stringliteral">" points: "</span> << c0 << <span class="stringliteral">"+"</span> << c1 << <span class="stringliteral">" * x "</span> << <span class="stringliteral">" with rmse: "</span> << err  [...]
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>   <span class="keywordflow">return</span> err;</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span> }</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span> </div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span> <span class="keywordtype">double</span> ImgRegression::getR2(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& imgReader1, <span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& imgReader2, <span class="keywordtype">double</span>& c0, <span class="keywordtype">double</span>& c1, <span class="keywordt [...]
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   c0=0;</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   c1=1;</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>   <span class="keywordtype">int</span> icol1=0,irow1=0;</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>   std::vector<double> rowBuffer1(imgReader1.nrOfCol());</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>   std::vector<double> rowBuffer2(imgReader2.nrOfCol());</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>   std::vector<double> buffer1;</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>   std::vector<double> buffer2;</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span> </div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>   srand(time(NULL));</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>   <span class="keywordflow">for</span>(irow1=0;irow1<imgReader1.nrOfRow();++irow1){</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     <span class="keywordflow">if</span>(irow1%m_down)</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     icol1=0;</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     <span class="keywordtype">double</span> icol2=0,irow2=0;</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     <span class="keywordtype">double</span> geox=0,geoy=0;</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>     imgReader1.readData(rowBuffer1,GDT_Float64,irow1,band1);</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>     imgReader1.image2geo(icol1,irow1,geox,geoy);</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>     imgReader2.geo2image(geox,geoy,icol2,irow2);</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>     icol2=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(icol2);</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     irow2=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(irow2);</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     <span class="keywordflow">if</span>(irow2<0||irow2>=imgReader2.nrOfRow())</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     imgReader2.readData(rowBuffer2,GDT_Float64,irow2,band2);</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     <span class="keywordflow">for</span>(icol1=0;icol1<imgReader1.nrOfCol();++icol1){</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>       <span class="keywordflow">if</span>(icol1%m_down)</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>       <span class="keywordflow">if</span>(m_threshold>0){<span class="comment">//percentual value</span></div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>     <span class="keywordtype">double</span> p=<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(rand())/(RAND_MAX);</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>     p*=100.0;</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>     <span class="keywordflow">if</span>(p>m_threshold)</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>       <span class="keywordflow">continue</span>;<span class="comment">//do not select for now, go to next column</span></div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>       }</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>       imgReader1.image2geo(icol1,irow1,geox,geoy);</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>       imgReader2.geo2image(geox,geoy,icol2,irow2);</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>       <span class="keywordflow">if</span>(icol2<0||icol2>=imgReader2.nrOfCol())</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>       icol2=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(icol2);</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>       irow2=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(irow2);</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>       <span class="comment">//check for nodata</span></div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>       <span class="keywordtype">double</span> value1=rowBuffer1[icol1];</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>       <span class="keywordtype">double</span> value2=rowBuffer2[icol2];</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>       <span class="keywordflow">if</span>(imgReader1.isNoData(value1)||imgReader2.isNoData(value2))</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span> </div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>       buffer1.push_back(value1);</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>       buffer2.push_back(value2);</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>       <span class="keywordflow">if</span>(verbose>1)</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>     std::cout << geox << <span class="stringliteral">" "</span> << geoy << <span class="stringliteral">" "</span> << icol1 << <span class="stringliteral">" "</span> << irow1 << <span class="stringliteral">" "</span> << icol2 << <span class="stringliteral">" "</span> << irow2 << <span class=" [...]
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>     }</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>   }</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>   <span class="keywordtype">double</span> r2=0;</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>   <span class="keywordflow">if</span>(buffer1.size()&&buffer2.size()){</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>     <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>     r2=stat.linear_regression(buffer1,buffer2,c0,c1);</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>   }</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>     std::cout << <span class="stringliteral">"linear regression based on "</span> << buffer1.size() << <span class="stringliteral">" points: "</span> << c0 << <span class="stringliteral">"+"</span> << c1 << <span class="stringliteral">" * x "</span> << <span class="stringliteral">" with r^2: "</span> << r2 &l [...]
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>   <span class="keywordflow">return</span> r2;</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span> }</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span> </div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span> <span class="keywordtype">double</span> ImgRegression::pgetR2(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& imgReader1, <span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& imgReader2, <span class="keywordtype">double</span>& c0, <span class="keywordtype">double</span>& c1, <span class="keyword [...]
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>   c0=0;</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>   c1=1;</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>   <span class="keywordtype">int</span> icol1=0,irow1=0;</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>   std::vector<double> rowBuffer1(imgReader1.nrOfCol());</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   std::vector<double> rowBuffer2(imgReader2.nrOfCol());</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>   std::vector<double> buffer1;</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>   std::vector<double> buffer2;</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span> </div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>   srand(time(NULL));</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>   <span class="keywordflow">for</span>(irow1=0;irow1<imgReader1.nrOfRow();++irow1){</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>     <span class="keywordflow">if</span>(irow1%m_down)</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>     icol1=0;</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>     <span class="keywordtype">double</span> icol2=0,irow2=0;</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>     <span class="keywordtype">double</span> geox=0,geoy=0;</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>     imgReader1.readData(rowBuffer1,GDT_Float64,irow1,band1);</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>     imgReader1.image2geo(icol1,irow1,geox,geoy);</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>     imgReader2.geo2image(geox,geoy,icol2,irow2);</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>     icol2=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(icol2);</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>     irow2=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(irow2);</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>     <span class="keywordflow">if</span>(irow2<0||irow2>=imgReader2.nrOfRow())</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>     imgReader2.readData(rowBuffer2,GDT_Float64,irow2,band2);</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>     <span class="keywordflow">for</span>(icol1=0;icol1<imgReader1.nrOfCol();++icol1){</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>       <span class="keywordflow">if</span>(icol1%m_down)</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>       <span class="keywordflow">if</span>(m_threshold>0){<span class="comment">//percentual value</span></div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>     <span class="keywordtype">double</span> p=<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(rand())/(RAND_MAX);</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>     p*=100.0;</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>     <span class="keywordflow">if</span>(p>m_threshold)</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>       <span class="keywordflow">continue</span>;<span class="comment">//do not select for now, go to next column</span></div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>       }</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>       imgReader1.image2geo(icol1,irow1,geox,geoy);</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>       imgReader2.geo2image(geox,geoy,icol2,irow2);</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>       <span class="keywordflow">if</span>(icol2<0||icol2>=imgReader2.nrOfCol())</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>       icol2=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(icol2);</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>       irow2=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(irow2);</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>       <span class="comment">//check for nodata</span></div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>       <span class="keywordtype">double</span> value1=rowBuffer1[icol1];</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>       <span class="keywordtype">double</span> value2=rowBuffer2[icol2];</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>       <span class="keywordflow">if</span>(imgReader1.isNoData(value1)||imgReader2.isNoData(value2))</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span> </div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>       buffer1.push_back(value1);</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>       buffer2.push_back(value2);</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>       <span class="keywordflow">if</span>(verbose>1)</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>     std::cout << geox << <span class="stringliteral">" "</span> << geoy << <span class="stringliteral">" "</span> << icol1 << <span class="stringliteral">" "</span> << irow1 << <span class="stringliteral">" "</span> << icol2 << <span class="stringliteral">" "</span> << irow2 << <span class=" [...]
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>     }</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>   }</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>   <span class="keywordtype">double</span> r=0;</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>   <span class="keywordflow">if</span>(buffer1.size()&&buffer2.size()){</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>     <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>     r=stat.correlation(buffer1,buffer2);</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>     <span class="comment">// r=stat.gsl_correlation(buffer1,buffer2);</span></div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>     <span class="keywordtype">double</span> m1=0;</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>     <span class="keywordtype">double</span> v1=0;</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>     <span class="keywordtype">double</span> m2=0;</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>     <span class="keywordtype">double</span> v2=0;</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>     stat.meanVar(buffer1,m1,v1);</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>     stat.meanVar(buffer2,m2,v2);</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>     <span class="keywordflow">if</span>(v1>0){</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>       <span class="keywordflow">if</span>(r>=0)</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>     c1=v2/v1;</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>     c1=-v2/v1;</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>     }</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>     c0=m2-c1*m1;</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>   }</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>     std::cout << <span class="stringliteral">"orthogonal regression based on "</span> << buffer1.size() << <span class="stringliteral">" points: "</span> << c0 << <span class="stringliteral">"+"</span> << c1 << <span class="stringliteral">" * x "</span> << <span class="stringliteral">" with r^2: "</span> << r [...]
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>   <span class="keywordflow">return</span> r*r;</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span> }</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span> </div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span> <span class="keywordtype">double</span> ImgRegression::getRMSE(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& imgReader, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> band1, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> band2, <span class="keywordtype">double</span>& c0, <span clas [...]
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>   c0=0;</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>   c1=1;</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>   <span class="keywordtype">int</span> icol=0,irow=0;</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>   std::vector<double> rowBuffer1(imgReader.nrOfCol());</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>   std::vector<double> rowBuffer2(imgReader.nrOfCol());</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>   std::vector<double> buffer1;</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>   std::vector<double> buffer2;</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span> </div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>   srand(time(NULL));</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>   assert(band1>=0);</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>   assert(band1<imgReader.nrOfBand());</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>   assert(band2>=0);</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>   assert(band2<imgReader.nrOfBand());</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>   <span class="keywordflow">for</span>(irow=0;irow<imgReader.nrOfRow();++irow){</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>     <span class="keywordflow">if</span>(irow%m_down)</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>     icol=0;</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>     imgReader.readData(rowBuffer1,GDT_Float64,irow,band1);</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>     imgReader.readData(rowBuffer2,GDT_Float64,irow,band2);</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>     <span class="keywordflow">for</span>(icol=0;icol<imgReader.nrOfCol();++icol){</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>       <span class="keywordflow">if</span>(icol%m_down)</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>       <span class="keywordflow">if</span>(m_threshold>0){<span class="comment">//percentual value</span></div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>     <span class="keywordtype">double</span> p=<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(rand())/(RAND_MAX);</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>     p*=100.0;</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>     <span class="keywordflow">if</span>(p>m_threshold)</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>       <span class="keywordflow">continue</span>;<span class="comment">//do not select for now, go to next column</span></div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>       }</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>       <span class="comment">//check for nodata</span></div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>       <span class="keywordtype">double</span> value1=rowBuffer1[icol];</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>       <span class="keywordtype">double</span> value2=rowBuffer2[icol];</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>       <span class="keywordflow">if</span>(imgReader.isNoData(value1)||imgReader.isNoData(value2))</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span> </div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>       buffer1.push_back(value1);</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>       buffer2.push_back(value2);</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>       <span class="keywordflow">if</span>(verbose>1)</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>     std::cout << icol << <span class="stringliteral">" "</span> << irow << <span class="stringliteral">" "</span> << buffer1.back() << <span class="stringliteral">" "</span> << buffer2.back() << std::endl;</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>     }</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>   }</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>   <span class="keywordtype">double</span> err=0;</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>   <span class="keywordflow">if</span>(buffer1.size()&&buffer2.size()){</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>     <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>     err=stat.linear_regression_err(buffer1,buffer2,c0,c1);</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>   }</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>     std::cout << <span class="stringliteral">"linear regression based on "</span> << buffer1.size() << <span class="stringliteral">" points: "</span> << c0 << <span class="stringliteral">"+"</span> << c1 << <span class="stringliteral">" * x "</span> << <span class="stringliteral">" with rmse: "</span> << err  [...]
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>   <span class="keywordflow">return</span> err;</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span> }</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span> </div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span> <span class="keywordtype">double</span> ImgRegression::getR2(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& imgReader, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> band1, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> band2, <span class="keywordtype">double</span>& c0, <span class= [...]
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>   c0=0;</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>   c1=1;</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>   <span class="keywordtype">int</span> icol=0,irow=0;</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>   std::vector<double> rowBuffer1(imgReader.nrOfCol());</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>   std::vector<double> rowBuffer2(imgReader.nrOfCol());</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>   std::vector<double> buffer1;</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>   std::vector<double> buffer2;</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span> </div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>   srand(time(NULL));</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>   assert(band1>=0);</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>   assert(band1<imgReader.nrOfBand());</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>   assert(band2>=0);</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>   assert(band2<imgReader.nrOfBand());</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>   <span class="keywordflow">for</span>(irow=0;irow<imgReader.nrOfRow();++irow){</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>     <span class="keywordflow">if</span>(irow%m_down)</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>     icol=0;</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>     imgReader.readData(rowBuffer1,GDT_Float64,irow,band1);</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>     imgReader.readData(rowBuffer2,GDT_Float64,irow,band2);</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>     <span class="keywordflow">for</span>(icol=0;icol<imgReader.nrOfCol();++icol){</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>       <span class="keywordflow">if</span>(icol%m_down)</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>       <span class="keywordflow">if</span>(m_threshold>0){<span class="comment">//percentual value</span></div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>     <span class="keywordtype">double</span> p=<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(rand())/(RAND_MAX);</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>     p*=100.0;</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>     <span class="keywordflow">if</span>(p>m_threshold)</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>       <span class="keywordflow">continue</span>;<span class="comment">//do not select for now, go to next column</span></div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>       }</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>       <span class="comment">//check for nodata</span></div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>       <span class="keywordtype">double</span> value1=rowBuffer1[icol];</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>       <span class="keywordtype">double</span> value2=rowBuffer2[icol];</div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>       <span class="keywordflow">if</span>(imgReader.isNoData(value1)||imgReader.isNoData(value2))</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span> </div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>       buffer1.push_back(value1);</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>       buffer2.push_back(value2);</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>       <span class="keywordflow">if</span>(verbose>1)</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>     std::cout << icol << <span class="stringliteral">" "</span> << irow << <span class="stringliteral">" "</span> << buffer1.back() << <span class="stringliteral">" "</span> << buffer2.back() << std::endl;</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>     }</div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>   }</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>   <span class="keywordtype">double</span> r2=0;</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>   <span class="keywordflow">if</span>(buffer1.size()&&buffer2.size()){</div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>     <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>     r2=stat.linear_regression(buffer1,buffer2,c0,c1);</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>   }</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>     std::cout << <span class="stringliteral">"linear regression based on "</span> << buffer1.size() << <span class="stringliteral">" points: "</span> << c0 << <span class="stringliteral">"+"</span> << c1 << <span class="stringliteral">" * x "</span> << <span class="stringliteral">" with r^2: "</span> << r2 &l [...]
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>   <span class="keywordflow">return</span> r2;</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span> }</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span> </div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span> <span class="keywordtype">double</span> ImgRegression::pgetR2(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& imgReader, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> band1, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> band2, <span class="keywordtype">double</span>& c0, <span class [...]
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>   c0=0;</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>   c1=1;</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>   <span class="keywordtype">int</span> icol=0,irow=0;</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>   std::vector<double> rowBuffer1(imgReader.nrOfCol());</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>   std::vector<double> rowBuffer2(imgReader.nrOfCol());</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>   std::vector<double> buffer1;</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>   std::vector<double> buffer2;</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span> </div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>   srand(time(NULL));</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>   assert(band1>=0);</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>   assert(band1<imgReader.nrOfBand());</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>   assert(band2>=0);</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>   assert(band2<imgReader.nrOfBand());</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>   <span class="keywordflow">for</span>(irow=0;irow<imgReader.nrOfRow();++irow){</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>     <span class="keywordflow">if</span>(irow%m_down)</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>     icol=0;</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>     imgReader.readData(rowBuffer1,GDT_Float64,irow,band1);</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>     imgReader.readData(rowBuffer2,GDT_Float64,irow,band2);</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>     <span class="keywordflow">for</span>(icol=0;icol<imgReader.nrOfCol();++icol){</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>       <span class="keywordflow">if</span>(icol%m_down)</div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>       <span class="keywordflow">if</span>(m_threshold>0){<span class="comment">//percentual value</span></div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>     <span class="keywordtype">double</span> p=<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(rand())/(RAND_MAX);</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>     p*=100.0;</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>     <span class="keywordflow">if</span>(p>m_threshold)</div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>       <span class="keywordflow">continue</span>;<span class="comment">//do not select for now, go to next column</span></div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>       }</div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>       <span class="comment">//check for nodata</span></div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>       <span class="keywordtype">double</span> value1=rowBuffer1[icol];</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>       <span class="keywordtype">double</span> value2=rowBuffer2[icol];</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>       <span class="keywordflow">if</span>(imgReader.isNoData(value1)||imgReader.isNoData(value2))</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span> </div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>       buffer1.push_back(value1);</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>       buffer2.push_back(value2);</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>       <span class="keywordflow">if</span>(verbose>1)</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>     std::cout << icol << <span class="stringliteral">" "</span> << irow << <span class="stringliteral">" "</span> << buffer1.back() << <span class="stringliteral">" "</span> << buffer2.back() << std::endl;</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>     }</div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>   }</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>   <span class="keywordtype">double</span> r=0;</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>   <span class="keywordflow">if</span>(buffer1.size()&&buffer2.size()){</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>     <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>     r=stat.correlation(buffer1,buffer2);</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>     <span class="comment">// r=stat.gsl_correlation(buffer1,buffer2);</span></div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>     <span class="keywordtype">double</span> m1=0;</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>     <span class="keywordtype">double</span> v1=0;</div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>     <span class="keywordtype">double</span> m2=0;</div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>     <span class="keywordtype">double</span> v2=0;</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>     stat.meanVar(buffer1,m1,v1);</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>     stat.meanVar(buffer2,m2,v2);</div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>     <span class="keywordflow">if</span>(v1>0){</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>       <span class="keywordflow">if</span>(r>=0)</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>     c1=v2/v1;</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>     c1=-v2/v1;</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>     }</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>     c0=m2-c1*m1;</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>   }</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>     std::cout << <span class="stringliteral">"orthogonal regression based on "</span> << buffer1.size() << <span class="stringliteral">" points: "</span> << c0 << <span class="stringliteral">"+"</span> << c1 << <span class="stringliteral">" * x "</span> << <span class="stringliteral">" with r^2: "</span> << r [...]
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>   <span class="keywordflow">return</span> r*r;</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span> }</div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-<div class="ttc" id="classstatfactory_1_1StatFactory_html"><div class="ttname"><a href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></div><div class="ttdef"><b>Definition:</b> <a href="StatFactory_8h_source.html#l00043">StatFactory.h:43</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/ImgRegression_8h_source.html b/doc/html/ImgRegression_8h_source.html
deleted file mode 100644
index 02de8b4..0000000
--- a/doc/html/ImgRegression_8h_source.html
+++ /dev/null
@@ -1,122 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/algorithms/ImgRegression.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_e6df591b0639d4c4807ef64d058833e2.html">algorithms</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">ImgRegression.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">ImgRegression.h: class to calculate regression between two raster datasets</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#ifndef _IMGREGRESSION_H_</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor"></span><span class="preprocessor">#define _IMGREGRESSION_H_</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <vector></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "imageclasses/ImgReaderGdal.h"</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "imageclasses/ImgWriterGdal.h"</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "StatFactory.h"</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> </div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">namespace </span>imgregression</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> {</div>
-<div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="classimgregression_1_1ImgRegression.html">   30</a></span>   <span class="keyword">class </span><a class="code" href="classimgregression_1_1ImgRegression.html">ImgRegression</a>{</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span>   <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>     <a class="code" href="classimgregression_1_1ImgRegression.html">ImgRegression</a>(<span class="keywordtype">void</span>);</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>     ~<a class="code" href="classimgregression_1_1ImgRegression.html">ImgRegression</a>(<span class="keywordtype">void</span>);</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>     <span class="keywordtype">double</span> getRMSE(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& imgReader1, <span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& imgReader2, <span class="keywordtype">double</span> &c0, <span class="keywordtype">double</span> &c1, <span class="keywordtype">unsi [...]
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>     <span class="keywordtype">double</span> getRMSE(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& imgReader, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> b1, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> b2, <span class="keywordtype">double</span>& c0, <span class="keywordtype">d [...]
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>     <span class="keywordtype">double</span> getR2(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& imgReader1, <span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& imgReader2, <span class="keywordtype">double</span> &c0, <span class="keywordtype">double</span> &c1, <span class="keywordtype">unsign [...]
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>     <span class="keywordtype">double</span> pgetR2(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& imgReader1, <span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& imgReader2, <span class="keywordtype">double</span>& c0, <span class="keywordtype">double</span>& c1, <span class="keywordtype">unsig [...]
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>     <span class="keywordtype">double</span> getR2(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& imgReader, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> b1, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> b2, <span class="keywordtype">double</span>& c0, <span class="keywordtype">dou [...]
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>     <span class="keywordtype">double</span> pgetR2(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& imgReader, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> band1, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> band2, <span class="keywordtype">double</span>& c0, <span class="keywordty [...]
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> </div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     <span class="keywordtype">void</span> setThreshold(<span class="keywordtype">double</span> theThreshold){m_threshold=theThreshold;};</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     <span class="keywordtype">void</span> setDown(<span class="keywordtype">int</span> theDown){m_down=theDown;};</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   <span class="keyword">private</span>:</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     <span class="keywordtype">int</span> m_down;</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     <span class="keywordtype">double</span> m_threshold;</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>   };</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span> }</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span> <span class="preprocessor">#endif //_IMGREGRESSION_H_</span></div>
-<div class="ttc" id="classimgregression_1_1ImgRegression_html"><div class="ttname"><a href="classimgregression_1_1ImgRegression.html">imgregression::ImgRegression</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgRegression_8h_source.html#l00030">ImgRegression.h:30</a></div></div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/ImgUpdaterGdal_8cc_source.html b/doc/html/ImgUpdaterGdal_8cc_source.html
deleted file mode 100644
index 247dbb9..0000000
--- a/doc/html/ImgUpdaterGdal_8cc_source.html
+++ /dev/null
@@ -1,117 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/imageclasses/ImgUpdaterGdal.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_6d2fd95b0bd390617ad5a1eb4a537b4a.html">imageclasses</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">ImgUpdaterGdal.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">ImgUpdaterGdal.cc: class to read raster files using GDAL API library</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2012 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <iostream></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "ImgUpdaterGdal.h"</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> </div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> ImgUpdaterGdal::ImgUpdaterGdal(<span class="keywordtype">void</span>){};</div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> </div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> ImgUpdaterGdal::ImgUpdaterGdal(<span class="keyword">const</span> std::string& filename, <span class="keyword">const</span> GDALAccess& readMode){</div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span>   open(filename,readMode);</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> }</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> </div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> ImgUpdaterGdal::~ImgUpdaterGdal(<span class="keywordtype">void</span>)</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> {</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span>   <span class="comment">// delete m_gds;</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="comment">//   GDALDumpOpenDatasets(stderr);</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="comment">//   GDALDestroyDriverManager();//could be used by other objects...</span></div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> }</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> </div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="comment">//--------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="keywordtype">void</span> ImgUpdaterGdal::open(<span class="keyword">const</span> std::string& filename, <span class="keyword">const</span> GDALAccess& readMode)</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> {</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   ImgReaderGdal::open(filename,readMode);</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> }</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span> <span class="keywordtype">void</span> ImgUpdaterGdal::close(<span class="keywordtype">void</span>)</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span> {</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   ImgRasterGdal::close();</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span> }</div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/ImgUpdaterGdal_8h_source.html b/doc/html/ImgUpdaterGdal_8h_source.html
deleted file mode 100644
index 8154b48..0000000
--- a/doc/html/ImgUpdaterGdal_8h_source.html
+++ /dev/null
@@ -1,114 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/imageclasses/ImgUpdaterGdal.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_6d2fd95b0bd390617ad5a1eb4a537b4a.html">imageclasses</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">ImgUpdaterGdal.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">ImgUpdaterGdal.h: class to read raster files using GDAL API library</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2012 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#ifndef _IMGUPDATERGDAL_H_</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor"></span><span class="preprocessor">#define _IMGUPDATERGDAL_H_</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "ImgReaderGdal.h"</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "ImgWriterGdal.h"</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="comment">//--------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">class </span><a class="code" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a> : <span class="keyword">public</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>, <span class="keyword">public</span> <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> {</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>   <a class="code" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a>(<span class="keywordtype">void</span>);</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span>   <a class="code" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a>(<span class="keyword">const</span> std::string& filename, <span class="keyword">const</span> GDALAccess& readMode=GA_Update);</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>   ~<a class="code" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a>(<span class="keywordtype">void</span>);</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>   <span class="keywordtype">void</span> open(<span class="keyword">const</span> std::string& filename, <span class="keyword">const</span> GDALAccess& readMode=GA_Update);</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>   <span class="keywordtype">void</span> close(<span class="keywordtype">void</span>);</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> </div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> };</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="preprocessor">#endif // _IMGUPDATERGDAL_H_</span></div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-<div class="ttc" id="classImgWriterGdal_html"><div class="ttname"><a href="classImgWriterGdal.html">ImgWriterGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgWriterGdal_8h_source.html#l00033">ImgWriterGdal.h:33</a></div></div>
-<div class="ttc" id="classImgUpdaterGdal_html"><div class="ttname"><a href="classImgUpdaterGdal.html">ImgUpdaterGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgGdal_8h_source.html#l00027">ImgGdal.h:27</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/ImgWriterGdal_8cc_source.html b/doc/html/ImgWriterGdal_8cc_source.html
deleted file mode 100644
index ddf19fe..0000000
--- a/doc/html/ImgWriterGdal_8cc_source.html
+++ /dev/null
@@ -1,518 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/imageclasses/ImgWriterGdal.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_6d2fd95b0bd390617ad5a1eb4a537b4a.html">imageclasses</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">ImgWriterGdal.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">ImgWriterGdal.cc: class to write raster files using GDAL API library</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2012 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <iostream></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <iomanip></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <time.h></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <algorithm></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "ogr_spatialref.h"</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span> {</div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "gdal_alg.h"</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> }</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include "ImgWriterGdal.h"</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> </div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#ifdef HAVE_CONFIG_H</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="preprocessor"></span><span class="preprocessor">#include <config.h></span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="comment">//---------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> </div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="comment">// ImgWriterGdal::ImgWriterGdal(void)</span></div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="comment">//   : m_gds(NULL), m_magic_x(1), m_magic_y(1), m_isGeoRef(false), m_ncol(0), m_nrow(0), m_nband(0), m_interleave("BAND"), m_compression("LZW")</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="comment">// {}</span></div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> </div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> ImgWriterGdal::ImgWriterGdal(<span class="keywordtype">void</span>){};</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> </div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span> ImgWriterGdal::~ImgWriterGdal(<span class="keywordtype">void</span>)</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span> {</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   <span class="comment">// delete m_gds;</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span> <span class="comment">//   GDALDumpOpenDatasets(stderr);</span></div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span> <span class="comment">//   GDALDestroyDriverManager();//could still be be used by other objects</span></div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span> }</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span> </div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span> <span class="comment">//---------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span> <span class="keywordtype">void</span> ImgWriterGdal::open(<span class="keyword">const</span> std::string& filename, <span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& imgSrc, <span class="keyword">const</span> std::vector<std::string>& options)</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span> {</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>   <span class="comment">// m_isGeoRef=imgSrc.isGeoRef();</span></div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>   m_filename=filename;</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>   m_ncol=imgSrc.nrOfCol();</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>   m_nrow=imgSrc.nrOfRow();</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>   m_nband=imgSrc.nrOfBand();</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>   <span class="comment">// m_type=imgSrc.getDataType();</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>   m_options=options;</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>   <span class="comment">// m_interleave=imgSrc.getInterleave();</span></div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>   <span class="comment">// m_compression=imgSrc.getCompression();</span></div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>   <span class="comment">// imgSrc.getMagicPixel(m_magic_x,m_magic_y);</span></div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>   setCodec(imgSrc);</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span> }</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span> </div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span> <span class="comment">// void ImgWriterGdal::open(const std::string& filename, int ncol, int nrow, int nband, const GDALDataType& dataType, const std::string& imageType, const std::string& interleave, const std::string& compression, int magicX, int magicY)</span></div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span> <span class="comment">// {</span></div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span> <span class="comment">//   m_isGeoRef=false;</span></div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span> <span class="comment">//   m_filename = filename;</span></div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span> <span class="comment">//   m_ncol = ncol;</span></div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span> <span class="comment">//   m_nrow = nrow;</span></div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span> <span class="comment">//   m_nband = nband;</span></div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span> <span class="comment">//   m_type=dataType;</span></div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span> <span class="comment">//   m_interleave = interleave;</span></div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span> <span class="comment">//   m_compression=compression;</span></div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span> <span class="comment">//   m_magic_x=magicX;</span></div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span> <span class="comment">//   m_magic_y=magicY;</span></div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span> <span class="comment">//   setCodec(imageType);</span></div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span> <span class="comment">// }</span></div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span> </div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span> <span class="keywordtype">void</span> ImgWriterGdal::open(<span class="keyword">const</span> std::string& filename, <span class="keywordtype">int</span> ncol, <span class="keywordtype">int</span> nrow, <span class="keywordtype">int</span> nband, <span class="keyword">const</span> GDALDataType& dataType, <span class="keyword">const</span> std::string& imageType, <span class="keyword">const</span> std [...]
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span> {</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>   <span class="comment">// m_isGeoRef=false;</span></div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   m_filename = filename;</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>   m_ncol = ncol;</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>   m_nrow = nrow;</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   m_nband = nband;</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>   <span class="comment">// m_type=dataType;</span></div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   <span class="comment">// m_interleave = interleave;</span></div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>   <span class="comment">// m_compression=compression;</span></div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>   m_options=options;</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>   <span class="comment">// m_magic_x=magicX;</span></div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   <span class="comment">// m_magic_y=magicY;</span></div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>   setCodec(dataType,imageType);</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span> }</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span> </div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span> <span class="comment">//---------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span> <span class="keywordtype">void</span> ImgWriterGdal::close(<span class="keywordtype">void</span>)</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span> {</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>   ImgRasterGdal::close();</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>   <span class="keywordtype">char</span> **papszOptions=NULL;</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>   <span class="keywordflow">for</span>(std::vector<std::string>::const_iterator optionIt=m_options.begin();optionIt!=m_options.end();++optionIt)</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     papszOptions=CSLAddString(papszOptions,optionIt->c_str());</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>   <span class="keywordflow">if</span>(papszOptions)</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     CSLDestroy(papszOptions);</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span> }</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span> </div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span> <span class="comment">//---------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span> <span class="keywordtype">void</span> ImgWriterGdal::setCodec(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& imgSrc){</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   GDALAllRegister();</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   GDALDriver *poDriver;</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>   poDriver = GetGDALDriverManager()->GetDriverByName(imgSrc.getDriverDescription().c_str());</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>   <span class="keywordflow">if</span>( poDriver == NULL ){</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     std::string errorString=<span class="stringliteral">"FileOpenError"</span>;</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>   }</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>   <span class="keywordtype">char</span> **papszMetadata;</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>   papszMetadata = poDriver->GetMetadata();</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>   <span class="comment">//todo: try and catch if CREATE is not supported (as in PNG)</span></div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>   assert( CSLFetchBoolean( papszMetadata, GDAL_DCAP_CREATE, FALSE ));</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>   <span class="keywordtype">char</span> **papszOptions=NULL;</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>   <span class="keywordflow">for</span>(std::vector<std::string>::const_iterator optionIt=m_options.begin();optionIt!=m_options.end();++optionIt)</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>     papszOptions=CSLAddString(papszOptions,optionIt->c_str());</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>   <span class="comment">// char **papszOptions=NULL;</span></div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>   <span class="comment">// std::ostringstream compressList;</span></div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>   <span class="comment">// compressList << "COMPRESS=" << m_compression;</span></div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>   <span class="comment">// papszOptions = CSLAddString(papszOptions,(compressList.str()).c_str());</span></div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>   <span class="comment">// std::ostringstream interleaveList;</span></div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>   <span class="comment">// interleaveList << "INTERLEAVE=" << m_interleave;</span></div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>   <span class="comment">// papszOptions = CSLAddString(papszOptions,(interleaveList.str()).c_str());</span></div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>   m_gds=poDriver->Create(m_filename.c_str(),m_ncol,m_nrow,m_nband,imgSrc.getDataType(),papszOptions);</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>   <span class="comment">// if(imgSrc.isGeoRef()){</span></div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>     setProjection(imgSrc.getProjection());</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>     <span class="keywordtype">double</span> gt[6];</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>     imgSrc.getGeoTransform(gt);</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>     setGeoTransform(gt);</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>   <span class="comment">// }</span></div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>   m_gds->SetMetadata(imgSrc.getMetadata() ); </div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>   m_gds->SetMetadataItem( <span class="stringliteral">"TIFFTAG_DOCUMENTNAME"</span>, m_filename.c_str());</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>   std::string versionString=<span class="stringliteral">"pktools "</span>;</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>   versionString+=VERSION;</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>   versionString+=<span class="stringliteral">" by Pieter Kempeneers"</span>;</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>   m_gds->SetMetadataItem( <span class="stringliteral">"TIFFTAG_SOFTWARE"</span>, versionString.c_str());</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>   time_t rawtime;</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>   time ( &rawtime );</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span> </div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>   time_t tim=time(NULL);</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>   tm *now=localtime(&tim);</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>   std::ostringstream datestream;</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>   <span class="comment">//date std::string must be 20 characters long...</span></div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>   datestream << now->tm_year+1900;</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>   <span class="keywordflow">if</span>(now->tm_mon+1<10)</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>     datestream << <span class="stringliteral">":0"</span> << now->tm_mon+1;</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>     datestream << <span class="stringliteral">":"</span> << now->tm_mon+1;</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>   <span class="keywordflow">if</span>(now->tm_mday<10)</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>     datestream << <span class="stringliteral">":0"</span> << now->tm_mday;</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>     datestream << <span class="stringliteral">":"</span> << now->tm_mday;</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   <span class="keywordflow">if</span>(now->tm_hour<10)</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>     datestream << <span class="stringliteral">" 0"</span> << now->tm_hour;</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>     datestream << <span class="stringliteral">" "</span> << now->tm_hour;</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>   <span class="keywordflow">if</span>(now->tm_min<10)</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>     datestream << <span class="stringliteral">":0"</span> << now->tm_min;</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>     datestream << <span class="stringliteral">":"</span> << now->tm_min;</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>   <span class="keywordflow">if</span>(now->tm_sec<10)</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>     datestream << <span class="stringliteral">":0"</span> << now->tm_sec;</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>     datestream << <span class="stringliteral">":"</span> << now->tm_sec;</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>   m_gds->SetMetadataItem( <span class="stringliteral">"TIFFTAG_DATETIME"</span>, datestream.str().c_str());</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span> <span class="comment">//   list<std::string> lmeta;</span></div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span> <span class="comment">//   imgReader.getMetadata(lmeta);</span></div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span> <span class="comment">//   list<std::string>::const_iterator lit=lmeta.begin();</span></div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span> <span class="comment">//   while(lit!=lmeta.end()){</span></div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span> <span class="comment">//     cout << *lit << endl;</span></div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span> <span class="comment">//     ++lit;</span></div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span> <span class="comment">//   }</span></div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>   <span class="comment">// m_gds->SetMetadataItem( "INTERLEAVE", m_interleave.c_str(), "IMAGE_STRUCTURE" );</span></div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>   <span class="comment">// m_gds->SetMetadataItem( "COMPRESS", m_compression.c_str(), "IMAGE_STRUCTURE" );</span></div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>   <span class="keywordflow">if</span>(imgSrc.getColorTable()!=NULL)</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>     setColorTable(imgSrc.getColorTable());</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span> }</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span> </div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span> <span class="keywordtype">void</span> ImgWriterGdal::setCodec(<span class="keyword">const</span> GDALDataType& dataType, <span class="keyword">const</span> std::string& imageType)</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span> {</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>   GDALAllRegister();</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>   GDALDriver *poDriver;</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>   poDriver = GetGDALDriverManager()->GetDriverByName(imageType.c_str());</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>   <span class="keywordflow">if</span>( poDriver == NULL ){</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>     std::ostringstream s;</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>     s << <span class="stringliteral">"FileOpenError ("</span> << imageType << <span class="stringliteral">")"</span>;</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>   }</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>   <span class="keywordtype">char</span> **papszMetadata;</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>   papszMetadata = poDriver->GetMetadata();</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>   <span class="comment">//todo: try and catch if CREATE is not supported (as in PNG)</span></div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>   assert( CSLFetchBoolean( papszMetadata, GDAL_DCAP_CREATE, FALSE ));</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>   <span class="keywordtype">char</span> **papszOptions=NULL;</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>   <span class="keywordflow">for</span>(std::vector<std::string>::const_iterator optionIt=m_options.begin();optionIt!=m_options.end();++optionIt)</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>     papszOptions=CSLAddString(papszOptions,optionIt->c_str());</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>   <span class="comment">// std::ostringstream compressList;</span></div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>   <span class="comment">// compressList << "COMPRESS=" << m_compression;</span></div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>   <span class="comment">// papszOptions = CSLAddString(papszOptions,(compressList.str()).c_str());</span></div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>   <span class="comment">// std::ostringstream interleaveList;</span></div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>   <span class="comment">// interleaveList << "INTERLEAVE=" << m_interleave;</span></div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>   <span class="comment">// papszOptions = CSLAddString(papszOptions,(interleaveList.str()).c_str());</span></div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>   m_gds=poDriver->Create(m_filename.c_str(),m_ncol,m_nrow,m_nband,dataType,papszOptions);</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span> </div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>   <span class="comment">// m_gds->SetMetadataItem( "INTERLEAVE", m_interleave.c_str(), "IMAGE_STRUCTURE" );</span></div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>   <span class="comment">// m_gds->SetMetadataItem( "COMPRESSION", m_compression.c_str(), "IMAGE_STRUCTURE" );</span></div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>   m_gds->SetMetadataItem( <span class="stringliteral">"TIFFTAG_DOCUMENTNAME"</span>, m_filename.c_str());</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>   std::string versionString=<span class="stringliteral">"pktools "</span>;</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>   versionString+=VERSION;</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>   versionString+=<span class="stringliteral">" by Pieter Kempeneers"</span>;</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>   m_gds->SetMetadataItem( <span class="stringliteral">"TIFFTAG_SOFTWARE"</span>, versionString.c_str());</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>   time_t rawtime;</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>   time ( &rawtime );</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span> </div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>   time_t tim=time(NULL);</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>   tm *now=localtime(&tim);</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>   std::ostringstream datestream;</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>   <span class="comment">//date std::string must be 20 characters long...</span></div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>   datestream << now->tm_year+1900;</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>   <span class="keywordflow">if</span>(now->tm_mon+1<10)</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>     datestream << <span class="stringliteral">":0"</span> << now->tm_mon+1;</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>     datestream << <span class="stringliteral">":"</span> << now->tm_mon+1;</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>   <span class="keywordflow">if</span>(now->tm_mday<10)</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>     datestream << <span class="stringliteral">":0"</span> << now->tm_mday;</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>     datestream << <span class="stringliteral">":"</span> << now->tm_mday;</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>   <span class="keywordflow">if</span>(now->tm_hour<10)</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>     datestream << <span class="stringliteral">" 0"</span> << now->tm_hour;</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>     datestream << <span class="stringliteral">" "</span> << now->tm_hour;</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>   <span class="keywordflow">if</span>(now->tm_min<10)</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>     datestream << <span class="stringliteral">":0"</span> << now->tm_min;</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>     datestream << <span class="stringliteral">":"</span> << now->tm_min;</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>   <span class="keywordflow">if</span>(now->tm_sec<10)</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>     datestream << <span class="stringliteral">":0"</span> << now->tm_sec;</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>     datestream << <span class="stringliteral">":"</span> << now->tm_sec;</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>   m_gds->SetMetadataItem( <span class="stringliteral">"TIFFTAG_DATETIME"</span>, datestream.str().c_str());</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span> <span class="comment">//   m_gds->SetMetadataItem( "TIFFTAG_DATETIME", ctime(&rawtime));</span></div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span> }</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span> </div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span> <span class="keywordtype">void</span> ImgWriterGdal::setMetadata(<span class="keywordtype">char</span>** metadata)</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span> {</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>   assert(m_gds);</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>   m_gds->SetMetadata(metadata); </div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span> }</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span> </div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span> <span class="comment">//---------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span> <span class="keywordtype">void</span> ImgWriterGdal::setGeoTransform(<span class="keywordtype">double</span>* gt){</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>   <span class="comment">// m_isGeoRef=true;</span></div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>   m_gt[0]=gt[0];</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>   m_gt[1]=gt[1];</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>   m_gt[2]=gt[2];</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>   m_gt[3]=gt[3];</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>   m_gt[4]=gt[4];</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>   m_gt[5]=gt[5];</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>   <span class="keywordflow">if</span>(m_gds)</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>     m_gds->SetGeoTransform(m_gt);</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span> }</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span> </div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span> <span class="comment">// void ImgWriterGdal::setGeoTransform(double ulx, double uly, double deltaX, double deltaY, double rot1, double rot2)</span></div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span> <span class="comment">// {</span></div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span> <span class="comment">//   m_isGeoRef=true;</span></div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span> <span class="comment">//   m_ulx=ulx;</span></div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span> <span class="comment">//   m_uly=uly;</span></div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span> <span class="comment">//   m_delta_x=deltaX;</span></div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span> <span class="comment">//   m_delta_y=deltaY;</span></div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span> <span class="comment">//   double adfGeoTransform[6];// { 444720, 30, 0, 3751320, 0, -30 };</span></div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span> <span class="comment">//   adfGeoTransform[0]=ulx;</span></div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span> <span class="comment">//   adfGeoTransform[1]=deltaX;</span></div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span> <span class="comment">//   adfGeoTransform[2]=rot1;</span></div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span> <span class="comment">//   adfGeoTransform[3]=uly;</span></div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span> <span class="comment">//   adfGeoTransform[4]=rot2;</span></div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span> <span class="comment">//   adfGeoTransform[5]=-deltaY;//convention of GDAL!</span></div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span> <span class="comment">//   if(m_gds)</span></div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span> <span class="comment">//     m_gds->SetGeoTransform(adfGeoTransform);</span></div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span> <span class="comment">// }</span></div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span> </div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span> <span class="keywordtype">void</span> ImgWriterGdal::copyGeoTransform(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& imgSrc)</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span> {</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>   setProjection(imgSrc.getProjection());</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>   <span class="keywordtype">double</span> gt[6];</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>   imgSrc.getGeoTransform(gt);</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>   setGeoTransform(gt);</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>   <span class="comment">// imgSrc.getGeoTransform(ulx,uly,deltaX,deltaY,rot1,rot2);</span></div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>   <span class="comment">// setGeoTransform(ulx,uly,deltaX,deltaY,rot1,rot2);</span></div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span> }</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span> </div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span> std::string ImgWriterGdal::setProjectionProj4(<span class="keyword">const</span> std::string& projection)</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span> {</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>   <span class="comment">// if(!m_isGeoRef)</span></div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>   <span class="comment">//   m_isGeoRef=true;</span></div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span> </div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>   OGRSpatialReference theRef;</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>   theRef.SetFromUserInput(projection.c_str());</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>   <span class="keywordtype">char</span> *wktString;</div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>   theRef.exportToWkt(&wktString);</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>   assert(m_gds);</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>   m_gds->SetProjection(wktString);</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>   <span class="keywordflow">return</span>(wktString);</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span> </div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>     <span class="comment">// OGRSpatialReferenceH hSRS;  </span></div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>     <span class="comment">// char *pszResult = NULL;  </span></div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>   </div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>     <span class="comment">// CPLErrorReset();  </span></div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>       </div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>     <span class="comment">// hSRS = OSRNewSpatialReference( NULL );  </span></div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>     <span class="comment">// if( OSRSetFromUserInput( hSRS, projection.c_str() ) == OGRERR_NONE )  </span></div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>     <span class="comment">//     OSRExportToWkt( hSRS, &pszResult );  </span></div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>     <span class="comment">// else  </span></div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>     <span class="comment">// {  </span></div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>     <span class="comment">//     std::ostringstream s;</span></div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>     <span class="comment">//     s << "Error in set projection " << projection;</span></div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>     <span class="comment">//     throw(s.str());</span></div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>     <span class="comment">// }  </span></div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>     <span class="comment">// std::string theProjection=pszResult;</span></div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>     <span class="comment">// assert(m_gds);</span></div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>     <span class="comment">// m_gds->SetProjection(theProjection.c_str());</span></div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>     <span class="comment">// OSRDestroySpatialReference( hSRS );  </span></div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>   </div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>     <span class="comment">// return theProjection;  </span></div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span> }</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span> </div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span> <span class="keywordtype">void</span> ImgWriterGdal::setProjection(<span class="keyword">const</span> std::string& projection)</div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span> {</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>   <span class="comment">// if(!m_isGeoRef)</span></div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>   <span class="comment">//   m_isGeoRef=true;</span></div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>   OGRSpatialReference oSRS;</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>   <span class="keywordtype">char</span> *pszSRS_WKT = NULL;</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>   assert(m_gds);</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>   m_gds->SetProjection(projection.c_str());</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>   CPLFree(pszSRS_WKT);</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span> }</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span> </div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span> <span class="comment">//default projection: ETSR-LAEA</span></div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span> <span class="comment">// std::string ImgWriterGdal::setProjection(void)</span></div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span> <span class="comment">// {</span></div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span> <span class="comment">//   std::string theProjection;</span></div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span> <span class="comment">//   OGRSpatialReference oSRS;</span></div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span> <span class="comment">//   char *pszSRS_WKT = NULL;</span></div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span> <span class="comment">//   //// oSRS.importFromEPSG(3035);</span></div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span> <span class="comment">//   oSRS.SetGeogCS("ETRS89","European_Terrestrial_Reference_System_1989","GRS 1980",6378137,298.2572221010042,"Greenwich",0,"degree",0.0174532925199433);</span></div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span> <span class="comment">//   // cout << setprecision(16) << "major axis: " << oSRS.GetSemiMajor(NULL) << endl;//notice that major axis can be set to a different value than the default to the well known standard corresponding to the name (European_Terrestrial_Reference_System_1989), but that new value, while recognized by GetSemiMajor, will not be written in the geotiff tag!</span></div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span> <span class="comment">//   oSRS.SetProjCS( "ETRS89 / ETRS-LAEA" );</span></div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span> <span class="comment">//   oSRS.SetLAEA(52,10,4321000,3210000);</span></div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span> <span class="comment">//   oSRS.exportToWkt( &pszSRS_WKT );</span></div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span> <span class="comment">//   theProjection=pszSRS_WKT;</span></div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span> <span class="comment">//   CPLFree( pszSRS_WKT );</span></div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span> <span class="comment">//   assert(m_gds);</span></div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span> <span class="comment">//   m_gds->SetProjection(theProjection.c_str());</span></div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span> <span class="comment">//   return(theProjection);</span></div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span> <span class="comment">// }</span></div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span> </div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span> <span class="comment">//filename is ascii file containing 5 columns: index R G B ALFA (0:transparent, 255:solid)</span></div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span> <span class="keywordtype">void</span> ImgWriterGdal::setColorTable(<span class="keyword">const</span> std::string& filename, <span class="keywordtype">int</span> band)</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span> {</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>   <span class="comment">//todo: fool proof table in file (no checking currently done...)</span></div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>   std::ifstream ftable(filename.c_str(),std::ios::in);</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>   std::string line;</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span> <span class="comment">//   poCT=new GDALColorTable();</span></div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>   GDALColorTable colorTable;</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>   <span class="keywordtype">short</span> nline=0;</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>   <span class="keywordflow">while</span>(getline(ftable,line)){</div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>     ++nline;</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>     std::istringstream ist(line);</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>     GDALColorEntry sEntry;</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>     <span class="keywordtype">short</span> id;</div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>     ist >> <span class="keywordtype">id</span> >> sEntry.c1 >> sEntry.c2 >> sEntry.c3 >> sEntry.c4;</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span> <span class="comment">//     poCT->SetColorEntry(id,&sEntry);</span></div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>     colorTable.SetColorEntry(<span class="keywordtype">id</span>,&sEntry);</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>   }</div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>   <span class="comment">// assert(nline==colorTable.GetColorEntryCount());</span></div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span> <span class="comment">//   (m_gds->GetRasterBand(band+1))->SetColorTable(poCT);</span></div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>   (m_gds->GetRasterBand(band+1))->SetColorTable(&colorTable);</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span> }</div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span> </div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span> <span class="keywordtype">void</span> ImgWriterGdal::setColorTable(GDALColorTable* colorTable, <span class="keywordtype">int</span> band)</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span> {</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>   (m_gds->GetRasterBand(band+1))->SetColorTable(colorTable);</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span> }</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span> </div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span> <span class="comment">//write an entire image from memory to file</span></div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span> <span class="keywordtype">bool</span> ImgWriterGdal::writeData(<span class="keywordtype">void</span>* pdata, <span class="keyword">const</span> GDALDataType& dataType, <span class="keywordtype">int</span> band)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>   <span class="comment">//fetch raster band</span></div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>   GDALRasterBand  *poBand;</div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>   <span class="keywordflow">if</span>(band>=nrOfBand()+1){</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>     std::ostringstream s;</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>     s << <span class="stringliteral">"band ("</span> << band << <span class="stringliteral">") exceeds nrOfBand ("</span> << nrOfBand() << <span class="stringliteral">")"</span>;</div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>   }</div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>   poBand = m_gds->GetRasterBand(band+1);<span class="comment">//GDAL uses 1 based index</span></div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>   poBand->RasterIO(GF_Write,0,0,nrOfCol(),nrOfRow(),pdata,nrOfCol(),nrOfRow(),dataType,0,0);</div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span> }  </div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span> </div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span> <span class="keywordtype">void</span> ImgWriterGdal::rasterizeOgr(<a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a>& ogrReader, <span class="keyword">const</span> std::vector<double>& burnValues, <span class="keyword">const</span> std::vector<std::string>& layernames ){</div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>   std::vector<int> bands;</div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>   std::vector<double> burnBands;<span class="comment">//burn values for all bands in a single layer</span></div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>   std::vector<double> burnLayers;<span class="comment">//burn values for all bands and all layers</span></div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span>   <span class="keywordflow">if</span>(burnValues.empty()){</div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>     std::string errorString=<span class="stringliteral">"Error: burn values not provided"</span>;</div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>   }</div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>   burnBands=burnValues;</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>   <span class="keywordflow">while</span>(burnBands.size()<nrOfBand())</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>     burnBands.push_back(burnValues[0]);</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nrOfBand();++iband)</div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>     bands.push_back(iband+1);</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>   std::vector<OGRLayerH> layers;</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>   <span class="keywordtype">int</span> nlayer=0;</div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ilayer=0;ilayer<ogrReader.getLayerCount();++ilayer){</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span>     std::string currentLayername=ogrReader.getLayer(ilayer)->GetName();</div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>     <span class="keywordflow">if</span>(layernames.size())</div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>       <span class="keywordflow">if</span>(find(layernames.begin(),layernames.end(),currentLayername)==layernames.end())</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>     std::cout << <span class="stringliteral">"processing layer "</span> << currentLayername << std::endl;</div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span>     layers.push_back((OGRLayerH)ogrReader.getLayer(ilayer));</div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span>     ++nlayer;</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nrOfBand();++iband)</div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span>       burnLayers.insert(burnLayers.end(),burnBands.begin(),burnBands.end());</div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span>   }</div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span>   <span class="keywordtype">void</span> *pTransformArg;</div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span>   <span class="keywordtype">char</span> **papszOptions;</div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span>   <span class="keywordtype">double</span> dfComplete=0.0;</div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>   pfnProgress(dfComplete,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>   <span class="keywordflow">if</span>(GDALRasterizeLayers( (GDALDatasetH)m_gds,nrOfBand(),&(bands[0]),layers.size(),&(layers[0]),NULL,pTransformArg,&(burnLayers[0]),papszOptions,pfnProgress,pProgressArg)!=CE_None){</div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span>     std::cerr << CPLGetLastErrorMsg() << std::endl;</div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span>     exit(1);</div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span>   }</div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span>     dfComplete=1.0;</div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span>     pfnProgress(dfComplete,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span>   }</div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span> }</div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-<div class="ttc" id="classImgReaderOgr_html"><div class="ttname"><a href="classImgReaderOgr.html">ImgReaderOgr</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderOgr_8h_source.html#l00035">ImgReaderOgr.h:35</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/ImgWriterGdal_8h_source.html b/doc/html/ImgWriterGdal_8h_source.html
deleted file mode 100644
index 1c05e72..0000000
--- a/doc/html/ImgWriterGdal_8h_source.html
+++ /dev/null
@@ -1,283 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/imageclasses/ImgWriterGdal.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_6d2fd95b0bd390617ad5a1eb4a537b4a.html">imageclasses</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">ImgWriterGdal.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">ImgWriterGdal.h: class to write raster files using GDAL API library</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2012 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">n</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#ifndef _IMGWRITERGDAL_H_</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor"></span><span class="preprocessor">#define _IMGWRITERGDAL_H_</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <assert.h></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <fstream></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include <string></span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include <sstream></span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "gdal_priv.h"</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include "ImgRasterGdal.h"</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include "ImgReaderGdal.h"</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include "ImgReaderOgr.h"</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> </div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="comment">//--------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="classImgWriterGdal.html">   33</a></span> <span class="keyword">class </span><a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> : <span class="keyword">public</span> <span class="keyword">virtual</span> <a class="code" href="classImgRasterGdal.html">ImgRasterGdal</a></div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> {</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>(<span class="keywordtype">void</span>);</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>   ~<a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a>(<span class="keywordtype">void</span>);</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>   <span class="keywordtype">void</span> open(<span class="keyword">const</span> std::string& filename);</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>   <span class="keywordtype">void</span> open(<span class="keyword">const</span> std::string& filename, <span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& imgSrc, <span class="keyword">const</span> std::vector<std::string>& options=std::vector<std::string>());</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   <span class="keywordtype">void</span> open(<span class="keyword">const</span> std::string& filename, <span class="keywordtype">int</span> ncol, <span class="keywordtype">int</span> nrow, <span class="keywordtype">int</span> nband, <span class="keyword">const</span> GDALDataType& dataType, <span class="keyword">const</span> std::string& imageType, <span class="keyword">const</span> std::vector<s [...]
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>   <span class="keywordtype">void</span> close(<span class="keywordtype">void</span>);</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span> </div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   <span class="keywordtype">void</span> copyGeoTransform(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& imgSrc);</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   <span class="keywordtype">void</span> setProjection(<span class="keyword">const</span> std::string& projection);</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   std::string setProjectionProj4(<span class="keyword">const</span> std::string& projection);</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span> </div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   <span class="keywordtype">void</span> setImageDescription(<span class="keyword">const</span> std::string& imageDescription){m_gds->SetMetadataItem( <span class="stringliteral">"TIFFTAG_IMAGEDESCRIPTION"</span>,imageDescription.c_str());};</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>   <span class="keywordtype">void</span> setGeoTransform(<span class="keywordtype">double</span>* gt);</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span> </div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>   <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keywordtype">bool</span> writeData(T& value, <span class="keyword">const</span> GDALDataType& dataType, <span class="keywordtype">int</span> col, <span class="keywordtype">int</span> row, <span class="keywordtype">int</span> band=0) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>   <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keywordtype">bool</span> writeData(std::vector<T>& buffer, <span class="keyword">const</span> GDALDataType& dataType , <span class="keywordtype">int</span> minCol, <span class="keywordtype">int</span> maxCol, <span class="keywordtype">int</span> row, <span class="keywordtype">int</span> band=0) <spa [...]
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>   <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keywordtype">bool</span> writeData(std::vector<T>& buffer, <span class="keyword">const</span> GDALDataType& dataType, <span class="keywordtype">int</span> row, <span class="keywordtype">int</span> band=0) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>   <span class="keywordtype">bool</span> writeData(<span class="keywordtype">void</span>* pdata, <span class="keyword">const</span> GDALDataType& dataType, <span class="keywordtype">int</span> band=0) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>   <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keywordtype">bool</span> writeDataBlock(<a class="code" href="classVector2d.html">Vector2d<T></a>& buffer, <span class="keyword">const</span> GDALDataType& dataType , <span class="keywordtype">int</span> minCol, <span class="keywordtype">int</span> maxCol, <span class="keywordtype">int</span> minRow [...]
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>   <span class="comment">// std::string getInterleave(){return m_interleave;};</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>   <span class="comment">// std::string getCompression(){return m_compression;};</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>   <span class="keywordtype">void</span> setColorTable(<span class="keyword">const</span> std::string& filename, <span class="keywordtype">int</span> band=0);</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>   <span class="keywordtype">void</span> setColorTable(GDALColorTable* colorTable, <span class="keywordtype">int</span> band=0);</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>   <span class="keywordtype">void</span> setMetadata(<span class="keywordtype">char</span>** metadata);</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>   <span class="keywordtype">void</span> rasterizeOgr(<a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a>& ogrReader, <span class="keyword">const</span> std::vector<double>& burnValues=std::vector<double>(), <span class="keyword">const</span> std::vector<std::string>& layernames=std::vector<std::string>());</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span> </div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span> <span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>   <span class="keywordtype">void</span> setCodec(<span class="keyword">const</span> GDALDataType& dataType, <span class="keyword">const</span> std::string& imageType);</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>   <span class="keywordtype">void</span> setCodec(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& ImgSrc);</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span> </div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>   <span class="comment">/* double m_ulx; */</span></div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>   <span class="comment">/* double m_uly; */</span></div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>   <span class="comment">/* double m_delta_x; */</span></div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>   <span class="comment">/* double m_delta_y; */</span></div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>   <span class="comment">/* bool m_isGeoRef; */</span></div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>   <span class="comment">// std::string m_interleave;</span></div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>   <span class="comment">// std::string m_compression;</span></div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>   std::vector<std::string> m_options;</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span> };</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span> </div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keywordtype">bool</span> ImgWriterGdal::writeData(T& value, <span class="keyword">const</span> GDALDataType& dataType, <span class="keywordtype">int</span> col, <span class="keywordtype">int</span> row, <span class="keywordtype">int</span> band)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>   <span class="comment">//fetch raster band</span></div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>   GDALRasterBand  *poBand;</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>   <span class="keywordflow">if</span>(band>=nrOfBand()+1){</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>     std::ostringstream s;</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     s << <span class="stringliteral">"band ("</span> << band << <span class="stringliteral">") exceeds nrOfBand ("</span> << nrOfBand() << <span class="stringliteral">")"</span>;</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>   }</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>   poBand = m_gds->GetRasterBand(band+1);<span class="comment">//GDAL uses 1 based index</span></div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   <span class="keywordflow">if</span>(col>=nrOfCol()){</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>     std::ostringstream s;</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>     s << <span class="stringliteral">"col ("</span> << col << <span class="stringliteral">") exceeds nrOfCol ("</span> << nrOfCol() << <span class="stringliteral">")"</span>;</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>   }</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>   <span class="keywordflow">if</span>(col<0){</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     std::ostringstream s;</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>     s << <span class="stringliteral">"col ("</span> << col << <span class="stringliteral">") is negative"</span>;</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   }</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>   <span class="keywordflow">if</span>(row>=nrOfRow()){</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     std::ostringstream s;</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     s << <span class="stringliteral">"row ("</span> << row << <span class="stringliteral">") exceeds nrOfRow ("</span> << nrOfRow() << <span class="stringliteral">")"</span>;</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>   }</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>   <span class="keywordflow">if</span>(row<0){</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     std::ostringstream s;</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     s << <span class="stringliteral">"row ("</span> << row << <span class="stringliteral">") is negative"</span>;</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>   }</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>   poBand->RasterIO(GF_Write,col,row,1,1,&value,1,1,dataType,0,0);</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span> }</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span> </div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keywordtype">bool</span> ImgWriterGdal::writeData(std::vector<T>& buffer, <span class="keyword">const</span> GDALDataType& dataType, <span class="keywordtype">int</span> minCol, <span class="keywordtype">int</span> maxCol, <span class="keywordtype">int</span> row, <span class="keywordtype">int</span>  [...]
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>   <span class="comment">//fetch raster band</span></div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>   GDALRasterBand  *poBand;</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   <span class="keywordflow">if</span>(band>=nrOfBand()+1){</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     std::ostringstream s;</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     s << <span class="stringliteral">"band ("</span> << band << <span class="stringliteral">") exceeds nrOfBand ("</span> << nrOfBand() << <span class="stringliteral">")"</span>;</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>   }</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>   poBand = m_gds->GetRasterBand(band+1);<span class="comment">//GDAL uses 1 based index</span></div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>   <span class="keywordflow">if</span>(buffer.size()!=maxCol-minCol+1){</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>     std::string errorstring=<span class="stringliteral">"invalid buffer size"</span>;</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>     <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>   }</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>   <span class="keywordflow">if</span>(minCol>=nrOfCol()){</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>     std::ostringstream s;</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     s << <span class="stringliteral">"minCol ("</span> << minCol << <span class="stringliteral">") exceeds nrOfCol ("</span> << nrOfCol() << <span class="stringliteral">")"</span>;</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>   }</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>   <span class="keywordflow">if</span>(minCol<0){</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>     std::ostringstream s;</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>     s << <span class="stringliteral">"mincol ("</span> << minCol << <span class="stringliteral">") is negative"</span>;</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>   }</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>   <span class="keywordflow">if</span>(maxCol>=nrOfCol()){</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>     std::ostringstream s;</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>     s << <span class="stringliteral">"maxCol ("</span> << maxCol << <span class="stringliteral">") exceeds nrOfCol ("</span> << nrOfCol() << <span class="stringliteral">")"</span>;</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>   }</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>   <span class="keywordflow">if</span>(maxCol<minCol){</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>     std::ostringstream s;</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>     s << <span class="stringliteral">"maxCol ("</span> << maxCol << <span class="stringliteral">") is less than minCol ("</span> << minCol << <span class="stringliteral">")"</span>;</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>   }</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span> </div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>   <span class="keywordflow">if</span>(row>=nrOfRow()){</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>     std::ostringstream s;</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>     s << <span class="stringliteral">"row ("</span> << row << <span class="stringliteral">") exceeds nrOfRow ("</span> << nrOfRow() << <span class="stringliteral">")"</span>;</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>   }</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>   <span class="keywordflow">if</span>(row<0){</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>     std::ostringstream s;</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>     s << <span class="stringliteral">"row ("</span> << row << <span class="stringliteral">") is negative"</span>;</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>   }</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>   poBand->RasterIO(GF_Write,minCol,row,buffer.size(),1,&(buffer[0]),buffer.size(),1,dataType,0,0);</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span> }</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span> </div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keywordtype">bool</span> ImgWriterGdal::writeData(std::vector<T>& buffer, <span class="keyword">const</span> GDALDataType& dataType, <span class="keywordtype">int</span> row, <span class="keywordtype">int</span> band)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>   <span class="comment">//fetch raster band</span></div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>   GDALRasterBand  *poBand;</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>   <span class="keywordflow">if</span>(band>=nrOfBand()+1){</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>     std::ostringstream s;</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>     s << <span class="stringliteral">"band ("</span> << band << <span class="stringliteral">") exceeds nrOfBand ("</span> << nrOfBand() << <span class="stringliteral">")"</span>;</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>   }</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>   poBand = m_gds->GetRasterBand(band+1);<span class="comment">//GDAL uses 1 based index</span></div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>   <span class="keywordflow">if</span>(buffer.size()!=nrOfCol()){</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>     std::string errorstring=<span class="stringliteral">"invalid buffer size"</span>;</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>     <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>   }</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>   <span class="keywordflow">if</span>(row>=nrOfRow()){</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>     std::ostringstream s;</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>     s << <span class="stringliteral">"row ("</span> << row << <span class="stringliteral">") exceeds nrOfRow ("</span> << nrOfRow() << <span class="stringliteral">")"</span>;</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>   }</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>   poBand->RasterIO(GF_Write,0,row,buffer.size(),1,&(buffer[0]),buffer.size(),1,dataType,0,0);</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span> }</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span> </div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keywordtype">bool</span> ImgWriterGdal::writeDataBlock(<a class="code" href="classVector2d.html">Vector2d<T></a>& buffer, <span class="keyword">const</span> GDALDataType& dataType , <span class="keywordtype">int</span> minCol, <span class="keywordtype">int</span> maxCol, <span class="keywordtype">int< [...]
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>   <span class="comment">//fetch raster band</span></div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>   GDALRasterBand  *poBand;</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>   <span class="keywordflow">if</span>(band>=nrOfBand()+1){</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>     std::ostringstream s;</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>     s << <span class="stringliteral">"band ("</span> << band << <span class="stringliteral">") exceeds nrOfBand ("</span> << nrOfBand() << <span class="stringliteral">")"</span>;</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>   }</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>   poBand = m_gds->GetRasterBand(band+1);<span class="comment">//GDAL uses 1 based index</span></div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>   assert(buffer.size()==maxRow-minRow+1);</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=minRow;irow<=maxRow;++irow)</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>     writeData(buffer[irow-minRow], dataType, minCol, maxCol, irow, band);</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span> }</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span> </div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span> <span class="preprocessor">#endif // _IMGWRITERGDAL_H_</span></div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span> </div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span> <span class="comment">//     adfGeoTransform[0] /* top left x */</span></div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span> <span class="comment">//     adfGeoTransform[1] /* w-e pixel resolution */</span></div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span> <span class="comment">//     adfGeoTransform[2] /* rotation, 0 if image is "north up" */</span></div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span> <span class="comment">//     adfGeoTransform[3] /* top left y */</span></div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span> <span class="comment">//     adfGeoTransform[4] /* rotation, 0 if image is "north up" */</span></div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span> <span class="comment">//     adfGeoTransform[5] /* n-s pixel resolution */</span></div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-<div class="ttc" id="classImgWriterGdal_html"><div class="ttname"><a href="classImgWriterGdal.html">ImgWriterGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgWriterGdal_8h_source.html#l00033">ImgWriterGdal.h:33</a></div></div>
-<div class="ttc" id="classVector2d_html"><div class="ttname"><a href="classVector2d.html">Vector2d</a></div><div class="ttdef"><b>Definition:</b> <a href="Vector2d_8h_source.html#l00031">Vector2d.h:31</a></div></div>
-<div class="ttc" id="classImgReaderOgr_html"><div class="ttname"><a href="classImgReaderOgr.html">ImgReaderOgr</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderOgr_8h_source.html#l00035">ImgReaderOgr.h:35</a></div></div>
-<div class="ttc" id="classImgRasterGdal_html"><div class="ttname"><a href="classImgRasterGdal.html">ImgRasterGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgRasterGdal_8h_source.html#l00035">ImgRasterGdal.h:35</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/ImgWriterOgr_8cc_source.html b/doc/html/ImgWriterOgr_8cc_source.html
deleted file mode 100644
index c96b3e4..0000000
--- a/doc/html/ImgWriterOgr_8cc_source.html
+++ /dev/null
@@ -1,790 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/imageclasses/ImgWriterOgr.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_6d2fd95b0bd390617ad5a1eb4a537b4a.html">imageclasses</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">ImgWriterOgr.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">ImgWriterOgr.cc: class to write vector files using OGR API library</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2012 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <iostream></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <fstream></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <sstream></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "ImgReaderOgr.h"</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "ImgWriterOgr.h"</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "ImgReaderGdal.h"</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "cpl_string.h"</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="comment">//---------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> ImgWriterOgr::ImgWriterOgr(<span class="keywordtype">void</span>)</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> {}</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> </div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> ImgWriterOgr::~ImgWriterOgr(<span class="keywordtype">void</span>)</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> {</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> }</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> </div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> ImgWriterOgr::ImgWriterOgr(<span class="keyword">const</span> std::string& filename, <span class="keyword">const</span> std::string& imageType)</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> {</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>   open(filename,imageType);</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> }</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> </div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> ImgWriterOgr::ImgWriterOgr(<span class="keyword">const</span> std::string& filename, <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a>& imgReaderOgr)</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> {</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   m_filename=filename;</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   setCodec(imgReaderOgr.getDriver());</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   <span class="keywordtype">int</span> nlayer=imgReaderOgr.getDataSource()->GetLayerCount();</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ilayer=0;ilayer<nlayer;++ilayer){</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     std::string layername = imgReaderOgr.getLayer(ilayer)->GetName();</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     createLayer(layername,imgReaderOgr.getProjection(),imgReaderOgr.getGeometryType(),NULL);</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     copyFields(imgReaderOgr,ilayer,ilayer);</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>   }</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span> }</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span> </div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span> ImgWriterOgr::ImgWriterOgr(<span class="keyword">const</span> std::string& filename, <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a>& imgReaderOgr, <span class="keywordtype">bool</span> copyData)</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span> {</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>   CPLErrorReset();</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>   m_filename=filename;</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>   setCodec(imgReaderOgr.getDriver());</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>   <span class="keywordtype">int</span> nlayer=imgReaderOgr.getDataSource()->GetLayerCount();</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ilayer=0;ilayer<nlayer;++ilayer){</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     std::string layername = imgReaderOgr.getLayer(ilayer)->GetName();</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     createLayer(layername,imgReaderOgr.getProjection(),imgReaderOgr.getGeometryType(),NULL);</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     copyFields(imgReaderOgr,ilayer,ilayer);</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     <span class="keywordflow">if</span>(copyData){</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>       OGRFeature *poFeature;</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>       <span class="keywordflow">while</span>(<span class="keyword">true</span>){<span class="comment">// (poFeature = imgReaderOgr.getLayer()->GetNextFeature()) != NULL ){</span></div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     poFeature = imgReaderOgr.getLayer(ilayer)->GetNextFeature();</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     <span class="keywordflow">if</span>( poFeature == NULL )</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     OGRFeature *poDstFeature = NULL;</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span> </div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     poDstFeature=createFeature(ilayer);</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     <span class="comment">//todo: check here if SetFrom works (experienced segmentation fault)</span></div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>     <span class="keywordflow">if</span>( poDstFeature->SetFrom( poFeature, TRUE ) != OGRERR_NONE ){</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>       <span class="keyword">const</span> <span class="keywordtype">char</span>* fmt;</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>       std::string errorString=<span class="stringliteral">"Unable to translate feature %d from layer %s.\n"</span>;</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>       fmt=errorString.c_str();</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>       CPLError( CE_Failure, CPLE_AppDefined,</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>             fmt,</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>             poFeature->GetFID(), getLayerName().c_str() );</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>       <span class="comment">// CPLError( CE_Failure, CPLE_AppDefined,</span></div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>       <span class="comment">//           "Unable to translate feature %d from layer %s.\n",</span></div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>       <span class="comment">//           poFeature->GetFID(), getLayerName().c_str() );</span></div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>             </div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>       OGRFeature::DestroyFeature( poFeature );</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>       OGRFeature::DestroyFeature( poDstFeature );</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>     }</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>     poDstFeature->SetFID( poFeature->GetFID() );</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>     OGRFeature::DestroyFeature( poFeature );</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span> </div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     CPLErrorReset();</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     <span class="keywordflow">if</span>(createFeature( poDstFeature,ilayer ) != OGRERR_NONE){</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>       <span class="keyword">const</span> <span class="keywordtype">char</span>* fmt;</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>       std::string errorString=<span class="stringliteral">"Unable to translate feature %d from layer %s.\n"</span>;</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>       fmt=errorString.c_str();</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>       CPLError( CE_Failure, CPLE_AppDefined,</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>             fmt,</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>             poFeature->GetFID(), getLayerName().c_str() );</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>       OGRFeature::DestroyFeature( poDstFeature );</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     }</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     OGRFeature::DestroyFeature( poDstFeature );</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>       }</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     }</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>   }</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span> }</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span> </div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span> <span class="comment">//---------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span> </div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span> <span class="keywordtype">void</span> ImgWriterOgr::open(<span class="keyword">const</span> std::string& filename, <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a>& imgReaderOgr)</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span> {</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   m_filename=filename;</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   setCodec(imgReaderOgr.getDriver());</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>   <span class="keywordtype">int</span> nlayer=imgReaderOgr.getDataSource()->GetLayerCount();</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ilayer=0;ilayer<nlayer;++ilayer){</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     std::string layername = imgReaderOgr.getLayer(ilayer)->GetName();</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     createLayer(layername,imgReaderOgr.getProjection(),imgReaderOgr.getGeometryType(),NULL);</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     copyFields(imgReaderOgr,ilayer,ilayer);</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>   }</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span> }</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span> </div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span> <span class="keywordtype">void</span> ImgWriterOgr::open(<span class="keyword">const</span> std::string& filename, <span class="keyword">const</span> std::string& imageType)</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span> {</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>   m_filename = filename;</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   setCodec(imageType);</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span> }</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span> </div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span> <span class="comment">//---------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span> <span class="keywordtype">void</span> ImgWriterOgr::close(<span class="keywordtype">void</span>)</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span> {</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span> <span class="preprocessor">#if GDAL_VERSION_MAJOR < 2</span></div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span> <span class="preprocessor"></span>  OGRDataSource::DestroyDataSource(m_datasource);</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span> <span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span> <span class="preprocessor"></span>  GDALClose(m_datasource);</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span> <span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span> <span class="preprocessor"></span>}</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span> </div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span> <span class="comment">//---------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span> <span class="keywordtype">void</span> ImgWriterOgr::setCodec(<span class="keyword">const</span> std::string& imageType){</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span> <span class="preprocessor">#if GDAL_VERSION_MAJOR < 2</span></div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span> <span class="preprocessor"></span>  <span class="comment">//register the drivers</span></div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>   OGRRegisterAll();</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>   <span class="comment">//fetch the OGR file driver</span></div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>   OGRSFDriver *poDriver;</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>   poDriver = OGRSFDriverRegistrar::GetRegistrar()->GetDriverByName(imageType.c_str());</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span> <span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span> <span class="preprocessor"></span>  <span class="comment">//register the drivers</span></div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>   GDALAllRegister();</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>   GDALDriver *poDriver;</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>   poDriver = GetGDALDriverManager()->GetDriverByName(imageType.c_str());</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span> <span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span> <span class="preprocessor"></span>  <span class="keywordflow">if</span>( poDriver == NULL ){</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>     std::string errorString=<span class="stringliteral">"FileOpenError"</span>;</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>   }</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span> <span class="preprocessor">#if GDAL_VERSION_MAJOR < 2</span></div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span> <span class="preprocessor"></span>  m_datasource = OGRSFDriverRegistrar::Open( m_filename.c_str(), TRUE );</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span> <span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span> <span class="preprocessor"></span>  m_datasource = (GDALDataset*) GDALOpenEx(m_filename.c_str(), GDAL_OF_UPDATE, NULL, NULL, NULL);</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span> <span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span> <span class="preprocessor"></span>  <span class="keywordflow">if</span>( m_datasource == NULL ){</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span> <span class="preprocessor">#if GDAL_VERSION_MAJOR < 2</span></div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span> <span class="preprocessor"></span>    m_datasource = OGRSFDriverRegistrar::Open( m_filename.c_str(), FALSE );</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span> <span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span> <span class="preprocessor"></span>    m_datasource = (GDALDataset*) GDALOpenEx(m_filename.c_str(), GDAL_OF_READONLY, NULL, NULL, NULL);</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span> <span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span> <span class="preprocessor"></span>    <span class="keywordflow">if</span> ( m_datasource != NULL){<span class="comment">// we can only open in not update mode</span></div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>       std::string errorString=<span class="stringliteral">"Update mode not supported, delete output dataset first"</span>;</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>       <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span> <span class="preprocessor">#if GDAL_VERSION_MAJOR < 2</span></div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span> <span class="preprocessor"></span>      OGRDataSource::DestroyDataSource(m_datasource);</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span> <span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span> <span class="preprocessor"></span>      GDALClose(m_datasource);</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span> <span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span> <span class="preprocessor"></span>      m_datasource = NULL;</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>     }</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>     <span class="keywordflow">else</span> <span class="comment">//create the data source</span></div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span> <span class="preprocessor">#if GDAL_VERSION_MAJOR < 2</span></div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span> <span class="preprocessor"></span>      m_datasource=poDriver->CreateDataSource(m_filename.c_str(),NULL);</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span> <span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span> <span class="preprocessor"></span>      m_datasource=poDriver->Create(m_filename.c_str(),0,0,0,GDT_Unknown,NULL);</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span> <span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span> <span class="preprocessor"></span>  }</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>   <span class="keywordflow">else</span>{<span class="comment">//datasets exists, always overwrite all layers (no update append for now)</span></div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>     <span class="keywordtype">int</span> nLayerCount = m_datasource->GetLayerCount();</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iLayer = 0; iLayer < nLayerCount; ++iLayer){</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>       <span class="keywordflow">if</span>(m_datasource->DeleteLayer(iLayer)!=OGRERR_NONE){</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>     std::string errorstring=<span class="stringliteral">"DeleteLayer() failed when overwrite requested"</span>;</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>     <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>       }</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>     }</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>   }</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>   <span class="keywordflow">if</span>(m_datasource==NULL){</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>     std::string errorString=<span class="stringliteral">"Creation of output file failed"</span>;</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>   }</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span> }</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span> </div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span> <span class="preprocessor">#if GDAL_VERSION_MAJOR < 2</span></div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span> <span class="preprocessor"></span><span class="keywordtype">void</span> ImgWriterOgr::setCodec(OGRSFDriver *poDriver){</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>   OGRRegisterAll();</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span> <span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span> <span class="preprocessor"></span><span class="keywordtype">void</span> ImgWriterOgr::setCodec(GDALDriver *poDriver){</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>   GDALAllRegister();</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span> <span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span> <span class="preprocessor"></span>  <span class="keywordflow">if</span>( poDriver == NULL ){</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>     std::string errorString=<span class="stringliteral">"FileOpenError"</span>;</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>   }</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span> <span class="preprocessor">#if GDAL_VERSION_MAJOR < 2</span></div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span> <span class="preprocessor"></span>  m_datasource = OGRSFDriverRegistrar::Open( m_filename.c_str(), TRUE );</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span> <span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span> <span class="preprocessor"></span>  m_datasource = (GDALDataset*) GDALOpenEx(m_filename.c_str(), GDAL_OF_UPDATE, NULL, NULL, NULL);</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span> <span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span> <span class="preprocessor"></span>  <span class="keywordflow">if</span>( m_datasource == NULL ){</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span> <span class="preprocessor">#if GDAL_VERSION_MAJOR < 2</span></div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span> <span class="preprocessor"></span>    m_datasource = OGRSFDriverRegistrar::Open( m_filename.c_str(), FALSE );</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span> <span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span> <span class="preprocessor"></span>    m_datasource = (GDALDataset*) GDALOpenEx(m_filename.c_str(), GDAL_OF_READONLY, NULL, NULL, NULL);</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span> <span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span> <span class="preprocessor"></span>    <span class="keywordflow">if</span> ( m_datasource != NULL){<span class="comment">// we can only open in not update mode</span></div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>       std::string errorString=<span class="stringliteral">"Update mode not supported, delete output dataset first"</span>;</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>       <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span> <span class="preprocessor">#if GDAL_VERSION_MAJOR < 2</span></div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span> <span class="preprocessor"></span>      OGRDataSource::DestroyDataSource(m_datasource);</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span> <span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span> <span class="preprocessor"></span>      GDALClose(m_datasource);</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span> <span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span> <span class="preprocessor"></span>      m_datasource = NULL;</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>     }</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>     <span class="keywordflow">else</span> <span class="comment">//create the data source</span></div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span> <span class="preprocessor">#if GDAL_VERSION_MAJOR < 2</span></div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span> <span class="preprocessor"></span>      m_datasource=poDriver->CreateDataSource(m_filename.c_str(),NULL);</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span> <span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span> <span class="preprocessor"></span>      m_datasource=poDriver->Create(m_filename.c_str(),0,0,0,GDT_Unknown,NULL);</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span> <span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span> <span class="preprocessor"></span>  }</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>   <span class="keywordflow">else</span>{<span class="comment">//datasets exists, always overwrite all layers (no update append for now)</span></div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>     <span class="keywordtype">int</span> nLayerCount = m_datasource->GetLayerCount();</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iLayer = 0; iLayer < nLayerCount; ++iLayer){</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>       <span class="keywordflow">if</span>(m_datasource->DeleteLayer(iLayer)!=OGRERR_NONE){</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>     std::string errorstring=<span class="stringliteral">"DeleteLayer() failed when overwrite requested"</span>;</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>     <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>       }</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>     }</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>   }</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>   <span class="keywordflow">if</span>(m_datasource==NULL){</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>     std::string errorString=<span class="stringliteral">"Creation of output file failed"</span>;</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>   }</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span> }</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span> </div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span> <span class="comment">// OGRLayer* ImgWriterOgr::copyLayer(OGRLayer* poSrcLayer, const std::string& layername, char** papszOptions)</span></div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span> <span class="comment">// {</span></div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span> <span class="comment">//   return(m_datasource->CopyLayer(poSrcLayer, layername.c_str(),papszOptions));</span></div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span> <span class="comment">// }</span></div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span> </div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span> OGRLayer* ImgWriterOgr::createLayer(<span class="keyword">const</span> std::string& layername, <span class="keyword">const</span> std::string& theProjection, <span class="keyword">const</span> OGRwkbGeometryType& eGType, <span class="keywordtype">char</span>** papszOptions)</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span> {</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>   <span class="keywordflow">if</span>( !m_datasource->TestCapability( ODsCCreateLayer ) ){</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>     std::string errorString=<span class="stringliteral">"Test capability to create layer failed"</span>;</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>   }</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>   <span class="comment">//papszOptions = CSLSetNameValue( papszOptions, "DIM", "1" );</span></div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>   <span class="comment">//if points: use wkbPoint</span></div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>   <span class="comment">//if no constraints on the types geometry to be written: use wkbUnknown </span></div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>   OGRLayer* poLayer;</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span> </div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>   OGRSpatialReference oSRS;</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span> </div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>   <span class="keywordflow">if</span>(theProjection!=<span class="stringliteral">""</span>){</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>     oSRS.SetFromUserInput(theProjection.c_str());</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>     poLayer=m_datasource->CreateLayer( layername.c_str(), &oSRS, eGType,papszOptions );</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>     <span class="comment">//   if(theProjection.find("EPSPG:")!=std::string::npos){</span></div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>     <span class="comment">//     int epsg_code=atoi(theProjection.substr(theProjection.find_first_not_of("EPSG:")).c_str());</span></div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>     <span class="comment">//     OGRSpatialReference oSRS;</span></div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>     <span class="comment">//     oSRS.importFromEPSG(epsg_code);</span></div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>     <span class="comment">//     poLayer=m_datasource->CreateLayer( layername.c_str(), &oSRS, eGType,papszOptions );</span></div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>     <span class="comment">//   }</span></div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>     <span class="comment">//   else{</span></div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>     <span class="comment">//     OGRSpatialReference oSRS(theProjection.c_str());</span></div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>     <span class="comment">//     poLayer=m_datasource->CreateLayer( layername.c_str(), &oSRS, eGType,papszOptions );</span></div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>     <span class="comment">//   }</span></div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>     <span class="comment">// }</span></div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>     <span class="comment">// oSRS.importFromProj4(theProjection);</span></div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>   }</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>     poLayer=m_datasource->CreateLayer( layername.c_str(), NULL, eGType,papszOptions );</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>   <span class="comment">//check if destroy is needed?!</span></div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>   CSLDestroy( papszOptions );</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>   <span class="keywordflow">if</span>( poLayer == NULL ){</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>     std::string errorstring=<span class="stringliteral">"Layer creation failed"</span>;</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>     <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>   }</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>   <span class="comment">// OGRFeatureDefn *poFDefn = poLayer->GetLayerDefn();</span></div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>   <span class="keywordflow">return</span> poLayer;</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span> }</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span> </div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span> <span class="keywordtype">void</span> ImgWriterOgr::createField(<span class="keyword">const</span> std::string& fieldname, <span class="keyword">const</span> OGRFieldType& fieldType, <span class="keywordtype">int</span> theLayer)</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span> {</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>   OGRFieldDefn oField( fieldname.c_str(), fieldType );</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>   <span class="keywordflow">if</span>(fieldType==OFTString)</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>     oField.SetWidth(32);</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>   <span class="keywordflow">if</span>(theLayer<0)</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>     theLayer=m_datasource->GetLayerCount()-1;<span class="comment">//get back layer</span></div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>   <span class="keywordflow">if</span>(m_datasource->GetLayer(theLayer)->CreateField( &oField ) != OGRERR_NONE ){</div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>       std::ostringstream es;</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>       es << <span class="stringliteral">"Creating field "</span> << fieldname << <span class="stringliteral">" failed"</span>;</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>       std::string errorString=es.str();</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>       <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>   }</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span> }</div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span> </div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span> <span class="keywordtype">int</span> ImgWriterOgr::getFields(std::vector<std::string>& fields, <span class="keywordtype">int</span> layer)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>   <span class="keywordflow">if</span>(layer<0)</div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>     layer=m_datasource->GetLayerCount()-1;</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>   assert(m_datasource->GetLayerCount()>layer);</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>   OGRLayer  *poLayer;</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>   <span class="keywordflow">if</span>((poLayer = m_datasource->GetLayer(layer))==NULL){</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>     std::string errorstring=<span class="stringliteral">"Could not get layer"</span>;</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>     <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>   }</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>   OGRFeatureDefn *poFDefn = poLayer->GetLayerDefn();</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>   fields.clear();</div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>   fields.resize(poFDefn->GetFieldCount());</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iField=0;iField<poFDefn->GetFieldCount();++iField){</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>     OGRFieldDefn *poFieldDefn = poFDefn->GetFieldDefn(iField);</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>     fields[iField]=poFieldDefn->GetNameRef();</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>   }</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>   <span class="keywordflow">return</span>(fields.size());</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span> }</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span> </div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span> <span class="keywordtype">int</span> ImgWriterOgr::getFields(std::vector<OGRFieldDefn*>& fields, <span class="keywordtype">int</span> layer)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>   <span class="keywordflow">if</span>(layer<0)</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>     layer=m_datasource->GetLayerCount()-1;</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>   assert(m_datasource->GetLayerCount()>layer);</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>   OGRLayer  *poLayer;</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>   <span class="keywordflow">if</span>((poLayer = m_datasource->GetLayer(layer))==NULL){</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>     std::string errorstring=<span class="stringliteral">"Could not get layer"</span>;</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>     <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>   }</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>   OGRFeatureDefn *poFDefn = poLayer->GetLayerDefn();</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>   fields.clear();</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>   fields.resize(poFDefn->GetFieldCount());</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iField=0;iField<poFDefn->GetFieldCount();++iField){</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>     OGRFieldDefn *poFieldDefn = poFDefn->GetFieldDefn(iField);</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>     fields[iField]=poFDefn->GetFieldDefn(iField);</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>   }</div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>   assert(fields.size()==getFieldCount(layer));</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>   <span class="keywordflow">return</span>(fields.size());</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span> }</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span> </div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span> <span class="keywordtype">void</span> ImgWriterOgr::copyFields(<span class="keyword">const</span> <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a>& imgReaderOgr, <span class="keywordtype">int</span> srcLayer, <span class="keywordtype">int</span> targetLayer){</div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>   <span class="keywordflow">if</span>(targetLayer<0)</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>     targetLayer=m_datasource->GetLayerCount()-1;<span class="comment">//get back layer</span></div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>   <span class="comment">//get fields from imgReaderOgr</span></div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>   std::vector<OGRFieldDefn*> fields;</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>   </div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>   imgReaderOgr.getFields(fields,srcLayer);</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iField=0;iField<fields.size();++iField){</div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>     <span class="keywordflow">if</span>(m_datasource->GetLayer(targetLayer)->CreateField(fields[iField]) != OGRERR_NONE ){</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>       std::ostringstream es;</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>       es << <span class="stringliteral">"Creating field "</span> << fields[iField]->GetNameRef() << <span class="stringliteral">" failed"</span>;</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>       std::string errorString=es.str();</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>       <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>     }</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>   }</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span> }</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span> </div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span> <span class="keywordtype">void</span> ImgWriterOgr::addPoint(<span class="keywordtype">double</span> x, <span class="keywordtype">double</span> y, <span class="keyword">const</span> std::map<std::string,double>& pointAttributes, std::string fieldName, <span class="keyword">const</span> std::string& theId, <span class="keywordtype">int</span> layer){</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>   OGRFeature *poFeature;</div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>   poFeature=createFeature(layer);</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>   OGRPoint pt;</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>   poFeature->SetField( fieldName.c_str(), theId.c_str());</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>   <span class="keywordflow">for</span>(std::map<std::string,double>::const_iterator mit=pointAttributes.begin();mit!=pointAttributes.end();++mit){</div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>     poFeature->SetField((mit->first).c_str(), mit->second);</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>   }</div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>   pt.setX(x);</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>   pt.setY(y);</div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>   poFeature->SetGeometry( &pt );</div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>   <span class="keywordflow">if</span>(createFeature(poFeature,layer)!=OGRERR_NONE){</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>     std::string errorString=<span class="stringliteral">"Failed to create feature"</span>;</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>   }</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>   OGRFeature::DestroyFeature( poFeature );</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span> }</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span> </div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span> <span class="keywordtype">void</span> ImgWriterOgr::addPoint(<span class="keywordtype">double</span> x, <span class="keywordtype">double</span> y, <span class="keyword">const</span> std::map<std::string,double>& pointAttributes, std::string fieldName, <span class="keywordtype">int</span> theId, <span class="keywordtype">int</span> layer){</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>   OGRFeature *poFeature;</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>   poFeature = createFeature(layer);</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>   OGRPoint pt;</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>   <span class="keywordflow">if</span>(pointAttributes.size()+1!=poFeature->GetFieldCount()){</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>     std::ostringstream ess;</div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>     ess << <span class="stringliteral">"Failed to add feature: "</span> << pointAttributes.size() << <span class="stringliteral">" !="</span> << poFeature->GetFieldCount() << std::endl;</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>     <span class="keywordflow">throw</span>(ess.str());</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>   }</div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>   assert(pointAttributes.size()+1==poFeature->GetFieldCount());</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>   poFeature->SetField( fieldName.c_str(), theId);</div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>   <span class="keywordtype">int</span> fid=0;</div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>   <span class="keywordflow">for</span>(std::map<std::string,double>::const_iterator mit=pointAttributes.begin();mit!=pointAttributes.end();++mit){</div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>     poFeature->SetField((mit->first).c_str(),mit->second);</div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>   }</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>   pt.setX(x);</div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span>   pt.setY(y);</div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>   poFeature->SetGeometry( &pt );</div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>   <span class="keywordflow">if</span>(createFeature(poFeature,layer)!=OGRERR_NONE){</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>     std::string errorString=<span class="stringliteral">"Failed to create feature"</span>;</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>   }</div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span>   OGRFeature::DestroyFeature( poFeature );</div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span> }</div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span> </div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span> <span class="comment">//add a line std::string (polygon), caller is responsible to close the line (end point=start point)</span></div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span> <span class="keywordtype">void</span> ImgWriterOgr::addLineString(std::vector<OGRPoint*>& points, <span class="keyword">const</span> std::string& fieldName, <span class="keywordtype">int</span> theId, <span class="keywordtype">int</span> layer){</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span>   OGRFeature *poFeature;</div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>   poFeature = createFeature(layer);</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>   poFeature->SetStyleString(<span class="stringliteral">"PEN(c:#FF0000,w:5px)"</span>);<span class="comment">//see also http://www.gdal.org/ogr/ogr_feature_style.html</span></div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>   poFeature->SetField( fieldName.c_str(), theId);</div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>   OGRLineString theLineString;</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span>   theLineString.setNumPoints(points.size());</div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ip=0;ip<points.size();++ip)</div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>     theLineString.setPoint(ip,points[ip]);</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span>   <span class="keywordflow">if</span>(poFeature->SetGeometry( &theLineString )!=OGRERR_NONE){</div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>     std::string errorString=<span class="stringliteral">"Failed to set line OGRLineString as feature geometry"</span>;</div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span>   }</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>   <span class="keywordflow">if</span>(createFeature(poFeature,layer)!=OGRERR_NONE){</div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span>     std::string errorString=<span class="stringliteral">"Failed to create feature"</span>;</div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span>   }</div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span>   OGRFeature::DestroyFeature( poFeature );</div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span> }</div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span> </div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span> <span class="comment">//add a ring (polygon), caller is responsible to close the line (end point=start point)?</span></div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span> <span class="keywordtype">void</span> ImgWriterOgr::addRing(std::vector<OGRPoint*>& points, <span class="keyword">const</span> std::string& fieldName, <span class="keywordtype">int</span> theId, <span class="keywordtype">int</span> layer){</div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>   OGRFeature *poFeature;</div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>   poFeature = createFeature(layer);</div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span>   poFeature->SetStyleString(<span class="stringliteral">"PEN(c:#FF0000,w:5px)"</span>);<span class="comment">//see also http://www.gdal.org/ogr/ogr_feature_style.html</span></div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span>   poFeature->SetField( fieldName.c_str(), theId);</div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span>   <span class="comment">// OGRLineString theLineString;</span></div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span>   <span class="comment">// theLineString.setNumPoints(points.size());</span></div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span>   OGRPolygon thePolygon;</div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span>   OGRLinearRing theRing;</div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ip=0;ip<points.size();++ip)</div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span>     theRing.addPoint(points[ip]);</div>
-<div class="line"><a name="l00445"></a><span class="lineno">  445</span>   <span class="comment">//  theRing.addPoint(points[0]);//close the ring</span></div>
-<div class="line"><a name="l00446"></a><span class="lineno">  446</span>   theRing.closeRings();<span class="comment">//redundent with previous line?</span></div>
-<div class="line"><a name="l00447"></a><span class="lineno">  447</span>   thePolygon.addRing(&theRing);</div>
-<div class="line"><a name="l00448"></a><span class="lineno">  448</span>   <span class="comment">// SetSpatialFilter(&thePolygon)</span></div>
-<div class="line"><a name="l00449"></a><span class="lineno">  449</span>   poFeature->SetGeometry( &thePolygon );</div>
-<div class="line"><a name="l00450"></a><span class="lineno">  450</span>   <span class="keywordflow">if</span>(createFeature(poFeature,layer)!=OGRERR_NONE){</div>
-<div class="line"><a name="l00451"></a><span class="lineno">  451</span>     std::string errorString=<span class="stringliteral">"Failed to create feature"</span>;</div>
-<div class="line"><a name="l00452"></a><span class="lineno">  452</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00453"></a><span class="lineno">  453</span>     OGRFeature::DestroyFeature( poFeature );</div>
-<div class="line"><a name="l00454"></a><span class="lineno">  454</span>   }</div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span>   <span class="keywordflow">if</span>(poFeature->SetGeometry( &thePolygon )!=OGRERR_NONE){</div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</span>     std::string errorString=<span class="stringliteral">"Failed to set polygon as feature geometry"</span>;</div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00458"></a><span class="lineno">  458</span>   }</div>
-<div class="line"><a name="l00459"></a><span class="lineno">  459</span>   OGRFeature::DestroyFeature( poFeature );</div>
-<div class="line"><a name="l00460"></a><span class="lineno">  460</span> }</div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span> </div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span> <span class="comment">//add a line string (polygon), caller is responsible to close the line (end point=start point)</span></div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span> <span class="keywordtype">void</span> ImgWriterOgr::addLineString(std::vector<OGRPoint*>& points, <span class="keyword">const</span> std::string& fieldName, <span class="keyword">const</span> std::string& theId, <span class="keywordtype">int</span> layer){</div>
-<div class="line"><a name="l00464"></a><span class="lineno">  464</span>   OGRFeature *poFeature;</div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span>   poFeature = createFeature(layer);</div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>   poFeature->SetField( fieldName.c_str(), theId.c_str());</div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span>   OGRLineString theLineString;</div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span>   theLineString.setNumPoints(points.size());</div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ip=0;ip<points.size();++ip)</div>
-<div class="line"><a name="l00470"></a><span class="lineno">  470</span>     theLineString.setPoint(ip,points[ip]);</div>
-<div class="line"><a name="l00471"></a><span class="lineno">  471</span>   <span class="keywordflow">if</span>(poFeature->SetGeometry( &theLineString )!=OGRERR_NONE){</div>
-<div class="line"><a name="l00472"></a><span class="lineno">  472</span>     std::string errorString=<span class="stringliteral">"Failed to set line OGRLineString as feature geometry"</span>;</div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00474"></a><span class="lineno">  474</span>   }</div>
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span>   <span class="keywordflow">if</span>(createFeature(poFeature,layer)!=OGRERR_NONE){</div>
-<div class="line"><a name="l00476"></a><span class="lineno">  476</span>     std::string errorString=<span class="stringliteral">"Failed to create feature"</span>;</div>
-<div class="line"><a name="l00477"></a><span class="lineno">  477</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00478"></a><span class="lineno">  478</span>   }</div>
-<div class="line"><a name="l00479"></a><span class="lineno">  479</span>   OGRFeature::DestroyFeature( poFeature );</div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span> }</div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span> </div>
-<div class="line"><a name="l00482"></a><span class="lineno">  482</span> OGRFeature* ImgWriterOgr::createFeature(<span class="keywordtype">int</span> layer){</div>
-<div class="line"><a name="l00483"></a><span class="lineno">  483</span>   <span class="keywordflow">return</span>(OGRFeature::CreateFeature(m_datasource->GetLayer(layer)->GetLayerDefn()));</div>
-<div class="line"><a name="l00484"></a><span class="lineno">  484</span> }</div>
-<div class="line"><a name="l00485"></a><span class="lineno">  485</span> </div>
-<div class="line"><a name="l00486"></a><span class="lineno">  486</span> OGRErr ImgWriterOgr::createFeature(OGRFeature *theFeature,<span class="keywordtype">int</span> layer){</div>
-<div class="line"><a name="l00487"></a><span class="lineno">  487</span>   <span class="keywordflow">return</span> m_datasource->GetLayer(layer)->CreateFeature(theFeature);</div>
-<div class="line"><a name="l00488"></a><span class="lineno">  488</span> }</div>
-<div class="line"><a name="l00489"></a><span class="lineno">  489</span> </div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span> <span class="keywordtype">int</span> ImgWriterOgr::getFieldCount(<span class="keywordtype">int</span> layer)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00492"></a><span class="lineno">  492</span>   assert(m_datasource->GetLayerCount()>layer);</div>
-<div class="line"><a name="l00493"></a><span class="lineno">  493</span>   OGRLayer  *poLayer;</div>
-<div class="line"><a name="l00494"></a><span class="lineno">  494</span>   <span class="keywordflow">if</span>((poLayer = m_datasource->GetLayer(layer))==NULL){</div>
-<div class="line"><a name="l00495"></a><span class="lineno">  495</span>     std::string errorstring=<span class="stringliteral">"Could not get layer"</span>;</div>
-<div class="line"><a name="l00496"></a><span class="lineno">  496</span>     <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00497"></a><span class="lineno">  497</span>   }</div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span>   OGRFeatureDefn *poFDefn = poLayer->GetLayerDefn();</div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span>   <span class="keywordflow">return</span>(poFDefn->GetFieldCount());</div>
-<div class="line"><a name="l00500"></a><span class="lineno">  500</span> }</div>
-<div class="line"><a name="l00501"></a><span class="lineno">  501</span> </div>
-<div class="line"><a name="l00502"></a><span class="lineno">  502</span> <span class="keywordtype">int</span> ImgWriterOgr::getFeatureCount(<span class="keywordtype">int</span> layer)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00503"></a><span class="lineno">  503</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00504"></a><span class="lineno">  504</span>   <span class="keywordflow">return</span>(getLayer(layer)->GetFeatureCount());</div>
-<div class="line"><a name="l00505"></a><span class="lineno">  505</span> }</div>
-<div class="line"><a name="l00506"></a><span class="lineno">  506</span> </div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span> <span class="keywordtype">int</span> ImgWriterOgr::ascii2ogr(<span class="keyword">const</span> std::string& filename, <span class="keyword">const</span> std::string &layername, <span class="keyword">const</span> std::vector<std::string>& fieldName, <span class="keyword">const</span> std::vector<OGRFieldType>& fieldType, <span class="keywordtype">short</span> colX, <span class="keywo [...]
-<div class="line"><a name="l00508"></a><span class="lineno">  508</span> {</div>
-<div class="line"><a name="l00509"></a><span class="lineno">  509</span>   <span class="keywordtype">char</span>     **papszOptions=NULL;</div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span>   createLayer(layername, theProjection, eGType, papszOptions);</div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span>   <span class="comment">//create attribute fields that should appear on the layer. Fields must be added to the layer before any features are written. To create a field we initialize an OGRField object with the information about the field. In the case of Shapefiles, the field width and precision is significant in the creation of the output .dbf file, so we set it specifically, though generally the defaults are O [...]
-<div class="line"><a name="l00512"></a><span class="lineno">  512</span>   <span class="keywordtype">int</span> ncol=fieldName.size();</div>
-<div class="line"><a name="l00513"></a><span class="lineno">  513</span>   assert(colX>=0);</div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span>   assert(colY>=0);</div>
-<div class="line"><a name="l00515"></a><span class="lineno">  515</span>   assert(colX<ncol+2);</div>
-<div class="line"><a name="l00516"></a><span class="lineno">  516</span>   assert(colY<ncol+2);</div>
-<div class="line"><a name="l00517"></a><span class="lineno">  517</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ifield=0;ifield<ncol;++ifield)</div>
-<div class="line"><a name="l00518"></a><span class="lineno">  518</span>     createField(fieldName[ifield],fieldType[ifield]);</div>
-<div class="line"><a name="l00519"></a><span class="lineno">  519</span>   <span class="comment">//create a local OGRFeature, set attributes and attach geometry before trying to write it to the layer. It is imperative that this feature be instantiated from the OGRFeatureDefn associated with the layer it will be written to.</span></div>
-<div class="line"><a name="l00520"></a><span class="lineno">  520</span>   <span class="comment">//todo: try to open and catch if failure...</span></div>
-<div class="line"><a name="l00521"></a><span class="lineno">  521</span>   std::ifstream fpoints(filename.c_str(),std::ios::in);</div>
-<div class="line"><a name="l00522"></a><span class="lineno">  522</span>   std::string line;</div>
-<div class="line"><a name="l00523"></a><span class="lineno">  523</span>   OGRPolygon thePolygon;</div>
-<div class="line"><a name="l00524"></a><span class="lineno">  524</span>   OGRLinearRing theRing;</div>
-<div class="line"><a name="l00525"></a><span class="lineno">  525</span>   OGRPoint firstPoint;</div>
-<div class="line"><a name="l00526"></a><span class="lineno">  526</span>   OGRFeature *polyFeature;</div>
-<div class="line"><a name="l00527"></a><span class="lineno">  527</span>   <span class="keywordflow">if</span>(eGType!=wkbPoint)</div>
-<div class="line"><a name="l00528"></a><span class="lineno">  528</span>     polyFeature=createFeature();</div>
-<div class="line"><a name="l00529"></a><span class="lineno">  529</span> </div>
-<div class="line"><a name="l00530"></a><span class="lineno">  530</span> </div>
-<div class="line"><a name="l00531"></a><span class="lineno">  531</span>   <span class="keywordflow">if</span>(fs><span class="charliteral">' '</span>&&fs<=<span class="charliteral">'~'</span>){<span class="comment">//field separator is a regular character (minimum ASCII code is space, maximum ASCII code is tilde)</span></div>
-<div class="line"><a name="l00532"></a><span class="lineno">  532</span>     std::string csvRecord;</div>
-<div class="line"><a name="l00533"></a><span class="lineno">  533</span>     <span class="keywordflow">while</span>(getline(fpoints,csvRecord)){<span class="comment">//read a line</span></div>
-<div class="line"><a name="l00534"></a><span class="lineno">  534</span>       OGRFeature *pointFeature;</div>
-<div class="line"><a name="l00535"></a><span class="lineno">  535</span>       <span class="keywordflow">if</span>(eGType==wkbPoint)</div>
-<div class="line"><a name="l00536"></a><span class="lineno">  536</span>         pointFeature=createFeature();</div>
-<div class="line"><a name="l00537"></a><span class="lineno">  537</span>       OGRPoint thePoint;</div>
-<div class="line"><a name="l00538"></a><span class="lineno">  538</span>       <span class="keywordtype">bool</span> skip=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00539"></a><span class="lineno">  539</span>       std::istringstream csvstream(csvRecord);</div>
-<div class="line"><a name="l00540"></a><span class="lineno">  540</span>       std::string value;</div>
-<div class="line"><a name="l00541"></a><span class="lineno">  541</span>       <span class="keywordtype">int</span> colId=0;</div>
-<div class="line"><a name="l00542"></a><span class="lineno">  542</span>       <span class="keywordtype">int</span> fieldId=0;</div>
-<div class="line"><a name="l00543"></a><span class="lineno">  543</span>       <span class="keywordflow">while</span>(getline(csvstream,value,fs)){<span class="comment">//read a column</span></div>
-<div class="line"><a name="l00544"></a><span class="lineno">  544</span>         <span class="keywordflow">if</span>(colId==colX)</div>
-<div class="line"><a name="l00545"></a><span class="lineno">  545</span>           thePoint.setX(atof(value.c_str()));</div>
-<div class="line"><a name="l00546"></a><span class="lineno">  546</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(colId==colY)</div>
-<div class="line"><a name="l00547"></a><span class="lineno">  547</span>           thePoint.setY(atof(value.c_str()));</div>
-<div class="line"><a name="l00548"></a><span class="lineno">  548</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00549"></a><span class="lineno">  549</span>           <span class="keywordflow">switch</span>(fieldType[fieldId]){</div>
-<div class="line"><a name="l00550"></a><span class="lineno">  550</span>           <span class="keywordflow">case</span>(OFTReal):</div>
-<div class="line"><a name="l00551"></a><span class="lineno">  551</span>             <span class="keywordflow">if</span>(eGType==wkbPoint)</div>
-<div class="line"><a name="l00552"></a><span class="lineno">  552</span>               pointFeature->SetField(fieldId,atof(value.c_str()));</div>
-<div class="line"><a name="l00553"></a><span class="lineno">  553</span>             <span class="keywordflow">else</span> <span class="keywordflow">if</span>(firstPoint.IsEmpty())</div>
-<div class="line"><a name="l00554"></a><span class="lineno">  554</span>               polyFeature->SetField(fieldId,atof(value.c_str()));</div>
-<div class="line"><a name="l00555"></a><span class="lineno">  555</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00556"></a><span class="lineno">  556</span>           <span class="keywordflow">case</span>(OFTInteger):</div>
-<div class="line"><a name="l00557"></a><span class="lineno">  557</span>             <span class="keywordflow">if</span>(eGType==wkbPoint)</div>
-<div class="line"><a name="l00558"></a><span class="lineno">  558</span>               pointFeature->SetField(fieldId,atoi(value.c_str()));</div>
-<div class="line"><a name="l00559"></a><span class="lineno">  559</span>             <span class="keywordflow">else</span> <span class="keywordflow">if</span>(firstPoint.IsEmpty())</div>
-<div class="line"><a name="l00560"></a><span class="lineno">  560</span>               polyFeature->SetField(fieldId,atoi(value.c_str()));</div>
-<div class="line"><a name="l00561"></a><span class="lineno">  561</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00562"></a><span class="lineno">  562</span>           <span class="keywordflow">case</span>(OFTString):</div>
-<div class="line"><a name="l00563"></a><span class="lineno">  563</span>             <span class="keywordflow">if</span>(eGType==wkbPoint)</div>
-<div class="line"><a name="l00564"></a><span class="lineno">  564</span>               pointFeature->SetField(fieldId,value.c_str());</div>
-<div class="line"><a name="l00565"></a><span class="lineno">  565</span>             <span class="keywordflow">else</span> <span class="keywordflow">if</span>(firstPoint.IsEmpty())</div>
-<div class="line"><a name="l00566"></a><span class="lineno">  566</span>               polyFeature->SetField(fieldId,value.c_str());</div>
-<div class="line"><a name="l00567"></a><span class="lineno">  567</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00568"></a><span class="lineno">  568</span>           <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00569"></a><span class="lineno">  569</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00570"></a><span class="lineno">  570</span>           }</div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span>           ++fieldId;</div>
-<div class="line"><a name="l00572"></a><span class="lineno">  572</span>         }</div>
-<div class="line"><a name="l00573"></a><span class="lineno">  573</span>         ++colId;</div>
-<div class="line"><a name="l00574"></a><span class="lineno">  574</span>       }</div>
-<div class="line"><a name="l00575"></a><span class="lineno">  575</span>       <span class="keywordflow">if</span>(colId!=fieldId+2){</div>
-<div class="line"><a name="l00576"></a><span class="lineno">  576</span>         std::ostringstream ess;</div>
-<div class="line"><a name="l00577"></a><span class="lineno">  577</span>         ess << <span class="stringliteral">"Error: colId = "</span> << colId << <span class="stringliteral">" is different from fieldId+2 = "</span> << fieldId;</div>
-<div class="line"><a name="l00578"></a><span class="lineno">  578</span>         <span class="keywordflow">throw</span>(ess.str());</div>
-<div class="line"><a name="l00579"></a><span class="lineno">  579</span>       }</div>
-<div class="line"><a name="l00580"></a><span class="lineno">  580</span>       <span class="keywordflow">if</span>(eGType==wkbPoint){</div>
-<div class="line"><a name="l00581"></a><span class="lineno">  581</span>         pointFeature->SetGeometry( &thePoint );</div>
-<div class="line"><a name="l00582"></a><span class="lineno">  582</span>         <span class="keywordflow">if</span>(createFeature(pointFeature)!=OGRERR_NONE){</div>
-<div class="line"><a name="l00583"></a><span class="lineno">  583</span>           std::string errorString=<span class="stringliteral">"Failed to create feature"</span>;</div>
-<div class="line"><a name="l00584"></a><span class="lineno">  584</span>           <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00585"></a><span class="lineno">  585</span>           OGRFeature::DestroyFeature( pointFeature );</div>
-<div class="line"><a name="l00586"></a><span class="lineno">  586</span>         }</div>
-<div class="line"><a name="l00587"></a><span class="lineno">  587</span>       }</div>
-<div class="line"><a name="l00588"></a><span class="lineno">  588</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00589"></a><span class="lineno">  589</span>         <span class="keywordflow">if</span>(firstPoint.IsEmpty()){</div>
-<div class="line"><a name="l00590"></a><span class="lineno">  590</span>           firstPoint=thePoint;</div>
-<div class="line"><a name="l00591"></a><span class="lineno">  591</span>         }</div>
-<div class="line"><a name="l00592"></a><span class="lineno">  592</span>         theRing.addPoint(&thePoint);</div>
-<div class="line"><a name="l00593"></a><span class="lineno">  593</span>       }</div>
-<div class="line"><a name="l00594"></a><span class="lineno">  594</span>     }</div>
-<div class="line"><a name="l00595"></a><span class="lineno">  595</span>   }</div>
-<div class="line"><a name="l00596"></a><span class="lineno">  596</span>   <span class="keywordflow">else</span>{<span class="comment">//space or tab delimited fields</span></div>
-<div class="line"><a name="l00597"></a><span class="lineno">  597</span>     <span class="keywordflow">while</span>(getline(fpoints,line)){</div>
-<div class="line"><a name="l00598"></a><span class="lineno">  598</span>       OGRFeature *pointFeature;</div>
-<div class="line"><a name="l00599"></a><span class="lineno">  599</span>       <span class="keywordflow">if</span>(eGType==wkbPoint)</div>
-<div class="line"><a name="l00600"></a><span class="lineno">  600</span>         pointFeature=createFeature();</div>
-<div class="line"><a name="l00601"></a><span class="lineno">  601</span>       OGRPoint thePoint;</div>
-<div class="line"><a name="l00602"></a><span class="lineno">  602</span>       <span class="keywordtype">bool</span> skip=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00603"></a><span class="lineno">  603</span>       std::istringstream ist(line);</div>
-<div class="line"><a name="l00604"></a><span class="lineno">  604</span>       std::string value;</div>
-<div class="line"><a name="l00605"></a><span class="lineno">  605</span>       <span class="keywordtype">int</span> colId=0;</div>
-<div class="line"><a name="l00606"></a><span class="lineno">  606</span>       <span class="keywordtype">int</span> fieldId=0;</div>
-<div class="line"><a name="l00607"></a><span class="lineno">  607</span>       <span class="keywordflow">while</span>(ist >> value){</div>
-<div class="line"><a name="l00608"></a><span class="lineno">  608</span>         <span class="keywordflow">if</span>(colId==colX)</div>
-<div class="line"><a name="l00609"></a><span class="lineno">  609</span>           thePoint.setX(atof(value.c_str()));</div>
-<div class="line"><a name="l00610"></a><span class="lineno">  610</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(colId==colY)</div>
-<div class="line"><a name="l00611"></a><span class="lineno">  611</span>           thePoint.setY(atof(value.c_str()));</div>
-<div class="line"><a name="l00612"></a><span class="lineno">  612</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00613"></a><span class="lineno">  613</span>           <span class="keywordflow">switch</span>(fieldType[fieldId]){</div>
-<div class="line"><a name="l00614"></a><span class="lineno">  614</span>           <span class="keywordflow">case</span>(OFTReal):</div>
-<div class="line"><a name="l00615"></a><span class="lineno">  615</span>             <span class="keywordflow">if</span>(eGType==wkbPoint)</div>
-<div class="line"><a name="l00616"></a><span class="lineno">  616</span>               pointFeature->SetField(fieldId,atof(value.c_str()));</div>
-<div class="line"><a name="l00617"></a><span class="lineno">  617</span>             <span class="keywordflow">else</span> <span class="keywordflow">if</span>(firstPoint.IsEmpty())</div>
-<div class="line"><a name="l00618"></a><span class="lineno">  618</span>               polyFeature->SetField(fieldId,atof(value.c_str()));</div>
-<div class="line"><a name="l00619"></a><span class="lineno">  619</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00620"></a><span class="lineno">  620</span>           <span class="keywordflow">case</span>(OFTInteger):</div>
-<div class="line"><a name="l00621"></a><span class="lineno">  621</span>             <span class="keywordflow">if</span>(eGType==wkbPoint)</div>
-<div class="line"><a name="l00622"></a><span class="lineno">  622</span>               pointFeature->SetField(fieldId,atoi(value.c_str()));</div>
-<div class="line"><a name="l00623"></a><span class="lineno">  623</span>             <span class="keywordflow">else</span> <span class="keywordflow">if</span>(firstPoint.IsEmpty())</div>
-<div class="line"><a name="l00624"></a><span class="lineno">  624</span>               polyFeature->SetField(fieldId,atoi(value.c_str()));</div>
-<div class="line"><a name="l00625"></a><span class="lineno">  625</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00626"></a><span class="lineno">  626</span>           <span class="keywordflow">case</span>(OFTString):</div>
-<div class="line"><a name="l00627"></a><span class="lineno">  627</span>             <span class="keywordflow">if</span>(eGType==wkbPoint)</div>
-<div class="line"><a name="l00628"></a><span class="lineno">  628</span>               pointFeature->SetField(fieldId,value.c_str());</div>
-<div class="line"><a name="l00629"></a><span class="lineno">  629</span>             <span class="keywordflow">else</span> <span class="keywordflow">if</span>(firstPoint.IsEmpty())</div>
-<div class="line"><a name="l00630"></a><span class="lineno">  630</span>               polyFeature->SetField(fieldId,value.c_str());</div>
-<div class="line"><a name="l00631"></a><span class="lineno">  631</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00632"></a><span class="lineno">  632</span>           <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00633"></a><span class="lineno">  633</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00634"></a><span class="lineno">  634</span>           }</div>
-<div class="line"><a name="l00635"></a><span class="lineno">  635</span>           ++fieldId;</div>
-<div class="line"><a name="l00636"></a><span class="lineno">  636</span>         }</div>
-<div class="line"><a name="l00637"></a><span class="lineno">  637</span>         ++colId;</div>
-<div class="line"><a name="l00638"></a><span class="lineno">  638</span>       }</div>
-<div class="line"><a name="l00639"></a><span class="lineno">  639</span>       <span class="keywordflow">if</span>(colId!=fieldId+2){</div>
-<div class="line"><a name="l00640"></a><span class="lineno">  640</span>         std::ostringstream ess;</div>
-<div class="line"><a name="l00641"></a><span class="lineno">  641</span>         ess << <span class="stringliteral">"Error: colId = "</span> << colId << <span class="stringliteral">" is different from fieldId+2 = "</span> << fieldId;</div>
-<div class="line"><a name="l00642"></a><span class="lineno">  642</span>         <span class="keywordflow">throw</span>(ess.str());</div>
-<div class="line"><a name="l00643"></a><span class="lineno">  643</span>       }</div>
-<div class="line"><a name="l00644"></a><span class="lineno">  644</span>       <span class="keywordflow">if</span>(eGType==wkbPoint){</div>
-<div class="line"><a name="l00645"></a><span class="lineno">  645</span>         pointFeature->SetGeometry( &thePoint );</div>
-<div class="line"><a name="l00646"></a><span class="lineno">  646</span>         <span class="keywordflow">if</span>(createFeature(pointFeature)!=OGRERR_NONE){</div>
-<div class="line"><a name="l00647"></a><span class="lineno">  647</span>           std::string errorString=<span class="stringliteral">"Failed to create feature"</span>;</div>
-<div class="line"><a name="l00648"></a><span class="lineno">  648</span>           <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00649"></a><span class="lineno">  649</span>           OGRFeature::DestroyFeature( pointFeature );</div>
-<div class="line"><a name="l00650"></a><span class="lineno">  650</span>         }</div>
-<div class="line"><a name="l00651"></a><span class="lineno">  651</span>       }</div>
-<div class="line"><a name="l00652"></a><span class="lineno">  652</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00653"></a><span class="lineno">  653</span>         <span class="keywordflow">if</span>(firstPoint.IsEmpty()){</div>
-<div class="line"><a name="l00654"></a><span class="lineno">  654</span>           firstPoint=thePoint;</div>
-<div class="line"><a name="l00655"></a><span class="lineno">  655</span>         }</div>
-<div class="line"><a name="l00656"></a><span class="lineno">  656</span>         theRing.addPoint(&thePoint);</div>
-<div class="line"><a name="l00657"></a><span class="lineno">  657</span>       }</div>
-<div class="line"><a name="l00658"></a><span class="lineno">  658</span>     }</div>
-<div class="line"><a name="l00659"></a><span class="lineno">  659</span>   }</div>
-<div class="line"><a name="l00660"></a><span class="lineno">  660</span>   <span class="keywordflow">if</span>(eGType!=wkbPoint){</div>
-<div class="line"><a name="l00661"></a><span class="lineno">  661</span>     theRing.addPoint(&firstPoint);<span class="comment">//close the ring</span></div>
-<div class="line"><a name="l00662"></a><span class="lineno">  662</span>     thePolygon.addRing(&theRing);</div>
-<div class="line"><a name="l00663"></a><span class="lineno">  663</span>     <span class="comment">// SetSpatialFilter(&thePolygon)</span></div>
-<div class="line"><a name="l00664"></a><span class="lineno">  664</span>     polyFeature->SetGeometry( &thePolygon );</div>
-<div class="line"><a name="l00665"></a><span class="lineno">  665</span>     <span class="keywordflow">if</span>(createFeature(polyFeature)!=OGRERR_NONE){</div>
-<div class="line"><a name="l00666"></a><span class="lineno">  666</span>       std::string errorString=<span class="stringliteral">"Failed to create feature"</span>;</div>
-<div class="line"><a name="l00667"></a><span class="lineno">  667</span>       <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00668"></a><span class="lineno">  668</span>       OGRFeature::DestroyFeature( polyFeature );</div>
-<div class="line"><a name="l00669"></a><span class="lineno">  669</span>     }</div>
-<div class="line"><a name="l00670"></a><span class="lineno">  670</span>   }</div>
-<div class="line"><a name="l00671"></a><span class="lineno">  671</span>   <span class="keywordflow">return</span> getFeatureCount();</div>
-<div class="line"><a name="l00672"></a><span class="lineno">  672</span> }</div>
-<div class="line"><a name="l00673"></a><span class="lineno">  673</span> </div>
-<div class="line"><a name="l00674"></a><span class="lineno">  674</span> <span class="keywordtype">int</span> ImgWriterOgr::addData(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& imgReader, <span class="keywordtype">int</span> theLayer, <span class="keywordtype">bool</span> verbose)</div>
-<div class="line"><a name="l00675"></a><span class="lineno">  675</span> {</div>
-<div class="line"><a name="l00676"></a><span class="lineno">  676</span>   OGRLayer  *poLayer;</div>
-<div class="line"><a name="l00677"></a><span class="lineno">  677</span>   assert(m_datasource->GetLayerCount()>theLayer);</div>
-<div class="line"><a name="l00678"></a><span class="lineno">  678</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00679"></a><span class="lineno">  679</span>     std::cout << <span class="stringliteral">"number of layers: "</span> << m_datasource->GetLayerCount() << std::endl;</div>
-<div class="line"><a name="l00680"></a><span class="lineno">  680</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00681"></a><span class="lineno">  681</span>     std::cout << <span class="stringliteral">"get layer "</span> << theLayer << std::endl;</div>
-<div class="line"><a name="l00682"></a><span class="lineno">  682</span>   poLayer = m_datasource->GetLayer(theLayer);</div>
-<div class="line"><a name="l00683"></a><span class="lineno">  683</span>   <span class="comment">//start reading features from the layer</span></div>
-<div class="line"><a name="l00684"></a><span class="lineno">  684</span>   OGRFeature *poFeature;</div>
-<div class="line"><a name="l00685"></a><span class="lineno">  685</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00686"></a><span class="lineno">  686</span>     std::cout << <span class="stringliteral">"reset reading"</span> << std::endl;</div>
-<div class="line"><a name="l00687"></a><span class="lineno">  687</span>   poLayer->ResetReading();</div>
-<div class="line"><a name="l00688"></a><span class="lineno">  688</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<imgReader.nrOfBand();++iband){</div>
-<div class="line"><a name="l00689"></a><span class="lineno">  689</span>     std::ostringstream fs;</div>
-<div class="line"><a name="l00690"></a><span class="lineno">  690</span>     fs << <span class="stringliteral">"band"</span> << iband;</div>
-<div class="line"><a name="l00691"></a><span class="lineno">  691</span>     createField(fs.str(),OFTReal,theLayer);</div>
-<div class="line"><a name="l00692"></a><span class="lineno">  692</span>   }</div>
-<div class="line"><a name="l00693"></a><span class="lineno">  693</span>   OGRFeatureDefn *poFDefn = poLayer->GetLayerDefn();</div>
-<div class="line"><a name="l00694"></a><span class="lineno">  694</span>   <span class="keywordtype">int</span> nfield=poFDefn->GetFieldCount();</div>
-<div class="line"><a name="l00695"></a><span class="lineno">  695</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00696"></a><span class="lineno">  696</span>     std::cout << <span class="stringliteral">"new number of fields: "</span> << nfield << std::endl;</div>
-<div class="line"><a name="l00697"></a><span class="lineno">  697</span>   <span class="keywordflow">while</span>( (poFeature = poLayer->GetNextFeature()) != NULL ){</div>
-<div class="line"><a name="l00698"></a><span class="lineno">  698</span>     OGRGeometry *poGeometry;</div>
-<div class="line"><a name="l00699"></a><span class="lineno">  699</span>     poGeometry = poFeature->GetGeometryRef();</div>
-<div class="line"><a name="l00700"></a><span class="lineno">  700</span>     assert(poGeometry != NULL </div>
-<div class="line"><a name="l00701"></a><span class="lineno">  701</span>            && wkbFlatten(poGeometry->getGeometryType()) == wkbPoint);</div>
-<div class="line"><a name="l00702"></a><span class="lineno">  702</span>     OGRPoint *poPoint = (OGRPoint *) poGeometry;</div>
-<div class="line"><a name="l00703"></a><span class="lineno">  703</span>     <span class="keywordtype">double</span> x=poPoint->getX();</div>
-<div class="line"><a name="l00704"></a><span class="lineno">  704</span>     <span class="keywordtype">double</span> y=poPoint->getY();</div>
-<div class="line"><a name="l00705"></a><span class="lineno">  705</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<imgReader.nrOfBand();++iband){</div>
-<div class="line"><a name="l00706"></a><span class="lineno">  706</span>       <span class="keywordtype">double</span> imgData;</div>
-<div class="line"><a name="l00707"></a><span class="lineno">  707</span>       imgReader.readData(imgData,GDT_Float64,x,y,iband);</div>
-<div class="line"><a name="l00708"></a><span class="lineno">  708</span>       <span class="comment">//todo: put imgdata in field</span></div>
-<div class="line"><a name="l00709"></a><span class="lineno">  709</span>       std::ostringstream fs;</div>
-<div class="line"><a name="l00710"></a><span class="lineno">  710</span>       fs << <span class="stringliteral">"band"</span> << iband;</div>
-<div class="line"><a name="l00711"></a><span class="lineno">  711</span>       poFeature->SetField(fs.str().c_str(),imgData);</div>
-<div class="line"><a name="l00712"></a><span class="lineno">  712</span>     }</div>
-<div class="line"><a name="l00713"></a><span class="lineno">  713</span>   }</div>
-<div class="line"><a name="l00714"></a><span class="lineno">  714</span>   <span class="keywordflow">return</span>(nfield);</div>
-<div class="line"><a name="l00715"></a><span class="lineno">  715</span> }</div>
-<div class="line"><a name="l00716"></a><span class="lineno">  716</span> </div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-<div class="ttc" id="classImgReaderOgr_html"><div class="ttname"><a href="classImgReaderOgr.html">ImgReaderOgr</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderOgr_8h_source.html#l00035">ImgReaderOgr.h:35</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/ImgWriterOgr_8h_source.html b/doc/html/ImgWriterOgr_8h_source.html
deleted file mode 100644
index 643ea2d..0000000
--- a/doc/html/ImgWriterOgr_8h_source.html
+++ /dev/null
@@ -1,167 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/imageclasses/ImgWriterOgr.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_6d2fd95b0bd390617ad5a1eb4a537b4a.html">imageclasses</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">ImgWriterOgr.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">ImgWriterOgr.h: class to write vector files using OGR API library</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2012 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#ifndef _IMGWRITEROGR_H_</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor"></span><span class="preprocessor">#define _IMGWRITEROGR_H_</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <assert.h></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <fstream></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include <string></span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include <sstream></span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include <map></span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include <vector></span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include "ogrsf_frmts.h"</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include "ImgReaderGdal.h"</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="preprocessor">#include "ImgWriterGdal.h"</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="preprocessor">#include "ImgReaderOgr.h"</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> </div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="comment">//--------------------------------------------------------------------------</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="classImgWriterOgr.html">   35</a></span> <span class="keyword">class </span><a class="code" href="classImgWriterOgr.html">ImgWriterOgr</a></div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> {</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>   <a class="code" href="classImgWriterOgr.html">ImgWriterOgr</a>(<span class="keywordtype">void</span>);</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>   <a class="code" href="classImgWriterOgr.html">ImgWriterOgr</a>(<span class="keyword">const</span> std::string& filename, <span class="keyword">const</span> std::string& imageType=<span class="stringliteral">"ESRI Shapefile"</span>);</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   <a class="code" href="classImgWriterOgr.html">ImgWriterOgr</a>(<span class="keyword">const</span> std::string& filename, <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a>& imgReaderOgr);</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>   <a class="code" href="classImgWriterOgr.html">ImgWriterOgr</a>(<span class="keyword">const</span> std::string& filename, <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a>& imgReaderOgr, <span class="keywordtype">bool</span> copyData);</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   ~<a class="code" href="classImgWriterOgr.html">ImgWriterOgr</a>(<span class="keywordtype">void</span>);</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   <span class="keywordtype">void</span> open(<span class="keyword">const</span> std::string& filename, <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a>& imgReaderOgr);</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   <span class="keywordtype">void</span> open(<span class="keyword">const</span> std::string& filename, <span class="keyword">const</span> std::string& imageType=<span class="stringliteral">"ESRI Shapefile"</span>);</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   <span class="keywordtype">void</span> close(<span class="keywordtype">void</span>);</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>   <span class="keywordtype">int</span> ascii2ogr(<span class="keyword">const</span> std::string& filename, <span class="keyword">const</span> std::string &layername, <span class="keyword">const</span> std::vector<std::string>& fieldName, <span class="keyword">const</span> std::vector<OGRFieldType>& fieldType, <span class="keywordtype">short</span> colX=1, <span class="keywordtype">sh [...]
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   OGRLayer* createLayer(<span class="keyword">const</span> std::string& layername=<span class="stringliteral">"New layer"</span>, <span class="keyword">const</span> std::string& theProjection=<span class="stringliteral">""</span>, <span class="keyword">const</span> OGRwkbGeometryType& eGType=wkbUnknown, <span class="keywordtype">char</span>** papszOptions=NULL);</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>   OGRLayer* copyLayer(OGRLayer* poSrcLayer, <span class="keyword">const</span> std::string& layername, <span class="keywordtype">char</span>** papszOptions=NULL);</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>   <span class="keywordtype">void</span> createField(<span class="keyword">const</span> std::string& fieldname, <span class="keyword">const</span> OGRFieldType& fieldType, <span class="keywordtype">int</span> theLayer=0);<span class="comment">//default: get back layer</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>   OGRLayer* getLayer(<span class="keywordtype">int</span> layer=0)<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_datasource->GetLayer(layer);};</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>   std::string getLayerName(<span class="keywordtype">int</span> layer=0){<span class="keywordflow">return</span> m_datasource->GetLayer(layer)->GetLayerDefn()->GetName();};</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>   <span class="keywordtype">int</span> getFields(std::vector<std::string>& fields, <span class="keywordtype">int</span> layer=0) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>   <span class="keywordtype">int</span> getFields(std::vector<OGRFieldDefn*>& fields, <span class="keywordtype">int</span> layer=0) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>   <span class="keywordtype">void</span> copyFields(<span class="keyword">const</span> <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a>& imgReaderOgr, <span class="keywordtype">int</span> srcLayer=0, <span class="keywordtype">int</span> targetLayer=0);<span class="comment">//default: get back layer</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>   <span class="keywordtype">void</span> addLineString(std::vector<OGRPoint*>& points, <span class="keyword">const</span> std::string& fieldName, <span class="keyword">const</span> std::string& theId, <span class="keywordtype">int</span> layer=0);</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>   <span class="keywordtype">void</span> addRing(std::vector<OGRPoint*>& points, <span class="keyword">const</span> std::string& fieldName, <span class="keywordtype">int</span> theId, <span class="keywordtype">int</span> layer=0);</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>   <span class="keywordtype">void</span> addLineString(std::vector<OGRPoint*>& points, <span class="keyword">const</span> std::string& fieldName, <span class="keywordtype">int</span> theId, <span class="keywordtype">int</span> layer=0);</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>   <span class="keywordtype">void</span> addPoint(<span class="keywordtype">double</span> x, <span class="keywordtype">double</span> y, <span class="keyword">const</span> std::map<std::string,double>& pointAttributes, std::string fieldName, <span class="keyword">const</span> std::string& theId, <span class="keywordtype">int</span> layer=0);</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>   <span class="keywordtype">void</span> addPoint(<span class="keywordtype">double</span> x, <span class="keywordtype">double</span> y, <span class="keyword">const</span> std::map<std::string,double>& pointAttributes, std::string fieldName, <span class="keywordtype">int</span> theId, <span class="keywordtype">int</span> layer=0);</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>   <span class="keywordtype">int</span> addData(<span class="keyword">const</span> <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a>& imgReader, <span class="keywordtype">int</span> layer=0, <span class="keywordtype">bool</span> verbose=<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>   OGRFeature* createFeature(<span class="keywordtype">int</span> layer=0);</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>   OGRErr createFeature(OGRFeature* theFeature, <span class="keywordtype">int</span> layer=0);</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>   <span class="keywordtype">int</span> getFieldCount(<span class="keywordtype">int</span> layer=0) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>   <span class="keywordtype">int</span> getFeatureCount(<span class="keywordtype">int</span> layer=0) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span> <span class="preprocessor">#if GDAL_VERSION_MAJOR < 2</span></div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span> <span class="preprocessor"></span>  OGRDataSource* getDataSource(<span class="keywordtype">void</span>) {<span class="keywordflow">return</span> m_datasource;};</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>   OGRSFDriver* getDriver(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_datasource->GetDriver();};</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span> <span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span> <span class="preprocessor"></span>  GDALDataset* getDataSource(<span class="keywordtype">void</span>) {<span class="keywordflow">return</span> m_datasource;};</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>   GDALDriver* getDriver(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_datasource->GetDriver();};</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span> <span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span> <span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>   <span class="keywordtype">void</span> setCodec(<span class="keyword">const</span> std::string& imageType);</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span> <span class="preprocessor">#if GDAL_VERSION_MAJOR < 2</span></div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span> <span class="preprocessor"></span>  <span class="keywordtype">void</span> setCodec(OGRSFDriver *poDriver);</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span> <span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span> <span class="preprocessor"></span>  <span class="keywordtype">void</span> setCodec(GDALDriver *poDriver);</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span> <span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span> <span class="preprocessor"></span>  </div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span> <span class="comment">//   OGRLayer* getLayer(int layer=0);</span></div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     </div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   std::string m_filename;</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span> <span class="preprocessor">#if GDAL_VERSION_MAJOR < 2</span></div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span> <span class="preprocessor"></span>  OGRDataSource *m_datasource;</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span> <span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span> <span class="preprocessor"></span>  GDALDataset *m_datasource;</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span> <span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span> <span class="preprocessor"></span><span class="comment">//   vector<OGRLayer*> m_layers;</span></div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span> };</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span> </div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span> <span class="preprocessor">#endif // _IMGWRITEROGR_H_</span></div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-<div class="ttc" id="classImgReaderOgr_html"><div class="ttname"><a href="classImgReaderOgr.html">ImgReaderOgr</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderOgr_8h_source.html#l00035">ImgReaderOgr.h:35</a></div></div>
-<div class="ttc" id="classImgWriterOgr_html"><div class="ttname"><a href="classImgWriterOgr.html">ImgWriterOgr</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgWriterOgr_8h_source.html#l00035">ImgWriterOgr.h:35</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/IndexValue_8h_source.html b/doc/html/IndexValue_8h_source.html
deleted file mode 100644
index 3eacdf6..0000000
--- a/doc/html/IndexValue_8h_source.html
+++ /dev/null
@@ -1,121 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/base/IndexValue.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_0af1587c8378955de40f48b4bd1869f0.html">base</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">IndexValue.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">IndexValue.h: class to work with structs containing an index and a value</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2012 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#ifndef _INDEXVALUE_H_</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor"></span><span class="preprocessor">#define _INDEXVALUE_H_</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno"><a class="line" href="structIndexValue.html">   23</a></span> <span class="keyword">struct </span><a class="code" href="structIndexValue.html">IndexValue</a>{</div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span>   <span class="keywordtype">int</span> position;</div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span>   <span class="keywordtype">double</span> value;</div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> };</div>
-<div class="line"><a name="l00027"></a><span class="lineno"><a class="line" href="classCompare__IndexValue.html">   27</a></span> <span class="keyword">class </span><a class="code" href="classCompare__IndexValue.html">Compare_IndexValue</a>{</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span>   <span class="keywordtype">int</span> operator() (<span class="keyword">const</span> <a class="code" href="structIndexValue.html">IndexValue</a>& pv1, <span class="keyword">const</span> <a class="code" href="structIndexValue.html">IndexValue</a>& pv2)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>     <span class="keywordflow">return</span> pv1.value>pv2.value;<span class="comment">//for decreasing order</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span>   }</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> };</div>
-<div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="classDecrease__IndexValue.html">   33</a></span> <span class="keyword">class </span><a class="code" href="classDecrease__IndexValue.html">Decrease_IndexValue</a>{</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>   <span class="keywordtype">int</span> operator() (<span class="keyword">const</span> <a class="code" href="structIndexValue.html">IndexValue</a>& pv1, <span class="keyword">const</span> <a class="code" href="structIndexValue.html">IndexValue</a>& pv2)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>     <span class="keywordflow">return</span> pv1.value>pv2.value;<span class="comment">//for decreasing order</span></div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>   }</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> };</div>
-<div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="classIncrease__IndexValue.html">   39</a></span> <span class="keyword">class </span><a class="code" href="classIncrease__IndexValue.html">Increase_IndexValue</a>{</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>   <span class="keywordtype">int</span> operator() (<span class="keyword">const</span> <a class="code" href="structIndexValue.html">IndexValue</a>& pv1, <span class="keyword">const</span> <a class="code" href="structIndexValue.html">IndexValue</a>& pv2)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     <span class="keywordflow">return</span> pv1.value<pv2.value;<span class="comment">//for increasing order</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   }</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span> };</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span> <span class="preprocessor">#endif </span><span class="comment">/* _INDEXVALUE_H_ */</span><span class="preprocessor"></span></div>
-<div class="ttc" id="classIncrease__IndexValue_html"><div class="ttname"><a href="classIncrease__IndexValue.html">Increase_IndexValue</a></div><div class="ttdef"><b>Definition:</b> <a href="IndexValue_8h_source.html#l00039">IndexValue.h:39</a></div></div>
-<div class="ttc" id="classCompare__IndexValue_html"><div class="ttname"><a href="classCompare__IndexValue.html">Compare_IndexValue</a></div><div class="ttdef"><b>Definition:</b> <a href="IndexValue_8h_source.html#l00027">IndexValue.h:27</a></div></div>
-<div class="ttc" id="structIndexValue_html"><div class="ttname"><a href="structIndexValue.html">IndexValue</a></div><div class="ttdef"><b>Definition:</b> <a href="IndexValue_8h_source.html#l00023">IndexValue.h:23</a></div></div>
-<div class="ttc" id="classDecrease__IndexValue_html"><div class="ttname"><a href="classDecrease__IndexValue.html">Decrease_IndexValue</a></div><div class="ttdef"><b>Definition:</b> <a href="IndexValue_8h_source.html#l00033">IndexValue.h:33</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/OptFactory_8h_source.html b/doc/html/OptFactory_8h_source.html
deleted file mode 100644
index 13e8093..0000000
--- a/doc/html/OptFactory_8h_source.html
+++ /dev/null
@@ -1,288 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/algorithms/OptFactory.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_e6df591b0639d4c4807ef64d058833e2.html">algorithms</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">OptFactory.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">OptFactory.h: factory class for nlopt::opt (selecting algorithm via string)</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2013 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#ifndef _OPTFACTORY_H_</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor"></span><span class="preprocessor">#define _OPTFACTORY_H_</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <map></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> </div>
-<div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="classOptFactory.html">   25</a></span> <span class="keyword">class </span><a class="code" href="classOptFactory.html">OptFactory</a></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> {</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">private</span>:</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span>   <span class="keyword">static</span> <span class="keywordtype">void</span> initMap(std::map<std::string, nlopt::algorithm>& m_algMap){</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span>     <span class="comment">//initialize selMap</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>     m_algMap[<span class="stringliteral">"GN_DIRECT"</span>]=nlopt::GN_DIRECT;</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span>     m_algMap[<span class="stringliteral">"GN_DIRECT_L"</span>]=nlopt::GN_DIRECT_L;</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>     m_algMap[<span class="stringliteral">"GN_DIRECT_L_RAND"</span>]=nlopt::GN_DIRECT_L_RAND;</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>     m_algMap[<span class="stringliteral">"GN_DIRECT_NOSCAL"</span>]=nlopt::GN_DIRECT_NOSCAL;</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>     m_algMap[<span class="stringliteral">"GN_DIRECT_L_NOSCAL"</span>]=nlopt::GN_DIRECT_L_NOSCAL;</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>     m_algMap[<span class="stringliteral">"GN_DIRECT_L_RAND_NOSCAL"</span>]=nlopt::GN_DIRECT_L_RAND_NOSCAL;</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>     m_algMap[<span class="stringliteral">"GN_ORIG_DIRECT"</span>]=nlopt::GN_ORIG_DIRECT;</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>     m_algMap[<span class="stringliteral">"GN_ORIG_DIRECT_L"</span>]=nlopt::GN_ORIG_DIRECT_L;</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>     m_algMap[<span class="stringliteral">"GD_STOGO"</span>]=nlopt::GD_STOGO;</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>     m_algMap[<span class="stringliteral">"GD_STOGO_RAND"</span>]=nlopt::GD_STOGO_RAND;</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     m_algMap[<span class="stringliteral">"LD_LBFGS_NOCEDAL"</span>]=nlopt::LD_LBFGS_NOCEDAL;</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     m_algMap[<span class="stringliteral">"LD_LBFGS"</span>]=nlopt::LD_LBFGS;</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     m_algMap[<span class="stringliteral">"LN_PRAXIS"</span>]=nlopt::LN_PRAXIS;</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     m_algMap[<span class="stringliteral">"LD_VAR1"</span>]=nlopt::LD_VAR1;</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     m_algMap[<span class="stringliteral">"LD_VAR2"</span>]=nlopt::LD_VAR2;</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     m_algMap[<span class="stringliteral">"LD_TNEWTON"</span>]=nlopt::LD_TNEWTON;</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     m_algMap[<span class="stringliteral">"LD_TNEWTON_RESTART"</span>]=nlopt::LD_TNEWTON_RESTART;</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     m_algMap[<span class="stringliteral">"LD_TNEWTON_PRECOND"</span>]=nlopt::LD_TNEWTON_PRECOND;</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     m_algMap[<span class="stringliteral">"LD_TNEWTON_PRECOND_RESTART"</span>]=nlopt::LD_TNEWTON_PRECOND_RESTART;</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     m_algMap[<span class="stringliteral">"GN_CRS2_LM"</span>]=nlopt::GN_CRS2_LM;</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     m_algMap[<span class="stringliteral">"GN_MLSL"</span>]=nlopt::GN_MLSL;</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     m_algMap[<span class="stringliteral">"GD_MLSL"</span>]=nlopt::GD_MLSL;</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     m_algMap[<span class="stringliteral">"GN_MLSL_LDS"</span>]=nlopt::GN_MLSL_LDS;</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     m_algMap[<span class="stringliteral">"GD_MLSL_LDS"</span>]=nlopt::GD_MLSL_LDS;</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     m_algMap[<span class="stringliteral">"LD_MMA"</span>]=nlopt::LD_MMA;</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     m_algMap[<span class="stringliteral">"LN_COBYLA"</span>]=nlopt::LN_COBYLA;</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     m_algMap[<span class="stringliteral">"LN_NEWUOA"</span>]=nlopt::LN_NEWUOA;</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     m_algMap[<span class="stringliteral">"LN_NEWUOA_BOUND"</span>]=nlopt::LN_NEWUOA_BOUND;</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     m_algMap[<span class="stringliteral">"LN_NELDERMEAD"</span>]=nlopt::LN_NELDERMEAD;</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     m_algMap[<span class="stringliteral">"LN_SBPLX"</span>]=nlopt::LN_SBPLX;</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     m_algMap[<span class="stringliteral">"LN_AUGLAG"</span>]=nlopt::LN_AUGLAG;</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     m_algMap[<span class="stringliteral">"LD_AUGLAG"</span>]=nlopt::LD_AUGLAG;</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     m_algMap[<span class="stringliteral">"LN_AUGLAG_EQ"</span>]=nlopt::LN_AUGLAG_EQ;</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     m_algMap[<span class="stringliteral">"LD_AUGLAG_EQ"</span>]=nlopt::LD_AUGLAG_EQ;</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     m_algMap[<span class="stringliteral">"LN_BOBYQA"</span>]=nlopt::LN_BOBYQA;</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     m_algMap[<span class="stringliteral">"GN_ISRES"</span>]=nlopt::GN_ISRES;</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     m_algMap[<span class="stringliteral">"AUGLAG"</span>]=nlopt::AUGLAG;</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>     m_algMap[<span class="stringliteral">"AUGLAG_EQ"</span>]=nlopt::AUGLAG_EQ;</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     m_algMap[<span class="stringliteral">"G_MLSL"</span>]=nlopt::G_MLSL;</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     m_algMap[<span class="stringliteral">"G_MLSL_LDS"</span>]=nlopt::G_MLSL_LDS;</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     m_algMap[<span class="stringliteral">"LD_SLSQP "</span>]=nlopt::LD_SLSQP;</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>   }</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>   <a class="code" href="classOptFactory.html">OptFactory</a>(){</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>   };</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>   ~<a class="code" href="classOptFactory.html">OptFactory</a>(){};</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>   <span class="keyword">static</span> nlopt::opt getOptimizer(<span class="keyword">const</span> std::string& algorithmString, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> npar){</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>     std::map<std::string, nlopt::algorithm> m_algMap;</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>     initMap(m_algMap);</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>     <span class="keywordflow">switch</span>(m_algMap[algorithmString]){</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>     <span class="keywordflow">case</span>(nlopt::GN_DIRECT):{</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>       nlopt::opt theOptimizer(nlopt::GN_DIRECT,npar);</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>       <span class="keywordflow">return</span>(theOptimizer);</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     }</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>     <span class="keywordflow">case</span>(nlopt::GN_DIRECT_L):{</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>       nlopt::opt theOptimizer(nlopt::GN_DIRECT_L,npar);</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>       <span class="keywordflow">return</span>(theOptimizer);</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     }</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     <span class="keywordflow">case</span>(nlopt::GN_DIRECT_L_RAND):{</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>       nlopt::opt theOptimizer(nlopt::GN_DIRECT_L_RAND,npar);</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>       <span class="keywordflow">return</span>(theOptimizer);</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>     }</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>     <span class="keywordflow">case</span>(nlopt::GN_DIRECT_NOSCAL):{</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>       nlopt::opt theOptimizer(nlopt::GN_DIRECT_NOSCAL,npar);</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>       <span class="keywordflow">return</span>(theOptimizer);</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     }</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     <span class="keywordflow">case</span>(nlopt::GN_DIRECT_L_NOSCAL):{</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>       nlopt::opt theOptimizer(nlopt::GN_DIRECT_L_NOSCAL,npar);</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>       <span class="keywordflow">return</span>(theOptimizer);</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     }</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     <span class="keywordflow">case</span>(nlopt::GN_DIRECT_L_RAND_NOSCAL):{</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>       nlopt::opt theOptimizer(nlopt::GN_DIRECT_L_RAND_NOSCAL,npar);</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>       <span class="keywordflow">return</span>(theOptimizer);</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>     }</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>     <span class="keywordflow">case</span>(nlopt::GN_ORIG_DIRECT):{</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>       nlopt::opt theOptimizer(nlopt::GN_ORIG_DIRECT,npar);</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>       <span class="keywordflow">return</span>(theOptimizer);</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     }</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     <span class="keywordflow">case</span>(nlopt::GN_ORIG_DIRECT_L):{</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>       nlopt::opt theOptimizer(nlopt::GN_ORIG_DIRECT_L,npar);</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>       <span class="keywordflow">return</span>(theOptimizer);</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>     }</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>     <span class="keywordflow">case</span>(nlopt::LN_PRAXIS):{</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>       nlopt::opt theOptimizer(nlopt::LN_PRAXIS,npar);</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>       <span class="keywordflow">return</span>(theOptimizer);</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     }</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>     <span class="keywordflow">case</span>(nlopt::GN_CRS2_LM):{</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>       nlopt::opt theOptimizer(nlopt::GN_CRS2_LM,npar);</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>       <span class="keywordflow">return</span>(theOptimizer);</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>     }</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>     <span class="keywordflow">case</span>(nlopt::GN_MLSL):{</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>       nlopt::opt theOptimizer(nlopt::GN_MLSL,npar);</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>       <span class="keywordflow">return</span>(theOptimizer);</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>     }</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>     <span class="keywordflow">case</span>(nlopt::GN_MLSL_LDS):{</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>       nlopt::opt theOptimizer(nlopt::GN_MLSL_LDS,npar);</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>       <span class="keywordflow">return</span>(theOptimizer);</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>     }</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>     <span class="keywordflow">case</span>(nlopt::LN_COBYLA):{</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>       nlopt::opt theOptimizer(nlopt::LN_COBYLA,npar);</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>       <span class="keywordflow">return</span>(theOptimizer);</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>     }</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>     <span class="keywordflow">case</span>(nlopt::LN_NEWUOA):{</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>       nlopt::opt theOptimizer(nlopt::LN_NEWUOA,npar);</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>       <span class="keywordflow">return</span>(theOptimizer);</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>     }</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>     <span class="keywordflow">case</span>(nlopt::LN_NEWUOA_BOUND):{</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>       nlopt::opt theOptimizer(nlopt::LN_NEWUOA_BOUND,npar);</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>       <span class="keywordflow">return</span>(theOptimizer);</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>     }</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>     <span class="keywordflow">case</span>(nlopt::LN_NELDERMEAD):{</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>       nlopt::opt theOptimizer(nlopt::LN_NELDERMEAD,npar);</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>       <span class="keywordflow">return</span>(theOptimizer);</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>     }</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>     <span class="keywordflow">case</span>(nlopt::LN_SBPLX):{</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>       nlopt::opt theOptimizer(nlopt::LN_SBPLX,npar);</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>       <span class="keywordflow">return</span>(theOptimizer);</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>     }</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>     <span class="keywordflow">case</span>(nlopt::LN_AUGLAG):{</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>       nlopt::opt theOptimizer(nlopt::LN_AUGLAG,npar);</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>       <span class="keywordflow">return</span>(theOptimizer);</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>     }</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>     <span class="keywordflow">case</span>(nlopt::LN_AUGLAG_EQ):{</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>       nlopt::opt theOptimizer(nlopt::LN_AUGLAG_EQ,npar);</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>       <span class="keywordflow">return</span>(theOptimizer);</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>     }</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>     <span class="keywordflow">case</span>(nlopt::LN_BOBYQA):{</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>       nlopt::opt theOptimizer(nlopt::LN_BOBYQA,npar);</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>       <span class="keywordflow">return</span>(theOptimizer);</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>     }</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>     <span class="keywordflow">case</span>(nlopt::GN_ISRES):{</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>       nlopt::opt theOptimizer(nlopt::GN_ISRES,npar);</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>       <span class="keywordflow">return</span>(theOptimizer);</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>     }</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>     <span class="keywordflow">case</span>(nlopt::G_MLSL_LDS):</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>     <span class="keywordflow">case</span>(nlopt::AUGLAG):</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>     <span class="keywordflow">case</span>(nlopt::AUGLAG_EQ):</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>     <span class="keywordflow">case</span>(nlopt::G_MLSL):</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>     <span class="keywordflow">case</span>(nlopt::GD_MLSL):</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>     <span class="keywordflow">case</span>(nlopt::GD_MLSL_LDS):</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>     <span class="keywordflow">case</span>(nlopt::GD_STOGO):</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>     <span class="keywordflow">case</span>(nlopt::GD_STOGO_RAND):</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>     <span class="keywordflow">case</span>(nlopt::LD_LBFGS_NOCEDAL):</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>     <span class="keywordflow">case</span>(nlopt::LD_LBFGS):</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>     <span class="keywordflow">case</span>(nlopt::LD_VAR1):</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>     <span class="keywordflow">case</span>(nlopt::LD_VAR2):</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>     <span class="keywordflow">case</span>(nlopt::LD_TNEWTON):</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>     <span class="keywordflow">case</span>(nlopt::LD_TNEWTON_RESTART):</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>     <span class="keywordflow">case</span>(nlopt::LD_TNEWTON_PRECOND):</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>     <span class="keywordflow">case</span>(nlopt::LD_TNEWTON_PRECOND_RESTART):</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>     <span class="keywordflow">case</span>(nlopt::LD_MMA):</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>     <span class="keywordflow">case</span>(nlopt::LD_AUGLAG):</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>     <span class="keywordflow">case</span>(nlopt::LD_AUGLAG_EQ):</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>     <span class="keywordflow">case</span>(nlopt::LD_SLSQP):</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>     <span class="keywordflow">default</span>:{</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>       std::string errorString=<span class="stringliteral">"Error: derivative optimization algorithm "</span>;</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>       errorString+= algorithmString;</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>       errorString+= <span class="stringliteral">" not supported, select derivative-free algorithm ([GL]N_*])"</span>;</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>       <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>     }</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>     }</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>   };</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span> };</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span> <span class="preprocessor">#endif </span><span class="comment">/* _OPTFACTORY_H_ */</span><span class="preprocessor"></span></div>
-<div class="ttc" id="classOptFactory_html"><div class="ttname"><a href="classOptFactory.html">OptFactory</a></div><div class="ttdef"><b>Definition:</b> <a href="OptFactory_8h_source.html#l00025">OptFactory.h:25</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/Optionpk_8cc_source.html b/doc/html/Optionpk_8cc_source.html
deleted file mode 100644
index 69b7aed..0000000
--- a/doc/html/Optionpk_8cc_source.html
+++ /dev/null
@@ -1,183 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/vis_studio/base/Optionpk.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.4</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_457de909e3893805a4d2d0b8c0742bd8.html">vis_studio</a></li><li class="navelem"><a class="el" href="dir_0d45166ba6790a432639a127a727f02c.html">base</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">Optionpk.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">Optionpk.cc: source file used for specialization of template class </span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Optionpk defined in Optionpk.h</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment"></span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment"></span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment"></span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment"></span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> </div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> </div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="keyword">template</span><> <span class="keyword">inline</span> std::string string2type(std::string <span class="keyword">const</span>& s){</div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span>   <span class="keywordflow">return</span> s;</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> }</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> </div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">template</span><> <span class="keyword">inline</span> OGRFieldType string2type(std::string <span class="keyword">const</span>& s){</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span>   OGRFieldType ftype;</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>   <span class="keywordtype">int</span> ogr_typecount=11;<span class="comment">//hard coded for now!</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iType = 0; iType < ogr_typecount; ++iType){</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>     <span class="keywordflow">if</span>( OGRFieldDefn::GetFieldTypeName((OGRFieldType)iType) != NULL</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>         && EQUAL(OGRFieldDefn::GetFieldTypeName((OGRFieldType)iType),s.c_str()))</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>       ftype=(OGRFieldType) iType;</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>   }</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>   <span class="keywordflow">return</span> ftype;</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> }</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> </div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span> <span class="keyword">template</span><> <span class="keyword">inline</span> std::string type2string(<span class="keywordtype">bool</span> <span class="keyword">const</span>& value){</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   <span class="keywordflow">if</span>(value)</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     <span class="keywordflow">return</span>(<span class="stringliteral">"true"</span>);</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     <span class="keywordflow">return</span>(<span class="stringliteral">"false"</span>);</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span> }</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span> </div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span> <span class="keyword">template</span><> <span class="keyword">inline</span> std::string type2string(std::string <span class="keyword">const</span>& value){</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>   <span class="comment">// if(value.empty())</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>   <span class="comment">//   return("<empty string>");</span></div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>   <span class="comment">// else</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     <span class="keywordflow">return</span>(value);</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span> }</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span> </div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span> <span class="keyword">template</span><> <span class="keyword">inline</span> std::string type2string(<span class="keywordtype">float</span> <span class="keyword">const</span>& value){</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>   std::ostringstream oss;</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>   <span class="comment">// oss.precision(1);</span></div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>   <span class="comment">// oss.setf(ios::fixed);</span></div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>   oss << value;</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>   <span class="keywordflow">return</span> oss.str();</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span> }</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span> </div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span> <span class="keyword">template</span><> <span class="keyword">inline</span> std::string type2string(<span class="keywordtype">double</span> <span class="keyword">const</span>& value){</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>   std::ostringstream oss;</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>   <span class="comment">// oss.precision(1);</span></div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>   <span class="comment">//  oss.setf(ios::fixed);</span></div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>   oss << value;</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>   <span class="keywordflow">return</span> oss.str();</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span> }</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span> </div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span> <span class="keyword">template</span><> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classOptionpk.html#affd58e09b1baaf0b1754fbf938eea11a">Optionpk<bool>::setAll</a>(<span class="keyword">const</span> std::string& shortName, <span class="keyword">const</span> std::string& longName, <span class="keyword">const</span> std::string& helpInfo [...]
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span> </div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span> <span class="keyword">template</span><> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classOptionpk.html#affd58e09b1baaf0b1754fbf938eea11a">Optionpk<bool>::setAll</a>(<span class="keyword">const</span> std::string& shortName, <span class="keyword">const</span> std::string& longName, <span class="keyword">const</span> std::string& helpInfo)</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span> {</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>   m_shortName=shortName;</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>   m_longName=longName;</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>   m_hasArgument=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   m_help=helpInfo;</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>   m_hide=0;</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span> }</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span> </div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span> <span class="keyword">template</span><> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classOptionpk.html#affd58e09b1baaf0b1754fbf938eea11a">Optionpk<bool>::setAll</a>(<span class="keyword">const</span> std::string& shortName, <span class="keyword">const</span> std::string& longName, <span class="keyword">const</span> std::string& helpInfo [...]
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span> </div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span> <span class="keyword">template</span><> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classOptionpk.html#affd58e09b1baaf0b1754fbf938eea11a">Optionpk<bool>::setAll</a>(<span class="keyword">const</span> std::string& shortName, <span class="keyword">const</span> std::string& longName, <span class="keyword">const</span> std::string& helpInfo [...]
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span> {</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>   m_shortName=shortName;</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   m_longName=longName;</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   m_hasArgument=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>   m_help=helpInfo;</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>   m_defaultValue=defaultValue;</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>   m_hasDefault=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>   m_hide=hide;</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span> }</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span> </div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span> <span class="keyword">template</span><> <span class="keyword">inline</span> <a class="code" href="classOptionpk.html#a0082d074d437413b3beefa06c0521644">Optionpk<bool>::Optionpk</a>(<span class="keyword">const</span> std::string& shortName, <span class="keyword">const</span> std::string& longName, <span class="keyword">const</span> std::string& helpInfo,<span class="keyword">const</span>  [...]
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span> {</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>   setAll(shortName,longName,helpInfo,defaultValue, hide);</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span> }</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span> </div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span> <span class="comment">//specialization (only makes sense for T=std::string), generic function throws exception</span></div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span> <span class="comment">//find a substring in string option (e.g., option is of type -co INTERLEAVE=BAND)</span></div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span> <span class="keyword">template</span><> <span class="keyword">inline</span> std::vector<std::string>::const_iterator <a class="code" href="classOptionpk.html#a092414f315f6b310fc88eaf5688b81f4">Optionpk<std::string>::findSubstring</a>(<span class="keyword">const</span> std::string& argument)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>   std::vector<std::string>::const_iterator opit=this->begin();</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>   <span class="keywordflow">while</span>(opit!=this->end()){</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     <span class="keywordflow">if</span>(opit->find(argument)!=std::string::npos)</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     ++opit;</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>   }</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>   <span class="keywordflow">return</span> opit;</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span> }</div>
-<div class="ttc" id="classOptionpk_html_a0082d074d437413b3beefa06c0521644"><div class="ttname"><a href="classOptionpk.html#a0082d074d437413b3beefa06c0521644">Optionpk::Optionpk</a></div><div class="ttdeci">Optionpk()</div><div class="ttdoc">default constructor </div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00198">Optionpk.h:198</a></div></div>
-<div class="ttc" id="classOptionpk_html_a092414f315f6b310fc88eaf5688b81f4"><div class="ttname"><a href="classOptionpk.html#a092414f315f6b310fc88eaf5688b81f4">Optionpk::findSubstring</a></div><div class="ttdeci">std::vector< T >::const_iterator findSubstring(const T &argument) const </div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00160">Optionpk.h:160</a></div></div>
-<div class="ttc" id="classOptionpk_html_affd58e09b1baaf0b1754fbf938eea11a"><div class="ttname"><a href="classOptionpk.html#affd58e09b1baaf0b1754fbf938eea11a">Optionpk::setAll</a></div><div class="ttdeci">void setAll(const std::string &shortName, const std::string &longName, const std::string &helpInfo)</div><div class="ttdoc">set all attributes of the option, except default and hide </div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00277">Optionpk. [...]
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Tue Nov 3 2015 15:58:27 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/Optionpk_8h_source.html b/doc/html/Optionpk_8h_source.html
deleted file mode 100644
index 1688cdd..0000000
--- a/doc/html/Optionpk_8h_source.html
+++ /dev/null
@@ -1,490 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/base/Optionpk.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_0af1587c8378955de40f48b4bd1869f0.html">base</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">Optionpk.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">Optionpk.h: class to handle command line options (inherits from stl vector class)</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2012 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#ifndef _OPTIONPK_H_</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor"></span><span class="preprocessor">#define _OPTIONPK_H_</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <vector></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <string></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include <cstdlib></span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include <assert.h></span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include <stdexcept></span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include <iostream></span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include <iomanip></span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include <sstream></span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="preprocessor">#include <typeinfo></span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="preprocessor">#ifndef WIN32</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="preprocessor"></span><span class="preprocessor">#include <cxxabi.h></span></div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="preprocessor">#define mytypeid(T) abi::__cxa_demangle(typeid(T).name(),0,0,&status)</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="preprocessor"></span><span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="preprocessor"></span><span class="preprocessor">#define mytypeid(T) typeid(T).name()</span></div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="preprocessor"></span><span class="preprocessor">#include "ogr_feature.h"</span></div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> </div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> <span class="preprocessor">#ifdef HAVE_CONFIG_H</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="preprocessor"></span><span class="preprocessor">#include <config.h></span></div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span> <span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classBadConversion.html">   45</a></span> <span class="keyword">class </span><a class="code" href="classBadConversion.html">BadConversion</a> : <span class="keyword">public</span> std::runtime_error {</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>  <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>  <a class="code" href="classBadConversion.html">BadConversion</a>(std::string <span class="keyword">const</span>& s)</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>    : runtime_error(s)</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     { }</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span> };</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span> </div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">inline</span> T string2type(std::string <span class="keyword">const</span>& s){</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>   std::istringstream i(s);</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>   T x;</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>   <span class="keywordflow">if</span> (!(i >> x) )</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>      <span class="keywordflow">throw</span> <a class="code" href="classBadConversion.html">BadConversion</a>(s);</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>   <span class="keywordflow">return</span> x;</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span> }</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span> </div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">inline</span> T string2type(std::string <span class="keyword">const</span>& s,<span class="keywordtype">bool</span> failIfLeftoverChars){</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>   std::istringstream i(s);</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>   <span class="keywordtype">char</span> c;</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>   T x;</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>   <span class="keywordflow">if</span> (!(i >> x) || (failIfLeftoverChars && i.get(c)))</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>      <span class="keywordflow">throw</span> <a class="code" href="classBadConversion.html">BadConversion</a>(s);</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>   <span class="keywordflow">return</span> x;</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span> }</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span> </div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">inline</span> std::string type2string(T <span class="keyword">const</span>& value){</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>   std::ostringstream oss;</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>   oss << value;</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>   <span class="keywordflow">return</span> oss.str();</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span> }</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span> </div>
-<div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="classOptionpk.html">  106</a></span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">class </span><a class="code" href="classOptionpk.html">Optionpk</a> : <span class="keyword">public</span> std::vector <T></div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span> {</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   <a class="code" href="classOptionpk.html#a0082d074d437413b3beefa06c0521644">Optionpk</a>();</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>   <a class="code" href="classOptionpk.html#a0082d074d437413b3beefa06c0521644">Optionpk</a>(<span class="keyword">const</span> std::string& shortName, <span class="keyword">const</span> std::string& longName, <span class="keyword">const</span> std::string& helpInfo);</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   <a class="code" href="classOptionpk.html#a0082d074d437413b3beefa06c0521644">Optionpk</a>(<span class="keyword">const</span> std::string& shortName, <span class="keyword">const</span> std::string& longName, <span class="keyword">const</span> std::string& helpInfo,<span class="keyword">const</span> T& defaultValue, <span class="keywordtype">short</span> hide=0);</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>   <a class="code" href="classOptionpk.html#aacf921491e6b6fab3c4cad8b39594cff">~Optionpk</a>();</div>
-<div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classOptionpk.html#afea9af606e15b12bc49bc25d0477fe8e">  118</a></span>   <span class="keywordtype">void</span> <a class="code" href="classOptionpk.html#afea9af606e15b12bc49bc25d0477fe8e">setHelp</a>(<span class="keyword">const</span> std::string& helpInfo){m_help=helpInfo;};</div>
-<div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="classOptionpk.html#a95628f0f149cb9465468facfb3f0f915">  120</a></span>   <span class="keywordtype">void</span> <a class="code" href="classOptionpk.html#a95628f0f149cb9465468facfb3f0f915">setHide</a>(<span class="keywordtype">short</span> hide){m_hide=hide;};</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   <span class="keywordtype">bool</span> <a class="code" href="classOptionpk.html#a7b788a1b8e5c738732a1733613065ef7">retrieveOption</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> ** argv);</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>   <span class="keyword">template</span><<span class="keyword">class</span> T1> <span class="keyword">friend</span> std::ostream& operator<<(std::ostream & os, const Optionpk<T1>& theOption);</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>   <span class="keywordtype">void</span> <a class="code" href="classOptionpk.html#affd58e09b1baaf0b1754fbf938eea11a">setAll</a>(<span class="keyword">const</span> std::string& shortName, <span class="keyword">const</span> std::string& longName, <span class="keyword">const</span> std::string& helpInfo);</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>   <span class="keywordtype">void</span> <a class="code" href="classOptionpk.html#affd58e09b1baaf0b1754fbf938eea11a">setAll</a>(<span class="keyword">const</span> std::string& shortName, <span class="keyword">const</span> std::string& longName, <span class="keyword">const</span> std::string& helpInfo,<span class="keyword">const</span> T& defaultValue, <span class="keywordtype">short</span> hide);</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>   <span class="keywordtype">void</span> <a class="code" href="classOptionpk.html#ae9dc2dafc605ed3e2a8a798063ce7187">setDefault</a>(<span class="keyword">const</span> T& defaultValue);</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>   std::string getDefaultValue()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_defaultValue;};</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>   <span class="keywordtype">void</span> <a class="code" href="classOptionpk.html#a561e7d4b4141cd9023563d4dee01b932">setShortName</a>(<span class="keyword">const</span> std::string& shortName);</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>   <span class="keywordtype">void</span> <a class="code" href="classOptionpk.html#a6ee7c0fc0cbea09eac543e1d2c5b7457">setLongName</a>(<span class="keyword">const</span> std::string& longName);</div>
-<div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="classOptionpk.html#ae0d0d55bac2456e6cbcec97892667742">  137</a></span>   std::string <a class="code" href="classOptionpk.html#ae0d0d55bac2456e6cbcec97892667742">getShortName</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_shortName;};</div>
-<div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classOptionpk.html#af7ce0ff4dfe57f1e6685b67fb1d70b69">  139</a></span>   std::string <a class="code" href="classOptionpk.html#af7ce0ff4dfe57f1e6685b67fb1d70b69">getLongName</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_longName;};</div>
-<div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="classOptionpk.html#a6054c64a684a4aaba41787d9f8be031f">  141</a></span>   std::string <a class="code" href="classOptionpk.html#a6054c64a684a4aaba41787d9f8be031f">getHelp</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_help;};</div>
-<div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="classOptionpk.html#acb7e411ce6a318424bf2ad1f9dc846ff">  143</a></span>   <span class="keyword">static</span> std::string <a class="code" href="classOptionpk.html#acb7e411ce6a318424bf2ad1f9dc846ff">getGPLv3License</a>(){</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>     <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>std::string<span class="keyword">></span>(<span class="stringliteral">"\n\</span></div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span> <span class="stringliteral">    This program is free software: you can redistribute it and/or modify\n\</span></div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span> <span class="stringliteral">    it under the terms of the GNU General Public License as published by\n\</span></div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span> <span class="stringliteral">    the Free Software Foundation, either version 3 of the License, or\n\</span></div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span> <span class="stringliteral">    (at your option) any later version.\n\</span></div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span> <span class="stringliteral">    \n\</span></div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span> <span class="stringliteral">    This program is distributed in the hope that it will be useful,\n\</span></div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span> <span class="stringliteral">    but WITHOUT ANY WARRANTY; without even the implied warranty of\n\</span></div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span> <span class="stringliteral">    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n\</span></div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span> <span class="stringliteral">    GNU General Public License for more details.\n\</span></div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span> <span class="stringliteral">                                          \n\</span></div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span> <span class="stringliteral">    You should have received a copy of the GNU General Public License\n\</span></div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span> <span class="stringliteral">    along with this program.  If not, see <http://www.gnu.org/licenses/>.\n"</span>);};</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span> </div>
-<div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="classOptionpk.html#a092414f315f6b310fc88eaf5688b81f4">  160</a></span>   <span class="keyword">typename</span> std::vector<T>::const_iterator <a class="code" href="classOptionpk.html#a092414f315f6b310fc88eaf5688b81f4">findSubstring</a>(<span class="keyword">const</span> T& argument)<span class="keyword"> const </span>{std::string errorString=<span class="stringliteral">"Error: findSubstr [...]
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span> </div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>  <span class="keyword">private</span>:</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>   <span class="keywordtype">bool</span> hasArgument()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_hasArgument;};</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>   <span class="keywordtype">bool</span> hasShortOption()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_shortName.compare(<span class="stringliteral">"\0"</span>);};</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>   <span class="keywordtype">bool</span> hasLongOption()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_longName.compare(<span class="stringliteral">"\0"</span>);};</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>   std::string usage() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>   std::string usageDoxygen() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>   std::string m_shortName;</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>   std::string m_longName;</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>   std::string m_help;</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>   <span class="keywordtype">bool</span> m_hasArgument;</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>   T m_defaultValue;</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>   <span class="keywordtype">bool</span> m_hasDefault;</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>   <span class="keywordtype">short</span> m_hide;</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span> };</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span> </div>
-<div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="classOptionpk.html#a4ab58d03540efa49fe3ebf6a58507f23">  189</a></span> <span class="keyword">template</span><<span class="keyword">class</span> T1> std::ostream& operator<<(std::ostream& os, const Optionpk<T1>& theOption)</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span> {</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>   os << theOption.getLongName() << <span class="stringliteral">": "</span>;</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> index=0;index<theOption.size();++index)</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>     os << type2string<T1>(theOption[index]) << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>   os << std::endl;</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>   <span class="keywordflow">return</span> os;</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span> }</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span> </div>
-<div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="classOptionpk.html#a0082d074d437413b3beefa06c0521644">  198</a></span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">inline</span> <a class="code" href="classOptionpk.html#a0082d074d437413b3beefa06c0521644">Optionpk<T>::Optionpk</a>() </div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span> : m_hasDefault(false)</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span> {</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span> }</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span> </div>
-<div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="classOptionpk.html#a027b169ab11595296121c5e1b8499c6e">  209</a></span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">inline</span> <a class="code" href="classOptionpk.html#a0082d074d437413b3beefa06c0521644">Optionpk<T>::Optionpk</a>(<span class="keyword">const</span> std::string& shortName, <span class="keyword">const</span> std::strin [...]
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span> : m_hasDefault(false)</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span> {</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>   <a class="code" href="classOptionpk.html#affd58e09b1baaf0b1754fbf938eea11a">setAll</a>(shortName,longName,helpInfo);</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span> }</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span> </div>
-<div class="line"><a name="l00225"></a><span class="lineno"><a class="line" href="classOptionpk.html#a4356ce7db419ff66abd207028ff1e2fc">  225</a></span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">inline</span> <a class="code" href="classOptionpk.html#a0082d074d437413b3beefa06c0521644">Optionpk<T>::Optionpk</a>(<span class="keyword">const</span> std::string& shortName, <span class="keyword">const</span> std::strin [...]
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span> {</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>   setAll(shortName,longName,helpInfo,defaultValue, hide);</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span> }</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span> </div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">inline</span> std::string <a class="code" href="classOptionpk.html">Optionpk<T>::usage</a>()<span class="keyword"> const</span></div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>   std::ostringstream helpss;</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>   std::string shortOption=m_shortName;</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>   std::string longOption=m_longName;</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>   shortOption.insert(0,<span class="stringliteral">"-"</span>);</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>   longOption.insert(0,<span class="stringliteral">"--"</span>);</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>   <span class="keywordflow">if</span>(hasShortOption())</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>     helpss << <span class="stringliteral">"   "</span> << std::setiosflags(std::ios::left) << std::setw(4) << shortOption;</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>     helpss << <span class="stringliteral">"   "</span> << std::setiosflags(std::ios::left) << std::setw(4) << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>   <span class="keywordflow">if</span>(hasLongOption())</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>     helpss << <span class="stringliteral">"   "</span> << std::setiosflags(std::ios::left) << std::setw(20) << longOption;</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>     helpss << <span class="stringliteral">"   "</span> << std::setiosflags(std::ios::left) << std::setw(20) << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>   helpss << <span class="stringliteral">"   "</span> << m_help;</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>   <span class="keywordflow">if</span>(m_hasDefault)</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>     helpss << <span class="stringliteral">" (default: "</span> << type2string<T>(m_defaultValue) << <span class="stringliteral">")"</span>;</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>   <span class="keywordflow">return</span> helpss.str();</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span> }</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span> </div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">inline</span> std::string <a class="code" href="classOptionpk.html">Optionpk<T>::usageDoxygen</a>()<span class="keyword"> const</span></div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>   std::ostringstream helpss;</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>   std::string shortOption=m_shortName;</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>   std::string longOption=m_longName;</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span> </div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>   <span class="keywordflow">if</span>(hasShortOption())</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>     helpss << <span class="stringliteral">" | "</span> << std::setiosflags(std::ios::left) << std::setw(6) << shortOption << <span class="stringliteral">" | "</span>;</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>     helpss << <span class="stringliteral">" | "</span> << std::setiosflags(std::ios::left) << <span class="stringliteral">"       | "</span>;</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>   <span class="keywordflow">if</span>(hasLongOption())</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>     helpss << std::setiosflags(std::ios::left) << std::setw(20) << longOption << <span class="stringliteral">" | "</span>;</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>     helpss << std::setiosflags(std::ios::left) << <span class="stringliteral">"                     | "</span>;</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>   <span class="keywordtype">int</span> status;</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>   helpss << std::setiosflags(std::ios::left) << std::setw(4) << mytypeid(T) << <span class="stringliteral">" | "</span>;</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>   <span class="comment">//helpss << std::setiosflags(std::ios::left) << std::setw(4) << abi::__cxa_demangle(typeid(T).name(),0,0,&status) << " | ";</span></div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>   <span class="keywordflow">if</span>(m_hasDefault)</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>     helpss <<std::setiosflags(std::ios::left) << std::setw(5) << type2string<T>(m_defaultValue) << <span class="stringliteral">" |"</span>;</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>     helpss << <span class="stringliteral">"      |"</span>;</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>   helpss << m_help << <span class="stringliteral">" | "</span>;</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span> </div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>   <span class="keywordflow">return</span> helpss.str();</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span> }</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span> </div>
-<div class="line"><a name="l00277"></a><span class="lineno"><a class="line" href="classOptionpk.html#affd58e09b1baaf0b1754fbf938eea11a">  277</a></span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classOptionpk.html#affd58e09b1baaf0b1754fbf938eea11a">Optionpk<T>::setAll</a>(<span class="keyword">const</span> std::string& shortName, <span cla [...]
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span> {</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>   m_shortName=shortName;</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>   m_longName=longName;</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>   m_hasArgument=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>   m_help=helpInfo;</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>   m_hide=0;</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span> }</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span> </div>
-<div class="line"><a name="l00286"></a><span class="lineno"><a class="line" href="classOptionpk.html#a7fda7da55d4511d6868e86bd67a90aa9">  286</a></span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classOptionpk.html#affd58e09b1baaf0b1754fbf938eea11a">Optionpk<T>::setAll</a>(<span class="keyword">const</span> std::string& shortName, <span cla [...]
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span> {</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>   m_shortName=shortName;</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>   m_longName=longName;</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>   m_hasArgument=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>   m_help=helpInfo;</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>   m_defaultValue=defaultValue;</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>   m_hasDefault=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>   m_hide=hide;</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span> }</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span> </div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span> </div>
-<div class="line"><a name="l00298"></a><span class="lineno"><a class="line" href="classOptionpk.html#aacf921491e6b6fab3c4cad8b39594cff">  298</a></span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">inline</span> <a class="code" href="classOptionpk.html#aacf921491e6b6fab3c4cad8b39594cff">Optionpk<T>::~Optionpk</a>() </div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span> {</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span> }</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span> </div>
-<div class="line"><a name="l00305"></a><span class="lineno"><a class="line" href="classOptionpk.html#a7b788a1b8e5c738732a1733613065ef7">  305</a></span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classOptionpk.html#a7b788a1b8e5c738732a1733613065ef7">Optionpk<T>::retrieveOption</a>(<span class="keywordtype">int</span> argc, <span class="keywordt [...]
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>   <span class="keywordtype">bool</span> noHelp=<span class="keyword">true</span>;<span class="comment">//return value, alert main program that hard coded option (help, version, license, doxygen) was invoked</span></div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>   std::string helpStringShort=<span class="stringliteral">"-h"</span>;<span class="comment">//short option for help (hard coded)</span></div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>   std::string helpStringLong=<span class="stringliteral">"--help"</span>;<span class="comment">//long option for help (hard coded)</span></div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>   std::string helpStringDoxygen=<span class="stringliteral">"--doxygen"</span>;<span class="comment">//option to create table of options ready to use for doxygen</span></div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>   std::string versionString=<span class="stringliteral">"--version"</span>;<span class="comment">//option to show current version</span></div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>   std::string licenseString=<span class="stringliteral">"--license"</span>;<span class="comment">//option to show current version</span></div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 1; i < argc; ++i ){</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>     std::string currentArgument;</div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>     std::string currentOption=argv[i];</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>     std::string shortOption=m_shortName;</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>     std::string longOption=m_longName;</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>     shortOption.insert(0,<span class="stringliteral">"-"</span>);</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>     longOption.insert(0,<span class="stringliteral">"--"</span>);</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>     <span class="keywordtype">size_t</span> foundEqual=currentOption.rfind(<span class="stringliteral">"="</span>);</div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>     <span class="keywordflow">if</span>(foundEqual!=std::string::npos){</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>       currentArgument=currentOption.substr(foundEqual+1);</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>       currentOption=currentOption.substr(0,foundEqual);</div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>     }</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>     <span class="keywordflow">if</span>(!helpStringShort.compare(currentOption)){</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>       <span class="keywordflow">if</span>(m_hide<1)</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>         std::cout << usage() << std::endl;</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>       noHelp=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>     }</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!helpStringLong.compare(currentOption)){</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>       <span class="keywordflow">if</span>(m_hide<2)</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>         std::cout << usage() << std::endl;</div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>       noHelp=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>     }</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!helpStringDoxygen.compare(currentOption)){</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>       <span class="keywordflow">if</span>(m_hide<2)</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>         std::cout << usageDoxygen() << std::endl;</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>       noHelp=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>     }</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!versionString.compare(currentOption)){</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>       std::string theVersion=<span class="stringliteral">"version "</span>;</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>       theVersion+=VERSION;</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>       theVersion+=<span class="stringliteral">", Copyright (C) Pieter Kempeneers.\n\</span></div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span> <span class="stringliteral">   This program comes with ABSOLUTELY NO WARRANTY; for details type use option -h.\n \</span></div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span> <span class="stringliteral">   This is free software, and you are welcome to redistribute it\n      \</span></div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span> <span class="stringliteral">   under certain conditions; use option --license for details."</span>;</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>       <span class="keywordflow">throw</span>(theVersion);<span class="comment">//no need to continue registering (break prevents from multiplication of version info)</span></div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>     }</div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!licenseString.compare(currentOption)){</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>       <span class="keywordflow">throw</span>(getGPLv3License());</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>     }</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>     <span class="keywordflow">if</span>(hasShortOption()&&!(shortOption.compare(currentOption))){<span class="comment">//for -option</span></div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>       <span class="keywordflow">if</span>(foundEqual!=std::string::npos)</div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>         this->push_back(string2type<T>(currentArgument));</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_hasArgument && i < argc-1)</div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>         this->push_back(string2type<T>(argv[++i]));</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>         this->push_back(string2type<T>(<span class="stringliteral">"1"</span>));</div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>     }</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(hasLongOption()&&!(longOption.compare(currentOption))){<span class="comment">//for --option</span></div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>       <span class="keywordflow">if</span>(foundEqual!=std::string::npos)</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>         this->push_back(string2type<T>(currentArgument));</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_hasArgument && i < argc-1)</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>         this->push_back(string2type<T>(argv[++i]));</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>         this->push_back(string2type<T>(<span class="stringliteral">"1"</span>));</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>     }</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>   }</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>   <span class="keywordflow">if</span>(!(this->size())&&m_hasDefault)<span class="comment">//only set default value if no options were given</span></div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>     this->push_back(m_defaultValue);</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>   <span class="keywordflow">return</span>(noHelp);</div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span> }</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span> </div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span> <span class="comment">//template<class T> typename std::vector<T>::const_iterator Optionpk<T>::findSubstring(const T& argument) const {std::string errorString="Error: findSubstring only defined for options of type std::string"; throw(errorString);}</span></div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span> </div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span> <span class="comment">//todo: to be put in .cc file</span></div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span> <span class="comment"></span></div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span> <span class="keyword">template</span><> <span class="keyword">inline</span> std::string string2type(std::string <span class="keyword">const</span>& s){</div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>   <span class="keywordflow">return</span> s;</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span> }</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span> </div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span> <span class="keyword">template</span><> <span class="keyword">inline</span> <span class="keywordtype">double</span> string2type(std::string <span class="keyword">const</span>& s){</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>   std::istringstream i;</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>   i.precision(12);</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>   i.str(s);</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>   <span class="keywordtype">double</span> x;</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>   <span class="keywordflow">if</span> (!(i >> std::setprecision(12) >> x) )</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>      <span class="keywordflow">throw</span> <a class="code" href="classBadConversion.html">BadConversion</a>(s);</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>   <span class="keywordflow">return</span> x;</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span> }</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span> </div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span> <span class="keyword">template</span><> <span class="keyword">inline</span> <span class="keywordtype">float</span> string2type(std::string <span class="keyword">const</span>& s){</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>   std::istringstream i;</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>   i.precision(12);</div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>   i.str(s);</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>   <span class="keywordtype">float</span> x;</div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>   <span class="keywordflow">if</span> (!(i >> std::setprecision(12) >> x) )</div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>      <span class="keywordflow">throw</span> <a class="code" href="classBadConversion.html">BadConversion</a>(s);</div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>   <span class="keywordflow">return</span> x;</div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span> }</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span> </div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span> <span class="keyword">template</span><> <span class="keyword">inline</span> OGRFieldType string2type(std::string <span class="keyword">const</span>& s){</div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>   OGRFieldType ftype;</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>   <span class="keywordtype">int</span> ogr_typecount=11;<span class="comment">//hard coded for now!</span></div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iType = 0; iType < ogr_typecount; ++iType){</div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>     <span class="keywordflow">if</span>( OGRFieldDefn::GetFieldTypeName((OGRFieldType)iType) != NULL</div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span>         && EQUAL(OGRFieldDefn::GetFieldTypeName((OGRFieldType)iType),s.c_str()))</div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>       ftype=(OGRFieldType) iType;</div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>   }</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>   <span class="keywordflow">return</span> ftype;</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span> }</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span> </div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span> <span class="keyword">template</span><> <span class="keyword">inline</span> std::string type2string(<span class="keywordtype">bool</span> <span class="keyword">const</span>& value){</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>   <span class="keywordflow">if</span>(value)</div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>     <span class="keywordflow">return</span>(<span class="stringliteral">"true"</span>);</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>     <span class="keywordflow">return</span>(<span class="stringliteral">"false"</span>);</div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span> }</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span> </div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span> <span class="keyword">template</span><> <span class="keyword">inline</span> std::string type2string(std::string <span class="keyword">const</span>& value){</div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span>   <span class="comment">// if(value.empty())</span></div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>   <span class="comment">//   return("<empty string>");</span></div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span>   <span class="comment">// else</span></div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span>     <span class="keywordflow">return</span>(value);</div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span> }</div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span> </div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span> <span class="keyword">template</span><> <span class="keyword">inline</span> std::string type2string(<span class="keywordtype">float</span> <span class="keyword">const</span>& value){</div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span>   std::ostringstream oss;</div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span>   <span class="comment">// oss.precision(1);</span></div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>   <span class="comment">// oss.setf(ios::fixed);</span></div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>   oss << value;</div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span>   <span class="keywordflow">return</span> oss.str();</div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span> }</div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span> </div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span> <span class="keyword">template</span><> <span class="keyword">inline</span> std::string type2string(<span class="keywordtype">double</span> <span class="keyword">const</span>& value){</div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span>   std::ostringstream oss;</div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span>   <span class="comment">// oss.precision(1);</span></div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span>   <span class="comment">//  oss.setf(ios::fixed);</span></div>
-<div class="line"><a name="l00445"></a><span class="lineno">  445</span>   oss << value;</div>
-<div class="line"><a name="l00446"></a><span class="lineno">  446</span>   <span class="keywordflow">return</span> oss.str();</div>
-<div class="line"><a name="l00447"></a><span class="lineno">  447</span> }</div>
-<div class="line"><a name="l00448"></a><span class="lineno">  448</span> </div>
-<div class="line"><a name="l00450"></a><span class="lineno">  450</span> <span class="keyword">template</span><> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classOptionpk.html#affd58e09b1baaf0b1754fbf938eea11a">Optionpk<bool>::setAll</a>(<span class="keyword">const</span> std::string& shortName, <span class="keyword">const</span> std::string& longName, <span class="keyword">const</span> std::string& helpInfo)</div>
-<div class="line"><a name="l00451"></a><span class="lineno">  451</span> {</div>
-<div class="line"><a name="l00452"></a><span class="lineno">  452</span>   m_shortName=shortName;</div>
-<div class="line"><a name="l00453"></a><span class="lineno">  453</span>   m_longName=longName;</div>
-<div class="line"><a name="l00454"></a><span class="lineno">  454</span>   m_hasArgument=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span>   m_help=helpInfo;</div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</span>   m_hide=0;</div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span> }</div>
-<div class="line"><a name="l00458"></a><span class="lineno">  458</span> </div>
-<div class="line"><a name="l00460"></a><span class="lineno">  460</span> <span class="keyword">template</span><> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classOptionpk.html#affd58e09b1baaf0b1754fbf938eea11a">Optionpk<bool>::setAll</a>(<span class="keyword">const</span> std::string& shortName, <span class="keyword">const</span> std::string& longName, <span class="keyword">const</span> std::string& helpInfo [...]
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span> {</div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span>   m_shortName=shortName;</div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span>   m_longName=longName;</div>
-<div class="line"><a name="l00464"></a><span class="lineno">  464</span>   m_hasArgument=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span>   m_help=helpInfo;</div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>   m_defaultValue=defaultValue;</div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span>   m_hasDefault=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span>   m_hide=hide;</div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span> }</div>
-<div class="line"><a name="l00470"></a><span class="lineno">  470</span> </div>
-<div class="line"><a name="l00472"></a><span class="lineno">  472</span> <span class="keyword">template</span><> <span class="keyword">inline</span> <a class="code" href="classOptionpk.html#a0082d074d437413b3beefa06c0521644">Optionpk<bool>::Optionpk</a>(<span class="keyword">const</span> std::string& shortName, <span class="keyword">const</span> std::string& longName, <span class="keyword">const</span> std::string& helpInfo)</div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span> {</div>
-<div class="line"><a name="l00474"></a><span class="lineno">  474</span>   setAll(shortName,longName,helpInfo);</div>
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span> }</div>
-<div class="line"><a name="l00476"></a><span class="lineno">  476</span> </div>
-<div class="line"><a name="l00478"></a><span class="lineno">  478</span> <span class="keyword">template</span><> <span class="keyword">inline</span> <a class="code" href="classOptionpk.html#a0082d074d437413b3beefa06c0521644">Optionpk<bool>::Optionpk</a>(<span class="keyword">const</span> std::string& shortName, <span class="keyword">const</span> std::string& longName, <span class="keyword">const</span> std::string& helpInfo,<span class="keyword">const</span>  [...]
-<div class="line"><a name="l00479"></a><span class="lineno">  479</span> {</div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span>   setAll(shortName,longName,helpInfo,defaultValue, hide);</div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span> }</div>
-<div class="line"><a name="l00482"></a><span class="lineno">  482</span> </div>
-<div class="line"><a name="l00483"></a><span class="lineno">  483</span> <span class="comment">//specialization (only makes sense for T=std::string), generic function throws exception</span></div>
-<div class="line"><a name="l00484"></a><span class="lineno">  484</span> <span class="comment">//find a substring in string option (e.g., option is of type -co INTERLEAVE=BAND)</span></div>
-<div class="line"><a name="l00485"></a><span class="lineno">  485</span> <span class="keyword">template</span><> <span class="keyword">inline</span> std::vector<std::string>::const_iterator <a class="code" href="classOptionpk.html#a092414f315f6b310fc88eaf5688b81f4">Optionpk<std::string>::findSubstring</a>(<span class="keyword">const</span> std::string& argument)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00486"></a><span class="lineno">  486</span>   std::vector<std::string>::const_iterator opit=this->begin();</div>
-<div class="line"><a name="l00487"></a><span class="lineno">  487</span>   <span class="keywordflow">while</span>(opit!=this->end()){</div>
-<div class="line"><a name="l00488"></a><span class="lineno">  488</span>     <span class="keywordflow">if</span>(opit->find(argument)!=std::string::npos)</div>
-<div class="line"><a name="l00489"></a><span class="lineno">  489</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span>     ++opit;</div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span>   }</div>
-<div class="line"><a name="l00492"></a><span class="lineno">  492</span>   <span class="keywordflow">return</span> opit;</div>
-<div class="line"><a name="l00493"></a><span class="lineno">  493</span> }</div>
-<div class="line"><a name="l00494"></a><span class="lineno">  494</span> </div>
-<div class="line"><a name="l00495"></a><span class="lineno">  495</span> <span class="preprocessor">#endif</span></div>
-<div class="ttc" id="classBadConversion_html"><div class="ttname"><a href="classBadConversion.html">BadConversion</a></div><div class="ttdoc">throw this class when syntax error in command line option </div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00045">Optionpk.h:45</a></div></div>
-<div class="ttc" id="classOptionpk_html_ae0d0d55bac2456e6cbcec97892667742"><div class="ttname"><a href="classOptionpk.html#ae0d0d55bac2456e6cbcec97892667742">Optionpk::getShortName</a></div><div class="ttdeci">std::string getShortName() const </div><div class="ttdoc">get the short name to be used as -shortName </div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00137">Optionpk.h:137</a></div></div>
-<div class="ttc" id="classOptionpk_html_a0082d074d437413b3beefa06c0521644"><div class="ttname"><a href="classOptionpk.html#a0082d074d437413b3beefa06c0521644">Optionpk::Optionpk</a></div><div class="ttdeci">Optionpk()</div><div class="ttdoc">default constructor </div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00198">Optionpk.h:198</a></div></div>
-<div class="ttc" id="classOptionpk_html_aacf921491e6b6fab3c4cad8b39594cff"><div class="ttname"><a href="classOptionpk.html#aacf921491e6b6fab3c4cad8b39594cff">Optionpk::~Optionpk</a></div><div class="ttdeci">~Optionpk()</div><div class="ttdoc">default destructor </div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00298">Optionpk.h:298</a></div></div>
-<div class="ttc" id="classOptionpk_html_a6054c64a684a4aaba41787d9f8be031f"><div class="ttname"><a href="classOptionpk.html#a6054c64a684a4aaba41787d9f8be031f">Optionpk::getHelp</a></div><div class="ttdeci">std::string getHelp() const </div><div class="ttdoc">get help info stored in m_help </div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00141">Optionpk.h:141</a></div></div>
-<div class="ttc" id="classOptionpk_html_ae9dc2dafc605ed3e2a8a798063ce7187"><div class="ttname"><a href="classOptionpk.html#ae9dc2dafc605ed3e2a8a798063ce7187">Optionpk::setDefault</a></div><div class="ttdeci">void setDefault(const T &defaultValue)</div><div class="ttdoc">set a default value for the option </div></div>
-<div class="ttc" id="classOptionpk_html_afea9af606e15b12bc49bc25d0477fe8e"><div class="ttname"><a href="classOptionpk.html#afea9af606e15b12bc49bc25d0477fe8e">Optionpk::setHelp</a></div><div class="ttdeci">void setHelp(const std::string &helpInfo)</div><div class="ttdoc">set help information </div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00118">Optionpk.h:118</a></div></div>
-<div class="ttc" id="classOptionpk_html_a092414f315f6b310fc88eaf5688b81f4"><div class="ttname"><a href="classOptionpk.html#a092414f315f6b310fc88eaf5688b81f4">Optionpk::findSubstring</a></div><div class="ttdeci">std::vector< T >::const_iterator findSubstring(const T &argument) const </div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00160">Optionpk.h:160</a></div></div>
-<div class="ttc" id="classOptionpk_html_acb7e411ce6a318424bf2ad1f9dc846ff"><div class="ttname"><a href="classOptionpk.html#acb7e411ce6a318424bf2ad1f9dc846ff">Optionpk::getGPLv3License</a></div><div class="ttdeci">static std::string getGPLv3License()</div><div class="ttdoc">get license info </div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00143">Optionpk.h:143</a></div></div>
-<div class="ttc" id="classOptionpk_html_a6ee7c0fc0cbea09eac543e1d2c5b7457"><div class="ttname"><a href="classOptionpk.html#a6ee7c0fc0cbea09eac543e1d2c5b7457">Optionpk::setLongName</a></div><div class="ttdeci">void setLongName(const std::string &longName)</div><div class="ttdoc">set the long name to be used as –longName </div></div>
-<div class="ttc" id="classOptionpk_html_af7ce0ff4dfe57f1e6685b67fb1d70b69"><div class="ttname"><a href="classOptionpk.html#af7ce0ff4dfe57f1e6685b67fb1d70b69">Optionpk::getLongName</a></div><div class="ttdeci">std::string getLongName() const </div><div class="ttdoc">get the long name to be used as –longName </div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00139">Optionpk.h:139</a></div></div>
-<div class="ttc" id="classOptionpk_html_affd58e09b1baaf0b1754fbf938eea11a"><div class="ttname"><a href="classOptionpk.html#affd58e09b1baaf0b1754fbf938eea11a">Optionpk::setAll</a></div><div class="ttdeci">void setAll(const std::string &shortName, const std::string &longName, const std::string &helpInfo)</div><div class="ttdoc">set all attributes of the option, except default and hide </div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00277">Optionpk. [...]
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-<div class="ttc" id="classOptionpk_html_a561e7d4b4141cd9023563d4dee01b932"><div class="ttname"><a href="classOptionpk.html#a561e7d4b4141cd9023563d4dee01b932">Optionpk::setShortName</a></div><div class="ttdeci">void setShortName(const std::string &shortName)</div><div class="ttdoc">set the short name to be used as -shortName </div></div>
-<div class="ttc" id="classOptionpk_html_a95628f0f149cb9465468facfb3f0f915"><div class="ttname"><a href="classOptionpk.html#a95628f0f149cb9465468facfb3f0f915">Optionpk::setHide</a></div><div class="ttdeci">void setHide(short hide)</div><div class="ttdoc">hide option from short help -h (1) or make invisible to short and long help –help (2) ...</div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00120">Optionpk.h:120</a></div></div>
-<div class="ttc" id="classOptionpk_html_a7b788a1b8e5c738732a1733613065ef7"><div class="ttname"><a href="classOptionpk.html#a7b788a1b8e5c738732a1733613065ef7">Optionpk::retrieveOption</a></div><div class="ttdeci">bool retrieveOption(int argc, char **argv)</div><div class="ttdoc">read option from command line (use for all options!) </div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00305">Optionpk.h:305</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/PosValue_8h_source.html b/doc/html/PosValue_8h_source.html
deleted file mode 100644
index c93f344..0000000
--- a/doc/html/PosValue_8h_source.html
+++ /dev/null
@@ -1,122 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/base/PosValue.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_0af1587c8378955de40f48b4bd1869f0.html">base</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">PosValue.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">PosValue.h: class to work with structs containing a position and a value</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2012 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#ifndef _POSVALUE_H_</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor"></span><span class="preprocessor">#define _POSVALUE_H_</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno"><a class="line" href="structPosValue.html">   23</a></span> <span class="keyword">struct </span><a class="code" href="structPosValue.html">PosValue</a>{</div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span>   <span class="keywordtype">double</span> posx;</div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span>   <span class="keywordtype">double</span> posy;</div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span>   <span class="keywordtype">double</span> value;</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> };</div>
-<div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="classCompare__PosValue.html">   28</a></span> <span class="keyword">class </span><a class="code" href="classCompare__PosValue.html">Compare_PosValue</a>{</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>   <span class="keywordtype">int</span> operator() (<span class="keyword">const</span> <a class="code" href="structPosValue.html">PosValue</a>& pv1, <span class="keyword">const</span> <a class="code" href="structPosValue.html">PosValue</a>& pv2)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span>     <span class="keywordflow">return</span> pv1.value>pv2.value;<span class="comment">//for decreasing order</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>   }</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> };</div>
-<div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="classDecrease__PosValue.html">   34</a></span> <span class="keyword">class </span><a class="code" href="classDecrease__PosValue.html">Decrease_PosValue</a>{</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   <span class="keywordtype">int</span> operator() (<span class="keyword">const</span> <a class="code" href="structPosValue.html">PosValue</a>& pv1, <span class="keyword">const</span> <a class="code" href="structPosValue.html">PosValue</a>& pv2)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>     <span class="keywordflow">return</span> pv1.value>pv2.value;<span class="comment">//for decreasing order</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>   }</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> };</div>
-<div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classIncrease__PosValue.html">   40</a></span> <span class="keyword">class </span><a class="code" href="classIncrease__PosValue.html">Increase_PosValue</a>{</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   <span class="keywordtype">int</span> operator() (<span class="keyword">const</span> <a class="code" href="structPosValue.html">PosValue</a>& pv1, <span class="keyword">const</span> <a class="code" href="structPosValue.html">PosValue</a>& pv2)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     <span class="keywordflow">return</span> pv1.value<pv2.value;<span class="comment">//for increasing order</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   }</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span> };</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span> <span class="preprocessor">#endif </span><span class="comment">/* _POSVALUE_H_ */</span><span class="preprocessor"></span></div>
-<div class="ttc" id="structPosValue_html"><div class="ttname"><a href="structPosValue.html">PosValue</a></div><div class="ttdef"><b>Definition:</b> <a href="PosValue_8h_source.html#l00023">PosValue.h:23</a></div></div>
-<div class="ttc" id="classDecrease__PosValue_html"><div class="ttname"><a href="classDecrease__PosValue.html">Decrease_PosValue</a></div><div class="ttdef"><b>Definition:</b> <a href="PosValue_8h_source.html#l00034">PosValue.h:34</a></div></div>
-<div class="ttc" id="classCompare__PosValue_html"><div class="ttname"><a href="classCompare__PosValue.html">Compare_PosValue</a></div><div class="ttdef"><b>Definition:</b> <a href="PosValue_8h_source.html#l00028">PosValue.h:28</a></div></div>
-<div class="ttc" id="classIncrease__PosValue_html"><div class="ttname"><a href="classIncrease__PosValue.html">Increase_PosValue</a></div><div class="ttdef"><b>Definition:</b> <a href="PosValue_8h_source.html#l00040">PosValue.h:40</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/ProcessingPktoolsPlugin_8py_source.html b/doc/html/ProcessingPktoolsPlugin_8py_source.html
deleted file mode 100644
index 872ccf0..0000000
--- a/doc/html/ProcessingPktoolsPlugin_8py_source.html
+++ /dev/null
@@ -1,123 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/ProcessingPktoolsPlugin.py Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">ProcessingPktoolsPlugin.py</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment"># -*- coding: utf-8 -*-</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> </div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="stringliteral">    ProcessingPktoolsPlugin.py</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="stringliteral">    ---------------------</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="stringliteral">    Date                 : April 2015</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="stringliteral">    Copyright            : (C) 2015 by Pieter Kempeneers</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="stringliteral">    Email                : kempenep at gmail dot com</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="stringliteral">*   This program is free software; you can redistribute it and/or modify  *</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="stringliteral">*   it under the terms of the GNU General Public License as published by  *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="stringliteral">*   the Free Software Foundation; either version 2 of the License, or     *</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="stringliteral">*   (at your option) any later version.                                   *</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> __author__ = <span class="stringliteral">'Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> __date__ = <span class="stringliteral">'April 2015'</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> __copyright__ = <span class="stringliteral">'(C) 2015, Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"># This will get replaced with a git SHA1 when you do a git archive</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> __revision__ = <span class="stringliteral">'$Format:%H$'</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">import</span> os, sys</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">import</span> inspect</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> </div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">from</span> <a class="code" href="namespaceqgis_1_1core.html">qgis.core</a> <span class="keyword">import</span> *</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> </div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">from</span> processing.core.Processing <span class="keyword">import</span> Processing</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">from</span> pktools.pktoolsAlgorithmProvider <span class="keyword">import</span> pktoolsAlgorithmProvider</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> </div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> cmd_folder = os.path.split(inspect.getfile(inspect.currentframe()))[0]</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> </div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keywordflow">if</span> cmd_folder <span class="keywordflow">not</span> <span class="keywordflow">in</span> sys.path:</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>     sys.path.insert(0, cmd_folder)</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> </div>
-<div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classqgis_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin.html">   40</a></span> <span class="keyword">class </span><a class="code" href="classqgis_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin.html">ProcessingPktoolsPlugin</a>:</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     <span class="keyword">def </span>__init__(self):</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>         self.<a class="code" href="classqgis_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin.html#a5de532d34abad9efe561b48f8e7fdf32">provider</a> = pktoolsAlgorithmProvider()</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span> </div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     <span class="keyword">def </span>initGui(self):</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>         Processing.addProvider(self.<a class="code" href="classqgis_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin.html#a5de532d34abad9efe561b48f8e7fdf32">provider</a>)</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span> </div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     <span class="keyword">def </span>unload(self):</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>         Processing.removeProvider(self.<a class="code" href="classqgis_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin.html#a5de532d34abad9efe561b48f8e7fdf32">provider</a>)</div>
-<div class="ttc" id="classqgis_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin_html_a5de532d34abad9efe561b48f8e7fdf32"><div class="ttname"><a href="classqgis_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin.html#a5de532d34abad9efe561b48f8e7fdf32">qgis.ProcessingPktoolsPlugin.ProcessingPktoolsPlugin.provider</a></div><div class="ttdeci">provider</div><div class="ttdef"><b>Definition:</b> <a href="ProcessingPktoolsPlugin_8py_source.html#l00042">ProcessingPktoolsPlugin.py:42</a>< [...]
-<div class="ttc" id="namespaceqgis_1_1core_html"><div class="ttname"><a href="namespaceqgis_1_1core.html">core</a></div></div>
-<div class="ttc" id="classqgis_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin_html"><div class="ttname"><a href="classqgis_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin.html">qgis.ProcessingPktoolsPlugin.ProcessingPktoolsPlugin</a></div><div class="ttdef"><b>Definition:</b> <a href="ProcessingPktoolsPlugin_8py_source.html#l00040">ProcessingPktoolsPlugin.py:40</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/StatFactory_8h_source.html b/doc/html/StatFactory_8h_source.html
deleted file mode 100644
index 5c20853..0000000
--- a/doc/html/StatFactory_8h_source.html
+++ /dev/null
@@ -1,1733 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/algorithms/StatFactory.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_e6df591b0639d4c4807ef64d058833e2.html">algorithms</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">StatFactory.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">StatFactory.h: class for statistical operations on vectors</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2013 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#ifndef _STATFACTORY_H_</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor"></span><span class="preprocessor">#define _STATFACTORY_H_</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <iostream></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <vector></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include <map></span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include <math.h></span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include <assert.h></span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include <string></span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include <sstream></span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include <fstream></span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="preprocessor">#include <algorithm></span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="preprocessor">#include <gsl/gsl_fit.h></span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="preprocessor">#include <gsl/gsl_errno.h></span></div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="preprocessor">#include <gsl/gsl_spline.h></span></div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="preprocessor">#include <gsl/gsl_rng.h></span></div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="preprocessor">#include <gsl/gsl_randist.h></span></div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="preprocessor">#include <gsl/gsl_cdf.h></span></div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="preprocessor">#include <gsl/gsl_statistics.h></span></div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> </div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> <span class="keyword">namespace </span>statfactory</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> {</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span> </div>
-<div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="classstatfactory_1_1StatFactory.html">   43</a></span> <span class="keyword">class </span><a class="code" href="classstatfactory_1_1StatFactory.html">StatFactory</a>{</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span> </div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>   <span class="keyword">enum</span> INTERPOLATION_TYPE {undefined=0,linear=1,polynomial=2,cspline=3,cspline_periodic=4,akima=5,akima_periodic=6};</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   <span class="comment">//todo: expand with other distributions as in http://www.gnu.org/software/gsl/manual/gsl-ref_toc.html#TOC320</span></div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>   <span class="keyword">enum</span> DISTRIBUTION_TYPE {uniform=1,gaussian=2};</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span> </div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>   <a class="code" href="classstatfactory_1_1StatFactory.html">StatFactory</a>(<span class="keywordtype">void</span>){};</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>   <span class="keyword">virtual</span> ~<a class="code" href="classstatfactory_1_1StatFactory.html">StatFactory</a>(<span class="keywordtype">void</span>){};</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>   INTERPOLATION_TYPE getInterpolationType(<span class="keyword">const</span> std::string interpolationType){</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     std::map<std::string, INTERPOLATION_TYPE> m_interpMap;</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     initMap(m_interpMap);</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     <span class="keywordflow">return</span> m_interpMap[interpolationType];</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>   };</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>   DISTRIBUTION_TYPE getDistributionType(<span class="keyword">const</span> std::string distributionType){</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     std::map<std::string, DISTRIBUTION_TYPE> m_distMap;</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     initDist(m_distMap);</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     <span class="keywordflow">return</span> m_distMap[distributionType];</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>   };</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>   <span class="keyword">static</span> <span class="keywordtype">void</span> allocAcc(gsl_interp_accel *&acc){</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     acc = gsl_interp_accel_alloc ();</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>   };</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span> </div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>   <span class="keyword">static</span> <span class="keywordtype">void</span> getSpline(<span class="keyword">const</span> std::string type, <span class="keywordtype">int</span> size, gsl_spline *& spline){</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>     std::map<std::string, INTERPOLATION_TYPE> m_interpMap;</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     initMap(m_interpMap);</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     <span class="keywordflow">switch</span>(m_interpMap[type]){</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     <span class="keywordflow">case</span>(polynomial):</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>       spline=gsl_spline_alloc(gsl_interp_polynomial,size);</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>     <span class="keywordflow">case</span>(cspline):</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>       spline=gsl_spline_alloc(gsl_interp_cspline,size);</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>     <span class="keywordflow">case</span>(cspline_periodic):</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>       spline=gsl_spline_alloc(gsl_interp_cspline_periodic,size);</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>     <span class="keywordflow">case</span>(akima):</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>       spline=gsl_spline_alloc(gsl_interp_akima,size);</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     <span class="keywordflow">case</span>(akima_periodic):</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>       spline=gsl_spline_alloc(gsl_interp_akima_periodic,size);</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>     <span class="keywordflow">case</span>(linear):</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>     <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>       spline=gsl_spline_alloc(gsl_interp_linear,size);</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     }</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     assert(spline);</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>   };</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   <span class="keyword">static</span> <span class="keywordtype">int</span> initSpline(gsl_spline *spline, <span class="keyword">const</span> <span class="keywordtype">double</span> *x, <span class="keyword">const</span> <span class="keywordtype">double</span> *y, <span class="keywordtype">int</span> size){</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>     <span class="keywordflow">return</span> gsl_spline_init (spline, x, y, size);</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   };</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   <span class="keyword">static</span> <span class="keywordtype">double</span> evalSpline(gsl_spline *spline, <span class="keywordtype">double</span> x, gsl_interp_accel *acc){</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     <span class="keywordflow">return</span> gsl_spline_eval (spline, x, acc);</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>   };</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span> </div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>   <span class="keyword">static</span> gsl_rng* getRandomGenerator(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> theSeed){</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     <span class="keyword">const</span> gsl_rng_type * T;</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     gsl_rng * r;</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>   </div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     <span class="comment">// select random number generator </span></div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     r = gsl_rng_alloc (gsl_rng_mt19937);</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     gsl_rng_set(r,theSeed);</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     <span class="keywordflow">return</span> r;</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>   }</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>   <span class="keywordtype">void</span> getNodataValues(std::vector<double>& nodatav)<span class="keyword"> const</span>{nodatav=m_noDataValues;};</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   <span class="keywordtype">bool</span> isNoData(<span class="keywordtype">double</span> value)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>     <span class="keywordflow">if</span>(m_noDataValues.empty()) </div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>       <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>     <span class="keywordflow">else</span> </div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>       <span class="keywordflow">return</span> find(m_noDataValues.begin(),m_noDataValues.end(),value)!=m_noDataValues.end();</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   };</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> pushNodDataValue(<span class="keywordtype">double</span> noDataValue){</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     <span class="keywordflow">if</span>(find(m_noDataValues.begin(),m_noDataValues.end(),noDataValue)==m_noDataValues.end())</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>       m_noDataValues.push_back(noDataValue);</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     <span class="keywordflow">return</span> m_noDataValues.size();</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>   };</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> setNoDataValues(std::vector<double> vnodata){</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>     m_noDataValues=vnodata;</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>     <span class="keywordflow">return</span> m_noDataValues.size();</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>   };</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>   <span class="keywordtype">double</span> getRandomValue(<span class="keyword">const</span> gsl_rng* r, <span class="keyword">const</span> std::string type, <span class="keywordtype">double</span> a=0, <span class="keywordtype">double</span> b=1)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>     std::map<std::string, DISTRIBUTION_TYPE> m_distMap;</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     initDist(m_distMap);</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>     <span class="keywordtype">double</span> randValue=0;</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>     <span class="keywordflow">switch</span>(m_distMap[type]){</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>     <span class="keywordflow">case</span>(uniform):</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>       randValue = a+gsl_rng_uniform(r);</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>     <span class="keywordflow">case</span>(gaussian):</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>     <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>       randValue = a+gsl_ran_gaussian(r, b); </div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>     }</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>     <span class="keywordflow">return</span> randValue;</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>   };</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>   </div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span> </div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> T mymin(<span class="keyword">const</span> <span class="keyword">typename</span> std::vector<T>& v) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> T mymax(<span class="keyword">const</span> <span class="keyword">typename</span> std::vector<T>& v) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> T mymin(<span class="keyword">const</span> <span class="keyword">typename</span> std::vector<T>& v, T minConstraint) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> T mymax(<span class="keyword">const</span> <span class="keyword">typename</span> std::vector<T>& v, T maxConstraint) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span> <span class="comment">//   template<class T> typename std::vector<T>::const_iterator mymax(const std::vector<T>& v, typename std::vector<T>::const_iterator begin, typename std::vector<T>::const_iterator end) const;</span></div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">typename</span> std::vector<T>::const_iterator mymin(<span class="keyword">const</span> <span class="keyword">typename</span> std::vector<T>& v, <span class="keyword">typename</span> std::vector<T>::const_iterator begin, <span class="keyword">typename</span> std::vector<T>::const [...]
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">typename</span> std::vector<T>::iterator mymin(<span class="keyword">const</span> <span class="keyword">typename</span> std::vector<T>& v, <span class="keyword">typename</span> std::vector<T>::iterator begin, <span class="keyword">typename</span> std::vector<T>::iterator end) <sp [...]
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">typename</span> std::vector<T>::const_iterator mymin(<span class="keyword">const</span> <span class="keyword">typename</span> std::vector<T>& v, <span class="keyword">typename</span> std::vector<T>::const_iterator begin, <span class="keyword">typename</span> std::vector<T>::const [...]
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">typename</span> std::vector<T>::iterator mymin(<span class="keyword">const</span> <span class="keyword">typename</span> std::vector<T>& v, <span class="keyword">typename</span> std::vector<T>::iterator begin, <span class="keyword">typename</span> std::vector<T>::iterator end, T m [...]
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">typename</span> std::vector<T>::const_iterator mymax(<span class="keyword">const</span> std::vector<T>& v, <span class="keyword">typename</span> std::vector<T>::const_iterator begin, <span class="keyword">typename</span> std::vector<T>::const_iterator end) <span class="keyword">c [...]
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">typename</span> std::vector<T>::iterator mymax(<span class="keyword">const</span> std::vector<T>& v, <span class="keyword">typename</span> std::vector<T>::iterator begin, <span class="keyword">typename</span> std::vector<T>::iterator end) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">typename</span> std::vector<T>::const_iterator mymax(<span class="keyword">const</span> std::vector<T>& v, <span class="keyword">typename</span> std::vector<T>::const_iterator begin, <span class="keyword">typename</span> std::vector<T>::const_iterator end, T maxConstraint) <span  [...]
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">typename</span> std::vector<T>::iterator mymax(<span class="keyword">const</span> std::vector<T>& v, <span class="keyword">typename</span> std::vector<T>::iterator begin, <span class="keyword">typename</span> std::vector<T>::iterator end, T maxConstraint) <span class="keyword">co [...]
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">typename</span> std::vector<T>::const_iterator absmin(<span class="keyword">const</span> std::vector<T>& v, <span class="keyword">typename</span> std::vector<T>::const_iterator begin, <span class="keyword">typename</span> std::vector<T>::const_iterator end) <span class="keyword"> [...]
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">typename</span> std::vector<T>::const_iterator absmax(<span class="keyword">const</span> std::vector<T>& v, <span class="keyword">typename</span> std::vector<T>::const_iterator begin, <span class="keyword">typename</span> std::vector<T>::const_iterator end) <span class="keyword"> [...]
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>   </div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> minmax(<span class="keyword">const</span> std::vector<T>& v, <span class="keyword">typename</span> std::vector<T>::const_iterator begin, <span class="keyword">typename</span> std::vector<T>::const_iterator end, T& theMin, T& theMax) <span class="keyword">const</ [...]
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> T sum(<span class="keyword">const</span> std::vector<T>& v) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> mean(<span class="keyword">const</span> std::vector<T>& v) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> eraseNoData(std::vector<T>& v) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nvalid(<span class="keyword">const</span> std::vector<T>& v) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> T median(<span class="keyword">const</span> std::vector<T>& v) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> var(<span class="keyword">const</span> std::vector<T>& v) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> moment(<span class="keyword">const</span> std::vector<T>& v, <span class="keywordtype">int</span> n) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> cmoment(<span class="keyword">const</span> std::vector<T>& v, <span class="keywordtype">int</span> n) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> skewness(<span class="keyword">const</span> std::vector<T>& v) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> kurtosis(<span class="keyword">const</span> std::vector<T>& v) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> meanVar(<span class="keyword">const</span> std::vector<T>& v, <span class="keywordtype">double</span>& m1, <span class="keywordtype">double</span>& v1) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>   <span class="keyword">template</span><<span class="keyword">class</span> T1, <span class="keyword">class</span> T2> <span class="keywordtype">void</span>  scale2byte(<span class="keyword">const</span> std::vector<T1>& input, std::vector<T2>& output, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> lbound=0, <span class="keywordtype">unsigned</span> <spa [...]
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> distribution(<span class="keyword">const</span> std::vector<T>& input, <span class="keyword">typename</span> std::vector<T>::const_iterator begin, <span class="keyword">typename</span> std::vector<T>::const_iterator end,  std::vector<double>& output, <span cla [...]
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> distribution(<span class="keyword">const</span> std::vector<T>& input,  std::vector<double>& output, <span class="keywordtype">int</span> nbin, <span class="keywordtype">double</span> sigma=0, <span class="keyword">const</span> std::string &filename=<span class="strin [...]
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span>  distribution2d(<span class="keyword">const</span> std::vector<T>& inputX, <span class="keyword">const</span> std::vector<T>& inputY, std::vector< std::vector<double> >& output, <span class="keywordtype">int</span> nbin, T& minX, T& maxX, T& mi [...]
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> cumulative (<span class="keyword">const</span> std::vector<T>& input, <span class="keyword">typename</span> std::vector<T>::const_iterator begin, <span class="keyword">typename</span> std::vector<T>::const_iterator end, std::vector<int>& output, <span class="k [...]
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span>  percentiles (<span class="keyword">const</span> std::vector<T>& input, <span class="keyword">typename</span> std::vector<T>::const_iterator begin, <span class="keyword">typename</span> std::vector<T>::const_iterator end, std::vector<T>& output, <span class="k [...]
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> T percentile(<span class="keyword">const</span> std::vector<T>& input, <span class="keyword">typename</span> std::vector<T>::const_iterator begin, <span class="keyword">typename</span> std::vector<T>::const_iterator end, <span class="keywordtype">double</span> percent, T minimum=0, T maximum=0) <span class= [...]
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> signature(<span class="keyword">const</span> std::vector<T>& input, <span class="keywordtype">double</span>& k, <span class="keywordtype">double</span>& alpha, <span class="keywordtype">double</span>& beta, <span class="keywordtype">double</span> e) <span class="keyword [...]
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>   <span class="keywordtype">void</span> signature(<span class="keywordtype">double</span> m1, <span class="keywordtype">double</span> m2, <span class="keywordtype">double</span>& k, <span class="keywordtype">double</span>& alpha, <span class="keywordtype">double</span>& beta, <span class="keywordtype">double</span> e) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> normalize(<span class="keyword">const</span> std::vector<T>& input, std::vector<double>& output) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> normalize_pct(std::vector<T>& input) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> rmse(<span class="keyword">const</span> std::vector<T>& x, <span class="keyword">const</span> std::vector<T>& y) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> nrmse(<span class="keyword">const</span> std::vector<T>& x, <span class="keyword">const</span> std::vector<T>& y) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> cvrmse(<span class="keyword">const</span> std::vector<T>& x, <span class="keyword">const</span> std::vector<T>& y) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> correlation(<span class="keyword">const</span> std::vector<T>& x, <span class="keyword">const</span> std::vector<T>& y, <span class="keywordtype">int</span> delay=0) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>   <span class="comment">//  template<class T> double gsl_correlation(const std::vector<T>& x, const std::vector<T>& y) const;</span></div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> gsl_covariance(<span class="keyword">const</span> std::vector<T>& x, <span class="keyword">const</span> std::vector<T>& y) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> cross_correlation(<span class="keyword">const</span> std::vector<T>& x, <span class="keyword">const</span> std::vector<T>& y, <span class="keywordtype">int</span> maxdelay, std::vector<T>& z) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> linear_regression(<span class="keyword">const</span> std::vector<T>& x, <span class="keyword">const</span> std::vector<T>& y, <span class="keywordtype">double</span> &c0, <span class="keywordtype">double</span> &c1) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> linear_regression_err(<span class="keyword">const</span> std::vector<T>& x, <span class="keyword">const</span> std::vector<T>& y, <span class="keywordtype">double</span> &c0, <span class="keywordtype">double</span> &c1) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> interpolateNoData(<span class="keyword">const</span> std::vector<double>& wavelengthIn, <span class="keyword">const</span> std::vector<T>& input, <span class="keyword">const</span> std::string& type, std::vector<T>& output, <span class="keywordtype">bool</sp [...]
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> interpolateUp(<span class="keyword">const</span> std::vector<double>& wavelengthIn, <span class="keyword">const</span> std::vector<T>& input, <span class="keyword">const</span> std::vector<double>& wavelengthOut, <span class="keyword">const</span> std::string&am [...]
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> interpolateUp(<span class="keyword">const</span> std::vector<double>& wavelengthIn, <span class="keyword">const</span> std::vector< std::vector<T> >& input, <span class="keyword">const</span> std::vector<double>& wavelengthOut, <span class="keyword">const< [...]
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>   <span class="comment">// template<class T> void interpolateUp(const std::vector< std::vector<T> >& input, std::vector< std::vector<T> >& output, double start, double end, double step, const gsl_interp_type* type);</span></div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>   <span class="comment">// template<class T> void interpolateUp(const std::vector< std::vector<T> >& input, const std::vector<double>& wavelengthIn, std::vector< std::vector<T> >& output, std::vector<double>& wavelengthOut, double start, double end, double step, const gsl_interp_type* type);</span></div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> interpolateUp(<span class="keyword">const</span> std::vector<T>& input, std::vector<T>& output, <span class="keywordtype">int</span> nbin) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> nearUp(<span class="keyword">const</span> std::vector<T>& input, std::vector<T>& output) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> interpolateUp(<span class="keywordtype">double</span>* input, <span class="keywordtype">int</span> dim, std::vector<T>& output, <span class="keywordtype">int</span> nbin);</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> interpolateDown(<span class="keyword">const</span> std::vector<T>& input, std::vector<T>& output, <span class="keywordtype">int</span> nbin) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>   <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> interpolateDown(<span class="keywordtype">double</span>* input, <span class="keywordtype">int</span> dim, std::vector<T>& output, <span class="keywordtype">int</span> nbin);</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span> </div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span> <span class="keyword">private</span>:</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>   <span class="keyword">static</span> <span class="keywordtype">void</span> initMap(std::map<std::string, INTERPOLATION_TYPE>& m_interpMap){</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>     <span class="comment">//initialize selMap</span></div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>     m_interpMap[<span class="stringliteral">"linear"</span>]=linear;</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>     m_interpMap[<span class="stringliteral">"polynomial"</span>]=polynomial;</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>     m_interpMap[<span class="stringliteral">"cspline"</span>]=cspline;</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>     m_interpMap[<span class="stringliteral">"cspline_periodic"</span>]=cspline_periodic;</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>     m_interpMap[<span class="stringliteral">"akima"</span>]=akima;</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>     m_interpMap[<span class="stringliteral">"akima_periodic"</span>]=akima_periodic;</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>   }</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>   <span class="keyword">static</span> <span class="keywordtype">void</span> initDist(std::map<std::string, DISTRIBUTION_TYPE>& m_distMap){</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>     <span class="comment">//initialize distMap</span></div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>     m_distMap[<span class="stringliteral">"gaussian"</span>]=gaussian;</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>     m_distMap[<span class="stringliteral">"uniform"</span>]=uniform;</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>   }</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>   std::vector<double> m_noDataValues;</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span> };</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span> </div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span> </div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">inline</span> <span class="keyword">typename</span> std::vector<T>::const_iterator StatFactory::mymin(<span class="keyword">const</span> std::vector<T>& v, <span class="keyword">typename</span> std::vector<T>::const_iterator begin, <span class="keyword">typename</span> std::vector<T&g [...]
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>   <span class="keywordtype">bool</span> isValid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>   <span class="keyword">typename</span> std::vector<T>::const_iterator tmpIt;</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>   <span class="keywordflow">for</span>(<span class="keyword">typename</span> std::vector<T>::const_iterator it = begin; it!=end; ++it){</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>     <span class="keywordflow">if</span>(!isNoData(*it)){</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>       <span class="keywordflow">if</span>(isValid){</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>     <span class="keywordflow">if</span>(*tmpIt>*it)</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>       tmpIt=it;</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>       }</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>     tmpIt=it;</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>     isValid=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>       }</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>     }</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>   }</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>   <span class="keywordflow">if</span>(isValid)</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>     <span class="keywordflow">return</span> tmpIt;</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_noDataValues.size())</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>     <span class="keywordflow">return</span> m_noDataValues[0];</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>     std::string errorString=<span class="stringliteral">"Error: no valid data found"</span>;</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>   }</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span> }</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span> </div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">inline</span> <span class="keyword">typename</span> std::vector<T>::iterator StatFactory::mymin(<span class="keyword">const</span> std::vector<T>& v, <span class="keyword">typename</span> std::vector<T>::iterator begin, <span class="keyword">typename</span> std::vector<T>::iterator [...]
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>   <span class="keywordtype">bool</span> isValid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>   <span class="keyword">typename</span> std::vector<T>::iterator tmpIt;</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>   <span class="keywordflow">for</span> (<span class="keyword">typename</span> std::vector<T>::const_iterator it = begin; it!=end; ++it){</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>     <span class="keywordflow">if</span>(!isNoData(*it)){</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>       <span class="keywordflow">if</span>(isValid){</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>     <span class="keywordflow">if</span>(*tmpIt>*it)</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>       tmpIt=it;</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>       }</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>     tmpIt=it;</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>     isValid=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>       }</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>     }</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>   }</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>   <span class="keywordflow">if</span>(isValid)</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>     <span class="keywordflow">return</span> tmpIt;</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_noDataValues.size())</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>     <span class="keywordflow">return</span> m_noDataValues[0];</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>     std::string errorString=<span class="stringliteral">"Error: no valid data found"</span>;</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>   }</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span> }</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span> </div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">inline</span>  <span class="keyword">typename</span> std::vector<T>::const_iterator StatFactory::mymin(<span class="keyword">const</span> std::vector<T>& v, <span class="keyword">typename</span> std::vector<T>::const_iterator begin, <span class="keyword">typename</span> std::vector<T& [...]
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>   <span class="keywordtype">bool</span> isValid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>   <span class="keyword">typename</span> std::vector<T>::const_iterator tmpIt;</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>   T minValue=minConstraint;</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>   <span class="keywordflow">for</span> (<span class="keyword">typename</span> std::vector<T>::const_iterator it = begin; it!=end; ++it){</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>     <span class="keywordflow">if</span>(isNoData(*it))</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>     <span class="keywordflow">if</span>(isValid){</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>       <span class="keywordflow">if</span>((minConstraint<=*it)&&(*it<minValue)){</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>     tmpIt=it;</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>     minValue=*it;</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>       }</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>     }</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>       <span class="keywordflow">if</span>(*it<minValue)</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>       tmpIt=it;</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>       minValue=*it;</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>       isValid=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>     }    </div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>   }</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>   <span class="keywordflow">if</span>(isValid)</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>     <span class="keywordflow">return</span> tmpIt;</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_noDataValues.size())</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>     <span class="keywordflow">return</span> m_noDataValues[0];</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>     std::string errorString=<span class="stringliteral">"Error: no valid data found"</span>;</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>   }</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span> }</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span> </div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">inline</span> <span class="keyword">typename</span> std::vector<T>::iterator StatFactory::mymin(<span class="keyword">const</span> std::vector<T>& v, <span class="keyword">typename</span> std::vector<T>::iterator begin, <span class="keyword">typename</span> std::vector<T>::iterator [...]
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>   <span class="keywordtype">bool</span> isValid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>   <span class="keyword">typename</span> std::vector<T>::iterator tmpIt;</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>   T minValue=minConstraint;</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>   <span class="keywordflow">for</span> (<span class="keyword">typename</span> std::vector<T>::const_iterator it = begin; it!=end; ++it){</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>     <span class="keywordflow">if</span>(isNoData(*it))</div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>     <span class="keywordflow">if</span>(isValid){</div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>       <span class="keywordflow">if</span>((minConstraint<=*it)&&(*it<minValue)){</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>     tmpIt=it;</div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>     minValue=*it;</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>       }</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>     }</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>       <span class="keywordflow">if</span>(*it<minConstraint)</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>       tmpIt=it;</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>       minValue=*it;</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>       isValid=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>     }    </div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>   }</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>   <span class="keywordflow">if</span>(isValid)</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>     <span class="keywordflow">return</span> tmpIt;</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_noDataValues.size())</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>     <span class="keywordflow">return</span> m_noDataValues[0];</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>     std::string errorString=<span class="stringliteral">"Error: no valid data found"</span>;</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>   }</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span> }</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span> </div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">inline</span> <span class="keyword">typename</span> std::vector<T>::const_iterator StatFactory::mymax(<span class="keyword">const</span> std::vector<T>& v, <span class="keyword">typename</span> std::vector<T>::const_iterator begin, <span class="keyword">typename</span> std::vector<T&g [...]
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>   <span class="keywordtype">bool</span> isValid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>   <span class="keyword">typename</span> std::vector<T>::const_iterator tmpIt;</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>   <span class="keywordflow">for</span> (<span class="keyword">typename</span> std::vector<T>::iterator it = begin; it!=end; ++it){</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>     <span class="keywordflow">if</span>(isNoData(*it))</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>     <span class="keywordflow">if</span>(isValid){</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>       <span class="keywordflow">if</span>(*tmpIt<*it)</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>     tmpIt=it;</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>     }</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>       tmpIt=it;</div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>       isValid=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>     }</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>   }</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>   <span class="keywordflow">if</span>(isValid)</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>     <span class="keywordflow">return</span> tmpIt;</div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_noDataValues.size())</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>     <span class="keywordflow">return</span> m_noDataValues[0];</div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>     std::string errorString=<span class="stringliteral">"Error: no valid data found"</span>;</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>   }</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span> }</div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span> </div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">inline</span> <span class="keyword">typename</span> std::vector<T>::iterator StatFactory::mymax(<span class="keyword">const</span> std::vector<T>& v, <span class="keyword">typename</span> std::vector<T>::iterator begin, <span class="keyword">typename</span> std::vector<T>::iterator [...]
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>   <span class="keywordtype">bool</span> isValid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>   <span class="keyword">typename</span> std::vector<T>::iterator tmpIt;</div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>   <span class="keywordflow">for</span> (<span class="keyword">typename</span> std::vector<T>::iterator it = begin; it!=end; ++it){</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>     <span class="keywordflow">if</span>(isNoData(*it))</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>     <span class="keywordflow">if</span>(isValid){</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>       <span class="keywordflow">if</span>(*tmpIt<*it)</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>     tmpIt=it;</div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>     }</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>       tmpIt=it;</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>       isValid=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>     }</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>   }</div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>   <span class="keywordflow">if</span>(isValid)</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>     <span class="keywordflow">return</span> tmpIt;</div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>     <span class="keywordflow">return</span> end;</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span> }</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span> </div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">inline</span> <span class="keyword">typename</span> std::vector<T>::const_iterator StatFactory::mymax(<span class="keyword">const</span> std::vector<T>& v, <span class="keyword">typename</span> std::vector<T>::const_iterator begin, <span class="keyword">typename</span> std::vector<T&g [...]
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>   <span class="keywordtype">bool</span> isValid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>   <span class="keyword">typename</span> std::vector<T>::const_iterator tmpIt;</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>   T maxValue=maxConstraint;</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>   <span class="keywordflow">for</span> (<span class="keyword">typename</span> std::vector<T>::const_iterator it = begin; it!=end; ++it){</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>     <span class="keywordflow">if</span>(isNoData(*it))</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>     <span class="keywordflow">if</span>(isValid){</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>       <span class="keywordflow">if</span>((maxConstraint>=*it)&&(*it>maxValue)){</div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>     tmpIt=it;</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>     maxValue=*it;</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>       }</div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>     }</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>       <span class="keywordflow">if</span>(*it>maxConstraint)</div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>       tmpIt=it;</div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>       maxValue=*it;</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>       isValid=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span>     }    </div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>   }</div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>   <span class="keywordflow">if</span>(isValid)</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>     <span class="keywordflow">return</span> tmpIt;</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span>   <span class="keywordflow">else</span>  </div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>     <span class="keywordflow">return</span> end;</div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span> }</div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span> </div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">inline</span> <span class="keyword">typename</span> std::vector<T>::iterator StatFactory::mymax(<span class="keyword">const</span> std::vector<T>& v, <span class="keyword">typename</span> std::vector<T>::iterator begin, <span class="keyword">typename</span> std::vector<T>::iterator [...]
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>   <span class="keywordtype">bool</span> isValid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span>   <span class="keyword">typename</span> std::vector<T>::iterator tmpIt=v.end();</div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>   T maxValue=maxConstraint;</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>   <span class="keywordflow">for</span> (<span class="keyword">typename</span> std::vector<T>::const_iterator it = begin; it!=end; ++it){</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>     <span class="keywordflow">if</span>(isNoData(*it))</div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span>     <span class="keywordflow">if</span>(isValid){</div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>       <span class="keywordflow">if</span>((maxConstraint>=*it)&&(*it>maxValue)){</div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>     tmpIt=it;</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span>     maxValue=*it;</div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>       }</div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span>     }</div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>       <span class="keywordflow">if</span>(*it>maxValue)</div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span>       tmpIt=it;</div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span>       maxValue=*it;</div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span>       isValid=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span>     }    </div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span>   }</div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span>   <span class="keywordflow">if</span>(isValid)</div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span>     <span class="keywordflow">return</span> tmpIt;</div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>   <span class="keywordflow">else</span>  </div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>     <span class="keywordflow">return</span> end;</div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span> }</div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span> </div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">inline</span> T StatFactory::mymin(<span class="keyword">const</span> std::vector<T>& v)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span>   <span class="keywordtype">bool</span> isValid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span>   <span class="keywordflow">if</span>(v.empty()){</div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span>     std::string errorString=<span class="stringliteral">"Error: vector is empty"</span>;</div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00445"></a><span class="lineno">  445</span>   }</div>
-<div class="line"><a name="l00446"></a><span class="lineno">  446</span>   T minValue;</div>
-<div class="line"><a name="l00447"></a><span class="lineno">  447</span>   <span class="keywordflow">for</span> (<span class="keyword">typename</span> std::vector<T>::const_iterator it = v.begin(); it!=v.end(); ++it){</div>
-<div class="line"><a name="l00448"></a><span class="lineno">  448</span>     <span class="keywordflow">if</span>(isNoData(*it))</div>
-<div class="line"><a name="l00449"></a><span class="lineno">  449</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00450"></a><span class="lineno">  450</span>     <span class="keywordflow">if</span>(isValid){</div>
-<div class="line"><a name="l00451"></a><span class="lineno">  451</span>       <span class="keywordflow">if</span>(minValue>*it)</div>
-<div class="line"><a name="l00452"></a><span class="lineno">  452</span>       minValue=*it;</div>
-<div class="line"><a name="l00453"></a><span class="lineno">  453</span>     }</div>
-<div class="line"><a name="l00454"></a><span class="lineno">  454</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span>       minValue=*it;</div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</span>       isValid=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span>     }</div>
-<div class="line"><a name="l00458"></a><span class="lineno">  458</span>   }</div>
-<div class="line"><a name="l00459"></a><span class="lineno">  459</span>   <span class="keywordflow">if</span>(isValid)</div>
-<div class="line"><a name="l00460"></a><span class="lineno">  460</span>     <span class="keywordflow">return</span> minValue;</div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_noDataValues.size())</div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span>     <span class="keywordflow">return</span> m_noDataValues[0];</div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00464"></a><span class="lineno">  464</span>     std::string errorString=<span class="stringliteral">"Error: no valid data found"</span>;</div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>   }</div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span> }</div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span> </div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span>  <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">inline</span> T StatFactory::mymin(<span class="keyword">const</span> std::vector<T>& v, T minConstraint)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00470"></a><span class="lineno">  470</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00471"></a><span class="lineno">  471</span>   <span class="keywordtype">bool</span> isValid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00472"></a><span class="lineno">  472</span>   T minValue=minConstraint;</div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span>   <span class="keywordflow">for</span> (<span class="keyword">typename</span> std::vector<T>::const_iterator it = v.begin(); it!=v.end(); ++it){</div>
-<div class="line"><a name="l00474"></a><span class="lineno">  474</span>     <span class="keywordflow">if</span>(isNoData(*it))</div>
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00476"></a><span class="lineno">  476</span>     <span class="keywordflow">if</span>(isValid){</div>
-<div class="line"><a name="l00477"></a><span class="lineno">  477</span>       <span class="keywordflow">if</span>((minConstraint<=*it)&&(*it<minValue))</div>
-<div class="line"><a name="l00478"></a><span class="lineno">  478</span>     minValue=*it;</div>
-<div class="line"><a name="l00479"></a><span class="lineno">  479</span>     }</div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span>       <span class="keywordflow">if</span>(*it<minValue)</div>
-<div class="line"><a name="l00482"></a><span class="lineno">  482</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00483"></a><span class="lineno">  483</span>       minValue=*it;</div>
-<div class="line"><a name="l00484"></a><span class="lineno">  484</span>       isValid=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00485"></a><span class="lineno">  485</span>     }    </div>
-<div class="line"><a name="l00486"></a><span class="lineno">  486</span>   }</div>
-<div class="line"><a name="l00487"></a><span class="lineno">  487</span>   <span class="keywordflow">if</span>(isValid)</div>
-<div class="line"><a name="l00488"></a><span class="lineno">  488</span>     <span class="keywordflow">return</span> minValue;</div>
-<div class="line"><a name="l00489"></a><span class="lineno">  489</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_noDataValues.size())</div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span>     <span class="keywordflow">return</span> m_noDataValues[0];</div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00492"></a><span class="lineno">  492</span>     std::string errorString=<span class="stringliteral">"Error: no valid data found"</span>;</div>
-<div class="line"><a name="l00493"></a><span class="lineno">  493</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00494"></a><span class="lineno">  494</span>   }</div>
-<div class="line"><a name="l00495"></a><span class="lineno">  495</span> }</div>
-<div class="line"><a name="l00496"></a><span class="lineno">  496</span> </div>
-<div class="line"><a name="l00497"></a><span class="lineno">  497</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">inline</span> T StatFactory::mymax(<span class="keyword">const</span> std::vector<T>& v)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span>   <span class="keywordtype">bool</span> isValid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00500"></a><span class="lineno">  500</span>   <span class="keywordflow">if</span>(v.empty()){</div>
-<div class="line"><a name="l00501"></a><span class="lineno">  501</span>     std::string errorString=<span class="stringliteral">"Error: vector is empty"</span>;</div>
-<div class="line"><a name="l00502"></a><span class="lineno">  502</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00503"></a><span class="lineno">  503</span>   }</div>
-<div class="line"><a name="l00504"></a><span class="lineno">  504</span>   T maxValue;</div>
-<div class="line"><a name="l00505"></a><span class="lineno">  505</span>   <span class="keywordflow">for</span> (<span class="keyword">typename</span> std::vector<T>::const_iterator it = v.begin(); it!=v.end(); ++it){</div>
-<div class="line"><a name="l00506"></a><span class="lineno">  506</span>     <span class="keywordflow">if</span>(isNoData(*it))</div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00508"></a><span class="lineno">  508</span>     <span class="keywordflow">if</span>(isValid){</div>
-<div class="line"><a name="l00509"></a><span class="lineno">  509</span>       <span class="keywordflow">if</span>(maxValue<*it)</div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span>       maxValue=*it;</div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span>     }</div>
-<div class="line"><a name="l00512"></a><span class="lineno">  512</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00513"></a><span class="lineno">  513</span>       maxValue=*it;</div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span>       isValid=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00515"></a><span class="lineno">  515</span>     }</div>
-<div class="line"><a name="l00516"></a><span class="lineno">  516</span>   }</div>
-<div class="line"><a name="l00517"></a><span class="lineno">  517</span>   <span class="keywordflow">if</span>(isValid)</div>
-<div class="line"><a name="l00518"></a><span class="lineno">  518</span>     <span class="keywordflow">return</span> maxValue;</div>
-<div class="line"><a name="l00519"></a><span class="lineno">  519</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_noDataValues.size())</div>
-<div class="line"><a name="l00520"></a><span class="lineno">  520</span>     <span class="keywordflow">return</span> m_noDataValues[0];</div>
-<div class="line"><a name="l00521"></a><span class="lineno">  521</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00522"></a><span class="lineno">  522</span>     std::string errorString=<span class="stringliteral">"Error: no valid data found"</span>;</div>
-<div class="line"><a name="l00523"></a><span class="lineno">  523</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00524"></a><span class="lineno">  524</span>   }</div>
-<div class="line"><a name="l00525"></a><span class="lineno">  525</span> }</div>
-<div class="line"><a name="l00526"></a><span class="lineno">  526</span> </div>
-<div class="line"><a name="l00527"></a><span class="lineno">  527</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">inline</span> T StatFactory::mymax(<span class="keyword">const</span> std::vector<T>& v, T maxConstraint)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00528"></a><span class="lineno">  528</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00529"></a><span class="lineno">  529</span>   <span class="keywordtype">bool</span> isValid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00530"></a><span class="lineno">  530</span>   T maxValue=maxConstraint;</div>
-<div class="line"><a name="l00531"></a><span class="lineno">  531</span>   <span class="keywordflow">for</span> (<span class="keyword">typename</span> std::vector<T>::const_iterator it = v.begin(); it!=v.end(); ++it){</div>
-<div class="line"><a name="l00532"></a><span class="lineno">  532</span>     <span class="keywordflow">if</span>(isNoData(*it))</div>
-<div class="line"><a name="l00533"></a><span class="lineno">  533</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00534"></a><span class="lineno">  534</span>     <span class="keywordflow">if</span>(isValid){</div>
-<div class="line"><a name="l00535"></a><span class="lineno">  535</span>       <span class="keywordflow">if</span>((*it<=maxConstraint)&&(*it>maxValue))</div>
-<div class="line"><a name="l00536"></a><span class="lineno">  536</span>       maxValue=*it;</div>
-<div class="line"><a name="l00537"></a><span class="lineno">  537</span>     }</div>
-<div class="line"><a name="l00538"></a><span class="lineno">  538</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00539"></a><span class="lineno">  539</span>       <span class="keywordflow">if</span>(*it>maxValue)</div>
-<div class="line"><a name="l00540"></a><span class="lineno">  540</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00541"></a><span class="lineno">  541</span>       maxValue=*it;</div>
-<div class="line"><a name="l00542"></a><span class="lineno">  542</span>       isValid=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00543"></a><span class="lineno">  543</span>     }</div>
-<div class="line"><a name="l00544"></a><span class="lineno">  544</span>   }</div>
-<div class="line"><a name="l00545"></a><span class="lineno">  545</span>   <span class="keywordflow">if</span>(isValid)</div>
-<div class="line"><a name="l00546"></a><span class="lineno">  546</span>     <span class="keywordflow">return</span> maxValue;</div>
-<div class="line"><a name="l00547"></a><span class="lineno">  547</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_noDataValues.size())</div>
-<div class="line"><a name="l00548"></a><span class="lineno">  548</span>     <span class="keywordflow">return</span> m_noDataValues[0];</div>
-<div class="line"><a name="l00549"></a><span class="lineno">  549</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00550"></a><span class="lineno">  550</span>     std::string errorString=<span class="stringliteral">"Error: no valid data found"</span>;</div>
-<div class="line"><a name="l00551"></a><span class="lineno">  551</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00552"></a><span class="lineno">  552</span>   }</div>
-<div class="line"><a name="l00553"></a><span class="lineno">  553</span> }</div>
-<div class="line"><a name="l00554"></a><span class="lineno">  554</span> </div>
-<div class="line"><a name="l00555"></a><span class="lineno">  555</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">inline</span> <span class="keyword">typename</span> std::vector<T>::const_iterator StatFactory::absmax(<span class="keyword">const</span> std::vector<T>& v, <span class="keyword">typename</span> std::vector<T>::const_iterator begin, <span class="keyword">typename</span> std::vector<T& [...]
-<div class="line"><a name="l00556"></a><span class="lineno">  556</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00557"></a><span class="lineno">  557</span>   <span class="keywordtype">bool</span> isValid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00558"></a><span class="lineno">  558</span>   <span class="keyword">typename</span> std::vector<T>::const_iterator tmpIt;</div>
-<div class="line"><a name="l00559"></a><span class="lineno">  559</span>   <span class="keywordflow">for</span> (<span class="keyword">typename</span> std::vector<T>::const_iterator it = begin; it!=end; ++it){</div>
-<div class="line"><a name="l00560"></a><span class="lineno">  560</span>     <span class="keywordflow">if</span>(isNoData(*it))</div>
-<div class="line"><a name="l00561"></a><span class="lineno">  561</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00562"></a><span class="lineno">  562</span>     <span class="keywordflow">if</span>(isValid){</div>
-<div class="line"><a name="l00563"></a><span class="lineno">  563</span>       <span class="keywordflow">if</span>(abs(*tmpIt)<abs(*it))</div>
-<div class="line"><a name="l00564"></a><span class="lineno">  564</span>     tmpIt=it;</div>
-<div class="line"><a name="l00565"></a><span class="lineno">  565</span>     }</div>
-<div class="line"><a name="l00566"></a><span class="lineno">  566</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00567"></a><span class="lineno">  567</span>       tmpIt=it;</div>
-<div class="line"><a name="l00568"></a><span class="lineno">  568</span>       isValid=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00569"></a><span class="lineno">  569</span>     }</div>
-<div class="line"><a name="l00570"></a><span class="lineno">  570</span>   }</div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span>   <span class="keywordflow">if</span>(isValid)</div>
-<div class="line"><a name="l00572"></a><span class="lineno">  572</span>     <span class="keywordflow">return</span> tmpIt;</div>
-<div class="line"><a name="l00573"></a><span class="lineno">  573</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00574"></a><span class="lineno">  574</span>     <span class="keywordflow">return</span> end;</div>
-<div class="line"><a name="l00575"></a><span class="lineno">  575</span> }</div>
-<div class="line"><a name="l00576"></a><span class="lineno">  576</span> </div>
-<div class="line"><a name="l00577"></a><span class="lineno">  577</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">inline</span> <span class="keyword">typename</span> std::vector<T>::const_iterator StatFactory::absmin(<span class="keyword">const</span> std::vector<T>& v, <span class="keyword">typename</span> std::vector<T>::const_iterator begin, <span class="keyword">typename</span> std::vector<T& [...]
-<div class="line"><a name="l00578"></a><span class="lineno">  578</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00579"></a><span class="lineno">  579</span>   <span class="keywordtype">bool</span> isValid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00580"></a><span class="lineno">  580</span>   <span class="keyword">typename</span> std::vector<T>::const_iterator tmpIt;</div>
-<div class="line"><a name="l00581"></a><span class="lineno">  581</span>   <span class="keywordflow">for</span> (<span class="keyword">typename</span> std::vector<T>::const_iterator it = begin; it!=end; ++it){</div>
-<div class="line"><a name="l00582"></a><span class="lineno">  582</span>     <span class="keywordflow">if</span>(isNoData(*it))</div>
-<div class="line"><a name="l00583"></a><span class="lineno">  583</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00584"></a><span class="lineno">  584</span>     <span class="keywordflow">if</span>(isValid){</div>
-<div class="line"><a name="l00585"></a><span class="lineno">  585</span>       <span class="keywordflow">if</span>(abs(*tmpIt)>abs(*it))</div>
-<div class="line"><a name="l00586"></a><span class="lineno">  586</span>     tmpIt=it;</div>
-<div class="line"><a name="l00587"></a><span class="lineno">  587</span>     }</div>
-<div class="line"><a name="l00588"></a><span class="lineno">  588</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00589"></a><span class="lineno">  589</span>       tmpIt=it;</div>
-<div class="line"><a name="l00590"></a><span class="lineno">  590</span>       isValid=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00591"></a><span class="lineno">  591</span>     }</div>
-<div class="line"><a name="l00592"></a><span class="lineno">  592</span>   }</div>
-<div class="line"><a name="l00593"></a><span class="lineno">  593</span>   <span class="keywordflow">if</span>(isValid)</div>
-<div class="line"><a name="l00594"></a><span class="lineno">  594</span>     <span class="keywordflow">return</span> tmpIt;</div>
-<div class="line"><a name="l00595"></a><span class="lineno">  595</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00596"></a><span class="lineno">  596</span>     <span class="keywordflow">return</span> end;</div>
-<div class="line"><a name="l00597"></a><span class="lineno">  597</span> }</div>
-<div class="line"><a name="l00598"></a><span class="lineno">  598</span> </div>
-<div class="line"><a name="l00599"></a><span class="lineno">  599</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">inline</span> <span class="keywordtype">void</span> StatFactory::minmax(<span class="keyword">const</span> std::vector<T>& v, <span class="keyword">typename</span> std::vector<T>::const_iterator begin, <span class="keyword">typename</span> std::vector<T>::const_iterator end, T& theMi [...]
-<div class="line"><a name="l00600"></a><span class="lineno">  600</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00601"></a><span class="lineno">  601</span>   <span class="keywordtype">bool</span> isConstraint=(theMax>theMin);</div>
-<div class="line"><a name="l00602"></a><span class="lineno">  602</span>   <span class="keywordtype">double</span> minConstraint=theMin;</div>
-<div class="line"><a name="l00603"></a><span class="lineno">  603</span>   <span class="keywordtype">double</span> maxConstraint=theMax;</div>
-<div class="line"><a name="l00604"></a><span class="lineno">  604</span>   <span class="keywordtype">bool</span> isValid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00605"></a><span class="lineno">  605</span>   <span class="keywordflow">for</span> (<span class="keyword">typename</span> std::vector<T>::const_iterator it = begin; it!=end; ++it){</div>
-<div class="line"><a name="l00606"></a><span class="lineno">  606</span>     <span class="keywordflow">if</span>(isNoData(*it))</div>
-<div class="line"><a name="l00607"></a><span class="lineno">  607</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00608"></a><span class="lineno">  608</span>     <span class="keywordflow">if</span>(isValid){</div>
-<div class="line"><a name="l00609"></a><span class="lineno">  609</span>       <span class="keywordflow">if</span>(isConstraint){</div>
-<div class="line"><a name="l00610"></a><span class="lineno">  610</span>     <span class="keywordflow">if</span>(*it<minConstraint)</div>
-<div class="line"><a name="l00611"></a><span class="lineno">  611</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00612"></a><span class="lineno">  612</span>     <span class="keywordflow">if</span>(*it>maxConstraint)</div>
-<div class="line"><a name="l00613"></a><span class="lineno">  613</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00614"></a><span class="lineno">  614</span>       }</div>
-<div class="line"><a name="l00615"></a><span class="lineno">  615</span>       <span class="keywordflow">if</span>(*it<theMin)</div>
-<div class="line"><a name="l00616"></a><span class="lineno">  616</span>     theMin=*it;</div>
-<div class="line"><a name="l00617"></a><span class="lineno">  617</span>       <span class="keywordflow">if</span>(*it>theMax)</div>
-<div class="line"><a name="l00618"></a><span class="lineno">  618</span>     theMax=*it;</div>
-<div class="line"><a name="l00619"></a><span class="lineno">  619</span>     }</div>
-<div class="line"><a name="l00620"></a><span class="lineno">  620</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00621"></a><span class="lineno">  621</span>       <span class="keywordflow">if</span>(isConstraint){</div>
-<div class="line"><a name="l00622"></a><span class="lineno">  622</span>     <span class="keywordflow">if</span>(*it<minConstraint)</div>
-<div class="line"><a name="l00623"></a><span class="lineno">  623</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00624"></a><span class="lineno">  624</span>     <span class="keywordflow">if</span>(*it>maxConstraint)</div>
-<div class="line"><a name="l00625"></a><span class="lineno">  625</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00626"></a><span class="lineno">  626</span>       }</div>
-<div class="line"><a name="l00627"></a><span class="lineno">  627</span>       theMin=*it;</div>
-<div class="line"><a name="l00628"></a><span class="lineno">  628</span>       theMax=*it;</div>
-<div class="line"><a name="l00629"></a><span class="lineno">  629</span>       isValid=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00630"></a><span class="lineno">  630</span>     }</div>
-<div class="line"><a name="l00631"></a><span class="lineno">  631</span>   }</div>
-<div class="line"><a name="l00632"></a><span class="lineno">  632</span>   <span class="keywordflow">if</span>(!isValid){</div>
-<div class="line"><a name="l00633"></a><span class="lineno">  633</span>     <span class="keywordflow">if</span>(m_noDataValues.size()){</div>
-<div class="line"><a name="l00634"></a><span class="lineno">  634</span>       theMin=m_noDataValues[0];</div>
-<div class="line"><a name="l00635"></a><span class="lineno">  635</span>       theMax=m_noDataValues[0];</div>
-<div class="line"><a name="l00636"></a><span class="lineno">  636</span>     }</div>
-<div class="line"><a name="l00637"></a><span class="lineno">  637</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00638"></a><span class="lineno">  638</span>       std::string errorString=<span class="stringliteral">"Error: no valid data found"</span>;</div>
-<div class="line"><a name="l00639"></a><span class="lineno">  639</span>       <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00640"></a><span class="lineno">  640</span>     }</div>
-<div class="line"><a name="l00641"></a><span class="lineno">  641</span>   }</div>
-<div class="line"><a name="l00642"></a><span class="lineno">  642</span> }</div>
-<div class="line"><a name="l00643"></a><span class="lineno">  643</span> </div>
-<div class="line"><a name="l00644"></a><span class="lineno">  644</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">inline</span> T StatFactory::sum(<span class="keyword">const</span> std::vector<T>& v)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00645"></a><span class="lineno">  645</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00646"></a><span class="lineno">  646</span>   <span class="keywordtype">bool</span> isValid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00647"></a><span class="lineno">  647</span>   <span class="keyword">typename</span> std::vector<T>::const_iterator it;</div>
-<div class="line"><a name="l00648"></a><span class="lineno">  648</span>   T tmpSum=0;</div>
-<div class="line"><a name="l00649"></a><span class="lineno">  649</span>   <span class="keywordflow">for</span> (it = v.begin(); it!= v.end(); ++it){</div>
-<div class="line"><a name="l00650"></a><span class="lineno">  650</span>     <span class="keywordflow">if</span>(isNoData(*it))</div>
-<div class="line"><a name="l00651"></a><span class="lineno">  651</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00652"></a><span class="lineno">  652</span>     isValid=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00653"></a><span class="lineno">  653</span>     tmpSum+=*it;</div>
-<div class="line"><a name="l00654"></a><span class="lineno">  654</span>   }</div>
-<div class="line"><a name="l00655"></a><span class="lineno">  655</span>   <span class="keywordflow">if</span>(isValid)</div>
-<div class="line"><a name="l00656"></a><span class="lineno">  656</span>     <span class="keywordflow">return</span> tmpSum;</div>
-<div class="line"><a name="l00657"></a><span class="lineno">  657</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_noDataValues.size())</div>
-<div class="line"><a name="l00658"></a><span class="lineno">  658</span>     <span class="keywordflow">return</span> m_noDataValues[0];</div>
-<div class="line"><a name="l00659"></a><span class="lineno">  659</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00660"></a><span class="lineno">  660</span>     std::string errorString=<span class="stringliteral">"Error: no valid data found"</span>;</div>
-<div class="line"><a name="l00661"></a><span class="lineno">  661</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00662"></a><span class="lineno">  662</span>   }</div>
-<div class="line"><a name="l00663"></a><span class="lineno">  663</span> }</div>
-<div class="line"><a name="l00664"></a><span class="lineno">  664</span> </div>
-<div class="line"><a name="l00665"></a><span class="lineno">  665</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">inline</span> <span class="keywordtype">double</span> StatFactory::mean(<span class="keyword">const</span> std::vector<T>& v)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00666"></a><span class="lineno">  666</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00667"></a><span class="lineno">  667</span>   <span class="keyword">typename</span> std::vector<T>::const_iterator it;</div>
-<div class="line"><a name="l00668"></a><span class="lineno">  668</span>   T tmpSum=0;</div>
-<div class="line"><a name="l00669"></a><span class="lineno">  669</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> validSize=0;</div>
-<div class="line"><a name="l00670"></a><span class="lineno">  670</span>   <span class="keywordflow">for</span> (it = v.begin(); it!= v.end(); ++it){</div>
-<div class="line"><a name="l00671"></a><span class="lineno">  671</span>     <span class="keywordflow">if</span>(isNoData(*it))</div>
-<div class="line"><a name="l00672"></a><span class="lineno">  672</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00673"></a><span class="lineno">  673</span>     ++validSize;</div>
-<div class="line"><a name="l00674"></a><span class="lineno">  674</span>     tmpSum+=*it;</div>
-<div class="line"><a name="l00675"></a><span class="lineno">  675</span>   }</div>
-<div class="line"><a name="l00676"></a><span class="lineno">  676</span>   <span class="keywordflow">if</span>(validSize)</div>
-<div class="line"><a name="l00677"></a><span class="lineno">  677</span>     <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(tmpSum)/validSize;</div>
-<div class="line"><a name="l00678"></a><span class="lineno">  678</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_noDataValues.size())</div>
-<div class="line"><a name="l00679"></a><span class="lineno">  679</span>     <span class="keywordflow">return</span> m_noDataValues[0];</div>
-<div class="line"><a name="l00680"></a><span class="lineno">  680</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00681"></a><span class="lineno">  681</span>     std::string errorString=<span class="stringliteral">"Error: no valid data found"</span>;</div>
-<div class="line"><a name="l00682"></a><span class="lineno">  682</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00683"></a><span class="lineno">  683</span>   }</div>
-<div class="line"><a name="l00684"></a><span class="lineno">  684</span> }</div>
-<div class="line"><a name="l00685"></a><span class="lineno">  685</span> </div>
-<div class="line"><a name="l00686"></a><span class="lineno">  686</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">inline</span> <span class="keywordtype">void</span> StatFactory::eraseNoData(std::vector<T>& v)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00687"></a><span class="lineno">  687</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00688"></a><span class="lineno">  688</span>   <span class="keywordflow">if</span>(m_noDataValues.size()){</div>
-<div class="line"><a name="l00689"></a><span class="lineno">  689</span>     <span class="keyword">typename</span> std::vector<T>::iterator it=v.begin();</div>
-<div class="line"><a name="l00690"></a><span class="lineno">  690</span>     <span class="keywordflow">while</span>(it!=v.end()){</div>
-<div class="line"><a name="l00691"></a><span class="lineno">  691</span>       <span class="keywordflow">if</span>(isNoData(*it))</div>
-<div class="line"><a name="l00692"></a><span class="lineno">  692</span>     v.erase(it);</div>
-<div class="line"><a name="l00693"></a><span class="lineno">  693</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00694"></a><span class="lineno">  694</span>     ++it;</div>
-<div class="line"><a name="l00695"></a><span class="lineno">  695</span>     }</div>
-<div class="line"><a name="l00696"></a><span class="lineno">  696</span>   }</div>
-<div class="line"><a name="l00697"></a><span class="lineno">  697</span> }</div>
-<div class="line"><a name="l00698"></a><span class="lineno">  698</span> </div>
-<div class="line"><a name="l00699"></a><span class="lineno">  699</span>  <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> StatFactory::nvalid(<span class="keyword">const</span> std::vector<T>& v)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00700"></a><span class="lineno">  700</span>   std::vector<T> tmpV=v;</div>
-<div class="line"><a name="l00701"></a><span class="lineno">  701</span>   eraseNoData(tmpV);</div>
-<div class="line"><a name="l00702"></a><span class="lineno">  702</span>   <span class="keywordflow">return</span>(tmpV.size());</div>
-<div class="line"><a name="l00703"></a><span class="lineno">  703</span>  }</div>
-<div class="line"><a name="l00704"></a><span class="lineno">  704</span> </div>
-<div class="line"><a name="l00705"></a><span class="lineno">  705</span> <span class="keyword">template</span><<span class="keyword">class</span> T> T StatFactory::median(<span class="keyword">const</span> std::vector<T>& v)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00706"></a><span class="lineno">  706</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00707"></a><span class="lineno">  707</span>   std::vector<T> tmpV=v;</div>
-<div class="line"><a name="l00708"></a><span class="lineno">  708</span>   eraseNoData(tmpV);</div>
-<div class="line"><a name="l00709"></a><span class="lineno">  709</span>   <span class="keywordflow">if</span>(tmpV.size()){</div>
-<div class="line"><a name="l00710"></a><span class="lineno">  710</span>     sort(tmpV.begin(),tmpV.end());</div>
-<div class="line"><a name="l00711"></a><span class="lineno">  711</span>     <span class="keywordflow">if</span>(tmpV.size()%2)</div>
-<div class="line"><a name="l00712"></a><span class="lineno">  712</span>       <span class="keywordflow">return</span> tmpV[tmpV.size()/2];</div>
-<div class="line"><a name="l00713"></a><span class="lineno">  713</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00714"></a><span class="lineno">  714</span>       <span class="keywordflow">return</span> 0.5*(tmpV[tmpV.size()/2-1]+tmpV[tmpV.size()/2]);</div>
-<div class="line"><a name="l00715"></a><span class="lineno">  715</span>   }</div>
-<div class="line"><a name="l00716"></a><span class="lineno">  716</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_noDataValues.size())</div>
-<div class="line"><a name="l00717"></a><span class="lineno">  717</span>     <span class="keywordflow">return</span> m_noDataValues[0];</div>
-<div class="line"><a name="l00718"></a><span class="lineno">  718</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00719"></a><span class="lineno">  719</span>     std::string errorString=<span class="stringliteral">"Error: no valid data found"</span>;</div>
-<div class="line"><a name="l00720"></a><span class="lineno">  720</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00721"></a><span class="lineno">  721</span>   }</div>
-<div class="line"><a name="l00722"></a><span class="lineno">  722</span> }</div>
-<div class="line"><a name="l00723"></a><span class="lineno">  723</span> </div>
-<div class="line"><a name="l00724"></a><span class="lineno">  724</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> StatFactory::var(<span class="keyword">const</span> std::vector<T>& v)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00725"></a><span class="lineno">  725</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00726"></a><span class="lineno">  726</span>   <span class="keyword">typename</span> std::vector<T>::const_iterator it;</div>
-<div class="line"><a name="l00727"></a><span class="lineno">  727</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> validSize=0;</div>
-<div class="line"><a name="l00728"></a><span class="lineno">  728</span>   <span class="keywordtype">double</span> m1=0;</div>
-<div class="line"><a name="l00729"></a><span class="lineno">  729</span>   <span class="keywordtype">double</span> m2=0;</div>
-<div class="line"><a name="l00730"></a><span class="lineno">  730</span>   <span class="keywordflow">for</span> (it = v.begin(); it!= v.end(); ++it){</div>
-<div class="line"><a name="l00731"></a><span class="lineno">  731</span>     <span class="keywordflow">if</span>(isNoData(*it))</div>
-<div class="line"><a name="l00732"></a><span class="lineno">  732</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00733"></a><span class="lineno">  733</span>     m1+=*it;</div>
-<div class="line"><a name="l00734"></a><span class="lineno">  734</span>     m2+=(*it)*(*it);</div>
-<div class="line"><a name="l00735"></a><span class="lineno">  735</span>     ++validSize;</div>
-<div class="line"><a name="l00736"></a><span class="lineno">  736</span>   }</div>
-<div class="line"><a name="l00737"></a><span class="lineno">  737</span>   <span class="keywordflow">if</span>(validSize){</div>
-<div class="line"><a name="l00738"></a><span class="lineno">  738</span>     m2/=validSize;</div>
-<div class="line"><a name="l00739"></a><span class="lineno">  739</span>     m1/=validSize;</div>
-<div class="line"><a name="l00740"></a><span class="lineno">  740</span>     <span class="keywordflow">return</span> m2-m1*m1;</div>
-<div class="line"><a name="l00741"></a><span class="lineno">  741</span>   }</div>
-<div class="line"><a name="l00742"></a><span class="lineno">  742</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_noDataValues.size())</div>
-<div class="line"><a name="l00743"></a><span class="lineno">  743</span>     <span class="keywordflow">return</span> m_noDataValues[0];</div>
-<div class="line"><a name="l00744"></a><span class="lineno">  744</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00745"></a><span class="lineno">  745</span>     std::string errorString=<span class="stringliteral">"Error: no valid data found"</span>;</div>
-<div class="line"><a name="l00746"></a><span class="lineno">  746</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00747"></a><span class="lineno">  747</span>   }</div>
-<div class="line"><a name="l00748"></a><span class="lineno">  748</span> }</div>
-<div class="line"><a name="l00749"></a><span class="lineno">  749</span> </div>
-<div class="line"><a name="l00750"></a><span class="lineno">  750</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> StatFactory::moment(<span class="keyword">const</span> std::vector<T>& v, <span class="keywordtype">int</span> n)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00751"></a><span class="lineno">  751</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00752"></a><span class="lineno">  752</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> validSize=0;</div>
-<div class="line"><a name="l00753"></a><span class="lineno">  753</span>   <span class="keyword">typename</span> std::vector<T>::const_iterator it;</div>
-<div class="line"><a name="l00754"></a><span class="lineno">  754</span>   <span class="keywordtype">double</span> m=0;</div>
-<div class="line"><a name="l00755"></a><span class="lineno">  755</span> <span class="comment">//   double m1=mean(v);</span></div>
-<div class="line"><a name="l00756"></a><span class="lineno">  756</span>   <span class="keywordflow">for</span>(it = v.begin(); it!= v.end(); ++it){</div>
-<div class="line"><a name="l00757"></a><span class="lineno">  757</span>     <span class="keywordflow">if</span>(isNoData(*it))</div>
-<div class="line"><a name="l00758"></a><span class="lineno">  758</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00759"></a><span class="lineno">  759</span>     m+=pow((*it),n);</div>
-<div class="line"><a name="l00760"></a><span class="lineno">  760</span>     ++validSize;</div>
-<div class="line"><a name="l00761"></a><span class="lineno">  761</span>   }</div>
-<div class="line"><a name="l00762"></a><span class="lineno">  762</span>   <span class="keywordflow">if</span>(validSize)</div>
-<div class="line"><a name="l00763"></a><span class="lineno">  763</span>     <span class="keywordflow">return</span> m/validSize;</div>
-<div class="line"><a name="l00764"></a><span class="lineno">  764</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_noDataValues.size())</div>
-<div class="line"><a name="l00765"></a><span class="lineno">  765</span>     <span class="keywordflow">return</span> m_noDataValues[0];</div>
-<div class="line"><a name="l00766"></a><span class="lineno">  766</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00767"></a><span class="lineno">  767</span>     std::string errorString=<span class="stringliteral">"Error: no valid data found"</span>;</div>
-<div class="line"><a name="l00768"></a><span class="lineno">  768</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00769"></a><span class="lineno">  769</span>   }</div>
-<div class="line"><a name="l00770"></a><span class="lineno">  770</span> }</div>
-<div class="line"><a name="l00771"></a><span class="lineno">  771</span> </div>
-<div class="line"><a name="l00772"></a><span class="lineno">  772</span>   <span class="comment">//central moment</span></div>
-<div class="line"><a name="l00773"></a><span class="lineno">  773</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> StatFactory::cmoment(<span class="keyword">const</span> std::vector<T>& v, <span class="keywordtype">int</span> n)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00774"></a><span class="lineno">  774</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00775"></a><span class="lineno">  775</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> validSize=0;</div>
-<div class="line"><a name="l00776"></a><span class="lineno">  776</span>   <span class="keyword">typename</span> std::vector<T>::const_iterator it;</div>
-<div class="line"><a name="l00777"></a><span class="lineno">  777</span>   <span class="keywordtype">double</span> m=0;</div>
-<div class="line"><a name="l00778"></a><span class="lineno">  778</span>   <span class="keywordtype">double</span> m1=mean(v);</div>
-<div class="line"><a name="l00779"></a><span class="lineno">  779</span>   <span class="keywordflow">for</span>(it = v.begin(); it!= v.end(); ++it){</div>
-<div class="line"><a name="l00780"></a><span class="lineno">  780</span>     <span class="keywordflow">if</span>(isNoData(*it))</div>
-<div class="line"><a name="l00781"></a><span class="lineno">  781</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00782"></a><span class="lineno">  782</span>     m+=pow((*it-m1),n);</div>
-<div class="line"><a name="l00783"></a><span class="lineno">  783</span>     ++validSize;</div>
-<div class="line"><a name="l00784"></a><span class="lineno">  784</span>   }</div>
-<div class="line"><a name="l00785"></a><span class="lineno">  785</span>   <span class="keywordflow">if</span>(validSize)</div>
-<div class="line"><a name="l00786"></a><span class="lineno">  786</span>     <span class="keywordflow">return</span> m/validSize;</div>
-<div class="line"><a name="l00787"></a><span class="lineno">  787</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_noDataValues.size())</div>
-<div class="line"><a name="l00788"></a><span class="lineno">  788</span>     <span class="keywordflow">return</span> m_noDataValues[0];</div>
-<div class="line"><a name="l00789"></a><span class="lineno">  789</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00790"></a><span class="lineno">  790</span>     std::string errorString=<span class="stringliteral">"Error: no valid data found"</span>;</div>
-<div class="line"><a name="l00791"></a><span class="lineno">  791</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00792"></a><span class="lineno">  792</span>   }</div>
-<div class="line"><a name="l00793"></a><span class="lineno">  793</span> }</div>
-<div class="line"><a name="l00794"></a><span class="lineno">  794</span> </div>
-<div class="line"><a name="l00795"></a><span class="lineno">  795</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> StatFactory::skewness(<span class="keyword">const</span> std::vector<T>& v)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00796"></a><span class="lineno">  796</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00797"></a><span class="lineno">  797</span>   <span class="comment">//todo: what if nodata value?</span></div>
-<div class="line"><a name="l00798"></a><span class="lineno">  798</span>   <span class="keywordflow">return</span> cmoment(v,3)/pow(var(v),1.5);</div>
-<div class="line"><a name="l00799"></a><span class="lineno">  799</span> }</div>
-<div class="line"><a name="l00800"></a><span class="lineno">  800</span> </div>
-<div class="line"><a name="l00801"></a><span class="lineno">  801</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> StatFactory::kurtosis(<span class="keyword">const</span> std::vector<T>& v)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00802"></a><span class="lineno">  802</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00803"></a><span class="lineno">  803</span>   <span class="comment">//todo: what if nodata value?</span></div>
-<div class="line"><a name="l00804"></a><span class="lineno">  804</span>   <span class="keywordtype">double</span> m2=cmoment(v,2);</div>
-<div class="line"><a name="l00805"></a><span class="lineno">  805</span>   <span class="keywordtype">double</span> m4=cmoment(v,4);</div>
-<div class="line"><a name="l00806"></a><span class="lineno">  806</span>   <span class="keywordflow">return</span> m4/m2/m2-3.0;</div>
-<div class="line"><a name="l00807"></a><span class="lineno">  807</span> }</div>
-<div class="line"><a name="l00808"></a><span class="lineno">  808</span> </div>
-<div class="line"><a name="l00809"></a><span class="lineno">  809</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> StatFactory::meanVar(<span class="keyword">const</span> std::vector<T>& v, <span class="keywordtype">double</span>& m1, <span class="keywordtype">double</span>& v1)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00810"></a><span class="lineno">  810</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00811"></a><span class="lineno">  811</span>   <span class="keyword">typename</span> std::vector<T>::const_iterator it;</div>
-<div class="line"><a name="l00812"></a><span class="lineno">  812</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> validSize=0;</div>
-<div class="line"><a name="l00813"></a><span class="lineno">  813</span>   m1=0;</div>
-<div class="line"><a name="l00814"></a><span class="lineno">  814</span>   v1=0;</div>
-<div class="line"><a name="l00815"></a><span class="lineno">  815</span>   <span class="keywordtype">double</span> m2=0;</div>
-<div class="line"><a name="l00816"></a><span class="lineno">  816</span>   <span class="keywordflow">for</span> (it = v.begin(); it!= v.end(); ++it){</div>
-<div class="line"><a name="l00817"></a><span class="lineno">  817</span>     <span class="keywordflow">if</span>(isNoData(*it))</div>
-<div class="line"><a name="l00818"></a><span class="lineno">  818</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00819"></a><span class="lineno">  819</span>     m1+=*it;</div>
-<div class="line"><a name="l00820"></a><span class="lineno">  820</span>     m2+=(*it)*(*it);</div>
-<div class="line"><a name="l00821"></a><span class="lineno">  821</span>     ++validSize;</div>
-<div class="line"><a name="l00822"></a><span class="lineno">  822</span>   }</div>
-<div class="line"><a name="l00823"></a><span class="lineno">  823</span>   <span class="keywordflow">if</span>(validSize){</div>
-<div class="line"><a name="l00824"></a><span class="lineno">  824</span>     m2/=validSize;</div>
-<div class="line"><a name="l00825"></a><span class="lineno">  825</span>     m1/=validSize;</div>
-<div class="line"><a name="l00826"></a><span class="lineno">  826</span>     v1=m2-m1*m1;</div>
-<div class="line"><a name="l00827"></a><span class="lineno">  827</span>   }</div>
-<div class="line"><a name="l00828"></a><span class="lineno">  828</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_noDataValues.size()){</div>
-<div class="line"><a name="l00829"></a><span class="lineno">  829</span>     m1=m_noDataValues[0];</div>
-<div class="line"><a name="l00830"></a><span class="lineno">  830</span>     v1=m_noDataValues[0];</div>
-<div class="line"><a name="l00831"></a><span class="lineno">  831</span>   }</div>
-<div class="line"><a name="l00832"></a><span class="lineno">  832</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00833"></a><span class="lineno">  833</span>     std::string errorString=<span class="stringliteral">"Error: no valid data found"</span>;</div>
-<div class="line"><a name="l00834"></a><span class="lineno">  834</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00835"></a><span class="lineno">  835</span>   }</div>
-<div class="line"><a name="l00836"></a><span class="lineno">  836</span> }</div>
-<div class="line"><a name="l00837"></a><span class="lineno">  837</span> </div>
-<div class="line"><a name="l00838"></a><span class="lineno">  838</span> <span class="keyword">template</span><<span class="keyword">class</span> T1, <span class="keyword">class</span> T2> <span class="keywordtype">void</span> StatFactory::scale2byte(<span class="keyword">const</span> std::vector<T1>& input, std::vector<T2>& output, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> lbound,  <span class="keywordtype">unsigned</s [...]
-<div class="line"><a name="l00839"></a><span class="lineno">  839</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00840"></a><span class="lineno">  840</span>   output.resize(input.size());</div>
-<div class="line"><a name="l00841"></a><span class="lineno">  841</span>   T1 minimum=mymin(input);</div>
-<div class="line"><a name="l00842"></a><span class="lineno">  842</span>   T1 maximum=mymax(input);</div>
-<div class="line"><a name="l00843"></a><span class="lineno">  843</span>   <span class="keywordflow">if</span>(minimum>=maximum){</div>
-<div class="line"><a name="l00844"></a><span class="lineno">  844</span>     std::string errorString=<span class="stringliteral">"Error: no valid data found"</span>;</div>
-<div class="line"><a name="l00845"></a><span class="lineno">  845</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00846"></a><span class="lineno">  846</span>   }</div>
-<div class="line"><a name="l00847"></a><span class="lineno">  847</span>   <span class="keywordtype">double</span> scale=(ubound-lbound)/(maximum-minimum);</div>
-<div class="line"><a name="l00848"></a><span class="lineno">  848</span>   <span class="comment">//todo: what if nodata value?</span></div>
-<div class="line"><a name="l00849"></a><span class="lineno">  849</span>   <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0;i<input.size();++i){</div>
-<div class="line"><a name="l00850"></a><span class="lineno">  850</span>     output[i]=scale*(input[i]-(minimum))+lbound;</div>
-<div class="line"><a name="l00851"></a><span class="lineno">  851</span>   }</div>
-<div class="line"><a name="l00852"></a><span class="lineno">  852</span> }</div>
-<div class="line"><a name="l00853"></a><span class="lineno">  853</span> </div>
-<div class="line"><a name="l00854"></a><span class="lineno">  854</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span>  StatFactory::distribution(<span class="keyword">const</span> std::vector<T>& input, <span class="keyword">typename</span> std::vector<T>::const_iterator begin, <span class="keyword">typename</span> std::vector<T>::const_iterator end, std::vector<double>& output [...]
-<div class="line"><a name="l00855"></a><span class="lineno">  855</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00856"></a><span class="lineno">  856</span>   <span class="keywordtype">double</span> minValue=0;</div>
-<div class="line"><a name="l00857"></a><span class="lineno">  857</span>   <span class="keywordtype">double</span> maxValue=0;</div>
-<div class="line"><a name="l00858"></a><span class="lineno">  858</span>   minmax(input,begin,end,minimum,maximum);</div>
-<div class="line"><a name="l00859"></a><span class="lineno">  859</span>   <span class="keywordflow">if</span>(minimum<maximum&&minimum>minValue)</div>
-<div class="line"><a name="l00860"></a><span class="lineno">  860</span>   minValue=minimum;</div>
-<div class="line"><a name="l00861"></a><span class="lineno">  861</span>   <span class="keywordflow">if</span>(minimum<maximum&&maximum<maxValue)</div>
-<div class="line"><a name="l00862"></a><span class="lineno">  862</span>   maxValue=maximum;</div>
-<div class="line"><a name="l00863"></a><span class="lineno">  863</span> </div>
-<div class="line"><a name="l00864"></a><span class="lineno">  864</span>   <span class="comment">//todo: check...</span></div>
-<div class="line"><a name="l00865"></a><span class="lineno">  865</span>   minimum=minValue;</div>
-<div class="line"><a name="l00866"></a><span class="lineno">  866</span>   maximum=maxValue;</div>
-<div class="line"><a name="l00867"></a><span class="lineno">  867</span> </div>
-<div class="line"><a name="l00868"></a><span class="lineno">  868</span>   <span class="keywordflow">if</span>(maximum<=minimum){</div>
-<div class="line"><a name="l00869"></a><span class="lineno">  869</span>     std::ostringstream s;</div>
-<div class="line"><a name="l00870"></a><span class="lineno">  870</span>     s<<<span class="stringliteral">"Error: could not calculate distribution (min>=max)"</span>;</div>
-<div class="line"><a name="l00871"></a><span class="lineno">  871</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l00872"></a><span class="lineno">  872</span>   }</div>
-<div class="line"><a name="l00873"></a><span class="lineno">  873</span>   <span class="keywordflow">if</span>(!nbin){</div>
-<div class="line"><a name="l00874"></a><span class="lineno">  874</span>     std::string errorString=<span class="stringliteral">"Error: nbin not defined"</span>;</div>
-<div class="line"><a name="l00875"></a><span class="lineno">  875</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00876"></a><span class="lineno">  876</span>   }</div>
-<div class="line"><a name="l00877"></a><span class="lineno">  877</span>   <span class="keywordflow">if</span>(!input.size()){</div>
-<div class="line"><a name="l00878"></a><span class="lineno">  878</span>     std::string errorString=<span class="stringliteral">"Error: no valid data found"</span>;</div>
-<div class="line"><a name="l00879"></a><span class="lineno">  879</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00880"></a><span class="lineno">  880</span>   }</div>
-<div class="line"><a name="l00881"></a><span class="lineno">  881</span>   <span class="keywordflow">if</span>(output.size()!=nbin){</div>
-<div class="line"><a name="l00882"></a><span class="lineno">  882</span>     output.resize(nbin);</div>
-<div class="line"><a name="l00883"></a><span class="lineno">  883</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<nbin;output[i++]=0);</div>
-<div class="line"><a name="l00884"></a><span class="lineno">  884</span>   }</div>
-<div class="line"><a name="l00885"></a><span class="lineno">  885</span>   <span class="keywordtype">bool</span> isValid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00886"></a><span class="lineno">  886</span>   <span class="keyword">typename</span> std::vector<T>::const_iterator it;</div>
-<div class="line"><a name="l00887"></a><span class="lineno">  887</span>   <span class="keywordflow">for</span>(it=begin;it!=end;++it){</div>
-<div class="line"><a name="l00888"></a><span class="lineno">  888</span>     <span class="keywordflow">if</span>(*it<minimum)</div>
-<div class="line"><a name="l00889"></a><span class="lineno">  889</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00890"></a><span class="lineno">  890</span>     <span class="keywordflow">if</span>(*it>maximum)</div>
-<div class="line"><a name="l00891"></a><span class="lineno">  891</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00892"></a><span class="lineno">  892</span>     <span class="keywordflow">if</span>(isNoData(*it))</div>
-<div class="line"><a name="l00893"></a><span class="lineno">  893</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00894"></a><span class="lineno">  894</span>     isValid=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00895"></a><span class="lineno">  895</span>     <span class="keywordflow">if</span>(sigma>0){</div>
-<div class="line"><a name="l00896"></a><span class="lineno">  896</span>       <span class="comment">// minimum-=2*sigma;</span></div>
-<div class="line"><a name="l00897"></a><span class="lineno">  897</span>       <span class="comment">// maximum+=2*sigma;</span></div>
-<div class="line"><a name="l00898"></a><span class="lineno">  898</span>       <span class="comment">//create kde for Gaussian basis function</span></div>
-<div class="line"><a name="l00899"></a><span class="lineno">  899</span>       <span class="comment">//todo: speed up by calculating first and last bin with non-zero contriubtion...</span></div>
-<div class="line"><a name="l00900"></a><span class="lineno">  900</span>       <span class="comment">//todo: calculate real surface below pdf by using gsl_cdf_gaussian_P(x-mean+binsize,sigma)-gsl_cdf_gaussian_P(x-mean,sigma)</span></div>
-<div class="line"><a name="l00901"></a><span class="lineno">  901</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ibin=0;ibin<nbin;++ibin){</div>
-<div class="line"><a name="l00902"></a><span class="lineno">  902</span>         <span class="keywordtype">double</span> icenter=minimum+<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(maximum-minimum)*(ibin+0.5)/nbin;</div>
-<div class="line"><a name="l00903"></a><span class="lineno">  903</span>         <span class="keywordtype">double</span> thePdf=gsl_ran_gaussian_pdf(*it-icenter, sigma);</div>
-<div class="line"><a name="l00904"></a><span class="lineno">  904</span>         output[ibin]+=thePdf;</div>
-<div class="line"><a name="l00905"></a><span class="lineno">  905</span>       }</div>
-<div class="line"><a name="l00906"></a><span class="lineno">  906</span>     }</div>
-<div class="line"><a name="l00907"></a><span class="lineno">  907</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00908"></a><span class="lineno">  908</span>       <span class="keywordtype">int</span> theBin=0;</div>
-<div class="line"><a name="l00909"></a><span class="lineno">  909</span>       <span class="keywordflow">if</span>(*it==maximum)</div>
-<div class="line"><a name="l00910"></a><span class="lineno">  910</span>         theBin=nbin-1;</div>
-<div class="line"><a name="l00911"></a><span class="lineno">  911</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(*it>minimum && *it<maximum)</div>
-<div class="line"><a name="l00912"></a><span class="lineno">  912</span>         theBin=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>((nbin-1)*(*it)-minimum)/(maximum-minimum));</div>
-<div class="line"><a name="l00913"></a><span class="lineno">  913</span>       ++output[theBin];</div>
-<div class="line"><a name="l00914"></a><span class="lineno">  914</span>       <span class="comment">// if(*it==maximum)</span></div>
-<div class="line"><a name="l00915"></a><span class="lineno">  915</span>       <span class="comment">//   ++output[nbin-1];</span></div>
-<div class="line"><a name="l00916"></a><span class="lineno">  916</span>       <span class="comment">// else if(*it>=minimum && *it<maximum)</span></div>
-<div class="line"><a name="l00917"></a><span class="lineno">  917</span>       <span class="comment">//   ++output[static_cast<int>(static_cast<double>((*it)-minimum)/(maximum-minimum)*nbin)];</span></div>
-<div class="line"><a name="l00918"></a><span class="lineno">  918</span>     }</div>
-<div class="line"><a name="l00919"></a><span class="lineno">  919</span>   }</div>
-<div class="line"><a name="l00920"></a><span class="lineno">  920</span>   <span class="keywordflow">if</span>(!isValid){</div>
-<div class="line"><a name="l00921"></a><span class="lineno">  921</span>     std::string errorString=<span class="stringliteral">"Error: no valid data found"</span>;</div>
-<div class="line"><a name="l00922"></a><span class="lineno">  922</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00923"></a><span class="lineno">  923</span>   }</div>
-<div class="line"><a name="l00924"></a><span class="lineno">  924</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!filename.empty()){</div>
-<div class="line"><a name="l00925"></a><span class="lineno">  925</span>     std::ofstream outputfile;</div>
-<div class="line"><a name="l00926"></a><span class="lineno">  926</span>     outputfile.open(filename.c_str());</div>
-<div class="line"><a name="l00927"></a><span class="lineno">  927</span>     <span class="keywordflow">if</span>(!outputfile){</div>
-<div class="line"><a name="l00928"></a><span class="lineno">  928</span>       std::ostringstream s;</div>
-<div class="line"><a name="l00929"></a><span class="lineno">  929</span>       s<<<span class="stringliteral">"Error opening distribution file , "</span> << filename;</div>
-<div class="line"><a name="l00930"></a><span class="lineno">  930</span>       <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l00931"></a><span class="lineno">  931</span>     }</div>
-<div class="line"><a name="l00932"></a><span class="lineno">  932</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ibin=0;ibin<nbin;++ibin)</div>
-<div class="line"><a name="l00933"></a><span class="lineno">  933</span>       outputfile << minimum+static_cast<double>(maximum-minimum)*(ibin+0.5)/nbin << <span class="stringliteral">" "</span> << <span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(output[ibin])/input.size() << std::endl;</div>
-<div class="line"><a name="l00934"></a><span class="lineno">  934</span>     outputfile.close();</div>
-<div class="line"><a name="l00935"></a><span class="lineno">  935</span>   }</div>
-<div class="line"><a name="l00936"></a><span class="lineno">  936</span> }</div>
-<div class="line"><a name="l00937"></a><span class="lineno">  937</span> </div>
-<div class="line"><a name="l00938"></a><span class="lineno">  938</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span>  StatFactory::distribution2d(<span class="keyword">const</span> std::vector<T>& inputX, <span class="keyword">const</span> std::vector<T>& inputY, std::vector< std::vector<double> >& output, <span class="keywordtype">int</span> nbin, T& minX, T& maxX [...]
-<div class="line"><a name="l00939"></a><span class="lineno">  939</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00940"></a><span class="lineno">  940</span>   <span class="keywordflow">if</span>(inputX.empty()){</div>
-<div class="line"><a name="l00941"></a><span class="lineno">  941</span>     std::ostringstream s;</div>
-<div class="line"><a name="l00942"></a><span class="lineno">  942</span>     s<<<span class="stringliteral">"Error: inputX is empty"</span>;</div>
-<div class="line"><a name="l00943"></a><span class="lineno">  943</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l00944"></a><span class="lineno">  944</span>   }</div>
-<div class="line"><a name="l00945"></a><span class="lineno">  945</span>   <span class="keywordflow">if</span>(inputX.size()!=inputY.size()){</div>
-<div class="line"><a name="l00946"></a><span class="lineno">  946</span>     std::ostringstream s;</div>
-<div class="line"><a name="l00947"></a><span class="lineno">  947</span>     s<<<span class="stringliteral">"Error: inputX is empty"</span>;</div>
-<div class="line"><a name="l00948"></a><span class="lineno">  948</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l00949"></a><span class="lineno">  949</span>   }</div>
-<div class="line"><a name="l00950"></a><span class="lineno">  950</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> npoint=inputX.size();</div>
-<div class="line"><a name="l00951"></a><span class="lineno">  951</span>   <span class="keywordflow">if</span>(maxX<=minX)</div>
-<div class="line"><a name="l00952"></a><span class="lineno">  952</span>     minmax(inputX,inputX.begin(),inputX.end(),minX,maxX);</div>
-<div class="line"><a name="l00953"></a><span class="lineno">  953</span>   <span class="keywordflow">if</span>(maxX<=minX){</div>
-<div class="line"><a name="l00954"></a><span class="lineno">  954</span>     std::ostringstream s;</div>
-<div class="line"><a name="l00955"></a><span class="lineno">  955</span>     s<<<span class="stringliteral">"Error: could not calculate distribution (minX>=maxX)"</span>;</div>
-<div class="line"><a name="l00956"></a><span class="lineno">  956</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l00957"></a><span class="lineno">  957</span>   }</div>
-<div class="line"><a name="l00958"></a><span class="lineno">  958</span>   <span class="keywordflow">if</span>(maxY<=minY)</div>
-<div class="line"><a name="l00959"></a><span class="lineno">  959</span>     minmax(inputY,inputY.begin(),inputY.end(),minY,maxY);</div>
-<div class="line"><a name="l00960"></a><span class="lineno">  960</span>   <span class="keywordflow">if</span>(maxY<=minY){</div>
-<div class="line"><a name="l00961"></a><span class="lineno">  961</span>     std::ostringstream s;</div>
-<div class="line"><a name="l00962"></a><span class="lineno">  962</span>     s<<<span class="stringliteral">"Error: could not calculate distribution (minY>=maxY)"</span>;</div>
-<div class="line"><a name="l00963"></a><span class="lineno">  963</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l00964"></a><span class="lineno">  964</span>   }</div>
-<div class="line"><a name="l00965"></a><span class="lineno">  965</span>   <span class="keywordflow">if</span>(nbin<=1){</div>
-<div class="line"><a name="l00966"></a><span class="lineno">  966</span>     std::ostringstream s;</div>
-<div class="line"><a name="l00967"></a><span class="lineno">  967</span>     s<<<span class="stringliteral">"Error: nbin must be larger than 1"</span>;</div>
-<div class="line"><a name="l00968"></a><span class="lineno">  968</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l00969"></a><span class="lineno">  969</span>   }</div>
-<div class="line"><a name="l00970"></a><span class="lineno">  970</span>   output.resize(nbin);</div>
-<div class="line"><a name="l00971"></a><span class="lineno">  971</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<nbin;++i){</div>
-<div class="line"><a name="l00972"></a><span class="lineno">  972</span>     output[i].resize(nbin);</div>
-<div class="line"><a name="l00973"></a><span class="lineno">  973</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=0;j<nbin;++j)</div>
-<div class="line"><a name="l00974"></a><span class="lineno">  974</span>       output[i][j]=0;</div>
-<div class="line"><a name="l00975"></a><span class="lineno">  975</span>   }</div>
-<div class="line"><a name="l00976"></a><span class="lineno">  976</span>   <span class="keywordtype">int</span> binX=0;</div>
-<div class="line"><a name="l00977"></a><span class="lineno">  977</span>   <span class="keywordtype">int</span> binY=0;</div>
-<div class="line"><a name="l00978"></a><span class="lineno">  978</span>   <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> ipoint=0;ipoint<npoint;++ipoint){</div>
-<div class="line"><a name="l00979"></a><span class="lineno">  979</span>     <span class="keywordflow">if</span>(inputX[ipoint]==maxX)</div>
-<div class="line"><a name="l00980"></a><span class="lineno">  980</span>        binX=nbin-1;</div>
-<div class="line"><a name="l00981"></a><span class="lineno">  981</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00982"></a><span class="lineno">  982</span>       binX=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(inputX[ipoint]-minX)/(maxX-minX)*nbin);</div>
-<div class="line"><a name="l00983"></a><span class="lineno">  983</span>     <span class="keywordflow">if</span>(inputY[ipoint]==maxY)</div>
-<div class="line"><a name="l00984"></a><span class="lineno">  984</span>        binY=nbin-1;</div>
-<div class="line"><a name="l00985"></a><span class="lineno">  985</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00986"></a><span class="lineno">  986</span>       binY=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(inputY[ipoint]-minY)/(maxY-minY)*nbin);</div>
-<div class="line"><a name="l00987"></a><span class="lineno">  987</span>     <span class="keywordflow">if</span>(binX<0){</div>
-<div class="line"><a name="l00988"></a><span class="lineno">  988</span>       std::ostringstream s;</div>
-<div class="line"><a name="l00989"></a><span class="lineno">  989</span>       s<<<span class="stringliteral">"Error: binX is smaller than 0"</span>;</div>
-<div class="line"><a name="l00990"></a><span class="lineno">  990</span>       <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l00991"></a><span class="lineno">  991</span>     }</div>
-<div class="line"><a name="l00992"></a><span class="lineno">  992</span>     <span class="keywordflow">if</span>(output.size()<=binX){</div>
-<div class="line"><a name="l00993"></a><span class="lineno">  993</span>       std::ostringstream s;</div>
-<div class="line"><a name="l00994"></a><span class="lineno">  994</span>       s<<<span class="stringliteral">"Error: output size must be larger than binX"</span>;</div>
-<div class="line"><a name="l00995"></a><span class="lineno">  995</span>       <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l00996"></a><span class="lineno">  996</span>     }</div>
-<div class="line"><a name="l00997"></a><span class="lineno">  997</span>     <span class="keywordflow">if</span>(binY<0){</div>
-<div class="line"><a name="l00998"></a><span class="lineno">  998</span>       std::ostringstream s;</div>
-<div class="line"><a name="l00999"></a><span class="lineno">  999</span>       s<<<span class="stringliteral">"Error: binY is smaller than 0"</span>;</div>
-<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>       <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>     }</div>
-<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>     <span class="keywordflow">if</span>(output.size()<=binY){</div>
-<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>       std::ostringstream s;</div>
-<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>       s<<<span class="stringliteral">"Error: output size must be larger than binY"</span>;</div>
-<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>       <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>     }</div>
-<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>     <span class="keywordflow">if</span>(sigma>0){</div>
-<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>       <span class="comment">// minX-=2*sigma;</span></div>
-<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>       <span class="comment">// maxX+=2*sigma;</span></div>
-<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>       <span class="comment">// minY-=2*sigma;</span></div>
-<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>       <span class="comment">// maxY+=2*sigma;</span></div>
-<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>       <span class="comment">//create kde for Gaussian basis function</span></div>
-<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>       <span class="comment">//todo: speed up by calculating first and last bin with non-zero contriubtion...</span></div>
-<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ibinX=0;ibinX<nbin;++ibinX){</div>
-<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>         <span class="keywordtype">double</span> centerX=minX+<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(maxX-minX)*ibinX/nbin;</div>
-<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>         <span class="keywordtype">double</span> pdfX=gsl_ran_gaussian_pdf(inputX[ipoint]-centerX, sigma);</div>
-<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ibinY=0;ibinY<nbin;++ibinY){</div>
-<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>           <span class="comment">//calculate  \integral_ibinX^(ibinX+1)</span></div>
-<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>           <span class="keywordtype">double</span> centerY=minY+<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(maxY-minY)*ibinY/nbin;</div>
-<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>           <span class="keywordtype">double</span> pdfY=gsl_ran_gaussian_pdf(inputY[ipoint]-centerY, sigma);</div>
-<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>           output[ibinX][binY]+=pdfX*pdfY;</div>
-<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>         }</div>
-<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>       }</div>
-<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>     }</div>
-<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>       ++output[binX][binY];</div>
-<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>   }</div>
-<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>   <span class="keywordflow">if</span>(!filename.empty()){</div>
-<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>     std::ofstream outputfile;</div>
-<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>     outputfile.open(filename.c_str());</div>
-<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>     <span class="keywordflow">if</span>(!outputfile){</div>
-<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>       std::ostringstream s;</div>
-<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>       s<<<span class="stringliteral">"Error opening distribution file , "</span> << filename;</div>
-<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>       <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>     }</div>
-<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> binX=0;binX<nbin;++binX){</div>
-<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>       outputfile << std::endl;</div>
-<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> binY=0;binY<nbin;++binY){</div>
-<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>     <span class="keywordtype">double</span> binValueX=0;</div>
-<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>     <span class="keywordflow">if</span>(nbin==maxX-minX+1)</div>
-<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>       binValueX=minX+binX;</div>
-<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>       binValueX=minX+<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(maxX-minX)*(binX+0.5)/nbin;</div>
-<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>     <span class="keywordtype">double</span> binValueY=0;</div>
-<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>     <span class="keywordflow">if</span>(nbin==maxY-minY+1)</div>
-<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>       binValueY=minY+binY;</div>
-<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>       binValueY=minY+<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(maxY-minY)*(binY+0.5)/nbin;</div>
-<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>         <span class="keywordtype">double</span> value=0;</div>
-<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>         value=<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(output[binX][binY])/npoint;</div>
-<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>     outputfile << binValueX << <span class="stringliteral">" "</span> << binValueY << <span class="stringliteral">" "</span> << value << std::endl;</div>
-<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>         <span class="comment">/* double value=static_cast<double>(output[binX][binY])/npoint; */</span></div>
-<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>         <span class="comment">/* outputfile << (maxX-minX)*bin/(nbin-1)+minX << " " << (maxY-minY)*bin/(nbin-1)+minY << " " << value << std::endl; */</span></div>
-<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>       }</div>
-<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>     }</div>
-<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>     outputfile.close();</div>
-<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>   }</div>
-<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span> }</div>
-<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span> </div>
-<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span> <span class="comment">//todo: what with nodata values?</span></div>
-<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span>  StatFactory::percentiles (<span class="keyword">const</span> std::vector<T>& input, <span class="keyword">typename</span> std::vector<T>::const_iterator begin, <span class="keyword">typename</span> std::vector<T>::const_iterator end, std::vector<T>& output, <sp [...]
-<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>   <span class="keywordflow">if</span>(maximum<=minimum)</div>
-<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>     minmax(input,begin,end,minimum,maximum);</div>
-<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>   <span class="keywordflow">if</span>(maximum<=minimum){</div>
-<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>     std::ostringstream s;</div>
-<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>     s<<<span class="stringliteral">"Error: maximum must be at least minimum"</span>;</div>
-<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>   }</div>
-<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>   <span class="keywordflow">if</span>(nbin<=1){</div>
-<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>     std::ostringstream s;</div>
-<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>     s<<<span class="stringliteral">"Error: nbin must be larger than 1"</span>;</div>
-<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>   }</div>
-<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>   <span class="keywordflow">if</span>(input.empty()){</div>
-<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>     std::ostringstream s;</div>
-<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>     s<<<span class="stringliteral">"Error: input is empty"</span>;</div>
-<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>   }</div>
-<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>   output.resize(nbin);</div>
-<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>   std::vector<T> inputSort;</div>
-<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>   inputSort.assign(begin,end);</div>
-<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>   <span class="keyword">typename</span> std::vector<T>::iterator vit=inputSort.begin();</div>
-<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>   <span class="keywordflow">while</span>(vit!=inputSort.end()){</div>
-<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>     <span class="keywordflow">if</span>(*vit<minimum||*vit>maximum)</div>
-<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>       inputSort.erase(vit);</div>
-<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>       ++vit;</div>
-<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>   }</div>
-<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>   eraseNoData(inputSort);</div>
-<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>   std::sort(inputSort.begin(),inputSort.end());</div>
-<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>   vit=inputSort.begin();</div>
-<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>   std::vector<T> inputBin;</div>
-<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ibin=0;ibin<nbin;++ibin){</div>
-<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>     inputBin.clear();</div>
-<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>     <span class="keywordflow">while</span>(inputBin.size()<inputSort.size()/nbin&&vit!=inputSort.end()){</div>
-<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>       inputBin.push_back(*vit);</div>
-<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>       ++vit;</div>
-<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>     }</div>
-<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>     <span class="keywordflow">if</span>(inputBin.size()){</div>
-<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>       output[ibin]=mymax(inputBin);</div>
-<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>     }</div>
-<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>   }</div>
-<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>   <span class="keywordflow">if</span>(!filename.empty()){</div>
-<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>     std::ofstream outputfile;</div>
-<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>     outputfile.open(filename.c_str());</div>
-<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>     <span class="keywordflow">if</span>(!outputfile){</div>
-<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>       std::ostringstream s;</div>
-<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>       s<<<span class="stringliteral">"error opening distribution file , "</span> << filename;</div>
-<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>       <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>     }</div>
-<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ibin=0;ibin<nbin;++ibin)</div>
-<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>       outputfile << ibin*100.0/nbin << <span class="stringliteral">" "</span> << static_cast<double>(output[ibin])/input.size() << std::endl;</div>
-<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>     outputfile.close();</div>
-<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>   }</div>
-<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span> }</div>
-<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span> </div>
-<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span> <span class="comment">//todo: what with nodata values?</span></div>
-<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span> <span class="keyword">template</span><<span class="keyword">class</span> T> T  StatFactory::percentile(<span class="keyword">const</span> std::vector<T>& input, <span class="keyword">typename</span> std::vector<T>::const_iterator begin, <span class="keyword">typename</span> std::vector<T>::const_iterator end, <span class="keywordtype">double</span> percent, T minimum, T maximum)<span [...]
-<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>   <span class="keywordflow">if</span>(input.empty()){</div>
-<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>     std::ostringstream s;</div>
-<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>     s<<<span class="stringliteral">"Error: input is empty"</span>;</div>
-<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>   }</div>
-<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>   std::vector<T> inputSort;</div>
-<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>   inputSort.assign(begin,end);</div>
-<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>   <span class="keyword">typename</span> std::vector<T>::iterator vit=inputSort.begin();</div>
-<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>   <span class="keywordflow">while</span>(vit!=inputSort.end()){</div>
-<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>     <span class="keywordflow">if</span>(maximum>minimum){</div>
-<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>       <span class="keywordflow">if</span>(*vit<minimum||*vit>maximum)</div>
-<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>     inputSort.erase(vit);</div>
-<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>     }</div>
-<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>       ++vit;</div>
-<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>   }</div>
-<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>   eraseNoData(inputSort);</div>
-<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>   std::sort(inputSort.begin(),inputSort.end());</div>
-<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>   <span class="keywordflow">return</span> gsl_stats_quantile_from_sorted_data(&(inputSort[0]),1,inputSort.size(),percent/100.0);</div>
-<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span> }</div>
-<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span> </div>
-<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> StatFactory::signature(<span class="keyword">const</span> std::vector<T>& input, <span class="keywordtype">double</span>&k, <span class="keywordtype">double</span>& alpha, <span class="keywordtype">double</span>& beta, <span class="keywordtype">double</span> e)<span class [...]
-<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>   <span class="keywordtype">double</span> m1=moment(input,1);</div>
-<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>   <span class="keywordtype">double</span> m2=moment(input,2);</div>
-<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>   signature(m1,m2,k,alpha,beta,e);</div>
-<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span> }</div>
-<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span> </div>
-<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span> <span class="comment">//todo: what with nodata values?</span></div>
-<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> StatFactory::normalize(<span class="keyword">const</span> std::vector<T>& input, std::vector<double>& output)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>   <span class="keywordtype">double</span> total=sum(input);</div>
-<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>   <span class="keywordflow">if</span>(total){</div>
-<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>     output.resize(input.size());</div>
-<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> index=0;index<input.size();++index)</div>
-<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>       output[index]=input[index]/total;</div>
-<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>   }</div>
-<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>     output=input;</div>
-<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span> }</div>
-<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span> </div>
-<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span> <span class="comment">//todo: what with nodata values?</span></div>
-<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> StatFactory::normalize_pct(std::vector<T>& input)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>   <span class="keywordtype">double</span> total=sum(input);</div>
-<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>   <span class="keywordflow">if</span>(total){</div>
-<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>     <span class="keyword">typename</span> std::vector<T>::iterator it;</div>
-<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>     <span class="keywordflow">for</span>(it=input.begin();it!=input.end();++it)</div>
-<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>       *it=100.0*(*it)/total;</div>
-<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>   }</div>
-<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span> }</div>
-<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>  </div>
-<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> StatFactory::rmse(<span class="keyword">const</span> std::vector<T>& x, <span class="keyword">const</span> std::vector<T>& y)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>   <span class="keywordflow">if</span>(x.size()!=y.size()){</div>
-<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>     std::ostringstream s;</div>
-<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>     s<<<span class="stringliteral">"Error: x and y not equal in size"</span>;</div>
-<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>   }</div>
-<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>   <span class="keywordflow">if</span>(x.empty()){</div>
-<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>     std::ostringstream s;</div>
-<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>     s<<<span class="stringliteral">"Error: x is empty"</span>;</div>
-<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>   }</div>
-<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>   <span class="keywordtype">double</span> mse=0;</div>
-<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<x.size();++isample){</div>
-<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>     <span class="keywordflow">if</span>(isNoData(x[isample])||isNoData(y[isample]))</div>
-<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>        <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>     <span class="keywordtype">double</span> e=x[isample]-y[isample];</div>
-<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>     mse+=e*e/x.size();</div>
-<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>   }</div>
-<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>   <span class="keywordflow">return</span> sqrt(mse);</div>
-<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span> }</div>
-<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span> </div>
-<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span> <span class="comment">//normalized root mean square error</span></div>
-<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> StatFactory::nrmse(<span class="keyword">const</span> std::vector<T>& x, <span class="keyword">const</span> std::vector<T>& y)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>   <span class="keywordflow">if</span>(x.size()!=y.size()){</div>
-<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>     std::ostringstream s;</div>
-<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>     s<<<span class="stringliteral">"Error: x and y not equal in size"</span>;</div>
-<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>   }</div>
-<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>   <span class="keywordflow">if</span>(x.empty()){</div>
-<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>     std::ostringstream s;</div>
-<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>     s<<<span class="stringliteral">"Error: x is empty"</span>;</div>
-<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>   }</div>
-<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>   std::vector<T> tmpX=x;</div>
-<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>   eraseNoData(tmpX);</div>
-<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>   std::vector<T> tmpY=y;</div>
-<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>   eraseNoData(tmpY);</div>
-<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>   <span class="keywordtype">double</span> maxY=mymax(y);</div>
-<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>   <span class="keywordtype">double</span> minY=mymin(y);</div>
-<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>   <span class="keywordtype">double</span> rangeY=maxY-minY;</div>
-<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>   <span class="keywordtype">double</span> mse=0;</div>
-<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<x.size();++isample){</div>
-<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>     <span class="keywordtype">double</span> e=x[isample]-y[isample];</div>
-<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>     mse+=e*e/x.size();</div>
-<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>   }</div>
-<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>   <span class="keywordflow">return</span> sqrt(mse)/rangeY;</div>
-<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span> }</div>
-<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span> </div>
-<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span> <span class="comment">// coefficient of variation root mean square error</span></div>
-<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> StatFactory::cvrmse(<span class="keyword">const</span> std::vector<T>& x, <span class="keyword">const</span> std::vector<T>& y)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>   <span class="keywordflow">if</span>(x.size()!=y.size()){</div>
-<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>     std::ostringstream s;</div>
-<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>     s<<<span class="stringliteral">"Error: x and y not equal in size"</span>;</div>
-<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>   }</div>
-<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>   <span class="keywordflow">if</span>(x.empty()){</div>
-<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>     std::ostringstream s;</div>
-<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>     s<<<span class="stringliteral">"Error: x is empty"</span>;</div>
-<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>   }</div>
-<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>   std::vector<T> tmpX=x;</div>
-<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>   eraseNoData(tmpX);</div>
-<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>   std::vector<T> tmpY=y;</div>
-<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>   eraseNoData(tmpY);</div>
-<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>   <span class="keywordtype">double</span> maxY=mymax(tmpY);</div>
-<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>   <span class="keywordtype">double</span> minY=mymin(tmpY);</div>
-<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>   <span class="keywordtype">double</span> rangeY=maxY-minY;</div>
-<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>   <span class="keywordtype">double</span> mse=0;</div>
-<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<x.size();++isample){</div>
-<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>     <span class="keywordtype">double</span> e=x[isample]-y[isample];</div>
-<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>     mse+=e*e/x.size();</div>
-<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>   }</div>
-<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>   <span class="keywordflow">return</span> sqrt(mse)/mean(tmpY);</div>
-<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span> }</div>
-<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span> </div>
-<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span> <span class="comment">// template<class T> double StatFactory::gsl_correlation(const std::vector<T>& x, const std::vector<T>& y) const{</span></div>
-<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span> <span class="comment">//  return(gsl_stats_correlation(&(x[0]),1,&(y[0]),1,x.size()));</span></div>
-<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span> <span class="comment">// }</span></div>
-<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span> </div>
-<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>  <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> StatFactory::gsl_covariance(<span class="keyword">const</span> std::vector<T>& x, <span class="keyword">const</span> std::vector<T>& y)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>    <span class="keywordflow">return</span>(gsl_stats_covariance(&(x[0]),1,&(y[0]),1,x.size()));</div>
-<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>  }</div>
-<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span> </div>
-<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span> </div>
-<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> StatFactory::correlation(<span class="keyword">const</span> std::vector<T>& x, <span class="keyword">const</span> std::vector<T>& y, <span class="keywordtype">int</span> delay)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>   <span class="keywordtype">double</span> meanX=0;</div>
-<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>   <span class="keywordtype">double</span> meanY=0;</div>
-<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>   <span class="keywordtype">double</span> varX=0;</div>
-<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>   <span class="keywordtype">double</span> varY=0;</div>
-<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>   <span class="keywordtype">double</span> sXY=0;</div>
-<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>   meanVar(x,meanX,varX);</div>
-<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>   meanVar(y,meanY,varY);</div>
-<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>   <span class="keywordtype">double</span> denom = sqrt(varX*varY);</div>
-<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>   <span class="keywordtype">bool</span> isValid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>   <span class="keywordflow">if</span>(denom){</div>
-<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>     <span class="comment">//Calculate the correlation series</span></div>
-<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>     sXY = 0;</div>
-<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0;i<x.size();++i) {</div>
-<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>       <span class="keywordtype">int</span> j = i + delay;</div>
-<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>       <span class="keywordflow">if</span> (j < 0 || j >= y.size())</div>
-<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>         <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(isNoData(x[i])||isNoData(y[j]))</div>
-<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>     isValid=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>     <span class="keywordflow">if</span>(i<0){</div>
-<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>       std::ostringstream s;</div>
-<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>       s<<<span class="stringliteral">"Error: i must be positive"</span>;</div>
-<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>       <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>     }</div>
-<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>     <span class="keywordflow">if</span>(i>=x.size()){</div>
-<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>       std::ostringstream s;</div>
-<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>       s<<<span class="stringliteral">"Error: i must be smaller than x.size()"</span>;</div>
-<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>       <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>     }</div>
-<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>     <span class="keywordflow">if</span>(j<0){</div>
-<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>       std::ostringstream s;</div>
-<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>       s<<<span class="stringliteral">"Error: j must be positive"</span>;</div>
-<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>       <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>     }</div>
-<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>     <span class="keywordflow">if</span>(j>=y.size()){</div>
-<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>       std::ostringstream s;</div>
-<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>       s<<<span class="stringliteral">"Error: j must be smaller than y.size()"</span>;</div>
-<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>       <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>     }</div>
-<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>         sXY += (x[i] - meanX) * (y[j] - meanY);</div>
-<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>       }</div>
-<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>     }</div>
-<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>     <span class="keywordflow">if</span>(isValid){</div>
-<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>       <span class="keywordtype">double</span> minSize=(x.size()<y.size())?x.size():y.size();</div>
-<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>       <span class="keywordflow">return</span>(sXY / denom / (minSize-1));</div>
-<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>     }</div>
-<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_noDataValues.size())</div>
-<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>       <span class="keywordflow">return</span> m_noDataValues[0];</div>
-<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>       std::string errorString=<span class="stringliteral">"Error: no valid data found"</span>;</div>
-<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>       <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>     }</div>
-<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>   }</div>
-<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>     <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span> }</div>
-<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span> </div>
-<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span> <span class="comment">//todo: what if no valid data?</span></div>
-<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> StatFactory::cross_correlation(<span class="keyword">const</span> std::vector<T>& x, <span class="keyword">const</span> std::vector<T>& y, <span class="keywordtype">int</span> maxdelay, std::vector<T>& z)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>   z.clear();</div>
-<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>   <span class="keywordtype">double</span> sumCorrelation=0;</div>
-<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>   <span class="keywordflow">for</span> (<span class="keywordtype">int</span> delay=-maxdelay;delay<maxdelay;delay++) {</div>
-<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>     z.push_back(correlation(x,y,delay));</div>
-<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>     sumCorrelation+=z.back();</div>
-<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>   }</div>
-<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>   <span class="keywordflow">return</span> sumCorrelation;</div>
-<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span> }</div>
-<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span> </div>
-<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span> <span class="comment">//todo: nodata?</span></div>
-<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> StatFactory::linear_regression(<span class="keyword">const</span> std::vector<T>& x, <span class="keyword">const</span> std::vector<T>& y, <span class="keywordtype">double</span> &c0, <span class="keywordtype">double</span> &c1)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>   <span class="keywordflow">if</span>(x.size()!=y.size()){</div>
-<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>     std::ostringstream s;</div>
-<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>     s<<<span class="stringliteral">"Error: x and y not equal in size"</span>;</div>
-<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>   }</div>
-<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>   <span class="keywordflow">if</span>(x.empty()){</div>
-<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>     std::ostringstream s;</div>
-<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>     s<<<span class="stringliteral">"Error: x is empty"</span>;</div>
-<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>   }</div>
-<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>   <span class="keywordtype">double</span> cov00;</div>
-<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>   <span class="keywordtype">double</span> cov01;</div>
-<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>   <span class="keywordtype">double</span>  cov11;</div>
-<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>   <span class="keywordtype">double</span> sumsq;</div>
-<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>   gsl_fit_linear(&(x[0]),1,&(y[0]),1,x.size(),&c0,&c1,&cov00,&cov01,&cov11,&sumsq);</div>
-<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>   <span class="keywordflow">return</span> (1-sumsq/var(y)/(y.size()-1));</div>
-<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span> }</div>
-<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span> </div>
-<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span> <span class="comment">//todo: nodata?</span></div>
-<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">double</span> StatFactory::linear_regression_err(<span class="keyword">const</span> std::vector<T>& x, <span class="keyword">const</span> std::vector<T>& y, <span class="keywordtype">double</span> &c0, <span class="keywordtype">double</span> &c1)<span class="keyword"> const</sp [...]
-<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>   <span class="keywordflow">if</span>(x.size()!=y.size()){</div>
-<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>     std::ostringstream s;</div>
-<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>     s<<<span class="stringliteral">"Error: x and y not equal in size"</span>;</div>
-<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>   }</div>
-<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>   <span class="keywordflow">if</span>(x.empty()){</div>
-<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>     std::ostringstream s;</div>
-<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>     s<<<span class="stringliteral">"Error: x is empty"</span>;</div>
-<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>   }</div>
-<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>   <span class="keywordtype">double</span> cov00;</div>
-<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>   <span class="keywordtype">double</span> cov01;</div>
-<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>   <span class="keywordtype">double</span>  cov11;</div>
-<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>   <span class="keywordtype">double</span> sumsq;</div>
-<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>   gsl_fit_linear(&(x[0]),1,&(y[0]),1,x.size(),&c0,&c1,&cov00,&cov01,&cov11,&sumsq);</div>
-<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>   <span class="keywordflow">return</span> sqrt((sumsq)/(y.size()));</div>
-<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span> }</div>
-<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span> </div>
-<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span> <span class="comment">//alternatively: use GNU scientific library:</span></div>
-<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span> <span class="comment">// gsl_stats_correlation (const double data1[], const size_t stride1, const double data2[], const size_t stride2, const size_t n)</span></div>
-<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span> </div>
-<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> StatFactory::interpolateNoData(<span class="keyword">const</span> std::vector<double>& wavelengthIn, <span class="keyword">const</span> std::vector<T>& input, <span class="keyword">const</span> std::string& type, std::vector<T>& output, <span class="keywordtyp [...]
-<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>   <span class="keywordflow">if</span>(wavelengthIn.empty()){</div>
-<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>     std::ostringstream s;</div>
-<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>     s<<<span class="stringliteral">"Error: wavelengthIn is empty"</span>;</div>
-<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>   }</div>
-<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>   std::vector<double> wavelengthOut=wavelengthIn;</div>
-<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>   std::vector<T> validIn=input;</div>
-<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>   <span class="keywordflow">if</span>(input.size()!=wavelengthIn.size()){</div>
-<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>     std::ostringstream s;</div>
-<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>     s<<<span class="stringliteral">"Error: x and y not equal in size"</span>;</div>
-<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>   }</div>
-<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>   <span class="keywordtype">int</span> nband=wavelengthIn.size();</div>
-<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>   output.clear();</div>
-<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>   <span class="comment">//remove nodata from input and corresponding wavelengthIn</span></div>
-<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>   <span class="keywordflow">if</span>(m_noDataValues.size()){</div>
-<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>     <span class="keyword">typename</span> std::vector<T>::iterator itValue=validIn.begin();</div>
-<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>     <span class="keyword">typename</span> std::vector<T>::iterator itWavelength=wavelengthOut.begin();</div>
-<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>     <span class="keywordflow">while</span>(itValue!=validIn.end()&&itWavelength!=wavelengthOut.end()){</div>
-<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>       <span class="keywordflow">if</span>(isNoData(*itValue)){</div>
-<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>     validIn.erase(itValue);</div>
-<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>     wavelengthOut.erase(itWavelength);</div>
-<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>       }</div>
-<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>     ++itValue;</div>
-<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>     ++itWavelength;</div>
-<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>       }</div>
-<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>     }</div>
-<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>     <span class="keywordflow">if</span>(validIn.size()>1){</div>
-<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>     interpolateUp(wavelengthOut, validIn, wavelengthIn, type, output, verbose);</div>
-<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>       }</div>
-<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>       <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>     output=input;</div>
-<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>       }</div>
-<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>     }</div>
-<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>     <span class="keywordflow">else</span><span class="comment">//we can not interpolate if no valid data</span></div>
-<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>       output=input;</div>
-<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>   }</div>
-<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>   <span class="keywordflow">else</span><span class="comment">//no nodata values to interpolate</span></div>
-<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>     output=input;</div>
-<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span> }</div>
-<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span> </div>
-<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> StatFactory::interpolateUp(<span class="keyword">const</span> std::vector<double>& wavelengthIn, <span class="keyword">const</span> std::vector<T>& input, <span class="keyword">const</span> std::vector<double>& wavelengthOut, <span class="keyword">const</span> std [...]
-<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>   <span class="keywordflow">if</span>(wavelengthIn.empty()){</div>
-<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>     std::ostringstream s;</div>
-<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>     s<<<span class="stringliteral">"Error: wavelengthIn is empty"</span>;</div>
-<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>   }</div>
-<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>   <span class="keywordflow">if</span>(input.size()!=wavelengthIn.size()){</div>
-<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>     std::ostringstream s;</div>
-<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>     s<<<span class="stringliteral">"Error: input and wavelengthIn not equal in size"</span>;</div>
-<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>   }</div>
-<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>   <span class="keywordflow">if</span>(wavelengthOut.empty()){</div>
-<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>     std::ostringstream s;</div>
-<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>     s<<<span class="stringliteral">"Error: wavelengthOut is empty"</span>;</div>
-<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>   }</div>
-<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>   <span class="keywordtype">int</span> nband=wavelengthIn.size();</div>
-<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>   output.clear();</div>
-<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>   gsl_interp_accel *acc;</div>
-<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>   allocAcc(acc);</div>
-<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>   gsl_spline *spline;</div>
-<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>   getSpline(type,nband,spline);</div>
-<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>   assert(spline);</div>
-<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>   assert(&(wavelengthIn[0]));</div>
-<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>   assert(&(input[0]));</div>
-<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>   <span class="keywordtype">int</span> status=initSpline(spline,&(wavelengthIn[0]),&(input[0]),nband);</div>
-<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>   <span class="keywordflow">if</span>(status){</div>
-<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>     std::string errorString=<span class="stringliteral">"Could not initialize spline"</span>;</div>
-<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>   }</div>
-<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> index=0;index<wavelengthOut.size();++index){</div>
-<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>     <span class="keywordflow">if</span>(wavelengthOut[index]<*wavelengthIn.begin()){</div>
-<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>       output.push_back(*(input.begin()));</div>
-<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>     }</div>
-<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(wavelengthOut[index]>wavelengthIn.back()){</div>
-<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>       output.push_back(input.back());</div>
-<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>     }</div>
-<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>     <span class="keywordtype">double</span> dout=evalSpline(spline,wavelengthOut[index],acc);</div>
-<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>     output.push_back(dout);</div>
-<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>   }</div>
-<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>   gsl_spline_free(spline);</div>
-<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>   gsl_interp_accel_free(acc);</div>
-<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span> }</div>
-<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span> </div>
-<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span> <span class="comment">// template<class T> void StatFactory::interpolateUp(const std::vector<double>& wavelengthIn, const std::vector< std::vector<T> >& input, const std::vector<double>& wavelengthOut, const std::string& type, std::vector< std::vector<T> >& output, bool verbose){</span></div>
-<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span> <span class="comment">//   assert(wavelengthIn.size());</span></div>
-<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span> <span class="comment">//   assert(wavelengthOut.size());</span></div>
-<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span> <span class="comment">//   int nsample=input.size();  </span></div>
-<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span> <span class="comment">//   int nband=wavelengthIn.size();</span></div>
-<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span> <span class="comment">//   output.clear();</span></div>
-<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span> <span class="comment">//   output.resize(nsample);</span></div>
-<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span> <span class="comment">//   gsl_interp_accel *acc;</span></div>
-<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span> <span class="comment">//   allocAcc(acc);</span></div>
-<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span> <span class="comment">//   gsl_spline *spline;</span></div>
-<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span> <span class="comment">//   getSpline(type,nband,spline);</span></div>
-<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span> <span class="comment">//   for(int isample=0;isample<nsample;++isample){</span></div>
-<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span> <span class="comment">//     assert(input[isample].size()==wavelengthIn.size());</span></div>
-<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span> <span class="comment">//     initSpline(spline,&(wavelengthIn[0]),&(input[isample][0]),nband);      </span></div>
-<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span> <span class="comment">//     for(int index=0;index<wavelengthOut.size();++index){</span></div>
-<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span> <span class="comment">//       if(type=="linear"){</span></div>
-<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span> <span class="comment">//         if(wavelengthOut[index]<wavelengthIn.back())</span></div>
-<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span> <span class="comment">//           output[isample].push_back(*(input.begin()));</span></div>
-<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span> <span class="comment">//         else if(wavelengthOut[index]>wavelengthIn.back())</span></div>
-<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span> <span class="comment">//           output[isample].push_back(input.back());</span></div>
-<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span> <span class="comment">//       }</span></div>
-<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span> <span class="comment">//       else{</span></div>
-<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span> <span class="comment">//         double dout=evalSpline(spline,wavelengthOut[index],acc);</span></div>
-<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span> <span class="comment">//         output[isample].push_back(dout);</span></div>
-<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span> <span class="comment">//       }</span></div>
-<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span> <span class="comment">//     }</span></div>
-<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span> <span class="comment">//   }</span></div>
-<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span> <span class="comment">//   gsl_spline_free(spline);</span></div>
-<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span> <span class="comment">//   gsl_interp_accel_free(acc);</span></div>
-<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span> <span class="comment">// }</span></div>
-<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span> </div>
-<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span> <span class="comment">//todo: nodata?</span></div>
-<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> StatFactory::interpolateUp(<span class="keyword">const</span> std::vector<T>& input, std::vector<T>& output, <span class="keywordtype">int</span> nbin)<span class="keyword"> const</span></div>
-<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>   <span class="keywordflow">if</span>(input.empty()){</div>
-<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>     std::ostringstream s;</div>
-<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>     s<<<span class="stringliteral">"Error: input is empty"</span>;</div>
-<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>   }</div>
-<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>   <span class="keywordflow">if</span>(!nbin){</div>
-<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>     std::ostringstream s;</div>
-<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>     s<<<span class="stringliteral">"Error: nbin must be larger than 0"</span>;</div>
-<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>   }</div>
-<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>   output.clear();</div>
-<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>   <span class="keywordtype">int</span> dim=input.size();</div>
-<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<dim;++i){</div>
-<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>     <span class="keywordtype">double</span> deltaX=0;</div>
-<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>     <span class="keywordtype">double</span> left=input[i];</div>
-<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>     <span class="keywordflow">if</span>(i<dim-1){</div>
-<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>       <span class="keywordtype">double</span> right=(i<dim-1)? input[i+1]:input[i];</div>
-<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>       deltaX=(right-left)/static_cast<double>(nbin);</div>
-<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x=0;x<nbin;++x){</div>
-<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>         output.push_back(left+x*deltaX);</div>
-<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>       }</div>
-<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>     }</div>
-<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>       output.push_back(input.back());</div>
-<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>   }</div>
-<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span> }</div>
-<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span> </div>
-<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span> <span class="comment">//todo: nodata?</span></div>
-<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> StatFactory::nearUp(<span class="keyword">const</span> std::vector<T>& input, std::vector<T>& output)<span class="keyword"> const</span></div>
-<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>   <span class="keywordflow">if</span>(input.empty()){</div>
-<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>     std::ostringstream s;</div>
-<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>     s<<<span class="stringliteral">"Error: input is empty"</span>;</div>
-<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>   }</div>
-<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>   <span class="keywordflow">if</span>(output.size()<input.size()){</div>
-<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>     std::ostringstream s;</div>
-<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>     s<<<span class="stringliteral">"Error: output size is smaller than input size"</span>;</div>
-<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>   }</div>
-<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>   <span class="keywordtype">int</span> dimInput=input.size();</div>
-<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>   <span class="keywordtype">int</span> dimOutput=output.size();</div>
-<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>   </div>
-<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iin=0;iin<dimInput;++iin){</div>
-<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iout=0;iout<dimOutput/dimInput;++iout){</div>
-<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>       <span class="keywordtype">int</span> indexOutput=iin*dimOutput/dimInput+iout;</div>
-<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>       <span class="keywordflow">if</span>(indexOutput>=output.size()){</div>
-<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>     std::ostringstream s;</div>
-<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>     s<<<span class="stringliteral">"Error: indexOutput must be smaller than output.size()"</span>;</div>
-<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>       }</div>
-<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>       output[indexOutput]=input[iin];</div>
-<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>     }</div>
-<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>   }</div>
-<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span> }</div>
-<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span> </div>
-<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span> <span class="comment">//todo: nodata?</span></div>
-<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> StatFactory::interpolateUp(<span class="keywordtype">double</span>* input, <span class="keywordtype">int</span> dim, std::vector<T>& output, <span class="keywordtype">int</span> nbin)</div>
-<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span> {</div>
-<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>   <span class="keywordflow">if</span>(!nbin){</div>
-<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>     std::ostringstream s;</div>
-<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>     s<<<span class="stringliteral">"Error: nbin must be larger than 0"</span>;</div>
-<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>   }</div>
-<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>   output.clear();</div>
-<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<dim;++i){</div>
-<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>     <span class="keywordtype">double</span> deltaX=0;</div>
-<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>     <span class="keywordtype">double</span> left=input[i];</div>
-<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>     <span class="keywordflow">if</span>(i<dim-1){</div>
-<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>       <span class="keywordtype">double</span> right=(i<dim-1)? input[i+1]:input[i];</div>
-<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>       deltaX=(right-left)/static_cast<double>(nbin);</div>
-<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> x=0;x<nbin;++x){</div>
-<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>         output.push_back(left+x*deltaX);</div>
-<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>       }</div>
-<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>     }</div>
-<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>       output.push_back(input[dim-1]);</div>
-<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>   }</div>
-<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span> }</div>
-<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span> </div>
-<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span> <span class="comment">//todo: nodata?</span></div>
-<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> StatFactory::interpolateDown(<span class="keyword">const</span> std::vector<T>& input, std::vector<T>& output, <span class="keywordtype">int</span> nbin)<span class="keyword"> const</span></div>
-<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>   <span class="keywordflow">if</span>(input.empty()){</div>
-<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>     std::ostringstream s;</div>
-<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>     s<<<span class="stringliteral">"Error: input is empty"</span>;</div>
-<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>   }</div>
-<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>   <span class="keywordflow">if</span>(!nbin){</div>
-<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>     std::ostringstream s;</div>
-<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>     s<<<span class="stringliteral">"Error: nbin must be larger than 0"</span>;</div>
-<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>   }</div>
-<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>   output.clear();</div>
-<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>   <span class="keywordtype">int</span> dim=input.size();</div>
-<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>   <span class="keywordtype">int</span> x=0;</div>
-<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>   output.push_back(input[0]);</div>
-<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=1;i<dim;++i){</div>
-<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>     <span class="keywordflow">if</span>(i%nbin)</div>
-<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>       x=(i-1)/nbin+1;</div>
-<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>       output.push_back(input[i]);</div>
-<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>     }</div>
-<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>   }</div>
-<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span> }</div>
-<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span> </div>
-<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span> <span class="comment">//todo: nodata?</span></div>
-<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> StatFactory::interpolateDown(<span class="keywordtype">double</span>* input, <span class="keywordtype">int</span> dim, std::vector<T>& output, <span class="keywordtype">int</span> nbin)</div>
-<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span> {</div>
-<div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>   <span class="keywordflow">if</span>(!nbin){</div>
-<div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>     std::ostringstream s;</div>
-<div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>     s<<<span class="stringliteral">"Error: nbin must be larger than 0"</span>;</div>
-<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>   }</div>
-<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>   output.clear();</div>
-<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>   <span class="keywordtype">int</span> x=0;</div>
-<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>   output.push_back(input[0]);</div>
-<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=1;i<dim;++i){</div>
-<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>     <span class="keywordflow">if</span>(i%nbin)</div>
-<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>       x=(i-1)/nbin+1;</div>
-<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>       output.push_back(input[i]);</div>
-<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>     }</div>
-<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>   }</div>
-<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span> }</div>
-<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span> }</div>
-<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span> </div>
-<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span> <span class="preprocessor">#endif </span><span class="comment">/* _STATFACTORY_H_ */</span><span class="preprocessor"></span></div>
-<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span> <span class="comment">// void Histogram::signature(double m1, double m2, double& k, double& alpha, double& beta, double e)</span></div>
-<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span> <span class="comment">// {</span></div>
-<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span> <span class="comment">//   double y=m1*m1/m2;</span></div>
-<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span> <span class="comment">//   beta=F_1(y,0.1,10.0,e);</span></div>
-<div class="line"><a name="l01627"></a><span class="lineno"> 1627</span> <span class="comment">//   double fb=F(beta);</span></div>
-<div class="line"><a name="l01628"></a><span class="lineno"> 1628</span> <span class="comment">//   double g=exp(lgamma(1.0/beta));</span></div>
-<div class="line"><a name="l01629"></a><span class="lineno"> 1629</span> <span class="comment">//   alpha=m1*g/exp(lgamma(2.0/beta));</span></div>
-<div class="line"><a name="l01630"></a><span class="lineno"> 1630</span> <span class="comment">//   k=beta/(2*alpha*g);</span></div>
-<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span> <span class="comment">// //   std::cout << "y, alpha, beta: " << y << ", " << alpha << ", " << beta << std::endl;</span></div>
-<div class="line"><a name="l01632"></a><span class="lineno"> 1632</span> <span class="comment">// }</span></div>
-<div class="line"><a name="l01633"></a><span class="lineno"> 1633</span> </div>
-<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span> <span class="comment">// double Histogram::F(double x)</span></div>
-<div class="line"><a name="l01635"></a><span class="lineno"> 1635</span> <span class="comment">// {</span></div>
-<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span> <span class="comment">//   double g2=exp(lgamma(2.0/x));</span></div>
-<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span> <span class="comment">//   return(g2*g2/exp(lgamma(3.0/x))/exp(lgamma(1.0/x)));</span></div>
-<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span> <span class="comment">// }</span></div>
-<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span> </div>
-<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span> <span class="comment">// //x1 is under estimate, x2 is over estimate, e is error</span></div>
-<div class="line"><a name="l01641"></a><span class="lineno"> 1641</span> <span class="comment">// double Histogram::F_1(double y, double x1, double x2, double e)</span></div>
-<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span> <span class="comment">// {</span></div>
-<div class="line"><a name="l01643"></a><span class="lineno"> 1643</span> <span class="comment">//   double f1=F(x1);</span></div>
-<div class="line"><a name="l01644"></a><span class="lineno"> 1644</span> <span class="comment">//   double f2=F(x2);</span></div>
-<div class="line"><a name="l01645"></a><span class="lineno"> 1645</span> <span class="comment">//   assert(f1!=f2);</span></div>
-<div class="line"><a name="l01646"></a><span class="lineno"> 1646</span> <span class="comment">//   double x=x1+(x2-x1)*(y-f1)/(f2-f1);</span></div>
-<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span> <span class="comment">//   double f=F(x);</span></div>
-<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span> <span class="comment">//   while(f-y>=e||y-f>=e){</span></div>
-<div class="line"><a name="l01649"></a><span class="lineno"> 1649</span> <span class="comment">//     if(f<y)</span></div>
-<div class="line"><a name="l01650"></a><span class="lineno"> 1650</span> <span class="comment">//       x1=x;</span></div>
-<div class="line"><a name="l01651"></a><span class="lineno"> 1651</span> <span class="comment">//     else </span></div>
-<div class="line"><a name="l01652"></a><span class="lineno"> 1652</span> <span class="comment">//       x2=x;</span></div>
-<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span> <span class="comment">//     if(x1==x2)</span></div>
-<div class="line"><a name="l01654"></a><span class="lineno"> 1654</span> <span class="comment">//       return x1;</span></div>
-<div class="line"><a name="l01655"></a><span class="lineno"> 1655</span> <span class="comment">//     assert(f1!=f2);</span></div>
-<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span> <span class="comment">//     x=x1+(x2-x1)*(y-f1)/(f2-f1);</span></div>
-<div class="line"><a name="l01657"></a><span class="lineno"> 1657</span> <span class="comment">//     f=F(x);</span></div>
-<div class="line"><a name="l01658"></a><span class="lineno"> 1658</span> <span class="comment">//   }</span></div>
-<div class="line"><a name="l01659"></a><span class="lineno"> 1659</span> <span class="comment">//   return x;</span></div>
-<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span> <span class="comment">// }</span></div>
-<div class="ttc" id="classstatfactory_1_1StatFactory_html"><div class="ttname"><a href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></div><div class="ttdef"><b>Definition:</b> <a href="StatFactory_8h_source.html#l00043">StatFactory.h:43</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/Vector2d_8cc_source.html b/doc/html/Vector2d_8cc_source.html
deleted file mode 100644
index 2b1eeed..0000000
--- a/doc/html/Vector2d_8cc_source.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/base/Vector2d.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_0af1587c8378955de40f48b4bd1869f0.html">base</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">Vector2d.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"></div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/Vector2d_8h_source.html b/doc/html/Vector2d_8h_source.html
deleted file mode 100644
index 34e08ba..0000000
--- a/doc/html/Vector2d_8h_source.html
+++ /dev/null
@@ -1,404 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/base/Vector2d.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_0af1587c8378955de40f48b4bd1869f0.html">base</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">Vector2d.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">Vector2d.h: 2-dimensional vector class (inherits from stl vector class)</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2012 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#ifndef _VECTOR2D_H_</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor"></span><span class="preprocessor">#define _VECTOR2D_H_</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <vector></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <list></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include <algorithm></span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include <numeric></span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include <gsl/gsl_matrix.h></span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include "IndexValue.h"</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include "algorithms/StatFactory.h"</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> </div>
-<div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="classVector2d.html">   31</a></span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">class </span><a class="code" href="classVector2d.html">Vector2d</a>: <span class="keyword">public</span> std::vector<std::vector <T> ></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> {</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>   <a class="code" href="classVector2d.html">Vector2d</a>();</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>   <a class="code" href="classVector2d.html">Vector2d</a>(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T></a>& v1);<span class="comment">//copy constructor</span></div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   ~<a class="code" href="classVector2d.html">Vector2d</a>();</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>   <a class="code" href="classVector2d.html">Vector2d</a>(<span class="keywordtype">int</span> nrow);</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>   <a class="code" href="classVector2d.html">Vector2d</a>(<span class="keywordtype">int</span> nrow, <span class="keywordtype">int</span> ncol);</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>   <a class="code" href="classVector2d.html">Vector2d</a>(<span class="keywordtype">int</span> nrow, <span class="keywordtype">int</span> ncol, <span class="keyword">const</span> T& value);</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   <a class="code" href="classVector2d.html">Vector2d</a>(<span class="keyword">const</span> gsl_matrix* gsl_m);</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>   <span class="keywordtype">void</span> resize(<span class="keywordtype">int</span> nrow)</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   {</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     std::vector< std::vector<T> >::resize(nrow);</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   };</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   <span class="keywordtype">void</span> resize(<span class="keywordtype">int</span> nrow, <span class="keywordtype">int</span> ncol);</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>   <span class="keywordtype">int</span> nRows()<span class="keyword"> const </span>{<span class="keywordflow">return</span> this->size();};</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   <span class="keywordtype">int</span> nCols()<span class="keyword"> const </span>{<span class="keywordflow">if</span>(this->size()) <span class="keywordflow">return</span> this->begin()->size(); <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;};</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>   <span class="keywordtype">void</span> selectCol(<span class="keywordtype">int</span> col, std::vector<T> &output) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>   <span class="keywordtype">void</span> selectCol(<span class="keywordtype">int</span> col, T* output) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>   std::vector<T> selectCol(<span class="keywordtype">int</span> col);</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>   <span class="keywordtype">void</span> selectCols(<span class="keyword">const</span> std::list<int> &cols, <a class="code" href="classVector2d.html">Vector2d<T></a> &output) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>   <span class="keywordtype">void</span> setMask(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T></a> &mask, T msknodata, T nodata=0);</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>   <span class="keywordtype">void</span> transpose(<a class="code" href="classVector2d.html">Vector2d<T></a> &output)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     output.resize(nCols(),nRows());</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<nRows();++irow){</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<nCols();++icol){</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>         output[icol][irow]=(*this)[irow][icol];</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>       }</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     }</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>   };</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>   <span class="keywordtype">void</span> selectCols(<span class="keyword">const</span> std::list<int> &cols);</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>   <span class="keywordtype">void</span> sort(<a class="code" href="classVector2d.html">Vector2d<T></a>& output);  </div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>   <span class="keywordtype">void</span> scale(<span class="keyword">const</span> std::vector<double> &scaleVector, <span class="keyword">const</span> std::vector<double> &offsetVector, <a class="code" href="classVector2d.html">Vector2d<T></a>& scaledOutput);</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>   <span class="keywordtype">void</span> scale(<span class="keyword">const</span> T lbound, <span class="keyword">const</span> T ubound, std::vector<double> &scaleVector, std::vector<double> &offsetVector, <a class="code" href="classVector2d.html">Vector2d<T></a>& scaledOutput);</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>   <a class="code" href="classVector2d.html">Vector2d<T></a> operator=(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T></a>& v1);</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>   <a class="code" href="classVector2d.html">Vector2d<T></a> operator+=(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T></a>& v1);</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span> <span class="comment">//   std::ostream& operator<<(std::ostream& os, const Vector2d<T>& v);</span></div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span> <span class="comment">//   template<class T> std::ostream& operator<<(std::ostream& os, const Vector2d<T>& v);</span></div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>   <span class="keyword">template</span><<span class="keyword">class</span> T1> <span class="keyword">friend</span> std::ostream& operator<<(std::ostream & os, const Vector2d<T1>& v);</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>   <a class="code" href="classVector2d.html">Vector2d<T></a> sum(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T></a>& v1, <span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T></a>& v2) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>   T mymax(<span class="keywordtype">int</span>& x, <span class="keywordtype">int</span>& y, <span class="keywordtype">double</span> maxValue) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span> </div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>   T sum() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span> };</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>   </div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <a class="code" href="classVector2d.html">Vector2d<T>::Vector2d</a>() </div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>   : std::vector< std::vector<T> >()</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span> {</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span> }</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span> </div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <a class="code" href="classVector2d.html">Vector2d<T>::~Vector2d</a>() </div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span> {</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span> }</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span> </div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span> <span class="comment">//copy constructor</span></div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <a class="code" href="classVector2d.html">Vector2d<T>::Vector2d</a>(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T></a>& v1){</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>   this->resize(v1.size());</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<v1.size();++irow)</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     this->at(irow)=v1[irow];</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span> }</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span> </div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <a class="code" href="classVector2d.html">Vector2d<T></a> <a class="code" href="classVector2d.html">Vector2d<T>::operator=</a>(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T></a>& v1){</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>   <span class="comment">//check for assignment to self (of the form v=v)</span></div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   <span class="keywordflow">if</span>(<span class="keyword">this</span>==&v1)</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>      <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     this->resize(v1.size());</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<v1.size();++irow)</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>       this->at(irow)=v1[irow];</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>   }</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span> }</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span> </div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <a class="code" href="classVector2d.html">Vector2d<T></a> <a class="code" href="classVector2d.html">Vector2d<T>::operator+=</a>(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T></a>& v1){</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>   assert(v1.nRows()==nRows());</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>   assert(v1.nCols()==nCols());</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<nRows();++irow)</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<nCols();++icol)</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>       (*<span class="keyword">this</span>)[irow][icol]+=v1[irow][icol];</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span> }</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span> </div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <a class="code" href="classVector2d.html">Vector2d<T>::Vector2d</a>(<span class="keywordtype">int</span> nrow) </div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   : std::vector< std::vector<T> >(nrow)</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span> {</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span> }</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span> </div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <a class="code" href="classVector2d.html">Vector2d<T>::Vector2d</a>(<span class="keywordtype">int</span> nrow, <span class="keywordtype">int</span> ncol) </div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span> <span class="comment">//   : std::vector< std::vector<T> >(nrow)</span></div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span> {</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>   this->resize(nrow);</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<nrow;++irow){</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>     (this->operator[](irow)).resize(ncol);</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span> <span class="comment">//     (*this)[irow].resize(ncol);</span></div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>   }</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span> }</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span> </div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <a class="code" href="classVector2d.html">Vector2d<T>::Vector2d</a>(<span class="keywordtype">int</span> nrow, <span class="keywordtype">int</span> ncol, <span class="keyword">const</span> T& value) </div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span> {</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>   this->resize(nrow);</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<nrow;++irow){</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>     (this->operator[](irow)).resize(ncol);</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<ncol;++icol)</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>       (this-><span class="keyword">operator</span>[](irow))[icol]=value;</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>   }</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span> }</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span> </div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <a class="code" href="classVector2d.html">Vector2d<T>::Vector2d</a>(<span class="keyword">const</span> gsl_matrix* gsl_m)</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span> {</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>   this->resize(gsl_m->size1);</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<this->size();++irow){</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>     (this->operator[](irow)).resize(gsl_m->size2);</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<this->operator[](irow).size();++icol)</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>       (this-><span class="keyword">operator</span>[](irow))[icol]=gsl_matrix_get(gsl_m,irow,icol);</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>   }</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span> }</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span> </div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span> </div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> <a class="code" href="classVector2d.html">Vector2d<T>::resize</a>(<span class="keywordtype">int</span> nrow, <span class="keywordtype">int</span> ncol)</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span> {</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>     this->std::vector< std::vector<T> >::resize(nrow);</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<nrow;++irow){</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>       (this->operator[](irow)).resize(ncol);</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>     }</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span> }</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span> </div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> <a class="code" href="classVector2d.html">Vector2d<T>::selectCols</a>(<span class="keyword">const</span> std::list<int> &cols, <a class="code" href="classVector2d.html">Vector2d<T></a> &output)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   output.resize(this->size());</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>   std::list<int>::const_iterator it;</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<this->size();++irow){</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>     output[irow].resize(cols.size());</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>     it=cols.begin();</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<cols.size();++icol)</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>       output[irow][icol]=(*<span class="keyword">this</span>)[irow][*(it++)];</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>   }</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span> }</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span> </div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> <a class="code" href="classVector2d.html">Vector2d<T>::selectCol</a>(<span class="keywordtype">int</span> col, std::vector<T> &output)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>   assert(col>=0);</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>   assert(col<(*<span class="keyword">this</span>)[0].size());</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>   output.resize(this->size());</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<this->size();++irow){</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>     output[irow]=(*this)[irow][col];</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>   }</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span> }</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span> </div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span> <span class="keyword">template</span><<span class="keyword">class</span> T> std::vector<T> <a class="code" href="classVector2d.html">Vector2d<T>::selectCol</a>(<span class="keywordtype">int</span> col)</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span> {</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>   assert(col>=0);</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>   assert(col<(*<span class="keyword">this</span>)[0].size());</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>   std::vector<T> output(this->size());</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<this->size();++irow)</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>     output[irow]=(*<span class="keyword">this</span>)[irow][col];</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>   <span class="keywordflow">return</span>(output);</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span> }</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span> </div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> <a class="code" href="classVector2d.html">Vector2d<T>::selectCol</a>(<span class="keywordtype">int</span> col, T* output)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>   assert(col>=0);</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>   assert(col<(*<span class="keyword">this</span>)[0].size());</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<this->size();++irow){</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>     output[irow]=(*this)[irow][col];</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>   }</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span> }</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span> </div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> <a class="code" href="classVector2d.html">Vector2d<T>::selectCols</a>(<span class="keyword">const</span> std::list<int> &cols)</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span> {</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<this->size();++irow)</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=((*<span class="keyword">this</span>)[irow]).size()-1;icol>=0;--icol)</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>       <span class="keywordflow">if</span>(find(cols.begin(),cols.end(),icol)==cols.end())</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>     (*<span class="keyword">this</span>)[irow].erase(((*<span class="keyword">this</span>)[irow]).begin()+icol);</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span> }</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span> </div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> <a class="code" href="classVector2d.html">Vector2d<T>::setMask</a>(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T></a> &mask, T msknodata, T nodata)</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span> {</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>   assert(mask.nRows()==nRows());</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>   assert(mask.nCols()==nCols());</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<this->size();++irow)</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<((*this)[irow]).size()-1;++icol)</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>       <span class="keywordflow">if</span>(mask[irow][icol]==msknodata)</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>     (*this)[irow][icol]=nodata;</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span> }</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span> </div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span> <span class="keyword">template</span><<span class="keyword">class</span> T1> std::ostream& operator<<(std::ostream& os, const Vector2d<T1>& v)</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span> {</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<v.size();++irow){</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<v[irow].size();++icol){</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>       os << v[irow][icol] << <span class="stringliteral">"\t"</span>;</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>     }</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>     os << std::endl;</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>   }</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>   <span class="keywordflow">return</span> os;</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>   <span class="comment">// os << theOption.getLongName() << ": ";</span></div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>   <span class="comment">// for(int index=0;index<theOption.size();++index)</span></div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>   <span class="comment">//   os << type2string<T>(theOption[index]) << " ";</span></div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>   <span class="comment">// os << std::endl;</span></div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>   <span class="comment">// return os;</span></div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span> }</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span> </div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> <a class="code" href="classVector2d.html">Vector2d<T>::sort</a>(<a class="code" href="classVector2d.html">Vector2d<T></a>& output)</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span> {</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>   <span class="comment">//sort according to first sample (ex. wavelength)</span></div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>   <span class="keywordtype">int</span> nsample=this->size();<span class="comment">//including first sample (ex. wavelength)</span></div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>   <span class="keywordtype">int</span> nband=(*this)[0].size();  </div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>   std::vector<IndexValue> sortW(nband);</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ilevel=0;ilevel<nband;++ilevel){</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>     <a class="code" href="structIndexValue.html">IndexValue</a> pv;</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>     pv.position=ilevel;</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>     pv.value=(*this)[0][ilevel];</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>     sortW[ilevel]=pv;</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>   }</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>   std::sort(sortW.begin(),sortW.end(),<a class="code" href="classIncrease__IndexValue.html">Increase_IndexValue</a>());</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>   output.resize(nsample);  </div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<nsample;++isample){</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>     output[isample].resize(nband);</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband)</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>       output[isample][iband]=(*<span class="keyword">this</span>)[isample][sortW[iband].position];</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>   }</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span> }</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span> </div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> <a class="code" href="classVector2d.html">Vector2d<T>::scale</a>(<span class="keyword">const</span> std::vector<double> &scaleVector,<span class="keyword">const</span> std::vector<double> &offsetVector, <a class="code" href="classVector2d.html">Vector2d<T></a>&a [...]
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span> {</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>   <span class="keywordtype">int</span> nsample=this->size();<span class="comment">//including first sample (ex. wavelength)</span></div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>   <span class="keywordtype">int</span> nband=(*this)[0].size();</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>   assert(scaleVector.size()==nband);</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>   assert(offsetVector.size()==nband);</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>   std::vector<T> pixel(nband);</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>   scaledOutput.resize(nsample,nband);</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<nsample;++isample)</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband)</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>       scaledOutput[isample][iband]=((*<span class="keyword">this</span>)[isample][iband])*scaleVector[iband]+offsetVector[iband];</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span> }</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span> </div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keywordtype">void</span> <a class="code" href="classVector2d.html">Vector2d<T>::scale</a>(<span class="keyword">const</span> T lbound, <span class="keyword">const</span> T ubound, std::vector<double> &scaleVector, std::vector<double> &offsetVector, <a class="code" href="classVector2d.html">Ve [...]
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span> {</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>   <span class="comment">//scale to lbound and ubound</span></div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>   <span class="keywordtype">int</span> nsample=this->size();<span class="comment">//including first sample (ex. wavelength)</span></div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>   <span class="keywordtype">int</span> nband=(*this)[0].size();</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>   scaleVector.resize(nband);</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>   offsetVector.resize(nband);</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>   std::vector<T> pixel(nsample);</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>   T theMin;</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>   T theMax;</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>   <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>   scaledOutput.resize(nsample,nband);</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>     pixel=selectCol(iband);</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>     stat.minmax(pixel, pixel.begin(), pixel.end(), theMin, theMax);</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>     scaleVector[iband]=<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(ubound-lbound)/(theMax-theMin);</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>     offsetVector[iband]=<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(-theMin*scaleVector[iband])-lbound;</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<pixel.size();++isample)</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>       scaledOutput[isample][iband]=((*<span class="keyword">this</span>)[isample][iband])*scaleVector[iband]+offsetVector[iband];</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>   }</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span> }</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span> </div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <a class="code" href="classVector2d.html">Vector2d<T></a> <a class="code" href="classVector2d.html">Vector2d<T>::sum</a>(<span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T></a>& v1, <span class="keyword">const</span> <a class="code" href="classVector2d.html">Vector2d<T& [...]
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>   <a class="code" href="classVector2d.html">Vector2d<T></a> vsum(v1.size());</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>   assert(v1.size()==v2.size());</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<v1.size();++irow){</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>     assert(v1[irow].size()==v2[irow].size());</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>     vsum[irow].resize(v1[irow].size());</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<v1.size();++icol)</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>       vsum[irow][icol]=v1[irow][icol]+v2[irow][icol];</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>   }</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>   <span class="keywordflow">return</span> vsum;</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span> }</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span> </div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span> <span class="keyword">template</span><<span class="keyword">class</span> T> T <a class="code" href="classVector2d.html">Vector2d<T>::sum</a>()<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>   <span class="keywordtype">double</span> theSum=0;</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<this->size();++irow){</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<this->operator[](irow).size();++icol)</div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>       theSum+=(this-><span class="keyword">operator</span>[](irow))[icol];</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>   }</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>   <span class="keywordflow">return</span> theSum;</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span> }</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span> </div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span> <span class="keyword">template</span><<span class="keyword">class</span> T> T <a class="code" href="classVector2d.html">Vector2d<T>::mymax</a>(<span class="keywordtype">int</span>& x, <span class="keywordtype">int</span>& y, <span class="keywordtype">double</span> maxValue)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>   <span class="comment">//todo: what if this->operator[](0)[0] >=maxValue?</span></div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>   <span class="comment">// double theMax=(this->operator[](0))[0];</span></div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>   <span class="keywordtype">double</span> theMax=0;</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<this->size();++irow){</div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<(this->operator[](irow)).size();++icol){</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>       <span class="keywordtype">double</span> currentValue=(this->operator[](irow))[icol];</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>       <span class="keywordflow">if</span>(currentValue<maxValue&&currentValue>theMax){</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>         assert(theMax<maxValue);</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>         y=irow;</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>         x=icol;</div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>         theMax=currentValue;</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>       }</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>     }</div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>   }</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>   assert(theMax<maxValue);</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>   <span class="keywordflow">return</span> theMax;</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span> }</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span> </div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span> <span class="preprocessor">#endif </span><span class="comment">/* _VECTOR2D_H_ */</span><span class="preprocessor"></span></div>
-<div class="ttc" id="classIncrease__IndexValue_html"><div class="ttname"><a href="classIncrease__IndexValue.html">Increase_IndexValue</a></div><div class="ttdef"><b>Definition:</b> <a href="IndexValue_8h_source.html#l00039">IndexValue.h:39</a></div></div>
-<div class="ttc" id="classVector2d_html"><div class="ttname"><a href="classVector2d.html">Vector2d</a></div><div class="ttdef"><b>Definition:</b> <a href="Vector2d_8h_source.html#l00031">Vector2d.h:31</a></div></div>
-<div class="ttc" id="classstatfactory_1_1StatFactory_html"><div class="ttname"><a href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></div><div class="ttdef"><b>Definition:</b> <a href="StatFactory_8h_source.html#l00043">StatFactory.h:43</a></div></div>
-<div class="ttc" id="structIndexValue_html"><div class="ttname"><a href="structIndexValue.html">IndexValue</a></div><div class="ttdef"><b>Definition:</b> <a href="IndexValue_8h_source.html#l00023">IndexValue.h:23</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/____init_____8py_source.html b/doc/html/____init_____8py_source.html
deleted file mode 100644
index b682556..0000000
--- a/doc/html/____init_____8py_source.html
+++ /dev/null
@@ -1,103 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/__init__.py Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">__init__.py</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment"># -*- coding: utf-8 -*-</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> </div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="stringliteral">    __init__.py</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="stringliteral">    ---------------------</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="stringliteral">    Date                 : April 2015</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="stringliteral">    Copyright            : (C) 2015 by Pieter Kempeneers</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="stringliteral">    Email                : kempenep at gmail dot com</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="stringliteral">*   This program is free software; you can redistribute it and/or modify  *</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="stringliteral">*   it under the terms of the GNU General Public License as published by  *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="stringliteral">*   the Free Software Foundation; either version 2 of the License, or     *</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="stringliteral">*   (at your option) any later version.                                   *</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> __author__ = <span class="stringliteral">'Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> __date__ = <span class="stringliteral">'April 2015'</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> __copyright__ = <span class="stringliteral">'(C) 2015, Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"># This will get replaced with a git SHA1 when you do a git archive</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> __revision__ = <span class="stringliteral">'$Format:%H$'</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> </div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">def </span>classFactory(iface):</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span>     <span class="keyword">from</span> pktools.ProcessingPktoolsPlugin <span class="keyword">import</span> ProcessingPktoolsPlugin</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span>     <span class="keywordflow">return</span> ProcessingPktoolsPlugin()</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>     <span class="comment">#of beter met ifacer argument?</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span>     <span class="comment">#return ProcessingPktoolsPlugin(iface)</span></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/annotated.html b/doc/html/annotated.html
deleted file mode 100644
index d086f8e..0000000
--- a/doc/html/annotated.html
+++ /dev/null
@@ -1,207 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Class List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">Class List</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory">
-<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span><span onclick="javascript:toggleLevel(4);">4</span>]</div><table class="directory">
-<tr id="row_0_" class="even"><td class="entry"><img id="arr_0_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('0_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>confusionmatrix</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html" target="_self">ConfusionMatrix</a></td><td class="desc"></td></tr>
-<tr id="row_1_" class="even"><td class="entry"><img id="arr_1_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>FANN</b></td><td class="desc"></td></tr>
-<tr id="row_1_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classFANN_1_1training__data.html" target="_self">training_data</a></td><td class="desc"></td></tr>
-<tr id="row_1_1_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classFANN_1_1neural__net.html" target="_self">neural_net</a></td><td class="desc"></td></tr>
-<tr id="row_2_"><td class="entry"><img id="arr_2_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('2_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>filter</b></td><td class="desc"></td></tr>
-<tr id="row_2_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classfilter_1_1Filter.html" target="_self">Filter</a></td><td class="desc"></td></tr>
-<tr id="row_3_"><td class="entry"><img id="arr_3_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('3_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>filter2d</b></td><td class="desc"></td></tr>
-<tr id="row_3_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classfilter2d_1_1Filter2d.html" target="_self">Filter2d</a></td><td class="desc"></td></tr>
-<tr id="row_4_"><td class="entry"><img id="arr_4_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('4_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>imgregression</b></td><td class="desc"></td></tr>
-<tr id="row_4_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classimgregression_1_1ImgRegression.html" target="_self">ImgRegression</a></td><td class="desc"></td></tr>
-<tr id="row_5_"><td class="entry"><img id="arr_5_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>qgis</b></td><td class="desc"></td></tr>
-<tr id="row_5_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_5_0_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_0_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>pkcomposite</b></td><td class="desc"></td></tr>
-<tr id="row_5_0_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html" target="_self">pkcomposite</a></td><td class="desc"></td></tr>
-<tr id="row_5_1_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_5_1_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_1_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>pkcrop</b></td><td class="desc"></td></tr>
-<tr id="row_5_1_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html" target="_self">pkcrop</a></td><td class="desc"></td></tr>
-<tr id="row_5_2_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_5_2_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_2_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>pkdiff_accuracy</b></td><td class="desc"></td></tr>
-<tr id="row_5_2_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html" target="_self">pkdiff_accuracy</a></td><td class="desc"></td></tr>
-<tr id="row_5_3_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_5_3_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_3_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>pkextract</b></td><td class="desc"></td></tr>
-<tr id="row_5_3_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pkextract_1_1pkextract.html" target="_self">pkextract</a></td><td class="desc"></td></tr>
-<tr id="row_5_4_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_5_4_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_4_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>pkextract_grid</b></td><td class="desc"></td></tr>
-<tr id="row_5_4_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html" target="_self">pkextract_grid</a></td><td class="desc"></td></tr>
-<tr id="row_5_5_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_5_5_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_5_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>pkextract_random</b></td><td class="desc"></td></tr>
-<tr id="row_5_5_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pkextract__random_1_1pkextract__random.html" target="_self">pkextract_random</a></td><td class="desc"></td></tr>
-<tr id="row_5_6_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_5_6_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_6_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>pkfilter_spatial</b></td><td class="desc"></td></tr>
-<tr id="row_5_6_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html" target="_self">pkfilter_spatial</a></td><td class="desc"></td></tr>
-<tr id="row_5_7_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_5_7_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_7_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>pkfilter_spectral</b></td><td class="desc"></td></tr>
-<tr id="row_5_7_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html" target="_self">pkfilter_spectral</a></td><td class="desc"></td></tr>
-<tr id="row_5_8_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_5_8_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_8_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>pkfilterdem</b></td><td class="desc"></td></tr>
-<tr id="row_5_8_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html" target="_self">pkfilterdem</a></td><td class="desc"></td></tr>
-<tr id="row_5_9_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_5_9_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_9_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>pkgetmask</b></td><td class="desc"></td></tr>
-<tr id="row_5_9_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html" target="_self">pkgetmask</a></td><td class="desc"></td></tr>
-<tr id="row_5_10_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_5_10_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_10_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>pklas2img</b></td><td class="desc"></td></tr>
-<tr id="row_5_10_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html" target="_self">pklas2img</a></td><td class="desc"></td></tr>
-<tr id="row_5_11_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_5_11_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_11_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>pkreclass</b></td><td class="desc"></td></tr>
-<tr id="row_5_11_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pkreclass_1_1pkreclass.html" target="_self">pkreclass</a></td><td class="desc"></td></tr>
-<tr id="row_5_12_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_5_12_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_12_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>pksetmask</b></td><td class="desc"></td></tr>
-<tr id="row_5_12_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pksetmask_1_1pksetmask.html" target="_self">pksetmask</a></td><td class="desc"></td></tr>
-<tr id="row_5_13_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_5_13_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_13_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>pksvm</b></td><td class="desc"></td></tr>
-<tr id="row_5_13_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pksvm_1_1pksvm.html" target="_self">pksvm</a></td><td class="desc"></td></tr>
-<tr id="row_5_14_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_5_14_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_14_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>pktools</b></td><td class="desc"></td></tr>
-<tr id="row_5_14_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_5_14_0_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_14_0_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>pkcomposite</b></td><td class="desc"></td></tr>
-<tr id="row_5_14_0_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html" target="_self">pkcomposite</a></td><td class="desc">< [...]
-<tr id="row_5_14_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_5_14_1_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_14_1_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>pkcrop</b></td><td class="desc"></td></tr>
-<tr id="row_5_14_1_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html" target="_self">pkcrop</a></td><td class="desc"></td></tr>
-<tr id="row_5_14_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_5_14_2_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_14_2_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>pkdiff_accuracy</b></td><td class="desc"></td></tr>
-<tr id="row_5_14_2_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html" target="_self">pkdiff_accuracy</a></td><td  [...]
-<tr id="row_5_14_3_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_5_14_3_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_14_3_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>pkextract</b></td><td class="desc"></td></tr>
-<tr id="row_5_14_3_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html" target="_self">pkextract</a></td><td class="desc"></td></tr>
-<tr id="row_5_14_4_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_5_14_4_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_14_4_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>pkextract_grid</b></td><td class="desc"></td></tr>
-<tr id="row_5_14_4_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html" target="_self">pkextract_grid</a></td><td cla [...]
-<tr id="row_5_14_5_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_5_14_5_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_14_5_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>pkextract_random</b></td><td class="desc"></td></tr>
-<tr id="row_5_14_5_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html" target="_self">pkextract_random</a></td>< [...]
-<tr id="row_5_14_6_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_5_14_6_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_14_6_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>pkfilter_spatial</b></td><td class="desc"></td></tr>
-<tr id="row_5_14_6_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html" target="_self">pkfilter_spatial</a></td>< [...]
-<tr id="row_5_14_7_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_5_14_7_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_14_7_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>pkfilter_spectral</b></td><td class="desc"></td></tr>
-<tr id="row_5_14_7_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html" target="_self">pkfilter_spectral</a></t [...]
-<tr id="row_5_14_8_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_5_14_8_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_14_8_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>pkfilterdem</b></td><td class="desc"></td></tr>
-<tr id="row_5_14_8_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html" target="_self">pkfilterdem</a></td><td class="desc">< [...]
-<tr id="row_5_14_9_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_5_14_9_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_14_9_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>pkgetmask</b></td><td class="desc"></td></tr>
-<tr id="row_5_14_9_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html" target="_self">pkgetmask</a></td><td class="desc"></td></tr>
-<tr id="row_5_14_10_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_5_14_10_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_14_10_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>pklas2img</b></td><td class="desc"></td></tr>
-<tr id="row_5_14_10_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html" target="_self">pklas2img</a></td><td class="desc"></td></tr>
-<tr id="row_5_14_11_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_5_14_11_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_14_11_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>pkreclass</b></td><td class="desc"></td></tr>
-<tr id="row_5_14_11_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html" target="_self">pkreclass</a></td><td class="desc"></td></tr>
-<tr id="row_5_14_12_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_5_14_12_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_14_12_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>pksetmask</b></td><td class="desc"></td></tr>
-<tr id="row_5_14_12_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html" target="_self">pksetmask</a></td><td class="desc"></td></tr>
-<tr id="row_5_14_13_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_5_14_13_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_14_13_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>pksvm</b></td><td class="desc"></td></tr>
-<tr id="row_5_14_13_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html" target="_self">pksvm</a></td><td class="desc"></td></tr>
-<tr id="row_5_14_14_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_5_14_14_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_14_14_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>pktoolsAlgorithm</b></td><td class="desc"></td></tr>
-<tr id="row_5_14_14_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktools_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html" target="_self">pktoolsAlgorithm</a></td><t [...]
-<tr id="row_5_14_15_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_5_14_15_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_14_15_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>pktoolsAlgorithmProvider</b></td><td class="desc"></td></tr>
-<tr id="row_5_14_15_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html" target="_self">pktoolsAlgo [...]
-<tr id="row_5_14_16_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_5_14_16_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_14_16_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>pktoolsUtils</b></td><td class="desc"></td></tr>
-<tr id="row_5_14_16_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktools_1_1pktoolsUtils_1_1pktoolsUtils.html" target="_self">pktoolsUtils</a></td><td class="des [...]
-<tr id="row_5_14_17_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_5_14_17_" src="ftv2plastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('5_14_17_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>ProcessingPktoolsPlugin</b></td><td class="desc"></td></tr>
-<tr id="row_5_14_17_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktools_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin.html" target="_self">ProcessingP [...]
-<tr id="row_5_15_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_5_15_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_15_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>pktoolsAlgorithm</b></td><td class="desc"></td></tr>
-<tr id="row_5_15_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html" target="_self">pktoolsAlgorithm</a></td><td class="desc"></td></tr>
-<tr id="row_5_16_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_5_16_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_16_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>pktoolsAlgorithmProvider</b></td><td class="desc"></td></tr>
-<tr id="row_5_16_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html" target="_self">pktoolsAlgorithmProvider</a></td><td class="desc"></td></tr>
-<tr id="row_5_17_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_5_17_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_17_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>pktoolsUtils</b></td><td class="desc"></td></tr>
-<tr id="row_5_17_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktoolsUtils_1_1pktoolsUtils.html" target="_self">pktoolsUtils</a></td><td class="desc"></td></tr>
-<tr id="row_5_18_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_5_18_" src="ftv2plastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('5_18_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>ProcessingPktoolsPlugin</b></td><td class="desc"></td></tr>
-<tr id="row_5_18_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin.html" target="_self">ProcessingPktoolsPlugin</a></td><td class="desc"></td></tr>
-<tr id="row_6_"><td class="entry"><img id="arr_6_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('6_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>statfactory</b></td><td class="desc"></td></tr>
-<tr id="row_6_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classstatfactory_1_1StatFactory.html" target="_self">StatFactory</a></td><td class="desc"></td></tr>
-<tr id="row_7_"><td class="entry"><img id="arr_7_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('7_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>Ui</b></td><td class="desc"></td></tr>
-<tr id="row_7_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classUi_1_1MainWindow.html" target="_self">MainWindow</a></td><td class="desc"></td></tr>
-<tr id="row_8_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classBadConversion.html" target="_self">BadConversion</a></td><td class="desc">Throw this class when syntax error in command line option </td></tr>
-<tr id="row_9_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classCache.html" target="_self">Cache</a></td><td class="desc"></td></tr>
-<tr id="row_10_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classCompare__IndexValue.html" target="_self">Compare_IndexValue</a></td><td class="desc"></td></tr>
-<tr id="row_11_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classCompare__PosValue.html" target="_self">Compare_PosValue</a></td><td class="desc"></td></tr>
-<tr id="row_12_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classCostFactory.html" target="_self">CostFactory</a></td><td class="desc"></td></tr>
-<tr id="row_13_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classCostFactoryANN.html" target="_self">CostFactoryANN</a></td><td class="desc"></td></tr>
-<tr id="row_14_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classCostFactorySVM.html" target="_self">CostFactorySVM</a></td><td class="desc"></td></tr>
-<tr id="row_15_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classDataModel.html" target="_self">DataModel</a></td><td class="desc"></td></tr>
-<tr id="row_16_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structdecision__function.html" target="_self">decision_function</a></td><td class="desc"></td></tr>
-<tr id="row_17_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classDecrease__IndexValue.html" target="_self">Decrease_IndexValue</a></td><td class="desc"></td></tr>
-<tr id="row_18_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classDecrease__PosValue.html" target="_self">Decrease_PosValue</a></td><td class="desc"></td></tr>
-<tr id="row_19_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classEgcs.html" target="_self">Egcs</a></td><td class="desc"></td></tr>
-<tr id="row_20_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classFeatureSelector.html" target="_self">FeatureSelector</a></td><td class="desc"></td></tr>
-<tr id="row_21_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classFileReaderAscii.html" target="_self">FileReaderAscii</a></td><td class="desc"></td></tr>
-<tr id="row_22_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classFileReaderLas.html" target="_self">FileReaderLas</a></td><td class="desc"></td></tr>
-<tr id="row_23_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classImgRasterGdal.html" target="_self">ImgRasterGdal</a></td><td class="desc"></td></tr>
-<tr id="row_24_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classImgReaderGdal.html" target="_self">ImgReaderGdal</a></td><td class="desc"></td></tr>
-<tr id="row_25_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classImgReaderOgr.html" target="_self">ImgReaderOgr</a></td><td class="desc"></td></tr>
-<tr id="row_26_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classImgUpdaterGdal.html" target="_self">ImgUpdaterGdal</a></td><td class="desc"></td></tr>
-<tr id="row_27_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classImgWriterGdal.html" target="_self">ImgWriterGdal</a></td><td class="desc"></td></tr>
-<tr id="row_28_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classImgWriterOgr.html" target="_self">ImgWriterOgr</a></td><td class="desc"></td></tr>
-<tr id="row_29_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classIncrease__IndexValue.html" target="_self">Increase_IndexValue</a></td><td class="desc"></td></tr>
-<tr id="row_30_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classIncrease__PosValue.html" target="_self">Increase_PosValue</a></td><td class="desc"></td></tr>
-<tr id="row_31_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structIndexValue.html" target="_self">IndexValue</a></td><td class="desc"></td></tr>
-<tr id="row_32_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classKernel.html" target="_self">Kernel</a></td><td class="desc"></td></tr>
-<tr id="row_33_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classLastReturnFilter.html" target="_self">LastReturnFilter</a></td><td class="desc"></td></tr>
-<tr id="row_34_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classMainWindow.html" target="_self">MainWindow</a></td><td class="desc"></td></tr>
-<tr id="row_35_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classONE__CLASS__Q.html" target="_self">ONE_CLASS_Q</a></td><td class="desc"></td></tr>
-<tr id="row_36_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classOptFactory.html" target="_self">OptFactory</a></td><td class="desc"></td></tr>
-<tr id="row_37_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classOptionpk.html" target="_self">Optionpk</a></td><td class="desc"></td></tr>
-<tr id="row_38_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structPosValue.html" target="_self">PosValue</a></td><td class="desc"></td></tr>
-<tr id="row_39_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classQMatrix.html" target="_self">QMatrix</a></td><td class="desc"></td></tr>
-<tr id="row_40_"><td class="entry"><img id="arr_40_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('40_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classSolver.html" target="_self">Solver</a></td><td class="desc"></td></tr>
-<tr id="row_40_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structSolver_1_1SolutionInfo.html" target="_self">SolutionInfo</a></td><td class="desc"></td></tr>
-<tr id="row_41_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classSolver__NU.html" target="_self">Solver_NU</a></td><td class="desc"></td></tr>
-<tr id="row_42_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classSVC__Q.html" target="_self">SVC_Q</a></td><td class="desc"></td></tr>
-<tr id="row_43_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structsvm__model.html" target="_self">svm_model</a></td><td class="desc"></td></tr>
-<tr id="row_44_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structsvm__node.html" target="_self">svm_node</a></td><td class="desc"></td></tr>
-<tr id="row_45_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structsvm__parameter.html" target="_self">svm_parameter</a></td><td class="desc"></td></tr>
-<tr id="row_46_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structsvm__problem.html" target="_self">svm_problem</a></td><td class="desc"></td></tr>
-<tr id="row_47_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classSVR__Q.html" target="_self">SVR_Q</a></td><td class="desc"></td></tr>
-<tr id="row_48_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classUi__MainWindow.html" target="_self">Ui_MainWindow</a></td><td class="desc"></td></tr>
-<tr id="row_49_"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classVector2d.html" target="_self">Vector2d</a></td><td class="desc"></td></tr>
-</table>
-</div><!-- directory -->
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/bc_s.png b/doc/html/bc_s.png
deleted file mode 100644
index 224b29a..0000000
Binary files a/doc/html/bc_s.png and /dev/null differ
diff --git a/doc/html/bdwn.png b/doc/html/bdwn.png
deleted file mode 100644
index 940a0b9..0000000
Binary files a/doc/html/bdwn.png and /dev/null differ
diff --git a/doc/html/build-pkcomposite__gui-gcc-Debug_2moc__mainwindow_8cpp_source.html b/doc/html/build-pkcomposite__gui-gcc-Debug_2moc__mainwindow_8cpp_source.html
deleted file mode 100644
index e0ac86c..0000000
--- a/doc/html/build-pkcomposite__gui-gcc-Debug_2moc__mainwindow_8cpp_source.html
+++ /dev/null
@@ -1,202 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/build-pkcomposite_gui-gcc-Debug/moc_mainwindow.cpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_280a0ba2820d23d6529bf494f1ea3ddd.html">build-pkcomposite_gui-gcc-Debug</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">moc_mainwindow.cpp</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/****************************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">** Meta object code from reading C++ file 'mainwindow.h'</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">** Created by: The Qt Meta Object Compiler version 63 (Qt 4.8.6)</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">** WARNING! All changes made in this file will be lost!</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">*****************************************************************************/</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> </div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="preprocessor">#include "../pkcomposite_gui/mainwindow.h"</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="preprocessor">#if !defined(Q_MOC_OUTPUT_REVISION)</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="preprocessor"></span><span class="preprocessor">#error "The header file 'mainwindow.h' doesn't include <QObject>."</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="preprocessor"></span><span class="preprocessor">#elif Q_MOC_OUTPUT_REVISION != 63</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="preprocessor"></span><span class="preprocessor">#error "This file was generated using the moc from 4.8.6. It"</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="preprocessor"></span><span class="preprocessor">#error "cannot be used with the include files from this version of Qt."</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor"></span><span class="preprocessor">#error "(The moc has changed too much.)"</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> QT_BEGIN_MOC_NAMESPACE</div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="keyword">static</span> <span class="keyword">const</span> uint qt_meta_data_MainWindow[] = {</div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> </div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span>  <span class="comment">// content:</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span>        6,       <span class="comment">// revision</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span>        0,       <span class="comment">// classname</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span>        0,    0, <span class="comment">// classinfo</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span>       13,   14, <span class="comment">// methods</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span>        0,    0, <span class="comment">// properties</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span>        0,    0, <span class="comment">// enums/sets</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span>        0,    0, <span class="comment">// constructors</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span>        0,       <span class="comment">// flags</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>        0,       <span class="comment">// signalCount</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> </div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>  <span class="comment">// slots: signature, parameters, type, tag, flags</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>       12,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>       42,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>       75,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>      108,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>      142,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>      168,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>      199,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>      227,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>      268,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>      297,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>      324,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>      355,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>      383,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span> </div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>        0        <span class="comment">// eod</span></div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span> };</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span> </div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> qt_meta_stringdata_MainWindow[] = {</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     <span class="stringliteral">"MainWindow\0\0on_toolButton_input_clicked()\0"</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     <span class="stringliteral">"on_toolButton_defaults_clicked()\0"</span></div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     <span class="stringliteral">"on_actionInput_image_triggered()\0"</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     <span class="stringliteral">"on_actionOutput_image_triggered()\0"</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     <span class="stringliteral">"on_actionQuit_triggered()\0"</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <span class="stringliteral">"on_toolButton_output_clicked()\0"</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     <span class="stringliteral">"on_toolButton_Run_clicked()\0"</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     <span class="stringliteral">"on_actionSelection_Info_file_triggered()\0"</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     <span class="stringliteral">"on_toolButton_file_clicked()\0"</span></div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     <span class="stringliteral">"on_toolButton_ct_clicked()\0"</span></div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     <span class="stringliteral">"on_toolButton_extent_clicked()\0"</span></div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     <span class="stringliteral">"on_actionExtent_triggered()\0"</span></div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     <span class="stringliteral">"deleteItemInput()\0"</span></div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span> };</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span> </div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span> <span class="keywordtype">void</span> MainWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, <span class="keywordtype">int</span> _id, <span class="keywordtype">void</span> **_a)</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span> {</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     <span class="keywordflow">if</span> (_c == QMetaObject::InvokeMetaMethod) {</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>         Q_ASSERT(staticMetaObject.cast(_o));</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>         <a class="code" href="classMainWindow.html">MainWindow</a> *_t = <span class="keyword">static_cast<</span><a class="code" href="classMainWindow.html">MainWindow</a> *<span class="keyword">></span>(_o);</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>         <span class="keywordflow">switch</span> (_id) {</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>         <span class="keywordflow">case</span> 0: _t->on_toolButton_input_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>         <span class="keywordflow">case</span> 1: _t->on_toolButton_defaults_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>         <span class="keywordflow">case</span> 2: _t->on_actionInput_image_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>         <span class="keywordflow">case</span> 3: _t->on_actionOutput_image_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>         <span class="keywordflow">case</span> 4: _t->on_actionQuit_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>         <span class="keywordflow">case</span> 5: _t->on_toolButton_output_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>         <span class="keywordflow">case</span> 6: _t->on_toolButton_Run_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>         <span class="keywordflow">case</span> 7: _t->on_actionSelection_Info_file_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>         <span class="keywordflow">case</span> 8: _t->on_toolButton_file_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>         <span class="keywordflow">case</span> 9: _t->on_toolButton_ct_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>         <span class="keywordflow">case</span> 10: _t->on_toolButton_extent_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>         <span class="keywordflow">case</span> 11: _t->on_actionExtent_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>         <span class="keywordflow">case</span> 12: _t->deleteItemInput(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>         <span class="keywordflow">default</span>: ;</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>         }</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>     }</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>     Q_UNUSED(_a);</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span> }</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span> </div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span> <span class="keyword">const</span> QMetaObjectExtraData MainWindow::staticMetaObjectExtraData = {</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     0,  qt_static_metacall </div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span> };</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span> </div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span> <span class="keyword">const</span> QMetaObject MainWindow::staticMetaObject = {</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     { &QMainWindow::staticMetaObject, qt_meta_stringdata_MainWindow,</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>       qt_meta_data_MainWindow, &staticMetaObjectExtraData }</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span> };</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span> </div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span> <span class="preprocessor">#ifdef Q_NO_DATA_RELOCATION</span></div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span> <span class="preprocessor"></span><span class="keyword">const</span> QMetaObject &MainWindow::getStaticMetaObject() { <span class="keywordflow">return</span> staticMetaObject; }</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span> <span class="preprocessor">#endif //Q_NO_DATA_RELOCATION</span></div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span> <span class="keyword">const</span> QMetaObject *MainWindow::metaObject()<span class="keyword"> const</span></div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     <span class="keywordflow">return</span> QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject;</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span> }</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span> </div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span> <span class="keywordtype">void</span> *MainWindow::qt_metacast(<span class="keyword">const</span> <span class="keywordtype">char</span> *_clname)</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span> {</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>     <span class="keywordflow">if</span> (!_clname) <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>     <span class="keywordflow">if</span> (!strcmp(_clname, qt_meta_stringdata_MainWindow))</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>         <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">void</span>*<span class="keyword">></span>(<span class="keyword">const_cast<</span> <a class="code" href="classMainWindow.html">MainWindow</a>*<span class="keyword">></span>(<span class="keyword">this</span>));</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     <span class="keywordflow">return</span> QMainWindow::qt_metacast(_clname);</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span> }</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span> </div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span> <span class="keywordtype">int</span> MainWindow::qt_metacall(QMetaObject::Call _c, <span class="keywordtype">int</span> _id, <span class="keywordtype">void</span> **_a)</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span> {</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>     _id = QMainWindow::qt_metacall(_c, _id, _a);</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>     <span class="keywordflow">if</span> (_id < 0)</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>         <span class="keywordflow">return</span> _id;</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>     <span class="keywordflow">if</span> (_c == QMetaObject::InvokeMetaMethod) {</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>         <span class="keywordflow">if</span> (_id < 13)</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>             qt_static_metacall(<span class="keyword">this</span>, _c, _id, _a);</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>         _id -= 13;</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     }</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>     <span class="keywordflow">return</span> _id;</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span> }</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span> QT_END_MOC_NAMESPACE</div>
-<div class="ttc" id="classMainWindow_html"><div class="ttname"><a href="classMainWindow.html">MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite__gui_2mainwindow_8h_source.html#l00031">mainwindow.h:31</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/build-pkcomposite__gui-gcc-Debug_2ui__mainwindow_8h_source.html b/doc/html/build-pkcomposite__gui-gcc-Debug_2ui__mainwindow_8h_source.html
deleted file mode 100644
index aef513c..0000000
--- a/doc/html/build-pkcomposite__gui-gcc-Debug_2ui__mainwindow_8h_source.html
+++ /dev/null
@@ -1,782 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/build-pkcomposite_gui-gcc-Debug/ui_mainwindow.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_280a0ba2820d23d6529bf494f1ea3ddd.html">build-pkcomposite_gui-gcc-Debug</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">ui_mainwindow.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/********************************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">** Form generated from reading UI file 'mainwindow.ui'</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">** Created by: Qt User Interface Compiler version 4.8.6</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">** WARNING! All changes made in this file will be lost when recompiling UI file!</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">********************************************************************************/</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> </div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="preprocessor">#ifndef UI_MAINWINDOW_H</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="preprocessor"></span><span class="preprocessor">#define UI_MAINWINDOW_H</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="preprocessor">#include <QtCore/QVariant></span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="preprocessor">#include <QtGui/QAction></span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="preprocessor">#include <QtGui/QApplication></span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor">#include <QtGui/QButtonGroup></span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor">#include <QtGui/QCheckBox></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include <QtGui/QComboBox></span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include <QtGui/QGridLayout></span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include <QtGui/QGroupBox></span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <QtGui/QHBoxLayout></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <QtGui/QHeaderView></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <QtGui/QLabel></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <QtGui/QLineEdit></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <QtGui/QListWidget></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include <QtGui/QMainWindow></span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include <QtGui/QMenu></span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include <QtGui/QMenuBar></span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include <QtGui/QPlainTextEdit></span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include <QtGui/QSpacerItem></span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include <QtGui/QStatusBar></span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="preprocessor">#include <QtGui/QTabWidget></span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="preprocessor">#include <QtGui/QToolBar></span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="preprocessor">#include <QtGui/QToolButton></span></div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="preprocessor">#include <QtGui/QVBoxLayout></span></div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="preprocessor">#include <QtGui/QWidget></span></div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> </div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> QT_BEGIN_NAMESPACE</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
-<div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="classUi__MainWindow.html">   39</a></span> <span class="keyword">class </span><a class="code" href="classUi__MainWindow.html">Ui_MainWindow</a></div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> {</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     QAction *actionInput_image;</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     QAction *actionOutput_image;</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     QAction *actionQuit;</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     QAction *actionSelection_Info_file;</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     QAction *actionExtent;</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     QWidget *centralWidget;</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     QVBoxLayout *verticalLayout;</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     QTabWidget *tabWidget;</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     QWidget *tab;</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     QVBoxLayout *verticalLayout_2;</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     QGridLayout *gridLayout_2;</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     QSpacerItem *horizontalSpacer_3;</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     QListWidget *listWidget_input;</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     QLabel *label;</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     QToolButton *toolButton_input;</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     QLineEdit *lry;</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     QLineEdit *uly;</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     QLabel *label_2;</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     QSpacerItem *horizontalSpacer_2;</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     QLineEdit *lrx;</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     QLineEdit *ulx;</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     QLabel *label_4;</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     QLineEdit *extent;</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     QToolButton *toolButton_extent;</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     QWidget *tab_2;</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>     QGridLayout *gridLayout_4;</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     QSpacerItem *verticalSpacer_3;</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     QComboBox *resample;</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     QLabel *label_18;</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     QLabel *label_17;</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>     QComboBox *crule;</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>     QLabel *label_19;</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>     QLineEdit *cband;</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>     QGroupBox *groupBox;</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>     QGridLayout *gridLayout_3;</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>     QLabel *label_21;</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>     QLineEdit *srcnodata;</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>     QLabel *label_23;</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>     QLabel *label_22;</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>     QLineEdit *min;</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     QLineEdit *max;</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     QLabel *label_20;</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     QLineEdit *bndnodata;</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>     QSpacerItem *horizontalSpacer_4;</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>     QSpacerItem *horizontalSpacer_5;</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>     QWidget *tab_3;</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>     QVBoxLayout *verticalLayout_3;</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     QGridLayout *gridLayout;</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     QSpacerItem *horizontalSpacer_6;</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     QLabel *label_7;</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     QLabel *label_14;</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>     QLineEdit *file;</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>     QLabel *label_10;</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>     QComboBox *oformat;</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     QComboBox *interleaved;</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     QLabel *label_9;</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     QLineEdit *dx;</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     QLabel *label_8;</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     QLabel *label_13;</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     QToolButton *toolButton_ct;</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     QComboBox *compressed;</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     QLabel *label_12;</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     QLineEdit *ct;</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     QLineEdit *output;</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     QToolButton *toolButton_output;</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     QLabel *label_6;</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     QLineEdit *a_srs;</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>     QLabel *label_15;</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>     QLineEdit *dy;</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>     QLabel *label_5;</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>     QCheckBox *tiled;</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     QComboBox *otype;</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     QLabel *label_11;</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     QLineEdit *dstnodata;</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     QToolButton *toolButton_file;</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     QLabel *label_3;</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     QWidget *tab_4;</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>     QVBoxLayout *verticalLayout_5;</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>     QVBoxLayout *verticalLayout_4;</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>     QLabel *label_24;</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>     QLineEdit *commandLineEdit;</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>     QLabel *label_25;</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     QPlainTextEdit *consoleEdit;</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>     QSpacerItem *verticalSpacer_2;</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     QHBoxLayout *horizontalLayout_2;</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>     QToolButton *toolButton_Run;</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>     QSpacerItem *horizontalSpacer;</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>     QToolButton *toolButton_defaults;</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>     QMenuBar *menuBar;</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>     QMenu *menuFile;</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>     QToolBar *mainToolBar;</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>     QStatusBar *statusBar;</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span> </div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>     <span class="keywordtype">void</span> setupUi(QMainWindow *<a class="code" href="classMainWindow.html">MainWindow</a>)</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>     {</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>         <span class="keywordflow">if</span> (MainWindow->objectName().isEmpty())</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>             MainWindow->setObjectName(QString::fromUtf8(<span class="stringliteral">"MainWindow"</span>));</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>         MainWindow->resize(798, 859);</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>         actionInput_image = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>         actionInput_image->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionInput_image"</span>));</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>         actionOutput_image = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>         actionOutput_image->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionOutput_image"</span>));</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>         actionQuit = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>         actionQuit->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionQuit"</span>));</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>         actionSelection_Info_file = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>         actionSelection_Info_file->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionSelection_Info_file"</span>));</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>         actionExtent = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>         actionExtent->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionExtent"</span>));</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>         centralWidget = <span class="keyword">new</span> QWidget(MainWindow);</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>         centralWidget->setObjectName(QString::fromUtf8(<span class="stringliteral">"centralWidget"</span>));</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>         verticalLayout = <span class="keyword">new</span> QVBoxLayout(centralWidget);</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>         verticalLayout->setSpacing(6);</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>         verticalLayout->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>         verticalLayout->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout"</span>));</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>         tabWidget = <span class="keyword">new</span> QTabWidget(centralWidget);</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>         tabWidget->setObjectName(QString::fromUtf8(<span class="stringliteral">"tabWidget"</span>));</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>         tab = <span class="keyword">new</span> QWidget();</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>         tab->setObjectName(QString::fromUtf8(<span class="stringliteral">"tab"</span>));</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>         verticalLayout_2 = <span class="keyword">new</span> QVBoxLayout(tab);</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>         verticalLayout_2->setSpacing(6);</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>         verticalLayout_2->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>         verticalLayout_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout_2"</span>));</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>         gridLayout_2 = <span class="keyword">new</span> QGridLayout();</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>         gridLayout_2->setSpacing(6);</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>         gridLayout_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"gridLayout_2"</span>));</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>         horizontalSpacer_3 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span> </div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>         gridLayout_2->addItem(horizontalSpacer_3, 1, 3, 1, 1);</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span> </div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>         listWidget_input = <span class="keyword">new</span> QListWidget(tab);</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>         listWidget_input->setObjectName(QString::fromUtf8(<span class="stringliteral">"listWidget_input"</span>));</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span> </div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>         gridLayout_2->addWidget(listWidget_input, 0, 2, 1, 1);</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span> </div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>         label = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>         label->setObjectName(QString::fromUtf8(<span class="stringliteral">"label"</span>));</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span> </div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>         gridLayout_2->addWidget(label, 0, 0, 1, 1);</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span> </div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>         toolButton_input = <span class="keyword">new</span> QToolButton(tab);</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>         toolButton_input->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_input"</span>));</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span> </div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>         gridLayout_2->addWidget(toolButton_input, 0, 1, 1, 1);</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span> </div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>         lry = <span class="keyword">new</span> QLineEdit(tab);</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>         lry->setObjectName(QString::fromUtf8(<span class="stringliteral">"lry"</span>));</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span> </div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>         gridLayout_2->addWidget(lry, 3, 2, 1, 1);</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span> </div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>         uly = <span class="keyword">new</span> QLineEdit(tab);</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>         uly->setObjectName(QString::fromUtf8(<span class="stringliteral">"uly"</span>));</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span> </div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>         gridLayout_2->addWidget(uly, 1, 2, 1, 1);</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span> </div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>         label_2 = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>         label_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_2"</span>));</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span> </div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>         gridLayout_2->addWidget(label_2, 1, 0, 1, 1);</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span> </div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>         horizontalSpacer_2 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span> </div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>         gridLayout_2->addItem(horizontalSpacer_2, 1, 1, 1, 1);</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span> </div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>         lrx = <span class="keyword">new</span> QLineEdit(tab);</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>         lrx->setObjectName(QString::fromUtf8(<span class="stringliteral">"lrx"</span>));</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span> </div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>         gridLayout_2->addWidget(lrx, 2, 3, 1, 1);</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span> </div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>         ulx = <span class="keyword">new</span> QLineEdit(tab);</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>         ulx->setObjectName(QString::fromUtf8(<span class="stringliteral">"ulx"</span>));</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span> </div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>         gridLayout_2->addWidget(ulx, 2, 1, 1, 1);</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span> </div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>         label_4 = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>         label_4->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_4"</span>));</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span> </div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>         gridLayout_2->addWidget(label_4, 4, 0, 1, 1);</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span> </div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>         extent = <span class="keyword">new</span> QLineEdit(tab);</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>         extent->setObjectName(QString::fromUtf8(<span class="stringliteral">"extent"</span>));</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span> </div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>         gridLayout_2->addWidget(extent, 4, 1, 1, 1);</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span> </div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>         toolButton_extent = <span class="keyword">new</span> QToolButton(tab);</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>         toolButton_extent->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_extent"</span>));</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span> </div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>         gridLayout_2->addWidget(toolButton_extent, 4, 2, 1, 1);</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span> </div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span> </div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>         verticalLayout_2->addLayout(gridLayout_2);</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span> </div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>         tabWidget->addTab(tab, QString());</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>         tab_2 = <span class="keyword">new</span> QWidget();</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>         tab_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"tab_2"</span>));</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>         gridLayout_4 = <span class="keyword">new</span> QGridLayout(tab_2);</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>         gridLayout_4->setSpacing(6);</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>         gridLayout_4->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>         gridLayout_4->setObjectName(QString::fromUtf8(<span class="stringliteral">"gridLayout_4"</span>));</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>         verticalSpacer_3 = <span class="keyword">new</span> QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span> </div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>         gridLayout_4->addItem(verticalSpacer_3, 2, 0, 1, 1);</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span> </div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>         resample = <span class="keyword">new</span> QComboBox(tab_2);</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>         resample->setObjectName(QString::fromUtf8(<span class="stringliteral">"resample"</span>));</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span> </div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>         gridLayout_4->addWidget(resample, 0, 1, 1, 1);</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span> </div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>         label_18 = <span class="keyword">new</span> QLabel(tab_2);</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>         label_18->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_18"</span>));</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span> </div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>         gridLayout_4->addWidget(label_18, 1, 0, 1, 1);</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span> </div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>         label_17 = <span class="keyword">new</span> QLabel(tab_2);</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>         label_17->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_17"</span>));</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span> </div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>         gridLayout_4->addWidget(label_17, 0, 0, 1, 1);</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span> </div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>         crule = <span class="keyword">new</span> QComboBox(tab_2);</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>         crule->setObjectName(QString::fromUtf8(<span class="stringliteral">"crule"</span>));</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span> </div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>         gridLayout_4->addWidget(crule, 1, 1, 1, 1);</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span> </div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>         label_19 = <span class="keyword">new</span> QLabel(tab_2);</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>         label_19->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_19"</span>));</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span> </div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>         gridLayout_4->addWidget(label_19, 1, 3, 1, 1);</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span> </div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>         cband = <span class="keyword">new</span> QLineEdit(tab_2);</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>         cband->setObjectName(QString::fromUtf8(<span class="stringliteral">"cband"</span>));</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span> </div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>         gridLayout_4->addWidget(cband, 1, 4, 1, 1);</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span> </div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>         groupBox = <span class="keyword">new</span> QGroupBox(tab_2);</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>         groupBox->setObjectName(QString::fromUtf8(<span class="stringliteral">"groupBox"</span>));</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>         gridLayout_3 = <span class="keyword">new</span> QGridLayout(groupBox);</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>         gridLayout_3->setSpacing(6);</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>         gridLayout_3->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>         gridLayout_3->setObjectName(QString::fromUtf8(<span class="stringliteral">"gridLayout_3"</span>));</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>         label_21 = <span class="keyword">new</span> QLabel(groupBox);</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>         label_21->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_21"</span>));</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span> </div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>         gridLayout_3->addWidget(label_21, 1, 0, 1, 1);</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span> </div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>         srcnodata = <span class="keyword">new</span> QLineEdit(groupBox);</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>         srcnodata->setObjectName(QString::fromUtf8(<span class="stringliteral">"srcnodata"</span>));</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span> </div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>         gridLayout_3->addWidget(srcnodata, 1, 1, 1, 2);</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span> </div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>         label_23 = <span class="keyword">new</span> QLabel(groupBox);</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>         label_23->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_23"</span>));</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span> </div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>         gridLayout_3->addWidget(label_23, 3, 0, 1, 1);</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span> </div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>         label_22 = <span class="keyword">new</span> QLabel(groupBox);</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>         label_22->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_22"</span>));</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span> </div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>         gridLayout_3->addWidget(label_22, 2, 0, 1, 1);</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span> </div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>         min = <span class="keyword">new</span> QLineEdit(groupBox);</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>         min->setObjectName(QString::fromUtf8(<span class="stringliteral">"min"</span>));</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span> </div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>         gridLayout_3->addWidget(min, 2, 1, 1, 2);</div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span> </div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>         max = <span class="keyword">new</span> QLineEdit(groupBox);</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>         max->setObjectName(QString::fromUtf8(<span class="stringliteral">"max"</span>));</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span> </div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>         gridLayout_3->addWidget(max, 3, 1, 1, 1);</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span> </div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>         label_20 = <span class="keyword">new</span> QLabel(groupBox);</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>         label_20->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_20"</span>));</div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span> </div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>         gridLayout_3->addWidget(label_20, 0, 0, 1, 1);</div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span> </div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>         bndnodata = <span class="keyword">new</span> QLineEdit(groupBox);</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>         bndnodata->setObjectName(QString::fromUtf8(<span class="stringliteral">"bndnodata"</span>));</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span> </div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>         gridLayout_3->addWidget(bndnodata, 0, 1, 1, 1);</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span> </div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span> </div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>         gridLayout_4->addWidget(groupBox, 3, 0, 1, 4);</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span> </div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>         horizontalSpacer_4 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span> </div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>         gridLayout_4->addItem(horizontalSpacer_4, 1, 5, 1, 1);</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span> </div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>         horizontalSpacer_5 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span> </div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>         gridLayout_4->addItem(horizontalSpacer_5, 1, 2, 1, 1);</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span> </div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>         tabWidget->addTab(tab_2, QString());</div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>         tab_3 = <span class="keyword">new</span> QWidget();</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>         tab_3->setObjectName(QString::fromUtf8(<span class="stringliteral">"tab_3"</span>));</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>         verticalLayout_3 = <span class="keyword">new</span> QVBoxLayout(tab_3);</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>         verticalLayout_3->setSpacing(6);</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>         verticalLayout_3->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>         verticalLayout_3->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout_3"</span>));</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>         gridLayout = <span class="keyword">new</span> QGridLayout();</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>         gridLayout->setSpacing(6);</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>         gridLayout->setObjectName(QString::fromUtf8(<span class="stringliteral">"gridLayout"</span>));</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>         horizontalSpacer_6 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span> </div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>         gridLayout->addItem(horizontalSpacer_6, 7, 3, 1, 1);</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span> </div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>         label_7 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>         label_7->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_7"</span>));</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span> </div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>         gridLayout->addWidget(label_7, 4, 0, 1, 1);</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span> </div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>         label_14 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>         label_14->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_14"</span>));</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span> </div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>         gridLayout->addWidget(label_14, 8, 0, 1, 1);</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span> </div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>         file = <span class="keyword">new</span> QLineEdit(tab_3);</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>         file->setObjectName(QString::fromUtf8(<span class="stringliteral">"file"</span>));</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span> </div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>         gridLayout->addWidget(file, 9, 1, 1, 1);</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span> </div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>         label_10 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>         label_10->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_10"</span>));</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span> </div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>         gridLayout->addWidget(label_10, 6, 2, 1, 1);</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span> </div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>         oformat = <span class="keyword">new</span> QComboBox(tab_3);</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>         oformat->setObjectName(QString::fromUtf8(<span class="stringliteral">"oformat"</span>));</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span> </div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>         gridLayout->addWidget(oformat, 4, 1, 1, 1);</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span> </div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>         interleaved = <span class="keyword">new</span> QComboBox(tab_3);</div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>         interleaved->setObjectName(QString::fromUtf8(<span class="stringliteral">"interleaved"</span>));</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span> </div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>         gridLayout->addWidget(interleaved, 7, 1, 1, 1);</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span> </div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>         label_9 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>         label_9->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_9"</span>));</div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span> </div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>         gridLayout->addWidget(label_9, 6, 0, 1, 1);</div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span> </div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>         dx = <span class="keyword">new</span> QLineEdit(tab_3);</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>         dx->setObjectName(QString::fromUtf8(<span class="stringliteral">"dx"</span>));</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span> </div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>         gridLayout->addWidget(dx, 6, 1, 1, 1);</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span> </div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>         label_8 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>         label_8->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_8"</span>));</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span> </div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>         gridLayout->addWidget(label_8, 5, 0, 1, 1);</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span> </div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>         label_13 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>         label_13->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_13"</span>));</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span> </div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>         gridLayout->addWidget(label_13, 7, 4, 1, 1);</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span> </div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>         toolButton_ct = <span class="keyword">new</span> QToolButton(tab_3);</div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>         toolButton_ct->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_ct"</span>));</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span> </div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>         gridLayout->addWidget(toolButton_ct, 5, 2, 1, 1);</div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span> </div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>         compressed = <span class="keyword">new</span> QComboBox(tab_3);</div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>         compressed->setObjectName(QString::fromUtf8(<span class="stringliteral">"compressed"</span>));</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span> </div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span>         gridLayout->addWidget(compressed, 7, 5, 1, 1);</div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span> </div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>         label_12 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>         label_12->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_12"</span>));</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span> </div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>         gridLayout->addWidget(label_12, 7, 0, 1, 1);</div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span> </div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>         ct = <span class="keyword">new</span> QLineEdit(tab_3);</div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>         ct->setObjectName(QString::fromUtf8(<span class="stringliteral">"ct"</span>));</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span> </div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>         gridLayout->addWidget(ct, 5, 1, 1, 1);</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span> </div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>         output = <span class="keyword">new</span> QLineEdit(tab_3);</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>         output->setObjectName(QString::fromUtf8(<span class="stringliteral">"output"</span>));</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span> </div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>         gridLayout->addWidget(output, 1, 1, 1, 1);</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span> </div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>         toolButton_output = <span class="keyword">new</span> QToolButton(tab_3);</div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>         toolButton_output->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_output"</span>));</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span> </div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>         gridLayout->addWidget(toolButton_output, 1, 2, 1, 1);</div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span> </div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span>         label_6 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>         label_6->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_6"</span>));</div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span> </div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span>         gridLayout->addWidget(label_6, 3, 0, 1, 1);</div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span> </div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span>         a_srs = <span class="keyword">new</span> QLineEdit(tab_3);</div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span>         a_srs->setObjectName(QString::fromUtf8(<span class="stringliteral">"a_srs"</span>));</div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span> </div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span>         gridLayout->addWidget(a_srs, 2, 1, 1, 1);</div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span> </div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>         label_15 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>         label_15->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_15"</span>));</div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span> </div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span>         gridLayout->addWidget(label_15, 9, 0, 1, 1);</div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span> </div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span>         dy = <span class="keyword">new</span> QLineEdit(tab_3);</div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span>         dy->setObjectName(QString::fromUtf8(<span class="stringliteral">"dy"</span>));</div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span> </div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span>         gridLayout->addWidget(dy, 6, 4, 1, 1);</div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span> </div>
-<div class="line"><a name="l00445"></a><span class="lineno">  445</span>         label_5 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00446"></a><span class="lineno">  446</span>         label_5->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_5"</span>));</div>
-<div class="line"><a name="l00447"></a><span class="lineno">  447</span> </div>
-<div class="line"><a name="l00448"></a><span class="lineno">  448</span>         gridLayout->addWidget(label_5, 2, 0, 1, 1);</div>
-<div class="line"><a name="l00449"></a><span class="lineno">  449</span> </div>
-<div class="line"><a name="l00450"></a><span class="lineno">  450</span>         tiled = <span class="keyword">new</span> QCheckBox(tab_3);</div>
-<div class="line"><a name="l00451"></a><span class="lineno">  451</span>         tiled->setObjectName(QString::fromUtf8(<span class="stringliteral">"tiled"</span>));</div>
-<div class="line"><a name="l00452"></a><span class="lineno">  452</span> </div>
-<div class="line"><a name="l00453"></a><span class="lineno">  453</span>         gridLayout->addWidget(tiled, 7, 2, 1, 1);</div>
-<div class="line"><a name="l00454"></a><span class="lineno">  454</span> </div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span>         otype = <span class="keyword">new</span> QComboBox(tab_3);</div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</span>         otype->setObjectName(QString::fromUtf8(<span class="stringliteral">"otype"</span>));</div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span> </div>
-<div class="line"><a name="l00458"></a><span class="lineno">  458</span>         gridLayout->addWidget(otype, 3, 1, 1, 1);</div>
-<div class="line"><a name="l00459"></a><span class="lineno">  459</span> </div>
-<div class="line"><a name="l00460"></a><span class="lineno">  460</span>         label_11 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span>         label_11->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_11"</span>));</div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span> </div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span>         gridLayout->addWidget(label_11, 6, 5, 1, 1);</div>
-<div class="line"><a name="l00464"></a><span class="lineno">  464</span> </div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span>         dstnodata = <span class="keyword">new</span> QLineEdit(tab_3);</div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>         dstnodata->setObjectName(QString::fromUtf8(<span class="stringliteral">"dstnodata"</span>));</div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span> </div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span>         gridLayout->addWidget(dstnodata, 8, 1, 1, 1);</div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span> </div>
-<div class="line"><a name="l00470"></a><span class="lineno">  470</span>         toolButton_file = <span class="keyword">new</span> QToolButton(tab_3);</div>
-<div class="line"><a name="l00471"></a><span class="lineno">  471</span>         toolButton_file->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_file"</span>));</div>
-<div class="line"><a name="l00472"></a><span class="lineno">  472</span> </div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span>         gridLayout->addWidget(toolButton_file, 9, 2, 1, 1);</div>
-<div class="line"><a name="l00474"></a><span class="lineno">  474</span> </div>
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span>         label_3 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00476"></a><span class="lineno">  476</span>         label_3->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_3"</span>));</div>
-<div class="line"><a name="l00477"></a><span class="lineno">  477</span> </div>
-<div class="line"><a name="l00478"></a><span class="lineno">  478</span>         gridLayout->addWidget(label_3, 1, 0, 1, 1);</div>
-<div class="line"><a name="l00479"></a><span class="lineno">  479</span> </div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span> </div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span>         verticalLayout_3->addLayout(gridLayout);</div>
-<div class="line"><a name="l00482"></a><span class="lineno">  482</span> </div>
-<div class="line"><a name="l00483"></a><span class="lineno">  483</span>         tabWidget->addTab(tab_3, QString());</div>
-<div class="line"><a name="l00484"></a><span class="lineno">  484</span>         tab_4 = <span class="keyword">new</span> QWidget();</div>
-<div class="line"><a name="l00485"></a><span class="lineno">  485</span>         tab_4->setObjectName(QString::fromUtf8(<span class="stringliteral">"tab_4"</span>));</div>
-<div class="line"><a name="l00486"></a><span class="lineno">  486</span>         verticalLayout_5 = <span class="keyword">new</span> QVBoxLayout(tab_4);</div>
-<div class="line"><a name="l00487"></a><span class="lineno">  487</span>         verticalLayout_5->setSpacing(6);</div>
-<div class="line"><a name="l00488"></a><span class="lineno">  488</span>         verticalLayout_5->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00489"></a><span class="lineno">  489</span>         verticalLayout_5->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout_5"</span>));</div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span>         verticalLayout_4 = <span class="keyword">new</span> QVBoxLayout();</div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span>         verticalLayout_4->setSpacing(6);</div>
-<div class="line"><a name="l00492"></a><span class="lineno">  492</span>         verticalLayout_4->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout_4"</span>));</div>
-<div class="line"><a name="l00493"></a><span class="lineno">  493</span>         label_24 = <span class="keyword">new</span> QLabel(tab_4);</div>
-<div class="line"><a name="l00494"></a><span class="lineno">  494</span>         label_24->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_24"</span>));</div>
-<div class="line"><a name="l00495"></a><span class="lineno">  495</span> </div>
-<div class="line"><a name="l00496"></a><span class="lineno">  496</span>         verticalLayout_4->addWidget(label_24);</div>
-<div class="line"><a name="l00497"></a><span class="lineno">  497</span> </div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span>         commandLineEdit = <span class="keyword">new</span> QLineEdit(tab_4);</div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span>         commandLineEdit->setObjectName(QString::fromUtf8(<span class="stringliteral">"commandLineEdit"</span>));</div>
-<div class="line"><a name="l00500"></a><span class="lineno">  500</span> </div>
-<div class="line"><a name="l00501"></a><span class="lineno">  501</span>         verticalLayout_4->addWidget(commandLineEdit);</div>
-<div class="line"><a name="l00502"></a><span class="lineno">  502</span> </div>
-<div class="line"><a name="l00503"></a><span class="lineno">  503</span>         label_25 = <span class="keyword">new</span> QLabel(tab_4);</div>
-<div class="line"><a name="l00504"></a><span class="lineno">  504</span>         label_25->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_25"</span>));</div>
-<div class="line"><a name="l00505"></a><span class="lineno">  505</span> </div>
-<div class="line"><a name="l00506"></a><span class="lineno">  506</span>         verticalLayout_4->addWidget(label_25);</div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span> </div>
-<div class="line"><a name="l00508"></a><span class="lineno">  508</span>         consoleEdit = <span class="keyword">new</span> QPlainTextEdit(tab_4);</div>
-<div class="line"><a name="l00509"></a><span class="lineno">  509</span>         consoleEdit->setObjectName(QString::fromUtf8(<span class="stringliteral">"consoleEdit"</span>));</div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span> </div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span>         verticalLayout_4->addWidget(consoleEdit);</div>
-<div class="line"><a name="l00512"></a><span class="lineno">  512</span> </div>
-<div class="line"><a name="l00513"></a><span class="lineno">  513</span> </div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span>         verticalLayout_5->addLayout(verticalLayout_4);</div>
-<div class="line"><a name="l00515"></a><span class="lineno">  515</span> </div>
-<div class="line"><a name="l00516"></a><span class="lineno">  516</span>         tabWidget->addTab(tab_4, QString());</div>
-<div class="line"><a name="l00517"></a><span class="lineno">  517</span> </div>
-<div class="line"><a name="l00518"></a><span class="lineno">  518</span>         verticalLayout->addWidget(tabWidget);</div>
-<div class="line"><a name="l00519"></a><span class="lineno">  519</span> </div>
-<div class="line"><a name="l00520"></a><span class="lineno">  520</span>         verticalSpacer_2 = <span class="keyword">new</span> QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);</div>
-<div class="line"><a name="l00521"></a><span class="lineno">  521</span> </div>
-<div class="line"><a name="l00522"></a><span class="lineno">  522</span>         verticalLayout->addItem(verticalSpacer_2);</div>
-<div class="line"><a name="l00523"></a><span class="lineno">  523</span> </div>
-<div class="line"><a name="l00524"></a><span class="lineno">  524</span>         horizontalLayout_2 = <span class="keyword">new</span> QHBoxLayout();</div>
-<div class="line"><a name="l00525"></a><span class="lineno">  525</span>         horizontalLayout_2->setSpacing(6);</div>
-<div class="line"><a name="l00526"></a><span class="lineno">  526</span>         horizontalLayout_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"horizontalLayout_2"</span>));</div>
-<div class="line"><a name="l00527"></a><span class="lineno">  527</span>         toolButton_Run = <span class="keyword">new</span> QToolButton(centralWidget);</div>
-<div class="line"><a name="l00528"></a><span class="lineno">  528</span>         toolButton_Run->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_Run"</span>));</div>
-<div class="line"><a name="l00529"></a><span class="lineno">  529</span> </div>
-<div class="line"><a name="l00530"></a><span class="lineno">  530</span>         horizontalLayout_2->addWidget(toolButton_Run);</div>
-<div class="line"><a name="l00531"></a><span class="lineno">  531</span> </div>
-<div class="line"><a name="l00532"></a><span class="lineno">  532</span>         horizontalSpacer = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00533"></a><span class="lineno">  533</span> </div>
-<div class="line"><a name="l00534"></a><span class="lineno">  534</span>         horizontalLayout_2->addItem(horizontalSpacer);</div>
-<div class="line"><a name="l00535"></a><span class="lineno">  535</span> </div>
-<div class="line"><a name="l00536"></a><span class="lineno">  536</span>         toolButton_defaults = <span class="keyword">new</span> QToolButton(centralWidget);</div>
-<div class="line"><a name="l00537"></a><span class="lineno">  537</span>         toolButton_defaults->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_defaults"</span>));</div>
-<div class="line"><a name="l00538"></a><span class="lineno">  538</span> </div>
-<div class="line"><a name="l00539"></a><span class="lineno">  539</span>         horizontalLayout_2->addWidget(toolButton_defaults);</div>
-<div class="line"><a name="l00540"></a><span class="lineno">  540</span> </div>
-<div class="line"><a name="l00541"></a><span class="lineno">  541</span> </div>
-<div class="line"><a name="l00542"></a><span class="lineno">  542</span>         verticalLayout->addLayout(horizontalLayout_2);</div>
-<div class="line"><a name="l00543"></a><span class="lineno">  543</span> </div>
-<div class="line"><a name="l00544"></a><span class="lineno">  544</span>         MainWindow->setCentralWidget(centralWidget);</div>
-<div class="line"><a name="l00545"></a><span class="lineno">  545</span>         menuBar = <span class="keyword">new</span> QMenuBar(MainWindow);</div>
-<div class="line"><a name="l00546"></a><span class="lineno">  546</span>         menuBar->setObjectName(QString::fromUtf8(<span class="stringliteral">"menuBar"</span>));</div>
-<div class="line"><a name="l00547"></a><span class="lineno">  547</span>         menuBar->setGeometry(QRect(0, 0, 798, 25));</div>
-<div class="line"><a name="l00548"></a><span class="lineno">  548</span>         menuFile = <span class="keyword">new</span> QMenu(menuBar);</div>
-<div class="line"><a name="l00549"></a><span class="lineno">  549</span>         menuFile->setObjectName(QString::fromUtf8(<span class="stringliteral">"menuFile"</span>));</div>
-<div class="line"><a name="l00550"></a><span class="lineno">  550</span>         MainWindow->setMenuBar(menuBar);</div>
-<div class="line"><a name="l00551"></a><span class="lineno">  551</span>         mainToolBar = <span class="keyword">new</span> QToolBar(MainWindow);</div>
-<div class="line"><a name="l00552"></a><span class="lineno">  552</span>         mainToolBar->setObjectName(QString::fromUtf8(<span class="stringliteral">"mainToolBar"</span>));</div>
-<div class="line"><a name="l00553"></a><span class="lineno">  553</span>         MainWindow->addToolBar(Qt::TopToolBarArea, mainToolBar);</div>
-<div class="line"><a name="l00554"></a><span class="lineno">  554</span>         statusBar = <span class="keyword">new</span> QStatusBar(MainWindow);</div>
-<div class="line"><a name="l00555"></a><span class="lineno">  555</span>         statusBar->setObjectName(QString::fromUtf8(<span class="stringliteral">"statusBar"</span>));</div>
-<div class="line"><a name="l00556"></a><span class="lineno">  556</span>         MainWindow->setStatusBar(statusBar);</div>
-<div class="line"><a name="l00557"></a><span class="lineno">  557</span>         QWidget::setTabOrder(toolButton_input, uly);</div>
-<div class="line"><a name="l00558"></a><span class="lineno">  558</span>         QWidget::setTabOrder(uly, ulx);</div>
-<div class="line"><a name="l00559"></a><span class="lineno">  559</span>         QWidget::setTabOrder(ulx, lrx);</div>
-<div class="line"><a name="l00560"></a><span class="lineno">  560</span>         QWidget::setTabOrder(lrx, lry);</div>
-<div class="line"><a name="l00561"></a><span class="lineno">  561</span>         QWidget::setTabOrder(lry, extent);</div>
-<div class="line"><a name="l00562"></a><span class="lineno">  562</span>         QWidget::setTabOrder(extent, toolButton_extent);</div>
-<div class="line"><a name="l00563"></a><span class="lineno">  563</span>         QWidget::setTabOrder(toolButton_extent, resample);</div>
-<div class="line"><a name="l00564"></a><span class="lineno">  564</span>         QWidget::setTabOrder(resample, crule);</div>
-<div class="line"><a name="l00565"></a><span class="lineno">  565</span>         QWidget::setTabOrder(crule, cband);</div>
-<div class="line"><a name="l00566"></a><span class="lineno">  566</span>         QWidget::setTabOrder(cband, bndnodata);</div>
-<div class="line"><a name="l00567"></a><span class="lineno">  567</span>         QWidget::setTabOrder(bndnodata, srcnodata);</div>
-<div class="line"><a name="l00568"></a><span class="lineno">  568</span>         QWidget::setTabOrder(srcnodata, min);</div>
-<div class="line"><a name="l00569"></a><span class="lineno">  569</span>         QWidget::setTabOrder(min, max);</div>
-<div class="line"><a name="l00570"></a><span class="lineno">  570</span>         QWidget::setTabOrder(max, output);</div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span>         QWidget::setTabOrder(output, toolButton_output);</div>
-<div class="line"><a name="l00572"></a><span class="lineno">  572</span>         QWidget::setTabOrder(toolButton_output, a_srs);</div>
-<div class="line"><a name="l00573"></a><span class="lineno">  573</span>         QWidget::setTabOrder(a_srs, otype);</div>
-<div class="line"><a name="l00574"></a><span class="lineno">  574</span>         QWidget::setTabOrder(otype, oformat);</div>
-<div class="line"><a name="l00575"></a><span class="lineno">  575</span>         QWidget::setTabOrder(oformat, ct);</div>
-<div class="line"><a name="l00576"></a><span class="lineno">  576</span>         QWidget::setTabOrder(ct, toolButton_ct);</div>
-<div class="line"><a name="l00577"></a><span class="lineno">  577</span>         QWidget::setTabOrder(toolButton_ct, dx);</div>
-<div class="line"><a name="l00578"></a><span class="lineno">  578</span>         QWidget::setTabOrder(dx, dy);</div>
-<div class="line"><a name="l00579"></a><span class="lineno">  579</span>         QWidget::setTabOrder(dy, interleaved);</div>
-<div class="line"><a name="l00580"></a><span class="lineno">  580</span>         QWidget::setTabOrder(interleaved, tiled);</div>
-<div class="line"><a name="l00581"></a><span class="lineno">  581</span>         QWidget::setTabOrder(tiled, compressed);</div>
-<div class="line"><a name="l00582"></a><span class="lineno">  582</span>         QWidget::setTabOrder(compressed, dstnodata);</div>
-<div class="line"><a name="l00583"></a><span class="lineno">  583</span>         QWidget::setTabOrder(dstnodata, file);</div>
-<div class="line"><a name="l00584"></a><span class="lineno">  584</span>         QWidget::setTabOrder(file, toolButton_file);</div>
-<div class="line"><a name="l00585"></a><span class="lineno">  585</span>         QWidget::setTabOrder(toolButton_file, toolButton_Run);</div>
-<div class="line"><a name="l00586"></a><span class="lineno">  586</span>         QWidget::setTabOrder(toolButton_Run, toolButton_defaults);</div>
-<div class="line"><a name="l00587"></a><span class="lineno">  587</span>         QWidget::setTabOrder(toolButton_defaults, commandLineEdit);</div>
-<div class="line"><a name="l00588"></a><span class="lineno">  588</span>         QWidget::setTabOrder(commandLineEdit, consoleEdit);</div>
-<div class="line"><a name="l00589"></a><span class="lineno">  589</span>         QWidget::setTabOrder(consoleEdit, listWidget_input);</div>
-<div class="line"><a name="l00590"></a><span class="lineno">  590</span>         QWidget::setTabOrder(listWidget_input, tabWidget);</div>
-<div class="line"><a name="l00591"></a><span class="lineno">  591</span> </div>
-<div class="line"><a name="l00592"></a><span class="lineno">  592</span>         menuBar->addAction(menuFile->menuAction());</div>
-<div class="line"><a name="l00593"></a><span class="lineno">  593</span>         menuFile->addAction(actionInput_image);</div>
-<div class="line"><a name="l00594"></a><span class="lineno">  594</span>         menuFile->addAction(actionExtent);</div>
-<div class="line"><a name="l00595"></a><span class="lineno">  595</span>         menuFile->addAction(actionOutput_image);</div>
-<div class="line"><a name="l00596"></a><span class="lineno">  596</span>         menuFile->addAction(actionSelection_Info_file);</div>
-<div class="line"><a name="l00597"></a><span class="lineno">  597</span>         menuFile->addAction(actionQuit);</div>
-<div class="line"><a name="l00598"></a><span class="lineno">  598</span> </div>
-<div class="line"><a name="l00599"></a><span class="lineno">  599</span>         retranslateUi(MainWindow);</div>
-<div class="line"><a name="l00600"></a><span class="lineno">  600</span> </div>
-<div class="line"><a name="l00601"></a><span class="lineno">  601</span>         tabWidget->setCurrentIndex(3);</div>
-<div class="line"><a name="l00602"></a><span class="lineno">  602</span> </div>
-<div class="line"><a name="l00603"></a><span class="lineno">  603</span> </div>
-<div class="line"><a name="l00604"></a><span class="lineno">  604</span>         QMetaObject::connectSlotsByName(MainWindow);</div>
-<div class="line"><a name="l00605"></a><span class="lineno">  605</span>     } <span class="comment">// setupUi</span></div>
-<div class="line"><a name="l00606"></a><span class="lineno">  606</span> </div>
-<div class="line"><a name="l00607"></a><span class="lineno">  607</span>     <span class="keywordtype">void</span> retranslateUi(QMainWindow *MainWindow)</div>
-<div class="line"><a name="l00608"></a><span class="lineno">  608</span>     {</div>
-<div class="line"><a name="l00609"></a><span class="lineno">  609</span>         MainWindow->setWindowTitle(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"pkcomposite_gui"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00610"></a><span class="lineno">  610</span>         actionInput_image->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Input image(s)"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00611"></a><span class="lineno">  611</span>         actionInput_image->setShortcut(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Alt+I"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00612"></a><span class="lineno">  612</span>         actionOutput_image->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output image"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00613"></a><span class="lineno">  613</span>         actionOutput_image->setShortcut(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Alt+O"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00614"></a><span class="lineno">  614</span>         actionQuit->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Quit"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00615"></a><span class="lineno">  615</span>         actionQuit->setShortcut(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Alt+Q"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00616"></a><span class="lineno">  616</span>         actionSelection_Info_file->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Selection Info file"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00617"></a><span class="lineno">  617</span>         actionSelection_Info_file->setShortcut(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Alt+F"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00618"></a><span class="lineno">  618</span>         actionExtent->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Extent"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00619"></a><span class="lineno">  619</span>         actionExtent->setShortcut(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Alt+E"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00620"></a><span class="lineno">  620</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00621"></a><span class="lineno">  621</span> <span class="preprocessor"></span>        label->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Input raster images</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00622"></a><span class="lineno">  622</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00623"></a><span class="lineno">  623</span> <span class="preprocessor"></span>        label->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Input images"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00624"></a><span class="lineno">  624</span>         toolButton_input->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00625"></a><span class="lineno">  625</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00626"></a><span class="lineno">  626</span> <span class="preprocessor"></span>        label_2->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Provide geographical extent to crop in coordinate reference system of input data</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00627"></a><span class="lineno">  627</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00628"></a><span class="lineno">  628</span> <span class="preprocessor"></span>        label_2->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Geographical extent"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00629"></a><span class="lineno">  629</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00630"></a><span class="lineno">  630</span> <span class="preprocessor"></span>        label_4->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Use an external OGR vector file to define the geographical extent to crop. Coordinate reference systems of input and vector must be identical</p></body></html>"</s [...]
-<div class="line"><a name="l00631"></a><span class="lineno">  631</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00632"></a><span class="lineno">  632</span> <span class="preprocessor"></span>        label_4->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Extent via vector:"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00633"></a><span class="lineno">  633</span>         toolButton_extent->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00634"></a><span class="lineno">  634</span>         tabWidget->setTabText(tabWidget->indexOf(tab), QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Input"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00635"></a><span class="lineno">  635</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00636"></a><span class="lineno">  636</span> <span class="preprocessor"></span>        label_18->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Composite rule for mosaic. Default is overwrite</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00637"></a><span class="lineno">  637</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00638"></a><span class="lineno">  638</span> <span class="preprocessor"></span>        label_18->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Composit rule"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00639"></a><span class="lineno">  639</span>         label_17->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Resample method"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00640"></a><span class="lineno">  640</span>         label_19->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Band used for composit rule"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00641"></a><span class="lineno">  641</span>         groupBox->setTitle(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"nodata values in input"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00642"></a><span class="lineno">  642</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00643"></a><span class="lineno">  643</span> <span class="preprocessor"></span>        label_21->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>invalid value for input image</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00644"></a><span class="lineno">  644</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00645"></a><span class="lineno">  645</span> <span class="preprocessor"></span>        label_21->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"nodata value"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00646"></a><span class="lineno">  646</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00647"></a><span class="lineno">  647</span> <span class="preprocessor"></span>        label_23->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>flag values larger or equal to this value as invalid</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00648"></a><span class="lineno">  648</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00649"></a><span class="lineno">  649</span> <span class="preprocessor"></span>        label_23->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"max value"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00650"></a><span class="lineno">  650</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00651"></a><span class="lineno">  651</span> <span class="preprocessor"></span>        label_22->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>flag values smaller or equal to this value as invalid</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00652"></a><span class="lineno">  652</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00653"></a><span class="lineno">  653</span> <span class="preprocessor"></span>        label_22->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"min value"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00654"></a><span class="lineno">  654</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00655"></a><span class="lineno">  655</span> <span class="preprocessor"></span>        label_20->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Band in input image to check if pixel is valid (used for srcnodata, min and max options)</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00656"></a><span class="lineno">  656</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00657"></a><span class="lineno">  657</span> <span class="preprocessor"></span>        label_20->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"band"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00658"></a><span class="lineno">  658</span>         tabWidget->setTabText(tabWidget->indexOf(tab_2), QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Composit"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00659"></a><span class="lineno">  659</span>         label_7->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output image format"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00660"></a><span class="lineno">  660</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00661"></a><span class="lineno">  661</span> <span class="preprocessor"></span>        label_14->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Nodata value to put in image if out of bounds or if no valid pixel value is found in input images</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00662"></a><span class="lineno">  662</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00663"></a><span class="lineno">  663</span> <span class="preprocessor"></span>        label_14->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output nodata value"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00664"></a><span class="lineno">  664</span>         label_10->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"dx"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00665"></a><span class="lineno">  665</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00666"></a><span class="lineno">  666</span> <span class="preprocessor"></span>        label_9->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Output resolution in x and y distance measure (e.g., meter). Leave empty to read from input data</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00667"></a><span class="lineno">  667</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00668"></a><span class="lineno">  668</span> <span class="preprocessor"></span>        label_9->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output resolution"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00669"></a><span class="lineno">  669</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00670"></a><span class="lineno">  670</span> <span class="preprocessor"></span>        label_8->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Color table must be provided as ASCII text file with five (space delimited) columns:</p><p>value red green blue alpha</p></body></html>"</span>, 0, QAp [...]
-<div class="line"><a name="l00671"></a><span class="lineno">  671</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00672"></a><span class="lineno">  672</span> <span class="preprocessor"></span>        label_8->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Color table (ASCII)"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00673"></a><span class="lineno">  673</span>         label_13->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"compressed"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00674"></a><span class="lineno">  674</span>         toolButton_ct->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00675"></a><span class="lineno">  675</span>         label_12->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Interleaved"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00676"></a><span class="lineno">  676</span>         toolButton_output->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00677"></a><span class="lineno">  677</span>         label_6->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output data type"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00678"></a><span class="lineno">  678</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00679"></a><span class="lineno">  679</span> <span class="preprocessor"></span>        label_15->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Create extra raster file containing information on the selected input file for each pixel</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00680"></a><span class="lineno">  680</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00681"></a><span class="lineno">  681</span> <span class="preprocessor"></span>        label_15->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Ouput info on selected pixels"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00682"></a><span class="lineno">  682</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00683"></a><span class="lineno">  683</span> <span class="preprocessor"></span>        label_5->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Assign projection (e.g., epsg:3035). Notice this will not re-project the image. Use gdalwarp instead.</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00684"></a><span class="lineno">  684</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00685"></a><span class="lineno">  685</span> <span class="preprocessor"></span>        label_5->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Assign projection (EPSG:code)"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00686"></a><span class="lineno">  686</span>         tiled->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Tiled"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00687"></a><span class="lineno">  687</span>         label_11->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"dy"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00688"></a><span class="lineno">  688</span>         toolButton_file->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00689"></a><span class="lineno">  689</span>         label_3->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output image"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00690"></a><span class="lineno">  690</span>         tabWidget->setTabText(tabWidget->indexOf(tab_3), QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00691"></a><span class="lineno">  691</span>         label_24->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Command line"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00692"></a><span class="lineno">  692</span>         label_25->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Console output"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00693"></a><span class="lineno">  693</span>         tabWidget->setTabText(tabWidget->indexOf(tab_4), QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Console"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00694"></a><span class="lineno">  694</span>         toolButton_Run->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Run"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00695"></a><span class="lineno">  695</span>         toolButton_defaults->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Restore defaults"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00696"></a><span class="lineno">  696</span>         menuFile->setTitle(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"File"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00697"></a><span class="lineno">  697</span>     } <span class="comment">// retranslateUi</span></div>
-<div class="line"><a name="l00698"></a><span class="lineno">  698</span> </div>
-<div class="line"><a name="l00699"></a><span class="lineno">  699</span> };</div>
-<div class="line"><a name="l00700"></a><span class="lineno">  700</span> </div>
-<div class="line"><a name="l00701"></a><span class="lineno">  701</span> <span class="keyword">namespace </span>Ui {</div>
-<div class="line"><a name="l00702"></a><span class="lineno"><a class="line" href="classUi_1_1MainWindow.html">  702</a></span>     <span class="keyword">class </span><a class="code" href="classUi_1_1MainWindow.html">MainWindow</a>: <span class="keyword">public</span> <a class="code" href="classUi__MainWindow.html">Ui_MainWindow</a> {};</div>
-<div class="line"><a name="l00703"></a><span class="lineno">  703</span> } <span class="comment">// namespace Ui</span></div>
-<div class="line"><a name="l00704"></a><span class="lineno">  704</span> </div>
-<div class="line"><a name="l00705"></a><span class="lineno">  705</span> QT_END_NAMESPACE</div>
-<div class="line"><a name="l00706"></a><span class="lineno">  706</span> </div>
-<div class="line"><a name="l00707"></a><span class="lineno">  707</span> <span class="preprocessor">#endif // UI_MAINWINDOW_H</span></div>
-<div class="ttc" id="classUi__MainWindow_html"><div class="ttname"><a href="classUi__MainWindow.html">Ui_MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="build-pkcomposite__gui-gcc-Debug_2ui__mainwindow_8h_source.html#l00039">ui_mainwindow.h:39</a></div></div>
-<div class="ttc" id="classUi_1_1MainWindow_html"><div class="ttname"><a href="classUi_1_1MainWindow.html">Ui::MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="build-pkcomposite__gui-gcc-Debug_2ui__mainwindow_8h_source.html#l00702">ui_mainwindow.h:702</a></div></div>
-<div class="ttc" id="classMainWindow_html"><div class="ttname"><a href="classMainWindow.html">MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite__gui_2mainwindow_8h_source.html#l00031">mainwindow.h:31</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/build-pkcomposite__gui-gcc-Release_2moc__mainwindow_8cpp_source.html b/doc/html/build-pkcomposite__gui-gcc-Release_2moc__mainwindow_8cpp_source.html
deleted file mode 100644
index 3e8e934..0000000
--- a/doc/html/build-pkcomposite__gui-gcc-Release_2moc__mainwindow_8cpp_source.html
+++ /dev/null
@@ -1,202 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/build-pkcomposite_gui-gcc-Release/moc_mainwindow.cpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_b8eb6544d8d9ffceba16909a7b9d17d7.html">build-pkcomposite_gui-gcc-Release</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">moc_mainwindow.cpp</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/****************************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">** Meta object code from reading C++ file 'mainwindow.h'</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">** Created by: The Qt Meta Object Compiler version 63 (Qt 4.8.6)</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">** WARNING! All changes made in this file will be lost!</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">*****************************************************************************/</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> </div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="preprocessor">#include "../pkcomposite_gui/mainwindow.h"</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="preprocessor">#if !defined(Q_MOC_OUTPUT_REVISION)</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="preprocessor"></span><span class="preprocessor">#error "The header file 'mainwindow.h' doesn't include <QObject>."</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="preprocessor"></span><span class="preprocessor">#elif Q_MOC_OUTPUT_REVISION != 63</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="preprocessor"></span><span class="preprocessor">#error "This file was generated using the moc from 4.8.6. It"</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="preprocessor"></span><span class="preprocessor">#error "cannot be used with the include files from this version of Qt."</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor"></span><span class="preprocessor">#error "(The moc has changed too much.)"</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> QT_BEGIN_MOC_NAMESPACE</div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="keyword">static</span> <span class="keyword">const</span> uint qt_meta_data_MainWindow[] = {</div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> </div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span>  <span class="comment">// content:</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span>        6,       <span class="comment">// revision</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span>        0,       <span class="comment">// classname</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span>        0,    0, <span class="comment">// classinfo</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span>       13,   14, <span class="comment">// methods</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span>        0,    0, <span class="comment">// properties</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span>        0,    0, <span class="comment">// enums/sets</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span>        0,    0, <span class="comment">// constructors</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span>        0,       <span class="comment">// flags</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>        0,       <span class="comment">// signalCount</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> </div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>  <span class="comment">// slots: signature, parameters, type, tag, flags</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>       12,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>       42,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>       75,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>      108,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>      142,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>      168,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>      199,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>      227,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>      268,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>      297,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>      324,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>      355,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>      383,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span> </div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>        0        <span class="comment">// eod</span></div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span> };</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span> </div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> qt_meta_stringdata_MainWindow[] = {</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     <span class="stringliteral">"MainWindow\0\0on_toolButton_input_clicked()\0"</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     <span class="stringliteral">"on_toolButton_defaults_clicked()\0"</span></div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     <span class="stringliteral">"on_actionInput_image_triggered()\0"</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     <span class="stringliteral">"on_actionOutput_image_triggered()\0"</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     <span class="stringliteral">"on_actionQuit_triggered()\0"</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <span class="stringliteral">"on_toolButton_output_clicked()\0"</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     <span class="stringliteral">"on_toolButton_Run_clicked()\0"</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     <span class="stringliteral">"on_actionSelection_Info_file_triggered()\0"</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     <span class="stringliteral">"on_toolButton_file_clicked()\0"</span></div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     <span class="stringliteral">"on_toolButton_ct_clicked()\0"</span></div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     <span class="stringliteral">"on_toolButton_extent_clicked()\0"</span></div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     <span class="stringliteral">"on_actionExtent_triggered()\0"</span></div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     <span class="stringliteral">"deleteItemInput()\0"</span></div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span> };</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span> </div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span> <span class="keywordtype">void</span> MainWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, <span class="keywordtype">int</span> _id, <span class="keywordtype">void</span> **_a)</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span> {</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     <span class="keywordflow">if</span> (_c == QMetaObject::InvokeMetaMethod) {</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>         Q_ASSERT(staticMetaObject.cast(_o));</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>         <a class="code" href="classMainWindow.html">MainWindow</a> *_t = <span class="keyword">static_cast<</span><a class="code" href="classMainWindow.html">MainWindow</a> *<span class="keyword">></span>(_o);</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>         <span class="keywordflow">switch</span> (_id) {</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>         <span class="keywordflow">case</span> 0: _t->on_toolButton_input_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>         <span class="keywordflow">case</span> 1: _t->on_toolButton_defaults_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>         <span class="keywordflow">case</span> 2: _t->on_actionInput_image_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>         <span class="keywordflow">case</span> 3: _t->on_actionOutput_image_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>         <span class="keywordflow">case</span> 4: _t->on_actionQuit_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>         <span class="keywordflow">case</span> 5: _t->on_toolButton_output_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>         <span class="keywordflow">case</span> 6: _t->on_toolButton_Run_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>         <span class="keywordflow">case</span> 7: _t->on_actionSelection_Info_file_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>         <span class="keywordflow">case</span> 8: _t->on_toolButton_file_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>         <span class="keywordflow">case</span> 9: _t->on_toolButton_ct_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>         <span class="keywordflow">case</span> 10: _t->on_toolButton_extent_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>         <span class="keywordflow">case</span> 11: _t->on_actionExtent_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>         <span class="keywordflow">case</span> 12: _t->deleteItemInput(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>         <span class="keywordflow">default</span>: ;</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>         }</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>     }</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>     Q_UNUSED(_a);</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span> }</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span> </div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span> <span class="keyword">const</span> QMetaObjectExtraData MainWindow::staticMetaObjectExtraData = {</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     0,  qt_static_metacall </div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span> };</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span> </div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span> <span class="keyword">const</span> QMetaObject MainWindow::staticMetaObject = {</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     { &QMainWindow::staticMetaObject, qt_meta_stringdata_MainWindow,</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>       qt_meta_data_MainWindow, &staticMetaObjectExtraData }</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span> };</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span> </div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span> <span class="preprocessor">#ifdef Q_NO_DATA_RELOCATION</span></div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span> <span class="preprocessor"></span><span class="keyword">const</span> QMetaObject &MainWindow::getStaticMetaObject() { <span class="keywordflow">return</span> staticMetaObject; }</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span> <span class="preprocessor">#endif //Q_NO_DATA_RELOCATION</span></div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span> <span class="keyword">const</span> QMetaObject *MainWindow::metaObject()<span class="keyword"> const</span></div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     <span class="keywordflow">return</span> QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject;</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span> }</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span> </div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span> <span class="keywordtype">void</span> *MainWindow::qt_metacast(<span class="keyword">const</span> <span class="keywordtype">char</span> *_clname)</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span> {</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>     <span class="keywordflow">if</span> (!_clname) <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>     <span class="keywordflow">if</span> (!strcmp(_clname, qt_meta_stringdata_MainWindow))</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>         <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">void</span>*<span class="keyword">></span>(<span class="keyword">const_cast<</span> <a class="code" href="classMainWindow.html">MainWindow</a>*<span class="keyword">></span>(<span class="keyword">this</span>));</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     <span class="keywordflow">return</span> QMainWindow::qt_metacast(_clname);</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span> }</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span> </div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span> <span class="keywordtype">int</span> MainWindow::qt_metacall(QMetaObject::Call _c, <span class="keywordtype">int</span> _id, <span class="keywordtype">void</span> **_a)</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span> {</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>     _id = QMainWindow::qt_metacall(_c, _id, _a);</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>     <span class="keywordflow">if</span> (_id < 0)</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>         <span class="keywordflow">return</span> _id;</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>     <span class="keywordflow">if</span> (_c == QMetaObject::InvokeMetaMethod) {</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>         <span class="keywordflow">if</span> (_id < 13)</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>             qt_static_metacall(<span class="keyword">this</span>, _c, _id, _a);</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>         _id -= 13;</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     }</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>     <span class="keywordflow">return</span> _id;</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span> }</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span> QT_END_MOC_NAMESPACE</div>
-<div class="ttc" id="classMainWindow_html"><div class="ttname"><a href="classMainWindow.html">MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite__gui_2mainwindow_8h_source.html#l00031">mainwindow.h:31</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/build-pkcomposite__gui-gcc-Release_2ui__mainwindow_8h_source.html b/doc/html/build-pkcomposite__gui-gcc-Release_2ui__mainwindow_8h_source.html
deleted file mode 100644
index f764de0..0000000
--- a/doc/html/build-pkcomposite__gui-gcc-Release_2ui__mainwindow_8h_source.html
+++ /dev/null
@@ -1,781 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/build-pkcomposite_gui-gcc-Release/ui_mainwindow.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_b8eb6544d8d9ffceba16909a7b9d17d7.html">build-pkcomposite_gui-gcc-Release</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">ui_mainwindow.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/********************************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">** Form generated from reading UI file 'mainwindow.ui'</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">** Created by: Qt User Interface Compiler version 4.8.6</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">** WARNING! All changes made in this file will be lost when recompiling UI file!</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">********************************************************************************/</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> </div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="preprocessor">#ifndef UI_MAINWINDOW_H</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="preprocessor"></span><span class="preprocessor">#define UI_MAINWINDOW_H</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="preprocessor">#include <QtCore/QVariant></span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="preprocessor">#include <QtGui/QAction></span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="preprocessor">#include <QtGui/QApplication></span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor">#include <QtGui/QButtonGroup></span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor">#include <QtGui/QCheckBox></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include <QtGui/QComboBox></span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include <QtGui/QGridLayout></span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include <QtGui/QGroupBox></span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <QtGui/QHBoxLayout></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <QtGui/QHeaderView></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <QtGui/QLabel></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <QtGui/QLineEdit></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <QtGui/QListWidget></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include <QtGui/QMainWindow></span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include <QtGui/QMenu></span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include <QtGui/QMenuBar></span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include <QtGui/QPlainTextEdit></span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include <QtGui/QSpacerItem></span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include <QtGui/QStatusBar></span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="preprocessor">#include <QtGui/QTabWidget></span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="preprocessor">#include <QtGui/QToolBar></span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="preprocessor">#include <QtGui/QToolButton></span></div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="preprocessor">#include <QtGui/QVBoxLayout></span></div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="preprocessor">#include <QtGui/QWidget></span></div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> </div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> QT_BEGIN_NAMESPACE</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="keyword">class </span><a class="code" href="classUi__MainWindow.html">Ui_MainWindow</a></div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> {</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     QAction *actionInput_image;</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     QAction *actionOutput_image;</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     QAction *actionQuit;</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     QAction *actionSelection_Info_file;</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     QAction *actionExtent;</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     QWidget *centralWidget;</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     QVBoxLayout *verticalLayout;</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     QTabWidget *tabWidget;</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     QWidget *tab;</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     QVBoxLayout *verticalLayout_2;</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     QGridLayout *gridLayout_2;</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     QSpacerItem *horizontalSpacer_3;</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     QListWidget *listWidget_input;</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     QLabel *label;</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     QToolButton *toolButton_input;</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     QLineEdit *lry;</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     QLineEdit *uly;</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     QLabel *label_2;</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     QSpacerItem *horizontalSpacer_2;</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     QLineEdit *lrx;</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     QLineEdit *ulx;</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     QLabel *label_4;</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     QLineEdit *extent;</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     QToolButton *toolButton_extent;</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     QWidget *tab_2;</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>     QGridLayout *gridLayout_4;</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     QSpacerItem *verticalSpacer_3;</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     QComboBox *resample;</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     QLabel *label_18;</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     QLabel *label_17;</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>     QComboBox *crule;</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>     QLabel *label_19;</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>     QLineEdit *cband;</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>     QGroupBox *groupBox;</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>     QGridLayout *gridLayout_3;</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>     QLabel *label_21;</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>     QLineEdit *srcnodata;</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>     QLabel *label_23;</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>     QLabel *label_22;</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>     QLineEdit *min;</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     QLineEdit *max;</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     QLabel *label_20;</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     QLineEdit *bndnodata;</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>     QSpacerItem *horizontalSpacer_4;</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>     QSpacerItem *horizontalSpacer_5;</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>     QWidget *tab_3;</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>     QVBoxLayout *verticalLayout_3;</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     QGridLayout *gridLayout;</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     QSpacerItem *horizontalSpacer_6;</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     QLabel *label_7;</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     QLabel *label_14;</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>     QLineEdit *file;</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>     QLabel *label_10;</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>     QComboBox *oformat;</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     QComboBox *interleaved;</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     QLabel *label_9;</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     QLineEdit *dx;</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     QLabel *label_8;</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     QLabel *label_13;</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     QToolButton *toolButton_ct;</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     QComboBox *compressed;</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     QLabel *label_12;</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     QLineEdit *ct;</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     QLineEdit *output;</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     QToolButton *toolButton_output;</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     QLabel *label_6;</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     QLineEdit *a_srs;</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>     QLabel *label_15;</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>     QLineEdit *dy;</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>     QLabel *label_5;</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>     QCheckBox *tiled;</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     QComboBox *otype;</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     QLabel *label_11;</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     QLineEdit *dstnodata;</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     QToolButton *toolButton_file;</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     QLabel *label_3;</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     QWidget *tab_4;</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>     QVBoxLayout *verticalLayout_5;</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>     QVBoxLayout *verticalLayout_4;</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>     QLabel *label_24;</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>     QLineEdit *commandLineEdit;</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>     QLabel *label_25;</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     QPlainTextEdit *consoleEdit;</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>     QSpacerItem *verticalSpacer_2;</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     QHBoxLayout *horizontalLayout_2;</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>     QToolButton *toolButton_Run;</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>     QSpacerItem *horizontalSpacer;</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>     QToolButton *toolButton_defaults;</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>     QMenuBar *menuBar;</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>     QMenu *menuFile;</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>     QToolBar *mainToolBar;</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>     QStatusBar *statusBar;</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span> </div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>     <span class="keywordtype">void</span> setupUi(QMainWindow *<a class="code" href="classMainWindow.html">MainWindow</a>)</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>     {</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>         <span class="keywordflow">if</span> (MainWindow->objectName().isEmpty())</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>             MainWindow->setObjectName(QString::fromUtf8(<span class="stringliteral">"MainWindow"</span>));</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>         MainWindow->resize(798, 859);</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>         actionInput_image = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>         actionInput_image->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionInput_image"</span>));</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>         actionOutput_image = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>         actionOutput_image->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionOutput_image"</span>));</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>         actionQuit = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>         actionQuit->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionQuit"</span>));</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>         actionSelection_Info_file = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>         actionSelection_Info_file->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionSelection_Info_file"</span>));</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>         actionExtent = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>         actionExtent->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionExtent"</span>));</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>         centralWidget = <span class="keyword">new</span> QWidget(MainWindow);</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>         centralWidget->setObjectName(QString::fromUtf8(<span class="stringliteral">"centralWidget"</span>));</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>         verticalLayout = <span class="keyword">new</span> QVBoxLayout(centralWidget);</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>         verticalLayout->setSpacing(6);</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>         verticalLayout->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>         verticalLayout->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout"</span>));</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>         tabWidget = <span class="keyword">new</span> QTabWidget(centralWidget);</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>         tabWidget->setObjectName(QString::fromUtf8(<span class="stringliteral">"tabWidget"</span>));</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>         tab = <span class="keyword">new</span> QWidget();</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>         tab->setObjectName(QString::fromUtf8(<span class="stringliteral">"tab"</span>));</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>         verticalLayout_2 = <span class="keyword">new</span> QVBoxLayout(tab);</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>         verticalLayout_2->setSpacing(6);</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>         verticalLayout_2->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>         verticalLayout_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout_2"</span>));</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>         gridLayout_2 = <span class="keyword">new</span> QGridLayout();</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>         gridLayout_2->setSpacing(6);</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>         gridLayout_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"gridLayout_2"</span>));</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>         horizontalSpacer_3 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span> </div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>         gridLayout_2->addItem(horizontalSpacer_3, 1, 3, 1, 1);</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span> </div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>         listWidget_input = <span class="keyword">new</span> QListWidget(tab);</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>         listWidget_input->setObjectName(QString::fromUtf8(<span class="stringliteral">"listWidget_input"</span>));</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span> </div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>         gridLayout_2->addWidget(listWidget_input, 0, 2, 1, 1);</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span> </div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>         label = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>         label->setObjectName(QString::fromUtf8(<span class="stringliteral">"label"</span>));</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span> </div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>         gridLayout_2->addWidget(label, 0, 0, 1, 1);</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span> </div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>         toolButton_input = <span class="keyword">new</span> QToolButton(tab);</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>         toolButton_input->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_input"</span>));</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span> </div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>         gridLayout_2->addWidget(toolButton_input, 0, 1, 1, 1);</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span> </div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>         lry = <span class="keyword">new</span> QLineEdit(tab);</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>         lry->setObjectName(QString::fromUtf8(<span class="stringliteral">"lry"</span>));</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span> </div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>         gridLayout_2->addWidget(lry, 3, 2, 1, 1);</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span> </div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>         uly = <span class="keyword">new</span> QLineEdit(tab);</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>         uly->setObjectName(QString::fromUtf8(<span class="stringliteral">"uly"</span>));</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span> </div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>         gridLayout_2->addWidget(uly, 1, 2, 1, 1);</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span> </div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>         label_2 = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>         label_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_2"</span>));</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span> </div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>         gridLayout_2->addWidget(label_2, 1, 0, 1, 1);</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span> </div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>         horizontalSpacer_2 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span> </div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>         gridLayout_2->addItem(horizontalSpacer_2, 1, 1, 1, 1);</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span> </div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>         lrx = <span class="keyword">new</span> QLineEdit(tab);</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>         lrx->setObjectName(QString::fromUtf8(<span class="stringliteral">"lrx"</span>));</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span> </div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>         gridLayout_2->addWidget(lrx, 2, 3, 1, 1);</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span> </div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>         ulx = <span class="keyword">new</span> QLineEdit(tab);</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>         ulx->setObjectName(QString::fromUtf8(<span class="stringliteral">"ulx"</span>));</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span> </div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>         gridLayout_2->addWidget(ulx, 2, 1, 1, 1);</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span> </div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>         label_4 = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>         label_4->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_4"</span>));</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span> </div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>         gridLayout_2->addWidget(label_4, 4, 0, 1, 1);</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span> </div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>         extent = <span class="keyword">new</span> QLineEdit(tab);</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>         extent->setObjectName(QString::fromUtf8(<span class="stringliteral">"extent"</span>));</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span> </div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>         gridLayout_2->addWidget(extent, 4, 1, 1, 1);</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span> </div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>         toolButton_extent = <span class="keyword">new</span> QToolButton(tab);</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>         toolButton_extent->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_extent"</span>));</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span> </div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>         gridLayout_2->addWidget(toolButton_extent, 4, 2, 1, 1);</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span> </div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span> </div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>         verticalLayout_2->addLayout(gridLayout_2);</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span> </div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>         tabWidget->addTab(tab, QString());</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>         tab_2 = <span class="keyword">new</span> QWidget();</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>         tab_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"tab_2"</span>));</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>         gridLayout_4 = <span class="keyword">new</span> QGridLayout(tab_2);</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>         gridLayout_4->setSpacing(6);</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>         gridLayout_4->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>         gridLayout_4->setObjectName(QString::fromUtf8(<span class="stringliteral">"gridLayout_4"</span>));</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>         verticalSpacer_3 = <span class="keyword">new</span> QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span> </div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>         gridLayout_4->addItem(verticalSpacer_3, 2, 0, 1, 1);</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span> </div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>         resample = <span class="keyword">new</span> QComboBox(tab_2);</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>         resample->setObjectName(QString::fromUtf8(<span class="stringliteral">"resample"</span>));</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span> </div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>         gridLayout_4->addWidget(resample, 0, 1, 1, 1);</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span> </div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>         label_18 = <span class="keyword">new</span> QLabel(tab_2);</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>         label_18->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_18"</span>));</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span> </div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>         gridLayout_4->addWidget(label_18, 1, 0, 1, 1);</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span> </div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>         label_17 = <span class="keyword">new</span> QLabel(tab_2);</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>         label_17->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_17"</span>));</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span> </div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>         gridLayout_4->addWidget(label_17, 0, 0, 1, 1);</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span> </div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>         crule = <span class="keyword">new</span> QComboBox(tab_2);</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>         crule->setObjectName(QString::fromUtf8(<span class="stringliteral">"crule"</span>));</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span> </div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>         gridLayout_4->addWidget(crule, 1, 1, 1, 1);</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span> </div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>         label_19 = <span class="keyword">new</span> QLabel(tab_2);</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>         label_19->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_19"</span>));</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span> </div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>         gridLayout_4->addWidget(label_19, 1, 3, 1, 1);</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span> </div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>         cband = <span class="keyword">new</span> QLineEdit(tab_2);</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>         cband->setObjectName(QString::fromUtf8(<span class="stringliteral">"cband"</span>));</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span> </div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>         gridLayout_4->addWidget(cband, 1, 4, 1, 1);</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span> </div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>         groupBox = <span class="keyword">new</span> QGroupBox(tab_2);</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>         groupBox->setObjectName(QString::fromUtf8(<span class="stringliteral">"groupBox"</span>));</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>         gridLayout_3 = <span class="keyword">new</span> QGridLayout(groupBox);</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>         gridLayout_3->setSpacing(6);</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>         gridLayout_3->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>         gridLayout_3->setObjectName(QString::fromUtf8(<span class="stringliteral">"gridLayout_3"</span>));</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>         label_21 = <span class="keyword">new</span> QLabel(groupBox);</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>         label_21->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_21"</span>));</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span> </div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>         gridLayout_3->addWidget(label_21, 1, 0, 1, 1);</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span> </div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>         srcnodata = <span class="keyword">new</span> QLineEdit(groupBox);</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>         srcnodata->setObjectName(QString::fromUtf8(<span class="stringliteral">"srcnodata"</span>));</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span> </div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>         gridLayout_3->addWidget(srcnodata, 1, 1, 1, 2);</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span> </div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>         label_23 = <span class="keyword">new</span> QLabel(groupBox);</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>         label_23->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_23"</span>));</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span> </div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>         gridLayout_3->addWidget(label_23, 3, 0, 1, 1);</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span> </div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>         label_22 = <span class="keyword">new</span> QLabel(groupBox);</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>         label_22->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_22"</span>));</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span> </div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>         gridLayout_3->addWidget(label_22, 2, 0, 1, 1);</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span> </div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>         min = <span class="keyword">new</span> QLineEdit(groupBox);</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>         min->setObjectName(QString::fromUtf8(<span class="stringliteral">"min"</span>));</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span> </div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>         gridLayout_3->addWidget(min, 2, 1, 1, 2);</div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span> </div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>         max = <span class="keyword">new</span> QLineEdit(groupBox);</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>         max->setObjectName(QString::fromUtf8(<span class="stringliteral">"max"</span>));</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span> </div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>         gridLayout_3->addWidget(max, 3, 1, 1, 1);</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span> </div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>         label_20 = <span class="keyword">new</span> QLabel(groupBox);</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>         label_20->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_20"</span>));</div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span> </div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>         gridLayout_3->addWidget(label_20, 0, 0, 1, 1);</div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span> </div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>         bndnodata = <span class="keyword">new</span> QLineEdit(groupBox);</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>         bndnodata->setObjectName(QString::fromUtf8(<span class="stringliteral">"bndnodata"</span>));</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span> </div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>         gridLayout_3->addWidget(bndnodata, 0, 1, 1, 1);</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span> </div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span> </div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>         gridLayout_4->addWidget(groupBox, 3, 0, 1, 4);</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span> </div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>         horizontalSpacer_4 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span> </div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>         gridLayout_4->addItem(horizontalSpacer_4, 1, 5, 1, 1);</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span> </div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>         horizontalSpacer_5 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span> </div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>         gridLayout_4->addItem(horizontalSpacer_5, 1, 2, 1, 1);</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span> </div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>         tabWidget->addTab(tab_2, QString());</div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>         tab_3 = <span class="keyword">new</span> QWidget();</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>         tab_3->setObjectName(QString::fromUtf8(<span class="stringliteral">"tab_3"</span>));</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>         verticalLayout_3 = <span class="keyword">new</span> QVBoxLayout(tab_3);</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>         verticalLayout_3->setSpacing(6);</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>         verticalLayout_3->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>         verticalLayout_3->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout_3"</span>));</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>         gridLayout = <span class="keyword">new</span> QGridLayout();</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>         gridLayout->setSpacing(6);</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>         gridLayout->setObjectName(QString::fromUtf8(<span class="stringliteral">"gridLayout"</span>));</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>         horizontalSpacer_6 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span> </div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>         gridLayout->addItem(horizontalSpacer_6, 7, 3, 1, 1);</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span> </div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>         label_7 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>         label_7->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_7"</span>));</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span> </div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>         gridLayout->addWidget(label_7, 4, 0, 1, 1);</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span> </div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>         label_14 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>         label_14->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_14"</span>));</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span> </div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>         gridLayout->addWidget(label_14, 8, 0, 1, 1);</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span> </div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>         file = <span class="keyword">new</span> QLineEdit(tab_3);</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>         file->setObjectName(QString::fromUtf8(<span class="stringliteral">"file"</span>));</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span> </div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>         gridLayout->addWidget(file, 9, 1, 1, 1);</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span> </div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>         label_10 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>         label_10->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_10"</span>));</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span> </div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>         gridLayout->addWidget(label_10, 6, 2, 1, 1);</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span> </div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>         oformat = <span class="keyword">new</span> QComboBox(tab_3);</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>         oformat->setObjectName(QString::fromUtf8(<span class="stringliteral">"oformat"</span>));</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span> </div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>         gridLayout->addWidget(oformat, 4, 1, 1, 1);</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span> </div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>         interleaved = <span class="keyword">new</span> QComboBox(tab_3);</div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>         interleaved->setObjectName(QString::fromUtf8(<span class="stringliteral">"interleaved"</span>));</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span> </div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>         gridLayout->addWidget(interleaved, 7, 1, 1, 1);</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span> </div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>         label_9 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>         label_9->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_9"</span>));</div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span> </div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>         gridLayout->addWidget(label_9, 6, 0, 1, 1);</div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span> </div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>         dx = <span class="keyword">new</span> QLineEdit(tab_3);</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>         dx->setObjectName(QString::fromUtf8(<span class="stringliteral">"dx"</span>));</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span> </div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>         gridLayout->addWidget(dx, 6, 1, 1, 1);</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span> </div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>         label_8 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>         label_8->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_8"</span>));</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span> </div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>         gridLayout->addWidget(label_8, 5, 0, 1, 1);</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span> </div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>         label_13 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>         label_13->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_13"</span>));</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span> </div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>         gridLayout->addWidget(label_13, 7, 4, 1, 1);</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span> </div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>         toolButton_ct = <span class="keyword">new</span> QToolButton(tab_3);</div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>         toolButton_ct->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_ct"</span>));</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span> </div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>         gridLayout->addWidget(toolButton_ct, 5, 2, 1, 1);</div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span> </div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>         compressed = <span class="keyword">new</span> QComboBox(tab_3);</div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>         compressed->setObjectName(QString::fromUtf8(<span class="stringliteral">"compressed"</span>));</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span> </div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span>         gridLayout->addWidget(compressed, 7, 5, 1, 1);</div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span> </div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>         label_12 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>         label_12->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_12"</span>));</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span> </div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>         gridLayout->addWidget(label_12, 7, 0, 1, 1);</div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span> </div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>         ct = <span class="keyword">new</span> QLineEdit(tab_3);</div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>         ct->setObjectName(QString::fromUtf8(<span class="stringliteral">"ct"</span>));</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span> </div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>         gridLayout->addWidget(ct, 5, 1, 1, 1);</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span> </div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>         output = <span class="keyword">new</span> QLineEdit(tab_3);</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>         output->setObjectName(QString::fromUtf8(<span class="stringliteral">"output"</span>));</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span> </div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>         gridLayout->addWidget(output, 1, 1, 1, 1);</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span> </div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>         toolButton_output = <span class="keyword">new</span> QToolButton(tab_3);</div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>         toolButton_output->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_output"</span>));</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span> </div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>         gridLayout->addWidget(toolButton_output, 1, 2, 1, 1);</div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span> </div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span>         label_6 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>         label_6->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_6"</span>));</div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span> </div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span>         gridLayout->addWidget(label_6, 3, 0, 1, 1);</div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span> </div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span>         a_srs = <span class="keyword">new</span> QLineEdit(tab_3);</div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span>         a_srs->setObjectName(QString::fromUtf8(<span class="stringliteral">"a_srs"</span>));</div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span> </div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span>         gridLayout->addWidget(a_srs, 2, 1, 1, 1);</div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span> </div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>         label_15 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>         label_15->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_15"</span>));</div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span> </div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span>         gridLayout->addWidget(label_15, 9, 0, 1, 1);</div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span> </div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span>         dy = <span class="keyword">new</span> QLineEdit(tab_3);</div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span>         dy->setObjectName(QString::fromUtf8(<span class="stringliteral">"dy"</span>));</div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span> </div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span>         gridLayout->addWidget(dy, 6, 4, 1, 1);</div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span> </div>
-<div class="line"><a name="l00445"></a><span class="lineno">  445</span>         label_5 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00446"></a><span class="lineno">  446</span>         label_5->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_5"</span>));</div>
-<div class="line"><a name="l00447"></a><span class="lineno">  447</span> </div>
-<div class="line"><a name="l00448"></a><span class="lineno">  448</span>         gridLayout->addWidget(label_5, 2, 0, 1, 1);</div>
-<div class="line"><a name="l00449"></a><span class="lineno">  449</span> </div>
-<div class="line"><a name="l00450"></a><span class="lineno">  450</span>         tiled = <span class="keyword">new</span> QCheckBox(tab_3);</div>
-<div class="line"><a name="l00451"></a><span class="lineno">  451</span>         tiled->setObjectName(QString::fromUtf8(<span class="stringliteral">"tiled"</span>));</div>
-<div class="line"><a name="l00452"></a><span class="lineno">  452</span> </div>
-<div class="line"><a name="l00453"></a><span class="lineno">  453</span>         gridLayout->addWidget(tiled, 7, 2, 1, 1);</div>
-<div class="line"><a name="l00454"></a><span class="lineno">  454</span> </div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span>         otype = <span class="keyword">new</span> QComboBox(tab_3);</div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</span>         otype->setObjectName(QString::fromUtf8(<span class="stringliteral">"otype"</span>));</div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span> </div>
-<div class="line"><a name="l00458"></a><span class="lineno">  458</span>         gridLayout->addWidget(otype, 3, 1, 1, 1);</div>
-<div class="line"><a name="l00459"></a><span class="lineno">  459</span> </div>
-<div class="line"><a name="l00460"></a><span class="lineno">  460</span>         label_11 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span>         label_11->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_11"</span>));</div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span> </div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span>         gridLayout->addWidget(label_11, 6, 5, 1, 1);</div>
-<div class="line"><a name="l00464"></a><span class="lineno">  464</span> </div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span>         dstnodata = <span class="keyword">new</span> QLineEdit(tab_3);</div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>         dstnodata->setObjectName(QString::fromUtf8(<span class="stringliteral">"dstnodata"</span>));</div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span> </div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span>         gridLayout->addWidget(dstnodata, 8, 1, 1, 1);</div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span> </div>
-<div class="line"><a name="l00470"></a><span class="lineno">  470</span>         toolButton_file = <span class="keyword">new</span> QToolButton(tab_3);</div>
-<div class="line"><a name="l00471"></a><span class="lineno">  471</span>         toolButton_file->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_file"</span>));</div>
-<div class="line"><a name="l00472"></a><span class="lineno">  472</span> </div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span>         gridLayout->addWidget(toolButton_file, 9, 2, 1, 1);</div>
-<div class="line"><a name="l00474"></a><span class="lineno">  474</span> </div>
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span>         label_3 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00476"></a><span class="lineno">  476</span>         label_3->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_3"</span>));</div>
-<div class="line"><a name="l00477"></a><span class="lineno">  477</span> </div>
-<div class="line"><a name="l00478"></a><span class="lineno">  478</span>         gridLayout->addWidget(label_3, 1, 0, 1, 1);</div>
-<div class="line"><a name="l00479"></a><span class="lineno">  479</span> </div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span> </div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span>         verticalLayout_3->addLayout(gridLayout);</div>
-<div class="line"><a name="l00482"></a><span class="lineno">  482</span> </div>
-<div class="line"><a name="l00483"></a><span class="lineno">  483</span>         tabWidget->addTab(tab_3, QString());</div>
-<div class="line"><a name="l00484"></a><span class="lineno">  484</span>         tab_4 = <span class="keyword">new</span> QWidget();</div>
-<div class="line"><a name="l00485"></a><span class="lineno">  485</span>         tab_4->setObjectName(QString::fromUtf8(<span class="stringliteral">"tab_4"</span>));</div>
-<div class="line"><a name="l00486"></a><span class="lineno">  486</span>         verticalLayout_5 = <span class="keyword">new</span> QVBoxLayout(tab_4);</div>
-<div class="line"><a name="l00487"></a><span class="lineno">  487</span>         verticalLayout_5->setSpacing(6);</div>
-<div class="line"><a name="l00488"></a><span class="lineno">  488</span>         verticalLayout_5->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00489"></a><span class="lineno">  489</span>         verticalLayout_5->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout_5"</span>));</div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span>         verticalLayout_4 = <span class="keyword">new</span> QVBoxLayout();</div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span>         verticalLayout_4->setSpacing(6);</div>
-<div class="line"><a name="l00492"></a><span class="lineno">  492</span>         verticalLayout_4->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout_4"</span>));</div>
-<div class="line"><a name="l00493"></a><span class="lineno">  493</span>         label_24 = <span class="keyword">new</span> QLabel(tab_4);</div>
-<div class="line"><a name="l00494"></a><span class="lineno">  494</span>         label_24->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_24"</span>));</div>
-<div class="line"><a name="l00495"></a><span class="lineno">  495</span> </div>
-<div class="line"><a name="l00496"></a><span class="lineno">  496</span>         verticalLayout_4->addWidget(label_24);</div>
-<div class="line"><a name="l00497"></a><span class="lineno">  497</span> </div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span>         commandLineEdit = <span class="keyword">new</span> QLineEdit(tab_4);</div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span>         commandLineEdit->setObjectName(QString::fromUtf8(<span class="stringliteral">"commandLineEdit"</span>));</div>
-<div class="line"><a name="l00500"></a><span class="lineno">  500</span> </div>
-<div class="line"><a name="l00501"></a><span class="lineno">  501</span>         verticalLayout_4->addWidget(commandLineEdit);</div>
-<div class="line"><a name="l00502"></a><span class="lineno">  502</span> </div>
-<div class="line"><a name="l00503"></a><span class="lineno">  503</span>         label_25 = <span class="keyword">new</span> QLabel(tab_4);</div>
-<div class="line"><a name="l00504"></a><span class="lineno">  504</span>         label_25->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_25"</span>));</div>
-<div class="line"><a name="l00505"></a><span class="lineno">  505</span> </div>
-<div class="line"><a name="l00506"></a><span class="lineno">  506</span>         verticalLayout_4->addWidget(label_25);</div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span> </div>
-<div class="line"><a name="l00508"></a><span class="lineno">  508</span>         consoleEdit = <span class="keyword">new</span> QPlainTextEdit(tab_4);</div>
-<div class="line"><a name="l00509"></a><span class="lineno">  509</span>         consoleEdit->setObjectName(QString::fromUtf8(<span class="stringliteral">"consoleEdit"</span>));</div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span> </div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span>         verticalLayout_4->addWidget(consoleEdit);</div>
-<div class="line"><a name="l00512"></a><span class="lineno">  512</span> </div>
-<div class="line"><a name="l00513"></a><span class="lineno">  513</span> </div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span>         verticalLayout_5->addLayout(verticalLayout_4);</div>
-<div class="line"><a name="l00515"></a><span class="lineno">  515</span> </div>
-<div class="line"><a name="l00516"></a><span class="lineno">  516</span>         tabWidget->addTab(tab_4, QString());</div>
-<div class="line"><a name="l00517"></a><span class="lineno">  517</span> </div>
-<div class="line"><a name="l00518"></a><span class="lineno">  518</span>         verticalLayout->addWidget(tabWidget);</div>
-<div class="line"><a name="l00519"></a><span class="lineno">  519</span> </div>
-<div class="line"><a name="l00520"></a><span class="lineno">  520</span>         verticalSpacer_2 = <span class="keyword">new</span> QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);</div>
-<div class="line"><a name="l00521"></a><span class="lineno">  521</span> </div>
-<div class="line"><a name="l00522"></a><span class="lineno">  522</span>         verticalLayout->addItem(verticalSpacer_2);</div>
-<div class="line"><a name="l00523"></a><span class="lineno">  523</span> </div>
-<div class="line"><a name="l00524"></a><span class="lineno">  524</span>         horizontalLayout_2 = <span class="keyword">new</span> QHBoxLayout();</div>
-<div class="line"><a name="l00525"></a><span class="lineno">  525</span>         horizontalLayout_2->setSpacing(6);</div>
-<div class="line"><a name="l00526"></a><span class="lineno">  526</span>         horizontalLayout_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"horizontalLayout_2"</span>));</div>
-<div class="line"><a name="l00527"></a><span class="lineno">  527</span>         toolButton_Run = <span class="keyword">new</span> QToolButton(centralWidget);</div>
-<div class="line"><a name="l00528"></a><span class="lineno">  528</span>         toolButton_Run->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_Run"</span>));</div>
-<div class="line"><a name="l00529"></a><span class="lineno">  529</span> </div>
-<div class="line"><a name="l00530"></a><span class="lineno">  530</span>         horizontalLayout_2->addWidget(toolButton_Run);</div>
-<div class="line"><a name="l00531"></a><span class="lineno">  531</span> </div>
-<div class="line"><a name="l00532"></a><span class="lineno">  532</span>         horizontalSpacer = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00533"></a><span class="lineno">  533</span> </div>
-<div class="line"><a name="l00534"></a><span class="lineno">  534</span>         horizontalLayout_2->addItem(horizontalSpacer);</div>
-<div class="line"><a name="l00535"></a><span class="lineno">  535</span> </div>
-<div class="line"><a name="l00536"></a><span class="lineno">  536</span>         toolButton_defaults = <span class="keyword">new</span> QToolButton(centralWidget);</div>
-<div class="line"><a name="l00537"></a><span class="lineno">  537</span>         toolButton_defaults->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_defaults"</span>));</div>
-<div class="line"><a name="l00538"></a><span class="lineno">  538</span> </div>
-<div class="line"><a name="l00539"></a><span class="lineno">  539</span>         horizontalLayout_2->addWidget(toolButton_defaults);</div>
-<div class="line"><a name="l00540"></a><span class="lineno">  540</span> </div>
-<div class="line"><a name="l00541"></a><span class="lineno">  541</span> </div>
-<div class="line"><a name="l00542"></a><span class="lineno">  542</span>         verticalLayout->addLayout(horizontalLayout_2);</div>
-<div class="line"><a name="l00543"></a><span class="lineno">  543</span> </div>
-<div class="line"><a name="l00544"></a><span class="lineno">  544</span>         MainWindow->setCentralWidget(centralWidget);</div>
-<div class="line"><a name="l00545"></a><span class="lineno">  545</span>         menuBar = <span class="keyword">new</span> QMenuBar(MainWindow);</div>
-<div class="line"><a name="l00546"></a><span class="lineno">  546</span>         menuBar->setObjectName(QString::fromUtf8(<span class="stringliteral">"menuBar"</span>));</div>
-<div class="line"><a name="l00547"></a><span class="lineno">  547</span>         menuBar->setGeometry(QRect(0, 0, 798, 25));</div>
-<div class="line"><a name="l00548"></a><span class="lineno">  548</span>         menuFile = <span class="keyword">new</span> QMenu(menuBar);</div>
-<div class="line"><a name="l00549"></a><span class="lineno">  549</span>         menuFile->setObjectName(QString::fromUtf8(<span class="stringliteral">"menuFile"</span>));</div>
-<div class="line"><a name="l00550"></a><span class="lineno">  550</span>         MainWindow->setMenuBar(menuBar);</div>
-<div class="line"><a name="l00551"></a><span class="lineno">  551</span>         mainToolBar = <span class="keyword">new</span> QToolBar(MainWindow);</div>
-<div class="line"><a name="l00552"></a><span class="lineno">  552</span>         mainToolBar->setObjectName(QString::fromUtf8(<span class="stringliteral">"mainToolBar"</span>));</div>
-<div class="line"><a name="l00553"></a><span class="lineno">  553</span>         MainWindow->addToolBar(Qt::TopToolBarArea, mainToolBar);</div>
-<div class="line"><a name="l00554"></a><span class="lineno">  554</span>         statusBar = <span class="keyword">new</span> QStatusBar(MainWindow);</div>
-<div class="line"><a name="l00555"></a><span class="lineno">  555</span>         statusBar->setObjectName(QString::fromUtf8(<span class="stringliteral">"statusBar"</span>));</div>
-<div class="line"><a name="l00556"></a><span class="lineno">  556</span>         MainWindow->setStatusBar(statusBar);</div>
-<div class="line"><a name="l00557"></a><span class="lineno">  557</span>         QWidget::setTabOrder(toolButton_input, uly);</div>
-<div class="line"><a name="l00558"></a><span class="lineno">  558</span>         QWidget::setTabOrder(uly, ulx);</div>
-<div class="line"><a name="l00559"></a><span class="lineno">  559</span>         QWidget::setTabOrder(ulx, lrx);</div>
-<div class="line"><a name="l00560"></a><span class="lineno">  560</span>         QWidget::setTabOrder(lrx, lry);</div>
-<div class="line"><a name="l00561"></a><span class="lineno">  561</span>         QWidget::setTabOrder(lry, extent);</div>
-<div class="line"><a name="l00562"></a><span class="lineno">  562</span>         QWidget::setTabOrder(extent, toolButton_extent);</div>
-<div class="line"><a name="l00563"></a><span class="lineno">  563</span>         QWidget::setTabOrder(toolButton_extent, resample);</div>
-<div class="line"><a name="l00564"></a><span class="lineno">  564</span>         QWidget::setTabOrder(resample, crule);</div>
-<div class="line"><a name="l00565"></a><span class="lineno">  565</span>         QWidget::setTabOrder(crule, cband);</div>
-<div class="line"><a name="l00566"></a><span class="lineno">  566</span>         QWidget::setTabOrder(cband, bndnodata);</div>
-<div class="line"><a name="l00567"></a><span class="lineno">  567</span>         QWidget::setTabOrder(bndnodata, srcnodata);</div>
-<div class="line"><a name="l00568"></a><span class="lineno">  568</span>         QWidget::setTabOrder(srcnodata, min);</div>
-<div class="line"><a name="l00569"></a><span class="lineno">  569</span>         QWidget::setTabOrder(min, max);</div>
-<div class="line"><a name="l00570"></a><span class="lineno">  570</span>         QWidget::setTabOrder(max, output);</div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span>         QWidget::setTabOrder(output, toolButton_output);</div>
-<div class="line"><a name="l00572"></a><span class="lineno">  572</span>         QWidget::setTabOrder(toolButton_output, a_srs);</div>
-<div class="line"><a name="l00573"></a><span class="lineno">  573</span>         QWidget::setTabOrder(a_srs, otype);</div>
-<div class="line"><a name="l00574"></a><span class="lineno">  574</span>         QWidget::setTabOrder(otype, oformat);</div>
-<div class="line"><a name="l00575"></a><span class="lineno">  575</span>         QWidget::setTabOrder(oformat, ct);</div>
-<div class="line"><a name="l00576"></a><span class="lineno">  576</span>         QWidget::setTabOrder(ct, toolButton_ct);</div>
-<div class="line"><a name="l00577"></a><span class="lineno">  577</span>         QWidget::setTabOrder(toolButton_ct, dx);</div>
-<div class="line"><a name="l00578"></a><span class="lineno">  578</span>         QWidget::setTabOrder(dx, dy);</div>
-<div class="line"><a name="l00579"></a><span class="lineno">  579</span>         QWidget::setTabOrder(dy, interleaved);</div>
-<div class="line"><a name="l00580"></a><span class="lineno">  580</span>         QWidget::setTabOrder(interleaved, tiled);</div>
-<div class="line"><a name="l00581"></a><span class="lineno">  581</span>         QWidget::setTabOrder(tiled, compressed);</div>
-<div class="line"><a name="l00582"></a><span class="lineno">  582</span>         QWidget::setTabOrder(compressed, dstnodata);</div>
-<div class="line"><a name="l00583"></a><span class="lineno">  583</span>         QWidget::setTabOrder(dstnodata, file);</div>
-<div class="line"><a name="l00584"></a><span class="lineno">  584</span>         QWidget::setTabOrder(file, toolButton_file);</div>
-<div class="line"><a name="l00585"></a><span class="lineno">  585</span>         QWidget::setTabOrder(toolButton_file, toolButton_Run);</div>
-<div class="line"><a name="l00586"></a><span class="lineno">  586</span>         QWidget::setTabOrder(toolButton_Run, toolButton_defaults);</div>
-<div class="line"><a name="l00587"></a><span class="lineno">  587</span>         QWidget::setTabOrder(toolButton_defaults, commandLineEdit);</div>
-<div class="line"><a name="l00588"></a><span class="lineno">  588</span>         QWidget::setTabOrder(commandLineEdit, consoleEdit);</div>
-<div class="line"><a name="l00589"></a><span class="lineno">  589</span>         QWidget::setTabOrder(consoleEdit, listWidget_input);</div>
-<div class="line"><a name="l00590"></a><span class="lineno">  590</span>         QWidget::setTabOrder(listWidget_input, tabWidget);</div>
-<div class="line"><a name="l00591"></a><span class="lineno">  591</span> </div>
-<div class="line"><a name="l00592"></a><span class="lineno">  592</span>         menuBar->addAction(menuFile->menuAction());</div>
-<div class="line"><a name="l00593"></a><span class="lineno">  593</span>         menuFile->addAction(actionInput_image);</div>
-<div class="line"><a name="l00594"></a><span class="lineno">  594</span>         menuFile->addAction(actionExtent);</div>
-<div class="line"><a name="l00595"></a><span class="lineno">  595</span>         menuFile->addAction(actionOutput_image);</div>
-<div class="line"><a name="l00596"></a><span class="lineno">  596</span>         menuFile->addAction(actionSelection_Info_file);</div>
-<div class="line"><a name="l00597"></a><span class="lineno">  597</span>         menuFile->addAction(actionQuit);</div>
-<div class="line"><a name="l00598"></a><span class="lineno">  598</span> </div>
-<div class="line"><a name="l00599"></a><span class="lineno">  599</span>         retranslateUi(MainWindow);</div>
-<div class="line"><a name="l00600"></a><span class="lineno">  600</span> </div>
-<div class="line"><a name="l00601"></a><span class="lineno">  601</span>         tabWidget->setCurrentIndex(3);</div>
-<div class="line"><a name="l00602"></a><span class="lineno">  602</span> </div>
-<div class="line"><a name="l00603"></a><span class="lineno">  603</span> </div>
-<div class="line"><a name="l00604"></a><span class="lineno">  604</span>         QMetaObject::connectSlotsByName(MainWindow);</div>
-<div class="line"><a name="l00605"></a><span class="lineno">  605</span>     } <span class="comment">// setupUi</span></div>
-<div class="line"><a name="l00606"></a><span class="lineno">  606</span> </div>
-<div class="line"><a name="l00607"></a><span class="lineno">  607</span>     <span class="keywordtype">void</span> retranslateUi(QMainWindow *MainWindow)</div>
-<div class="line"><a name="l00608"></a><span class="lineno">  608</span>     {</div>
-<div class="line"><a name="l00609"></a><span class="lineno">  609</span>         MainWindow->setWindowTitle(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"pkcomposite_gui"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00610"></a><span class="lineno">  610</span>         actionInput_image->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Input image(s)"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00611"></a><span class="lineno">  611</span>         actionInput_image->setShortcut(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Alt+I"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00612"></a><span class="lineno">  612</span>         actionOutput_image->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output image"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00613"></a><span class="lineno">  613</span>         actionOutput_image->setShortcut(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Alt+O"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00614"></a><span class="lineno">  614</span>         actionQuit->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Quit"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00615"></a><span class="lineno">  615</span>         actionQuit->setShortcut(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Alt+Q"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00616"></a><span class="lineno">  616</span>         actionSelection_Info_file->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Selection Info file"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00617"></a><span class="lineno">  617</span>         actionSelection_Info_file->setShortcut(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Alt+F"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00618"></a><span class="lineno">  618</span>         actionExtent->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Extent"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00619"></a><span class="lineno">  619</span>         actionExtent->setShortcut(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Alt+E"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00620"></a><span class="lineno">  620</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00621"></a><span class="lineno">  621</span> <span class="preprocessor"></span>        label->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Input raster images</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00622"></a><span class="lineno">  622</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00623"></a><span class="lineno">  623</span> <span class="preprocessor"></span>        label->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Input images"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00624"></a><span class="lineno">  624</span>         toolButton_input->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00625"></a><span class="lineno">  625</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00626"></a><span class="lineno">  626</span> <span class="preprocessor"></span>        label_2->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Provide geographical extent to crop in coordinate reference system of input data</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00627"></a><span class="lineno">  627</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00628"></a><span class="lineno">  628</span> <span class="preprocessor"></span>        label_2->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Geographical extent"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00629"></a><span class="lineno">  629</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00630"></a><span class="lineno">  630</span> <span class="preprocessor"></span>        label_4->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Use an external OGR vector file to define the geographical extent to crop. Coordinate reference systems of input and vector must be identical</p></body></html>"</s [...]
-<div class="line"><a name="l00631"></a><span class="lineno">  631</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00632"></a><span class="lineno">  632</span> <span class="preprocessor"></span>        label_4->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Extent via vector:"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00633"></a><span class="lineno">  633</span>         toolButton_extent->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00634"></a><span class="lineno">  634</span>         tabWidget->setTabText(tabWidget->indexOf(tab), QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Input"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00635"></a><span class="lineno">  635</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00636"></a><span class="lineno">  636</span> <span class="preprocessor"></span>        label_18->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Composite rule for mosaic. Default is overwrite</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00637"></a><span class="lineno">  637</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00638"></a><span class="lineno">  638</span> <span class="preprocessor"></span>        label_18->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Composit rule"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00639"></a><span class="lineno">  639</span>         label_17->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Resample method"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00640"></a><span class="lineno">  640</span>         label_19->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Band used for composit rule"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00641"></a><span class="lineno">  641</span>         groupBox->setTitle(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"nodata values in input"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00642"></a><span class="lineno">  642</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00643"></a><span class="lineno">  643</span> <span class="preprocessor"></span>        label_21->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>invalid value for input image</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00644"></a><span class="lineno">  644</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00645"></a><span class="lineno">  645</span> <span class="preprocessor"></span>        label_21->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"nodata value"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00646"></a><span class="lineno">  646</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00647"></a><span class="lineno">  647</span> <span class="preprocessor"></span>        label_23->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>flag values larger or equal to this value as invalid</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00648"></a><span class="lineno">  648</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00649"></a><span class="lineno">  649</span> <span class="preprocessor"></span>        label_23->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"max value"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00650"></a><span class="lineno">  650</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00651"></a><span class="lineno">  651</span> <span class="preprocessor"></span>        label_22->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>flag values smaller or equal to this value as invalid</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00652"></a><span class="lineno">  652</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00653"></a><span class="lineno">  653</span> <span class="preprocessor"></span>        label_22->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"min value"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00654"></a><span class="lineno">  654</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00655"></a><span class="lineno">  655</span> <span class="preprocessor"></span>        label_20->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Band in input image to check if pixel is valid (used for srcnodata, min and max options)</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00656"></a><span class="lineno">  656</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00657"></a><span class="lineno">  657</span> <span class="preprocessor"></span>        label_20->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"band"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00658"></a><span class="lineno">  658</span>         tabWidget->setTabText(tabWidget->indexOf(tab_2), QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Composit"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00659"></a><span class="lineno">  659</span>         label_7->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output image format"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00660"></a><span class="lineno">  660</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00661"></a><span class="lineno">  661</span> <span class="preprocessor"></span>        label_14->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Nodata value to put in image if out of bounds or if no valid pixel value is found in input images</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00662"></a><span class="lineno">  662</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00663"></a><span class="lineno">  663</span> <span class="preprocessor"></span>        label_14->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output nodata value"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00664"></a><span class="lineno">  664</span>         label_10->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"dx"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00665"></a><span class="lineno">  665</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00666"></a><span class="lineno">  666</span> <span class="preprocessor"></span>        label_9->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Output resolution in x and y distance measure (e.g., meter). Leave empty to read from input data</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00667"></a><span class="lineno">  667</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00668"></a><span class="lineno">  668</span> <span class="preprocessor"></span>        label_9->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output resolution"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00669"></a><span class="lineno">  669</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00670"></a><span class="lineno">  670</span> <span class="preprocessor"></span>        label_8->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Color table must be provided as ASCII text file with five (space delimited) columns:</p><p>value red green blue alpha</p></body></html>"</span>, 0, QAp [...]
-<div class="line"><a name="l00671"></a><span class="lineno">  671</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00672"></a><span class="lineno">  672</span> <span class="preprocessor"></span>        label_8->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Color table (ASCII)"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00673"></a><span class="lineno">  673</span>         label_13->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"compressed"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00674"></a><span class="lineno">  674</span>         toolButton_ct->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00675"></a><span class="lineno">  675</span>         label_12->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Interleaved"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00676"></a><span class="lineno">  676</span>         toolButton_output->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00677"></a><span class="lineno">  677</span>         label_6->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output data type"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00678"></a><span class="lineno">  678</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00679"></a><span class="lineno">  679</span> <span class="preprocessor"></span>        label_15->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Create extra raster file containing information on the selected input file for each pixel</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00680"></a><span class="lineno">  680</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00681"></a><span class="lineno">  681</span> <span class="preprocessor"></span>        label_15->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Ouput info on selected pixels"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00682"></a><span class="lineno">  682</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00683"></a><span class="lineno">  683</span> <span class="preprocessor"></span>        label_5->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Assign projection (e.g., epsg:3035). Notice this will not re-project the image. Use gdalwarp instead.</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00684"></a><span class="lineno">  684</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00685"></a><span class="lineno">  685</span> <span class="preprocessor"></span>        label_5->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Assign projection (EPSG:code)"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00686"></a><span class="lineno">  686</span>         tiled->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Tiled"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00687"></a><span class="lineno">  687</span>         label_11->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"dy"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00688"></a><span class="lineno">  688</span>         toolButton_file->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00689"></a><span class="lineno">  689</span>         label_3->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output image"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00690"></a><span class="lineno">  690</span>         tabWidget->setTabText(tabWidget->indexOf(tab_3), QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00691"></a><span class="lineno">  691</span>         label_24->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Command line"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00692"></a><span class="lineno">  692</span>         label_25->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Console output"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00693"></a><span class="lineno">  693</span>         tabWidget->setTabText(tabWidget->indexOf(tab_4), QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Console"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00694"></a><span class="lineno">  694</span>         toolButton_Run->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Run"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00695"></a><span class="lineno">  695</span>         toolButton_defaults->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Restore defaults"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00696"></a><span class="lineno">  696</span>         menuFile->setTitle(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"File"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00697"></a><span class="lineno">  697</span>     } <span class="comment">// retranslateUi</span></div>
-<div class="line"><a name="l00698"></a><span class="lineno">  698</span> </div>
-<div class="line"><a name="l00699"></a><span class="lineno">  699</span> };</div>
-<div class="line"><a name="l00700"></a><span class="lineno">  700</span> </div>
-<div class="line"><a name="l00701"></a><span class="lineno">  701</span> <span class="keyword">namespace </span>Ui {</div>
-<div class="line"><a name="l00702"></a><span class="lineno">  702</span>     <span class="keyword">class </span>MainWindow: <span class="keyword">public</span> <a class="code" href="classUi__MainWindow.html">Ui_MainWindow</a> {};</div>
-<div class="line"><a name="l00703"></a><span class="lineno">  703</span> } <span class="comment">// namespace Ui</span></div>
-<div class="line"><a name="l00704"></a><span class="lineno">  704</span> </div>
-<div class="line"><a name="l00705"></a><span class="lineno">  705</span> QT_END_NAMESPACE</div>
-<div class="line"><a name="l00706"></a><span class="lineno">  706</span> </div>
-<div class="line"><a name="l00707"></a><span class="lineno">  707</span> <span class="preprocessor">#endif // UI_MAINWINDOW_H</span></div>
-<div class="ttc" id="classUi__MainWindow_html"><div class="ttname"><a href="classUi__MainWindow.html">Ui_MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="build-pkcomposite__gui-gcc-Debug_2ui__mainwindow_8h_source.html#l00039">ui_mainwindow.h:39</a></div></div>
-<div class="ttc" id="classMainWindow_html"><div class="ttname"><a href="classMainWindow.html">MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite__gui_2mainwindow_8h_source.html#l00031">mainwindow.h:31</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/build-pkcrop__gui-gcc-Debug_2moc__mainwindow_8cpp_source.html b/doc/html/build-pkcrop__gui-gcc-Debug_2moc__mainwindow_8cpp_source.html
deleted file mode 100644
index ad5f9fd..0000000
--- a/doc/html/build-pkcrop__gui-gcc-Debug_2moc__mainwindow_8cpp_source.html
+++ /dev/null
@@ -1,206 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/build-pkcrop_gui-gcc-Debug/moc_mainwindow.cpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_0f38b5d14ac73b43e2a48a75f9e70be8.html">build-pkcrop_gui-gcc-Debug</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">moc_mainwindow.cpp</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/****************************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">** Meta object code from reading C++ file 'mainwindow.h'</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">** Created by: The Qt Meta Object Compiler version 63 (Qt 4.8.6)</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">** WARNING! All changes made in this file will be lost!</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">*****************************************************************************/</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> </div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="preprocessor">#include "../pkcrop_gui/mainwindow.h"</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="preprocessor">#if !defined(Q_MOC_OUTPUT_REVISION)</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="preprocessor"></span><span class="preprocessor">#error "The header file 'mainwindow.h' doesn't include <QObject>."</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="preprocessor"></span><span class="preprocessor">#elif Q_MOC_OUTPUT_REVISION != 63</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="preprocessor"></span><span class="preprocessor">#error "This file was generated using the moc from 4.8.6. It"</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="preprocessor"></span><span class="preprocessor">#error "cannot be used with the include files from this version of Qt."</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor"></span><span class="preprocessor">#error "(The moc has changed too much.)"</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> QT_BEGIN_MOC_NAMESPACE</div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="keyword">static</span> <span class="keyword">const</span> uint qt_meta_data_MainWindow[] = {</div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> </div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span>  <span class="comment">// content:</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span>        6,       <span class="comment">// revision</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span>        0,       <span class="comment">// classname</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span>        0,    0, <span class="comment">// classinfo</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span>       15,   14, <span class="comment">// methods</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span>        0,    0, <span class="comment">// properties</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span>        0,    0, <span class="comment">// enums/sets</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span>        0,    0, <span class="comment">// constructors</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span>        0,       <span class="comment">// flags</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>        0,       <span class="comment">// signalCount</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> </div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>  <span class="comment">// slots: signature, parameters, type, tag, flags</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>       12,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>       39,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>       69,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>      100,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>      131,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>      158,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>      186,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>      219,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>      245,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>      273,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>      296,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>      324,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>      344,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>      365,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>      378,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span> </div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>        0        <span class="comment">// eod</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span> };</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span> </div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> qt_meta_stringdata_MainWindow[] = {</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     <span class="stringliteral">"MainWindow\0\0on_actionInput_triggered()\0"</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     <span class="stringliteral">"on_toolButton_input_clicked()\0"</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     <span class="stringliteral">"on_toolButton_extent_clicked()\0"</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <span class="stringliteral">"on_toolButton_output_clicked()\0"</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     <span class="stringliteral">"on_toolButton_ct_clicked()\0"</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     <span class="stringliteral">"on_toolButton_Run_clicked()\0"</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     <span class="stringliteral">"on_toolButton_defaults_clicked()\0"</span></div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     <span class="stringliteral">"on_actionQuit_triggered()\0"</span></div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     <span class="stringliteral">"on_actionOutput_triggered()\0"</span></div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     <span class="stringliteral">"on_autoscale_clicked()\0"</span></div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     <span class="stringliteral">"on_actionExtent_triggered()\0"</span></div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     <span class="stringliteral">"on_manual_clicked()\0on_noscale_clicked()\0"</span></div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     <span class="stringliteral">"deleteItem()\0on_toolButton_clicked()\0"</span></div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span> };</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span> </div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span> <span class="keywordtype">void</span> MainWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, <span class="keywordtype">int</span> _id, <span class="keywordtype">void</span> **_a)</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span> {</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     <span class="keywordflow">if</span> (_c == QMetaObject::InvokeMetaMethod) {</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>         Q_ASSERT(staticMetaObject.cast(_o));</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>         <a class="code" href="classMainWindow.html">MainWindow</a> *_t = <span class="keyword">static_cast<</span><a class="code" href="classMainWindow.html">MainWindow</a> *<span class="keyword">></span>(_o);</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>         <span class="keywordflow">switch</span> (_id) {</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>         <span class="keywordflow">case</span> 0: _t->on_actionInput_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>         <span class="keywordflow">case</span> 1: _t->on_toolButton_input_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>         <span class="keywordflow">case</span> 2: _t->on_toolButton_extent_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>         <span class="keywordflow">case</span> 3: _t->on_toolButton_output_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>         <span class="keywordflow">case</span> 4: _t->on_toolButton_ct_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>         <span class="keywordflow">case</span> 5: _t->on_toolButton_Run_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>         <span class="keywordflow">case</span> 6: _t->on_toolButton_defaults_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>         <span class="keywordflow">case</span> 7: _t->on_actionQuit_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>         <span class="keywordflow">case</span> 8: _t->on_actionOutput_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>         <span class="keywordflow">case</span> 9: _t->on_autoscale_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>         <span class="keywordflow">case</span> 10: _t->on_actionExtent_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>         <span class="keywordflow">case</span> 11: _t->on_manual_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>         <span class="keywordflow">case</span> 12: _t->on_noscale_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>         <span class="keywordflow">case</span> 13: _t->deleteItem(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>         <span class="keywordflow">case</span> 14: _t->on_toolButton_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>         <span class="keywordflow">default</span>: ;</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>         }</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     }</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     Q_UNUSED(_a);</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span> }</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span> </div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span> <span class="keyword">const</span> QMetaObjectExtraData MainWindow::staticMetaObjectExtraData = {</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     0,  qt_static_metacall </div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span> };</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span> </div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span> <span class="keyword">const</span> QMetaObject MainWindow::staticMetaObject = {</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     { &QMainWindow::staticMetaObject, qt_meta_stringdata_MainWindow,</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>       qt_meta_data_MainWindow, &staticMetaObjectExtraData }</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span> };</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span> </div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span> <span class="preprocessor">#ifdef Q_NO_DATA_RELOCATION</span></div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span> <span class="preprocessor"></span><span class="keyword">const</span> QMetaObject &MainWindow::getStaticMetaObject() { <span class="keywordflow">return</span> staticMetaObject; }</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span> <span class="preprocessor">#endif //Q_NO_DATA_RELOCATION</span></div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span> <span class="keyword">const</span> QMetaObject *MainWindow::metaObject()<span class="keyword"> const</span></div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>     <span class="keywordflow">return</span> QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject;</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span> }</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span> </div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span> <span class="keywordtype">void</span> *MainWindow::qt_metacast(<span class="keyword">const</span> <span class="keywordtype">char</span> *_clname)</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span> {</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     <span class="keywordflow">if</span> (!_clname) <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     <span class="keywordflow">if</span> (!strcmp(_clname, qt_meta_stringdata_MainWindow))</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>         <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">void</span>*<span class="keyword">></span>(<span class="keyword">const_cast<</span> <a class="code" href="classMainWindow.html">MainWindow</a>*<span class="keyword">></span>(<span class="keyword">this</span>));</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     <span class="keywordflow">return</span> QMainWindow::qt_metacast(_clname);</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span> }</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span> </div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span> <span class="keywordtype">int</span> MainWindow::qt_metacall(QMetaObject::Call _c, <span class="keywordtype">int</span> _id, <span class="keywordtype">void</span> **_a)</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span> {</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>     _id = QMainWindow::qt_metacall(_c, _id, _a);</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     <span class="keywordflow">if</span> (_id < 0)</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>         <span class="keywordflow">return</span> _id;</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     <span class="keywordflow">if</span> (_c == QMetaObject::InvokeMetaMethod) {</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>         <span class="keywordflow">if</span> (_id < 15)</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>             qt_static_metacall(<span class="keyword">this</span>, _c, _id, _a);</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>         _id -= 15;</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>     }</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>     <span class="keywordflow">return</span> _id;</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span> }</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span> QT_END_MOC_NAMESPACE</div>
-<div class="ttc" id="classMainWindow_html"><div class="ttname"><a href="classMainWindow.html">MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite__gui_2mainwindow_8h_source.html#l00031">mainwindow.h:31</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/build-pkcrop__gui-gcc-Debug_2ui__mainwindow_8h_source.html b/doc/html/build-pkcrop__gui-gcc-Debug_2ui__mainwindow_8h_source.html
deleted file mode 100644
index 9b4e536..0000000
--- a/doc/html/build-pkcrop__gui-gcc-Debug_2ui__mainwindow_8h_source.html
+++ /dev/null
@@ -1,802 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/build-pkcrop_gui-gcc-Debug/ui_mainwindow.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_0f38b5d14ac73b43e2a48a75f9e70be8.html">build-pkcrop_gui-gcc-Debug</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">ui_mainwindow.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/********************************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">** Form generated from reading UI file 'mainwindow.ui'</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">** Created by: Qt User Interface Compiler version 4.8.6</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">** WARNING! All changes made in this file will be lost when recompiling UI file!</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">********************************************************************************/</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> </div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="preprocessor">#ifndef UI_MAINWINDOW_H</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="preprocessor"></span><span class="preprocessor">#define UI_MAINWINDOW_H</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="preprocessor">#include <QtCore/QVariant></span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="preprocessor">#include <QtGui/QAction></span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="preprocessor">#include <QtGui/QApplication></span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor">#include <QtGui/QButtonGroup></span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor">#include <QtGui/QCheckBox></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include <QtGui/QComboBox></span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include <QtGui/QGridLayout></span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include <QtGui/QGroupBox></span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <QtGui/QHBoxLayout></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <QtGui/QHeaderView></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <QtGui/QLabel></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <QtGui/QLineEdit></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <QtGui/QListWidget></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include <QtGui/QMainWindow></span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include <QtGui/QMenu></span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include <QtGui/QMenuBar></span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include <QtGui/QPlainTextEdit></span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include <QtGui/QRadioButton></span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include <QtGui/QSpacerItem></span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="preprocessor">#include <QtGui/QStatusBar></span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="preprocessor">#include <QtGui/QTabWidget></span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="preprocessor">#include <QtGui/QToolBar></span></div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="preprocessor">#include <QtGui/QToolButton></span></div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="preprocessor">#include <QtGui/QVBoxLayout></span></div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="preprocessor">#include <QtGui/QWidget></span></div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> QT_BEGIN_NAMESPACE</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> </div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> <span class="keyword">class </span><a class="code" href="classUi__MainWindow.html">Ui_MainWindow</a></div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> {</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     QAction *actionInput;</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     QAction *actionExtent;</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     QAction *actionOutput;</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     QAction *actionQuit;</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     QWidget *centralWidget;</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     QVBoxLayout *verticalLayout;</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     QTabWidget *tabWidget;</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     QWidget *tab;</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     QVBoxLayout *verticalLayout_2;</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     QGridLayout *gridLayout_2;</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     QLineEdit *uly;</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     QToolButton *toolButton_extent;</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     QSpacerItem *horizontalSpacer_2;</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     QLineEdit *lrx;</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     QLineEdit *lry;</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     QListWidget *listWidget_band;</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     QListWidget *listWidget_input;</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     QSpacerItem *horizontalSpacer_3;</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     QLineEdit *extent;</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     QToolButton *toolButton_input;</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     QLabel *label_2;</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     QLabel *label_4;</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     QLineEdit *ulx;</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     QLabel *label_16;</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>     QLabel *label;</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     QToolButton *toolButton;</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     QWidget *tab_2;</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     QGridLayout *gridLayout_4;</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     QSpacerItem *horizontalSpacer_9;</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>     QComboBox *resample;</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>     QSpacerItem *verticalSpacer;</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>     QLineEdit *dy;</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>     QSpacerItem *verticalSpacer_3;</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>     QLabel *label_9;</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>     QSpacerItem *horizontalSpacer_8;</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>     QGroupBox *groupBox;</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>     QGridLayout *gridLayout_3;</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>     QRadioButton *autoscale;</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>     QLineEdit *offset;</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     QRadioButton *manual;</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     QLabel *label_21;</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     QLabel *label_20;</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>     QRadioButton *noscale;</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>     QLineEdit *scale;</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>     QSpacerItem *horizontalSpacer_4;</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>     QLabel *label_10;</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     QLineEdit *as_from;</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     QLabel *label_11;</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     QLineEdit *as_to;</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     QSpacerItem *horizontalSpacer_11;</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>     QLabel *label_15;</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>     QLineEdit *dx;</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>     QLabel *label_18;</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     QLabel *label_17;</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     QSpacerItem *horizontalSpacer_5;</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     QSpacerItem *horizontalSpacer_10;</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     QWidget *tab_3;</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     QVBoxLayout *verticalLayout_3;</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     QGridLayout *gridLayout;</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     QComboBox *otype;</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     QComboBox *compressed;</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     QLabel *label_6;</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     QLabel *label_5;</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     QToolButton *toolButton_output;</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     QLabel *label_3;</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     QToolButton *toolButton_ct;</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>     QLineEdit *output;</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>     QCheckBox *tiled;</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>     QLabel *label_13;</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>     QLineEdit *a_srs;</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     QLabel *label_7;</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     QLabel *label_14;</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     QLineEdit *nodata;</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     QComboBox *oformat;</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     QLineEdit *ct;</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     QLabel *label_12;</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>     QComboBox *interleaved;</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>     QLabel *label_8;</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>     QSpacerItem *horizontalSpacer_6;</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>     QWidget *tab_4;</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>     QVBoxLayout *verticalLayout_5;</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     QVBoxLayout *verticalLayout_4;</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>     QLabel *label_24;</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     QLineEdit *commandLineEdit;</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>     QLabel *label_25;</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>     QPlainTextEdit *consoleEdit;</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>     QSpacerItem *verticalSpacer_2;</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>     QSpacerItem *horizontalSpacer;</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>     QHBoxLayout *horizontalLayout_2;</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>     QToolButton *toolButton_Run;</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>     QSpacerItem *horizontalSpacer_7;</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>     QToolButton *toolButton_defaults;</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>     QMenuBar *menuBar;</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>     QMenu *menuFile;</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>     QToolBar *mainToolBar;</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>     QStatusBar *statusBar;</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>     QButtonGroup *buttonGroup;</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span> </div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>     <span class="keywordtype">void</span> setupUi(QMainWindow *<a class="code" href="classMainWindow.html">MainWindow</a>)</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>     {</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>         <span class="keywordflow">if</span> (MainWindow->objectName().isEmpty())</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>             MainWindow->setObjectName(QString::fromUtf8(<span class="stringliteral">"MainWindow"</span>));</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>         MainWindow->resize(821, 701);</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>         actionInput = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>         actionInput->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionInput"</span>));</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>         actionExtent = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>         actionExtent->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionExtent"</span>));</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>         actionOutput = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>         actionOutput->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionOutput"</span>));</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>         actionQuit = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>         actionQuit->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionQuit"</span>));</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>         centralWidget = <span class="keyword">new</span> QWidget(MainWindow);</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>         centralWidget->setObjectName(QString::fromUtf8(<span class="stringliteral">"centralWidget"</span>));</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>         verticalLayout = <span class="keyword">new</span> QVBoxLayout(centralWidget);</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>         verticalLayout->setSpacing(6);</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>         verticalLayout->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>         verticalLayout->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout"</span>));</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>         tabWidget = <span class="keyword">new</span> QTabWidget(centralWidget);</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>         tabWidget->setObjectName(QString::fromUtf8(<span class="stringliteral">"tabWidget"</span>));</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>         tab = <span class="keyword">new</span> QWidget();</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>         tab->setObjectName(QString::fromUtf8(<span class="stringliteral">"tab"</span>));</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>         verticalLayout_2 = <span class="keyword">new</span> QVBoxLayout(tab);</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>         verticalLayout_2->setSpacing(6);</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>         verticalLayout_2->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>         verticalLayout_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout_2"</span>));</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>         gridLayout_2 = <span class="keyword">new</span> QGridLayout();</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>         gridLayout_2->setSpacing(6);</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>         gridLayout_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"gridLayout_2"</span>));</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>         uly = <span class="keyword">new</span> QLineEdit(tab);</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>         uly->setObjectName(QString::fromUtf8(<span class="stringliteral">"uly"</span>));</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span> </div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>         gridLayout_2->addWidget(uly, 1, 2, 1, 1);</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span> </div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>         toolButton_extent = <span class="keyword">new</span> QToolButton(tab);</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>         toolButton_extent->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_extent"</span>));</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span> </div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>         gridLayout_2->addWidget(toolButton_extent, 4, 2, 1, 1);</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span> </div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>         horizontalSpacer_2 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span> </div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>         gridLayout_2->addItem(horizontalSpacer_2, 1, 1, 1, 1);</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span> </div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>         lrx = <span class="keyword">new</span> QLineEdit(tab);</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>         lrx->setObjectName(QString::fromUtf8(<span class="stringliteral">"lrx"</span>));</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span> </div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>         gridLayout_2->addWidget(lrx, 2, 4, 1, 1);</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span> </div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>         lry = <span class="keyword">new</span> QLineEdit(tab);</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>         lry->setObjectName(QString::fromUtf8(<span class="stringliteral">"lry"</span>));</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span> </div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>         gridLayout_2->addWidget(lry, 3, 2, 1, 1);</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span> </div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>         listWidget_band = <span class="keyword">new</span> QListWidget(tab);</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>         listWidget_band->setObjectName(QString::fromUtf8(<span class="stringliteral">"listWidget_band"</span>));</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span> </div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>         gridLayout_2->addWidget(listWidget_band, 6, 1, 1, 1);</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span> </div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>         listWidget_input = <span class="keyword">new</span> QListWidget(tab);</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>         listWidget_input->setObjectName(QString::fromUtf8(<span class="stringliteral">"listWidget_input"</span>));</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span> </div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>         gridLayout_2->addWidget(listWidget_input, 0, 1, 1, 1);</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span> </div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>         horizontalSpacer_3 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span> </div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>         gridLayout_2->addItem(horizontalSpacer_3, 1, 4, 1, 1);</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span> </div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>         extent = <span class="keyword">new</span> QLineEdit(tab);</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>         extent->setObjectName(QString::fromUtf8(<span class="stringliteral">"extent"</span>));</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span> </div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>         gridLayout_2->addWidget(extent, 4, 1, 1, 1);</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span> </div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>         toolButton_input = <span class="keyword">new</span> QToolButton(tab);</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>         toolButton_input->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_input"</span>));</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span> </div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>         gridLayout_2->addWidget(toolButton_input, 0, 2, 1, 1);</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span> </div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>         label_2 = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>         label_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_2"</span>));</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span> </div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>         gridLayout_2->addWidget(label_2, 1, 0, 1, 1);</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span> </div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>         label_4 = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>         label_4->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_4"</span>));</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span> </div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>         gridLayout_2->addWidget(label_4, 4, 0, 1, 1);</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span> </div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>         ulx = <span class="keyword">new</span> QLineEdit(tab);</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>         ulx->setObjectName(QString::fromUtf8(<span class="stringliteral">"ulx"</span>));</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span> </div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>         gridLayout_2->addWidget(ulx, 2, 1, 1, 1);</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span> </div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>         label_16 = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>         label_16->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_16"</span>));</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span> </div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>         gridLayout_2->addWidget(label_16, 6, 0, 1, 1);</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span> </div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>         label = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>         label->setObjectName(QString::fromUtf8(<span class="stringliteral">"label"</span>));</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span> </div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>         gridLayout_2->addWidget(label, 0, 0, 1, 1);</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span> </div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>         toolButton = <span class="keyword">new</span> QToolButton(tab);</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>         toolButton->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton"</span>));</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span> </div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>         gridLayout_2->addWidget(toolButton, 0, 3, 1, 1);</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span> </div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span> </div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>         verticalLayout_2->addLayout(gridLayout_2);</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span> </div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>         tabWidget->addTab(tab, QString());</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>         tab_2 = <span class="keyword">new</span> QWidget();</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>         tab_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"tab_2"</span>));</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>         gridLayout_4 = <span class="keyword">new</span> QGridLayout(tab_2);</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>         gridLayout_4->setSpacing(6);</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>         gridLayout_4->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>         gridLayout_4->setObjectName(QString::fromUtf8(<span class="stringliteral">"gridLayout_4"</span>));</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>         horizontalSpacer_9 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span> </div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>         gridLayout_4->addItem(horizontalSpacer_9, 1, 9, 1, 1);</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span> </div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>         resample = <span class="keyword">new</span> QComboBox(tab_2);</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>         resample->setObjectName(QString::fromUtf8(<span class="stringliteral">"resample"</span>));</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span> </div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>         gridLayout_4->addWidget(resample, 0, 1, 1, 1);</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span> </div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>         verticalSpacer = <span class="keyword">new</span> QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span> </div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>         gridLayout_4->addItem(verticalSpacer, 2, 4, 1, 1);</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span> </div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>         dy = <span class="keyword">new</span> QLineEdit(tab_2);</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>         dy->setObjectName(QString::fromUtf8(<span class="stringliteral">"dy"</span>));</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span> </div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>         gridLayout_4->addWidget(dy, 1, 4, 1, 1);</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span> </div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>         verticalSpacer_3 = <span class="keyword">new</span> QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span> </div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>         gridLayout_4->addItem(verticalSpacer_3, 4, 0, 1, 1);</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span> </div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>         label_9 = <span class="keyword">new</span> QLabel(tab_2);</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>         label_9->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_9"</span>));</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span> </div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>         gridLayout_4->addWidget(label_9, 1, 0, 1, 1);</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span> </div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>         horizontalSpacer_8 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span> </div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>         gridLayout_4->addItem(horizontalSpacer_8, 1, 3, 1, 1);</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span> </div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>         groupBox = <span class="keyword">new</span> QGroupBox(tab_2);</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>         groupBox->setObjectName(QString::fromUtf8(<span class="stringliteral">"groupBox"</span>));</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>         gridLayout_3 = <span class="keyword">new</span> QGridLayout(groupBox);</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>         gridLayout_3->setSpacing(6);</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>         gridLayout_3->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>         gridLayout_3->setObjectName(QString::fromUtf8(<span class="stringliteral">"gridLayout_3"</span>));</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>         autoscale = <span class="keyword">new</span> QRadioButton(groupBox);</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>         buttonGroup = <span class="keyword">new</span> QButtonGroup(MainWindow);</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>         buttonGroup->setObjectName(QString::fromUtf8(<span class="stringliteral">"buttonGroup"</span>));</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>         buttonGroup->addButton(autoscale);</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>         autoscale->setObjectName(QString::fromUtf8(<span class="stringliteral">"autoscale"</span>));</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span> </div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>         gridLayout_3->addWidget(autoscale, 1, 0, 1, 1);</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span> </div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>         offset = <span class="keyword">new</span> QLineEdit(groupBox);</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>         offset->setObjectName(QString::fromUtf8(<span class="stringliteral">"offset"</span>));</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span> </div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>         gridLayout_3->addWidget(offset, 2, 4, 1, 1);</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span> </div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>         manual = <span class="keyword">new</span> QRadioButton(groupBox);</div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>         buttonGroup->addButton(manual);</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>         manual->setObjectName(QString::fromUtf8(<span class="stringliteral">"manual"</span>));</div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span> </div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>         gridLayout_3->addWidget(manual, 2, 0, 1, 1);</div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span> </div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>         label_21 = <span class="keyword">new</span> QLabel(groupBox);</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>         label_21->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_21"</span>));</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span> </div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>         gridLayout_3->addWidget(label_21, 2, 3, 1, 1);</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span> </div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>         label_20 = <span class="keyword">new</span> QLabel(groupBox);</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>         label_20->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_20"</span>));</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span> </div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>         gridLayout_3->addWidget(label_20, 2, 1, 1, 1);</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span> </div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>         noscale = <span class="keyword">new</span> QRadioButton(groupBox);</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>         buttonGroup->addButton(noscale);</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>         noscale->setObjectName(QString::fromUtf8(<span class="stringliteral">"noscale"</span>));</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span> </div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>         gridLayout_3->addWidget(noscale, 0, 0, 1, 1);</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span> </div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>         scale = <span class="keyword">new</span> QLineEdit(groupBox);</div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>         scale->setObjectName(QString::fromUtf8(<span class="stringliteral">"scale"</span>));</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span> </div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>         gridLayout_3->addWidget(scale, 2, 2, 1, 1);</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span> </div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>         horizontalSpacer_4 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span> </div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>         gridLayout_3->addItem(horizontalSpacer_4, 2, 5, 1, 1);</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span> </div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>         label_10 = <span class="keyword">new</span> QLabel(groupBox);</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>         label_10->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_10"</span>));</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span> </div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>         gridLayout_3->addWidget(label_10, 1, 1, 1, 1);</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span> </div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>         as_from = <span class="keyword">new</span> QLineEdit(groupBox);</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>         as_from->setObjectName(QString::fromUtf8(<span class="stringliteral">"as_from"</span>));</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span> </div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>         gridLayout_3->addWidget(as_from, 1, 2, 1, 1);</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span> </div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>         label_11 = <span class="keyword">new</span> QLabel(groupBox);</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>         label_11->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_11"</span>));</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span> </div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>         gridLayout_3->addWidget(label_11, 1, 3, 1, 1);</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span> </div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>         as_to = <span class="keyword">new</span> QLineEdit(groupBox);</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>         as_to->setObjectName(QString::fromUtf8(<span class="stringliteral">"as_to"</span>));</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span> </div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>         gridLayout_3->addWidget(as_to, 1, 4, 1, 1);</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span> </div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>         horizontalSpacer_11 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span> </div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>         gridLayout_3->addItem(horizontalSpacer_11, 1, 5, 1, 1);</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span> </div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span> </div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>         gridLayout_4->addWidget(groupBox, 3, 0, 1, 8);</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span> </div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>         label_15 = <span class="keyword">new</span> QLabel(tab_2);</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>         label_15->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_15"</span>));</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span> </div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>         gridLayout_4->addWidget(label_15, 1, 2, 1, 1);</div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span> </div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>         dx = <span class="keyword">new</span> QLineEdit(tab_2);</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>         dx->setObjectName(QString::fromUtf8(<span class="stringliteral">"dx"</span>));</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span> </div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>         gridLayout_4->addWidget(dx, 1, 1, 1, 1);</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span> </div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>         label_18 = <span class="keyword">new</span> QLabel(tab_2);</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>         label_18->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_18"</span>));</div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span> </div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>         gridLayout_4->addWidget(label_18, 1, 5, 1, 1);</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span> </div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>         label_17 = <span class="keyword">new</span> QLabel(tab_2);</div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>         label_17->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_17"</span>));</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span> </div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>         gridLayout_4->addWidget(label_17, 0, 0, 1, 1);</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span> </div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>         horizontalSpacer_5 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span> </div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>         gridLayout_4->addItem(horizontalSpacer_5, 1, 6, 1, 1);</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span> </div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>         horizontalSpacer_10 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span> </div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>         gridLayout_4->addItem(horizontalSpacer_10, 0, 3, 1, 1);</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span> </div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>         tabWidget->addTab(tab_2, QString());</div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>         tab_3 = <span class="keyword">new</span> QWidget();</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>         tab_3->setObjectName(QString::fromUtf8(<span class="stringliteral">"tab_3"</span>));</div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>         verticalLayout_3 = <span class="keyword">new</span> QVBoxLayout(tab_3);</div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>         verticalLayout_3->setSpacing(6);</div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>         verticalLayout_3->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>         verticalLayout_3->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout_3"</span>));</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>         gridLayout = <span class="keyword">new</span> QGridLayout();</div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span>         gridLayout->setSpacing(6);</div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>         gridLayout->setObjectName(QString::fromUtf8(<span class="stringliteral">"gridLayout"</span>));</div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>         otype = <span class="keyword">new</span> QComboBox(tab_3);</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>         otype->setObjectName(QString::fromUtf8(<span class="stringliteral">"otype"</span>));</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span> </div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>         gridLayout->addWidget(otype, 3, 1, 1, 1);</div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span> </div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>         compressed = <span class="keyword">new</span> QComboBox(tab_3);</div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>         compressed->setObjectName(QString::fromUtf8(<span class="stringliteral">"compressed"</span>));</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span> </div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>         gridLayout->addWidget(compressed, 6, 5, 1, 1);</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span> </div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>         label_6 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>         label_6->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_6"</span>));</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span> </div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>         gridLayout->addWidget(label_6, 3, 0, 1, 1);</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span> </div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>         label_5 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>         label_5->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_5"</span>));</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span> </div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>         gridLayout->addWidget(label_5, 2, 0, 1, 1);</div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span> </div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span>         toolButton_output = <span class="keyword">new</span> QToolButton(tab_3);</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>         toolButton_output->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_output"</span>));</div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span> </div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span>         gridLayout->addWidget(toolButton_output, 1, 2, 1, 1);</div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span> </div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span>         label_3 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span>         label_3->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_3"</span>));</div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span> </div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span>         gridLayout->addWidget(label_3, 1, 0, 1, 1);</div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span> </div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>         toolButton_ct = <span class="keyword">new</span> QToolButton(tab_3);</div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>         toolButton_ct->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_ct"</span>));</div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span> </div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span>         gridLayout->addWidget(toolButton_ct, 5, 2, 1, 1);</div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span> </div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span>         output = <span class="keyword">new</span> QLineEdit(tab_3);</div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span>         output->setObjectName(QString::fromUtf8(<span class="stringliteral">"output"</span>));</div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span> </div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span>         gridLayout->addWidget(output, 1, 1, 1, 1);</div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span> </div>
-<div class="line"><a name="l00445"></a><span class="lineno">  445</span>         tiled = <span class="keyword">new</span> QCheckBox(tab_3);</div>
-<div class="line"><a name="l00446"></a><span class="lineno">  446</span>         tiled->setObjectName(QString::fromUtf8(<span class="stringliteral">"tiled"</span>));</div>
-<div class="line"><a name="l00447"></a><span class="lineno">  447</span> </div>
-<div class="line"><a name="l00448"></a><span class="lineno">  448</span>         gridLayout->addWidget(tiled, 6, 2, 1, 1);</div>
-<div class="line"><a name="l00449"></a><span class="lineno">  449</span> </div>
-<div class="line"><a name="l00450"></a><span class="lineno">  450</span>         label_13 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00451"></a><span class="lineno">  451</span>         label_13->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_13"</span>));</div>
-<div class="line"><a name="l00452"></a><span class="lineno">  452</span> </div>
-<div class="line"><a name="l00453"></a><span class="lineno">  453</span>         gridLayout->addWidget(label_13, 6, 4, 1, 1);</div>
-<div class="line"><a name="l00454"></a><span class="lineno">  454</span> </div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span>         a_srs = <span class="keyword">new</span> QLineEdit(tab_3);</div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</span>         a_srs->setObjectName(QString::fromUtf8(<span class="stringliteral">"a_srs"</span>));</div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span> </div>
-<div class="line"><a name="l00458"></a><span class="lineno">  458</span>         gridLayout->addWidget(a_srs, 2, 1, 1, 1);</div>
-<div class="line"><a name="l00459"></a><span class="lineno">  459</span> </div>
-<div class="line"><a name="l00460"></a><span class="lineno">  460</span>         label_7 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span>         label_7->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_7"</span>));</div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span> </div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span>         gridLayout->addWidget(label_7, 4, 0, 1, 1);</div>
-<div class="line"><a name="l00464"></a><span class="lineno">  464</span> </div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span>         label_14 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>         label_14->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_14"</span>));</div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span> </div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span>         gridLayout->addWidget(label_14, 7, 0, 1, 1);</div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span> </div>
-<div class="line"><a name="l00470"></a><span class="lineno">  470</span>         nodata = <span class="keyword">new</span> QLineEdit(tab_3);</div>
-<div class="line"><a name="l00471"></a><span class="lineno">  471</span>         nodata->setObjectName(QString::fromUtf8(<span class="stringliteral">"nodata"</span>));</div>
-<div class="line"><a name="l00472"></a><span class="lineno">  472</span> </div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span>         gridLayout->addWidget(nodata, 7, 1, 1, 1);</div>
-<div class="line"><a name="l00474"></a><span class="lineno">  474</span> </div>
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span>         oformat = <span class="keyword">new</span> QComboBox(tab_3);</div>
-<div class="line"><a name="l00476"></a><span class="lineno">  476</span>         oformat->setObjectName(QString::fromUtf8(<span class="stringliteral">"oformat"</span>));</div>
-<div class="line"><a name="l00477"></a><span class="lineno">  477</span> </div>
-<div class="line"><a name="l00478"></a><span class="lineno">  478</span>         gridLayout->addWidget(oformat, 4, 1, 1, 1);</div>
-<div class="line"><a name="l00479"></a><span class="lineno">  479</span> </div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span>         ct = <span class="keyword">new</span> QLineEdit(tab_3);</div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span>         ct->setObjectName(QString::fromUtf8(<span class="stringliteral">"ct"</span>));</div>
-<div class="line"><a name="l00482"></a><span class="lineno">  482</span> </div>
-<div class="line"><a name="l00483"></a><span class="lineno">  483</span>         gridLayout->addWidget(ct, 5, 1, 1, 1);</div>
-<div class="line"><a name="l00484"></a><span class="lineno">  484</span> </div>
-<div class="line"><a name="l00485"></a><span class="lineno">  485</span>         label_12 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00486"></a><span class="lineno">  486</span>         label_12->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_12"</span>));</div>
-<div class="line"><a name="l00487"></a><span class="lineno">  487</span> </div>
-<div class="line"><a name="l00488"></a><span class="lineno">  488</span>         gridLayout->addWidget(label_12, 6, 0, 1, 1);</div>
-<div class="line"><a name="l00489"></a><span class="lineno">  489</span> </div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span>         interleaved = <span class="keyword">new</span> QComboBox(tab_3);</div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span>         interleaved->setObjectName(QString::fromUtf8(<span class="stringliteral">"interleaved"</span>));</div>
-<div class="line"><a name="l00492"></a><span class="lineno">  492</span> </div>
-<div class="line"><a name="l00493"></a><span class="lineno">  493</span>         gridLayout->addWidget(interleaved, 6, 1, 1, 1);</div>
-<div class="line"><a name="l00494"></a><span class="lineno">  494</span> </div>
-<div class="line"><a name="l00495"></a><span class="lineno">  495</span>         label_8 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00496"></a><span class="lineno">  496</span>         label_8->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_8"</span>));</div>
-<div class="line"><a name="l00497"></a><span class="lineno">  497</span> </div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span>         gridLayout->addWidget(label_8, 5, 0, 1, 1);</div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span> </div>
-<div class="line"><a name="l00500"></a><span class="lineno">  500</span>         horizontalSpacer_6 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00501"></a><span class="lineno">  501</span> </div>
-<div class="line"><a name="l00502"></a><span class="lineno">  502</span>         gridLayout->addItem(horizontalSpacer_6, 6, 3, 1, 1);</div>
-<div class="line"><a name="l00503"></a><span class="lineno">  503</span> </div>
-<div class="line"><a name="l00504"></a><span class="lineno">  504</span> </div>
-<div class="line"><a name="l00505"></a><span class="lineno">  505</span>         verticalLayout_3->addLayout(gridLayout);</div>
-<div class="line"><a name="l00506"></a><span class="lineno">  506</span> </div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span>         tabWidget->addTab(tab_3, QString());</div>
-<div class="line"><a name="l00508"></a><span class="lineno">  508</span>         tab_4 = <span class="keyword">new</span> QWidget();</div>
-<div class="line"><a name="l00509"></a><span class="lineno">  509</span>         tab_4->setObjectName(QString::fromUtf8(<span class="stringliteral">"tab_4"</span>));</div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span>         verticalLayout_5 = <span class="keyword">new</span> QVBoxLayout(tab_4);</div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span>         verticalLayout_5->setSpacing(6);</div>
-<div class="line"><a name="l00512"></a><span class="lineno">  512</span>         verticalLayout_5->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00513"></a><span class="lineno">  513</span>         verticalLayout_5->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout_5"</span>));</div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span>         verticalLayout_4 = <span class="keyword">new</span> QVBoxLayout();</div>
-<div class="line"><a name="l00515"></a><span class="lineno">  515</span>         verticalLayout_4->setSpacing(6);</div>
-<div class="line"><a name="l00516"></a><span class="lineno">  516</span>         verticalLayout_4->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout_4"</span>));</div>
-<div class="line"><a name="l00517"></a><span class="lineno">  517</span>         label_24 = <span class="keyword">new</span> QLabel(tab_4);</div>
-<div class="line"><a name="l00518"></a><span class="lineno">  518</span>         label_24->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_24"</span>));</div>
-<div class="line"><a name="l00519"></a><span class="lineno">  519</span> </div>
-<div class="line"><a name="l00520"></a><span class="lineno">  520</span>         verticalLayout_4->addWidget(label_24);</div>
-<div class="line"><a name="l00521"></a><span class="lineno">  521</span> </div>
-<div class="line"><a name="l00522"></a><span class="lineno">  522</span>         commandLineEdit = <span class="keyword">new</span> QLineEdit(tab_4);</div>
-<div class="line"><a name="l00523"></a><span class="lineno">  523</span>         commandLineEdit->setObjectName(QString::fromUtf8(<span class="stringliteral">"commandLineEdit"</span>));</div>
-<div class="line"><a name="l00524"></a><span class="lineno">  524</span> </div>
-<div class="line"><a name="l00525"></a><span class="lineno">  525</span>         verticalLayout_4->addWidget(commandLineEdit);</div>
-<div class="line"><a name="l00526"></a><span class="lineno">  526</span> </div>
-<div class="line"><a name="l00527"></a><span class="lineno">  527</span>         label_25 = <span class="keyword">new</span> QLabel(tab_4);</div>
-<div class="line"><a name="l00528"></a><span class="lineno">  528</span>         label_25->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_25"</span>));</div>
-<div class="line"><a name="l00529"></a><span class="lineno">  529</span> </div>
-<div class="line"><a name="l00530"></a><span class="lineno">  530</span>         verticalLayout_4->addWidget(label_25);</div>
-<div class="line"><a name="l00531"></a><span class="lineno">  531</span> </div>
-<div class="line"><a name="l00532"></a><span class="lineno">  532</span>         consoleEdit = <span class="keyword">new</span> QPlainTextEdit(tab_4);</div>
-<div class="line"><a name="l00533"></a><span class="lineno">  533</span>         consoleEdit->setObjectName(QString::fromUtf8(<span class="stringliteral">"consoleEdit"</span>));</div>
-<div class="line"><a name="l00534"></a><span class="lineno">  534</span> </div>
-<div class="line"><a name="l00535"></a><span class="lineno">  535</span>         verticalLayout_4->addWidget(consoleEdit);</div>
-<div class="line"><a name="l00536"></a><span class="lineno">  536</span> </div>
-<div class="line"><a name="l00537"></a><span class="lineno">  537</span> </div>
-<div class="line"><a name="l00538"></a><span class="lineno">  538</span>         verticalLayout_5->addLayout(verticalLayout_4);</div>
-<div class="line"><a name="l00539"></a><span class="lineno">  539</span> </div>
-<div class="line"><a name="l00540"></a><span class="lineno">  540</span>         tabWidget->addTab(tab_4, QString());</div>
-<div class="line"><a name="l00541"></a><span class="lineno">  541</span> </div>
-<div class="line"><a name="l00542"></a><span class="lineno">  542</span>         verticalLayout->addWidget(tabWidget);</div>
-<div class="line"><a name="l00543"></a><span class="lineno">  543</span> </div>
-<div class="line"><a name="l00544"></a><span class="lineno">  544</span>         verticalSpacer_2 = <span class="keyword">new</span> QSpacerItem(20, 112, QSizePolicy::Minimum, QSizePolicy::Expanding);</div>
-<div class="line"><a name="l00545"></a><span class="lineno">  545</span> </div>
-<div class="line"><a name="l00546"></a><span class="lineno">  546</span>         verticalLayout->addItem(verticalSpacer_2);</div>
-<div class="line"><a name="l00547"></a><span class="lineno">  547</span> </div>
-<div class="line"><a name="l00548"></a><span class="lineno">  548</span>         horizontalSpacer = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00549"></a><span class="lineno">  549</span> </div>
-<div class="line"><a name="l00550"></a><span class="lineno">  550</span>         verticalLayout->addItem(horizontalSpacer);</div>
-<div class="line"><a name="l00551"></a><span class="lineno">  551</span> </div>
-<div class="line"><a name="l00552"></a><span class="lineno">  552</span>         horizontalLayout_2 = <span class="keyword">new</span> QHBoxLayout();</div>
-<div class="line"><a name="l00553"></a><span class="lineno">  553</span>         horizontalLayout_2->setSpacing(6);</div>
-<div class="line"><a name="l00554"></a><span class="lineno">  554</span>         horizontalLayout_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"horizontalLayout_2"</span>));</div>
-<div class="line"><a name="l00555"></a><span class="lineno">  555</span>         toolButton_Run = <span class="keyword">new</span> QToolButton(centralWidget);</div>
-<div class="line"><a name="l00556"></a><span class="lineno">  556</span>         toolButton_Run->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_Run"</span>));</div>
-<div class="line"><a name="l00557"></a><span class="lineno">  557</span> </div>
-<div class="line"><a name="l00558"></a><span class="lineno">  558</span>         horizontalLayout_2->addWidget(toolButton_Run);</div>
-<div class="line"><a name="l00559"></a><span class="lineno">  559</span> </div>
-<div class="line"><a name="l00560"></a><span class="lineno">  560</span>         horizontalSpacer_7 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00561"></a><span class="lineno">  561</span> </div>
-<div class="line"><a name="l00562"></a><span class="lineno">  562</span>         horizontalLayout_2->addItem(horizontalSpacer_7);</div>
-<div class="line"><a name="l00563"></a><span class="lineno">  563</span> </div>
-<div class="line"><a name="l00564"></a><span class="lineno">  564</span>         toolButton_defaults = <span class="keyword">new</span> QToolButton(centralWidget);</div>
-<div class="line"><a name="l00565"></a><span class="lineno">  565</span>         toolButton_defaults->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_defaults"</span>));</div>
-<div class="line"><a name="l00566"></a><span class="lineno">  566</span> </div>
-<div class="line"><a name="l00567"></a><span class="lineno">  567</span>         horizontalLayout_2->addWidget(toolButton_defaults);</div>
-<div class="line"><a name="l00568"></a><span class="lineno">  568</span> </div>
-<div class="line"><a name="l00569"></a><span class="lineno">  569</span> </div>
-<div class="line"><a name="l00570"></a><span class="lineno">  570</span>         verticalLayout->addLayout(horizontalLayout_2);</div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span> </div>
-<div class="line"><a name="l00572"></a><span class="lineno">  572</span>         MainWindow->setCentralWidget(centralWidget);</div>
-<div class="line"><a name="l00573"></a><span class="lineno">  573</span>         menuBar = <span class="keyword">new</span> QMenuBar(MainWindow);</div>
-<div class="line"><a name="l00574"></a><span class="lineno">  574</span>         menuBar->setObjectName(QString::fromUtf8(<span class="stringliteral">"menuBar"</span>));</div>
-<div class="line"><a name="l00575"></a><span class="lineno">  575</span>         menuBar->setGeometry(QRect(0, 0, 821, 25));</div>
-<div class="line"><a name="l00576"></a><span class="lineno">  576</span>         menuFile = <span class="keyword">new</span> QMenu(menuBar);</div>
-<div class="line"><a name="l00577"></a><span class="lineno">  577</span>         menuFile->setObjectName(QString::fromUtf8(<span class="stringliteral">"menuFile"</span>));</div>
-<div class="line"><a name="l00578"></a><span class="lineno">  578</span>         MainWindow->setMenuBar(menuBar);</div>
-<div class="line"><a name="l00579"></a><span class="lineno">  579</span>         mainToolBar = <span class="keyword">new</span> QToolBar(MainWindow);</div>
-<div class="line"><a name="l00580"></a><span class="lineno">  580</span>         mainToolBar->setObjectName(QString::fromUtf8(<span class="stringliteral">"mainToolBar"</span>));</div>
-<div class="line"><a name="l00581"></a><span class="lineno">  581</span>         MainWindow->addToolBar(Qt::TopToolBarArea, mainToolBar);</div>
-<div class="line"><a name="l00582"></a><span class="lineno">  582</span>         statusBar = <span class="keyword">new</span> QStatusBar(MainWindow);</div>
-<div class="line"><a name="l00583"></a><span class="lineno">  583</span>         statusBar->setObjectName(QString::fromUtf8(<span class="stringliteral">"statusBar"</span>));</div>
-<div class="line"><a name="l00584"></a><span class="lineno">  584</span>         MainWindow->setStatusBar(statusBar);</div>
-<div class="line"><a name="l00585"></a><span class="lineno">  585</span>         QWidget::setTabOrder(toolButton_input, uly);</div>
-<div class="line"><a name="l00586"></a><span class="lineno">  586</span>         QWidget::setTabOrder(uly, ulx);</div>
-<div class="line"><a name="l00587"></a><span class="lineno">  587</span>         QWidget::setTabOrder(ulx, lrx);</div>
-<div class="line"><a name="l00588"></a><span class="lineno">  588</span>         QWidget::setTabOrder(lrx, lry);</div>
-<div class="line"><a name="l00589"></a><span class="lineno">  589</span>         QWidget::setTabOrder(lry, extent);</div>
-<div class="line"><a name="l00590"></a><span class="lineno">  590</span>         QWidget::setTabOrder(extent, toolButton_extent);</div>
-<div class="line"><a name="l00591"></a><span class="lineno">  591</span>         QWidget::setTabOrder(toolButton_extent, listWidget_band);</div>
-<div class="line"><a name="l00592"></a><span class="lineno">  592</span>         QWidget::setTabOrder(listWidget_band, resample);</div>
-<div class="line"><a name="l00593"></a><span class="lineno">  593</span>         QWidget::setTabOrder(resample, dx);</div>
-<div class="line"><a name="l00594"></a><span class="lineno">  594</span>         QWidget::setTabOrder(dx, dy);</div>
-<div class="line"><a name="l00595"></a><span class="lineno">  595</span>         QWidget::setTabOrder(dy, noscale);</div>
-<div class="line"><a name="l00596"></a><span class="lineno">  596</span>         QWidget::setTabOrder(noscale, autoscale);</div>
-<div class="line"><a name="l00597"></a><span class="lineno">  597</span>         QWidget::setTabOrder(autoscale, scale);</div>
-<div class="line"><a name="l00598"></a><span class="lineno">  598</span>         QWidget::setTabOrder(scale, offset);</div>
-<div class="line"><a name="l00599"></a><span class="lineno">  599</span>         QWidget::setTabOrder(offset, output);</div>
-<div class="line"><a name="l00600"></a><span class="lineno">  600</span>         QWidget::setTabOrder(output, toolButton_output);</div>
-<div class="line"><a name="l00601"></a><span class="lineno">  601</span>         QWidget::setTabOrder(toolButton_output, a_srs);</div>
-<div class="line"><a name="l00602"></a><span class="lineno">  602</span>         QWidget::setTabOrder(a_srs, otype);</div>
-<div class="line"><a name="l00603"></a><span class="lineno">  603</span>         QWidget::setTabOrder(otype, oformat);</div>
-<div class="line"><a name="l00604"></a><span class="lineno">  604</span>         QWidget::setTabOrder(oformat, ct);</div>
-<div class="line"><a name="l00605"></a><span class="lineno">  605</span>         QWidget::setTabOrder(ct, toolButton_ct);</div>
-<div class="line"><a name="l00606"></a><span class="lineno">  606</span>         QWidget::setTabOrder(toolButton_ct, interleaved);</div>
-<div class="line"><a name="l00607"></a><span class="lineno">  607</span>         QWidget::setTabOrder(interleaved, tiled);</div>
-<div class="line"><a name="l00608"></a><span class="lineno">  608</span>         QWidget::setTabOrder(tiled, compressed);</div>
-<div class="line"><a name="l00609"></a><span class="lineno">  609</span>         QWidget::setTabOrder(compressed, nodata);</div>
-<div class="line"><a name="l00610"></a><span class="lineno">  610</span>         QWidget::setTabOrder(nodata, toolButton_Run);</div>
-<div class="line"><a name="l00611"></a><span class="lineno">  611</span>         QWidget::setTabOrder(toolButton_Run, toolButton_defaults);</div>
-<div class="line"><a name="l00612"></a><span class="lineno">  612</span>         QWidget::setTabOrder(toolButton_defaults, manual);</div>
-<div class="line"><a name="l00613"></a><span class="lineno">  613</span>         QWidget::setTabOrder(manual, consoleEdit);</div>
-<div class="line"><a name="l00614"></a><span class="lineno">  614</span>         QWidget::setTabOrder(consoleEdit, commandLineEdit);</div>
-<div class="line"><a name="l00615"></a><span class="lineno">  615</span>         QWidget::setTabOrder(commandLineEdit, listWidget_input);</div>
-<div class="line"><a name="l00616"></a><span class="lineno">  616</span>         QWidget::setTabOrder(listWidget_input, tabWidget);</div>
-<div class="line"><a name="l00617"></a><span class="lineno">  617</span> </div>
-<div class="line"><a name="l00618"></a><span class="lineno">  618</span>         menuBar->addAction(menuFile->menuAction());</div>
-<div class="line"><a name="l00619"></a><span class="lineno">  619</span>         menuFile->addAction(actionInput);</div>
-<div class="line"><a name="l00620"></a><span class="lineno">  620</span>         menuFile->addAction(actionExtent);</div>
-<div class="line"><a name="l00621"></a><span class="lineno">  621</span>         menuFile->addAction(actionOutput);</div>
-<div class="line"><a name="l00622"></a><span class="lineno">  622</span>         menuFile->addAction(actionQuit);</div>
-<div class="line"><a name="l00623"></a><span class="lineno">  623</span> </div>
-<div class="line"><a name="l00624"></a><span class="lineno">  624</span>         retranslateUi(MainWindow);</div>
-<div class="line"><a name="l00625"></a><span class="lineno">  625</span> </div>
-<div class="line"><a name="l00626"></a><span class="lineno">  626</span>         tabWidget->setCurrentIndex(0);</div>
-<div class="line"><a name="l00627"></a><span class="lineno">  627</span> </div>
-<div class="line"><a name="l00628"></a><span class="lineno">  628</span> </div>
-<div class="line"><a name="l00629"></a><span class="lineno">  629</span>         QMetaObject::connectSlotsByName(MainWindow);</div>
-<div class="line"><a name="l00630"></a><span class="lineno">  630</span>     } <span class="comment">// setupUi</span></div>
-<div class="line"><a name="l00631"></a><span class="lineno">  631</span> </div>
-<div class="line"><a name="l00632"></a><span class="lineno">  632</span>     <span class="keywordtype">void</span> retranslateUi(QMainWindow *MainWindow)</div>
-<div class="line"><a name="l00633"></a><span class="lineno">  633</span>     {</div>
-<div class="line"><a name="l00634"></a><span class="lineno">  634</span>         MainWindow->setWindowTitle(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"pkcrop_gui"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00635"></a><span class="lineno">  635</span>         actionInput->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Input(s)"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00636"></a><span class="lineno">  636</span>         actionInput->setShortcut(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Alt+I"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00637"></a><span class="lineno">  637</span>         actionExtent->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Extent"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00638"></a><span class="lineno">  638</span>         actionExtent->setShortcut(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Alt+E"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00639"></a><span class="lineno">  639</span>         actionOutput->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00640"></a><span class="lineno">  640</span>         actionOutput->setShortcut(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Alt+O"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00641"></a><span class="lineno">  641</span>         actionQuit->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Quit"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00642"></a><span class="lineno">  642</span>         actionQuit->setShortcut(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Alt+Q"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00643"></a><span class="lineno">  643</span>         toolButton_extent->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00644"></a><span class="lineno">  644</span>         toolButton_input->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00645"></a><span class="lineno">  645</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00646"></a><span class="lineno">  646</span> <span class="preprocessor"></span>        label_2->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Provide geographical extent to crop in coordinate reference system of input data</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00647"></a><span class="lineno">  647</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00648"></a><span class="lineno">  648</span> <span class="preprocessor"></span>        label_2->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Geographical extent"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00649"></a><span class="lineno">  649</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00650"></a><span class="lineno">  650</span> <span class="preprocessor"></span>        label_4->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Use an external OGR vector file to define the geographical extent to crop. Coordinate reference systems of input and vector must be identical</p></body></html>"</s [...]
-<div class="line"><a name="l00651"></a><span class="lineno">  651</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00652"></a><span class="lineno">  652</span> <span class="preprocessor"></span>        label_4->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Extent via vector:"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00653"></a><span class="lineno">  653</span> <span class="preprocessor">#ifndef QT_NO_WHATSTHIS</span></div>
-<div class="line"><a name="l00654"></a><span class="lineno">  654</span> <span class="preprocessor"></span>        label_16->setWhatsThis(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>First select input image. Then select bands by clicking in the table (use Ctrl and Shift to select multiple bands)</p></body></html>"</span>, 0, QApplication::U [...]
-<div class="line"><a name="l00655"></a><span class="lineno">  655</span> <span class="preprocessor">#endif // QT_NO_WHATSTHIS</span></div>
-<div class="line"><a name="l00656"></a><span class="lineno">  656</span> <span class="preprocessor"></span>        label_16->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Select bands"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00657"></a><span class="lineno">  657</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00658"></a><span class="lineno">  658</span> <span class="preprocessor"></span>        label->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Input image(s)</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00659"></a><span class="lineno">  659</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00660"></a><span class="lineno">  660</span> <span class="preprocessor"></span>        label->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Input image(s)"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00661"></a><span class="lineno">  661</span>         toolButton->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"clear"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00662"></a><span class="lineno">  662</span>         tabWidget->setTabText(tabWidget->indexOf(tab), QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Input"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00663"></a><span class="lineno">  663</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00664"></a><span class="lineno">  664</span> <span class="preprocessor"></span>        label_9->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Output resolution in x and y distance measure (e.g., meter). Leave empty to read from input data</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00665"></a><span class="lineno">  665</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00666"></a><span class="lineno">  666</span> <span class="preprocessor"></span>        label_9->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output resolution"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00667"></a><span class="lineno">  667</span>         groupBox->setTitle(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Scale data"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00668"></a><span class="lineno">  668</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00669"></a><span class="lineno">  669</span> <span class="preprocessor"></span>        autoscale->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Auto scale input data from to (e.g., use from=0 and to=255 for Byte type image)</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00670"></a><span class="lineno">  670</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00671"></a><span class="lineno">  671</span> <span class="preprocessor"></span>        autoscale->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"autoscale"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00672"></a><span class="lineno">  672</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00673"></a><span class="lineno">  673</span> <span class="preprocessor"></span>        manual->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Manually scale data using scale and offset: output=scale*input+offset</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00674"></a><span class="lineno">  674</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00675"></a><span class="lineno">  675</span> <span class="preprocessor"></span>        manual->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"manual"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00676"></a><span class="lineno">  676</span>         label_21->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"offset"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00677"></a><span class="lineno">  677</span>         label_20->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"scale"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00678"></a><span class="lineno">  678</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00679"></a><span class="lineno">  679</span> <span class="preprocessor"></span>        noscale->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Do not scale the data</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00680"></a><span class="lineno">  680</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00681"></a><span class="lineno">  681</span> <span class="preprocessor"></span>        noscale->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"no scaling"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00682"></a><span class="lineno">  682</span>         label_10->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"from"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00683"></a><span class="lineno">  683</span>         label_11->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"to"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00684"></a><span class="lineno">  684</span>         label_15->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"dx"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00685"></a><span class="lineno">  685</span>         label_18->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"dy"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00686"></a><span class="lineno">  686</span>         label_17->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Resample method"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00687"></a><span class="lineno">  687</span>         tabWidget->setTabText(tabWidget->indexOf(tab_2), QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Scaling"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00688"></a><span class="lineno">  688</span>         label_6->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output data type"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00689"></a><span class="lineno">  689</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00690"></a><span class="lineno">  690</span> <span class="preprocessor"></span>        label_5->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Assign projection (e.g., epsg:3035). Notice this will not re-project the image. Use gdalwarp instead.</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00691"></a><span class="lineno">  691</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00692"></a><span class="lineno">  692</span> <span class="preprocessor"></span>        label_5->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Assign projection (EPSG:code)"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00693"></a><span class="lineno">  693</span>         toolButton_output->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00694"></a><span class="lineno">  694</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00695"></a><span class="lineno">  695</span> <span class="preprocessor"></span>        label_3->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Output raster image</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00696"></a><span class="lineno">  696</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00697"></a><span class="lineno">  697</span> <span class="preprocessor"></span>        label_3->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output image"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00698"></a><span class="lineno">  698</span>         toolButton_ct->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00699"></a><span class="lineno">  699</span>         tiled->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Tiled"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00700"></a><span class="lineno">  700</span>         label_13->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"compressed"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00701"></a><span class="lineno">  701</span>         label_7->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output image format"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00702"></a><span class="lineno">  702</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00703"></a><span class="lineno">  703</span> <span class="preprocessor"></span>        label_14->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Nodata value to put in image if out of bounds</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00704"></a><span class="lineno">  704</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00705"></a><span class="lineno">  705</span> <span class="preprocessor"></span>        label_14->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output nodata value"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00706"></a><span class="lineno">  706</span>         label_12->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Interleaved"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00707"></a><span class="lineno">  707</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00708"></a><span class="lineno">  708</span> <span class="preprocessor"></span>        label_8->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Color table must be provided as ASCII text file with five (space delimited) columns:</p><p>value red green blue alpha</p></body></html>"</span>, 0, QAp [...]
-<div class="line"><a name="l00709"></a><span class="lineno">  709</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00710"></a><span class="lineno">  710</span> <span class="preprocessor"></span>        label_8->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Color table (ASCII)"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00711"></a><span class="lineno">  711</span>         tabWidget->setTabText(tabWidget->indexOf(tab_3), QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00712"></a><span class="lineno">  712</span>         label_24->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Command line"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00713"></a><span class="lineno">  713</span>         label_25->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Console output"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00714"></a><span class="lineno">  714</span>         tabWidget->setTabText(tabWidget->indexOf(tab_4), QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Console"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00715"></a><span class="lineno">  715</span>         toolButton_Run->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Run"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00716"></a><span class="lineno">  716</span>         toolButton_defaults->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Restore defaults"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00717"></a><span class="lineno">  717</span>         menuFile->setTitle(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"File"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00718"></a><span class="lineno">  718</span>     } <span class="comment">// retranslateUi</span></div>
-<div class="line"><a name="l00719"></a><span class="lineno">  719</span> </div>
-<div class="line"><a name="l00720"></a><span class="lineno">  720</span> };</div>
-<div class="line"><a name="l00721"></a><span class="lineno">  721</span> </div>
-<div class="line"><a name="l00722"></a><span class="lineno">  722</span> <span class="keyword">namespace </span>Ui {</div>
-<div class="line"><a name="l00723"></a><span class="lineno">  723</span>     <span class="keyword">class </span>MainWindow: <span class="keyword">public</span> <a class="code" href="classUi__MainWindow.html">Ui_MainWindow</a> {};</div>
-<div class="line"><a name="l00724"></a><span class="lineno">  724</span> } <span class="comment">// namespace Ui</span></div>
-<div class="line"><a name="l00725"></a><span class="lineno">  725</span> </div>
-<div class="line"><a name="l00726"></a><span class="lineno">  726</span> QT_END_NAMESPACE</div>
-<div class="line"><a name="l00727"></a><span class="lineno">  727</span> </div>
-<div class="line"><a name="l00728"></a><span class="lineno">  728</span> <span class="preprocessor">#endif // UI_MAINWINDOW_H</span></div>
-<div class="ttc" id="classUi__MainWindow_html"><div class="ttname"><a href="classUi__MainWindow.html">Ui_MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="build-pkcomposite__gui-gcc-Debug_2ui__mainwindow_8h_source.html#l00039">ui_mainwindow.h:39</a></div></div>
-<div class="ttc" id="classMainWindow_html"><div class="ttname"><a href="classMainWindow.html">MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite__gui_2mainwindow_8h_source.html#l00031">mainwindow.h:31</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/build-pkcrop__gui-gcc-Release_2moc__mainwindow_8cpp_source.html b/doc/html/build-pkcrop__gui-gcc-Release_2moc__mainwindow_8cpp_source.html
deleted file mode 100644
index 7b4be37..0000000
--- a/doc/html/build-pkcrop__gui-gcc-Release_2moc__mainwindow_8cpp_source.html
+++ /dev/null
@@ -1,206 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/build-pkcrop_gui-gcc-Release/moc_mainwindow.cpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_f92e37ed5759424bff98155847b1034b.html">build-pkcrop_gui-gcc-Release</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">moc_mainwindow.cpp</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/****************************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">** Meta object code from reading C++ file 'mainwindow.h'</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">** Created by: The Qt Meta Object Compiler version 63 (Qt 4.8.6)</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">** WARNING! All changes made in this file will be lost!</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">*****************************************************************************/</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> </div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="preprocessor">#include "../pkcrop_gui/mainwindow.h"</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="preprocessor">#if !defined(Q_MOC_OUTPUT_REVISION)</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="preprocessor"></span><span class="preprocessor">#error "The header file 'mainwindow.h' doesn't include <QObject>."</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="preprocessor"></span><span class="preprocessor">#elif Q_MOC_OUTPUT_REVISION != 63</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="preprocessor"></span><span class="preprocessor">#error "This file was generated using the moc from 4.8.6. It"</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="preprocessor"></span><span class="preprocessor">#error "cannot be used with the include files from this version of Qt."</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor"></span><span class="preprocessor">#error "(The moc has changed too much.)"</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> QT_BEGIN_MOC_NAMESPACE</div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="keyword">static</span> <span class="keyword">const</span> uint qt_meta_data_MainWindow[] = {</div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> </div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span>  <span class="comment">// content:</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span>        6,       <span class="comment">// revision</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span>        0,       <span class="comment">// classname</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span>        0,    0, <span class="comment">// classinfo</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span>       15,   14, <span class="comment">// methods</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span>        0,    0, <span class="comment">// properties</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span>        0,    0, <span class="comment">// enums/sets</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span>        0,    0, <span class="comment">// constructors</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span>        0,       <span class="comment">// flags</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>        0,       <span class="comment">// signalCount</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> </div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>  <span class="comment">// slots: signature, parameters, type, tag, flags</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>       12,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>       39,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>       69,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>      100,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>      131,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>      158,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>      186,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>      219,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>      245,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>      273,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>      296,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>      324,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>      344,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>      365,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>      378,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span> </div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>        0        <span class="comment">// eod</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span> };</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span> </div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> qt_meta_stringdata_MainWindow[] = {</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     <span class="stringliteral">"MainWindow\0\0on_actionInput_triggered()\0"</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     <span class="stringliteral">"on_toolButton_input_clicked()\0"</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     <span class="stringliteral">"on_toolButton_extent_clicked()\0"</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <span class="stringliteral">"on_toolButton_output_clicked()\0"</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     <span class="stringliteral">"on_toolButton_ct_clicked()\0"</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     <span class="stringliteral">"on_toolButton_Run_clicked()\0"</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     <span class="stringliteral">"on_toolButton_defaults_clicked()\0"</span></div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     <span class="stringliteral">"on_actionQuit_triggered()\0"</span></div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     <span class="stringliteral">"on_actionOutput_triggered()\0"</span></div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     <span class="stringliteral">"on_autoscale_clicked()\0"</span></div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     <span class="stringliteral">"on_actionExtent_triggered()\0"</span></div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     <span class="stringliteral">"on_manual_clicked()\0on_noscale_clicked()\0"</span></div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     <span class="stringliteral">"deleteItem()\0on_toolButton_clicked()\0"</span></div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span> };</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span> </div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span> <span class="keywordtype">void</span> MainWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, <span class="keywordtype">int</span> _id, <span class="keywordtype">void</span> **_a)</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span> {</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     <span class="keywordflow">if</span> (_c == QMetaObject::InvokeMetaMethod) {</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>         Q_ASSERT(staticMetaObject.cast(_o));</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>         <a class="code" href="classMainWindow.html">MainWindow</a> *_t = <span class="keyword">static_cast<</span><a class="code" href="classMainWindow.html">MainWindow</a> *<span class="keyword">></span>(_o);</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>         <span class="keywordflow">switch</span> (_id) {</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>         <span class="keywordflow">case</span> 0: _t->on_actionInput_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>         <span class="keywordflow">case</span> 1: _t->on_toolButton_input_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>         <span class="keywordflow">case</span> 2: _t->on_toolButton_extent_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>         <span class="keywordflow">case</span> 3: _t->on_toolButton_output_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>         <span class="keywordflow">case</span> 4: _t->on_toolButton_ct_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>         <span class="keywordflow">case</span> 5: _t->on_toolButton_Run_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>         <span class="keywordflow">case</span> 6: _t->on_toolButton_defaults_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>         <span class="keywordflow">case</span> 7: _t->on_actionQuit_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>         <span class="keywordflow">case</span> 8: _t->on_actionOutput_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>         <span class="keywordflow">case</span> 9: _t->on_autoscale_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>         <span class="keywordflow">case</span> 10: _t->on_actionExtent_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>         <span class="keywordflow">case</span> 11: _t->on_manual_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>         <span class="keywordflow">case</span> 12: _t->on_noscale_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>         <span class="keywordflow">case</span> 13: _t->deleteItem(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>         <span class="keywordflow">case</span> 14: _t->on_toolButton_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>         <span class="keywordflow">default</span>: ;</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>         }</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     }</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     Q_UNUSED(_a);</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span> }</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span> </div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span> <span class="keyword">const</span> QMetaObjectExtraData MainWindow::staticMetaObjectExtraData = {</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     0,  qt_static_metacall </div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span> };</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span> </div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span> <span class="keyword">const</span> QMetaObject MainWindow::staticMetaObject = {</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     { &QMainWindow::staticMetaObject, qt_meta_stringdata_MainWindow,</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>       qt_meta_data_MainWindow, &staticMetaObjectExtraData }</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span> };</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span> </div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span> <span class="preprocessor">#ifdef Q_NO_DATA_RELOCATION</span></div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span> <span class="preprocessor"></span><span class="keyword">const</span> QMetaObject &MainWindow::getStaticMetaObject() { <span class="keywordflow">return</span> staticMetaObject; }</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span> <span class="preprocessor">#endif //Q_NO_DATA_RELOCATION</span></div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span> <span class="keyword">const</span> QMetaObject *MainWindow::metaObject()<span class="keyword"> const</span></div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>     <span class="keywordflow">return</span> QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject;</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span> }</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span> </div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span> <span class="keywordtype">void</span> *MainWindow::qt_metacast(<span class="keyword">const</span> <span class="keywordtype">char</span> *_clname)</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span> {</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     <span class="keywordflow">if</span> (!_clname) <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     <span class="keywordflow">if</span> (!strcmp(_clname, qt_meta_stringdata_MainWindow))</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>         <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">void</span>*<span class="keyword">></span>(<span class="keyword">const_cast<</span> <a class="code" href="classMainWindow.html">MainWindow</a>*<span class="keyword">></span>(<span class="keyword">this</span>));</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     <span class="keywordflow">return</span> QMainWindow::qt_metacast(_clname);</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span> }</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span> </div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span> <span class="keywordtype">int</span> MainWindow::qt_metacall(QMetaObject::Call _c, <span class="keywordtype">int</span> _id, <span class="keywordtype">void</span> **_a)</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span> {</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>     _id = QMainWindow::qt_metacall(_c, _id, _a);</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     <span class="keywordflow">if</span> (_id < 0)</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>         <span class="keywordflow">return</span> _id;</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     <span class="keywordflow">if</span> (_c == QMetaObject::InvokeMetaMethod) {</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>         <span class="keywordflow">if</span> (_id < 15)</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>             qt_static_metacall(<span class="keyword">this</span>, _c, _id, _a);</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>         _id -= 15;</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>     }</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>     <span class="keywordflow">return</span> _id;</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span> }</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span> QT_END_MOC_NAMESPACE</div>
-<div class="ttc" id="classMainWindow_html"><div class="ttname"><a href="classMainWindow.html">MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite__gui_2mainwindow_8h_source.html#l00031">mainwindow.h:31</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/build-pkcrop__gui-gcc-Release_2ui__mainwindow_8h_source.html b/doc/html/build-pkcrop__gui-gcc-Release_2ui__mainwindow_8h_source.html
deleted file mode 100644
index 5b11477..0000000
--- a/doc/html/build-pkcrop__gui-gcc-Release_2ui__mainwindow_8h_source.html
+++ /dev/null
@@ -1,802 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/build-pkcrop_gui-gcc-Release/ui_mainwindow.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_f92e37ed5759424bff98155847b1034b.html">build-pkcrop_gui-gcc-Release</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">ui_mainwindow.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/********************************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">** Form generated from reading UI file 'mainwindow.ui'</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">** Created by: Qt User Interface Compiler version 4.8.6</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">** WARNING! All changes made in this file will be lost when recompiling UI file!</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">********************************************************************************/</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> </div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="preprocessor">#ifndef UI_MAINWINDOW_H</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="preprocessor"></span><span class="preprocessor">#define UI_MAINWINDOW_H</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="preprocessor">#include <QtCore/QVariant></span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="preprocessor">#include <QtGui/QAction></span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="preprocessor">#include <QtGui/QApplication></span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor">#include <QtGui/QButtonGroup></span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor">#include <QtGui/QCheckBox></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include <QtGui/QComboBox></span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include <QtGui/QGridLayout></span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include <QtGui/QGroupBox></span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <QtGui/QHBoxLayout></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <QtGui/QHeaderView></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <QtGui/QLabel></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <QtGui/QLineEdit></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <QtGui/QListWidget></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include <QtGui/QMainWindow></span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include <QtGui/QMenu></span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include <QtGui/QMenuBar></span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include <QtGui/QPlainTextEdit></span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include <QtGui/QRadioButton></span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include <QtGui/QSpacerItem></span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="preprocessor">#include <QtGui/QStatusBar></span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="preprocessor">#include <QtGui/QTabWidget></span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="preprocessor">#include <QtGui/QToolBar></span></div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="preprocessor">#include <QtGui/QToolButton></span></div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="preprocessor">#include <QtGui/QVBoxLayout></span></div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="preprocessor">#include <QtGui/QWidget></span></div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> QT_BEGIN_NAMESPACE</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> </div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> <span class="keyword">class </span><a class="code" href="classUi__MainWindow.html">Ui_MainWindow</a></div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> {</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     QAction *actionInput;</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     QAction *actionExtent;</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     QAction *actionOutput;</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     QAction *actionQuit;</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     QWidget *centralWidget;</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     QVBoxLayout *verticalLayout;</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     QTabWidget *tabWidget;</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     QWidget *tab;</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     QVBoxLayout *verticalLayout_2;</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     QGridLayout *gridLayout_2;</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     QLineEdit *uly;</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     QToolButton *toolButton_extent;</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     QSpacerItem *horizontalSpacer_2;</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     QLineEdit *lrx;</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     QLineEdit *lry;</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     QListWidget *listWidget_band;</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     QListWidget *listWidget_input;</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     QSpacerItem *horizontalSpacer_3;</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     QLineEdit *extent;</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     QToolButton *toolButton_input;</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     QLabel *label_2;</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     QLabel *label_4;</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     QLineEdit *ulx;</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     QLabel *label_16;</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>     QLabel *label;</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     QToolButton *toolButton;</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     QWidget *tab_2;</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     QGridLayout *gridLayout_4;</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     QSpacerItem *horizontalSpacer_9;</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>     QComboBox *resample;</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>     QSpacerItem *verticalSpacer;</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>     QLineEdit *dy;</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>     QSpacerItem *verticalSpacer_3;</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>     QLabel *label_9;</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>     QSpacerItem *horizontalSpacer_8;</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>     QGroupBox *groupBox;</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>     QGridLayout *gridLayout_3;</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>     QRadioButton *autoscale;</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>     QLineEdit *offset;</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     QRadioButton *manual;</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     QLabel *label_21;</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     QLabel *label_20;</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>     QRadioButton *noscale;</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>     QLineEdit *scale;</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>     QSpacerItem *horizontalSpacer_4;</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>     QLabel *label_10;</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     QLineEdit *as_from;</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     QLabel *label_11;</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     QLineEdit *as_to;</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     QSpacerItem *horizontalSpacer_11;</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>     QLabel *label_15;</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>     QLineEdit *dx;</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>     QLabel *label_18;</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     QLabel *label_17;</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     QSpacerItem *horizontalSpacer_5;</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     QSpacerItem *horizontalSpacer_10;</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     QWidget *tab_3;</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     QVBoxLayout *verticalLayout_3;</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     QGridLayout *gridLayout;</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     QComboBox *otype;</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     QComboBox *compressed;</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     QLabel *label_6;</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     QLabel *label_5;</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     QToolButton *toolButton_output;</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     QLabel *label_3;</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     QToolButton *toolButton_ct;</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>     QLineEdit *output;</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>     QCheckBox *tiled;</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>     QLabel *label_13;</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>     QLineEdit *a_srs;</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     QLabel *label_7;</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     QLabel *label_14;</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     QLineEdit *nodata;</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     QComboBox *oformat;</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     QLineEdit *ct;</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     QLabel *label_12;</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>     QComboBox *interleaved;</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>     QLabel *label_8;</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>     QSpacerItem *horizontalSpacer_6;</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>     QWidget *tab_4;</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>     QVBoxLayout *verticalLayout_5;</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     QVBoxLayout *verticalLayout_4;</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>     QLabel *label_24;</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     QLineEdit *commandLineEdit;</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>     QLabel *label_25;</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>     QPlainTextEdit *consoleEdit;</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>     QSpacerItem *verticalSpacer_2;</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>     QSpacerItem *horizontalSpacer;</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>     QHBoxLayout *horizontalLayout_2;</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>     QToolButton *toolButton_Run;</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>     QSpacerItem *horizontalSpacer_7;</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>     QToolButton *toolButton_defaults;</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>     QMenuBar *menuBar;</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>     QMenu *menuFile;</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>     QToolBar *mainToolBar;</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>     QStatusBar *statusBar;</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>     QButtonGroup *buttonGroup;</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span> </div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>     <span class="keywordtype">void</span> setupUi(QMainWindow *<a class="code" href="classMainWindow.html">MainWindow</a>)</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>     {</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>         <span class="keywordflow">if</span> (MainWindow->objectName().isEmpty())</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>             MainWindow->setObjectName(QString::fromUtf8(<span class="stringliteral">"MainWindow"</span>));</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>         MainWindow->resize(821, 701);</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>         actionInput = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>         actionInput->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionInput"</span>));</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>         actionExtent = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>         actionExtent->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionExtent"</span>));</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>         actionOutput = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>         actionOutput->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionOutput"</span>));</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>         actionQuit = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>         actionQuit->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionQuit"</span>));</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>         centralWidget = <span class="keyword">new</span> QWidget(MainWindow);</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>         centralWidget->setObjectName(QString::fromUtf8(<span class="stringliteral">"centralWidget"</span>));</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>         verticalLayout = <span class="keyword">new</span> QVBoxLayout(centralWidget);</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>         verticalLayout->setSpacing(6);</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>         verticalLayout->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>         verticalLayout->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout"</span>));</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>         tabWidget = <span class="keyword">new</span> QTabWidget(centralWidget);</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>         tabWidget->setObjectName(QString::fromUtf8(<span class="stringliteral">"tabWidget"</span>));</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>         tab = <span class="keyword">new</span> QWidget();</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>         tab->setObjectName(QString::fromUtf8(<span class="stringliteral">"tab"</span>));</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>         verticalLayout_2 = <span class="keyword">new</span> QVBoxLayout(tab);</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>         verticalLayout_2->setSpacing(6);</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>         verticalLayout_2->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>         verticalLayout_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout_2"</span>));</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>         gridLayout_2 = <span class="keyword">new</span> QGridLayout();</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>         gridLayout_2->setSpacing(6);</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>         gridLayout_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"gridLayout_2"</span>));</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>         uly = <span class="keyword">new</span> QLineEdit(tab);</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>         uly->setObjectName(QString::fromUtf8(<span class="stringliteral">"uly"</span>));</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span> </div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>         gridLayout_2->addWidget(uly, 1, 2, 1, 1);</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span> </div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>         toolButton_extent = <span class="keyword">new</span> QToolButton(tab);</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>         toolButton_extent->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_extent"</span>));</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span> </div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>         gridLayout_2->addWidget(toolButton_extent, 4, 2, 1, 1);</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span> </div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>         horizontalSpacer_2 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span> </div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>         gridLayout_2->addItem(horizontalSpacer_2, 1, 1, 1, 1);</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span> </div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>         lrx = <span class="keyword">new</span> QLineEdit(tab);</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>         lrx->setObjectName(QString::fromUtf8(<span class="stringliteral">"lrx"</span>));</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span> </div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>         gridLayout_2->addWidget(lrx, 2, 4, 1, 1);</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span> </div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>         lry = <span class="keyword">new</span> QLineEdit(tab);</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>         lry->setObjectName(QString::fromUtf8(<span class="stringliteral">"lry"</span>));</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span> </div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>         gridLayout_2->addWidget(lry, 3, 2, 1, 1);</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span> </div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>         listWidget_band = <span class="keyword">new</span> QListWidget(tab);</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>         listWidget_band->setObjectName(QString::fromUtf8(<span class="stringliteral">"listWidget_band"</span>));</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span> </div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>         gridLayout_2->addWidget(listWidget_band, 6, 1, 1, 1);</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span> </div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>         listWidget_input = <span class="keyword">new</span> QListWidget(tab);</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>         listWidget_input->setObjectName(QString::fromUtf8(<span class="stringliteral">"listWidget_input"</span>));</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span> </div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>         gridLayout_2->addWidget(listWidget_input, 0, 1, 1, 1);</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span> </div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>         horizontalSpacer_3 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span> </div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>         gridLayout_2->addItem(horizontalSpacer_3, 1, 4, 1, 1);</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span> </div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>         extent = <span class="keyword">new</span> QLineEdit(tab);</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>         extent->setObjectName(QString::fromUtf8(<span class="stringliteral">"extent"</span>));</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span> </div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>         gridLayout_2->addWidget(extent, 4, 1, 1, 1);</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span> </div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>         toolButton_input = <span class="keyword">new</span> QToolButton(tab);</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>         toolButton_input->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_input"</span>));</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span> </div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>         gridLayout_2->addWidget(toolButton_input, 0, 2, 1, 1);</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span> </div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>         label_2 = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>         label_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_2"</span>));</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span> </div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>         gridLayout_2->addWidget(label_2, 1, 0, 1, 1);</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span> </div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>         label_4 = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>         label_4->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_4"</span>));</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span> </div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>         gridLayout_2->addWidget(label_4, 4, 0, 1, 1);</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span> </div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>         ulx = <span class="keyword">new</span> QLineEdit(tab);</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>         ulx->setObjectName(QString::fromUtf8(<span class="stringliteral">"ulx"</span>));</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span> </div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>         gridLayout_2->addWidget(ulx, 2, 1, 1, 1);</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span> </div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>         label_16 = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>         label_16->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_16"</span>));</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span> </div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>         gridLayout_2->addWidget(label_16, 6, 0, 1, 1);</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span> </div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>         label = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>         label->setObjectName(QString::fromUtf8(<span class="stringliteral">"label"</span>));</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span> </div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>         gridLayout_2->addWidget(label, 0, 0, 1, 1);</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span> </div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>         toolButton = <span class="keyword">new</span> QToolButton(tab);</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>         toolButton->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton"</span>));</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span> </div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>         gridLayout_2->addWidget(toolButton, 0, 3, 1, 1);</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span> </div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span> </div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>         verticalLayout_2->addLayout(gridLayout_2);</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span> </div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>         tabWidget->addTab(tab, QString());</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>         tab_2 = <span class="keyword">new</span> QWidget();</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>         tab_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"tab_2"</span>));</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>         gridLayout_4 = <span class="keyword">new</span> QGridLayout(tab_2);</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>         gridLayout_4->setSpacing(6);</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>         gridLayout_4->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>         gridLayout_4->setObjectName(QString::fromUtf8(<span class="stringliteral">"gridLayout_4"</span>));</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>         horizontalSpacer_9 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span> </div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>         gridLayout_4->addItem(horizontalSpacer_9, 1, 9, 1, 1);</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span> </div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>         resample = <span class="keyword">new</span> QComboBox(tab_2);</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>         resample->setObjectName(QString::fromUtf8(<span class="stringliteral">"resample"</span>));</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span> </div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>         gridLayout_4->addWidget(resample, 0, 1, 1, 1);</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span> </div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>         verticalSpacer = <span class="keyword">new</span> QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span> </div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>         gridLayout_4->addItem(verticalSpacer, 2, 4, 1, 1);</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span> </div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>         dy = <span class="keyword">new</span> QLineEdit(tab_2);</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>         dy->setObjectName(QString::fromUtf8(<span class="stringliteral">"dy"</span>));</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span> </div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>         gridLayout_4->addWidget(dy, 1, 4, 1, 1);</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span> </div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>         verticalSpacer_3 = <span class="keyword">new</span> QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span> </div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>         gridLayout_4->addItem(verticalSpacer_3, 4, 0, 1, 1);</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span> </div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>         label_9 = <span class="keyword">new</span> QLabel(tab_2);</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>         label_9->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_9"</span>));</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span> </div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>         gridLayout_4->addWidget(label_9, 1, 0, 1, 1);</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span> </div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>         horizontalSpacer_8 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span> </div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>         gridLayout_4->addItem(horizontalSpacer_8, 1, 3, 1, 1);</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span> </div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>         groupBox = <span class="keyword">new</span> QGroupBox(tab_2);</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>         groupBox->setObjectName(QString::fromUtf8(<span class="stringliteral">"groupBox"</span>));</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>         gridLayout_3 = <span class="keyword">new</span> QGridLayout(groupBox);</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>         gridLayout_3->setSpacing(6);</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>         gridLayout_3->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>         gridLayout_3->setObjectName(QString::fromUtf8(<span class="stringliteral">"gridLayout_3"</span>));</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>         autoscale = <span class="keyword">new</span> QRadioButton(groupBox);</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>         buttonGroup = <span class="keyword">new</span> QButtonGroup(MainWindow);</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>         buttonGroup->setObjectName(QString::fromUtf8(<span class="stringliteral">"buttonGroup"</span>));</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>         buttonGroup->addButton(autoscale);</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>         autoscale->setObjectName(QString::fromUtf8(<span class="stringliteral">"autoscale"</span>));</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span> </div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>         gridLayout_3->addWidget(autoscale, 1, 0, 1, 1);</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span> </div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>         offset = <span class="keyword">new</span> QLineEdit(groupBox);</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>         offset->setObjectName(QString::fromUtf8(<span class="stringliteral">"offset"</span>));</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span> </div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>         gridLayout_3->addWidget(offset, 2, 4, 1, 1);</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span> </div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>         manual = <span class="keyword">new</span> QRadioButton(groupBox);</div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>         buttonGroup->addButton(manual);</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>         manual->setObjectName(QString::fromUtf8(<span class="stringliteral">"manual"</span>));</div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span> </div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>         gridLayout_3->addWidget(manual, 2, 0, 1, 1);</div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span> </div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>         label_21 = <span class="keyword">new</span> QLabel(groupBox);</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>         label_21->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_21"</span>));</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span> </div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>         gridLayout_3->addWidget(label_21, 2, 3, 1, 1);</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span> </div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>         label_20 = <span class="keyword">new</span> QLabel(groupBox);</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>         label_20->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_20"</span>));</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span> </div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>         gridLayout_3->addWidget(label_20, 2, 1, 1, 1);</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span> </div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>         noscale = <span class="keyword">new</span> QRadioButton(groupBox);</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>         buttonGroup->addButton(noscale);</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>         noscale->setObjectName(QString::fromUtf8(<span class="stringliteral">"noscale"</span>));</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span> </div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>         gridLayout_3->addWidget(noscale, 0, 0, 1, 1);</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span> </div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>         scale = <span class="keyword">new</span> QLineEdit(groupBox);</div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>         scale->setObjectName(QString::fromUtf8(<span class="stringliteral">"scale"</span>));</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span> </div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>         gridLayout_3->addWidget(scale, 2, 2, 1, 1);</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span> </div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>         horizontalSpacer_4 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span> </div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>         gridLayout_3->addItem(horizontalSpacer_4, 2, 5, 1, 1);</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span> </div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>         label_10 = <span class="keyword">new</span> QLabel(groupBox);</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>         label_10->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_10"</span>));</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span> </div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>         gridLayout_3->addWidget(label_10, 1, 1, 1, 1);</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span> </div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>         as_from = <span class="keyword">new</span> QLineEdit(groupBox);</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>         as_from->setObjectName(QString::fromUtf8(<span class="stringliteral">"as_from"</span>));</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span> </div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>         gridLayout_3->addWidget(as_from, 1, 2, 1, 1);</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span> </div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>         label_11 = <span class="keyword">new</span> QLabel(groupBox);</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>         label_11->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_11"</span>));</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span> </div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>         gridLayout_3->addWidget(label_11, 1, 3, 1, 1);</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span> </div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>         as_to = <span class="keyword">new</span> QLineEdit(groupBox);</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>         as_to->setObjectName(QString::fromUtf8(<span class="stringliteral">"as_to"</span>));</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span> </div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>         gridLayout_3->addWidget(as_to, 1, 4, 1, 1);</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span> </div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>         horizontalSpacer_11 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span> </div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>         gridLayout_3->addItem(horizontalSpacer_11, 1, 5, 1, 1);</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span> </div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span> </div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>         gridLayout_4->addWidget(groupBox, 3, 0, 1, 8);</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span> </div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>         label_15 = <span class="keyword">new</span> QLabel(tab_2);</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>         label_15->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_15"</span>));</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span> </div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>         gridLayout_4->addWidget(label_15, 1, 2, 1, 1);</div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span> </div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>         dx = <span class="keyword">new</span> QLineEdit(tab_2);</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>         dx->setObjectName(QString::fromUtf8(<span class="stringliteral">"dx"</span>));</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span> </div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>         gridLayout_4->addWidget(dx, 1, 1, 1, 1);</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span> </div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>         label_18 = <span class="keyword">new</span> QLabel(tab_2);</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>         label_18->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_18"</span>));</div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span> </div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>         gridLayout_4->addWidget(label_18, 1, 5, 1, 1);</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span> </div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>         label_17 = <span class="keyword">new</span> QLabel(tab_2);</div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>         label_17->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_17"</span>));</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span> </div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>         gridLayout_4->addWidget(label_17, 0, 0, 1, 1);</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span> </div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>         horizontalSpacer_5 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span> </div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>         gridLayout_4->addItem(horizontalSpacer_5, 1, 6, 1, 1);</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span> </div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>         horizontalSpacer_10 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span> </div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>         gridLayout_4->addItem(horizontalSpacer_10, 0, 3, 1, 1);</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span> </div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>         tabWidget->addTab(tab_2, QString());</div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>         tab_3 = <span class="keyword">new</span> QWidget();</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>         tab_3->setObjectName(QString::fromUtf8(<span class="stringliteral">"tab_3"</span>));</div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>         verticalLayout_3 = <span class="keyword">new</span> QVBoxLayout(tab_3);</div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>         verticalLayout_3->setSpacing(6);</div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>         verticalLayout_3->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>         verticalLayout_3->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout_3"</span>));</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>         gridLayout = <span class="keyword">new</span> QGridLayout();</div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span>         gridLayout->setSpacing(6);</div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>         gridLayout->setObjectName(QString::fromUtf8(<span class="stringliteral">"gridLayout"</span>));</div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>         otype = <span class="keyword">new</span> QComboBox(tab_3);</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>         otype->setObjectName(QString::fromUtf8(<span class="stringliteral">"otype"</span>));</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span> </div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>         gridLayout->addWidget(otype, 3, 1, 1, 1);</div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span> </div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>         compressed = <span class="keyword">new</span> QComboBox(tab_3);</div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>         compressed->setObjectName(QString::fromUtf8(<span class="stringliteral">"compressed"</span>));</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span> </div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>         gridLayout->addWidget(compressed, 6, 5, 1, 1);</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span> </div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>         label_6 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>         label_6->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_6"</span>));</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span> </div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>         gridLayout->addWidget(label_6, 3, 0, 1, 1);</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span> </div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>         label_5 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>         label_5->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_5"</span>));</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span> </div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>         gridLayout->addWidget(label_5, 2, 0, 1, 1);</div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span> </div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span>         toolButton_output = <span class="keyword">new</span> QToolButton(tab_3);</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>         toolButton_output->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_output"</span>));</div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span> </div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span>         gridLayout->addWidget(toolButton_output, 1, 2, 1, 1);</div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span> </div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span>         label_3 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span>         label_3->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_3"</span>));</div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span> </div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span>         gridLayout->addWidget(label_3, 1, 0, 1, 1);</div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span> </div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>         toolButton_ct = <span class="keyword">new</span> QToolButton(tab_3);</div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>         toolButton_ct->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_ct"</span>));</div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span> </div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span>         gridLayout->addWidget(toolButton_ct, 5, 2, 1, 1);</div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span> </div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span>         output = <span class="keyword">new</span> QLineEdit(tab_3);</div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span>         output->setObjectName(QString::fromUtf8(<span class="stringliteral">"output"</span>));</div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span> </div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span>         gridLayout->addWidget(output, 1, 1, 1, 1);</div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span> </div>
-<div class="line"><a name="l00445"></a><span class="lineno">  445</span>         tiled = <span class="keyword">new</span> QCheckBox(tab_3);</div>
-<div class="line"><a name="l00446"></a><span class="lineno">  446</span>         tiled->setObjectName(QString::fromUtf8(<span class="stringliteral">"tiled"</span>));</div>
-<div class="line"><a name="l00447"></a><span class="lineno">  447</span> </div>
-<div class="line"><a name="l00448"></a><span class="lineno">  448</span>         gridLayout->addWidget(tiled, 6, 2, 1, 1);</div>
-<div class="line"><a name="l00449"></a><span class="lineno">  449</span> </div>
-<div class="line"><a name="l00450"></a><span class="lineno">  450</span>         label_13 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00451"></a><span class="lineno">  451</span>         label_13->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_13"</span>));</div>
-<div class="line"><a name="l00452"></a><span class="lineno">  452</span> </div>
-<div class="line"><a name="l00453"></a><span class="lineno">  453</span>         gridLayout->addWidget(label_13, 6, 4, 1, 1);</div>
-<div class="line"><a name="l00454"></a><span class="lineno">  454</span> </div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span>         a_srs = <span class="keyword">new</span> QLineEdit(tab_3);</div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</span>         a_srs->setObjectName(QString::fromUtf8(<span class="stringliteral">"a_srs"</span>));</div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span> </div>
-<div class="line"><a name="l00458"></a><span class="lineno">  458</span>         gridLayout->addWidget(a_srs, 2, 1, 1, 1);</div>
-<div class="line"><a name="l00459"></a><span class="lineno">  459</span> </div>
-<div class="line"><a name="l00460"></a><span class="lineno">  460</span>         label_7 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span>         label_7->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_7"</span>));</div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span> </div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span>         gridLayout->addWidget(label_7, 4, 0, 1, 1);</div>
-<div class="line"><a name="l00464"></a><span class="lineno">  464</span> </div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span>         label_14 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>         label_14->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_14"</span>));</div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span> </div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span>         gridLayout->addWidget(label_14, 7, 0, 1, 1);</div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span> </div>
-<div class="line"><a name="l00470"></a><span class="lineno">  470</span>         nodata = <span class="keyword">new</span> QLineEdit(tab_3);</div>
-<div class="line"><a name="l00471"></a><span class="lineno">  471</span>         nodata->setObjectName(QString::fromUtf8(<span class="stringliteral">"nodata"</span>));</div>
-<div class="line"><a name="l00472"></a><span class="lineno">  472</span> </div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span>         gridLayout->addWidget(nodata, 7, 1, 1, 1);</div>
-<div class="line"><a name="l00474"></a><span class="lineno">  474</span> </div>
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span>         oformat = <span class="keyword">new</span> QComboBox(tab_3);</div>
-<div class="line"><a name="l00476"></a><span class="lineno">  476</span>         oformat->setObjectName(QString::fromUtf8(<span class="stringliteral">"oformat"</span>));</div>
-<div class="line"><a name="l00477"></a><span class="lineno">  477</span> </div>
-<div class="line"><a name="l00478"></a><span class="lineno">  478</span>         gridLayout->addWidget(oformat, 4, 1, 1, 1);</div>
-<div class="line"><a name="l00479"></a><span class="lineno">  479</span> </div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span>         ct = <span class="keyword">new</span> QLineEdit(tab_3);</div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span>         ct->setObjectName(QString::fromUtf8(<span class="stringliteral">"ct"</span>));</div>
-<div class="line"><a name="l00482"></a><span class="lineno">  482</span> </div>
-<div class="line"><a name="l00483"></a><span class="lineno">  483</span>         gridLayout->addWidget(ct, 5, 1, 1, 1);</div>
-<div class="line"><a name="l00484"></a><span class="lineno">  484</span> </div>
-<div class="line"><a name="l00485"></a><span class="lineno">  485</span>         label_12 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00486"></a><span class="lineno">  486</span>         label_12->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_12"</span>));</div>
-<div class="line"><a name="l00487"></a><span class="lineno">  487</span> </div>
-<div class="line"><a name="l00488"></a><span class="lineno">  488</span>         gridLayout->addWidget(label_12, 6, 0, 1, 1);</div>
-<div class="line"><a name="l00489"></a><span class="lineno">  489</span> </div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span>         interleaved = <span class="keyword">new</span> QComboBox(tab_3);</div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span>         interleaved->setObjectName(QString::fromUtf8(<span class="stringliteral">"interleaved"</span>));</div>
-<div class="line"><a name="l00492"></a><span class="lineno">  492</span> </div>
-<div class="line"><a name="l00493"></a><span class="lineno">  493</span>         gridLayout->addWidget(interleaved, 6, 1, 1, 1);</div>
-<div class="line"><a name="l00494"></a><span class="lineno">  494</span> </div>
-<div class="line"><a name="l00495"></a><span class="lineno">  495</span>         label_8 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00496"></a><span class="lineno">  496</span>         label_8->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_8"</span>));</div>
-<div class="line"><a name="l00497"></a><span class="lineno">  497</span> </div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span>         gridLayout->addWidget(label_8, 5, 0, 1, 1);</div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span> </div>
-<div class="line"><a name="l00500"></a><span class="lineno">  500</span>         horizontalSpacer_6 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00501"></a><span class="lineno">  501</span> </div>
-<div class="line"><a name="l00502"></a><span class="lineno">  502</span>         gridLayout->addItem(horizontalSpacer_6, 6, 3, 1, 1);</div>
-<div class="line"><a name="l00503"></a><span class="lineno">  503</span> </div>
-<div class="line"><a name="l00504"></a><span class="lineno">  504</span> </div>
-<div class="line"><a name="l00505"></a><span class="lineno">  505</span>         verticalLayout_3->addLayout(gridLayout);</div>
-<div class="line"><a name="l00506"></a><span class="lineno">  506</span> </div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span>         tabWidget->addTab(tab_3, QString());</div>
-<div class="line"><a name="l00508"></a><span class="lineno">  508</span>         tab_4 = <span class="keyword">new</span> QWidget();</div>
-<div class="line"><a name="l00509"></a><span class="lineno">  509</span>         tab_4->setObjectName(QString::fromUtf8(<span class="stringliteral">"tab_4"</span>));</div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span>         verticalLayout_5 = <span class="keyword">new</span> QVBoxLayout(tab_4);</div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span>         verticalLayout_5->setSpacing(6);</div>
-<div class="line"><a name="l00512"></a><span class="lineno">  512</span>         verticalLayout_5->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00513"></a><span class="lineno">  513</span>         verticalLayout_5->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout_5"</span>));</div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span>         verticalLayout_4 = <span class="keyword">new</span> QVBoxLayout();</div>
-<div class="line"><a name="l00515"></a><span class="lineno">  515</span>         verticalLayout_4->setSpacing(6);</div>
-<div class="line"><a name="l00516"></a><span class="lineno">  516</span>         verticalLayout_4->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout_4"</span>));</div>
-<div class="line"><a name="l00517"></a><span class="lineno">  517</span>         label_24 = <span class="keyword">new</span> QLabel(tab_4);</div>
-<div class="line"><a name="l00518"></a><span class="lineno">  518</span>         label_24->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_24"</span>));</div>
-<div class="line"><a name="l00519"></a><span class="lineno">  519</span> </div>
-<div class="line"><a name="l00520"></a><span class="lineno">  520</span>         verticalLayout_4->addWidget(label_24);</div>
-<div class="line"><a name="l00521"></a><span class="lineno">  521</span> </div>
-<div class="line"><a name="l00522"></a><span class="lineno">  522</span>         commandLineEdit = <span class="keyword">new</span> QLineEdit(tab_4);</div>
-<div class="line"><a name="l00523"></a><span class="lineno">  523</span>         commandLineEdit->setObjectName(QString::fromUtf8(<span class="stringliteral">"commandLineEdit"</span>));</div>
-<div class="line"><a name="l00524"></a><span class="lineno">  524</span> </div>
-<div class="line"><a name="l00525"></a><span class="lineno">  525</span>         verticalLayout_4->addWidget(commandLineEdit);</div>
-<div class="line"><a name="l00526"></a><span class="lineno">  526</span> </div>
-<div class="line"><a name="l00527"></a><span class="lineno">  527</span>         label_25 = <span class="keyword">new</span> QLabel(tab_4);</div>
-<div class="line"><a name="l00528"></a><span class="lineno">  528</span>         label_25->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_25"</span>));</div>
-<div class="line"><a name="l00529"></a><span class="lineno">  529</span> </div>
-<div class="line"><a name="l00530"></a><span class="lineno">  530</span>         verticalLayout_4->addWidget(label_25);</div>
-<div class="line"><a name="l00531"></a><span class="lineno">  531</span> </div>
-<div class="line"><a name="l00532"></a><span class="lineno">  532</span>         consoleEdit = <span class="keyword">new</span> QPlainTextEdit(tab_4);</div>
-<div class="line"><a name="l00533"></a><span class="lineno">  533</span>         consoleEdit->setObjectName(QString::fromUtf8(<span class="stringliteral">"consoleEdit"</span>));</div>
-<div class="line"><a name="l00534"></a><span class="lineno">  534</span> </div>
-<div class="line"><a name="l00535"></a><span class="lineno">  535</span>         verticalLayout_4->addWidget(consoleEdit);</div>
-<div class="line"><a name="l00536"></a><span class="lineno">  536</span> </div>
-<div class="line"><a name="l00537"></a><span class="lineno">  537</span> </div>
-<div class="line"><a name="l00538"></a><span class="lineno">  538</span>         verticalLayout_5->addLayout(verticalLayout_4);</div>
-<div class="line"><a name="l00539"></a><span class="lineno">  539</span> </div>
-<div class="line"><a name="l00540"></a><span class="lineno">  540</span>         tabWidget->addTab(tab_4, QString());</div>
-<div class="line"><a name="l00541"></a><span class="lineno">  541</span> </div>
-<div class="line"><a name="l00542"></a><span class="lineno">  542</span>         verticalLayout->addWidget(tabWidget);</div>
-<div class="line"><a name="l00543"></a><span class="lineno">  543</span> </div>
-<div class="line"><a name="l00544"></a><span class="lineno">  544</span>         verticalSpacer_2 = <span class="keyword">new</span> QSpacerItem(20, 112, QSizePolicy::Minimum, QSizePolicy::Expanding);</div>
-<div class="line"><a name="l00545"></a><span class="lineno">  545</span> </div>
-<div class="line"><a name="l00546"></a><span class="lineno">  546</span>         verticalLayout->addItem(verticalSpacer_2);</div>
-<div class="line"><a name="l00547"></a><span class="lineno">  547</span> </div>
-<div class="line"><a name="l00548"></a><span class="lineno">  548</span>         horizontalSpacer = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00549"></a><span class="lineno">  549</span> </div>
-<div class="line"><a name="l00550"></a><span class="lineno">  550</span>         verticalLayout->addItem(horizontalSpacer);</div>
-<div class="line"><a name="l00551"></a><span class="lineno">  551</span> </div>
-<div class="line"><a name="l00552"></a><span class="lineno">  552</span>         horizontalLayout_2 = <span class="keyword">new</span> QHBoxLayout();</div>
-<div class="line"><a name="l00553"></a><span class="lineno">  553</span>         horizontalLayout_2->setSpacing(6);</div>
-<div class="line"><a name="l00554"></a><span class="lineno">  554</span>         horizontalLayout_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"horizontalLayout_2"</span>));</div>
-<div class="line"><a name="l00555"></a><span class="lineno">  555</span>         toolButton_Run = <span class="keyword">new</span> QToolButton(centralWidget);</div>
-<div class="line"><a name="l00556"></a><span class="lineno">  556</span>         toolButton_Run->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_Run"</span>));</div>
-<div class="line"><a name="l00557"></a><span class="lineno">  557</span> </div>
-<div class="line"><a name="l00558"></a><span class="lineno">  558</span>         horizontalLayout_2->addWidget(toolButton_Run);</div>
-<div class="line"><a name="l00559"></a><span class="lineno">  559</span> </div>
-<div class="line"><a name="l00560"></a><span class="lineno">  560</span>         horizontalSpacer_7 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00561"></a><span class="lineno">  561</span> </div>
-<div class="line"><a name="l00562"></a><span class="lineno">  562</span>         horizontalLayout_2->addItem(horizontalSpacer_7);</div>
-<div class="line"><a name="l00563"></a><span class="lineno">  563</span> </div>
-<div class="line"><a name="l00564"></a><span class="lineno">  564</span>         toolButton_defaults = <span class="keyword">new</span> QToolButton(centralWidget);</div>
-<div class="line"><a name="l00565"></a><span class="lineno">  565</span>         toolButton_defaults->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_defaults"</span>));</div>
-<div class="line"><a name="l00566"></a><span class="lineno">  566</span> </div>
-<div class="line"><a name="l00567"></a><span class="lineno">  567</span>         horizontalLayout_2->addWidget(toolButton_defaults);</div>
-<div class="line"><a name="l00568"></a><span class="lineno">  568</span> </div>
-<div class="line"><a name="l00569"></a><span class="lineno">  569</span> </div>
-<div class="line"><a name="l00570"></a><span class="lineno">  570</span>         verticalLayout->addLayout(horizontalLayout_2);</div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span> </div>
-<div class="line"><a name="l00572"></a><span class="lineno">  572</span>         MainWindow->setCentralWidget(centralWidget);</div>
-<div class="line"><a name="l00573"></a><span class="lineno">  573</span>         menuBar = <span class="keyword">new</span> QMenuBar(MainWindow);</div>
-<div class="line"><a name="l00574"></a><span class="lineno">  574</span>         menuBar->setObjectName(QString::fromUtf8(<span class="stringliteral">"menuBar"</span>));</div>
-<div class="line"><a name="l00575"></a><span class="lineno">  575</span>         menuBar->setGeometry(QRect(0, 0, 821, 25));</div>
-<div class="line"><a name="l00576"></a><span class="lineno">  576</span>         menuFile = <span class="keyword">new</span> QMenu(menuBar);</div>
-<div class="line"><a name="l00577"></a><span class="lineno">  577</span>         menuFile->setObjectName(QString::fromUtf8(<span class="stringliteral">"menuFile"</span>));</div>
-<div class="line"><a name="l00578"></a><span class="lineno">  578</span>         MainWindow->setMenuBar(menuBar);</div>
-<div class="line"><a name="l00579"></a><span class="lineno">  579</span>         mainToolBar = <span class="keyword">new</span> QToolBar(MainWindow);</div>
-<div class="line"><a name="l00580"></a><span class="lineno">  580</span>         mainToolBar->setObjectName(QString::fromUtf8(<span class="stringliteral">"mainToolBar"</span>));</div>
-<div class="line"><a name="l00581"></a><span class="lineno">  581</span>         MainWindow->addToolBar(Qt::TopToolBarArea, mainToolBar);</div>
-<div class="line"><a name="l00582"></a><span class="lineno">  582</span>         statusBar = <span class="keyword">new</span> QStatusBar(MainWindow);</div>
-<div class="line"><a name="l00583"></a><span class="lineno">  583</span>         statusBar->setObjectName(QString::fromUtf8(<span class="stringliteral">"statusBar"</span>));</div>
-<div class="line"><a name="l00584"></a><span class="lineno">  584</span>         MainWindow->setStatusBar(statusBar);</div>
-<div class="line"><a name="l00585"></a><span class="lineno">  585</span>         QWidget::setTabOrder(toolButton_input, uly);</div>
-<div class="line"><a name="l00586"></a><span class="lineno">  586</span>         QWidget::setTabOrder(uly, ulx);</div>
-<div class="line"><a name="l00587"></a><span class="lineno">  587</span>         QWidget::setTabOrder(ulx, lrx);</div>
-<div class="line"><a name="l00588"></a><span class="lineno">  588</span>         QWidget::setTabOrder(lrx, lry);</div>
-<div class="line"><a name="l00589"></a><span class="lineno">  589</span>         QWidget::setTabOrder(lry, extent);</div>
-<div class="line"><a name="l00590"></a><span class="lineno">  590</span>         QWidget::setTabOrder(extent, toolButton_extent);</div>
-<div class="line"><a name="l00591"></a><span class="lineno">  591</span>         QWidget::setTabOrder(toolButton_extent, listWidget_band);</div>
-<div class="line"><a name="l00592"></a><span class="lineno">  592</span>         QWidget::setTabOrder(listWidget_band, resample);</div>
-<div class="line"><a name="l00593"></a><span class="lineno">  593</span>         QWidget::setTabOrder(resample, dx);</div>
-<div class="line"><a name="l00594"></a><span class="lineno">  594</span>         QWidget::setTabOrder(dx, dy);</div>
-<div class="line"><a name="l00595"></a><span class="lineno">  595</span>         QWidget::setTabOrder(dy, noscale);</div>
-<div class="line"><a name="l00596"></a><span class="lineno">  596</span>         QWidget::setTabOrder(noscale, autoscale);</div>
-<div class="line"><a name="l00597"></a><span class="lineno">  597</span>         QWidget::setTabOrder(autoscale, scale);</div>
-<div class="line"><a name="l00598"></a><span class="lineno">  598</span>         QWidget::setTabOrder(scale, offset);</div>
-<div class="line"><a name="l00599"></a><span class="lineno">  599</span>         QWidget::setTabOrder(offset, output);</div>
-<div class="line"><a name="l00600"></a><span class="lineno">  600</span>         QWidget::setTabOrder(output, toolButton_output);</div>
-<div class="line"><a name="l00601"></a><span class="lineno">  601</span>         QWidget::setTabOrder(toolButton_output, a_srs);</div>
-<div class="line"><a name="l00602"></a><span class="lineno">  602</span>         QWidget::setTabOrder(a_srs, otype);</div>
-<div class="line"><a name="l00603"></a><span class="lineno">  603</span>         QWidget::setTabOrder(otype, oformat);</div>
-<div class="line"><a name="l00604"></a><span class="lineno">  604</span>         QWidget::setTabOrder(oformat, ct);</div>
-<div class="line"><a name="l00605"></a><span class="lineno">  605</span>         QWidget::setTabOrder(ct, toolButton_ct);</div>
-<div class="line"><a name="l00606"></a><span class="lineno">  606</span>         QWidget::setTabOrder(toolButton_ct, interleaved);</div>
-<div class="line"><a name="l00607"></a><span class="lineno">  607</span>         QWidget::setTabOrder(interleaved, tiled);</div>
-<div class="line"><a name="l00608"></a><span class="lineno">  608</span>         QWidget::setTabOrder(tiled, compressed);</div>
-<div class="line"><a name="l00609"></a><span class="lineno">  609</span>         QWidget::setTabOrder(compressed, nodata);</div>
-<div class="line"><a name="l00610"></a><span class="lineno">  610</span>         QWidget::setTabOrder(nodata, toolButton_Run);</div>
-<div class="line"><a name="l00611"></a><span class="lineno">  611</span>         QWidget::setTabOrder(toolButton_Run, toolButton_defaults);</div>
-<div class="line"><a name="l00612"></a><span class="lineno">  612</span>         QWidget::setTabOrder(toolButton_defaults, manual);</div>
-<div class="line"><a name="l00613"></a><span class="lineno">  613</span>         QWidget::setTabOrder(manual, consoleEdit);</div>
-<div class="line"><a name="l00614"></a><span class="lineno">  614</span>         QWidget::setTabOrder(consoleEdit, commandLineEdit);</div>
-<div class="line"><a name="l00615"></a><span class="lineno">  615</span>         QWidget::setTabOrder(commandLineEdit, listWidget_input);</div>
-<div class="line"><a name="l00616"></a><span class="lineno">  616</span>         QWidget::setTabOrder(listWidget_input, tabWidget);</div>
-<div class="line"><a name="l00617"></a><span class="lineno">  617</span> </div>
-<div class="line"><a name="l00618"></a><span class="lineno">  618</span>         menuBar->addAction(menuFile->menuAction());</div>
-<div class="line"><a name="l00619"></a><span class="lineno">  619</span>         menuFile->addAction(actionInput);</div>
-<div class="line"><a name="l00620"></a><span class="lineno">  620</span>         menuFile->addAction(actionExtent);</div>
-<div class="line"><a name="l00621"></a><span class="lineno">  621</span>         menuFile->addAction(actionOutput);</div>
-<div class="line"><a name="l00622"></a><span class="lineno">  622</span>         menuFile->addAction(actionQuit);</div>
-<div class="line"><a name="l00623"></a><span class="lineno">  623</span> </div>
-<div class="line"><a name="l00624"></a><span class="lineno">  624</span>         retranslateUi(MainWindow);</div>
-<div class="line"><a name="l00625"></a><span class="lineno">  625</span> </div>
-<div class="line"><a name="l00626"></a><span class="lineno">  626</span>         tabWidget->setCurrentIndex(0);</div>
-<div class="line"><a name="l00627"></a><span class="lineno">  627</span> </div>
-<div class="line"><a name="l00628"></a><span class="lineno">  628</span> </div>
-<div class="line"><a name="l00629"></a><span class="lineno">  629</span>         QMetaObject::connectSlotsByName(MainWindow);</div>
-<div class="line"><a name="l00630"></a><span class="lineno">  630</span>     } <span class="comment">// setupUi</span></div>
-<div class="line"><a name="l00631"></a><span class="lineno">  631</span> </div>
-<div class="line"><a name="l00632"></a><span class="lineno">  632</span>     <span class="keywordtype">void</span> retranslateUi(QMainWindow *MainWindow)</div>
-<div class="line"><a name="l00633"></a><span class="lineno">  633</span>     {</div>
-<div class="line"><a name="l00634"></a><span class="lineno">  634</span>         MainWindow->setWindowTitle(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"pkcrop_gui"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00635"></a><span class="lineno">  635</span>         actionInput->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Input(s)"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00636"></a><span class="lineno">  636</span>         actionInput->setShortcut(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Alt+I"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00637"></a><span class="lineno">  637</span>         actionExtent->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Extent"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00638"></a><span class="lineno">  638</span>         actionExtent->setShortcut(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Alt+E"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00639"></a><span class="lineno">  639</span>         actionOutput->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00640"></a><span class="lineno">  640</span>         actionOutput->setShortcut(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Alt+O"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00641"></a><span class="lineno">  641</span>         actionQuit->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Quit"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00642"></a><span class="lineno">  642</span>         actionQuit->setShortcut(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Alt+Q"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00643"></a><span class="lineno">  643</span>         toolButton_extent->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00644"></a><span class="lineno">  644</span>         toolButton_input->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00645"></a><span class="lineno">  645</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00646"></a><span class="lineno">  646</span> <span class="preprocessor"></span>        label_2->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Provide geographical extent to crop in coordinate reference system of input data</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00647"></a><span class="lineno">  647</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00648"></a><span class="lineno">  648</span> <span class="preprocessor"></span>        label_2->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Geographical extent"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00649"></a><span class="lineno">  649</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00650"></a><span class="lineno">  650</span> <span class="preprocessor"></span>        label_4->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Use an external OGR vector file to define the geographical extent to crop. Coordinate reference systems of input and vector must be identical</p></body></html>"</s [...]
-<div class="line"><a name="l00651"></a><span class="lineno">  651</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00652"></a><span class="lineno">  652</span> <span class="preprocessor"></span>        label_4->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Extent via vector:"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00653"></a><span class="lineno">  653</span> <span class="preprocessor">#ifndef QT_NO_WHATSTHIS</span></div>
-<div class="line"><a name="l00654"></a><span class="lineno">  654</span> <span class="preprocessor"></span>        label_16->setWhatsThis(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>First select input image. Then select bands by clicking in the table (use Ctrl and Shift to select multiple bands)</p></body></html>"</span>, 0, QApplication::U [...]
-<div class="line"><a name="l00655"></a><span class="lineno">  655</span> <span class="preprocessor">#endif // QT_NO_WHATSTHIS</span></div>
-<div class="line"><a name="l00656"></a><span class="lineno">  656</span> <span class="preprocessor"></span>        label_16->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Select bands"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00657"></a><span class="lineno">  657</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00658"></a><span class="lineno">  658</span> <span class="preprocessor"></span>        label->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Input image(s)</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00659"></a><span class="lineno">  659</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00660"></a><span class="lineno">  660</span> <span class="preprocessor"></span>        label->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Input image(s)"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00661"></a><span class="lineno">  661</span>         toolButton->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"clear"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00662"></a><span class="lineno">  662</span>         tabWidget->setTabText(tabWidget->indexOf(tab), QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Input"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00663"></a><span class="lineno">  663</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00664"></a><span class="lineno">  664</span> <span class="preprocessor"></span>        label_9->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Output resolution in x and y distance measure (e.g., meter). Leave empty to read from input data</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00665"></a><span class="lineno">  665</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00666"></a><span class="lineno">  666</span> <span class="preprocessor"></span>        label_9->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output resolution"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00667"></a><span class="lineno">  667</span>         groupBox->setTitle(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Scale data"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00668"></a><span class="lineno">  668</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00669"></a><span class="lineno">  669</span> <span class="preprocessor"></span>        autoscale->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Auto scale input data from to (e.g., use from=0 and to=255 for Byte type image)</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00670"></a><span class="lineno">  670</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00671"></a><span class="lineno">  671</span> <span class="preprocessor"></span>        autoscale->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"autoscale"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00672"></a><span class="lineno">  672</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00673"></a><span class="lineno">  673</span> <span class="preprocessor"></span>        manual->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Manually scale data using scale and offset: output=scale*input+offset</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00674"></a><span class="lineno">  674</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00675"></a><span class="lineno">  675</span> <span class="preprocessor"></span>        manual->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"manual"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00676"></a><span class="lineno">  676</span>         label_21->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"offset"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00677"></a><span class="lineno">  677</span>         label_20->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"scale"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00678"></a><span class="lineno">  678</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00679"></a><span class="lineno">  679</span> <span class="preprocessor"></span>        noscale->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Do not scale the data</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00680"></a><span class="lineno">  680</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00681"></a><span class="lineno">  681</span> <span class="preprocessor"></span>        noscale->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"no scaling"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00682"></a><span class="lineno">  682</span>         label_10->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"from"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00683"></a><span class="lineno">  683</span>         label_11->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"to"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00684"></a><span class="lineno">  684</span>         label_15->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"dx"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00685"></a><span class="lineno">  685</span>         label_18->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"dy"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00686"></a><span class="lineno">  686</span>         label_17->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Resample method"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00687"></a><span class="lineno">  687</span>         tabWidget->setTabText(tabWidget->indexOf(tab_2), QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Scaling"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00688"></a><span class="lineno">  688</span>         label_6->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output data type"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00689"></a><span class="lineno">  689</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00690"></a><span class="lineno">  690</span> <span class="preprocessor"></span>        label_5->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Assign projection (e.g., epsg:3035). Notice this will not re-project the image. Use gdalwarp instead.</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00691"></a><span class="lineno">  691</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00692"></a><span class="lineno">  692</span> <span class="preprocessor"></span>        label_5->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Assign projection (EPSG:code)"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00693"></a><span class="lineno">  693</span>         toolButton_output->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00694"></a><span class="lineno">  694</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00695"></a><span class="lineno">  695</span> <span class="preprocessor"></span>        label_3->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Output raster image</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00696"></a><span class="lineno">  696</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00697"></a><span class="lineno">  697</span> <span class="preprocessor"></span>        label_3->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output image"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00698"></a><span class="lineno">  698</span>         toolButton_ct->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00699"></a><span class="lineno">  699</span>         tiled->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Tiled"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00700"></a><span class="lineno">  700</span>         label_13->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"compressed"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00701"></a><span class="lineno">  701</span>         label_7->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output image format"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00702"></a><span class="lineno">  702</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00703"></a><span class="lineno">  703</span> <span class="preprocessor"></span>        label_14->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Nodata value to put in image if out of bounds</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00704"></a><span class="lineno">  704</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00705"></a><span class="lineno">  705</span> <span class="preprocessor"></span>        label_14->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output nodata value"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00706"></a><span class="lineno">  706</span>         label_12->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Interleaved"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00707"></a><span class="lineno">  707</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00708"></a><span class="lineno">  708</span> <span class="preprocessor"></span>        label_8->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Color table must be provided as ASCII text file with five (space delimited) columns:</p><p>value red green blue alpha</p></body></html>"</span>, 0, QAp [...]
-<div class="line"><a name="l00709"></a><span class="lineno">  709</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00710"></a><span class="lineno">  710</span> <span class="preprocessor"></span>        label_8->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Color table (ASCII)"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00711"></a><span class="lineno">  711</span>         tabWidget->setTabText(tabWidget->indexOf(tab_3), QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00712"></a><span class="lineno">  712</span>         label_24->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Command line"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00713"></a><span class="lineno">  713</span>         label_25->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Console output"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00714"></a><span class="lineno">  714</span>         tabWidget->setTabText(tabWidget->indexOf(tab_4), QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Console"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00715"></a><span class="lineno">  715</span>         toolButton_Run->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Run"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00716"></a><span class="lineno">  716</span>         toolButton_defaults->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Restore defaults"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00717"></a><span class="lineno">  717</span>         menuFile->setTitle(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"File"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00718"></a><span class="lineno">  718</span>     } <span class="comment">// retranslateUi</span></div>
-<div class="line"><a name="l00719"></a><span class="lineno">  719</span> </div>
-<div class="line"><a name="l00720"></a><span class="lineno">  720</span> };</div>
-<div class="line"><a name="l00721"></a><span class="lineno">  721</span> </div>
-<div class="line"><a name="l00722"></a><span class="lineno">  722</span> <span class="keyword">namespace </span>Ui {</div>
-<div class="line"><a name="l00723"></a><span class="lineno">  723</span>     <span class="keyword">class </span>MainWindow: <span class="keyword">public</span> <a class="code" href="classUi__MainWindow.html">Ui_MainWindow</a> {};</div>
-<div class="line"><a name="l00724"></a><span class="lineno">  724</span> } <span class="comment">// namespace Ui</span></div>
-<div class="line"><a name="l00725"></a><span class="lineno">  725</span> </div>
-<div class="line"><a name="l00726"></a><span class="lineno">  726</span> QT_END_NAMESPACE</div>
-<div class="line"><a name="l00727"></a><span class="lineno">  727</span> </div>
-<div class="line"><a name="l00728"></a><span class="lineno">  728</span> <span class="preprocessor">#endif // UI_MAINWINDOW_H</span></div>
-<div class="ttc" id="classUi__MainWindow_html"><div class="ttname"><a href="classUi__MainWindow.html">Ui_MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="build-pkcomposite__gui-gcc-Debug_2ui__mainwindow_8h_source.html#l00039">ui_mainwindow.h:39</a></div></div>
-<div class="ttc" id="classMainWindow_html"><div class="ttname"><a href="classMainWindow.html">MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite__gui_2mainwindow_8h_source.html#l00031">mainwindow.h:31</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/build-pkdiff__gui-gcc-Debug_2moc__mainwindow_8cpp_source.html b/doc/html/build-pkdiff__gui-gcc-Debug_2moc__mainwindow_8cpp_source.html
deleted file mode 100644
index bfab362..0000000
--- a/doc/html/build-pkdiff__gui-gcc-Debug_2moc__mainwindow_8cpp_source.html
+++ /dev/null
@@ -1,196 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/build-pkdiff_gui-gcc-Debug/moc_mainwindow.cpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_5f1e10fd305b434def78aaf73fd56d60.html">build-pkdiff_gui-gcc-Debug</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">moc_mainwindow.cpp</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/****************************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">** Meta object code from reading C++ file 'mainwindow.h'</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">** Created by: The Qt Meta Object Compiler version 63 (Qt 4.8.6)</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">** WARNING! All changes made in this file will be lost!</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">*****************************************************************************/</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> </div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="preprocessor">#include "../pkdiff_gui/mainwindow.h"</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="preprocessor">#if !defined(Q_MOC_OUTPUT_REVISION)</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="preprocessor"></span><span class="preprocessor">#error "The header file 'mainwindow.h' doesn't include <QObject>."</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="preprocessor"></span><span class="preprocessor">#elif Q_MOC_OUTPUT_REVISION != 63</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="preprocessor"></span><span class="preprocessor">#error "This file was generated using the moc from 4.8.6. It"</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="preprocessor"></span><span class="preprocessor">#error "cannot be used with the include files from this version of Qt."</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor"></span><span class="preprocessor">#error "(The moc has changed too much.)"</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> QT_BEGIN_MOC_NAMESPACE</div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="keyword">static</span> <span class="keyword">const</span> uint qt_meta_data_MainWindow[] = {</div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> </div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span>  <span class="comment">// content:</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span>        6,       <span class="comment">// revision</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span>        0,       <span class="comment">// classname</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span>        0,    0, <span class="comment">// classinfo</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span>       11,   14, <span class="comment">// methods</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span>        0,    0, <span class="comment">// properties</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span>        0,    0, <span class="comment">// enums/sets</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span>        0,    0, <span class="comment">// constructors</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span>        0,       <span class="comment">// flags</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>        0,       <span class="comment">// signalCount</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> </div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>  <span class="comment">// slots: signature, parameters, type, tag, flags</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>       12,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>       39,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>       70,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>       96,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>      124,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>      154,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>      183,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>      214,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>      248,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>      276,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>      308,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span> </div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>        0        <span class="comment">// eod</span></div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span> };</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span> </div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> qt_meta_stringdata_MainWindow[] = {</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     <span class="stringliteral">"MainWindow\0\0on_actionInput_triggered()\0"</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     <span class="stringliteral">"on_actionReference_triggered()\0"</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     <span class="stringliteral">"on_actionMask_triggered()\0"</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     <span class="stringliteral">"on_actionOutput_triggered()\0"</span></div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     <span class="stringliteral">"on_toolButton_input_clicked()\0"</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     <span class="stringliteral">"on_toolButton_mask_clicked()\0"</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     <span class="stringliteral">"on_toolButton_output_clicked()\0"</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <span class="stringliteral">"on_toolButton_reference_clicked()\0"</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     <span class="stringliteral">"on_pushButton_run_clicked()\0"</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     <span class="stringliteral">"on_pushButton_restore_clicked()\0"</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     <span class="stringliteral">"on_commandLinkButtonPrepareTable_clicked()\0"</span></div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span> };</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span> </div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span> <span class="keywordtype">void</span> MainWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, <span class="keywordtype">int</span> _id, <span class="keywordtype">void</span> **_a)</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span> {</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     <span class="keywordflow">if</span> (_c == QMetaObject::InvokeMetaMethod) {</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>         Q_ASSERT(staticMetaObject.cast(_o));</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>         <a class="code" href="classMainWindow.html">MainWindow</a> *_t = <span class="keyword">static_cast<</span><a class="code" href="classMainWindow.html">MainWindow</a> *<span class="keyword">></span>(_o);</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>         <span class="keywordflow">switch</span> (_id) {</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>         <span class="keywordflow">case</span> 0: _t->on_actionInput_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>         <span class="keywordflow">case</span> 1: _t->on_actionReference_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>         <span class="keywordflow">case</span> 2: _t->on_actionMask_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>         <span class="keywordflow">case</span> 3: _t->on_actionOutput_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>         <span class="keywordflow">case</span> 4: _t->on_toolButton_input_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>         <span class="keywordflow">case</span> 5: _t->on_toolButton_mask_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>         <span class="keywordflow">case</span> 6: _t->on_toolButton_output_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>         <span class="keywordflow">case</span> 7: _t->on_toolButton_reference_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>         <span class="keywordflow">case</span> 8: _t->on_pushButton_run_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>         <span class="keywordflow">case</span> 9: _t->on_pushButton_restore_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>         <span class="keywordflow">case</span> 10: _t->on_commandLinkButtonPrepareTable_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>         <span class="keywordflow">default</span>: ;</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>         }</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>     }</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     Q_UNUSED(_a);</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span> }</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span> </div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span> <span class="keyword">const</span> QMetaObjectExtraData MainWindow::staticMetaObjectExtraData = {</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>     0,  qt_static_metacall </div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span> };</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span> </div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span> <span class="keyword">const</span> QMetaObject MainWindow::staticMetaObject = {</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     { &QMainWindow::staticMetaObject, qt_meta_stringdata_MainWindow,</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>       qt_meta_data_MainWindow, &staticMetaObjectExtraData }</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span> };</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span> </div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span> <span class="preprocessor">#ifdef Q_NO_DATA_RELOCATION</span></div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span> <span class="preprocessor"></span><span class="keyword">const</span> QMetaObject &MainWindow::getStaticMetaObject() { <span class="keywordflow">return</span> staticMetaObject; }</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span> <span class="preprocessor">#endif //Q_NO_DATA_RELOCATION</span></div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span> <span class="keyword">const</span> QMetaObject *MainWindow::metaObject()<span class="keyword"> const</span></div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     <span class="keywordflow">return</span> QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject;</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span> }</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span> </div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span> <span class="keywordtype">void</span> *MainWindow::qt_metacast(<span class="keyword">const</span> <span class="keywordtype">char</span> *_clname)</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span> {</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     <span class="keywordflow">if</span> (!_clname) <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     <span class="keywordflow">if</span> (!strcmp(_clname, qt_meta_stringdata_MainWindow))</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>         <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">void</span>*<span class="keyword">></span>(<span class="keyword">const_cast<</span> <a class="code" href="classMainWindow.html">MainWindow</a>*<span class="keyword">></span>(<span class="keyword">this</span>));</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     <span class="keywordflow">return</span> QMainWindow::qt_metacast(_clname);</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span> }</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span> </div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span> <span class="keywordtype">int</span> MainWindow::qt_metacall(QMetaObject::Call _c, <span class="keywordtype">int</span> _id, <span class="keywordtype">void</span> **_a)</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span> {</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     _id = QMainWindow::qt_metacall(_c, _id, _a);</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     <span class="keywordflow">if</span> (_id < 0)</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>         <span class="keywordflow">return</span> _id;</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     <span class="keywordflow">if</span> (_c == QMetaObject::InvokeMetaMethod) {</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>         <span class="keywordflow">if</span> (_id < 11)</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>             qt_static_metacall(<span class="keyword">this</span>, _c, _id, _a);</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>         _id -= 11;</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>     }</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>     <span class="keywordflow">return</span> _id;</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span> }</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span> QT_END_MOC_NAMESPACE</div>
-<div class="ttc" id="classMainWindow_html"><div class="ttname"><a href="classMainWindow.html">MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite__gui_2mainwindow_8h_source.html#l00031">mainwindow.h:31</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/build-pkdiff__gui-gcc-Debug_2ui__mainwindow_8h_source.html b/doc/html/build-pkdiff__gui-gcc-Debug_2ui__mainwindow_8h_source.html
deleted file mode 100644
index 992cdf2..0000000
--- a/doc/html/build-pkdiff__gui-gcc-Debug_2ui__mainwindow_8h_source.html
+++ /dev/null
@@ -1,515 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/build-pkdiff_gui-gcc-Debug/ui_mainwindow.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_5f1e10fd305b434def78aaf73fd56d60.html">build-pkdiff_gui-gcc-Debug</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">ui_mainwindow.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/********************************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">** Form generated from reading UI file 'mainwindow.ui'</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">** Created by: Qt User Interface Compiler version 4.8.6</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">** WARNING! All changes made in this file will be lost when recompiling UI file!</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">********************************************************************************/</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> </div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="preprocessor">#ifndef UI_MAINWINDOW_H</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="preprocessor"></span><span class="preprocessor">#define UI_MAINWINDOW_H</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="preprocessor">#include <QtCore/QVariant></span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="preprocessor">#include <QtGui/QAction></span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="preprocessor">#include <QtGui/QApplication></span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor">#include <QtGui/QButtonGroup></span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor">#include <QtGui/QCheckBox></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include <QtGui/QComboBox></span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include <QtGui/QGridLayout></span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include <QtGui/QHBoxLayout></span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <QtGui/QHeaderView></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <QtGui/QLabel></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <QtGui/QLineEdit></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <QtGui/QMainWindow></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <QtGui/QMenu></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include <QtGui/QMenuBar></span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include <QtGui/QPlainTextEdit></span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include <QtGui/QPushButton></span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include <QtGui/QSpacerItem></span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include <QtGui/QStatusBar></span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include <QtGui/QTabWidget></span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="preprocessor">#include <QtGui/QTableView></span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="preprocessor">#include <QtGui/QToolBar></span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="preprocessor">#include <QtGui/QToolButton></span></div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="preprocessor">#include <QtGui/QVBoxLayout></span></div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="preprocessor">#include <QtGui/QWidget></span></div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> </div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> QT_BEGIN_NAMESPACE</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="keyword">class </span><a class="code" href="classUi__MainWindow.html">Ui_MainWindow</a></div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> {</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     QAction *actionInput;</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     QAction *actionReference;</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     QAction *actionMask;</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     QAction *actionOutput;</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     QAction *actionColor_table;</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     QWidget *centralWidget;</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     QVBoxLayout *verticalLayout;</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     QTabWidget *tabWidget;</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     QWidget *tab_2;</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     QWidget *layoutWidget;</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     QGridLayout *gridLayout_2;</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     QLabel *label_2;</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     QToolButton *toolButton_output;</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     QLineEdit *lclass;</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     QLineEdit *output;</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     QLabel *label_6;</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     QLineEdit *input;</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     QCheckBox *confusion;</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     QLabel *label_14;</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     QToolButton *toolButton_input;</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     QLabel *label_13;</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     QLineEdit *mask;</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     QToolButton *toolButton_mask;</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     QLineEdit *msknodata;</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     QSpacerItem *horizontalSpacer_15;</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>     QLabel *label_3;</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     QLineEdit *nclass;</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     QLabel *label_4;</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     QLabel *label_5;</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     QLineEdit *lref;</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>     QLabel *label_reference;</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>     QLineEdit *reference;</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>     QToolButton *toolButton_reference;</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>     QSpacerItem *verticalSpacer_2;</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>     QComboBox *f;</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>     QLabel *label_7;</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>     QLineEdit *nodata;</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>     QLabel *label;</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>     QWidget *widget;</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>     QVBoxLayout *verticalLayout_2;</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     QToolButton *commandLinkButtonPrepareTable;</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     QTableView *tableView_labels;</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     QWidget *tab_4;</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>     QVBoxLayout *verticalLayout_6;</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>     QLabel *label_18;</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>     QLineEdit *commandLineEdit;</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>     QLabel *label_19;</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     QPlainTextEdit *consoleEdit;</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     QHBoxLayout *horizontalLayout;</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     QPushButton *pushButton_run;</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     QSpacerItem *horizontalSpacer;</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>     QPushButton *pushButton_restore;</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>     QMenuBar *menuBar;</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>     QMenu *menuFile;</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     QToolBar *mainToolBar;</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     QStatusBar *statusBar;</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span> </div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     <span class="keywordtype">void</span> setupUi(QMainWindow *<a class="code" href="classMainWindow.html">MainWindow</a>)</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     {</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>         <span class="keywordflow">if</span> (MainWindow->objectName().isEmpty())</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>             MainWindow->setObjectName(QString::fromUtf8(<span class="stringliteral">"MainWindow"</span>));</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>         MainWindow->resize(810, 777);</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>         actionInput = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>         actionInput->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionInput"</span>));</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>         actionReference = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>         actionReference->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionReference"</span>));</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>         actionMask = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>         actionMask->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionMask"</span>));</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>         actionOutput = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>         actionOutput->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionOutput"</span>));</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>         actionColor_table = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>         actionColor_table->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionColor_table"</span>));</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>         centralWidget = <span class="keyword">new</span> QWidget(MainWindow);</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>         centralWidget->setObjectName(QString::fromUtf8(<span class="stringliteral">"centralWidget"</span>));</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>         verticalLayout = <span class="keyword">new</span> QVBoxLayout(centralWidget);</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>         verticalLayout->setSpacing(6);</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>         verticalLayout->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>         verticalLayout->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout"</span>));</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>         tabWidget = <span class="keyword">new</span> QTabWidget(centralWidget);</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>         tabWidget->setObjectName(QString::fromUtf8(<span class="stringliteral">"tabWidget"</span>));</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>         tab_2 = <span class="keyword">new</span> QWidget();</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>         tab_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"tab_2"</span>));</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>         layoutWidget = <span class="keyword">new</span> QWidget(tab_2);</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>         layoutWidget->setObjectName(QString::fromUtf8(<span class="stringliteral">"layoutWidget"</span>));</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>         layoutWidget->setGeometry(QRect(9, 9, 761, 264));</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>         gridLayout_2 = <span class="keyword">new</span> QGridLayout(layoutWidget);</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>         gridLayout_2->setSpacing(6);</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>         gridLayout_2->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>         gridLayout_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"gridLayout_2"</span>));</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>         gridLayout_2->setContentsMargins(0, 0, 0, 0);</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>         label_2 = <span class="keyword">new</span> QLabel(layoutWidget);</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>         label_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_2"</span>));</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span> </div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>         gridLayout_2->addWidget(label_2, 5, 5, 1, 1);</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span> </div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>         toolButton_output = <span class="keyword">new</span> QToolButton(layoutWidget);</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>         toolButton_output->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_output"</span>));</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span> </div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>         gridLayout_2->addWidget(toolButton_output, 4, 3, 1, 1);</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span> </div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>         lclass = <span class="keyword">new</span> QLineEdit(layoutWidget);</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>         lclass->setObjectName(QString::fromUtf8(<span class="stringliteral">"lclass"</span>));</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span> </div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>         gridLayout_2->addWidget(lclass, 4, 6, 1, 1);</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span> </div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>         output = <span class="keyword">new</span> QLineEdit(layoutWidget);</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>         output->setObjectName(QString::fromUtf8(<span class="stringliteral">"output"</span>));</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span> </div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>         gridLayout_2->addWidget(output, 4, 2, 1, 1);</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span> </div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>         label_6 = <span class="keyword">new</span> QLabel(layoutWidget);</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>         label_6->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_6"</span>));</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span> </div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>         gridLayout_2->addWidget(label_6, 4, 5, 1, 1);</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span> </div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>         input = <span class="keyword">new</span> QLineEdit(layoutWidget);</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>         input->setObjectName(QString::fromUtf8(<span class="stringliteral">"input"</span>));</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span> </div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>         gridLayout_2->addWidget(input, 0, 2, 1, 1);</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span> </div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>         confusion = <span class="keyword">new</span> QCheckBox(layoutWidget);</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>         confusion->setObjectName(QString::fromUtf8(<span class="stringliteral">"confusion"</span>));</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span> </div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>         gridLayout_2->addWidget(confusion, 6, 0, 1, 1);</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span> </div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>         label_14 = <span class="keyword">new</span> QLabel(layoutWidget);</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>         label_14->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_14"</span>));</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span> </div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>         gridLayout_2->addWidget(label_14, 3, 5, 1, 1);</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span> </div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>         toolButton_input = <span class="keyword">new</span> QToolButton(layoutWidget);</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>         toolButton_input->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_input"</span>));</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span> </div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>         gridLayout_2->addWidget(toolButton_input, 0, 3, 1, 1);</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span> </div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>         label_13 = <span class="keyword">new</span> QLabel(layoutWidget);</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>         label_13->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_13"</span>));</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span> </div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>         gridLayout_2->addWidget(label_13, 3, 0, 1, 1);</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span> </div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>         mask = <span class="keyword">new</span> QLineEdit(layoutWidget);</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>         mask->setObjectName(QString::fromUtf8(<span class="stringliteral">"mask"</span>));</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span> </div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>         gridLayout_2->addWidget(mask, 3, 2, 1, 1);</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span> </div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>         toolButton_mask = <span class="keyword">new</span> QToolButton(layoutWidget);</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>         toolButton_mask->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_mask"</span>));</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span> </div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>         gridLayout_2->addWidget(toolButton_mask, 3, 3, 1, 1);</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span> </div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>         msknodata = <span class="keyword">new</span> QLineEdit(layoutWidget);</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>         msknodata->setObjectName(QString::fromUtf8(<span class="stringliteral">"msknodata"</span>));</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span> </div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>         gridLayout_2->addWidget(msknodata, 3, 6, 1, 1);</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span> </div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>         horizontalSpacer_15 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span> </div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>         gridLayout_2->addItem(horizontalSpacer_15, 3, 4, 1, 1);</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span> </div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>         label_3 = <span class="keyword">new</span> QLabel(layoutWidget);</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>         label_3->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_3"</span>));</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span> </div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>         gridLayout_2->addWidget(label_3, 0, 0, 1, 1);</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span> </div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>         nclass = <span class="keyword">new</span> QLineEdit(layoutWidget);</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>         nclass->setObjectName(QString::fromUtf8(<span class="stringliteral">"nclass"</span>));</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span> </div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>         gridLayout_2->addWidget(nclass, 7, 2, 1, 1);</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span> </div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>         label_4 = <span class="keyword">new</span> QLabel(layoutWidget);</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>         label_4->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_4"</span>));</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span> </div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>         gridLayout_2->addWidget(label_4, 4, 0, 1, 1);</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span> </div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>         label_5 = <span class="keyword">new</span> QLabel(layoutWidget);</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>         label_5->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_5"</span>));</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span> </div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>         gridLayout_2->addWidget(label_5, 2, 5, 1, 1);</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span> </div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>         lref = <span class="keyword">new</span> QLineEdit(layoutWidget);</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>         lref->setObjectName(QString::fromUtf8(<span class="stringliteral">"lref"</span>));</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span> </div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>         gridLayout_2->addWidget(lref, 2, 6, 1, 1);</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span> </div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>         label_reference = <span class="keyword">new</span> QLabel(layoutWidget);</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>         label_reference->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_reference"</span>));</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span> </div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>         gridLayout_2->addWidget(label_reference, 2, 0, 1, 1);</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span> </div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>         reference = <span class="keyword">new</span> QLineEdit(layoutWidget);</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>         reference->setObjectName(QString::fromUtf8(<span class="stringliteral">"reference"</span>));</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span> </div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>         gridLayout_2->addWidget(reference, 2, 2, 1, 1);</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span> </div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>         toolButton_reference = <span class="keyword">new</span> QToolButton(layoutWidget);</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>         toolButton_reference->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_reference"</span>));</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span> </div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>         gridLayout_2->addWidget(toolButton_reference, 2, 3, 1, 1);</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span> </div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>         verticalSpacer_2 = <span class="keyword">new</span> QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span> </div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>         gridLayout_2->addItem(verticalSpacer_2, 8, 0, 1, 1);</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span> </div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>         f = <span class="keyword">new</span> QComboBox(layoutWidget);</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>         f->setObjectName(QString::fromUtf8(<span class="stringliteral">"f"</span>));</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span> </div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>         gridLayout_2->addWidget(f, 5, 6, 1, 1);</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span> </div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>         label_7 = <span class="keyword">new</span> QLabel(layoutWidget);</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>         label_7->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_7"</span>));</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span> </div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>         gridLayout_2->addWidget(label_7, 7, 0, 1, 1);</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span> </div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>         nodata = <span class="keyword">new</span> QLineEdit(layoutWidget);</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>         nodata->setObjectName(QString::fromUtf8(<span class="stringliteral">"nodata"</span>));</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span> </div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>         gridLayout_2->addWidget(nodata, 0, 6, 1, 1);</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span> </div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>         label = <span class="keyword">new</span> QLabel(layoutWidget);</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>         label->setObjectName(QString::fromUtf8(<span class="stringliteral">"label"</span>));</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span> </div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>         gridLayout_2->addWidget(label, 0, 5, 1, 1);</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span> </div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>         widget = <span class="keyword">new</span> QWidget(tab_2);</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>         widget->setObjectName(QString::fromUtf8(<span class="stringliteral">"widget"</span>));</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>         widget->setGeometry(QRect(11, 281, 391, 331));</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>         verticalLayout_2 = <span class="keyword">new</span> QVBoxLayout(widget);</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>         verticalLayout_2->setSpacing(6);</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>         verticalLayout_2->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>         verticalLayout_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout_2"</span>));</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>         verticalLayout_2->setContentsMargins(0, 0, 0, 0);</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>         commandLinkButtonPrepareTable = <span class="keyword">new</span> QToolButton(widget);</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>         commandLinkButtonPrepareTable->setObjectName(QString::fromUtf8(<span class="stringliteral">"commandLinkButtonPrepareTable"</span>));</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span> </div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>         verticalLayout_2->addWidget(commandLinkButtonPrepareTable);</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span> </div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>         tableView_labels = <span class="keyword">new</span> QTableView(widget);</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>         tableView_labels->setObjectName(QString::fromUtf8(<span class="stringliteral">"tableView_labels"</span>));</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span> </div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>         verticalLayout_2->addWidget(tableView_labels);</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span> </div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>         tabWidget->addTab(tab_2, QString());</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>         tab_4 = <span class="keyword">new</span> QWidget();</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>         tab_4->setObjectName(QString::fromUtf8(<span class="stringliteral">"tab_4"</span>));</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>         verticalLayout_6 = <span class="keyword">new</span> QVBoxLayout(tab_4);</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>         verticalLayout_6->setSpacing(6);</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>         verticalLayout_6->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>         verticalLayout_6->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout_6"</span>));</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>         label_18 = <span class="keyword">new</span> QLabel(tab_4);</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>         label_18->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_18"</span>));</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span> </div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>         verticalLayout_6->addWidget(label_18);</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span> </div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>         commandLineEdit = <span class="keyword">new</span> QLineEdit(tab_4);</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>         commandLineEdit->setObjectName(QString::fromUtf8(<span class="stringliteral">"commandLineEdit"</span>));</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span> </div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>         verticalLayout_6->addWidget(commandLineEdit);</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span> </div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>         label_19 = <span class="keyword">new</span> QLabel(tab_4);</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>         label_19->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_19"</span>));</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span> </div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>         verticalLayout_6->addWidget(label_19);</div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span> </div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>         consoleEdit = <span class="keyword">new</span> QPlainTextEdit(tab_4);</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>         consoleEdit->setObjectName(QString::fromUtf8(<span class="stringliteral">"consoleEdit"</span>));</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span> </div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>         verticalLayout_6->addWidget(consoleEdit);</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span> </div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>         tabWidget->addTab(tab_4, QString());</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span> </div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>         verticalLayout->addWidget(tabWidget);</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span> </div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>         horizontalLayout = <span class="keyword">new</span> QHBoxLayout();</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>         horizontalLayout->setSpacing(6);</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>         horizontalLayout->setObjectName(QString::fromUtf8(<span class="stringliteral">"horizontalLayout"</span>));</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>         pushButton_run = <span class="keyword">new</span> QPushButton(centralWidget);</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>         pushButton_run->setObjectName(QString::fromUtf8(<span class="stringliteral">"pushButton_run"</span>));</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span> </div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>         horizontalLayout->addWidget(pushButton_run);</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span> </div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>         horizontalSpacer = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span> </div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>         horizontalLayout->addItem(horizontalSpacer);</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span> </div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>         pushButton_restore = <span class="keyword">new</span> QPushButton(centralWidget);</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>         pushButton_restore->setObjectName(QString::fromUtf8(<span class="stringliteral">"pushButton_restore"</span>));</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span> </div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>         horizontalLayout->addWidget(pushButton_restore);</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span> </div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span> </div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>         verticalLayout->addLayout(horizontalLayout);</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span> </div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>         MainWindow->setCentralWidget(centralWidget);</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>         menuBar = <span class="keyword">new</span> QMenuBar(MainWindow);</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>         menuBar->setObjectName(QString::fromUtf8(<span class="stringliteral">"menuBar"</span>));</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>         menuBar->setGeometry(QRect(0, 0, 810, 27));</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>         menuFile = <span class="keyword">new</span> QMenu(menuBar);</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>         menuFile->setObjectName(QString::fromUtf8(<span class="stringliteral">"menuFile"</span>));</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>         MainWindow->setMenuBar(menuBar);</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>         mainToolBar = <span class="keyword">new</span> QToolBar(MainWindow);</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>         mainToolBar->setObjectName(QString::fromUtf8(<span class="stringliteral">"mainToolBar"</span>));</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>         MainWindow->addToolBar(Qt::TopToolBarArea, mainToolBar);</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>         statusBar = <span class="keyword">new</span> QStatusBar(MainWindow);</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>         statusBar->setObjectName(QString::fromUtf8(<span class="stringliteral">"statusBar"</span>));</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>         MainWindow->setStatusBar(statusBar);</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>         QWidget::setTabOrder(input, toolButton_input);</div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>         QWidget::setTabOrder(toolButton_input, nodata);</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>         QWidget::setTabOrder(nodata, reference);</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>         QWidget::setTabOrder(reference, toolButton_reference);</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>         QWidget::setTabOrder(toolButton_reference, lref);</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>         QWidget::setTabOrder(lref, mask);</div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>         QWidget::setTabOrder(mask, toolButton_mask);</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>         QWidget::setTabOrder(toolButton_mask, msknodata);</div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>         QWidget::setTabOrder(msknodata, output);</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>         QWidget::setTabOrder(output, toolButton_output);</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>         QWidget::setTabOrder(toolButton_output, lclass);</div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>         QWidget::setTabOrder(lclass, f);</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>         QWidget::setTabOrder(f, confusion);</div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>         QWidget::setTabOrder(confusion, nclass);</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>         QWidget::setTabOrder(nclass, commandLinkButtonPrepareTable);</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>         QWidget::setTabOrder(commandLinkButtonPrepareTable, tableView_labels);</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>         QWidget::setTabOrder(tableView_labels, consoleEdit);</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>         QWidget::setTabOrder(consoleEdit, pushButton_restore);</div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>         QWidget::setTabOrder(pushButton_restore, pushButton_run);</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>         QWidget::setTabOrder(pushButton_run, commandLineEdit);</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>         QWidget::setTabOrder(commandLineEdit, tabWidget);</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span> </div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>         menuBar->addAction(menuFile->menuAction());</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>         menuFile->addAction(actionInput);</div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>         menuFile->addAction(actionReference);</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>         menuFile->addAction(actionMask);</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>         menuFile->addAction(actionOutput);</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span> </div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>         retranslateUi(MainWindow);</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span> </div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>         tabWidget->setCurrentIndex(0);</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span> </div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span> </div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>         QMetaObject::connectSlotsByName(MainWindow);</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>     } <span class="comment">// setupUi</span></div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span> </div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>     <span class="keywordtype">void</span> retranslateUi(QMainWindow *MainWindow)</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>     {</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>         MainWindow->setWindowTitle(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"pkdiff_gui"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>         actionInput->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Input"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>         actionInput->setShortcut(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Alt+I"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>         actionReference->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Reference"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>         actionReference->setShortcut(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Alt+T"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>         actionMask->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Mask"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>         actionMask->setShortcut(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Alt+M"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>         actionOutput->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>         actionOutput->setShortcut(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Alt+O"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>         actionColor_table->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Color table"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>         actionColor_table->setShortcut(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Alt+C"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>         label_2->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"OGR output format"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>         toolButton_output->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>         label_6->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"class label"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>         confusion->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"confusion matrix"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>         label_14->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"msknodata"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>         toolButton_input->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span> <span class="preprocessor"></span>        label_13->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Dimensions of mask image must correspond to input image. Pixels in mask with values=masknodata are not classified and get nodata value.</p></body></html>"</span>, [...]
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span> <span class="preprocessor"></span>        label_13->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Mask image"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>         toolButton_mask->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span> <span class="preprocessor"></span>        label_3->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Input image. Both OGR vectors and GDAL rasters are supported. Number of bands must match those in training sample.</p></body></html>"</span>, 0, QApplication::Unic [...]
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span> <span class="preprocessor"></span>        label_3->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Input data"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>         label_4->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output data"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>         label_5->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"class label"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>         label_reference->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Reference"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span>         toolButton_reference->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>         label_7->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Number of classes to prepare table"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>         label->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"nodata"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>         commandLinkButtonPrepareTable->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"prepare table"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>         tabWidget->setTabText(tabWidget->indexOf(tab_2), QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Input/Output"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span>         label_18->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Command line"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>         label_19->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Console output"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>         tabWidget->setTabText(tabWidget->indexOf(tab_4), QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Console"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span> <span class="preprocessor"></span>        pushButton_run->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Classify with current settings (check Console for output)</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span> <span class="preprocessor"></span>        pushButton_run->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Run"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span> <span class="preprocessor"></span>        pushButton_restore->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>reset all parameters to default</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span> <span class="preprocessor"></span>        pushButton_restore->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Restore defaults"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span>         menuFile->setTitle(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"File"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span>     } <span class="comment">// retranslateUi</span></div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span> </div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span> };</div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span> </div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span> <span class="keyword">namespace </span>Ui {</div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>     <span class="keyword">class </span>MainWindow: <span class="keyword">public</span> <a class="code" href="classUi__MainWindow.html">Ui_MainWindow</a> {};</div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span> } <span class="comment">// namespace Ui</span></div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span> </div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span> QT_END_NAMESPACE</div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span> </div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span> <span class="preprocessor">#endif // UI_MAINWINDOW_H</span></div>
-<div class="ttc" id="classUi__MainWindow_html"><div class="ttname"><a href="classUi__MainWindow.html">Ui_MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="build-pkcomposite__gui-gcc-Debug_2ui__mainwindow_8h_source.html#l00039">ui_mainwindow.h:39</a></div></div>
-<div class="ttc" id="classMainWindow_html"><div class="ttname"><a href="classMainWindow.html">MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite__gui_2mainwindow_8h_source.html#l00031">mainwindow.h:31</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/build-pkdiff__gui-gcc-Release_2moc__mainwindow_8cpp_source.html b/doc/html/build-pkdiff__gui-gcc-Release_2moc__mainwindow_8cpp_source.html
deleted file mode 100644
index e7e5d2f..0000000
--- a/doc/html/build-pkdiff__gui-gcc-Release_2moc__mainwindow_8cpp_source.html
+++ /dev/null
@@ -1,196 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/build-pkdiff_gui-gcc-Release/moc_mainwindow.cpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_4dfaa1fe1382d1276d1c80b1d5035ade.html">build-pkdiff_gui-gcc-Release</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">moc_mainwindow.cpp</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/****************************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">** Meta object code from reading C++ file 'mainwindow.h'</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">** Created by: The Qt Meta Object Compiler version 63 (Qt 4.8.6)</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">** WARNING! All changes made in this file will be lost!</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">*****************************************************************************/</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> </div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="preprocessor">#include "../pkdiff_gui/mainwindow.h"</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="preprocessor">#if !defined(Q_MOC_OUTPUT_REVISION)</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="preprocessor"></span><span class="preprocessor">#error "The header file 'mainwindow.h' doesn't include <QObject>."</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="preprocessor"></span><span class="preprocessor">#elif Q_MOC_OUTPUT_REVISION != 63</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="preprocessor"></span><span class="preprocessor">#error "This file was generated using the moc from 4.8.6. It"</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="preprocessor"></span><span class="preprocessor">#error "cannot be used with the include files from this version of Qt."</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor"></span><span class="preprocessor">#error "(The moc has changed too much.)"</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> QT_BEGIN_MOC_NAMESPACE</div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="keyword">static</span> <span class="keyword">const</span> uint qt_meta_data_MainWindow[] = {</div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> </div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span>  <span class="comment">// content:</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span>        6,       <span class="comment">// revision</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span>        0,       <span class="comment">// classname</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span>        0,    0, <span class="comment">// classinfo</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span>       11,   14, <span class="comment">// methods</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span>        0,    0, <span class="comment">// properties</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span>        0,    0, <span class="comment">// enums/sets</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span>        0,    0, <span class="comment">// constructors</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span>        0,       <span class="comment">// flags</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>        0,       <span class="comment">// signalCount</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> </div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>  <span class="comment">// slots: signature, parameters, type, tag, flags</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>       12,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>       39,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>       70,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>       96,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>      124,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>      154,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>      183,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>      214,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>      248,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>      276,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>      308,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span> </div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>        0        <span class="comment">// eod</span></div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span> };</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span> </div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> qt_meta_stringdata_MainWindow[] = {</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     <span class="stringliteral">"MainWindow\0\0on_actionInput_triggered()\0"</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     <span class="stringliteral">"on_actionReference_triggered()\0"</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     <span class="stringliteral">"on_actionMask_triggered()\0"</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     <span class="stringliteral">"on_actionOutput_triggered()\0"</span></div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     <span class="stringliteral">"on_toolButton_input_clicked()\0"</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     <span class="stringliteral">"on_toolButton_mask_clicked()\0"</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     <span class="stringliteral">"on_toolButton_output_clicked()\0"</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <span class="stringliteral">"on_toolButton_reference_clicked()\0"</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     <span class="stringliteral">"on_pushButton_run_clicked()\0"</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     <span class="stringliteral">"on_pushButton_restore_clicked()\0"</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     <span class="stringliteral">"on_commandLinkButtonPrepareTable_clicked()\0"</span></div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span> };</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span> </div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span> <span class="keywordtype">void</span> MainWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, <span class="keywordtype">int</span> _id, <span class="keywordtype">void</span> **_a)</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span> {</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     <span class="keywordflow">if</span> (_c == QMetaObject::InvokeMetaMethod) {</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>         Q_ASSERT(staticMetaObject.cast(_o));</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>         <a class="code" href="classMainWindow.html">MainWindow</a> *_t = <span class="keyword">static_cast<</span><a class="code" href="classMainWindow.html">MainWindow</a> *<span class="keyword">></span>(_o);</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>         <span class="keywordflow">switch</span> (_id) {</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>         <span class="keywordflow">case</span> 0: _t->on_actionInput_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>         <span class="keywordflow">case</span> 1: _t->on_actionReference_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>         <span class="keywordflow">case</span> 2: _t->on_actionMask_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>         <span class="keywordflow">case</span> 3: _t->on_actionOutput_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>         <span class="keywordflow">case</span> 4: _t->on_toolButton_input_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>         <span class="keywordflow">case</span> 5: _t->on_toolButton_mask_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>         <span class="keywordflow">case</span> 6: _t->on_toolButton_output_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>         <span class="keywordflow">case</span> 7: _t->on_toolButton_reference_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>         <span class="keywordflow">case</span> 8: _t->on_pushButton_run_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>         <span class="keywordflow">case</span> 9: _t->on_pushButton_restore_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>         <span class="keywordflow">case</span> 10: _t->on_commandLinkButtonPrepareTable_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>         <span class="keywordflow">default</span>: ;</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>         }</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>     }</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     Q_UNUSED(_a);</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span> }</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span> </div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span> <span class="keyword">const</span> QMetaObjectExtraData MainWindow::staticMetaObjectExtraData = {</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>     0,  qt_static_metacall </div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span> };</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span> </div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span> <span class="keyword">const</span> QMetaObject MainWindow::staticMetaObject = {</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     { &QMainWindow::staticMetaObject, qt_meta_stringdata_MainWindow,</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>       qt_meta_data_MainWindow, &staticMetaObjectExtraData }</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span> };</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span> </div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span> <span class="preprocessor">#ifdef Q_NO_DATA_RELOCATION</span></div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span> <span class="preprocessor"></span><span class="keyword">const</span> QMetaObject &MainWindow::getStaticMetaObject() { <span class="keywordflow">return</span> staticMetaObject; }</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span> <span class="preprocessor">#endif //Q_NO_DATA_RELOCATION</span></div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span> <span class="keyword">const</span> QMetaObject *MainWindow::metaObject()<span class="keyword"> const</span></div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     <span class="keywordflow">return</span> QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject;</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span> }</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span> </div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span> <span class="keywordtype">void</span> *MainWindow::qt_metacast(<span class="keyword">const</span> <span class="keywordtype">char</span> *_clname)</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span> {</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     <span class="keywordflow">if</span> (!_clname) <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     <span class="keywordflow">if</span> (!strcmp(_clname, qt_meta_stringdata_MainWindow))</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>         <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">void</span>*<span class="keyword">></span>(<span class="keyword">const_cast<</span> <a class="code" href="classMainWindow.html">MainWindow</a>*<span class="keyword">></span>(<span class="keyword">this</span>));</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     <span class="keywordflow">return</span> QMainWindow::qt_metacast(_clname);</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span> }</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span> </div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span> <span class="keywordtype">int</span> MainWindow::qt_metacall(QMetaObject::Call _c, <span class="keywordtype">int</span> _id, <span class="keywordtype">void</span> **_a)</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span> {</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     _id = QMainWindow::qt_metacall(_c, _id, _a);</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     <span class="keywordflow">if</span> (_id < 0)</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>         <span class="keywordflow">return</span> _id;</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     <span class="keywordflow">if</span> (_c == QMetaObject::InvokeMetaMethod) {</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>         <span class="keywordflow">if</span> (_id < 11)</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>             qt_static_metacall(<span class="keyword">this</span>, _c, _id, _a);</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>         _id -= 11;</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>     }</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>     <span class="keywordflow">return</span> _id;</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span> }</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span> QT_END_MOC_NAMESPACE</div>
-<div class="ttc" id="classMainWindow_html"><div class="ttname"><a href="classMainWindow.html">MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite__gui_2mainwindow_8h_source.html#l00031">mainwindow.h:31</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/build-pkdiff__gui-gcc-Release_2ui__mainwindow_8h_source.html b/doc/html/build-pkdiff__gui-gcc-Release_2ui__mainwindow_8h_source.html
deleted file mode 100644
index b3f330c..0000000
--- a/doc/html/build-pkdiff__gui-gcc-Release_2ui__mainwindow_8h_source.html
+++ /dev/null
@@ -1,515 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/build-pkdiff_gui-gcc-Release/ui_mainwindow.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_4dfaa1fe1382d1276d1c80b1d5035ade.html">build-pkdiff_gui-gcc-Release</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">ui_mainwindow.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/********************************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">** Form generated from reading UI file 'mainwindow.ui'</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">** Created by: Qt User Interface Compiler version 4.8.6</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">** WARNING! All changes made in this file will be lost when recompiling UI file!</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">********************************************************************************/</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> </div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="preprocessor">#ifndef UI_MAINWINDOW_H</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="preprocessor"></span><span class="preprocessor">#define UI_MAINWINDOW_H</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="preprocessor">#include <QtCore/QVariant></span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="preprocessor">#include <QtGui/QAction></span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="preprocessor">#include <QtGui/QApplication></span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor">#include <QtGui/QButtonGroup></span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor">#include <QtGui/QCheckBox></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include <QtGui/QComboBox></span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include <QtGui/QGridLayout></span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include <QtGui/QHBoxLayout></span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <QtGui/QHeaderView></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <QtGui/QLabel></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <QtGui/QLineEdit></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <QtGui/QMainWindow></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <QtGui/QMenu></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include <QtGui/QMenuBar></span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include <QtGui/QPlainTextEdit></span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include <QtGui/QPushButton></span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include <QtGui/QSpacerItem></span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include <QtGui/QStatusBar></span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include <QtGui/QTabWidget></span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="preprocessor">#include <QtGui/QTableView></span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="preprocessor">#include <QtGui/QToolBar></span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="preprocessor">#include <QtGui/QToolButton></span></div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="preprocessor">#include <QtGui/QVBoxLayout></span></div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="preprocessor">#include <QtGui/QWidget></span></div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> </div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> QT_BEGIN_NAMESPACE</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="keyword">class </span><a class="code" href="classUi__MainWindow.html">Ui_MainWindow</a></div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> {</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     QAction *actionInput;</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     QAction *actionReference;</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     QAction *actionMask;</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     QAction *actionOutput;</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     QAction *actionColor_table;</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     QWidget *centralWidget;</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     QVBoxLayout *verticalLayout;</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     QTabWidget *tabWidget;</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     QWidget *tab_2;</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     QWidget *layoutWidget;</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     QGridLayout *gridLayout_2;</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     QLabel *label_2;</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     QToolButton *toolButton_output;</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     QLineEdit *lclass;</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     QLineEdit *output;</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     QLabel *label_6;</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     QLineEdit *input;</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     QCheckBox *confusion;</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     QLabel *label_14;</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     QToolButton *toolButton_input;</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     QLabel *label_13;</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     QLineEdit *mask;</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     QToolButton *toolButton_mask;</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     QLineEdit *msknodata;</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     QSpacerItem *horizontalSpacer_15;</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>     QLabel *label_3;</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     QLineEdit *nclass;</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     QLabel *label_4;</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     QLabel *label_5;</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     QLineEdit *lref;</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>     QLabel *label_reference;</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>     QLineEdit *reference;</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>     QToolButton *toolButton_reference;</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>     QSpacerItem *verticalSpacer_2;</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>     QComboBox *f;</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>     QLabel *label_7;</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>     QLineEdit *nodata;</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>     QLabel *label;</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>     QWidget *widget;</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>     QVBoxLayout *verticalLayout_2;</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     QToolButton *commandLinkButtonPrepareTable;</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     QTableView *tableView_labels;</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     QWidget *tab_4;</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>     QVBoxLayout *verticalLayout_6;</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>     QLabel *label_18;</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>     QLineEdit *commandLineEdit;</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>     QLabel *label_19;</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     QPlainTextEdit *consoleEdit;</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     QHBoxLayout *horizontalLayout;</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     QPushButton *pushButton_run;</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     QSpacerItem *horizontalSpacer;</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>     QPushButton *pushButton_restore;</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>     QMenuBar *menuBar;</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>     QMenu *menuFile;</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     QToolBar *mainToolBar;</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     QStatusBar *statusBar;</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span> </div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     <span class="keywordtype">void</span> setupUi(QMainWindow *<a class="code" href="classMainWindow.html">MainWindow</a>)</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     {</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>         <span class="keywordflow">if</span> (MainWindow->objectName().isEmpty())</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>             MainWindow->setObjectName(QString::fromUtf8(<span class="stringliteral">"MainWindow"</span>));</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>         MainWindow->resize(810, 777);</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>         actionInput = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>         actionInput->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionInput"</span>));</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>         actionReference = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>         actionReference->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionReference"</span>));</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>         actionMask = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>         actionMask->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionMask"</span>));</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>         actionOutput = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>         actionOutput->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionOutput"</span>));</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>         actionColor_table = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>         actionColor_table->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionColor_table"</span>));</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>         centralWidget = <span class="keyword">new</span> QWidget(MainWindow);</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>         centralWidget->setObjectName(QString::fromUtf8(<span class="stringliteral">"centralWidget"</span>));</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>         verticalLayout = <span class="keyword">new</span> QVBoxLayout(centralWidget);</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>         verticalLayout->setSpacing(6);</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>         verticalLayout->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>         verticalLayout->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout"</span>));</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>         tabWidget = <span class="keyword">new</span> QTabWidget(centralWidget);</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>         tabWidget->setObjectName(QString::fromUtf8(<span class="stringliteral">"tabWidget"</span>));</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>         tab_2 = <span class="keyword">new</span> QWidget();</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>         tab_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"tab_2"</span>));</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>         layoutWidget = <span class="keyword">new</span> QWidget(tab_2);</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>         layoutWidget->setObjectName(QString::fromUtf8(<span class="stringliteral">"layoutWidget"</span>));</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>         layoutWidget->setGeometry(QRect(9, 9, 761, 264));</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>         gridLayout_2 = <span class="keyword">new</span> QGridLayout(layoutWidget);</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>         gridLayout_2->setSpacing(6);</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>         gridLayout_2->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>         gridLayout_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"gridLayout_2"</span>));</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>         gridLayout_2->setContentsMargins(0, 0, 0, 0);</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>         label_2 = <span class="keyword">new</span> QLabel(layoutWidget);</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>         label_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_2"</span>));</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span> </div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>         gridLayout_2->addWidget(label_2, 5, 5, 1, 1);</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span> </div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>         toolButton_output = <span class="keyword">new</span> QToolButton(layoutWidget);</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>         toolButton_output->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_output"</span>));</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span> </div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>         gridLayout_2->addWidget(toolButton_output, 4, 3, 1, 1);</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span> </div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>         lclass = <span class="keyword">new</span> QLineEdit(layoutWidget);</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>         lclass->setObjectName(QString::fromUtf8(<span class="stringliteral">"lclass"</span>));</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span> </div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>         gridLayout_2->addWidget(lclass, 4, 6, 1, 1);</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span> </div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>         output = <span class="keyword">new</span> QLineEdit(layoutWidget);</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>         output->setObjectName(QString::fromUtf8(<span class="stringliteral">"output"</span>));</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span> </div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>         gridLayout_2->addWidget(output, 4, 2, 1, 1);</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span> </div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>         label_6 = <span class="keyword">new</span> QLabel(layoutWidget);</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>         label_6->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_6"</span>));</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span> </div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>         gridLayout_2->addWidget(label_6, 4, 5, 1, 1);</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span> </div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>         input = <span class="keyword">new</span> QLineEdit(layoutWidget);</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>         input->setObjectName(QString::fromUtf8(<span class="stringliteral">"input"</span>));</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span> </div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>         gridLayout_2->addWidget(input, 0, 2, 1, 1);</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span> </div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>         confusion = <span class="keyword">new</span> QCheckBox(layoutWidget);</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>         confusion->setObjectName(QString::fromUtf8(<span class="stringliteral">"confusion"</span>));</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span> </div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>         gridLayout_2->addWidget(confusion, 6, 0, 1, 1);</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span> </div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>         label_14 = <span class="keyword">new</span> QLabel(layoutWidget);</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>         label_14->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_14"</span>));</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span> </div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>         gridLayout_2->addWidget(label_14, 3, 5, 1, 1);</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span> </div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>         toolButton_input = <span class="keyword">new</span> QToolButton(layoutWidget);</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>         toolButton_input->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_input"</span>));</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span> </div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>         gridLayout_2->addWidget(toolButton_input, 0, 3, 1, 1);</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span> </div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>         label_13 = <span class="keyword">new</span> QLabel(layoutWidget);</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>         label_13->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_13"</span>));</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span> </div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>         gridLayout_2->addWidget(label_13, 3, 0, 1, 1);</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span> </div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>         mask = <span class="keyword">new</span> QLineEdit(layoutWidget);</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>         mask->setObjectName(QString::fromUtf8(<span class="stringliteral">"mask"</span>));</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span> </div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>         gridLayout_2->addWidget(mask, 3, 2, 1, 1);</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span> </div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>         toolButton_mask = <span class="keyword">new</span> QToolButton(layoutWidget);</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>         toolButton_mask->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_mask"</span>));</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span> </div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>         gridLayout_2->addWidget(toolButton_mask, 3, 3, 1, 1);</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span> </div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>         msknodata = <span class="keyword">new</span> QLineEdit(layoutWidget);</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>         msknodata->setObjectName(QString::fromUtf8(<span class="stringliteral">"msknodata"</span>));</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span> </div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>         gridLayout_2->addWidget(msknodata, 3, 6, 1, 1);</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span> </div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>         horizontalSpacer_15 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span> </div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>         gridLayout_2->addItem(horizontalSpacer_15, 3, 4, 1, 1);</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span> </div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>         label_3 = <span class="keyword">new</span> QLabel(layoutWidget);</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>         label_3->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_3"</span>));</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span> </div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>         gridLayout_2->addWidget(label_3, 0, 0, 1, 1);</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span> </div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>         nclass = <span class="keyword">new</span> QLineEdit(layoutWidget);</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>         nclass->setObjectName(QString::fromUtf8(<span class="stringliteral">"nclass"</span>));</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span> </div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>         gridLayout_2->addWidget(nclass, 7, 2, 1, 1);</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span> </div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>         label_4 = <span class="keyword">new</span> QLabel(layoutWidget);</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>         label_4->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_4"</span>));</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span> </div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>         gridLayout_2->addWidget(label_4, 4, 0, 1, 1);</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span> </div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>         label_5 = <span class="keyword">new</span> QLabel(layoutWidget);</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>         label_5->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_5"</span>));</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span> </div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>         gridLayout_2->addWidget(label_5, 2, 5, 1, 1);</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span> </div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>         lref = <span class="keyword">new</span> QLineEdit(layoutWidget);</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>         lref->setObjectName(QString::fromUtf8(<span class="stringliteral">"lref"</span>));</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span> </div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>         gridLayout_2->addWidget(lref, 2, 6, 1, 1);</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span> </div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>         label_reference = <span class="keyword">new</span> QLabel(layoutWidget);</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>         label_reference->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_reference"</span>));</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span> </div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>         gridLayout_2->addWidget(label_reference, 2, 0, 1, 1);</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span> </div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>         reference = <span class="keyword">new</span> QLineEdit(layoutWidget);</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>         reference->setObjectName(QString::fromUtf8(<span class="stringliteral">"reference"</span>));</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span> </div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>         gridLayout_2->addWidget(reference, 2, 2, 1, 1);</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span> </div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>         toolButton_reference = <span class="keyword">new</span> QToolButton(layoutWidget);</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>         toolButton_reference->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_reference"</span>));</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span> </div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>         gridLayout_2->addWidget(toolButton_reference, 2, 3, 1, 1);</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span> </div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>         verticalSpacer_2 = <span class="keyword">new</span> QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span> </div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>         gridLayout_2->addItem(verticalSpacer_2, 8, 0, 1, 1);</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span> </div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>         f = <span class="keyword">new</span> QComboBox(layoutWidget);</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>         f->setObjectName(QString::fromUtf8(<span class="stringliteral">"f"</span>));</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span> </div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>         gridLayout_2->addWidget(f, 5, 6, 1, 1);</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span> </div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>         label_7 = <span class="keyword">new</span> QLabel(layoutWidget);</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>         label_7->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_7"</span>));</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span> </div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>         gridLayout_2->addWidget(label_7, 7, 0, 1, 1);</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span> </div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>         nodata = <span class="keyword">new</span> QLineEdit(layoutWidget);</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>         nodata->setObjectName(QString::fromUtf8(<span class="stringliteral">"nodata"</span>));</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span> </div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>         gridLayout_2->addWidget(nodata, 0, 6, 1, 1);</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span> </div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>         label = <span class="keyword">new</span> QLabel(layoutWidget);</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>         label->setObjectName(QString::fromUtf8(<span class="stringliteral">"label"</span>));</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span> </div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>         gridLayout_2->addWidget(label, 0, 5, 1, 1);</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span> </div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>         widget = <span class="keyword">new</span> QWidget(tab_2);</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>         widget->setObjectName(QString::fromUtf8(<span class="stringliteral">"widget"</span>));</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>         widget->setGeometry(QRect(11, 281, 391, 331));</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>         verticalLayout_2 = <span class="keyword">new</span> QVBoxLayout(widget);</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>         verticalLayout_2->setSpacing(6);</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>         verticalLayout_2->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>         verticalLayout_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout_2"</span>));</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>         verticalLayout_2->setContentsMargins(0, 0, 0, 0);</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>         commandLinkButtonPrepareTable = <span class="keyword">new</span> QToolButton(widget);</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>         commandLinkButtonPrepareTable->setObjectName(QString::fromUtf8(<span class="stringliteral">"commandLinkButtonPrepareTable"</span>));</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span> </div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>         verticalLayout_2->addWidget(commandLinkButtonPrepareTable);</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span> </div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>         tableView_labels = <span class="keyword">new</span> QTableView(widget);</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>         tableView_labels->setObjectName(QString::fromUtf8(<span class="stringliteral">"tableView_labels"</span>));</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span> </div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>         verticalLayout_2->addWidget(tableView_labels);</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span> </div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>         tabWidget->addTab(tab_2, QString());</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>         tab_4 = <span class="keyword">new</span> QWidget();</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>         tab_4->setObjectName(QString::fromUtf8(<span class="stringliteral">"tab_4"</span>));</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>         verticalLayout_6 = <span class="keyword">new</span> QVBoxLayout(tab_4);</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>         verticalLayout_6->setSpacing(6);</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>         verticalLayout_6->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>         verticalLayout_6->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout_6"</span>));</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>         label_18 = <span class="keyword">new</span> QLabel(tab_4);</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>         label_18->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_18"</span>));</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span> </div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>         verticalLayout_6->addWidget(label_18);</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span> </div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>         commandLineEdit = <span class="keyword">new</span> QLineEdit(tab_4);</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>         commandLineEdit->setObjectName(QString::fromUtf8(<span class="stringliteral">"commandLineEdit"</span>));</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span> </div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>         verticalLayout_6->addWidget(commandLineEdit);</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span> </div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>         label_19 = <span class="keyword">new</span> QLabel(tab_4);</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>         label_19->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_19"</span>));</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span> </div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>         verticalLayout_6->addWidget(label_19);</div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span> </div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>         consoleEdit = <span class="keyword">new</span> QPlainTextEdit(tab_4);</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>         consoleEdit->setObjectName(QString::fromUtf8(<span class="stringliteral">"consoleEdit"</span>));</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span> </div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>         verticalLayout_6->addWidget(consoleEdit);</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span> </div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>         tabWidget->addTab(tab_4, QString());</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span> </div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>         verticalLayout->addWidget(tabWidget);</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span> </div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>         horizontalLayout = <span class="keyword">new</span> QHBoxLayout();</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>         horizontalLayout->setSpacing(6);</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>         horizontalLayout->setObjectName(QString::fromUtf8(<span class="stringliteral">"horizontalLayout"</span>));</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>         pushButton_run = <span class="keyword">new</span> QPushButton(centralWidget);</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>         pushButton_run->setObjectName(QString::fromUtf8(<span class="stringliteral">"pushButton_run"</span>));</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span> </div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>         horizontalLayout->addWidget(pushButton_run);</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span> </div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>         horizontalSpacer = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span> </div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>         horizontalLayout->addItem(horizontalSpacer);</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span> </div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>         pushButton_restore = <span class="keyword">new</span> QPushButton(centralWidget);</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>         pushButton_restore->setObjectName(QString::fromUtf8(<span class="stringliteral">"pushButton_restore"</span>));</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span> </div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>         horizontalLayout->addWidget(pushButton_restore);</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span> </div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span> </div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>         verticalLayout->addLayout(horizontalLayout);</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span> </div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>         MainWindow->setCentralWidget(centralWidget);</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>         menuBar = <span class="keyword">new</span> QMenuBar(MainWindow);</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>         menuBar->setObjectName(QString::fromUtf8(<span class="stringliteral">"menuBar"</span>));</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>         menuBar->setGeometry(QRect(0, 0, 810, 27));</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>         menuFile = <span class="keyword">new</span> QMenu(menuBar);</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>         menuFile->setObjectName(QString::fromUtf8(<span class="stringliteral">"menuFile"</span>));</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>         MainWindow->setMenuBar(menuBar);</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>         mainToolBar = <span class="keyword">new</span> QToolBar(MainWindow);</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>         mainToolBar->setObjectName(QString::fromUtf8(<span class="stringliteral">"mainToolBar"</span>));</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>         MainWindow->addToolBar(Qt::TopToolBarArea, mainToolBar);</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>         statusBar = <span class="keyword">new</span> QStatusBar(MainWindow);</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>         statusBar->setObjectName(QString::fromUtf8(<span class="stringliteral">"statusBar"</span>));</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>         MainWindow->setStatusBar(statusBar);</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>         QWidget::setTabOrder(input, toolButton_input);</div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>         QWidget::setTabOrder(toolButton_input, nodata);</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>         QWidget::setTabOrder(nodata, reference);</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>         QWidget::setTabOrder(reference, toolButton_reference);</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>         QWidget::setTabOrder(toolButton_reference, lref);</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>         QWidget::setTabOrder(lref, mask);</div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>         QWidget::setTabOrder(mask, toolButton_mask);</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>         QWidget::setTabOrder(toolButton_mask, msknodata);</div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>         QWidget::setTabOrder(msknodata, output);</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>         QWidget::setTabOrder(output, toolButton_output);</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>         QWidget::setTabOrder(toolButton_output, lclass);</div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>         QWidget::setTabOrder(lclass, f);</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>         QWidget::setTabOrder(f, confusion);</div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>         QWidget::setTabOrder(confusion, nclass);</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>         QWidget::setTabOrder(nclass, commandLinkButtonPrepareTable);</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>         QWidget::setTabOrder(commandLinkButtonPrepareTable, tableView_labels);</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>         QWidget::setTabOrder(tableView_labels, consoleEdit);</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>         QWidget::setTabOrder(consoleEdit, pushButton_restore);</div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>         QWidget::setTabOrder(pushButton_restore, pushButton_run);</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>         QWidget::setTabOrder(pushButton_run, commandLineEdit);</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>         QWidget::setTabOrder(commandLineEdit, tabWidget);</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span> </div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>         menuBar->addAction(menuFile->menuAction());</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>         menuFile->addAction(actionInput);</div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>         menuFile->addAction(actionReference);</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>         menuFile->addAction(actionMask);</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>         menuFile->addAction(actionOutput);</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span> </div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>         retranslateUi(MainWindow);</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span> </div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>         tabWidget->setCurrentIndex(0);</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span> </div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span> </div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>         QMetaObject::connectSlotsByName(MainWindow);</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>     } <span class="comment">// setupUi</span></div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span> </div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>     <span class="keywordtype">void</span> retranslateUi(QMainWindow *MainWindow)</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>     {</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>         MainWindow->setWindowTitle(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"pkdiff_gui"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>         actionInput->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Input"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>         actionInput->setShortcut(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Alt+I"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>         actionReference->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Reference"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>         actionReference->setShortcut(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Alt+T"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>         actionMask->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Mask"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>         actionMask->setShortcut(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Alt+M"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>         actionOutput->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>         actionOutput->setShortcut(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Alt+O"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>         actionColor_table->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Color table"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>         actionColor_table->setShortcut(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Alt+C"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>         label_2->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"OGR output format"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>         toolButton_output->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>         label_6->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"class label"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>         confusion->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"confusion matrix"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>         label_14->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"msknodata"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>         toolButton_input->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span> <span class="preprocessor"></span>        label_13->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Dimensions of mask image must correspond to input image. Pixels in mask with values=masknodata are not classified and get nodata value.</p></body></html>"</span>, [...]
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span> <span class="preprocessor"></span>        label_13->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Mask image"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>         toolButton_mask->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span> <span class="preprocessor"></span>        label_3->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Input image. Both OGR vectors and GDAL rasters are supported. Number of bands must match those in training sample.</p></body></html>"</span>, 0, QApplication::Unic [...]
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span> <span class="preprocessor"></span>        label_3->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Input data"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>         label_4->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output data"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>         label_5->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"class label"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>         label_reference->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Reference"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span>         toolButton_reference->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>         label_7->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Number of classes to prepare table"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>         label->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"nodata"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>         commandLinkButtonPrepareTable->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"prepare table"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>         tabWidget->setTabText(tabWidget->indexOf(tab_2), QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Input/Output"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span>         label_18->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Command line"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>         label_19->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Console output"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>         tabWidget->setTabText(tabWidget->indexOf(tab_4), QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Console"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span> <span class="preprocessor"></span>        pushButton_run->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Classify with current settings (check Console for output)</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span> <span class="preprocessor"></span>        pushButton_run->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Run"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span> <span class="preprocessor"></span>        pushButton_restore->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>reset all parameters to default</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span> <span class="preprocessor"></span>        pushButton_restore->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Restore defaults"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span>         menuFile->setTitle(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"File"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span>     } <span class="comment">// retranslateUi</span></div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span> </div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span> };</div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span> </div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span> <span class="keyword">namespace </span>Ui {</div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>     <span class="keyword">class </span>MainWindow: <span class="keyword">public</span> <a class="code" href="classUi__MainWindow.html">Ui_MainWindow</a> {};</div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span> } <span class="comment">// namespace Ui</span></div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span> </div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span> QT_END_NAMESPACE</div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span> </div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span> <span class="preprocessor">#endif // UI_MAINWINDOW_H</span></div>
-<div class="ttc" id="classUi__MainWindow_html"><div class="ttname"><a href="classUi__MainWindow.html">Ui_MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="build-pkcomposite__gui-gcc-Debug_2ui__mainwindow_8h_source.html#l00039">ui_mainwindow.h:39</a></div></div>
-<div class="ttc" id="classMainWindow_html"><div class="ttname"><a href="classMainWindow.html">MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite__gui_2mainwindow_8h_source.html#l00031">mainwindow.h:31</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/build-pkextract__gui-gcc-Debug_2moc__mainwindow_8cpp_source.html b/doc/html/build-pkextract__gui-gcc-Debug_2moc__mainwindow_8cpp_source.html
deleted file mode 100644
index 9675565..0000000
--- a/doc/html/build-pkextract__gui-gcc-Debug_2moc__mainwindow_8cpp_source.html
+++ /dev/null
@@ -1,190 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/build-pkextract_gui-gcc-Debug/moc_mainwindow.cpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_d7b2ebecdb5f44d7fa09bdedebc881a7.html">build-pkextract_gui-gcc-Debug</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">moc_mainwindow.cpp</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/****************************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">** Meta object code from reading C++ file 'mainwindow.h'</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">** Created by: The Qt Meta Object Compiler version 63 (Qt 4.8.6)</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">** WARNING! All changes made in this file will be lost!</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">*****************************************************************************/</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> </div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="preprocessor">#include "../pkextract_gui/mainwindow.h"</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="preprocessor">#if !defined(Q_MOC_OUTPUT_REVISION)</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="preprocessor"></span><span class="preprocessor">#error "The header file 'mainwindow.h' doesn't include <QObject>."</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="preprocessor"></span><span class="preprocessor">#elif Q_MOC_OUTPUT_REVISION != 63</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="preprocessor"></span><span class="preprocessor">#error "This file was generated using the moc from 4.8.6. It"</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="preprocessor"></span><span class="preprocessor">#error "cannot be used with the include files from this version of Qt."</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor"></span><span class="preprocessor">#error "(The moc has changed too much.)"</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> QT_BEGIN_MOC_NAMESPACE</div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="keyword">static</span> <span class="keyword">const</span> uint qt_meta_data_MainWindow[] = {</div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> </div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span>  <span class="comment">// content:</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span>        6,       <span class="comment">// revision</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span>        0,       <span class="comment">// classname</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span>        0,    0, <span class="comment">// classinfo</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span>        9,   14, <span class="comment">// methods</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span>        0,    0, <span class="comment">// properties</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span>        0,    0, <span class="comment">// enums/sets</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span>        0,    0, <span class="comment">// constructors</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span>        0,       <span class="comment">// flags</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>        0,       <span class="comment">// signalCount</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> </div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>  <span class="comment">// slots: signature, parameters, type, tag, flags</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>       12,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>       39,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>       67,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>       95,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>      125,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>      156,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>      187,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>      215,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>      251,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span> </div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>        0        <span class="comment">// eod</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span> };</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span> </div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> qt_meta_stringdata_MainWindow[] = {</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     <span class="stringliteral">"MainWindow\0\0on_actionInput_triggered()\0"</span></div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     <span class="stringliteral">"on_actionSample_triggered()\0"</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     <span class="stringliteral">"on_actionOutput_triggered()\0"</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     <span class="stringliteral">"on_toolButton_input_clicked()\0"</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     <span class="stringliteral">"on_toolButton_output_clicked()\0"</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     <span class="stringliteral">"on_toolButton_sample_clicked()\0"</span></div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     <span class="stringliteral">"on_pushButton_run_clicked()\0"</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     <span class="stringliteral">"on_toolButton_createTable_clicked()\0"</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     <span class="stringliteral">"on_pushButton_restore_clicked()\0"</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span> };</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span> </div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span> <span class="keywordtype">void</span> MainWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, <span class="keywordtype">int</span> _id, <span class="keywordtype">void</span> **_a)</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span> {</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     <span class="keywordflow">if</span> (_c == QMetaObject::InvokeMetaMethod) {</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>         Q_ASSERT(staticMetaObject.cast(_o));</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>         <a class="code" href="classMainWindow.html">MainWindow</a> *_t = <span class="keyword">static_cast<</span><a class="code" href="classMainWindow.html">MainWindow</a> *<span class="keyword">></span>(_o);</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>         <span class="keywordflow">switch</span> (_id) {</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>         <span class="keywordflow">case</span> 0: _t->on_actionInput_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>         <span class="keywordflow">case</span> 1: _t->on_actionSample_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>         <span class="keywordflow">case</span> 2: _t->on_actionOutput_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>         <span class="keywordflow">case</span> 3: _t->on_toolButton_input_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>         <span class="keywordflow">case</span> 4: _t->on_toolButton_output_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>         <span class="keywordflow">case</span> 5: _t->on_toolButton_sample_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>         <span class="keywordflow">case</span> 6: _t->on_pushButton_run_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>         <span class="keywordflow">case</span> 7: _t->on_toolButton_createTable_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>         <span class="keywordflow">case</span> 8: _t->on_pushButton_restore_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>         <span class="keywordflow">default</span>: ;</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>         }</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>     }</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>     Q_UNUSED(_a);</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span> }</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span> </div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span> <span class="keyword">const</span> QMetaObjectExtraData MainWindow::staticMetaObjectExtraData = {</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>     0,  qt_static_metacall </div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span> };</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span> </div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span> <span class="keyword">const</span> QMetaObject MainWindow::staticMetaObject = {</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     { &QMainWindow::staticMetaObject, qt_meta_stringdata_MainWindow,</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>       qt_meta_data_MainWindow, &staticMetaObjectExtraData }</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span> };</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span> </div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span> <span class="preprocessor">#ifdef Q_NO_DATA_RELOCATION</span></div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span> <span class="preprocessor"></span><span class="keyword">const</span> QMetaObject &MainWindow::getStaticMetaObject() { <span class="keywordflow">return</span> staticMetaObject; }</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span> <span class="preprocessor">#endif //Q_NO_DATA_RELOCATION</span></div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span> <span class="keyword">const</span> QMetaObject *MainWindow::metaObject()<span class="keyword"> const</span></div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>     <span class="keywordflow">return</span> QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject;</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span> }</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span> </div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span> <span class="keywordtype">void</span> *MainWindow::qt_metacast(<span class="keyword">const</span> <span class="keywordtype">char</span> *_clname)</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span> {</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     <span class="keywordflow">if</span> (!_clname) <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     <span class="keywordflow">if</span> (!strcmp(_clname, qt_meta_stringdata_MainWindow))</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>         <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">void</span>*<span class="keyword">></span>(<span class="keyword">const_cast<</span> <a class="code" href="classMainWindow.html">MainWindow</a>*<span class="keyword">></span>(<span class="keyword">this</span>));</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     <span class="keywordflow">return</span> QMainWindow::qt_metacast(_clname);</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span> }</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span> </div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span> <span class="keywordtype">int</span> MainWindow::qt_metacall(QMetaObject::Call _c, <span class="keywordtype">int</span> _id, <span class="keywordtype">void</span> **_a)</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span> {</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     _id = QMainWindow::qt_metacall(_c, _id, _a);</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     <span class="keywordflow">if</span> (_id < 0)</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>         <span class="keywordflow">return</span> _id;</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>     <span class="keywordflow">if</span> (_c == QMetaObject::InvokeMetaMethod) {</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>         <span class="keywordflow">if</span> (_id < 9)</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>             qt_static_metacall(<span class="keyword">this</span>, _c, _id, _a);</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>         _id -= 9;</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     }</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     <span class="keywordflow">return</span> _id;</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span> }</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span> QT_END_MOC_NAMESPACE</div>
-<div class="ttc" id="classMainWindow_html"><div class="ttname"><a href="classMainWindow.html">MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite__gui_2mainwindow_8h_source.html#l00031">mainwindow.h:31</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/build-pkextract__gui-gcc-Debug_2ui__mainwindow_8h_source.html b/doc/html/build-pkextract__gui-gcc-Debug_2ui__mainwindow_8h_source.html
deleted file mode 100644
index eb50454..0000000
--- a/doc/html/build-pkextract__gui-gcc-Debug_2ui__mainwindow_8h_source.html
+++ /dev/null
@@ -1,590 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/build-pkextract_gui-gcc-Debug/ui_mainwindow.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_d7b2ebecdb5f44d7fa09bdedebc881a7.html">build-pkextract_gui-gcc-Debug</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">ui_mainwindow.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/********************************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">** Form generated from reading UI file 'mainwindow.ui'</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">** Created by: Qt User Interface Compiler version 4.8.6</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">** WARNING! All changes made in this file will be lost when recompiling UI file!</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">********************************************************************************/</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> </div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="preprocessor">#ifndef UI_MAINWINDOW_H</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="preprocessor"></span><span class="preprocessor">#define UI_MAINWINDOW_H</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="preprocessor">#include <QtCore/QVariant></span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="preprocessor">#include <QtGui/QAction></span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="preprocessor">#include <QtGui/QApplication></span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor">#include <QtGui/QButtonGroup></span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor">#include <QtGui/QCheckBox></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include <QtGui/QComboBox></span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include <QtGui/QGridLayout></span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include <QtGui/QHBoxLayout></span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <QtGui/QHeaderView></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <QtGui/QLabel></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <QtGui/QLineEdit></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <QtGui/QMainWindow></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <QtGui/QMenu></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include <QtGui/QMenuBar></span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include <QtGui/QPlainTextEdit></span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include <QtGui/QPushButton></span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include <QtGui/QSpacerItem></span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include <QtGui/QStatusBar></span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include <QtGui/QTabWidget></span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="preprocessor">#include <QtGui/QTableView></span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="preprocessor">#include <QtGui/QToolBar></span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="preprocessor">#include <QtGui/QToolButton></span></div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="preprocessor">#include <QtGui/QVBoxLayout></span></div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="preprocessor">#include <QtGui/QWidget></span></div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> </div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> QT_BEGIN_NAMESPACE</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="keyword">class </span><a class="code" href="classUi__MainWindow.html">Ui_MainWindow</a></div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> {</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     QAction *actionInput;</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     QAction *actionSample;</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     QAction *actionMask;</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     QAction *actionOutput;</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     QWidget *centralWidget;</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     QGridLayout *gridLayout_5;</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     QHBoxLayout *horizontalLayout_3;</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     QTabWidget *tabWidget;</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     QWidget *tab_2;</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     QHBoxLayout *horizontalLayout_4;</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     QGridLayout *gridLayout;</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     QLabel *label_14;</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     QLineEdit *bndnodata;</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     QLabel *label_13;</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     QLineEdit *output;</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     QLineEdit *input;</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     QToolButton *toolButton_input;</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     QComboBox *f;</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     QLabel *label_16;</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     QLabel *label_15;</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     QLabel *label_3;</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     QLineEdit *sample;</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     QLabel *label_23;</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     QLineEdit *srcnodata;</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     QToolButton *toolButton_output;</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>     QToolButton *toolButton_sample;</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     QCheckBox *polygon;</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     QWidget *tab;</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     QHBoxLayout *horizontalLayout_5;</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     QGridLayout *gridLayout_4;</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>     QLineEdit *bname;</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>     QLabel *label_20;</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>     QComboBox *rule;</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>     QLabel *label_4;</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>     QLineEdit *nclass;</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>     QLabel *label_21;</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>     QToolButton *toolButton_createTable;</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>     QLabel *label_2;</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>     QLabel *label;</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>     QLineEdit *threshold;</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     QSpacerItem *verticalSpacer_2;</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     QLabel *label_5;</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     QLineEdit *cname;</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>     QVBoxLayout *verticalLayout_2;</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>     QLabel *label_17;</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>     QTableView *tableView_labels;</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>     QLabel *label_22;</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     QWidget *tab_4;</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     QHBoxLayout *horizontalLayout_6;</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     QVBoxLayout *verticalLayout;</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     QLabel *label_18;</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>     QLineEdit *commandLineEdit;</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>     QLabel *label_19;</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>     QPlainTextEdit *consoleEdit;</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     QHBoxLayout *horizontalLayout;</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     QPushButton *pushButton_run;</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     QSpacerItem *horizontalSpacer;</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     QPushButton *pushButton_restore;</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     QMenuBar *menuBar;</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     QMenu *menuFile;</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     QToolBar *mainToolBar;</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     QStatusBar *statusBar;</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span> </div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     <span class="keywordtype">void</span> setupUi(QMainWindow *<a class="code" href="classMainWindow.html">MainWindow</a>)</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     {</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>         <span class="keywordflow">if</span> (MainWindow->objectName().isEmpty())</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>             MainWindow->setObjectName(QString::fromUtf8(<span class="stringliteral">"MainWindow"</span>));</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>         MainWindow->resize(703, 706);</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>         actionInput = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>         actionInput->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionInput"</span>));</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>         actionSample = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>         actionSample->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionSample"</span>));</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>         actionMask = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>         actionMask->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionMask"</span>));</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>         actionOutput = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>         actionOutput->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionOutput"</span>));</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>         centralWidget = <span class="keyword">new</span> QWidget(MainWindow);</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>         centralWidget->setObjectName(QString::fromUtf8(<span class="stringliteral">"centralWidget"</span>));</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>         centralWidget->setMinimumSize(QSize(423, 392));</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>         gridLayout_5 = <span class="keyword">new</span> QGridLayout(centralWidget);</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>         gridLayout_5->setSpacing(6);</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>         gridLayout_5->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>         gridLayout_5->setObjectName(QString::fromUtf8(<span class="stringliteral">"gridLayout_5"</span>));</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>         horizontalLayout_3 = <span class="keyword">new</span> QHBoxLayout();</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>         horizontalLayout_3->setSpacing(6);</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>         horizontalLayout_3->setObjectName(QString::fromUtf8(<span class="stringliteral">"horizontalLayout_3"</span>));</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>         tabWidget = <span class="keyword">new</span> QTabWidget(centralWidget);</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>         tabWidget->setObjectName(QString::fromUtf8(<span class="stringliteral">"tabWidget"</span>));</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>         tab_2 = <span class="keyword">new</span> QWidget();</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>         tab_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"tab_2"</span>));</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>         horizontalLayout_4 = <span class="keyword">new</span> QHBoxLayout(tab_2);</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>         horizontalLayout_4->setSpacing(6);</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>         horizontalLayout_4->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>         horizontalLayout_4->setObjectName(QString::fromUtf8(<span class="stringliteral">"horizontalLayout_4"</span>));</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>         gridLayout = <span class="keyword">new</span> QGridLayout();</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>         gridLayout->setSpacing(6);</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>         gridLayout->setObjectName(QString::fromUtf8(<span class="stringliteral">"gridLayout"</span>));</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>         label_14 = <span class="keyword">new</span> QLabel(tab_2);</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>         label_14->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_14"</span>));</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span> </div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>         gridLayout->addWidget(label_14, 1, 3, 1, 1);</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span> </div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>         bndnodata = <span class="keyword">new</span> QLineEdit(tab_2);</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>         bndnodata->setObjectName(QString::fromUtf8(<span class="stringliteral">"bndnodata"</span>));</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span> </div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>         gridLayout->addWidget(bndnodata, 1, 1, 1, 1);</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span> </div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>         label_13 = <span class="keyword">new</span> QLabel(tab_2);</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>         label_13->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_13"</span>));</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span> </div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>         gridLayout->addWidget(label_13, 1, 0, 1, 1);</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span> </div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>         output = <span class="keyword">new</span> QLineEdit(tab_2);</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>         output->setObjectName(QString::fromUtf8(<span class="stringliteral">"output"</span>));</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span> </div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>         gridLayout->addWidget(output, 3, 1, 1, 1);</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span> </div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>         input = <span class="keyword">new</span> QLineEdit(tab_2);</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>         input->setObjectName(QString::fromUtf8(<span class="stringliteral">"input"</span>));</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span> </div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>         gridLayout->addWidget(input, 0, 1, 1, 1);</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span> </div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>         toolButton_input = <span class="keyword">new</span> QToolButton(tab_2);</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>         toolButton_input->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_input"</span>));</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span> </div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>         gridLayout->addWidget(toolButton_input, 0, 2, 1, 1);</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span> </div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>         f = <span class="keyword">new</span> QComboBox(tab_2);</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>         f->setObjectName(QString::fromUtf8(<span class="stringliteral">"f"</span>));</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span> </div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>         gridLayout->addWidget(f, 3, 4, 1, 1);</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span> </div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>         label_16 = <span class="keyword">new</span> QLabel(tab_2);</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>         label_16->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_16"</span>));</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span> </div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>         gridLayout->addWidget(label_16, 3, 3, 1, 1);</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span> </div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>         label_15 = <span class="keyword">new</span> QLabel(tab_2);</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>         label_15->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_15"</span>));</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span> </div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>         gridLayout->addWidget(label_15, 3, 0, 1, 1);</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span> </div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>         label_3 = <span class="keyword">new</span> QLabel(tab_2);</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>         label_3->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_3"</span>));</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span> </div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>         gridLayout->addWidget(label_3, 0, 0, 1, 1);</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span> </div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>         sample = <span class="keyword">new</span> QLineEdit(tab_2);</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>         sample->setObjectName(QString::fromUtf8(<span class="stringliteral">"sample"</span>));</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span> </div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>         gridLayout->addWidget(sample, 2, 1, 1, 1);</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span> </div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>         label_23 = <span class="keyword">new</span> QLabel(tab_2);</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>         label_23->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_23"</span>));</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span> </div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>         gridLayout->addWidget(label_23, 2, 0, 1, 1);</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span> </div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>         srcnodata = <span class="keyword">new</span> QLineEdit(tab_2);</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>         srcnodata->setObjectName(QString::fromUtf8(<span class="stringliteral">"srcnodata"</span>));</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span> </div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>         gridLayout->addWidget(srcnodata, 1, 4, 1, 1);</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span> </div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>         toolButton_output = <span class="keyword">new</span> QToolButton(tab_2);</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>         toolButton_output->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_output"</span>));</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span> </div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>         gridLayout->addWidget(toolButton_output, 3, 2, 1, 1);</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span> </div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>         toolButton_sample = <span class="keyword">new</span> QToolButton(tab_2);</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>         toolButton_sample->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_sample"</span>));</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span> </div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>         gridLayout->addWidget(toolButton_sample, 2, 2, 1, 1);</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span> </div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>         polygon = <span class="keyword">new</span> QCheckBox(tab_2);</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>         polygon->setObjectName(QString::fromUtf8(<span class="stringliteral">"polygon"</span>));</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span> </div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>         gridLayout->addWidget(polygon, 4, 3, 1, 1);</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span> </div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span> </div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>         horizontalLayout_4->addLayout(gridLayout);</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span> </div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>         tabWidget->addTab(tab_2, QString());</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>         tab = <span class="keyword">new</span> QWidget();</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>         tab->setObjectName(QString::fromUtf8(<span class="stringliteral">"tab"</span>));</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>         horizontalLayout_5 = <span class="keyword">new</span> QHBoxLayout(tab);</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>         horizontalLayout_5->setSpacing(6);</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>         horizontalLayout_5->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>         horizontalLayout_5->setObjectName(QString::fromUtf8(<span class="stringliteral">"horizontalLayout_5"</span>));</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>         gridLayout_4 = <span class="keyword">new</span> QGridLayout();</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>         gridLayout_4->setSpacing(6);</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>         gridLayout_4->setObjectName(QString::fromUtf8(<span class="stringliteral">"gridLayout_4"</span>));</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>         bname = <span class="keyword">new</span> QLineEdit(tab);</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>         bname->setObjectName(QString::fromUtf8(<span class="stringliteral">"bname"</span>));</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span> </div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>         gridLayout_4->addWidget(bname, 1, 1, 1, 1);</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span> </div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>         label_20 = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>         label_20->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_20"</span>));</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span> </div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>         gridLayout_4->addWidget(label_20, 4, 0, 1, 1);</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span> </div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>         rule = <span class="keyword">new</span> QComboBox(tab);</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>         rule->setObjectName(QString::fromUtf8(<span class="stringliteral">"rule"</span>));</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span> </div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>         gridLayout_4->addWidget(rule, 0, 1, 1, 1);</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span> </div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>         label_4 = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>         label_4->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_4"</span>));</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span> </div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>         gridLayout_4->addWidget(label_4, 0, 0, 1, 1);</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span> </div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>         nclass = <span class="keyword">new</span> QLineEdit(tab);</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>         nclass->setObjectName(QString::fromUtf8(<span class="stringliteral">"nclass"</span>));</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>         QSizePolicy sizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>         sizePolicy.setHorizontalStretch(10);</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>         sizePolicy.setVerticalStretch(0);</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>         sizePolicy.setHeightForWidth(nclass->sizePolicy().hasHeightForWidth());</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>         nclass->setSizePolicy(sizePolicy);</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span> </div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>         gridLayout_4->addWidget(nclass, 4, 1, 1, 1);</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span> </div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>         label_21 = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>         label_21->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_21"</span>));</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span> </div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>         gridLayout_4->addWidget(label_21, 3, 1, 1, 1);</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span> </div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>         toolButton_createTable = <span class="keyword">new</span> QToolButton(tab);</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>         toolButton_createTable->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_createTable"</span>));</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span> </div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>         gridLayout_4->addWidget(toolButton_createTable, 4, 2, 1, 1);</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span> </div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>         label_2 = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>         label_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_2"</span>));</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span> </div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>         gridLayout_4->addWidget(label_2, 1, 0, 1, 1);</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span> </div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>         label = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>         label->setObjectName(QString::fromUtf8(<span class="stringliteral">"label"</span>));</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span> </div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>         gridLayout_4->addWidget(label, 5, 0, 1, 1);</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span> </div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>         threshold = <span class="keyword">new</span> QLineEdit(tab);</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>         threshold->setObjectName(QString::fromUtf8(<span class="stringliteral">"threshold"</span>));</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span> </div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>         gridLayout_4->addWidget(threshold, 5, 1, 1, 1);</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span> </div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>         verticalSpacer_2 = <span class="keyword">new</span> QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span> </div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>         gridLayout_4->addItem(verticalSpacer_2, 6, 0, 1, 1);</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span> </div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>         label_5 = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>         label_5->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_5"</span>));</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span> </div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>         gridLayout_4->addWidget(label_5, 2, 0, 1, 1);</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span> </div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>         cname = <span class="keyword">new</span> QLineEdit(tab);</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>         cname->setObjectName(QString::fromUtf8(<span class="stringliteral">"cname"</span>));</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span> </div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>         gridLayout_4->addWidget(cname, 2, 1, 1, 1);</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span> </div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span> </div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>         horizontalLayout_5->addLayout(gridLayout_4);</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span> </div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>         verticalLayout_2 = <span class="keyword">new</span> QVBoxLayout();</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>         verticalLayout_2->setSpacing(6);</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>         verticalLayout_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout_2"</span>));</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>         label_17 = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>         label_17->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_17"</span>));</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span> </div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>         verticalLayout_2->addWidget(label_17);</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span> </div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>         tableView_labels = <span class="keyword">new</span> QTableView(tab);</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>         tableView_labels->setObjectName(QString::fromUtf8(<span class="stringliteral">"tableView_labels"</span>));</div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span> </div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>         verticalLayout_2->addWidget(tableView_labels);</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span> </div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>         label_22 = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>         label_22->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_22"</span>));</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span> </div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>         verticalLayout_2->addWidget(label_22, 0, Qt::AlignHCenter);</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span> </div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span> </div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>         horizontalLayout_5->addLayout(verticalLayout_2);</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span> </div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>         tabWidget->addTab(tab, QString());</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>         tab_4 = <span class="keyword">new</span> QWidget();</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>         tab_4->setObjectName(QString::fromUtf8(<span class="stringliteral">"tab_4"</span>));</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>         horizontalLayout_6 = <span class="keyword">new</span> QHBoxLayout(tab_4);</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>         horizontalLayout_6->setSpacing(6);</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>         horizontalLayout_6->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>         horizontalLayout_6->setObjectName(QString::fromUtf8(<span class="stringliteral">"horizontalLayout_6"</span>));</div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>         verticalLayout = <span class="keyword">new</span> QVBoxLayout();</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>         verticalLayout->setSpacing(6);</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>         verticalLayout->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout"</span>));</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>         label_18 = <span class="keyword">new</span> QLabel(tab_4);</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>         label_18->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_18"</span>));</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span> </div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>         verticalLayout->addWidget(label_18);</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span> </div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>         commandLineEdit = <span class="keyword">new</span> QLineEdit(tab_4);</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>         commandLineEdit->setObjectName(QString::fromUtf8(<span class="stringliteral">"commandLineEdit"</span>));</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span> </div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>         verticalLayout->addWidget(commandLineEdit);</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span> </div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>         label_19 = <span class="keyword">new</span> QLabel(tab_4);</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>         label_19->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_19"</span>));</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span> </div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>         verticalLayout->addWidget(label_19);</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span> </div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>         consoleEdit = <span class="keyword">new</span> QPlainTextEdit(tab_4);</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>         consoleEdit->setObjectName(QString::fromUtf8(<span class="stringliteral">"consoleEdit"</span>));</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span> </div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>         verticalLayout->addWidget(consoleEdit);</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span> </div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span> </div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>         horizontalLayout_6->addLayout(verticalLayout);</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span> </div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>         tabWidget->addTab(tab_4, QString());</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span> </div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>         horizontalLayout_3->addWidget(tabWidget);</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span> </div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span> </div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>         gridLayout_5->addLayout(horizontalLayout_3, 0, 0, 1, 1);</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span> </div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>         horizontalLayout = <span class="keyword">new</span> QHBoxLayout();</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>         horizontalLayout->setSpacing(6);</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>         horizontalLayout->setObjectName(QString::fromUtf8(<span class="stringliteral">"horizontalLayout"</span>));</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>         pushButton_run = <span class="keyword">new</span> QPushButton(centralWidget);</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>         pushButton_run->setObjectName(QString::fromUtf8(<span class="stringliteral">"pushButton_run"</span>));</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span> </div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>         horizontalLayout->addWidget(pushButton_run);</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span> </div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>         horizontalSpacer = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span> </div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>         horizontalLayout->addItem(horizontalSpacer);</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span> </div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>         pushButton_restore = <span class="keyword">new</span> QPushButton(centralWidget);</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>         pushButton_restore->setObjectName(QString::fromUtf8(<span class="stringliteral">"pushButton_restore"</span>));</div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span> </div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>         horizontalLayout->addWidget(pushButton_restore);</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span> </div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span> </div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>         gridLayout_5->addLayout(horizontalLayout, 1, 0, 1, 1);</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span> </div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>         MainWindow->setCentralWidget(centralWidget);</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>         menuBar = <span class="keyword">new</span> QMenuBar(MainWindow);</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>         menuBar->setObjectName(QString::fromUtf8(<span class="stringliteral">"menuBar"</span>));</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>         menuBar->setGeometry(QRect(0, 0, 703, 27));</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>         menuFile = <span class="keyword">new</span> QMenu(menuBar);</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>         menuFile->setObjectName(QString::fromUtf8(<span class="stringliteral">"menuFile"</span>));</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>         MainWindow->setMenuBar(menuBar);</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>         mainToolBar = <span class="keyword">new</span> QToolBar(MainWindow);</div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>         mainToolBar->setObjectName(QString::fromUtf8(<span class="stringliteral">"mainToolBar"</span>));</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>         MainWindow->addToolBar(Qt::TopToolBarArea, mainToolBar);</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>         statusBar = <span class="keyword">new</span> QStatusBar(MainWindow);</div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>         statusBar->setObjectName(QString::fromUtf8(<span class="stringliteral">"statusBar"</span>));</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>         MainWindow->setStatusBar(statusBar);</div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>         QWidget::setTabOrder(input, toolButton_input);</div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>         QWidget::setTabOrder(toolButton_input, bndnodata);</div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>         QWidget::setTabOrder(bndnodata, srcnodata);</div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>         QWidget::setTabOrder(srcnodata, sample);</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>         QWidget::setTabOrder(sample, toolButton_sample);</div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span>         QWidget::setTabOrder(toolButton_sample, output);</div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>         QWidget::setTabOrder(output, toolButton_output);</div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>         QWidget::setTabOrder(toolButton_output, f);</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>         QWidget::setTabOrder(f, polygon);</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span>         QWidget::setTabOrder(polygon, rule);</div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>         QWidget::setTabOrder(rule, bname);</div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span>         QWidget::setTabOrder(bname, cname);</div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>         QWidget::setTabOrder(cname, nclass);</div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>         QWidget::setTabOrder(nclass, toolButton_createTable);</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>         QWidget::setTabOrder(toolButton_createTable, threshold);</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>         QWidget::setTabOrder(threshold, pushButton_run);</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span>         QWidget::setTabOrder(pushButton_run, pushButton_restore);</div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>         QWidget::setTabOrder(pushButton_restore, tabWidget);</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>         QWidget::setTabOrder(tabWidget, tableView_labels);</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>         QWidget::setTabOrder(tableView_labels, commandLineEdit);</div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>         QWidget::setTabOrder(commandLineEdit, consoleEdit);</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span> </div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>         menuBar->addAction(menuFile->menuAction());</div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>         menuFile->addAction(actionInput);</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span>         menuFile->addAction(actionMask);</div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>         menuFile->addAction(actionSample);</div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span>         menuFile->addAction(actionOutput);</div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span> </div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>         retranslateUi(MainWindow);</div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span> </div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span>         tabWidget->setCurrentIndex(0);</div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span> </div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span> </div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span>         QMetaObject::connectSlotsByName(MainWindow);</div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span>     } <span class="comment">// setupUi</span></div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span> </div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span>     <span class="keywordtype">void</span> retranslateUi(QMainWindow *MainWindow)</div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>     {</div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>         MainWindow->setWindowTitle(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"pkextract_gui"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span>         actionInput->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Input"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span>         actionSample->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Sample"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span>         actionMask->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Mask"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span>         actionOutput->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span> <span class="preprocessor"></span>        label_14->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>invalid value(s) for input image</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span> <span class="preprocessor"></span>        label_14->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"srcnodata"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00445"></a><span class="lineno">  445</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00446"></a><span class="lineno">  446</span> <span class="preprocessor"></span>        label_13->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Band(s) in input image to check if pixel is valid (used for srcnodata)</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00447"></a><span class="lineno">  447</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00448"></a><span class="lineno">  448</span> <span class="preprocessor"></span>        label_13->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"bndnodata"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00449"></a><span class="lineno">  449</span>         toolButton_input->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00450"></a><span class="lineno">  450</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00451"></a><span class="lineno">  451</span> <span class="preprocessor"></span>        label_16->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>OGR supported vector format</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00452"></a><span class="lineno">  452</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00453"></a><span class="lineno">  453</span> <span class="preprocessor"></span>        label_16->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"format"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00454"></a><span class="lineno">  454</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span> <span class="preprocessor"></span>        label_15->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Output will contain sample features with input band information included</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span> <span class="preprocessor"></span>        label_15->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output data"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00458"></a><span class="lineno">  458</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00459"></a><span class="lineno">  459</span> <span class="preprocessor"></span>        label_3->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Raster input dataset containing band information</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00460"></a><span class="lineno">  460</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span> <span class="preprocessor"></span>        label_3->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Input data"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span> <span class="preprocessor"></span>        label_23->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>OGR vector file with features to be extracted from input data. Output will contain features with input band information included. Sample image can also be GDAL raster dataset.</p> [...]
-<div class="line"><a name="l00464"></a><span class="lineno">  464</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span> <span class="preprocessor"></span>        label_23->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Sample image"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>         toolButton_output->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span>         toolButton_sample->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span> <span class="preprocessor"></span>        polygon->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Keep output features as polygons (only if input vector are polygons as well)</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00470"></a><span class="lineno">  470</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00471"></a><span class="lineno">  471</span> <span class="preprocessor"></span>        polygon->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"polygons"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00472"></a><span class="lineno">  472</span>         tabWidget->setTabText(tabWidget->indexOf(tab_2), QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Input/Output"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00474"></a><span class="lineno">  474</span> <span class="preprocessor"></span>        label_20->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Prepare a table with class names. To prepare the table, first enter the number of classes and then press the button '-&gt;'. </p><p>Prepare a class table only in [...]
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00476"></a><span class="lineno">  476</span> <span class="preprocessor"></span>        label_20->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"prepare table "</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00477"></a><span class="lineno">  477</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00478"></a><span class="lineno">  478</span> <span class="preprocessor"></span>        label_4->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Rule how to extract the features from the input data</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00479"></a><span class="lineno">  479</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span> <span class="preprocessor"></span>        label_4->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"extraction rule"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span>         label_21->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"# classes"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00482"></a><span class="lineno">  482</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00483"></a><span class="lineno">  483</span> <span class="preprocessor"></span>        toolButton_createTable->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Prepare a table with class names. To prepare the table, first enter the number of classes and then press the button '-&gt;'. </p><p>Prepare a class [...]
-<div class="line"><a name="l00484"></a><span class="lineno">  484</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00485"></a><span class="lineno">  485</span> <span class="preprocessor"></span>        toolButton_createTable->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"->"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00486"></a><span class="lineno">  486</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00487"></a><span class="lineno">  487</span> <span class="preprocessor"></span>        label_2->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>For single band input data, this extra attribute name will correspond to the raster values. For multi-band input data, multiple attributes with this prefix will be added (e.g. B0, B1, B2 [...]
-<div class="line"><a name="l00488"></a><span class="lineno">  488</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00489"></a><span class="lineno">  489</span> <span class="preprocessor"></span>        label_2->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"attribute (prefix) name for raster info"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span> <span class="preprocessor"></span>        label->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Threshold value for selection process. Select this percentage of the raster pixels (if sample is a raster dataset) or this percentage of the features in the vector file (if sample is a vec [...]
-<div class="line"><a name="l00492"></a><span class="lineno">  492</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00493"></a><span class="lineno">  493</span> <span class="preprocessor"></span>        label->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Single threshold"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00494"></a><span class="lineno">  494</span>         label_5->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"attribute for class output"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00495"></a><span class="lineno">  495</span>         label_17->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"class name-threshold (%) pairs"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00496"></a><span class="lineno">  496</span>         label_22->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"replace label names with\n"</span></div>
-<div class="line"><a name="l00497"></a><span class="lineno">  497</span> <span class="stringliteral">" the labels in your training\n"</span></div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span> <span class="stringliteral">" vector file"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span>         tabWidget->setTabText(tabWidget->indexOf(tab), QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Extract"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00500"></a><span class="lineno">  500</span>         label_18->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Command line"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00501"></a><span class="lineno">  501</span>         label_19->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Console output"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00502"></a><span class="lineno">  502</span>         tabWidget->setTabText(tabWidget->indexOf(tab_4), QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Console"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00503"></a><span class="lineno">  503</span>         pushButton_run->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Run"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00504"></a><span class="lineno">  504</span>         pushButton_restore->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Restore defaults"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00505"></a><span class="lineno">  505</span>         menuFile->setTitle(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"File"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00506"></a><span class="lineno">  506</span>     } <span class="comment">// retranslateUi</span></div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span> </div>
-<div class="line"><a name="l00508"></a><span class="lineno">  508</span> };</div>
-<div class="line"><a name="l00509"></a><span class="lineno">  509</span> </div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span> <span class="keyword">namespace </span>Ui {</div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span>     <span class="keyword">class </span>MainWindow: <span class="keyword">public</span> <a class="code" href="classUi__MainWindow.html">Ui_MainWindow</a> {};</div>
-<div class="line"><a name="l00512"></a><span class="lineno">  512</span> } <span class="comment">// namespace Ui</span></div>
-<div class="line"><a name="l00513"></a><span class="lineno">  513</span> </div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span> QT_END_NAMESPACE</div>
-<div class="line"><a name="l00515"></a><span class="lineno">  515</span> </div>
-<div class="line"><a name="l00516"></a><span class="lineno">  516</span> <span class="preprocessor">#endif // UI_MAINWINDOW_H</span></div>
-<div class="ttc" id="classUi__MainWindow_html"><div class="ttname"><a href="classUi__MainWindow.html">Ui_MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="build-pkcomposite__gui-gcc-Debug_2ui__mainwindow_8h_source.html#l00039">ui_mainwindow.h:39</a></div></div>
-<div class="ttc" id="classMainWindow_html"><div class="ttname"><a href="classMainWindow.html">MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite__gui_2mainwindow_8h_source.html#l00031">mainwindow.h:31</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/build-pkextract__gui-gcc-Release_2moc__mainwindow_8cpp_source.html b/doc/html/build-pkextract__gui-gcc-Release_2moc__mainwindow_8cpp_source.html
deleted file mode 100644
index f155729..0000000
--- a/doc/html/build-pkextract__gui-gcc-Release_2moc__mainwindow_8cpp_source.html
+++ /dev/null
@@ -1,190 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/build-pkextract_gui-gcc-Release/moc_mainwindow.cpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_41d189c72498e24f979b227eb8e138b1.html">build-pkextract_gui-gcc-Release</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">moc_mainwindow.cpp</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/****************************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">** Meta object code from reading C++ file 'mainwindow.h'</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">** Created by: The Qt Meta Object Compiler version 63 (Qt 4.8.6)</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">** WARNING! All changes made in this file will be lost!</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">*****************************************************************************/</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> </div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="preprocessor">#include "../pkextract_gui/mainwindow.h"</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="preprocessor">#if !defined(Q_MOC_OUTPUT_REVISION)</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="preprocessor"></span><span class="preprocessor">#error "The header file 'mainwindow.h' doesn't include <QObject>."</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="preprocessor"></span><span class="preprocessor">#elif Q_MOC_OUTPUT_REVISION != 63</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="preprocessor"></span><span class="preprocessor">#error "This file was generated using the moc from 4.8.6. It"</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="preprocessor"></span><span class="preprocessor">#error "cannot be used with the include files from this version of Qt."</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor"></span><span class="preprocessor">#error "(The moc has changed too much.)"</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> QT_BEGIN_MOC_NAMESPACE</div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="keyword">static</span> <span class="keyword">const</span> uint qt_meta_data_MainWindow[] = {</div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> </div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span>  <span class="comment">// content:</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span>        6,       <span class="comment">// revision</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span>        0,       <span class="comment">// classname</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span>        0,    0, <span class="comment">// classinfo</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span>        9,   14, <span class="comment">// methods</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span>        0,    0, <span class="comment">// properties</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span>        0,    0, <span class="comment">// enums/sets</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span>        0,    0, <span class="comment">// constructors</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span>        0,       <span class="comment">// flags</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>        0,       <span class="comment">// signalCount</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> </div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>  <span class="comment">// slots: signature, parameters, type, tag, flags</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>       12,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>       39,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>       67,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>       95,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>      125,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>      156,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>      187,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>      215,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>      251,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span> </div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>        0        <span class="comment">// eod</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span> };</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span> </div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> qt_meta_stringdata_MainWindow[] = {</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     <span class="stringliteral">"MainWindow\0\0on_actionInput_triggered()\0"</span></div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     <span class="stringliteral">"on_actionSample_triggered()\0"</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     <span class="stringliteral">"on_actionOutput_triggered()\0"</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     <span class="stringliteral">"on_toolButton_input_clicked()\0"</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     <span class="stringliteral">"on_toolButton_output_clicked()\0"</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     <span class="stringliteral">"on_toolButton_sample_clicked()\0"</span></div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     <span class="stringliteral">"on_pushButton_run_clicked()\0"</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     <span class="stringliteral">"on_toolButton_createTable_clicked()\0"</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     <span class="stringliteral">"on_pushButton_restore_clicked()\0"</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span> };</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span> </div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span> <span class="keywordtype">void</span> MainWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, <span class="keywordtype">int</span> _id, <span class="keywordtype">void</span> **_a)</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span> {</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     <span class="keywordflow">if</span> (_c == QMetaObject::InvokeMetaMethod) {</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>         Q_ASSERT(staticMetaObject.cast(_o));</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>         <a class="code" href="classMainWindow.html">MainWindow</a> *_t = <span class="keyword">static_cast<</span><a class="code" href="classMainWindow.html">MainWindow</a> *<span class="keyword">></span>(_o);</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>         <span class="keywordflow">switch</span> (_id) {</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>         <span class="keywordflow">case</span> 0: _t->on_actionInput_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>         <span class="keywordflow">case</span> 1: _t->on_actionSample_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>         <span class="keywordflow">case</span> 2: _t->on_actionOutput_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>         <span class="keywordflow">case</span> 3: _t->on_toolButton_input_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>         <span class="keywordflow">case</span> 4: _t->on_toolButton_output_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>         <span class="keywordflow">case</span> 5: _t->on_toolButton_sample_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>         <span class="keywordflow">case</span> 6: _t->on_pushButton_run_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>         <span class="keywordflow">case</span> 7: _t->on_toolButton_createTable_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>         <span class="keywordflow">case</span> 8: _t->on_pushButton_restore_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>         <span class="keywordflow">default</span>: ;</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>         }</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>     }</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>     Q_UNUSED(_a);</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span> }</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span> </div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span> <span class="keyword">const</span> QMetaObjectExtraData MainWindow::staticMetaObjectExtraData = {</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>     0,  qt_static_metacall </div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span> };</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span> </div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span> <span class="keyword">const</span> QMetaObject MainWindow::staticMetaObject = {</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     { &QMainWindow::staticMetaObject, qt_meta_stringdata_MainWindow,</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>       qt_meta_data_MainWindow, &staticMetaObjectExtraData }</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span> };</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span> </div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span> <span class="preprocessor">#ifdef Q_NO_DATA_RELOCATION</span></div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span> <span class="preprocessor"></span><span class="keyword">const</span> QMetaObject &MainWindow::getStaticMetaObject() { <span class="keywordflow">return</span> staticMetaObject; }</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span> <span class="preprocessor">#endif //Q_NO_DATA_RELOCATION</span></div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span> <span class="keyword">const</span> QMetaObject *MainWindow::metaObject()<span class="keyword"> const</span></div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>     <span class="keywordflow">return</span> QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject;</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span> }</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span> </div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span> <span class="keywordtype">void</span> *MainWindow::qt_metacast(<span class="keyword">const</span> <span class="keywordtype">char</span> *_clname)</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span> {</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     <span class="keywordflow">if</span> (!_clname) <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     <span class="keywordflow">if</span> (!strcmp(_clname, qt_meta_stringdata_MainWindow))</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>         <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">void</span>*<span class="keyword">></span>(<span class="keyword">const_cast<</span> <a class="code" href="classMainWindow.html">MainWindow</a>*<span class="keyword">></span>(<span class="keyword">this</span>));</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     <span class="keywordflow">return</span> QMainWindow::qt_metacast(_clname);</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span> }</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span> </div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span> <span class="keywordtype">int</span> MainWindow::qt_metacall(QMetaObject::Call _c, <span class="keywordtype">int</span> _id, <span class="keywordtype">void</span> **_a)</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span> {</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     _id = QMainWindow::qt_metacall(_c, _id, _a);</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     <span class="keywordflow">if</span> (_id < 0)</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>         <span class="keywordflow">return</span> _id;</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>     <span class="keywordflow">if</span> (_c == QMetaObject::InvokeMetaMethod) {</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>         <span class="keywordflow">if</span> (_id < 9)</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>             qt_static_metacall(<span class="keyword">this</span>, _c, _id, _a);</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>         _id -= 9;</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     }</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     <span class="keywordflow">return</span> _id;</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span> }</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span> QT_END_MOC_NAMESPACE</div>
-<div class="ttc" id="classMainWindow_html"><div class="ttname"><a href="classMainWindow.html">MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite__gui_2mainwindow_8h_source.html#l00031">mainwindow.h:31</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/build-pkextract__gui-gcc-Release_2ui__mainwindow_8h_source.html b/doc/html/build-pkextract__gui-gcc-Release_2ui__mainwindow_8h_source.html
deleted file mode 100644
index 69d734f..0000000
--- a/doc/html/build-pkextract__gui-gcc-Release_2ui__mainwindow_8h_source.html
+++ /dev/null
@@ -1,590 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/build-pkextract_gui-gcc-Release/ui_mainwindow.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_41d189c72498e24f979b227eb8e138b1.html">build-pkextract_gui-gcc-Release</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">ui_mainwindow.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/********************************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">** Form generated from reading UI file 'mainwindow.ui'</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">** Created by: Qt User Interface Compiler version 4.8.6</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">** WARNING! All changes made in this file will be lost when recompiling UI file!</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">********************************************************************************/</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> </div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="preprocessor">#ifndef UI_MAINWINDOW_H</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="preprocessor"></span><span class="preprocessor">#define UI_MAINWINDOW_H</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="preprocessor">#include <QtCore/QVariant></span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="preprocessor">#include <QtGui/QAction></span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="preprocessor">#include <QtGui/QApplication></span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor">#include <QtGui/QButtonGroup></span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor">#include <QtGui/QCheckBox></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include <QtGui/QComboBox></span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include <QtGui/QGridLayout></span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include <QtGui/QHBoxLayout></span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <QtGui/QHeaderView></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <QtGui/QLabel></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <QtGui/QLineEdit></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <QtGui/QMainWindow></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <QtGui/QMenu></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include <QtGui/QMenuBar></span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include <QtGui/QPlainTextEdit></span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include <QtGui/QPushButton></span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include <QtGui/QSpacerItem></span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include <QtGui/QStatusBar></span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include <QtGui/QTabWidget></span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="preprocessor">#include <QtGui/QTableView></span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="preprocessor">#include <QtGui/QToolBar></span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="preprocessor">#include <QtGui/QToolButton></span></div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="preprocessor">#include <QtGui/QVBoxLayout></span></div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="preprocessor">#include <QtGui/QWidget></span></div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> </div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> QT_BEGIN_NAMESPACE</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="keyword">class </span><a class="code" href="classUi__MainWindow.html">Ui_MainWindow</a></div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> {</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     QAction *actionInput;</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     QAction *actionSample;</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     QAction *actionMask;</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     QAction *actionOutput;</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     QWidget *centralWidget;</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     QGridLayout *gridLayout_5;</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     QHBoxLayout *horizontalLayout_3;</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     QTabWidget *tabWidget;</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     QWidget *tab_2;</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     QHBoxLayout *horizontalLayout_4;</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     QGridLayout *gridLayout;</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     QLabel *label_14;</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     QLineEdit *bndnodata;</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     QLabel *label_13;</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     QLineEdit *output;</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     QLineEdit *input;</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     QToolButton *toolButton_input;</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     QComboBox *f;</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     QLabel *label_16;</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     QLabel *label_15;</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     QLabel *label_3;</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     QLineEdit *sample;</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     QLabel *label_23;</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     QLineEdit *srcnodata;</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     QToolButton *toolButton_output;</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>     QToolButton *toolButton_sample;</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     QCheckBox *polygon;</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     QWidget *tab;</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     QHBoxLayout *horizontalLayout_5;</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     QGridLayout *gridLayout_4;</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>     QLineEdit *bname;</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>     QLabel *label_20;</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>     QComboBox *rule;</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>     QLabel *label_4;</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>     QLineEdit *nclass;</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>     QLabel *label_21;</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>     QToolButton *toolButton_createTable;</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>     QLabel *label_2;</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>     QLabel *label;</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>     QLineEdit *threshold;</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     QSpacerItem *verticalSpacer_2;</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     QLabel *label_5;</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     QLineEdit *cname;</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>     QVBoxLayout *verticalLayout_2;</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>     QLabel *label_17;</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>     QTableView *tableView_labels;</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>     QLabel *label_22;</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     QWidget *tab_4;</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     QHBoxLayout *horizontalLayout_6;</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     QVBoxLayout *verticalLayout;</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     QLabel *label_18;</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>     QLineEdit *commandLineEdit;</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>     QLabel *label_19;</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>     QPlainTextEdit *consoleEdit;</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     QHBoxLayout *horizontalLayout;</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     QPushButton *pushButton_run;</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     QSpacerItem *horizontalSpacer;</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     QPushButton *pushButton_restore;</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     QMenuBar *menuBar;</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     QMenu *menuFile;</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     QToolBar *mainToolBar;</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     QStatusBar *statusBar;</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span> </div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     <span class="keywordtype">void</span> setupUi(QMainWindow *<a class="code" href="classMainWindow.html">MainWindow</a>)</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     {</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>         <span class="keywordflow">if</span> (MainWindow->objectName().isEmpty())</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>             MainWindow->setObjectName(QString::fromUtf8(<span class="stringliteral">"MainWindow"</span>));</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>         MainWindow->resize(703, 706);</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>         actionInput = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>         actionInput->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionInput"</span>));</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>         actionSample = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>         actionSample->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionSample"</span>));</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>         actionMask = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>         actionMask->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionMask"</span>));</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>         actionOutput = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>         actionOutput->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionOutput"</span>));</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>         centralWidget = <span class="keyword">new</span> QWidget(MainWindow);</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>         centralWidget->setObjectName(QString::fromUtf8(<span class="stringliteral">"centralWidget"</span>));</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>         centralWidget->setMinimumSize(QSize(423, 392));</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>         gridLayout_5 = <span class="keyword">new</span> QGridLayout(centralWidget);</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>         gridLayout_5->setSpacing(6);</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>         gridLayout_5->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>         gridLayout_5->setObjectName(QString::fromUtf8(<span class="stringliteral">"gridLayout_5"</span>));</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>         horizontalLayout_3 = <span class="keyword">new</span> QHBoxLayout();</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>         horizontalLayout_3->setSpacing(6);</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>         horizontalLayout_3->setObjectName(QString::fromUtf8(<span class="stringliteral">"horizontalLayout_3"</span>));</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>         tabWidget = <span class="keyword">new</span> QTabWidget(centralWidget);</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>         tabWidget->setObjectName(QString::fromUtf8(<span class="stringliteral">"tabWidget"</span>));</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>         tab_2 = <span class="keyword">new</span> QWidget();</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>         tab_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"tab_2"</span>));</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>         horizontalLayout_4 = <span class="keyword">new</span> QHBoxLayout(tab_2);</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>         horizontalLayout_4->setSpacing(6);</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>         horizontalLayout_4->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>         horizontalLayout_4->setObjectName(QString::fromUtf8(<span class="stringliteral">"horizontalLayout_4"</span>));</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>         gridLayout = <span class="keyword">new</span> QGridLayout();</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>         gridLayout->setSpacing(6);</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>         gridLayout->setObjectName(QString::fromUtf8(<span class="stringliteral">"gridLayout"</span>));</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>         label_14 = <span class="keyword">new</span> QLabel(tab_2);</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>         label_14->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_14"</span>));</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span> </div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>         gridLayout->addWidget(label_14, 1, 3, 1, 1);</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span> </div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>         bndnodata = <span class="keyword">new</span> QLineEdit(tab_2);</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>         bndnodata->setObjectName(QString::fromUtf8(<span class="stringliteral">"bndnodata"</span>));</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span> </div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>         gridLayout->addWidget(bndnodata, 1, 1, 1, 1);</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span> </div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>         label_13 = <span class="keyword">new</span> QLabel(tab_2);</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>         label_13->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_13"</span>));</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span> </div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>         gridLayout->addWidget(label_13, 1, 0, 1, 1);</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span> </div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>         output = <span class="keyword">new</span> QLineEdit(tab_2);</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>         output->setObjectName(QString::fromUtf8(<span class="stringliteral">"output"</span>));</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span> </div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>         gridLayout->addWidget(output, 3, 1, 1, 1);</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span> </div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>         input = <span class="keyword">new</span> QLineEdit(tab_2);</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>         input->setObjectName(QString::fromUtf8(<span class="stringliteral">"input"</span>));</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span> </div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>         gridLayout->addWidget(input, 0, 1, 1, 1);</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span> </div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>         toolButton_input = <span class="keyword">new</span> QToolButton(tab_2);</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>         toolButton_input->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_input"</span>));</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span> </div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>         gridLayout->addWidget(toolButton_input, 0, 2, 1, 1);</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span> </div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>         f = <span class="keyword">new</span> QComboBox(tab_2);</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>         f->setObjectName(QString::fromUtf8(<span class="stringliteral">"f"</span>));</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span> </div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>         gridLayout->addWidget(f, 3, 4, 1, 1);</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span> </div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>         label_16 = <span class="keyword">new</span> QLabel(tab_2);</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>         label_16->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_16"</span>));</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span> </div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>         gridLayout->addWidget(label_16, 3, 3, 1, 1);</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span> </div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>         label_15 = <span class="keyword">new</span> QLabel(tab_2);</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>         label_15->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_15"</span>));</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span> </div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>         gridLayout->addWidget(label_15, 3, 0, 1, 1);</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span> </div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>         label_3 = <span class="keyword">new</span> QLabel(tab_2);</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>         label_3->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_3"</span>));</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span> </div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>         gridLayout->addWidget(label_3, 0, 0, 1, 1);</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span> </div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>         sample = <span class="keyword">new</span> QLineEdit(tab_2);</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>         sample->setObjectName(QString::fromUtf8(<span class="stringliteral">"sample"</span>));</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span> </div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>         gridLayout->addWidget(sample, 2, 1, 1, 1);</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span> </div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>         label_23 = <span class="keyword">new</span> QLabel(tab_2);</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>         label_23->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_23"</span>));</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span> </div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>         gridLayout->addWidget(label_23, 2, 0, 1, 1);</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span> </div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>         srcnodata = <span class="keyword">new</span> QLineEdit(tab_2);</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>         srcnodata->setObjectName(QString::fromUtf8(<span class="stringliteral">"srcnodata"</span>));</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span> </div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>         gridLayout->addWidget(srcnodata, 1, 4, 1, 1);</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span> </div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>         toolButton_output = <span class="keyword">new</span> QToolButton(tab_2);</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>         toolButton_output->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_output"</span>));</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span> </div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>         gridLayout->addWidget(toolButton_output, 3, 2, 1, 1);</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span> </div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>         toolButton_sample = <span class="keyword">new</span> QToolButton(tab_2);</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>         toolButton_sample->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_sample"</span>));</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span> </div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>         gridLayout->addWidget(toolButton_sample, 2, 2, 1, 1);</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span> </div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>         polygon = <span class="keyword">new</span> QCheckBox(tab_2);</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>         polygon->setObjectName(QString::fromUtf8(<span class="stringliteral">"polygon"</span>));</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span> </div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>         gridLayout->addWidget(polygon, 4, 3, 1, 1);</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span> </div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span> </div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>         horizontalLayout_4->addLayout(gridLayout);</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span> </div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>         tabWidget->addTab(tab_2, QString());</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>         tab = <span class="keyword">new</span> QWidget();</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>         tab->setObjectName(QString::fromUtf8(<span class="stringliteral">"tab"</span>));</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>         horizontalLayout_5 = <span class="keyword">new</span> QHBoxLayout(tab);</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>         horizontalLayout_5->setSpacing(6);</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>         horizontalLayout_5->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>         horizontalLayout_5->setObjectName(QString::fromUtf8(<span class="stringliteral">"horizontalLayout_5"</span>));</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>         gridLayout_4 = <span class="keyword">new</span> QGridLayout();</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>         gridLayout_4->setSpacing(6);</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>         gridLayout_4->setObjectName(QString::fromUtf8(<span class="stringliteral">"gridLayout_4"</span>));</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>         bname = <span class="keyword">new</span> QLineEdit(tab);</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>         bname->setObjectName(QString::fromUtf8(<span class="stringliteral">"bname"</span>));</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span> </div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>         gridLayout_4->addWidget(bname, 1, 1, 1, 1);</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span> </div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>         label_20 = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>         label_20->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_20"</span>));</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span> </div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>         gridLayout_4->addWidget(label_20, 4, 0, 1, 1);</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span> </div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>         rule = <span class="keyword">new</span> QComboBox(tab);</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>         rule->setObjectName(QString::fromUtf8(<span class="stringliteral">"rule"</span>));</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span> </div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>         gridLayout_4->addWidget(rule, 0, 1, 1, 1);</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span> </div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>         label_4 = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>         label_4->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_4"</span>));</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span> </div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>         gridLayout_4->addWidget(label_4, 0, 0, 1, 1);</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span> </div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>         nclass = <span class="keyword">new</span> QLineEdit(tab);</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>         nclass->setObjectName(QString::fromUtf8(<span class="stringliteral">"nclass"</span>));</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>         QSizePolicy sizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>         sizePolicy.setHorizontalStretch(10);</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>         sizePolicy.setVerticalStretch(0);</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>         sizePolicy.setHeightForWidth(nclass->sizePolicy().hasHeightForWidth());</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>         nclass->setSizePolicy(sizePolicy);</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span> </div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>         gridLayout_4->addWidget(nclass, 4, 1, 1, 1);</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span> </div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>         label_21 = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>         label_21->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_21"</span>));</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span> </div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>         gridLayout_4->addWidget(label_21, 3, 1, 1, 1);</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span> </div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>         toolButton_createTable = <span class="keyword">new</span> QToolButton(tab);</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>         toolButton_createTable->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_createTable"</span>));</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span> </div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>         gridLayout_4->addWidget(toolButton_createTable, 4, 2, 1, 1);</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span> </div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>         label_2 = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>         label_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_2"</span>));</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span> </div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>         gridLayout_4->addWidget(label_2, 1, 0, 1, 1);</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span> </div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>         label = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>         label->setObjectName(QString::fromUtf8(<span class="stringliteral">"label"</span>));</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span> </div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>         gridLayout_4->addWidget(label, 5, 0, 1, 1);</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span> </div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>         threshold = <span class="keyword">new</span> QLineEdit(tab);</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>         threshold->setObjectName(QString::fromUtf8(<span class="stringliteral">"threshold"</span>));</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span> </div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>         gridLayout_4->addWidget(threshold, 5, 1, 1, 1);</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span> </div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>         verticalSpacer_2 = <span class="keyword">new</span> QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span> </div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>         gridLayout_4->addItem(verticalSpacer_2, 6, 0, 1, 1);</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span> </div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>         label_5 = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>         label_5->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_5"</span>));</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span> </div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>         gridLayout_4->addWidget(label_5, 2, 0, 1, 1);</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span> </div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>         cname = <span class="keyword">new</span> QLineEdit(tab);</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>         cname->setObjectName(QString::fromUtf8(<span class="stringliteral">"cname"</span>));</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span> </div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>         gridLayout_4->addWidget(cname, 2, 1, 1, 1);</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span> </div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span> </div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>         horizontalLayout_5->addLayout(gridLayout_4);</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span> </div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>         verticalLayout_2 = <span class="keyword">new</span> QVBoxLayout();</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>         verticalLayout_2->setSpacing(6);</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>         verticalLayout_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout_2"</span>));</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>         label_17 = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>         label_17->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_17"</span>));</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span> </div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>         verticalLayout_2->addWidget(label_17);</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span> </div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>         tableView_labels = <span class="keyword">new</span> QTableView(tab);</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>         tableView_labels->setObjectName(QString::fromUtf8(<span class="stringliteral">"tableView_labels"</span>));</div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span> </div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>         verticalLayout_2->addWidget(tableView_labels);</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span> </div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>         label_22 = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>         label_22->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_22"</span>));</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span> </div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>         verticalLayout_2->addWidget(label_22, 0, Qt::AlignHCenter);</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span> </div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span> </div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>         horizontalLayout_5->addLayout(verticalLayout_2);</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span> </div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>         tabWidget->addTab(tab, QString());</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>         tab_4 = <span class="keyword">new</span> QWidget();</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>         tab_4->setObjectName(QString::fromUtf8(<span class="stringliteral">"tab_4"</span>));</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>         horizontalLayout_6 = <span class="keyword">new</span> QHBoxLayout(tab_4);</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>         horizontalLayout_6->setSpacing(6);</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>         horizontalLayout_6->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>         horizontalLayout_6->setObjectName(QString::fromUtf8(<span class="stringliteral">"horizontalLayout_6"</span>));</div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>         verticalLayout = <span class="keyword">new</span> QVBoxLayout();</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>         verticalLayout->setSpacing(6);</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>         verticalLayout->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout"</span>));</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>         label_18 = <span class="keyword">new</span> QLabel(tab_4);</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>         label_18->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_18"</span>));</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span> </div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>         verticalLayout->addWidget(label_18);</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span> </div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>         commandLineEdit = <span class="keyword">new</span> QLineEdit(tab_4);</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>         commandLineEdit->setObjectName(QString::fromUtf8(<span class="stringliteral">"commandLineEdit"</span>));</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span> </div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>         verticalLayout->addWidget(commandLineEdit);</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span> </div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>         label_19 = <span class="keyword">new</span> QLabel(tab_4);</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>         label_19->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_19"</span>));</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span> </div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>         verticalLayout->addWidget(label_19);</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span> </div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>         consoleEdit = <span class="keyword">new</span> QPlainTextEdit(tab_4);</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>         consoleEdit->setObjectName(QString::fromUtf8(<span class="stringliteral">"consoleEdit"</span>));</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span> </div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>         verticalLayout->addWidget(consoleEdit);</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span> </div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span> </div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>         horizontalLayout_6->addLayout(verticalLayout);</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span> </div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>         tabWidget->addTab(tab_4, QString());</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span> </div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>         horizontalLayout_3->addWidget(tabWidget);</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span> </div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span> </div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>         gridLayout_5->addLayout(horizontalLayout_3, 0, 0, 1, 1);</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span> </div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>         horizontalLayout = <span class="keyword">new</span> QHBoxLayout();</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>         horizontalLayout->setSpacing(6);</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>         horizontalLayout->setObjectName(QString::fromUtf8(<span class="stringliteral">"horizontalLayout"</span>));</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>         pushButton_run = <span class="keyword">new</span> QPushButton(centralWidget);</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>         pushButton_run->setObjectName(QString::fromUtf8(<span class="stringliteral">"pushButton_run"</span>));</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span> </div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>         horizontalLayout->addWidget(pushButton_run);</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span> </div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>         horizontalSpacer = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span> </div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>         horizontalLayout->addItem(horizontalSpacer);</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span> </div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>         pushButton_restore = <span class="keyword">new</span> QPushButton(centralWidget);</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>         pushButton_restore->setObjectName(QString::fromUtf8(<span class="stringliteral">"pushButton_restore"</span>));</div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span> </div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>         horizontalLayout->addWidget(pushButton_restore);</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span> </div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span> </div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>         gridLayout_5->addLayout(horizontalLayout, 1, 0, 1, 1);</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span> </div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>         MainWindow->setCentralWidget(centralWidget);</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>         menuBar = <span class="keyword">new</span> QMenuBar(MainWindow);</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>         menuBar->setObjectName(QString::fromUtf8(<span class="stringliteral">"menuBar"</span>));</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>         menuBar->setGeometry(QRect(0, 0, 703, 25));</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>         menuFile = <span class="keyword">new</span> QMenu(menuBar);</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>         menuFile->setObjectName(QString::fromUtf8(<span class="stringliteral">"menuFile"</span>));</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>         MainWindow->setMenuBar(menuBar);</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>         mainToolBar = <span class="keyword">new</span> QToolBar(MainWindow);</div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>         mainToolBar->setObjectName(QString::fromUtf8(<span class="stringliteral">"mainToolBar"</span>));</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>         MainWindow->addToolBar(Qt::TopToolBarArea, mainToolBar);</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>         statusBar = <span class="keyword">new</span> QStatusBar(MainWindow);</div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>         statusBar->setObjectName(QString::fromUtf8(<span class="stringliteral">"statusBar"</span>));</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>         MainWindow->setStatusBar(statusBar);</div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>         QWidget::setTabOrder(input, toolButton_input);</div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>         QWidget::setTabOrder(toolButton_input, bndnodata);</div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>         QWidget::setTabOrder(bndnodata, srcnodata);</div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>         QWidget::setTabOrder(srcnodata, sample);</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>         QWidget::setTabOrder(sample, toolButton_sample);</div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span>         QWidget::setTabOrder(toolButton_sample, output);</div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>         QWidget::setTabOrder(output, toolButton_output);</div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>         QWidget::setTabOrder(toolButton_output, f);</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>         QWidget::setTabOrder(f, polygon);</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span>         QWidget::setTabOrder(polygon, rule);</div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>         QWidget::setTabOrder(rule, bname);</div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span>         QWidget::setTabOrder(bname, cname);</div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>         QWidget::setTabOrder(cname, nclass);</div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>         QWidget::setTabOrder(nclass, toolButton_createTable);</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>         QWidget::setTabOrder(toolButton_createTable, threshold);</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>         QWidget::setTabOrder(threshold, pushButton_run);</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span>         QWidget::setTabOrder(pushButton_run, pushButton_restore);</div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>         QWidget::setTabOrder(pushButton_restore, tabWidget);</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>         QWidget::setTabOrder(tabWidget, tableView_labels);</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>         QWidget::setTabOrder(tableView_labels, commandLineEdit);</div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>         QWidget::setTabOrder(commandLineEdit, consoleEdit);</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span> </div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>         menuBar->addAction(menuFile->menuAction());</div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>         menuFile->addAction(actionInput);</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span>         menuFile->addAction(actionMask);</div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>         menuFile->addAction(actionSample);</div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span>         menuFile->addAction(actionOutput);</div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span> </div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>         retranslateUi(MainWindow);</div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span> </div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span>         tabWidget->setCurrentIndex(0);</div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span> </div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span> </div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span>         QMetaObject::connectSlotsByName(MainWindow);</div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span>     } <span class="comment">// setupUi</span></div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span> </div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span>     <span class="keywordtype">void</span> retranslateUi(QMainWindow *MainWindow)</div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>     {</div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>         MainWindow->setWindowTitle(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"pkextract_gui"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span>         actionInput->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Input"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span>         actionSample->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Sample"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span>         actionMask->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Mask"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span>         actionOutput->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span> <span class="preprocessor"></span>        label_14->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>invalid value(s) for input image</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span> <span class="preprocessor"></span>        label_14->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"srcnodata"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00445"></a><span class="lineno">  445</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00446"></a><span class="lineno">  446</span> <span class="preprocessor"></span>        label_13->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Band(s) in input image to check if pixel is valid (used for srcnodata)</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00447"></a><span class="lineno">  447</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00448"></a><span class="lineno">  448</span> <span class="preprocessor"></span>        label_13->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"bndnodata"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00449"></a><span class="lineno">  449</span>         toolButton_input->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00450"></a><span class="lineno">  450</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00451"></a><span class="lineno">  451</span> <span class="preprocessor"></span>        label_16->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>OGR supported vector format</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00452"></a><span class="lineno">  452</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00453"></a><span class="lineno">  453</span> <span class="preprocessor"></span>        label_16->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"format"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00454"></a><span class="lineno">  454</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span> <span class="preprocessor"></span>        label_15->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Output will contain sample features with input band information included</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span> <span class="preprocessor"></span>        label_15->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output data"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00458"></a><span class="lineno">  458</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00459"></a><span class="lineno">  459</span> <span class="preprocessor"></span>        label_3->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Raster input dataset containing band information</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00460"></a><span class="lineno">  460</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span> <span class="preprocessor"></span>        label_3->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Input data"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span> <span class="preprocessor"></span>        label_23->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>OGR vector file with features to be extracted from input data. Output will contain features with input band information included. Sample image can also be GDAL raster dataset.</p> [...]
-<div class="line"><a name="l00464"></a><span class="lineno">  464</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span> <span class="preprocessor"></span>        label_23->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Sample image"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>         toolButton_output->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span>         toolButton_sample->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span> <span class="preprocessor"></span>        polygon->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Keep output features as polygons (only if input vector are polygons as well)</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00470"></a><span class="lineno">  470</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00471"></a><span class="lineno">  471</span> <span class="preprocessor"></span>        polygon->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"polygons"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00472"></a><span class="lineno">  472</span>         tabWidget->setTabText(tabWidget->indexOf(tab_2), QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Input/Output"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00474"></a><span class="lineno">  474</span> <span class="preprocessor"></span>        label_20->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Prepare a table with class names. To prepare the table, first enter the number of classes and then press the button '-&gt;'. </p><p>Prepare a class table only in [...]
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00476"></a><span class="lineno">  476</span> <span class="preprocessor"></span>        label_20->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"prepare table "</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00477"></a><span class="lineno">  477</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00478"></a><span class="lineno">  478</span> <span class="preprocessor"></span>        label_4->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Rule how to extract the features from the input data</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00479"></a><span class="lineno">  479</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span> <span class="preprocessor"></span>        label_4->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"extraction rule"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span>         label_21->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"# classes"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00482"></a><span class="lineno">  482</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00483"></a><span class="lineno">  483</span> <span class="preprocessor"></span>        toolButton_createTable->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Prepare a table with class names. To prepare the table, first enter the number of classes and then press the button '-&gt;'. </p><p>Prepare a class [...]
-<div class="line"><a name="l00484"></a><span class="lineno">  484</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00485"></a><span class="lineno">  485</span> <span class="preprocessor"></span>        toolButton_createTable->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"->"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00486"></a><span class="lineno">  486</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00487"></a><span class="lineno">  487</span> <span class="preprocessor"></span>        label_2->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>For single band input data, this extra attribute name will correspond to the raster values. For multi-band input data, multiple attributes with this prefix will be added (e.g. B0, B1, B2 [...]
-<div class="line"><a name="l00488"></a><span class="lineno">  488</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00489"></a><span class="lineno">  489</span> <span class="preprocessor"></span>        label_2->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"attribute (prefix) name for raster info"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span> <span class="preprocessor"></span>        label->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Threshold value for selection process. Select this percentage of the raster pixels (if sample is a raster dataset) or this percentage of the features in the vector file (if sample is a vec [...]
-<div class="line"><a name="l00492"></a><span class="lineno">  492</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00493"></a><span class="lineno">  493</span> <span class="preprocessor"></span>        label->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Single threshold"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00494"></a><span class="lineno">  494</span>         label_5->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"attribute for class output"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00495"></a><span class="lineno">  495</span>         label_17->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"class name-threshold (%) pairs"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00496"></a><span class="lineno">  496</span>         label_22->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"replace label names with\n"</span></div>
-<div class="line"><a name="l00497"></a><span class="lineno">  497</span> <span class="stringliteral">" the labels in your training\n"</span></div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span> <span class="stringliteral">" vector file"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span>         tabWidget->setTabText(tabWidget->indexOf(tab), QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Extract"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00500"></a><span class="lineno">  500</span>         label_18->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Command line"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00501"></a><span class="lineno">  501</span>         label_19->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Console output"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00502"></a><span class="lineno">  502</span>         tabWidget->setTabText(tabWidget->indexOf(tab_4), QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Console"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00503"></a><span class="lineno">  503</span>         pushButton_run->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Run"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00504"></a><span class="lineno">  504</span>         pushButton_restore->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Restore defaults"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00505"></a><span class="lineno">  505</span>         menuFile->setTitle(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"File"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00506"></a><span class="lineno">  506</span>     } <span class="comment">// retranslateUi</span></div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span> </div>
-<div class="line"><a name="l00508"></a><span class="lineno">  508</span> };</div>
-<div class="line"><a name="l00509"></a><span class="lineno">  509</span> </div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span> <span class="keyword">namespace </span>Ui {</div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span>     <span class="keyword">class </span>MainWindow: <span class="keyword">public</span> <a class="code" href="classUi__MainWindow.html">Ui_MainWindow</a> {};</div>
-<div class="line"><a name="l00512"></a><span class="lineno">  512</span> } <span class="comment">// namespace Ui</span></div>
-<div class="line"><a name="l00513"></a><span class="lineno">  513</span> </div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span> QT_END_NAMESPACE</div>
-<div class="line"><a name="l00515"></a><span class="lineno">  515</span> </div>
-<div class="line"><a name="l00516"></a><span class="lineno">  516</span> <span class="preprocessor">#endif // UI_MAINWINDOW_H</span></div>
-<div class="ttc" id="classUi__MainWindow_html"><div class="ttname"><a href="classUi__MainWindow.html">Ui_MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="build-pkcomposite__gui-gcc-Debug_2ui__mainwindow_8h_source.html#l00039">ui_mainwindow.h:39</a></div></div>
-<div class="ttc" id="classMainWindow_html"><div class="ttname"><a href="classMainWindow.html">MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite__gui_2mainwindow_8h_source.html#l00031">mainwindow.h:31</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/build-pksvm__gui-gcc-Debug_2moc__mainwindow_8cpp_source.html b/doc/html/build-pksvm__gui-gcc-Debug_2moc__mainwindow_8cpp_source.html
deleted file mode 100644
index 9e2aa4b..0000000
--- a/doc/html/build-pksvm__gui-gcc-Debug_2moc__mainwindow_8cpp_source.html
+++ /dev/null
@@ -1,205 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/build-pksvm_gui-gcc-Debug/moc_mainwindow.cpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_e61db0d85028141ec5940fd7f2a6e0fc.html">build-pksvm_gui-gcc-Debug</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">moc_mainwindow.cpp</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/****************************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">** Meta object code from reading C++ file 'mainwindow.h'</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">** Created by: The Qt Meta Object Compiler version 63 (Qt 4.8.6)</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">** WARNING! All changes made in this file will be lost!</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">*****************************************************************************/</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> </div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="preprocessor">#include "../pksvm_gui/mainwindow.h"</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="preprocessor">#if !defined(Q_MOC_OUTPUT_REVISION)</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="preprocessor"></span><span class="preprocessor">#error "The header file 'mainwindow.h' doesn't include <QObject>."</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="preprocessor"></span><span class="preprocessor">#elif Q_MOC_OUTPUT_REVISION != 63</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="preprocessor"></span><span class="preprocessor">#error "This file was generated using the moc from 4.8.6. It"</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="preprocessor"></span><span class="preprocessor">#error "cannot be used with the include files from this version of Qt."</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor"></span><span class="preprocessor">#error "(The moc has changed too much.)"</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> QT_BEGIN_MOC_NAMESPACE</div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="keyword">static</span> <span class="keyword">const</span> uint qt_meta_data_MainWindow[] = {</div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> </div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span>  <span class="comment">// content:</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span>        6,       <span class="comment">// revision</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span>        0,       <span class="comment">// classname</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span>        0,    0, <span class="comment">// classinfo</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span>       14,   14, <span class="comment">// methods</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span>        0,    0, <span class="comment">// properties</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span>        0,    0, <span class="comment">// enums/sets</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span>        0,    0, <span class="comment">// constructors</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span>        0,       <span class="comment">// flags</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>        0,       <span class="comment">// signalCount</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> </div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>  <span class="comment">// slots: signature, parameters, type, tag, flags</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>       12,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>       39,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>       69,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>       95,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>      123,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>      153,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>      182,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>      213,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>      246,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>      274,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>      302,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>      334,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>      377,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>      410,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span> </div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>        0        <span class="comment">// eod</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span> };</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span> </div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> qt_meta_stringdata_MainWindow[] = {</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     <span class="stringliteral">"MainWindow\0\0on_actionInput_triggered()\0"</span></div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     <span class="stringliteral">"on_actionTraining_triggered()\0"</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     <span class="stringliteral">"on_actionMask_triggered()\0"</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     <span class="stringliteral">"on_actionOutput_triggered()\0"</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <span class="stringliteral">"on_toolButton_input_clicked()\0"</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     <span class="stringliteral">"on_toolButton_mask_clicked()\0"</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     <span class="stringliteral">"on_toolButton_output_clicked()\0"</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     <span class="stringliteral">"on_toolButton_training_clicked()\0"</span></div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     <span class="stringliteral">"on_training_returnPressed()\0"</span></div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     <span class="stringliteral">"on_pushButton_run_clicked()\0"</span></div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     <span class="stringliteral">"on_pushButton_restore_clicked()\0"</span></div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     <span class="stringliteral">"on_commandLinkButtonPrepareTable_clicked()\0"</span></div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     <span class="stringliteral">"on_actionColor_table_triggered()\0"</span></div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     <span class="stringliteral">"on_toolButton_ct_clicked()\0"</span></div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span> };</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span> </div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span> <span class="keywordtype">void</span> MainWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, <span class="keywordtype">int</span> _id, <span class="keywordtype">void</span> **_a)</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span> {</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     <span class="keywordflow">if</span> (_c == QMetaObject::InvokeMetaMethod) {</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>         Q_ASSERT(staticMetaObject.cast(_o));</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>         <a class="code" href="classMainWindow.html">MainWindow</a> *_t = <span class="keyword">static_cast<</span><a class="code" href="classMainWindow.html">MainWindow</a> *<span class="keyword">></span>(_o);</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>         <span class="keywordflow">switch</span> (_id) {</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>         <span class="keywordflow">case</span> 0: _t->on_actionInput_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>         <span class="keywordflow">case</span> 1: _t->on_actionTraining_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>         <span class="keywordflow">case</span> 2: _t->on_actionMask_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>         <span class="keywordflow">case</span> 3: _t->on_actionOutput_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>         <span class="keywordflow">case</span> 4: _t->on_toolButton_input_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>         <span class="keywordflow">case</span> 5: _t->on_toolButton_mask_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>         <span class="keywordflow">case</span> 6: _t->on_toolButton_output_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>         <span class="keywordflow">case</span> 7: _t->on_toolButton_training_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>         <span class="keywordflow">case</span> 8: _t->on_training_returnPressed(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>         <span class="keywordflow">case</span> 9: _t->on_pushButton_run_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>         <span class="keywordflow">case</span> 10: _t->on_pushButton_restore_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>         <span class="keywordflow">case</span> 11: _t->on_commandLinkButtonPrepareTable_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>         <span class="keywordflow">case</span> 12: _t->on_actionColor_table_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>         <span class="keywordflow">case</span> 13: _t->on_toolButton_ct_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>         <span class="keywordflow">default</span>: ;</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>         }</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     }</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     Q_UNUSED(_a);</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span> }</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span> </div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span> <span class="keyword">const</span> QMetaObjectExtraData MainWindow::staticMetaObjectExtraData = {</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>     0,  qt_static_metacall </div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span> };</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span> </div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span> <span class="keyword">const</span> QMetaObject MainWindow::staticMetaObject = {</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     { &QMainWindow::staticMetaObject, qt_meta_stringdata_MainWindow,</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>       qt_meta_data_MainWindow, &staticMetaObjectExtraData }</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span> };</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span> </div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span> <span class="preprocessor">#ifdef Q_NO_DATA_RELOCATION</span></div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span> <span class="preprocessor"></span><span class="keyword">const</span> QMetaObject &MainWindow::getStaticMetaObject() { <span class="keywordflow">return</span> staticMetaObject; }</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span> <span class="preprocessor">#endif //Q_NO_DATA_RELOCATION</span></div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span> <span class="keyword">const</span> QMetaObject *MainWindow::metaObject()<span class="keyword"> const</span></div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>     <span class="keywordflow">return</span> QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject;</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span> }</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span> </div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span> <span class="keywordtype">void</span> *MainWindow::qt_metacast(<span class="keyword">const</span> <span class="keywordtype">char</span> *_clname)</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span> {</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     <span class="keywordflow">if</span> (!_clname) <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     <span class="keywordflow">if</span> (!strcmp(_clname, qt_meta_stringdata_MainWindow))</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>         <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">void</span>*<span class="keyword">></span>(<span class="keyword">const_cast<</span> <a class="code" href="classMainWindow.html">MainWindow</a>*<span class="keyword">></span>(<span class="keyword">this</span>));</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     <span class="keywordflow">return</span> QMainWindow::qt_metacast(_clname);</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span> }</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span> </div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span> <span class="keywordtype">int</span> MainWindow::qt_metacall(QMetaObject::Call _c, <span class="keywordtype">int</span> _id, <span class="keywordtype">void</span> **_a)</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span> {</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>     _id = QMainWindow::qt_metacall(_c, _id, _a);</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>     <span class="keywordflow">if</span> (_id < 0)</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>         <span class="keywordflow">return</span> _id;</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>     <span class="keywordflow">if</span> (_c == QMetaObject::InvokeMetaMethod) {</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>         <span class="keywordflow">if</span> (_id < 14)</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>             qt_static_metacall(<span class="keyword">this</span>, _c, _id, _a);</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>         _id -= 14;</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>     }</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>     <span class="keywordflow">return</span> _id;</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span> }</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span> QT_END_MOC_NAMESPACE</div>
-<div class="ttc" id="classMainWindow_html"><div class="ttname"><a href="classMainWindow.html">MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite__gui_2mainwindow_8h_source.html#l00031">mainwindow.h:31</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/build-pksvm__gui-gcc-Debug_2ui__mainwindow_8h_source.html b/doc/html/build-pksvm__gui-gcc-Debug_2ui__mainwindow_8h_source.html
deleted file mode 100644
index f4d40db..0000000
--- a/doc/html/build-pksvm__gui-gcc-Debug_2ui__mainwindow_8h_source.html
+++ /dev/null
@@ -1,740 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/build-pksvm_gui-gcc-Debug/ui_mainwindow.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_e61db0d85028141ec5940fd7f2a6e0fc.html">build-pksvm_gui-gcc-Debug</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">ui_mainwindow.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/********************************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">** Form generated from reading UI file 'mainwindow.ui'</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">** Created by: Qt User Interface Compiler version 4.8.6</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">** WARNING! All changes made in this file will be lost when recompiling UI file!</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">********************************************************************************/</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> </div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="preprocessor">#ifndef UI_MAINWINDOW_H</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="preprocessor"></span><span class="preprocessor">#define UI_MAINWINDOW_H</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="preprocessor">#include <QtCore/QVariant></span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="preprocessor">#include <QtGui/QAction></span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="preprocessor">#include <QtGui/QApplication></span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor">#include <QtGui/QButtonGroup></span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor">#include <QtGui/QComboBox></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include <QtGui/QCommandLinkButton></span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include <QtGui/QGridLayout></span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include <QtGui/QHBoxLayout></span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <QtGui/QHeaderView></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <QtGui/QLabel></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <QtGui/QLineEdit></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <QtGui/QMainWindow></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <QtGui/QMenu></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include <QtGui/QMenuBar></span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include <QtGui/QPlainTextEdit></span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include <QtGui/QPushButton></span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include <QtGui/QSpacerItem></span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include <QtGui/QStatusBar></span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include <QtGui/QTabWidget></span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="preprocessor">#include <QtGui/QTableView></span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="preprocessor">#include <QtGui/QToolBar></span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="preprocessor">#include <QtGui/QToolButton></span></div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="preprocessor">#include <QtGui/QVBoxLayout></span></div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="preprocessor">#include <QtGui/QWidget></span></div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> </div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> QT_BEGIN_NAMESPACE</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="keyword">class </span><a class="code" href="classUi__MainWindow.html">Ui_MainWindow</a></div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> {</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     QAction *actionInput;</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     QAction *actionTraining;</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     QAction *actionMask;</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     QAction *actionOutput;</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     QAction *actionColor_table;</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     QWidget *centralWidget;</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     QVBoxLayout *verticalLayout;</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     QTabWidget *tabWidget;</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     QWidget *tab;</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     QVBoxLayout *verticalLayout_3;</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     QGridLayout *gridLayout;</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     QLabel *label_2;</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     QToolButton *toolButton_training;</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     QLabel *label_4;</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     QSpacerItem *horizontalSpacer_4;</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     QLineEdit *training;</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     QLineEdit *nclass;</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     QLabel *label_20;</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     QLineEdit *label;</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     QSpacerItem *horizontalSpacer_3;</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     QLabel *label_21;</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     QLineEdit *tln;</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     QSpacerItem *horizontalSpacer_2;</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     QCommandLinkButton *commandLinkButtonPrepareTable;</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     QVBoxLayout *verticalLayout_2;</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>     QLabel *label_17;</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     QTableView *tableView_labels;</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     QWidget *tab_2;</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     QVBoxLayout *verticalLayout_4;</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     QGridLayout *gridLayout_2;</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>     QLineEdit *nodata;</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>     QLabel *label_14;</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>     QToolButton *toolButton_input;</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>     QLabel *label_16;</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>     QLabel *label_13;</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>     QToolButton *toolButton_mask;</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>     QLabel *label_15;</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>     QLineEdit *mask;</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>     QLineEdit *msknodata;</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>     QSpacerItem *horizontalSpacer_15;</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     QLineEdit *output;</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     QToolButton *toolButton_output;</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     QLineEdit *input;</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>     QLabel *label_3;</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>     QLabel *label_22;</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>     QLineEdit *ct;</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>     QToolButton *toolButton_ct;</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     QSpacerItem *verticalSpacer;</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     QWidget *tab_3;</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     QVBoxLayout *verticalLayout_5;</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     QGridLayout *gridLayout_3;</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>     QLineEdit *cv;</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>     QLineEdit *ccost;</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>     QLabel *label_5;</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     QLabel *label_10;</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     QLabel *label_11;</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     QLabel *label_6;</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     QComboBox *svmtype;</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     QLineEdit *gamma;</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     QLabel *label_7;</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     QLineEdit *coef0;</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     QLabel *label_9;</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     QLineEdit *nu;</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     QLineEdit *kd;</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     QLabel *label_12;</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     QSpacerItem *verticalSpacer_3;</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     QComboBox *kerneltype;</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>     QLabel *label_8;</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>     QSpacerItem *horizontalSpacer_5;</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>     QSpacerItem *verticalSpacer_2;</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>     QWidget *tab_4;</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     QVBoxLayout *verticalLayout_6;</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     QLabel *label_18;</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     QLineEdit *commandLineEdit;</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     QLabel *label_19;</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     QPlainTextEdit *consoleEdit;</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     QHBoxLayout *horizontalLayout;</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>     QPushButton *pushButton_run;</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>     QSpacerItem *horizontalSpacer;</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>     QPushButton *pushButton_restore;</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>     QMenuBar *menuBar;</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>     QMenu *menuFile;</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     QToolBar *mainToolBar;</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>     QStatusBar *statusBar;</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span> </div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>     <span class="keywordtype">void</span> setupUi(QMainWindow *<a class="code" href="classMainWindow.html">MainWindow</a>)</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>     {</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>         <span class="keywordflow">if</span> (MainWindow->objectName().isEmpty())</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>             MainWindow->setObjectName(QString::fromUtf8(<span class="stringliteral">"MainWindow"</span>));</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>         MainWindow->resize(628, 614);</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>         actionInput = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>         actionInput->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionInput"</span>));</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>         actionTraining = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>         actionTraining->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionTraining"</span>));</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>         actionMask = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>         actionMask->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionMask"</span>));</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>         actionOutput = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>         actionOutput->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionOutput"</span>));</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>         actionColor_table = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>         actionColor_table->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionColor_table"</span>));</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>         centralWidget = <span class="keyword">new</span> QWidget(MainWindow);</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>         centralWidget->setObjectName(QString::fromUtf8(<span class="stringliteral">"centralWidget"</span>));</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>         verticalLayout = <span class="keyword">new</span> QVBoxLayout(centralWidget);</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>         verticalLayout->setSpacing(6);</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>         verticalLayout->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>         verticalLayout->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout"</span>));</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>         tabWidget = <span class="keyword">new</span> QTabWidget(centralWidget);</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>         tabWidget->setObjectName(QString::fromUtf8(<span class="stringliteral">"tabWidget"</span>));</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>         tab = <span class="keyword">new</span> QWidget();</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>         tab->setObjectName(QString::fromUtf8(<span class="stringliteral">"tab"</span>));</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>         verticalLayout_3 = <span class="keyword">new</span> QVBoxLayout(tab);</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>         verticalLayout_3->setSpacing(6);</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>         verticalLayout_3->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>         verticalLayout_3->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout_3"</span>));</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>         gridLayout = <span class="keyword">new</span> QGridLayout();</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>         gridLayout->setSpacing(6);</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>         gridLayout->setObjectName(QString::fromUtf8(<span class="stringliteral">"gridLayout"</span>));</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>         label_2 = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>         label_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_2"</span>));</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span> </div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>         gridLayout->addWidget(label_2, 2, 0, 1, 1);</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span> </div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>         toolButton_training = <span class="keyword">new</span> QToolButton(tab);</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>         toolButton_training->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_training"</span>));</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span> </div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>         gridLayout->addWidget(toolButton_training, 0, 2, 1, 1);</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span> </div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>         label_4 = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>         label_4->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_4"</span>));</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span> </div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>         gridLayout->addWidget(label_4, 0, 0, 1, 1);</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span> </div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>         horizontalSpacer_4 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span> </div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>         gridLayout->addItem(horizontalSpacer_4, 3, 2, 1, 1);</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span> </div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>         training = <span class="keyword">new</span> QLineEdit(tab);</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>         training->setObjectName(QString::fromUtf8(<span class="stringliteral">"training"</span>));</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span> </div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>         gridLayout->addWidget(training, 0, 1, 1, 1);</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span> </div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>         nclass = <span class="keyword">new</span> QLineEdit(tab);</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>         nclass->setObjectName(QString::fromUtf8(<span class="stringliteral">"nclass"</span>));</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span> </div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>         gridLayout->addWidget(nclass, 3, 1, 1, 1);</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span> </div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>         label_20 = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>         label_20->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_20"</span>));</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span> </div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>         gridLayout->addWidget(label_20, 3, 0, 1, 1);</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span> </div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>         label = <span class="keyword">new</span> QLineEdit(tab);</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>         label->setObjectName(QString::fromUtf8(<span class="stringliteral">"label"</span>));</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span> </div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>         gridLayout->addWidget(label, 2, 1, 1, 1);</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span> </div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>         horizontalSpacer_3 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span> </div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>         gridLayout->addItem(horizontalSpacer_3, 2, 2, 1, 1);</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span> </div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>         label_21 = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>         label_21->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_21"</span>));</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span> </div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>         gridLayout->addWidget(label_21, 1, 0, 1, 1);</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span> </div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>         tln = <span class="keyword">new</span> QLineEdit(tab);</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>         tln->setObjectName(QString::fromUtf8(<span class="stringliteral">"tln"</span>));</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span> </div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>         gridLayout->addWidget(tln, 1, 1, 1, 1);</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span> </div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>         horizontalSpacer_2 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span> </div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>         gridLayout->addItem(horizontalSpacer_2, 1, 2, 1, 1);</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span> </div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span> </div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>         verticalLayout_3->addLayout(gridLayout);</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span> </div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>         commandLinkButtonPrepareTable = <span class="keyword">new</span> QCommandLinkButton(tab);</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>         commandLinkButtonPrepareTable->setObjectName(QString::fromUtf8(<span class="stringliteral">"commandLinkButtonPrepareTable"</span>));</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span> </div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>         verticalLayout_3->addWidget(commandLinkButtonPrepareTable);</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span> </div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>         verticalLayout_2 = <span class="keyword">new</span> QVBoxLayout();</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>         verticalLayout_2->setSpacing(6);</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>         verticalLayout_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout_2"</span>));</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>         label_17 = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>         label_17->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_17"</span>));</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span> </div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>         verticalLayout_2->addWidget(label_17);</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span> </div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>         tableView_labels = <span class="keyword">new</span> QTableView(tab);</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>         tableView_labels->setObjectName(QString::fromUtf8(<span class="stringliteral">"tableView_labels"</span>));</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span> </div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>         verticalLayout_2->addWidget(tableView_labels);</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span> </div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span> </div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>         verticalLayout_3->addLayout(verticalLayout_2);</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span> </div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>         tabWidget->addTab(tab, QString());</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>         tab_2 = <span class="keyword">new</span> QWidget();</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>         tab_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"tab_2"</span>));</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>         verticalLayout_4 = <span class="keyword">new</span> QVBoxLayout(tab_2);</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>         verticalLayout_4->setSpacing(6);</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>         verticalLayout_4->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>         verticalLayout_4->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout_4"</span>));</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>         gridLayout_2 = <span class="keyword">new</span> QGridLayout();</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>         gridLayout_2->setSpacing(6);</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>         gridLayout_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"gridLayout_2"</span>));</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>         nodata = <span class="keyword">new</span> QLineEdit(tab_2);</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>         nodata->setObjectName(QString::fromUtf8(<span class="stringliteral">"nodata"</span>));</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span> </div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>         gridLayout_2->addWidget(nodata, 2, 5, 1, 1);</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span> </div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>         label_14 = <span class="keyword">new</span> QLabel(tab_2);</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>         label_14->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_14"</span>));</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span> </div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>         gridLayout_2->addWidget(label_14, 1, 4, 1, 1);</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span> </div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>         toolButton_input = <span class="keyword">new</span> QToolButton(tab_2);</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>         toolButton_input->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_input"</span>));</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span> </div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>         gridLayout_2->addWidget(toolButton_input, 0, 2, 1, 1);</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span> </div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>         label_16 = <span class="keyword">new</span> QLabel(tab_2);</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>         label_16->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_16"</span>));</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span> </div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>         gridLayout_2->addWidget(label_16, 2, 4, 1, 1);</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span> </div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>         label_13 = <span class="keyword">new</span> QLabel(tab_2);</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>         label_13->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_13"</span>));</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span> </div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>         gridLayout_2->addWidget(label_13, 1, 0, 1, 1);</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span> </div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>         toolButton_mask = <span class="keyword">new</span> QToolButton(tab_2);</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>         toolButton_mask->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_mask"</span>));</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span> </div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>         gridLayout_2->addWidget(toolButton_mask, 1, 2, 1, 1);</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span> </div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>         label_15 = <span class="keyword">new</span> QLabel(tab_2);</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>         label_15->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_15"</span>));</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span> </div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>         gridLayout_2->addWidget(label_15, 2, 0, 1, 1);</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span> </div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>         mask = <span class="keyword">new</span> QLineEdit(tab_2);</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>         mask->setObjectName(QString::fromUtf8(<span class="stringliteral">"mask"</span>));</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span> </div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>         gridLayout_2->addWidget(mask, 1, 1, 1, 1);</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span> </div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>         msknodata = <span class="keyword">new</span> QLineEdit(tab_2);</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>         msknodata->setObjectName(QString::fromUtf8(<span class="stringliteral">"msknodata"</span>));</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span> </div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>         gridLayout_2->addWidget(msknodata, 1, 5, 1, 1);</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span> </div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>         horizontalSpacer_15 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span> </div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>         gridLayout_2->addItem(horizontalSpacer_15, 1, 3, 1, 1);</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span> </div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>         output = <span class="keyword">new</span> QLineEdit(tab_2);</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>         output->setObjectName(QString::fromUtf8(<span class="stringliteral">"output"</span>));</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span> </div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>         gridLayout_2->addWidget(output, 2, 1, 1, 1);</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span> </div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>         toolButton_output = <span class="keyword">new</span> QToolButton(tab_2);</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>         toolButton_output->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_output"</span>));</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span> </div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>         gridLayout_2->addWidget(toolButton_output, 2, 2, 1, 1);</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span> </div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>         input = <span class="keyword">new</span> QLineEdit(tab_2);</div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>         input->setObjectName(QString::fromUtf8(<span class="stringliteral">"input"</span>));</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span> </div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>         gridLayout_2->addWidget(input, 0, 1, 1, 1);</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span> </div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>         label_3 = <span class="keyword">new</span> QLabel(tab_2);</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>         label_3->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_3"</span>));</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span> </div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>         gridLayout_2->addWidget(label_3, 0, 0, 1, 1);</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span> </div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>         label_22 = <span class="keyword">new</span> QLabel(tab_2);</div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>         label_22->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_22"</span>));</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span> </div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>         gridLayout_2->addWidget(label_22, 3, 0, 1, 1);</div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span> </div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>         ct = <span class="keyword">new</span> QLineEdit(tab_2);</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>         ct->setObjectName(QString::fromUtf8(<span class="stringliteral">"ct"</span>));</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span> </div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>         gridLayout_2->addWidget(ct, 3, 1, 1, 1);</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span> </div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>         toolButton_ct = <span class="keyword">new</span> QToolButton(tab_2);</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>         toolButton_ct->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_ct"</span>));</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span> </div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>         gridLayout_2->addWidget(toolButton_ct, 3, 2, 1, 1);</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span> </div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span> </div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>         verticalLayout_4->addLayout(gridLayout_2);</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span> </div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>         verticalSpacer = <span class="keyword">new</span> QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span> </div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>         verticalLayout_4->addItem(verticalSpacer);</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span> </div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>         tabWidget->addTab(tab_2, QString());</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>         tab_3 = <span class="keyword">new</span> QWidget();</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>         tab_3->setObjectName(QString::fromUtf8(<span class="stringliteral">"tab_3"</span>));</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>         verticalLayout_5 = <span class="keyword">new</span> QVBoxLayout(tab_3);</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>         verticalLayout_5->setSpacing(6);</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>         verticalLayout_5->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>         verticalLayout_5->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout_5"</span>));</div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>         gridLayout_3 = <span class="keyword">new</span> QGridLayout();</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>         gridLayout_3->setSpacing(6);</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>         gridLayout_3->setObjectName(QString::fromUtf8(<span class="stringliteral">"gridLayout_3"</span>));</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>         cv = <span class="keyword">new</span> QLineEdit(tab_3);</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>         cv->setObjectName(QString::fromUtf8(<span class="stringliteral">"cv"</span>));</div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span> </div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>         gridLayout_3->addWidget(cv, 3, 1, 1, 1);</div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span> </div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>         ccost = <span class="keyword">new</span> QLineEdit(tab_3);</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>         ccost->setObjectName(QString::fromUtf8(<span class="stringliteral">"ccost"</span>));</div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span> </div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>         gridLayout_3->addWidget(ccost, 2, 4, 1, 1);</div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span> </div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>         label_5 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>         label_5->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_5"</span>));</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span> </div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>         gridLayout_3->addWidget(label_5, 3, 0, 1, 1);</div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span> </div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>         label_10 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>         label_10->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_10"</span>));</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span> </div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>         gridLayout_3->addWidget(label_10, 2, 3, 1, 1);</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span> </div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>         label_11 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>         label_11->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_11"</span>));</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span> </div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>         gridLayout_3->addWidget(label_11, 0, 3, 1, 1);</div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span> </div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>         label_6 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>         label_6->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_6"</span>));</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span> </div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>         gridLayout_3->addWidget(label_6, 0, 0, 1, 1);</div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span> </div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>         svmtype = <span class="keyword">new</span> QComboBox(tab_3);</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>         svmtype->setObjectName(QString::fromUtf8(<span class="stringliteral">"svmtype"</span>));</div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span> </div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>         gridLayout_3->addWidget(svmtype, 0, 1, 1, 1);</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span> </div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>         gamma = <span class="keyword">new</span> QLineEdit(tab_3);</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>         gamma->setObjectName(QString::fromUtf8(<span class="stringliteral">"gamma"</span>));</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span> </div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>         gridLayout_3->addWidget(gamma, 2, 1, 1, 1);</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span> </div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>         label_7 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>         label_7->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_7"</span>));</div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span> </div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>         gridLayout_3->addWidget(label_7, 1, 0, 1, 1);</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span> </div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>         coef0 = <span class="keyword">new</span> QLineEdit(tab_3);</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>         coef0->setObjectName(QString::fromUtf8(<span class="stringliteral">"coef0"</span>));</div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span> </div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>         gridLayout_3->addWidget(coef0, 0, 4, 1, 1);</div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span> </div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>         label_9 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>         label_9->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_9"</span>));</div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span> </div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>         gridLayout_3->addWidget(label_9, 2, 0, 1, 1);</div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span> </div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>         nu = <span class="keyword">new</span> QLineEdit(tab_3);</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span>         nu->setObjectName(QString::fromUtf8(<span class="stringliteral">"nu"</span>));</div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span> </div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span>         gridLayout_3->addWidget(nu, 0, 7, 1, 1);</div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span> </div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>         kd = <span class="keyword">new</span> QLineEdit(tab_3);</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>         kd->setObjectName(QString::fromUtf8(<span class="stringliteral">"kd"</span>));</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span> </div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span>         gridLayout_3->addWidget(kd, 1, 4, 1, 1);</div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span> </div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>         label_12 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>         label_12->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_12"</span>));</div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span> </div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span>         gridLayout_3->addWidget(label_12, 0, 6, 1, 1);</div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span> </div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>         verticalSpacer_3 = <span class="keyword">new</span> QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span> </div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>         gridLayout_3->addItem(verticalSpacer_3, 0, 2, 1, 1);</div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span> </div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span>         kerneltype = <span class="keyword">new</span> QComboBox(tab_3);</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>         kerneltype->setObjectName(QString::fromUtf8(<span class="stringliteral">"kerneltype"</span>));</div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span> </div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span>         gridLayout_3->addWidget(kerneltype, 1, 1, 1, 1);</div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span> </div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span>         label_8 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span>         label_8->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_8"</span>));</div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span> </div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span>         gridLayout_3->addWidget(label_8, 1, 3, 1, 1);</div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span> </div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>         horizontalSpacer_5 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span> </div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span>         gridLayout_3->addItem(horizontalSpacer_5, 0, 5, 1, 1);</div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span> </div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span> </div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span>         verticalLayout_5->addLayout(gridLayout_3);</div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span> </div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span>         verticalSpacer_2 = <span class="keyword">new</span> QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);</div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span> </div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span>         verticalLayout_5->addItem(verticalSpacer_2);</div>
-<div class="line"><a name="l00445"></a><span class="lineno">  445</span> </div>
-<div class="line"><a name="l00446"></a><span class="lineno">  446</span>         tabWidget->addTab(tab_3, QString());</div>
-<div class="line"><a name="l00447"></a><span class="lineno">  447</span>         tab_4 = <span class="keyword">new</span> QWidget();</div>
-<div class="line"><a name="l00448"></a><span class="lineno">  448</span>         tab_4->setObjectName(QString::fromUtf8(<span class="stringliteral">"tab_4"</span>));</div>
-<div class="line"><a name="l00449"></a><span class="lineno">  449</span>         verticalLayout_6 = <span class="keyword">new</span> QVBoxLayout(tab_4);</div>
-<div class="line"><a name="l00450"></a><span class="lineno">  450</span>         verticalLayout_6->setSpacing(6);</div>
-<div class="line"><a name="l00451"></a><span class="lineno">  451</span>         verticalLayout_6->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00452"></a><span class="lineno">  452</span>         verticalLayout_6->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout_6"</span>));</div>
-<div class="line"><a name="l00453"></a><span class="lineno">  453</span>         label_18 = <span class="keyword">new</span> QLabel(tab_4);</div>
-<div class="line"><a name="l00454"></a><span class="lineno">  454</span>         label_18->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_18"</span>));</div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span> </div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</span>         verticalLayout_6->addWidget(label_18);</div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span> </div>
-<div class="line"><a name="l00458"></a><span class="lineno">  458</span>         commandLineEdit = <span class="keyword">new</span> QLineEdit(tab_4);</div>
-<div class="line"><a name="l00459"></a><span class="lineno">  459</span>         commandLineEdit->setObjectName(QString::fromUtf8(<span class="stringliteral">"commandLineEdit"</span>));</div>
-<div class="line"><a name="l00460"></a><span class="lineno">  460</span> </div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span>         verticalLayout_6->addWidget(commandLineEdit);</div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span> </div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span>         label_19 = <span class="keyword">new</span> QLabel(tab_4);</div>
-<div class="line"><a name="l00464"></a><span class="lineno">  464</span>         label_19->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_19"</span>));</div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span> </div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>         verticalLayout_6->addWidget(label_19);</div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span> </div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span>         consoleEdit = <span class="keyword">new</span> QPlainTextEdit(tab_4);</div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span>         consoleEdit->setObjectName(QString::fromUtf8(<span class="stringliteral">"consoleEdit"</span>));</div>
-<div class="line"><a name="l00470"></a><span class="lineno">  470</span> </div>
-<div class="line"><a name="l00471"></a><span class="lineno">  471</span>         verticalLayout_6->addWidget(consoleEdit);</div>
-<div class="line"><a name="l00472"></a><span class="lineno">  472</span> </div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span>         tabWidget->addTab(tab_4, QString());</div>
-<div class="line"><a name="l00474"></a><span class="lineno">  474</span> </div>
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span>         verticalLayout->addWidget(tabWidget);</div>
-<div class="line"><a name="l00476"></a><span class="lineno">  476</span> </div>
-<div class="line"><a name="l00477"></a><span class="lineno">  477</span>         horizontalLayout = <span class="keyword">new</span> QHBoxLayout();</div>
-<div class="line"><a name="l00478"></a><span class="lineno">  478</span>         horizontalLayout->setSpacing(6);</div>
-<div class="line"><a name="l00479"></a><span class="lineno">  479</span>         horizontalLayout->setObjectName(QString::fromUtf8(<span class="stringliteral">"horizontalLayout"</span>));</div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span>         pushButton_run = <span class="keyword">new</span> QPushButton(centralWidget);</div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span>         pushButton_run->setObjectName(QString::fromUtf8(<span class="stringliteral">"pushButton_run"</span>));</div>
-<div class="line"><a name="l00482"></a><span class="lineno">  482</span> </div>
-<div class="line"><a name="l00483"></a><span class="lineno">  483</span>         horizontalLayout->addWidget(pushButton_run);</div>
-<div class="line"><a name="l00484"></a><span class="lineno">  484</span> </div>
-<div class="line"><a name="l00485"></a><span class="lineno">  485</span>         horizontalSpacer = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00486"></a><span class="lineno">  486</span> </div>
-<div class="line"><a name="l00487"></a><span class="lineno">  487</span>         horizontalLayout->addItem(horizontalSpacer);</div>
-<div class="line"><a name="l00488"></a><span class="lineno">  488</span> </div>
-<div class="line"><a name="l00489"></a><span class="lineno">  489</span>         pushButton_restore = <span class="keyword">new</span> QPushButton(centralWidget);</div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span>         pushButton_restore->setObjectName(QString::fromUtf8(<span class="stringliteral">"pushButton_restore"</span>));</div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span> </div>
-<div class="line"><a name="l00492"></a><span class="lineno">  492</span>         horizontalLayout->addWidget(pushButton_restore);</div>
-<div class="line"><a name="l00493"></a><span class="lineno">  493</span> </div>
-<div class="line"><a name="l00494"></a><span class="lineno">  494</span> </div>
-<div class="line"><a name="l00495"></a><span class="lineno">  495</span>         verticalLayout->addLayout(horizontalLayout);</div>
-<div class="line"><a name="l00496"></a><span class="lineno">  496</span> </div>
-<div class="line"><a name="l00497"></a><span class="lineno">  497</span>         MainWindow->setCentralWidget(centralWidget);</div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span>         menuBar = <span class="keyword">new</span> QMenuBar(MainWindow);</div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span>         menuBar->setObjectName(QString::fromUtf8(<span class="stringliteral">"menuBar"</span>));</div>
-<div class="line"><a name="l00500"></a><span class="lineno">  500</span>         menuBar->setGeometry(QRect(0, 0, 628, 25));</div>
-<div class="line"><a name="l00501"></a><span class="lineno">  501</span>         menuFile = <span class="keyword">new</span> QMenu(menuBar);</div>
-<div class="line"><a name="l00502"></a><span class="lineno">  502</span>         menuFile->setObjectName(QString::fromUtf8(<span class="stringliteral">"menuFile"</span>));</div>
-<div class="line"><a name="l00503"></a><span class="lineno">  503</span>         MainWindow->setMenuBar(menuBar);</div>
-<div class="line"><a name="l00504"></a><span class="lineno">  504</span>         mainToolBar = <span class="keyword">new</span> QToolBar(MainWindow);</div>
-<div class="line"><a name="l00505"></a><span class="lineno">  505</span>         mainToolBar->setObjectName(QString::fromUtf8(<span class="stringliteral">"mainToolBar"</span>));</div>
-<div class="line"><a name="l00506"></a><span class="lineno">  506</span>         MainWindow->addToolBar(Qt::TopToolBarArea, mainToolBar);</div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span>         statusBar = <span class="keyword">new</span> QStatusBar(MainWindow);</div>
-<div class="line"><a name="l00508"></a><span class="lineno">  508</span>         statusBar->setObjectName(QString::fromUtf8(<span class="stringliteral">"statusBar"</span>));</div>
-<div class="line"><a name="l00509"></a><span class="lineno">  509</span>         MainWindow->setStatusBar(statusBar);</div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span>         QWidget::setTabOrder(tabWidget, training);</div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span>         QWidget::setTabOrder(training, toolButton_training);</div>
-<div class="line"><a name="l00512"></a><span class="lineno">  512</span>         QWidget::setTabOrder(toolButton_training, tln);</div>
-<div class="line"><a name="l00513"></a><span class="lineno">  513</span>         QWidget::setTabOrder(tln, label);</div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span>         QWidget::setTabOrder(label, nclass);</div>
-<div class="line"><a name="l00515"></a><span class="lineno">  515</span>         QWidget::setTabOrder(nclass, input);</div>
-<div class="line"><a name="l00516"></a><span class="lineno">  516</span>         QWidget::setTabOrder(input, toolButton_input);</div>
-<div class="line"><a name="l00517"></a><span class="lineno">  517</span>         QWidget::setTabOrder(toolButton_input, mask);</div>
-<div class="line"><a name="l00518"></a><span class="lineno">  518</span>         QWidget::setTabOrder(mask, toolButton_mask);</div>
-<div class="line"><a name="l00519"></a><span class="lineno">  519</span>         QWidget::setTabOrder(toolButton_mask, msknodata);</div>
-<div class="line"><a name="l00520"></a><span class="lineno">  520</span>         QWidget::setTabOrder(msknodata, output);</div>
-<div class="line"><a name="l00521"></a><span class="lineno">  521</span>         QWidget::setTabOrder(output, toolButton_output);</div>
-<div class="line"><a name="l00522"></a><span class="lineno">  522</span>         QWidget::setTabOrder(toolButton_output, nodata);</div>
-<div class="line"><a name="l00523"></a><span class="lineno">  523</span>         QWidget::setTabOrder(nodata, ct);</div>
-<div class="line"><a name="l00524"></a><span class="lineno">  524</span>         QWidget::setTabOrder(ct, toolButton_ct);</div>
-<div class="line"><a name="l00525"></a><span class="lineno">  525</span>         QWidget::setTabOrder(toolButton_ct, svmtype);</div>
-<div class="line"><a name="l00526"></a><span class="lineno">  526</span>         QWidget::setTabOrder(svmtype, coef0);</div>
-<div class="line"><a name="l00527"></a><span class="lineno">  527</span>         QWidget::setTabOrder(coef0, nu);</div>
-<div class="line"><a name="l00528"></a><span class="lineno">  528</span>         QWidget::setTabOrder(nu, kerneltype);</div>
-<div class="line"><a name="l00529"></a><span class="lineno">  529</span>         QWidget::setTabOrder(kerneltype, kd);</div>
-<div class="line"><a name="l00530"></a><span class="lineno">  530</span>         QWidget::setTabOrder(kd, gamma);</div>
-<div class="line"><a name="l00531"></a><span class="lineno">  531</span>         QWidget::setTabOrder(gamma, ccost);</div>
-<div class="line"><a name="l00532"></a><span class="lineno">  532</span>         QWidget::setTabOrder(ccost, cv);</div>
-<div class="line"><a name="l00533"></a><span class="lineno">  533</span>         QWidget::setTabOrder(cv, commandLineEdit);</div>
-<div class="line"><a name="l00534"></a><span class="lineno">  534</span>         QWidget::setTabOrder(commandLineEdit, consoleEdit);</div>
-<div class="line"><a name="l00535"></a><span class="lineno">  535</span>         QWidget::setTabOrder(consoleEdit, tableView_labels);</div>
-<div class="line"><a name="l00536"></a><span class="lineno">  536</span>         QWidget::setTabOrder(tableView_labels, commandLinkButtonPrepareTable);</div>
-<div class="line"><a name="l00537"></a><span class="lineno">  537</span>         QWidget::setTabOrder(commandLinkButtonPrepareTable, pushButton_run);</div>
-<div class="line"><a name="l00538"></a><span class="lineno">  538</span>         QWidget::setTabOrder(pushButton_run, pushButton_restore);</div>
-<div class="line"><a name="l00539"></a><span class="lineno">  539</span> </div>
-<div class="line"><a name="l00540"></a><span class="lineno">  540</span>         menuBar->addAction(menuFile->menuAction());</div>
-<div class="line"><a name="l00541"></a><span class="lineno">  541</span>         menuFile->addAction(actionInput);</div>
-<div class="line"><a name="l00542"></a><span class="lineno">  542</span>         menuFile->addAction(actionTraining);</div>
-<div class="line"><a name="l00543"></a><span class="lineno">  543</span>         menuFile->addAction(actionMask);</div>
-<div class="line"><a name="l00544"></a><span class="lineno">  544</span>         menuFile->addAction(actionOutput);</div>
-<div class="line"><a name="l00545"></a><span class="lineno">  545</span>         menuFile->addAction(actionColor_table);</div>
-<div class="line"><a name="l00546"></a><span class="lineno">  546</span> </div>
-<div class="line"><a name="l00547"></a><span class="lineno">  547</span>         retranslateUi(MainWindow);</div>
-<div class="line"><a name="l00548"></a><span class="lineno">  548</span> </div>
-<div class="line"><a name="l00549"></a><span class="lineno">  549</span>         tabWidget->setCurrentIndex(0);</div>
-<div class="line"><a name="l00550"></a><span class="lineno">  550</span> </div>
-<div class="line"><a name="l00551"></a><span class="lineno">  551</span> </div>
-<div class="line"><a name="l00552"></a><span class="lineno">  552</span>         QMetaObject::connectSlotsByName(MainWindow);</div>
-<div class="line"><a name="l00553"></a><span class="lineno">  553</span>     } <span class="comment">// setupUi</span></div>
-<div class="line"><a name="l00554"></a><span class="lineno">  554</span> </div>
-<div class="line"><a name="l00555"></a><span class="lineno">  555</span>     <span class="keywordtype">void</span> retranslateUi(QMainWindow *MainWindow)</div>
-<div class="line"><a name="l00556"></a><span class="lineno">  556</span>     {</div>
-<div class="line"><a name="l00557"></a><span class="lineno">  557</span>         MainWindow->setWindowTitle(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"pksvm_gui"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00558"></a><span class="lineno">  558</span>         actionInput->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Input"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00559"></a><span class="lineno">  559</span>         actionInput->setShortcut(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Alt+I"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00560"></a><span class="lineno">  560</span>         actionTraining->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Training"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00561"></a><span class="lineno">  561</span>         actionTraining->setShortcut(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Alt+T"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00562"></a><span class="lineno">  562</span>         actionMask->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Mask"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00563"></a><span class="lineno">  563</span>         actionMask->setShortcut(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Alt+M"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00564"></a><span class="lineno">  564</span>         actionOutput->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00565"></a><span class="lineno">  565</span>         actionOutput->setShortcut(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Alt+O"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00566"></a><span class="lineno">  566</span>         actionColor_table->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Color table"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00567"></a><span class="lineno">  567</span>         actionColor_table->setShortcut(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Alt+C"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00568"></a><span class="lineno">  568</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00569"></a><span class="lineno">  569</span> <span class="preprocessor"></span>        label_2->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Attribute name of the class label in the training vector file (default is label)</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00570"></a><span class="lineno">  570</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span> <span class="preprocessor"></span>        label_2->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"attribute name for class label"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00572"></a><span class="lineno">  572</span>         toolButton_training->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00573"></a><span class="lineno">  573</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00574"></a><span class="lineno">  574</span> <span class="preprocessor"></span>        label_4->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>OGR supported vector file. Features must contain labels and band information. You can use pkextract to prepare training vector files</p></body></html>"</span>, 0,  [...]
-<div class="line"><a name="l00575"></a><span class="lineno">  575</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00576"></a><span class="lineno">  576</span> <span class="preprocessor"></span>        label_4->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Training vectorfile"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00577"></a><span class="lineno">  577</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00578"></a><span class="lineno">  578</span> <span class="preprocessor"></span>        label_20->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Provide number of classes in training file here to prepare class name-value pairs (push button prepare table). This is mandatory if labels in training vector are provided as text (inste [...]
-<div class="line"><a name="l00579"></a><span class="lineno">  579</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00580"></a><span class="lineno">  580</span> <span class="preprocessor"></span>        label_20->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"number of classes to prepare table"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00581"></a><span class="lineno">  581</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00582"></a><span class="lineno">  582</span> <span class="preprocessor"></span>        label_21->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Name of the training layer (optional). If not provided, all layers will be read per default.</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00583"></a><span class="lineno">  583</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00584"></a><span class="lineno">  584</span> <span class="preprocessor"></span>        label_21->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Training layername (optional)"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00585"></a><span class="lineno">  585</span>         commandLinkButtonPrepareTable->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"prepare table"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00586"></a><span class="lineno">  586</span>         label_17->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"class name-value pairs"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00587"></a><span class="lineno">  587</span>         tabWidget->setTabText(tabWidget->indexOf(tab), QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Training"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00588"></a><span class="lineno">  588</span>         label_14->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"msknodata"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00589"></a><span class="lineno">  589</span>         toolButton_input->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00590"></a><span class="lineno">  590</span>         label_16->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"nodata"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00591"></a><span class="lineno">  591</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00592"></a><span class="lineno">  592</span> <span class="preprocessor"></span>        label_13->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Dimensions of mask image must correspond to input image. Pixels in mask with values=masknodata are not classified and get nodata value.</p></body></html>"</span>, [...]
-<div class="line"><a name="l00593"></a><span class="lineno">  593</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00594"></a><span class="lineno">  594</span> <span class="preprocessor"></span>        label_13->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Mask image"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00595"></a><span class="lineno">  595</span>         toolButton_mask->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00596"></a><span class="lineno">  596</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00597"></a><span class="lineno">  597</span> <span class="preprocessor"></span>        label_15->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Output image (classified map). Can be OGR vector or GDAL raster, depending on input data.</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00598"></a><span class="lineno">  598</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00599"></a><span class="lineno">  599</span> <span class="preprocessor"></span>        label_15->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output data"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00600"></a><span class="lineno">  600</span>         toolButton_output->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00601"></a><span class="lineno">  601</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00602"></a><span class="lineno">  602</span> <span class="preprocessor"></span>        label_3->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Input image. Both OGR vectors and GDAL rasters are supported. Number of bands must match those in training sample.</p></body></html>"</span>, 0, QApplication::Unic [...]
-<div class="line"><a name="l00603"></a><span class="lineno">  603</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00604"></a><span class="lineno">  604</span> <span class="preprocessor"></span>        label_3->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Input data"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00605"></a><span class="lineno">  605</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00606"></a><span class="lineno">  606</span> <span class="preprocessor"></span>        label_22->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Color table must be provided as ASCII text file with five (space delimited) columns:</p><p>value red green blue alpha<br/></p></body></html>"</s [...]
-<div class="line"><a name="l00607"></a><span class="lineno">  607</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00608"></a><span class="lineno">  608</span> <span class="preprocessor"></span>        label_22->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"color table"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00609"></a><span class="lineno">  609</span>         toolButton_ct->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00610"></a><span class="lineno">  610</span>         tabWidget->setTabText(tabWidget->indexOf(tab_2), QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Input/Output"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00611"></a><span class="lineno">  611</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00612"></a><span class="lineno">  612</span> <span class="preprocessor"></span>        label_5->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Leave empty to skip cross validation. Enter 2 for a two-fold cross validation</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00613"></a><span class="lineno">  613</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00614"></a><span class="lineno">  614</span> <span class="preprocessor"></span>        label_5->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"n-fold cross validation"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00615"></a><span class="lineno">  615</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00616"></a><span class="lineno">  616</span> <span class="preprocessor"></span>        label_10->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>the parameter C of C_SVC, epsilon_SVR, and nu_SVR (default is 1)</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00617"></a><span class="lineno">  617</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00618"></a><span class="lineno">  618</span> <span class="preprocessor"></span>        label_10->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"CCost"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00619"></a><span class="lineno">  619</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00620"></a><span class="lineno">  620</span> <span class="preprocessor"></span>        label_11->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Coef0 in the kernel function (default is 0)</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00621"></a><span class="lineno">  621</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00622"></a><span class="lineno">  622</span> <span class="preprocessor"></span>        label_11->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Coef 0"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00623"></a><span class="lineno">  623</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00624"></a><span class="lineno">  624</span> <span class="preprocessor"></span>        label_6->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Type of the support vector machine</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00625"></a><span class="lineno">  625</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00626"></a><span class="lineno">  626</span> <span class="preprocessor"></span>        label_6->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"SVM type"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00627"></a><span class="lineno">  627</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00628"></a><span class="lineno">  628</span> <span class="preprocessor"></span>        label_7->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>type of kernel function (default is radial)</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00629"></a><span class="lineno">  629</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00630"></a><span class="lineno">  630</span> <span class="preprocessor"></span>        label_7->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Kernel type"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00631"></a><span class="lineno">  631</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00632"></a><span class="lineno">  632</span> <span class="preprocessor"></span>        label_9->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>gamma in kernel function (default is 0)</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00633"></a><span class="lineno">  633</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00634"></a><span class="lineno">  634</span> <span class="preprocessor"></span>        label_9->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Gamma"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00635"></a><span class="lineno">  635</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00636"></a><span class="lineno">  636</span> <span class="preprocessor"></span>        label_12->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>the parameter nu of nu_SVC, one_class SVM, and nu_SVR (default is 0.5)</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00637"></a><span class="lineno">  637</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00638"></a><span class="lineno">  638</span> <span class="preprocessor"></span>        label_12->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"nu"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00639"></a><span class="lineno">  639</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00640"></a><span class="lineno">  640</span> <span class="preprocessor"></span>        label_8->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>degree in kernel function (default is 3)</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00641"></a><span class="lineno">  641</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00642"></a><span class="lineno">  642</span> <span class="preprocessor"></span>        label_8->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Kernel degree"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00643"></a><span class="lineno">  643</span>         tabWidget->setTabText(tabWidget->indexOf(tab_3), QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Classifier"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00644"></a><span class="lineno">  644</span>         label_18->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Command line"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00645"></a><span class="lineno">  645</span>         label_19->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Console output"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00646"></a><span class="lineno">  646</span>         tabWidget->setTabText(tabWidget->indexOf(tab_4), QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Console"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00647"></a><span class="lineno">  647</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00648"></a><span class="lineno">  648</span> <span class="preprocessor"></span>        pushButton_run->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Classify with current settings (check Console for output)</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00649"></a><span class="lineno">  649</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00650"></a><span class="lineno">  650</span> <span class="preprocessor"></span>        pushButton_run->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Run"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00651"></a><span class="lineno">  651</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00652"></a><span class="lineno">  652</span> <span class="preprocessor"></span>        pushButton_restore->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>reset all parameters to default</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00653"></a><span class="lineno">  653</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00654"></a><span class="lineno">  654</span> <span class="preprocessor"></span>        pushButton_restore->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Restore defaults"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00655"></a><span class="lineno">  655</span>         menuFile->setTitle(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"File"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00656"></a><span class="lineno">  656</span>     } <span class="comment">// retranslateUi</span></div>
-<div class="line"><a name="l00657"></a><span class="lineno">  657</span> </div>
-<div class="line"><a name="l00658"></a><span class="lineno">  658</span> };</div>
-<div class="line"><a name="l00659"></a><span class="lineno">  659</span> </div>
-<div class="line"><a name="l00660"></a><span class="lineno">  660</span> <span class="keyword">namespace </span>Ui {</div>
-<div class="line"><a name="l00661"></a><span class="lineno">  661</span>     <span class="keyword">class </span>MainWindow: <span class="keyword">public</span> <a class="code" href="classUi__MainWindow.html">Ui_MainWindow</a> {};</div>
-<div class="line"><a name="l00662"></a><span class="lineno">  662</span> } <span class="comment">// namespace Ui</span></div>
-<div class="line"><a name="l00663"></a><span class="lineno">  663</span> </div>
-<div class="line"><a name="l00664"></a><span class="lineno">  664</span> QT_END_NAMESPACE</div>
-<div class="line"><a name="l00665"></a><span class="lineno">  665</span> </div>
-<div class="line"><a name="l00666"></a><span class="lineno">  666</span> <span class="preprocessor">#endif // UI_MAINWINDOW_H</span></div>
-<div class="ttc" id="classUi__MainWindow_html"><div class="ttname"><a href="classUi__MainWindow.html">Ui_MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="build-pkcomposite__gui-gcc-Debug_2ui__mainwindow_8h_source.html#l00039">ui_mainwindow.h:39</a></div></div>
-<div class="ttc" id="classMainWindow_html"><div class="ttname"><a href="classMainWindow.html">MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite__gui_2mainwindow_8h_source.html#l00031">mainwindow.h:31</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/build-pksvm__gui-gcc-Release_2moc__mainwindow_8cpp_source.html b/doc/html/build-pksvm__gui-gcc-Release_2moc__mainwindow_8cpp_source.html
deleted file mode 100644
index fa08163..0000000
--- a/doc/html/build-pksvm__gui-gcc-Release_2moc__mainwindow_8cpp_source.html
+++ /dev/null
@@ -1,205 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/build-pksvm_gui-gcc-Release/moc_mainwindow.cpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_ed1df9621940d6aa1183c365ad1750d2.html">build-pksvm_gui-gcc-Release</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">moc_mainwindow.cpp</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/****************************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">** Meta object code from reading C++ file 'mainwindow.h'</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">** Created by: The Qt Meta Object Compiler version 63 (Qt 4.8.6)</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">** WARNING! All changes made in this file will be lost!</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">*****************************************************************************/</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> </div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="preprocessor">#include "../pksvm_gui/mainwindow.h"</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="preprocessor">#if !defined(Q_MOC_OUTPUT_REVISION)</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="preprocessor"></span><span class="preprocessor">#error "The header file 'mainwindow.h' doesn't include <QObject>."</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="preprocessor"></span><span class="preprocessor">#elif Q_MOC_OUTPUT_REVISION != 63</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="preprocessor"></span><span class="preprocessor">#error "This file was generated using the moc from 4.8.6. It"</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="preprocessor"></span><span class="preprocessor">#error "cannot be used with the include files from this version of Qt."</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor"></span><span class="preprocessor">#error "(The moc has changed too much.)"</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> QT_BEGIN_MOC_NAMESPACE</div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="keyword">static</span> <span class="keyword">const</span> uint qt_meta_data_MainWindow[] = {</div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> </div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span>  <span class="comment">// content:</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span>        6,       <span class="comment">// revision</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span>        0,       <span class="comment">// classname</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span>        0,    0, <span class="comment">// classinfo</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span>       14,   14, <span class="comment">// methods</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span>        0,    0, <span class="comment">// properties</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span>        0,    0, <span class="comment">// enums/sets</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span>        0,    0, <span class="comment">// constructors</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span>        0,       <span class="comment">// flags</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>        0,       <span class="comment">// signalCount</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> </div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>  <span class="comment">// slots: signature, parameters, type, tag, flags</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>       12,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>       39,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>       69,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>       95,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>      123,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>      153,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>      182,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>      213,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>      246,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>      274,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>      302,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>      334,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>      377,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>      410,   11,   11,   11, 0x08,</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span> </div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>        0        <span class="comment">// eod</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span> };</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span> </div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> qt_meta_stringdata_MainWindow[] = {</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     <span class="stringliteral">"MainWindow\0\0on_actionInput_triggered()\0"</span></div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     <span class="stringliteral">"on_actionTraining_triggered()\0"</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     <span class="stringliteral">"on_actionMask_triggered()\0"</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     <span class="stringliteral">"on_actionOutput_triggered()\0"</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <span class="stringliteral">"on_toolButton_input_clicked()\0"</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     <span class="stringliteral">"on_toolButton_mask_clicked()\0"</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     <span class="stringliteral">"on_toolButton_output_clicked()\0"</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     <span class="stringliteral">"on_toolButton_training_clicked()\0"</span></div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     <span class="stringliteral">"on_training_returnPressed()\0"</span></div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     <span class="stringliteral">"on_pushButton_run_clicked()\0"</span></div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     <span class="stringliteral">"on_pushButton_restore_clicked()\0"</span></div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     <span class="stringliteral">"on_commandLinkButtonPrepareTable_clicked()\0"</span></div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     <span class="stringliteral">"on_actionColor_table_triggered()\0"</span></div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     <span class="stringliteral">"on_toolButton_ct_clicked()\0"</span></div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span> };</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span> </div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span> <span class="keywordtype">void</span> MainWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, <span class="keywordtype">int</span> _id, <span class="keywordtype">void</span> **_a)</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span> {</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     <span class="keywordflow">if</span> (_c == QMetaObject::InvokeMetaMethod) {</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>         Q_ASSERT(staticMetaObject.cast(_o));</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>         <a class="code" href="classMainWindow.html">MainWindow</a> *_t = <span class="keyword">static_cast<</span><a class="code" href="classMainWindow.html">MainWindow</a> *<span class="keyword">></span>(_o);</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>         <span class="keywordflow">switch</span> (_id) {</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>         <span class="keywordflow">case</span> 0: _t->on_actionInput_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>         <span class="keywordflow">case</span> 1: _t->on_actionTraining_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>         <span class="keywordflow">case</span> 2: _t->on_actionMask_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>         <span class="keywordflow">case</span> 3: _t->on_actionOutput_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>         <span class="keywordflow">case</span> 4: _t->on_toolButton_input_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>         <span class="keywordflow">case</span> 5: _t->on_toolButton_mask_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>         <span class="keywordflow">case</span> 6: _t->on_toolButton_output_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>         <span class="keywordflow">case</span> 7: _t->on_toolButton_training_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>         <span class="keywordflow">case</span> 8: _t->on_training_returnPressed(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>         <span class="keywordflow">case</span> 9: _t->on_pushButton_run_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>         <span class="keywordflow">case</span> 10: _t->on_pushButton_restore_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>         <span class="keywordflow">case</span> 11: _t->on_commandLinkButtonPrepareTable_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>         <span class="keywordflow">case</span> 12: _t->on_actionColor_table_triggered(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>         <span class="keywordflow">case</span> 13: _t->on_toolButton_ct_clicked(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>         <span class="keywordflow">default</span>: ;</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>         }</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     }</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     Q_UNUSED(_a);</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span> }</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span> </div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span> <span class="keyword">const</span> QMetaObjectExtraData MainWindow::staticMetaObjectExtraData = {</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>     0,  qt_static_metacall </div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span> };</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span> </div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span> <span class="keyword">const</span> QMetaObject MainWindow::staticMetaObject = {</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     { &QMainWindow::staticMetaObject, qt_meta_stringdata_MainWindow,</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>       qt_meta_data_MainWindow, &staticMetaObjectExtraData }</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span> };</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span> </div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span> <span class="preprocessor">#ifdef Q_NO_DATA_RELOCATION</span></div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span> <span class="preprocessor"></span><span class="keyword">const</span> QMetaObject &MainWindow::getStaticMetaObject() { <span class="keywordflow">return</span> staticMetaObject; }</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span> <span class="preprocessor">#endif //Q_NO_DATA_RELOCATION</span></div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span> <span class="keyword">const</span> QMetaObject *MainWindow::metaObject()<span class="keyword"> const</span></div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span> <span class="keyword"></span>{</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>     <span class="keywordflow">return</span> QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject;</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span> }</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span> </div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span> <span class="keywordtype">void</span> *MainWindow::qt_metacast(<span class="keyword">const</span> <span class="keywordtype">char</span> *_clname)</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span> {</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     <span class="keywordflow">if</span> (!_clname) <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     <span class="keywordflow">if</span> (!strcmp(_clname, qt_meta_stringdata_MainWindow))</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>         <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">void</span>*<span class="keyword">></span>(<span class="keyword">const_cast<</span> <a class="code" href="classMainWindow.html">MainWindow</a>*<span class="keyword">></span>(<span class="keyword">this</span>));</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     <span class="keywordflow">return</span> QMainWindow::qt_metacast(_clname);</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span> }</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span> </div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span> <span class="keywordtype">int</span> MainWindow::qt_metacall(QMetaObject::Call _c, <span class="keywordtype">int</span> _id, <span class="keywordtype">void</span> **_a)</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span> {</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>     _id = QMainWindow::qt_metacall(_c, _id, _a);</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>     <span class="keywordflow">if</span> (_id < 0)</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>         <span class="keywordflow">return</span> _id;</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>     <span class="keywordflow">if</span> (_c == QMetaObject::InvokeMetaMethod) {</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>         <span class="keywordflow">if</span> (_id < 14)</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>             qt_static_metacall(<span class="keyword">this</span>, _c, _id, _a);</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>         _id -= 14;</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>     }</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>     <span class="keywordflow">return</span> _id;</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span> }</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span> QT_END_MOC_NAMESPACE</div>
-<div class="ttc" id="classMainWindow_html"><div class="ttname"><a href="classMainWindow.html">MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite__gui_2mainwindow_8h_source.html#l00031">mainwindow.h:31</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/build-pksvm__gui-gcc-Release_2ui__mainwindow_8h_source.html b/doc/html/build-pksvm__gui-gcc-Release_2ui__mainwindow_8h_source.html
deleted file mode 100644
index 9f41b42..0000000
--- a/doc/html/build-pksvm__gui-gcc-Release_2ui__mainwindow_8h_source.html
+++ /dev/null
@@ -1,740 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/build-pksvm_gui-gcc-Release/ui_mainwindow.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_ed1df9621940d6aa1183c365ad1750d2.html">build-pksvm_gui-gcc-Release</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">ui_mainwindow.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/********************************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">** Form generated from reading UI file 'mainwindow.ui'</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">** Created by: Qt User Interface Compiler version 4.8.6</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">**</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">** WARNING! All changes made in this file will be lost when recompiling UI file!</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">********************************************************************************/</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> </div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="preprocessor">#ifndef UI_MAINWINDOW_H</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="preprocessor"></span><span class="preprocessor">#define UI_MAINWINDOW_H</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="preprocessor">#include <QtCore/QVariant></span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="preprocessor">#include <QtGui/QAction></span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="preprocessor">#include <QtGui/QApplication></span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor">#include <QtGui/QButtonGroup></span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor">#include <QtGui/QComboBox></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include <QtGui/QCommandLinkButton></span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include <QtGui/QGridLayout></span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include <QtGui/QHBoxLayout></span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <QtGui/QHeaderView></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <QtGui/QLabel></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <QtGui/QLineEdit></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <QtGui/QMainWindow></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <QtGui/QMenu></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include <QtGui/QMenuBar></span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include <QtGui/QPlainTextEdit></span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include <QtGui/QPushButton></span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include <QtGui/QSpacerItem></span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include <QtGui/QStatusBar></span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include <QtGui/QTabWidget></span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="preprocessor">#include <QtGui/QTableView></span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="preprocessor">#include <QtGui/QToolBar></span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="preprocessor">#include <QtGui/QToolButton></span></div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="preprocessor">#include <QtGui/QVBoxLayout></span></div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="preprocessor">#include <QtGui/QWidget></span></div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> </div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> QT_BEGIN_NAMESPACE</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="keyword">class </span><a class="code" href="classUi__MainWindow.html">Ui_MainWindow</a></div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> {</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     QAction *actionInput;</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     QAction *actionTraining;</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     QAction *actionMask;</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     QAction *actionOutput;</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     QAction *actionColor_table;</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     QWidget *centralWidget;</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     QVBoxLayout *verticalLayout;</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     QTabWidget *tabWidget;</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     QWidget *tab;</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     QVBoxLayout *verticalLayout_3;</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     QGridLayout *gridLayout;</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     QLabel *label_2;</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     QToolButton *toolButton_training;</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     QLabel *label_4;</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     QSpacerItem *horizontalSpacer_4;</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     QLineEdit *training;</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     QLineEdit *nclass;</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     QLabel *label_20;</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     QLineEdit *label;</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     QSpacerItem *horizontalSpacer_3;</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     QLabel *label_21;</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     QLineEdit *tln;</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     QSpacerItem *horizontalSpacer_2;</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     QCommandLinkButton *commandLinkButtonPrepareTable;</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     QVBoxLayout *verticalLayout_2;</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>     QLabel *label_17;</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     QTableView *tableView_labels;</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     QWidget *tab_2;</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     QVBoxLayout *verticalLayout_4;</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     QGridLayout *gridLayout_2;</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>     QLineEdit *nodata;</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>     QLabel *label_14;</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>     QToolButton *toolButton_input;</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>     QLabel *label_16;</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>     QLabel *label_13;</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>     QToolButton *toolButton_mask;</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>     QLabel *label_15;</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>     QLineEdit *mask;</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>     QLineEdit *msknodata;</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>     QSpacerItem *horizontalSpacer_15;</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     QLineEdit *output;</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     QToolButton *toolButton_output;</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     QLineEdit *input;</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>     QLabel *label_3;</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>     QLabel *label_22;</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>     QLineEdit *ct;</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>     QToolButton *toolButton_ct;</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     QSpacerItem *verticalSpacer;</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     QWidget *tab_3;</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     QVBoxLayout *verticalLayout_5;</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     QGridLayout *gridLayout_3;</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>     QLineEdit *cv;</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>     QLineEdit *ccost;</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>     QLabel *label_5;</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     QLabel *label_10;</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     QLabel *label_11;</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     QLabel *label_6;</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     QComboBox *svmtype;</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     QLineEdit *gamma;</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     QLabel *label_7;</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     QLineEdit *coef0;</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     QLabel *label_9;</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     QLineEdit *nu;</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     QLineEdit *kd;</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     QLabel *label_12;</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     QSpacerItem *verticalSpacer_3;</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     QComboBox *kerneltype;</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>     QLabel *label_8;</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>     QSpacerItem *horizontalSpacer_5;</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>     QSpacerItem *verticalSpacer_2;</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>     QWidget *tab_4;</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     QVBoxLayout *verticalLayout_6;</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     QLabel *label_18;</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     QLineEdit *commandLineEdit;</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     QLabel *label_19;</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     QPlainTextEdit *consoleEdit;</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     QHBoxLayout *horizontalLayout;</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>     QPushButton *pushButton_run;</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>     QSpacerItem *horizontalSpacer;</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>     QPushButton *pushButton_restore;</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>     QMenuBar *menuBar;</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>     QMenu *menuFile;</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     QToolBar *mainToolBar;</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>     QStatusBar *statusBar;</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span> </div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>     <span class="keywordtype">void</span> setupUi(QMainWindow *<a class="code" href="classMainWindow.html">MainWindow</a>)</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>     {</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>         <span class="keywordflow">if</span> (MainWindow->objectName().isEmpty())</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>             MainWindow->setObjectName(QString::fromUtf8(<span class="stringliteral">"MainWindow"</span>));</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>         MainWindow->resize(628, 614);</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>         actionInput = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>         actionInput->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionInput"</span>));</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>         actionTraining = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>         actionTraining->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionTraining"</span>));</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>         actionMask = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>         actionMask->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionMask"</span>));</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>         actionOutput = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>         actionOutput->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionOutput"</span>));</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>         actionColor_table = <span class="keyword">new</span> QAction(MainWindow);</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>         actionColor_table->setObjectName(QString::fromUtf8(<span class="stringliteral">"actionColor_table"</span>));</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>         centralWidget = <span class="keyword">new</span> QWidget(MainWindow);</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>         centralWidget->setObjectName(QString::fromUtf8(<span class="stringliteral">"centralWidget"</span>));</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>         verticalLayout = <span class="keyword">new</span> QVBoxLayout(centralWidget);</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>         verticalLayout->setSpacing(6);</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>         verticalLayout->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>         verticalLayout->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout"</span>));</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>         tabWidget = <span class="keyword">new</span> QTabWidget(centralWidget);</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>         tabWidget->setObjectName(QString::fromUtf8(<span class="stringliteral">"tabWidget"</span>));</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>         tab = <span class="keyword">new</span> QWidget();</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>         tab->setObjectName(QString::fromUtf8(<span class="stringliteral">"tab"</span>));</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>         verticalLayout_3 = <span class="keyword">new</span> QVBoxLayout(tab);</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>         verticalLayout_3->setSpacing(6);</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>         verticalLayout_3->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>         verticalLayout_3->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout_3"</span>));</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>         gridLayout = <span class="keyword">new</span> QGridLayout();</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>         gridLayout->setSpacing(6);</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>         gridLayout->setObjectName(QString::fromUtf8(<span class="stringliteral">"gridLayout"</span>));</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>         label_2 = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>         label_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_2"</span>));</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span> </div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>         gridLayout->addWidget(label_2, 2, 0, 1, 1);</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span> </div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>         toolButton_training = <span class="keyword">new</span> QToolButton(tab);</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>         toolButton_training->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_training"</span>));</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span> </div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>         gridLayout->addWidget(toolButton_training, 0, 2, 1, 1);</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span> </div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>         label_4 = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>         label_4->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_4"</span>));</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span> </div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>         gridLayout->addWidget(label_4, 0, 0, 1, 1);</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span> </div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>         horizontalSpacer_4 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span> </div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>         gridLayout->addItem(horizontalSpacer_4, 3, 2, 1, 1);</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span> </div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>         training = <span class="keyword">new</span> QLineEdit(tab);</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>         training->setObjectName(QString::fromUtf8(<span class="stringliteral">"training"</span>));</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span> </div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>         gridLayout->addWidget(training, 0, 1, 1, 1);</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span> </div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>         nclass = <span class="keyword">new</span> QLineEdit(tab);</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>         nclass->setObjectName(QString::fromUtf8(<span class="stringliteral">"nclass"</span>));</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span> </div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>         gridLayout->addWidget(nclass, 3, 1, 1, 1);</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span> </div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>         label_20 = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>         label_20->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_20"</span>));</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span> </div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>         gridLayout->addWidget(label_20, 3, 0, 1, 1);</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span> </div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>         label = <span class="keyword">new</span> QLineEdit(tab);</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>         label->setObjectName(QString::fromUtf8(<span class="stringliteral">"label"</span>));</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span> </div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>         gridLayout->addWidget(label, 2, 1, 1, 1);</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span> </div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>         horizontalSpacer_3 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span> </div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>         gridLayout->addItem(horizontalSpacer_3, 2, 2, 1, 1);</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span> </div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>         label_21 = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>         label_21->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_21"</span>));</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span> </div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>         gridLayout->addWidget(label_21, 1, 0, 1, 1);</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span> </div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>         tln = <span class="keyword">new</span> QLineEdit(tab);</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>         tln->setObjectName(QString::fromUtf8(<span class="stringliteral">"tln"</span>));</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span> </div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>         gridLayout->addWidget(tln, 1, 1, 1, 1);</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span> </div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>         horizontalSpacer_2 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span> </div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>         gridLayout->addItem(horizontalSpacer_2, 1, 2, 1, 1);</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span> </div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span> </div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>         verticalLayout_3->addLayout(gridLayout);</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span> </div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>         commandLinkButtonPrepareTable = <span class="keyword">new</span> QCommandLinkButton(tab);</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>         commandLinkButtonPrepareTable->setObjectName(QString::fromUtf8(<span class="stringliteral">"commandLinkButtonPrepareTable"</span>));</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span> </div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>         verticalLayout_3->addWidget(commandLinkButtonPrepareTable);</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span> </div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>         verticalLayout_2 = <span class="keyword">new</span> QVBoxLayout();</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>         verticalLayout_2->setSpacing(6);</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>         verticalLayout_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout_2"</span>));</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>         label_17 = <span class="keyword">new</span> QLabel(tab);</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>         label_17->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_17"</span>));</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span> </div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>         verticalLayout_2->addWidget(label_17);</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span> </div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>         tableView_labels = <span class="keyword">new</span> QTableView(tab);</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>         tableView_labels->setObjectName(QString::fromUtf8(<span class="stringliteral">"tableView_labels"</span>));</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span> </div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>         verticalLayout_2->addWidget(tableView_labels);</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span> </div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span> </div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>         verticalLayout_3->addLayout(verticalLayout_2);</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span> </div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>         tabWidget->addTab(tab, QString());</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>         tab_2 = <span class="keyword">new</span> QWidget();</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>         tab_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"tab_2"</span>));</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>         verticalLayout_4 = <span class="keyword">new</span> QVBoxLayout(tab_2);</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>         verticalLayout_4->setSpacing(6);</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>         verticalLayout_4->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>         verticalLayout_4->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout_4"</span>));</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>         gridLayout_2 = <span class="keyword">new</span> QGridLayout();</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>         gridLayout_2->setSpacing(6);</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>         gridLayout_2->setObjectName(QString::fromUtf8(<span class="stringliteral">"gridLayout_2"</span>));</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>         nodata = <span class="keyword">new</span> QLineEdit(tab_2);</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>         nodata->setObjectName(QString::fromUtf8(<span class="stringliteral">"nodata"</span>));</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span> </div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>         gridLayout_2->addWidget(nodata, 2, 5, 1, 1);</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span> </div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>         label_14 = <span class="keyword">new</span> QLabel(tab_2);</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>         label_14->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_14"</span>));</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span> </div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>         gridLayout_2->addWidget(label_14, 1, 4, 1, 1);</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span> </div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>         toolButton_input = <span class="keyword">new</span> QToolButton(tab_2);</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>         toolButton_input->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_input"</span>));</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span> </div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>         gridLayout_2->addWidget(toolButton_input, 0, 2, 1, 1);</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span> </div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>         label_16 = <span class="keyword">new</span> QLabel(tab_2);</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>         label_16->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_16"</span>));</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span> </div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>         gridLayout_2->addWidget(label_16, 2, 4, 1, 1);</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span> </div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>         label_13 = <span class="keyword">new</span> QLabel(tab_2);</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>         label_13->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_13"</span>));</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span> </div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>         gridLayout_2->addWidget(label_13, 1, 0, 1, 1);</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span> </div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>         toolButton_mask = <span class="keyword">new</span> QToolButton(tab_2);</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>         toolButton_mask->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_mask"</span>));</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span> </div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>         gridLayout_2->addWidget(toolButton_mask, 1, 2, 1, 1);</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span> </div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>         label_15 = <span class="keyword">new</span> QLabel(tab_2);</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>         label_15->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_15"</span>));</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span> </div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>         gridLayout_2->addWidget(label_15, 2, 0, 1, 1);</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span> </div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>         mask = <span class="keyword">new</span> QLineEdit(tab_2);</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>         mask->setObjectName(QString::fromUtf8(<span class="stringliteral">"mask"</span>));</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span> </div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>         gridLayout_2->addWidget(mask, 1, 1, 1, 1);</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span> </div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>         msknodata = <span class="keyword">new</span> QLineEdit(tab_2);</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>         msknodata->setObjectName(QString::fromUtf8(<span class="stringliteral">"msknodata"</span>));</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span> </div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>         gridLayout_2->addWidget(msknodata, 1, 5, 1, 1);</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span> </div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>         horizontalSpacer_15 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span> </div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>         gridLayout_2->addItem(horizontalSpacer_15, 1, 3, 1, 1);</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span> </div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>         output = <span class="keyword">new</span> QLineEdit(tab_2);</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>         output->setObjectName(QString::fromUtf8(<span class="stringliteral">"output"</span>));</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span> </div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>         gridLayout_2->addWidget(output, 2, 1, 1, 1);</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span> </div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>         toolButton_output = <span class="keyword">new</span> QToolButton(tab_2);</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>         toolButton_output->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_output"</span>));</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span> </div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>         gridLayout_2->addWidget(toolButton_output, 2, 2, 1, 1);</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span> </div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>         input = <span class="keyword">new</span> QLineEdit(tab_2);</div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>         input->setObjectName(QString::fromUtf8(<span class="stringliteral">"input"</span>));</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span> </div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>         gridLayout_2->addWidget(input, 0, 1, 1, 1);</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span> </div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>         label_3 = <span class="keyword">new</span> QLabel(tab_2);</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>         label_3->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_3"</span>));</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span> </div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>         gridLayout_2->addWidget(label_3, 0, 0, 1, 1);</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span> </div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>         label_22 = <span class="keyword">new</span> QLabel(tab_2);</div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>         label_22->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_22"</span>));</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span> </div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>         gridLayout_2->addWidget(label_22, 3, 0, 1, 1);</div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span> </div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>         ct = <span class="keyword">new</span> QLineEdit(tab_2);</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>         ct->setObjectName(QString::fromUtf8(<span class="stringliteral">"ct"</span>));</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span> </div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>         gridLayout_2->addWidget(ct, 3, 1, 1, 1);</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span> </div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>         toolButton_ct = <span class="keyword">new</span> QToolButton(tab_2);</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>         toolButton_ct->setObjectName(QString::fromUtf8(<span class="stringliteral">"toolButton_ct"</span>));</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span> </div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>         gridLayout_2->addWidget(toolButton_ct, 3, 2, 1, 1);</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span> </div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span> </div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>         verticalLayout_4->addLayout(gridLayout_2);</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span> </div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>         verticalSpacer = <span class="keyword">new</span> QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span> </div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>         verticalLayout_4->addItem(verticalSpacer);</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span> </div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>         tabWidget->addTab(tab_2, QString());</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>         tab_3 = <span class="keyword">new</span> QWidget();</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>         tab_3->setObjectName(QString::fromUtf8(<span class="stringliteral">"tab_3"</span>));</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>         verticalLayout_5 = <span class="keyword">new</span> QVBoxLayout(tab_3);</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>         verticalLayout_5->setSpacing(6);</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>         verticalLayout_5->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>         verticalLayout_5->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout_5"</span>));</div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>         gridLayout_3 = <span class="keyword">new</span> QGridLayout();</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>         gridLayout_3->setSpacing(6);</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>         gridLayout_3->setObjectName(QString::fromUtf8(<span class="stringliteral">"gridLayout_3"</span>));</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>         cv = <span class="keyword">new</span> QLineEdit(tab_3);</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>         cv->setObjectName(QString::fromUtf8(<span class="stringliteral">"cv"</span>));</div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span> </div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>         gridLayout_3->addWidget(cv, 3, 1, 1, 1);</div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span> </div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>         ccost = <span class="keyword">new</span> QLineEdit(tab_3);</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>         ccost->setObjectName(QString::fromUtf8(<span class="stringliteral">"ccost"</span>));</div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span> </div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>         gridLayout_3->addWidget(ccost, 2, 4, 1, 1);</div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span> </div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>         label_5 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>         label_5->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_5"</span>));</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span> </div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>         gridLayout_3->addWidget(label_5, 3, 0, 1, 1);</div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span> </div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>         label_10 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>         label_10->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_10"</span>));</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span> </div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>         gridLayout_3->addWidget(label_10, 2, 3, 1, 1);</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span> </div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>         label_11 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>         label_11->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_11"</span>));</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span> </div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>         gridLayout_3->addWidget(label_11, 0, 3, 1, 1);</div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span> </div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>         label_6 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>         label_6->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_6"</span>));</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span> </div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>         gridLayout_3->addWidget(label_6, 0, 0, 1, 1);</div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span> </div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>         svmtype = <span class="keyword">new</span> QComboBox(tab_3);</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>         svmtype->setObjectName(QString::fromUtf8(<span class="stringliteral">"svmtype"</span>));</div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span> </div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>         gridLayout_3->addWidget(svmtype, 0, 1, 1, 1);</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span> </div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>         gamma = <span class="keyword">new</span> QLineEdit(tab_3);</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>         gamma->setObjectName(QString::fromUtf8(<span class="stringliteral">"gamma"</span>));</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span> </div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>         gridLayout_3->addWidget(gamma, 2, 1, 1, 1);</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span> </div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>         label_7 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>         label_7->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_7"</span>));</div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span> </div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>         gridLayout_3->addWidget(label_7, 1, 0, 1, 1);</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span> </div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>         coef0 = <span class="keyword">new</span> QLineEdit(tab_3);</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>         coef0->setObjectName(QString::fromUtf8(<span class="stringliteral">"coef0"</span>));</div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span> </div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>         gridLayout_3->addWidget(coef0, 0, 4, 1, 1);</div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span> </div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>         label_9 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>         label_9->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_9"</span>));</div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span> </div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>         gridLayout_3->addWidget(label_9, 2, 0, 1, 1);</div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span> </div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>         nu = <span class="keyword">new</span> QLineEdit(tab_3);</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span>         nu->setObjectName(QString::fromUtf8(<span class="stringliteral">"nu"</span>));</div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span> </div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span>         gridLayout_3->addWidget(nu, 0, 7, 1, 1);</div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span> </div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>         kd = <span class="keyword">new</span> QLineEdit(tab_3);</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>         kd->setObjectName(QString::fromUtf8(<span class="stringliteral">"kd"</span>));</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span> </div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span>         gridLayout_3->addWidget(kd, 1, 4, 1, 1);</div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span> </div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>         label_12 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>         label_12->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_12"</span>));</div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span> </div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span>         gridLayout_3->addWidget(label_12, 0, 6, 1, 1);</div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span> </div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>         verticalSpacer_3 = <span class="keyword">new</span> QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span> </div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>         gridLayout_3->addItem(verticalSpacer_3, 0, 2, 1, 1);</div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span> </div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span>         kerneltype = <span class="keyword">new</span> QComboBox(tab_3);</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>         kerneltype->setObjectName(QString::fromUtf8(<span class="stringliteral">"kerneltype"</span>));</div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span> </div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span>         gridLayout_3->addWidget(kerneltype, 1, 1, 1, 1);</div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span> </div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span>         label_8 = <span class="keyword">new</span> QLabel(tab_3);</div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span>         label_8->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_8"</span>));</div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span> </div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span>         gridLayout_3->addWidget(label_8, 1, 3, 1, 1);</div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span> </div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>         horizontalSpacer_5 = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span> </div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span>         gridLayout_3->addItem(horizontalSpacer_5, 0, 5, 1, 1);</div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span> </div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span> </div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span>         verticalLayout_5->addLayout(gridLayout_3);</div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span> </div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span>         verticalSpacer_2 = <span class="keyword">new</span> QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);</div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span> </div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span>         verticalLayout_5->addItem(verticalSpacer_2);</div>
-<div class="line"><a name="l00445"></a><span class="lineno">  445</span> </div>
-<div class="line"><a name="l00446"></a><span class="lineno">  446</span>         tabWidget->addTab(tab_3, QString());</div>
-<div class="line"><a name="l00447"></a><span class="lineno">  447</span>         tab_4 = <span class="keyword">new</span> QWidget();</div>
-<div class="line"><a name="l00448"></a><span class="lineno">  448</span>         tab_4->setObjectName(QString::fromUtf8(<span class="stringliteral">"tab_4"</span>));</div>
-<div class="line"><a name="l00449"></a><span class="lineno">  449</span>         verticalLayout_6 = <span class="keyword">new</span> QVBoxLayout(tab_4);</div>
-<div class="line"><a name="l00450"></a><span class="lineno">  450</span>         verticalLayout_6->setSpacing(6);</div>
-<div class="line"><a name="l00451"></a><span class="lineno">  451</span>         verticalLayout_6->setContentsMargins(11, 11, 11, 11);</div>
-<div class="line"><a name="l00452"></a><span class="lineno">  452</span>         verticalLayout_6->setObjectName(QString::fromUtf8(<span class="stringliteral">"verticalLayout_6"</span>));</div>
-<div class="line"><a name="l00453"></a><span class="lineno">  453</span>         label_18 = <span class="keyword">new</span> QLabel(tab_4);</div>
-<div class="line"><a name="l00454"></a><span class="lineno">  454</span>         label_18->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_18"</span>));</div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span> </div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</span>         verticalLayout_6->addWidget(label_18);</div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span> </div>
-<div class="line"><a name="l00458"></a><span class="lineno">  458</span>         commandLineEdit = <span class="keyword">new</span> QLineEdit(tab_4);</div>
-<div class="line"><a name="l00459"></a><span class="lineno">  459</span>         commandLineEdit->setObjectName(QString::fromUtf8(<span class="stringliteral">"commandLineEdit"</span>));</div>
-<div class="line"><a name="l00460"></a><span class="lineno">  460</span> </div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span>         verticalLayout_6->addWidget(commandLineEdit);</div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span> </div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span>         label_19 = <span class="keyword">new</span> QLabel(tab_4);</div>
-<div class="line"><a name="l00464"></a><span class="lineno">  464</span>         label_19->setObjectName(QString::fromUtf8(<span class="stringliteral">"label_19"</span>));</div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span> </div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>         verticalLayout_6->addWidget(label_19);</div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span> </div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span>         consoleEdit = <span class="keyword">new</span> QPlainTextEdit(tab_4);</div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span>         consoleEdit->setObjectName(QString::fromUtf8(<span class="stringliteral">"consoleEdit"</span>));</div>
-<div class="line"><a name="l00470"></a><span class="lineno">  470</span> </div>
-<div class="line"><a name="l00471"></a><span class="lineno">  471</span>         verticalLayout_6->addWidget(consoleEdit);</div>
-<div class="line"><a name="l00472"></a><span class="lineno">  472</span> </div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span>         tabWidget->addTab(tab_4, QString());</div>
-<div class="line"><a name="l00474"></a><span class="lineno">  474</span> </div>
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span>         verticalLayout->addWidget(tabWidget);</div>
-<div class="line"><a name="l00476"></a><span class="lineno">  476</span> </div>
-<div class="line"><a name="l00477"></a><span class="lineno">  477</span>         horizontalLayout = <span class="keyword">new</span> QHBoxLayout();</div>
-<div class="line"><a name="l00478"></a><span class="lineno">  478</span>         horizontalLayout->setSpacing(6);</div>
-<div class="line"><a name="l00479"></a><span class="lineno">  479</span>         horizontalLayout->setObjectName(QString::fromUtf8(<span class="stringliteral">"horizontalLayout"</span>));</div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span>         pushButton_run = <span class="keyword">new</span> QPushButton(centralWidget);</div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span>         pushButton_run->setObjectName(QString::fromUtf8(<span class="stringliteral">"pushButton_run"</span>));</div>
-<div class="line"><a name="l00482"></a><span class="lineno">  482</span> </div>
-<div class="line"><a name="l00483"></a><span class="lineno">  483</span>         horizontalLayout->addWidget(pushButton_run);</div>
-<div class="line"><a name="l00484"></a><span class="lineno">  484</span> </div>
-<div class="line"><a name="l00485"></a><span class="lineno">  485</span>         horizontalSpacer = <span class="keyword">new</span> QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);</div>
-<div class="line"><a name="l00486"></a><span class="lineno">  486</span> </div>
-<div class="line"><a name="l00487"></a><span class="lineno">  487</span>         horizontalLayout->addItem(horizontalSpacer);</div>
-<div class="line"><a name="l00488"></a><span class="lineno">  488</span> </div>
-<div class="line"><a name="l00489"></a><span class="lineno">  489</span>         pushButton_restore = <span class="keyword">new</span> QPushButton(centralWidget);</div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span>         pushButton_restore->setObjectName(QString::fromUtf8(<span class="stringliteral">"pushButton_restore"</span>));</div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span> </div>
-<div class="line"><a name="l00492"></a><span class="lineno">  492</span>         horizontalLayout->addWidget(pushButton_restore);</div>
-<div class="line"><a name="l00493"></a><span class="lineno">  493</span> </div>
-<div class="line"><a name="l00494"></a><span class="lineno">  494</span> </div>
-<div class="line"><a name="l00495"></a><span class="lineno">  495</span>         verticalLayout->addLayout(horizontalLayout);</div>
-<div class="line"><a name="l00496"></a><span class="lineno">  496</span> </div>
-<div class="line"><a name="l00497"></a><span class="lineno">  497</span>         MainWindow->setCentralWidget(centralWidget);</div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span>         menuBar = <span class="keyword">new</span> QMenuBar(MainWindow);</div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span>         menuBar->setObjectName(QString::fromUtf8(<span class="stringliteral">"menuBar"</span>));</div>
-<div class="line"><a name="l00500"></a><span class="lineno">  500</span>         menuBar->setGeometry(QRect(0, 0, 628, 25));</div>
-<div class="line"><a name="l00501"></a><span class="lineno">  501</span>         menuFile = <span class="keyword">new</span> QMenu(menuBar);</div>
-<div class="line"><a name="l00502"></a><span class="lineno">  502</span>         menuFile->setObjectName(QString::fromUtf8(<span class="stringliteral">"menuFile"</span>));</div>
-<div class="line"><a name="l00503"></a><span class="lineno">  503</span>         MainWindow->setMenuBar(menuBar);</div>
-<div class="line"><a name="l00504"></a><span class="lineno">  504</span>         mainToolBar = <span class="keyword">new</span> QToolBar(MainWindow);</div>
-<div class="line"><a name="l00505"></a><span class="lineno">  505</span>         mainToolBar->setObjectName(QString::fromUtf8(<span class="stringliteral">"mainToolBar"</span>));</div>
-<div class="line"><a name="l00506"></a><span class="lineno">  506</span>         MainWindow->addToolBar(Qt::TopToolBarArea, mainToolBar);</div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span>         statusBar = <span class="keyword">new</span> QStatusBar(MainWindow);</div>
-<div class="line"><a name="l00508"></a><span class="lineno">  508</span>         statusBar->setObjectName(QString::fromUtf8(<span class="stringliteral">"statusBar"</span>));</div>
-<div class="line"><a name="l00509"></a><span class="lineno">  509</span>         MainWindow->setStatusBar(statusBar);</div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span>         QWidget::setTabOrder(tabWidget, training);</div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span>         QWidget::setTabOrder(training, toolButton_training);</div>
-<div class="line"><a name="l00512"></a><span class="lineno">  512</span>         QWidget::setTabOrder(toolButton_training, tln);</div>
-<div class="line"><a name="l00513"></a><span class="lineno">  513</span>         QWidget::setTabOrder(tln, label);</div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span>         QWidget::setTabOrder(label, nclass);</div>
-<div class="line"><a name="l00515"></a><span class="lineno">  515</span>         QWidget::setTabOrder(nclass, input);</div>
-<div class="line"><a name="l00516"></a><span class="lineno">  516</span>         QWidget::setTabOrder(input, toolButton_input);</div>
-<div class="line"><a name="l00517"></a><span class="lineno">  517</span>         QWidget::setTabOrder(toolButton_input, mask);</div>
-<div class="line"><a name="l00518"></a><span class="lineno">  518</span>         QWidget::setTabOrder(mask, toolButton_mask);</div>
-<div class="line"><a name="l00519"></a><span class="lineno">  519</span>         QWidget::setTabOrder(toolButton_mask, msknodata);</div>
-<div class="line"><a name="l00520"></a><span class="lineno">  520</span>         QWidget::setTabOrder(msknodata, output);</div>
-<div class="line"><a name="l00521"></a><span class="lineno">  521</span>         QWidget::setTabOrder(output, toolButton_output);</div>
-<div class="line"><a name="l00522"></a><span class="lineno">  522</span>         QWidget::setTabOrder(toolButton_output, nodata);</div>
-<div class="line"><a name="l00523"></a><span class="lineno">  523</span>         QWidget::setTabOrder(nodata, ct);</div>
-<div class="line"><a name="l00524"></a><span class="lineno">  524</span>         QWidget::setTabOrder(ct, toolButton_ct);</div>
-<div class="line"><a name="l00525"></a><span class="lineno">  525</span>         QWidget::setTabOrder(toolButton_ct, svmtype);</div>
-<div class="line"><a name="l00526"></a><span class="lineno">  526</span>         QWidget::setTabOrder(svmtype, coef0);</div>
-<div class="line"><a name="l00527"></a><span class="lineno">  527</span>         QWidget::setTabOrder(coef0, nu);</div>
-<div class="line"><a name="l00528"></a><span class="lineno">  528</span>         QWidget::setTabOrder(nu, kerneltype);</div>
-<div class="line"><a name="l00529"></a><span class="lineno">  529</span>         QWidget::setTabOrder(kerneltype, kd);</div>
-<div class="line"><a name="l00530"></a><span class="lineno">  530</span>         QWidget::setTabOrder(kd, gamma);</div>
-<div class="line"><a name="l00531"></a><span class="lineno">  531</span>         QWidget::setTabOrder(gamma, ccost);</div>
-<div class="line"><a name="l00532"></a><span class="lineno">  532</span>         QWidget::setTabOrder(ccost, cv);</div>
-<div class="line"><a name="l00533"></a><span class="lineno">  533</span>         QWidget::setTabOrder(cv, commandLineEdit);</div>
-<div class="line"><a name="l00534"></a><span class="lineno">  534</span>         QWidget::setTabOrder(commandLineEdit, consoleEdit);</div>
-<div class="line"><a name="l00535"></a><span class="lineno">  535</span>         QWidget::setTabOrder(consoleEdit, tableView_labels);</div>
-<div class="line"><a name="l00536"></a><span class="lineno">  536</span>         QWidget::setTabOrder(tableView_labels, commandLinkButtonPrepareTable);</div>
-<div class="line"><a name="l00537"></a><span class="lineno">  537</span>         QWidget::setTabOrder(commandLinkButtonPrepareTable, pushButton_run);</div>
-<div class="line"><a name="l00538"></a><span class="lineno">  538</span>         QWidget::setTabOrder(pushButton_run, pushButton_restore);</div>
-<div class="line"><a name="l00539"></a><span class="lineno">  539</span> </div>
-<div class="line"><a name="l00540"></a><span class="lineno">  540</span>         menuBar->addAction(menuFile->menuAction());</div>
-<div class="line"><a name="l00541"></a><span class="lineno">  541</span>         menuFile->addAction(actionInput);</div>
-<div class="line"><a name="l00542"></a><span class="lineno">  542</span>         menuFile->addAction(actionTraining);</div>
-<div class="line"><a name="l00543"></a><span class="lineno">  543</span>         menuFile->addAction(actionMask);</div>
-<div class="line"><a name="l00544"></a><span class="lineno">  544</span>         menuFile->addAction(actionOutput);</div>
-<div class="line"><a name="l00545"></a><span class="lineno">  545</span>         menuFile->addAction(actionColor_table);</div>
-<div class="line"><a name="l00546"></a><span class="lineno">  546</span> </div>
-<div class="line"><a name="l00547"></a><span class="lineno">  547</span>         retranslateUi(MainWindow);</div>
-<div class="line"><a name="l00548"></a><span class="lineno">  548</span> </div>
-<div class="line"><a name="l00549"></a><span class="lineno">  549</span>         tabWidget->setCurrentIndex(0);</div>
-<div class="line"><a name="l00550"></a><span class="lineno">  550</span> </div>
-<div class="line"><a name="l00551"></a><span class="lineno">  551</span> </div>
-<div class="line"><a name="l00552"></a><span class="lineno">  552</span>         QMetaObject::connectSlotsByName(MainWindow);</div>
-<div class="line"><a name="l00553"></a><span class="lineno">  553</span>     } <span class="comment">// setupUi</span></div>
-<div class="line"><a name="l00554"></a><span class="lineno">  554</span> </div>
-<div class="line"><a name="l00555"></a><span class="lineno">  555</span>     <span class="keywordtype">void</span> retranslateUi(QMainWindow *MainWindow)</div>
-<div class="line"><a name="l00556"></a><span class="lineno">  556</span>     {</div>
-<div class="line"><a name="l00557"></a><span class="lineno">  557</span>         MainWindow->setWindowTitle(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"pksvm_gui"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00558"></a><span class="lineno">  558</span>         actionInput->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Input"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00559"></a><span class="lineno">  559</span>         actionInput->setShortcut(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Alt+I"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00560"></a><span class="lineno">  560</span>         actionTraining->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Training"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00561"></a><span class="lineno">  561</span>         actionTraining->setShortcut(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Alt+T"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00562"></a><span class="lineno">  562</span>         actionMask->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Mask"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00563"></a><span class="lineno">  563</span>         actionMask->setShortcut(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Alt+M"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00564"></a><span class="lineno">  564</span>         actionOutput->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00565"></a><span class="lineno">  565</span>         actionOutput->setShortcut(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Alt+O"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00566"></a><span class="lineno">  566</span>         actionColor_table->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Color table"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00567"></a><span class="lineno">  567</span>         actionColor_table->setShortcut(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Alt+C"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00568"></a><span class="lineno">  568</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00569"></a><span class="lineno">  569</span> <span class="preprocessor"></span>        label_2->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Attribute name of the class label in the training vector file (default is label)</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00570"></a><span class="lineno">  570</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span> <span class="preprocessor"></span>        label_2->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"attribute name for class label"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00572"></a><span class="lineno">  572</span>         toolButton_training->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00573"></a><span class="lineno">  573</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00574"></a><span class="lineno">  574</span> <span class="preprocessor"></span>        label_4->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>OGR supported vector file. Features must contain labels and band information. You can use pkextract to prepare training vector files</p></body></html>"</span>, 0,  [...]
-<div class="line"><a name="l00575"></a><span class="lineno">  575</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00576"></a><span class="lineno">  576</span> <span class="preprocessor"></span>        label_4->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Training vectorfile"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00577"></a><span class="lineno">  577</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00578"></a><span class="lineno">  578</span> <span class="preprocessor"></span>        label_20->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Provide number of classes in training file here to prepare class name-value pairs (push button prepare table). This is mandatory if labels in training vector are provided as text (inste [...]
-<div class="line"><a name="l00579"></a><span class="lineno">  579</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00580"></a><span class="lineno">  580</span> <span class="preprocessor"></span>        label_20->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"number of classes to prepare table"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00581"></a><span class="lineno">  581</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00582"></a><span class="lineno">  582</span> <span class="preprocessor"></span>        label_21->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Name of the training layer (optional). If not provided, all layers will be read per default.</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00583"></a><span class="lineno">  583</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00584"></a><span class="lineno">  584</span> <span class="preprocessor"></span>        label_21->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Training layername (optional)"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00585"></a><span class="lineno">  585</span>         commandLinkButtonPrepareTable->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"prepare table"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00586"></a><span class="lineno">  586</span>         label_17->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"class name-value pairs"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00587"></a><span class="lineno">  587</span>         tabWidget->setTabText(tabWidget->indexOf(tab), QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Training"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00588"></a><span class="lineno">  588</span>         label_14->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"msknodata"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00589"></a><span class="lineno">  589</span>         toolButton_input->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00590"></a><span class="lineno">  590</span>         label_16->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"nodata"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00591"></a><span class="lineno">  591</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00592"></a><span class="lineno">  592</span> <span class="preprocessor"></span>        label_13->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Dimensions of mask image must correspond to input image. Pixels in mask with values=masknodata are not classified and get nodata value.</p></body></html>"</span>, [...]
-<div class="line"><a name="l00593"></a><span class="lineno">  593</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00594"></a><span class="lineno">  594</span> <span class="preprocessor"></span>        label_13->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Mask image"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00595"></a><span class="lineno">  595</span>         toolButton_mask->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00596"></a><span class="lineno">  596</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00597"></a><span class="lineno">  597</span> <span class="preprocessor"></span>        label_15->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Output image (classified map). Can be OGR vector or GDAL raster, depending on input data.</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00598"></a><span class="lineno">  598</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00599"></a><span class="lineno">  599</span> <span class="preprocessor"></span>        label_15->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Output data"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00600"></a><span class="lineno">  600</span>         toolButton_output->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00601"></a><span class="lineno">  601</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00602"></a><span class="lineno">  602</span> <span class="preprocessor"></span>        label_3->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Input image. Both OGR vectors and GDAL rasters are supported. Number of bands must match those in training sample.</p></body></html>"</span>, 0, QApplication::Unic [...]
-<div class="line"><a name="l00603"></a><span class="lineno">  603</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00604"></a><span class="lineno">  604</span> <span class="preprocessor"></span>        label_3->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Input data"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00605"></a><span class="lineno">  605</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00606"></a><span class="lineno">  606</span> <span class="preprocessor"></span>        label_22->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Color table must be provided as ASCII text file with five (space delimited) columns:</p><p>value red green blue alpha<br/></p></body></html>"</s [...]
-<div class="line"><a name="l00607"></a><span class="lineno">  607</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00608"></a><span class="lineno">  608</span> <span class="preprocessor"></span>        label_22->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"color table"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00609"></a><span class="lineno">  609</span>         toolButton_ct->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"..."</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00610"></a><span class="lineno">  610</span>         tabWidget->setTabText(tabWidget->indexOf(tab_2), QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Input/Output"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00611"></a><span class="lineno">  611</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00612"></a><span class="lineno">  612</span> <span class="preprocessor"></span>        label_5->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Leave empty to skip cross validation. Enter 2 for a two-fold cross validation</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00613"></a><span class="lineno">  613</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00614"></a><span class="lineno">  614</span> <span class="preprocessor"></span>        label_5->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"n-fold cross validation"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00615"></a><span class="lineno">  615</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00616"></a><span class="lineno">  616</span> <span class="preprocessor"></span>        label_10->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>the parameter C of C_SVC, epsilon_SVR, and nu_SVR (default is 1)</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00617"></a><span class="lineno">  617</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00618"></a><span class="lineno">  618</span> <span class="preprocessor"></span>        label_10->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"CCost"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00619"></a><span class="lineno">  619</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00620"></a><span class="lineno">  620</span> <span class="preprocessor"></span>        label_11->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Coef0 in the kernel function (default is 0)</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00621"></a><span class="lineno">  621</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00622"></a><span class="lineno">  622</span> <span class="preprocessor"></span>        label_11->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Coef 0"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00623"></a><span class="lineno">  623</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00624"></a><span class="lineno">  624</span> <span class="preprocessor"></span>        label_6->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Type of the support vector machine</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00625"></a><span class="lineno">  625</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00626"></a><span class="lineno">  626</span> <span class="preprocessor"></span>        label_6->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"SVM type"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00627"></a><span class="lineno">  627</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00628"></a><span class="lineno">  628</span> <span class="preprocessor"></span>        label_7->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>type of kernel function (default is radial)</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00629"></a><span class="lineno">  629</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00630"></a><span class="lineno">  630</span> <span class="preprocessor"></span>        label_7->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Kernel type"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00631"></a><span class="lineno">  631</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00632"></a><span class="lineno">  632</span> <span class="preprocessor"></span>        label_9->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>gamma in kernel function (default is 0)</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00633"></a><span class="lineno">  633</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00634"></a><span class="lineno">  634</span> <span class="preprocessor"></span>        label_9->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Gamma"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00635"></a><span class="lineno">  635</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00636"></a><span class="lineno">  636</span> <span class="preprocessor"></span>        label_12->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>the parameter nu of nu_SVC, one_class SVM, and nu_SVR (default is 0.5)</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00637"></a><span class="lineno">  637</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00638"></a><span class="lineno">  638</span> <span class="preprocessor"></span>        label_12->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"nu"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00639"></a><span class="lineno">  639</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00640"></a><span class="lineno">  640</span> <span class="preprocessor"></span>        label_8->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>degree in kernel function (default is 3)</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00641"></a><span class="lineno">  641</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00642"></a><span class="lineno">  642</span> <span class="preprocessor"></span>        label_8->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Kernel degree"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00643"></a><span class="lineno">  643</span>         tabWidget->setTabText(tabWidget->indexOf(tab_3), QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Classifier"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00644"></a><span class="lineno">  644</span>         label_18->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Command line"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00645"></a><span class="lineno">  645</span>         label_19->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Console output"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00646"></a><span class="lineno">  646</span>         tabWidget->setTabText(tabWidget->indexOf(tab_4), QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Console"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00647"></a><span class="lineno">  647</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00648"></a><span class="lineno">  648</span> <span class="preprocessor"></span>        pushButton_run->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>Classify with current settings (check Console for output)</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00649"></a><span class="lineno">  649</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00650"></a><span class="lineno">  650</span> <span class="preprocessor"></span>        pushButton_run->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Run"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00651"></a><span class="lineno">  651</span> <span class="preprocessor">#ifndef QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00652"></a><span class="lineno">  652</span> <span class="preprocessor"></span>        pushButton_restore->setToolTip(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"<html><head/><body><p>reset all parameters to default</p></body></html>"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00653"></a><span class="lineno">  653</span> <span class="preprocessor">#endif // QT_NO_TOOLTIP</span></div>
-<div class="line"><a name="l00654"></a><span class="lineno">  654</span> <span class="preprocessor"></span>        pushButton_restore->setText(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"Restore defaults"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00655"></a><span class="lineno">  655</span>         menuFile->setTitle(QApplication::translate(<span class="stringliteral">"MainWindow"</span>, <span class="stringliteral">"File"</span>, 0, QApplication::UnicodeUTF8));</div>
-<div class="line"><a name="l00656"></a><span class="lineno">  656</span>     } <span class="comment">// retranslateUi</span></div>
-<div class="line"><a name="l00657"></a><span class="lineno">  657</span> </div>
-<div class="line"><a name="l00658"></a><span class="lineno">  658</span> };</div>
-<div class="line"><a name="l00659"></a><span class="lineno">  659</span> </div>
-<div class="line"><a name="l00660"></a><span class="lineno">  660</span> <span class="keyword">namespace </span>Ui {</div>
-<div class="line"><a name="l00661"></a><span class="lineno">  661</span>     <span class="keyword">class </span>MainWindow: <span class="keyword">public</span> <a class="code" href="classUi__MainWindow.html">Ui_MainWindow</a> {};</div>
-<div class="line"><a name="l00662"></a><span class="lineno">  662</span> } <span class="comment">// namespace Ui</span></div>
-<div class="line"><a name="l00663"></a><span class="lineno">  663</span> </div>
-<div class="line"><a name="l00664"></a><span class="lineno">  664</span> QT_END_NAMESPACE</div>
-<div class="line"><a name="l00665"></a><span class="lineno">  665</span> </div>
-<div class="line"><a name="l00666"></a><span class="lineno">  666</span> <span class="preprocessor">#endif // UI_MAINWINDOW_H</span></div>
-<div class="ttc" id="classUi__MainWindow_html"><div class="ttname"><a href="classUi__MainWindow.html">Ui_MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="build-pkcomposite__gui-gcc-Debug_2ui__mainwindow_8h_source.html#l00039">ui_mainwindow.h:39</a></div></div>
-<div class="ttc" id="classMainWindow_html"><div class="ttname"><a href="classMainWindow.html">MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite__gui_2mainwindow_8h_source.html#l00031">mainwindow.h:31</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classBadConversion-members.html b/doc/html/classBadConversion-members.html
deleted file mode 100644
index 4b8733c..0000000
--- a/doc/html/classBadConversion-members.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">BadConversion Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classBadConversion.html">BadConversion</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>BadConversion</b>(std::string const &s) (defined in <a class="el" href="classBadConversion.html">BadConversion</a>)</td><td class="entry"><a class="el" href="classBadConversion.html">BadConversion</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classBadConversion.html b/doc/html/classBadConversion.html
deleted file mode 100644
index c712b2d..0000000
--- a/doc/html/classBadConversion.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: BadConversion Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="classBadConversion-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">BadConversion Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>throw this class when syntax error in command line option  
- <a href="classBadConversion.html#details">More...</a></p>
-
-<p><code>#include <<a class="el" href="Optionpk_8h_source.html">Optionpk.h</a>></code></p>
-<div class="dynheader">
-Inheritance diagram for BadConversion:</div>
-<div class="dyncontent">
-<div class="center"><img src="classBadConversion__inherit__graph.png" border="0" usemap="#BadConversion_inherit__map" alt="Inheritance graph"/></div>
-<map name="BadConversion_inherit__map" id="BadConversion_inherit__map">
-<area shape="rect" id="node2" title="STL class. " alt="" coords="5,80,128,107"/><area shape="rect" id="node3" title="STL class. " alt="" coords="15,5,119,32"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for BadConversion:</div>
-<div class="dyncontent">
-<div class="center"><img src="classBadConversion__coll__graph.png" border="0" usemap="#BadConversion_coll__map" alt="Collaboration graph"/></div>
-<map name="BadConversion_coll__map" id="BadConversion_coll__map">
-<area shape="rect" id="node2" title="STL class. " alt="" coords="5,80,128,107"/><area shape="rect" id="node3" title="STL class. " alt="" coords="15,5,119,32"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a73af0a122dbd4dac93db57685b73c382"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a73af0a122dbd4dac93db57685b73c382"></a>
- </td><td class="memItemRight" valign="bottom"><b>BadConversion</b> (std::string const &s)</td></tr>
-<tr class="separator:a73af0a122dbd4dac93db57685b73c382"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>throw this class when syntax error in command line option </p>
-
-<p>Definition at line <a class="el" href="Optionpk_8h_source.html#l00045">45</a> of file <a class="el" href="Optionpk_8h_source.html">Optionpk.h</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/src/base/<a class="el" href="Optionpk_8h_source.html">Optionpk.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classBadConversion__coll__graph.map b/doc/html/classBadConversion__coll__graph.map
deleted file mode 100644
index 09c58e7..0000000
--- a/doc/html/classBadConversion__coll__graph.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="BadConversion" name="BadConversion">
-<area shape="rect" id="node2" title="STL class. " alt="" coords="5,80,128,107"/>
-<area shape="rect" id="node3" title="STL class. " alt="" coords="15,5,119,32"/>
-</map>
diff --git a/doc/html/classBadConversion__coll__graph.md5 b/doc/html/classBadConversion__coll__graph.md5
deleted file mode 100644
index 5213680..0000000
--- a/doc/html/classBadConversion__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-5b65c0253f2ad29e47793e73620a6377
\ No newline at end of file
diff --git a/doc/html/classBadConversion__coll__graph.png b/doc/html/classBadConversion__coll__graph.png
deleted file mode 100644
index a7b4f89..0000000
Binary files a/doc/html/classBadConversion__coll__graph.png and /dev/null differ
diff --git a/doc/html/classBadConversion__inherit__graph.map b/doc/html/classBadConversion__inherit__graph.map
deleted file mode 100644
index 09c58e7..0000000
--- a/doc/html/classBadConversion__inherit__graph.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="BadConversion" name="BadConversion">
-<area shape="rect" id="node2" title="STL class. " alt="" coords="5,80,128,107"/>
-<area shape="rect" id="node3" title="STL class. " alt="" coords="15,5,119,32"/>
-</map>
diff --git a/doc/html/classBadConversion__inherit__graph.md5 b/doc/html/classBadConversion__inherit__graph.md5
deleted file mode 100644
index 5213680..0000000
--- a/doc/html/classBadConversion__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-5b65c0253f2ad29e47793e73620a6377
\ No newline at end of file
diff --git a/doc/html/classBadConversion__inherit__graph.png b/doc/html/classBadConversion__inherit__graph.png
deleted file mode 100644
index a7b4f89..0000000
Binary files a/doc/html/classBadConversion__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classCache-members.html b/doc/html/classCache-members.html
deleted file mode 100644
index ae3e3b6..0000000
--- a/doc/html/classCache-members.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">Cache Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classCache.html">Cache</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Cache</b>(int l, long int size) (defined in <a class="el" href="classCache.html">Cache</a>)</td><td class="entry"><a class="el" href="classCache.html">Cache</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>get_data</b>(const int index, Qfloat **data, int len) (defined in <a class="el" href="classCache.html">Cache</a>)</td><td class="entry"><a class="el" href="classCache.html">Cache</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>swap_index</b>(int i, int j) (defined in <a class="el" href="classCache.html">Cache</a>)</td><td class="entry"><a class="el" href="classCache.html">Cache</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~Cache</b>() (defined in <a class="el" href="classCache.html">Cache</a>)</td><td class="entry"><a class="el" href="classCache.html">Cache</a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classCache.html b/doc/html/classCache.html
deleted file mode 100644
index a48031f..0000000
--- a/doc/html/classCache.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Cache Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Classes</a> |
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="classCache-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">Cache Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a2823f543d4f9b92c29472b904961afe1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2823f543d4f9b92c29472b904961afe1"></a>
- </td><td class="memItemRight" valign="bottom"><b>Cache</b> (int l, long int size)</td></tr>
-<tr class="separator:a2823f543d4f9b92c29472b904961afe1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aca49263fb34641e208884cc223b25317"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aca49263fb34641e208884cc223b25317"></a>
-int </td><td class="memItemRight" valign="bottom"><b>get_data</b> (const int index, Qfloat **data, int len)</td></tr>
-<tr class="separator:aca49263fb34641e208884cc223b25317"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aaff2dc955f9492c044c98a5f09cfddcc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaff2dc955f9492c044c98a5f09cfddcc"></a>
-void </td><td class="memItemRight" valign="bottom"><b>swap_index</b> (int i, int j)</td></tr>
-<tr class="separator:aaff2dc955f9492c044c98a5f09cfddcc"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="svm_8cpp_source.html#l00069">69</a> of file <a class="el" href="svm_8cpp_source.html">svm.cpp</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/src/algorithms/<a class="el" href="svm_8cpp_source.html">svm.cpp</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classCompare__IndexValue-members.html b/doc/html/classCompare__IndexValue-members.html
deleted file mode 100644
index 7bc5795..0000000
--- a/doc/html/classCompare__IndexValue-members.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">Compare_IndexValue Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classCompare__IndexValue.html">Compare_IndexValue</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator()</b>(const IndexValue &pv1, const IndexValue &pv2) const  (defined in <a class="el" href="classCompare__IndexValue.html">Compare_IndexValue</a>)</td><td class="entry"><a class="el" href="classCompare__IndexValue.html">Compare_IndexValue</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classCompare__IndexValue.html b/doc/html/classCompare__IndexValue.html
deleted file mode 100644
index 7ab25fd..0000000
--- a/doc/html/classCompare__IndexValue.html
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Compare_IndexValue Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="classCompare__IndexValue-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">Compare_IndexValue Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a1e7dff19b2ca71bcd4741f1269120341"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1e7dff19b2ca71bcd4741f1269120341"></a>
-int </td><td class="memItemRight" valign="bottom"><b>operator()</b> (const <a class="el" href="structIndexValue.html">IndexValue</a> &pv1, const <a class="el" href="structIndexValue.html">IndexValue</a> &pv2) const </td></tr>
-<tr class="separator:a1e7dff19b2ca71bcd4741f1269120341"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="IndexValue_8h_source.html#l00027">27</a> of file <a class="el" href="IndexValue_8h_source.html">IndexValue.h</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/src/base/<a class="el" href="IndexValue_8h_source.html">IndexValue.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classCompare__PosValue-members.html b/doc/html/classCompare__PosValue-members.html
deleted file mode 100644
index 44157c6..0000000
--- a/doc/html/classCompare__PosValue-members.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">Compare_PosValue Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classCompare__PosValue.html">Compare_PosValue</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator()</b>(const PosValue &pv1, const PosValue &pv2) const  (defined in <a class="el" href="classCompare__PosValue.html">Compare_PosValue</a>)</td><td class="entry"><a class="el" href="classCompare__PosValue.html">Compare_PosValue</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classCompare__PosValue.html b/doc/html/classCompare__PosValue.html
deleted file mode 100644
index 2698678..0000000
--- a/doc/html/classCompare__PosValue.html
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Compare_PosValue Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="classCompare__PosValue-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">Compare_PosValue Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:ad58e11aaef79b96e4525a01f57d9c787"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad58e11aaef79b96e4525a01f57d9c787"></a>
-int </td><td class="memItemRight" valign="bottom"><b>operator()</b> (const <a class="el" href="structPosValue.html">PosValue</a> &pv1, const <a class="el" href="structPosValue.html">PosValue</a> &pv2) const </td></tr>
-<tr class="separator:ad58e11aaef79b96e4525a01f57d9c787"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="PosValue_8h_source.html#l00028">28</a> of file <a class="el" href="PosValue_8h_source.html">PosValue.h</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/src/base/<a class="el" href="PosValue_8h_source.html">PosValue.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classCostFactory-members.html b/doc/html/classCostFactory-members.html
deleted file mode 100644
index c14336d..0000000
--- a/doc/html/classCostFactory-members.html
+++ /dev/null
@@ -1,96 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">CostFactory Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classCostFactory.html">CostFactory</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>CostFactory</b>(void) (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>CostFactory</b>(unsigned short cv, short verbose) (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getClassIndex</b>(std::string classname) const  (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getClassValueMap</b>() (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getCost</b>(const std::vector< Vector2d< float > > &trainingFeatures)=0 (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getNameVector</b>() (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_classvalue</b> (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_classValueMap</b> (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_cm</b> (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_cv</b> (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_nameVector</b> (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_nctest</b> (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_nctraining</b> (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_verbose</b> (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pushBackClassName</b>(std::string classname) (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>pushBackName</b>(std::string classname) (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setClassValueMap</b>(const std::string &classname, short classvalue) (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setCv</b>(unsigned short cv) (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setNameVector</b>(std::vector< std::string > &nameVector) (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setNcTest</b>(const std::vector< unsigned int > nctest) (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setNcTraining</b>(const std::vector< unsigned int > nctraining) (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~CostFactory</b>(void) (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classCostFactory.html b/doc/html/classCostFactory.html
deleted file mode 100644
index 10a9eba..0000000
--- a/doc/html/classCostFactory.html
+++ /dev/null
@@ -1,162 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: CostFactory Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-attribs">Protected Attributes</a> |
-<a href="classCostFactory-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">CostFactory Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for CostFactory:</div>
-<div class="dyncontent">
-<div class="center"><img src="classCostFactory__inherit__graph.png" border="0" usemap="#CostFactory_inherit__map" alt="Inheritance graph"/></div>
-<map name="CostFactory_inherit__map" id="CostFactory_inherit__map">
-<area shape="rect" id="node2" href="classCostFactoryANN.html" title="CostFactoryANN" alt="" coords="5,80,128,107"/><area shape="rect" id="node3" href="classCostFactorySVM.html" title="CostFactorySVM" alt="" coords="152,80,275,107"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for CostFactory:</div>
-<div class="dyncontent">
-<div class="center"><img src="classCostFactory__coll__graph.png" border="0" usemap="#CostFactory_coll__map" alt="Collaboration graph"/></div>
-<map name="CostFactory_coll__map" id="CostFactory_coll__map">
-<area shape="rect" id="node2" href="classconfusionmatrix_1_1ConfusionMatrix.html" title="confusionmatrix::Confusion\lMatrix" alt="" coords="371,5,552,46"/><area shape="rect" id="node4" title="STL class. " alt="" coords="184,105,264,132"/><area shape="rect" id="node5" title="STL class. " alt="" coords="6,98,133,139"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a1faae7dd8250f4081c0b82bd0d1db77b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1faae7dd8250f4081c0b82bd0d1db77b"></a>
- </td><td class="memItemRight" valign="bottom"><b>CostFactory</b> (unsigned short cv, short verbose)</td></tr>
-<tr class="separator:a1faae7dd8250f4081c0b82bd0d1db77b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a502c08202652a6958a103ec8d9805584"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a502c08202652a6958a103ec8d9805584"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setCv</b> (unsigned short cv)</td></tr>
-<tr class="separator:a502c08202652a6958a103ec8d9805584"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6a8ac2891561a0dfec6a088891e6a089"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6a8ac2891561a0dfec6a088891e6a089"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setClassValueMap</b> (const std::string &classname, short classvalue)</td></tr>
-<tr class="separator:a6a8ac2891561a0dfec6a088891e6a089"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a62e43cc3d6c4dada3d88888f86e5d5a1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a62e43cc3d6c4dada3d88888f86e5d5a1"></a>
-std::map< std::string, short > </td><td class="memItemRight" valign="bottom"><b>getClassValueMap</b> ()</td></tr>
-<tr class="separator:a62e43cc3d6c4dada3d88888f86e5d5a1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aacf749bf116de886d266d0d9a09cb735"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aacf749bf116de886d266d0d9a09cb735"></a>
-std::vector< std::string > </td><td class="memItemRight" valign="bottom"><b>getNameVector</b> ()</td></tr>
-<tr class="separator:aacf749bf116de886d266d0d9a09cb735"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab3e7a1cd24c75232d74811f13ef054b0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab3e7a1cd24c75232d74811f13ef054b0"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setNameVector</b> (std::vector< std::string > &nameVector)</td></tr>
-<tr class="separator:ab3e7a1cd24c75232d74811f13ef054b0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1df5bd24ca7607e7dc9ca167cf133bf8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1df5bd24ca7607e7dc9ca167cf133bf8"></a>
-int </td><td class="memItemRight" valign="bottom"><b>getClassIndex</b> (std::string classname) const </td></tr>
-<tr class="separator:a1df5bd24ca7607e7dc9ca167cf133bf8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5b5229bb505dffaaf8ade1fbff5232a4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5b5229bb505dffaaf8ade1fbff5232a4"></a>
-void </td><td class="memItemRight" valign="bottom"><b>pushBackClassName</b> (std::string classname)</td></tr>
-<tr class="separator:a5b5229bb505dffaaf8ade1fbff5232a4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8f8138c0dd3352a138cadf097a035ef9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8f8138c0dd3352a138cadf097a035ef9"></a>
-void </td><td class="memItemRight" valign="bottom"><b>pushBackName</b> (std::string classname)</td></tr>
-<tr class="separator:a8f8138c0dd3352a138cadf097a035ef9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad7866aa98fbc61d2e14a6e400a978abe"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad7866aa98fbc61d2e14a6e400a978abe"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setNcTraining</b> (const std::vector< unsigned int > nctraining)</td></tr>
-<tr class="separator:ad7866aa98fbc61d2e14a6e400a978abe"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a85436b545d7aac6780097fe0624d5713"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a85436b545d7aac6780097fe0624d5713"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setNcTest</b> (const std::vector< unsigned int > nctest)</td></tr>
-<tr class="separator:a85436b545d7aac6780097fe0624d5713"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa0653d0ef8b209f09ce89d27fecfd8a5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa0653d0ef8b209f09ce89d27fecfd8a5"></a>
-virtual double </td><td class="memItemRight" valign="bottom"><b>getCost</b> (const std::vector< <a class="el" href="classVector2d.html">Vector2d</a>< float > > &trainingFeatures)=0</td></tr>
-<tr class="separator:aa0653d0ef8b209f09ce89d27fecfd8a5"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
-Protected Attributes</h2></td></tr>
-<tr class="memitem:aa0bc9633caa3b8ffbc06a620f47bdbb5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa0bc9633caa3b8ffbc06a620f47bdbb5"></a>
-<a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a> </td><td class="memItemRight" valign="bottom"><b>m_cm</b></td></tr>
-<tr class="separator:aa0bc9633caa3b8ffbc06a620f47bdbb5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abbd6ac034f26cb6afcb2fd83bc030d43"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abbd6ac034f26cb6afcb2fd83bc030d43"></a>
-std::map< std::string, short > </td><td class="memItemRight" valign="bottom"><b>m_classValueMap</b></td></tr>
-<tr class="separator:abbd6ac034f26cb6afcb2fd83bc030d43"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6eb84c840346b10c8c6f2a554d186675"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6eb84c840346b10c8c6f2a554d186675"></a>
-std::vector< std::string > </td><td class="memItemRight" valign="bottom"><b>m_nameVector</b></td></tr>
-<tr class="separator:a6eb84c840346b10c8c6f2a554d186675"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a98bd6d2bb062a5022fbd14692555f21d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a98bd6d2bb062a5022fbd14692555f21d"></a>
-std::vector< unsigned int > </td><td class="memItemRight" valign="bottom"><b>m_nctraining</b></td></tr>
-<tr class="separator:a98bd6d2bb062a5022fbd14692555f21d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae6f79856efd1f7fe362374782d191303"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae6f79856efd1f7fe362374782d191303"></a>
-std::vector< unsigned int > </td><td class="memItemRight" valign="bottom"><b>m_nctest</b></td></tr>
-<tr class="separator:ae6f79856efd1f7fe362374782d191303"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a430926a8c75e6245b192a45deeef4ae7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a430926a8c75e6245b192a45deeef4ae7"></a>
-unsigned short </td><td class="memItemRight" valign="bottom"><b>m_cv</b></td></tr>
-<tr class="separator:a430926a8c75e6245b192a45deeef4ae7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a38fd70589633f9c96710c510814a610f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a38fd70589633f9c96710c510814a610f"></a>
-short </td><td class="memItemRight" valign="bottom"><b>m_classvalue</b></td></tr>
-<tr class="separator:a38fd70589633f9c96710c510814a610f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7ba96c1639a8dc080f704c64627de65b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7ba96c1639a8dc080f704c64627de65b"></a>
-short </td><td class="memItemRight" valign="bottom"><b>m_verbose</b></td></tr>
-<tr class="separator:a7ba96c1639a8dc080f704c64627de65b"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="CostFactory_8h_source.html#l00030">30</a> of file <a class="el" href="CostFactory_8h_source.html">CostFactory.h</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/src/algorithms/<a class="el" href="CostFactory_8h_source.html">CostFactory.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classCostFactoryANN-members.html b/doc/html/classCostFactoryANN-members.html
deleted file mode 100644
index d769a4f..0000000
--- a/doc/html/classCostFactoryANN-members.html
+++ /dev/null
@@ -1,99 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">CostFactoryANN Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classCostFactoryANN.html">CostFactoryANN</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>CostFactory</b>(void) (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>CostFactory</b>(unsigned short cv, short verbose) (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>CostFactoryANN</b>() (defined in <a class="el" href="classCostFactoryANN.html">CostFactoryANN</a>)</td><td class="entry"><a class="el" href="classCostFactoryANN.html">CostFactoryANN</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>CostFactoryANN</b>(const std::vector< unsigned int > &nneuron, float connection, const std::vector< float > weights, float learning, unsigned int maxit, unsigned short cv, bool verbose) (defined in <a class="el" href="classCostFactoryANN.html">CostFactoryANN</a>)</td><td class="entry"><a class="el" href="classCostFactoryANN.html">CostFactoryANN</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getClassIndex</b>(std::string classname) const  (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getClassValueMap</b>() (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getCost</b>(const std::vector< Vector2d< float > > &trainingFeatures) (defined in <a class="el" href="classCostFactoryANN.html">CostFactoryANN</a>)</td><td class="entry"><a class="el" href="classCostFactoryANN.html">CostFactoryANN</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getNameVector</b>() (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_classvalue</b> (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_classValueMap</b> (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_cm</b> (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_cv</b> (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_nameVector</b> (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_nctest</b> (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_nctraining</b> (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_verbose</b> (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pushBackClassName</b>(std::string classname) (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>pushBackName</b>(std::string classname) (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setClassValueMap</b>(const std::string &classname, short classvalue) (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setCv</b>(unsigned short cv) (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setNameVector</b>(std::vector< std::string > &nameVector) (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setNcTest</b>(const std::vector< unsigned int > nctest) (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setNcTraining</b>(const std::vector< unsigned int > nctraining) (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~CostFactory</b>(void) (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~CostFactoryANN</b>() (defined in <a class="el" href="classCostFactoryANN.html">CostFactoryANN</a>)</td><td class="entry"><a class="el" href="classCostFactoryANN.html">CostFactoryANN</a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classCostFactoryANN.html b/doc/html/classCostFactoryANN.html
deleted file mode 100644
index aa47b9b..0000000
--- a/doc/html/classCostFactoryANN.html
+++ /dev/null
@@ -1,167 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: CostFactoryANN Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="classCostFactoryANN-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">CostFactoryANN Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for CostFactoryANN:</div>
-<div class="dyncontent">
-<div class="center"><img src="classCostFactoryANN__inherit__graph.png" border="0" usemap="#CostFactoryANN_inherit__map" alt="Inheritance graph"/></div>
-<map name="CostFactoryANN_inherit__map" id="CostFactoryANN_inherit__map">
-<area shape="rect" id="node2" href="classCostFactory.html" title="CostFactory" alt="" coords="19,5,113,32"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for CostFactoryANN:</div>
-<div class="dyncontent">
-<div class="center"><img src="classCostFactoryANN__coll__graph.png" border="0" usemap="#CostFactoryANN_coll__map" alt="Collaboration graph"/></div>
-<map name="CostFactoryANN_coll__map" id="CostFactoryANN_coll__map">
-<area shape="rect" id="node2" href="classCostFactory.html" title="CostFactory" alt="" coords="713,107,807,133"/><area shape="rect" id="node3" href="classconfusionmatrix_1_1ConfusionMatrix.html" title="confusionmatrix::Confusion\lMatrix" alt="" coords="371,5,552,46"/><area shape="rect" id="node5" title="STL class. " alt="" coords="184,105,264,132"/><area shape="rect" id="node6" title="STL class. " alt="" coords="6,98,133,139"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:acdb6382db22a5e246f91c0a24493724f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acdb6382db22a5e246f91c0a24493724f"></a>
- </td><td class="memItemRight" valign="bottom"><b>CostFactoryANN</b> (const std::vector< unsigned int > &nneuron, float connection, const std::vector< float > weights, float learning, unsigned int maxit, unsigned short cv, bool verbose)</td></tr>
-<tr class="separator:acdb6382db22a5e246f91c0a24493724f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab63be8d46b9cb4d9183f714636a846ee"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab63be8d46b9cb4d9183f714636a846ee"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getCost</b> (const std::vector< <a class="el" href="classVector2d.html">Vector2d</a>< float > > &trainingFeatures)</td></tr>
-<tr class="separator:ab63be8d46b9cb4d9183f714636a846ee"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_classCostFactory"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classCostFactory')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="classCostFactory.html">CostFactory</a></td></tr>
-<tr class="memitem:a1faae7dd8250f4081c0b82bd0d1db77b inherit pub_methods_classCostFactory"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1faae7dd8250f4081c0b82bd0d1db77b"></a>
- </td><td class="memItemRight" valign="bottom"><b>CostFactory</b> (unsigned short cv, short verbose)</td></tr>
-<tr class="separator:a1faae7dd8250f4081c0b82bd0d1db77b inherit pub_methods_classCostFactory"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a502c08202652a6958a103ec8d9805584 inherit pub_methods_classCostFactory"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a502c08202652a6958a103ec8d9805584"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setCv</b> (unsigned short cv)</td></tr>
-<tr class="separator:a502c08202652a6958a103ec8d9805584 inherit pub_methods_classCostFactory"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6a8ac2891561a0dfec6a088891e6a089 inherit pub_methods_classCostFactory"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6a8ac2891561a0dfec6a088891e6a089"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setClassValueMap</b> (const std::string &classname, short classvalue)</td></tr>
-<tr class="separator:a6a8ac2891561a0dfec6a088891e6a089 inherit pub_methods_classCostFactory"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a62e43cc3d6c4dada3d88888f86e5d5a1 inherit pub_methods_classCostFactory"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a62e43cc3d6c4dada3d88888f86e5d5a1"></a>
-std::map< std::string, short > </td><td class="memItemRight" valign="bottom"><b>getClassValueMap</b> ()</td></tr>
-<tr class="separator:a62e43cc3d6c4dada3d88888f86e5d5a1 inherit pub_methods_classCostFactory"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aacf749bf116de886d266d0d9a09cb735 inherit pub_methods_classCostFactory"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aacf749bf116de886d266d0d9a09cb735"></a>
-std::vector< std::string > </td><td class="memItemRight" valign="bottom"><b>getNameVector</b> ()</td></tr>
-<tr class="separator:aacf749bf116de886d266d0d9a09cb735 inherit pub_methods_classCostFactory"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab3e7a1cd24c75232d74811f13ef054b0 inherit pub_methods_classCostFactory"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab3e7a1cd24c75232d74811f13ef054b0"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setNameVector</b> (std::vector< std::string > &nameVector)</td></tr>
-<tr class="separator:ab3e7a1cd24c75232d74811f13ef054b0 inherit pub_methods_classCostFactory"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1df5bd24ca7607e7dc9ca167cf133bf8 inherit pub_methods_classCostFactory"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1df5bd24ca7607e7dc9ca167cf133bf8"></a>
-int </td><td class="memItemRight" valign="bottom"><b>getClassIndex</b> (std::string classname) const </td></tr>
-<tr class="separator:a1df5bd24ca7607e7dc9ca167cf133bf8 inherit pub_methods_classCostFactory"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5b5229bb505dffaaf8ade1fbff5232a4 inherit pub_methods_classCostFactory"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5b5229bb505dffaaf8ade1fbff5232a4"></a>
-void </td><td class="memItemRight" valign="bottom"><b>pushBackClassName</b> (std::string classname)</td></tr>
-<tr class="separator:a5b5229bb505dffaaf8ade1fbff5232a4 inherit pub_methods_classCostFactory"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8f8138c0dd3352a138cadf097a035ef9 inherit pub_methods_classCostFactory"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8f8138c0dd3352a138cadf097a035ef9"></a>
-void </td><td class="memItemRight" valign="bottom"><b>pushBackName</b> (std::string classname)</td></tr>
-<tr class="separator:a8f8138c0dd3352a138cadf097a035ef9 inherit pub_methods_classCostFactory"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad7866aa98fbc61d2e14a6e400a978abe inherit pub_methods_classCostFactory"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad7866aa98fbc61d2e14a6e400a978abe"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setNcTraining</b> (const std::vector< unsigned int > nctraining)</td></tr>
-<tr class="separator:ad7866aa98fbc61d2e14a6e400a978abe inherit pub_methods_classCostFactory"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a85436b545d7aac6780097fe0624d5713 inherit pub_methods_classCostFactory"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a85436b545d7aac6780097fe0624d5713"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setNcTest</b> (const std::vector< unsigned int > nctest)</td></tr>
-<tr class="separator:a85436b545d7aac6780097fe0624d5713 inherit pub_methods_classCostFactory"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
-Additional Inherited Members</h2></td></tr>
-<tr class="inherit_header pro_attribs_classCostFactory"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classCostFactory')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="classCostFactory.html">CostFactory</a></td></tr>
-<tr class="memitem:aa0bc9633caa3b8ffbc06a620f47bdbb5 inherit pro_attribs_classCostFactory"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa0bc9633caa3b8ffbc06a620f47bdbb5"></a>
-<a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a> </td><td class="memItemRight" valign="bottom"><b>m_cm</b></td></tr>
-<tr class="separator:aa0bc9633caa3b8ffbc06a620f47bdbb5 inherit pro_attribs_classCostFactory"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abbd6ac034f26cb6afcb2fd83bc030d43 inherit pro_attribs_classCostFactory"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abbd6ac034f26cb6afcb2fd83bc030d43"></a>
-std::map< std::string, short > </td><td class="memItemRight" valign="bottom"><b>m_classValueMap</b></td></tr>
-<tr class="separator:abbd6ac034f26cb6afcb2fd83bc030d43 inherit pro_attribs_classCostFactory"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6eb84c840346b10c8c6f2a554d186675 inherit pro_attribs_classCostFactory"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6eb84c840346b10c8c6f2a554d186675"></a>
-std::vector< std::string > </td><td class="memItemRight" valign="bottom"><b>m_nameVector</b></td></tr>
-<tr class="separator:a6eb84c840346b10c8c6f2a554d186675 inherit pro_attribs_classCostFactory"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a98bd6d2bb062a5022fbd14692555f21d inherit pro_attribs_classCostFactory"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a98bd6d2bb062a5022fbd14692555f21d"></a>
-std::vector< unsigned int > </td><td class="memItemRight" valign="bottom"><b>m_nctraining</b></td></tr>
-<tr class="separator:a98bd6d2bb062a5022fbd14692555f21d inherit pro_attribs_classCostFactory"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae6f79856efd1f7fe362374782d191303 inherit pro_attribs_classCostFactory"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae6f79856efd1f7fe362374782d191303"></a>
-std::vector< unsigned int > </td><td class="memItemRight" valign="bottom"><b>m_nctest</b></td></tr>
-<tr class="separator:ae6f79856efd1f7fe362374782d191303 inherit pro_attribs_classCostFactory"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a430926a8c75e6245b192a45deeef4ae7 inherit pro_attribs_classCostFactory"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a430926a8c75e6245b192a45deeef4ae7"></a>
-unsigned short </td><td class="memItemRight" valign="bottom"><b>m_cv</b></td></tr>
-<tr class="separator:a430926a8c75e6245b192a45deeef4ae7 inherit pro_attribs_classCostFactory"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a38fd70589633f9c96710c510814a610f inherit pro_attribs_classCostFactory"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a38fd70589633f9c96710c510814a610f"></a>
-short </td><td class="memItemRight" valign="bottom"><b>m_classvalue</b></td></tr>
-<tr class="separator:a38fd70589633f9c96710c510814a610f inherit pro_attribs_classCostFactory"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7ba96c1639a8dc080f704c64627de65b inherit pro_attribs_classCostFactory"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7ba96c1639a8dc080f704c64627de65b"></a>
-short </td><td class="memItemRight" valign="bottom"><b>m_verbose</b></td></tr>
-<tr class="separator:a7ba96c1639a8dc080f704c64627de65b inherit pro_attribs_classCostFactory"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="pkfsann_8h_source.html#l00029">29</a> of file <a class="el" href="pkfsann_8h_source.html">pkfsann.h</a>.</p>
-</div><hr/>The documentation for this class was generated from the following files:<ul>
-<li>/home/kempenep/pktools/src/apps/<a class="el" href="pkfsann_8h_source.html">pkfsann.h</a></li>
-<li>/home/kempenep/pktools/src/apps/<a class="el" href="pkfsann_8cc_source.html">pkfsann.cc</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classCostFactoryANN__coll__graph.map b/doc/html/classCostFactoryANN__coll__graph.map
deleted file mode 100644
index 0776f52..0000000
--- a/doc/html/classCostFactoryANN__coll__graph.map
+++ /dev/null
@@ -1,6 +0,0 @@
-<map id="CostFactoryANN" name="CostFactoryANN">
-<area shape="rect" id="node2" href="$classCostFactory.html" title="CostFactory" alt="" coords="713,107,807,133"/>
-<area shape="rect" id="node3" href="$classconfusionmatrix_1_1ConfusionMatrix.html" title="confusionmatrix::Confusion\lMatrix" alt="" coords="371,5,552,46"/>
-<area shape="rect" id="node5" title="STL class. " alt="" coords="184,105,264,132"/>
-<area shape="rect" id="node6" title="STL class. " alt="" coords="6,98,133,139"/>
-</map>
diff --git a/doc/html/classCostFactoryANN__coll__graph.md5 b/doc/html/classCostFactoryANN__coll__graph.md5
deleted file mode 100644
index 6eb1434..0000000
--- a/doc/html/classCostFactoryANN__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-529bf65d909c3f3b9209991505bd110b
\ No newline at end of file
diff --git a/doc/html/classCostFactoryANN__coll__graph.png b/doc/html/classCostFactoryANN__coll__graph.png
deleted file mode 100644
index 8d1458a..0000000
Binary files a/doc/html/classCostFactoryANN__coll__graph.png and /dev/null differ
diff --git a/doc/html/classCostFactoryANN__inherit__graph.map b/doc/html/classCostFactoryANN__inherit__graph.map
deleted file mode 100644
index 943da9d..0000000
--- a/doc/html/classCostFactoryANN__inherit__graph.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="CostFactoryANN" name="CostFactoryANN">
-<area shape="rect" id="node2" href="$classCostFactory.html" title="CostFactory" alt="" coords="19,5,113,32"/>
-</map>
diff --git a/doc/html/classCostFactoryANN__inherit__graph.md5 b/doc/html/classCostFactoryANN__inherit__graph.md5
deleted file mode 100644
index ed9945b..0000000
--- a/doc/html/classCostFactoryANN__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-14378ff104c000911bb9b98090600132
\ No newline at end of file
diff --git a/doc/html/classCostFactoryANN__inherit__graph.png b/doc/html/classCostFactoryANN__inherit__graph.png
deleted file mode 100644
index 5b59045..0000000
Binary files a/doc/html/classCostFactoryANN__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classCostFactorySVM-members.html b/doc/html/classCostFactorySVM-members.html
deleted file mode 100644
index cab37c1..0000000
--- a/doc/html/classCostFactorySVM-members.html
+++ /dev/null
@@ -1,99 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">CostFactorySVM Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classCostFactorySVM.html">CostFactorySVM</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>CostFactory</b>(void) (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>CostFactory</b>(unsigned short cv, short verbose) (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>CostFactorySVM</b>() (defined in <a class="el" href="classCostFactorySVM.html">CostFactorySVM</a>)</td><td class="entry"><a class="el" href="classCostFactorySVM.html">CostFactorySVM</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>CostFactorySVM</b>(std::string svm_type, std::string kernel_type, unsigned short kernel_degree, float gamma, float coef0, float ccost, float nu, float epsilon_loss, int cache, float epsilon_tol, bool shrinking, bool prob_est, unsigned short cv, short verbose) (defined in <a class="el" href="classCostFactorySVM.html">CostFactorySVM</a>)</td><td class="entry"><a class="el" href="classCostFactorySVM.html">CostFactorySVM</a></td><td class="entry"> [...]
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getClassIndex</b>(std::string classname) const  (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getClassValueMap</b>() (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getCost</b>(const std::vector< Vector2d< float > > &trainingFeatures) (defined in <a class="el" href="classCostFactorySVM.html">CostFactorySVM</a>)</td><td class="entry"><a class="el" href="classCostFactorySVM.html">CostFactorySVM</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getNameVector</b>() (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_classvalue</b> (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_classValueMap</b> (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_cm</b> (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_cv</b> (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_nameVector</b> (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_nctest</b> (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_nctraining</b> (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_verbose</b> (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pushBackClassName</b>(std::string classname) (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>pushBackName</b>(std::string classname) (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setClassValueMap</b>(const std::string &classname, short classvalue) (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setCv</b>(unsigned short cv) (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setNameVector</b>(std::vector< std::string > &nameVector) (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setNcTest</b>(const std::vector< unsigned int > nctest) (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setNcTraining</b>(const std::vector< unsigned int > nctraining) (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~CostFactory</b>(void) (defined in <a class="el" href="classCostFactory.html">CostFactory</a>)</td><td class="entry"><a class="el" href="classCostFactory.html">CostFactory</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~CostFactorySVM</b>() (defined in <a class="el" href="classCostFactorySVM.html">CostFactorySVM</a>)</td><td class="entry"><a class="el" href="classCostFactorySVM.html">CostFactorySVM</a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classCostFactorySVM.html b/doc/html/classCostFactorySVM.html
deleted file mode 100644
index 3799abc..0000000
--- a/doc/html/classCostFactorySVM.html
+++ /dev/null
@@ -1,167 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: CostFactorySVM Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="classCostFactorySVM-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">CostFactorySVM Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for CostFactorySVM:</div>
-<div class="dyncontent">
-<div class="center"><img src="classCostFactorySVM__inherit__graph.png" border="0" usemap="#CostFactorySVM_inherit__map" alt="Inheritance graph"/></div>
-<map name="CostFactorySVM_inherit__map" id="CostFactorySVM_inherit__map">
-<area shape="rect" id="node2" href="classCostFactory.html" title="CostFactory" alt="" coords="19,5,113,32"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for CostFactorySVM:</div>
-<div class="dyncontent">
-<div class="center"><img src="classCostFactorySVM__coll__graph.png" border="0" usemap="#CostFactorySVM_coll__map" alt="Collaboration graph"/></div>
-<map name="CostFactorySVM_coll__map" id="CostFactorySVM_coll__map">
-<area shape="rect" id="node2" href="classCostFactory.html" title="CostFactory" alt="" coords="713,107,807,133"/><area shape="rect" id="node3" href="classconfusionmatrix_1_1ConfusionMatrix.html" title="confusionmatrix::Confusion\lMatrix" alt="" coords="371,5,552,46"/><area shape="rect" id="node5" title="STL class. " alt="" coords="184,105,264,132"/><area shape="rect" id="node6" title="STL class. " alt="" coords="6,98,133,139"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a9096f0b33d455d0a580038fd9adf5931"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9096f0b33d455d0a580038fd9adf5931"></a>
- </td><td class="memItemRight" valign="bottom"><b>CostFactorySVM</b> (std::string svm_type, std::string kernel_type, unsigned short kernel_degree, float gamma, float coef0, float ccost, float nu, float epsilon_loss, int cache, float epsilon_tol, bool shrinking, bool prob_est, unsigned short cv, short verbose)</td></tr>
-<tr class="separator:a9096f0b33d455d0a580038fd9adf5931"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab17b6f6b6d3583232404f28c5cf95003"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab17b6f6b6d3583232404f28c5cf95003"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getCost</b> (const std::vector< <a class="el" href="classVector2d.html">Vector2d</a>< float > > &trainingFeatures)</td></tr>
-<tr class="separator:ab17b6f6b6d3583232404f28c5cf95003"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_classCostFactory"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classCostFactory')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="classCostFactory.html">CostFactory</a></td></tr>
-<tr class="memitem:a1faae7dd8250f4081c0b82bd0d1db77b inherit pub_methods_classCostFactory"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1faae7dd8250f4081c0b82bd0d1db77b"></a>
- </td><td class="memItemRight" valign="bottom"><b>CostFactory</b> (unsigned short cv, short verbose)</td></tr>
-<tr class="separator:a1faae7dd8250f4081c0b82bd0d1db77b inherit pub_methods_classCostFactory"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a502c08202652a6958a103ec8d9805584 inherit pub_methods_classCostFactory"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a502c08202652a6958a103ec8d9805584"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setCv</b> (unsigned short cv)</td></tr>
-<tr class="separator:a502c08202652a6958a103ec8d9805584 inherit pub_methods_classCostFactory"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6a8ac2891561a0dfec6a088891e6a089 inherit pub_methods_classCostFactory"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6a8ac2891561a0dfec6a088891e6a089"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setClassValueMap</b> (const std::string &classname, short classvalue)</td></tr>
-<tr class="separator:a6a8ac2891561a0dfec6a088891e6a089 inherit pub_methods_classCostFactory"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a62e43cc3d6c4dada3d88888f86e5d5a1 inherit pub_methods_classCostFactory"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a62e43cc3d6c4dada3d88888f86e5d5a1"></a>
-std::map< std::string, short > </td><td class="memItemRight" valign="bottom"><b>getClassValueMap</b> ()</td></tr>
-<tr class="separator:a62e43cc3d6c4dada3d88888f86e5d5a1 inherit pub_methods_classCostFactory"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aacf749bf116de886d266d0d9a09cb735 inherit pub_methods_classCostFactory"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aacf749bf116de886d266d0d9a09cb735"></a>
-std::vector< std::string > </td><td class="memItemRight" valign="bottom"><b>getNameVector</b> ()</td></tr>
-<tr class="separator:aacf749bf116de886d266d0d9a09cb735 inherit pub_methods_classCostFactory"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab3e7a1cd24c75232d74811f13ef054b0 inherit pub_methods_classCostFactory"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab3e7a1cd24c75232d74811f13ef054b0"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setNameVector</b> (std::vector< std::string > &nameVector)</td></tr>
-<tr class="separator:ab3e7a1cd24c75232d74811f13ef054b0 inherit pub_methods_classCostFactory"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1df5bd24ca7607e7dc9ca167cf133bf8 inherit pub_methods_classCostFactory"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1df5bd24ca7607e7dc9ca167cf133bf8"></a>
-int </td><td class="memItemRight" valign="bottom"><b>getClassIndex</b> (std::string classname) const </td></tr>
-<tr class="separator:a1df5bd24ca7607e7dc9ca167cf133bf8 inherit pub_methods_classCostFactory"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5b5229bb505dffaaf8ade1fbff5232a4 inherit pub_methods_classCostFactory"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5b5229bb505dffaaf8ade1fbff5232a4"></a>
-void </td><td class="memItemRight" valign="bottom"><b>pushBackClassName</b> (std::string classname)</td></tr>
-<tr class="separator:a5b5229bb505dffaaf8ade1fbff5232a4 inherit pub_methods_classCostFactory"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8f8138c0dd3352a138cadf097a035ef9 inherit pub_methods_classCostFactory"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8f8138c0dd3352a138cadf097a035ef9"></a>
-void </td><td class="memItemRight" valign="bottom"><b>pushBackName</b> (std::string classname)</td></tr>
-<tr class="separator:a8f8138c0dd3352a138cadf097a035ef9 inherit pub_methods_classCostFactory"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad7866aa98fbc61d2e14a6e400a978abe inherit pub_methods_classCostFactory"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad7866aa98fbc61d2e14a6e400a978abe"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setNcTraining</b> (const std::vector< unsigned int > nctraining)</td></tr>
-<tr class="separator:ad7866aa98fbc61d2e14a6e400a978abe inherit pub_methods_classCostFactory"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a85436b545d7aac6780097fe0624d5713 inherit pub_methods_classCostFactory"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a85436b545d7aac6780097fe0624d5713"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setNcTest</b> (const std::vector< unsigned int > nctest)</td></tr>
-<tr class="separator:a85436b545d7aac6780097fe0624d5713 inherit pub_methods_classCostFactory"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
-Additional Inherited Members</h2></td></tr>
-<tr class="inherit_header pro_attribs_classCostFactory"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classCostFactory')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="classCostFactory.html">CostFactory</a></td></tr>
-<tr class="memitem:aa0bc9633caa3b8ffbc06a620f47bdbb5 inherit pro_attribs_classCostFactory"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa0bc9633caa3b8ffbc06a620f47bdbb5"></a>
-<a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a> </td><td class="memItemRight" valign="bottom"><b>m_cm</b></td></tr>
-<tr class="separator:aa0bc9633caa3b8ffbc06a620f47bdbb5 inherit pro_attribs_classCostFactory"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abbd6ac034f26cb6afcb2fd83bc030d43 inherit pro_attribs_classCostFactory"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abbd6ac034f26cb6afcb2fd83bc030d43"></a>
-std::map< std::string, short > </td><td class="memItemRight" valign="bottom"><b>m_classValueMap</b></td></tr>
-<tr class="separator:abbd6ac034f26cb6afcb2fd83bc030d43 inherit pro_attribs_classCostFactory"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6eb84c840346b10c8c6f2a554d186675 inherit pro_attribs_classCostFactory"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6eb84c840346b10c8c6f2a554d186675"></a>
-std::vector< std::string > </td><td class="memItemRight" valign="bottom"><b>m_nameVector</b></td></tr>
-<tr class="separator:a6eb84c840346b10c8c6f2a554d186675 inherit pro_attribs_classCostFactory"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a98bd6d2bb062a5022fbd14692555f21d inherit pro_attribs_classCostFactory"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a98bd6d2bb062a5022fbd14692555f21d"></a>
-std::vector< unsigned int > </td><td class="memItemRight" valign="bottom"><b>m_nctraining</b></td></tr>
-<tr class="separator:a98bd6d2bb062a5022fbd14692555f21d inherit pro_attribs_classCostFactory"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae6f79856efd1f7fe362374782d191303 inherit pro_attribs_classCostFactory"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae6f79856efd1f7fe362374782d191303"></a>
-std::vector< unsigned int > </td><td class="memItemRight" valign="bottom"><b>m_nctest</b></td></tr>
-<tr class="separator:ae6f79856efd1f7fe362374782d191303 inherit pro_attribs_classCostFactory"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a430926a8c75e6245b192a45deeef4ae7 inherit pro_attribs_classCostFactory"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a430926a8c75e6245b192a45deeef4ae7"></a>
-unsigned short </td><td class="memItemRight" valign="bottom"><b>m_cv</b></td></tr>
-<tr class="separator:a430926a8c75e6245b192a45deeef4ae7 inherit pro_attribs_classCostFactory"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a38fd70589633f9c96710c510814a610f inherit pro_attribs_classCostFactory"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a38fd70589633f9c96710c510814a610f"></a>
-short </td><td class="memItemRight" valign="bottom"><b>m_classvalue</b></td></tr>
-<tr class="separator:a38fd70589633f9c96710c510814a610f inherit pro_attribs_classCostFactory"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7ba96c1639a8dc080f704c64627de65b inherit pro_attribs_classCostFactory"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7ba96c1639a8dc080f704c64627de65b"></a>
-short </td><td class="memItemRight" valign="bottom"><b>m_verbose</b></td></tr>
-<tr class="separator:a7ba96c1639a8dc080f704c64627de65b inherit pro_attribs_classCostFactory"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="CostFactorySVM_8h_source.html#l00034">34</a> of file <a class="el" href="CostFactorySVM_8h_source.html">CostFactorySVM.h</a>.</p>
-</div><hr/>The documentation for this class was generated from the following files:<ul>
-<li>/home/kempenep/pktools/src/algorithms/<a class="el" href="CostFactorySVM_8h_source.html">CostFactorySVM.h</a></li>
-<li>/home/kempenep/pktools/src/algorithms/<a class="el" href="CostFactorySVM_8cc_source.html">CostFactorySVM.cc</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classCostFactorySVM__coll__graph.map b/doc/html/classCostFactorySVM__coll__graph.map
deleted file mode 100644
index 48bf2b3..0000000
--- a/doc/html/classCostFactorySVM__coll__graph.map
+++ /dev/null
@@ -1,6 +0,0 @@
-<map id="CostFactorySVM" name="CostFactorySVM">
-<area shape="rect" id="node2" href="$classCostFactory.html" title="CostFactory" alt="" coords="713,107,807,133"/>
-<area shape="rect" id="node3" href="$classconfusionmatrix_1_1ConfusionMatrix.html" title="confusionmatrix::Confusion\lMatrix" alt="" coords="371,5,552,46"/>
-<area shape="rect" id="node5" title="STL class. " alt="" coords="184,105,264,132"/>
-<area shape="rect" id="node6" title="STL class. " alt="" coords="6,98,133,139"/>
-</map>
diff --git a/doc/html/classCostFactorySVM__coll__graph.md5 b/doc/html/classCostFactorySVM__coll__graph.md5
deleted file mode 100644
index b0cd182..0000000
--- a/doc/html/classCostFactorySVM__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-0f9a8f382626bf9a88185ebf63693f69
\ No newline at end of file
diff --git a/doc/html/classCostFactorySVM__coll__graph.png b/doc/html/classCostFactorySVM__coll__graph.png
deleted file mode 100644
index 3274be0..0000000
Binary files a/doc/html/classCostFactorySVM__coll__graph.png and /dev/null differ
diff --git a/doc/html/classCostFactorySVM__inherit__graph.map b/doc/html/classCostFactorySVM__inherit__graph.map
deleted file mode 100644
index f05bdad..0000000
--- a/doc/html/classCostFactorySVM__inherit__graph.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="CostFactorySVM" name="CostFactorySVM">
-<area shape="rect" id="node2" href="$classCostFactory.html" title="CostFactory" alt="" coords="19,5,113,32"/>
-</map>
diff --git a/doc/html/classCostFactorySVM__inherit__graph.md5 b/doc/html/classCostFactorySVM__inherit__graph.md5
deleted file mode 100644
index f7aae37..0000000
--- a/doc/html/classCostFactorySVM__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-ff8d12106f65f097f8bab69386ebb5be
\ No newline at end of file
diff --git a/doc/html/classCostFactorySVM__inherit__graph.png b/doc/html/classCostFactorySVM__inherit__graph.png
deleted file mode 100644
index d35fb6a..0000000
Binary files a/doc/html/classCostFactorySVM__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classCostFactory__coll__graph.map b/doc/html/classCostFactory__coll__graph.map
deleted file mode 100644
index 1ca84c0..0000000
--- a/doc/html/classCostFactory__coll__graph.map
+++ /dev/null
@@ -1,5 +0,0 @@
-<map id="CostFactory" name="CostFactory">
-<area shape="rect" id="node2" href="$classconfusionmatrix_1_1ConfusionMatrix.html" title="confusionmatrix::Confusion\lMatrix" alt="" coords="371,5,552,46"/>
-<area shape="rect" id="node4" title="STL class. " alt="" coords="184,105,264,132"/>
-<area shape="rect" id="node5" title="STL class. " alt="" coords="6,98,133,139"/>
-</map>
diff --git a/doc/html/classCostFactory__coll__graph.md5 b/doc/html/classCostFactory__coll__graph.md5
deleted file mode 100644
index c5f55ff..0000000
--- a/doc/html/classCostFactory__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-013d2047d241b8e0b23a7bd03fa53828
\ No newline at end of file
diff --git a/doc/html/classCostFactory__coll__graph.png b/doc/html/classCostFactory__coll__graph.png
deleted file mode 100644
index 05187fb..0000000
Binary files a/doc/html/classCostFactory__coll__graph.png and /dev/null differ
diff --git a/doc/html/classCostFactory__inherit__graph.map b/doc/html/classCostFactory__inherit__graph.map
deleted file mode 100644
index 071a916..0000000
--- a/doc/html/classCostFactory__inherit__graph.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="CostFactory" name="CostFactory">
-<area shape="rect" id="node2" href="$classCostFactoryANN.html" title="CostFactoryANN" alt="" coords="5,80,128,107"/>
-<area shape="rect" id="node3" href="$classCostFactorySVM.html" title="CostFactorySVM" alt="" coords="152,80,275,107"/>
-</map>
diff --git a/doc/html/classCostFactory__inherit__graph.md5 b/doc/html/classCostFactory__inherit__graph.md5
deleted file mode 100644
index 340f331..0000000
--- a/doc/html/classCostFactory__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-e64c5347d3103351bf80477a99bb5b35
\ No newline at end of file
diff --git a/doc/html/classCostFactory__inherit__graph.png b/doc/html/classCostFactory__inherit__graph.png
deleted file mode 100644
index 17c48be..0000000
Binary files a/doc/html/classCostFactory__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classDataModel-members.html b/doc/html/classDataModel-members.html
deleted file mode 100644
index c4b18f8..0000000
--- a/doc/html/classDataModel-members.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">DataModel Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classDataModel.html">DataModel</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>DataModel</b>() (defined in <a class="el" href="classDataModel.html">DataModel</a>)</td><td class="entry"><a class="el" href="classDataModel.html">DataModel</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>DataModel</b>(const SensorModel::SensorModel &theModel) (defined in <a class="el" href="classDataModel.html">DataModel</a>)</td><td class="entry"><a class="el" href="classDataModel.html">DataModel</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>erase</b>(int index) (defined in <a class="el" href="classDataModel.html">DataModel</a>)</td><td class="entry"><a class="el" href="classDataModel.html">DataModel</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getAttPlatform</b>(int index) const  (defined in <a class="el" href="classDataModel.html">DataModel</a>)</td><td class="entry"><a class="el" href="classDataModel.html">DataModel</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getCol</b>(int index) const  (defined in <a class="el" href="classDataModel.html">DataModel</a>)</td><td class="entry"><a class="el" href="classDataModel.html">DataModel</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getDistGeo</b>(int index) const  (defined in <a class="el" href="classDataModel.html">DataModel</a>)</td><td class="entry"><a class="el" href="classDataModel.html">DataModel</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getHeight</b>(int index) const  (defined in <a class="el" href="classDataModel.html">DataModel</a>)</td><td class="entry"><a class="el" href="classDataModel.html">DataModel</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getModel</b>() const  (defined in <a class="el" href="classDataModel.html">DataModel</a>)</td><td class="entry"><a class="el" href="classDataModel.html">DataModel</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getPos</b>(int index) const  (defined in <a class="el" href="classDataModel.html">DataModel</a>)</td><td class="entry"><a class="el" href="classDataModel.html">DataModel</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getPosGCP</b>(int index) const  (defined in <a class="el" href="classDataModel.html">DataModel</a>)</td><td class="entry"><a class="el" href="classDataModel.html">DataModel</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getPosPlatform</b>(int index) const  (defined in <a class="el" href="classDataModel.html">DataModel</a>)</td><td class="entry"><a class="el" href="classDataModel.html">DataModel</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getRow</b>(int index) const  (defined in <a class="el" href="classDataModel.html">DataModel</a>)</td><td class="entry"><a class="el" href="classDataModel.html">DataModel</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getSize</b>() const  (defined in <a class="el" href="classDataModel.html">DataModel</a>)</td><td class="entry"><a class="el" href="classDataModel.html">DataModel</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getThreshold</b>() (defined in <a class="el" href="classDataModel.html">DataModel</a>)</td><td class="entry"><a class="el" href="classDataModel.html">DataModel</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pushAttPlatform</b>(const arma::vec &atp) (defined in <a class="el" href="classDataModel.html">DataModel</a>)</td><td class="entry"><a class="el" href="classDataModel.html">DataModel</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>pushCol</b>(int c) (defined in <a class="el" href="classDataModel.html">DataModel</a>)</td><td class="entry"><a class="el" href="classDataModel.html">DataModel</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pushPosGCP</b>(const arma::vec &pgcp) (defined in <a class="el" href="classDataModel.html">DataModel</a>)</td><td class="entry"><a class="el" href="classDataModel.html">DataModel</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>pushPosPlatform</b>(const arma::vec &ppl) (defined in <a class="el" href="classDataModel.html">DataModel</a>)</td><td class="entry"><a class="el" href="classDataModel.html">DataModel</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pushRow</b>(int r) (defined in <a class="el" href="classDataModel.html">DataModel</a>)</td><td class="entry"><a class="el" href="classDataModel.html">DataModel</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setBoresightAtt</b>(const arma::vec &bc_att) (defined in <a class="el" href="classDataModel.html">DataModel</a>)</td><td class="entry"><a class="el" href="classDataModel.html">DataModel</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setModel</b>(const SensorModel::SensorModel &theModel) (defined in <a class="el" href="classDataModel.html">DataModel</a>)</td><td class="entry"><a class="el" href="classDataModel.html">DataModel</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setThreshold</b>(double theThreshold) (defined in <a class="el" href="classDataModel.html">DataModel</a>)</td><td class="entry"><a class="el" href="classDataModel.html">DataModel</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~DataModel</b>() (defined in <a class="el" href="classDataModel.html">DataModel</a>)</td><td class="entry"><a class="el" href="classDataModel.html">DataModel</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classDataModel.html b/doc/html/classDataModel.html
deleted file mode 100644
index ce40baf..0000000
--- a/doc/html/classDataModel.html
+++ /dev/null
@@ -1,147 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: DataModel Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="classDataModel-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">DataModel Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a13b07b4a832809ca31d73147c81a34c7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a13b07b4a832809ca31d73147c81a34c7"></a>
- </td><td class="memItemRight" valign="bottom"><b>DataModel</b> (const SensorModel::SensorModel &theModel)</td></tr>
-<tr class="separator:a13b07b4a832809ca31d73147c81a34c7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7cbe5f3ed8d59ca61704d7fd38615631"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7cbe5f3ed8d59ca61704d7fd38615631"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setModel</b> (const SensorModel::SensorModel &theModel)</td></tr>
-<tr class="separator:a7cbe5f3ed8d59ca61704d7fd38615631"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2d31a5f44c135eb76fb06916b3b75d80"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2d31a5f44c135eb76fb06916b3b75d80"></a>
-const SensorModel::SensorModel & </td><td class="memItemRight" valign="bottom"><b>getModel</b> () const </td></tr>
-<tr class="separator:a2d31a5f44c135eb76fb06916b3b75d80"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af8289d7987c7f7d350035347b8f38ba8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af8289d7987c7f7d350035347b8f38ba8"></a>
-int </td><td class="memItemRight" valign="bottom"><b>getSize</b> () const </td></tr>
-<tr class="separator:af8289d7987c7f7d350035347b8f38ba8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a88bb05c684f450f9fad84e4a40530d86"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a88bb05c684f450f9fad84e4a40530d86"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setThreshold</b> (double theThreshold)</td></tr>
-<tr class="separator:a88bb05c684f450f9fad84e4a40530d86"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7dbcb0e231d9197167e10536bad316f5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7dbcb0e231d9197167e10536bad316f5"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getThreshold</b> ()</td></tr>
-<tr class="separator:a7dbcb0e231d9197167e10536bad316f5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a80d56fea7c563dffb441286275437567"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a80d56fea7c563dffb441286275437567"></a>
-int </td><td class="memItemRight" valign="bottom"><b>erase</b> (int index)</td></tr>
-<tr class="separator:a80d56fea7c563dffb441286275437567"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a70b32747c76ff5e1ddc3b369cddfd313"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a70b32747c76ff5e1ddc3b369cddfd313"></a>
-int </td><td class="memItemRight" valign="bottom"><b>pushAttPlatform</b> (const arma::vec &atp)</td></tr>
-<tr class="separator:a70b32747c76ff5e1ddc3b369cddfd313"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a253ef61c0a055844d3f76e63c155141d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a253ef61c0a055844d3f76e63c155141d"></a>
-int </td><td class="memItemRight" valign="bottom"><b>pushPosPlatform</b> (const arma::vec &ppl)</td></tr>
-<tr class="separator:a253ef61c0a055844d3f76e63c155141d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad54a373da77fc081be5bc0e76b73e9fa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad54a373da77fc081be5bc0e76b73e9fa"></a>
-int </td><td class="memItemRight" valign="bottom"><b>pushPosGCP</b> (const arma::vec &pgcp)</td></tr>
-<tr class="separator:ad54a373da77fc081be5bc0e76b73e9fa"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2be455dc46c84f7bf3732f33aa27043b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2be455dc46c84f7bf3732f33aa27043b"></a>
-int </td><td class="memItemRight" valign="bottom"><b>pushRow</b> (int r)</td></tr>
-<tr class="separator:a2be455dc46c84f7bf3732f33aa27043b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0267ecbf92af37f62f5588e0cd4a7aee"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0267ecbf92af37f62f5588e0cd4a7aee"></a>
-int </td><td class="memItemRight" valign="bottom"><b>pushCol</b> (int c)</td></tr>
-<tr class="separator:a0267ecbf92af37f62f5588e0cd4a7aee"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a611d9ec883d0b1fad060f431b58da1ef"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a611d9ec883d0b1fad060f431b58da1ef"></a>
-arma::vec </td><td class="memItemRight" valign="bottom"><b>getPosPlatform</b> (int index) const </td></tr>
-<tr class="separator:a611d9ec883d0b1fad060f431b58da1ef"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a802417cd4ba17895bec2c4aaf55dd76d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a802417cd4ba17895bec2c4aaf55dd76d"></a>
-arma::vec </td><td class="memItemRight" valign="bottom"><b>getAttPlatform</b> (int index) const </td></tr>
-<tr class="separator:a802417cd4ba17895bec2c4aaf55dd76d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a12bdc967d5b33125a31b07f4f26fa9f5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a12bdc967d5b33125a31b07f4f26fa9f5"></a>
-arma::vec </td><td class="memItemRight" valign="bottom"><b>getPosGCP</b> (int index) const </td></tr>
-<tr class="separator:a12bdc967d5b33125a31b07f4f26fa9f5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a44d3912a1cc90d488e9a67ab8469be95"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a44d3912a1cc90d488e9a67ab8469be95"></a>
-arma::vec </td><td class="memItemRight" valign="bottom"><b>getPos</b> (int index) const </td></tr>
-<tr class="separator:a44d3912a1cc90d488e9a67ab8469be95"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad5c0ca5ff3b51581b7a0a3226dd61d75"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad5c0ca5ff3b51581b7a0a3226dd61d75"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getDistGeo</b> (int index) const </td></tr>
-<tr class="separator:ad5c0ca5ff3b51581b7a0a3226dd61d75"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7f0b5f9fd790da18fca4b78952bf9f02"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7f0b5f9fd790da18fca4b78952bf9f02"></a>
-int </td><td class="memItemRight" valign="bottom"><b>getRow</b> (int index) const </td></tr>
-<tr class="separator:a7f0b5f9fd790da18fca4b78952bf9f02"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8e82b34402dd311130b46ce416a65790"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8e82b34402dd311130b46ce416a65790"></a>
-int </td><td class="memItemRight" valign="bottom"><b>getCol</b> (int index) const </td></tr>
-<tr class="separator:a8e82b34402dd311130b46ce416a65790"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae2f7a1f171ce1a21bd83aed92f6ba50d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae2f7a1f171ce1a21bd83aed92f6ba50d"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getHeight</b> (int index) const </td></tr>
-<tr class="separator:ae2f7a1f171ce1a21bd83aed92f6ba50d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a47f925646ac07008aac5d13cd2cce961"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a47f925646ac07008aac5d13cd2cce961"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setBoresightAtt</b> (const arma::vec &bc_att)</td></tr>
-<tr class="separator:a47f925646ac07008aac5d13cd2cce961"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="pksensormodel_8h_source.html#l00029">29</a> of file <a class="el" href="pksensormodel_8h_source.html">pksensormodel.h</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/src/apps/<a class="el" href="pksensormodel_8h_source.html">pksensormodel.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classDecrease__IndexValue-members.html b/doc/html/classDecrease__IndexValue-members.html
deleted file mode 100644
index 3614372..0000000
--- a/doc/html/classDecrease__IndexValue-members.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">Decrease_IndexValue Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classDecrease__IndexValue.html">Decrease_IndexValue</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator()</b>(const IndexValue &pv1, const IndexValue &pv2) const  (defined in <a class="el" href="classDecrease__IndexValue.html">Decrease_IndexValue</a>)</td><td class="entry"><a class="el" href="classDecrease__IndexValue.html">Decrease_IndexValue</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classDecrease__IndexValue.html b/doc/html/classDecrease__IndexValue.html
deleted file mode 100644
index ed1f658..0000000
--- a/doc/html/classDecrease__IndexValue.html
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Decrease_IndexValue Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="classDecrease__IndexValue-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">Decrease_IndexValue Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:ac648dc73ce228c949ce55bff33f08e08"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac648dc73ce228c949ce55bff33f08e08"></a>
-int </td><td class="memItemRight" valign="bottom"><b>operator()</b> (const <a class="el" href="structIndexValue.html">IndexValue</a> &pv1, const <a class="el" href="structIndexValue.html">IndexValue</a> &pv2) const </td></tr>
-<tr class="separator:ac648dc73ce228c949ce55bff33f08e08"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="IndexValue_8h_source.html#l00033">33</a> of file <a class="el" href="IndexValue_8h_source.html">IndexValue.h</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/src/base/<a class="el" href="IndexValue_8h_source.html">IndexValue.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classDecrease__PosValue-members.html b/doc/html/classDecrease__PosValue-members.html
deleted file mode 100644
index f312e7f..0000000
--- a/doc/html/classDecrease__PosValue-members.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">Decrease_PosValue Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classDecrease__PosValue.html">Decrease_PosValue</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator()</b>(const PosValue &pv1, const PosValue &pv2) const  (defined in <a class="el" href="classDecrease__PosValue.html">Decrease_PosValue</a>)</td><td class="entry"><a class="el" href="classDecrease__PosValue.html">Decrease_PosValue</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classDecrease__PosValue.html b/doc/html/classDecrease__PosValue.html
deleted file mode 100644
index 465f241..0000000
--- a/doc/html/classDecrease__PosValue.html
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Decrease_PosValue Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="classDecrease__PosValue-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">Decrease_PosValue Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a5e193d31228963c7d9f00a58bdba4bcc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5e193d31228963c7d9f00a58bdba4bcc"></a>
-int </td><td class="memItemRight" valign="bottom"><b>operator()</b> (const <a class="el" href="structPosValue.html">PosValue</a> &pv1, const <a class="el" href="structPosValue.html">PosValue</a> &pv2) const </td></tr>
-<tr class="separator:a5e193d31228963c7d9f00a58bdba4bcc"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="PosValue_8h_source.html#l00034">34</a> of file <a class="el" href="PosValue_8h_source.html">PosValue.h</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/src/base/<a class="el" href="PosValue_8h_source.html">PosValue.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classEgcs-members.html b/doc/html/classEgcs-members.html
deleted file mode 100644
index 556ddf5..0000000
--- a/doc/html/classEgcs-members.html
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">Egcs Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classEgcs.html">Egcs</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cell2bb</b>(const std::string &cellCode, int &ulx, int &uly, int &lrx, int &lry) const  (defined in <a class="el" href="classEgcs.html">Egcs</a>)</td><td class="entry"><a class="el" href="classEgcs.html">Egcs</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>cell2level</b>(const std::string &cellCode) const  (defined in <a class="el" href="classEgcs.html">Egcs</a>)</td><td class="entry"><a class="el" href="classEgcs.html">Egcs</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cell2mid</b>(const std::string &cellCode, double &midX, double &midY) const  (defined in <a class="el" href="classEgcs.html">Egcs</a>)</td><td class="entry"><a class="el" href="classEgcs.html">Egcs</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>Egcs</b>() (defined in <a class="el" href="classEgcs.html">Egcs</a>)</td><td class="entry"><a class="el" href="classEgcs.html">Egcs</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Egcs</b>(unsigned short level) (defined in <a class="el" href="classEgcs.html">Egcs</a>)</td><td class="entry"><a class="el" href="classEgcs.html">Egcs</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>force2grid</b>(double &ulx, double &uly, double &lrx, double &lry) const  (defined in <a class="el" href="classEgcs.html">Egcs</a>)</td><td class="entry"><a class="el" href="classEgcs.html">Egcs</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>geo2cell</b>(double x, double y) const  (defined in <a class="el" href="classEgcs.html">Egcs</a>)</td><td class="entry"><a class="el" href="classEgcs.html">Egcs</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getLevel</b>() const  (defined in <a class="el" href="classEgcs.html">Egcs</a>)</td><td class="entry"><a class="el" href="classEgcs.html">Egcs</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getResolution</b>() const  (defined in <a class="el" href="classEgcs.html">Egcs</a>)</td><td class="entry"><a class="el" href="classEgcs.html">Egcs</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getSize</b>() const  (defined in <a class="el" href="classEgcs.html">Egcs</a>)</td><td class="entry"><a class="el" href="classEgcs.html">Egcs</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>res2level</b>(double resolution) const  (defined in <a class="el" href="classEgcs.html">Egcs</a>)</td><td class="entry"><a class="el" href="classEgcs.html">Egcs</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setLevel</b>(unsigned short level) (defined in <a class="el" href="classEgcs.html">Egcs</a>)</td><td class="entry"><a class="el" href="classEgcs.html">Egcs</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~Egcs</b>() (defined in <a class="el" href="classEgcs.html">Egcs</a>)</td><td class="entry"><a class="el" href="classEgcs.html">Egcs</a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classEgcs.html b/doc/html/classEgcs.html
deleted file mode 100644
index 9a2fe3e..0000000
--- a/doc/html/classEgcs.html
+++ /dev/null
@@ -1,118 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Egcs Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="classEgcs-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">Egcs Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:ae7d655d93cfbdc6f877158f1fdc8c58d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae7d655d93cfbdc6f877158f1fdc8c58d"></a>
- </td><td class="memItemRight" valign="bottom"><b>Egcs</b> (unsigned short level)</td></tr>
-<tr class="separator:ae7d655d93cfbdc6f877158f1fdc8c58d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adfac941cc4c00e067d3dc2c388711cc7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adfac941cc4c00e067d3dc2c388711cc7"></a>
-unsigned short </td><td class="memItemRight" valign="bottom"><b>cell2level</b> (const std::string &cellCode) const </td></tr>
-<tr class="separator:adfac941cc4c00e067d3dc2c388711cc7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a003e539f022ed1ce4b75824d2c671c2d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a003e539f022ed1ce4b75824d2c671c2d"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>geo2cell</b> (double x, double y) const </td></tr>
-<tr class="separator:a003e539f022ed1ce4b75824d2c671c2d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2bc79667190d4384f302d0019c8f74b8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2bc79667190d4384f302d0019c8f74b8"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getSize</b> () const </td></tr>
-<tr class="separator:a2bc79667190d4384f302d0019c8f74b8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a817c994e7926fccb770d32a9726d68af"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a817c994e7926fccb770d32a9726d68af"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setLevel</b> (unsigned short level)</td></tr>
-<tr class="separator:a817c994e7926fccb770d32a9726d68af"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2d6d44b4006c7d4b1f8cd3d0e52bc030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2d6d44b4006c7d4b1f8cd3d0e52bc030"></a>
-unsigned short </td><td class="memItemRight" valign="bottom"><b>getLevel</b> () const </td></tr>
-<tr class="separator:a2d6d44b4006c7d4b1f8cd3d0e52bc030"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a52f656132b692bc6acf0bef5723be988"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a52f656132b692bc6acf0bef5723be988"></a>
-unsigned short </td><td class="memItemRight" valign="bottom"><b>res2level</b> (double resolution) const </td></tr>
-<tr class="separator:a52f656132b692bc6acf0bef5723be988"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2e5393e0962ee0764c976e44f6161b63"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2e5393e0962ee0764c976e44f6161b63"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getResolution</b> () const </td></tr>
-<tr class="separator:a2e5393e0962ee0764c976e44f6161b63"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4cedbd99412f12c5ba90de0d984c0916"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4cedbd99412f12c5ba90de0d984c0916"></a>
-void </td><td class="memItemRight" valign="bottom"><b>force2grid</b> (double &ulx, double &uly, double &lrx, double &lry) const </td></tr>
-<tr class="separator:a4cedbd99412f12c5ba90de0d984c0916"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6d4ef72bc236b2a49606e408e6a9d5b8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6d4ef72bc236b2a49606e408e6a9d5b8"></a>
-void </td><td class="memItemRight" valign="bottom"><b>cell2bb</b> (const std::string &cellCode, int &ulx, int &uly, int &lrx, int &lry) const </td></tr>
-<tr class="separator:a6d4ef72bc236b2a49606e408e6a9d5b8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa901b8f562c00228449526c5868de3f8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa901b8f562c00228449526c5868de3f8"></a>
-void </td><td class="memItemRight" valign="bottom"><b>cell2mid</b> (const std::string &cellCode, double &midX, double &midY) const </td></tr>
-<tr class="separator:aa901b8f562c00228449526c5868de3f8"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="Egcs_8h_source.html#l00026">26</a> of file <a class="el" href="Egcs_8h_source.html">Egcs.h</a>.</p>
-</div><hr/>The documentation for this class was generated from the following files:<ul>
-<li>/home/kempenep/pktools/src/algorithms/<a class="el" href="Egcs_8h_source.html">Egcs.h</a></li>
-<li>/home/kempenep/pktools/src/algorithms/<a class="el" href="Egcs_8cc_source.html">Egcs.cc</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classFANN_1_1neural__net-members.html b/doc/html/classFANN_1_1neural__net-members.html
deleted file mode 100644
index e017069..0000000
--- a/doc/html/classFANN_1_1neural__net-members.html
+++ /dev/null
@@ -1,204 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>FANN</b></li><li class="navelem"><a class="el" href="classFANN_1_1neural__net.html">neural_net</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">FANN::neural_net Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ann</b> (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>cascadetrain_on_data</b>(const training_data &data, unsigned int max_neurons, unsigned int neurons_between_reports, float desired_error) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cascadetrain_on_file</b>(const std::string &filename, unsigned int max_neurons, unsigned int neurons_between_reports, float desired_error) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>clear_scaling_params</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>create_from_file</b>(const std::string &configuration_file) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>create_shortcut</b>(unsigned int num_layers,...) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>create_shortcut_array</b>(unsigned int num_layers, const unsigned int *layers) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>create_sparse</b>(float connection_rate, unsigned int num_layers,...) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>create_sparse_array</b>(float connection_rate, unsigned int num_layers, const unsigned int *layers) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>create_standard</b>(unsigned int num_layers,...) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>create_standard_array</b>(unsigned int num_layers, const unsigned int *layers) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>cross_validation</b>(std::vector< Vector2d< fann_type > > &trainingFeatures, unsigned int ntraining, unsigned short cv, unsigned int max_epochs, float desired_error, std::vector< unsigned short > &referenceVector, std::vector< unsigned short > &outputVector, short verbose=0) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFAN [...]
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cross_validation</b>(std::vector< std::vector< fann_type > > &input, std::vector< std::vector< fann_type > > &output, unsigned short cv, unsigned int max_epochs, float desired_error, std::vector< std::vector< fann_type > > &referenceVector, std::vector< std::vector< fann_type > > &outputVector, short verbose=0) (defined in <a class="el" href="classFANN_1_1neural__net. [...]
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>descale_input</b>(fann_type *input_vector) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>descale_output</b>(fann_type *output_vector) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>descale_train</b>(training_data &data) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>destroy</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>get_activation_function</b>(int layer, int neuron) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_activation_steepness</b>(int layer, int neuron) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>get_bias_array</b>(unsigned int *bias) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_bit_fail</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>get_bit_fail_limit</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_cascade_activation_functions</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>get_cascade_activation_functions_count</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_cascade_activation_steepnesses</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>get_cascade_activation_steepnesses_count</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_cascade_candidate_change_fraction</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>get_cascade_candidate_limit</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_cascade_candidate_stagnation_epochs</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>get_cascade_max_cand_epochs</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_cascade_max_out_epochs</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>get_cascade_num_candidate_groups</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_cascade_num_candidates</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>get_cascade_output_change_fraction</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_cascade_output_stagnation_epochs</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>get_cascade_weight_multiplier</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_connection_array</b>(connection *connections) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>get_connection_array</b>(std::vector< connection > &convector) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_connection_rate</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>get_errno</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_errstr</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>get_layer_array</b>(unsigned int *layers) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_layer_array</b>(std::vector< unsigned int > vlayers) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>get_learning_momentum</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_learning_rate</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>get_MSE</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_network_type</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>get_num_input</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_num_layers</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>get_num_output</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_quickprop_decay</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>get_quickprop_mu</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_rprop_decrease_factor</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>get_rprop_delta_max</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_rprop_delta_min</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>get_rprop_increase_factor</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_total_connections</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>get_total_neurons</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_train_error_function</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>get_train_stop_function</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_training_algorithm</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>init_weights</b>(const training_data &data) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>neural_net</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>print_connections</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>print_error</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>print_parameters</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>randomize_weights</b>(fann_type min_weight, fann_type max_weight) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset_errno</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset_errstr</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset_MSE</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>run</b>(fann_type *input) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>run</b>(std::vector< fann_type > input) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>save</b>(const std::string &configuration_file) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>save_to_fixed</b>(const std::string &configuration_file) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>scale_input</b>(fann_type *input_vector) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>scale_output</b>(fann_type *output_vector) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>scale_train</b>(training_data &data) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_activation_function</b>(activation_function_enum activation_function, int layer, int neuron) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_activation_function_hidden</b>(activation_function_enum activation_function) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_activation_function_layer</b>(activation_function_enum activation_function, int layer) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_activation_function_output</b>(activation_function_enum activation_function) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_activation_steepness</b>(fann_type steepness, int layer, int neuron) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_activation_steepness_hidden</b>(fann_type steepness) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_activation_steepness_layer</b>(fann_type steepness, int layer) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_activation_steepness_output</b>(fann_type steepness) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_bit_fail_limit</b>(fann_type bit_fail_limit) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_callback</b>(callback_type callback, void *user_data) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_cascade_activation_functions</b>(activation_function_enum *cascade_activation_functions, unsigned int cascade_activation_functions_count) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_cascade_activation_steepnesses</b>(fann_type *cascade_activation_steepnesses, unsigned int cascade_activation_steepnesses_count) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_cascade_candidate_change_fraction</b>(float cascade_candidate_change_fraction) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_cascade_candidate_limit</b>(fann_type cascade_candidate_limit) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_cascade_candidate_stagnation_epochs</b>(unsigned int cascade_candidate_stagnation_epochs) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_cascade_max_cand_epochs</b>(unsigned int cascade_max_cand_epochs) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_cascade_max_out_epochs</b>(unsigned int cascade_max_out_epochs) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_cascade_num_candidate_groups</b>(unsigned int cascade_num_candidate_groups) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_cascade_output_change_fraction</b>(float cascade_output_change_fraction) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_cascade_output_stagnation_epochs</b>(unsigned int cascade_output_stagnation_epochs) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_cascade_weight_multiplier</b>(fann_type cascade_weight_multiplier) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_error_log</b>(FILE *log_file) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_input_scaling_params</b>(const training_data &data, float new_input_min, float new_input_max) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_learning_momentum</b>(float learning_momentum) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_learning_rate</b>(float learning_rate) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_output_scaling_params</b>(const training_data &data, float new_output_min, float new_output_max) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_quickprop_decay</b>(float quickprop_decay) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_quickprop_mu</b>(float quickprop_mu) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_rprop_decrease_factor</b>(float rprop_decrease_factor) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_rprop_delta_max</b>(float rprop_delta_max) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_rprop_delta_min</b>(float rprop_delta_min) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_rprop_increase_factor</b>(float rprop_increase_factor) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_scaling_params</b>(const training_data &data, float new_input_min, float new_input_max, float new_output_min, float new_output_max) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_train_error_function</b>(error_function_enum train_error_function) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_train_stop_function</b>(stop_function_enum train_stop_function) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_training_algorithm</b>(training_algorithm_enum training_algorithm) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_weight</b>(unsigned int from_neuron, unsigned int to_neuron, fann_type weight) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_weight_array</b>(connection *connections, unsigned int num_connections) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_weight_array</b>(std::vector< connection > convector) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>test</b>(fann_type *input, fann_type *desired_output) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>test_data</b>(const training_data &data) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>test_data</b>(const std::vector< Vector2d< fann_type > > &input, unsigned int num_data) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>train</b>(fann_type *input, fann_type *desired_output) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>train_epoch</b>(const training_data &data) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>train_on_data</b>(const training_data &data, unsigned int max_epochs, unsigned int epochs_between_reports, float desired_error) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>train_on_data</b>(const std::vector< std::vector< fann_type > > &input, const std::vector< std::vector< fann_type > > &output, bool initWeights, unsigned int max_epochs, unsigned int epochs_between_reports, float desired_error) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net [...]
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>train_on_data</b>(const std::vector< Vector2d< fann_type > > &input, unsigned int num_data, bool initWeights, unsigned int max_epochs, unsigned int epochs_between_reports, float desired_error) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>train_on_file</b>(const std::string &filename, unsigned int max_epochs, unsigned int epochs_between_reports, float desired_error) (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~neural_net</b>() (defined in <a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a>)</td><td class="entry"><a class="el" href="classFANN_1_1neural__net.html">FANN::neural_net</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classFANN_1_1neural__net.html b/doc/html/classFANN_1_1neural__net.html
deleted file mode 100644
index f75ac0e..0000000
--- a/doc/html/classFANN_1_1neural__net.html
+++ /dev/null
@@ -1,465 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: FANN::neural_net Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>FANN</b></li><li class="navelem"><a class="el" href="classFANN_1_1neural__net.html">neural_net</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Classes</a> |
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-attribs">Protected Attributes</a> |
-<a href="classFANN_1_1neural__net-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">FANN::neural_net Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:aae038cbdd661b77bc53c76ad672e281b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aae038cbdd661b77bc53c76ad672e281b"></a>
-void </td><td class="memItemRight" valign="bottom"><b>destroy</b> ()</td></tr>
-<tr class="separator:aae038cbdd661b77bc53c76ad672e281b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac7b8a39f555274eefe9cd9bfdf093e62"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac7b8a39f555274eefe9cd9bfdf093e62"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>create_standard</b> (unsigned int num_layers,...)</td></tr>
-<tr class="separator:ac7b8a39f555274eefe9cd9bfdf093e62"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1c21b553afadeed920ab436832421b79"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1c21b553afadeed920ab436832421b79"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>create_standard_array</b> (unsigned int num_layers, const unsigned int *layers)</td></tr>
-<tr class="separator:a1c21b553afadeed920ab436832421b79"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aeac17b291f2a1d67d7bf5d96022c6e01"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeac17b291f2a1d67d7bf5d96022c6e01"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>create_sparse</b> (float connection_rate, unsigned int num_layers,...)</td></tr>
-<tr class="separator:aeac17b291f2a1d67d7bf5d96022c6e01"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa21a2e593a66a31aeae2d57406100f27"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa21a2e593a66a31aeae2d57406100f27"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>create_sparse_array</b> (float connection_rate, unsigned int num_layers, const unsigned int *layers)</td></tr>
-<tr class="separator:aa21a2e593a66a31aeae2d57406100f27"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a83004c0bef2d0de62956336e946bb166"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a83004c0bef2d0de62956336e946bb166"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>create_shortcut</b> (unsigned int num_layers,...)</td></tr>
-<tr class="separator:a83004c0bef2d0de62956336e946bb166"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9e75632d5749ff1ae05f451c46337e1b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9e75632d5749ff1ae05f451c46337e1b"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>create_shortcut_array</b> (unsigned int num_layers, const unsigned int *layers)</td></tr>
-<tr class="separator:a9e75632d5749ff1ae05f451c46337e1b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a63493c67c2b50f9e1f422c9f4024aa65"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a63493c67c2b50f9e1f422c9f4024aa65"></a>
-fann_type * </td><td class="memItemRight" valign="bottom"><b>run</b> (fann_type *input)</td></tr>
-<tr class="separator:a63493c67c2b50f9e1f422c9f4024aa65"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9eee05109ca00bbe970af41575533321"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9eee05109ca00bbe970af41575533321"></a>
-std::vector< fann_type > </td><td class="memItemRight" valign="bottom"><b>run</b> (std::vector< fann_type > input)</td></tr>
-<tr class="separator:a9eee05109ca00bbe970af41575533321"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad3268079647371876b2d22243bbc5735"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad3268079647371876b2d22243bbc5735"></a>
-void </td><td class="memItemRight" valign="bottom"><b>randomize_weights</b> (fann_type min_weight, fann_type max_weight)</td></tr>
-<tr class="separator:ad3268079647371876b2d22243bbc5735"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aed92e50a4503a0e5dec0019e285c6a8e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aed92e50a4503a0e5dec0019e285c6a8e"></a>
-void </td><td class="memItemRight" valign="bottom"><b>init_weights</b> (const <a class="el" href="classFANN_1_1training__data.html">training_data</a> &data)</td></tr>
-<tr class="separator:aed92e50a4503a0e5dec0019e285c6a8e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aabefeb6a66ebbda73406675e39678823"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aabefeb6a66ebbda73406675e39678823"></a>
-void </td><td class="memItemRight" valign="bottom"><b>print_connections</b> ()</td></tr>
-<tr class="separator:aabefeb6a66ebbda73406675e39678823"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aeafe20cf50eafba57633641af92d9345"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeafe20cf50eafba57633641af92d9345"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>create_from_file</b> (const std::string &configuration_file)</td></tr>
-<tr class="separator:aeafe20cf50eafba57633641af92d9345"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a57f381a5b342d9b97f7312bedcd3fa9f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a57f381a5b342d9b97f7312bedcd3fa9f"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>save</b> (const std::string &configuration_file)</td></tr>
-<tr class="separator:a57f381a5b342d9b97f7312bedcd3fa9f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab6131ea1af23cbd58ecc756415d764a4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab6131ea1af23cbd58ecc756415d764a4"></a>
-int </td><td class="memItemRight" valign="bottom"><b>save_to_fixed</b> (const std::string &configuration_file)</td></tr>
-<tr class="separator:ab6131ea1af23cbd58ecc756415d764a4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0624359c5fb3421fa7a04ed8d6e16f3f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0624359c5fb3421fa7a04ed8d6e16f3f"></a>
-void </td><td class="memItemRight" valign="bottom"><b>train</b> (fann_type *input, fann_type *desired_output)</td></tr>
-<tr class="separator:a0624359c5fb3421fa7a04ed8d6e16f3f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1310cf113fc1019f27c73628b48ce823"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1310cf113fc1019f27c73628b48ce823"></a>
-float </td><td class="memItemRight" valign="bottom"><b>train_epoch</b> (const <a class="el" href="classFANN_1_1training__data.html">training_data</a> &data)</td></tr>
-<tr class="separator:a1310cf113fc1019f27c73628b48ce823"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa463863e07b072940814b20810c24b2e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa463863e07b072940814b20810c24b2e"></a>
-void </td><td class="memItemRight" valign="bottom"><b>train_on_data</b> (const <a class="el" href="classFANN_1_1training__data.html">training_data</a> &data, unsigned int max_epochs, unsigned int epochs_between_reports, float desired_error)</td></tr>
-<tr class="separator:aa463863e07b072940814b20810c24b2e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7398b0474410e8b9348a98adf781427a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7398b0474410e8b9348a98adf781427a"></a>
-void </td><td class="memItemRight" valign="bottom"><b>train_on_data</b> (const std::vector< std::vector< fann_type > > &input, const std::vector< std::vector< fann_type > > &output, bool initWeights, unsigned int max_epochs, unsigned int epochs_between_reports, float desired_error)</td></tr>
-<tr class="separator:a7398b0474410e8b9348a98adf781427a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa206258a96a2aab2b18e7c80c35471ea"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa206258a96a2aab2b18e7c80c35471ea"></a>
-void </td><td class="memItemRight" valign="bottom"><b>train_on_data</b> (const std::vector< <a class="el" href="classVector2d.html">Vector2d</a>< fann_type > > &input, unsigned int num_data, bool initWeights, unsigned int max_epochs, unsigned int epochs_between_reports, float desired_error)</td></tr>
-<tr class="separator:aa206258a96a2aab2b18e7c80c35471ea"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a311385843914df05bd009acfac474bfe"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a311385843914df05bd009acfac474bfe"></a>
-float </td><td class="memItemRight" valign="bottom"><b>cross_validation</b> (std::vector< <a class="el" href="classVector2d.html">Vector2d</a>< fann_type > > &trainingFeatures, unsigned int ntraining, unsigned short cv, unsigned int max_epochs, float desired_error, std::vector< unsigned short > &referenceVector, std::vector< unsigned short > &outputVector, short verbose=0)</td></tr>
-<tr class="separator:a311385843914df05bd009acfac474bfe"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aef16317d62e3e4271776d820f456568a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aef16317d62e3e4271776d820f456568a"></a>
-float </td><td class="memItemRight" valign="bottom"><b>cross_validation</b> (std::vector< std::vector< fann_type > > &input, std::vector< std::vector< fann_type > > &output, unsigned short cv, unsigned int max_epochs, float desired_error, std::vector< std::vector< fann_type > > &referenceVector, std::vector< std::vector< fann_type > > &outputVector, short verbose=0)</td></tr>
-<tr class="separator:aef16317d62e3e4271776d820f456568a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae11cf1df01d9cfd62785c73036466611"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae11cf1df01d9cfd62785c73036466611"></a>
-void </td><td class="memItemRight" valign="bottom"><b>train_on_file</b> (const std::string &filename, unsigned int max_epochs, unsigned int epochs_between_reports, float desired_error)</td></tr>
-<tr class="separator:ae11cf1df01d9cfd62785c73036466611"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9f2388591cf30c8f63b34677c9a38a8c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9f2388591cf30c8f63b34677c9a38a8c"></a>
-fann_type * </td><td class="memItemRight" valign="bottom"><b>test</b> (fann_type *input, fann_type *desired_output)</td></tr>
-<tr class="separator:a9f2388591cf30c8f63b34677c9a38a8c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2926cd03259ec259f800a66addef932a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2926cd03259ec259f800a66addef932a"></a>
-float </td><td class="memItemRight" valign="bottom"><b>test_data</b> (const <a class="el" href="classFANN_1_1training__data.html">training_data</a> &data)</td></tr>
-<tr class="separator:a2926cd03259ec259f800a66addef932a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a497b15a4ccbcc794fc9e147a8bdcabde"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a497b15a4ccbcc794fc9e147a8bdcabde"></a>
-float </td><td class="memItemRight" valign="bottom"><b>test_data</b> (const std::vector< <a class="el" href="classVector2d.html">Vector2d</a>< fann_type > > &input, unsigned int num_data)</td></tr>
-<tr class="separator:a497b15a4ccbcc794fc9e147a8bdcabde"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1d2e0c7e47607efc7a848ca2505fe134"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1d2e0c7e47607efc7a848ca2505fe134"></a>
-float </td><td class="memItemRight" valign="bottom"><b>get_MSE</b> ()</td></tr>
-<tr class="separator:a1d2e0c7e47607efc7a848ca2505fe134"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab5085afbf5ccc8015f6b25615162cf57"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab5085afbf5ccc8015f6b25615162cf57"></a>
-void </td><td class="memItemRight" valign="bottom"><b>reset_MSE</b> ()</td></tr>
-<tr class="separator:ab5085afbf5ccc8015f6b25615162cf57"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae929515e7c19f12ccda3200fc0177255"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae929515e7c19f12ccda3200fc0177255"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_callback</b> (callback_type callback, void *user_data)</td></tr>
-<tr class="separator:ae929515e7c19f12ccda3200fc0177255"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac68f9a647053a127808f9535dbcd2394"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac68f9a647053a127808f9535dbcd2394"></a>
-void </td><td class="memItemRight" valign="bottom"><b>print_parameters</b> ()</td></tr>
-<tr class="separator:ac68f9a647053a127808f9535dbcd2394"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a89b4040b6de1e4b22a5d87a9205518a2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a89b4040b6de1e4b22a5d87a9205518a2"></a>
-training_algorithm_enum </td><td class="memItemRight" valign="bottom"><b>get_training_algorithm</b> ()</td></tr>
-<tr class="separator:a89b4040b6de1e4b22a5d87a9205518a2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad19a45447682109c18fcca72122bb7f2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad19a45447682109c18fcca72122bb7f2"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_training_algorithm</b> (training_algorithm_enum training_algorithm)</td></tr>
-<tr class="separator:ad19a45447682109c18fcca72122bb7f2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad1a52286c4e831810da58234c9412800"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad1a52286c4e831810da58234c9412800"></a>
-float </td><td class="memItemRight" valign="bottom"><b>get_learning_rate</b> ()</td></tr>
-<tr class="separator:ad1a52286c4e831810da58234c9412800"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a670ddea28144956978db1afa03961a92"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a670ddea28144956978db1afa03961a92"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_learning_rate</b> (float learning_rate)</td></tr>
-<tr class="separator:a670ddea28144956978db1afa03961a92"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6facd682c53f1d22c1d26994061e16a6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6facd682c53f1d22c1d26994061e16a6"></a>
-activation_function_enum </td><td class="memItemRight" valign="bottom"><b>get_activation_function</b> (int layer, int neuron)</td></tr>
-<tr class="separator:a6facd682c53f1d22c1d26994061e16a6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6d86f7c8d04e6289d52f4231d6c3b5aa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6d86f7c8d04e6289d52f4231d6c3b5aa"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_activation_function</b> (activation_function_enum activation_function, int layer, int neuron)</td></tr>
-<tr class="separator:a6d86f7c8d04e6289d52f4231d6c3b5aa"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3d630f3e724af938c22d46be69945def"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3d630f3e724af938c22d46be69945def"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_activation_function_layer</b> (activation_function_enum activation_function, int layer)</td></tr>
-<tr class="separator:a3d630f3e724af938c22d46be69945def"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af74550a8e663abb1bab0485c111255fe"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af74550a8e663abb1bab0485c111255fe"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_activation_function_hidden</b> (activation_function_enum activation_function)</td></tr>
-<tr class="separator:af74550a8e663abb1bab0485c111255fe"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab016140ccefaf7ea266f6c26e9803361"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab016140ccefaf7ea266f6c26e9803361"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_activation_function_output</b> (activation_function_enum activation_function)</td></tr>
-<tr class="separator:ab016140ccefaf7ea266f6c26e9803361"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af76382d992c0d1b5f7100a9e9ead6af6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af76382d992c0d1b5f7100a9e9ead6af6"></a>
-fann_type </td><td class="memItemRight" valign="bottom"><b>get_activation_steepness</b> (int layer, int neuron)</td></tr>
-<tr class="separator:af76382d992c0d1b5f7100a9e9ead6af6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2eb2de9950e369b529cff4afd7d8f138"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2eb2de9950e369b529cff4afd7d8f138"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_activation_steepness</b> (fann_type steepness, int layer, int neuron)</td></tr>
-<tr class="separator:a2eb2de9950e369b529cff4afd7d8f138"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0dad9ac63a2b7626e689e190a0ae0085"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0dad9ac63a2b7626e689e190a0ae0085"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_activation_steepness_layer</b> (fann_type steepness, int layer)</td></tr>
-<tr class="separator:a0dad9ac63a2b7626e689e190a0ae0085"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3d11fb54bdb1cf187f091fc89470dd01"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3d11fb54bdb1cf187f091fc89470dd01"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_activation_steepness_hidden</b> (fann_type steepness)</td></tr>
-<tr class="separator:a3d11fb54bdb1cf187f091fc89470dd01"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4885a57ecda9fff1dc1d3fd532632edd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4885a57ecda9fff1dc1d3fd532632edd"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_activation_steepness_output</b> (fann_type steepness)</td></tr>
-<tr class="separator:a4885a57ecda9fff1dc1d3fd532632edd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aaafec47807a33194092b32459139a6c7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaafec47807a33194092b32459139a6c7"></a>
-error_function_enum </td><td class="memItemRight" valign="bottom"><b>get_train_error_function</b> ()</td></tr>
-<tr class="separator:aaafec47807a33194092b32459139a6c7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abf603ca77bf090a8eb16f89404afd9d2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abf603ca77bf090a8eb16f89404afd9d2"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_train_error_function</b> (error_function_enum train_error_function)</td></tr>
-<tr class="separator:abf603ca77bf090a8eb16f89404afd9d2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a61897d00f7dc83116f29964bbbac9f32"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a61897d00f7dc83116f29964bbbac9f32"></a>
-float </td><td class="memItemRight" valign="bottom"><b>get_quickprop_decay</b> ()</td></tr>
-<tr class="separator:a61897d00f7dc83116f29964bbbac9f32"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a144de645d7cc5e8baae9b321c06a6044"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a144de645d7cc5e8baae9b321c06a6044"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_quickprop_decay</b> (float quickprop_decay)</td></tr>
-<tr class="separator:a144de645d7cc5e8baae9b321c06a6044"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adf3abb83521e2905cdb93fa7af89f73a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adf3abb83521e2905cdb93fa7af89f73a"></a>
-float </td><td class="memItemRight" valign="bottom"><b>get_quickprop_mu</b> ()</td></tr>
-<tr class="separator:adf3abb83521e2905cdb93fa7af89f73a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a24f6f41d2bf91b1e5ca7ecb7d6a39e9a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a24f6f41d2bf91b1e5ca7ecb7d6a39e9a"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_quickprop_mu</b> (float quickprop_mu)</td></tr>
-<tr class="separator:a24f6f41d2bf91b1e5ca7ecb7d6a39e9a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a21d14bec12c055b423cf63e06dcc9c50"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a21d14bec12c055b423cf63e06dcc9c50"></a>
-float </td><td class="memItemRight" valign="bottom"><b>get_rprop_increase_factor</b> ()</td></tr>
-<tr class="separator:a21d14bec12c055b423cf63e06dcc9c50"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4e3594156e6211ea999554940a18a8df"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4e3594156e6211ea999554940a18a8df"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_rprop_increase_factor</b> (float rprop_increase_factor)</td></tr>
-<tr class="separator:a4e3594156e6211ea999554940a18a8df"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3c1ee8106359dd5a520e72c489af33c2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3c1ee8106359dd5a520e72c489af33c2"></a>
-float </td><td class="memItemRight" valign="bottom"><b>get_rprop_decrease_factor</b> ()</td></tr>
-<tr class="separator:a3c1ee8106359dd5a520e72c489af33c2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a81dd2d696dd01c9e700b0cfb08634a87"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a81dd2d696dd01c9e700b0cfb08634a87"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_rprop_decrease_factor</b> (float rprop_decrease_factor)</td></tr>
-<tr class="separator:a81dd2d696dd01c9e700b0cfb08634a87"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a655c46239e087a56390467a10222f31e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a655c46239e087a56390467a10222f31e"></a>
-float </td><td class="memItemRight" valign="bottom"><b>get_rprop_delta_min</b> ()</td></tr>
-<tr class="separator:a655c46239e087a56390467a10222f31e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9df02843c1d3c85c678cd76229f794b9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9df02843c1d3c85c678cd76229f794b9"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_rprop_delta_min</b> (float rprop_delta_min)</td></tr>
-<tr class="separator:a9df02843c1d3c85c678cd76229f794b9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acee39357c82fa65305d0f21d68ab482f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acee39357c82fa65305d0f21d68ab482f"></a>
-float </td><td class="memItemRight" valign="bottom"><b>get_rprop_delta_max</b> ()</td></tr>
-<tr class="separator:acee39357c82fa65305d0f21d68ab482f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa8a4c67ef624f7b06eb23cd74a432ed8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa8a4c67ef624f7b06eb23cd74a432ed8"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_rprop_delta_max</b> (float rprop_delta_max)</td></tr>
-<tr class="separator:aa8a4c67ef624f7b06eb23cd74a432ed8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9f9dee3d5d77c01ac46555da2ad9595c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9f9dee3d5d77c01ac46555da2ad9595c"></a>
-unsigned int </td><td class="memItemRight" valign="bottom"><b>get_num_input</b> ()</td></tr>
-<tr class="separator:a9f9dee3d5d77c01ac46555da2ad9595c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abde06d6e2abd95b78c64b59a66c24c51"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abde06d6e2abd95b78c64b59a66c24c51"></a>
-unsigned int </td><td class="memItemRight" valign="bottom"><b>get_num_output</b> ()</td></tr>
-<tr class="separator:abde06d6e2abd95b78c64b59a66c24c51"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aef0ae6119865a3f9cd9bf5b3a39d2cdf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aef0ae6119865a3f9cd9bf5b3a39d2cdf"></a>
-unsigned int </td><td class="memItemRight" valign="bottom"><b>get_total_neurons</b> ()</td></tr>
-<tr class="separator:aef0ae6119865a3f9cd9bf5b3a39d2cdf"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5dfbfa7c1ae66b96f8b22c3476f21825"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5dfbfa7c1ae66b96f8b22c3476f21825"></a>
-unsigned int </td><td class="memItemRight" valign="bottom"><b>get_total_connections</b> ()</td></tr>
-<tr class="separator:a5dfbfa7c1ae66b96f8b22c3476f21825"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aca419ec84fb1663d68a13038e3f07133"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aca419ec84fb1663d68a13038e3f07133"></a>
-network_type_enum </td><td class="memItemRight" valign="bottom"><b>get_network_type</b> ()</td></tr>
-<tr class="separator:aca419ec84fb1663d68a13038e3f07133"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab5af5ee01af35a79e5be18be3a68d2d1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab5af5ee01af35a79e5be18be3a68d2d1"></a>
-float </td><td class="memItemRight" valign="bottom"><b>get_connection_rate</b> ()</td></tr>
-<tr class="separator:ab5af5ee01af35a79e5be18be3a68d2d1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af49f85272231bcb427a086a0ecc27300"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af49f85272231bcb427a086a0ecc27300"></a>
-unsigned int </td><td class="memItemRight" valign="bottom"><b>get_num_layers</b> ()</td></tr>
-<tr class="separator:af49f85272231bcb427a086a0ecc27300"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afe4a5561f18fdf0fc2c988787f75e54e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afe4a5561f18fdf0fc2c988787f75e54e"></a>
-void </td><td class="memItemRight" valign="bottom"><b>get_layer_array</b> (unsigned int *layers)</td></tr>
-<tr class="separator:afe4a5561f18fdf0fc2c988787f75e54e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3e8cc59189e2dff09a926d0e415d4604"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3e8cc59189e2dff09a926d0e415d4604"></a>
-void </td><td class="memItemRight" valign="bottom"><b>get_layer_array</b> (std::vector< unsigned int > vlayers)</td></tr>
-<tr class="separator:a3e8cc59189e2dff09a926d0e415d4604"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac279aa3f36c25eeb54e270f1da8e2489"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac279aa3f36c25eeb54e270f1da8e2489"></a>
-void </td><td class="memItemRight" valign="bottom"><b>get_bias_array</b> (unsigned int *bias)</td></tr>
-<tr class="separator:ac279aa3f36c25eeb54e270f1da8e2489"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2eaba04b27af189a328e161ca03765c4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2eaba04b27af189a328e161ca03765c4"></a>
-void </td><td class="memItemRight" valign="bottom"><b>get_connection_array</b> (connection *connections)</td></tr>
-<tr class="separator:a2eaba04b27af189a328e161ca03765c4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9ab3adaf6e2f124a64b88d79f38fde0b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9ab3adaf6e2f124a64b88d79f38fde0b"></a>
-void </td><td class="memItemRight" valign="bottom"><b>get_connection_array</b> (std::vector< connection > &convector)</td></tr>
-<tr class="separator:a9ab3adaf6e2f124a64b88d79f38fde0b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a47b67fd22216cdab2ceb589e08338f20"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a47b67fd22216cdab2ceb589e08338f20"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_weight_array</b> (connection *connections, unsigned int num_connections)</td></tr>
-<tr class="separator:a47b67fd22216cdab2ceb589e08338f20"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac2f368a8d835b4ed7b110d8d7ef178ba"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac2f368a8d835b4ed7b110d8d7ef178ba"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_weight_array</b> (std::vector< connection > convector)</td></tr>
-<tr class="separator:ac2f368a8d835b4ed7b110d8d7ef178ba"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8bf8c831fbe98015449f9e40e0413a5b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8bf8c831fbe98015449f9e40e0413a5b"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_weight</b> (unsigned int from_neuron, unsigned int to_neuron, fann_type weight)</td></tr>
-<tr class="separator:a8bf8c831fbe98015449f9e40e0413a5b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aaa9ed28e7c8a62fdeb11d7c074847149"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaa9ed28e7c8a62fdeb11d7c074847149"></a>
-float </td><td class="memItemRight" valign="bottom"><b>get_learning_momentum</b> ()</td></tr>
-<tr class="separator:aaa9ed28e7c8a62fdeb11d7c074847149"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad987edc3731eb8f888842a284a4df5d4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad987edc3731eb8f888842a284a4df5d4"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_learning_momentum</b> (float learning_momentum)</td></tr>
-<tr class="separator:ad987edc3731eb8f888842a284a4df5d4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a68b0afbc7790922cb85d77a68757d568"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a68b0afbc7790922cb85d77a68757d568"></a>
-stop_function_enum </td><td class="memItemRight" valign="bottom"><b>get_train_stop_function</b> ()</td></tr>
-<tr class="separator:a68b0afbc7790922cb85d77a68757d568"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af75b356381599083549a8dcf48d3132a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af75b356381599083549a8dcf48d3132a"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_train_stop_function</b> (stop_function_enum train_stop_function)</td></tr>
-<tr class="separator:af75b356381599083549a8dcf48d3132a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6e6f2be8a7ce4d50ea1e1dc07a4cfae3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6e6f2be8a7ce4d50ea1e1dc07a4cfae3"></a>
-fann_type </td><td class="memItemRight" valign="bottom"><b>get_bit_fail_limit</b> ()</td></tr>
-<tr class="separator:a6e6f2be8a7ce4d50ea1e1dc07a4cfae3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac8b2141c20a171d5aeaa48b28597cb12"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac8b2141c20a171d5aeaa48b28597cb12"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_bit_fail_limit</b> (fann_type bit_fail_limit)</td></tr>
-<tr class="separator:ac8b2141c20a171d5aeaa48b28597cb12"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a679b5365dce6627209612f7c26dc942b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a679b5365dce6627209612f7c26dc942b"></a>
-unsigned int </td><td class="memItemRight" valign="bottom"><b>get_bit_fail</b> ()</td></tr>
-<tr class="separator:a679b5365dce6627209612f7c26dc942b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa5ade49e42ea391a6dc0ce8953a5f69f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa5ade49e42ea391a6dc0ce8953a5f69f"></a>
-void </td><td class="memItemRight" valign="bottom"><b>cascadetrain_on_data</b> (const <a class="el" href="classFANN_1_1training__data.html">training_data</a> &data, unsigned int max_neurons, unsigned int neurons_between_reports, float desired_error)</td></tr>
-<tr class="separator:aa5ade49e42ea391a6dc0ce8953a5f69f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9e69c43e0528587a4fdc3181721df0bd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9e69c43e0528587a4fdc3181721df0bd"></a>
-void </td><td class="memItemRight" valign="bottom"><b>cascadetrain_on_file</b> (const std::string &filename, unsigned int max_neurons, unsigned int neurons_between_reports, float desired_error)</td></tr>
-<tr class="separator:a9e69c43e0528587a4fdc3181721df0bd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7473d721f9aab0cf2be356ca15fe5563"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7473d721f9aab0cf2be356ca15fe5563"></a>
-float </td><td class="memItemRight" valign="bottom"><b>get_cascade_output_change_fraction</b> ()</td></tr>
-<tr class="separator:a7473d721f9aab0cf2be356ca15fe5563"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a28ec8fa3a9a54e8a8ccad0556a56c4e6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a28ec8fa3a9a54e8a8ccad0556a56c4e6"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_cascade_output_change_fraction</b> (float cascade_output_change_fraction)</td></tr>
-<tr class="separator:a28ec8fa3a9a54e8a8ccad0556a56c4e6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a724eeede56f29eea6762d86f431d7a48"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a724eeede56f29eea6762d86f431d7a48"></a>
-unsigned int </td><td class="memItemRight" valign="bottom"><b>get_cascade_output_stagnation_epochs</b> ()</td></tr>
-<tr class="separator:a724eeede56f29eea6762d86f431d7a48"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7047191cb3ab337878706913696a9c56"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7047191cb3ab337878706913696a9c56"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_cascade_output_stagnation_epochs</b> (unsigned int cascade_output_stagnation_epochs)</td></tr>
-<tr class="separator:a7047191cb3ab337878706913696a9c56"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7f6b8418b5c6f57054e9b3e99b6dd713"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7f6b8418b5c6f57054e9b3e99b6dd713"></a>
-float </td><td class="memItemRight" valign="bottom"><b>get_cascade_candidate_change_fraction</b> ()</td></tr>
-<tr class="separator:a7f6b8418b5c6f57054e9b3e99b6dd713"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa0fb576395cf6106b6421d422cc17a8a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa0fb576395cf6106b6421d422cc17a8a"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_cascade_candidate_change_fraction</b> (float cascade_candidate_change_fraction)</td></tr>
-<tr class="separator:aa0fb576395cf6106b6421d422cc17a8a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5147b146e56c02f4996eb5b74c752469"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5147b146e56c02f4996eb5b74c752469"></a>
-unsigned int </td><td class="memItemRight" valign="bottom"><b>get_cascade_candidate_stagnation_epochs</b> ()</td></tr>
-<tr class="separator:a5147b146e56c02f4996eb5b74c752469"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4cb66e50ef23a176e839fa6e152be95c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4cb66e50ef23a176e839fa6e152be95c"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_cascade_candidate_stagnation_epochs</b> (unsigned int cascade_candidate_stagnation_epochs)</td></tr>
-<tr class="separator:a4cb66e50ef23a176e839fa6e152be95c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9bbc8f2c052124c36f95c4e466a5a5a9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9bbc8f2c052124c36f95c4e466a5a5a9"></a>
-fann_type </td><td class="memItemRight" valign="bottom"><b>get_cascade_weight_multiplier</b> ()</td></tr>
-<tr class="separator:a9bbc8f2c052124c36f95c4e466a5a5a9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a42276d8e3b022361d3200766a5d32e4c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a42276d8e3b022361d3200766a5d32e4c"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_cascade_weight_multiplier</b> (fann_type cascade_weight_multiplier)</td></tr>
-<tr class="separator:a42276d8e3b022361d3200766a5d32e4c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae9d417bd5b1bb137bd182afa799d2c73"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae9d417bd5b1bb137bd182afa799d2c73"></a>
-fann_type </td><td class="memItemRight" valign="bottom"><b>get_cascade_candidate_limit</b> ()</td></tr>
-<tr class="separator:ae9d417bd5b1bb137bd182afa799d2c73"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a932199042f7b6bfc8662e47e64f542b7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a932199042f7b6bfc8662e47e64f542b7"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_cascade_candidate_limit</b> (fann_type cascade_candidate_limit)</td></tr>
-<tr class="separator:a932199042f7b6bfc8662e47e64f542b7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a85e8741440cbdfef3614caf41f42278e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a85e8741440cbdfef3614caf41f42278e"></a>
-unsigned int </td><td class="memItemRight" valign="bottom"><b>get_cascade_max_out_epochs</b> ()</td></tr>
-<tr class="separator:a85e8741440cbdfef3614caf41f42278e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad31cd0e41fd83e0c5988de13e3da7d6b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad31cd0e41fd83e0c5988de13e3da7d6b"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_cascade_max_out_epochs</b> (unsigned int cascade_max_out_epochs)</td></tr>
-<tr class="separator:ad31cd0e41fd83e0c5988de13e3da7d6b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aac1f469732c899a6f0167851e54c0a3c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aac1f469732c899a6f0167851e54c0a3c"></a>
-unsigned int </td><td class="memItemRight" valign="bottom"><b>get_cascade_max_cand_epochs</b> ()</td></tr>
-<tr class="separator:aac1f469732c899a6f0167851e54c0a3c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adce351d0ee30faeaad1bbc34a51f880b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adce351d0ee30faeaad1bbc34a51f880b"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_cascade_max_cand_epochs</b> (unsigned int cascade_max_cand_epochs)</td></tr>
-<tr class="separator:adce351d0ee30faeaad1bbc34a51f880b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2a6adc37ba3bbb2afe05a4cbe5b958ad"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2a6adc37ba3bbb2afe05a4cbe5b958ad"></a>
-unsigned int </td><td class="memItemRight" valign="bottom"><b>get_cascade_num_candidates</b> ()</td></tr>
-<tr class="separator:a2a6adc37ba3bbb2afe05a4cbe5b958ad"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2c6bb171636a1ee64df88bac4ed366b9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2c6bb171636a1ee64df88bac4ed366b9"></a>
-unsigned int </td><td class="memItemRight" valign="bottom"><b>get_cascade_activation_functions_count</b> ()</td></tr>
-<tr class="separator:a2c6bb171636a1ee64df88bac4ed366b9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a50113ed2976a34b9ea8cc766724c9c7a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a50113ed2976a34b9ea8cc766724c9c7a"></a>
-activation_function_enum * </td><td class="memItemRight" valign="bottom"><b>get_cascade_activation_functions</b> ()</td></tr>
-<tr class="separator:a50113ed2976a34b9ea8cc766724c9c7a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aaf40b0985a6feb6c641fd9f4616b0872"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaf40b0985a6feb6c641fd9f4616b0872"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_cascade_activation_functions</b> (activation_function_enum *cascade_activation_functions, unsigned int cascade_activation_functions_count)</td></tr>
-<tr class="separator:aaf40b0985a6feb6c641fd9f4616b0872"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6154b08ffbd218d1ac5906d5608d191c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6154b08ffbd218d1ac5906d5608d191c"></a>
-unsigned int </td><td class="memItemRight" valign="bottom"><b>get_cascade_activation_steepnesses_count</b> ()</td></tr>
-<tr class="separator:a6154b08ffbd218d1ac5906d5608d191c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9c57a4a2721ca17f4ea69f65724f4597"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9c57a4a2721ca17f4ea69f65724f4597"></a>
-fann_type * </td><td class="memItemRight" valign="bottom"><b>get_cascade_activation_steepnesses</b> ()</td></tr>
-<tr class="separator:a9c57a4a2721ca17f4ea69f65724f4597"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad209354c8a7d1fc1ca6b4226acc34258"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad209354c8a7d1fc1ca6b4226acc34258"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_cascade_activation_steepnesses</b> (fann_type *cascade_activation_steepnesses, unsigned int cascade_activation_steepnesses_count)</td></tr>
-<tr class="separator:ad209354c8a7d1fc1ca6b4226acc34258"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9cf102e61c1d62eb65da5f3ee3f26621"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9cf102e61c1d62eb65da5f3ee3f26621"></a>
-unsigned int </td><td class="memItemRight" valign="bottom"><b>get_cascade_num_candidate_groups</b> ()</td></tr>
-<tr class="separator:a9cf102e61c1d62eb65da5f3ee3f26621"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a48e25b8bc3f0ce1f09d3948c0584d254"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a48e25b8bc3f0ce1f09d3948c0584d254"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_cascade_num_candidate_groups</b> (unsigned int cascade_num_candidate_groups)</td></tr>
-<tr class="separator:a48e25b8bc3f0ce1f09d3948c0584d254"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a615a7a7de6b7b9fb81b9094200577849"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a615a7a7de6b7b9fb81b9094200577849"></a>
-void </td><td class="memItemRight" valign="bottom"><b>scale_train</b> (<a class="el" href="classFANN_1_1training__data.html">training_data</a> &data)</td></tr>
-<tr class="separator:a615a7a7de6b7b9fb81b9094200577849"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a61ae58bc040549bb27c9641f4d4b929f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a61ae58bc040549bb27c9641f4d4b929f"></a>
-void </td><td class="memItemRight" valign="bottom"><b>descale_train</b> (<a class="el" href="classFANN_1_1training__data.html">training_data</a> &data)</td></tr>
-<tr class="separator:a61ae58bc040549bb27c9641f4d4b929f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0aa76cdd4dc0d3267abd20b4d5b26ce3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0aa76cdd4dc0d3267abd20b4d5b26ce3"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>set_input_scaling_params</b> (const <a class="el" href="classFANN_1_1training__data.html">training_data</a> &data, float new_input_min, float new_input_max)</td></tr>
-<tr class="separator:a0aa76cdd4dc0d3267abd20b4d5b26ce3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a30e14ed1513936394ba1c98a896aad06"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a30e14ed1513936394ba1c98a896aad06"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>set_output_scaling_params</b> (const <a class="el" href="classFANN_1_1training__data.html">training_data</a> &data, float new_output_min, float new_output_max)</td></tr>
-<tr class="separator:a30e14ed1513936394ba1c98a896aad06"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab3db9147e9a9d1c11ad0a85f6e4b9024"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab3db9147e9a9d1c11ad0a85f6e4b9024"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>set_scaling_params</b> (const <a class="el" href="classFANN_1_1training__data.html">training_data</a> &data, float new_input_min, float new_input_max, float new_output_min, float new_output_max)</td></tr>
-<tr class="separator:ab3db9147e9a9d1c11ad0a85f6e4b9024"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a859bca375c3526a8ec24d4696bed12e7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a859bca375c3526a8ec24d4696bed12e7"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>clear_scaling_params</b> ()</td></tr>
-<tr class="separator:a859bca375c3526a8ec24d4696bed12e7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae7082288c430b76bf19e54e42fc5a792"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae7082288c430b76bf19e54e42fc5a792"></a>
-void </td><td class="memItemRight" valign="bottom"><b>scale_input</b> (fann_type *input_vector)</td></tr>
-<tr class="separator:ae7082288c430b76bf19e54e42fc5a792"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a136514c0d0cbe8c696a434a280130735"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a136514c0d0cbe8c696a434a280130735"></a>
-void </td><td class="memItemRight" valign="bottom"><b>scale_output</b> (fann_type *output_vector)</td></tr>
-<tr class="separator:a136514c0d0cbe8c696a434a280130735"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad8a0289a79cb15fe883058b1e76fb5be"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad8a0289a79cb15fe883058b1e76fb5be"></a>
-void </td><td class="memItemRight" valign="bottom"><b>descale_input</b> (fann_type *input_vector)</td></tr>
-<tr class="separator:ad8a0289a79cb15fe883058b1e76fb5be"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae3f7d7058b847f7ef402d331c3816967"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae3f7d7058b847f7ef402d331c3816967"></a>
-void </td><td class="memItemRight" valign="bottom"><b>descale_output</b> (fann_type *output_vector)</td></tr>
-<tr class="separator:ae3f7d7058b847f7ef402d331c3816967"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa538a5427a2193a82d27f389165a7ab2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa538a5427a2193a82d27f389165a7ab2"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_error_log</b> (FILE *log_file)</td></tr>
-<tr class="separator:aa538a5427a2193a82d27f389165a7ab2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a38ffe2841a9dc5b39dce4832556aaee1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a38ffe2841a9dc5b39dce4832556aaee1"></a>
-unsigned int </td><td class="memItemRight" valign="bottom"><b>get_errno</b> ()</td></tr>
-<tr class="separator:a38ffe2841a9dc5b39dce4832556aaee1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a009cba8a2ac3ca12498122d465878971"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a009cba8a2ac3ca12498122d465878971"></a>
-void </td><td class="memItemRight" valign="bottom"><b>reset_errno</b> ()</td></tr>
-<tr class="separator:a009cba8a2ac3ca12498122d465878971"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a95301b7f8d5dc615f23ae2cf0399a767"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a95301b7f8d5dc615f23ae2cf0399a767"></a>
-void </td><td class="memItemRight" valign="bottom"><b>reset_errstr</b> ()</td></tr>
-<tr class="separator:a95301b7f8d5dc615f23ae2cf0399a767"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1f377610132f962377e792d8c0202f56"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1f377610132f962377e792d8c0202f56"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>get_errstr</b> ()</td></tr>
-<tr class="separator:a1f377610132f962377e792d8c0202f56"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad2e0c00e86e74caaa4d7b48122fc1f03"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad2e0c00e86e74caaa4d7b48122fc1f03"></a>
-void </td><td class="memItemRight" valign="bottom"><b>print_error</b> ()</td></tr>
-<tr class="separator:ad2e0c00e86e74caaa4d7b48122fc1f03"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
-Protected Attributes</h2></td></tr>
-<tr class="memitem:aa6df9f85818e1db3ed2dfcfad7c83b50"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa6df9f85818e1db3ed2dfcfad7c83b50"></a>
-struct fann * </td><td class="memItemRight" valign="bottom"><b>ann</b></td></tr>
-<tr class="separator:aa6df9f85818e1db3ed2dfcfad7c83b50"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="myfann__cpp_8h_source.html#l00978">978</a> of file <a class="el" href="myfann__cpp_8h_source.html">myfann_cpp.h</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/src/algorithms/<a class="el" href="myfann__cpp_8h_source.html">myfann_cpp.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classFANN_1_1training__data-members.html b/doc/html/classFANN_1_1training__data-members.html
deleted file mode 100644
index f8327ed..0000000
--- a/doc/html/classFANN_1_1training__data-members.html
+++ /dev/null
@@ -1,103 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>FANN</b></li><li class="navelem"><a class="el" href="classFANN_1_1training__data.html">training_data</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">FANN::training_data Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>create_train_from_callback</b>(unsigned int num_data, unsigned int num_input, unsigned int num_output, void(FANN_API *user_function)(unsigned int, unsigned int, unsigned int, fann_type *, fann_type *)) (defined in <a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a>)</td><td class="entry"><a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a></td><td class="entry"><span class="mlabel [...]
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>destroy_train</b>() (defined in <a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a>)</td><td class="entry"><a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_input</b>() (defined in <a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a>)</td><td class="entry"><a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>get_output</b>() (defined in <a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a>)</td><td class="entry"><a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>length_train_data</b>() (defined in <a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a>)</td><td class="entry"><a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>merge_train_data</b>(const training_data &data) (defined in <a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a>)</td><td class="entry"><a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>neural_net</b> (defined in <a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a>)</td><td class="entry"><a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>num_input_train_data</b>() (defined in <a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a>)</td><td class="entry"><a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>num_output_train_data</b>() (defined in <a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a>)</td><td class="entry"><a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>read_train_from_file</b>(const std::string &filename) (defined in <a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a>)</td><td class="entry"><a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>save_train</b>(const std::string &filename) (defined in <a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a>)</td><td class="entry"><a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>save_train_to_fixed</b>(const std::string &filename, unsigned int decimal_point) (defined in <a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a>)</td><td class="entry"><a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>scale_input_train_data</b>(fann_type new_min, fann_type new_max) (defined in <a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a>)</td><td class="entry"><a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>scale_output_train_data</b>(fann_type new_min, fann_type new_max) (defined in <a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a>)</td><td class="entry"><a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>scale_train_data</b>(fann_type new_min, fann_type new_max) (defined in <a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a>)</td><td class="entry"><a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_train_data</b>(unsigned int num_data, unsigned int num_input, fann_type **input, unsigned int num_output, fann_type **output) (defined in <a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a>)</td><td class="entry"><a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_train_data</b>(const std::vector< std::vector< fann_type > > &input, const std::vector< std::vector< fann_type > > &output) (defined in <a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a>)</td><td class="entry"><a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_train_data</b>(const std::vector< std::vector< std::vector< fann_type > > > &input, unsigned int num_data) (defined in <a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a>)</td><td class="entry"><a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_train_data</b>(const std::vector< Vector2d< fann_type > > &input, unsigned int num_data) (defined in <a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a>)</td><td class="entry"><a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>shuffle_train_data</b>() (defined in <a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a>)</td><td class="entry"><a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>subset_train_data</b>(unsigned int pos, unsigned int length) (defined in <a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a>)</td><td class="entry"><a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>train_data</b> (defined in <a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a>)</td><td class="entry"><a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>training_data</b>() (defined in <a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a>)</td><td class="entry"><a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>training_data</b>(const training_data &data) (defined in <a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a>)</td><td class="entry"><a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~training_data</b>() (defined in <a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a>)</td><td class="entry"><a class="el" href="classFANN_1_1training__data.html">FANN::training_data</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classFANN_1_1training__data.html b/doc/html/classFANN_1_1training__data.html
deleted file mode 100644
index e5a9ddc..0000000
--- a/doc/html/classFANN_1_1training__data.html
+++ /dev/null
@@ -1,165 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: FANN::training_data Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>FANN</b></li><li class="navelem"><a class="el" href="classFANN_1_1training__data.html">training_data</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-attribs">Protected Attributes</a> |
-<a href="#friends">Friends</a> |
-<a href="classFANN_1_1training__data-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">FANN::training_data Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:aa52e4a9228f3baa9b66759f7baf0c62a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa52e4a9228f3baa9b66759f7baf0c62a"></a>
- </td><td class="memItemRight" valign="bottom"><b>training_data</b> (const <a class="el" href="classFANN_1_1training__data.html">training_data</a> &data)</td></tr>
-<tr class="separator:aa52e4a9228f3baa9b66759f7baf0c62a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a22a937d4454cb2f2f195777334fe24af"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a22a937d4454cb2f2f195777334fe24af"></a>
-void </td><td class="memItemRight" valign="bottom"><b>destroy_train</b> ()</td></tr>
-<tr class="separator:a22a937d4454cb2f2f195777334fe24af"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a120180cb5648bc52a0a767de7ed4dd0f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a120180cb5648bc52a0a767de7ed4dd0f"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>read_train_from_file</b> (const std::string &filename)</td></tr>
-<tr class="separator:a120180cb5648bc52a0a767de7ed4dd0f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aeedc4222d9fd5f26b67a9a736f3e9610"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeedc4222d9fd5f26b67a9a736f3e9610"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>save_train</b> (const std::string &filename)</td></tr>
-<tr class="separator:aeedc4222d9fd5f26b67a9a736f3e9610"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8a6a45e73d130c064256d6d0e7462dab"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8a6a45e73d130c064256d6d0e7462dab"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>save_train_to_fixed</b> (const std::string &filename, unsigned int decimal_point)</td></tr>
-<tr class="separator:a8a6a45e73d130c064256d6d0e7462dab"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6f66d54d0361a4dff65340fd31366114"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6f66d54d0361a4dff65340fd31366114"></a>
-void </td><td class="memItemRight" valign="bottom"><b>shuffle_train_data</b> ()</td></tr>
-<tr class="separator:a6f66d54d0361a4dff65340fd31366114"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8917fa0ff1df82c32f024d78391556ed"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8917fa0ff1df82c32f024d78391556ed"></a>
-void </td><td class="memItemRight" valign="bottom"><b>merge_train_data</b> (const <a class="el" href="classFANN_1_1training__data.html">training_data</a> &data)</td></tr>
-<tr class="separator:a8917fa0ff1df82c32f024d78391556ed"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a358f5b99adef92a12cc101b499330cdf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a358f5b99adef92a12cc101b499330cdf"></a>
-unsigned int </td><td class="memItemRight" valign="bottom"><b>length_train_data</b> ()</td></tr>
-<tr class="separator:a358f5b99adef92a12cc101b499330cdf"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af37463e7f013d81c94d0c691b73f4ab7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af37463e7f013d81c94d0c691b73f4ab7"></a>
-unsigned int </td><td class="memItemRight" valign="bottom"><b>num_input_train_data</b> ()</td></tr>
-<tr class="separator:af37463e7f013d81c94d0c691b73f4ab7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aee76dbe970847440c67be4dff197eeed"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aee76dbe970847440c67be4dff197eeed"></a>
-unsigned int </td><td class="memItemRight" valign="bottom"><b>num_output_train_data</b> ()</td></tr>
-<tr class="separator:aee76dbe970847440c67be4dff197eeed"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a01327da03baf133f735aa6e86caaf98c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a01327da03baf133f735aa6e86caaf98c"></a>
-fann_type ** </td><td class="memItemRight" valign="bottom"><b>get_input</b> ()</td></tr>
-<tr class="separator:a01327da03baf133f735aa6e86caaf98c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aefdd9769389276fbcd068c051b1c16b1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aefdd9769389276fbcd068c051b1c16b1"></a>
-fann_type ** </td><td class="memItemRight" valign="bottom"><b>get_output</b> ()</td></tr>
-<tr class="separator:aefdd9769389276fbcd068c051b1c16b1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4ed299569854f7340ade96c55cb3b516"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4ed299569854f7340ade96c55cb3b516"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_train_data</b> (unsigned int num_data, unsigned int num_input, fann_type **input, unsigned int num_output, fann_type **output)</td></tr>
-<tr class="separator:a4ed299569854f7340ade96c55cb3b516"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa335fa30f35b5662f038259f24a15a51"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa335fa30f35b5662f038259f24a15a51"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_train_data</b> (const std::vector< std::vector< fann_type > > &input, const std::vector< std::vector< fann_type > > &output)</td></tr>
-<tr class="separator:aa335fa30f35b5662f038259f24a15a51"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3302c1ed32b32f0e17430be4ce5adfab"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3302c1ed32b32f0e17430be4ce5adfab"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_train_data</b> (const std::vector< std::vector< std::vector< fann_type > > > &input, unsigned int num_data)</td></tr>
-<tr class="separator:a3302c1ed32b32f0e17430be4ce5adfab"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aebdfa39d41d85f4fb69a090fe0be37b4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aebdfa39d41d85f4fb69a090fe0be37b4"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_train_data</b> (const std::vector< <a class="el" href="classVector2d.html">Vector2d</a>< fann_type > > &input, unsigned int num_data)</td></tr>
-<tr class="separator:aebdfa39d41d85f4fb69a090fe0be37b4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac1062073d6f679ffb77dee0741c42599"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac1062073d6f679ffb77dee0741c42599"></a>
-void </td><td class="memItemRight" valign="bottom"><b>create_train_from_callback</b> (unsigned int num_data, unsigned int num_input, unsigned int num_output, void(FANN_API *user_function)(unsigned int, unsigned int, unsigned int, fann_type *, fann_type *))</td></tr>
-<tr class="separator:ac1062073d6f679ffb77dee0741c42599"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acfe7df8c3967ecb2bb7250a8b42e4392"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acfe7df8c3967ecb2bb7250a8b42e4392"></a>
-void </td><td class="memItemRight" valign="bottom"><b>scale_input_train_data</b> (fann_type new_min, fann_type new_max)</td></tr>
-<tr class="separator:acfe7df8c3967ecb2bb7250a8b42e4392"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac6c4c759abbd493fc48d30a94980e6a6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac6c4c759abbd493fc48d30a94980e6a6"></a>
-void </td><td class="memItemRight" valign="bottom"><b>scale_output_train_data</b> (fann_type new_min, fann_type new_max)</td></tr>
-<tr class="separator:ac6c4c759abbd493fc48d30a94980e6a6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9bb9da8e78c9022bf856df3a21e0eff0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9bb9da8e78c9022bf856df3a21e0eff0"></a>
-void </td><td class="memItemRight" valign="bottom"><b>scale_train_data</b> (fann_type new_min, fann_type new_max)</td></tr>
-<tr class="separator:a9bb9da8e78c9022bf856df3a21e0eff0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abe92d0480400ce6ce946a9a344a4c040"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abe92d0480400ce6ce946a9a344a4c040"></a>
-void </td><td class="memItemRight" valign="bottom"><b>subset_train_data</b> (unsigned int pos, unsigned int length)</td></tr>
-<tr class="separator:abe92d0480400ce6ce946a9a344a4c040"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
-Protected Attributes</h2></td></tr>
-<tr class="memitem:aa24687af27333f723a9bd34cf0506ed1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa24687af27333f723a9bd34cf0506ed1"></a>
-struct fann_train_data * </td><td class="memItemRight" valign="bottom"><b>train_data</b></td></tr>
-<tr class="separator:aa24687af27333f723a9bd34cf0506ed1"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:ae9a0f1a843c25a56d6fc3c37630413f2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae9a0f1a843c25a56d6fc3c37630413f2"></a>
-class </td><td class="memItemRight" valign="bottom"><b>neural_net</b></td></tr>
-<tr class="separator:ae9a0f1a843c25a56d6fc3c37630413f2"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="myfann__cpp_8h_source.html#l00362">362</a> of file <a class="el" href="myfann__cpp_8h_source.html">myfann_cpp.h</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/src/algorithms/<a class="el" href="myfann__cpp_8h_source.html">myfann_cpp.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classFeatureSelector-members.html b/doc/html/classFeatureSelector-members.html
deleted file mode 100644
index 391d04a..0000000
--- a/doc/html/classFeatureSelector-members.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">FeatureSelector Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classFeatureSelector.html">FeatureSelector</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>backward</b>(std::vector< Vector2d< T > > &v, CostFactory &theCostFactory, std::list< int > &subset, int minFeatures, short verbose=0) (defined in <a class="el" href="classFeatureSelector.html">FeatureSelector</a>)</td><td class="entry"><a class="el" href="classFeatureSelector.html">FeatureSelector</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>bruteForce</b>(std::vector< Vector2d< T > > &v, CostFactory &theCostFactory, std::list< int > &subset, int maxFeatures=0, short verbose=0) (defined in <a class="el" href="classFeatureSelector.html">FeatureSelector</a>)</td><td class="entry"><a class="el" href="classFeatureSelector.html">FeatureSelector</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>FeatureSelector</b>() (defined in <a class="el" href="classFeatureSelector.html">FeatureSelector</a>)</td><td class="entry"><a class="el" href="classFeatureSelector.html">FeatureSelector</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>floating</b>(std::vector< Vector2d< T > > &v, CostFactory &theCostFactory, std::list< int > &subset, int maxFeatures=0, double epsilon=0.001, short verbose=0) (defined in <a class="el" href="classFeatureSelector.html">FeatureSelector</a>)</td><td class="entry"><a class="el" href="classFeatureSelector.html">FeatureSelector</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>forward</b>(std::vector< Vector2d< T > > &v, CostFactory &theCostFactory, std::list< int > &subset, int maxFeatures=0, short verbose=0) (defined in <a class="el" href="classFeatureSelector.html">FeatureSelector</a>)</td><td class="entry"><a class="el" href="classFeatureSelector.html">FeatureSelector</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~FeatureSelector</b>() (defined in <a class="el" href="classFeatureSelector.html">FeatureSelector</a>)</td><td class="entry"><a class="el" href="classFeatureSelector.html">FeatureSelector</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classFeatureSelector.html b/doc/html/classFeatureSelector.html
deleted file mode 100644
index 21c8e9d..0000000
--- a/doc/html/classFeatureSelector.html
+++ /dev/null
@@ -1,100 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: FeatureSelector Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="classFeatureSelector-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">FeatureSelector Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a0b3d6b2b0c5c0a41943a87cb69d1e357"><td class="memTemplParams" colspan="2"><a class="anchor" id="a0b3d6b2b0c5c0a41943a87cb69d1e357"></a>
-template<class T > </td></tr>
-<tr class="memitem:a0b3d6b2b0c5c0a41943a87cb69d1e357"><td class="memTemplItemLeft" align="right" valign="top">double </td><td class="memTemplItemRight" valign="bottom"><b>forward</b> (std::vector< <a class="el" href="classVector2d.html">Vector2d</a>< T > > &v, <a class="el" href="classCostFactory.html">CostFactory</a> &theCostFactory, std::list< int > &subset, int maxFeatures=0, short verbose=0)</td></tr>
-<tr class="separator:a0b3d6b2b0c5c0a41943a87cb69d1e357"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a545f5802b0019e625ad445b4c21f1903"><td class="memTemplParams" colspan="2"><a class="anchor" id="a545f5802b0019e625ad445b4c21f1903"></a>
-template<class T > </td></tr>
-<tr class="memitem:a545f5802b0019e625ad445b4c21f1903"><td class="memTemplItemLeft" align="right" valign="top">double </td><td class="memTemplItemRight" valign="bottom"><b>backward</b> (std::vector< <a class="el" href="classVector2d.html">Vector2d</a>< T > > &v, <a class="el" href="classCostFactory.html">CostFactory</a> &theCostFactory, std::list< int > &subset, int minFeatures, short verbose=0)</td></tr>
-<tr class="separator:a545f5802b0019e625ad445b4c21f1903"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1776378803a5c2ba88cc0a3b64e85be6"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1776378803a5c2ba88cc0a3b64e85be6"></a>
-template<class T > </td></tr>
-<tr class="memitem:a1776378803a5c2ba88cc0a3b64e85be6"><td class="memTemplItemLeft" align="right" valign="top">double </td><td class="memTemplItemRight" valign="bottom"><b>floating</b> (std::vector< <a class="el" href="classVector2d.html">Vector2d</a>< T > > &v, <a class="el" href="classCostFactory.html">CostFactory</a> &theCostFactory, std::list< int > &subset, int maxFeatures=0, double epsilon=0.001, short verbose=0)</td></tr>
-<tr class="separator:a1776378803a5c2ba88cc0a3b64e85be6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae58da09a9123c177639a4aa6b184811a"><td class="memTemplParams" colspan="2"><a class="anchor" id="ae58da09a9123c177639a4aa6b184811a"></a>
-template<class T > </td></tr>
-<tr class="memitem:ae58da09a9123c177639a4aa6b184811a"><td class="memTemplItemLeft" align="right" valign="top">double </td><td class="memTemplItemRight" valign="bottom"><b>bruteForce</b> (std::vector< <a class="el" href="classVector2d.html">Vector2d</a>< T > > &v, <a class="el" href="classCostFactory.html">CostFactory</a> &theCostFactory, std::list< int > &subset, int maxFeatures=0, short verbose=0)</td></tr>
-<tr class="separator:ae58da09a9123c177639a4aa6b184811a"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="FeatureSelector_8h_source.html#l00035">35</a> of file <a class="el" href="FeatureSelector_8h_source.html">FeatureSelector.h</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/src/algorithms/<a class="el" href="FeatureSelector_8h_source.html">FeatureSelector.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classFileReaderAscii-members.html b/doc/html/classFileReaderAscii-members.html
deleted file mode 100644
index b3fdfbd..0000000
--- a/doc/html/classFileReaderAscii-members.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">FileReaderAscii Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classFileReaderAscii.html">FileReaderAscii</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>close</b>(void) (defined in <a class="el" href="classFileReaderAscii.html">FileReaderAscii</a>)</td><td class="entry"><a class="el" href="classFileReaderAscii.html">FileReaderAscii</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>FileReaderAscii</b>(void) (defined in <a class="el" href="classFileReaderAscii.html">FileReaderAscii</a>)</td><td class="entry"><a class="el" href="classFileReaderAscii.html">FileReaderAscii</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>FileReaderAscii</b>(const std::string &filename) (defined in <a class="el" href="classFileReaderAscii.html">FileReaderAscii</a>)</td><td class="entry"><a class="el" href="classFileReaderAscii.html">FileReaderAscii</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>FileReaderAscii</b>(const std::string &filename, const char &fieldseparator) (defined in <a class="el" href="classFileReaderAscii.html">FileReaderAscii</a>)</td><td class="entry"><a class="el" href="classFileReaderAscii.html">FileReaderAscii</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_comment</b> (defined in <a class="el" href="classFileReaderAscii.html">FileReaderAscii</a>)</td><td class="entry"><a class="el" href="classFileReaderAscii.html">FileReaderAscii</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_filename</b> (defined in <a class="el" href="classFileReaderAscii.html">FileReaderAscii</a>)</td><td class="entry"><a class="el" href="classFileReaderAscii.html">FileReaderAscii</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_fs</b> (defined in <a class="el" href="classFileReaderAscii.html">FileReaderAscii</a>)</td><td class="entry"><a class="el" href="classFileReaderAscii.html">FileReaderAscii</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_ifstream</b> (defined in <a class="el" href="classFileReaderAscii.html">FileReaderAscii</a>)</td><td class="entry"><a class="el" href="classFileReaderAscii.html">FileReaderAscii</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_max</b> (defined in <a class="el" href="classFileReaderAscii.html">FileReaderAscii</a>)</td><td class="entry"><a class="el" href="classFileReaderAscii.html">FileReaderAscii</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_maxRow</b> (defined in <a class="el" href="classFileReaderAscii.html">FileReaderAscii</a>)</td><td class="entry"><a class="el" href="classFileReaderAscii.html">FileReaderAscii</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_min</b> (defined in <a class="el" href="classFileReaderAscii.html">FileReaderAscii</a>)</td><td class="entry"><a class="el" href="classFileReaderAscii.html">FileReaderAscii</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_minRow</b> (defined in <a class="el" href="classFileReaderAscii.html">FileReaderAscii</a>)</td><td class="entry"><a class="el" href="classFileReaderAscii.html">FileReaderAscii</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>nrOfCol</b>(bool checkCols=false, bool verbose=false) (defined in <a class="el" href="classFileReaderAscii.html">FileReaderAscii</a>)</td><td class="entry"><a class="el" href="classFileReaderAscii.html">FileReaderAscii</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>nrOfRow</b>(bool checkCols=false, bool verbose=false) (defined in <a class="el" href="classFileReaderAscii.html">FileReaderAscii</a>)</td><td class="entry"><a class="el" href="classFileReaderAscii.html">FileReaderAscii</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>open</b>(const std::string &filename) (defined in <a class="el" href="classFileReaderAscii.html">FileReaderAscii</a>)</td><td class="entry"><a class="el" href="classFileReaderAscii.html">FileReaderAscii</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>readData</b>(std::vector< std::vector< T > > &dataVector, const std::vector< int > &cols, double scale=1.0, double offset=0.0, bool transpose=false, bool verbose=false) (defined in <a class="el" href="classFileReaderAscii.html">FileReaderAscii</a>)</td><td class="entry"><a class="el" href="classFileReaderAscii.html">FileReaderAscii</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>readData</b>(std::vector< T > &dataVector, int col, double scale=1.0, double offset=0, bool verbose=false) (defined in <a class="el" href="classFileReaderAscii.html">FileReaderAscii</a>)</td><td class="entry"><a class="el" href="classFileReaderAscii.html">FileReaderAscii</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset</b>() (defined in <a class="el" href="classFileReaderAscii.html">FileReaderAscii</a>)</td><td class="entry"><a class="el" href="classFileReaderAscii.html">FileReaderAscii</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setComment</b>(char comment) (defined in <a class="el" href="classFileReaderAscii.html">FileReaderAscii</a>)</td><td class="entry"><a class="el" href="classFileReaderAscii.html">FileReaderAscii</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setFieldSeparator</b>(const char &fieldseparator) (defined in <a class="el" href="classFileReaderAscii.html">FileReaderAscii</a>)</td><td class="entry"><a class="el" href="classFileReaderAscii.html">FileReaderAscii</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setMaxRow</b>(int maxRow) (defined in <a class="el" href="classFileReaderAscii.html">FileReaderAscii</a>)</td><td class="entry"><a class="el" href="classFileReaderAscii.html">FileReaderAscii</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setMinRow</b>(int minRow) (defined in <a class="el" href="classFileReaderAscii.html">FileReaderAscii</a>)</td><td class="entry"><a class="el" href="classFileReaderAscii.html">FileReaderAscii</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~FileReaderAscii</b>(void) (defined in <a class="el" href="classFileReaderAscii.html">FileReaderAscii</a>)</td><td class="entry"><a class="el" href="classFileReaderAscii.html">FileReaderAscii</a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classFileReaderAscii.html b/doc/html/classFileReaderAscii.html
deleted file mode 100644
index ac17166..0000000
--- a/doc/html/classFileReaderAscii.html
+++ /dev/null
@@ -1,161 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: FileReaderAscii Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-attribs">Protected Attributes</a> |
-<a href="classFileReaderAscii-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">FileReaderAscii Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Collaboration diagram for FileReaderAscii:</div>
-<div class="dyncontent">
-<div class="center"><img src="classFileReaderAscii__coll__graph.png" border="0" usemap="#FileReaderAscii_coll__map" alt="Collaboration graph"/></div>
-<map name="FileReaderAscii_coll__map" id="FileReaderAscii_coll__map">
-<area shape="rect" id="node2" title="STL class. " alt="" coords="51,347,145,373"/><area shape="rect" id="node3" title="STL class. " alt="" coords="16,254,149,295"/><area shape="rect" id="node4" title="STL class. " alt="" coords="18,161,147,202"/><area shape="rect" id="node5" title="STL class. " alt="" coords="5,83,159,109"/><area shape="rect" id="node6" title="STL class. " alt="" coords="33,5,132,32"/><area shape="rect" id="node7" title="STL class. " alt="" coords="192,347,271,373"/><are [...]
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a6d41ecfea7d1ec5de054a890c12c615a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6d41ecfea7d1ec5de054a890c12c615a"></a>
- </td><td class="memItemRight" valign="bottom"><b>FileReaderAscii</b> (const std::string &filename)</td></tr>
-<tr class="separator:a6d41ecfea7d1ec5de054a890c12c615a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a93271f754450caca61826a1d422887a5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a93271f754450caca61826a1d422887a5"></a>
- </td><td class="memItemRight" valign="bottom"><b>FileReaderAscii</b> (const std::string &filename, const char &fieldseparator)</td></tr>
-<tr class="separator:a93271f754450caca61826a1d422887a5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4d07e7a3ee29e4853a149d6b2e58c916"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4d07e7a3ee29e4853a149d6b2e58c916"></a>
-void </td><td class="memItemRight" valign="bottom"><b>reset</b> ()</td></tr>
-<tr class="separator:a4d07e7a3ee29e4853a149d6b2e58c916"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aaceff7fa7a6560e1e2010dc1e1c1a996"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaceff7fa7a6560e1e2010dc1e1c1a996"></a>
-void </td><td class="memItemRight" valign="bottom"><b>open</b> (const std::string &filename)</td></tr>
-<tr class="separator:aaceff7fa7a6560e1e2010dc1e1c1a996"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adf6d501c7be2ec5349f7fc1346c5ac30"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adf6d501c7be2ec5349f7fc1346c5ac30"></a>
-void </td><td class="memItemRight" valign="bottom"><b>close</b> (void)</td></tr>
-<tr class="separator:adf6d501c7be2ec5349f7fc1346c5ac30"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab20724a644e0949387db6606e9cc0beb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab20724a644e0949387db6606e9cc0beb"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setFieldSeparator</b> (const char &fieldseparator)</td></tr>
-<tr class="separator:ab20724a644e0949387db6606e9cc0beb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aed996e94b8bc27305daf05b31b0402c1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aed996e94b8bc27305daf05b31b0402c1"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setMinRow</b> (int minRow)</td></tr>
-<tr class="separator:aed996e94b8bc27305daf05b31b0402c1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0b5ce1391b02c870bddec9b30e4e9bc9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0b5ce1391b02c870bddec9b30e4e9bc9"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setMaxRow</b> (int maxRow)</td></tr>
-<tr class="separator:a0b5ce1391b02c870bddec9b30e4e9bc9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7694a60267559cdc54e762ee019304d2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7694a60267559cdc54e762ee019304d2"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setComment</b> (char comment)</td></tr>
-<tr class="separator:a7694a60267559cdc54e762ee019304d2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9e6673126e8c7f8c6126347f65d123aa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9e6673126e8c7f8c6126347f65d123aa"></a>
-unsigned int </td><td class="memItemRight" valign="bottom"><b>nrOfCol</b> (bool checkCols=false, bool verbose=false)</td></tr>
-<tr class="separator:a9e6673126e8c7f8c6126347f65d123aa"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9cdad118d2bbf113de319ddbd7265331"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9cdad118d2bbf113de319ddbd7265331"></a>
-unsigned int </td><td class="memItemRight" valign="bottom"><b>nrOfRow</b> (bool checkCols=false, bool verbose=false)</td></tr>
-<tr class="separator:a9cdad118d2bbf113de319ddbd7265331"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8560e7914421bec68933ea48a26fac47"><td class="memTemplParams" colspan="2"><a class="anchor" id="a8560e7914421bec68933ea48a26fac47"></a>
-template<class T > </td></tr>
-<tr class="memitem:a8560e7914421bec68933ea48a26fac47"><td class="memTemplItemLeft" align="right" valign="top">unsigned int </td><td class="memTemplItemRight" valign="bottom"><b>readData</b> (std::vector< std::vector< T > > &dataVector, const std::vector< int > &cols, double scale=1.0, double offset=0.0, bool transpose=false, bool verbose=false)</td></tr>
-<tr class="separator:a8560e7914421bec68933ea48a26fac47"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2824b8dc79d03ec0b12a3f03af80d15c"><td class="memTemplParams" colspan="2"><a class="anchor" id="a2824b8dc79d03ec0b12a3f03af80d15c"></a>
-template<class T > </td></tr>
-<tr class="memitem:a2824b8dc79d03ec0b12a3f03af80d15c"><td class="memTemplItemLeft" align="right" valign="top">unsigned int </td><td class="memTemplItemRight" valign="bottom"><b>readData</b> (std::vector< T > &dataVector, int col, double scale=1.0, double offset=0, bool verbose=false)</td></tr>
-<tr class="separator:a2824b8dc79d03ec0b12a3f03af80d15c"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
-Protected Attributes</h2></td></tr>
-<tr class="memitem:a163894d1e52c54a67c51570cc86bc00a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a163894d1e52c54a67c51570cc86bc00a"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>m_filename</b></td></tr>
-<tr class="separator:a163894d1e52c54a67c51570cc86bc00a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2fe5eaaba98369c21a88237c1926a76b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2fe5eaaba98369c21a88237c1926a76b"></a>
-std::ifstream </td><td class="memItemRight" valign="bottom"><b>m_ifstream</b></td></tr>
-<tr class="separator:a2fe5eaaba98369c21a88237c1926a76b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4b0bddb3e890bab2f9f4aad108e397eb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4b0bddb3e890bab2f9f4aad108e397eb"></a>
-char </td><td class="memItemRight" valign="bottom"><b>m_fs</b></td></tr>
-<tr class="separator:a4b0bddb3e890bab2f9f4aad108e397eb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afd5c91ee77ae90a4e909203d5b3f9065"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afd5c91ee77ae90a4e909203d5b3f9065"></a>
-char </td><td class="memItemRight" valign="bottom"><b>m_comment</b></td></tr>
-<tr class="separator:afd5c91ee77ae90a4e909203d5b3f9065"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7099b7a444ab71a098dce31ad292aaff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7099b7a444ab71a098dce31ad292aaff"></a>
-double </td><td class="memItemRight" valign="bottom"><b>m_min</b></td></tr>
-<tr class="separator:a7099b7a444ab71a098dce31ad292aaff"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a47079477cffc371cbead24f39306132e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a47079477cffc371cbead24f39306132e"></a>
-double </td><td class="memItemRight" valign="bottom"><b>m_max</b></td></tr>
-<tr class="separator:a47079477cffc371cbead24f39306132e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a54f60910cc3fb0802caae7e68f086142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a54f60910cc3fb0802caae7e68f086142"></a>
-int </td><td class="memItemRight" valign="bottom"><b>m_minRow</b></td></tr>
-<tr class="separator:a54f60910cc3fb0802caae7e68f086142"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a098d982b227b6e744ee6f04fcd7a3320"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a098d982b227b6e744ee6f04fcd7a3320"></a>
-int </td><td class="memItemRight" valign="bottom"><b>m_maxRow</b></td></tr>
-<tr class="separator:a098d982b227b6e744ee6f04fcd7a3320"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="FileReaderAscii_8h_source.html#l00030">30</a> of file <a class="el" href="FileReaderAscii_8h_source.html">FileReaderAscii.h</a>.</p>
-</div><hr/>The documentation for this class was generated from the following files:<ul>
-<li>/home/kempenep/pktools/src/fileclasses/<a class="el" href="FileReaderAscii_8h_source.html">FileReaderAscii.h</a></li>
-<li>/home/kempenep/pktools/src/fileclasses/<a class="el" href="FileReaderAscii_8cc_source.html">FileReaderAscii.cc</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classFileReaderAscii__coll__graph.map b/doc/html/classFileReaderAscii__coll__graph.map
deleted file mode 100644
index b6478bd..0000000
--- a/doc/html/classFileReaderAscii__coll__graph.map
+++ /dev/null
@@ -1,9 +0,0 @@
-<map id="FileReaderAscii" name="FileReaderAscii">
-<area shape="rect" id="node2" title="STL class. " alt="" coords="51,347,145,373"/>
-<area shape="rect" id="node3" title="STL class. " alt="" coords="16,254,149,295"/>
-<area shape="rect" id="node4" title="STL class. " alt="" coords="18,161,147,202"/>
-<area shape="rect" id="node5" title="STL class. " alt="" coords="5,83,159,109"/>
-<area shape="rect" id="node6" title="STL class. " alt="" coords="33,5,132,32"/>
-<area shape="rect" id="node7" title="STL class. " alt="" coords="192,347,271,373"/>
-<area shape="rect" id="node8" title="STL class. " alt="" coords="174,254,300,295"/>
-</map>
diff --git a/doc/html/classFileReaderAscii__coll__graph.md5 b/doc/html/classFileReaderAscii__coll__graph.md5
deleted file mode 100644
index f8ac974..0000000
--- a/doc/html/classFileReaderAscii__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-6d09dc6d3271ce3d2cfd407777da371e
\ No newline at end of file
diff --git a/doc/html/classFileReaderAscii__coll__graph.png b/doc/html/classFileReaderAscii__coll__graph.png
deleted file mode 100644
index c38943b..0000000
Binary files a/doc/html/classFileReaderAscii__coll__graph.png and /dev/null differ
diff --git a/doc/html/classFileReaderLas-members.html b/doc/html/classFileReaderLas-members.html
deleted file mode 100644
index aab74df..0000000
--- a/doc/html/classFileReaderLas-members.html
+++ /dev/null
@@ -1,100 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">FileReaderLas Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classFileReaderLas.html">FileReaderLas</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>addClassFilter</b>(std::vector< unsigned short > const &classes) (defined in <a class="el" href="classFileReaderLas.html">FileReaderLas</a>)</td><td class="entry"><a class="el" href="classFileReaderLas.html">FileReaderLas</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>addReturnsFilter</b>(std::vector< unsigned short > const &returns) (defined in <a class="el" href="classFileReaderLas.html">FileReaderLas</a>)</td><td class="entry"><a class="el" href="classFileReaderLas.html">FileReaderLas</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>close</b>(void) (defined in <a class="el" href="classFileReaderLas.html">FileReaderLas</a>)</td><td class="entry"><a class="el" href="classFileReaderLas.html">FileReaderLas</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>FileReaderLas</b>(void) (defined in <a class="el" href="classFileReaderLas.html">FileReaderLas</a>)</td><td class="entry"><a class="el" href="classFileReaderLas.html">FileReaderLas</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>FileReaderLas</b>(const std::string &filename) (defined in <a class="el" href="classFileReaderLas.html">FileReaderLas</a>)</td><td class="entry"><a class="el" href="classFileReaderLas.html">FileReaderLas</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getExtent</b>() const  (defined in <a class="el" href="classFileReaderLas.html">FileReaderLas</a>)</td><td class="entry"><a class="el" href="classFileReaderLas.html">FileReaderLas</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getExtent</b>(double &ulx, double &uly, double &lrx, double &lry) const  (defined in <a class="el" href="classFileReaderLas.html">FileReaderLas</a>)</td><td class="entry"><a class="el" href="classFileReaderLas.html">FileReaderLas</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getHeader</b>() const  (defined in <a class="el" href="classFileReaderLas.html">FileReaderLas</a>)</td><td class="entry"><a class="el" href="classFileReaderLas.html">FileReaderLas</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getMaxZ</b>() const  (defined in <a class="el" href="classFileReaderLas.html">FileReaderLas</a>)</td><td class="entry"><a class="el" href="classFileReaderLas.html">FileReaderLas</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getMinZ</b>() const  (defined in <a class="el" href="classFileReaderLas.html">FileReaderLas</a>)</td><td class="entry"><a class="el" href="classFileReaderLas.html">FileReaderLas</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getPointCount</b>() const  (defined in <a class="el" href="classFileReaderLas.html">FileReaderLas</a>)</td><td class="entry"><a class="el" href="classFileReaderLas.html">FileReaderLas</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>isCompressed</b>() const  (defined in <a class="el" href="classFileReaderLas.html">FileReaderLas</a>)</td><td class="entry"><a class="el" href="classFileReaderLas.html">FileReaderLas</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>las2ascii</b>(const std::string &filename, bool verbose=false) const  (defined in <a class="el" href="classFileReaderLas.html">FileReaderLas</a>)</td><td class="entry"><a class="el" href="classFileReaderLas.html">FileReaderLas</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_filename</b> (defined in <a class="el" href="classFileReaderLas.html">FileReaderLas</a>)</td><td class="entry"><a class="el" href="classFileReaderLas.html">FileReaderLas</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_filters</b> (defined in <a class="el" href="classFileReaderLas.html">FileReaderLas</a>)</td><td class="entry"><a class="el" href="classFileReaderLas.html">FileReaderLas</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_ifstream</b> (defined in <a class="el" href="classFileReaderLas.html">FileReaderLas</a>)</td><td class="entry"><a class="el" href="classFileReaderLas.html">FileReaderLas</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_reader</b> (defined in <a class="el" href="classFileReaderLas.html">FileReaderLas</a>)</td><td class="entry"><a class="el" href="classFileReaderLas.html">FileReaderLas</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>open</b>(const std::string &filename) (defined in <a class="el" href="classFileReaderLas.html">FileReaderLas</a>)</td><td class="entry"><a class="el" href="classFileReaderLas.html">FileReaderLas</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>readNextPoint</b>(liblas::Point &thePoint) (defined in <a class="el" href="classFileReaderLas.html">FileReaderLas</a>)</td><td class="entry"><a class="el" href="classFileReaderLas.html">FileReaderLas</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>readPointAt</b>(std::size_t n) (defined in <a class="el" href="classFileReaderLas.html">FileReaderLas</a>)</td><td class="entry"><a class="el" href="classFileReaderLas.html">FileReaderLas</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>resetReader</b>() (defined in <a class="el" href="classFileReaderLas.html">FileReaderLas</a>)</td><td class="entry"><a class="el" href="classFileReaderLas.html">FileReaderLas</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setCodec</b>(const std::string &filename) (defined in <a class="el" href="classFileReaderLas.html">FileReaderLas</a>)</td><td class="entry"><a class="el" href="classFileReaderLas.html">FileReaderLas</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setFilter</b>(std::vector< liblas::FilterPtr > const &filters) (defined in <a class="el" href="classFileReaderLas.html">FileReaderLas</a>)</td><td class="entry"><a class="el" href="classFileReaderLas.html">FileReaderLas</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setFilters</b>(const std::vector< liblas::FilterPtr > &filters) (defined in <a class="el" href="classFileReaderLas.html">FileReaderLas</a>)</td><td class="entry"><a class="el" href="classFileReaderLas.html">FileReaderLas</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setFilters</b>() (defined in <a class="el" href="classFileReaderLas.html">FileReaderLas</a>)</td><td class="entry"><a class="el" href="classFileReaderLas.html">FileReaderLas</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~FileReaderLas</b>(void) (defined in <a class="el" href="classFileReaderLas.html">FileReaderLas</a>)</td><td class="entry"><a class="el" href="classFileReaderLas.html">FileReaderLas</a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classFileReaderLas.html b/doc/html/classFileReaderLas.html
deleted file mode 100644
index 3c10e96..0000000
--- a/doc/html/classFileReaderLas.html
+++ /dev/null
@@ -1,173 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: FileReaderLas Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-methods">Protected Member Functions</a> |
-<a href="#pro-attribs">Protected Attributes</a> |
-<a href="classFileReaderLas-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">FileReaderLas Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Collaboration diagram for FileReaderLas:</div>
-<div class="dyncontent">
-<div class="center"><img src="classFileReaderLas__coll__graph.png" border="0" usemap="#FileReaderLas_coll__map" alt="Collaboration graph"/></div>
-<map name="FileReaderLas_coll__map" id="FileReaderLas_coll__map">
-<area shape="rect" id="node2" title="STL class. " alt="" coords="53,355,147,381"/><area shape="rect" id="node3" title="STL class. " alt="" coords="16,254,149,295"/><area shape="rect" id="node4" title="STL class. " alt="" coords="18,161,147,202"/><area shape="rect" id="node5" title="STL class. " alt="" coords="5,83,159,109"/><area shape="rect" id="node6" title="STL class. " alt="" coords="33,5,132,32"/><area shape="rect" id="node7" title="STL class. " alt="" coords="191,355,269,381"/><are [...]
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:ae37a0309d2cce5d863ff7936d18cb071"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae37a0309d2cce5d863ff7936d18cb071"></a>
- </td><td class="memItemRight" valign="bottom"><b>FileReaderLas</b> (const std::string &filename)</td></tr>
-<tr class="separator:ae37a0309d2cce5d863ff7936d18cb071"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a06dcc2c4f48314be68ba453fb0200848"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a06dcc2c4f48314be68ba453fb0200848"></a>
-void </td><td class="memItemRight" valign="bottom"><b>open</b> (const std::string &filename)</td></tr>
-<tr class="separator:a06dcc2c4f48314be68ba453fb0200848"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af21a68b5ff450c583257c440a2009a4c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af21a68b5ff450c583257c440a2009a4c"></a>
-void </td><td class="memItemRight" valign="bottom"><b>close</b> (void)</td></tr>
-<tr class="separator:af21a68b5ff450c583257c440a2009a4c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1ee2908ff17f1542bb0288e577b950d3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1ee2908ff17f1542bb0288e577b950d3"></a>
-liblas::Header const & </td><td class="memItemRight" valign="bottom"><b>getHeader</b> () const </td></tr>
-<tr class="separator:a1ee2908ff17f1542bb0288e577b950d3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aeeabbb71f1e6158a73b476bde174d259"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeeabbb71f1e6158a73b476bde174d259"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>isCompressed</b> () const </td></tr>
-<tr class="separator:aeeabbb71f1e6158a73b476bde174d259"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3b43c718ff7b2c794b130ec298f040ea"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3b43c718ff7b2c794b130ec298f040ea"></a>
-unsigned long int </td><td class="memItemRight" valign="bottom"><b>getPointCount</b> () const </td></tr>
-<tr class="separator:a3b43c718ff7b2c794b130ec298f040ea"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a23468734215764bbe3812f9096e5d61e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a23468734215764bbe3812f9096e5d61e"></a>
-void </td><td class="memItemRight" valign="bottom"><b>las2ascii</b> (const std::string &filename, bool verbose=false) const </td></tr>
-<tr class="separator:a23468734215764bbe3812f9096e5d61e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a36141f3ec3a66f91d7244dbeed501f20"><td class="memTemplParams" colspan="2"><a class="anchor" id="a36141f3ec3a66f91d7244dbeed501f20"></a>
-template<typename T > </td></tr>
-<tr class="memitem:a36141f3ec3a66f91d7244dbeed501f20"><td class="memTemplItemLeft" align="right" valign="top">liblas::Bounds< T > </td><td class="memTemplItemRight" valign="bottom"><b>getExtent</b> () const </td></tr>
-<tr class="separator:a36141f3ec3a66f91d7244dbeed501f20"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0564667c68e217cd93ff16f1d2c56d60"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0564667c68e217cd93ff16f1d2c56d60"></a>
-void </td><td class="memItemRight" valign="bottom"><b>getExtent</b> (double &ulx, double &uly, double &lrx, double &lry) const </td></tr>
-<tr class="separator:a0564667c68e217cd93ff16f1d2c56d60"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a79dc690bee4732b8db700fd0cc8eed54"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a79dc690bee4732b8db700fd0cc8eed54"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getMinZ</b> () const </td></tr>
-<tr class="separator:a79dc690bee4732b8db700fd0cc8eed54"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a30de46acedef223cb690b37bb9d6c0ef"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a30de46acedef223cb690b37bb9d6c0ef"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getMaxZ</b> () const </td></tr>
-<tr class="separator:a30de46acedef223cb690b37bb9d6c0ef"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afd1e8132db8f988c4501594ca81e344b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afd1e8132db8f988c4501594ca81e344b"></a>
-void </td><td class="memItemRight" valign="bottom"><b>resetReader</b> ()</td></tr>
-<tr class="separator:afd1e8132db8f988c4501594ca81e344b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a956f0a575c228130adedddb45e32e10c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a956f0a575c228130adedddb45e32e10c"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setFilter</b> (std::vector< liblas::FilterPtr > const &filters)</td></tr>
-<tr class="separator:a956f0a575c228130adedddb45e32e10c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a613de8ba6507d0367059cb1b7833cd8a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a613de8ba6507d0367059cb1b7833cd8a"></a>
-bool const & </td><td class="memItemRight" valign="bottom"><b>readNextPoint</b> (liblas::Point &thePoint)</td></tr>
-<tr class="separator:a613de8ba6507d0367059cb1b7833cd8a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7586ac55b76168eff67b62495305669a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7586ac55b76168eff67b62495305669a"></a>
-liblas::Point const & </td><td class="memItemRight" valign="bottom"><b>readPointAt</b> (std::size_t n)</td></tr>
-<tr class="separator:a7586ac55b76168eff67b62495305669a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a059a9e1198eb2f5ebd3ddf87ad80b8b2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a059a9e1198eb2f5ebd3ddf87ad80b8b2"></a>
-void </td><td class="memItemRight" valign="bottom"><b>addReturnsFilter</b> (std::vector< unsigned short > const &returns)</td></tr>
-<tr class="separator:a059a9e1198eb2f5ebd3ddf87ad80b8b2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac441256f8c442561965024fcfc492d42"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac441256f8c442561965024fcfc492d42"></a>
-void </td><td class="memItemRight" valign="bottom"><b>addClassFilter</b> (std::vector< unsigned short > const &classes)</td></tr>
-<tr class="separator:ac441256f8c442561965024fcfc492d42"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4ff13f75bcaafa242a2122a7ee24972f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4ff13f75bcaafa242a2122a7ee24972f"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setFilters</b> (const std::vector< liblas::FilterPtr > &filters)</td></tr>
-<tr class="separator:a4ff13f75bcaafa242a2122a7ee24972f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab182aec4f01448cb2a694e787a9c1b05"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab182aec4f01448cb2a694e787a9c1b05"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setFilters</b> ()</td></tr>
-<tr class="separator:ab182aec4f01448cb2a694e787a9c1b05"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
-Protected Member Functions</h2></td></tr>
-<tr class="memitem:acd0aebb5e0266f81539631b849801e31"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acd0aebb5e0266f81539631b849801e31"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setCodec</b> (const std::string &filename)</td></tr>
-<tr class="separator:acd0aebb5e0266f81539631b849801e31"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
-Protected Attributes</h2></td></tr>
-<tr class="memitem:a445c470870dc82e9aee36f784b4dff50"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a445c470870dc82e9aee36f784b4dff50"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>m_filename</b></td></tr>
-<tr class="separator:a445c470870dc82e9aee36f784b4dff50"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0a1f31d075a538ed258ea923eabd93d7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0a1f31d075a538ed258ea923eabd93d7"></a>
-std::ifstream * </td><td class="memItemRight" valign="bottom"><b>m_ifstream</b></td></tr>
-<tr class="separator:a0a1f31d075a538ed258ea923eabd93d7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adaa2543c3222fd9633aaa28dee2384fa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adaa2543c3222fd9633aaa28dee2384fa"></a>
-liblas::Reader * </td><td class="memItemRight" valign="bottom"><b>m_reader</b></td></tr>
-<tr class="separator:adaa2543c3222fd9633aaa28dee2384fa"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aade0730001ee924d64a8f19784f8b035"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aade0730001ee924d64a8f19784f8b035"></a>
-std::vector< liblas::FilterPtr > </td><td class="memItemRight" valign="bottom"><b>m_filters</b></td></tr>
-<tr class="separator:aade0730001ee924d64a8f19784f8b035"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="FileReaderLas_8h_source.html#l00039">39</a> of file <a class="el" href="FileReaderLas_8h_source.html">FileReaderLas.h</a>.</p>
-</div><hr/>The documentation for this class was generated from the following files:<ul>
-<li>/home/kempenep/pktools/src/lasclasses/<a class="el" href="FileReaderLas_8h_source.html">FileReaderLas.h</a></li>
-<li>/home/kempenep/pktools/src/lasclasses/<a class="el" href="FileReaderLas_8cc_source.html">FileReaderLas.cc</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classFileReaderLas__coll__graph.map b/doc/html/classFileReaderLas__coll__graph.map
deleted file mode 100644
index 87552a4..0000000
--- a/doc/html/classFileReaderLas__coll__graph.map
+++ /dev/null
@@ -1,9 +0,0 @@
-<map id="FileReaderLas" name="FileReaderLas">
-<area shape="rect" id="node2" title="STL class. " alt="" coords="53,355,147,381"/>
-<area shape="rect" id="node3" title="STL class. " alt="" coords="16,254,149,295"/>
-<area shape="rect" id="node4" title="STL class. " alt="" coords="18,161,147,202"/>
-<area shape="rect" id="node5" title="STL class. " alt="" coords="5,83,159,109"/>
-<area shape="rect" id="node6" title="STL class. " alt="" coords="33,5,132,32"/>
-<area shape="rect" id="node7" title="STL class. " alt="" coords="191,355,269,381"/>
-<area shape="rect" id="node8" title="STL class. " alt="" coords="174,254,300,295"/>
-</map>
diff --git a/doc/html/classFileReaderLas__coll__graph.md5 b/doc/html/classFileReaderLas__coll__graph.md5
deleted file mode 100644
index fe2bb8a..0000000
--- a/doc/html/classFileReaderLas__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-1afe3686e6ad3c318206312bf340ef58
\ No newline at end of file
diff --git a/doc/html/classFileReaderLas__coll__graph.png b/doc/html/classFileReaderLas__coll__graph.png
deleted file mode 100644
index be84dc6..0000000
Binary files a/doc/html/classFileReaderLas__coll__graph.png and /dev/null differ
diff --git a/doc/html/classImgRasterGdal-members.html b/doc/html/classImgRasterGdal-members.html
deleted file mode 100644
index d0ba943..0000000
--- a/doc/html/classImgRasterGdal-members.html
+++ /dev/null
@@ -1,126 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">ImgRasterGdal Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>close</b>(void) (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>covers</b>(double x, double y) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>covers</b>(double ulx, double uly, double lrx, double lry) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>GDALSetNoDataValue</b>(double noDataValue, int band=0) (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>geo2image</b>(double x, double y, double &i, double &j) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getBoundingBox</b>(double &ulx, double &uly, double &lrx, double &lry) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getCenterPos</b>(double &x, double &y) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getColorTable</b>(int band=0) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getCompression</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getDataset</b>() (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getDataType</b>(int band=0) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getDeltaX</b>(void) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getDeltaY</b>(void) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getDescription</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getDriverDescription</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getFileName</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getGeoTransform</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getGeoTransform</b>(double *gt) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getImageDescription</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getImageType</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getInterleave</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getLrx</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getLry</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getMetadata</b>() (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getMetadata</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getMetadata</b>(std::list< std::string > &metadata) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getMetadataItem</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getNoDataValues</b>(std::vector< double > &noDataValues) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getProjection</b>(void) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getProjectionRef</b>(void) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getRasterBand</b>(int band=0) (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getUlx</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getUly</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>image2geo</b>(double i, double j, double &x, double &y) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ImgRasterGdal</b>(void) (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>ImgReaderGdal</b> (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ImgWriterGdal</b> (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>isGeoRef</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>isNoData</b>(double value) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_filename</b> (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_gds</b> (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_gt</b> (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_nband</b> (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_ncol</b> (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_noDataValues</b> (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_nrow</b> (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>nrOfBand</b>(void) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>nrOfCol</b>(void) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>nrOfRow</b>(void) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>pushNoDataValue</b>(double noDataValue) (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setNoData</b>(const std::vector< double > nodata) (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~ImgRasterGdal</b>(void) (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classImgRasterGdal.html b/doc/html/classImgRasterGdal.html
deleted file mode 100644
index cf229df..0000000
--- a/doc/html/classImgRasterGdal.html
+++ /dev/null
@@ -1,257 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: ImgRasterGdal Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-attribs">Protected Attributes</a> |
-<a href="#friends">Friends</a> |
-<a href="classImgRasterGdal-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">ImgRasterGdal Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for ImgRasterGdal:</div>
-<div class="dyncontent">
-<div class="center"><img src="classImgRasterGdal__inherit__graph.png" border="0" usemap="#ImgRasterGdal_inherit__map" alt="Inheritance graph"/></div>
-<map name="ImgRasterGdal_inherit__map" id="ImgRasterGdal_inherit__map">
-<area shape="rect" id="node2" href="classImgReaderGdal.html" title="ImgReaderGdal" alt="" coords="5,80,117,107"/><area shape="rect" id="node4" href="classImgWriterGdal.html" title="ImgWriterGdal" alt="" coords="143,80,249,107"/><area shape="rect" id="node3" href="classImgUpdaterGdal.html" title="ImgUpdaterGdal" alt="" coords="69,155,185,181"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for ImgRasterGdal:</div>
-<div class="dyncontent">
-<div class="center"><img src="classImgRasterGdal__coll__graph.png" border="0" usemap="#ImgRasterGdal_coll__map" alt="Collaboration graph"/></div>
-<map name="ImgRasterGdal_coll__map" id="ImgRasterGdal_coll__map">
-<area shape="rect" id="node2" title="STL class. " alt="" coords="28,99,107,125"/><area shape="rect" id="node3" title="STL class. " alt="" coords="5,6,131,47"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a0ccbeeacbc0839f9203bafeffacf7caa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0ccbeeacbc0839f9203bafeffacf7caa"></a>
-virtual void </td><td class="memItemRight" valign="bottom"><b>close</b> (void)</td></tr>
-<tr class="separator:a0ccbeeacbc0839f9203bafeffacf7caa"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4f5933f910448127c56479957cb97fd7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4f5933f910448127c56479957cb97fd7"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getFileName</b> () const </td></tr>
-<tr class="separator:a4f5933f910448127c56479957cb97fd7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1d03f1b73f8ca8efd9961da7450ed709"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1d03f1b73f8ca8efd9961da7450ed709"></a>
-int </td><td class="memItemRight" valign="bottom"><b>nrOfCol</b> (void) const </td></tr>
-<tr class="separator:a1d03f1b73f8ca8efd9961da7450ed709"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8faa9b6f13e729ae113c09549ebdae11"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8faa9b6f13e729ae113c09549ebdae11"></a>
-int </td><td class="memItemRight" valign="bottom"><b>nrOfRow</b> (void) const </td></tr>
-<tr class="separator:a8faa9b6f13e729ae113c09549ebdae11"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a11ed4fea3a57a37a622853dbbe5451b4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a11ed4fea3a57a37a622853dbbe5451b4"></a>
-int </td><td class="memItemRight" valign="bottom"><b>nrOfBand</b> (void) const </td></tr>
-<tr class="separator:a11ed4fea3a57a37a622853dbbe5451b4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab06ab3cd707396a4c587119e2e644946"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab06ab3cd707396a4c587119e2e644946"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>isGeoRef</b> () const </td></tr>
-<tr class="separator:ab06ab3cd707396a4c587119e2e644946"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aff912cb70261b8e466386fd48e44edb0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aff912cb70261b8e466386fd48e44edb0"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getProjection</b> (void) const </td></tr>
-<tr class="separator:aff912cb70261b8e466386fd48e44edb0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a29cfeaaff15425671904d03b92494e2f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a29cfeaaff15425671904d03b92494e2f"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getProjectionRef</b> (void) const </td></tr>
-<tr class="separator:a29cfeaaff15425671904d03b92494e2f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7bc9c3b0c68a33aee68d79b26b2b38c5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7bc9c3b0c68a33aee68d79b26b2b38c5"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getGeoTransform</b> () const </td></tr>
-<tr class="separator:a7bc9c3b0c68a33aee68d79b26b2b38c5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac95256e22afd8e841deb4eb62716d169"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac95256e22afd8e841deb4eb62716d169"></a>
-void </td><td class="memItemRight" valign="bottom"><b>getGeoTransform</b> (double *gt) const </td></tr>
-<tr class="separator:ac95256e22afd8e841deb4eb62716d169"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad529323a7b1470f88fcb76aebd1ae799"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad529323a7b1470f88fcb76aebd1ae799"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>getBoundingBox</b> (double &ulx, double &uly, double &lrx, double &lry) const </td></tr>
-<tr class="separator:ad529323a7b1470f88fcb76aebd1ae799"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1e618ae325f433cd0ecd84252b4abee0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1e618ae325f433cd0ecd84252b4abee0"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>getCenterPos</b> (double &x, double &y) const </td></tr>
-<tr class="separator:a1e618ae325f433cd0ecd84252b4abee0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a89aca8db1d2e0a7a6ab005ba3c71a2da"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a89aca8db1d2e0a7a6ab005ba3c71a2da"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getUlx</b> () const </td></tr>
-<tr class="separator:a89aca8db1d2e0a7a6ab005ba3c71a2da"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab4e5ec5a64ecc151445417eeecdab859"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab4e5ec5a64ecc151445417eeecdab859"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getUly</b> () const </td></tr>
-<tr class="separator:ab4e5ec5a64ecc151445417eeecdab859"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad354468d74356bc066426564f0d6dcc2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad354468d74356bc066426564f0d6dcc2"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getLrx</b> () const </td></tr>
-<tr class="separator:ad354468d74356bc066426564f0d6dcc2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac8fb5d16ecdd6ffb21f0cb5e0aa3775e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac8fb5d16ecdd6ffb21f0cb5e0aa3775e"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getLry</b> () const </td></tr>
-<tr class="separator:ac8fb5d16ecdd6ffb21f0cb5e0aa3775e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3f5882d5b3544bf5fcd353705d24d1a6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3f5882d5b3544bf5fcd353705d24d1a6"></a>
-int </td><td class="memItemRight" valign="bottom"><b>getNoDataValues</b> (std::vector< double > &noDataValues) const </td></tr>
-<tr class="separator:a3f5882d5b3544bf5fcd353705d24d1a6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a17693949c5bbd2fed20f0289dd62ff1e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a17693949c5bbd2fed20f0289dd62ff1e"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>isNoData</b> (double value) const </td></tr>
-<tr class="separator:a17693949c5bbd2fed20f0289dd62ff1e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa8c6781d58167b8c64618a0bb070889d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa8c6781d58167b8c64618a0bb070889d"></a>
-int </td><td class="memItemRight" valign="bottom"><b>pushNoDataValue</b> (double noDataValue)</td></tr>
-<tr class="separator:aa8c6781d58167b8c64618a0bb070889d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0c029d2179aec1f96dbcd3e403fa3bed"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0c029d2179aec1f96dbcd3e403fa3bed"></a>
-int </td><td class="memItemRight" valign="bottom"><b>setNoData</b> (const std::vector< double > nodata)</td></tr>
-<tr class="separator:a0c029d2179aec1f96dbcd3e403fa3bed"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab29f4dc977529bd5b12ee8a82a6ba325"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab29f4dc977529bd5b12ee8a82a6ba325"></a>
-CPLErr </td><td class="memItemRight" valign="bottom"><b>GDALSetNoDataValue</b> (double noDataValue, int band=0)</td></tr>
-<tr class="separator:ab29f4dc977529bd5b12ee8a82a6ba325"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab3bf668fc2bbfc75cffb31be86782e3e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab3bf668fc2bbfc75cffb31be86782e3e"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>covers</b> (double x, double y) const </td></tr>
-<tr class="separator:ab3bf668fc2bbfc75cffb31be86782e3e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2b9c235dac00eb642c7fb357900bb4ea"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2b9c235dac00eb642c7fb357900bb4ea"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>covers</b> (double ulx, double uly, double lrx, double lry) const </td></tr>
-<tr class="separator:a2b9c235dac00eb642c7fb357900bb4ea"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa5adb11c20fc7544b864a57cf1dfae72"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa5adb11c20fc7544b864a57cf1dfae72"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>geo2image</b> (double x, double y, double &i, double &j) const </td></tr>
-<tr class="separator:aa5adb11c20fc7544b864a57cf1dfae72"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab401949cc9faf0d8dbfca300b50d3812"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab401949cc9faf0d8dbfca300b50d3812"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>image2geo</b> (double i, double j, double &x, double &y) const </td></tr>
-<tr class="separator:ab401949cc9faf0d8dbfca300b50d3812"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a07442232ef794eaa96cf0f96538c3a76"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a07442232ef794eaa96cf0f96538c3a76"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getDeltaX</b> (void) const </td></tr>
-<tr class="separator:a07442232ef794eaa96cf0f96538c3a76"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a43746347238dadb4e18dffd77c0aecd8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a43746347238dadb4e18dffd77c0aecd8"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getDeltaY</b> (void) const </td></tr>
-<tr class="separator:a43746347238dadb4e18dffd77c0aecd8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a82a8664dd3281cbd6cb710116f9fce38"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a82a8664dd3281cbd6cb710116f9fce38"></a>
-GDALDataType </td><td class="memItemRight" valign="bottom"><b>getDataType</b> (int band=0) const </td></tr>
-<tr class="separator:a82a8664dd3281cbd6cb710116f9fce38"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a355771835d7a0c941d3a42e76dd0f4ae"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a355771835d7a0c941d3a42e76dd0f4ae"></a>
-GDALRasterBand * </td><td class="memItemRight" valign="bottom"><b>getRasterBand</b> (int band=0)</td></tr>
-<tr class="separator:a355771835d7a0c941d3a42e76dd0f4ae"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a24ded5779fef37794008f519a6638f63"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a24ded5779fef37794008f519a6638f63"></a>
-GDALColorTable * </td><td class="memItemRight" valign="bottom"><b>getColorTable</b> (int band=0) const </td></tr>
-<tr class="separator:a24ded5779fef37794008f519a6638f63"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a069d7a03c4c4cbb311534b1e061a59c9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a069d7a03c4c4cbb311534b1e061a59c9"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getDriverDescription</b> () const </td></tr>
-<tr class="separator:a069d7a03c4c4cbb311534b1e061a59c9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab84afa6974996363f4f004c9e8ed6c9a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab84afa6974996363f4f004c9e8ed6c9a"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getImageType</b> () const </td></tr>
-<tr class="separator:ab84afa6974996363f4f004c9e8ed6c9a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac648aeea3051b17663c1666bfb7b9ba2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac648aeea3051b17663c1666bfb7b9ba2"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getInterleave</b> () const </td></tr>
-<tr class="separator:ac648aeea3051b17663c1666bfb7b9ba2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3d6931927354087f333f68f5d70197c8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3d6931927354087f333f68f5d70197c8"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getCompression</b> () const </td></tr>
-<tr class="separator:a3d6931927354087f333f68f5d70197c8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a129dff26f65af24f6d006dae9f43dbba"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a129dff26f65af24f6d006dae9f43dbba"></a>
-GDALDataset * </td><td class="memItemRight" valign="bottom"><b>getDataset</b> ()</td></tr>
-<tr class="separator:a129dff26f65af24f6d006dae9f43dbba"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a412899cba08baf1a1630951afffdc6dd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a412899cba08baf1a1630951afffdc6dd"></a>
-char ** </td><td class="memItemRight" valign="bottom"><b>getMetadata</b> ()</td></tr>
-<tr class="separator:a412899cba08baf1a1630951afffdc6dd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a43f9dfcb1724e88c86f7bb1f0a5fe236"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a43f9dfcb1724e88c86f7bb1f0a5fe236"></a>
-char ** </td><td class="memItemRight" valign="bottom"><b>getMetadata</b> () const </td></tr>
-<tr class="separator:a43f9dfcb1724e88c86f7bb1f0a5fe236"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0c1a1664962b9ccd05ed9bcf7a118011"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0c1a1664962b9ccd05ed9bcf7a118011"></a>
-void </td><td class="memItemRight" valign="bottom"><b>getMetadata</b> (std::list< std::string > &metadata) const </td></tr>
-<tr class="separator:a0c1a1664962b9ccd05ed9bcf7a118011"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab599dad8573f2ac24302fdb339b1005a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab599dad8573f2ac24302fdb339b1005a"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getDescription</b> () const </td></tr>
-<tr class="separator:ab599dad8573f2ac24302fdb339b1005a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a592538d7aeb7622acb20cc3d81ed1dcc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a592538d7aeb7622acb20cc3d81ed1dcc"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getMetadataItem</b> () const </td></tr>
-<tr class="separator:a592538d7aeb7622acb20cc3d81ed1dcc"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a057a5b1bc4bd5bc391962f154b2bb747"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a057a5b1bc4bd5bc391962f154b2bb747"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getImageDescription</b> () const </td></tr>
-<tr class="separator:a057a5b1bc4bd5bc391962f154b2bb747"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
-Protected Attributes</h2></td></tr>
-<tr class="memitem:a3257f4db7418fde0a0d3caf2a1d179a1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3257f4db7418fde0a0d3caf2a1d179a1"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>m_filename</b></td></tr>
-<tr class="separator:a3257f4db7418fde0a0d3caf2a1d179a1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a49ef42e3d2cde64af9cfc00646b28f3b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a49ef42e3d2cde64af9cfc00646b28f3b"></a>
-GDALDataset * </td><td class="memItemRight" valign="bottom"><b>m_gds</b></td></tr>
-<tr class="separator:a49ef42e3d2cde64af9cfc00646b28f3b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a28f5fd5bdcd3e50ddd5f1b68ad8d31d7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a28f5fd5bdcd3e50ddd5f1b68ad8d31d7"></a>
-int </td><td class="memItemRight" valign="bottom"><b>m_ncol</b></td></tr>
-<tr class="separator:a28f5fd5bdcd3e50ddd5f1b68ad8d31d7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a78b8a391b58e4268da9b4c88e7ecf962"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a78b8a391b58e4268da9b4c88e7ecf962"></a>
-int </td><td class="memItemRight" valign="bottom"><b>m_nrow</b></td></tr>
-<tr class="separator:a78b8a391b58e4268da9b4c88e7ecf962"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a208157846765615d4495a73bada30740"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a208157846765615d4495a73bada30740"></a>
-int </td><td class="memItemRight" valign="bottom"><b>m_nband</b></td></tr>
-<tr class="separator:a208157846765615d4495a73bada30740"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ade28d4208d3a77f112aa6a190b9e38f6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ade28d4208d3a77f112aa6a190b9e38f6"></a>
-double </td><td class="memItemRight" valign="bottom"><b>m_gt</b> [6]</td></tr>
-<tr class="separator:ade28d4208d3a77f112aa6a190b9e38f6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9154b4b3d6ef24dd1d922b3caab9b295"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9154b4b3d6ef24dd1d922b3caab9b295"></a>
-std::vector< double > </td><td class="memItemRight" valign="bottom"><b>m_noDataValues</b></td></tr>
-<tr class="separator:a9154b4b3d6ef24dd1d922b3caab9b295"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:a1ec466419b00f89d4f3f7e40b01133e0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1ec466419b00f89d4f3f7e40b01133e0"></a>
-class </td><td class="memItemRight" valign="bottom"><b>ImgReaderGdal</b></td></tr>
-<tr class="separator:a1ec466419b00f89d4f3f7e40b01133e0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a62edd8747cdf0432b983352769a7cd67"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a62edd8747cdf0432b983352769a7cd67"></a>
-class </td><td class="memItemRight" valign="bottom"><b>ImgWriterGdal</b></td></tr>
-<tr class="separator:a62edd8747cdf0432b983352769a7cd67"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="ImgRasterGdal_8h_source.html#l00035">35</a> of file <a class="el" href="ImgRasterGdal_8h_source.html">ImgRasterGdal.h</a>.</p>
-</div><hr/>The documentation for this class was generated from the following files:<ul>
-<li>/home/kempenep/pktools/src/imageclasses/<a class="el" href="ImgRasterGdal_8h_source.html">ImgRasterGdal.h</a></li>
-<li>/home/kempenep/pktools/src/imageclasses/<a class="el" href="ImgRasterGdal_8cc_source.html">ImgRasterGdal.cc</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classImgRasterGdal__coll__graph.map b/doc/html/classImgRasterGdal__coll__graph.map
deleted file mode 100644
index 0279384..0000000
--- a/doc/html/classImgRasterGdal__coll__graph.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="ImgRasterGdal" name="ImgRasterGdal">
-<area shape="rect" id="node2" title="STL class. " alt="" coords="28,99,107,125"/>
-<area shape="rect" id="node3" title="STL class. " alt="" coords="5,6,131,47"/>
-</map>
diff --git a/doc/html/classImgRasterGdal__coll__graph.md5 b/doc/html/classImgRasterGdal__coll__graph.md5
deleted file mode 100644
index 4bf16fe..0000000
--- a/doc/html/classImgRasterGdal__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-5b5c3a71fa87a01e9c39c0db77fd07fd
\ No newline at end of file
diff --git a/doc/html/classImgRasterGdal__coll__graph.png b/doc/html/classImgRasterGdal__coll__graph.png
deleted file mode 100644
index 4168048..0000000
Binary files a/doc/html/classImgRasterGdal__coll__graph.png and /dev/null differ
diff --git a/doc/html/classImgRasterGdal__inherit__graph.map b/doc/html/classImgRasterGdal__inherit__graph.map
deleted file mode 100644
index f4c104a..0000000
--- a/doc/html/classImgRasterGdal__inherit__graph.map
+++ /dev/null
@@ -1,5 +0,0 @@
-<map id="ImgRasterGdal" name="ImgRasterGdal">
-<area shape="rect" id="node2" href="$classImgReaderGdal.html" title="ImgReaderGdal" alt="" coords="5,80,117,107"/>
-<area shape="rect" id="node4" href="$classImgWriterGdal.html" title="ImgWriterGdal" alt="" coords="143,80,249,107"/>
-<area shape="rect" id="node3" href="$classImgUpdaterGdal.html" title="ImgUpdaterGdal" alt="" coords="69,155,185,181"/>
-</map>
diff --git a/doc/html/classImgRasterGdal__inherit__graph.md5 b/doc/html/classImgRasterGdal__inherit__graph.md5
deleted file mode 100644
index 03a0204..0000000
--- a/doc/html/classImgRasterGdal__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-6107fee37f4417b85195e24e883a7da3
\ No newline at end of file
diff --git a/doc/html/classImgRasterGdal__inherit__graph.png b/doc/html/classImgRasterGdal__inherit__graph.png
deleted file mode 100644
index c6d7831..0000000
Binary files a/doc/html/classImgRasterGdal__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classImgReaderGdal-members.html b/doc/html/classImgReaderGdal-members.html
deleted file mode 100644
index c8611a4..0000000
--- a/doc/html/classImgReaderGdal-members.html
+++ /dev/null
@@ -1,148 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">ImgReaderGdal Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>close</b>(void) (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>covers</b>(double x, double y) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>covers</b>(double ulx, double uly, double lrx, double lry) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>GDALSetNoDataValue</b>(double noDataValue, int band=0) (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>geo2image</b>(double x, double y, double &i, double &j) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getBoundingBox</b>(double &ulx, double &uly, double &lrx, double &lry) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getCenterPos</b>(double &x, double &y) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getColorTable</b>(int band=0) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getCompression</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getDataset</b>() (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getDataType</b>(int band=0) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getDeltaX</b>(void) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getDeltaY</b>(void) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getDescription</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getDriverDescription</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getFileName</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getGeoTransform</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getGeoTransform</b>(double *gt) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getHistogram</b>(std::vector< double > &histvector, double &min, double &max, unsigned int &nbin, int theBand=0, bool kde=false) (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getImageDescription</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getImageType</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getInterleave</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getLrx</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getLry</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getMax</b>(int &col, int &row, int band=0) const  (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getMetadata</b>() (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getMetadata</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getMetadata</b>(std::list< std::string > &metadata) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getMetadataItem</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getMin</b>(int &col, int &row, int band=0) const  (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getMinMax</b>(int startCol, int endCol, int startRow, int endRow, int band, double &minValue, double &maxValue) const  (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getMinMax</b>(double &minValue, double &maxValue, int band=0) const  (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getNoDataValues</b>(std::vector< double > &noDataValues) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getNvalid</b>(int band) const  (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getProjection</b>(void) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getProjectionRef</b>(void) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getRange</b>(std::vector< short > &range, int Band=0) const  (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getRasterBand</b>(int band=0) (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getRefPix</b>(double &refX, double &refY, int band=0) const  (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getUlx</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getUly</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>image2geo</b>(double i, double j, double &x, double &y) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ImgRasterGdal</b>(void) (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>ImgReaderGdal</b>(void) (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ImgReaderGdal</b>(const std::string &filename, const GDALAccess &readMode=GA_ReadOnly) (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>isGeoRef</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>isNoData</b>(double value) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_filename</b> (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_gds</b> (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_gt</b> (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_nband</b> (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_ncol</b> (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_noDataValues</b> (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_nrow</b> (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_offset</b> (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_scale</b> (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>nrOfBand</b>(void) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>nrOfCol</b>(void) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>nrOfRow</b>(void) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>open</b>(const std::string &filename, const GDALAccess &readMode=GA_ReadOnly) (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pushNoDataValue</b>(double noDataValue) (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>readData</b>(T &value, const GDALDataType &dataType, int col, int row, int band=0) const  (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>readData</b>(std::vector< T > &buffer, const GDALDataType &dataType, int minCol, int maxCol, int row, int band=0) const  (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>readData</b>(std::vector< T > &buffer, const GDALDataType &dataType, int minCol, int maxCol, double row, int band=0, RESAMPLE resample=NEAR) const  (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>readData</b>(std::vector< T > &buffer, const GDALDataType &dataType, int row, int band=0) const  (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>readData</b>(std::vector< T > &buffer, const GDALDataType &dataType, double row, int band=0, RESAMPLE resample=NEAR) const  (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>readDataBlock</b>(Vector2d< T > &buffer, const GDALDataType &dataType, int minCol, int maxCol, int minRow, int maxRow, int band=0) const  (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>readDataBlock</b>(std::vector< T > &buffer, const GDALDataType &dataType, int minCol, int maxCol, int minRow, int maxRow, int band=0) const  (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setCodec</b>(const GDALAccess &readMode=GA_ReadOnly) (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setNoData</b>(const std::vector< double > nodata) (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setOffset</b>(double theOffset, int band=0) (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setScale</b>(double theScale, int band=0) (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~ImgRasterGdal</b>(void) (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~ImgReaderGdal</b>(void) (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classImgReaderGdal.html b/doc/html/classImgReaderGdal.html
deleted file mode 100644
index dc3fafd..0000000
--- a/doc/html/classImgReaderGdal.html
+++ /dev/null
@@ -1,326 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: ImgReaderGdal Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-methods">Protected Member Functions</a> |
-<a href="#pro-attribs">Protected Attributes</a> |
-<a href="classImgReaderGdal-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">ImgReaderGdal Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for ImgReaderGdal:</div>
-<div class="dyncontent">
-<div class="center"><img src="classImgReaderGdal__inherit__graph.png" border="0" usemap="#ImgReaderGdal_inherit__map" alt="Inheritance graph"/></div>
-<map name="ImgReaderGdal_inherit__map" id="ImgReaderGdal_inherit__map">
-<area shape="rect" id="node3" href="classImgUpdaterGdal.html" title="ImgUpdaterGdal" alt="" coords="4,155,120,181"/><area shape="rect" id="node2" href="classImgRasterGdal.html" title="ImgRasterGdal" alt="" coords="7,5,117,32"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for ImgReaderGdal:</div>
-<div class="dyncontent">
-<div class="center"><img src="classImgReaderGdal__coll__graph.png" border="0" usemap="#ImgReaderGdal_coll__map" alt="Collaboration graph"/></div>
-<map name="ImgReaderGdal_coll__map" id="ImgReaderGdal_coll__map">
-<area shape="rect" id="node2" href="classImgRasterGdal.html" title="ImgRasterGdal" alt="" coords="115,191,225,217"/><area shape="rect" id="node3" title="STL class. " alt="" coords="28,99,107,125"/><area shape="rect" id="node4" title="STL class. " alt="" coords="5,6,131,47"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:ae716a3d2335a4ed5fed24d9c27a252a0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae716a3d2335a4ed5fed24d9c27a252a0"></a>
- </td><td class="memItemRight" valign="bottom"><b>ImgReaderGdal</b> (const std::string &filename, const GDALAccess &readMode=GA_ReadOnly)</td></tr>
-<tr class="separator:ae716a3d2335a4ed5fed24d9c27a252a0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7f708e38ed0670d8f300ea323c3b7044"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7f708e38ed0670d8f300ea323c3b7044"></a>
-void </td><td class="memItemRight" valign="bottom"><b>open</b> (const std::string &filename, const GDALAccess &readMode=GA_ReadOnly)</td></tr>
-<tr class="separator:a7f708e38ed0670d8f300ea323c3b7044"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a514f33e43765374b9599891fae12a6c5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a514f33e43765374b9599891fae12a6c5"></a>
-void </td><td class="memItemRight" valign="bottom"><b>close</b> (void)</td></tr>
-<tr class="separator:a514f33e43765374b9599891fae12a6c5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afac21441e51d39beb3ab5d282cd9f12e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afac21441e51d39beb3ab5d282cd9f12e"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setScale</b> (double theScale, int band=0)</td></tr>
-<tr class="separator:afac21441e51d39beb3ab5d282cd9f12e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a332975068d99166b81001a5c656022bf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a332975068d99166b81001a5c656022bf"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setOffset</b> (double theOffset, int band=0)</td></tr>
-<tr class="separator:a332975068d99166b81001a5c656022bf"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aba4280eff30003c827bb2567a6bc3400"><td class="memTemplParams" colspan="2"><a class="anchor" id="aba4280eff30003c827bb2567a6bc3400"></a>
-template<typename T > </td></tr>
-<tr class="memitem:aba4280eff30003c827bb2567a6bc3400"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>readData</b> (T &value, const GDALDataType &dataType, int col, int row, int band=0) const </td></tr>
-<tr class="separator:aba4280eff30003c827bb2567a6bc3400"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a682f256062b021ee5771346e2fda2d1d"><td class="memTemplParams" colspan="2"><a class="anchor" id="a682f256062b021ee5771346e2fda2d1d"></a>
-template<typename T > </td></tr>
-<tr class="memitem:a682f256062b021ee5771346e2fda2d1d"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>readData</b> (std::vector< T > &buffer, const GDALDataType &dataType, int minCol, int maxCol, int row, int band=0) const </td></tr>
-<tr class="separator:a682f256062b021ee5771346e2fda2d1d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a349279f8b3511dada0faa9924fbcabbb"><td class="memTemplParams" colspan="2"><a class="anchor" id="a349279f8b3511dada0faa9924fbcabbb"></a>
-template<typename T > </td></tr>
-<tr class="memitem:a349279f8b3511dada0faa9924fbcabbb"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>readData</b> (std::vector< T > &buffer, const GDALDataType &dataType, int minCol, int maxCol, double row, int band=0, RESAMPLE resample=NEAR) const </td></tr>
-<tr class="separator:a349279f8b3511dada0faa9924fbcabbb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae7a60c67b86a4355af5a59c1e66be9cd"><td class="memTemplParams" colspan="2"><a class="anchor" id="ae7a60c67b86a4355af5a59c1e66be9cd"></a>
-template<typename T > </td></tr>
-<tr class="memitem:ae7a60c67b86a4355af5a59c1e66be9cd"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>readDataBlock</b> (<a class="el" href="classVector2d.html">Vector2d</a>< T > &buffer, const GDALDataType &dataType, int minCol, int maxCol, int minRow, int maxRow, int band=0) const </td></tr>
-<tr class="separator:ae7a60c67b86a4355af5a59c1e66be9cd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3d95ea1de4434d7a5051c9f03aaac884"><td class="memTemplParams" colspan="2"><a class="anchor" id="a3d95ea1de4434d7a5051c9f03aaac884"></a>
-template<typename T > </td></tr>
-<tr class="memitem:a3d95ea1de4434d7a5051c9f03aaac884"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>readDataBlock</b> (std::vector< T > &buffer, const GDALDataType &dataType, int minCol, int maxCol, int minRow, int maxRow, int band=0) const </td></tr>
-<tr class="separator:a3d95ea1de4434d7a5051c9f03aaac884"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7ac0d1bc28c4fd320c22f18ef602455c"><td class="memTemplParams" colspan="2"><a class="anchor" id="a7ac0d1bc28c4fd320c22f18ef602455c"></a>
-template<typename T > </td></tr>
-<tr class="memitem:a7ac0d1bc28c4fd320c22f18ef602455c"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>readData</b> (std::vector< T > &buffer, const GDALDataType &dataType, int row, int band=0) const </td></tr>
-<tr class="separator:a7ac0d1bc28c4fd320c22f18ef602455c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aad577cce450bb39b8ff7507bc0d86651"><td class="memTemplParams" colspan="2"><a class="anchor" id="aad577cce450bb39b8ff7507bc0d86651"></a>
-template<typename T > </td></tr>
-<tr class="memitem:aad577cce450bb39b8ff7507bc0d86651"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>readData</b> (std::vector< T > &buffer, const GDALDataType &dataType, double row, int band=0, RESAMPLE resample=NEAR) const </td></tr>
-<tr class="separator:aad577cce450bb39b8ff7507bc0d86651"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a591b1f2f78eacc0fd0d772e24996c6b9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a591b1f2f78eacc0fd0d772e24996c6b9"></a>
-void </td><td class="memItemRight" valign="bottom"><b>getMinMax</b> (int startCol, int endCol, int startRow, int endRow, int band, double &minValue, double &maxValue) const </td></tr>
-<tr class="separator:a591b1f2f78eacc0fd0d772e24996c6b9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a933dc688de9cc87eeae20530412a82d9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a933dc688de9cc87eeae20530412a82d9"></a>
-void </td><td class="memItemRight" valign="bottom"><b>getMinMax</b> (double &minValue, double &maxValue, int band=0) const </td></tr>
-<tr class="separator:a933dc688de9cc87eeae20530412a82d9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a40a36fbaa00190aa5a758ec034369d3d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a40a36fbaa00190aa5a758ec034369d3d"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getMin</b> (int &col, int &row, int band=0) const </td></tr>
-<tr class="separator:a40a36fbaa00190aa5a758ec034369d3d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa4c5fb8c1132c2a52d97681d9f272387"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa4c5fb8c1132c2a52d97681d9f272387"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getHistogram</b> (std::vector< double > &histvector, double &min, double &max, unsigned int &nbin, int theBand=0, bool kde=false)</td></tr>
-<tr class="separator:aa4c5fb8c1132c2a52d97681d9f272387"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a44ca88cd5917979f184bb14f9c7f6eed"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a44ca88cd5917979f184bb14f9c7f6eed"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getMax</b> (int &col, int &row, int band=0) const </td></tr>
-<tr class="separator:a44ca88cd5917979f184bb14f9c7f6eed"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4ded019b9c6ef1b13feef6b9a08d92ab"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4ded019b9c6ef1b13feef6b9a08d92ab"></a>
-void </td><td class="memItemRight" valign="bottom"><b>getRefPix</b> (double &refX, double &refY, int band=0) const </td></tr>
-<tr class="separator:a4ded019b9c6ef1b13feef6b9a08d92ab"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a906d020847b442de59059c99c8ec7cfb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a906d020847b442de59059c99c8ec7cfb"></a>
-void </td><td class="memItemRight" valign="bottom"><b>getRange</b> (std::vector< short > &range, int Band=0) const </td></tr>
-<tr class="separator:a906d020847b442de59059c99c8ec7cfb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a864413c529506b8753c450e5316a814b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a864413c529506b8753c450e5316a814b"></a>
-unsigned long int </td><td class="memItemRight" valign="bottom"><b>getNvalid</b> (int band) const </td></tr>
-<tr class="separator:a864413c529506b8753c450e5316a814b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_classImgRasterGdal"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classImgRasterGdal')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td></tr>
-<tr class="memitem:a4f5933f910448127c56479957cb97fd7 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4f5933f910448127c56479957cb97fd7"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getFileName</b> () const </td></tr>
-<tr class="separator:a4f5933f910448127c56479957cb97fd7 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1d03f1b73f8ca8efd9961da7450ed709 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1d03f1b73f8ca8efd9961da7450ed709"></a>
-int </td><td class="memItemRight" valign="bottom"><b>nrOfCol</b> (void) const </td></tr>
-<tr class="separator:a1d03f1b73f8ca8efd9961da7450ed709 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8faa9b6f13e729ae113c09549ebdae11 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8faa9b6f13e729ae113c09549ebdae11"></a>
-int </td><td class="memItemRight" valign="bottom"><b>nrOfRow</b> (void) const </td></tr>
-<tr class="separator:a8faa9b6f13e729ae113c09549ebdae11 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a11ed4fea3a57a37a622853dbbe5451b4 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a11ed4fea3a57a37a622853dbbe5451b4"></a>
-int </td><td class="memItemRight" valign="bottom"><b>nrOfBand</b> (void) const </td></tr>
-<tr class="separator:a11ed4fea3a57a37a622853dbbe5451b4 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab06ab3cd707396a4c587119e2e644946 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab06ab3cd707396a4c587119e2e644946"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>isGeoRef</b> () const </td></tr>
-<tr class="separator:ab06ab3cd707396a4c587119e2e644946 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aff912cb70261b8e466386fd48e44edb0 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aff912cb70261b8e466386fd48e44edb0"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getProjection</b> (void) const </td></tr>
-<tr class="separator:aff912cb70261b8e466386fd48e44edb0 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a29cfeaaff15425671904d03b92494e2f inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a29cfeaaff15425671904d03b92494e2f"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getProjectionRef</b> (void) const </td></tr>
-<tr class="separator:a29cfeaaff15425671904d03b92494e2f inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7bc9c3b0c68a33aee68d79b26b2b38c5 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7bc9c3b0c68a33aee68d79b26b2b38c5"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getGeoTransform</b> () const </td></tr>
-<tr class="separator:a7bc9c3b0c68a33aee68d79b26b2b38c5 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac95256e22afd8e841deb4eb62716d169 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac95256e22afd8e841deb4eb62716d169"></a>
-void </td><td class="memItemRight" valign="bottom"><b>getGeoTransform</b> (double *gt) const </td></tr>
-<tr class="separator:ac95256e22afd8e841deb4eb62716d169 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad529323a7b1470f88fcb76aebd1ae799 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad529323a7b1470f88fcb76aebd1ae799"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>getBoundingBox</b> (double &ulx, double &uly, double &lrx, double &lry) const </td></tr>
-<tr class="separator:ad529323a7b1470f88fcb76aebd1ae799 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1e618ae325f433cd0ecd84252b4abee0 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1e618ae325f433cd0ecd84252b4abee0"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>getCenterPos</b> (double &x, double &y) const </td></tr>
-<tr class="separator:a1e618ae325f433cd0ecd84252b4abee0 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a89aca8db1d2e0a7a6ab005ba3c71a2da inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a89aca8db1d2e0a7a6ab005ba3c71a2da"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getUlx</b> () const </td></tr>
-<tr class="separator:a89aca8db1d2e0a7a6ab005ba3c71a2da inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab4e5ec5a64ecc151445417eeecdab859 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab4e5ec5a64ecc151445417eeecdab859"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getUly</b> () const </td></tr>
-<tr class="separator:ab4e5ec5a64ecc151445417eeecdab859 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad354468d74356bc066426564f0d6dcc2 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad354468d74356bc066426564f0d6dcc2"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getLrx</b> () const </td></tr>
-<tr class="separator:ad354468d74356bc066426564f0d6dcc2 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac8fb5d16ecdd6ffb21f0cb5e0aa3775e inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac8fb5d16ecdd6ffb21f0cb5e0aa3775e"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getLry</b> () const </td></tr>
-<tr class="separator:ac8fb5d16ecdd6ffb21f0cb5e0aa3775e inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3f5882d5b3544bf5fcd353705d24d1a6 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3f5882d5b3544bf5fcd353705d24d1a6"></a>
-int </td><td class="memItemRight" valign="bottom"><b>getNoDataValues</b> (std::vector< double > &noDataValues) const </td></tr>
-<tr class="separator:a3f5882d5b3544bf5fcd353705d24d1a6 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a17693949c5bbd2fed20f0289dd62ff1e inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a17693949c5bbd2fed20f0289dd62ff1e"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>isNoData</b> (double value) const </td></tr>
-<tr class="separator:a17693949c5bbd2fed20f0289dd62ff1e inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa8c6781d58167b8c64618a0bb070889d inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa8c6781d58167b8c64618a0bb070889d"></a>
-int </td><td class="memItemRight" valign="bottom"><b>pushNoDataValue</b> (double noDataValue)</td></tr>
-<tr class="separator:aa8c6781d58167b8c64618a0bb070889d inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0c029d2179aec1f96dbcd3e403fa3bed inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0c029d2179aec1f96dbcd3e403fa3bed"></a>
-int </td><td class="memItemRight" valign="bottom"><b>setNoData</b> (const std::vector< double > nodata)</td></tr>
-<tr class="separator:a0c029d2179aec1f96dbcd3e403fa3bed inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab29f4dc977529bd5b12ee8a82a6ba325 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab29f4dc977529bd5b12ee8a82a6ba325"></a>
-CPLErr </td><td class="memItemRight" valign="bottom"><b>GDALSetNoDataValue</b> (double noDataValue, int band=0)</td></tr>
-<tr class="separator:ab29f4dc977529bd5b12ee8a82a6ba325 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab3bf668fc2bbfc75cffb31be86782e3e inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab3bf668fc2bbfc75cffb31be86782e3e"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>covers</b> (double x, double y) const </td></tr>
-<tr class="separator:ab3bf668fc2bbfc75cffb31be86782e3e inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2b9c235dac00eb642c7fb357900bb4ea inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2b9c235dac00eb642c7fb357900bb4ea"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>covers</b> (double ulx, double uly, double lrx, double lry) const </td></tr>
-<tr class="separator:a2b9c235dac00eb642c7fb357900bb4ea inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa5adb11c20fc7544b864a57cf1dfae72 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa5adb11c20fc7544b864a57cf1dfae72"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>geo2image</b> (double x, double y, double &i, double &j) const </td></tr>
-<tr class="separator:aa5adb11c20fc7544b864a57cf1dfae72 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab401949cc9faf0d8dbfca300b50d3812 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab401949cc9faf0d8dbfca300b50d3812"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>image2geo</b> (double i, double j, double &x, double &y) const </td></tr>
-<tr class="separator:ab401949cc9faf0d8dbfca300b50d3812 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a07442232ef794eaa96cf0f96538c3a76 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a07442232ef794eaa96cf0f96538c3a76"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getDeltaX</b> (void) const </td></tr>
-<tr class="separator:a07442232ef794eaa96cf0f96538c3a76 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a43746347238dadb4e18dffd77c0aecd8 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a43746347238dadb4e18dffd77c0aecd8"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getDeltaY</b> (void) const </td></tr>
-<tr class="separator:a43746347238dadb4e18dffd77c0aecd8 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a82a8664dd3281cbd6cb710116f9fce38 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a82a8664dd3281cbd6cb710116f9fce38"></a>
-GDALDataType </td><td class="memItemRight" valign="bottom"><b>getDataType</b> (int band=0) const </td></tr>
-<tr class="separator:a82a8664dd3281cbd6cb710116f9fce38 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a355771835d7a0c941d3a42e76dd0f4ae inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a355771835d7a0c941d3a42e76dd0f4ae"></a>
-GDALRasterBand * </td><td class="memItemRight" valign="bottom"><b>getRasterBand</b> (int band=0)</td></tr>
-<tr class="separator:a355771835d7a0c941d3a42e76dd0f4ae inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a24ded5779fef37794008f519a6638f63 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a24ded5779fef37794008f519a6638f63"></a>
-GDALColorTable * </td><td class="memItemRight" valign="bottom"><b>getColorTable</b> (int band=0) const </td></tr>
-<tr class="separator:a24ded5779fef37794008f519a6638f63 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a069d7a03c4c4cbb311534b1e061a59c9 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a069d7a03c4c4cbb311534b1e061a59c9"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getDriverDescription</b> () const </td></tr>
-<tr class="separator:a069d7a03c4c4cbb311534b1e061a59c9 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab84afa6974996363f4f004c9e8ed6c9a inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab84afa6974996363f4f004c9e8ed6c9a"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getImageType</b> () const </td></tr>
-<tr class="separator:ab84afa6974996363f4f004c9e8ed6c9a inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac648aeea3051b17663c1666bfb7b9ba2 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac648aeea3051b17663c1666bfb7b9ba2"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getInterleave</b> () const </td></tr>
-<tr class="separator:ac648aeea3051b17663c1666bfb7b9ba2 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3d6931927354087f333f68f5d70197c8 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3d6931927354087f333f68f5d70197c8"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getCompression</b> () const </td></tr>
-<tr class="separator:a3d6931927354087f333f68f5d70197c8 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a129dff26f65af24f6d006dae9f43dbba inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a129dff26f65af24f6d006dae9f43dbba"></a>
-GDALDataset * </td><td class="memItemRight" valign="bottom"><b>getDataset</b> ()</td></tr>
-<tr class="separator:a129dff26f65af24f6d006dae9f43dbba inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a412899cba08baf1a1630951afffdc6dd inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a412899cba08baf1a1630951afffdc6dd"></a>
-char ** </td><td class="memItemRight" valign="bottom"><b>getMetadata</b> ()</td></tr>
-<tr class="separator:a412899cba08baf1a1630951afffdc6dd inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a43f9dfcb1724e88c86f7bb1f0a5fe236 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a43f9dfcb1724e88c86f7bb1f0a5fe236"></a>
-char ** </td><td class="memItemRight" valign="bottom"><b>getMetadata</b> () const </td></tr>
-<tr class="separator:a43f9dfcb1724e88c86f7bb1f0a5fe236 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0c1a1664962b9ccd05ed9bcf7a118011 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0c1a1664962b9ccd05ed9bcf7a118011"></a>
-void </td><td class="memItemRight" valign="bottom"><b>getMetadata</b> (std::list< std::string > &metadata) const </td></tr>
-<tr class="separator:a0c1a1664962b9ccd05ed9bcf7a118011 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab599dad8573f2ac24302fdb339b1005a inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab599dad8573f2ac24302fdb339b1005a"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getDescription</b> () const </td></tr>
-<tr class="separator:ab599dad8573f2ac24302fdb339b1005a inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a592538d7aeb7622acb20cc3d81ed1dcc inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a592538d7aeb7622acb20cc3d81ed1dcc"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getMetadataItem</b> () const </td></tr>
-<tr class="separator:a592538d7aeb7622acb20cc3d81ed1dcc inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a057a5b1bc4bd5bc391962f154b2bb747 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a057a5b1bc4bd5bc391962f154b2bb747"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getImageDescription</b> () const </td></tr>
-<tr class="separator:a057a5b1bc4bd5bc391962f154b2bb747 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
-Protected Member Functions</h2></td></tr>
-<tr class="memitem:a0ef3ab9026b7370331af948828b0f0a7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0ef3ab9026b7370331af948828b0f0a7"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setCodec</b> (const GDALAccess &readMode=GA_ReadOnly)</td></tr>
-<tr class="separator:a0ef3ab9026b7370331af948828b0f0a7"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
-Protected Attributes</h2></td></tr>
-<tr class="memitem:a7f327201ee3ee410786afb86109c66c2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7f327201ee3ee410786afb86109c66c2"></a>
-std::vector< double > </td><td class="memItemRight" valign="bottom"><b>m_scale</b></td></tr>
-<tr class="separator:a7f327201ee3ee410786afb86109c66c2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa7d02f9e74d645875c68486fd1cfee9f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa7d02f9e74d645875c68486fd1cfee9f"></a>
-std::vector< double > </td><td class="memItemRight" valign="bottom"><b>m_offset</b></td></tr>
-<tr class="separator:aa7d02f9e74d645875c68486fd1cfee9f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pro_attribs_classImgRasterGdal"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classImgRasterGdal')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td></tr>
-<tr class="memitem:a3257f4db7418fde0a0d3caf2a1d179a1 inherit pro_attribs_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3257f4db7418fde0a0d3caf2a1d179a1"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>m_filename</b></td></tr>
-<tr class="separator:a3257f4db7418fde0a0d3caf2a1d179a1 inherit pro_attribs_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a49ef42e3d2cde64af9cfc00646b28f3b inherit pro_attribs_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a49ef42e3d2cde64af9cfc00646b28f3b"></a>
-GDALDataset * </td><td class="memItemRight" valign="bottom"><b>m_gds</b></td></tr>
-<tr class="separator:a49ef42e3d2cde64af9cfc00646b28f3b inherit pro_attribs_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a28f5fd5bdcd3e50ddd5f1b68ad8d31d7 inherit pro_attribs_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a28f5fd5bdcd3e50ddd5f1b68ad8d31d7"></a>
-int </td><td class="memItemRight" valign="bottom"><b>m_ncol</b></td></tr>
-<tr class="separator:a28f5fd5bdcd3e50ddd5f1b68ad8d31d7 inherit pro_attribs_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a78b8a391b58e4268da9b4c88e7ecf962 inherit pro_attribs_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a78b8a391b58e4268da9b4c88e7ecf962"></a>
-int </td><td class="memItemRight" valign="bottom"><b>m_nrow</b></td></tr>
-<tr class="separator:a78b8a391b58e4268da9b4c88e7ecf962 inherit pro_attribs_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a208157846765615d4495a73bada30740 inherit pro_attribs_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a208157846765615d4495a73bada30740"></a>
-int </td><td class="memItemRight" valign="bottom"><b>m_nband</b></td></tr>
-<tr class="separator:a208157846765615d4495a73bada30740 inherit pro_attribs_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ade28d4208d3a77f112aa6a190b9e38f6 inherit pro_attribs_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ade28d4208d3a77f112aa6a190b9e38f6"></a>
-double </td><td class="memItemRight" valign="bottom"><b>m_gt</b> [6]</td></tr>
-<tr class="separator:ade28d4208d3a77f112aa6a190b9e38f6 inherit pro_attribs_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9154b4b3d6ef24dd1d922b3caab9b295 inherit pro_attribs_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9154b4b3d6ef24dd1d922b3caab9b295"></a>
-std::vector< double > </td><td class="memItemRight" valign="bottom"><b>m_noDataValues</b></td></tr>
-<tr class="separator:a9154b4b3d6ef24dd1d922b3caab9b295 inherit pro_attribs_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="ImgReaderGdal_8h_source.html#l00032">32</a> of file <a class="el" href="ImgReaderGdal_8h_source.html">ImgReaderGdal.h</a>.</p>
-</div><hr/>The documentation for this class was generated from the following files:<ul>
-<li>/home/kempenep/pktools/src/imageclasses/<a class="el" href="ImgReaderGdal_8h_source.html">ImgReaderGdal.h</a></li>
-<li>/home/kempenep/pktools/src/imageclasses/<a class="el" href="ImgReaderGdal_8cc_source.html">ImgReaderGdal.cc</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classImgReaderGdal__coll__graph.map b/doc/html/classImgReaderGdal__coll__graph.map
deleted file mode 100644
index d891e9d..0000000
--- a/doc/html/classImgReaderGdal__coll__graph.map
+++ /dev/null
@@ -1,5 +0,0 @@
-<map id="ImgReaderGdal" name="ImgReaderGdal">
-<area shape="rect" id="node2" href="$classImgRasterGdal.html" title="ImgRasterGdal" alt="" coords="115,191,225,217"/>
-<area shape="rect" id="node3" title="STL class. " alt="" coords="28,99,107,125"/>
-<area shape="rect" id="node4" title="STL class. " alt="" coords="5,6,131,47"/>
-</map>
diff --git a/doc/html/classImgReaderGdal__coll__graph.md5 b/doc/html/classImgReaderGdal__coll__graph.md5
deleted file mode 100644
index 9e29f48..0000000
--- a/doc/html/classImgReaderGdal__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-f678d91443c884ac22b260f318d6676b
\ No newline at end of file
diff --git a/doc/html/classImgReaderGdal__coll__graph.png b/doc/html/classImgReaderGdal__coll__graph.png
deleted file mode 100644
index 243510e..0000000
Binary files a/doc/html/classImgReaderGdal__coll__graph.png and /dev/null differ
diff --git a/doc/html/classImgReaderGdal__inherit__graph.map b/doc/html/classImgReaderGdal__inherit__graph.map
deleted file mode 100644
index 85c37ba..0000000
--- a/doc/html/classImgReaderGdal__inherit__graph.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="ImgReaderGdal" name="ImgReaderGdal">
-<area shape="rect" id="node3" href="$classImgUpdaterGdal.html" title="ImgUpdaterGdal" alt="" coords="4,155,120,181"/>
-<area shape="rect" id="node2" href="$classImgRasterGdal.html" title="ImgRasterGdal" alt="" coords="7,5,117,32"/>
-</map>
diff --git a/doc/html/classImgReaderGdal__inherit__graph.md5 b/doc/html/classImgReaderGdal__inherit__graph.md5
deleted file mode 100644
index 4ef7d9c..0000000
--- a/doc/html/classImgReaderGdal__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-9e99f02914c34ccf4dabd913c84e35b4
\ No newline at end of file
diff --git a/doc/html/classImgReaderGdal__inherit__graph.png b/doc/html/classImgReaderGdal__inherit__graph.png
deleted file mode 100644
index c060a0c..0000000
Binary files a/doc/html/classImgReaderGdal__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classImgReaderOgr-members.html b/doc/html/classImgReaderOgr-members.html
deleted file mode 100644
index d052c46..0000000
--- a/doc/html/classImgReaderOgr-members.html
+++ /dev/null
@@ -1,111 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">ImgReaderOgr Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>close</b>(void) (defined in <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>)</td><td class="entry"><a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getDataSource</b>(void) (defined in <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>)</td><td class="entry"><a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getDriver</b>(void) const  (defined in <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>)</td><td class="entry"><a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getExtent</b>(double &ulx, double &uly, double &lrx, double &lry, int layer) (defined in <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>)</td><td class="entry"><a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getExtent</b>(double &ulx, double &uly, double &lrx, double &lry) (defined in <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>)</td><td class="entry"><a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getFeatureCount</b>(int layer=0) const  (defined in <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>)</td><td class="entry"><a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getFieldCount</b>(int layer=0) const  (defined in <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>)</td><td class="entry"><a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getFields</b>(std::vector< std::string > &fields, int layer=0) const  (defined in <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>)</td><td class="entry"><a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getFields</b>(std::vector< OGRFieldDefn * > &fields, int layer=0) const  (defined in <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>)</td><td class="entry"><a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getFieldSeparator</b>() const  (defined in <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>)</td><td class="entry"><a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getGeometryType</b>(int layer=0) const  (defined in <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>)</td><td class="entry"><a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getLayer</b>(int layer=0) (defined in <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>)</td><td class="entry"><a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getLayerCount</b>(void) const  (defined in <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>)</td><td class="entry"><a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getLayerName</b>(int layer=0) (defined in <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>)</td><td class="entry"><a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getProjection</b>(int layer=0) const  (defined in <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>)</td><td class="entry"><a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>ImgReaderOgr</b>(void) (defined in <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>)</td><td class="entry"><a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ImgReaderOgr</b>(const std::string &filename) (defined in <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>)</td><td class="entry"><a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_datasource</b> (defined in <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>)</td><td class="entry"><a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_filename</b> (defined in <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>)</td><td class="entry"><a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_fs</b> (defined in <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>)</td><td class="entry"><a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>open</b>(const std::string &filename) (defined in <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>)</td><td class="entry"><a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator<<</b> (defined in <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>)</td><td class="entry"><a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>readData</b>(std::vector< T > &data, const OGRFieldType &fieldType, std::vector< std::string > &fields, OGRFeature *poFeature, int layer=0, bool pos=false, bool verbose=false) (defined in <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>)</td><td class="entry"><a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>readData</b>(std::vector< T > &data, const OGRFieldType &fieldType, const std::string &theField, int layer=0, bool verbose=false) (defined in <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>)</td><td class="entry"><a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>readData</b>(Vector2d< T > &data, const OGRFieldType &fieldType, std::vector< std::string > &fields, int layer=0, bool pos=false, bool verbose=false) (defined in <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>)</td><td class="entry"><a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>readData</b>(std::map< int, Vector2d< T > > &data, const OGRFieldType &fieldType, std::vector< std::string > &fields, const std::string &label, int layer=0, bool pos=false, bool verbose=false) (defined in <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>)</td><td class="entry"><a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>readData</b>(std::map< std::string, Vector2d< T > > &data, const OGRFieldType &fieldType, std::vector< std::string > &fields, const std::string &label, int layer=0, bool pos=false, bool verbose=false) (defined in <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>)</td><td class="entry"><a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>readData</b>(std::vector< std::string > &data, const OGRFieldType &fieldType, const std::string &theField, int layer, bool verbose) (defined in <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>)</td><td class="entry"><a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>readDataImageOgr</b>(std::map< std::string, Vector2d< float > > &mapPixels, std::vector< std::string > &fields, const std::vector< unsigned short > &bands, const std::string &label, const std::vector< std::string > &layers, int verbose=false) (defined in <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>)</td><td class="entry"><a class="el" href="classImgReaderOgr.html">I [...]
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>readDataImageOgr</b>(std::map< std::string, Vector2d< float > > &mapPixels, std::vector< std::string > &fields, double start, double end, const std::string &label, const std::vector< std::string > &layers, int verbose=false) (defined in <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>)</td><td class="entry"><a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>readSql</b>(Vector2d< T > &data, const OGRFieldType &fieldType, std::vector< std::string > &fields, const std::string &sqlStatement, OGRGeometry *spatialFilter=NULL, int layer=0, bool pos=false, bool verbose=false) (defined in <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>)</td><td class="entry"><a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>readSql</b>(std::map< int, Vector2d< T > > &data, const OGRFieldType &fieldType, std::vector< std::string > &fields, const std::string &label, const std::string &sqlStatement, OGRGeometry *spatialFilter, int layer=0, bool pos=false, bool verbose=false) (defined in <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>)</td><td class="entry"><a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a> [...]
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>readXY</b>(std::vector< T > &xVector, std::vector< T > &yVector, int layer=0, bool verbose=false) (defined in <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>)</td><td class="entry"><a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>readY</b>(std::vector< T > &yVector, int layer=0, bool verbose=false) (defined in <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>)</td><td class="entry"><a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setCodec</b>(void) (defined in <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>)</td><td class="entry"><a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setFieldSeparator</b>(const char fs) (defined in <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>)</td><td class="entry"><a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~ImgReaderOgr</b>(void) (defined in <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>)</td><td class="entry"><a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classImgReaderOgr.html b/doc/html/classImgReaderOgr.html
deleted file mode 100644
index 59f85f7..0000000
--- a/doc/html/classImgReaderOgr.html
+++ /dev/null
@@ -1,219 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: ImgReaderOgr Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-methods">Protected Member Functions</a> |
-<a href="#pro-attribs">Protected Attributes</a> |
-<a href="#friends">Friends</a> |
-<a href="classImgReaderOgr-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">ImgReaderOgr Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Collaboration diagram for ImgReaderOgr:</div>
-<div class="dyncontent">
-<div class="center"><img src="classImgReaderOgr__coll__graph.png" border="0" usemap="#ImgReaderOgr_coll__map" alt="Collaboration graph"/></div>
-<map name="ImgReaderOgr_coll__map" id="ImgReaderOgr_coll__map">
-<area shape="rect" id="node2" title="STL class. " alt="" coords="28,99,107,125"/><area shape="rect" id="node3" title="STL class. " alt="" coords="5,6,131,47"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a94fec0d12bb1fd34e4ae2adce153dd57"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a94fec0d12bb1fd34e4ae2adce153dd57"></a>
- </td><td class="memItemRight" valign="bottom"><b>ImgReaderOgr</b> (const std::string &filename)</td></tr>
-<tr class="separator:a94fec0d12bb1fd34e4ae2adce153dd57"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9578a174fcdc8f7972a7bcb86b0a2c7c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9578a174fcdc8f7972a7bcb86b0a2c7c"></a>
-void </td><td class="memItemRight" valign="bottom"><b>open</b> (const std::string &filename)</td></tr>
-<tr class="separator:a9578a174fcdc8f7972a7bcb86b0a2c7c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a69f4540287e25651a60c264d10fbe4cf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a69f4540287e25651a60c264d10fbe4cf"></a>
-void </td><td class="memItemRight" valign="bottom"><b>close</b> (void)</td></tr>
-<tr class="separator:a69f4540287e25651a60c264d10fbe4cf"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9c07df2a840a6794999c672d5d2c2ad6"><td class="memTemplParams" colspan="2"><a class="anchor" id="a9c07df2a840a6794999c672d5d2c2ad6"></a>
-template<typename T > </td></tr>
-<tr class="memitem:a9c07df2a840a6794999c672d5d2c2ad6"><td class="memTemplItemLeft" align="right" valign="top">int </td><td class="memTemplItemRight" valign="bottom"><b>readXY</b> (std::vector< T > &xVector, std::vector< T > &yVector, int layer=0, bool verbose=false)</td></tr>
-<tr class="separator:a9c07df2a840a6794999c672d5d2c2ad6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a286a2705dd21e60b0c2e7c2903d6b81c"><td class="memTemplParams" colspan="2"><a class="anchor" id="a286a2705dd21e60b0c2e7c2903d6b81c"></a>
-template<typename T > </td></tr>
-<tr class="memitem:a286a2705dd21e60b0c2e7c2903d6b81c"><td class="memTemplItemLeft" align="right" valign="top">int </td><td class="memTemplItemRight" valign="bottom"><b>readY</b> (std::vector< T > &yVector, int layer=0, bool verbose=false)</td></tr>
-<tr class="separator:a286a2705dd21e60b0c2e7c2903d6b81c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acfbf5900ca1501b94d587380fedb9743"><td class="memTemplParams" colspan="2"><a class="anchor" id="acfbf5900ca1501b94d587380fedb9743"></a>
-template<typename T > </td></tr>
-<tr class="memitem:acfbf5900ca1501b94d587380fedb9743"><td class="memTemplItemLeft" align="right" valign="top">int </td><td class="memTemplItemRight" valign="bottom"><b>readData</b> (std::vector< T > &data, const OGRFieldType &fieldType, std::vector< std::string > &fields, OGRFeature *poFeature, int layer=0, bool pos=false, bool verbose=false)</td></tr>
-<tr class="separator:acfbf5900ca1501b94d587380fedb9743"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a11d378cfa7f1cf3fe7d58c91ffc3cdf2"><td class="memTemplParams" colspan="2"><a class="anchor" id="a11d378cfa7f1cf3fe7d58c91ffc3cdf2"></a>
-template<typename T > </td></tr>
-<tr class="memitem:a11d378cfa7f1cf3fe7d58c91ffc3cdf2"><td class="memTemplItemLeft" align="right" valign="top">int </td><td class="memTemplItemRight" valign="bottom"><b>readData</b> (std::vector< T > &data, const OGRFieldType &fieldType, const std::string &theField, int layer=0, bool verbose=false)</td></tr>
-<tr class="separator:a11d378cfa7f1cf3fe7d58c91ffc3cdf2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a13b71d20a6c57d4a59644a1167c5b10d"><td class="memTemplParams" colspan="2"><a class="anchor" id="a13b71d20a6c57d4a59644a1167c5b10d"></a>
-template<typename T > </td></tr>
-<tr class="memitem:a13b71d20a6c57d4a59644a1167c5b10d"><td class="memTemplItemLeft" align="right" valign="top">int </td><td class="memTemplItemRight" valign="bottom"><b>readData</b> (<a class="el" href="classVector2d.html">Vector2d</a>< T > &data, const OGRFieldType &fieldType, std::vector< std::string > &fields, int layer=0, bool pos=false, bool verbose=false)</td></tr>
-<tr class="separator:a13b71d20a6c57d4a59644a1167c5b10d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5b75ce947dad5821be9e702f6e548b54"><td class="memTemplParams" colspan="2"><a class="anchor" id="a5b75ce947dad5821be9e702f6e548b54"></a>
-template<typename T > </td></tr>
-<tr class="memitem:a5b75ce947dad5821be9e702f6e548b54"><td class="memTemplItemLeft" align="right" valign="top">int </td><td class="memTemplItemRight" valign="bottom"><b>readData</b> (std::map< int, <a class="el" href="classVector2d.html">Vector2d</a>< T > > &data, const OGRFieldType &fieldType, std::vector< std::string > &fields, const std::string &label, int layer=0, bool pos=false, bool verbose=false)</td></tr>
-<tr class="separator:a5b75ce947dad5821be9e702f6e548b54"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a727233009401acf559927884f956c960"><td class="memTemplParams" colspan="2"><a class="anchor" id="a727233009401acf559927884f956c960"></a>
-template<typename T > </td></tr>
-<tr class="memitem:a727233009401acf559927884f956c960"><td class="memTemplItemLeft" align="right" valign="top">int </td><td class="memTemplItemRight" valign="bottom"><b>readData</b> (std::map< std::string, <a class="el" href="classVector2d.html">Vector2d</a>< T > > &data, const OGRFieldType &fieldType, std::vector< std::string > &fields, const std::string &label, int layer=0, bool pos=false, bool verbose=false)</td></tr>
-<tr class="separator:a727233009401acf559927884f956c960"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a959371a0be15902ce68ff3a5f37ad950"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a959371a0be15902ce68ff3a5f37ad950"></a>
-unsigned int </td><td class="memItemRight" valign="bottom"><b>readDataImageOgr</b> (std::map< std::string, <a class="el" href="classVector2d.html">Vector2d</a>< float > > &mapPixels, std::vector< std::string > &fields, const std::vector< unsigned short > &bands, const std::string &label, const std::vector< std::string > &layers, int verbose=false)</td></tr>
-<tr class="separator:a959371a0be15902ce68ff3a5f37ad950"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1d15d5e9ac84c21eba3c026afe125afb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1d15d5e9ac84c21eba3c026afe125afb"></a>
-unsigned int </td><td class="memItemRight" valign="bottom"><b>readDataImageOgr</b> (std::map< std::string, <a class="el" href="classVector2d.html">Vector2d</a>< float > > &mapPixels, std::vector< std::string > &fields, double start, double end, const std::string &label, const std::vector< std::string > &layers, int verbose=false)</td></tr>
-<tr class="separator:a1d15d5e9ac84c21eba3c026afe125afb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9e4a42329f61e713956a01e25fbdfd1e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9e4a42329f61e713956a01e25fbdfd1e"></a>
-unsigned long int </td><td class="memItemRight" valign="bottom"><b>getFeatureCount</b> (int layer=0) const </td></tr>
-<tr class="separator:a9e4a42329f61e713956a01e25fbdfd1e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa3f6c6942d2cda416c56d0da6035fba6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa3f6c6942d2cda416c56d0da6035fba6"></a>
-int </td><td class="memItemRight" valign="bottom"><b>getFieldCount</b> (int layer=0) const </td></tr>
-<tr class="separator:aa3f6c6942d2cda416c56d0da6035fba6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5b76e4b26f67408ae6466f1b594aca98"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5b76e4b26f67408ae6466f1b594aca98"></a>
-OGRLayer * </td><td class="memItemRight" valign="bottom"><b>getLayer</b> (int layer=0)</td></tr>
-<tr class="separator:a5b76e4b26f67408ae6466f1b594aca98"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad564401b1069233c1a9c6cfef3cb7bde"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad564401b1069233c1a9c6cfef3cb7bde"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getProjection</b> (int layer=0) const </td></tr>
-<tr class="separator:ad564401b1069233c1a9c6cfef3cb7bde"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab007e9cd6bd6584cb4bd2af2b4ee46ed"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab007e9cd6bd6584cb4bd2af2b4ee46ed"></a>
-OGRwkbGeometryType </td><td class="memItemRight" valign="bottom"><b>getGeometryType</b> (int layer=0) const </td></tr>
-<tr class="separator:ab007e9cd6bd6584cb4bd2af2b4ee46ed"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af3263eeab80039bc1c11ae325bcaa63a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af3263eeab80039bc1c11ae325bcaa63a"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getLayerName</b> (int layer=0)</td></tr>
-<tr class="separator:af3263eeab80039bc1c11ae325bcaa63a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac3223730305d29f98e9f790ebb29e65a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac3223730305d29f98e9f790ebb29e65a"></a>
-int </td><td class="memItemRight" valign="bottom"><b>getFields</b> (std::vector< std::string > &fields, int layer=0) const </td></tr>
-<tr class="separator:ac3223730305d29f98e9f790ebb29e65a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac68fdf56b605133e1d38f7570a94c479"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac68fdf56b605133e1d38f7570a94c479"></a>
-int </td><td class="memItemRight" valign="bottom"><b>getFields</b> (std::vector< OGRFieldDefn * > &fields, int layer=0) const </td></tr>
-<tr class="separator:ac68fdf56b605133e1d38f7570a94c479"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a688e1d39b3a8ba2c790fda1d42e8b7b7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a688e1d39b3a8ba2c790fda1d42e8b7b7"></a>
-OGRDataSource * </td><td class="memItemRight" valign="bottom"><b>getDataSource</b> (void)</td></tr>
-<tr class="separator:a688e1d39b3a8ba2c790fda1d42e8b7b7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a504972f7088ecb61cf9a4e28340ff1f7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a504972f7088ecb61cf9a4e28340ff1f7"></a>
-OGRSFDriver * </td><td class="memItemRight" valign="bottom"><b>getDriver</b> (void) const </td></tr>
-<tr class="separator:a504972f7088ecb61cf9a4e28340ff1f7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8d1768efc19b910788ef52841d9075ed"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8d1768efc19b910788ef52841d9075ed"></a>
-int </td><td class="memItemRight" valign="bottom"><b>getLayerCount</b> (void) const </td></tr>
-<tr class="separator:a8d1768efc19b910788ef52841d9075ed"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a53d980642dc048b3fabce1e5948abd64"><td class="memTemplParams" colspan="2"><a class="anchor" id="a53d980642dc048b3fabce1e5948abd64"></a>
-template<typename T > </td></tr>
-<tr class="memitem:a53d980642dc048b3fabce1e5948abd64"><td class="memTemplItemLeft" align="right" valign="top">int </td><td class="memTemplItemRight" valign="bottom"><b>readSql</b> (<a class="el" href="classVector2d.html">Vector2d</a>< T > &data, const OGRFieldType &fieldType, std::vector< std::string > &fields, const std::string &sqlStatement, OGRGeometry *spatialFilter=NULL, int layer=0, bool pos=false, bool verbose=false)</td></tr>
-<tr class="separator:a53d980642dc048b3fabce1e5948abd64"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a92e19ff3fdfa7e130708215c83521b5f"><td class="memTemplParams" colspan="2"><a class="anchor" id="a92e19ff3fdfa7e130708215c83521b5f"></a>
-template<typename T > </td></tr>
-<tr class="memitem:a92e19ff3fdfa7e130708215c83521b5f"><td class="memTemplItemLeft" align="right" valign="top">int </td><td class="memTemplItemRight" valign="bottom"><b>readSql</b> (std::map< int, <a class="el" href="classVector2d.html">Vector2d</a>< T > > &data, const OGRFieldType &fieldType, std::vector< std::string > &fields, const std::string &label, const std::string &sqlStatement, OGRGeometry *spatialFilter, int layer=0, bool pos=false, boo [...]
-<tr class="separator:a92e19ff3fdfa7e130708215c83521b5f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae2d0e4255c3f856e1e9fdf72294705df"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae2d0e4255c3f856e1e9fdf72294705df"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>getExtent</b> (double &ulx, double &uly, double &lrx, double &lry, int layer)</td></tr>
-<tr class="separator:ae2d0e4255c3f856e1e9fdf72294705df"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac697fc6e9dde91b3ac769df23e265ba2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac697fc6e9dde91b3ac769df23e265ba2"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>getExtent</b> (double &ulx, double &uly, double &lrx, double &lry)</td></tr>
-<tr class="separator:ac697fc6e9dde91b3ac769df23e265ba2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a05b2fdedd8982d3ddf766c4b288a127e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a05b2fdedd8982d3ddf766c4b288a127e"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setFieldSeparator</b> (const char fs)</td></tr>
-<tr class="separator:a05b2fdedd8982d3ddf766c4b288a127e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4235bf3f4ca39d99f33fbe920749bc77"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4235bf3f4ca39d99f33fbe920749bc77"></a>
-char </td><td class="memItemRight" valign="bottom"><b>getFieldSeparator</b> () const </td></tr>
-<tr class="separator:a4235bf3f4ca39d99f33fbe920749bc77"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a92c43d575cda30e8b23f79367676e429"><td class="memTemplParams" colspan="2"><a class="anchor" id="a92c43d575cda30e8b23f79367676e429"></a>
-template<> </td></tr>
-<tr class="memitem:a92c43d575cda30e8b23f79367676e429"><td class="memTemplItemLeft" align="right" valign="top">int </td><td class="memTemplItemRight" valign="bottom"><b>readData</b> (std::vector< std::string > &data, const OGRFieldType &fieldType, const std::string &theField, int layer, bool verbose)</td></tr>
-<tr class="separator:a92c43d575cda30e8b23f79367676e429"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
-Protected Member Functions</h2></td></tr>
-<tr class="memitem:ae20d07a076ba6b4bbc64180387ad3475"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae20d07a076ba6b4bbc64180387ad3475"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setCodec</b> (void)</td></tr>
-<tr class="separator:ae20d07a076ba6b4bbc64180387ad3475"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
-Protected Attributes</h2></td></tr>
-<tr class="memitem:a071a6270bfc16b5a85e93c82ff7f3ab8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a071a6270bfc16b5a85e93c82ff7f3ab8"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>m_filename</b></td></tr>
-<tr class="separator:a071a6270bfc16b5a85e93c82ff7f3ab8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9eac7a1fb64f0380292247dae2601223"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9eac7a1fb64f0380292247dae2601223"></a>
-OGRDataSource * </td><td class="memItemRight" valign="bottom"><b>m_datasource</b></td></tr>
-<tr class="separator:a9eac7a1fb64f0380292247dae2601223"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a328e2b2d8f97f0bdd1cca04a8f22e3a5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a328e2b2d8f97f0bdd1cca04a8f22e3a5"></a>
-char </td><td class="memItemRight" valign="bottom"><b>m_fs</b></td></tr>
-<tr class="separator:a328e2b2d8f97f0bdd1cca04a8f22e3a5"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:a52ec57bf90bd0d91bf00b96c3d645648"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a52ec57bf90bd0d91bf00b96c3d645648"></a>
-std::ostream & </td><td class="memItemRight" valign="bottom"><b>operator<<</b> (std::ostream &theOstream, <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a> &theImageReader)</td></tr>
-<tr class="separator:a52ec57bf90bd0d91bf00b96c3d645648"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="ImgReaderOgr_8h_source.html#l00035">35</a> of file <a class="el" href="ImgReaderOgr_8h_source.html">ImgReaderOgr.h</a>.</p>
-</div><hr/>The documentation for this class was generated from the following files:<ul>
-<li>/home/kempenep/pktools/src/imageclasses/<a class="el" href="ImgReaderOgr_8h_source.html">ImgReaderOgr.h</a></li>
-<li>/home/kempenep/pktools/src/imageclasses/<a class="el" href="ImgReaderOgr_8cc_source.html">ImgReaderOgr.cc</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classImgReaderOgr__coll__graph.map b/doc/html/classImgReaderOgr__coll__graph.map
deleted file mode 100644
index 29b68d4..0000000
--- a/doc/html/classImgReaderOgr__coll__graph.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="ImgReaderOgr" name="ImgReaderOgr">
-<area shape="rect" id="node2" title="STL class. " alt="" coords="28,99,107,125"/>
-<area shape="rect" id="node3" title="STL class. " alt="" coords="5,6,131,47"/>
-</map>
diff --git a/doc/html/classImgReaderOgr__coll__graph.md5 b/doc/html/classImgReaderOgr__coll__graph.md5
deleted file mode 100644
index e474047..0000000
--- a/doc/html/classImgReaderOgr__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-a7b2b3b91bc53ca3661c7ad39dd3aa5c
\ No newline at end of file
diff --git a/doc/html/classImgReaderOgr__coll__graph.png b/doc/html/classImgReaderOgr__coll__graph.png
deleted file mode 100644
index ee7506d..0000000
Binary files a/doc/html/classImgReaderOgr__coll__graph.png and /dev/null differ
diff --git a/doc/html/classImgUpdaterGdal-members.html b/doc/html/classImgUpdaterGdal-members.html
deleted file mode 100644
index a798287..0000000
--- a/doc/html/classImgUpdaterGdal-members.html
+++ /dev/null
@@ -1,178 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">ImgUpdaterGdal Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>close</b>(void) (defined in <a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a>)</td><td class="entry"><a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>close</b>(void) (defined in <a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a>)</td><td class="entry"><a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>copyGeoTransform</b>(const ImgReaderGdal &imgSrc) (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>covers</b>(double x, double y) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>covers</b>(double ulx, double uly, double lrx, double lry) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>GDALSetNoDataValue</b>(double noDataValue, int band=0) (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>geo2image</b>(double x, double y, double &i, double &j) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getBoundingBox</b>(double &ulx, double &uly, double &lrx, double &lry) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getCenterPos</b>(double &x, double &y) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getColorTable</b>(int band=0) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getCompression</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getDataset</b>() (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getDataType</b>(int band=0) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getDeltaX</b>(void) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getDeltaY</b>(void) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getDescription</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getDriverDescription</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getFileName</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getGeoTransform</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getGeoTransform</b>(double *gt) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getHistogram</b>(std::vector< double > &histvector, double &min, double &max, unsigned int &nbin, int theBand=0, bool kde=false) (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getImageDescription</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getImageType</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getInterleave</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getLrx</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getLry</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getMax</b>(int &col, int &row, int band=0) const  (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getMetadata</b>() (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getMetadata</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getMetadata</b>(std::list< std::string > &metadata) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getMetadataItem</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getMin</b>(int &col, int &row, int band=0) const  (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getMinMax</b>(int startCol, int endCol, int startRow, int endRow, int band, double &minValue, double &maxValue) const  (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getMinMax</b>(double &minValue, double &maxValue, int band=0) const  (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getNoDataValues</b>(std::vector< double > &noDataValues) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getNvalid</b>(int band) const  (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getProjection</b>(void) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getProjectionRef</b>(void) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getRange</b>(std::vector< short > &range, int Band=0) const  (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getRasterBand</b>(int band=0) (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getRefPix</b>(double &refX, double &refY, int band=0) const  (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getUlx</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getUly</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>image2geo</b>(double i, double j, double &x, double &y) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ImgRasterGdal</b>(void) (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>ImgReaderGdal</b>(void) (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ImgReaderGdal</b>(const std::string &filename, const GDALAccess &readMode=GA_ReadOnly) (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>ImgUpdaterGdal</b>(void) (defined in <a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a>)</td><td class="entry"><a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ImgUpdaterGdal</b>(const std::string &filename) (defined in <a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a>)</td><td class="entry"><a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>ImgUpdaterGdal</b>(void) (defined in <a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a>)</td><td class="entry"><a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ImgUpdaterGdal</b>(const std::string &filename, const GDALAccess &readMode=GA_Update) (defined in <a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a>)</td><td class="entry"><a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>ImgWriterGdal</b>(void) (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>isGeoRef</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>isNoData</b>(double value) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_filename</b> (defined in <a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a>)</td><td class="entry"><a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_gds</b> (defined in <a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a>)</td><td class="entry"><a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_gt</b> (defined in <a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a>)</td><td class="entry"><a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_nband</b> (defined in <a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a>)</td><td class="entry"><a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_ncol</b> (defined in <a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a>)</td><td class="entry"><a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_noDataValues</b> (defined in <a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a>)</td><td class="entry"><a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_nrow</b> (defined in <a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a>)</td><td class="entry"><a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_offset</b> (defined in <a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a>)</td><td class="entry"><a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_options</b> (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_scale</b> (defined in <a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a>)</td><td class="entry"><a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>nrOfBand</b>(void) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>nrOfCol</b>(void) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>nrOfRow</b>(void) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>open</b>(const std::string &filename) (defined in <a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a>)</td><td class="entry"><a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>open</b>(const std::string &filename, const GDALAccess &readMode=GA_Update) (defined in <a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a>)</td><td class="entry"><a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>open</b>(const std::string &filename, const ImgReaderGdal &imgSrc, const std::vector< std::string > &options=std::vector< std::string >()) (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>open</b>(const std::string &filename, int ncol, int nrow, int nband, const GDALDataType &dataType, const std::string &imageType, const std::vector< std::string > &options=std::vector< std::string >()) (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>pushNoDataValue</b>(double noDataValue) (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>rasterizeOgr</b>(ImgReaderOgr &ogrReader, const std::vector< double > &burnValues=std::vector< double >(), const std::vector< std::string > &layernames=std::vector< std::string >()) (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>readData</b>(T &value, const GDALDataType &dataType, int col, int row, int band=0) const  (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>readData</b>(std::vector< T > &buffer, const GDALDataType &dataType, int minCol, int maxCol, int row, int band=0) const  (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>readData</b>(std::vector< T > &buffer, const GDALDataType &dataType, int minCol, int maxCol, double row, int band=0, RESAMPLE resample=NEAR) const  (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>readData</b>(std::vector< T > &buffer, const GDALDataType &dataType, int row, int band=0) const  (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>readData</b>(std::vector< T > &buffer, const GDALDataType &dataType, double row, int band=0, RESAMPLE resample=NEAR) const  (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>readDataBlock</b>(Vector2d< T > &buffer, const GDALDataType &dataType, int minCol, int maxCol, int minRow, int maxRow, int band=0) const  (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>readDataBlock</b>(std::vector< T > &buffer, const GDALDataType &dataType, int minCol, int maxCol, int minRow, int maxRow, int band=0) const  (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setCodec</b>() (defined in <a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a>)</td><td class="entry"><a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setCodec</b>(const GDALAccess &readMode=GA_ReadOnly) (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setCodec</b>(const GDALDataType &dataType, const std::string &imageType) (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setCodec</b>(const ImgReaderGdal &ImgSrc) (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setColorTable</b>(const std::string &filename, int band=0) (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setColorTable</b>(GDALColorTable *colorTable, int band=0) (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setGeoTransform</b>(double *gt) (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setImageDescription</b>(const std::string &imageDescription) (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setMetadata</b>(char **metadata) (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setNoData</b>(const std::vector< double > nodata) (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setOffset</b>(double theOffset, int band=0) (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setProjection</b>(const std::string &projection) (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setProjectionProj4</b>(const std::string &projection) (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setScale</b>(double theScale, int band=0) (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>writeData</b>(T &value, const GDALDataType &dataType, int col, int row, int band=0) const  (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>writeData</b>(std::vector< T > &buffer, const GDALDataType &dataType, int minCol, int maxCol, int row, int band=0) const  (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>writeData</b>(std::vector< T > &buffer, const GDALDataType &dataType, int row, int band=0) const  (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>writeData</b>(void *pdata, const GDALDataType &dataType, int band=0) const  (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>writeDataBlock</b>(Vector2d< T > &buffer, const GDALDataType &dataType, int minCol, int maxCol, int minRow, int maxRow, int band=0) const  (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~ImgRasterGdal</b>(void) (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~ImgReaderGdal</b>(void) (defined in <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>)</td><td class="entry"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~ImgUpdaterGdal</b>(void) (defined in <a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a>)</td><td class="entry"><a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~ImgUpdaterGdal</b>(void) (defined in <a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a>)</td><td class="entry"><a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~ImgWriterGdal</b>(void) (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classImgUpdaterGdal.html b/doc/html/classImgUpdaterGdal.html
deleted file mode 100644
index 3c2591e..0000000
--- a/doc/html/classImgUpdaterGdal.html
+++ /dev/null
@@ -1,445 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: ImgUpdaterGdal Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-methods">Protected Member Functions</a> |
-<a href="#pro-attribs">Protected Attributes</a> |
-<a href="classImgUpdaterGdal-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">ImgUpdaterGdal Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for ImgUpdaterGdal:</div>
-<div class="dyncontent">
-<div class="center"><img src="classImgUpdaterGdal__inherit__graph.png" border="0" usemap="#ImgUpdaterGdal_inherit__map" alt="Inheritance graph"/></div>
-<map name="ImgUpdaterGdal_inherit__map" id="ImgUpdaterGdal_inherit__map">
-<area shape="rect" id="node2" href="classImgReaderGdal.html" title="ImgReaderGdal" alt="" coords="5,80,117,107"/><area shape="rect" id="node3" href="classImgRasterGdal.html" title="ImgRasterGdal" alt="" coords="73,5,183,32"/><area shape="rect" id="node4" href="classImgWriterGdal.html" title="ImgWriterGdal" alt="" coords="143,80,249,107"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for ImgUpdaterGdal:</div>
-<div class="dyncontent">
-<div class="center"><img src="classImgUpdaterGdal__coll__graph.png" border="0" usemap="#ImgUpdaterGdal_coll__map" alt="Collaboration graph"/></div>
-<map name="ImgUpdaterGdal_coll__map" id="ImgUpdaterGdal_coll__map">
-<area shape="rect" id="node2" href="classImgReaderGdal.html" title="ImgReaderGdal" alt="" coords="281,312,393,339"/><area shape="rect" id="node3" href="classImgRasterGdal.html" title="ImgRasterGdal" alt="" coords="214,191,324,217"/><area shape="rect" id="node7" href="classImgWriterGdal.html" title="ImgWriterGdal" alt="" coords="149,312,256,339"/><area shape="rect" id="node4" title="STL class. " alt="" coords="28,99,107,125"/><area shape="rect" id="node5" title="STL class. " alt="" coords [...]
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:abd42c2447fffb5554e2b517a1bf6eaf8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abd42c2447fffb5554e2b517a1bf6eaf8"></a>
- </td><td class="memItemRight" valign="bottom"><b>ImgUpdaterGdal</b> (const std::string &filename)</td></tr>
-<tr class="separator:abd42c2447fffb5554e2b517a1bf6eaf8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a460a250235ffece49986bcfb977a8af3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a460a250235ffece49986bcfb977a8af3"></a>
-void </td><td class="memItemRight" valign="bottom"><b>open</b> (const std::string &filename)</td></tr>
-<tr class="separator:a460a250235ffece49986bcfb977a8af3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa8a6458b1155efc61d2146b9144da83c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa8a6458b1155efc61d2146b9144da83c"></a>
-void </td><td class="memItemRight" valign="bottom"><b>close</b> (void)</td></tr>
-<tr class="separator:aa8a6458b1155efc61d2146b9144da83c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4a29103edf0aa5ee644498eb9ca572ba"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4a29103edf0aa5ee644498eb9ca572ba"></a>
- </td><td class="memItemRight" valign="bottom"><b>ImgUpdaterGdal</b> (const std::string &filename, const GDALAccess &readMode=GA_Update)</td></tr>
-<tr class="separator:a4a29103edf0aa5ee644498eb9ca572ba"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8830491ea40f9217f1a19e5ef7ab7efc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8830491ea40f9217f1a19e5ef7ab7efc"></a>
-void </td><td class="memItemRight" valign="bottom"><b>open</b> (const std::string &filename, const GDALAccess &readMode=GA_Update)</td></tr>
-<tr class="separator:a8830491ea40f9217f1a19e5ef7ab7efc"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa8a6458b1155efc61d2146b9144da83c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa8a6458b1155efc61d2146b9144da83c"></a>
-void </td><td class="memItemRight" valign="bottom"><b>close</b> (void)</td></tr>
-<tr class="separator:aa8a6458b1155efc61d2146b9144da83c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_classImgReaderGdal"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classImgReaderGdal')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td></tr>
-<tr class="memitem:ae716a3d2335a4ed5fed24d9c27a252a0 inherit pub_methods_classImgReaderGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae716a3d2335a4ed5fed24d9c27a252a0"></a>
- </td><td class="memItemRight" valign="bottom"><b>ImgReaderGdal</b> (const std::string &filename, const GDALAccess &readMode=GA_ReadOnly)</td></tr>
-<tr class="separator:ae716a3d2335a4ed5fed24d9c27a252a0 inherit pub_methods_classImgReaderGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7f708e38ed0670d8f300ea323c3b7044 inherit pub_methods_classImgReaderGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7f708e38ed0670d8f300ea323c3b7044"></a>
-void </td><td class="memItemRight" valign="bottom"><b>open</b> (const std::string &filename, const GDALAccess &readMode=GA_ReadOnly)</td></tr>
-<tr class="separator:a7f708e38ed0670d8f300ea323c3b7044 inherit pub_methods_classImgReaderGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afac21441e51d39beb3ab5d282cd9f12e inherit pub_methods_classImgReaderGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afac21441e51d39beb3ab5d282cd9f12e"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setScale</b> (double theScale, int band=0)</td></tr>
-<tr class="separator:afac21441e51d39beb3ab5d282cd9f12e inherit pub_methods_classImgReaderGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a332975068d99166b81001a5c656022bf inherit pub_methods_classImgReaderGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a332975068d99166b81001a5c656022bf"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setOffset</b> (double theOffset, int band=0)</td></tr>
-<tr class="separator:a332975068d99166b81001a5c656022bf inherit pub_methods_classImgReaderGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aba4280eff30003c827bb2567a6bc3400 inherit pub_methods_classImgReaderGdal"><td class="memTemplParams" colspan="2"><a class="anchor" id="aba4280eff30003c827bb2567a6bc3400"></a>
-template<typename T > </td></tr>
-<tr class="memitem:aba4280eff30003c827bb2567a6bc3400 inherit pub_methods_classImgReaderGdal"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>readData</b> (T &value, const GDALDataType &dataType, int col, int row, int band=0) const </td></tr>
-<tr class="separator:aba4280eff30003c827bb2567a6bc3400 inherit pub_methods_classImgReaderGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a682f256062b021ee5771346e2fda2d1d inherit pub_methods_classImgReaderGdal"><td class="memTemplParams" colspan="2"><a class="anchor" id="a682f256062b021ee5771346e2fda2d1d"></a>
-template<typename T > </td></tr>
-<tr class="memitem:a682f256062b021ee5771346e2fda2d1d inherit pub_methods_classImgReaderGdal"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>readData</b> (std::vector< T > &buffer, const GDALDataType &dataType, int minCol, int maxCol, int row, int band=0) const </td></tr>
-<tr class="separator:a682f256062b021ee5771346e2fda2d1d inherit pub_methods_classImgReaderGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a349279f8b3511dada0faa9924fbcabbb inherit pub_methods_classImgReaderGdal"><td class="memTemplParams" colspan="2"><a class="anchor" id="a349279f8b3511dada0faa9924fbcabbb"></a>
-template<typename T > </td></tr>
-<tr class="memitem:a349279f8b3511dada0faa9924fbcabbb inherit pub_methods_classImgReaderGdal"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>readData</b> (std::vector< T > &buffer, const GDALDataType &dataType, int minCol, int maxCol, double row, int band=0, RESAMPLE resample=NEAR) const </td></tr>
-<tr class="separator:a349279f8b3511dada0faa9924fbcabbb inherit pub_methods_classImgReaderGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae7a60c67b86a4355af5a59c1e66be9cd inherit pub_methods_classImgReaderGdal"><td class="memTemplParams" colspan="2"><a class="anchor" id="ae7a60c67b86a4355af5a59c1e66be9cd"></a>
-template<typename T > </td></tr>
-<tr class="memitem:ae7a60c67b86a4355af5a59c1e66be9cd inherit pub_methods_classImgReaderGdal"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>readDataBlock</b> (<a class="el" href="classVector2d.html">Vector2d</a>< T > &buffer, const GDALDataType &dataType, int minCol, int maxCol, int minRow, int maxRow, int band=0) const </td></tr>
-<tr class="separator:ae7a60c67b86a4355af5a59c1e66be9cd inherit pub_methods_classImgReaderGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3d95ea1de4434d7a5051c9f03aaac884 inherit pub_methods_classImgReaderGdal"><td class="memTemplParams" colspan="2"><a class="anchor" id="a3d95ea1de4434d7a5051c9f03aaac884"></a>
-template<typename T > </td></tr>
-<tr class="memitem:a3d95ea1de4434d7a5051c9f03aaac884 inherit pub_methods_classImgReaderGdal"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>readDataBlock</b> (std::vector< T > &buffer, const GDALDataType &dataType, int minCol, int maxCol, int minRow, int maxRow, int band=0) const </td></tr>
-<tr class="separator:a3d95ea1de4434d7a5051c9f03aaac884 inherit pub_methods_classImgReaderGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7ac0d1bc28c4fd320c22f18ef602455c inherit pub_methods_classImgReaderGdal"><td class="memTemplParams" colspan="2"><a class="anchor" id="a7ac0d1bc28c4fd320c22f18ef602455c"></a>
-template<typename T > </td></tr>
-<tr class="memitem:a7ac0d1bc28c4fd320c22f18ef602455c inherit pub_methods_classImgReaderGdal"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>readData</b> (std::vector< T > &buffer, const GDALDataType &dataType, int row, int band=0) const </td></tr>
-<tr class="separator:a7ac0d1bc28c4fd320c22f18ef602455c inherit pub_methods_classImgReaderGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aad577cce450bb39b8ff7507bc0d86651 inherit pub_methods_classImgReaderGdal"><td class="memTemplParams" colspan="2"><a class="anchor" id="aad577cce450bb39b8ff7507bc0d86651"></a>
-template<typename T > </td></tr>
-<tr class="memitem:aad577cce450bb39b8ff7507bc0d86651 inherit pub_methods_classImgReaderGdal"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>readData</b> (std::vector< T > &buffer, const GDALDataType &dataType, double row, int band=0, RESAMPLE resample=NEAR) const </td></tr>
-<tr class="separator:aad577cce450bb39b8ff7507bc0d86651 inherit pub_methods_classImgReaderGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a591b1f2f78eacc0fd0d772e24996c6b9 inherit pub_methods_classImgReaderGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a591b1f2f78eacc0fd0d772e24996c6b9"></a>
-void </td><td class="memItemRight" valign="bottom"><b>getMinMax</b> (int startCol, int endCol, int startRow, int endRow, int band, double &minValue, double &maxValue) const </td></tr>
-<tr class="separator:a591b1f2f78eacc0fd0d772e24996c6b9 inherit pub_methods_classImgReaderGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a933dc688de9cc87eeae20530412a82d9 inherit pub_methods_classImgReaderGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a933dc688de9cc87eeae20530412a82d9"></a>
-void </td><td class="memItemRight" valign="bottom"><b>getMinMax</b> (double &minValue, double &maxValue, int band=0) const </td></tr>
-<tr class="separator:a933dc688de9cc87eeae20530412a82d9 inherit pub_methods_classImgReaderGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a40a36fbaa00190aa5a758ec034369d3d inherit pub_methods_classImgReaderGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a40a36fbaa00190aa5a758ec034369d3d"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getMin</b> (int &col, int &row, int band=0) const </td></tr>
-<tr class="separator:a40a36fbaa00190aa5a758ec034369d3d inherit pub_methods_classImgReaderGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa4c5fb8c1132c2a52d97681d9f272387 inherit pub_methods_classImgReaderGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa4c5fb8c1132c2a52d97681d9f272387"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getHistogram</b> (std::vector< double > &histvector, double &min, double &max, unsigned int &nbin, int theBand=0, bool kde=false)</td></tr>
-<tr class="separator:aa4c5fb8c1132c2a52d97681d9f272387 inherit pub_methods_classImgReaderGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a44ca88cd5917979f184bb14f9c7f6eed inherit pub_methods_classImgReaderGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a44ca88cd5917979f184bb14f9c7f6eed"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getMax</b> (int &col, int &row, int band=0) const </td></tr>
-<tr class="separator:a44ca88cd5917979f184bb14f9c7f6eed inherit pub_methods_classImgReaderGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4ded019b9c6ef1b13feef6b9a08d92ab inherit pub_methods_classImgReaderGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4ded019b9c6ef1b13feef6b9a08d92ab"></a>
-void </td><td class="memItemRight" valign="bottom"><b>getRefPix</b> (double &refX, double &refY, int band=0) const </td></tr>
-<tr class="separator:a4ded019b9c6ef1b13feef6b9a08d92ab inherit pub_methods_classImgReaderGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a906d020847b442de59059c99c8ec7cfb inherit pub_methods_classImgReaderGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a906d020847b442de59059c99c8ec7cfb"></a>
-void </td><td class="memItemRight" valign="bottom"><b>getRange</b> (std::vector< short > &range, int Band=0) const </td></tr>
-<tr class="separator:a906d020847b442de59059c99c8ec7cfb inherit pub_methods_classImgReaderGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a864413c529506b8753c450e5316a814b inherit pub_methods_classImgReaderGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a864413c529506b8753c450e5316a814b"></a>
-unsigned long int </td><td class="memItemRight" valign="bottom"><b>getNvalid</b> (int band) const </td></tr>
-<tr class="separator:a864413c529506b8753c450e5316a814b inherit pub_methods_classImgReaderGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_classImgRasterGdal"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classImgRasterGdal')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td></tr>
-<tr class="memitem:a4f5933f910448127c56479957cb97fd7 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4f5933f910448127c56479957cb97fd7"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getFileName</b> () const </td></tr>
-<tr class="separator:a4f5933f910448127c56479957cb97fd7 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1d03f1b73f8ca8efd9961da7450ed709 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1d03f1b73f8ca8efd9961da7450ed709"></a>
-int </td><td class="memItemRight" valign="bottom"><b>nrOfCol</b> (void) const </td></tr>
-<tr class="separator:a1d03f1b73f8ca8efd9961da7450ed709 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8faa9b6f13e729ae113c09549ebdae11 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8faa9b6f13e729ae113c09549ebdae11"></a>
-int </td><td class="memItemRight" valign="bottom"><b>nrOfRow</b> (void) const </td></tr>
-<tr class="separator:a8faa9b6f13e729ae113c09549ebdae11 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a11ed4fea3a57a37a622853dbbe5451b4 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a11ed4fea3a57a37a622853dbbe5451b4"></a>
-int </td><td class="memItemRight" valign="bottom"><b>nrOfBand</b> (void) const </td></tr>
-<tr class="separator:a11ed4fea3a57a37a622853dbbe5451b4 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab06ab3cd707396a4c587119e2e644946 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab06ab3cd707396a4c587119e2e644946"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>isGeoRef</b> () const </td></tr>
-<tr class="separator:ab06ab3cd707396a4c587119e2e644946 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aff912cb70261b8e466386fd48e44edb0 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aff912cb70261b8e466386fd48e44edb0"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getProjection</b> (void) const </td></tr>
-<tr class="separator:aff912cb70261b8e466386fd48e44edb0 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a29cfeaaff15425671904d03b92494e2f inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a29cfeaaff15425671904d03b92494e2f"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getProjectionRef</b> (void) const </td></tr>
-<tr class="separator:a29cfeaaff15425671904d03b92494e2f inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7bc9c3b0c68a33aee68d79b26b2b38c5 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7bc9c3b0c68a33aee68d79b26b2b38c5"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getGeoTransform</b> () const </td></tr>
-<tr class="separator:a7bc9c3b0c68a33aee68d79b26b2b38c5 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac95256e22afd8e841deb4eb62716d169 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac95256e22afd8e841deb4eb62716d169"></a>
-void </td><td class="memItemRight" valign="bottom"><b>getGeoTransform</b> (double *gt) const </td></tr>
-<tr class="separator:ac95256e22afd8e841deb4eb62716d169 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad529323a7b1470f88fcb76aebd1ae799 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad529323a7b1470f88fcb76aebd1ae799"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>getBoundingBox</b> (double &ulx, double &uly, double &lrx, double &lry) const </td></tr>
-<tr class="separator:ad529323a7b1470f88fcb76aebd1ae799 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1e618ae325f433cd0ecd84252b4abee0 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1e618ae325f433cd0ecd84252b4abee0"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>getCenterPos</b> (double &x, double &y) const </td></tr>
-<tr class="separator:a1e618ae325f433cd0ecd84252b4abee0 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a89aca8db1d2e0a7a6ab005ba3c71a2da inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a89aca8db1d2e0a7a6ab005ba3c71a2da"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getUlx</b> () const </td></tr>
-<tr class="separator:a89aca8db1d2e0a7a6ab005ba3c71a2da inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab4e5ec5a64ecc151445417eeecdab859 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab4e5ec5a64ecc151445417eeecdab859"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getUly</b> () const </td></tr>
-<tr class="separator:ab4e5ec5a64ecc151445417eeecdab859 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad354468d74356bc066426564f0d6dcc2 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad354468d74356bc066426564f0d6dcc2"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getLrx</b> () const </td></tr>
-<tr class="separator:ad354468d74356bc066426564f0d6dcc2 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac8fb5d16ecdd6ffb21f0cb5e0aa3775e inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac8fb5d16ecdd6ffb21f0cb5e0aa3775e"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getLry</b> () const </td></tr>
-<tr class="separator:ac8fb5d16ecdd6ffb21f0cb5e0aa3775e inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3f5882d5b3544bf5fcd353705d24d1a6 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3f5882d5b3544bf5fcd353705d24d1a6"></a>
-int </td><td class="memItemRight" valign="bottom"><b>getNoDataValues</b> (std::vector< double > &noDataValues) const </td></tr>
-<tr class="separator:a3f5882d5b3544bf5fcd353705d24d1a6 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a17693949c5bbd2fed20f0289dd62ff1e inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a17693949c5bbd2fed20f0289dd62ff1e"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>isNoData</b> (double value) const </td></tr>
-<tr class="separator:a17693949c5bbd2fed20f0289dd62ff1e inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa8c6781d58167b8c64618a0bb070889d inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa8c6781d58167b8c64618a0bb070889d"></a>
-int </td><td class="memItemRight" valign="bottom"><b>pushNoDataValue</b> (double noDataValue)</td></tr>
-<tr class="separator:aa8c6781d58167b8c64618a0bb070889d inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0c029d2179aec1f96dbcd3e403fa3bed inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0c029d2179aec1f96dbcd3e403fa3bed"></a>
-int </td><td class="memItemRight" valign="bottom"><b>setNoData</b> (const std::vector< double > nodata)</td></tr>
-<tr class="separator:a0c029d2179aec1f96dbcd3e403fa3bed inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab29f4dc977529bd5b12ee8a82a6ba325 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab29f4dc977529bd5b12ee8a82a6ba325"></a>
-CPLErr </td><td class="memItemRight" valign="bottom"><b>GDALSetNoDataValue</b> (double noDataValue, int band=0)</td></tr>
-<tr class="separator:ab29f4dc977529bd5b12ee8a82a6ba325 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab3bf668fc2bbfc75cffb31be86782e3e inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab3bf668fc2bbfc75cffb31be86782e3e"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>covers</b> (double x, double y) const </td></tr>
-<tr class="separator:ab3bf668fc2bbfc75cffb31be86782e3e inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2b9c235dac00eb642c7fb357900bb4ea inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2b9c235dac00eb642c7fb357900bb4ea"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>covers</b> (double ulx, double uly, double lrx, double lry) const </td></tr>
-<tr class="separator:a2b9c235dac00eb642c7fb357900bb4ea inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa5adb11c20fc7544b864a57cf1dfae72 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa5adb11c20fc7544b864a57cf1dfae72"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>geo2image</b> (double x, double y, double &i, double &j) const </td></tr>
-<tr class="separator:aa5adb11c20fc7544b864a57cf1dfae72 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab401949cc9faf0d8dbfca300b50d3812 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab401949cc9faf0d8dbfca300b50d3812"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>image2geo</b> (double i, double j, double &x, double &y) const </td></tr>
-<tr class="separator:ab401949cc9faf0d8dbfca300b50d3812 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a07442232ef794eaa96cf0f96538c3a76 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a07442232ef794eaa96cf0f96538c3a76"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getDeltaX</b> (void) const </td></tr>
-<tr class="separator:a07442232ef794eaa96cf0f96538c3a76 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a43746347238dadb4e18dffd77c0aecd8 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a43746347238dadb4e18dffd77c0aecd8"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getDeltaY</b> (void) const </td></tr>
-<tr class="separator:a43746347238dadb4e18dffd77c0aecd8 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a82a8664dd3281cbd6cb710116f9fce38 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a82a8664dd3281cbd6cb710116f9fce38"></a>
-GDALDataType </td><td class="memItemRight" valign="bottom"><b>getDataType</b> (int band=0) const </td></tr>
-<tr class="separator:a82a8664dd3281cbd6cb710116f9fce38 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a355771835d7a0c941d3a42e76dd0f4ae inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a355771835d7a0c941d3a42e76dd0f4ae"></a>
-GDALRasterBand * </td><td class="memItemRight" valign="bottom"><b>getRasterBand</b> (int band=0)</td></tr>
-<tr class="separator:a355771835d7a0c941d3a42e76dd0f4ae inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a24ded5779fef37794008f519a6638f63 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a24ded5779fef37794008f519a6638f63"></a>
-GDALColorTable * </td><td class="memItemRight" valign="bottom"><b>getColorTable</b> (int band=0) const </td></tr>
-<tr class="separator:a24ded5779fef37794008f519a6638f63 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a069d7a03c4c4cbb311534b1e061a59c9 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a069d7a03c4c4cbb311534b1e061a59c9"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getDriverDescription</b> () const </td></tr>
-<tr class="separator:a069d7a03c4c4cbb311534b1e061a59c9 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab84afa6974996363f4f004c9e8ed6c9a inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab84afa6974996363f4f004c9e8ed6c9a"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getImageType</b> () const </td></tr>
-<tr class="separator:ab84afa6974996363f4f004c9e8ed6c9a inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac648aeea3051b17663c1666bfb7b9ba2 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac648aeea3051b17663c1666bfb7b9ba2"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getInterleave</b> () const </td></tr>
-<tr class="separator:ac648aeea3051b17663c1666bfb7b9ba2 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3d6931927354087f333f68f5d70197c8 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3d6931927354087f333f68f5d70197c8"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getCompression</b> () const </td></tr>
-<tr class="separator:a3d6931927354087f333f68f5d70197c8 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a129dff26f65af24f6d006dae9f43dbba inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a129dff26f65af24f6d006dae9f43dbba"></a>
-GDALDataset * </td><td class="memItemRight" valign="bottom"><b>getDataset</b> ()</td></tr>
-<tr class="separator:a129dff26f65af24f6d006dae9f43dbba inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a412899cba08baf1a1630951afffdc6dd inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a412899cba08baf1a1630951afffdc6dd"></a>
-char ** </td><td class="memItemRight" valign="bottom"><b>getMetadata</b> ()</td></tr>
-<tr class="separator:a412899cba08baf1a1630951afffdc6dd inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a43f9dfcb1724e88c86f7bb1f0a5fe236 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a43f9dfcb1724e88c86f7bb1f0a5fe236"></a>
-char ** </td><td class="memItemRight" valign="bottom"><b>getMetadata</b> () const </td></tr>
-<tr class="separator:a43f9dfcb1724e88c86f7bb1f0a5fe236 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0c1a1664962b9ccd05ed9bcf7a118011 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0c1a1664962b9ccd05ed9bcf7a118011"></a>
-void </td><td class="memItemRight" valign="bottom"><b>getMetadata</b> (std::list< std::string > &metadata) const </td></tr>
-<tr class="separator:a0c1a1664962b9ccd05ed9bcf7a118011 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab599dad8573f2ac24302fdb339b1005a inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab599dad8573f2ac24302fdb339b1005a"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getDescription</b> () const </td></tr>
-<tr class="separator:ab599dad8573f2ac24302fdb339b1005a inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a592538d7aeb7622acb20cc3d81ed1dcc inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a592538d7aeb7622acb20cc3d81ed1dcc"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getMetadataItem</b> () const </td></tr>
-<tr class="separator:a592538d7aeb7622acb20cc3d81ed1dcc inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a057a5b1bc4bd5bc391962f154b2bb747 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a057a5b1bc4bd5bc391962f154b2bb747"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getImageDescription</b> () const </td></tr>
-<tr class="separator:a057a5b1bc4bd5bc391962f154b2bb747 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_classImgWriterGdal"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classImgWriterGdal')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td></tr>
-<tr class="memitem:a39eece0dfdf9f748d5a3efb14c04b223 inherit pub_methods_classImgWriterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a39eece0dfdf9f748d5a3efb14c04b223"></a>
-void </td><td class="memItemRight" valign="bottom"><b>open</b> (const std::string &filename)</td></tr>
-<tr class="separator:a39eece0dfdf9f748d5a3efb14c04b223 inherit pub_methods_classImgWriterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5e3f6d15a12434de5003133b5a1dce46 inherit pub_methods_classImgWriterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5e3f6d15a12434de5003133b5a1dce46"></a>
-void </td><td class="memItemRight" valign="bottom"><b>open</b> (const std::string &filename, const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &imgSrc, const std::vector< std::string > &options=std::vector< std::string >())</td></tr>
-<tr class="separator:a5e3f6d15a12434de5003133b5a1dce46 inherit pub_methods_classImgWriterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a42163b49a345a54dd53bc7cfbe2cdf41 inherit pub_methods_classImgWriterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a42163b49a345a54dd53bc7cfbe2cdf41"></a>
-void </td><td class="memItemRight" valign="bottom"><b>open</b> (const std::string &filename, int ncol, int nrow, int nband, const GDALDataType &dataType, const std::string &imageType, const std::vector< std::string > &options=std::vector< std::string >())</td></tr>
-<tr class="separator:a42163b49a345a54dd53bc7cfbe2cdf41 inherit pub_methods_classImgWriterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a29f36d8b5c6f004a0b44413bc593a06c inherit pub_methods_classImgWriterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a29f36d8b5c6f004a0b44413bc593a06c"></a>
-void </td><td class="memItemRight" valign="bottom"><b>close</b> (void)</td></tr>
-<tr class="separator:a29f36d8b5c6f004a0b44413bc593a06c inherit pub_methods_classImgWriterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aaf54fe7f5fc54e17f235e6c20d788ed9 inherit pub_methods_classImgWriterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaf54fe7f5fc54e17f235e6c20d788ed9"></a>
-void </td><td class="memItemRight" valign="bottom"><b>copyGeoTransform</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &imgSrc)</td></tr>
-<tr class="separator:aaf54fe7f5fc54e17f235e6c20d788ed9 inherit pub_methods_classImgWriterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:accdb98bddf68438d9e4716a70899c00b inherit pub_methods_classImgWriterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="accdb98bddf68438d9e4716a70899c00b"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setProjection</b> (const std::string &projection)</td></tr>
-<tr class="separator:accdb98bddf68438d9e4716a70899c00b inherit pub_methods_classImgWriterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a46aaabf3510de2a613d20246d6dc8074 inherit pub_methods_classImgWriterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a46aaabf3510de2a613d20246d6dc8074"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>setProjectionProj4</b> (const std::string &projection)</td></tr>
-<tr class="separator:a46aaabf3510de2a613d20246d6dc8074 inherit pub_methods_classImgWriterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac108a7ab4faddda5279766251da4e980 inherit pub_methods_classImgWriterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac108a7ab4faddda5279766251da4e980"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setImageDescription</b> (const std::string &imageDescription)</td></tr>
-<tr class="separator:ac108a7ab4faddda5279766251da4e980 inherit pub_methods_classImgWriterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a614042cd8c0fea041c1de282e8c21ce5 inherit pub_methods_classImgWriterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a614042cd8c0fea041c1de282e8c21ce5"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setGeoTransform</b> (double *gt)</td></tr>
-<tr class="separator:a614042cd8c0fea041c1de282e8c21ce5 inherit pub_methods_classImgWriterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a12acdd8869b7546d8d46041e8882ecbd inherit pub_methods_classImgWriterGdal"><td class="memTemplParams" colspan="2"><a class="anchor" id="a12acdd8869b7546d8d46041e8882ecbd"></a>
-template<typename T > </td></tr>
-<tr class="memitem:a12acdd8869b7546d8d46041e8882ecbd inherit pub_methods_classImgWriterGdal"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>writeData</b> (T &value, const GDALDataType &dataType, int col, int row, int band=0) const </td></tr>
-<tr class="separator:a12acdd8869b7546d8d46041e8882ecbd inherit pub_methods_classImgWriterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acb5f9887d42599250adab013843779f2 inherit pub_methods_classImgWriterGdal"><td class="memTemplParams" colspan="2"><a class="anchor" id="acb5f9887d42599250adab013843779f2"></a>
-template<typename T > </td></tr>
-<tr class="memitem:acb5f9887d42599250adab013843779f2 inherit pub_methods_classImgWriterGdal"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>writeData</b> (std::vector< T > &buffer, const GDALDataType &dataType, int minCol, int maxCol, int row, int band=0) const </td></tr>
-<tr class="separator:acb5f9887d42599250adab013843779f2 inherit pub_methods_classImgWriterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa25cd22a4f6c8f5b6874e4181352a488 inherit pub_methods_classImgWriterGdal"><td class="memTemplParams" colspan="2"><a class="anchor" id="aa25cd22a4f6c8f5b6874e4181352a488"></a>
-template<typename T > </td></tr>
-<tr class="memitem:aa25cd22a4f6c8f5b6874e4181352a488 inherit pub_methods_classImgWriterGdal"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>writeData</b> (std::vector< T > &buffer, const GDALDataType &dataType, int row, int band=0) const </td></tr>
-<tr class="separator:aa25cd22a4f6c8f5b6874e4181352a488 inherit pub_methods_classImgWriterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a210a845c2a1c27c377f9b7ec3bfb5445 inherit pub_methods_classImgWriterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a210a845c2a1c27c377f9b7ec3bfb5445"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>writeData</b> (void *pdata, const GDALDataType &dataType, int band=0) const </td></tr>
-<tr class="separator:a210a845c2a1c27c377f9b7ec3bfb5445 inherit pub_methods_classImgWriterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae87b86ecee4ef2de22aa6b8274f51bb4 inherit pub_methods_classImgWriterGdal"><td class="memTemplParams" colspan="2"><a class="anchor" id="ae87b86ecee4ef2de22aa6b8274f51bb4"></a>
-template<typename T > </td></tr>
-<tr class="memitem:ae87b86ecee4ef2de22aa6b8274f51bb4 inherit pub_methods_classImgWriterGdal"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>writeDataBlock</b> (<a class="el" href="classVector2d.html">Vector2d</a>< T > &buffer, const GDALDataType &dataType, int minCol, int maxCol, int minRow, int maxRow, int band=0) const </td></tr>
-<tr class="separator:ae87b86ecee4ef2de22aa6b8274f51bb4 inherit pub_methods_classImgWriterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aba7218154ec7485df3cc7b31d4fe1cbc inherit pub_methods_classImgWriterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aba7218154ec7485df3cc7b31d4fe1cbc"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setColorTable</b> (const std::string &filename, int band=0)</td></tr>
-<tr class="separator:aba7218154ec7485df3cc7b31d4fe1cbc inherit pub_methods_classImgWriterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a05696bec20682ef5f4087cde533ffaa1 inherit pub_methods_classImgWriterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a05696bec20682ef5f4087cde533ffaa1"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setColorTable</b> (GDALColorTable *colorTable, int band=0)</td></tr>
-<tr class="separator:a05696bec20682ef5f4087cde533ffaa1 inherit pub_methods_classImgWriterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a35425fab3a863cb624d674e67c8bf03c inherit pub_methods_classImgWriterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a35425fab3a863cb624d674e67c8bf03c"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setMetadata</b> (char **metadata)</td></tr>
-<tr class="separator:a35425fab3a863cb624d674e67c8bf03c inherit pub_methods_classImgWriterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a90e4fdd42f8fe95d11bc3627bb2bb949 inherit pub_methods_classImgWriterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a90e4fdd42f8fe95d11bc3627bb2bb949"></a>
-void </td><td class="memItemRight" valign="bottom"><b>rasterizeOgr</b> (<a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a> &ogrReader, const std::vector< double > &burnValues=std::vector< double >(), const std::vector< std::string > &layernames=std::vector< std::string >())</td></tr>
-<tr class="separator:a90e4fdd42f8fe95d11bc3627bb2bb949 inherit pub_methods_classImgWriterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
-Protected Member Functions</h2></td></tr>
-<tr class="memitem:a3e5cb4a9d676c79d1d0a17d271f23907"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3e5cb4a9d676c79d1d0a17d271f23907"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setCodec</b> ()</td></tr>
-<tr class="separator:a3e5cb4a9d676c79d1d0a17d271f23907"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pro_methods_classImgReaderGdal"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classImgReaderGdal')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td></tr>
-<tr class="memitem:a0ef3ab9026b7370331af948828b0f0a7 inherit pro_methods_classImgReaderGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0ef3ab9026b7370331af948828b0f0a7"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setCodec</b> (const GDALAccess &readMode=GA_ReadOnly)</td></tr>
-<tr class="separator:a0ef3ab9026b7370331af948828b0f0a7 inherit pro_methods_classImgReaderGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pro_methods_classImgWriterGdal"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classImgWriterGdal')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td></tr>
-<tr class="memitem:ad00e7ae82d5f2342159e5c62b4637bf8 inherit pro_methods_classImgWriterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad00e7ae82d5f2342159e5c62b4637bf8"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setCodec</b> (const GDALDataType &dataType, const std::string &imageType)</td></tr>
-<tr class="separator:ad00e7ae82d5f2342159e5c62b4637bf8 inherit pro_methods_classImgWriterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1d084ba67f72031fa75047434ec74779 inherit pro_methods_classImgWriterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1d084ba67f72031fa75047434ec74779"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setCodec</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &ImgSrc)</td></tr>
-<tr class="separator:a1d084ba67f72031fa75047434ec74779 inherit pro_methods_classImgWriterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
-Protected Attributes</h2></td></tr>
-<tr class="memitem:a12fa76efae1b9b17f0fe5b16ddff4d89"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a12fa76efae1b9b17f0fe5b16ddff4d89"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>m_filename</b></td></tr>
-<tr class="separator:a12fa76efae1b9b17f0fe5b16ddff4d89"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adb5df748efeb5f1b099633d2af632019"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adb5df748efeb5f1b099633d2af632019"></a>
-GDALDataset * </td><td class="memItemRight" valign="bottom"><b>m_gds</b></td></tr>
-<tr class="separator:adb5df748efeb5f1b099633d2af632019"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af78cf491ddb61aeb0ae22c7827347623"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af78cf491ddb61aeb0ae22c7827347623"></a>
-int </td><td class="memItemRight" valign="bottom"><b>m_ncol</b></td></tr>
-<tr class="separator:af78cf491ddb61aeb0ae22c7827347623"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0bd3202698706f83afcab960ca5a0eae"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0bd3202698706f83afcab960ca5a0eae"></a>
-int </td><td class="memItemRight" valign="bottom"><b>m_nrow</b></td></tr>
-<tr class="separator:a0bd3202698706f83afcab960ca5a0eae"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1b8b977b3144e8933117710e902f016f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1b8b977b3144e8933117710e902f016f"></a>
-int </td><td class="memItemRight" valign="bottom"><b>m_nband</b></td></tr>
-<tr class="separator:a1b8b977b3144e8933117710e902f016f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4703839469438f1887141ba55cc45ed1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4703839469438f1887141ba55cc45ed1"></a>
-double </td><td class="memItemRight" valign="bottom"><b>m_gt</b> [6]</td></tr>
-<tr class="separator:a4703839469438f1887141ba55cc45ed1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab3f08a5710afddc0c4cbadbbb09f52ad"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab3f08a5710afddc0c4cbadbbb09f52ad"></a>
-std::vector< double > </td><td class="memItemRight" valign="bottom"><b>m_noDataValues</b></td></tr>
-<tr class="separator:ab3f08a5710afddc0c4cbadbbb09f52ad"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abd5b43c31006cb2ea38ddc07b468a290"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abd5b43c31006cb2ea38ddc07b468a290"></a>
-std::vector< double > </td><td class="memItemRight" valign="bottom"><b>m_scale</b></td></tr>
-<tr class="separator:abd5b43c31006cb2ea38ddc07b468a290"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a870ed8e2315de2b08a83645d1e5878a2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a870ed8e2315de2b08a83645d1e5878a2"></a>
-std::vector< double > </td><td class="memItemRight" valign="bottom"><b>m_offset</b></td></tr>
-<tr class="separator:a870ed8e2315de2b08a83645d1e5878a2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pro_attribs_classImgReaderGdal"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classImgReaderGdal')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a></td></tr>
-<tr class="memitem:a7f327201ee3ee410786afb86109c66c2 inherit pro_attribs_classImgReaderGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7f327201ee3ee410786afb86109c66c2"></a>
-std::vector< double > </td><td class="memItemRight" valign="bottom"><b>m_scale</b></td></tr>
-<tr class="separator:a7f327201ee3ee410786afb86109c66c2 inherit pro_attribs_classImgReaderGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa7d02f9e74d645875c68486fd1cfee9f inherit pro_attribs_classImgReaderGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa7d02f9e74d645875c68486fd1cfee9f"></a>
-std::vector< double > </td><td class="memItemRight" valign="bottom"><b>m_offset</b></td></tr>
-<tr class="separator:aa7d02f9e74d645875c68486fd1cfee9f inherit pro_attribs_classImgReaderGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pro_attribs_classImgRasterGdal"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classImgRasterGdal')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td></tr>
-<tr class="memitem:a3257f4db7418fde0a0d3caf2a1d179a1 inherit pro_attribs_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3257f4db7418fde0a0d3caf2a1d179a1"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>m_filename</b></td></tr>
-<tr class="separator:a3257f4db7418fde0a0d3caf2a1d179a1 inherit pro_attribs_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a49ef42e3d2cde64af9cfc00646b28f3b inherit pro_attribs_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a49ef42e3d2cde64af9cfc00646b28f3b"></a>
-GDALDataset * </td><td class="memItemRight" valign="bottom"><b>m_gds</b></td></tr>
-<tr class="separator:a49ef42e3d2cde64af9cfc00646b28f3b inherit pro_attribs_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a28f5fd5bdcd3e50ddd5f1b68ad8d31d7 inherit pro_attribs_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a28f5fd5bdcd3e50ddd5f1b68ad8d31d7"></a>
-int </td><td class="memItemRight" valign="bottom"><b>m_ncol</b></td></tr>
-<tr class="separator:a28f5fd5bdcd3e50ddd5f1b68ad8d31d7 inherit pro_attribs_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a78b8a391b58e4268da9b4c88e7ecf962 inherit pro_attribs_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a78b8a391b58e4268da9b4c88e7ecf962"></a>
-int </td><td class="memItemRight" valign="bottom"><b>m_nrow</b></td></tr>
-<tr class="separator:a78b8a391b58e4268da9b4c88e7ecf962 inherit pro_attribs_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a208157846765615d4495a73bada30740 inherit pro_attribs_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a208157846765615d4495a73bada30740"></a>
-int </td><td class="memItemRight" valign="bottom"><b>m_nband</b></td></tr>
-<tr class="separator:a208157846765615d4495a73bada30740 inherit pro_attribs_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ade28d4208d3a77f112aa6a190b9e38f6 inherit pro_attribs_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ade28d4208d3a77f112aa6a190b9e38f6"></a>
-double </td><td class="memItemRight" valign="bottom"><b>m_gt</b> [6]</td></tr>
-<tr class="separator:ade28d4208d3a77f112aa6a190b9e38f6 inherit pro_attribs_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9154b4b3d6ef24dd1d922b3caab9b295 inherit pro_attribs_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9154b4b3d6ef24dd1d922b3caab9b295"></a>
-std::vector< double > </td><td class="memItemRight" valign="bottom"><b>m_noDataValues</b></td></tr>
-<tr class="separator:a9154b4b3d6ef24dd1d922b3caab9b295 inherit pro_attribs_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pro_attribs_classImgWriterGdal"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classImgWriterGdal')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td></tr>
-<tr class="memitem:a74dd6523b3f607f31e2f35baf45bfbd8 inherit pro_attribs_classImgWriterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a74dd6523b3f607f31e2f35baf45bfbd8"></a>
-std::vector< std::string > </td><td class="memItemRight" valign="bottom"><b>m_options</b></td></tr>
-<tr class="separator:a74dd6523b3f607f31e2f35baf45bfbd8 inherit pro_attribs_classImgWriterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="ImgGdal_8h_source.html#l00027">27</a> of file <a class="el" href="ImgGdal_8h_source.html">ImgGdal.h</a>.</p>
-</div><hr/>The documentation for this class was generated from the following files:<ul>
-<li>/home/kempenep/pktools/src/imageclasses/<a class="el" href="ImgGdal_8h_source.html">ImgGdal.h</a></li>
-<li>/home/kempenep/pktools/src/imageclasses/<a class="el" href="ImgUpdaterGdal_8h_source.html">ImgUpdaterGdal.h</a></li>
-<li>/home/kempenep/pktools/src/imageclasses/<a class="el" href="ImgUpdaterGdal_8cc_source.html">ImgUpdaterGdal.cc</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classImgUpdaterGdal__coll__graph.map b/doc/html/classImgUpdaterGdal__coll__graph.map
deleted file mode 100644
index 4a73674..0000000
--- a/doc/html/classImgUpdaterGdal__coll__graph.map
+++ /dev/null
@@ -1,7 +0,0 @@
-<map id="ImgUpdaterGdal" name="ImgUpdaterGdal">
-<area shape="rect" id="node2" href="$classImgReaderGdal.html" title="ImgReaderGdal" alt="" coords="281,312,393,339"/>
-<area shape="rect" id="node3" href="$classImgRasterGdal.html" title="ImgRasterGdal" alt="" coords="214,191,324,217"/>
-<area shape="rect" id="node7" href="$classImgWriterGdal.html" title="ImgWriterGdal" alt="" coords="149,312,256,339"/>
-<area shape="rect" id="node4" title="STL class. " alt="" coords="28,99,107,125"/>
-<area shape="rect" id="node5" title="STL class. " alt="" coords="5,6,131,47"/>
-</map>
diff --git a/doc/html/classImgUpdaterGdal__coll__graph.md5 b/doc/html/classImgUpdaterGdal__coll__graph.md5
deleted file mode 100644
index a92bc20..0000000
--- a/doc/html/classImgUpdaterGdal__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-c1ebade9b892249e50230e039cf1bb54
\ No newline at end of file
diff --git a/doc/html/classImgUpdaterGdal__coll__graph.png b/doc/html/classImgUpdaterGdal__coll__graph.png
deleted file mode 100644
index 042c06d..0000000
Binary files a/doc/html/classImgUpdaterGdal__coll__graph.png and /dev/null differ
diff --git a/doc/html/classImgUpdaterGdal__inherit__graph.map b/doc/html/classImgUpdaterGdal__inherit__graph.map
deleted file mode 100644
index b6e445a..0000000
--- a/doc/html/classImgUpdaterGdal__inherit__graph.map
+++ /dev/null
@@ -1,5 +0,0 @@
-<map id="ImgUpdaterGdal" name="ImgUpdaterGdal">
-<area shape="rect" id="node2" href="$classImgReaderGdal.html" title="ImgReaderGdal" alt="" coords="5,80,117,107"/>
-<area shape="rect" id="node3" href="$classImgRasterGdal.html" title="ImgRasterGdal" alt="" coords="73,5,183,32"/>
-<area shape="rect" id="node4" href="$classImgWriterGdal.html" title="ImgWriterGdal" alt="" coords="143,80,249,107"/>
-</map>
diff --git a/doc/html/classImgUpdaterGdal__inherit__graph.md5 b/doc/html/classImgUpdaterGdal__inherit__graph.md5
deleted file mode 100644
index ad6e702..0000000
--- a/doc/html/classImgUpdaterGdal__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-e80808390a870cde7c6e4ea4da955ab3
\ No newline at end of file
diff --git a/doc/html/classImgUpdaterGdal__inherit__graph.png b/doc/html/classImgUpdaterGdal__inherit__graph.png
deleted file mode 100644
index 430104d..0000000
Binary files a/doc/html/classImgUpdaterGdal__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classImgWriterGdal-members.html b/doc/html/classImgWriterGdal-members.html
deleted file mode 100644
index 269a0a4..0000000
--- a/doc/html/classImgWriterGdal-members.html
+++ /dev/null
@@ -1,146 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">ImgWriterGdal Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>close</b>(void) (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>copyGeoTransform</b>(const ImgReaderGdal &imgSrc) (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>covers</b>(double x, double y) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>covers</b>(double ulx, double uly, double lrx, double lry) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GDALSetNoDataValue</b>(double noDataValue, int band=0) (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>geo2image</b>(double x, double y, double &i, double &j) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getBoundingBox</b>(double &ulx, double &uly, double &lrx, double &lry) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getCenterPos</b>(double &x, double &y) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getColorTable</b>(int band=0) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getCompression</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getDataset</b>() (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getDataType</b>(int band=0) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getDeltaX</b>(void) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getDeltaY</b>(void) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getDescription</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getDriverDescription</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getFileName</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getGeoTransform</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getGeoTransform</b>(double *gt) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getImageDescription</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getImageType</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getInterleave</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getLrx</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getLry</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getMetadata</b>() (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getMetadata</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getMetadata</b>(std::list< std::string > &metadata) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getMetadataItem</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getNoDataValues</b>(std::vector< double > &noDataValues) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getProjection</b>(void) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getProjectionRef</b>(void) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getRasterBand</b>(int band=0) (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getUlx</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getUly</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>image2geo</b>(double i, double j, double &x, double &y) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>ImgRasterGdal</b>(void) (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ImgWriterGdal</b>(void) (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>isGeoRef</b>() const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>isNoData</b>(double value) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_filename</b> (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_gds</b> (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_gt</b> (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_nband</b> (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_ncol</b> (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_noDataValues</b> (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_nrow</b> (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_options</b> (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>nrOfBand</b>(void) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>nrOfCol</b>(void) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>nrOfRow</b>(void) const  (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>open</b>(const std::string &filename) (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>open</b>(const std::string &filename, const ImgReaderGdal &imgSrc, const std::vector< std::string > &options=std::vector< std::string >()) (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>open</b>(const std::string &filename, int ncol, int nrow, int nband, const GDALDataType &dataType, const std::string &imageType, const std::vector< std::string > &options=std::vector< std::string >()) (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>pushNoDataValue</b>(double noDataValue) (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>rasterizeOgr</b>(ImgReaderOgr &ogrReader, const std::vector< double > &burnValues=std::vector< double >(), const std::vector< std::string > &layernames=std::vector< std::string >()) (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setCodec</b>(const GDALDataType &dataType, const std::string &imageType) (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setCodec</b>(const ImgReaderGdal &ImgSrc) (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setColorTable</b>(const std::string &filename, int band=0) (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setColorTable</b>(GDALColorTable *colorTable, int band=0) (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setGeoTransform</b>(double *gt) (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setImageDescription</b>(const std::string &imageDescription) (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setMetadata</b>(char **metadata) (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setNoData</b>(const std::vector< double > nodata) (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setProjection</b>(const std::string &projection) (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setProjectionProj4</b>(const std::string &projection) (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>writeData</b>(T &value, const GDALDataType &dataType, int col, int row, int band=0) const  (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>writeData</b>(std::vector< T > &buffer, const GDALDataType &dataType, int minCol, int maxCol, int row, int band=0) const  (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>writeData</b>(std::vector< T > &buffer, const GDALDataType &dataType, int row, int band=0) const  (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>writeData</b>(void *pdata, const GDALDataType &dataType, int band=0) const  (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>writeDataBlock</b>(Vector2d< T > &buffer, const GDALDataType &dataType, int minCol, int maxCol, int minRow, int maxRow, int band=0) const  (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~ImgRasterGdal</b>(void) (defined in <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>)</td><td class="entry"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~ImgWriterGdal</b>(void) (defined in <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>)</td><td class="entry"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classImgWriterGdal.html b/doc/html/classImgWriterGdal.html
deleted file mode 100644
index 416f63e..0000000
--- a/doc/html/classImgWriterGdal.html
+++ /dev/null
@@ -1,317 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: ImgWriterGdal Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-methods">Protected Member Functions</a> |
-<a href="#pro-attribs">Protected Attributes</a> |
-<a href="classImgWriterGdal-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">ImgWriterGdal Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for ImgWriterGdal:</div>
-<div class="dyncontent">
-<div class="center"><img src="classImgWriterGdal__inherit__graph.png" border="0" usemap="#ImgWriterGdal_inherit__map" alt="Inheritance graph"/></div>
-<map name="ImgWriterGdal_inherit__map" id="ImgWriterGdal_inherit__map">
-<area shape="rect" id="node3" href="classImgUpdaterGdal.html" title="ImgUpdaterGdal" alt="" coords="4,155,120,181"/><area shape="rect" id="node2" href="classImgRasterGdal.html" title="ImgRasterGdal" alt="" coords="7,5,117,32"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for ImgWriterGdal:</div>
-<div class="dyncontent">
-<div class="center"><img src="classImgWriterGdal__coll__graph.png" border="0" usemap="#ImgWriterGdal_coll__map" alt="Collaboration graph"/></div>
-<map name="ImgWriterGdal_coll__map" id="ImgWriterGdal_coll__map">
-<area shape="rect" id="node2" href="classImgRasterGdal.html" title="ImgRasterGdal" alt="" coords="195,189,305,216"/><area shape="rect" id="node3" title="STL class. " alt="" coords="75,99,153,125"/><area shape="rect" id="node4" title="STL class. " alt="" coords="51,6,177,47"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a39eece0dfdf9f748d5a3efb14c04b223"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a39eece0dfdf9f748d5a3efb14c04b223"></a>
-void </td><td class="memItemRight" valign="bottom"><b>open</b> (const std::string &filename)</td></tr>
-<tr class="separator:a39eece0dfdf9f748d5a3efb14c04b223"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5e3f6d15a12434de5003133b5a1dce46"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5e3f6d15a12434de5003133b5a1dce46"></a>
-void </td><td class="memItemRight" valign="bottom"><b>open</b> (const std::string &filename, const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &imgSrc, const std::vector< std::string > &options=std::vector< std::string >())</td></tr>
-<tr class="separator:a5e3f6d15a12434de5003133b5a1dce46"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a42163b49a345a54dd53bc7cfbe2cdf41"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a42163b49a345a54dd53bc7cfbe2cdf41"></a>
-void </td><td class="memItemRight" valign="bottom"><b>open</b> (const std::string &filename, int ncol, int nrow, int nband, const GDALDataType &dataType, const std::string &imageType, const std::vector< std::string > &options=std::vector< std::string >())</td></tr>
-<tr class="separator:a42163b49a345a54dd53bc7cfbe2cdf41"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a29f36d8b5c6f004a0b44413bc593a06c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a29f36d8b5c6f004a0b44413bc593a06c"></a>
-void </td><td class="memItemRight" valign="bottom"><b>close</b> (void)</td></tr>
-<tr class="separator:a29f36d8b5c6f004a0b44413bc593a06c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aaf54fe7f5fc54e17f235e6c20d788ed9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaf54fe7f5fc54e17f235e6c20d788ed9"></a>
-void </td><td class="memItemRight" valign="bottom"><b>copyGeoTransform</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &imgSrc)</td></tr>
-<tr class="separator:aaf54fe7f5fc54e17f235e6c20d788ed9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:accdb98bddf68438d9e4716a70899c00b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="accdb98bddf68438d9e4716a70899c00b"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setProjection</b> (const std::string &projection)</td></tr>
-<tr class="separator:accdb98bddf68438d9e4716a70899c00b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a46aaabf3510de2a613d20246d6dc8074"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a46aaabf3510de2a613d20246d6dc8074"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>setProjectionProj4</b> (const std::string &projection)</td></tr>
-<tr class="separator:a46aaabf3510de2a613d20246d6dc8074"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac108a7ab4faddda5279766251da4e980"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac108a7ab4faddda5279766251da4e980"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setImageDescription</b> (const std::string &imageDescription)</td></tr>
-<tr class="separator:ac108a7ab4faddda5279766251da4e980"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a614042cd8c0fea041c1de282e8c21ce5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a614042cd8c0fea041c1de282e8c21ce5"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setGeoTransform</b> (double *gt)</td></tr>
-<tr class="separator:a614042cd8c0fea041c1de282e8c21ce5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a12acdd8869b7546d8d46041e8882ecbd"><td class="memTemplParams" colspan="2"><a class="anchor" id="a12acdd8869b7546d8d46041e8882ecbd"></a>
-template<typename T > </td></tr>
-<tr class="memitem:a12acdd8869b7546d8d46041e8882ecbd"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>writeData</b> (T &value, const GDALDataType &dataType, int col, int row, int band=0) const </td></tr>
-<tr class="separator:a12acdd8869b7546d8d46041e8882ecbd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acb5f9887d42599250adab013843779f2"><td class="memTemplParams" colspan="2"><a class="anchor" id="acb5f9887d42599250adab013843779f2"></a>
-template<typename T > </td></tr>
-<tr class="memitem:acb5f9887d42599250adab013843779f2"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>writeData</b> (std::vector< T > &buffer, const GDALDataType &dataType, int minCol, int maxCol, int row, int band=0) const </td></tr>
-<tr class="separator:acb5f9887d42599250adab013843779f2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa25cd22a4f6c8f5b6874e4181352a488"><td class="memTemplParams" colspan="2"><a class="anchor" id="aa25cd22a4f6c8f5b6874e4181352a488"></a>
-template<typename T > </td></tr>
-<tr class="memitem:aa25cd22a4f6c8f5b6874e4181352a488"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>writeData</b> (std::vector< T > &buffer, const GDALDataType &dataType, int row, int band=0) const </td></tr>
-<tr class="separator:aa25cd22a4f6c8f5b6874e4181352a488"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a210a845c2a1c27c377f9b7ec3bfb5445"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a210a845c2a1c27c377f9b7ec3bfb5445"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>writeData</b> (void *pdata, const GDALDataType &dataType, int band=0) const </td></tr>
-<tr class="separator:a210a845c2a1c27c377f9b7ec3bfb5445"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae87b86ecee4ef2de22aa6b8274f51bb4"><td class="memTemplParams" colspan="2"><a class="anchor" id="ae87b86ecee4ef2de22aa6b8274f51bb4"></a>
-template<typename T > </td></tr>
-<tr class="memitem:ae87b86ecee4ef2de22aa6b8274f51bb4"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>writeDataBlock</b> (<a class="el" href="classVector2d.html">Vector2d</a>< T > &buffer, const GDALDataType &dataType, int minCol, int maxCol, int minRow, int maxRow, int band=0) const </td></tr>
-<tr class="separator:ae87b86ecee4ef2de22aa6b8274f51bb4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aba7218154ec7485df3cc7b31d4fe1cbc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aba7218154ec7485df3cc7b31d4fe1cbc"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setColorTable</b> (const std::string &filename, int band=0)</td></tr>
-<tr class="separator:aba7218154ec7485df3cc7b31d4fe1cbc"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a05696bec20682ef5f4087cde533ffaa1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a05696bec20682ef5f4087cde533ffaa1"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setColorTable</b> (GDALColorTable *colorTable, int band=0)</td></tr>
-<tr class="separator:a05696bec20682ef5f4087cde533ffaa1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a35425fab3a863cb624d674e67c8bf03c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a35425fab3a863cb624d674e67c8bf03c"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setMetadata</b> (char **metadata)</td></tr>
-<tr class="separator:a35425fab3a863cb624d674e67c8bf03c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a90e4fdd42f8fe95d11bc3627bb2bb949"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a90e4fdd42f8fe95d11bc3627bb2bb949"></a>
-void </td><td class="memItemRight" valign="bottom"><b>rasterizeOgr</b> (<a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a> &ogrReader, const std::vector< double > &burnValues=std::vector< double >(), const std::vector< std::string > &layernames=std::vector< std::string >())</td></tr>
-<tr class="separator:a90e4fdd42f8fe95d11bc3627bb2bb949"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_classImgRasterGdal"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classImgRasterGdal')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td></tr>
-<tr class="memitem:a4f5933f910448127c56479957cb97fd7 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4f5933f910448127c56479957cb97fd7"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getFileName</b> () const </td></tr>
-<tr class="separator:a4f5933f910448127c56479957cb97fd7 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1d03f1b73f8ca8efd9961da7450ed709 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1d03f1b73f8ca8efd9961da7450ed709"></a>
-int </td><td class="memItemRight" valign="bottom"><b>nrOfCol</b> (void) const </td></tr>
-<tr class="separator:a1d03f1b73f8ca8efd9961da7450ed709 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8faa9b6f13e729ae113c09549ebdae11 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8faa9b6f13e729ae113c09549ebdae11"></a>
-int </td><td class="memItemRight" valign="bottom"><b>nrOfRow</b> (void) const </td></tr>
-<tr class="separator:a8faa9b6f13e729ae113c09549ebdae11 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a11ed4fea3a57a37a622853dbbe5451b4 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a11ed4fea3a57a37a622853dbbe5451b4"></a>
-int </td><td class="memItemRight" valign="bottom"><b>nrOfBand</b> (void) const </td></tr>
-<tr class="separator:a11ed4fea3a57a37a622853dbbe5451b4 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab06ab3cd707396a4c587119e2e644946 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab06ab3cd707396a4c587119e2e644946"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>isGeoRef</b> () const </td></tr>
-<tr class="separator:ab06ab3cd707396a4c587119e2e644946 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aff912cb70261b8e466386fd48e44edb0 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aff912cb70261b8e466386fd48e44edb0"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getProjection</b> (void) const </td></tr>
-<tr class="separator:aff912cb70261b8e466386fd48e44edb0 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a29cfeaaff15425671904d03b92494e2f inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a29cfeaaff15425671904d03b92494e2f"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getProjectionRef</b> (void) const </td></tr>
-<tr class="separator:a29cfeaaff15425671904d03b92494e2f inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7bc9c3b0c68a33aee68d79b26b2b38c5 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7bc9c3b0c68a33aee68d79b26b2b38c5"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getGeoTransform</b> () const </td></tr>
-<tr class="separator:a7bc9c3b0c68a33aee68d79b26b2b38c5 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac95256e22afd8e841deb4eb62716d169 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac95256e22afd8e841deb4eb62716d169"></a>
-void </td><td class="memItemRight" valign="bottom"><b>getGeoTransform</b> (double *gt) const </td></tr>
-<tr class="separator:ac95256e22afd8e841deb4eb62716d169 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad529323a7b1470f88fcb76aebd1ae799 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad529323a7b1470f88fcb76aebd1ae799"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>getBoundingBox</b> (double &ulx, double &uly, double &lrx, double &lry) const </td></tr>
-<tr class="separator:ad529323a7b1470f88fcb76aebd1ae799 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1e618ae325f433cd0ecd84252b4abee0 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1e618ae325f433cd0ecd84252b4abee0"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>getCenterPos</b> (double &x, double &y) const </td></tr>
-<tr class="separator:a1e618ae325f433cd0ecd84252b4abee0 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a89aca8db1d2e0a7a6ab005ba3c71a2da inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a89aca8db1d2e0a7a6ab005ba3c71a2da"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getUlx</b> () const </td></tr>
-<tr class="separator:a89aca8db1d2e0a7a6ab005ba3c71a2da inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab4e5ec5a64ecc151445417eeecdab859 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab4e5ec5a64ecc151445417eeecdab859"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getUly</b> () const </td></tr>
-<tr class="separator:ab4e5ec5a64ecc151445417eeecdab859 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad354468d74356bc066426564f0d6dcc2 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad354468d74356bc066426564f0d6dcc2"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getLrx</b> () const </td></tr>
-<tr class="separator:ad354468d74356bc066426564f0d6dcc2 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac8fb5d16ecdd6ffb21f0cb5e0aa3775e inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac8fb5d16ecdd6ffb21f0cb5e0aa3775e"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getLry</b> () const </td></tr>
-<tr class="separator:ac8fb5d16ecdd6ffb21f0cb5e0aa3775e inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3f5882d5b3544bf5fcd353705d24d1a6 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3f5882d5b3544bf5fcd353705d24d1a6"></a>
-int </td><td class="memItemRight" valign="bottom"><b>getNoDataValues</b> (std::vector< double > &noDataValues) const </td></tr>
-<tr class="separator:a3f5882d5b3544bf5fcd353705d24d1a6 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a17693949c5bbd2fed20f0289dd62ff1e inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a17693949c5bbd2fed20f0289dd62ff1e"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>isNoData</b> (double value) const </td></tr>
-<tr class="separator:a17693949c5bbd2fed20f0289dd62ff1e inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa8c6781d58167b8c64618a0bb070889d inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa8c6781d58167b8c64618a0bb070889d"></a>
-int </td><td class="memItemRight" valign="bottom"><b>pushNoDataValue</b> (double noDataValue)</td></tr>
-<tr class="separator:aa8c6781d58167b8c64618a0bb070889d inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0c029d2179aec1f96dbcd3e403fa3bed inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0c029d2179aec1f96dbcd3e403fa3bed"></a>
-int </td><td class="memItemRight" valign="bottom"><b>setNoData</b> (const std::vector< double > nodata)</td></tr>
-<tr class="separator:a0c029d2179aec1f96dbcd3e403fa3bed inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab29f4dc977529bd5b12ee8a82a6ba325 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab29f4dc977529bd5b12ee8a82a6ba325"></a>
-CPLErr </td><td class="memItemRight" valign="bottom"><b>GDALSetNoDataValue</b> (double noDataValue, int band=0)</td></tr>
-<tr class="separator:ab29f4dc977529bd5b12ee8a82a6ba325 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab3bf668fc2bbfc75cffb31be86782e3e inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab3bf668fc2bbfc75cffb31be86782e3e"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>covers</b> (double x, double y) const </td></tr>
-<tr class="separator:ab3bf668fc2bbfc75cffb31be86782e3e inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2b9c235dac00eb642c7fb357900bb4ea inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2b9c235dac00eb642c7fb357900bb4ea"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>covers</b> (double ulx, double uly, double lrx, double lry) const </td></tr>
-<tr class="separator:a2b9c235dac00eb642c7fb357900bb4ea inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa5adb11c20fc7544b864a57cf1dfae72 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa5adb11c20fc7544b864a57cf1dfae72"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>geo2image</b> (double x, double y, double &i, double &j) const </td></tr>
-<tr class="separator:aa5adb11c20fc7544b864a57cf1dfae72 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab401949cc9faf0d8dbfca300b50d3812 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab401949cc9faf0d8dbfca300b50d3812"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>image2geo</b> (double i, double j, double &x, double &y) const </td></tr>
-<tr class="separator:ab401949cc9faf0d8dbfca300b50d3812 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a07442232ef794eaa96cf0f96538c3a76 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a07442232ef794eaa96cf0f96538c3a76"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getDeltaX</b> (void) const </td></tr>
-<tr class="separator:a07442232ef794eaa96cf0f96538c3a76 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a43746347238dadb4e18dffd77c0aecd8 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a43746347238dadb4e18dffd77c0aecd8"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getDeltaY</b> (void) const </td></tr>
-<tr class="separator:a43746347238dadb4e18dffd77c0aecd8 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a82a8664dd3281cbd6cb710116f9fce38 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a82a8664dd3281cbd6cb710116f9fce38"></a>
-GDALDataType </td><td class="memItemRight" valign="bottom"><b>getDataType</b> (int band=0) const </td></tr>
-<tr class="separator:a82a8664dd3281cbd6cb710116f9fce38 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a355771835d7a0c941d3a42e76dd0f4ae inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a355771835d7a0c941d3a42e76dd0f4ae"></a>
-GDALRasterBand * </td><td class="memItemRight" valign="bottom"><b>getRasterBand</b> (int band=0)</td></tr>
-<tr class="separator:a355771835d7a0c941d3a42e76dd0f4ae inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a24ded5779fef37794008f519a6638f63 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a24ded5779fef37794008f519a6638f63"></a>
-GDALColorTable * </td><td class="memItemRight" valign="bottom"><b>getColorTable</b> (int band=0) const </td></tr>
-<tr class="separator:a24ded5779fef37794008f519a6638f63 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a069d7a03c4c4cbb311534b1e061a59c9 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a069d7a03c4c4cbb311534b1e061a59c9"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getDriverDescription</b> () const </td></tr>
-<tr class="separator:a069d7a03c4c4cbb311534b1e061a59c9 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab84afa6974996363f4f004c9e8ed6c9a inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab84afa6974996363f4f004c9e8ed6c9a"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getImageType</b> () const </td></tr>
-<tr class="separator:ab84afa6974996363f4f004c9e8ed6c9a inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac648aeea3051b17663c1666bfb7b9ba2 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac648aeea3051b17663c1666bfb7b9ba2"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getInterleave</b> () const </td></tr>
-<tr class="separator:ac648aeea3051b17663c1666bfb7b9ba2 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3d6931927354087f333f68f5d70197c8 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3d6931927354087f333f68f5d70197c8"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getCompression</b> () const </td></tr>
-<tr class="separator:a3d6931927354087f333f68f5d70197c8 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a129dff26f65af24f6d006dae9f43dbba inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a129dff26f65af24f6d006dae9f43dbba"></a>
-GDALDataset * </td><td class="memItemRight" valign="bottom"><b>getDataset</b> ()</td></tr>
-<tr class="separator:a129dff26f65af24f6d006dae9f43dbba inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a412899cba08baf1a1630951afffdc6dd inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a412899cba08baf1a1630951afffdc6dd"></a>
-char ** </td><td class="memItemRight" valign="bottom"><b>getMetadata</b> ()</td></tr>
-<tr class="separator:a412899cba08baf1a1630951afffdc6dd inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a43f9dfcb1724e88c86f7bb1f0a5fe236 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a43f9dfcb1724e88c86f7bb1f0a5fe236"></a>
-char ** </td><td class="memItemRight" valign="bottom"><b>getMetadata</b> () const </td></tr>
-<tr class="separator:a43f9dfcb1724e88c86f7bb1f0a5fe236 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0c1a1664962b9ccd05ed9bcf7a118011 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0c1a1664962b9ccd05ed9bcf7a118011"></a>
-void </td><td class="memItemRight" valign="bottom"><b>getMetadata</b> (std::list< std::string > &metadata) const </td></tr>
-<tr class="separator:a0c1a1664962b9ccd05ed9bcf7a118011 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab599dad8573f2ac24302fdb339b1005a inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab599dad8573f2ac24302fdb339b1005a"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getDescription</b> () const </td></tr>
-<tr class="separator:ab599dad8573f2ac24302fdb339b1005a inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a592538d7aeb7622acb20cc3d81ed1dcc inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a592538d7aeb7622acb20cc3d81ed1dcc"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getMetadataItem</b> () const </td></tr>
-<tr class="separator:a592538d7aeb7622acb20cc3d81ed1dcc inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a057a5b1bc4bd5bc391962f154b2bb747 inherit pub_methods_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a057a5b1bc4bd5bc391962f154b2bb747"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getImageDescription</b> () const </td></tr>
-<tr class="separator:a057a5b1bc4bd5bc391962f154b2bb747 inherit pub_methods_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
-Protected Member Functions</h2></td></tr>
-<tr class="memitem:ad00e7ae82d5f2342159e5c62b4637bf8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad00e7ae82d5f2342159e5c62b4637bf8"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setCodec</b> (const GDALDataType &dataType, const std::string &imageType)</td></tr>
-<tr class="separator:ad00e7ae82d5f2342159e5c62b4637bf8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1d084ba67f72031fa75047434ec74779"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1d084ba67f72031fa75047434ec74779"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setCodec</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &ImgSrc)</td></tr>
-<tr class="separator:a1d084ba67f72031fa75047434ec74779"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
-Protected Attributes</h2></td></tr>
-<tr class="memitem:a74dd6523b3f607f31e2f35baf45bfbd8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a74dd6523b3f607f31e2f35baf45bfbd8"></a>
-std::vector< std::string > </td><td class="memItemRight" valign="bottom"><b>m_options</b></td></tr>
-<tr class="separator:a74dd6523b3f607f31e2f35baf45bfbd8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pro_attribs_classImgRasterGdal"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classImgRasterGdal')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a></td></tr>
-<tr class="memitem:a3257f4db7418fde0a0d3caf2a1d179a1 inherit pro_attribs_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3257f4db7418fde0a0d3caf2a1d179a1"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>m_filename</b></td></tr>
-<tr class="separator:a3257f4db7418fde0a0d3caf2a1d179a1 inherit pro_attribs_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a49ef42e3d2cde64af9cfc00646b28f3b inherit pro_attribs_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a49ef42e3d2cde64af9cfc00646b28f3b"></a>
-GDALDataset * </td><td class="memItemRight" valign="bottom"><b>m_gds</b></td></tr>
-<tr class="separator:a49ef42e3d2cde64af9cfc00646b28f3b inherit pro_attribs_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a28f5fd5bdcd3e50ddd5f1b68ad8d31d7 inherit pro_attribs_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a28f5fd5bdcd3e50ddd5f1b68ad8d31d7"></a>
-int </td><td class="memItemRight" valign="bottom"><b>m_ncol</b></td></tr>
-<tr class="separator:a28f5fd5bdcd3e50ddd5f1b68ad8d31d7 inherit pro_attribs_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a78b8a391b58e4268da9b4c88e7ecf962 inherit pro_attribs_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a78b8a391b58e4268da9b4c88e7ecf962"></a>
-int </td><td class="memItemRight" valign="bottom"><b>m_nrow</b></td></tr>
-<tr class="separator:a78b8a391b58e4268da9b4c88e7ecf962 inherit pro_attribs_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a208157846765615d4495a73bada30740 inherit pro_attribs_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a208157846765615d4495a73bada30740"></a>
-int </td><td class="memItemRight" valign="bottom"><b>m_nband</b></td></tr>
-<tr class="separator:a208157846765615d4495a73bada30740 inherit pro_attribs_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ade28d4208d3a77f112aa6a190b9e38f6 inherit pro_attribs_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ade28d4208d3a77f112aa6a190b9e38f6"></a>
-double </td><td class="memItemRight" valign="bottom"><b>m_gt</b> [6]</td></tr>
-<tr class="separator:ade28d4208d3a77f112aa6a190b9e38f6 inherit pro_attribs_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9154b4b3d6ef24dd1d922b3caab9b295 inherit pro_attribs_classImgRasterGdal"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9154b4b3d6ef24dd1d922b3caab9b295"></a>
-std::vector< double > </td><td class="memItemRight" valign="bottom"><b>m_noDataValues</b></td></tr>
-<tr class="separator:a9154b4b3d6ef24dd1d922b3caab9b295 inherit pro_attribs_classImgRasterGdal"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="ImgWriterGdal_8h_source.html#l00033">33</a> of file <a class="el" href="ImgWriterGdal_8h_source.html">ImgWriterGdal.h</a>.</p>
-</div><hr/>The documentation for this class was generated from the following files:<ul>
-<li>/home/kempenep/pktools/src/imageclasses/<a class="el" href="ImgWriterGdal_8h_source.html">ImgWriterGdal.h</a></li>
-<li>/home/kempenep/pktools/src/imageclasses/<a class="el" href="ImgWriterGdal_8cc_source.html">ImgWriterGdal.cc</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classImgWriterGdal__coll__graph.map b/doc/html/classImgWriterGdal__coll__graph.map
deleted file mode 100644
index 51bfdb9..0000000
--- a/doc/html/classImgWriterGdal__coll__graph.map
+++ /dev/null
@@ -1,5 +0,0 @@
-<map id="ImgWriterGdal" name="ImgWriterGdal">
-<area shape="rect" id="node2" href="$classImgRasterGdal.html" title="ImgRasterGdal" alt="" coords="195,189,305,216"/>
-<area shape="rect" id="node3" title="STL class. " alt="" coords="75,99,153,125"/>
-<area shape="rect" id="node4" title="STL class. " alt="" coords="51,6,177,47"/>
-</map>
diff --git a/doc/html/classImgWriterGdal__coll__graph.md5 b/doc/html/classImgWriterGdal__coll__graph.md5
deleted file mode 100644
index 91d22e7..0000000
--- a/doc/html/classImgWriterGdal__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-7ddb964c1097b77b2b96ff507bfe5907
\ No newline at end of file
diff --git a/doc/html/classImgWriterGdal__coll__graph.png b/doc/html/classImgWriterGdal__coll__graph.png
deleted file mode 100644
index bb550de..0000000
Binary files a/doc/html/classImgWriterGdal__coll__graph.png and /dev/null differ
diff --git a/doc/html/classImgWriterGdal__inherit__graph.map b/doc/html/classImgWriterGdal__inherit__graph.map
deleted file mode 100644
index 1f56429..0000000
--- a/doc/html/classImgWriterGdal__inherit__graph.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="ImgWriterGdal" name="ImgWriterGdal">
-<area shape="rect" id="node3" href="$classImgUpdaterGdal.html" title="ImgUpdaterGdal" alt="" coords="4,155,120,181"/>
-<area shape="rect" id="node2" href="$classImgRasterGdal.html" title="ImgRasterGdal" alt="" coords="7,5,117,32"/>
-</map>
diff --git a/doc/html/classImgWriterGdal__inherit__graph.md5 b/doc/html/classImgWriterGdal__inherit__graph.md5
deleted file mode 100644
index cf261be..0000000
--- a/doc/html/classImgWriterGdal__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-62769723e73af2a47d848657257143fc
\ No newline at end of file
diff --git a/doc/html/classImgWriterGdal__inherit__graph.png b/doc/html/classImgWriterGdal__inherit__graph.png
deleted file mode 100644
index 36ee75b..0000000
Binary files a/doc/html/classImgWriterGdal__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classImgWriterOgr-members.html b/doc/html/classImgWriterOgr-members.html
deleted file mode 100644
index 2f01b1f..0000000
--- a/doc/html/classImgWriterOgr-members.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">ImgWriterOgr Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>addData</b>(const ImgReaderGdal &imgReader, int layer=0, bool verbose=false) (defined in <a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a>)</td><td class="entry"><a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>addLineString</b>(std::vector< OGRPoint * > &points, const std::string &fieldName, const std::string &theId, int layer=0) (defined in <a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a>)</td><td class="entry"><a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>addLineString</b>(std::vector< OGRPoint * > &points, const std::string &fieldName, int theId, int layer=0) (defined in <a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a>)</td><td class="entry"><a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>addPoint</b>(double x, double y, const std::map< std::string, double > &pointAttributes, std::string fieldName, const std::string &theId, int layer=0) (defined in <a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a>)</td><td class="entry"><a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>addPoint</b>(double x, double y, const std::map< std::string, double > &pointAttributes, std::string fieldName, int theId, int layer=0) (defined in <a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a>)</td><td class="entry"><a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>addRing</b>(std::vector< OGRPoint * > &points, const std::string &fieldName, int theId, int layer=0) (defined in <a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a>)</td><td class="entry"><a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ascii2ogr</b>(const std::string &filename, const std::string &layername, const std::vector< std::string > &fieldName, const std::vector< OGRFieldType > &fieldType, short colX=1, short colY=2, const std::string &theProjection="", const OGRwkbGeometryType &eGType=wkbPoint, const char fs=' ') (defined in <a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a>)</td><td class="entry">< [...]
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>close</b>(void) (defined in <a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a>)</td><td class="entry"><a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>copyFields</b>(const ImgReaderOgr &imgReaderOgr, int srcLayer=0, int targetLayer=0) (defined in <a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a>)</td><td class="entry"><a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>copyLayer</b>(OGRLayer *poSrcLayer, const std::string &layername, char **papszOptions=NULL) (defined in <a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a>)</td><td class="entry"><a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>createFeature</b>(int layer=0) (defined in <a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a>)</td><td class="entry"><a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>createFeature</b>(OGRFeature *theFeature, int layer=0) (defined in <a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a>)</td><td class="entry"><a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>createField</b>(const std::string &fieldname, const OGRFieldType &fieldType, int theLayer=0) (defined in <a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a>)</td><td class="entry"><a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>createLayer</b>(const std::string &layername="New layer", const std::string &theProjection="", const OGRwkbGeometryType &eGType=wkbUnknown, char **papszOptions=NULL) (defined in <a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a>)</td><td class="entry"><a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getDataSource</b>(void) (defined in <a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a>)</td><td class="entry"><a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getDriver</b>(void) const  (defined in <a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a>)</td><td class="entry"><a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getFeatureCount</b>(int layer=0) const  (defined in <a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a>)</td><td class="entry"><a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getFieldCount</b>(int layer=0) const  (defined in <a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a>)</td><td class="entry"><a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getFields</b>(std::vector< std::string > &fields, int layer=0) const  (defined in <a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a>)</td><td class="entry"><a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getFields</b>(std::vector< OGRFieldDefn * > &fields, int layer=0) const  (defined in <a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a>)</td><td class="entry"><a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getLayer</b>(int layer=0) const  (defined in <a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a>)</td><td class="entry"><a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getLayerName</b>(int layer=0) (defined in <a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a>)</td><td class="entry"><a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ImgWriterOgr</b>(void) (defined in <a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a>)</td><td class="entry"><a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>ImgWriterOgr</b>(const std::string &filename, const std::string &imageType="ESRI Shapefile") (defined in <a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a>)</td><td class="entry"><a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ImgWriterOgr</b>(const std::string &filename, ImgReaderOgr &imgReaderOgr) (defined in <a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a>)</td><td class="entry"><a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>ImgWriterOgr</b>(const std::string &filename, ImgReaderOgr &imgReaderOgr, bool copyData) (defined in <a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a>)</td><td class="entry"><a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_datasource</b> (defined in <a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a>)</td><td class="entry"><a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>m_filename</b> (defined in <a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a>)</td><td class="entry"><a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>open</b>(const std::string &filename, ImgReaderOgr &imgReaderOgr) (defined in <a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a>)</td><td class="entry"><a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>open</b>(const std::string &filename, const std::string &imageType="ESRI Shapefile") (defined in <a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a>)</td><td class="entry"><a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setCodec</b>(const std::string &imageType) (defined in <a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a>)</td><td class="entry"><a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setCodec</b>(OGRSFDriver *poDriver) (defined in <a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a>)</td><td class="entry"><a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~ImgWriterOgr</b>(void) (defined in <a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a>)</td><td class="entry"><a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classImgWriterOgr.html b/doc/html/classImgWriterOgr.html
deleted file mode 100644
index fdbc544..0000000
--- a/doc/html/classImgWriterOgr.html
+++ /dev/null
@@ -1,193 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: ImgWriterOgr Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-methods">Protected Member Functions</a> |
-<a href="#pro-attribs">Protected Attributes</a> |
-<a href="classImgWriterOgr-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">ImgWriterOgr Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Collaboration diagram for ImgWriterOgr:</div>
-<div class="dyncontent">
-<div class="center"><img src="classImgWriterOgr__coll__graph.png" border="0" usemap="#ImgWriterOgr_coll__map" alt="Collaboration graph"/></div>
-<map name="ImgWriterOgr_coll__map" id="ImgWriterOgr_coll__map">
-<area shape="rect" id="node2" title="STL class. " alt="" coords="28,99,107,125"/><area shape="rect" id="node3" title="STL class. " alt="" coords="5,6,131,47"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a06ed36aa3fee393b3d72858511a0c4da"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a06ed36aa3fee393b3d72858511a0c4da"></a>
- </td><td class="memItemRight" valign="bottom"><b>ImgWriterOgr</b> (const std::string &filename, const std::string &imageType="ESRI Shapefile")</td></tr>
-<tr class="separator:a06ed36aa3fee393b3d72858511a0c4da"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a44982aa40f6fbd0053167e8edf2ada46"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a44982aa40f6fbd0053167e8edf2ada46"></a>
- </td><td class="memItemRight" valign="bottom"><b>ImgWriterOgr</b> (const std::string &filename, <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a> &imgReaderOgr)</td></tr>
-<tr class="separator:a44982aa40f6fbd0053167e8edf2ada46"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2f7dd0327c6b209f0160ad81fa1b50c1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2f7dd0327c6b209f0160ad81fa1b50c1"></a>
- </td><td class="memItemRight" valign="bottom"><b>ImgWriterOgr</b> (const std::string &filename, <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a> &imgReaderOgr, bool copyData)</td></tr>
-<tr class="separator:a2f7dd0327c6b209f0160ad81fa1b50c1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3696891d63ca716eafbb7ed7c192e5f5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3696891d63ca716eafbb7ed7c192e5f5"></a>
-void </td><td class="memItemRight" valign="bottom"><b>open</b> (const std::string &filename, <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a> &imgReaderOgr)</td></tr>
-<tr class="separator:a3696891d63ca716eafbb7ed7c192e5f5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad10e9763688ecc94fbb6225e0f101b6f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad10e9763688ecc94fbb6225e0f101b6f"></a>
-void </td><td class="memItemRight" valign="bottom"><b>open</b> (const std::string &filename, const std::string &imageType="ESRI Shapefile")</td></tr>
-<tr class="separator:ad10e9763688ecc94fbb6225e0f101b6f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae311da9131831cf2f013692ddde3266b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae311da9131831cf2f013692ddde3266b"></a>
-void </td><td class="memItemRight" valign="bottom"><b>close</b> (void)</td></tr>
-<tr class="separator:ae311da9131831cf2f013692ddde3266b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae72e3dddee626e8c46562c0db9611628"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae72e3dddee626e8c46562c0db9611628"></a>
-int </td><td class="memItemRight" valign="bottom"><b>ascii2ogr</b> (const std::string &filename, const std::string &layername, const std::vector< std::string > &fieldName, const std::vector< OGRFieldType > &fieldType, short colX=1, short colY=2, const std::string &theProjection="", const OGRwkbGeometryType &eGType=wkbPoint, const char fs=' ')</td></tr>
-<tr class="separator:ae72e3dddee626e8c46562c0db9611628"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a956bf99e23bde6482217827d6159a7ff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a956bf99e23bde6482217827d6159a7ff"></a>
-OGRLayer * </td><td class="memItemRight" valign="bottom"><b>createLayer</b> (const std::string &layername="New layer", const std::string &theProjection="", const OGRwkbGeometryType &eGType=wkbUnknown, char **papszOptions=NULL)</td></tr>
-<tr class="separator:a956bf99e23bde6482217827d6159a7ff"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1498a0e45a6ec1b7d28b144baa6dfab6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1498a0e45a6ec1b7d28b144baa6dfab6"></a>
-OGRLayer * </td><td class="memItemRight" valign="bottom"><b>copyLayer</b> (OGRLayer *poSrcLayer, const std::string &layername, char **papszOptions=NULL)</td></tr>
-<tr class="separator:a1498a0e45a6ec1b7d28b144baa6dfab6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a294f5a823ad31624481f1bd4f702d2ba"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a294f5a823ad31624481f1bd4f702d2ba"></a>
-void </td><td class="memItemRight" valign="bottom"><b>createField</b> (const std::string &fieldname, const OGRFieldType &fieldType, int theLayer=0)</td></tr>
-<tr class="separator:a294f5a823ad31624481f1bd4f702d2ba"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad523703c945833bed462d187a62cdd48"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad523703c945833bed462d187a62cdd48"></a>
-OGRLayer * </td><td class="memItemRight" valign="bottom"><b>getLayer</b> (int layer=0) const </td></tr>
-<tr class="separator:ad523703c945833bed462d187a62cdd48"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a15ad92f4a2967369e39da29b4bff3166"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a15ad92f4a2967369e39da29b4bff3166"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getLayerName</b> (int layer=0)</td></tr>
-<tr class="separator:a15ad92f4a2967369e39da29b4bff3166"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae1e8f108b3c8cd7c5dd9428668dcf293"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae1e8f108b3c8cd7c5dd9428668dcf293"></a>
-int </td><td class="memItemRight" valign="bottom"><b>getFields</b> (std::vector< std::string > &fields, int layer=0) const </td></tr>
-<tr class="separator:ae1e8f108b3c8cd7c5dd9428668dcf293"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab4d0d97668f55bf02de92b7c705bef0b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab4d0d97668f55bf02de92b7c705bef0b"></a>
-int </td><td class="memItemRight" valign="bottom"><b>getFields</b> (std::vector< OGRFieldDefn * > &fields, int layer=0) const </td></tr>
-<tr class="separator:ab4d0d97668f55bf02de92b7c705bef0b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad50e5f1f9d89b08392de8ac7b8d3385e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad50e5f1f9d89b08392de8ac7b8d3385e"></a>
-void </td><td class="memItemRight" valign="bottom"><b>copyFields</b> (const <a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a> &imgReaderOgr, int srcLayer=0, int targetLayer=0)</td></tr>
-<tr class="separator:ad50e5f1f9d89b08392de8ac7b8d3385e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a44d5d3f3970747e904fc3c7bcf6e9f72"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a44d5d3f3970747e904fc3c7bcf6e9f72"></a>
-void </td><td class="memItemRight" valign="bottom"><b>addLineString</b> (std::vector< OGRPoint * > &points, const std::string &fieldName, const std::string &theId, int layer=0)</td></tr>
-<tr class="separator:a44d5d3f3970747e904fc3c7bcf6e9f72"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acff921985b54fb57780755ea89da32a0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acff921985b54fb57780755ea89da32a0"></a>
-void </td><td class="memItemRight" valign="bottom"><b>addRing</b> (std::vector< OGRPoint * > &points, const std::string &fieldName, int theId, int layer=0)</td></tr>
-<tr class="separator:acff921985b54fb57780755ea89da32a0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a859197a4389540de7f4b731b6fda7e2b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a859197a4389540de7f4b731b6fda7e2b"></a>
-void </td><td class="memItemRight" valign="bottom"><b>addLineString</b> (std::vector< OGRPoint * > &points, const std::string &fieldName, int theId, int layer=0)</td></tr>
-<tr class="separator:a859197a4389540de7f4b731b6fda7e2b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af9aadbe01f4400046374d6dbc23c593b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af9aadbe01f4400046374d6dbc23c593b"></a>
-void </td><td class="memItemRight" valign="bottom"><b>addPoint</b> (double x, double y, const std::map< std::string, double > &pointAttributes, std::string fieldName, const std::string &theId, int layer=0)</td></tr>
-<tr class="separator:af9aadbe01f4400046374d6dbc23c593b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a03bdd1b03a535c988e2d31f530459d13"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a03bdd1b03a535c988e2d31f530459d13"></a>
-void </td><td class="memItemRight" valign="bottom"><b>addPoint</b> (double x, double y, const std::map< std::string, double > &pointAttributes, std::string fieldName, int theId, int layer=0)</td></tr>
-<tr class="separator:a03bdd1b03a535c988e2d31f530459d13"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8bc5dc87a4ef65738bd7ff4e8c85cca3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8bc5dc87a4ef65738bd7ff4e8c85cca3"></a>
-int </td><td class="memItemRight" valign="bottom"><b>addData</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &imgReader, int layer=0, bool verbose=false)</td></tr>
-<tr class="separator:a8bc5dc87a4ef65738bd7ff4e8c85cca3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0b4a98bb3139f79c4ad7f957b63b5c1f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0b4a98bb3139f79c4ad7f957b63b5c1f"></a>
-OGRFeature * </td><td class="memItemRight" valign="bottom"><b>createFeature</b> (int layer=0)</td></tr>
-<tr class="separator:a0b4a98bb3139f79c4ad7f957b63b5c1f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aedc35f0ad0988e3f5804b85f5525a8d7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aedc35f0ad0988e3f5804b85f5525a8d7"></a>
-OGRErr </td><td class="memItemRight" valign="bottom"><b>createFeature</b> (OGRFeature *theFeature, int layer=0)</td></tr>
-<tr class="separator:aedc35f0ad0988e3f5804b85f5525a8d7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab70823411c6aeb9f9bf5afbb1b3a47ea"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab70823411c6aeb9f9bf5afbb1b3a47ea"></a>
-int </td><td class="memItemRight" valign="bottom"><b>getFieldCount</b> (int layer=0) const </td></tr>
-<tr class="separator:ab70823411c6aeb9f9bf5afbb1b3a47ea"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1205a18c02390b3dd112460637ed1102"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1205a18c02390b3dd112460637ed1102"></a>
-int </td><td class="memItemRight" valign="bottom"><b>getFeatureCount</b> (int layer=0) const </td></tr>
-<tr class="separator:a1205a18c02390b3dd112460637ed1102"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa61e6c0c736092aa251d817312de4b13"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa61e6c0c736092aa251d817312de4b13"></a>
-OGRDataSource * </td><td class="memItemRight" valign="bottom"><b>getDataSource</b> (void)</td></tr>
-<tr class="separator:aa61e6c0c736092aa251d817312de4b13"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a869a1fef21bcb82a9e2e81cb6550bd86"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a869a1fef21bcb82a9e2e81cb6550bd86"></a>
-OGRSFDriver * </td><td class="memItemRight" valign="bottom"><b>getDriver</b> (void) const </td></tr>
-<tr class="separator:a869a1fef21bcb82a9e2e81cb6550bd86"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
-Protected Member Functions</h2></td></tr>
-<tr class="memitem:af91a98e40e0ea05fe06ede2fbcd3261c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af91a98e40e0ea05fe06ede2fbcd3261c"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setCodec</b> (const std::string &imageType)</td></tr>
-<tr class="separator:af91a98e40e0ea05fe06ede2fbcd3261c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7c185e51f17b0b601d29352081625dd1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7c185e51f17b0b601d29352081625dd1"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setCodec</b> (OGRSFDriver *poDriver)</td></tr>
-<tr class="separator:a7c185e51f17b0b601d29352081625dd1"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
-Protected Attributes</h2></td></tr>
-<tr class="memitem:a7bdacdeb023fdd371c3f82abd7dbebb4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7bdacdeb023fdd371c3f82abd7dbebb4"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>m_filename</b></td></tr>
-<tr class="separator:a7bdacdeb023fdd371c3f82abd7dbebb4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a51afb112595792902e884ac4cd35ec5c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a51afb112595792902e884ac4cd35ec5c"></a>
-OGRDataSource * </td><td class="memItemRight" valign="bottom"><b>m_datasource</b></td></tr>
-<tr class="separator:a51afb112595792902e884ac4cd35ec5c"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="ImgWriterOgr_8h_source.html#l00035">35</a> of file <a class="el" href="ImgWriterOgr_8h_source.html">ImgWriterOgr.h</a>.</p>
-</div><hr/>The documentation for this class was generated from the following files:<ul>
-<li>/home/kempenep/pktools/src/imageclasses/<a class="el" href="ImgWriterOgr_8h_source.html">ImgWriterOgr.h</a></li>
-<li>/home/kempenep/pktools/src/imageclasses/<a class="el" href="ImgWriterOgr_8cc_source.html">ImgWriterOgr.cc</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classImgWriterOgr__coll__graph.map b/doc/html/classImgWriterOgr__coll__graph.map
deleted file mode 100644
index dfbd6ad..0000000
--- a/doc/html/classImgWriterOgr__coll__graph.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="ImgWriterOgr" name="ImgWriterOgr">
-<area shape="rect" id="node2" title="STL class. " alt="" coords="28,99,107,125"/>
-<area shape="rect" id="node3" title="STL class. " alt="" coords="5,6,131,47"/>
-</map>
diff --git a/doc/html/classImgWriterOgr__coll__graph.md5 b/doc/html/classImgWriterOgr__coll__graph.md5
deleted file mode 100644
index a3da165..0000000
--- a/doc/html/classImgWriterOgr__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-69d47964f1c60eea15eda62cf75a4ee0
\ No newline at end of file
diff --git a/doc/html/classImgWriterOgr__coll__graph.png b/doc/html/classImgWriterOgr__coll__graph.png
deleted file mode 100644
index f6ad151..0000000
Binary files a/doc/html/classImgWriterOgr__coll__graph.png and /dev/null differ
diff --git a/doc/html/classIncrease__IndexValue-members.html b/doc/html/classIncrease__IndexValue-members.html
deleted file mode 100644
index 118c96e..0000000
--- a/doc/html/classIncrease__IndexValue-members.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">Increase_IndexValue Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classIncrease__IndexValue.html">Increase_IndexValue</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator()</b>(const IndexValue &pv1, const IndexValue &pv2) const  (defined in <a class="el" href="classIncrease__IndexValue.html">Increase_IndexValue</a>)</td><td class="entry"><a class="el" href="classIncrease__IndexValue.html">Increase_IndexValue</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classIncrease__IndexValue.html b/doc/html/classIncrease__IndexValue.html
deleted file mode 100644
index 09fd01f..0000000
--- a/doc/html/classIncrease__IndexValue.html
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Increase_IndexValue Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="classIncrease__IndexValue-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">Increase_IndexValue Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:ac4dd6e5d04030bb73fec25a52d810433"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac4dd6e5d04030bb73fec25a52d810433"></a>
-int </td><td class="memItemRight" valign="bottom"><b>operator()</b> (const <a class="el" href="structIndexValue.html">IndexValue</a> &pv1, const <a class="el" href="structIndexValue.html">IndexValue</a> &pv2) const </td></tr>
-<tr class="separator:ac4dd6e5d04030bb73fec25a52d810433"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="IndexValue_8h_source.html#l00039">39</a> of file <a class="el" href="IndexValue_8h_source.html">IndexValue.h</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/src/base/<a class="el" href="IndexValue_8h_source.html">IndexValue.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classIncrease__PosValue-members.html b/doc/html/classIncrease__PosValue-members.html
deleted file mode 100644
index 305bbab..0000000
--- a/doc/html/classIncrease__PosValue-members.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">Increase_PosValue Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classIncrease__PosValue.html">Increase_PosValue</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator()</b>(const PosValue &pv1, const PosValue &pv2) const  (defined in <a class="el" href="classIncrease__PosValue.html">Increase_PosValue</a>)</td><td class="entry"><a class="el" href="classIncrease__PosValue.html">Increase_PosValue</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classIncrease__PosValue.html b/doc/html/classIncrease__PosValue.html
deleted file mode 100644
index 2fb9de7..0000000
--- a/doc/html/classIncrease__PosValue.html
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Increase_PosValue Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="classIncrease__PosValue-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">Increase_PosValue Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:aa17e8bb8638acd506bd24ea06c5602bf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa17e8bb8638acd506bd24ea06c5602bf"></a>
-int </td><td class="memItemRight" valign="bottom"><b>operator()</b> (const <a class="el" href="structPosValue.html">PosValue</a> &pv1, const <a class="el" href="structPosValue.html">PosValue</a> &pv2) const </td></tr>
-<tr class="separator:aa17e8bb8638acd506bd24ea06c5602bf"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="PosValue_8h_source.html#l00040">40</a> of file <a class="el" href="PosValue_8h_source.html">PosValue.h</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/src/base/<a class="el" href="PosValue_8h_source.html">PosValue.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classKernel-members.html b/doc/html/classKernel-members.html
deleted file mode 100644
index 2a4c261..0000000
--- a/doc/html/classKernel-members.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">Kernel Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classKernel.html">Kernel</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_Q</b>(int column, int len) const =0 (defined in <a class="el" href="classKernel.html">Kernel</a>)</td><td class="entry"><a class="el" href="classKernel.html">Kernel</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>get_QD</b>() const =0 (defined in <a class="el" href="classKernel.html">Kernel</a>)</td><td class="entry"><a class="el" href="classKernel.html">Kernel</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>k_function</b>(const svm_node *x, const svm_node *y, const svm_parameter &param) (defined in <a class="el" href="classKernel.html">Kernel</a>)</td><td class="entry"><a class="el" href="classKernel.html">Kernel</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>Kernel</b>(int l, svm_node *const *x, const svm_parameter &param) (defined in <a class="el" href="classKernel.html">Kernel</a>)</td><td class="entry"><a class="el" href="classKernel.html">Kernel</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>kernel_function</b> (defined in <a class="el" href="classKernel.html">Kernel</a>)</td><td class="entry"><a class="el" href="classKernel.html">Kernel</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>swap_index</b>(int i, int j) const  (defined in <a class="el" href="classKernel.html">Kernel</a>)</td><td class="entry"><a class="el" href="classKernel.html">Kernel</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~Kernel</b>() (defined in <a class="el" href="classKernel.html">Kernel</a>)</td><td class="entry"><a class="el" href="classKernel.html">Kernel</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~QMatrix</b>() (defined in <a class="el" href="classQMatrix.html">QMatrix</a>)</td><td class="entry"><a class="el" href="classQMatrix.html">QMatrix</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classKernel.html b/doc/html/classKernel.html
deleted file mode 100644
index 63b2f38..0000000
--- a/doc/html/classKernel.html
+++ /dev/null
@@ -1,124 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Kernel Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-static-methods">Static Public Member Functions</a> |
-<a href="#pro-attribs">Protected Attributes</a> |
-<a href="classKernel-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">Kernel Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for Kernel:</div>
-<div class="dyncontent">
-<div class="center"><img src="classKernel__inherit__graph.png" border="0" usemap="#Kernel_inherit__map" alt="Inheritance graph"/></div>
-<map name="Kernel_inherit__map" id="Kernel_inherit__map">
-<area shape="rect" id="node3" href="classONE__CLASS__Q.html" title="ONE_CLASS_Q" alt="" coords="5,155,123,181"/><area shape="rect" id="node4" href="classSVC__Q.html" title="SVC_Q" alt="" coords="148,155,215,181"/><area shape="rect" id="node5" href="classSVR__Q.html" title="SVR_Q" alt="" coords="239,155,305,181"/><area shape="rect" id="node2" href="classQMatrix.html" title="QMatrix" alt="" coords="147,5,215,32"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for Kernel:</div>
-<div class="dyncontent">
-<div class="center"><img src="classKernel__coll__graph.png" border="0" usemap="#Kernel_coll__map" alt="Collaboration graph"/></div>
-<map name="Kernel_coll__map" id="Kernel_coll__map">
-<area shape="rect" id="node2" href="classQMatrix.html" title="QMatrix" alt="" coords="5,5,72,32"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a25ffaa0c67cc5b8c7fcdb6f97ca1725f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a25ffaa0c67cc5b8c7fcdb6f97ca1725f"></a>
- </td><td class="memItemRight" valign="bottom"><b>Kernel</b> (int l, <a class="el" href="structsvm__node.html">svm_node</a> *const *x, const <a class="el" href="structsvm__parameter.html">svm_parameter</a> &param)</td></tr>
-<tr class="separator:a25ffaa0c67cc5b8c7fcdb6f97ca1725f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a30483355cbb8b5ab4e4c7a93bcef7429"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a30483355cbb8b5ab4e4c7a93bcef7429"></a>
-virtual Qfloat * </td><td class="memItemRight" valign="bottom"><b>get_Q</b> (int column, int len) const =0</td></tr>
-<tr class="separator:a30483355cbb8b5ab4e4c7a93bcef7429"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5b7fde9af9d10f7b8f7105eb85bf3d5b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5b7fde9af9d10f7b8f7105eb85bf3d5b"></a>
-virtual double * </td><td class="memItemRight" valign="bottom"><b>get_QD</b> () const =0</td></tr>
-<tr class="separator:a5b7fde9af9d10f7b8f7105eb85bf3d5b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adca807c5584bc42fd098cd9eb1f19621"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adca807c5584bc42fd098cd9eb1f19621"></a>
-virtual void </td><td class="memItemRight" valign="bottom"><b>swap_index</b> (int i, int j) const </td></tr>
-<tr class="separator:adca807c5584bc42fd098cd9eb1f19621"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr class="memitem:a6ff0d4ac64bf7fba29d2ca3433dd5127"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6ff0d4ac64bf7fba29d2ca3433dd5127"></a>
-static double </td><td class="memItemRight" valign="bottom"><b>k_function</b> (const <a class="el" href="structsvm__node.html">svm_node</a> *x, const <a class="el" href="structsvm__node.html">svm_node</a> *y, const <a class="el" href="structsvm__parameter.html">svm_parameter</a> &param)</td></tr>
-<tr class="separator:a6ff0d4ac64bf7fba29d2ca3433dd5127"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
-Protected Attributes</h2></td></tr>
-<tr class="memitem:a575eeb588e8a5c62ff3228a35e255a02"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a575eeb588e8a5c62ff3228a35e255a02"></a>
-double(Kernel::* </td><td class="memItemRight" valign="bottom"><b>kernel_function</b> )(int i, int j) const </td></tr>
-<tr class="separator:a575eeb588e8a5c62ff3228a35e255a02"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="svm_8cpp_source.html#l00204">204</a> of file <a class="el" href="svm_8cpp_source.html">svm.cpp</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/src/algorithms/<a class="el" href="svm_8cpp_source.html">svm.cpp</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classKernel__coll__graph.map b/doc/html/classKernel__coll__graph.map
deleted file mode 100644
index 77ab7b6..0000000
--- a/doc/html/classKernel__coll__graph.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Kernel" name="Kernel">
-<area shape="rect" id="node2" href="$classQMatrix.html" title="QMatrix" alt="" coords="5,5,72,32"/>
-</map>
diff --git a/doc/html/classKernel__coll__graph.md5 b/doc/html/classKernel__coll__graph.md5
deleted file mode 100644
index f9318de..0000000
--- a/doc/html/classKernel__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-85816886b75c2a0731c066be4a2e913a
\ No newline at end of file
diff --git a/doc/html/classKernel__coll__graph.png b/doc/html/classKernel__coll__graph.png
deleted file mode 100644
index 744c043..0000000
Binary files a/doc/html/classKernel__coll__graph.png and /dev/null differ
diff --git a/doc/html/classKernel__inherit__graph.map b/doc/html/classKernel__inherit__graph.map
deleted file mode 100644
index dadb790..0000000
--- a/doc/html/classKernel__inherit__graph.map
+++ /dev/null
@@ -1,6 +0,0 @@
-<map id="Kernel" name="Kernel">
-<area shape="rect" id="node3" href="$classONE__CLASS__Q.html" title="ONE_CLASS_Q" alt="" coords="5,155,123,181"/>
-<area shape="rect" id="node4" href="$classSVC__Q.html" title="SVC_Q" alt="" coords="148,155,215,181"/>
-<area shape="rect" id="node5" href="$classSVR__Q.html" title="SVR_Q" alt="" coords="239,155,305,181"/>
-<area shape="rect" id="node2" href="$classQMatrix.html" title="QMatrix" alt="" coords="147,5,215,32"/>
-</map>
diff --git a/doc/html/classKernel__inherit__graph.md5 b/doc/html/classKernel__inherit__graph.md5
deleted file mode 100644
index fd686fd..0000000
--- a/doc/html/classKernel__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-5c77420dc3aa316a280c681b4dcea066
\ No newline at end of file
diff --git a/doc/html/classKernel__inherit__graph.png b/doc/html/classKernel__inherit__graph.png
deleted file mode 100644
index da14c5e..0000000
Binary files a/doc/html/classKernel__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classLastReturnFilter-members.html b/doc/html/classLastReturnFilter-members.html
deleted file mode 100644
index a90fcec..0000000
--- a/doc/html/classLastReturnFilter-members.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">LastReturnFilter Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classLastReturnFilter.html">LastReturnFilter</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>filter</b>(const liblas::Point &point) (defined in <a class="el" href="classLastReturnFilter.html">LastReturnFilter</a>)</td><td class="entry"><a class="el" href="classLastReturnFilter.html">LastReturnFilter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>LastReturnFilter</b>() (defined in <a class="el" href="classLastReturnFilter.html">LastReturnFilter</a>)</td><td class="entry"><a class="el" href="classLastReturnFilter.html">LastReturnFilter</a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classLastReturnFilter.html b/doc/html/classLastReturnFilter.html
deleted file mode 100644
index fe6747a..0000000
--- a/doc/html/classLastReturnFilter.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: LastReturnFilter Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="classLastReturnFilter-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">LastReturnFilter Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for LastReturnFilter:</div>
-<div class="dyncontent">
-<div class="center"><img src="classLastReturnFilter__inherit__graph.png" border="0" usemap="#LastReturnFilter_inherit__map" alt="Inheritance graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for LastReturnFilter:</div>
-<div class="dyncontent">
-<div class="center"><img src="classLastReturnFilter__coll__graph.png" border="0" usemap="#LastReturnFilter_coll__map" alt="Collaboration graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:add252420b68bdf288eb67ecd2291365e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add252420b68bdf288eb67ecd2291365e"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>filter</b> (const liblas::Point &point)</td></tr>
-<tr class="separator:add252420b68bdf288eb67ecd2291365e"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="FileReaderLas_8h_source.html#l00028">28</a> of file <a class="el" href="FileReaderLas_8h_source.html">FileReaderLas.h</a>.</p>
-</div><hr/>The documentation for this class was generated from the following files:<ul>
-<li>/home/kempenep/pktools/src/lasclasses/<a class="el" href="FileReaderLas_8h_source.html">FileReaderLas.h</a></li>
-<li>/home/kempenep/pktools/src/lasclasses/<a class="el" href="FileReaderLas_8cc_source.html">FileReaderLas.cc</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classLastReturnFilter__coll__graph.map b/doc/html/classLastReturnFilter__coll__graph.map
deleted file mode 100644
index e9d95d2..0000000
--- a/doc/html/classLastReturnFilter__coll__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="LastReturnFilter" name="LastReturnFilter">
-</map>
diff --git a/doc/html/classLastReturnFilter__coll__graph.md5 b/doc/html/classLastReturnFilter__coll__graph.md5
deleted file mode 100644
index b470319..0000000
--- a/doc/html/classLastReturnFilter__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-d39673c5d5bfa1f1515c3e94849bbd8e
\ No newline at end of file
diff --git a/doc/html/classLastReturnFilter__coll__graph.png b/doc/html/classLastReturnFilter__coll__graph.png
deleted file mode 100644
index ef160f6..0000000
Binary files a/doc/html/classLastReturnFilter__coll__graph.png and /dev/null differ
diff --git a/doc/html/classLastReturnFilter__inherit__graph.map b/doc/html/classLastReturnFilter__inherit__graph.map
deleted file mode 100644
index e9d95d2..0000000
--- a/doc/html/classLastReturnFilter__inherit__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="LastReturnFilter" name="LastReturnFilter">
-</map>
diff --git a/doc/html/classLastReturnFilter__inherit__graph.md5 b/doc/html/classLastReturnFilter__inherit__graph.md5
deleted file mode 100644
index b470319..0000000
--- a/doc/html/classLastReturnFilter__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-d39673c5d5bfa1f1515c3e94849bbd8e
\ No newline at end of file
diff --git a/doc/html/classLastReturnFilter__inherit__graph.png b/doc/html/classLastReturnFilter__inherit__graph.png
deleted file mode 100644
index ef160f6..0000000
Binary files a/doc/html/classLastReturnFilter__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classMainWindow-members.html b/doc/html/classMainWindow-members.html
deleted file mode 100644
index 7c132a9..0000000
--- a/doc/html/classMainWindow-members.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">MainWindow Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classMainWindow.html">MainWindow</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>MainWindow</b>(QWidget *parent=0) (defined in <a class="el" href="classMainWindow.html">MainWindow</a>)</td><td class="entry"><a class="el" href="classMainWindow.html">MainWindow</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>MainWindow</b>(QWidget *parent=0) (defined in <a class="el" href="classMainWindow.html">MainWindow</a>)</td><td class="entry"><a class="el" href="classMainWindow.html">MainWindow</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>MainWindow</b>(QWidget *parent=0) (defined in <a class="el" href="classMainWindow.html">MainWindow</a>)</td><td class="entry"><a class="el" href="classMainWindow.html">MainWindow</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>MainWindow</b>(QWidget *parent=0) (defined in <a class="el" href="classMainWindow.html">MainWindow</a>)</td><td class="entry"><a class="el" href="classMainWindow.html">MainWindow</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>MainWindow</b>(QWidget *parent=0) (defined in <a class="el" href="classMainWindow.html">MainWindow</a>)</td><td class="entry"><a class="el" href="classMainWindow.html">MainWindow</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~MainWindow</b>() (defined in <a class="el" href="classMainWindow.html">MainWindow</a>)</td><td class="entry"><a class="el" href="classMainWindow.html">MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~MainWindow</b>() (defined in <a class="el" href="classMainWindow.html">MainWindow</a>)</td><td class="entry"><a class="el" href="classMainWindow.html">MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~MainWindow</b>() (defined in <a class="el" href="classMainWindow.html">MainWindow</a>)</td><td class="entry"><a class="el" href="classMainWindow.html">MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~MainWindow</b>() (defined in <a class="el" href="classMainWindow.html">MainWindow</a>)</td><td class="entry"><a class="el" href="classMainWindow.html">MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~MainWindow</b>() (defined in <a class="el" href="classMainWindow.html">MainWindow</a>)</td><td class="entry"><a class="el" href="classMainWindow.html">MainWindow</a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classMainWindow.html b/doc/html/classMainWindow.html
deleted file mode 100644
index 68a711f..0000000
--- a/doc/html/classMainWindow.html
+++ /dev/null
@@ -1,111 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: MainWindow Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="classMainWindow-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">MainWindow Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for MainWindow:</div>
-<div class="dyncontent">
-<div class="center"><img src="classMainWindow__inherit__graph.png" border="0" usemap="#MainWindow_inherit__map" alt="Inheritance graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for MainWindow:</div>
-<div class="dyncontent">
-<div class="center"><img src="classMainWindow__coll__graph.png" border="0" usemap="#MainWindow_coll__map" alt="Collaboration graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a8b244be8b7b7db1b08de2a2acb9409db"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8b244be8b7b7db1b08de2a2acb9409db"></a>
- </td><td class="memItemRight" valign="bottom"><b>MainWindow</b> (QWidget *parent=0)</td></tr>
-<tr class="separator:a8b244be8b7b7db1b08de2a2acb9409db"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8b244be8b7b7db1b08de2a2acb9409db"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8b244be8b7b7db1b08de2a2acb9409db"></a>
- </td><td class="memItemRight" valign="bottom"><b>MainWindow</b> (QWidget *parent=0)</td></tr>
-<tr class="separator:a8b244be8b7b7db1b08de2a2acb9409db"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8b244be8b7b7db1b08de2a2acb9409db"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8b244be8b7b7db1b08de2a2acb9409db"></a>
- </td><td class="memItemRight" valign="bottom"><b>MainWindow</b> (QWidget *parent=0)</td></tr>
-<tr class="separator:a8b244be8b7b7db1b08de2a2acb9409db"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8b244be8b7b7db1b08de2a2acb9409db"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8b244be8b7b7db1b08de2a2acb9409db"></a>
- </td><td class="memItemRight" valign="bottom"><b>MainWindow</b> (QWidget *parent=0)</td></tr>
-<tr class="separator:a8b244be8b7b7db1b08de2a2acb9409db"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8b244be8b7b7db1b08de2a2acb9409db"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8b244be8b7b7db1b08de2a2acb9409db"></a>
- </td><td class="memItemRight" valign="bottom"><b>MainWindow</b> (QWidget *parent=0)</td></tr>
-<tr class="separator:a8b244be8b7b7db1b08de2a2acb9409db"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="pkcomposite__gui_2mainwindow_8h_source.html#l00031">31</a> of file <a class="el" href="pkcomposite__gui_2mainwindow_8h_source.html">mainwindow.h</a>.</p>
-</div><hr/>The documentation for this class was generated from the following files:<ul>
-<li>/home/kempenep/pktools/qt/pkcomposite_gui/<a class="el" href="pkcomposite__gui_2mainwindow_8h_source.html">mainwindow.h</a></li>
-<li>/home/kempenep/pktools/qt/pkcomposite_gui/<a class="el" href="pkcomposite__gui_2mainwindow_8cc_source.html">mainwindow.cc</a></li>
-<li>/home/kempenep/pktools/qt/pkdiff_gui/<a class="el" href="pkdiff__gui_2mainwindow_8cpp_source.html">mainwindow.cpp</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classMainWindow__coll__graph.map b/doc/html/classMainWindow__coll__graph.map
deleted file mode 100644
index 10b2148..0000000
--- a/doc/html/classMainWindow__coll__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="MainWindow" name="MainWindow">
-</map>
diff --git a/doc/html/classMainWindow__coll__graph.md5 b/doc/html/classMainWindow__coll__graph.md5
deleted file mode 100644
index f12a71e..0000000
--- a/doc/html/classMainWindow__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-2de25f242e69277e451feaec96359d9f
\ No newline at end of file
diff --git a/doc/html/classMainWindow__coll__graph.png b/doc/html/classMainWindow__coll__graph.png
deleted file mode 100644
index ad28566..0000000
Binary files a/doc/html/classMainWindow__coll__graph.png and /dev/null differ
diff --git a/doc/html/classMainWindow__inherit__graph.map b/doc/html/classMainWindow__inherit__graph.map
deleted file mode 100644
index 10b2148..0000000
--- a/doc/html/classMainWindow__inherit__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="MainWindow" name="MainWindow">
-</map>
diff --git a/doc/html/classMainWindow__inherit__graph.md5 b/doc/html/classMainWindow__inherit__graph.md5
deleted file mode 100644
index f12a71e..0000000
--- a/doc/html/classMainWindow__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-2de25f242e69277e451feaec96359d9f
\ No newline at end of file
diff --git a/doc/html/classMainWindow__inherit__graph.png b/doc/html/classMainWindow__inherit__graph.png
deleted file mode 100644
index ad28566..0000000
Binary files a/doc/html/classMainWindow__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classONE__CLASS__Q-members.html b/doc/html/classONE__CLASS__Q-members.html
deleted file mode 100644
index 8c38ada..0000000
--- a/doc/html/classONE__CLASS__Q-members.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">ONE_CLASS_Q Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classONE__CLASS__Q.html">ONE_CLASS_Q</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_Q</b>(int i, int len) const  (defined in <a class="el" href="classONE__CLASS__Q.html">ONE_CLASS_Q</a>)</td><td class="entry"><a class="el" href="classONE__CLASS__Q.html">ONE_CLASS_Q</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>get_QD</b>() const  (defined in <a class="el" href="classONE__CLASS__Q.html">ONE_CLASS_Q</a>)</td><td class="entry"><a class="el" href="classONE__CLASS__Q.html">ONE_CLASS_Q</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>k_function</b>(const svm_node *x, const svm_node *y, const svm_parameter &param) (defined in <a class="el" href="classKernel.html">Kernel</a>)</td><td class="entry"><a class="el" href="classKernel.html">Kernel</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>Kernel</b>(int l, svm_node *const *x, const svm_parameter &param) (defined in <a class="el" href="classKernel.html">Kernel</a>)</td><td class="entry"><a class="el" href="classKernel.html">Kernel</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>kernel_function</b> (defined in <a class="el" href="classKernel.html">Kernel</a>)</td><td class="entry"><a class="el" href="classKernel.html">Kernel</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>ONE_CLASS_Q</b>(const svm_problem &prob, const svm_parameter &param) (defined in <a class="el" href="classONE__CLASS__Q.html">ONE_CLASS_Q</a>)</td><td class="entry"><a class="el" href="classONE__CLASS__Q.html">ONE_CLASS_Q</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>swap_index</b>(int i, int j) const  (defined in <a class="el" href="classONE__CLASS__Q.html">ONE_CLASS_Q</a>)</td><td class="entry"><a class="el" href="classONE__CLASS__Q.html">ONE_CLASS_Q</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~Kernel</b>() (defined in <a class="el" href="classKernel.html">Kernel</a>)</td><td class="entry"><a class="el" href="classKernel.html">Kernel</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~ONE_CLASS_Q</b>() (defined in <a class="el" href="classONE__CLASS__Q.html">ONE_CLASS_Q</a>)</td><td class="entry"><a class="el" href="classONE__CLASS__Q.html">ONE_CLASS_Q</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~QMatrix</b>() (defined in <a class="el" href="classQMatrix.html">QMatrix</a>)</td><td class="entry"><a class="el" href="classQMatrix.html">QMatrix</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classONE__CLASS__Q.html b/doc/html/classONE__CLASS__Q.html
deleted file mode 100644
index 79f8a88..0000000
--- a/doc/html/classONE__CLASS__Q.html
+++ /dev/null
@@ -1,125 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: ONE_CLASS_Q Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="classONE__CLASS__Q-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">ONE_CLASS_Q Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for ONE_CLASS_Q:</div>
-<div class="dyncontent">
-<div class="center"><img src="classONE__CLASS__Q__inherit__graph.png" border="0" usemap="#ONE__CLASS__Q_inherit__map" alt="Inheritance graph"/></div>
-<map name="ONE__CLASS__Q_inherit__map" id="ONE__CLASS__Q_inherit__map">
-<area shape="rect" id="node2" href="classKernel.html" title="Kernel" alt="" coords="35,80,92,107"/><area shape="rect" id="node3" href="classQMatrix.html" title="QMatrix" alt="" coords="30,5,97,32"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for ONE_CLASS_Q:</div>
-<div class="dyncontent">
-<div class="center"><img src="classONE__CLASS__Q__coll__graph.png" border="0" usemap="#ONE__CLASS__Q_coll__map" alt="Collaboration graph"/></div>
-<map name="ONE__CLASS__Q_coll__map" id="ONE__CLASS__Q_coll__map">
-<area shape="rect" id="node2" href="classKernel.html" title="Kernel" alt="" coords="35,80,92,107"/><area shape="rect" id="node3" href="classQMatrix.html" title="QMatrix" alt="" coords="30,5,97,32"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a759ec4e3e00887ed848cf3f79ab7065f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a759ec4e3e00887ed848cf3f79ab7065f"></a>
- </td><td class="memItemRight" valign="bottom"><b>ONE_CLASS_Q</b> (const <a class="el" href="structsvm__problem.html">svm_problem</a> &prob, const <a class="el" href="structsvm__parameter.html">svm_parameter</a> &param)</td></tr>
-<tr class="separator:a759ec4e3e00887ed848cf3f79ab7065f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1f8501234022e017cf46c4dfb2da9d31"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1f8501234022e017cf46c4dfb2da9d31"></a>
-Qfloat * </td><td class="memItemRight" valign="bottom"><b>get_Q</b> (int i, int len) const </td></tr>
-<tr class="separator:a1f8501234022e017cf46c4dfb2da9d31"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a882480d4370d8a89d667a28c3ed68a73"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a882480d4370d8a89d667a28c3ed68a73"></a>
-double * </td><td class="memItemRight" valign="bottom"><b>get_QD</b> () const </td></tr>
-<tr class="separator:a882480d4370d8a89d667a28c3ed68a73"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad8bc86ca742c27d82718346388f83fad"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad8bc86ca742c27d82718346388f83fad"></a>
-void </td><td class="memItemRight" valign="bottom"><b>swap_index</b> (int i, int j) const </td></tr>
-<tr class="separator:ad8bc86ca742c27d82718346388f83fad"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_classKernel"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classKernel')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="classKernel.html">Kernel</a></td></tr>
-<tr class="memitem:a25ffaa0c67cc5b8c7fcdb6f97ca1725f inherit pub_methods_classKernel"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a25ffaa0c67cc5b8c7fcdb6f97ca1725f"></a>
- </td><td class="memItemRight" valign="bottom"><b>Kernel</b> (int l, <a class="el" href="structsvm__node.html">svm_node</a> *const *x, const <a class="el" href="structsvm__parameter.html">svm_parameter</a> &param)</td></tr>
-<tr class="separator:a25ffaa0c67cc5b8c7fcdb6f97ca1725f inherit pub_methods_classKernel"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
-Additional Inherited Members</h2></td></tr>
-<tr class="inherit_header pub_static_methods_classKernel"><td colspan="2" onclick="javascript:toggleInherit('pub_static_methods_classKernel')"><img src="closed.png" alt="-"/> Static Public Member Functions inherited from <a class="el" href="classKernel.html">Kernel</a></td></tr>
-<tr class="memitem:a6ff0d4ac64bf7fba29d2ca3433dd5127 inherit pub_static_methods_classKernel"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6ff0d4ac64bf7fba29d2ca3433dd5127"></a>
-static double </td><td class="memItemRight" valign="bottom"><b>k_function</b> (const <a class="el" href="structsvm__node.html">svm_node</a> *x, const <a class="el" href="structsvm__node.html">svm_node</a> *y, const <a class="el" href="structsvm__parameter.html">svm_parameter</a> &param)</td></tr>
-<tr class="separator:a6ff0d4ac64bf7fba29d2ca3433dd5127 inherit pub_static_methods_classKernel"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pro_attribs_classKernel"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classKernel')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="classKernel.html">Kernel</a></td></tr>
-<tr class="memitem:a575eeb588e8a5c62ff3228a35e255a02 inherit pro_attribs_classKernel"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a575eeb588e8a5c62ff3228a35e255a02"></a>
-double(Kernel::* </td><td class="memItemRight" valign="bottom"><b>kernel_function</b> )(int i, int j) const </td></tr>
-<tr class="separator:a575eeb588e8a5c62ff3228a35e255a02 inherit pro_attribs_classKernel"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="svm_8cpp_source.html#l01323">1323</a> of file <a class="el" href="svm_8cpp_source.html">svm.cpp</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/src/algorithms/<a class="el" href="svm_8cpp_source.html">svm.cpp</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classONE__CLASS__Q__coll__graph.map b/doc/html/classONE__CLASS__Q__coll__graph.map
deleted file mode 100644
index e061d2f..0000000
--- a/doc/html/classONE__CLASS__Q__coll__graph.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="ONE_CLASS_Q" name="ONE_CLASS_Q">
-<area shape="rect" id="node2" href="$classKernel.html" title="Kernel" alt="" coords="35,80,92,107"/>
-<area shape="rect" id="node3" href="$classQMatrix.html" title="QMatrix" alt="" coords="30,5,97,32"/>
-</map>
diff --git a/doc/html/classONE__CLASS__Q__coll__graph.md5 b/doc/html/classONE__CLASS__Q__coll__graph.md5
deleted file mode 100644
index 6355315..0000000
--- a/doc/html/classONE__CLASS__Q__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-3cc848b1d60d5cb3df39d11225084950
\ No newline at end of file
diff --git a/doc/html/classONE__CLASS__Q__coll__graph.png b/doc/html/classONE__CLASS__Q__coll__graph.png
deleted file mode 100644
index 5ae9bf8..0000000
Binary files a/doc/html/classONE__CLASS__Q__coll__graph.png and /dev/null differ
diff --git a/doc/html/classONE__CLASS__Q__inherit__graph.map b/doc/html/classONE__CLASS__Q__inherit__graph.map
deleted file mode 100644
index e061d2f..0000000
--- a/doc/html/classONE__CLASS__Q__inherit__graph.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="ONE_CLASS_Q" name="ONE_CLASS_Q">
-<area shape="rect" id="node2" href="$classKernel.html" title="Kernel" alt="" coords="35,80,92,107"/>
-<area shape="rect" id="node3" href="$classQMatrix.html" title="QMatrix" alt="" coords="30,5,97,32"/>
-</map>
diff --git a/doc/html/classONE__CLASS__Q__inherit__graph.md5 b/doc/html/classONE__CLASS__Q__inherit__graph.md5
deleted file mode 100644
index 6355315..0000000
--- a/doc/html/classONE__CLASS__Q__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-3cc848b1d60d5cb3df39d11225084950
\ No newline at end of file
diff --git a/doc/html/classONE__CLASS__Q__inherit__graph.png b/doc/html/classONE__CLASS__Q__inherit__graph.png
deleted file mode 100644
index 5ae9bf8..0000000
Binary files a/doc/html/classONE__CLASS__Q__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classOptFactory-members.html b/doc/html/classOptFactory-members.html
deleted file mode 100644
index 7dd73c6..0000000
--- a/doc/html/classOptFactory-members.html
+++ /dev/null
@@ -1,77 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">OptFactory Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classOptFactory.html">OptFactory</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getOptimizer</b>(const std::string &algorithmString, unsigned int npar) (defined in <a class="el" href="classOptFactory.html">OptFactory</a>)</td><td class="entry"><a class="el" href="classOptFactory.html">OptFactory</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>OptFactory</b>() (defined in <a class="el" href="classOptFactory.html">OptFactory</a>)</td><td class="entry"><a class="el" href="classOptFactory.html">OptFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~OptFactory</b>() (defined in <a class="el" href="classOptFactory.html">OptFactory</a>)</td><td class="entry"><a class="el" href="classOptFactory.html">OptFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classOptFactory.html b/doc/html/classOptFactory.html
deleted file mode 100644
index f6242d4..0000000
--- a/doc/html/classOptFactory.html
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: OptFactory Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> |
-<a href="classOptFactory-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">OptFactory Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr class="memitem:a4f740f09ee4ae1ee92c5e4a2426ef232"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4f740f09ee4ae1ee92c5e4a2426ef232"></a>
-static nlopt::opt </td><td class="memItemRight" valign="bottom"><b>getOptimizer</b> (const std::string &algorithmString, unsigned int npar)</td></tr>
-<tr class="separator:a4f740f09ee4ae1ee92c5e4a2426ef232"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="OptFactory_8h_source.html#l00025">25</a> of file <a class="el" href="OptFactory_8h_source.html">OptFactory.h</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/src/algorithms/<a class="el" href="OptFactory_8h_source.html">OptFactory.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classOptionpk-members.html b/doc/html/classOptionpk-members.html
deleted file mode 100644
index d42fc9d..0000000
--- a/doc/html/classOptionpk-members.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">Optionpk< T > Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classOptionpk.html">Optionpk< T ></a>, including all inherited members.</p>
-<table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="classOptionpk.html#a092414f315f6b310fc88eaf5688b81f4">findSubstring</a>(const T &argument) const </td><td class="entry"><a class="el" href="classOptionpk.html">Optionpk< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>findSubstring</b>(const std::string &argument) const (defined in <a class="el" href="classOptionpk.html">Optionpk< T ></a>)</td><td class="entry"><a class="el" href="classOptionpk.html">Optionpk< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getDefaultValue</b>() const  (defined in <a class="el" href="classOptionpk.html">Optionpk< T ></a>)</td><td class="entry"><a class="el" href="classOptionpk.html">Optionpk< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classOptionpk.html#acb7e411ce6a318424bf2ad1f9dc846ff">getGPLv3License</a>()</td><td class="entry"><a class="el" href="classOptionpk.html">Optionpk< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classOptionpk.html#a6054c64a684a4aaba41787d9f8be031f">getHelp</a>() const </td><td class="entry"><a class="el" href="classOptionpk.html">Optionpk< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classOptionpk.html#af7ce0ff4dfe57f1e6685b67fb1d70b69">getLongName</a>() const </td><td class="entry"><a class="el" href="classOptionpk.html">Optionpk< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classOptionpk.html#ae0d0d55bac2456e6cbcec97892667742">getShortName</a>() const </td><td class="entry"><a class="el" href="classOptionpk.html">Optionpk< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classOptionpk.html#a4ab58d03540efa49fe3ebf6a58507f23">operator<<</a>(std::ostream &os, const Optionpk< T1 > &theOption)</td><td class="entry"><a class="el" href="classOptionpk.html">Optionpk< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classOptionpk.html#a0082d074d437413b3beefa06c0521644">Optionpk</a>()</td><td class="entry"><a class="el" href="classOptionpk.html">Optionpk< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classOptionpk.html#a027b169ab11595296121c5e1b8499c6e">Optionpk</a>(const std::string &shortName, const std::string &longName, const std::string &helpInfo)</td><td class="entry"><a class="el" href="classOptionpk.html">Optionpk< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classOptionpk.html#a4356ce7db419ff66abd207028ff1e2fc">Optionpk</a>(const std::string &shortName, const std::string &longName, const std::string &helpInfo, const T &defaultValue, short hide=0)</td><td class="entry"><a class="el" href="classOptionpk.html">Optionpk< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>Optionpk</b>(const std::string &shortName, const std::string &longName, const std::string &helpInfo) (defined in <a class="el" href="classOptionpk.html">Optionpk< T ></a>)</td><td class="entry"><a class="el" href="classOptionpk.html">Optionpk< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Optionpk</b>(const std::string &shortName, const std::string &longName, const std::string &helpInfo, const bool &defaultValue, short hide) (defined in <a class="el" href="classOptionpk.html">Optionpk< T ></a>)</td><td class="entry"><a class="el" href="classOptionpk.html">Optionpk< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classOptionpk.html#a7b788a1b8e5c738732a1733613065ef7">retrieveOption</a>(int argc, char **argv)</td><td class="entry"><a class="el" href="classOptionpk.html">Optionpk< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classOptionpk.html#affd58e09b1baaf0b1754fbf938eea11a">setAll</a>(const std::string &shortName, const std::string &longName, const std::string &helpInfo)</td><td class="entry"><a class="el" href="classOptionpk.html">Optionpk< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classOptionpk.html#a7fda7da55d4511d6868e86bd67a90aa9">setAll</a>(const std::string &shortName, const std::string &longName, const std::string &helpInfo, const T &defaultValue, short hide)</td><td class="entry"><a class="el" href="classOptionpk.html">Optionpk< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setAll</b>(const std::string &shortName, const std::string &longName, const std::string &helpInfo) (defined in <a class="el" href="classOptionpk.html">Optionpk< T ></a>)</td><td class="entry"><a class="el" href="classOptionpk.html">Optionpk< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setAll</b>(const std::string &shortName, const std::string &longName, const std::string &helpInfo, const bool &defaultValue, short hide) (defined in <a class="el" href="classOptionpk.html">Optionpk< T ></a>)</td><td class="entry"><a class="el" href="classOptionpk.html">Optionpk< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classOptionpk.html#ae9dc2dafc605ed3e2a8a798063ce7187">setDefault</a>(const T &defaultValue)</td><td class="entry"><a class="el" href="classOptionpk.html">Optionpk< T ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classOptionpk.html#afea9af606e15b12bc49bc25d0477fe8e">setHelp</a>(const std::string &helpInfo)</td><td class="entry"><a class="el" href="classOptionpk.html">Optionpk< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classOptionpk.html#a95628f0f149cb9465468facfb3f0f915">setHide</a>(short hide)</td><td class="entry"><a class="el" href="classOptionpk.html">Optionpk< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classOptionpk.html#a6ee7c0fc0cbea09eac543e1d2c5b7457">setLongName</a>(const std::string &longName)</td><td class="entry"><a class="el" href="classOptionpk.html">Optionpk< T ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classOptionpk.html#a561e7d4b4141cd9023563d4dee01b932">setShortName</a>(const std::string &shortName)</td><td class="entry"><a class="el" href="classOptionpk.html">Optionpk< T ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classOptionpk.html#aacf921491e6b6fab3c4cad8b39594cff">~Optionpk</a>()</td><td class="entry"><a class="el" href="classOptionpk.html">Optionpk< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classOptionpk.html b/doc/html/classOptionpk.html
deleted file mode 100644
index 21167d7..0000000
--- a/doc/html/classOptionpk.html
+++ /dev/null
@@ -1,495 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Optionpk< T > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-static-methods">Static Public Member Functions</a> |
-<a href="#friends">Friends</a> |
-<a href="classOptionpk-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">Optionpk< T > Class Template Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p><code>#include <<a class="el" href="Optionpk_8h_source.html">Optionpk.h</a>></code></p>
-<div class="dynheader">
-Inheritance diagram for Optionpk< T >:</div>
-<div class="dyncontent">
-<div class="center"><img src="classOptionpk__inherit__graph.png" border="0" usemap="#Optionpk_3_01T_01_4_inherit__map" alt="Inheritance graph"/></div>
-<map name="Optionpk_3_01T_01_4_inherit__map" id="Optionpk_3_01T_01_4_inherit__map">
-<area shape="rect" id="node2" title="STL class. " alt="" coords="5,5,120,32"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for Optionpk< T >:</div>
-<div class="dyncontent">
-<div class="center"><img src="classOptionpk__coll__graph.png" border="0" usemap="#Optionpk_3_01T_01_4_coll__map" alt="Collaboration graph"/></div>
-<map name="Optionpk_3_01T_01_4_coll__map" id="Optionpk_3_01T_01_4_coll__map">
-<area shape="rect" id="node2" title="STL class. " alt="" coords="5,96,120,123"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a0082d074d437413b3beefa06c0521644"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0082d074d437413b3beefa06c0521644"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="classOptionpk.html#a0082d074d437413b3beefa06c0521644">Optionpk</a> ()</td></tr>
-<tr class="memdesc:a0082d074d437413b3beefa06c0521644"><td class="mdescLeft"> </td><td class="mdescRight">default constructor <br/></td></tr>
-<tr class="separator:a0082d074d437413b3beefa06c0521644"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a027b169ab11595296121c5e1b8499c6e"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classOptionpk.html#a027b169ab11595296121c5e1b8499c6e">Optionpk</a> (const std::string &shortName, const std::string &longName, const std::string &helpInfo)</td></tr>
-<tr class="memdesc:a027b169ab11595296121c5e1b8499c6e"><td class="mdescLeft"> </td><td class="mdescRight">constructor for option without default value  <a href="#a027b169ab11595296121c5e1b8499c6e">More...</a><br/></td></tr>
-<tr class="separator:a027b169ab11595296121c5e1b8499c6e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4356ce7db419ff66abd207028ff1e2fc"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classOptionpk.html#a4356ce7db419ff66abd207028ff1e2fc">Optionpk</a> (const std::string &shortName, const std::string &longName, const std::string &helpInfo, const T &defaultValue, short hide=0)</td></tr>
-<tr class="memdesc:a4356ce7db419ff66abd207028ff1e2fc"><td class="mdescLeft"> </td><td class="mdescRight">constructor for option with default value. Option can be hidden for help info  <a href="#a4356ce7db419ff66abd207028ff1e2fc">More...</a><br/></td></tr>
-<tr class="separator:a4356ce7db419ff66abd207028ff1e2fc"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aacf921491e6b6fab3c4cad8b39594cff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aacf921491e6b6fab3c4cad8b39594cff"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="classOptionpk.html#aacf921491e6b6fab3c4cad8b39594cff">~Optionpk</a> ()</td></tr>
-<tr class="memdesc:aacf921491e6b6fab3c4cad8b39594cff"><td class="mdescLeft"> </td><td class="mdescRight">default destructor <br/></td></tr>
-<tr class="separator:aacf921491e6b6fab3c4cad8b39594cff"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afea9af606e15b12bc49bc25d0477fe8e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afea9af606e15b12bc49bc25d0477fe8e"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="classOptionpk.html#afea9af606e15b12bc49bc25d0477fe8e">setHelp</a> (const std::string &helpInfo)</td></tr>
-<tr class="memdesc:afea9af606e15b12bc49bc25d0477fe8e"><td class="mdescLeft"> </td><td class="mdescRight">set help information <br/></td></tr>
-<tr class="separator:afea9af606e15b12bc49bc25d0477fe8e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a95628f0f149cb9465468facfb3f0f915"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a95628f0f149cb9465468facfb3f0f915"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="classOptionpk.html#a95628f0f149cb9465468facfb3f0f915">setHide</a> (short hide)</td></tr>
-<tr class="memdesc:a95628f0f149cb9465468facfb3f0f915"><td class="mdescLeft"> </td><td class="mdescRight">hide option from short help -h (1) or make invisible to short and long help –help (2) <br/></td></tr>
-<tr class="separator:a95628f0f149cb9465468facfb3f0f915"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7b788a1b8e5c738732a1733613065ef7"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classOptionpk.html#a7b788a1b8e5c738732a1733613065ef7">retrieveOption</a> (int argc, char **argv)</td></tr>
-<tr class="memdesc:a7b788a1b8e5c738732a1733613065ef7"><td class="mdescLeft"> </td><td class="mdescRight">read option from command line (use for all options!)  <a href="#a7b788a1b8e5c738732a1733613065ef7">More...</a><br/></td></tr>
-<tr class="separator:a7b788a1b8e5c738732a1733613065ef7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:affd58e09b1baaf0b1754fbf938eea11a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="affd58e09b1baaf0b1754fbf938eea11a"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="classOptionpk.html#affd58e09b1baaf0b1754fbf938eea11a">setAll</a> (const std::string &shortName, const std::string &longName, const std::string &helpInfo)</td></tr>
-<tr class="memdesc:affd58e09b1baaf0b1754fbf938eea11a"><td class="mdescLeft"> </td><td class="mdescRight">set all attributes of the option, except default and hide <br/></td></tr>
-<tr class="separator:affd58e09b1baaf0b1754fbf938eea11a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7fda7da55d4511d6868e86bd67a90aa9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7fda7da55d4511d6868e86bd67a90aa9"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="classOptionpk.html#a7fda7da55d4511d6868e86bd67a90aa9">setAll</a> (const std::string &shortName, const std::string &longName, const std::string &helpInfo, const T &defaultValue, short hide)</td></tr>
-<tr class="memdesc:a7fda7da55d4511d6868e86bd67a90aa9"><td class="mdescLeft"> </td><td class="mdescRight">set all attributes of the option <br/></td></tr>
-<tr class="separator:a7fda7da55d4511d6868e86bd67a90aa9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae9dc2dafc605ed3e2a8a798063ce7187"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae9dc2dafc605ed3e2a8a798063ce7187"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="classOptionpk.html#ae9dc2dafc605ed3e2a8a798063ce7187">setDefault</a> (const T &defaultValue)</td></tr>
-<tr class="memdesc:ae9dc2dafc605ed3e2a8a798063ce7187"><td class="mdescLeft"> </td><td class="mdescRight">set a default value for the option <br/></td></tr>
-<tr class="separator:ae9dc2dafc605ed3e2a8a798063ce7187"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9cf16831ba96ffa15881afc0af5ed2a6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9cf16831ba96ffa15881afc0af5ed2a6"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getDefaultValue</b> () const </td></tr>
-<tr class="separator:a9cf16831ba96ffa15881afc0af5ed2a6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a561e7d4b4141cd9023563d4dee01b932"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a561e7d4b4141cd9023563d4dee01b932"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="classOptionpk.html#a561e7d4b4141cd9023563d4dee01b932">setShortName</a> (const std::string &shortName)</td></tr>
-<tr class="memdesc:a561e7d4b4141cd9023563d4dee01b932"><td class="mdescLeft"> </td><td class="mdescRight">set the short name to be used as -shortName <br/></td></tr>
-<tr class="separator:a561e7d4b4141cd9023563d4dee01b932"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6ee7c0fc0cbea09eac543e1d2c5b7457"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6ee7c0fc0cbea09eac543e1d2c5b7457"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="classOptionpk.html#a6ee7c0fc0cbea09eac543e1d2c5b7457">setLongName</a> (const std::string &longName)</td></tr>
-<tr class="memdesc:a6ee7c0fc0cbea09eac543e1d2c5b7457"><td class="mdescLeft"> </td><td class="mdescRight">set the long name to be used as –longName <br/></td></tr>
-<tr class="separator:a6ee7c0fc0cbea09eac543e1d2c5b7457"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae0d0d55bac2456e6cbcec97892667742"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae0d0d55bac2456e6cbcec97892667742"></a>
-std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classOptionpk.html#ae0d0d55bac2456e6cbcec97892667742">getShortName</a> () const </td></tr>
-<tr class="memdesc:ae0d0d55bac2456e6cbcec97892667742"><td class="mdescLeft"> </td><td class="mdescRight">get the short name to be used as -shortName <br/></td></tr>
-<tr class="separator:ae0d0d55bac2456e6cbcec97892667742"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af7ce0ff4dfe57f1e6685b67fb1d70b69"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af7ce0ff4dfe57f1e6685b67fb1d70b69"></a>
-std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classOptionpk.html#af7ce0ff4dfe57f1e6685b67fb1d70b69">getLongName</a> () const </td></tr>
-<tr class="memdesc:af7ce0ff4dfe57f1e6685b67fb1d70b69"><td class="mdescLeft"> </td><td class="mdescRight">get the long name to be used as –longName <br/></td></tr>
-<tr class="separator:af7ce0ff4dfe57f1e6685b67fb1d70b69"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6054c64a684a4aaba41787d9f8be031f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6054c64a684a4aaba41787d9f8be031f"></a>
-std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classOptionpk.html#a6054c64a684a4aaba41787d9f8be031f">getHelp</a> () const </td></tr>
-<tr class="memdesc:a6054c64a684a4aaba41787d9f8be031f"><td class="mdescLeft"> </td><td class="mdescRight">get help info stored in m_help <br/></td></tr>
-<tr class="separator:a6054c64a684a4aaba41787d9f8be031f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a092414f315f6b310fc88eaf5688b81f4"><td class="memItemLeft" align="right" valign="top">std::vector< T >::const_iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="classOptionpk.html#a092414f315f6b310fc88eaf5688b81f4">findSubstring</a> (const T &argument) const </td></tr>
-<tr class="separator:a092414f315f6b310fc88eaf5688b81f4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad8494670a4fcd2e9a13f6329cce03c4a"><td class="memTemplParams" colspan="2"><a class="anchor" id="ad8494670a4fcd2e9a13f6329cce03c4a"></a>
-template<> </td></tr>
-<tr class="memitem:ad8494670a4fcd2e9a13f6329cce03c4a"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>setAll</b> (const std::string &shortName, const std::string &longName, const std::string &helpInfo)</td></tr>
-<tr class="separator:ad8494670a4fcd2e9a13f6329cce03c4a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9c252508f70b8afb3f1d179f05a89852"><td class="memTemplParams" colspan="2"><a class="anchor" id="a9c252508f70b8afb3f1d179f05a89852"></a>
-template<> </td></tr>
-<tr class="memitem:a9c252508f70b8afb3f1d179f05a89852"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>setAll</b> (const std::string &shortName, const std::string &longName, const std::string &helpInfo, const bool &defaultValue, short hide)</td></tr>
-<tr class="separator:a9c252508f70b8afb3f1d179f05a89852"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a70b4e40e37515ea510d44a668b43e722"><td class="memTemplParams" colspan="2"><a class="anchor" id="a70b4e40e37515ea510d44a668b43e722"></a>
-template<> </td></tr>
-<tr class="memitem:a70b4e40e37515ea510d44a668b43e722"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>Optionpk</b> (const std::string &shortName, const std::string &longName, const std::string &helpInfo)</td></tr>
-<tr class="separator:a70b4e40e37515ea510d44a668b43e722"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acb5ab11e1db7dc20bc9d07d17718c953"><td class="memTemplParams" colspan="2"><a class="anchor" id="acb5ab11e1db7dc20bc9d07d17718c953"></a>
-template<> </td></tr>
-<tr class="memitem:acb5ab11e1db7dc20bc9d07d17718c953"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>Optionpk</b> (const std::string &shortName, const std::string &longName, const std::string &helpInfo, const bool &defaultValue, short hide)</td></tr>
-<tr class="separator:acb5ab11e1db7dc20bc9d07d17718c953"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4c083ccb476747385cecbcacbc9d2296"><td class="memTemplParams" colspan="2"><a class="anchor" id="a4c083ccb476747385cecbcacbc9d2296"></a>
-template<> </td></tr>
-<tr class="memitem:a4c083ccb476747385cecbcacbc9d2296"><td class="memTemplItemLeft" align="right" valign="top">std::vector< std::string ><br class="typebreak"/>
-::const_iterator </td><td class="memTemplItemRight" valign="bottom"><b>findSubstring</b> (const std::string &argument) const</td></tr>
-<tr class="separator:a4c083ccb476747385cecbcacbc9d2296"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr class="memitem:acb7e411ce6a318424bf2ad1f9dc846ff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acb7e411ce6a318424bf2ad1f9dc846ff"></a>
-static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classOptionpk.html#acb7e411ce6a318424bf2ad1f9dc846ff">getGPLv3License</a> ()</td></tr>
-<tr class="memdesc:acb7e411ce6a318424bf2ad1f9dc846ff"><td class="mdescLeft"> </td><td class="mdescRight">get license info <br/></td></tr>
-<tr class="separator:acb7e411ce6a318424bf2ad1f9dc846ff"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:a4ab58d03540efa49fe3ebf6a58507f23"><td class="memTemplParams" colspan="2"><a class="anchor" id="a4ab58d03540efa49fe3ebf6a58507f23"></a>
-template<class T1 > </td></tr>
-<tr class="memitem:a4ab58d03540efa49fe3ebf6a58507f23"><td class="memTemplItemLeft" align="right" valign="top">std::ostream & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classOptionpk.html#a4ab58d03540efa49fe3ebf6a58507f23">operator<<</a> (std::ostream &os, const <a class="el" href="classOptionpk.html">Optionpk</a>< T1 > &theOption)</td></tr>
-<tr class="memdesc:a4ab58d03540efa49fe3ebf6a58507f23"><td class="mdescLeft"> </td><td class="mdescRight">print values for this option <br/></td></tr>
-<tr class="separator:a4ab58d03540efa49fe3ebf6a58507f23"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<class T><br/>
-class Optionpk< T ></h3>
-
-<p>Class to implement command line options. With the constructor you can define an option, in both short <code>-</code> and long <code>--</code> format, of a specific type, help information and a default value.<br/>
-This class inherits from std::vector, so the option variable is a vector, supporting multiple inputs for the same option (e.g., –input file1 [–input file2 ...]. Several command line option formats are supported:</p>
-<ul>
-<li><code>-shortOption value</code></li>
-<li><code>-shortOption=value</code></li>
-<li><code>--longOption value</code></li>
-<li><code>--longOption=value</code></li>
-<li><code>-shortOption</code> (no value for boolean options, which are automatically set by invoking the option)</li>
-<li><code>--longOption</code> (no value for boolean options, which are automatically set by invoking the option)</li>
-</ul>
-<p>Option names should have regular characters and no white space in them. Some names are reserved and can not be used either:</p>
-<ul>
-<li>short option <code>h</code> or long option <code>help</code>: shows usage</li>
-<li>long option <code>help</code> shows long help info</li>
-<li>long option <code>license</code>: shows license info</li>
-<li>long option <code>version</code>: shows current version of pktools</li>
-<li>long option <code>doxygen</code>: shows help info in table format, ready to be included in doxygen</li>
-</ul>
-<p>A call to member function <a class="el" href="classOptionpk.html#a7b788a1b8e5c738732a1733613065ef7">retrieveOption</a> reads the command line arguments and initializes the object (vector). Make sure to call this member function before using the option object in your main program (or a segmentation error due to an un-initialized vector will occur).</p>
-<p>All calls to retrieveOption should reside in a try{} block. If one of the reserved options</p>
-<ul>
-<li><code>license</code></li>
-<li><code>version</code> is used, an exception of type std::string is thrown. This can be caught with a catch(string predefinedString) right after the try block, where the message can be sent to stdout and the program can be ended.</li>
-</ul>
-<p>Similarly, if help is invoked with the short option <code>-h</code> or long option <code>--help</code>, the main program is informed by the return value <code>false</code> of <a class="el" href="classOptionpk.html#a7b788a1b8e5c738732a1733613065ef7">retrieveOption</a> (for any option). An example how to use <a class="el" href="classOptionpk.html">Optionpk</a> is shown in <a class="el" href="pktestOption_8cc_source.html">pktestOption.cc</a> </p>
-
-<p>Definition at line <a class="el" href="Optionpk_8h_source.html#l00106">106</a> of file <a class="el" href="Optionpk_8h_source.html">Optionpk.h</a>.</p>
-</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a027b169ab11595296121c5e1b8499c6e"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<class T > </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classOptionpk.html">Optionpk</a>< T >::<a class="el" href="classOptionpk.html">Optionpk</a> </td>
-          <td>(</td>
-          <td class="paramtype">const std::string & </td>
-          <td class="paramname"><em>shortName</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const std::string & </td>
-          <td class="paramname"><em>longName</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const std::string & </td>
-          <td class="paramname"><em>helpInfo</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>constructor for option without default value </p>
-<p>constructor without default value<br/>
-shortName is option invoked with <code>-</code><br/>
-longName is option invoked with <code>--</code><br/>
-helpInfo is the help message that is shown when option -h or –help is invoked<br/>
-</p>
-
-<p>Definition at line <a class="el" href="Optionpk_8h_source.html#l00209">209</a> of file <a class="el" href="Optionpk_8h_source.html">Optionpk.h</a>.</p>
-<div class="fragment"><div class="line"><a name="l00210"></a><span class="lineno">  210</span> : m_hasDefault(<span class="keyword">false</span>)</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span> {</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>   <a class="code" href="classOptionpk.html#affd58e09b1baaf0b1754fbf938eea11a">setAll</a>(shortName,longName,helpInfo);</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span> }</div>
-<div class="ttc" id="classOptionpk_html_affd58e09b1baaf0b1754fbf938eea11a"><div class="ttname"><a href="classOptionpk.html#affd58e09b1baaf0b1754fbf938eea11a">Optionpk::setAll</a></div><div class="ttdeci">void setAll(const std::string &shortName, const std::string &longName, const std::string &helpInfo)</div><div class="ttdoc">set all attributes of the option, except default and hide </div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00277">Optionpk. [...]
-</div><!-- fragment -->
-</div>
-</div>
-<a class="anchor" id="a4356ce7db419ff66abd207028ff1e2fc"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<class T > </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classOptionpk.html">Optionpk</a>< T >::<a class="el" href="classOptionpk.html">Optionpk</a> </td>
-          <td>(</td>
-          <td class="paramtype">const std::string & </td>
-          <td class="paramname"><em>shortName</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const std::string & </td>
-          <td class="paramname"><em>longName</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const std::string & </td>
-          <td class="paramname"><em>helpInfo</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const T & </td>
-          <td class="paramname"><em>defaultValue</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">short </td>
-          <td class="paramname"><em>hide</em> = <code>0</code> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>constructor for option with default value. Option can be hidden for help info </p>
-<p>constructor with default value.<br/>
-shortName is option invoked with <code>-</code><br/>
-longName is option invoked with <code>--</code><br/>
-helpInfo is the help message that is shown when option -h or –help is invoked<br/>
-defaultValue is default value of the option (first value of vector: option[0])<br/>
-hide=0 : option is visible for in both short (<code>-h</code>). Typical use: mandatory options<br/>
-hide=1 : option is only visible in long help (<code>--help</code>). Typical use: expert options<br/>
-hide=2 : option is hidden for user. Typical use: Easter eggs or options only known to author </p>
-
-<p>Definition at line <a class="el" href="Optionpk_8h_source.html#l00225">225</a> of file <a class="el" href="Optionpk_8h_source.html">Optionpk.h</a>.</p>
-<div class="fragment"><div class="line"><a name="l00226"></a><span class="lineno">  226</span> {</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>   <a class="code" href="classOptionpk.html#affd58e09b1baaf0b1754fbf938eea11a">setAll</a>(shortName,longName,helpInfo,defaultValue, hide);</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span> }</div>
-<div class="ttc" id="classOptionpk_html_affd58e09b1baaf0b1754fbf938eea11a"><div class="ttname"><a href="classOptionpk.html#affd58e09b1baaf0b1754fbf938eea11a">Optionpk::setAll</a></div><div class="ttdeci">void setAll(const std::string &shortName, const std::string &longName, const std::string &helpInfo)</div><div class="ttdoc">set all attributes of the option, except default and hide </div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00277">Optionpk. [...]
-</div><!-- fragment -->
-</div>
-</div>
-<h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="a092414f315f6b310fc88eaf5688b81f4"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<class T> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">std::vector<T>::const_iterator <a class="el" href="classOptionpk.html">Optionpk</a>< T >::findSubstring </td>
-          <td>(</td>
-          <td class="paramtype">const T & </td>
-          <td class="paramname"><em>argument</em></td><td>)</td>
-          <td> const</td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-<p>find substring in options of type string (e.g., -co INTERLEAVE=BAND) this template function only makes sense for T=std::string (implemented via a specialization) </p>
-
-<p>Definition at line <a class="el" href="Optionpk_8h_source.html#l00160">160</a> of file <a class="el" href="Optionpk_8h_source.html">Optionpk.h</a>.</p>
-<div class="fragment"><div class="line"><a name="l00160"></a><span class="lineno">  160</span> {std::string errorString=<span class="stringliteral">"Error: findSubstring only defined for options of type std::string"</span>; <span class="keywordflow">throw</span>(errorString);};</div>
-</div><!-- fragment -->
-</div>
-</div>
-<a class="anchor" id="a7b788a1b8e5c738732a1733613065ef7"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<class T > </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool <a class="el" href="classOptionpk.html">Optionpk</a>< T >::retrieveOption </td>
-          <td>(</td>
-          <td class="paramtype">int </td>
-          <td class="paramname"><em>argc</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">char ** </td>
-          <td class="paramname"><em>argv</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>read option from command line (use for all options!) </p>
-<p>make sure to call this function first before using the option in main program (or segmentation fault will occur...) </p>
-
-<p>Definition at line <a class="el" href="Optionpk_8h_source.html#l00305">305</a> of file <a class="el" href="Optionpk_8h_source.html">Optionpk.h</a>.</p>
-<div class="fragment"><div class="line"><a name="l00305"></a><span class="lineno">  305</span>                                                                               { </div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>   <span class="keywordtype">bool</span> noHelp=<span class="keyword">true</span>;<span class="comment">//return value, alert main program that hard coded option (help, version, license, doxygen) was invoked</span></div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>   std::string helpStringShort=<span class="stringliteral">"-h"</span>;<span class="comment">//short option for help (hard coded)</span></div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>   std::string helpStringLong=<span class="stringliteral">"--help"</span>;<span class="comment">//long option for help (hard coded)</span></div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>   std::string helpStringDoxygen=<span class="stringliteral">"--doxygen"</span>;<span class="comment">//option to create table of options ready to use for doxygen</span></div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>   std::string versionString=<span class="stringliteral">"--version"</span>;<span class="comment">//option to show current version</span></div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>   std::string licenseString=<span class="stringliteral">"--license"</span>;<span class="comment">//option to show current version</span></div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 1; i < argc; ++i ){</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>     std::string currentArgument;</div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>     std::string currentOption=argv[i];</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>     std::string shortOption=m_shortName;</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>     std::string longOption=m_longName;</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>     shortOption.insert(0,<span class="stringliteral">"-"</span>);</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>     longOption.insert(0,<span class="stringliteral">"--"</span>);</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>     <span class="keywordtype">size_t</span> foundEqual=currentOption.rfind(<span class="stringliteral">"="</span>);</div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>     <span class="keywordflow">if</span>(foundEqual!=std::string::npos){</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>       currentArgument=currentOption.substr(foundEqual+1);</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>       currentOption=currentOption.substr(0,foundEqual);</div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>     }</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>     <span class="keywordflow">if</span>(!helpStringShort.compare(currentOption)){</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>       <span class="keywordflow">if</span>(m_hide<1)</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>         std::cout << usage() << std::endl;</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>       noHelp=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>     }</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!helpStringLong.compare(currentOption)){</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>       <span class="keywordflow">if</span>(m_hide<2)</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>         std::cout << usage() << std::endl;</div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>       noHelp=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>     }</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!helpStringDoxygen.compare(currentOption)){</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>       <span class="keywordflow">if</span>(m_hide<2)</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>         std::cout << usageDoxygen() << std::endl;</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>       noHelp=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>     }</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!versionString.compare(currentOption)){</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>       std::string theVersion=<span class="stringliteral">"version "</span>;</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>       theVersion+=VERSION;</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>       theVersion+=<span class="stringliteral">", Copyright (C) Pieter Kempeneers.\n\</span></div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span> <span class="stringliteral">   This program comes with ABSOLUTELY NO WARRANTY; for details type use option -h.\n \</span></div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span> <span class="stringliteral">   This is free software, and you are welcome to redistribute it\n      \</span></div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span> <span class="stringliteral">   under certain conditions; use option --license for details."</span>;</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>       <span class="keywordflow">throw</span>(theVersion);<span class="comment">//no need to continue registering (break prevents from multiplication of version info)</span></div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>     }</div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!licenseString.compare(currentOption)){</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>       <span class="keywordflow">throw</span>(<a class="code" href="classOptionpk.html#acb7e411ce6a318424bf2ad1f9dc846ff">getGPLv3License</a>());</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>     }</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>     <span class="keywordflow">if</span>(hasShortOption()&&!(shortOption.compare(currentOption))){<span class="comment">//for -option</span></div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>       <span class="keywordflow">if</span>(foundEqual!=std::string::npos)</div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>         this->push_back(string2type<T>(currentArgument));</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_hasArgument && i < argc-1)</div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>         this->push_back(string2type<T>(argv[++i]));</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>         this->push_back(string2type<T>(<span class="stringliteral">"1"</span>));</div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>     }</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(hasLongOption()&&!(longOption.compare(currentOption))){<span class="comment">//for --option</span></div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>       <span class="keywordflow">if</span>(foundEqual!=std::string::npos)</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>         this->push_back(string2type<T>(currentArgument));</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_hasArgument && i < argc-1)</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>         this->push_back(string2type<T>(argv[++i]));</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>         this->push_back(string2type<T>(<span class="stringliteral">"1"</span>));</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>     }</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>   }</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>   <span class="keywordflow">if</span>(!(this->size())&&m_hasDefault)<span class="comment">//only set default value if no options were given</span></div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>     this->push_back(m_defaultValue);</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>   <span class="keywordflow">return</span>(noHelp);</div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span> }</div>
-<div class="ttc" id="classOptionpk_html_acb7e411ce6a318424bf2ad1f9dc846ff"><div class="ttname"><a href="classOptionpk.html#acb7e411ce6a318424bf2ad1f9dc846ff">Optionpk::getGPLv3License</a></div><div class="ttdeci">static std::string getGPLv3License()</div><div class="ttdoc">get license info </div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00143">Optionpk.h:143</a></div></div>
-</div><!-- fragment -->
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/src/base/<a class="el" href="Optionpk_8h_source.html">Optionpk.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classOptionpk__coll__graph.map b/doc/html/classOptionpk__coll__graph.map
deleted file mode 100644
index f94e56d..0000000
--- a/doc/html/classOptionpk__coll__graph.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Optionpk< T >" name="Optionpk< T >">
-<area shape="rect" id="node2" title="STL class. " alt="" coords="5,96,120,123"/>
-</map>
diff --git a/doc/html/classOptionpk__coll__graph.md5 b/doc/html/classOptionpk__coll__graph.md5
deleted file mode 100644
index 31ea47e..0000000
--- a/doc/html/classOptionpk__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-4f870ed6f6d4377a5fdde63d8dedb941
\ No newline at end of file
diff --git a/doc/html/classOptionpk__coll__graph.png b/doc/html/classOptionpk__coll__graph.png
deleted file mode 100644
index bfe514d..0000000
Binary files a/doc/html/classOptionpk__coll__graph.png and /dev/null differ
diff --git a/doc/html/classOptionpk__inherit__graph.map b/doc/html/classOptionpk__inherit__graph.map
deleted file mode 100644
index 3e5ef33..0000000
--- a/doc/html/classOptionpk__inherit__graph.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Optionpk< T >" name="Optionpk< T >">
-<area shape="rect" id="node2" title="STL class. " alt="" coords="5,5,120,32"/>
-</map>
diff --git a/doc/html/classOptionpk__inherit__graph.md5 b/doc/html/classOptionpk__inherit__graph.md5
deleted file mode 100644
index 0db5a00..0000000
--- a/doc/html/classOptionpk__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-49ea1bb4062c4a395ab38ecda0ec44a8
\ No newline at end of file
diff --git a/doc/html/classOptionpk__inherit__graph.png b/doc/html/classOptionpk__inherit__graph.png
deleted file mode 100644
index e2d4dd6..0000000
Binary files a/doc/html/classOptionpk__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classQMatrix-members.html b/doc/html/classQMatrix-members.html
deleted file mode 100644
index 2c4af1d..0000000
--- a/doc/html/classQMatrix-members.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">QMatrix Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classQMatrix.html">QMatrix</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_Q</b>(int column, int len) const =0 (defined in <a class="el" href="classQMatrix.html">QMatrix</a>)</td><td class="entry"><a class="el" href="classQMatrix.html">QMatrix</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>get_QD</b>() const =0 (defined in <a class="el" href="classQMatrix.html">QMatrix</a>)</td><td class="entry"><a class="el" href="classQMatrix.html">QMatrix</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>swap_index</b>(int i, int j) const =0 (defined in <a class="el" href="classQMatrix.html">QMatrix</a>)</td><td class="entry"><a class="el" href="classQMatrix.html">QMatrix</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~QMatrix</b>() (defined in <a class="el" href="classQMatrix.html">QMatrix</a>)</td><td class="entry"><a class="el" href="classQMatrix.html">QMatrix</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classQMatrix.html b/doc/html/classQMatrix.html
deleted file mode 100644
index a00d120..0000000
--- a/doc/html/classQMatrix.html
+++ /dev/null
@@ -1,100 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: QMatrix Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="classQMatrix-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">QMatrix Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for QMatrix:</div>
-<div class="dyncontent">
-<div class="center"><img src="classQMatrix__inherit__graph.png" border="0" usemap="#QMatrix_inherit__map" alt="Inheritance graph"/></div>
-<map name="QMatrix_inherit__map" id="QMatrix_inherit__map">
-<area shape="rect" id="node2" href="classKernel.html" title="Kernel" alt="" coords="152,80,209,107"/><area shape="rect" id="node3" href="classONE__CLASS__Q.html" title="ONE_CLASS_Q" alt="" coords="5,155,123,181"/><area shape="rect" id="node4" href="classSVC__Q.html" title="SVC_Q" alt="" coords="148,155,215,181"/><area shape="rect" id="node5" href="classSVR__Q.html" title="SVR_Q" alt="" coords="239,155,305,181"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a87c11086390c81293d2978e042be3d10"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a87c11086390c81293d2978e042be3d10"></a>
-virtual Qfloat * </td><td class="memItemRight" valign="bottom"><b>get_Q</b> (int column, int len) const =0</td></tr>
-<tr class="separator:a87c11086390c81293d2978e042be3d10"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af04994d9632b6194f626c431ce93083f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af04994d9632b6194f626c431ce93083f"></a>
-virtual double * </td><td class="memItemRight" valign="bottom"><b>get_QD</b> () const =0</td></tr>
-<tr class="separator:af04994d9632b6194f626c431ce93083f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acb4e256ebe3008dff0d4b5414102dbe7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acb4e256ebe3008dff0d4b5414102dbe7"></a>
-virtual void </td><td class="memItemRight" valign="bottom"><b>swap_index</b> (int i, int j) const =0</td></tr>
-<tr class="separator:acb4e256ebe3008dff0d4b5414102dbe7"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="svm_8cpp_source.html#l00196">196</a> of file <a class="el" href="svm_8cpp_source.html">svm.cpp</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/src/algorithms/<a class="el" href="svm_8cpp_source.html">svm.cpp</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classQMatrix__inherit__graph.map b/doc/html/classQMatrix__inherit__graph.map
deleted file mode 100644
index 6ec7bbc..0000000
--- a/doc/html/classQMatrix__inherit__graph.map
+++ /dev/null
@@ -1,6 +0,0 @@
-<map id="QMatrix" name="QMatrix">
-<area shape="rect" id="node2" href="$classKernel.html" title="Kernel" alt="" coords="152,80,209,107"/>
-<area shape="rect" id="node3" href="$classONE__CLASS__Q.html" title="ONE_CLASS_Q" alt="" coords="5,155,123,181"/>
-<area shape="rect" id="node4" href="$classSVC__Q.html" title="SVC_Q" alt="" coords="148,155,215,181"/>
-<area shape="rect" id="node5" href="$classSVR__Q.html" title="SVR_Q" alt="" coords="239,155,305,181"/>
-</map>
diff --git a/doc/html/classQMatrix__inherit__graph.md5 b/doc/html/classQMatrix__inherit__graph.md5
deleted file mode 100644
index 451e69f..0000000
--- a/doc/html/classQMatrix__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-16f1983d166214f64c8d7731777e3899
\ No newline at end of file
diff --git a/doc/html/classQMatrix__inherit__graph.png b/doc/html/classQMatrix__inherit__graph.png
deleted file mode 100644
index 737bcee..0000000
Binary files a/doc/html/classQMatrix__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classSVC__Q-members.html b/doc/html/classSVC__Q-members.html
deleted file mode 100644
index 98cb6fb..0000000
--- a/doc/html/classSVC__Q-members.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">SVC_Q Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classSVC__Q.html">SVC_Q</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_Q</b>(int i, int len) const  (defined in <a class="el" href="classSVC__Q.html">SVC_Q</a>)</td><td class="entry"><a class="el" href="classSVC__Q.html">SVC_Q</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>get_QD</b>() const  (defined in <a class="el" href="classSVC__Q.html">SVC_Q</a>)</td><td class="entry"><a class="el" href="classSVC__Q.html">SVC_Q</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>k_function</b>(const svm_node *x, const svm_node *y, const svm_parameter &param) (defined in <a class="el" href="classKernel.html">Kernel</a>)</td><td class="entry"><a class="el" href="classKernel.html">Kernel</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>Kernel</b>(int l, svm_node *const *x, const svm_parameter &param) (defined in <a class="el" href="classKernel.html">Kernel</a>)</td><td class="entry"><a class="el" href="classKernel.html">Kernel</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>kernel_function</b> (defined in <a class="el" href="classKernel.html">Kernel</a>)</td><td class="entry"><a class="el" href="classKernel.html">Kernel</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>SVC_Q</b>(const svm_problem &prob, const svm_parameter &param, const schar *y_) (defined in <a class="el" href="classSVC__Q.html">SVC_Q</a>)</td><td class="entry"><a class="el" href="classSVC__Q.html">SVC_Q</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>swap_index</b>(int i, int j) const  (defined in <a class="el" href="classSVC__Q.html">SVC_Q</a>)</td><td class="entry"><a class="el" href="classSVC__Q.html">SVC_Q</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~Kernel</b>() (defined in <a class="el" href="classKernel.html">Kernel</a>)</td><td class="entry"><a class="el" href="classKernel.html">Kernel</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~QMatrix</b>() (defined in <a class="el" href="classQMatrix.html">QMatrix</a>)</td><td class="entry"><a class="el" href="classQMatrix.html">QMatrix</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~SVC_Q</b>() (defined in <a class="el" href="classSVC__Q.html">SVC_Q</a>)</td><td class="entry"><a class="el" href="classSVC__Q.html">SVC_Q</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classSVC__Q.html b/doc/html/classSVC__Q.html
deleted file mode 100644
index 59e71a2..0000000
--- a/doc/html/classSVC__Q.html
+++ /dev/null
@@ -1,125 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: SVC_Q Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="classSVC__Q-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">SVC_Q Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for SVC_Q:</div>
-<div class="dyncontent">
-<div class="center"><img src="classSVC__Q__inherit__graph.png" border="0" usemap="#SVC__Q_inherit__map" alt="Inheritance graph"/></div>
-<map name="SVC__Q_inherit__map" id="SVC__Q_inherit__map">
-<area shape="rect" id="node2" href="classKernel.html" title="Kernel" alt="" coords="9,80,67,107"/><area shape="rect" id="node3" href="classQMatrix.html" title="QMatrix" alt="" coords="5,5,72,32"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for SVC_Q:</div>
-<div class="dyncontent">
-<div class="center"><img src="classSVC__Q__coll__graph.png" border="0" usemap="#SVC__Q_coll__map" alt="Collaboration graph"/></div>
-<map name="SVC__Q_coll__map" id="SVC__Q_coll__map">
-<area shape="rect" id="node2" href="classKernel.html" title="Kernel" alt="" coords="9,80,67,107"/><area shape="rect" id="node3" href="classQMatrix.html" title="QMatrix" alt="" coords="5,5,72,32"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a23d7cf0b0606ccf2cb987205b94dddc7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a23d7cf0b0606ccf2cb987205b94dddc7"></a>
- </td><td class="memItemRight" valign="bottom"><b>SVC_Q</b> (const <a class="el" href="structsvm__problem.html">svm_problem</a> &prob, const <a class="el" href="structsvm__parameter.html">svm_parameter</a> &param, const schar *y_)</td></tr>
-<tr class="separator:a23d7cf0b0606ccf2cb987205b94dddc7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9341b6030b3fdc88466e4a602b5abff0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9341b6030b3fdc88466e4a602b5abff0"></a>
-Qfloat * </td><td class="memItemRight" valign="bottom"><b>get_Q</b> (int i, int len) const </td></tr>
-<tr class="separator:a9341b6030b3fdc88466e4a602b5abff0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac73020a6e438e209d63223e1fa8cac29"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac73020a6e438e209d63223e1fa8cac29"></a>
-double * </td><td class="memItemRight" valign="bottom"><b>get_QD</b> () const </td></tr>
-<tr class="separator:ac73020a6e438e209d63223e1fa8cac29"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9c889db8ee0156ed5bcdaa4d6bc4e245"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9c889db8ee0156ed5bcdaa4d6bc4e245"></a>
-void </td><td class="memItemRight" valign="bottom"><b>swap_index</b> (int i, int j) const </td></tr>
-<tr class="separator:a9c889db8ee0156ed5bcdaa4d6bc4e245"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_classKernel"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classKernel')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="classKernel.html">Kernel</a></td></tr>
-<tr class="memitem:a25ffaa0c67cc5b8c7fcdb6f97ca1725f inherit pub_methods_classKernel"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a25ffaa0c67cc5b8c7fcdb6f97ca1725f"></a>
- </td><td class="memItemRight" valign="bottom"><b>Kernel</b> (int l, <a class="el" href="structsvm__node.html">svm_node</a> *const *x, const <a class="el" href="structsvm__parameter.html">svm_parameter</a> &param)</td></tr>
-<tr class="separator:a25ffaa0c67cc5b8c7fcdb6f97ca1725f inherit pub_methods_classKernel"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
-Additional Inherited Members</h2></td></tr>
-<tr class="inherit_header pub_static_methods_classKernel"><td colspan="2" onclick="javascript:toggleInherit('pub_static_methods_classKernel')"><img src="closed.png" alt="-"/> Static Public Member Functions inherited from <a class="el" href="classKernel.html">Kernel</a></td></tr>
-<tr class="memitem:a6ff0d4ac64bf7fba29d2ca3433dd5127 inherit pub_static_methods_classKernel"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6ff0d4ac64bf7fba29d2ca3433dd5127"></a>
-static double </td><td class="memItemRight" valign="bottom"><b>k_function</b> (const <a class="el" href="structsvm__node.html">svm_node</a> *x, const <a class="el" href="structsvm__node.html">svm_node</a> *y, const <a class="el" href="structsvm__parameter.html">svm_parameter</a> &param)</td></tr>
-<tr class="separator:a6ff0d4ac64bf7fba29d2ca3433dd5127 inherit pub_static_methods_classKernel"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pro_attribs_classKernel"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classKernel')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="classKernel.html">Kernel</a></td></tr>
-<tr class="memitem:a575eeb588e8a5c62ff3228a35e255a02 inherit pro_attribs_classKernel"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a575eeb588e8a5c62ff3228a35e255a02"></a>
-double(Kernel::* </td><td class="memItemRight" valign="bottom"><b>kernel_function</b> )(int i, int j) const </td></tr>
-<tr class="separator:a575eeb588e8a5c62ff3228a35e255a02 inherit pro_attribs_classKernel"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="svm_8cpp_source.html#l01273">1273</a> of file <a class="el" href="svm_8cpp_source.html">svm.cpp</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/src/algorithms/<a class="el" href="svm_8cpp_source.html">svm.cpp</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classSVC__Q__coll__graph.map b/doc/html/classSVC__Q__coll__graph.map
deleted file mode 100644
index 525bd78..0000000
--- a/doc/html/classSVC__Q__coll__graph.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="SVC_Q" name="SVC_Q">
-<area shape="rect" id="node2" href="$classKernel.html" title="Kernel" alt="" coords="9,80,67,107"/>
-<area shape="rect" id="node3" href="$classQMatrix.html" title="QMatrix" alt="" coords="5,5,72,32"/>
-</map>
diff --git a/doc/html/classSVC__Q__coll__graph.md5 b/doc/html/classSVC__Q__coll__graph.md5
deleted file mode 100644
index 49e0937..0000000
--- a/doc/html/classSVC__Q__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-be01d771f362a07cb29951e4936c8c03
\ No newline at end of file
diff --git a/doc/html/classSVC__Q__coll__graph.png b/doc/html/classSVC__Q__coll__graph.png
deleted file mode 100644
index 94a074c..0000000
Binary files a/doc/html/classSVC__Q__coll__graph.png and /dev/null differ
diff --git a/doc/html/classSVC__Q__inherit__graph.map b/doc/html/classSVC__Q__inherit__graph.map
deleted file mode 100644
index 525bd78..0000000
--- a/doc/html/classSVC__Q__inherit__graph.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="SVC_Q" name="SVC_Q">
-<area shape="rect" id="node2" href="$classKernel.html" title="Kernel" alt="" coords="9,80,67,107"/>
-<area shape="rect" id="node3" href="$classQMatrix.html" title="QMatrix" alt="" coords="5,5,72,32"/>
-</map>
diff --git a/doc/html/classSVC__Q__inherit__graph.md5 b/doc/html/classSVC__Q__inherit__graph.md5
deleted file mode 100644
index 49e0937..0000000
--- a/doc/html/classSVC__Q__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-be01d771f362a07cb29951e4936c8c03
\ No newline at end of file
diff --git a/doc/html/classSVC__Q__inherit__graph.png b/doc/html/classSVC__Q__inherit__graph.png
deleted file mode 100644
index 94a074c..0000000
Binary files a/doc/html/classSVC__Q__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classSVR__Q-members.html b/doc/html/classSVR__Q-members.html
deleted file mode 100644
index dbfe458..0000000
--- a/doc/html/classSVR__Q-members.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">SVR_Q Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classSVR__Q.html">SVR_Q</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_Q</b>(int i, int len) const  (defined in <a class="el" href="classSVR__Q.html">SVR_Q</a>)</td><td class="entry"><a class="el" href="classSVR__Q.html">SVR_Q</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>get_QD</b>() const  (defined in <a class="el" href="classSVR__Q.html">SVR_Q</a>)</td><td class="entry"><a class="el" href="classSVR__Q.html">SVR_Q</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>k_function</b>(const svm_node *x, const svm_node *y, const svm_parameter &param) (defined in <a class="el" href="classKernel.html">Kernel</a>)</td><td class="entry"><a class="el" href="classKernel.html">Kernel</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>Kernel</b>(int l, svm_node *const *x, const svm_parameter &param) (defined in <a class="el" href="classKernel.html">Kernel</a>)</td><td class="entry"><a class="el" href="classKernel.html">Kernel</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>kernel_function</b> (defined in <a class="el" href="classKernel.html">Kernel</a>)</td><td class="entry"><a class="el" href="classKernel.html">Kernel</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>SVR_Q</b>(const svm_problem &prob, const svm_parameter &param) (defined in <a class="el" href="classSVR__Q.html">SVR_Q</a>)</td><td class="entry"><a class="el" href="classSVR__Q.html">SVR_Q</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>swap_index</b>(int i, int j) const  (defined in <a class="el" href="classSVR__Q.html">SVR_Q</a>)</td><td class="entry"><a class="el" href="classSVR__Q.html">SVR_Q</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~Kernel</b>() (defined in <a class="el" href="classKernel.html">Kernel</a>)</td><td class="entry"><a class="el" href="classKernel.html">Kernel</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~QMatrix</b>() (defined in <a class="el" href="classQMatrix.html">QMatrix</a>)</td><td class="entry"><a class="el" href="classQMatrix.html">QMatrix</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~SVR_Q</b>() (defined in <a class="el" href="classSVR__Q.html">SVR_Q</a>)</td><td class="entry"><a class="el" href="classSVR__Q.html">SVR_Q</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classSVR__Q.html b/doc/html/classSVR__Q.html
deleted file mode 100644
index d9c2a80..0000000
--- a/doc/html/classSVR__Q.html
+++ /dev/null
@@ -1,125 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: SVR_Q Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="classSVR__Q-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">SVR_Q Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for SVR_Q:</div>
-<div class="dyncontent">
-<div class="center"><img src="classSVR__Q__inherit__graph.png" border="0" usemap="#SVR__Q_inherit__map" alt="Inheritance graph"/></div>
-<map name="SVR__Q_inherit__map" id="SVR__Q_inherit__map">
-<area shape="rect" id="node2" href="classKernel.html" title="Kernel" alt="" coords="9,80,67,107"/><area shape="rect" id="node3" href="classQMatrix.html" title="QMatrix" alt="" coords="5,5,72,32"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for SVR_Q:</div>
-<div class="dyncontent">
-<div class="center"><img src="classSVR__Q__coll__graph.png" border="0" usemap="#SVR__Q_coll__map" alt="Collaboration graph"/></div>
-<map name="SVR__Q_coll__map" id="SVR__Q_coll__map">
-<area shape="rect" id="node2" href="classKernel.html" title="Kernel" alt="" coords="9,80,67,107"/><area shape="rect" id="node3" href="classQMatrix.html" title="QMatrix" alt="" coords="5,5,72,32"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a348978e0cce4c0bf503dc825241eb4ff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a348978e0cce4c0bf503dc825241eb4ff"></a>
- </td><td class="memItemRight" valign="bottom"><b>SVR_Q</b> (const <a class="el" href="structsvm__problem.html">svm_problem</a> &prob, const <a class="el" href="structsvm__parameter.html">svm_parameter</a> &param)</td></tr>
-<tr class="separator:a348978e0cce4c0bf503dc825241eb4ff"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9d3884f0c68f4ce18d47570e4a203405"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9d3884f0c68f4ce18d47570e4a203405"></a>
-void </td><td class="memItemRight" valign="bottom"><b>swap_index</b> (int i, int j) const </td></tr>
-<tr class="separator:a9d3884f0c68f4ce18d47570e4a203405"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aba55078d17e7815f093ffa154f3cee9d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aba55078d17e7815f093ffa154f3cee9d"></a>
-Qfloat * </td><td class="memItemRight" valign="bottom"><b>get_Q</b> (int i, int len) const </td></tr>
-<tr class="separator:aba55078d17e7815f093ffa154f3cee9d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac22ed5ce1b0bf6a900c3c8d631e77d76"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac22ed5ce1b0bf6a900c3c8d631e77d76"></a>
-double * </td><td class="memItemRight" valign="bottom"><b>get_QD</b> () const </td></tr>
-<tr class="separator:ac22ed5ce1b0bf6a900c3c8d631e77d76"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_classKernel"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classKernel')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="classKernel.html">Kernel</a></td></tr>
-<tr class="memitem:a25ffaa0c67cc5b8c7fcdb6f97ca1725f inherit pub_methods_classKernel"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a25ffaa0c67cc5b8c7fcdb6f97ca1725f"></a>
- </td><td class="memItemRight" valign="bottom"><b>Kernel</b> (int l, <a class="el" href="structsvm__node.html">svm_node</a> *const *x, const <a class="el" href="structsvm__parameter.html">svm_parameter</a> &param)</td></tr>
-<tr class="separator:a25ffaa0c67cc5b8c7fcdb6f97ca1725f inherit pub_methods_classKernel"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
-Additional Inherited Members</h2></td></tr>
-<tr class="inherit_header pub_static_methods_classKernel"><td colspan="2" onclick="javascript:toggleInherit('pub_static_methods_classKernel')"><img src="closed.png" alt="-"/> Static Public Member Functions inherited from <a class="el" href="classKernel.html">Kernel</a></td></tr>
-<tr class="memitem:a6ff0d4ac64bf7fba29d2ca3433dd5127 inherit pub_static_methods_classKernel"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6ff0d4ac64bf7fba29d2ca3433dd5127"></a>
-static double </td><td class="memItemRight" valign="bottom"><b>k_function</b> (const <a class="el" href="structsvm__node.html">svm_node</a> *x, const <a class="el" href="structsvm__node.html">svm_node</a> *y, const <a class="el" href="structsvm__parameter.html">svm_parameter</a> &param)</td></tr>
-<tr class="separator:a6ff0d4ac64bf7fba29d2ca3433dd5127 inherit pub_static_methods_classKernel"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pro_attribs_classKernel"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classKernel')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="classKernel.html">Kernel</a></td></tr>
-<tr class="memitem:a575eeb588e8a5c62ff3228a35e255a02 inherit pro_attribs_classKernel"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a575eeb588e8a5c62ff3228a35e255a02"></a>
-double(Kernel::* </td><td class="memItemRight" valign="bottom"><b>kernel_function</b> )(int i, int j) const </td></tr>
-<tr class="separator:a575eeb588e8a5c62ff3228a35e255a02 inherit pro_attribs_classKernel"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="svm_8cpp_source.html#l01369">1369</a> of file <a class="el" href="svm_8cpp_source.html">svm.cpp</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/src/algorithms/<a class="el" href="svm_8cpp_source.html">svm.cpp</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classSVR__Q__coll__graph.map b/doc/html/classSVR__Q__coll__graph.map
deleted file mode 100644
index 558924c..0000000
--- a/doc/html/classSVR__Q__coll__graph.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="SVR_Q" name="SVR_Q">
-<area shape="rect" id="node2" href="$classKernel.html" title="Kernel" alt="" coords="9,80,67,107"/>
-<area shape="rect" id="node3" href="$classQMatrix.html" title="QMatrix" alt="" coords="5,5,72,32"/>
-</map>
diff --git a/doc/html/classSVR__Q__coll__graph.md5 b/doc/html/classSVR__Q__coll__graph.md5
deleted file mode 100644
index dd5c95e..0000000
--- a/doc/html/classSVR__Q__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-a7e53ec819237bac61d50010179771f7
\ No newline at end of file
diff --git a/doc/html/classSVR__Q__coll__graph.png b/doc/html/classSVR__Q__coll__graph.png
deleted file mode 100644
index 8b53c43..0000000
Binary files a/doc/html/classSVR__Q__coll__graph.png and /dev/null differ
diff --git a/doc/html/classSVR__Q__inherit__graph.map b/doc/html/classSVR__Q__inherit__graph.map
deleted file mode 100644
index 558924c..0000000
--- a/doc/html/classSVR__Q__inherit__graph.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="SVR_Q" name="SVR_Q">
-<area shape="rect" id="node2" href="$classKernel.html" title="Kernel" alt="" coords="9,80,67,107"/>
-<area shape="rect" id="node3" href="$classQMatrix.html" title="QMatrix" alt="" coords="5,5,72,32"/>
-</map>
diff --git a/doc/html/classSVR__Q__inherit__graph.md5 b/doc/html/classSVR__Q__inherit__graph.md5
deleted file mode 100644
index dd5c95e..0000000
--- a/doc/html/classSVR__Q__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-a7e53ec819237bac61d50010179771f7
\ No newline at end of file
diff --git a/doc/html/classSVR__Q__inherit__graph.png b/doc/html/classSVR__Q__inherit__graph.png
deleted file mode 100644
index 8b53c43..0000000
Binary files a/doc/html/classSVR__Q__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classSolver-members.html b/doc/html/classSolver-members.html
deleted file mode 100644
index 4cba386..0000000
--- a/doc/html/classSolver-members.html
+++ /dev/null
@@ -1,105 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">Solver Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classSolver.html">Solver</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>active_set</b> (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>active_size</b> (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>alpha</b> (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>alpha_status</b> (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>calculate_rho</b>() (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>Cn</b> (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Cp</b> (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>do_shrinking</b>() (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>eps</b> (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>FREE</b> enum value (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>G</b> (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>G_bar</b> (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_C</b>(int i) (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_free</b>(int i) (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_lower_bound</b>(int i) (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_upper_bound</b>(int i) (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>l</b> (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>LOWER_BOUND</b> enum value (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>p</b> (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>Q</b> (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>QD</b> (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>reconstruct_gradient</b>() (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>select_working_set</b>(int &i, int &j) (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>Solve</b>(int l, const QMatrix &Q, const double *p_, const schar *y_, double *alpha_, double Cp, double Cn, double eps, SolutionInfo *si, int shrinking, bool verbose=false) (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Solver</b>() (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>swap_index</b>(int i, int j) (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>unshrink</b> (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>update_alpha_status</b>(int i) (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>UPPER_BOUND</b> enum value (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>y</b> (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~Solver</b>() (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classSolver.html b/doc/html/classSolver.html
deleted file mode 100644
index f4fe8bc..0000000
--- a/doc/html/classSolver.html
+++ /dev/null
@@ -1,199 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Solver Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Classes</a> |
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-types">Protected Types</a> |
-<a href="#pro-methods">Protected Member Functions</a> |
-<a href="#pro-attribs">Protected Attributes</a> |
-<a href="classSolver-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">Solver Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for Solver:</div>
-<div class="dyncontent">
-<div class="center"><img src="classSolver__inherit__graph.png" border="0" usemap="#Solver_inherit__map" alt="Inheritance graph"/></div>
-<map name="Solver_inherit__map" id="Solver_inherit__map">
-<area shape="rect" id="node2" href="classSolver__NU.html" title="Solver_NU" alt="" coords="5,80,91,107"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for Solver:</div>
-<div class="dyncontent">
-<div class="center"><img src="classSolver__coll__graph.png" border="0" usemap="#Solver_coll__map" alt="Collaboration graph"/></div>
-<map name="Solver_coll__map" id="Solver_coll__map">
-<area shape="rect" id="node2" href="classQMatrix.html" title="QMatrix" alt="" coords="5,5,72,32"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
-Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structSolver_1_1SolutionInfo.html">SolutionInfo</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:ac3bb5ec5ddc9ad38643b94fcc47a3a23"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac3bb5ec5ddc9ad38643b94fcc47a3a23"></a>
-void </td><td class="memItemRight" valign="bottom"><b>Solve</b> (int l, const <a class="el" href="classQMatrix.html">QMatrix</a> &Q, const double *p_, const schar *y_, double *alpha_, double Cp, double Cn, double eps, <a class="el" href="structSolver_1_1SolutionInfo.html">SolutionInfo</a> *si, int shrinking, bool verbose=false)</td></tr>
-<tr class="separator:ac3bb5ec5ddc9ad38643b94fcc47a3a23"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-types"></a>
-Protected Types</h2></td></tr>
-<tr class="memitem:ac379e632a6b428a803d621c92b0b3515"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom">{ <b>LOWER_BOUND</b>, 
-<b>UPPER_BOUND</b>, 
-<b>FREE</b>
- }</td></tr>
-<tr class="separator:ac379e632a6b428a803d621c92b0b3515"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
-Protected Member Functions</h2></td></tr>
-<tr class="memitem:ae55a8581815436d13e760dadaec34e2a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae55a8581815436d13e760dadaec34e2a"></a>
-double </td><td class="memItemRight" valign="bottom"><b>get_C</b> (int i)</td></tr>
-<tr class="separator:ae55a8581815436d13e760dadaec34e2a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5a978b4ff9b60b2d75e54970fd6a2c20"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5a978b4ff9b60b2d75e54970fd6a2c20"></a>
-void </td><td class="memItemRight" valign="bottom"><b>update_alpha_status</b> (int i)</td></tr>
-<tr class="separator:a5a978b4ff9b60b2d75e54970fd6a2c20"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a98d878b13d6f710fcaa0b16e657a37b6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a98d878b13d6f710fcaa0b16e657a37b6"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>is_upper_bound</b> (int i)</td></tr>
-<tr class="separator:a98d878b13d6f710fcaa0b16e657a37b6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5876eedb0a6de6954f6037af0992cbed"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5876eedb0a6de6954f6037af0992cbed"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>is_lower_bound</b> (int i)</td></tr>
-<tr class="separator:a5876eedb0a6de6954f6037af0992cbed"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7b5e230875b8b5f06150ff0690e36b47"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7b5e230875b8b5f06150ff0690e36b47"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>is_free</b> (int i)</td></tr>
-<tr class="separator:a7b5e230875b8b5f06150ff0690e36b47"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a043f498c1dda0122859d03f9cd07dc08"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a043f498c1dda0122859d03f9cd07dc08"></a>
-void </td><td class="memItemRight" valign="bottom"><b>swap_index</b> (int i, int j)</td></tr>
-<tr class="separator:a043f498c1dda0122859d03f9cd07dc08"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7e34992ede606a336606ae54f6e963e6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7e34992ede606a336606ae54f6e963e6"></a>
-void </td><td class="memItemRight" valign="bottom"><b>reconstruct_gradient</b> ()</td></tr>
-<tr class="separator:a7e34992ede606a336606ae54f6e963e6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a95fb4eaf33362558e1fc768f4db019d3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a95fb4eaf33362558e1fc768f4db019d3"></a>
-virtual int </td><td class="memItemRight" valign="bottom"><b>select_working_set</b> (int &i, int &j)</td></tr>
-<tr class="separator:a95fb4eaf33362558e1fc768f4db019d3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad00b01f72232ca932cad68e58c9cde5a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad00b01f72232ca932cad68e58c9cde5a"></a>
-virtual double </td><td class="memItemRight" valign="bottom"><b>calculate_rho</b> ()</td></tr>
-<tr class="separator:ad00b01f72232ca932cad68e58c9cde5a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad3f6665a1ca590e56b3d51f8ddcc347c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad3f6665a1ca590e56b3d51f8ddcc347c"></a>
-virtual void </td><td class="memItemRight" valign="bottom"><b>do_shrinking</b> ()</td></tr>
-<tr class="separator:ad3f6665a1ca590e56b3d51f8ddcc347c"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
-Protected Attributes</h2></td></tr>
-<tr class="memitem:a06ba1b87b3749cc545e573151b7beca0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a06ba1b87b3749cc545e573151b7beca0"></a>
-int </td><td class="memItemRight" valign="bottom"><b>active_size</b></td></tr>
-<tr class="separator:a06ba1b87b3749cc545e573151b7beca0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3acc1043d06dedf87f054ff3eea5c426"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3acc1043d06dedf87f054ff3eea5c426"></a>
-schar * </td><td class="memItemRight" valign="bottom"><b>y</b></td></tr>
-<tr class="separator:a3acc1043d06dedf87f054ff3eea5c426"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad8ab27068f2e045591970aae1201afe9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad8ab27068f2e045591970aae1201afe9"></a>
-double * </td><td class="memItemRight" valign="bottom"><b>G</b></td></tr>
-<tr class="separator:ad8ab27068f2e045591970aae1201afe9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9fe653e04c43956d5fb86635651b0003"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9fe653e04c43956d5fb86635651b0003"></a>
-char * </td><td class="memItemRight" valign="bottom"><b>alpha_status</b></td></tr>
-<tr class="separator:a9fe653e04c43956d5fb86635651b0003"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00d7a7cefa2504d41c7db6cd7cc6b428"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a00d7a7cefa2504d41c7db6cd7cc6b428"></a>
-double * </td><td class="memItemRight" valign="bottom"><b>alpha</b></td></tr>
-<tr class="separator:a00d7a7cefa2504d41c7db6cd7cc6b428"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2d3461718f0570bdc47f5dfb31d61e0a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2d3461718f0570bdc47f5dfb31d61e0a"></a>
-const <a class="el" href="classQMatrix.html">QMatrix</a> * </td><td class="memItemRight" valign="bottom"><b>Q</b></td></tr>
-<tr class="separator:a2d3461718f0570bdc47f5dfb31d61e0a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7c7b7b1207983543855165e8eb249f2a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7c7b7b1207983543855165e8eb249f2a"></a>
-const double * </td><td class="memItemRight" valign="bottom"><b>QD</b></td></tr>
-<tr class="separator:a7c7b7b1207983543855165e8eb249f2a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a718333cc2c1d40abf9c292a788cba1e5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a718333cc2c1d40abf9c292a788cba1e5"></a>
-double </td><td class="memItemRight" valign="bottom"><b>eps</b></td></tr>
-<tr class="separator:a718333cc2c1d40abf9c292a788cba1e5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2e45dbea8be469bf8247e14768549dd5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2e45dbea8be469bf8247e14768549dd5"></a>
-double </td><td class="memItemRight" valign="bottom"><b>Cp</b></td></tr>
-<tr class="separator:a2e45dbea8be469bf8247e14768549dd5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a38d741d194839fb445f982dd78e0b97b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a38d741d194839fb445f982dd78e0b97b"></a>
-double </td><td class="memItemRight" valign="bottom"><b>Cn</b></td></tr>
-<tr class="separator:a38d741d194839fb445f982dd78e0b97b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a882cce072f56679880d409e3e73f7ae8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a882cce072f56679880d409e3e73f7ae8"></a>
-double * </td><td class="memItemRight" valign="bottom"><b>p</b></td></tr>
-<tr class="separator:a882cce072f56679880d409e3e73f7ae8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6382277606a9b3df3d2f0ac947e1cde3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6382277606a9b3df3d2f0ac947e1cde3"></a>
-int * </td><td class="memItemRight" valign="bottom"><b>active_set</b></td></tr>
-<tr class="separator:a6382277606a9b3df3d2f0ac947e1cde3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a89e58cf39a0415c9032b8ec2f4575dcc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a89e58cf39a0415c9032b8ec2f4575dcc"></a>
-double * </td><td class="memItemRight" valign="bottom"><b>G_bar</b></td></tr>
-<tr class="separator:a89e58cf39a0415c9032b8ec2f4575dcc"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a88832d45b6de977b1cbb2afd4c0e494c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a88832d45b6de977b1cbb2afd4c0e494c"></a>
-int </td><td class="memItemRight" valign="bottom"><b>l</b></td></tr>
-<tr class="separator:a88832d45b6de977b1cbb2afd4c0e494c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a62ded1c184aeb28f8dee04eb4a10530a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a62ded1c184aeb28f8dee04eb4a10530a"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>unshrink</b></td></tr>
-<tr class="separator:a62ded1c184aeb28f8dee04eb4a10530a"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="svm_8cpp_source.html#l00395">395</a> of file <a class="el" href="svm_8cpp_source.html">svm.cpp</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/src/algorithms/<a class="el" href="svm_8cpp_source.html">svm.cpp</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classSolver__NU-members.html b/doc/html/classSolver__NU-members.html
deleted file mode 100644
index f4e30e9..0000000
--- a/doc/html/classSolver__NU-members.html
+++ /dev/null
@@ -1,103 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">Solver_NU Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classSolver__NU.html">Solver_NU</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>active_set</b> (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>active_size</b> (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>alpha</b> (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>alpha_status</b> (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Cn</b> (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>Cp</b> (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>eps</b> (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>FREE</b> enum value (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>G</b> (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>G_bar</b> (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_C</b>(int i) (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_free</b>(int i) (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_lower_bound</b>(int i) (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_upper_bound</b>(int i) (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>l</b> (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>LOWER_BOUND</b> enum value (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>p</b> (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>Q</b> (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>QD</b> (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>reconstruct_gradient</b>() (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Solve</b>(int l, const QMatrix &Q, const double *p, const schar *y, double *alpha, double Cp, double Cn, double eps, SolutionInfo *si, int shrinking, bool verbose=false) (defined in <a class="el" href="classSolver__NU.html">Solver_NU</a>)</td><td class="entry"><a class="el" href="classSolver__NU.html">Solver_NU</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>Solver</b>() (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Solver_NU</b>() (defined in <a class="el" href="classSolver__NU.html">Solver_NU</a>)</td><td class="entry"><a class="el" href="classSolver__NU.html">Solver_NU</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>swap_index</b>(int i, int j) (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>unshrink</b> (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>update_alpha_status</b>(int i) (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>UPPER_BOUND</b> enum value (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>y</b> (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~Solver</b>() (defined in <a class="el" href="classSolver.html">Solver</a>)</td><td class="entry"><a class="el" href="classSolver.html">Solver</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classSolver__NU.html b/doc/html/classSolver__NU.html
deleted file mode 100644
index e8def7b..0000000
--- a/doc/html/classSolver__NU.html
+++ /dev/null
@@ -1,182 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Solver_NU Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="classSolver__NU-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">Solver_NU Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for Solver_NU:</div>
-<div class="dyncontent">
-<div class="center"><img src="classSolver__NU__inherit__graph.png" border="0" usemap="#Solver__NU_inherit__map" alt="Inheritance graph"/></div>
-<map name="Solver__NU_inherit__map" id="Solver__NU_inherit__map">
-<area shape="rect" id="node2" href="classSolver.html" title="Solver" alt="" coords="19,5,76,32"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for Solver_NU:</div>
-<div class="dyncontent">
-<div class="center"><img src="classSolver__NU__coll__graph.png" border="0" usemap="#Solver__NU_coll__map" alt="Collaboration graph"/></div>
-<map name="Solver__NU_coll__map" id="Solver__NU_coll__map">
-<area shape="rect" id="node2" href="classSolver.html" title="Solver" alt="" coords="19,96,76,123"/><area shape="rect" id="node3" href="classQMatrix.html" title="QMatrix" alt="" coords="14,5,81,32"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a4cc19c4f8a921ed24db991d300f02e4c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4cc19c4f8a921ed24db991d300f02e4c"></a>
-void </td><td class="memItemRight" valign="bottom"><b>Solve</b> (int l, const <a class="el" href="classQMatrix.html">QMatrix</a> &Q, const double *p, const schar *y, double *alpha, double Cp, double Cn, double eps, <a class="el" href="structSolver_1_1SolutionInfo.html">SolutionInfo</a> *si, int shrinking, bool verbose=false)</td></tr>
-<tr class="separator:a4cc19c4f8a921ed24db991d300f02e4c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_classSolver"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classSolver')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="classSolver.html">Solver</a></td></tr>
-<tr class="memitem:ac3bb5ec5ddc9ad38643b94fcc47a3a23 inherit pub_methods_classSolver"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac3bb5ec5ddc9ad38643b94fcc47a3a23"></a>
-void </td><td class="memItemRight" valign="bottom"><b>Solve</b> (int l, const <a class="el" href="classQMatrix.html">QMatrix</a> &Q, const double *p_, const schar *y_, double *alpha_, double Cp, double Cn, double eps, <a class="el" href="structSolver_1_1SolutionInfo.html">SolutionInfo</a> *si, int shrinking, bool verbose=false)</td></tr>
-<tr class="separator:ac3bb5ec5ddc9ad38643b94fcc47a3a23 inherit pub_methods_classSolver"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
-Additional Inherited Members</h2></td></tr>
-<tr class="inherit_header pro_types_classSolver"><td colspan="2" onclick="javascript:toggleInherit('pro_types_classSolver')"><img src="closed.png" alt="-"/> Protected Types inherited from <a class="el" href="classSolver.html">Solver</a></td></tr>
-<tr class="memitem:ac379e632a6b428a803d621c92b0b3515 inherit pro_types_classSolver"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom">{ <b>LOWER_BOUND</b>, 
-<b>UPPER_BOUND</b>, 
-<b>FREE</b>
- }</td></tr>
-<tr class="separator:ac379e632a6b428a803d621c92b0b3515 inherit pro_types_classSolver"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pro_methods_classSolver"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classSolver')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="classSolver.html">Solver</a></td></tr>
-<tr class="memitem:ae55a8581815436d13e760dadaec34e2a inherit pro_methods_classSolver"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae55a8581815436d13e760dadaec34e2a"></a>
-double </td><td class="memItemRight" valign="bottom"><b>get_C</b> (int i)</td></tr>
-<tr class="separator:ae55a8581815436d13e760dadaec34e2a inherit pro_methods_classSolver"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5a978b4ff9b60b2d75e54970fd6a2c20 inherit pro_methods_classSolver"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5a978b4ff9b60b2d75e54970fd6a2c20"></a>
-void </td><td class="memItemRight" valign="bottom"><b>update_alpha_status</b> (int i)</td></tr>
-<tr class="separator:a5a978b4ff9b60b2d75e54970fd6a2c20 inherit pro_methods_classSolver"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a98d878b13d6f710fcaa0b16e657a37b6 inherit pro_methods_classSolver"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a98d878b13d6f710fcaa0b16e657a37b6"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>is_upper_bound</b> (int i)</td></tr>
-<tr class="separator:a98d878b13d6f710fcaa0b16e657a37b6 inherit pro_methods_classSolver"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5876eedb0a6de6954f6037af0992cbed inherit pro_methods_classSolver"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5876eedb0a6de6954f6037af0992cbed"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>is_lower_bound</b> (int i)</td></tr>
-<tr class="separator:a5876eedb0a6de6954f6037af0992cbed inherit pro_methods_classSolver"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7b5e230875b8b5f06150ff0690e36b47 inherit pro_methods_classSolver"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7b5e230875b8b5f06150ff0690e36b47"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>is_free</b> (int i)</td></tr>
-<tr class="separator:a7b5e230875b8b5f06150ff0690e36b47 inherit pro_methods_classSolver"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a043f498c1dda0122859d03f9cd07dc08 inherit pro_methods_classSolver"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a043f498c1dda0122859d03f9cd07dc08"></a>
-void </td><td class="memItemRight" valign="bottom"><b>swap_index</b> (int i, int j)</td></tr>
-<tr class="separator:a043f498c1dda0122859d03f9cd07dc08 inherit pro_methods_classSolver"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7e34992ede606a336606ae54f6e963e6 inherit pro_methods_classSolver"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7e34992ede606a336606ae54f6e963e6"></a>
-void </td><td class="memItemRight" valign="bottom"><b>reconstruct_gradient</b> ()</td></tr>
-<tr class="separator:a7e34992ede606a336606ae54f6e963e6 inherit pro_methods_classSolver"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pro_attribs_classSolver"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classSolver')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="classSolver.html">Solver</a></td></tr>
-<tr class="memitem:a06ba1b87b3749cc545e573151b7beca0 inherit pro_attribs_classSolver"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a06ba1b87b3749cc545e573151b7beca0"></a>
-int </td><td class="memItemRight" valign="bottom"><b>active_size</b></td></tr>
-<tr class="separator:a06ba1b87b3749cc545e573151b7beca0 inherit pro_attribs_classSolver"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3acc1043d06dedf87f054ff3eea5c426 inherit pro_attribs_classSolver"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3acc1043d06dedf87f054ff3eea5c426"></a>
-schar * </td><td class="memItemRight" valign="bottom"><b>y</b></td></tr>
-<tr class="separator:a3acc1043d06dedf87f054ff3eea5c426 inherit pro_attribs_classSolver"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad8ab27068f2e045591970aae1201afe9 inherit pro_attribs_classSolver"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad8ab27068f2e045591970aae1201afe9"></a>
-double * </td><td class="memItemRight" valign="bottom"><b>G</b></td></tr>
-<tr class="separator:ad8ab27068f2e045591970aae1201afe9 inherit pro_attribs_classSolver"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9fe653e04c43956d5fb86635651b0003 inherit pro_attribs_classSolver"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9fe653e04c43956d5fb86635651b0003"></a>
-char * </td><td class="memItemRight" valign="bottom"><b>alpha_status</b></td></tr>
-<tr class="separator:a9fe653e04c43956d5fb86635651b0003 inherit pro_attribs_classSolver"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00d7a7cefa2504d41c7db6cd7cc6b428 inherit pro_attribs_classSolver"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a00d7a7cefa2504d41c7db6cd7cc6b428"></a>
-double * </td><td class="memItemRight" valign="bottom"><b>alpha</b></td></tr>
-<tr class="separator:a00d7a7cefa2504d41c7db6cd7cc6b428 inherit pro_attribs_classSolver"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2d3461718f0570bdc47f5dfb31d61e0a inherit pro_attribs_classSolver"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2d3461718f0570bdc47f5dfb31d61e0a"></a>
-const <a class="el" href="classQMatrix.html">QMatrix</a> * </td><td class="memItemRight" valign="bottom"><b>Q</b></td></tr>
-<tr class="separator:a2d3461718f0570bdc47f5dfb31d61e0a inherit pro_attribs_classSolver"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7c7b7b1207983543855165e8eb249f2a inherit pro_attribs_classSolver"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7c7b7b1207983543855165e8eb249f2a"></a>
-const double * </td><td class="memItemRight" valign="bottom"><b>QD</b></td></tr>
-<tr class="separator:a7c7b7b1207983543855165e8eb249f2a inherit pro_attribs_classSolver"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a718333cc2c1d40abf9c292a788cba1e5 inherit pro_attribs_classSolver"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a718333cc2c1d40abf9c292a788cba1e5"></a>
-double </td><td class="memItemRight" valign="bottom"><b>eps</b></td></tr>
-<tr class="separator:a718333cc2c1d40abf9c292a788cba1e5 inherit pro_attribs_classSolver"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2e45dbea8be469bf8247e14768549dd5 inherit pro_attribs_classSolver"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2e45dbea8be469bf8247e14768549dd5"></a>
-double </td><td class="memItemRight" valign="bottom"><b>Cp</b></td></tr>
-<tr class="separator:a2e45dbea8be469bf8247e14768549dd5 inherit pro_attribs_classSolver"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a38d741d194839fb445f982dd78e0b97b inherit pro_attribs_classSolver"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a38d741d194839fb445f982dd78e0b97b"></a>
-double </td><td class="memItemRight" valign="bottom"><b>Cn</b></td></tr>
-<tr class="separator:a38d741d194839fb445f982dd78e0b97b inherit pro_attribs_classSolver"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a882cce072f56679880d409e3e73f7ae8 inherit pro_attribs_classSolver"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a882cce072f56679880d409e3e73f7ae8"></a>
-double * </td><td class="memItemRight" valign="bottom"><b>p</b></td></tr>
-<tr class="separator:a882cce072f56679880d409e3e73f7ae8 inherit pro_attribs_classSolver"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6382277606a9b3df3d2f0ac947e1cde3 inherit pro_attribs_classSolver"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6382277606a9b3df3d2f0ac947e1cde3"></a>
-int * </td><td class="memItemRight" valign="bottom"><b>active_set</b></td></tr>
-<tr class="separator:a6382277606a9b3df3d2f0ac947e1cde3 inherit pro_attribs_classSolver"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a89e58cf39a0415c9032b8ec2f4575dcc inherit pro_attribs_classSolver"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a89e58cf39a0415c9032b8ec2f4575dcc"></a>
-double * </td><td class="memItemRight" valign="bottom"><b>G_bar</b></td></tr>
-<tr class="separator:a89e58cf39a0415c9032b8ec2f4575dcc inherit pro_attribs_classSolver"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a88832d45b6de977b1cbb2afd4c0e494c inherit pro_attribs_classSolver"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a88832d45b6de977b1cbb2afd4c0e494c"></a>
-int </td><td class="memItemRight" valign="bottom"><b>l</b></td></tr>
-<tr class="separator:a88832d45b6de977b1cbb2afd4c0e494c inherit pro_attribs_classSolver"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a62ded1c184aeb28f8dee04eb4a10530a inherit pro_attribs_classSolver"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a62ded1c184aeb28f8dee04eb4a10530a"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>unshrink</b></td></tr>
-<tr class="separator:a62ded1c184aeb28f8dee04eb4a10530a inherit pro_attribs_classSolver"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="svm_8cpp_source.html#l01016">1016</a> of file <a class="el" href="svm_8cpp_source.html">svm.cpp</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/src/algorithms/<a class="el" href="svm_8cpp_source.html">svm.cpp</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classSolver__NU__coll__graph.map b/doc/html/classSolver__NU__coll__graph.map
deleted file mode 100644
index 925cfc3..0000000
--- a/doc/html/classSolver__NU__coll__graph.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="Solver_NU" name="Solver_NU">
-<area shape="rect" id="node2" href="$classSolver.html" title="Solver" alt="" coords="19,96,76,123"/>
-<area shape="rect" id="node3" href="$classQMatrix.html" title="QMatrix" alt="" coords="14,5,81,32"/>
-</map>
diff --git a/doc/html/classSolver__NU__coll__graph.md5 b/doc/html/classSolver__NU__coll__graph.md5
deleted file mode 100644
index 7177380..0000000
--- a/doc/html/classSolver__NU__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-6543c36bd4df2184596e187d1c765cdf
\ No newline at end of file
diff --git a/doc/html/classSolver__NU__coll__graph.png b/doc/html/classSolver__NU__coll__graph.png
deleted file mode 100644
index 96348c1..0000000
Binary files a/doc/html/classSolver__NU__coll__graph.png and /dev/null differ
diff --git a/doc/html/classSolver__NU__inherit__graph.map b/doc/html/classSolver__NU__inherit__graph.map
deleted file mode 100644
index 257fd8f..0000000
--- a/doc/html/classSolver__NU__inherit__graph.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Solver_NU" name="Solver_NU">
-<area shape="rect" id="node2" href="$classSolver.html" title="Solver" alt="" coords="19,5,76,32"/>
-</map>
diff --git a/doc/html/classSolver__NU__inherit__graph.md5 b/doc/html/classSolver__NU__inherit__graph.md5
deleted file mode 100644
index d852505..0000000
--- a/doc/html/classSolver__NU__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-701fd7ff490aa194f36920de56b96d23
\ No newline at end of file
diff --git a/doc/html/classSolver__NU__inherit__graph.png b/doc/html/classSolver__NU__inherit__graph.png
deleted file mode 100644
index 7ea4c0a..0000000
Binary files a/doc/html/classSolver__NU__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classSolver__coll__graph.map b/doc/html/classSolver__coll__graph.map
deleted file mode 100644
index 11fab22..0000000
--- a/doc/html/classSolver__coll__graph.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Solver" name="Solver">
-<area shape="rect" id="node2" href="$classQMatrix.html" title="QMatrix" alt="" coords="5,5,72,32"/>
-</map>
diff --git a/doc/html/classSolver__coll__graph.md5 b/doc/html/classSolver__coll__graph.md5
deleted file mode 100644
index 0d3924b..0000000
--- a/doc/html/classSolver__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-262789c6a3eb0d883423648adb1331a6
\ No newline at end of file
diff --git a/doc/html/classSolver__coll__graph.png b/doc/html/classSolver__coll__graph.png
deleted file mode 100644
index 060089d..0000000
Binary files a/doc/html/classSolver__coll__graph.png and /dev/null differ
diff --git a/doc/html/classSolver__inherit__graph.map b/doc/html/classSolver__inherit__graph.map
deleted file mode 100644
index d4b3170..0000000
--- a/doc/html/classSolver__inherit__graph.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Solver" name="Solver">
-<area shape="rect" id="node2" href="$classSolver__NU.html" title="Solver_NU" alt="" coords="5,80,91,107"/>
-</map>
diff --git a/doc/html/classSolver__inherit__graph.md5 b/doc/html/classSolver__inherit__graph.md5
deleted file mode 100644
index b849b97..0000000
--- a/doc/html/classSolver__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-6cc560af3cdb31cb392a6c822559375e
\ No newline at end of file
diff --git a/doc/html/classSolver__inherit__graph.png b/doc/html/classSolver__inherit__graph.png
deleted file mode 100644
index afad4b2..0000000
Binary files a/doc/html/classSolver__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classUi_1_1MainWindow-members.html b/doc/html/classUi_1_1MainWindow-members.html
deleted file mode 100644
index 21ceeea..0000000
--- a/doc/html/classUi_1_1MainWindow-members.html
+++ /dev/null
@@ -1,262 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>Ui</b></li><li class="navelem"><a class="el" href="classUi_1_1MainWindow.html">MainWindow</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">Ui::MainWindow Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classUi_1_1MainWindow.html">Ui::MainWindow</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>a_srs</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>actionColor_table</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>actionExtent</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>actionInput</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>actionInput_image</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>actionMask</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>actionOutput</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>actionOutput_image</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>actionQuit</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>actionReference</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>actionSample</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>actionSelection_Info_file</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>actionTraining</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>as_from</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>as_to</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>autoscale</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>bname</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>bndnodata</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>buttonGroup</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>cband</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ccost</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>centralWidget</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cname</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>coef0</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>commandLineEdit</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>commandLinkButtonPrepareTable</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>commandLinkButtonPrepareTable</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>compressed</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>confusion</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>consoleEdit</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>crule</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>ct</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cv</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>dstnodata</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>dx</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>dy</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>extent</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>f</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>file</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>gamma</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>gridLayout</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>gridLayout_2</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>gridLayout_3</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>gridLayout_4</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>gridLayout_5</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>groupBox</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>horizontalLayout</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>horizontalLayout_2</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>horizontalLayout_3</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>horizontalLayout_4</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>horizontalLayout_5</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>horizontalLayout_6</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>horizontalSpacer</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>horizontalSpacer_10</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>horizontalSpacer_11</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>horizontalSpacer_15</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>horizontalSpacer_2</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>horizontalSpacer_3</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>horizontalSpacer_4</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>horizontalSpacer_5</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>horizontalSpacer_6</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>horizontalSpacer_7</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>horizontalSpacer_8</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>horizontalSpacer_9</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>input</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>interleaved</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>kd</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>kerneltype</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>label</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>label</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>label_10</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>label_11</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>label_12</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>label_13</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>label_14</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>label_15</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>label_16</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>label_17</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>label_18</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>label_19</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>label_2</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>label_20</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>label_21</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>label_22</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>label_23</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>label_24</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>label_25</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>label_3</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>label_4</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>label_5</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>label_6</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>label_7</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>label_8</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>label_9</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>label_reference</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>layoutWidget</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>lclass</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>listWidget_band</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>listWidget_input</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>lref</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>lrx</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>lry</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mainToolBar</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>manual</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mask</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>max</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>menuBar</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>menuFile</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>min</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>msknodata</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>nclass</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>nodata</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>noscale</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>nu</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>offset</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>oformat</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>otype</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>output</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>polygon</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>pushButton_restore</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pushButton_run</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>reference</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>resample</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>retranslateUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>retranslateUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>retranslateUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>retranslateUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>retranslateUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>retranslateUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>retranslateUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>retranslateUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>retranslateUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>retranslateUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>rule</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>sample</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>scale</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setupUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setupUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setupUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setupUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setupUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setupUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setupUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setupUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setupUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setupUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>srcnodata</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>statusBar</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>svmtype</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>tab</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>tab_2</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>tab_3</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>tab_4</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>tableView_labels</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>tabWidget</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>threshold</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>tiled</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>tln</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>toolButton</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>toolButton_createTable</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>toolButton_ct</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>toolButton_defaults</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>toolButton_extent</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>toolButton_file</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>toolButton_input</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>toolButton_mask</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>toolButton_output</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>toolButton_reference</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>toolButton_Run</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>toolButton_sample</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>toolButton_training</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>training</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ulx</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>uly</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>verticalLayout</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>verticalLayout_2</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>verticalLayout_3</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>verticalLayout_4</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>verticalLayout_5</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>verticalLayout_6</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>verticalSpacer</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>verticalSpacer_2</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>verticalSpacer_3</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>widget</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classUi_1_1MainWindow.html b/doc/html/classUi_1_1MainWindow.html
deleted file mode 100644
index 6ab40c6..0000000
--- a/doc/html/classUi_1_1MainWindow.html
+++ /dev/null
@@ -1,655 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Ui::MainWindow Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>Ui</b></li><li class="navelem"><a class="el" href="classUi_1_1MainWindow.html">MainWindow</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="classUi_1_1MainWindow-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">Ui::MainWindow Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for Ui::MainWindow:</div>
-<div class="dyncontent">
-<div class="center"><img src="classUi_1_1MainWindow__inherit__graph.png" border="0" usemap="#Ui_1_1MainWindow_inherit__map" alt="Inheritance graph"/></div>
-<map name="Ui_1_1MainWindow_inherit__map" id="Ui_1_1MainWindow_inherit__map">
-<area shape="rect" id="node2" href="classUi__MainWindow.html" title="Ui_MainWindow" alt="" coords="28,5,144,32"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for Ui::MainWindow:</div>
-<div class="dyncontent">
-<div class="center"><img src="classUi_1_1MainWindow__coll__graph.png" border="0" usemap="#Ui_1_1MainWindow_coll__map" alt="Collaboration graph"/></div>
-<map name="Ui_1_1MainWindow_coll__map" id="Ui_1_1MainWindow_coll__map">
-<area shape="rect" id="node2" href="classUi__MainWindow.html" title="Ui_MainWindow" alt="" coords="28,5,144,32"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
-Additional Inherited Members</h2></td></tr>
-<tr class="inherit_header pub_methods_classUi__MainWindow"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classUi__MainWindow')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td></tr>
-<tr class="memitem:acf4a0872c4c77d8f43a2ec66ed849b58 inherit pub_methods_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf4a0872c4c77d8f43a2ec66ed849b58"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setupUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:acf4a0872c4c77d8f43a2ec66ed849b58 inherit pub_methods_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a097dd160c3534a204904cb374412c618 inherit pub_methods_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a097dd160c3534a204904cb374412c618"></a>
-void </td><td class="memItemRight" valign="bottom"><b>retranslateUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:a097dd160c3534a204904cb374412c618 inherit pub_methods_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acf4a0872c4c77d8f43a2ec66ed849b58 inherit pub_methods_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf4a0872c4c77d8f43a2ec66ed849b58"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setupUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:acf4a0872c4c77d8f43a2ec66ed849b58 inherit pub_methods_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a097dd160c3534a204904cb374412c618 inherit pub_methods_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a097dd160c3534a204904cb374412c618"></a>
-void </td><td class="memItemRight" valign="bottom"><b>retranslateUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:a097dd160c3534a204904cb374412c618 inherit pub_methods_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acf4a0872c4c77d8f43a2ec66ed849b58 inherit pub_methods_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf4a0872c4c77d8f43a2ec66ed849b58"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setupUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:acf4a0872c4c77d8f43a2ec66ed849b58 inherit pub_methods_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a097dd160c3534a204904cb374412c618 inherit pub_methods_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a097dd160c3534a204904cb374412c618"></a>
-void </td><td class="memItemRight" valign="bottom"><b>retranslateUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:a097dd160c3534a204904cb374412c618 inherit pub_methods_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acf4a0872c4c77d8f43a2ec66ed849b58 inherit pub_methods_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf4a0872c4c77d8f43a2ec66ed849b58"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setupUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:acf4a0872c4c77d8f43a2ec66ed849b58 inherit pub_methods_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a097dd160c3534a204904cb374412c618 inherit pub_methods_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a097dd160c3534a204904cb374412c618"></a>
-void </td><td class="memItemRight" valign="bottom"><b>retranslateUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:a097dd160c3534a204904cb374412c618 inherit pub_methods_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acf4a0872c4c77d8f43a2ec66ed849b58 inherit pub_methods_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf4a0872c4c77d8f43a2ec66ed849b58"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setupUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:acf4a0872c4c77d8f43a2ec66ed849b58 inherit pub_methods_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a097dd160c3534a204904cb374412c618 inherit pub_methods_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a097dd160c3534a204904cb374412c618"></a>
-void </td><td class="memItemRight" valign="bottom"><b>retranslateUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:a097dd160c3534a204904cb374412c618 inherit pub_methods_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acf4a0872c4c77d8f43a2ec66ed849b58 inherit pub_methods_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf4a0872c4c77d8f43a2ec66ed849b58"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setupUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:acf4a0872c4c77d8f43a2ec66ed849b58 inherit pub_methods_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a097dd160c3534a204904cb374412c618 inherit pub_methods_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a097dd160c3534a204904cb374412c618"></a>
-void </td><td class="memItemRight" valign="bottom"><b>retranslateUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:a097dd160c3534a204904cb374412c618 inherit pub_methods_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acf4a0872c4c77d8f43a2ec66ed849b58 inherit pub_methods_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf4a0872c4c77d8f43a2ec66ed849b58"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setupUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:acf4a0872c4c77d8f43a2ec66ed849b58 inherit pub_methods_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a097dd160c3534a204904cb374412c618 inherit pub_methods_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a097dd160c3534a204904cb374412c618"></a>
-void </td><td class="memItemRight" valign="bottom"><b>retranslateUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:a097dd160c3534a204904cb374412c618 inherit pub_methods_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acf4a0872c4c77d8f43a2ec66ed849b58 inherit pub_methods_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf4a0872c4c77d8f43a2ec66ed849b58"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setupUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:acf4a0872c4c77d8f43a2ec66ed849b58 inherit pub_methods_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a097dd160c3534a204904cb374412c618 inherit pub_methods_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a097dd160c3534a204904cb374412c618"></a>
-void </td><td class="memItemRight" valign="bottom"><b>retranslateUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:a097dd160c3534a204904cb374412c618 inherit pub_methods_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acf4a0872c4c77d8f43a2ec66ed849b58 inherit pub_methods_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf4a0872c4c77d8f43a2ec66ed849b58"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setupUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:acf4a0872c4c77d8f43a2ec66ed849b58 inherit pub_methods_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a097dd160c3534a204904cb374412c618 inherit pub_methods_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a097dd160c3534a204904cb374412c618"></a>
-void </td><td class="memItemRight" valign="bottom"><b>retranslateUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:a097dd160c3534a204904cb374412c618 inherit pub_methods_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acf4a0872c4c77d8f43a2ec66ed849b58 inherit pub_methods_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf4a0872c4c77d8f43a2ec66ed849b58"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setupUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:acf4a0872c4c77d8f43a2ec66ed849b58 inherit pub_methods_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a097dd160c3534a204904cb374412c618 inherit pub_methods_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a097dd160c3534a204904cb374412c618"></a>
-void </td><td class="memItemRight" valign="bottom"><b>retranslateUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:a097dd160c3534a204904cb374412c618 inherit pub_methods_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_attribs_classUi__MainWindow"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classUi__MainWindow')"><img src="closed.png" alt="-"/> Public Attributes inherited from <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td></tr>
-<tr class="memitem:af2483b34f1656f3e57729ad834ddf677 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af2483b34f1656f3e57729ad834ddf677"></a>
-QAction * </td><td class="memItemRight" valign="bottom"><b>actionInput_image</b></td></tr>
-<tr class="separator:af2483b34f1656f3e57729ad834ddf677 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a29b62934c81c009fdf0d03a9ee63ce0b inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a29b62934c81c009fdf0d03a9ee63ce0b"></a>
-QAction * </td><td class="memItemRight" valign="bottom"><b>actionOutput_image</b></td></tr>
-<tr class="separator:a29b62934c81c009fdf0d03a9ee63ce0b inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af229024ef8f86d81e376205c1a5a9ee5 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af229024ef8f86d81e376205c1a5a9ee5"></a>
-QAction * </td><td class="memItemRight" valign="bottom"><b>actionQuit</b></td></tr>
-<tr class="separator:af229024ef8f86d81e376205c1a5a9ee5 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a77d713a73993a0942c43c083168f17e9 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a77d713a73993a0942c43c083168f17e9"></a>
-QAction * </td><td class="memItemRight" valign="bottom"><b>actionSelection_Info_file</b></td></tr>
-<tr class="separator:a77d713a73993a0942c43c083168f17e9 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa71af6efef796a61c728993c3a675636 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa71af6efef796a61c728993c3a675636"></a>
-QAction * </td><td class="memItemRight" valign="bottom"><b>actionExtent</b></td></tr>
-<tr class="separator:aa71af6efef796a61c728993c3a675636 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6600dd3bdd3d55e535659e4a4096ea48 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6600dd3bdd3d55e535659e4a4096ea48"></a>
-QWidget * </td><td class="memItemRight" valign="bottom"><b>centralWidget</b></td></tr>
-<tr class="separator:a6600dd3bdd3d55e535659e4a4096ea48 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a649287f742c9a33b8444116dccb1b72b inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a649287f742c9a33b8444116dccb1b72b"></a>
-QVBoxLayout * </td><td class="memItemRight" valign="bottom"><b>verticalLayout</b></td></tr>
-<tr class="separator:a649287f742c9a33b8444116dccb1b72b inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a13404ee3b30e38230383dd765a5eec4a inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a13404ee3b30e38230383dd765a5eec4a"></a>
-QTabWidget * </td><td class="memItemRight" valign="bottom"><b>tabWidget</b></td></tr>
-<tr class="separator:a13404ee3b30e38230383dd765a5eec4a inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a97e497a37904b5538bba9c218f40cb58 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a97e497a37904b5538bba9c218f40cb58"></a>
-QWidget * </td><td class="memItemRight" valign="bottom"><b>tab</b></td></tr>
-<tr class="separator:a97e497a37904b5538bba9c218f40cb58 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afbe60c634b3214ee76ff9e1fa70c7801 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afbe60c634b3214ee76ff9e1fa70c7801"></a>
-QVBoxLayout * </td><td class="memItemRight" valign="bottom"><b>verticalLayout_2</b></td></tr>
-<tr class="separator:afbe60c634b3214ee76ff9e1fa70c7801 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acbbc615e662a726cd71cabd62c7d2a70 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acbbc615e662a726cd71cabd62c7d2a70"></a>
-QGridLayout * </td><td class="memItemRight" valign="bottom"><b>gridLayout_2</b></td></tr>
-<tr class="separator:acbbc615e662a726cd71cabd62c7d2a70 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab8441da46ea0343bc6ad8f05e2e1c270 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab8441da46ea0343bc6ad8f05e2e1c270"></a>
-QSpacerItem * </td><td class="memItemRight" valign="bottom"><b>horizontalSpacer_3</b></td></tr>
-<tr class="separator:ab8441da46ea0343bc6ad8f05e2e1c270 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aca97445f66e25e0819038ec3c7b7c129 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aca97445f66e25e0819038ec3c7b7c129"></a>
-QListWidget * </td><td class="memItemRight" valign="bottom"><b>listWidget_input</b></td></tr>
-<tr class="separator:aca97445f66e25e0819038ec3c7b7c129 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af0ed1aaea955dfef1d84b92e2723769d inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af0ed1aaea955dfef1d84b92e2723769d"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label</b></td></tr>
-<tr class="separator:af0ed1aaea955dfef1d84b92e2723769d inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ade2b29a951ec97479a76b77481982472 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ade2b29a951ec97479a76b77481982472"></a>
-QToolButton * </td><td class="memItemRight" valign="bottom"><b>toolButton_input</b></td></tr>
-<tr class="separator:ade2b29a951ec97479a76b77481982472 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0244a06f306ce55b10f9d3cc97be18e8 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0244a06f306ce55b10f9d3cc97be18e8"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>lry</b></td></tr>
-<tr class="separator:a0244a06f306ce55b10f9d3cc97be18e8 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7b4ef3f31d735e9d9e3a78b152c7a43b inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7b4ef3f31d735e9d9e3a78b152c7a43b"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>uly</b></td></tr>
-<tr class="separator:a7b4ef3f31d735e9d9e3a78b152c7a43b inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2f5576686ce98bcc41bd1b1eca07e56a inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2f5576686ce98bcc41bd1b1eca07e56a"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_2</b></td></tr>
-<tr class="separator:a2f5576686ce98bcc41bd1b1eca07e56a inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1662d5e0a54ac7f38c5ab5d991f4ce14 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1662d5e0a54ac7f38c5ab5d991f4ce14"></a>
-QSpacerItem * </td><td class="memItemRight" valign="bottom"><b>horizontalSpacer_2</b></td></tr>
-<tr class="separator:a1662d5e0a54ac7f38c5ab5d991f4ce14 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a72b0851f6a34cfe6b9875edeac284d1f inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a72b0851f6a34cfe6b9875edeac284d1f"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>lrx</b></td></tr>
-<tr class="separator:a72b0851f6a34cfe6b9875edeac284d1f inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a05c1a490d770856a4a3af1563e2c660a inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a05c1a490d770856a4a3af1563e2c660a"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>ulx</b></td></tr>
-<tr class="separator:a05c1a490d770856a4a3af1563e2c660a inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a953dcd0e658a0903339e2ef3c94d4e7e inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a953dcd0e658a0903339e2ef3c94d4e7e"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_4</b></td></tr>
-<tr class="separator:a953dcd0e658a0903339e2ef3c94d4e7e inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a03b8709208e6996236604b2cde800390 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a03b8709208e6996236604b2cde800390"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>extent</b></td></tr>
-<tr class="separator:a03b8709208e6996236604b2cde800390 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a53306da61a2245541d184a47245944cd inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a53306da61a2245541d184a47245944cd"></a>
-QToolButton * </td><td class="memItemRight" valign="bottom"><b>toolButton_extent</b></td></tr>
-<tr class="separator:a53306da61a2245541d184a47245944cd inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1e6564e567db2242a5ff37cff57bc1d4 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1e6564e567db2242a5ff37cff57bc1d4"></a>
-QWidget * </td><td class="memItemRight" valign="bottom"><b>tab_2</b></td></tr>
-<tr class="separator:a1e6564e567db2242a5ff37cff57bc1d4 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a87e310470e3a3ad29981f1166af9be7f inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a87e310470e3a3ad29981f1166af9be7f"></a>
-QGridLayout * </td><td class="memItemRight" valign="bottom"><b>gridLayout_4</b></td></tr>
-<tr class="separator:a87e310470e3a3ad29981f1166af9be7f inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a986c0329937b0114c287180b96a6ff6b inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a986c0329937b0114c287180b96a6ff6b"></a>
-QSpacerItem * </td><td class="memItemRight" valign="bottom"><b>verticalSpacer_3</b></td></tr>
-<tr class="separator:a986c0329937b0114c287180b96a6ff6b inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae3da2273c5f6f94c4d49561cc860f97b inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae3da2273c5f6f94c4d49561cc860f97b"></a>
-QComboBox * </td><td class="memItemRight" valign="bottom"><b>resample</b></td></tr>
-<tr class="separator:ae3da2273c5f6f94c4d49561cc860f97b inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a318a53712b4ddbe8e627a9744d3a0a00 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a318a53712b4ddbe8e627a9744d3a0a00"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_18</b></td></tr>
-<tr class="separator:a318a53712b4ddbe8e627a9744d3a0a00 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aad058591c79a610b3cee046f63d1778e inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aad058591c79a610b3cee046f63d1778e"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_17</b></td></tr>
-<tr class="separator:aad058591c79a610b3cee046f63d1778e inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6b80df24ad136b865c5d89a20d5bb2ec inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6b80df24ad136b865c5d89a20d5bb2ec"></a>
-QComboBox * </td><td class="memItemRight" valign="bottom"><b>crule</b></td></tr>
-<tr class="separator:a6b80df24ad136b865c5d89a20d5bb2ec inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8ca10771e840725caeb3f43ee7d7858b inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8ca10771e840725caeb3f43ee7d7858b"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_19</b></td></tr>
-<tr class="separator:a8ca10771e840725caeb3f43ee7d7858b inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab1c6584a6a7b602d2b1b5a32db95eaa7 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab1c6584a6a7b602d2b1b5a32db95eaa7"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>cband</b></td></tr>
-<tr class="separator:ab1c6584a6a7b602d2b1b5a32db95eaa7 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad396eaa8d855b13559c50e02164b8325 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad396eaa8d855b13559c50e02164b8325"></a>
-QGroupBox * </td><td class="memItemRight" valign="bottom"><b>groupBox</b></td></tr>
-<tr class="separator:ad396eaa8d855b13559c50e02164b8325 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a183b845e444a43e0be1cd9f5be22c359 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a183b845e444a43e0be1cd9f5be22c359"></a>
-QGridLayout * </td><td class="memItemRight" valign="bottom"><b>gridLayout_3</b></td></tr>
-<tr class="separator:a183b845e444a43e0be1cd9f5be22c359 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5512eae4640544a462d1973743e6532b inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5512eae4640544a462d1973743e6532b"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_21</b></td></tr>
-<tr class="separator:a5512eae4640544a462d1973743e6532b inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abf0cc3cdcf78e05d41d5d80916bbf7ce inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abf0cc3cdcf78e05d41d5d80916bbf7ce"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>srcnodata</b></td></tr>
-<tr class="separator:abf0cc3cdcf78e05d41d5d80916bbf7ce inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a59690f12b04136e7cb2278d9de865e73 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a59690f12b04136e7cb2278d9de865e73"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_23</b></td></tr>
-<tr class="separator:a59690f12b04136e7cb2278d9de865e73 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac5535fb6244ecc9af33991a3309a93a0 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac5535fb6244ecc9af33991a3309a93a0"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_22</b></td></tr>
-<tr class="separator:ac5535fb6244ecc9af33991a3309a93a0 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7cb993e55f48a7ea284055d7d26d2ca8 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7cb993e55f48a7ea284055d7d26d2ca8"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>min</b></td></tr>
-<tr class="separator:a7cb993e55f48a7ea284055d7d26d2ca8 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aff20afaa8f9943bea0f26a1e5b80a065 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aff20afaa8f9943bea0f26a1e5b80a065"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>max</b></td></tr>
-<tr class="separator:aff20afaa8f9943bea0f26a1e5b80a065 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2812ef8517ae9d0f250a2d39569b08a7 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2812ef8517ae9d0f250a2d39569b08a7"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_20</b></td></tr>
-<tr class="separator:a2812ef8517ae9d0f250a2d39569b08a7 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abcb71699e34ea39e15ab52a210d82f43 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abcb71699e34ea39e15ab52a210d82f43"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>bndnodata</b></td></tr>
-<tr class="separator:abcb71699e34ea39e15ab52a210d82f43 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac4a217e81b9707b402a58b7e55ed81e2 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac4a217e81b9707b402a58b7e55ed81e2"></a>
-QSpacerItem * </td><td class="memItemRight" valign="bottom"><b>horizontalSpacer_4</b></td></tr>
-<tr class="separator:ac4a217e81b9707b402a58b7e55ed81e2 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab70233e701808fd06001b2c59717d63b inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab70233e701808fd06001b2c59717d63b"></a>
-QSpacerItem * </td><td class="memItemRight" valign="bottom"><b>horizontalSpacer_5</b></td></tr>
-<tr class="separator:ab70233e701808fd06001b2c59717d63b inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a449fab77f12d72a810b50ec1768adcaa inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a449fab77f12d72a810b50ec1768adcaa"></a>
-QWidget * </td><td class="memItemRight" valign="bottom"><b>tab_3</b></td></tr>
-<tr class="separator:a449fab77f12d72a810b50ec1768adcaa inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0802f681bf63ded0edff4bc7c1a6e9d4 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0802f681bf63ded0edff4bc7c1a6e9d4"></a>
-QVBoxLayout * </td><td class="memItemRight" valign="bottom"><b>verticalLayout_3</b></td></tr>
-<tr class="separator:a0802f681bf63ded0edff4bc7c1a6e9d4 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac4586abe48f0aabf940b0dc2df3772ed inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac4586abe48f0aabf940b0dc2df3772ed"></a>
-QGridLayout * </td><td class="memItemRight" valign="bottom"><b>gridLayout</b></td></tr>
-<tr class="separator:ac4586abe48f0aabf940b0dc2df3772ed inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab2f233a14d9b1c41ec685a9fe1c606b7 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab2f233a14d9b1c41ec685a9fe1c606b7"></a>
-QSpacerItem * </td><td class="memItemRight" valign="bottom"><b>horizontalSpacer_6</b></td></tr>
-<tr class="separator:ab2f233a14d9b1c41ec685a9fe1c606b7 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9687c8357009cfcf28517fa276ea1918 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9687c8357009cfcf28517fa276ea1918"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_7</b></td></tr>
-<tr class="separator:a9687c8357009cfcf28517fa276ea1918 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a85082b01c10e391194bc6e48c0d8cb28 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a85082b01c10e391194bc6e48c0d8cb28"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_14</b></td></tr>
-<tr class="separator:a85082b01c10e391194bc6e48c0d8cb28 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a24601dbd2cc80ac985454289af5ba4f7 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a24601dbd2cc80ac985454289af5ba4f7"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>file</b></td></tr>
-<tr class="separator:a24601dbd2cc80ac985454289af5ba4f7 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0130582ecf8dfbf621aa87f6d0d702f7 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0130582ecf8dfbf621aa87f6d0d702f7"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_10</b></td></tr>
-<tr class="separator:a0130582ecf8dfbf621aa87f6d0d702f7 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a29d5ce90df70e771627c460f7618444c inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a29d5ce90df70e771627c460f7618444c"></a>
-QComboBox * </td><td class="memItemRight" valign="bottom"><b>oformat</b></td></tr>
-<tr class="separator:a29d5ce90df70e771627c460f7618444c inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aacb80f899e57d6b0ead98c016786181f inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aacb80f899e57d6b0ead98c016786181f"></a>
-QComboBox * </td><td class="memItemRight" valign="bottom"><b>interleaved</b></td></tr>
-<tr class="separator:aacb80f899e57d6b0ead98c016786181f inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abbe5a2168615ca342d06286db75927bc inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abbe5a2168615ca342d06286db75927bc"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_9</b></td></tr>
-<tr class="separator:abbe5a2168615ca342d06286db75927bc inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a783887ea0ca8c4763cebe24749b26909 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a783887ea0ca8c4763cebe24749b26909"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>dx</b></td></tr>
-<tr class="separator:a783887ea0ca8c4763cebe24749b26909 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aae1122bf5c5f6daf310a93072a5eb72a inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aae1122bf5c5f6daf310a93072a5eb72a"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_8</b></td></tr>
-<tr class="separator:aae1122bf5c5f6daf310a93072a5eb72a inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3c75bb276de75b3e98e7db39e4a9e190 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3c75bb276de75b3e98e7db39e4a9e190"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_13</b></td></tr>
-<tr class="separator:a3c75bb276de75b3e98e7db39e4a9e190 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af8e8e32f6a5a0ce9327728cb0e29d8c4 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af8e8e32f6a5a0ce9327728cb0e29d8c4"></a>
-QToolButton * </td><td class="memItemRight" valign="bottom"><b>toolButton_ct</b></td></tr>
-<tr class="separator:af8e8e32f6a5a0ce9327728cb0e29d8c4 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a98ba6b67118efbc43442a8486bc0401f inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a98ba6b67118efbc43442a8486bc0401f"></a>
-QComboBox * </td><td class="memItemRight" valign="bottom"><b>compressed</b></td></tr>
-<tr class="separator:a98ba6b67118efbc43442a8486bc0401f inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1df694de9f13a0ef3efae2c9aa495464 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1df694de9f13a0ef3efae2c9aa495464"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_12</b></td></tr>
-<tr class="separator:a1df694de9f13a0ef3efae2c9aa495464 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a22df1f839ef6e572270af38e1041b466 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a22df1f839ef6e572270af38e1041b466"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>ct</b></td></tr>
-<tr class="separator:a22df1f839ef6e572270af38e1041b466 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abeaf6128b140b9fb7dd5323545c39aa6 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abeaf6128b140b9fb7dd5323545c39aa6"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>output</b></td></tr>
-<tr class="separator:abeaf6128b140b9fb7dd5323545c39aa6 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae414e3be8e98c0fb2bd68eb04ba6a557 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae414e3be8e98c0fb2bd68eb04ba6a557"></a>
-QToolButton * </td><td class="memItemRight" valign="bottom"><b>toolButton_output</b></td></tr>
-<tr class="separator:ae414e3be8e98c0fb2bd68eb04ba6a557 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac10ed68694c23da02ddc0ceacd54ef01 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac10ed68694c23da02ddc0ceacd54ef01"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_6</b></td></tr>
-<tr class="separator:ac10ed68694c23da02ddc0ceacd54ef01 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae09ab268d64ef88053d9274a1db7d809 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae09ab268d64ef88053d9274a1db7d809"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>a_srs</b></td></tr>
-<tr class="separator:ae09ab268d64ef88053d9274a1db7d809 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afe8180cf76469366b43fadd603c1b1f7 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afe8180cf76469366b43fadd603c1b1f7"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_15</b></td></tr>
-<tr class="separator:afe8180cf76469366b43fadd603c1b1f7 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8792d3c1f86d599e980b8925b70de355 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8792d3c1f86d599e980b8925b70de355"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>dy</b></td></tr>
-<tr class="separator:a8792d3c1f86d599e980b8925b70de355 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af121c391d64554ab2602ae6174e03d95 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af121c391d64554ab2602ae6174e03d95"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_5</b></td></tr>
-<tr class="separator:af121c391d64554ab2602ae6174e03d95 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8c901d77b89b7313d2b6918936635b6d inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8c901d77b89b7313d2b6918936635b6d"></a>
-QCheckBox * </td><td class="memItemRight" valign="bottom"><b>tiled</b></td></tr>
-<tr class="separator:a8c901d77b89b7313d2b6918936635b6d inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a34a7316dcf81648b6bf02a45db6bfb65 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a34a7316dcf81648b6bf02a45db6bfb65"></a>
-QComboBox * </td><td class="memItemRight" valign="bottom"><b>otype</b></td></tr>
-<tr class="separator:a34a7316dcf81648b6bf02a45db6bfb65 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5137915fc613f86173da699e3fc07cc5 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5137915fc613f86173da699e3fc07cc5"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_11</b></td></tr>
-<tr class="separator:a5137915fc613f86173da699e3fc07cc5 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6dee70ca9d545f8ff0d05cc9dc3123c5 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6dee70ca9d545f8ff0d05cc9dc3123c5"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>dstnodata</b></td></tr>
-<tr class="separator:a6dee70ca9d545f8ff0d05cc9dc3123c5 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7090df769df333313a687a987792883c inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7090df769df333313a687a987792883c"></a>
-QToolButton * </td><td class="memItemRight" valign="bottom"><b>toolButton_file</b></td></tr>
-<tr class="separator:a7090df769df333313a687a987792883c inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a253fbc5b44941384321b7c58cf96cc65 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a253fbc5b44941384321b7c58cf96cc65"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_3</b></td></tr>
-<tr class="separator:a253fbc5b44941384321b7c58cf96cc65 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a56fc5cc3db81beb7a6d527557b5a197d inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a56fc5cc3db81beb7a6d527557b5a197d"></a>
-QWidget * </td><td class="memItemRight" valign="bottom"><b>tab_4</b></td></tr>
-<tr class="separator:a56fc5cc3db81beb7a6d527557b5a197d inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa1c14de256d44c85dff296049ed3a2c4 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa1c14de256d44c85dff296049ed3a2c4"></a>
-QVBoxLayout * </td><td class="memItemRight" valign="bottom"><b>verticalLayout_5</b></td></tr>
-<tr class="separator:aa1c14de256d44c85dff296049ed3a2c4 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a41f23b25032f2c3cda8f6493923a262b inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a41f23b25032f2c3cda8f6493923a262b"></a>
-QVBoxLayout * </td><td class="memItemRight" valign="bottom"><b>verticalLayout_4</b></td></tr>
-<tr class="separator:a41f23b25032f2c3cda8f6493923a262b inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a05a2b7e86c6eb260486ded962a789cf4 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a05a2b7e86c6eb260486ded962a789cf4"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_24</b></td></tr>
-<tr class="separator:a05a2b7e86c6eb260486ded962a789cf4 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af2f8779d650040be1ffaa36d852876c7 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af2f8779d650040be1ffaa36d852876c7"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>commandLineEdit</b></td></tr>
-<tr class="separator:af2f8779d650040be1ffaa36d852876c7 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a04b9a0d777a586619a27b9c0856f67cd inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a04b9a0d777a586619a27b9c0856f67cd"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_25</b></td></tr>
-<tr class="separator:a04b9a0d777a586619a27b9c0856f67cd inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a98553b2cd47e2b9d117d678600bc4881 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a98553b2cd47e2b9d117d678600bc4881"></a>
-QPlainTextEdit * </td><td class="memItemRight" valign="bottom"><b>consoleEdit</b></td></tr>
-<tr class="separator:a98553b2cd47e2b9d117d678600bc4881 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af7b3fe6a3f100795153cd504ce0b86bf inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af7b3fe6a3f100795153cd504ce0b86bf"></a>
-QSpacerItem * </td><td class="memItemRight" valign="bottom"><b>verticalSpacer_2</b></td></tr>
-<tr class="separator:af7b3fe6a3f100795153cd504ce0b86bf inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9ee21d2c2bc000e7a8ba931bacfc5a69 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9ee21d2c2bc000e7a8ba931bacfc5a69"></a>
-QHBoxLayout * </td><td class="memItemRight" valign="bottom"><b>horizontalLayout_2</b></td></tr>
-<tr class="separator:a9ee21d2c2bc000e7a8ba931bacfc5a69 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8285ba7a77c4d2649c9d338bb3288401 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8285ba7a77c4d2649c9d338bb3288401"></a>
-QToolButton * </td><td class="memItemRight" valign="bottom"><b>toolButton_Run</b></td></tr>
-<tr class="separator:a8285ba7a77c4d2649c9d338bb3288401 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae189b5a48fa6e6f4b6775f1f832afe9c inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae189b5a48fa6e6f4b6775f1f832afe9c"></a>
-QSpacerItem * </td><td class="memItemRight" valign="bottom"><b>horizontalSpacer</b></td></tr>
-<tr class="separator:ae189b5a48fa6e6f4b6775f1f832afe9c inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a18a1a9c96f3a40914574d293b6a652a9 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a18a1a9c96f3a40914574d293b6a652a9"></a>
-QToolButton * </td><td class="memItemRight" valign="bottom"><b>toolButton_defaults</b></td></tr>
-<tr class="separator:a18a1a9c96f3a40914574d293b6a652a9 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a502a50d7dc22415f511336bdfb4318b9 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a502a50d7dc22415f511336bdfb4318b9"></a>
-QMenuBar * </td><td class="memItemRight" valign="bottom"><b>menuBar</b></td></tr>
-<tr class="separator:a502a50d7dc22415f511336bdfb4318b9 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1663312349b8d12c8d108637bbbc856d inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1663312349b8d12c8d108637bbbc856d"></a>
-QMenu * </td><td class="memItemRight" valign="bottom"><b>menuFile</b></td></tr>
-<tr class="separator:a1663312349b8d12c8d108637bbbc856d inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abca26371605d7c5235fab5188d4bdcf7 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abca26371605d7c5235fab5188d4bdcf7"></a>
-QToolBar * </td><td class="memItemRight" valign="bottom"><b>mainToolBar</b></td></tr>
-<tr class="separator:abca26371605d7c5235fab5188d4bdcf7 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afa919f3af6f2f526a70f1fa331f63724 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afa919f3af6f2f526a70f1fa331f63724"></a>
-QStatusBar * </td><td class="memItemRight" valign="bottom"><b>statusBar</b></td></tr>
-<tr class="separator:afa919f3af6f2f526a70f1fa331f63724 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a31435a8f54c77c0b475ec5fad844d449 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a31435a8f54c77c0b475ec5fad844d449"></a>
-QAction * </td><td class="memItemRight" valign="bottom"><b>actionInput</b></td></tr>
-<tr class="separator:a31435a8f54c77c0b475ec5fad844d449 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a986bbe5b2e5194ca4359bcf644a385ae inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a986bbe5b2e5194ca4359bcf644a385ae"></a>
-QAction * </td><td class="memItemRight" valign="bottom"><b>actionOutput</b></td></tr>
-<tr class="separator:a986bbe5b2e5194ca4359bcf644a385ae inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad68c49f53c306e35cdb9bf6ecd4044ac inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad68c49f53c306e35cdb9bf6ecd4044ac"></a>
-QListWidget * </td><td class="memItemRight" valign="bottom"><b>listWidget_band</b></td></tr>
-<tr class="separator:ad68c49f53c306e35cdb9bf6ecd4044ac inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a72cc3989b0102c6ae970a431e271bf08 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a72cc3989b0102c6ae970a431e271bf08"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_16</b></td></tr>
-<tr class="separator:a72cc3989b0102c6ae970a431e271bf08 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a31508f09b3c486787c83b94aab2d2564 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a31508f09b3c486787c83b94aab2d2564"></a>
-QToolButton * </td><td class="memItemRight" valign="bottom"><b>toolButton</b></td></tr>
-<tr class="separator:a31508f09b3c486787c83b94aab2d2564 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab01ef3bec5f958312898455ce66c7723 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab01ef3bec5f958312898455ce66c7723"></a>
-QSpacerItem * </td><td class="memItemRight" valign="bottom"><b>horizontalSpacer_9</b></td></tr>
-<tr class="separator:ab01ef3bec5f958312898455ce66c7723 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2c53f7f2e3106a4225d5be295e1315ae inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2c53f7f2e3106a4225d5be295e1315ae"></a>
-QSpacerItem * </td><td class="memItemRight" valign="bottom"><b>verticalSpacer</b></td></tr>
-<tr class="separator:a2c53f7f2e3106a4225d5be295e1315ae inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a13a8029dca885a0a01ea02f528940fab inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a13a8029dca885a0a01ea02f528940fab"></a>
-QSpacerItem * </td><td class="memItemRight" valign="bottom"><b>horizontalSpacer_8</b></td></tr>
-<tr class="separator:a13a8029dca885a0a01ea02f528940fab inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a22505456c3a4a7c6de5270b57de2c80d inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a22505456c3a4a7c6de5270b57de2c80d"></a>
-QRadioButton * </td><td class="memItemRight" valign="bottom"><b>autoscale</b></td></tr>
-<tr class="separator:a22505456c3a4a7c6de5270b57de2c80d inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad8c611cdd69ea67faec07751c3b8b6e8 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad8c611cdd69ea67faec07751c3b8b6e8"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>offset</b></td></tr>
-<tr class="separator:ad8c611cdd69ea67faec07751c3b8b6e8 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a39c33b001fc29ed0099bb8914fd91082 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a39c33b001fc29ed0099bb8914fd91082"></a>
-QRadioButton * </td><td class="memItemRight" valign="bottom"><b>manual</b></td></tr>
-<tr class="separator:a39c33b001fc29ed0099bb8914fd91082 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac2d7c1d984e76c0e28db04d9deb6ec64 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac2d7c1d984e76c0e28db04d9deb6ec64"></a>
-QRadioButton * </td><td class="memItemRight" valign="bottom"><b>noscale</b></td></tr>
-<tr class="separator:ac2d7c1d984e76c0e28db04d9deb6ec64 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a63919cdecc2e3eb912a7ffc81652adab inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a63919cdecc2e3eb912a7ffc81652adab"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>scale</b></td></tr>
-<tr class="separator:a63919cdecc2e3eb912a7ffc81652adab inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adab70055ed97a7fda442dd160d86a886 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adab70055ed97a7fda442dd160d86a886"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>as_from</b></td></tr>
-<tr class="separator:adab70055ed97a7fda442dd160d86a886 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a20f0df22fcdfef9fe9554f1d962d7b1f inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a20f0df22fcdfef9fe9554f1d962d7b1f"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>as_to</b></td></tr>
-<tr class="separator:a20f0df22fcdfef9fe9554f1d962d7b1f inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a99361df7cfa0c2bcc7edc18d8465bd8b inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a99361df7cfa0c2bcc7edc18d8465bd8b"></a>
-QSpacerItem * </td><td class="memItemRight" valign="bottom"><b>horizontalSpacer_11</b></td></tr>
-<tr class="separator:a99361df7cfa0c2bcc7edc18d8465bd8b inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab18937cd7bb632b9c8f9cd260a8294f1 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab18937cd7bb632b9c8f9cd260a8294f1"></a>
-QSpacerItem * </td><td class="memItemRight" valign="bottom"><b>horizontalSpacer_10</b></td></tr>
-<tr class="separator:ab18937cd7bb632b9c8f9cd260a8294f1 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5db9c132a93e3153c40d227f6edb7fbc inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5db9c132a93e3153c40d227f6edb7fbc"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>nodata</b></td></tr>
-<tr class="separator:a5db9c132a93e3153c40d227f6edb7fbc inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae35e3adae2de50d8cd252c506e98ddc9 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae35e3adae2de50d8cd252c506e98ddc9"></a>
-QSpacerItem * </td><td class="memItemRight" valign="bottom"><b>horizontalSpacer_7</b></td></tr>
-<tr class="separator:ae35e3adae2de50d8cd252c506e98ddc9 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6fb1003e5e276a4014555669f7ae7bff inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6fb1003e5e276a4014555669f7ae7bff"></a>
-QButtonGroup * </td><td class="memItemRight" valign="bottom"><b>buttonGroup</b></td></tr>
-<tr class="separator:a6fb1003e5e276a4014555669f7ae7bff inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa77983563a18cda5d8ba564d1600083e inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa77983563a18cda5d8ba564d1600083e"></a>
-QAction * </td><td class="memItemRight" valign="bottom"><b>actionReference</b></td></tr>
-<tr class="separator:aa77983563a18cda5d8ba564d1600083e inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a512e66e9f4479ec227af409963880f1d inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a512e66e9f4479ec227af409963880f1d"></a>
-QAction * </td><td class="memItemRight" valign="bottom"><b>actionMask</b></td></tr>
-<tr class="separator:a512e66e9f4479ec227af409963880f1d inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5b18042273fd8aa43ae4af65441935e0 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5b18042273fd8aa43ae4af65441935e0"></a>
-QAction * </td><td class="memItemRight" valign="bottom"><b>actionColor_table</b></td></tr>
-<tr class="separator:a5b18042273fd8aa43ae4af65441935e0 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6356443dc067ef5164e2f4dc834e640b inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6356443dc067ef5164e2f4dc834e640b"></a>
-QWidget * </td><td class="memItemRight" valign="bottom"><b>layoutWidget</b></td></tr>
-<tr class="separator:a6356443dc067ef5164e2f4dc834e640b inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6897c356e2adde5d97027f8d26331357 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6897c356e2adde5d97027f8d26331357"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>lclass</b></td></tr>
-<tr class="separator:a6897c356e2adde5d97027f8d26331357 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af3f2ade02aa3aefff983b4b8db9d0e4a inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af3f2ade02aa3aefff983b4b8db9d0e4a"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>input</b></td></tr>
-<tr class="separator:af3f2ade02aa3aefff983b4b8db9d0e4a inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af4463b780f779d1073d0509831b31803 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af4463b780f779d1073d0509831b31803"></a>
-QCheckBox * </td><td class="memItemRight" valign="bottom"><b>confusion</b></td></tr>
-<tr class="separator:af4463b780f779d1073d0509831b31803 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8417f8874fd5a3caa6b0e31a66df0d19 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8417f8874fd5a3caa6b0e31a66df0d19"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>mask</b></td></tr>
-<tr class="separator:a8417f8874fd5a3caa6b0e31a66df0d19 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af2473f8d42df45ca53d95a61ffb8885d inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af2473f8d42df45ca53d95a61ffb8885d"></a>
-QToolButton * </td><td class="memItemRight" valign="bottom"><b>toolButton_mask</b></td></tr>
-<tr class="separator:af2473f8d42df45ca53d95a61ffb8885d inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abb84fc9a53c22baccd1b7015ae639c28 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abb84fc9a53c22baccd1b7015ae639c28"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>msknodata</b></td></tr>
-<tr class="separator:abb84fc9a53c22baccd1b7015ae639c28 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aba74df373b63053ef7f9765ae814d577 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aba74df373b63053ef7f9765ae814d577"></a>
-QSpacerItem * </td><td class="memItemRight" valign="bottom"><b>horizontalSpacer_15</b></td></tr>
-<tr class="separator:aba74df373b63053ef7f9765ae814d577 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5fc91cdea93e734b8ff54b4f45d91591 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5fc91cdea93e734b8ff54b4f45d91591"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>nclass</b></td></tr>
-<tr class="separator:a5fc91cdea93e734b8ff54b4f45d91591 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2a80073e5017dba745c782bfe61209a7 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2a80073e5017dba745c782bfe61209a7"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>lref</b></td></tr>
-<tr class="separator:a2a80073e5017dba745c782bfe61209a7 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae6b649c212c78ef9bb66a108da7c50fd inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae6b649c212c78ef9bb66a108da7c50fd"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_reference</b></td></tr>
-<tr class="separator:ae6b649c212c78ef9bb66a108da7c50fd inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aff982475d8c004b4ca25d739438760ca inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aff982475d8c004b4ca25d739438760ca"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
-<tr class="separator:aff982475d8c004b4ca25d739438760ca inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab8887c0c124789e7457e4f5fffef5680 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab8887c0c124789e7457e4f5fffef5680"></a>
-QToolButton * </td><td class="memItemRight" valign="bottom"><b>toolButton_reference</b></td></tr>
-<tr class="separator:ab8887c0c124789e7457e4f5fffef5680 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a240c41f3553dbfbe7250c740a032da3e inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a240c41f3553dbfbe7250c740a032da3e"></a>
-QComboBox * </td><td class="memItemRight" valign="bottom"><b>f</b></td></tr>
-<tr class="separator:a240c41f3553dbfbe7250c740a032da3e inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a78b00a5bdda86ec7892a7d1e2e5ee87b inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a78b00a5bdda86ec7892a7d1e2e5ee87b"></a>
-QWidget * </td><td class="memItemRight" valign="bottom"><b>widget</b></td></tr>
-<tr class="separator:a78b00a5bdda86ec7892a7d1e2e5ee87b inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a94fb1c65fd7dacec12b5a47af58479a5 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a94fb1c65fd7dacec12b5a47af58479a5"></a>
-QToolButton * </td><td class="memItemRight" valign="bottom"><b>commandLinkButtonPrepareTable</b></td></tr>
-<tr class="separator:a94fb1c65fd7dacec12b5a47af58479a5 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a61eb000c4b462e0380e46eded3a4c830 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a61eb000c4b462e0380e46eded3a4c830"></a>
-QTableView * </td><td class="memItemRight" valign="bottom"><b>tableView_labels</b></td></tr>
-<tr class="separator:a61eb000c4b462e0380e46eded3a4c830 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0af2d7d014e5aaa05be04d2bd0c4d53d inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0af2d7d014e5aaa05be04d2bd0c4d53d"></a>
-QVBoxLayout * </td><td class="memItemRight" valign="bottom"><b>verticalLayout_6</b></td></tr>
-<tr class="separator:a0af2d7d014e5aaa05be04d2bd0c4d53d inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae7104d878681f568e492c5bd0f653157 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae7104d878681f568e492c5bd0f653157"></a>
-QHBoxLayout * </td><td class="memItemRight" valign="bottom"><b>horizontalLayout</b></td></tr>
-<tr class="separator:ae7104d878681f568e492c5bd0f653157 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abfe8db90f18bab5814359c7f3367baa0 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abfe8db90f18bab5814359c7f3367baa0"></a>
-QPushButton * </td><td class="memItemRight" valign="bottom"><b>pushButton_run</b></td></tr>
-<tr class="separator:abfe8db90f18bab5814359c7f3367baa0 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8f4a50315ae4629ea4ae5df781018699 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8f4a50315ae4629ea4ae5df781018699"></a>
-QPushButton * </td><td class="memItemRight" valign="bottom"><b>pushButton_restore</b></td></tr>
-<tr class="separator:a8f4a50315ae4629ea4ae5df781018699 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8b8cf9fae10935c6c8c2ad4f9ce09780 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8b8cf9fae10935c6c8c2ad4f9ce09780"></a>
-QAction * </td><td class="memItemRight" valign="bottom"><b>actionSample</b></td></tr>
-<tr class="separator:a8b8cf9fae10935c6c8c2ad4f9ce09780 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a197ed7a89b637eed613b793a945afdc7 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a197ed7a89b637eed613b793a945afdc7"></a>
-QGridLayout * </td><td class="memItemRight" valign="bottom"><b>gridLayout_5</b></td></tr>
-<tr class="separator:a197ed7a89b637eed613b793a945afdc7 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae4fc4a01984f4958d08903a46ce7509a inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae4fc4a01984f4958d08903a46ce7509a"></a>
-QHBoxLayout * </td><td class="memItemRight" valign="bottom"><b>horizontalLayout_3</b></td></tr>
-<tr class="separator:ae4fc4a01984f4958d08903a46ce7509a inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adbd6c33eda93409d23853400a98dfc1f inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adbd6c33eda93409d23853400a98dfc1f"></a>
-QHBoxLayout * </td><td class="memItemRight" valign="bottom"><b>horizontalLayout_4</b></td></tr>
-<tr class="separator:adbd6c33eda93409d23853400a98dfc1f inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a46aefd5319c7da5010e6a94e54b971d7 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a46aefd5319c7da5010e6a94e54b971d7"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>sample</b></td></tr>
-<tr class="separator:a46aefd5319c7da5010e6a94e54b971d7 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0730ef2aea01c2cc23c1b14a46fd1f73 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0730ef2aea01c2cc23c1b14a46fd1f73"></a>
-QToolButton * </td><td class="memItemRight" valign="bottom"><b>toolButton_sample</b></td></tr>
-<tr class="separator:a0730ef2aea01c2cc23c1b14a46fd1f73 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aaff3956ce218d4705eade6970756b0c7 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaff3956ce218d4705eade6970756b0c7"></a>
-QCheckBox * </td><td class="memItemRight" valign="bottom"><b>polygon</b></td></tr>
-<tr class="separator:aaff3956ce218d4705eade6970756b0c7 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa0b057737b6ce6aafa0d6851dae71403 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa0b057737b6ce6aafa0d6851dae71403"></a>
-QHBoxLayout * </td><td class="memItemRight" valign="bottom"><b>horizontalLayout_5</b></td></tr>
-<tr class="separator:aa0b057737b6ce6aafa0d6851dae71403 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0cbbe6cb509a39748725e2fa7149621c inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0cbbe6cb509a39748725e2fa7149621c"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>bname</b></td></tr>
-<tr class="separator:a0cbbe6cb509a39748725e2fa7149621c inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae238700e73e3dd998804a028b823216d inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae238700e73e3dd998804a028b823216d"></a>
-QComboBox * </td><td class="memItemRight" valign="bottom"><b>rule</b></td></tr>
-<tr class="separator:ae238700e73e3dd998804a028b823216d inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abff58f8857b2dce03c53d2e73c19fe44 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abff58f8857b2dce03c53d2e73c19fe44"></a>
-QToolButton * </td><td class="memItemRight" valign="bottom"><b>toolButton_createTable</b></td></tr>
-<tr class="separator:abff58f8857b2dce03c53d2e73c19fe44 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a241007acbe0ceabf194003e06b6d7dea inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a241007acbe0ceabf194003e06b6d7dea"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>threshold</b></td></tr>
-<tr class="separator:a241007acbe0ceabf194003e06b6d7dea inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad0581e2d63087e1a0a41a4055b9bb9fa inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad0581e2d63087e1a0a41a4055b9bb9fa"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>cname</b></td></tr>
-<tr class="separator:ad0581e2d63087e1a0a41a4055b9bb9fa inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab49ec6265af01cb2efc6937271833edc inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab49ec6265af01cb2efc6937271833edc"></a>
-QHBoxLayout * </td><td class="memItemRight" valign="bottom"><b>horizontalLayout_6</b></td></tr>
-<tr class="separator:ab49ec6265af01cb2efc6937271833edc inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4e5d2021459f39c979022c3b0631bf57 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4e5d2021459f39c979022c3b0631bf57"></a>
-QAction * </td><td class="memItemRight" valign="bottom"><b>actionTraining</b></td></tr>
-<tr class="separator:a4e5d2021459f39c979022c3b0631bf57 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa4d1122633b0a9bef92c1c2dc5066561 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa4d1122633b0a9bef92c1c2dc5066561"></a>
-QToolButton * </td><td class="memItemRight" valign="bottom"><b>toolButton_training</b></td></tr>
-<tr class="separator:aa4d1122633b0a9bef92c1c2dc5066561 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad78262d99bcc37fabdf3ddd623ab6976 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad78262d99bcc37fabdf3ddd623ab6976"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>training</b></td></tr>
-<tr class="separator:ad78262d99bcc37fabdf3ddd623ab6976 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aff8ee25a1615f462b64639744df73993 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aff8ee25a1615f462b64639744df73993"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>label</b></td></tr>
-<tr class="separator:aff8ee25a1615f462b64639744df73993 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a242883afffec0ee80fc73bb189e8f635 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a242883afffec0ee80fc73bb189e8f635"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>tln</b></td></tr>
-<tr class="separator:a242883afffec0ee80fc73bb189e8f635 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adf69068faed214d9746111f34193b0cc inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adf69068faed214d9746111f34193b0cc"></a>
-QCommandLinkButton * </td><td class="memItemRight" valign="bottom"><b>commandLinkButtonPrepareTable</b></td></tr>
-<tr class="separator:adf69068faed214d9746111f34193b0cc inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0b94daa368f7d0045147e8881360eabc inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0b94daa368f7d0045147e8881360eabc"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>cv</b></td></tr>
-<tr class="separator:a0b94daa368f7d0045147e8881360eabc inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a205cd33937d5f5499057dfb40345d620 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a205cd33937d5f5499057dfb40345d620"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>ccost</b></td></tr>
-<tr class="separator:a205cd33937d5f5499057dfb40345d620 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a41242ff48a25ddf15e858868e0c2a553 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a41242ff48a25ddf15e858868e0c2a553"></a>
-QComboBox * </td><td class="memItemRight" valign="bottom"><b>svmtype</b></td></tr>
-<tr class="separator:a41242ff48a25ddf15e858868e0c2a553 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a31bff91db266f21874b654b918c4cbf1 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a31bff91db266f21874b654b918c4cbf1"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>gamma</b></td></tr>
-<tr class="separator:a31bff91db266f21874b654b918c4cbf1 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8e011553af28c90d93097f6ceef83a5c inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8e011553af28c90d93097f6ceef83a5c"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>coef0</b></td></tr>
-<tr class="separator:a8e011553af28c90d93097f6ceef83a5c inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae8d217f6ef19479d3d7b873bc61d002c inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae8d217f6ef19479d3d7b873bc61d002c"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>nu</b></td></tr>
-<tr class="separator:ae8d217f6ef19479d3d7b873bc61d002c inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afe5762e2bac6134dedb576a95efa45b2 inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afe5762e2bac6134dedb576a95efa45b2"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>kd</b></td></tr>
-<tr class="separator:afe5762e2bac6134dedb576a95efa45b2 inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aeda674e59c4c35b006a519df57e58afd inherit pub_attribs_classUi__MainWindow"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeda674e59c4c35b006a519df57e58afd"></a>
-QComboBox * </td><td class="memItemRight" valign="bottom"><b>kerneltype</b></td></tr>
-<tr class="separator:aeda674e59c4c35b006a519df57e58afd inherit pub_attribs_classUi__MainWindow"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="build-pkcomposite__gui-gcc-Debug_2ui__mainwindow_8h_source.html#l00702">702</a> of file <a class="el" href="build-pkcomposite__gui-gcc-Debug_2ui__mainwindow_8h_source.html">ui_mainwindow.h</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/qt/build-pkcomposite_gui-gcc-Debug/<a class="el" href="build-pkcomposite__gui-gcc-Debug_2ui__mainwindow_8h_source.html">ui_mainwindow.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classUi_1_1MainWindow__coll__graph.map b/doc/html/classUi_1_1MainWindow__coll__graph.map
deleted file mode 100644
index 8ce9c39..0000000
--- a/doc/html/classUi_1_1MainWindow__coll__graph.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Ui::MainWindow" name="Ui::MainWindow">
-<area shape="rect" id="node2" href="$classUi__MainWindow.html" title="Ui_MainWindow" alt="" coords="28,5,144,32"/>
-</map>
diff --git a/doc/html/classUi_1_1MainWindow__coll__graph.md5 b/doc/html/classUi_1_1MainWindow__coll__graph.md5
deleted file mode 100644
index 274ebd9..0000000
--- a/doc/html/classUi_1_1MainWindow__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-0ee01170730be0f29279620ebd50f876
\ No newline at end of file
diff --git a/doc/html/classUi_1_1MainWindow__coll__graph.png b/doc/html/classUi_1_1MainWindow__coll__graph.png
deleted file mode 100644
index af2158a..0000000
Binary files a/doc/html/classUi_1_1MainWindow__coll__graph.png and /dev/null differ
diff --git a/doc/html/classUi_1_1MainWindow__inherit__graph.map b/doc/html/classUi_1_1MainWindow__inherit__graph.map
deleted file mode 100644
index 8ce9c39..0000000
--- a/doc/html/classUi_1_1MainWindow__inherit__graph.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Ui::MainWindow" name="Ui::MainWindow">
-<area shape="rect" id="node2" href="$classUi__MainWindow.html" title="Ui_MainWindow" alt="" coords="28,5,144,32"/>
-</map>
diff --git a/doc/html/classUi_1_1MainWindow__inherit__graph.md5 b/doc/html/classUi_1_1MainWindow__inherit__graph.md5
deleted file mode 100644
index 274ebd9..0000000
--- a/doc/html/classUi_1_1MainWindow__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-0ee01170730be0f29279620ebd50f876
\ No newline at end of file
diff --git a/doc/html/classUi_1_1MainWindow__inherit__graph.png b/doc/html/classUi_1_1MainWindow__inherit__graph.png
deleted file mode 100644
index af2158a..0000000
Binary files a/doc/html/classUi_1_1MainWindow__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classUi__MainWindow-members.html b/doc/html/classUi__MainWindow-members.html
deleted file mode 100644
index fde624b..0000000
--- a/doc/html/classUi__MainWindow-members.html
+++ /dev/null
@@ -1,258 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">Ui_MainWindow Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>a_srs</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>actionColor_table</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>actionExtent</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>actionInput</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>actionInput_image</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>actionMask</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>actionOutput</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>actionOutput_image</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>actionQuit</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>actionReference</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>actionSample</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>actionSelection_Info_file</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>actionTraining</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>as_from</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>as_to</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>autoscale</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>bname</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>bndnodata</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>buttonGroup</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>cband</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ccost</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>centralWidget</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cname</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>coef0</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>commandLineEdit</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>commandLinkButtonPrepareTable</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>commandLinkButtonPrepareTable</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>compressed</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>confusion</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>consoleEdit</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>crule</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>ct</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cv</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>dstnodata</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>dx</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>dy</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>extent</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>f</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>file</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>gamma</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>gridLayout</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>gridLayout_2</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>gridLayout_3</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>gridLayout_4</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>gridLayout_5</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>groupBox</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>horizontalLayout</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>horizontalLayout_2</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>horizontalLayout_3</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>horizontalLayout_4</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>horizontalLayout_5</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>horizontalLayout_6</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>horizontalSpacer</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>horizontalSpacer_10</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>horizontalSpacer_11</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>horizontalSpacer_15</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>horizontalSpacer_2</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>horizontalSpacer_3</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>horizontalSpacer_4</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>horizontalSpacer_5</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>horizontalSpacer_6</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>horizontalSpacer_7</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>horizontalSpacer_8</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>horizontalSpacer_9</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>input</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>interleaved</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>kd</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>kerneltype</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>label</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>label</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>label_10</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>label_11</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>label_12</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>label_13</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>label_14</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>label_15</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>label_16</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>label_17</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>label_18</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>label_19</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>label_2</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>label_20</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>label_21</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>label_22</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>label_23</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>label_24</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>label_25</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>label_3</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>label_4</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>label_5</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>label_6</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>label_7</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>label_8</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>label_9</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>label_reference</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>layoutWidget</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>lclass</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>listWidget_band</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>listWidget_input</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>lref</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>lrx</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>lry</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mainToolBar</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>manual</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mask</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>max</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>menuBar</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>menuFile</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>min</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>msknodata</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>nclass</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>nodata</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>noscale</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>nu</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>offset</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>oformat</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>otype</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>output</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>polygon</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>pushButton_restore</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pushButton_run</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>reference</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>resample</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>retranslateUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>retranslateUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>retranslateUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>retranslateUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>retranslateUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>retranslateUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>retranslateUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>retranslateUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>retranslateUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>retranslateUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>rule</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>sample</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>scale</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setupUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setupUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setupUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setupUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setupUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setupUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setupUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setupUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setupUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setupUi</b>(QMainWindow *MainWindow) (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>srcnodata</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>statusBar</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>svmtype</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>tab</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>tab_2</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>tab_3</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>tab_4</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>tableView_labels</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>tabWidget</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>threshold</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>tiled</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>tln</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>toolButton</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>toolButton_createTable</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>toolButton_ct</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>toolButton_defaults</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>toolButton_extent</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>toolButton_file</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>toolButton_input</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>toolButton_mask</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>toolButton_output</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>toolButton_reference</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>toolButton_Run</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>toolButton_sample</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>toolButton_training</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>training</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ulx</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>uly</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>verticalLayout</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>verticalLayout_2</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>verticalLayout_3</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>verticalLayout_4</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>verticalLayout_5</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>verticalLayout_6</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>verticalSpacer</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>verticalSpacer_2</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>verticalSpacer_3</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>widget</b> (defined in <a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>)</td><td class="entry"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classUi__MainWindow.html b/doc/html/classUi__MainWindow.html
deleted file mode 100644
index a431e76..0000000
--- a/doc/html/classUi__MainWindow.html
+++ /dev/null
@@ -1,647 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Ui_MainWindow Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="classUi__MainWindow-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">Ui_MainWindow Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for Ui_MainWindow:</div>
-<div class="dyncontent">
-<div class="center"><img src="classUi__MainWindow__inherit__graph.png" border="0" usemap="#Ui__MainWindow_inherit__map" alt="Inheritance graph"/></div>
-<map name="Ui__MainWindow_inherit__map" id="Ui__MainWindow_inherit__map">
-<area shape="rect" id="node2" href="classUi_1_1MainWindow.html" title="Ui::MainWindow" alt="" coords="27,80,145,107"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:acf4a0872c4c77d8f43a2ec66ed849b58"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf4a0872c4c77d8f43a2ec66ed849b58"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setupUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:acf4a0872c4c77d8f43a2ec66ed849b58"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a097dd160c3534a204904cb374412c618"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a097dd160c3534a204904cb374412c618"></a>
-void </td><td class="memItemRight" valign="bottom"><b>retranslateUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:a097dd160c3534a204904cb374412c618"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acf4a0872c4c77d8f43a2ec66ed849b58"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf4a0872c4c77d8f43a2ec66ed849b58"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setupUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:acf4a0872c4c77d8f43a2ec66ed849b58"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a097dd160c3534a204904cb374412c618"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a097dd160c3534a204904cb374412c618"></a>
-void </td><td class="memItemRight" valign="bottom"><b>retranslateUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:a097dd160c3534a204904cb374412c618"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acf4a0872c4c77d8f43a2ec66ed849b58"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf4a0872c4c77d8f43a2ec66ed849b58"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setupUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:acf4a0872c4c77d8f43a2ec66ed849b58"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a097dd160c3534a204904cb374412c618"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a097dd160c3534a204904cb374412c618"></a>
-void </td><td class="memItemRight" valign="bottom"><b>retranslateUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:a097dd160c3534a204904cb374412c618"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acf4a0872c4c77d8f43a2ec66ed849b58"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf4a0872c4c77d8f43a2ec66ed849b58"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setupUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:acf4a0872c4c77d8f43a2ec66ed849b58"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a097dd160c3534a204904cb374412c618"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a097dd160c3534a204904cb374412c618"></a>
-void </td><td class="memItemRight" valign="bottom"><b>retranslateUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:a097dd160c3534a204904cb374412c618"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acf4a0872c4c77d8f43a2ec66ed849b58"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf4a0872c4c77d8f43a2ec66ed849b58"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setupUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:acf4a0872c4c77d8f43a2ec66ed849b58"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a097dd160c3534a204904cb374412c618"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a097dd160c3534a204904cb374412c618"></a>
-void </td><td class="memItemRight" valign="bottom"><b>retranslateUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:a097dd160c3534a204904cb374412c618"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acf4a0872c4c77d8f43a2ec66ed849b58"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf4a0872c4c77d8f43a2ec66ed849b58"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setupUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:acf4a0872c4c77d8f43a2ec66ed849b58"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a097dd160c3534a204904cb374412c618"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a097dd160c3534a204904cb374412c618"></a>
-void </td><td class="memItemRight" valign="bottom"><b>retranslateUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:a097dd160c3534a204904cb374412c618"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acf4a0872c4c77d8f43a2ec66ed849b58"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf4a0872c4c77d8f43a2ec66ed849b58"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setupUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:acf4a0872c4c77d8f43a2ec66ed849b58"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a097dd160c3534a204904cb374412c618"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a097dd160c3534a204904cb374412c618"></a>
-void </td><td class="memItemRight" valign="bottom"><b>retranslateUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:a097dd160c3534a204904cb374412c618"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acf4a0872c4c77d8f43a2ec66ed849b58"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf4a0872c4c77d8f43a2ec66ed849b58"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setupUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:acf4a0872c4c77d8f43a2ec66ed849b58"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a097dd160c3534a204904cb374412c618"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a097dd160c3534a204904cb374412c618"></a>
-void </td><td class="memItemRight" valign="bottom"><b>retranslateUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:a097dd160c3534a204904cb374412c618"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acf4a0872c4c77d8f43a2ec66ed849b58"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf4a0872c4c77d8f43a2ec66ed849b58"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setupUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:acf4a0872c4c77d8f43a2ec66ed849b58"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a097dd160c3534a204904cb374412c618"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a097dd160c3534a204904cb374412c618"></a>
-void </td><td class="memItemRight" valign="bottom"><b>retranslateUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:a097dd160c3534a204904cb374412c618"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acf4a0872c4c77d8f43a2ec66ed849b58"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf4a0872c4c77d8f43a2ec66ed849b58"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setupUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:acf4a0872c4c77d8f43a2ec66ed849b58"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a097dd160c3534a204904cb374412c618"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a097dd160c3534a204904cb374412c618"></a>
-void </td><td class="memItemRight" valign="bottom"><b>retranslateUi</b> (QMainWindow *<a class="el" href="classMainWindow.html">MainWindow</a>)</td></tr>
-<tr class="separator:a097dd160c3534a204904cb374412c618"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:af2483b34f1656f3e57729ad834ddf677"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af2483b34f1656f3e57729ad834ddf677"></a>
-QAction * </td><td class="memItemRight" valign="bottom"><b>actionInput_image</b></td></tr>
-<tr class="separator:af2483b34f1656f3e57729ad834ddf677"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a29b62934c81c009fdf0d03a9ee63ce0b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a29b62934c81c009fdf0d03a9ee63ce0b"></a>
-QAction * </td><td class="memItemRight" valign="bottom"><b>actionOutput_image</b></td></tr>
-<tr class="separator:a29b62934c81c009fdf0d03a9ee63ce0b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af229024ef8f86d81e376205c1a5a9ee5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af229024ef8f86d81e376205c1a5a9ee5"></a>
-QAction * </td><td class="memItemRight" valign="bottom"><b>actionQuit</b></td></tr>
-<tr class="separator:af229024ef8f86d81e376205c1a5a9ee5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a77d713a73993a0942c43c083168f17e9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a77d713a73993a0942c43c083168f17e9"></a>
-QAction * </td><td class="memItemRight" valign="bottom"><b>actionSelection_Info_file</b></td></tr>
-<tr class="separator:a77d713a73993a0942c43c083168f17e9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa71af6efef796a61c728993c3a675636"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa71af6efef796a61c728993c3a675636"></a>
-QAction * </td><td class="memItemRight" valign="bottom"><b>actionExtent</b></td></tr>
-<tr class="separator:aa71af6efef796a61c728993c3a675636"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6600dd3bdd3d55e535659e4a4096ea48"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6600dd3bdd3d55e535659e4a4096ea48"></a>
-QWidget * </td><td class="memItemRight" valign="bottom"><b>centralWidget</b></td></tr>
-<tr class="separator:a6600dd3bdd3d55e535659e4a4096ea48"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a649287f742c9a33b8444116dccb1b72b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a649287f742c9a33b8444116dccb1b72b"></a>
-QVBoxLayout * </td><td class="memItemRight" valign="bottom"><b>verticalLayout</b></td></tr>
-<tr class="separator:a649287f742c9a33b8444116dccb1b72b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a13404ee3b30e38230383dd765a5eec4a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a13404ee3b30e38230383dd765a5eec4a"></a>
-QTabWidget * </td><td class="memItemRight" valign="bottom"><b>tabWidget</b></td></tr>
-<tr class="separator:a13404ee3b30e38230383dd765a5eec4a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a97e497a37904b5538bba9c218f40cb58"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a97e497a37904b5538bba9c218f40cb58"></a>
-QWidget * </td><td class="memItemRight" valign="bottom"><b>tab</b></td></tr>
-<tr class="separator:a97e497a37904b5538bba9c218f40cb58"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afbe60c634b3214ee76ff9e1fa70c7801"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afbe60c634b3214ee76ff9e1fa70c7801"></a>
-QVBoxLayout * </td><td class="memItemRight" valign="bottom"><b>verticalLayout_2</b></td></tr>
-<tr class="separator:afbe60c634b3214ee76ff9e1fa70c7801"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acbbc615e662a726cd71cabd62c7d2a70"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acbbc615e662a726cd71cabd62c7d2a70"></a>
-QGridLayout * </td><td class="memItemRight" valign="bottom"><b>gridLayout_2</b></td></tr>
-<tr class="separator:acbbc615e662a726cd71cabd62c7d2a70"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab8441da46ea0343bc6ad8f05e2e1c270"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab8441da46ea0343bc6ad8f05e2e1c270"></a>
-QSpacerItem * </td><td class="memItemRight" valign="bottom"><b>horizontalSpacer_3</b></td></tr>
-<tr class="separator:ab8441da46ea0343bc6ad8f05e2e1c270"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aca97445f66e25e0819038ec3c7b7c129"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aca97445f66e25e0819038ec3c7b7c129"></a>
-QListWidget * </td><td class="memItemRight" valign="bottom"><b>listWidget_input</b></td></tr>
-<tr class="separator:aca97445f66e25e0819038ec3c7b7c129"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af0ed1aaea955dfef1d84b92e2723769d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af0ed1aaea955dfef1d84b92e2723769d"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label</b></td></tr>
-<tr class="separator:af0ed1aaea955dfef1d84b92e2723769d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ade2b29a951ec97479a76b77481982472"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ade2b29a951ec97479a76b77481982472"></a>
-QToolButton * </td><td class="memItemRight" valign="bottom"><b>toolButton_input</b></td></tr>
-<tr class="separator:ade2b29a951ec97479a76b77481982472"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0244a06f306ce55b10f9d3cc97be18e8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0244a06f306ce55b10f9d3cc97be18e8"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>lry</b></td></tr>
-<tr class="separator:a0244a06f306ce55b10f9d3cc97be18e8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7b4ef3f31d735e9d9e3a78b152c7a43b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7b4ef3f31d735e9d9e3a78b152c7a43b"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>uly</b></td></tr>
-<tr class="separator:a7b4ef3f31d735e9d9e3a78b152c7a43b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2f5576686ce98bcc41bd1b1eca07e56a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2f5576686ce98bcc41bd1b1eca07e56a"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_2</b></td></tr>
-<tr class="separator:a2f5576686ce98bcc41bd1b1eca07e56a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1662d5e0a54ac7f38c5ab5d991f4ce14"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1662d5e0a54ac7f38c5ab5d991f4ce14"></a>
-QSpacerItem * </td><td class="memItemRight" valign="bottom"><b>horizontalSpacer_2</b></td></tr>
-<tr class="separator:a1662d5e0a54ac7f38c5ab5d991f4ce14"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a72b0851f6a34cfe6b9875edeac284d1f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a72b0851f6a34cfe6b9875edeac284d1f"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>lrx</b></td></tr>
-<tr class="separator:a72b0851f6a34cfe6b9875edeac284d1f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a05c1a490d770856a4a3af1563e2c660a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a05c1a490d770856a4a3af1563e2c660a"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>ulx</b></td></tr>
-<tr class="separator:a05c1a490d770856a4a3af1563e2c660a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a953dcd0e658a0903339e2ef3c94d4e7e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a953dcd0e658a0903339e2ef3c94d4e7e"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_4</b></td></tr>
-<tr class="separator:a953dcd0e658a0903339e2ef3c94d4e7e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a03b8709208e6996236604b2cde800390"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a03b8709208e6996236604b2cde800390"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>extent</b></td></tr>
-<tr class="separator:a03b8709208e6996236604b2cde800390"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a53306da61a2245541d184a47245944cd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a53306da61a2245541d184a47245944cd"></a>
-QToolButton * </td><td class="memItemRight" valign="bottom"><b>toolButton_extent</b></td></tr>
-<tr class="separator:a53306da61a2245541d184a47245944cd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1e6564e567db2242a5ff37cff57bc1d4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1e6564e567db2242a5ff37cff57bc1d4"></a>
-QWidget * </td><td class="memItemRight" valign="bottom"><b>tab_2</b></td></tr>
-<tr class="separator:a1e6564e567db2242a5ff37cff57bc1d4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a87e310470e3a3ad29981f1166af9be7f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a87e310470e3a3ad29981f1166af9be7f"></a>
-QGridLayout * </td><td class="memItemRight" valign="bottom"><b>gridLayout_4</b></td></tr>
-<tr class="separator:a87e310470e3a3ad29981f1166af9be7f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a986c0329937b0114c287180b96a6ff6b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a986c0329937b0114c287180b96a6ff6b"></a>
-QSpacerItem * </td><td class="memItemRight" valign="bottom"><b>verticalSpacer_3</b></td></tr>
-<tr class="separator:a986c0329937b0114c287180b96a6ff6b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae3da2273c5f6f94c4d49561cc860f97b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae3da2273c5f6f94c4d49561cc860f97b"></a>
-QComboBox * </td><td class="memItemRight" valign="bottom"><b>resample</b></td></tr>
-<tr class="separator:ae3da2273c5f6f94c4d49561cc860f97b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a318a53712b4ddbe8e627a9744d3a0a00"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a318a53712b4ddbe8e627a9744d3a0a00"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_18</b></td></tr>
-<tr class="separator:a318a53712b4ddbe8e627a9744d3a0a00"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aad058591c79a610b3cee046f63d1778e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aad058591c79a610b3cee046f63d1778e"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_17</b></td></tr>
-<tr class="separator:aad058591c79a610b3cee046f63d1778e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6b80df24ad136b865c5d89a20d5bb2ec"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6b80df24ad136b865c5d89a20d5bb2ec"></a>
-QComboBox * </td><td class="memItemRight" valign="bottom"><b>crule</b></td></tr>
-<tr class="separator:a6b80df24ad136b865c5d89a20d5bb2ec"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8ca10771e840725caeb3f43ee7d7858b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8ca10771e840725caeb3f43ee7d7858b"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_19</b></td></tr>
-<tr class="separator:a8ca10771e840725caeb3f43ee7d7858b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab1c6584a6a7b602d2b1b5a32db95eaa7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab1c6584a6a7b602d2b1b5a32db95eaa7"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>cband</b></td></tr>
-<tr class="separator:ab1c6584a6a7b602d2b1b5a32db95eaa7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad396eaa8d855b13559c50e02164b8325"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad396eaa8d855b13559c50e02164b8325"></a>
-QGroupBox * </td><td class="memItemRight" valign="bottom"><b>groupBox</b></td></tr>
-<tr class="separator:ad396eaa8d855b13559c50e02164b8325"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a183b845e444a43e0be1cd9f5be22c359"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a183b845e444a43e0be1cd9f5be22c359"></a>
-QGridLayout * </td><td class="memItemRight" valign="bottom"><b>gridLayout_3</b></td></tr>
-<tr class="separator:a183b845e444a43e0be1cd9f5be22c359"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5512eae4640544a462d1973743e6532b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5512eae4640544a462d1973743e6532b"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_21</b></td></tr>
-<tr class="separator:a5512eae4640544a462d1973743e6532b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abf0cc3cdcf78e05d41d5d80916bbf7ce"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abf0cc3cdcf78e05d41d5d80916bbf7ce"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>srcnodata</b></td></tr>
-<tr class="separator:abf0cc3cdcf78e05d41d5d80916bbf7ce"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a59690f12b04136e7cb2278d9de865e73"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a59690f12b04136e7cb2278d9de865e73"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_23</b></td></tr>
-<tr class="separator:a59690f12b04136e7cb2278d9de865e73"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac5535fb6244ecc9af33991a3309a93a0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac5535fb6244ecc9af33991a3309a93a0"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_22</b></td></tr>
-<tr class="separator:ac5535fb6244ecc9af33991a3309a93a0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7cb993e55f48a7ea284055d7d26d2ca8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7cb993e55f48a7ea284055d7d26d2ca8"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>min</b></td></tr>
-<tr class="separator:a7cb993e55f48a7ea284055d7d26d2ca8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aff20afaa8f9943bea0f26a1e5b80a065"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aff20afaa8f9943bea0f26a1e5b80a065"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>max</b></td></tr>
-<tr class="separator:aff20afaa8f9943bea0f26a1e5b80a065"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2812ef8517ae9d0f250a2d39569b08a7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2812ef8517ae9d0f250a2d39569b08a7"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_20</b></td></tr>
-<tr class="separator:a2812ef8517ae9d0f250a2d39569b08a7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abcb71699e34ea39e15ab52a210d82f43"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abcb71699e34ea39e15ab52a210d82f43"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>bndnodata</b></td></tr>
-<tr class="separator:abcb71699e34ea39e15ab52a210d82f43"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac4a217e81b9707b402a58b7e55ed81e2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac4a217e81b9707b402a58b7e55ed81e2"></a>
-QSpacerItem * </td><td class="memItemRight" valign="bottom"><b>horizontalSpacer_4</b></td></tr>
-<tr class="separator:ac4a217e81b9707b402a58b7e55ed81e2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab70233e701808fd06001b2c59717d63b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab70233e701808fd06001b2c59717d63b"></a>
-QSpacerItem * </td><td class="memItemRight" valign="bottom"><b>horizontalSpacer_5</b></td></tr>
-<tr class="separator:ab70233e701808fd06001b2c59717d63b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a449fab77f12d72a810b50ec1768adcaa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a449fab77f12d72a810b50ec1768adcaa"></a>
-QWidget * </td><td class="memItemRight" valign="bottom"><b>tab_3</b></td></tr>
-<tr class="separator:a449fab77f12d72a810b50ec1768adcaa"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0802f681bf63ded0edff4bc7c1a6e9d4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0802f681bf63ded0edff4bc7c1a6e9d4"></a>
-QVBoxLayout * </td><td class="memItemRight" valign="bottom"><b>verticalLayout_3</b></td></tr>
-<tr class="separator:a0802f681bf63ded0edff4bc7c1a6e9d4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac4586abe48f0aabf940b0dc2df3772ed"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac4586abe48f0aabf940b0dc2df3772ed"></a>
-QGridLayout * </td><td class="memItemRight" valign="bottom"><b>gridLayout</b></td></tr>
-<tr class="separator:ac4586abe48f0aabf940b0dc2df3772ed"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab2f233a14d9b1c41ec685a9fe1c606b7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab2f233a14d9b1c41ec685a9fe1c606b7"></a>
-QSpacerItem * </td><td class="memItemRight" valign="bottom"><b>horizontalSpacer_6</b></td></tr>
-<tr class="separator:ab2f233a14d9b1c41ec685a9fe1c606b7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9687c8357009cfcf28517fa276ea1918"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9687c8357009cfcf28517fa276ea1918"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_7</b></td></tr>
-<tr class="separator:a9687c8357009cfcf28517fa276ea1918"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a85082b01c10e391194bc6e48c0d8cb28"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a85082b01c10e391194bc6e48c0d8cb28"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_14</b></td></tr>
-<tr class="separator:a85082b01c10e391194bc6e48c0d8cb28"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a24601dbd2cc80ac985454289af5ba4f7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a24601dbd2cc80ac985454289af5ba4f7"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>file</b></td></tr>
-<tr class="separator:a24601dbd2cc80ac985454289af5ba4f7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0130582ecf8dfbf621aa87f6d0d702f7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0130582ecf8dfbf621aa87f6d0d702f7"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_10</b></td></tr>
-<tr class="separator:a0130582ecf8dfbf621aa87f6d0d702f7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a29d5ce90df70e771627c460f7618444c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a29d5ce90df70e771627c460f7618444c"></a>
-QComboBox * </td><td class="memItemRight" valign="bottom"><b>oformat</b></td></tr>
-<tr class="separator:a29d5ce90df70e771627c460f7618444c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aacb80f899e57d6b0ead98c016786181f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aacb80f899e57d6b0ead98c016786181f"></a>
-QComboBox * </td><td class="memItemRight" valign="bottom"><b>interleaved</b></td></tr>
-<tr class="separator:aacb80f899e57d6b0ead98c016786181f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abbe5a2168615ca342d06286db75927bc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abbe5a2168615ca342d06286db75927bc"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_9</b></td></tr>
-<tr class="separator:abbe5a2168615ca342d06286db75927bc"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a783887ea0ca8c4763cebe24749b26909"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a783887ea0ca8c4763cebe24749b26909"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>dx</b></td></tr>
-<tr class="separator:a783887ea0ca8c4763cebe24749b26909"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aae1122bf5c5f6daf310a93072a5eb72a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aae1122bf5c5f6daf310a93072a5eb72a"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_8</b></td></tr>
-<tr class="separator:aae1122bf5c5f6daf310a93072a5eb72a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3c75bb276de75b3e98e7db39e4a9e190"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3c75bb276de75b3e98e7db39e4a9e190"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_13</b></td></tr>
-<tr class="separator:a3c75bb276de75b3e98e7db39e4a9e190"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af8e8e32f6a5a0ce9327728cb0e29d8c4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af8e8e32f6a5a0ce9327728cb0e29d8c4"></a>
-QToolButton * </td><td class="memItemRight" valign="bottom"><b>toolButton_ct</b></td></tr>
-<tr class="separator:af8e8e32f6a5a0ce9327728cb0e29d8c4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a98ba6b67118efbc43442a8486bc0401f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a98ba6b67118efbc43442a8486bc0401f"></a>
-QComboBox * </td><td class="memItemRight" valign="bottom"><b>compressed</b></td></tr>
-<tr class="separator:a98ba6b67118efbc43442a8486bc0401f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1df694de9f13a0ef3efae2c9aa495464"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1df694de9f13a0ef3efae2c9aa495464"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_12</b></td></tr>
-<tr class="separator:a1df694de9f13a0ef3efae2c9aa495464"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a22df1f839ef6e572270af38e1041b466"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a22df1f839ef6e572270af38e1041b466"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>ct</b></td></tr>
-<tr class="separator:a22df1f839ef6e572270af38e1041b466"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abeaf6128b140b9fb7dd5323545c39aa6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abeaf6128b140b9fb7dd5323545c39aa6"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>output</b></td></tr>
-<tr class="separator:abeaf6128b140b9fb7dd5323545c39aa6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae414e3be8e98c0fb2bd68eb04ba6a557"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae414e3be8e98c0fb2bd68eb04ba6a557"></a>
-QToolButton * </td><td class="memItemRight" valign="bottom"><b>toolButton_output</b></td></tr>
-<tr class="separator:ae414e3be8e98c0fb2bd68eb04ba6a557"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac10ed68694c23da02ddc0ceacd54ef01"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac10ed68694c23da02ddc0ceacd54ef01"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_6</b></td></tr>
-<tr class="separator:ac10ed68694c23da02ddc0ceacd54ef01"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae09ab268d64ef88053d9274a1db7d809"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae09ab268d64ef88053d9274a1db7d809"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>a_srs</b></td></tr>
-<tr class="separator:ae09ab268d64ef88053d9274a1db7d809"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afe8180cf76469366b43fadd603c1b1f7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afe8180cf76469366b43fadd603c1b1f7"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_15</b></td></tr>
-<tr class="separator:afe8180cf76469366b43fadd603c1b1f7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8792d3c1f86d599e980b8925b70de355"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8792d3c1f86d599e980b8925b70de355"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>dy</b></td></tr>
-<tr class="separator:a8792d3c1f86d599e980b8925b70de355"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af121c391d64554ab2602ae6174e03d95"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af121c391d64554ab2602ae6174e03d95"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_5</b></td></tr>
-<tr class="separator:af121c391d64554ab2602ae6174e03d95"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8c901d77b89b7313d2b6918936635b6d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8c901d77b89b7313d2b6918936635b6d"></a>
-QCheckBox * </td><td class="memItemRight" valign="bottom"><b>tiled</b></td></tr>
-<tr class="separator:a8c901d77b89b7313d2b6918936635b6d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a34a7316dcf81648b6bf02a45db6bfb65"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a34a7316dcf81648b6bf02a45db6bfb65"></a>
-QComboBox * </td><td class="memItemRight" valign="bottom"><b>otype</b></td></tr>
-<tr class="separator:a34a7316dcf81648b6bf02a45db6bfb65"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5137915fc613f86173da699e3fc07cc5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5137915fc613f86173da699e3fc07cc5"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_11</b></td></tr>
-<tr class="separator:a5137915fc613f86173da699e3fc07cc5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6dee70ca9d545f8ff0d05cc9dc3123c5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6dee70ca9d545f8ff0d05cc9dc3123c5"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>dstnodata</b></td></tr>
-<tr class="separator:a6dee70ca9d545f8ff0d05cc9dc3123c5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7090df769df333313a687a987792883c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7090df769df333313a687a987792883c"></a>
-QToolButton * </td><td class="memItemRight" valign="bottom"><b>toolButton_file</b></td></tr>
-<tr class="separator:a7090df769df333313a687a987792883c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a253fbc5b44941384321b7c58cf96cc65"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a253fbc5b44941384321b7c58cf96cc65"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_3</b></td></tr>
-<tr class="separator:a253fbc5b44941384321b7c58cf96cc65"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a56fc5cc3db81beb7a6d527557b5a197d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a56fc5cc3db81beb7a6d527557b5a197d"></a>
-QWidget * </td><td class="memItemRight" valign="bottom"><b>tab_4</b></td></tr>
-<tr class="separator:a56fc5cc3db81beb7a6d527557b5a197d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa1c14de256d44c85dff296049ed3a2c4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa1c14de256d44c85dff296049ed3a2c4"></a>
-QVBoxLayout * </td><td class="memItemRight" valign="bottom"><b>verticalLayout_5</b></td></tr>
-<tr class="separator:aa1c14de256d44c85dff296049ed3a2c4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a41f23b25032f2c3cda8f6493923a262b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a41f23b25032f2c3cda8f6493923a262b"></a>
-QVBoxLayout * </td><td class="memItemRight" valign="bottom"><b>verticalLayout_4</b></td></tr>
-<tr class="separator:a41f23b25032f2c3cda8f6493923a262b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a05a2b7e86c6eb260486ded962a789cf4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a05a2b7e86c6eb260486ded962a789cf4"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_24</b></td></tr>
-<tr class="separator:a05a2b7e86c6eb260486ded962a789cf4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af2f8779d650040be1ffaa36d852876c7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af2f8779d650040be1ffaa36d852876c7"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>commandLineEdit</b></td></tr>
-<tr class="separator:af2f8779d650040be1ffaa36d852876c7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a04b9a0d777a586619a27b9c0856f67cd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a04b9a0d777a586619a27b9c0856f67cd"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_25</b></td></tr>
-<tr class="separator:a04b9a0d777a586619a27b9c0856f67cd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a98553b2cd47e2b9d117d678600bc4881"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a98553b2cd47e2b9d117d678600bc4881"></a>
-QPlainTextEdit * </td><td class="memItemRight" valign="bottom"><b>consoleEdit</b></td></tr>
-<tr class="separator:a98553b2cd47e2b9d117d678600bc4881"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af7b3fe6a3f100795153cd504ce0b86bf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af7b3fe6a3f100795153cd504ce0b86bf"></a>
-QSpacerItem * </td><td class="memItemRight" valign="bottom"><b>verticalSpacer_2</b></td></tr>
-<tr class="separator:af7b3fe6a3f100795153cd504ce0b86bf"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9ee21d2c2bc000e7a8ba931bacfc5a69"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9ee21d2c2bc000e7a8ba931bacfc5a69"></a>
-QHBoxLayout * </td><td class="memItemRight" valign="bottom"><b>horizontalLayout_2</b></td></tr>
-<tr class="separator:a9ee21d2c2bc000e7a8ba931bacfc5a69"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8285ba7a77c4d2649c9d338bb3288401"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8285ba7a77c4d2649c9d338bb3288401"></a>
-QToolButton * </td><td class="memItemRight" valign="bottom"><b>toolButton_Run</b></td></tr>
-<tr class="separator:a8285ba7a77c4d2649c9d338bb3288401"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae189b5a48fa6e6f4b6775f1f832afe9c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae189b5a48fa6e6f4b6775f1f832afe9c"></a>
-QSpacerItem * </td><td class="memItemRight" valign="bottom"><b>horizontalSpacer</b></td></tr>
-<tr class="separator:ae189b5a48fa6e6f4b6775f1f832afe9c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a18a1a9c96f3a40914574d293b6a652a9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a18a1a9c96f3a40914574d293b6a652a9"></a>
-QToolButton * </td><td class="memItemRight" valign="bottom"><b>toolButton_defaults</b></td></tr>
-<tr class="separator:a18a1a9c96f3a40914574d293b6a652a9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a502a50d7dc22415f511336bdfb4318b9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a502a50d7dc22415f511336bdfb4318b9"></a>
-QMenuBar * </td><td class="memItemRight" valign="bottom"><b>menuBar</b></td></tr>
-<tr class="separator:a502a50d7dc22415f511336bdfb4318b9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1663312349b8d12c8d108637bbbc856d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1663312349b8d12c8d108637bbbc856d"></a>
-QMenu * </td><td class="memItemRight" valign="bottom"><b>menuFile</b></td></tr>
-<tr class="separator:a1663312349b8d12c8d108637bbbc856d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abca26371605d7c5235fab5188d4bdcf7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abca26371605d7c5235fab5188d4bdcf7"></a>
-QToolBar * </td><td class="memItemRight" valign="bottom"><b>mainToolBar</b></td></tr>
-<tr class="separator:abca26371605d7c5235fab5188d4bdcf7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afa919f3af6f2f526a70f1fa331f63724"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afa919f3af6f2f526a70f1fa331f63724"></a>
-QStatusBar * </td><td class="memItemRight" valign="bottom"><b>statusBar</b></td></tr>
-<tr class="separator:afa919f3af6f2f526a70f1fa331f63724"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a31435a8f54c77c0b475ec5fad844d449"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a31435a8f54c77c0b475ec5fad844d449"></a>
-QAction * </td><td class="memItemRight" valign="bottom"><b>actionInput</b></td></tr>
-<tr class="separator:a31435a8f54c77c0b475ec5fad844d449"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a986bbe5b2e5194ca4359bcf644a385ae"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a986bbe5b2e5194ca4359bcf644a385ae"></a>
-QAction * </td><td class="memItemRight" valign="bottom"><b>actionOutput</b></td></tr>
-<tr class="separator:a986bbe5b2e5194ca4359bcf644a385ae"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad68c49f53c306e35cdb9bf6ecd4044ac"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad68c49f53c306e35cdb9bf6ecd4044ac"></a>
-QListWidget * </td><td class="memItemRight" valign="bottom"><b>listWidget_band</b></td></tr>
-<tr class="separator:ad68c49f53c306e35cdb9bf6ecd4044ac"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a72cc3989b0102c6ae970a431e271bf08"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a72cc3989b0102c6ae970a431e271bf08"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_16</b></td></tr>
-<tr class="separator:a72cc3989b0102c6ae970a431e271bf08"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a31508f09b3c486787c83b94aab2d2564"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a31508f09b3c486787c83b94aab2d2564"></a>
-QToolButton * </td><td class="memItemRight" valign="bottom"><b>toolButton</b></td></tr>
-<tr class="separator:a31508f09b3c486787c83b94aab2d2564"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab01ef3bec5f958312898455ce66c7723"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab01ef3bec5f958312898455ce66c7723"></a>
-QSpacerItem * </td><td class="memItemRight" valign="bottom"><b>horizontalSpacer_9</b></td></tr>
-<tr class="separator:ab01ef3bec5f958312898455ce66c7723"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2c53f7f2e3106a4225d5be295e1315ae"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2c53f7f2e3106a4225d5be295e1315ae"></a>
-QSpacerItem * </td><td class="memItemRight" valign="bottom"><b>verticalSpacer</b></td></tr>
-<tr class="separator:a2c53f7f2e3106a4225d5be295e1315ae"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a13a8029dca885a0a01ea02f528940fab"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a13a8029dca885a0a01ea02f528940fab"></a>
-QSpacerItem * </td><td class="memItemRight" valign="bottom"><b>horizontalSpacer_8</b></td></tr>
-<tr class="separator:a13a8029dca885a0a01ea02f528940fab"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a22505456c3a4a7c6de5270b57de2c80d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a22505456c3a4a7c6de5270b57de2c80d"></a>
-QRadioButton * </td><td class="memItemRight" valign="bottom"><b>autoscale</b></td></tr>
-<tr class="separator:a22505456c3a4a7c6de5270b57de2c80d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad8c611cdd69ea67faec07751c3b8b6e8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad8c611cdd69ea67faec07751c3b8b6e8"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>offset</b></td></tr>
-<tr class="separator:ad8c611cdd69ea67faec07751c3b8b6e8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a39c33b001fc29ed0099bb8914fd91082"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a39c33b001fc29ed0099bb8914fd91082"></a>
-QRadioButton * </td><td class="memItemRight" valign="bottom"><b>manual</b></td></tr>
-<tr class="separator:a39c33b001fc29ed0099bb8914fd91082"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac2d7c1d984e76c0e28db04d9deb6ec64"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac2d7c1d984e76c0e28db04d9deb6ec64"></a>
-QRadioButton * </td><td class="memItemRight" valign="bottom"><b>noscale</b></td></tr>
-<tr class="separator:ac2d7c1d984e76c0e28db04d9deb6ec64"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a63919cdecc2e3eb912a7ffc81652adab"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a63919cdecc2e3eb912a7ffc81652adab"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>scale</b></td></tr>
-<tr class="separator:a63919cdecc2e3eb912a7ffc81652adab"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adab70055ed97a7fda442dd160d86a886"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adab70055ed97a7fda442dd160d86a886"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>as_from</b></td></tr>
-<tr class="separator:adab70055ed97a7fda442dd160d86a886"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a20f0df22fcdfef9fe9554f1d962d7b1f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a20f0df22fcdfef9fe9554f1d962d7b1f"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>as_to</b></td></tr>
-<tr class="separator:a20f0df22fcdfef9fe9554f1d962d7b1f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a99361df7cfa0c2bcc7edc18d8465bd8b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a99361df7cfa0c2bcc7edc18d8465bd8b"></a>
-QSpacerItem * </td><td class="memItemRight" valign="bottom"><b>horizontalSpacer_11</b></td></tr>
-<tr class="separator:a99361df7cfa0c2bcc7edc18d8465bd8b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab18937cd7bb632b9c8f9cd260a8294f1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab18937cd7bb632b9c8f9cd260a8294f1"></a>
-QSpacerItem * </td><td class="memItemRight" valign="bottom"><b>horizontalSpacer_10</b></td></tr>
-<tr class="separator:ab18937cd7bb632b9c8f9cd260a8294f1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5db9c132a93e3153c40d227f6edb7fbc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5db9c132a93e3153c40d227f6edb7fbc"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>nodata</b></td></tr>
-<tr class="separator:a5db9c132a93e3153c40d227f6edb7fbc"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae35e3adae2de50d8cd252c506e98ddc9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae35e3adae2de50d8cd252c506e98ddc9"></a>
-QSpacerItem * </td><td class="memItemRight" valign="bottom"><b>horizontalSpacer_7</b></td></tr>
-<tr class="separator:ae35e3adae2de50d8cd252c506e98ddc9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6fb1003e5e276a4014555669f7ae7bff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6fb1003e5e276a4014555669f7ae7bff"></a>
-QButtonGroup * </td><td class="memItemRight" valign="bottom"><b>buttonGroup</b></td></tr>
-<tr class="separator:a6fb1003e5e276a4014555669f7ae7bff"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa77983563a18cda5d8ba564d1600083e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa77983563a18cda5d8ba564d1600083e"></a>
-QAction * </td><td class="memItemRight" valign="bottom"><b>actionReference</b></td></tr>
-<tr class="separator:aa77983563a18cda5d8ba564d1600083e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a512e66e9f4479ec227af409963880f1d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a512e66e9f4479ec227af409963880f1d"></a>
-QAction * </td><td class="memItemRight" valign="bottom"><b>actionMask</b></td></tr>
-<tr class="separator:a512e66e9f4479ec227af409963880f1d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5b18042273fd8aa43ae4af65441935e0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5b18042273fd8aa43ae4af65441935e0"></a>
-QAction * </td><td class="memItemRight" valign="bottom"><b>actionColor_table</b></td></tr>
-<tr class="separator:a5b18042273fd8aa43ae4af65441935e0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6356443dc067ef5164e2f4dc834e640b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6356443dc067ef5164e2f4dc834e640b"></a>
-QWidget * </td><td class="memItemRight" valign="bottom"><b>layoutWidget</b></td></tr>
-<tr class="separator:a6356443dc067ef5164e2f4dc834e640b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6897c356e2adde5d97027f8d26331357"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6897c356e2adde5d97027f8d26331357"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>lclass</b></td></tr>
-<tr class="separator:a6897c356e2adde5d97027f8d26331357"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af3f2ade02aa3aefff983b4b8db9d0e4a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af3f2ade02aa3aefff983b4b8db9d0e4a"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>input</b></td></tr>
-<tr class="separator:af3f2ade02aa3aefff983b4b8db9d0e4a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af4463b780f779d1073d0509831b31803"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af4463b780f779d1073d0509831b31803"></a>
-QCheckBox * </td><td class="memItemRight" valign="bottom"><b>confusion</b></td></tr>
-<tr class="separator:af4463b780f779d1073d0509831b31803"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8417f8874fd5a3caa6b0e31a66df0d19"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8417f8874fd5a3caa6b0e31a66df0d19"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>mask</b></td></tr>
-<tr class="separator:a8417f8874fd5a3caa6b0e31a66df0d19"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af2473f8d42df45ca53d95a61ffb8885d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af2473f8d42df45ca53d95a61ffb8885d"></a>
-QToolButton * </td><td class="memItemRight" valign="bottom"><b>toolButton_mask</b></td></tr>
-<tr class="separator:af2473f8d42df45ca53d95a61ffb8885d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abb84fc9a53c22baccd1b7015ae639c28"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abb84fc9a53c22baccd1b7015ae639c28"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>msknodata</b></td></tr>
-<tr class="separator:abb84fc9a53c22baccd1b7015ae639c28"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aba74df373b63053ef7f9765ae814d577"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aba74df373b63053ef7f9765ae814d577"></a>
-QSpacerItem * </td><td class="memItemRight" valign="bottom"><b>horizontalSpacer_15</b></td></tr>
-<tr class="separator:aba74df373b63053ef7f9765ae814d577"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5fc91cdea93e734b8ff54b4f45d91591"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5fc91cdea93e734b8ff54b4f45d91591"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>nclass</b></td></tr>
-<tr class="separator:a5fc91cdea93e734b8ff54b4f45d91591"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2a80073e5017dba745c782bfe61209a7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2a80073e5017dba745c782bfe61209a7"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>lref</b></td></tr>
-<tr class="separator:a2a80073e5017dba745c782bfe61209a7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae6b649c212c78ef9bb66a108da7c50fd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae6b649c212c78ef9bb66a108da7c50fd"></a>
-QLabel * </td><td class="memItemRight" valign="bottom"><b>label_reference</b></td></tr>
-<tr class="separator:ae6b649c212c78ef9bb66a108da7c50fd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aff982475d8c004b4ca25d739438760ca"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aff982475d8c004b4ca25d739438760ca"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
-<tr class="separator:aff982475d8c004b4ca25d739438760ca"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab8887c0c124789e7457e4f5fffef5680"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab8887c0c124789e7457e4f5fffef5680"></a>
-QToolButton * </td><td class="memItemRight" valign="bottom"><b>toolButton_reference</b></td></tr>
-<tr class="separator:ab8887c0c124789e7457e4f5fffef5680"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a240c41f3553dbfbe7250c740a032da3e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a240c41f3553dbfbe7250c740a032da3e"></a>
-QComboBox * </td><td class="memItemRight" valign="bottom"><b>f</b></td></tr>
-<tr class="separator:a240c41f3553dbfbe7250c740a032da3e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a78b00a5bdda86ec7892a7d1e2e5ee87b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a78b00a5bdda86ec7892a7d1e2e5ee87b"></a>
-QWidget * </td><td class="memItemRight" valign="bottom"><b>widget</b></td></tr>
-<tr class="separator:a78b00a5bdda86ec7892a7d1e2e5ee87b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a94fb1c65fd7dacec12b5a47af58479a5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a94fb1c65fd7dacec12b5a47af58479a5"></a>
-QToolButton * </td><td class="memItemRight" valign="bottom"><b>commandLinkButtonPrepareTable</b></td></tr>
-<tr class="separator:a94fb1c65fd7dacec12b5a47af58479a5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a61eb000c4b462e0380e46eded3a4c830"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a61eb000c4b462e0380e46eded3a4c830"></a>
-QTableView * </td><td class="memItemRight" valign="bottom"><b>tableView_labels</b></td></tr>
-<tr class="separator:a61eb000c4b462e0380e46eded3a4c830"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0af2d7d014e5aaa05be04d2bd0c4d53d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0af2d7d014e5aaa05be04d2bd0c4d53d"></a>
-QVBoxLayout * </td><td class="memItemRight" valign="bottom"><b>verticalLayout_6</b></td></tr>
-<tr class="separator:a0af2d7d014e5aaa05be04d2bd0c4d53d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae7104d878681f568e492c5bd0f653157"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae7104d878681f568e492c5bd0f653157"></a>
-QHBoxLayout * </td><td class="memItemRight" valign="bottom"><b>horizontalLayout</b></td></tr>
-<tr class="separator:ae7104d878681f568e492c5bd0f653157"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abfe8db90f18bab5814359c7f3367baa0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abfe8db90f18bab5814359c7f3367baa0"></a>
-QPushButton * </td><td class="memItemRight" valign="bottom"><b>pushButton_run</b></td></tr>
-<tr class="separator:abfe8db90f18bab5814359c7f3367baa0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8f4a50315ae4629ea4ae5df781018699"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8f4a50315ae4629ea4ae5df781018699"></a>
-QPushButton * </td><td class="memItemRight" valign="bottom"><b>pushButton_restore</b></td></tr>
-<tr class="separator:a8f4a50315ae4629ea4ae5df781018699"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8b8cf9fae10935c6c8c2ad4f9ce09780"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8b8cf9fae10935c6c8c2ad4f9ce09780"></a>
-QAction * </td><td class="memItemRight" valign="bottom"><b>actionSample</b></td></tr>
-<tr class="separator:a8b8cf9fae10935c6c8c2ad4f9ce09780"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a197ed7a89b637eed613b793a945afdc7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a197ed7a89b637eed613b793a945afdc7"></a>
-QGridLayout * </td><td class="memItemRight" valign="bottom"><b>gridLayout_5</b></td></tr>
-<tr class="separator:a197ed7a89b637eed613b793a945afdc7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae4fc4a01984f4958d08903a46ce7509a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae4fc4a01984f4958d08903a46ce7509a"></a>
-QHBoxLayout * </td><td class="memItemRight" valign="bottom"><b>horizontalLayout_3</b></td></tr>
-<tr class="separator:ae4fc4a01984f4958d08903a46ce7509a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adbd6c33eda93409d23853400a98dfc1f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adbd6c33eda93409d23853400a98dfc1f"></a>
-QHBoxLayout * </td><td class="memItemRight" valign="bottom"><b>horizontalLayout_4</b></td></tr>
-<tr class="separator:adbd6c33eda93409d23853400a98dfc1f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a46aefd5319c7da5010e6a94e54b971d7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a46aefd5319c7da5010e6a94e54b971d7"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>sample</b></td></tr>
-<tr class="separator:a46aefd5319c7da5010e6a94e54b971d7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0730ef2aea01c2cc23c1b14a46fd1f73"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0730ef2aea01c2cc23c1b14a46fd1f73"></a>
-QToolButton * </td><td class="memItemRight" valign="bottom"><b>toolButton_sample</b></td></tr>
-<tr class="separator:a0730ef2aea01c2cc23c1b14a46fd1f73"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aaff3956ce218d4705eade6970756b0c7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaff3956ce218d4705eade6970756b0c7"></a>
-QCheckBox * </td><td class="memItemRight" valign="bottom"><b>polygon</b></td></tr>
-<tr class="separator:aaff3956ce218d4705eade6970756b0c7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa0b057737b6ce6aafa0d6851dae71403"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa0b057737b6ce6aafa0d6851dae71403"></a>
-QHBoxLayout * </td><td class="memItemRight" valign="bottom"><b>horizontalLayout_5</b></td></tr>
-<tr class="separator:aa0b057737b6ce6aafa0d6851dae71403"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0cbbe6cb509a39748725e2fa7149621c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0cbbe6cb509a39748725e2fa7149621c"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>bname</b></td></tr>
-<tr class="separator:a0cbbe6cb509a39748725e2fa7149621c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae238700e73e3dd998804a028b823216d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae238700e73e3dd998804a028b823216d"></a>
-QComboBox * </td><td class="memItemRight" valign="bottom"><b>rule</b></td></tr>
-<tr class="separator:ae238700e73e3dd998804a028b823216d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abff58f8857b2dce03c53d2e73c19fe44"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abff58f8857b2dce03c53d2e73c19fe44"></a>
-QToolButton * </td><td class="memItemRight" valign="bottom"><b>toolButton_createTable</b></td></tr>
-<tr class="separator:abff58f8857b2dce03c53d2e73c19fe44"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a241007acbe0ceabf194003e06b6d7dea"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a241007acbe0ceabf194003e06b6d7dea"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>threshold</b></td></tr>
-<tr class="separator:a241007acbe0ceabf194003e06b6d7dea"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad0581e2d63087e1a0a41a4055b9bb9fa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad0581e2d63087e1a0a41a4055b9bb9fa"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>cname</b></td></tr>
-<tr class="separator:ad0581e2d63087e1a0a41a4055b9bb9fa"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab49ec6265af01cb2efc6937271833edc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab49ec6265af01cb2efc6937271833edc"></a>
-QHBoxLayout * </td><td class="memItemRight" valign="bottom"><b>horizontalLayout_6</b></td></tr>
-<tr class="separator:ab49ec6265af01cb2efc6937271833edc"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4e5d2021459f39c979022c3b0631bf57"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4e5d2021459f39c979022c3b0631bf57"></a>
-QAction * </td><td class="memItemRight" valign="bottom"><b>actionTraining</b></td></tr>
-<tr class="separator:a4e5d2021459f39c979022c3b0631bf57"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa4d1122633b0a9bef92c1c2dc5066561"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa4d1122633b0a9bef92c1c2dc5066561"></a>
-QToolButton * </td><td class="memItemRight" valign="bottom"><b>toolButton_training</b></td></tr>
-<tr class="separator:aa4d1122633b0a9bef92c1c2dc5066561"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad78262d99bcc37fabdf3ddd623ab6976"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad78262d99bcc37fabdf3ddd623ab6976"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>training</b></td></tr>
-<tr class="separator:ad78262d99bcc37fabdf3ddd623ab6976"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aff8ee25a1615f462b64639744df73993"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aff8ee25a1615f462b64639744df73993"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>label</b></td></tr>
-<tr class="separator:aff8ee25a1615f462b64639744df73993"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a242883afffec0ee80fc73bb189e8f635"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a242883afffec0ee80fc73bb189e8f635"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>tln</b></td></tr>
-<tr class="separator:a242883afffec0ee80fc73bb189e8f635"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adf69068faed214d9746111f34193b0cc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adf69068faed214d9746111f34193b0cc"></a>
-QCommandLinkButton * </td><td class="memItemRight" valign="bottom"><b>commandLinkButtonPrepareTable</b></td></tr>
-<tr class="separator:adf69068faed214d9746111f34193b0cc"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0b94daa368f7d0045147e8881360eabc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0b94daa368f7d0045147e8881360eabc"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>cv</b></td></tr>
-<tr class="separator:a0b94daa368f7d0045147e8881360eabc"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a205cd33937d5f5499057dfb40345d620"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a205cd33937d5f5499057dfb40345d620"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>ccost</b></td></tr>
-<tr class="separator:a205cd33937d5f5499057dfb40345d620"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a41242ff48a25ddf15e858868e0c2a553"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a41242ff48a25ddf15e858868e0c2a553"></a>
-QComboBox * </td><td class="memItemRight" valign="bottom"><b>svmtype</b></td></tr>
-<tr class="separator:a41242ff48a25ddf15e858868e0c2a553"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a31bff91db266f21874b654b918c4cbf1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a31bff91db266f21874b654b918c4cbf1"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>gamma</b></td></tr>
-<tr class="separator:a31bff91db266f21874b654b918c4cbf1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8e011553af28c90d93097f6ceef83a5c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8e011553af28c90d93097f6ceef83a5c"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>coef0</b></td></tr>
-<tr class="separator:a8e011553af28c90d93097f6ceef83a5c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae8d217f6ef19479d3d7b873bc61d002c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae8d217f6ef19479d3d7b873bc61d002c"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>nu</b></td></tr>
-<tr class="separator:ae8d217f6ef19479d3d7b873bc61d002c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afe5762e2bac6134dedb576a95efa45b2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afe5762e2bac6134dedb576a95efa45b2"></a>
-QLineEdit * </td><td class="memItemRight" valign="bottom"><b>kd</b></td></tr>
-<tr class="separator:afe5762e2bac6134dedb576a95efa45b2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aeda674e59c4c35b006a519df57e58afd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeda674e59c4c35b006a519df57e58afd"></a>
-QComboBox * </td><td class="memItemRight" valign="bottom"><b>kerneltype</b></td></tr>
-<tr class="separator:aeda674e59c4c35b006a519df57e58afd"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="build-pkcomposite__gui-gcc-Debug_2ui__mainwindow_8h_source.html#l00039">39</a> of file <a class="el" href="build-pkcomposite__gui-gcc-Debug_2ui__mainwindow_8h_source.html">ui_mainwindow.h</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/qt/build-pkcomposite_gui-gcc-Debug/<a class="el" href="build-pkcomposite__gui-gcc-Debug_2ui__mainwindow_8h_source.html">ui_mainwindow.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classUi__MainWindow__inherit__graph.map b/doc/html/classUi__MainWindow__inherit__graph.map
deleted file mode 100644
index 1449060..0000000
--- a/doc/html/classUi__MainWindow__inherit__graph.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Ui_MainWindow" name="Ui_MainWindow">
-<area shape="rect" id="node2" href="$classUi_1_1MainWindow.html" title="Ui::MainWindow" alt="" coords="27,80,145,107"/>
-</map>
diff --git a/doc/html/classUi__MainWindow__inherit__graph.md5 b/doc/html/classUi__MainWindow__inherit__graph.md5
deleted file mode 100644
index 9625686..0000000
--- a/doc/html/classUi__MainWindow__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-19a10cc2bdf62b763527c8e3d8362501
\ No newline at end of file
diff --git a/doc/html/classUi__MainWindow__inherit__graph.png b/doc/html/classUi__MainWindow__inherit__graph.png
deleted file mode 100644
index c69c2ff..0000000
Binary files a/doc/html/classUi__MainWindow__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classVector2d-members.html b/doc/html/classVector2d-members.html
deleted file mode 100644
index 1bced18..0000000
--- a/doc/html/classVector2d-members.html
+++ /dev/null
@@ -1,101 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">Vector2d< T > Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classVector2d.html">Vector2d< T ></a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mymax</b>(int &x, int &y, double maxValue) const  (defined in <a class="el" href="classVector2d.html">Vector2d< T ></a>)</td><td class="entry"><a class="el" href="classVector2d.html">Vector2d< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>nCols</b>() const  (defined in <a class="el" href="classVector2d.html">Vector2d< T ></a>)</td><td class="entry"><a class="el" href="classVector2d.html">Vector2d< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>nRows</b>() const  (defined in <a class="el" href="classVector2d.html">Vector2d< T ></a>)</td><td class="entry"><a class="el" href="classVector2d.html">Vector2d< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator+=</b>(const Vector2d< T > &v1) (defined in <a class="el" href="classVector2d.html">Vector2d< T ></a>)</td><td class="entry"><a class="el" href="classVector2d.html">Vector2d< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator<<</b> (defined in <a class="el" href="classVector2d.html">Vector2d< T ></a>)</td><td class="entry"><a class="el" href="classVector2d.html">Vector2d< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator=</b>(const Vector2d< T > &v1) (defined in <a class="el" href="classVector2d.html">Vector2d< T ></a>)</td><td class="entry"><a class="el" href="classVector2d.html">Vector2d< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>resize</b>(int nrow) (defined in <a class="el" href="classVector2d.html">Vector2d< T ></a>)</td><td class="entry"><a class="el" href="classVector2d.html">Vector2d< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>resize</b>(int nrow, int ncol) (defined in <a class="el" href="classVector2d.html">Vector2d< T ></a>)</td><td class="entry"><a class="el" href="classVector2d.html">Vector2d< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>scale</b>(const std::vector< double > &scaleVector, const std::vector< double > &offsetVector, Vector2d< T > &scaledOutput) (defined in <a class="el" href="classVector2d.html">Vector2d< T ></a>)</td><td class="entry"><a class="el" href="classVector2d.html">Vector2d< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>scale</b>(const T lbound, const T ubound, std::vector< double > &scaleVector, std::vector< double > &offsetVector, Vector2d< T > &scaledOutput) (defined in <a class="el" href="classVector2d.html">Vector2d< T ></a>)</td><td class="entry"><a class="el" href="classVector2d.html">Vector2d< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>selectCol</b>(int col, std::vector< T > &output) const  (defined in <a class="el" href="classVector2d.html">Vector2d< T ></a>)</td><td class="entry"><a class="el" href="classVector2d.html">Vector2d< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>selectCol</b>(int col, T *output) const  (defined in <a class="el" href="classVector2d.html">Vector2d< T ></a>)</td><td class="entry"><a class="el" href="classVector2d.html">Vector2d< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>selectCol</b>(int col) (defined in <a class="el" href="classVector2d.html">Vector2d< T ></a>)</td><td class="entry"><a class="el" href="classVector2d.html">Vector2d< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>selectCols</b>(const std::list< int > &cols, Vector2d< T > &output) const  (defined in <a class="el" href="classVector2d.html">Vector2d< T ></a>)</td><td class="entry"><a class="el" href="classVector2d.html">Vector2d< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>selectCols</b>(const std::list< int > &cols) (defined in <a class="el" href="classVector2d.html">Vector2d< T ></a>)</td><td class="entry"><a class="el" href="classVector2d.html">Vector2d< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setMask</b>(const Vector2d< T > &mask, T msknodata, T nodata=0) (defined in <a class="el" href="classVector2d.html">Vector2d< T ></a>)</td><td class="entry"><a class="el" href="classVector2d.html">Vector2d< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>sort</b>(Vector2d< T > &output) (defined in <a class="el" href="classVector2d.html">Vector2d< T ></a>)</td><td class="entry"><a class="el" href="classVector2d.html">Vector2d< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>sum</b>(const Vector2d< T > &v1, const Vector2d< T > &v2) const  (defined in <a class="el" href="classVector2d.html">Vector2d< T ></a>)</td><td class="entry"><a class="el" href="classVector2d.html">Vector2d< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>sum</b>() const  (defined in <a class="el" href="classVector2d.html">Vector2d< T ></a>)</td><td class="entry"><a class="el" href="classVector2d.html">Vector2d< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>transpose</b>(Vector2d< T > &output) const  (defined in <a class="el" href="classVector2d.html">Vector2d< T ></a>)</td><td class="entry"><a class="el" href="classVector2d.html">Vector2d< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Vector2d</b>() (defined in <a class="el" href="classVector2d.html">Vector2d< T ></a>)</td><td class="entry"><a class="el" href="classVector2d.html">Vector2d< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>Vector2d</b>(const Vector2d< T > &v1) (defined in <a class="el" href="classVector2d.html">Vector2d< T ></a>)</td><td class="entry"><a class="el" href="classVector2d.html">Vector2d< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Vector2d</b>(int nrow) (defined in <a class="el" href="classVector2d.html">Vector2d< T ></a>)</td><td class="entry"><a class="el" href="classVector2d.html">Vector2d< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>Vector2d</b>(int nrow, int ncol) (defined in <a class="el" href="classVector2d.html">Vector2d< T ></a>)</td><td class="entry"><a class="el" href="classVector2d.html">Vector2d< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Vector2d</b>(int nrow, int ncol, const T &value) (defined in <a class="el" href="classVector2d.html">Vector2d< T ></a>)</td><td class="entry"><a class="el" href="classVector2d.html">Vector2d< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>Vector2d</b>(const gsl_matrix *gsl_m) (defined in <a class="el" href="classVector2d.html">Vector2d< T ></a>)</td><td class="entry"><a class="el" href="classVector2d.html">Vector2d< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~Vector2d</b>() (defined in <a class="el" href="classVector2d.html">Vector2d< T ></a>)</td><td class="entry"><a class="el" href="classVector2d.html">Vector2d< T ></a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classVector2d.html b/doc/html/classVector2d.html
deleted file mode 100644
index a7ef89a..0000000
--- a/doc/html/classVector2d.html
+++ /dev/null
@@ -1,181 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Vector2d< T > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#friends">Friends</a> |
-<a href="classVector2d-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">Vector2d< T > Class Template Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for Vector2d< T >:</div>
-<div class="dyncontent">
-<div class="center"><img src="classVector2d__inherit__graph.png" border="0" usemap="#Vector2d_3_01T_01_4_inherit__map" alt="Inheritance graph"/></div>
-<map name="Vector2d_3_01T_01_4_inherit__map" id="Vector2d_3_01T_01_4_inherit__map">
-<area shape="rect" id="node2" title="STL class. " alt="" coords="5,6,163,47"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for Vector2d< T >:</div>
-<div class="dyncontent">
-<div class="center"><img src="classVector2d__coll__graph.png" border="0" usemap="#Vector2d_3_01T_01_4_coll__map" alt="Collaboration graph"/></div>
-<map name="Vector2d_3_01T_01_4_coll__map" id="Vector2d_3_01T_01_4_coll__map">
-<area shape="rect" id="node2" title="STL class. " alt="" coords="5,97,163,138"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:ad6e5da56b0d0f6276a5dd80d94df5e78"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad6e5da56b0d0f6276a5dd80d94df5e78"></a>
- </td><td class="memItemRight" valign="bottom"><b>Vector2d</b> (const <a class="el" href="classVector2d.html">Vector2d</a>< T > &v1)</td></tr>
-<tr class="separator:ad6e5da56b0d0f6276a5dd80d94df5e78"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0cdba94a4fbabfa3eb81a0e8718f8e76"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0cdba94a4fbabfa3eb81a0e8718f8e76"></a>
- </td><td class="memItemRight" valign="bottom"><b>Vector2d</b> (int nrow)</td></tr>
-<tr class="separator:a0cdba94a4fbabfa3eb81a0e8718f8e76"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0d3bf7a30d84595d90fc4ad95d018062"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0d3bf7a30d84595d90fc4ad95d018062"></a>
- </td><td class="memItemRight" valign="bottom"><b>Vector2d</b> (int nrow, int ncol)</td></tr>
-<tr class="separator:a0d3bf7a30d84595d90fc4ad95d018062"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a15de10c83b2dc1bccdda5f418c2b9bc1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a15de10c83b2dc1bccdda5f418c2b9bc1"></a>
- </td><td class="memItemRight" valign="bottom"><b>Vector2d</b> (int nrow, int ncol, const T &value)</td></tr>
-<tr class="separator:a15de10c83b2dc1bccdda5f418c2b9bc1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a904c91f4d10e09f9de6d4ac199119361"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a904c91f4d10e09f9de6d4ac199119361"></a>
- </td><td class="memItemRight" valign="bottom"><b>Vector2d</b> (const gsl_matrix *gsl_m)</td></tr>
-<tr class="separator:a904c91f4d10e09f9de6d4ac199119361"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad9910f01df22e7695c9c2a8b4d419d1f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad9910f01df22e7695c9c2a8b4d419d1f"></a>
-void </td><td class="memItemRight" valign="bottom"><b>resize</b> (int nrow)</td></tr>
-<tr class="separator:ad9910f01df22e7695c9c2a8b4d419d1f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acbc3907d603ca05715b82341b3391a62"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acbc3907d603ca05715b82341b3391a62"></a>
-void </td><td class="memItemRight" valign="bottom"><b>resize</b> (int nrow, int ncol)</td></tr>
-<tr class="separator:acbc3907d603ca05715b82341b3391a62"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad8a54eb836e0558e2d90fe5bdb0a88ee"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad8a54eb836e0558e2d90fe5bdb0a88ee"></a>
-int </td><td class="memItemRight" valign="bottom"><b>nRows</b> () const </td></tr>
-<tr class="separator:ad8a54eb836e0558e2d90fe5bdb0a88ee"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae9feda9afa01880fcdae44add8c65e4f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae9feda9afa01880fcdae44add8c65e4f"></a>
-int </td><td class="memItemRight" valign="bottom"><b>nCols</b> () const </td></tr>
-<tr class="separator:ae9feda9afa01880fcdae44add8c65e4f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a59ca2a7a9a5055e67e34686d6ec30bfd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a59ca2a7a9a5055e67e34686d6ec30bfd"></a>
-void </td><td class="memItemRight" valign="bottom"><b>selectCol</b> (int col, std::vector< T > &output) const </td></tr>
-<tr class="separator:a59ca2a7a9a5055e67e34686d6ec30bfd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae408e53af5308ab5dc38d6b879b8b02a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae408e53af5308ab5dc38d6b879b8b02a"></a>
-void </td><td class="memItemRight" valign="bottom"><b>selectCol</b> (int col, T *output) const </td></tr>
-<tr class="separator:ae408e53af5308ab5dc38d6b879b8b02a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a540de622535543a86a500e3be6116ac3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a540de622535543a86a500e3be6116ac3"></a>
-std::vector< T > </td><td class="memItemRight" valign="bottom"><b>selectCol</b> (int col)</td></tr>
-<tr class="separator:a540de622535543a86a500e3be6116ac3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00236d64802ae9fc21a28b2c84b1cdca"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a00236d64802ae9fc21a28b2c84b1cdca"></a>
-void </td><td class="memItemRight" valign="bottom"><b>selectCols</b> (const std::list< int > &cols, <a class="el" href="classVector2d.html">Vector2d</a>< T > &output) const </td></tr>
-<tr class="separator:a00236d64802ae9fc21a28b2c84b1cdca"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adc7ce5a8ccfe0d59a3205944d49fcf26"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adc7ce5a8ccfe0d59a3205944d49fcf26"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setMask</b> (const <a class="el" href="classVector2d.html">Vector2d</a>< T > &mask, T msknodata, T nodata=0)</td></tr>
-<tr class="separator:adc7ce5a8ccfe0d59a3205944d49fcf26"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a67d0eec4207a21790b1e6cf7502599fc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a67d0eec4207a21790b1e6cf7502599fc"></a>
-void </td><td class="memItemRight" valign="bottom"><b>transpose</b> (<a class="el" href="classVector2d.html">Vector2d</a>< T > &output) const </td></tr>
-<tr class="separator:a67d0eec4207a21790b1e6cf7502599fc"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a849dfaa84d10f86a310cbcf0b26041d0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a849dfaa84d10f86a310cbcf0b26041d0"></a>
-void </td><td class="memItemRight" valign="bottom"><b>selectCols</b> (const std::list< int > &cols)</td></tr>
-<tr class="separator:a849dfaa84d10f86a310cbcf0b26041d0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5b596b1edcb7b67fe2f0a6ce6a040f48"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5b596b1edcb7b67fe2f0a6ce6a040f48"></a>
-void </td><td class="memItemRight" valign="bottom"><b>sort</b> (<a class="el" href="classVector2d.html">Vector2d</a>< T > &output)</td></tr>
-<tr class="separator:a5b596b1edcb7b67fe2f0a6ce6a040f48"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6a079bf15b7edc0be1f77248fe7725ed"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6a079bf15b7edc0be1f77248fe7725ed"></a>
-void </td><td class="memItemRight" valign="bottom"><b>scale</b> (const std::vector< double > &scaleVector, const std::vector< double > &offsetVector, <a class="el" href="classVector2d.html">Vector2d</a>< T > &scaledOutput)</td></tr>
-<tr class="separator:a6a079bf15b7edc0be1f77248fe7725ed"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a32e7da74628919b9b915ef84a1a92d0e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a32e7da74628919b9b915ef84a1a92d0e"></a>
-void </td><td class="memItemRight" valign="bottom"><b>scale</b> (const T lbound, const T ubound, std::vector< double > &scaleVector, std::vector< double > &offsetVector, <a class="el" href="classVector2d.html">Vector2d</a>< T > &scaledOutput)</td></tr>
-<tr class="separator:a32e7da74628919b9b915ef84a1a92d0e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a59d5245259004aed62837955f95d07f7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a59d5245259004aed62837955f95d07f7"></a>
-<a class="el" href="classVector2d.html">Vector2d</a>< T > </td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="classVector2d.html">Vector2d</a>< T > &v1)</td></tr>
-<tr class="separator:a59d5245259004aed62837955f95d07f7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac0f72cd2adef62afd964ea7215bc9a1b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac0f72cd2adef62afd964ea7215bc9a1b"></a>
-<a class="el" href="classVector2d.html">Vector2d</a>< T > </td><td class="memItemRight" valign="bottom"><b>operator+=</b> (const <a class="el" href="classVector2d.html">Vector2d</a>< T > &v1)</td></tr>
-<tr class="separator:ac0f72cd2adef62afd964ea7215bc9a1b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab97fc80f2c6059113de3faa050881648"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab97fc80f2c6059113de3faa050881648"></a>
-<a class="el" href="classVector2d.html">Vector2d</a>< T > </td><td class="memItemRight" valign="bottom"><b>sum</b> (const <a class="el" href="classVector2d.html">Vector2d</a>< T > &v1, const <a class="el" href="classVector2d.html">Vector2d</a>< T > &v2) const </td></tr>
-<tr class="separator:ab97fc80f2c6059113de3faa050881648"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac470ad3c9faba413fb5af772a232842f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac470ad3c9faba413fb5af772a232842f"></a>
-T </td><td class="memItemRight" valign="bottom"><b>mymax</b> (int &x, int &y, double maxValue) const </td></tr>
-<tr class="separator:ac470ad3c9faba413fb5af772a232842f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a05010d4cf35a5f073a95f10e9752ff54"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a05010d4cf35a5f073a95f10e9752ff54"></a>
-T </td><td class="memItemRight" valign="bottom"><b>sum</b> () const </td></tr>
-<tr class="separator:a05010d4cf35a5f073a95f10e9752ff54"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:affc960302c465d2a943ff84dab704dd7"><td class="memTemplParams" colspan="2"><a class="anchor" id="affc960302c465d2a943ff84dab704dd7"></a>
-template<class T1 > </td></tr>
-<tr class="memitem:affc960302c465d2a943ff84dab704dd7"><td class="memTemplItemLeft" align="right" valign="top">std::ostream & </td><td class="memTemplItemRight" valign="bottom"><b>operator<<</b> (std::ostream &os, const <a class="el" href="classVector2d.html">Vector2d</a>< T1 > &v)</td></tr>
-<tr class="separator:affc960302c465d2a943ff84dab704dd7"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<class T><br/>
-class Vector2d< T ></h3>
-
-
-<p>Definition at line <a class="el" href="Vector2d_8h_source.html#l00031">31</a> of file <a class="el" href="Vector2d_8h_source.html">Vector2d.h</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/src/base/<a class="el" href="Vector2d_8h_source.html">Vector2d.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classVector2d__coll__graph.map b/doc/html/classVector2d__coll__graph.map
deleted file mode 100644
index 96c460b..0000000
--- a/doc/html/classVector2d__coll__graph.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Vector2d< T >" name="Vector2d< T >">
-<area shape="rect" id="node2" title="STL class. " alt="" coords="5,97,163,138"/>
-</map>
diff --git a/doc/html/classVector2d__coll__graph.md5 b/doc/html/classVector2d__coll__graph.md5
deleted file mode 100644
index 18094d7..0000000
--- a/doc/html/classVector2d__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-c9cd762b7b49852773a75f82f00f6e5e
\ No newline at end of file
diff --git a/doc/html/classVector2d__coll__graph.png b/doc/html/classVector2d__coll__graph.png
deleted file mode 100644
index d4e26c0..0000000
Binary files a/doc/html/classVector2d__coll__graph.png and /dev/null differ
diff --git a/doc/html/classVector2d__inherit__graph.map b/doc/html/classVector2d__inherit__graph.map
deleted file mode 100644
index cb1f793..0000000
--- a/doc/html/classVector2d__inherit__graph.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Vector2d< T >" name="Vector2d< T >">
-<area shape="rect" id="node2" title="STL class. " alt="" coords="5,6,163,47"/>
-</map>
diff --git a/doc/html/classVector2d__inherit__graph.md5 b/doc/html/classVector2d__inherit__graph.md5
deleted file mode 100644
index 5cf468f..0000000
--- a/doc/html/classVector2d__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-b03ef4d1bc2ca4abd7e897b9222b2b71
\ No newline at end of file
diff --git a/doc/html/classVector2d__inherit__graph.png b/doc/html/classVector2d__inherit__graph.png
deleted file mode 100644
index ddeeb49..0000000
Binary files a/doc/html/classVector2d__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classconfusionmatrix_1_1ConfusionMatrix-members.html b/doc/html/classconfusionmatrix_1_1ConfusionMatrix-members.html
deleted file mode 100644
index 88510ce..0000000
--- a/doc/html/classconfusionmatrix_1_1ConfusionMatrix-members.html
+++ /dev/null
@@ -1,117 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>confusionmatrix</b></li><li class="navelem"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">ConfusionMatrix</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">confusionmatrix::ConfusionMatrix Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>clearResults</b>() (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>ConfusionMatrix</b>() (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ConfusionMatrix</b>(short nclass) (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>ConfusionMatrix</b>(const std::vector< std::string > &classNames) (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ConfusionMatrix</b>(const ConfusionMatrix &cm) (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getClass</b>(int iclass) const  (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getClassIndex</b>(std::string className) const  (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getClassNames</b>() const  (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getFormat</b>() const  (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getFormat</b>(const std::string theFormat) (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>incrementResult</b>(const std::string &theRef, const std::string &theClass, double theIncrement) (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>kappa</b>() const  (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>nClasses</b>() const  (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>nClassified</b>(const std::string &theRef) const  (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>nReference</b>(const std::string &theRef) const  (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>nReference</b>() const  (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>oa</b>(double *se95=NULL) const  (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>oa_pct</b>(double *se95=NULL) const  (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator*</b>(double weight) (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator*=</b>(double weight) (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator+</b>(const ConfusionMatrix &cm) (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator+=</b>(const ConfusionMatrix &cm) (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator<<</b> (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator=</b>(const ConfusionMatrix &cm) (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pa</b>(const std::string &theClass, double *se95=NULL) const  (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>pa_pct</b>(const std::string &theClass, double *se95=NULL) const  (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pushBackClassName</b>(const std::string &className, bool doSort=false) (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>reportSE95</b>(bool doReport) (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>resize</b>(short nclass) (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setClassNames</b>(const std::vector< std::string > &classNames, bool doSort=false) (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setFormat</b>(const CM_FORMAT &theFormat) (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setFormat</b>(const std::string theFormat) (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setResult</b>(const std::string &theRef, const std::string &theClass, double theResult) (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setResults</b>(const Vector2d< double > &theResults) (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>size</b>() const  (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>sortClassNames</b>() (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ua</b>(const std::string &theClass, double *se95=NULL) const  (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>ua_pct</b>(const std::string &theClass, double *se95=NULL) const  (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~ConfusionMatrix</b>() (defined in <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a>)</td><td class="entry"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classconfusionmatrix_1_1ConfusionMatrix.html b/doc/html/classconfusionmatrix_1_1ConfusionMatrix.html
deleted file mode 100644
index bb8e44d..0000000
--- a/doc/html/classconfusionmatrix_1_1ConfusionMatrix.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: confusionmatrix::ConfusionMatrix Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>confusionmatrix</b></li><li class="navelem"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">ConfusionMatrix</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-static-methods">Static Public Member Functions</a> |
-<a href="#friends">Friends</a> |
-<a href="classconfusionmatrix_1_1ConfusionMatrix-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">confusionmatrix::ConfusionMatrix Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:ab1269c3f819f9836571608b4bbfe24e7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab1269c3f819f9836571608b4bbfe24e7"></a>
- </td><td class="memItemRight" valign="bottom"><b>ConfusionMatrix</b> (short nclass)</td></tr>
-<tr class="separator:ab1269c3f819f9836571608b4bbfe24e7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3efe9834a2bd53adce8c209f5f30e30b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3efe9834a2bd53adce8c209f5f30e30b"></a>
- </td><td class="memItemRight" valign="bottom"><b>ConfusionMatrix</b> (const std::vector< std::string > &classNames)</td></tr>
-<tr class="separator:a3efe9834a2bd53adce8c209f5f30e30b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2cfa17975269f77b157caf725cf74622"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2cfa17975269f77b157caf725cf74622"></a>
- </td><td class="memItemRight" valign="bottom"><b>ConfusionMatrix</b> (const <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">ConfusionMatrix</a> &cm)</td></tr>
-<tr class="separator:a2cfa17975269f77b157caf725cf74622"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a83c0c6ee85b956b0766e4a3d2f7d824c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a83c0c6ee85b956b0766e4a3d2f7d824c"></a>
-<a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">ConfusionMatrix</a> & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">ConfusionMatrix</a> &cm)</td></tr>
-<tr class="separator:a83c0c6ee85b956b0766e4a3d2f7d824c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adfbe39631d71d739e376f3af88ab6451"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adfbe39631d71d739e376f3af88ab6451"></a>
-short </td><td class="memItemRight" valign="bottom"><b>size</b> () const </td></tr>
-<tr class="separator:adfbe39631d71d739e376f3af88ab6451"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a017a0e146054d0e5aba639405ec31af6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a017a0e146054d0e5aba639405ec31af6"></a>
-void </td><td class="memItemRight" valign="bottom"><b>resize</b> (short nclass)</td></tr>
-<tr class="separator:a017a0e146054d0e5aba639405ec31af6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a67c7762cefc98ddb5f5e103e3470362e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a67c7762cefc98ddb5f5e103e3470362e"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setClassNames</b> (const std::vector< std::string > &classNames, bool doSort=false)</td></tr>
-<tr class="separator:a67c7762cefc98ddb5f5e103e3470362e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa3ce72179b48938d4d8525ed77747121"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa3ce72179b48938d4d8525ed77747121"></a>
-void </td><td class="memItemRight" valign="bottom"><b>pushBackClassName</b> (const std::string &className, bool doSort=false)</td></tr>
-<tr class="separator:aa3ce72179b48938d4d8525ed77747121"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4d0712ecab35ae233d8a1905523d5dac"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4d0712ecab35ae233d8a1905523d5dac"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setResults</b> (const <a class="el" href="classVector2d.html">Vector2d</a>< double > &theResults)</td></tr>
-<tr class="separator:a4d0712ecab35ae233d8a1905523d5dac"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0d4fb5dd418c8f4c3b32a6f39763692e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0d4fb5dd418c8f4c3b32a6f39763692e"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setResult</b> (const std::string &theRef, const std::string &theClass, double theResult)</td></tr>
-<tr class="separator:a0d4fb5dd418c8f4c3b32a6f39763692e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aba257f91546617ab5e796ed79c7d6e15"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aba257f91546617ab5e796ed79c7d6e15"></a>
-void </td><td class="memItemRight" valign="bottom"><b>incrementResult</b> (const std::string &theRef, const std::string &theClass, double theIncrement)</td></tr>
-<tr class="separator:aba257f91546617ab5e796ed79c7d6e15"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a37a58de6bf3add5149bcb593c7ab6191"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a37a58de6bf3add5149bcb593c7ab6191"></a>
-void </td><td class="memItemRight" valign="bottom"><b>clearResults</b> ()</td></tr>
-<tr class="separator:a37a58de6bf3add5149bcb593c7ab6191"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6f4d55c2e20fff10fcad9206f6728894"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6f4d55c2e20fff10fcad9206f6728894"></a>
-double </td><td class="memItemRight" valign="bottom"><b>nReference</b> (const std::string &theRef) const </td></tr>
-<tr class="separator:a6f4d55c2e20fff10fcad9206f6728894"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa04a169253e3d3993f29216bbe7a858b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa04a169253e3d3993f29216bbe7a858b"></a>
-double </td><td class="memItemRight" valign="bottom"><b>nReference</b> () const </td></tr>
-<tr class="separator:aa04a169253e3d3993f29216bbe7a858b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a23976c9da223df88b0918c166311f9e1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a23976c9da223df88b0918c166311f9e1"></a>
-double </td><td class="memItemRight" valign="bottom"><b>nClassified</b> (const std::string &theRef) const </td></tr>
-<tr class="separator:a23976c9da223df88b0918c166311f9e1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abba4db46ffeddcb44859442e1fdea97b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abba4db46ffeddcb44859442e1fdea97b"></a>
-int </td><td class="memItemRight" valign="bottom"><b>nClasses</b> () const </td></tr>
-<tr class="separator:abba4db46ffeddcb44859442e1fdea97b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3cb8d987ffa0bf95f0f394de45493cd6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3cb8d987ffa0bf95f0f394de45493cd6"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>getClass</b> (int iclass) const </td></tr>
-<tr class="separator:a3cb8d987ffa0bf95f0f394de45493cd6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7bcf5117a063ba5aebc755562d55176a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7bcf5117a063ba5aebc755562d55176a"></a>
-int </td><td class="memItemRight" valign="bottom"><b>getClassIndex</b> (std::string className) const </td></tr>
-<tr class="separator:a7bcf5117a063ba5aebc755562d55176a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a85578ae0e4fda0998b254cc181a4d917"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a85578ae0e4fda0998b254cc181a4d917"></a>
-std::vector< std::string > </td><td class="memItemRight" valign="bottom"><b>getClassNames</b> () const </td></tr>
-<tr class="separator:a85578ae0e4fda0998b254cc181a4d917"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a32831df41495f36f52e44a23d1867bc5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a32831df41495f36f52e44a23d1867bc5"></a>
-double </td><td class="memItemRight" valign="bottom"><b>pa</b> (const std::string &theClass, double *se95=NULL) const </td></tr>
-<tr class="separator:a32831df41495f36f52e44a23d1867bc5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2d1f330f74938292d4f9f3faa46b7a7f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2d1f330f74938292d4f9f3faa46b7a7f"></a>
-double </td><td class="memItemRight" valign="bottom"><b>ua</b> (const std::string &theClass, double *se95=NULL) const </td></tr>
-<tr class="separator:a2d1f330f74938292d4f9f3faa46b7a7f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a760c21f66b0f06dac49c1f4eb4b474af"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a760c21f66b0f06dac49c1f4eb4b474af"></a>
-double </td><td class="memItemRight" valign="bottom"><b>oa</b> (double *se95=NULL) const </td></tr>
-<tr class="separator:a760c21f66b0f06dac49c1f4eb4b474af"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a791e2a197d06b151ae3427c99cd49037"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a791e2a197d06b151ae3427c99cd49037"></a>
-int </td><td class="memItemRight" valign="bottom"><b>pa_pct</b> (const std::string &theClass, double *se95=NULL) const </td></tr>
-<tr class="separator:a791e2a197d06b151ae3427c99cd49037"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a96d467b1726f6c63928bf29b0ee3d872"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a96d467b1726f6c63928bf29b0ee3d872"></a>
-int </td><td class="memItemRight" valign="bottom"><b>ua_pct</b> (const std::string &theClass, double *se95=NULL) const </td></tr>
-<tr class="separator:a96d467b1726f6c63928bf29b0ee3d872"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a150790f717201afc3fa3680b6550eabb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a150790f717201afc3fa3680b6550eabb"></a>
-int </td><td class="memItemRight" valign="bottom"><b>oa_pct</b> (double *se95=NULL) const </td></tr>
-<tr class="separator:a150790f717201afc3fa3680b6550eabb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a118e79c376947955367958c95eec4a60"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a118e79c376947955367958c95eec4a60"></a>
-double </td><td class="memItemRight" valign="bottom"><b>kappa</b> () const </td></tr>
-<tr class="separator:a118e79c376947955367958c95eec4a60"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0227c96d8877211f19355a2c71b10103"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0227c96d8877211f19355a2c71b10103"></a>
-<a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">ConfusionMatrix</a> & </td><td class="memItemRight" valign="bottom"><b>operator*=</b> (double weight)</td></tr>
-<tr class="separator:a0227c96d8877211f19355a2c71b10103"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a035fa3debf9d5c61a28d1a0466ce587a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a035fa3debf9d5c61a28d1a0466ce587a"></a>
-<a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">ConfusionMatrix</a> </td><td class="memItemRight" valign="bottom"><b>operator*</b> (double weight)</td></tr>
-<tr class="separator:a035fa3debf9d5c61a28d1a0466ce587a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa8fbb06ed89d53a2e353bf0f928e4fcf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa8fbb06ed89d53a2e353bf0f928e4fcf"></a>
-<a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">ConfusionMatrix</a> & </td><td class="memItemRight" valign="bottom"><b>operator+=</b> (const <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">ConfusionMatrix</a> &cm)</td></tr>
-<tr class="separator:aa8fbb06ed89d53a2e353bf0f928e4fcf"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4be5b222027a9957c970a3d5b1acbed6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4be5b222027a9957c970a3d5b1acbed6"></a>
-<a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">ConfusionMatrix</a> </td><td class="memItemRight" valign="bottom"><b>operator+</b> (const <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">ConfusionMatrix</a> &cm)</td></tr>
-<tr class="separator:a4be5b222027a9957c970a3d5b1acbed6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a520d6ac9453f8a36c2d6723db4c2de1a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a520d6ac9453f8a36c2d6723db4c2de1a"></a>
-void </td><td class="memItemRight" valign="bottom"><b>sortClassNames</b> ()</td></tr>
-<tr class="separator:a520d6ac9453f8a36c2d6723db4c2de1a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a22462ce80ebde79a9f60df29e9efb0ac"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a22462ce80ebde79a9f60df29e9efb0ac"></a>
-void </td><td class="memItemRight" valign="bottom"><b>reportSE95</b> (bool doReport)</td></tr>
-<tr class="separator:a22462ce80ebde79a9f60df29e9efb0ac"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3859439b13fdb2cb3a0043d75201dd81"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3859439b13fdb2cb3a0043d75201dd81"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setFormat</b> (const CM_FORMAT &theFormat)</td></tr>
-<tr class="separator:a3859439b13fdb2cb3a0043d75201dd81"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adebdf79b2bf111f966b0246c8edae801"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adebdf79b2bf111f966b0246c8edae801"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setFormat</b> (const std::string theFormat)</td></tr>
-<tr class="separator:adebdf79b2bf111f966b0246c8edae801"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a21a6a7b2c2a63906c2978c8f3093983d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a21a6a7b2c2a63906c2978c8f3093983d"></a>
-CM_FORMAT </td><td class="memItemRight" valign="bottom"><b>getFormat</b> () const </td></tr>
-<tr class="separator:a21a6a7b2c2a63906c2978c8f3093983d"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr class="memitem:a66a860ee1452f2e9eca498213ec963da"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a66a860ee1452f2e9eca498213ec963da"></a>
-static const CM_FORMAT </td><td class="memItemRight" valign="bottom"><b>getFormat</b> (const std::string theFormat)</td></tr>
-<tr class="separator:a66a860ee1452f2e9eca498213ec963da"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:ab52faa28a7502d56df6481344ee7a263"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab52faa28a7502d56df6481344ee7a263"></a>
-std::ostream & </td><td class="memItemRight" valign="bottom"><b>operator<<</b> (std::ostream &os, const <a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">ConfusionMatrix</a> &cm)</td></tr>
-<tr class="separator:ab52faa28a7502d56df6481344ee7a263"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="ConfusionMatrix_8h_source.html#l00032">32</a> of file <a class="el" href="ConfusionMatrix_8h_source.html">ConfusionMatrix.h</a>.</p>
-</div><hr/>The documentation for this class was generated from the following files:<ul>
-<li>/home/kempenep/pktools/src/algorithms/<a class="el" href="ConfusionMatrix_8h_source.html">ConfusionMatrix.h</a></li>
-<li>/home/kempenep/pktools/src/algorithms/<a class="el" href="ConfusionMatrix_8cc_source.html">ConfusionMatrix.cc</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classes.html b/doc/html/classes.html
deleted file mode 100644
index ab29eec..0000000
--- a/doc/html/classes.html
+++ /dev/null
@@ -1,123 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Class Index</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li class="current"><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">Class Index</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="qindex"><a class="qindex" href="#letter_B">B</a> | <a class="qindex" href="#letter_C">C</a> | <a class="qindex" href="#letter_D">D</a> | <a class="qindex" href="#letter_E">E</a> | <a class="qindex" href="#letter_F">F</a> | <a class="qindex" href="#letter_I">I</a> | <a class="qindex" href="#letter_K">K</a> | <a class="qindex" href="#letter_L">L</a> | <a class="qindex" href="#letter_M">M</a> |& [...]
-<table style="margin: 10px; white-space: nowrap;" align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
-<tr><td rowspan="2" valign="bottom"><a name="letter_B"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  B  </div></td></tr></table>
-</td><td valign="top"><a class="el" href="classfilter_1_1Filter.html">Filter</a> (filter)   </td><td valign="top"><a class="el" href="classOptFactory.html">OptFactory</a>   </td><td rowspan="2" valign="bottom"><a name="letter_n"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  n  </div></td></tr></table>
-</td><td valign="top"><a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">pklas2img</a> (qgis.pktools.pklas2img)   </td></tr>
-<tr><td valign="top"><a class="el" href="classfilter2d_1_1Filter2d.html">Filter2d</a> (filter2d)   </td><td valign="top"><a class="el" href="classOptionpk.html">Optionpk</a>   </td><td valign="top"><a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">pklas2img</a> (qgis.pklas2img)   </td></tr>
-<tr><td valign="top"><a class="el" href="classBadConversion.html">BadConversion</a>   </td><td rowspan="2" valign="bottom"><a name="letter_I"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  I  </div></td></tr></table>
-</td><td rowspan="2" valign="bottom"><a name="letter_P"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  P  </div></td></tr></table>
-</td><td valign="top"><a class="el" href="classFANN_1_1neural__net.html">neural_net</a> (FANN)   </td><td valign="top"><a class="el" href="classqgis_1_1pkreclass_1_1pkreclass.html">pkreclass</a> (qgis.pkreclass)   </td></tr>
-<tr><td rowspan="2" valign="bottom"><a name="letter_C"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  C  </div></td></tr></table>
-</td><td rowspan="2" valign="bottom"><a name="letter_p"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  p  </div></td></tr></table>
-</td><td valign="top"><a class="el" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">pkreclass</a> (qgis.pktools.pkreclass)   </td></tr>
-<tr><td valign="top"><a class="el" href="classImgRasterGdal.html">ImgRasterGdal</a>   </td><td valign="top"><a class="el" href="structPosValue.html">PosValue</a>   </td><td valign="top"><a class="el" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">pksetmask</a> (qgis.pktools.pksetmask)   </td></tr>
-<tr><td valign="top"><a class="el" href="classCache.html">Cache</a>   </td><td valign="top"><a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a>   </td><td valign="top"><a class="el" href="classqgis_1_1pktools_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin.html">ProcessingPktoolsPlugin</a> (qgis.pktools.ProcessingPktoolsPlugin)   </td><td valign="top"><a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">pkcomposit [...]
-<tr><td valign="top"><a class="el" href="classCompare__IndexValue.html">Compare_IndexValue</a>   </td><td valign="top"><a class="el" href="classImgReaderOgr.html">ImgReaderOgr</a>   </td><td valign="top"><a class="el" href="classqgis_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin.html">ProcessingPktoolsPlugin</a> (qgis.ProcessingPktoolsPlugin)   </td><td valign="top"><a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite [...]
-<tr><td valign="top"><a class="el" href="classCompare__PosValue.html">Compare_PosValue</a>   </td><td valign="top"><a class="el" href="classimgregression_1_1ImgRegression.html">ImgRegression</a> (imgregression)   </td><td rowspan="2" valign="bottom"><a name="letter_Q"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  Q  </div></td></tr></table>
-</td><td valign="top"><a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html">pkcrop</a> (qgis.pkcrop)   </td><td valign="top"><a class="el" href="classqgis_1_1pksvm_1_1pksvm.html">pksvm</a> (qgis.pksvm)   </td></tr>
-<tr><td valign="top"><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html">ConfusionMatrix</a> (confusionmatrix)   </td><td valign="top"><a class="el" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a>   </td><td valign="top"><a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">pkcrop</a> (qgis.pktools.pkcrop)   </td><td valign="top"><a class="el" href="classqgis_1_1pktools_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html [...]
-<tr><td valign="top"><a class="el" href="classCostFactory.html">CostFactory</a>   </td><td valign="top"><a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a>   </td><td valign="top"><a class="el" href="classQMatrix.html">QMatrix</a>   </td><td valign="top"><a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">pkdiff_accuracy</a> (qgis.pkdiff_accuracy)   </td><td valign="top"><a class="el" href="cla [...]
-<tr><td valign="top"><a class="el" href="classCostFactoryANN.html">CostFactoryANN</a>   </td><td valign="top"><a class="el" href="classImgWriterOgr.html">ImgWriterOgr</a>   </td><td rowspan="2" valign="bottom"><a name="letter_S"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  S  </div></td></tr></table>
-</td><td valign="top"><a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">pkdiff_accuracy</a> (qgis.pktools.pkdiff_accuracy)   </td><td valign="top"><a class="el" href="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html">pktoolsAlgorithmProvider</a> (qgis.pktools.pktoolsAlgorithmProvider)   </td></tr>
-<tr><td valign="top"><a class="el" href="classCostFactorySVM.html">CostFactorySVM</a>   </td><td valign="top"><a class="el" href="classIncrease__IndexValue.html">Increase_IndexValue</a>   </td><td valign="top"><a class="el" href="classqgis_1_1pkextract_1_1pkextract.html">pkextract</a> (qgis.pkextract)   </td><td valign="top"><a class="el" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html">pktoolsAlgorithmProvider</a> [...]
-<tr><td rowspan="2" valign="bottom"><a name="letter_D"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  D  </div></td></tr></table>
-</td><td valign="top"><a class="el" href="classIncrease__PosValue.html">Increase_PosValue</a>   </td><td valign="top"><a class="el" href="structSolver_1_1SolutionInfo.html">Solver::SolutionInfo</a>   </td><td valign="top"><a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">pkextract</a> (qgis.pktools.pkextract)   </td><td valign="top"><a class="el" href="classqgis_1_1pktoolsUtils_1_1pktoolsUtils.html">pktoolsUtils</a> (qgi [...]
-<tr><td valign="top"><a class="el" href="structIndexValue.html">IndexValue</a>   </td><td valign="top"><a class="el" href="classSolver.html">Solver</a>   </td><td valign="top"><a class="el" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">pkextract_grid</a> (qgis.pktools.pkextract_grid)   </td><td valign="top"><a class="el" href="classqgis_1_1pktools_1_1pktoolsUtils_1_1pktoolsUtils.html">pktoolsUtils</a> (qgis.pktools.pkt [...]
-<tr><td valign="top"><a class="el" href="classDataModel.html">DataModel</a>   </td><td rowspan="2" valign="bottom"><a name="letter_K"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  K  </div></td></tr></table>
-</td><td valign="top"><a class="el" href="classSolver__NU.html">Solver_NU</a>   </td><td valign="top"><a class="el" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">pkextract_grid</a> (qgis.pkextract_grid)   </td><td rowspan="2" valign="bottom"><a name="letter_s"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  s  </div></td></tr></table>
-</td></tr>
-<tr><td valign="top"><a class="el" href="classDecrease__IndexValue.html">Decrease_IndexValue</a>   </td><td valign="top"><a class="el" href="classstatfactory_1_1StatFactory.html">StatFactory</a> (statfactory)   </td><td valign="top"><a class="el" href="classqgis_1_1pkextract__random_1_1pkextract__random.html">pkextract_random</a> (qgis.pkextract_random)   </td></tr>
-<tr><td valign="top"><a class="el" href="classDecrease__PosValue.html">Decrease_PosValue</a>   </td><td valign="top"><a class="el" href="classKernel.html">Kernel</a>   </td><td valign="top"><a class="el" href="classSVC__Q.html">SVC_Q</a>   </td><td valign="top"><a class="el" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">pkextract_random</a> (qgis.pktools.pkextract_random)   </td><td valign="top"><a c [...]
-<tr><td rowspan="2" valign="bottom"><a name="letter_E"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  E  </div></td></tr></table>
-</td><td rowspan="2" valign="bottom"><a name="letter_L"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  L  </div></td></tr></table>
-</td><td valign="top"><a class="el" href="classSVR__Q.html">SVR_Q</a>   </td><td valign="top"><a class="el" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">pkfilter_spatial</a> (qgis.pkfilter_spatial)   </td><td valign="top"><a class="el" href="structsvm__node.html">svm_node</a>   </td></tr>
-<tr><td rowspan="2" valign="bottom"><a name="letter_U"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  U  </div></td></tr></table>
-</td><td valign="top"><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">pkfilter_spatial</a> (qgis.pktools.pkfilter_spatial)   </td><td valign="top"><a class="el" href="structsvm__parameter.html">svm_parameter</a>   </td></tr>
-<tr><td valign="top"><a class="el" href="classEgcs.html">Egcs</a>   </td><td valign="top"><a class="el" href="classLastReturnFilter.html">LastReturnFilter</a>   </td><td valign="top"><a class="el" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">pkfilter_spectral</a> (qgis.pkfilter_spectral)   </td><td valign="top"><a class="el" href="structsvm__problem.html">svm_problem</a>   </td></tr>
-<tr><td rowspan="2" valign="bottom"><a name="letter_F"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  F  </div></td></tr></table>
-</td><td rowspan="2" valign="bottom"><a name="letter_M"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  M  </div></td></tr></table>
-</td><td valign="top"><a class="el" href="classUi__MainWindow.html">Ui_MainWindow</a>   </td><td valign="top"><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">pkfilter_spectral</a> (qgis.pktools.pkfilter_spectral)   </td><td rowspan="2" valign="bottom"><a name="letter_t"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  t  </div></td></tr></table>
-</td></tr>
-<tr><td rowspan="2" valign="bottom"><a name="letter_V"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  V  </div></td></tr></table>
-</td><td valign="top"><a class="el" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html">pkfilterdem</a> (qgis.pktools.pkfilterdem)   </td></tr>
-<tr><td valign="top"><a class="el" href="classFeatureSelector.html">FeatureSelector</a>   </td><td valign="top"><a class="el" href="classUi_1_1MainWindow.html">MainWindow</a> (Ui)   </td><td valign="top"><a class="el" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html">pkfilterdem</a> (qgis.pkfilterdem)   </td><td valign="top"><a class="el" href="classFANN_1_1training__data.html">training_data</a> (FANN)   </td></tr>
-<tr><td valign="top"><a class="el" href="classFileReaderAscii.html">FileReaderAscii</a>   </td><td valign="top"><a class="el" href="classMainWindow.html">MainWindow</a>   </td><td valign="top"><a class="el" href="classVector2d.html">Vector2d</a>   </td><td valign="top"><a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">pkgetmask</a> (qgis.pkgetmask)   </td><td></td></tr>
-<tr><td valign="top"><a class="el" href="classFileReaderLas.html">FileReaderLas</a>   </td><td rowspan="2" valign="bottom"><a name="letter_O"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  O  </div></td></tr></table>
-</td><td rowspan="2" valign="bottom"><a name="letter_d"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  d  </div></td></tr></table>
-</td><td valign="top"><a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">pkgetmask</a> (qgis.pktools.pkgetmask)   </td><td></td></tr>
-<tr><td></td><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a class="el" href="classONE__CLASS__Q.html">ONE_CLASS_Q</a>   </td><td valign="top"><a class="el" href="structdecision__function.html">decision_function</a>   </td><td></td><td></td></tr>
-<tr><td></td><td></td><td></td><td></td><td></td></tr>
-</table>
-<div class="qindex"><a class="qindex" href="#letter_B">B</a> | <a class="qindex" href="#letter_C">C</a> | <a class="qindex" href="#letter_D">D</a> | <a class="qindex" href="#letter_E">E</a> | <a class="qindex" href="#letter_F">F</a> | <a class="qindex" href="#letter_I">I</a> | <a class="qindex" href="#letter_K">K</a> | <a class="qindex" href="#letter_L">L</a> | <a class="qindex" href="#letter_M">M</a> |& [...]
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classfilter2d_1_1Filter2d-members.html b/doc/html/classfilter2d_1_1Filter2d-members.html
deleted file mode 100644
index 9d64273..0000000
--- a/doc/html/classfilter2d_1_1Filter2d-members.html
+++ /dev/null
@@ -1,124 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>filter2d</b></li><li class="navelem"><a class="el" href="classfilter2d_1_1Filter2d.html">Filter2d</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">filter2d::Filter2d Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>doit</b>(const ImgReaderGdal &input, ImgWriterGdal &output, const std::string &method, int dim, short down=1, bool disc=false) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>doit</b>(const ImgReaderGdal &input, ImgWriterGdal &output, const std::string &method, int dimX, int dimY, short down=1, bool disc=false) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>doit</b>(const Vector2d< T1 > &inputVector, Vector2d< T2 > &outputVector, const std::string &method, int dimX, int dimY, short down=1, bool disc=false) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>dsm2dtm_nesw</b>(const Vector2d< T > &inputDSM, Vector2d< T > &outputMask, double hThreshold, int nlimit, int dim=3) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>dsm2dtm_nwse</b>(const Vector2d< T > &inputDSM, Vector2d< T > &outputMask, double hThreshold, int nlimit, int dim=3) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>dsm2dtm_senw</b>(const Vector2d< T > &inputDSM, Vector2d< T > &outputMask, double hThreshold, int nlimit, int dim=3) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>dsm2dtm_swne</b>(const Vector2d< T > &inputDSM, Vector2d< T > &outputMask, double hThreshold, int nlimit, int dim=3) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>dwt_texture</b>(const std::string &inputFilename, const std::string &outputFilename, int dim, int scale, int down=1, int iband=0, bool verbose=false) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>dwtCut</b>(const ImgReaderGdal &input, ImgWriterGdal &output, const std::string &wavelet_type, int family, double cut, bool verbose=false) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>dwtCut</b>(Vector2d< T > &data, const std::string &wavelet_type, int family, double cut) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>dwtForward</b>(const ImgReaderGdal &input, ImgWriterGdal &output, const std::string &wavelet_type, int family) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>dwtForward</b>(Vector2d< T > &data, const std::string &wavelet_type, int family) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>dwtInverse</b>(const ImgReaderGdal &input, ImgWriterGdal &output, const std::string &wavelet_type, int family) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>dwtInverse</b>(Vector2d< T > &data, const std::string &wavelet_type, int family) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>filter</b>(const ImgReaderGdal &input, ImgWriterGdal &output, bool absolute=false, bool normalize=false, bool noData=false) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>filter</b>(const Vector2d< T1 > &inputVector, Vector2d< T2 > &outputVector) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Filter2d</b>(void) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>Filter2d</b>(const Vector2d< double > &taps) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getFilterType</b>(const std::string filterType) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getResampleType</b>(const std::string resampleType) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>linearFeature</b>(const Vector2d< float > &input, std::vector< Vector2d< float > > &output, float angle=361, float angleStep=1, float maxDistance=0, float eps=0, bool l1=true, bool a1=true, bool l2=true, bool a2=true, bool verbose=false) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d [...]
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>linearFeature</b>(const ImgReaderGdal &input, ImgWriterGdal &output, float angle=361, float angleStep=1, float maxDistance=0, float eps=0, bool l1=true, bool a1=true, bool l2=true, bool a2=true, int band=0, bool verbose=false) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>majorVoting</b>(const std::string &inputFilename, const std::string &outputFilename, int dim=0, const std::vector< int > &prior=std::vector< int >()) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>median</b>(const std::string &inputFilename, const std::string &outputFilename, int dim, bool disc=false) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>morphology</b>(const ImgReaderGdal &input, ImgWriterGdal &output, const std::string &method, int dimX, int dimY, const std::vector< double > &angle, bool disc=false) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>morphology</b>(const Vector2d< T > &input, Vector2d< T > &output, const std::string &method, int dimX, int dimY, bool disc=false, double hThreshold=0) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mrf</b>(const ImgReaderGdal &input, ImgWriterGdal &output, int dimX, int dimY, double beta, bool eightConnectivity=true, short down=1, bool verbose=false) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>mrf</b>(const ImgReaderGdal &input, ImgWriterGdal &output, int dimX, int dimY, Vector2d< double > beta, bool eightConnectivity=true, short down=1, bool verbose=false) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pushClass</b>(short theClass=1) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>pushNoDataValue</b>(double noDataValue=0) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pushThreshold</b>(double theThreshold) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setClasses</b>(const std::vector< short > &theClasses) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setTaps</b>(const Vector2d< double > &taps) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setThresholds</b>(const std::vector< double > &theThresholds) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>shadowDsm</b>(const Vector2d< T > &input, Vector2d< T > &output, double sza, double saa, double pixelSize, short shadowFlag=1) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>shadowDsm</b>(const ImgReaderGdal &input, ImgWriterGdal &output, double sza, double saa, double pixelSize, short shadowFlag=1) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>shift</b>(const ImgReaderGdal &input, ImgWriterGdal &output, double offsetX=0, double offsetY=0, double randomSigma=0, RESAMPLE resample=BILINEAR, bool verbose=false) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>shift</b>(const Vector2d< T > &input, Vector2d< T > &output, double offsetX=0, double offsetY=0, double randomSigma=0, RESAMPLE resample=NEAR, bool verbose=false) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>smooth</b>(const ImgReaderGdal &input, ImgWriterGdal &output, int dim) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>smooth</b>(const ImgReaderGdal &input, ImgWriterGdal &output, int dimX, int dimY) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>smooth</b>(const Vector2d< T1 > &inputVector, Vector2d< T2 > &outputVector, int dim) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>smooth</b>(const Vector2d< T1 > &inputVector, Vector2d< T2 > &outputVector, int dimX, int dimY) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>smoothNoData</b>(const ImgReaderGdal &input, ImgWriterGdal &output, int dim) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>smoothNoData</b>(const ImgReaderGdal &input, ImgWriterGdal &output, int dimX, int dimY) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>var</b>(const std::string &inputFilename, const std::string &outputFilename, int dim, bool disc=false) (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~Filter2d</b>() (defined in <a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a>)</td><td class="entry"><a class="el" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classfilter2d_1_1Filter2d.html b/doc/html/classfilter2d_1_1Filter2d.html
deleted file mode 100644
index 41969db..0000000
--- a/doc/html/classfilter2d_1_1Filter2d.html
+++ /dev/null
@@ -1,239 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: filter2d::Filter2d Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>filter2d</b></li><li class="navelem"><a class="el" href="classfilter2d_1_1Filter2d.html">Filter2d</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-static-methods">Static Public Member Functions</a> |
-<a href="classfilter2d_1_1Filter2d-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">filter2d::Filter2d Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a131543045a8e5f3a72f6e0480403d950"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a131543045a8e5f3a72f6e0480403d950"></a>
- </td><td class="memItemRight" valign="bottom"><b>Filter2d</b> (const <a class="el" href="classVector2d.html">Vector2d</a>< double > &taps)</td></tr>
-<tr class="separator:a131543045a8e5f3a72f6e0480403d950"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1bd02704fc97e0b84aa21628d34d2e5c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1bd02704fc97e0b84aa21628d34d2e5c"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setTaps</b> (const <a class="el" href="classVector2d.html">Vector2d</a>< double > &taps)</td></tr>
-<tr class="separator:a1bd02704fc97e0b84aa21628d34d2e5c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aacdfd1192acfb68db8e12abea3a0f1db"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aacdfd1192acfb68db8e12abea3a0f1db"></a>
-void </td><td class="memItemRight" valign="bottom"><b>pushClass</b> (short theClass=1)</td></tr>
-<tr class="separator:aacdfd1192acfb68db8e12abea3a0f1db"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aadb1732c6679c0fd9aa25ddcef0bb619"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aadb1732c6679c0fd9aa25ddcef0bb619"></a>
-int </td><td class="memItemRight" valign="bottom"><b>pushNoDataValue</b> (double noDataValue=0)</td></tr>
-<tr class="separator:aadb1732c6679c0fd9aa25ddcef0bb619"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6992a84ba7786a6a935d294371f56e98"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6992a84ba7786a6a935d294371f56e98"></a>
-void </td><td class="memItemRight" valign="bottom"><b>pushThreshold</b> (double theThreshold)</td></tr>
-<tr class="separator:a6992a84ba7786a6a935d294371f56e98"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3883fc01cadbb4fd1068a0b5610d2d58"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3883fc01cadbb4fd1068a0b5610d2d58"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setThresholds</b> (const std::vector< double > &theThresholds)</td></tr>
-<tr class="separator:a3883fc01cadbb4fd1068a0b5610d2d58"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abab716bcd2007c97ef656b5bc37e5f5b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abab716bcd2007c97ef656b5bc37e5f5b"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setClasses</b> (const std::vector< short > &theClasses)</td></tr>
-<tr class="separator:abab716bcd2007c97ef656b5bc37e5f5b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0f23d9e3d7a832551aa085c9910510c1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0f23d9e3d7a832551aa085c9910510c1"></a>
-void </td><td class="memItemRight" valign="bottom"><b>filter</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &input, <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a> &output, bool absolute=false, bool normalize=false, bool noData=false)</td></tr>
-<tr class="separator:a0f23d9e3d7a832551aa085c9910510c1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a57c077cc29781b92c00ac6b2b512d1e8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a57c077cc29781b92c00ac6b2b512d1e8"></a>
-void </td><td class="memItemRight" valign="bottom"><b>smooth</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &input, <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a> &output, int dim)</td></tr>
-<tr class="separator:a57c077cc29781b92c00ac6b2b512d1e8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7658957ea23dc150addf3370e132ea1c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7658957ea23dc150addf3370e132ea1c"></a>
-void </td><td class="memItemRight" valign="bottom"><b>smooth</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &input, <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a> &output, int dimX, int dimY)</td></tr>
-<tr class="separator:a7658957ea23dc150addf3370e132ea1c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4ec36f06ee746dd6d590ba51815eac39"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4ec36f06ee746dd6d590ba51815eac39"></a>
-void </td><td class="memItemRight" valign="bottom"><b>smoothNoData</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &input, <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a> &output, int dim)</td></tr>
-<tr class="separator:a4ec36f06ee746dd6d590ba51815eac39"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2ef1f173bfec32a2ebccab2555e90f34"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2ef1f173bfec32a2ebccab2555e90f34"></a>
-void </td><td class="memItemRight" valign="bottom"><b>smoothNoData</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &input, <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a> &output, int dimX, int dimY)</td></tr>
-<tr class="separator:a2ef1f173bfec32a2ebccab2555e90f34"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acce166cc43e50b26a84ace40bc0c30a8"><td class="memTemplParams" colspan="2"><a class="anchor" id="acce166cc43e50b26a84ace40bc0c30a8"></a>
-template<class T1 , class T2 > </td></tr>
-<tr class="memitem:acce166cc43e50b26a84ace40bc0c30a8"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>filter</b> (const <a class="el" href="classVector2d.html">Vector2d</a>< T1 > &inputVector, <a class="el" href="classVector2d.html">Vector2d</a>< T2 > &outputVector)</td></tr>
-<tr class="separator:acce166cc43e50b26a84ace40bc0c30a8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1db9422ce9bbe73da4c54535e2b7c787"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1db9422ce9bbe73da4c54535e2b7c787"></a>
-template<class T1 , class T2 > </td></tr>
-<tr class="memitem:a1db9422ce9bbe73da4c54535e2b7c787"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>smooth</b> (const <a class="el" href="classVector2d.html">Vector2d</a>< T1 > &inputVector, <a class="el" href="classVector2d.html">Vector2d</a>< T2 > &outputVector, int dim)</td></tr>
-<tr class="separator:a1db9422ce9bbe73da4c54535e2b7c787"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a600cb9605638319790d4ff0c8e4664d5"><td class="memTemplParams" colspan="2"><a class="anchor" id="a600cb9605638319790d4ff0c8e4664d5"></a>
-template<class T1 , class T2 > </td></tr>
-<tr class="memitem:a600cb9605638319790d4ff0c8e4664d5"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>smooth</b> (const <a class="el" href="classVector2d.html">Vector2d</a>< T1 > &inputVector, <a class="el" href="classVector2d.html">Vector2d</a>< T2 > &outputVector, int dimX, int dimY)</td></tr>
-<tr class="separator:a600cb9605638319790d4ff0c8e4664d5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a63915d876aa412888bdad9d981db5f37"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a63915d876aa412888bdad9d981db5f37"></a>
-void </td><td class="memItemRight" valign="bottom"><b>dwtForward</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &input, <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a> &output, const std::string &wavelet_type, int family)</td></tr>
-<tr class="separator:a63915d876aa412888bdad9d981db5f37"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6a56f55ffdf966c8275b7f381a842769"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6a56f55ffdf966c8275b7f381a842769"></a>
-void </td><td class="memItemRight" valign="bottom"><b>dwtInverse</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &input, <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a> &output, const std::string &wavelet_type, int family)</td></tr>
-<tr class="separator:a6a56f55ffdf966c8275b7f381a842769"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0cdcf5a4455afc0a482e549150a51f6a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0cdcf5a4455afc0a482e549150a51f6a"></a>
-void </td><td class="memItemRight" valign="bottom"><b>dwtCut</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &input, <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a> &output, const std::string &wavelet_type, int family, double cut, bool verbose=false)</td></tr>
-<tr class="separator:a0cdcf5a4455afc0a482e549150a51f6a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afcb0f7a46a01d905b6c1f0ffda9204e2"><td class="memTemplParams" colspan="2"><a class="anchor" id="afcb0f7a46a01d905b6c1f0ffda9204e2"></a>
-template<class T > </td></tr>
-<tr class="memitem:afcb0f7a46a01d905b6c1f0ffda9204e2"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>dwtForward</b> (<a class="el" href="classVector2d.html">Vector2d</a>< T > &data, const std::string &wavelet_type, int family)</td></tr>
-<tr class="separator:afcb0f7a46a01d905b6c1f0ffda9204e2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a46fdbf3fce9bf8c599fd58d1a7c4ff09"><td class="memTemplParams" colspan="2"><a class="anchor" id="a46fdbf3fce9bf8c599fd58d1a7c4ff09"></a>
-template<class T > </td></tr>
-<tr class="memitem:a46fdbf3fce9bf8c599fd58d1a7c4ff09"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>dwtInverse</b> (<a class="el" href="classVector2d.html">Vector2d</a>< T > &data, const std::string &wavelet_type, int family)</td></tr>
-<tr class="separator:a46fdbf3fce9bf8c599fd58d1a7c4ff09"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a36331862a4422386ec256a57412d3188"><td class="memTemplParams" colspan="2"><a class="anchor" id="a36331862a4422386ec256a57412d3188"></a>
-template<class T > </td></tr>
-<tr class="memitem:a36331862a4422386ec256a57412d3188"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>dwtCut</b> (<a class="el" href="classVector2d.html">Vector2d</a>< T > &data, const std::string &wavelet_type, int family, double cut)</td></tr>
-<tr class="separator:a36331862a4422386ec256a57412d3188"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6189d4397a473bfb95d020e3c96eed23"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6189d4397a473bfb95d020e3c96eed23"></a>
-void </td><td class="memItemRight" valign="bottom"><b>majorVoting</b> (const std::string &inputFilename, const std::string &outputFilename, int dim=0, const std::vector< int > &prior=std::vector< int >())</td></tr>
-<tr class="separator:a6189d4397a473bfb95d020e3c96eed23"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a124e2fd7a6b4e44cd9a72fa320aea65b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a124e2fd7a6b4e44cd9a72fa320aea65b"></a>
-void </td><td class="memItemRight" valign="bottom"><b>doit</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &input, <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a> &output, const std::string &method, int dim, short down=1, bool disc=false)</td></tr>
-<tr class="separator:a124e2fd7a6b4e44cd9a72fa320aea65b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa31d589a11b7fddfd5abe2ba8fe5abfd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa31d589a11b7fddfd5abe2ba8fe5abfd"></a>
-void </td><td class="memItemRight" valign="bottom"><b>doit</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &input, <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a> &output, const std::string &method, int dimX, int dimY, short down=1, bool disc=false)</td></tr>
-<tr class="separator:aa31d589a11b7fddfd5abe2ba8fe5abfd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad54b30ffc295392b23a074e81958d157"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad54b30ffc295392b23a074e81958d157"></a>
-void </td><td class="memItemRight" valign="bottom"><b>mrf</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &input, <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a> &output, int dimX, int dimY, double beta, bool eightConnectivity=true, short down=1, bool verbose=false)</td></tr>
-<tr class="separator:ad54b30ffc295392b23a074e81958d157"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a17ad7b69b6cdac05bf33a0dc21482a48"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a17ad7b69b6cdac05bf33a0dc21482a48"></a>
-void </td><td class="memItemRight" valign="bottom"><b>mrf</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &input, <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a> &output, int dimX, int dimY, <a class="el" href="classVector2d.html">Vector2d</a>< double > beta, bool eightConnectivity=true, short down=1, bool verbose=false)</td></tr>
-<tr class="separator:a17ad7b69b6cdac05bf33a0dc21482a48"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac71f07d4a37cb61cf567d7550ed535e7"><td class="memTemplParams" colspan="2"><a class="anchor" id="ac71f07d4a37cb61cf567d7550ed535e7"></a>
-template<class T1 , class T2 > </td></tr>
-<tr class="memitem:ac71f07d4a37cb61cf567d7550ed535e7"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>doit</b> (const <a class="el" href="classVector2d.html">Vector2d</a>< T1 > &inputVector, <a class="el" href="classVector2d.html">Vector2d</a>< T2 > &outputVector, const std::string &method, int dimX, int dimY, short down=1, bool disc=false)</td></tr>
-<tr class="separator:ac71f07d4a37cb61cf567d7550ed535e7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abd834d3c429d670a2557f7e8664c221e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abd834d3c429d670a2557f7e8664c221e"></a>
-void </td><td class="memItemRight" valign="bottom"><b>median</b> (const std::string &inputFilename, const std::string &outputFilename, int dim, bool disc=false)</td></tr>
-<tr class="separator:abd834d3c429d670a2557f7e8664c221e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a79fb6c9ed5aaf0f5e78ed0ac3a49eab6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a79fb6c9ed5aaf0f5e78ed0ac3a49eab6"></a>
-void </td><td class="memItemRight" valign="bottom"><b>var</b> (const std::string &inputFilename, const std::string &outputFilename, int dim, bool disc=false)</td></tr>
-<tr class="separator:a79fb6c9ed5aaf0f5e78ed0ac3a49eab6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a257f0c4f047c12566d2b4f2918ebed21"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a257f0c4f047c12566d2b4f2918ebed21"></a>
-void </td><td class="memItemRight" valign="bottom"><b>morphology</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &input, <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a> &output, const std::string &method, int dimX, int dimY, const std::vector< double > &angle, bool disc=false)</td></tr>
-<tr class="separator:a257f0c4f047c12566d2b4f2918ebed21"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9d0ab0db5e3f05409697dd3742b3975f"><td class="memTemplParams" colspan="2"><a class="anchor" id="a9d0ab0db5e3f05409697dd3742b3975f"></a>
-template<class T > </td></tr>
-<tr class="memitem:a9d0ab0db5e3f05409697dd3742b3975f"><td class="memTemplItemLeft" align="right" valign="top">unsigned long int </td><td class="memTemplItemRight" valign="bottom"><b>morphology</b> (const <a class="el" href="classVector2d.html">Vector2d</a>< T > &input, <a class="el" href="classVector2d.html">Vector2d</a>< T > &output, const std::string &method, int dimX, int dimY, bool disc=false, double hThreshold=0)</td></tr>
-<tr class="separator:a9d0ab0db5e3f05409697dd3742b3975f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a18bd72e87cb7887a4079662536c6f3d8"><td class="memTemplParams" colspan="2"><a class="anchor" id="a18bd72e87cb7887a4079662536c6f3d8"></a>
-template<class T > </td></tr>
-<tr class="memitem:a18bd72e87cb7887a4079662536c6f3d8"><td class="memTemplItemLeft" align="right" valign="top">unsigned long int </td><td class="memTemplItemRight" valign="bottom"><b>dsm2dtm_nwse</b> (const <a class="el" href="classVector2d.html">Vector2d</a>< T > &inputDSM, <a class="el" href="classVector2d.html">Vector2d</a>< T > &outputMask, double hThreshold, int nlimit, int dim=3)</td></tr>
-<tr class="separator:a18bd72e87cb7887a4079662536c6f3d8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a57b05be4d0dc51b4cbe3064d47019abd"><td class="memTemplParams" colspan="2"><a class="anchor" id="a57b05be4d0dc51b4cbe3064d47019abd"></a>
-template<class T > </td></tr>
-<tr class="memitem:a57b05be4d0dc51b4cbe3064d47019abd"><td class="memTemplItemLeft" align="right" valign="top">unsigned long int </td><td class="memTemplItemRight" valign="bottom"><b>dsm2dtm_nesw</b> (const <a class="el" href="classVector2d.html">Vector2d</a>< T > &inputDSM, <a class="el" href="classVector2d.html">Vector2d</a>< T > &outputMask, double hThreshold, int nlimit, int dim=3)</td></tr>
-<tr class="separator:a57b05be4d0dc51b4cbe3064d47019abd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a555f00bd4eedfa6696b5ec752eebe433"><td class="memTemplParams" colspan="2"><a class="anchor" id="a555f00bd4eedfa6696b5ec752eebe433"></a>
-template<class T > </td></tr>
-<tr class="memitem:a555f00bd4eedfa6696b5ec752eebe433"><td class="memTemplItemLeft" align="right" valign="top">unsigned long int </td><td class="memTemplItemRight" valign="bottom"><b>dsm2dtm_senw</b> (const <a class="el" href="classVector2d.html">Vector2d</a>< T > &inputDSM, <a class="el" href="classVector2d.html">Vector2d</a>< T > &outputMask, double hThreshold, int nlimit, int dim=3)</td></tr>
-<tr class="separator:a555f00bd4eedfa6696b5ec752eebe433"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4b164b47ea23deaf48528dcfa0a42570"><td class="memTemplParams" colspan="2"><a class="anchor" id="a4b164b47ea23deaf48528dcfa0a42570"></a>
-template<class T > </td></tr>
-<tr class="memitem:a4b164b47ea23deaf48528dcfa0a42570"><td class="memTemplItemLeft" align="right" valign="top">unsigned long int </td><td class="memTemplItemRight" valign="bottom"><b>dsm2dtm_swne</b> (const <a class="el" href="classVector2d.html">Vector2d</a>< T > &inputDSM, <a class="el" href="classVector2d.html">Vector2d</a>< T > &outputMask, double hThreshold, int nlimit, int dim=3)</td></tr>
-<tr class="separator:a4b164b47ea23deaf48528dcfa0a42570"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7bd4a40ecc62e0a31eb467c888ffe495"><td class="memTemplParams" colspan="2"><a class="anchor" id="a7bd4a40ecc62e0a31eb467c888ffe495"></a>
-template<class T > </td></tr>
-<tr class="memitem:a7bd4a40ecc62e0a31eb467c888ffe495"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>shadowDsm</b> (const <a class="el" href="classVector2d.html">Vector2d</a>< T > &input, <a class="el" href="classVector2d.html">Vector2d</a>< T > &output, double sza, double saa, double pixelSize, short shadowFlag=1)</td></tr>
-<tr class="separator:a7bd4a40ecc62e0a31eb467c888ffe495"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aae6491a2c1f18a67d1e0851fe5e72cb2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aae6491a2c1f18a67d1e0851fe5e72cb2"></a>
-void </td><td class="memItemRight" valign="bottom"><b>shadowDsm</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &input, <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a> &output, double sza, double saa, double pixelSize, short shadowFlag=1)</td></tr>
-<tr class="separator:aae6491a2c1f18a67d1e0851fe5e72cb2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0bd4aefaeae0d473b6e50a5bd568637e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0bd4aefaeae0d473b6e50a5bd568637e"></a>
-void </td><td class="memItemRight" valign="bottom"><b>dwt_texture</b> (const std::string &inputFilename, const std::string &outputFilename, int dim, int scale, int down=1, int iband=0, bool verbose=false)</td></tr>
-<tr class="separator:a0bd4aefaeae0d473b6e50a5bd568637e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0b8c3874f45db5276c25390f8e193172"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0b8c3874f45db5276c25390f8e193172"></a>
-void </td><td class="memItemRight" valign="bottom"><b>shift</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &input, <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a> &output, double offsetX=0, double offsetY=0, double randomSigma=0, RESAMPLE resample=BILINEAR, bool verbose=false)</td></tr>
-<tr class="separator:a0b8c3874f45db5276c25390f8e193172"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad63893f95c7b693cc659eb36804f27ab"><td class="memTemplParams" colspan="2"><a class="anchor" id="ad63893f95c7b693cc659eb36804f27ab"></a>
-template<class T > </td></tr>
-<tr class="memitem:ad63893f95c7b693cc659eb36804f27ab"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>shift</b> (const <a class="el" href="classVector2d.html">Vector2d</a>< T > &input, <a class="el" href="classVector2d.html">Vector2d</a>< T > &output, double offsetX=0, double offsetY=0, double randomSigma=0, RESAMPLE resample=NEAR, bool verbose=false)</td></tr>
-<tr class="separator:ad63893f95c7b693cc659eb36804f27ab"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a86622fc2dbe182c6635196abaad9dedb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a86622fc2dbe182c6635196abaad9dedb"></a>
-void </td><td class="memItemRight" valign="bottom"><b>linearFeature</b> (const <a class="el" href="classVector2d.html">Vector2d</a>< float > &input, std::vector< <a class="el" href="classVector2d.html">Vector2d</a>< float > > &output, float angle=361, float angleStep=1, float maxDistance=0, float eps=0, bool l1=true, bool a1=true, bool l2=true, bool a2=true, bool verbose=false)</td></tr>
-<tr class="separator:a86622fc2dbe182c6635196abaad9dedb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae8b5dad618281f0bef94a54ef49b9b33"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae8b5dad618281f0bef94a54ef49b9b33"></a>
-void </td><td class="memItemRight" valign="bottom"><b>linearFeature</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &input, <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a> &output, float angle=361, float angleStep=1, float maxDistance=0, float eps=0, bool l1=true, bool a1=true, bool l2=true, bool a2=true, int band=0, bool verbose=false)</td></tr>
-<tr class="separator:ae8b5dad618281f0bef94a54ef49b9b33"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr class="memitem:a32e0edc078edb8393d2610bf8f23b015"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a32e0edc078edb8393d2610bf8f23b015"></a>
-static FILTER_TYPE </td><td class="memItemRight" valign="bottom"><b>getFilterType</b> (const std::string filterType)</td></tr>
-<tr class="separator:a32e0edc078edb8393d2610bf8f23b015"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9cdef475f8c0c0db520fc01f40da8376"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9cdef475f8c0c0db520fc01f40da8376"></a>
-static const RESAMPLE </td><td class="memItemRight" valign="bottom"><b>getResampleType</b> (const std::string resampleType)</td></tr>
-<tr class="separator:a9cdef475f8c0c0db520fc01f40da8376"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="Filter2d_8h_source.html#l00065">65</a> of file <a class="el" href="Filter2d_8h_source.html">Filter2d.h</a>.</p>
-</div><hr/>The documentation for this class was generated from the following files:<ul>
-<li>/home/kempenep/pktools/src/algorithms/<a class="el" href="Filter2d_8h_source.html">Filter2d.h</a></li>
-<li>/home/kempenep/pktools/src/algorithms/<a class="el" href="Filter2d_8cc_source.html">Filter2d.cc</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classfilter_1_1Filter-members.html b/doc/html/classfilter_1_1Filter-members.html
deleted file mode 100644
index 81b9e53..0000000
--- a/doc/html/classfilter_1_1Filter-members.html
+++ /dev/null
@@ -1,153 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>filter</b></li><li class="navelem"><a class="el" href="classfilter_1_1Filter.html">Filter</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">filter::Filter Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>applyFwhm</b>(const std::vector< double > &wavelengthIn, const std::vector< T > &input, const std::vector< double > &wavelengthOut, const std::vector< double > &fwhm, const std::string &interpolationType, std::vector< T > &output, bool verbose=false) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfi [...]
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>applyFwhm</b>(const std::vector< double > &wavelengthIn, const Vector2d< T > &input, const std::vector< double > &wavelengthOut, const std::vector< double > &fwhm, const std::string &interpolationType, Vector2d< T > &output, int down=1, bool verbose=false) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_ [...]
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>applyFwhm</b>(const std::vector< double > &wavelengthIn, const std::vector< T > &input, const std::vector< double > &wavelengthOut, const std::vector< double > &fwhm, const std::string &interpolationType, std::vector< T > &output, bool verbose=false) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfi [...]
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>applyFwhm</b>(const std::vector< double > &wavelengthIn, const Vector2d< T > &input, const std::vector< double > &wavelengthOut, const std::vector< double > &fwhm, const std::string &interpolationType, Vector2d< T > &output, int down=1, bool verbose=false) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_ [...]
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>applySrf</b>(const std::vector< double > &wavelengthIn, const std::vector< T > &input, const Vector2d< double > &srf, const std::string &interpolationType, T &output, double delta=1.0, bool normalize=false, bool verbose=false) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>< [...]
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>applySrf</b>(const std::vector< double > &wavelengthIn, const Vector2d< T > &input, const Vector2d< double > &srf, const std::string &interpolationType, std::vector< T > &output, double delta=1.0, bool normalize=false, int down=1, bool transposeInput=false, bool verbose=false) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="cla [...]
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>applySrf</b>(const std::vector< double > &wavelengthIn, const std::vector< T > &input, const Vector2d< double > &srf, const std::string &interpolationType, T &output, double delta=1.0, bool normalize=false, bool verbose=false) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>< [...]
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>applySrf</b>(const std::vector< double > &wavelengthIn, const Vector2d< T > &input, const Vector2d< double > &srf, const std::string &interpolationType, std::vector< T > &output, double delta=1.0, bool normalize=false, int down=1, bool transposeInput=false, bool verbose=false) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="cla [...]
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>dwtCut</b>(const ImgReaderGdal &input, ImgWriterGdal &output, const std::string &wavelet_type, int family, double cut) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>dwtCut</b>(std::vector< double > &data, const std::string &wavelet_type, int family, double cut) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>dwtCut</b>(const ImgReaderGdal &input, ImgWriterGdal &output, const std::string &wavelet_type, int family, double cut) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>dwtCut</b>(std::vector< double > &data, const std::string &wavelet_type, int family, double cut) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>dwtCutFrom</b>(const ImgReaderGdal &input, ImgWriterGdal &output, const std::string &wavelet_type, int family, int band) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>dwtCutFrom</b>(const ImgReaderGdal &input, ImgWriterGdal &output, const std::string &wavelet_type, int family, int band) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>dwtForward</b>(const ImgReaderGdal &input, ImgWriterGdal &output, const std::string &wavelet_type, int family) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>dwtForward</b>(std::vector< double > &data, const std::string &wavelet_type, int family) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>dwtForward</b>(const ImgReaderGdal &input, ImgWriterGdal &output, const std::string &wavelet_type, int family) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>dwtForward</b>(std::vector< double > &data, const std::string &wavelet_type, int family) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>dwtInverse</b>(const ImgReaderGdal &input, ImgWriterGdal &output, const std::string &wavelet_type, int family) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>dwtInverse</b>(std::vector< double > &data, const std::string &wavelet_type, int family) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>dwtInverse</b>(const ImgReaderGdal &input, ImgWriterGdal &output, const std::string &wavelet_type, int family) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>dwtInverse</b>(std::vector< double > &data, const std::string &wavelet_type, int family) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>filter</b>(const std::vector< T > &input, std::vector< T > &output) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>filter</b>(const std::vector< T > &input, std::vector< T > &output, const std::string &method, int dim) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>filter</b>(T *input, int inputSize, std::vector< T > &output) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>filter</b>(const ImgReaderGdal &input, ImgWriterGdal &output) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>filter</b>(const ImgReaderGdal &input, ImgWriterGdal &output, const std::string &method, int dim) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>filter</b>(const std::vector< T > &input, std::vector< T > &output) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>filter</b>(const std::vector< T > &input, std::vector< T > &output, const std::string &method, int dim) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>filter</b>(T *input, int inputSize, std::vector< T > &output) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>filter</b>(const ImgReaderGdal &input, ImgWriterGdal &output) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>filter</b>(const ImgReaderGdal &input, ImgWriterGdal &output, const std::string &method, int dim) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>filter</b>(T *input, int inputSize, std::vector< T > &output) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>Filter</b>(void) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Filter</b>(const std::vector< double > &taps) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>Filter</b>(void) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Filter</b>(const std::vector< double > &taps) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getCentreWavelength</b>(const std::vector< double > &wavelengthIn, const Vector2d< double > &srf, const std::string &interpolationType, double delta=1.0, bool verbose=false) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getCentreWavelength</b>(const std::vector< double > &wavelengthIn, const Vector2d< double > &srf, const std::string &interpolationType, double delta=1.0, bool verbose=false) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getFilterType</b>(const std::string filterType) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getFilterType</b>(const std::string filterType) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getPadding</b>(const std::string &padString) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getSavGolayCoefficients</b>(std::vector< double > &c, int np, int nl, int nr, int ld, int m) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getWaveletType</b>(const std::string waveletType) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getWaveletType</b>(const std::string waveletType) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>lubksb</b>(std::vector< double > &a, std::vector< int > &indx, std::vector< double > &b) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ludcmp</b>(std::vector< double > &a, std::vector< int > &indx, double &d) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>morphology</b>(const ImgReaderGdal &input, ImgWriterGdal &output, const std::string &method, int dim, short verbose=0) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>morphology</b>(const std::vector< T > &input, std::vector< T > &output, const std::string &method, int dim, bool verbose=false) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>morphology</b>(const ImgReaderGdal &input, ImgWriterGdal &output, const std::string &method, int dim, short verbose=0) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pushClass</b>(short theClass=1) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>pushClass</b>(short theClass=1) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pushMask</b>(short theMask=0) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>pushMask</b>(short theMask=0) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pushNoDataValue</b>(double noDataValue) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>pushThreshold</b>(double theThreshold) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setNoDataValues</b>(std::vector< double > vnodata) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setPadding</b>(const std::string &padString) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setTaps</b>(const std::vector< double > &taps, bool normalize=true) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setTaps</b>(const std::vector< double > &taps, bool normalize=true) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setThresholds</b>(const std::vector< double > &theThresholds) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>smooth</b>(const std::vector< T > &input, std::vector< T > &output, short dim) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>smooth</b>(T *input, int inputSize, std::vector< T > &output, short dim) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>smooth</b>(const ImgReaderGdal &input, ImgWriterGdal &output, short dim) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>smooth</b>(const std::vector< T > &input, std::vector< T > &output, short dim) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>smooth</b>(T *input, int inputSize, std::vector< T > &output, short dim) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>smooth</b>(const ImgReaderGdal &input, ImgWriterGdal &output, short dim) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>smooth</b>(T *input, int inputSize, std::vector< T > &output, short dim) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>smoothNoData</b>(const std::vector< T > &input, const std::string &interpolationType, std::vector< T > &output) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>smoothNoData</b>(const ImgReaderGdal &input, const std::string &interpolationType, ImgWriterGdal &output) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>stat</b>(const ImgReaderGdal &input, ImgWriterGdal &output, const std::string &method) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>stat</b>(const ImgReaderGdal &input, ImgWriterGdal &output, const std::string &method) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>stats</b>(const ImgReaderGdal &input, ImgWriterGdal &output, const std::vector< std::string > &methods) (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~Filter</b>() (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~Filter</b>() (defined in <a class="el" href="classfilter_1_1Filter.html">filter::Filter</a>)</td><td class="entry"><a class="el" href="classfilter_1_1Filter.html">filter::Filter</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classfilter_1_1Filter.html b/doc/html/classfilter_1_1Filter.html
deleted file mode 100644
index 4863f09..0000000
--- a/doc/html/classfilter_1_1Filter.html
+++ /dev/null
@@ -1,329 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: filter::Filter Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>filter</b></li><li class="navelem"><a class="el" href="classfilter_1_1Filter.html">Filter</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-static-methods">Static Public Member Functions</a> |
-<a href="classfilter_1_1Filter-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">filter::Filter Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a4ff1ddbd0439ccddb0eaafa7e9275666"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4ff1ddbd0439ccddb0eaafa7e9275666"></a>
- </td><td class="memItemRight" valign="bottom"><b>Filter</b> (const std::vector< double > &taps)</td></tr>
-<tr class="separator:a4ff1ddbd0439ccddb0eaafa7e9275666"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac26c9bfefedc4834b57e9ab1aec87224"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac26c9bfefedc4834b57e9ab1aec87224"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setPadding</b> (const std::string &padString)</td></tr>
-<tr class="separator:ac26c9bfefedc4834b57e9ab1aec87224"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac89eab9edeff79efea2bed6bc19a7a92"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac89eab9edeff79efea2bed6bc19a7a92"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setTaps</b> (const std::vector< double > &taps, bool normalize=true)</td></tr>
-<tr class="separator:ac89eab9edeff79efea2bed6bc19a7a92"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a36465972da723f10600080de7ac8d82a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a36465972da723f10600080de7ac8d82a"></a>
-void </td><td class="memItemRight" valign="bottom"><b>pushClass</b> (short theClass=1)</td></tr>
-<tr class="separator:a36465972da723f10600080de7ac8d82a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8023d7e37589845ded33a9ce3cd65dab"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8023d7e37589845ded33a9ce3cd65dab"></a>
-void </td><td class="memItemRight" valign="bottom"><b>pushMask</b> (short theMask=0)</td></tr>
-<tr class="separator:a8023d7e37589845ded33a9ce3cd65dab"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a296df7520949f10388b337b72609a668"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a296df7520949f10388b337b72609a668"></a>
-unsigned int </td><td class="memItemRight" valign="bottom"><b>pushNoDataValue</b> (double noDataValue)</td></tr>
-<tr class="separator:a296df7520949f10388b337b72609a668"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a65966ac7cadf4f6b0d3cb7fbdfa0fd96"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a65966ac7cadf4f6b0d3cb7fbdfa0fd96"></a>
-unsigned int </td><td class="memItemRight" valign="bottom"><b>setNoDataValues</b> (std::vector< double > vnodata)</td></tr>
-<tr class="separator:a65966ac7cadf4f6b0d3cb7fbdfa0fd96"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a542707e526b3fc1d1a447a160f84790b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a542707e526b3fc1d1a447a160f84790b"></a>
-void </td><td class="memItemRight" valign="bottom"><b>pushThreshold</b> (double theThreshold)</td></tr>
-<tr class="separator:a542707e526b3fc1d1a447a160f84790b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af8f31c1160b17fdfae26178b7018a6ea"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af8f31c1160b17fdfae26178b7018a6ea"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setThresholds</b> (const std::vector< double > &theThresholds)</td></tr>
-<tr class="separator:af8f31c1160b17fdfae26178b7018a6ea"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3be50ce8beda454c14172206a5df234b"><td class="memTemplParams" colspan="2"><a class="anchor" id="a3be50ce8beda454c14172206a5df234b"></a>
-template<class T > </td></tr>
-<tr class="memitem:a3be50ce8beda454c14172206a5df234b"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>filter</b> (const std::vector< T > &input, std::vector< T > &output)</td></tr>
-<tr class="separator:a3be50ce8beda454c14172206a5df234b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5d0a97415ba579992c258315a7ecdcf3"><td class="memTemplParams" colspan="2"><a class="anchor" id="a5d0a97415ba579992c258315a7ecdcf3"></a>
-template<class T > </td></tr>
-<tr class="memitem:a5d0a97415ba579992c258315a7ecdcf3"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>filter</b> (const std::vector< T > &input, std::vector< T > &output, const std::string &method, int dim)</td></tr>
-<tr class="separator:a5d0a97415ba579992c258315a7ecdcf3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afa3f2577e46fec0944faf21c8e6ecf20"><td class="memTemplParams" colspan="2"><a class="anchor" id="afa3f2577e46fec0944faf21c8e6ecf20"></a>
-template<class T > </td></tr>
-<tr class="memitem:afa3f2577e46fec0944faf21c8e6ecf20"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>smooth</b> (const std::vector< T > &input, std::vector< T > &output, short dim)</td></tr>
-<tr class="separator:afa3f2577e46fec0944faf21c8e6ecf20"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1e7c78dfb6724470721018c45b938e32"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1e7c78dfb6724470721018c45b938e32"></a>
-template<class T > </td></tr>
-<tr class="memitem:a1e7c78dfb6724470721018c45b938e32"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>smoothNoData</b> (const std::vector< T > &input, const std::string &interpolationType, std::vector< T > &output)</td></tr>
-<tr class="separator:a1e7c78dfb6724470721018c45b938e32"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad3b873072da53931df24e107904c7d65"><td class="memTemplParams" colspan="2"><a class="anchor" id="ad3b873072da53931df24e107904c7d65"></a>
-template<class T > </td></tr>
-<tr class="memitem:ad3b873072da53931df24e107904c7d65"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>filter</b> (T *input, int inputSize, std::vector< T > &output)</td></tr>
-<tr class="separator:ad3b873072da53931df24e107904c7d65"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac9da637b07e80bc5c02d17a352c50fdf"><td class="memTemplParams" colspan="2"><a class="anchor" id="ac9da637b07e80bc5c02d17a352c50fdf"></a>
-template<class T > </td></tr>
-<tr class="memitem:ac9da637b07e80bc5c02d17a352c50fdf"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>smooth</b> (T *input, int inputSize, std::vector< T > &output, short dim)</td></tr>
-<tr class="separator:ac9da637b07e80bc5c02d17a352c50fdf"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a83362ed47ef8df0ffb600310d82ddbd4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a83362ed47ef8df0ffb600310d82ddbd4"></a>
-void </td><td class="memItemRight" valign="bottom"><b>morphology</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &input, <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a> &output, const std::string &method, int dim, short verbose=0)</td></tr>
-<tr class="separator:a83362ed47ef8df0ffb600310d82ddbd4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a99f57bcbe78d6b90e80f2b64407a0cbb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a99f57bcbe78d6b90e80f2b64407a0cbb"></a>
-void </td><td class="memItemRight" valign="bottom"><b>filter</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &input, <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a> &output)</td></tr>
-<tr class="separator:a99f57bcbe78d6b90e80f2b64407a0cbb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae0e2990875162e2baba5986f351f9b0f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae0e2990875162e2baba5986f351f9b0f"></a>
-void </td><td class="memItemRight" valign="bottom"><b>stat</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &input, <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a> &output, const std::string &method)</td></tr>
-<tr class="separator:ae0e2990875162e2baba5986f351f9b0f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afac4ecfc1dcaa983c2cea44d4a6b23ce"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afac4ecfc1dcaa983c2cea44d4a6b23ce"></a>
-void </td><td class="memItemRight" valign="bottom"><b>stats</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &input, <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a> &output, const std::vector< std::string > &methods)</td></tr>
-<tr class="separator:afac4ecfc1dcaa983c2cea44d4a6b23ce"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a050448e66c190a2f56c62686fb0a5215"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a050448e66c190a2f56c62686fb0a5215"></a>
-void </td><td class="memItemRight" valign="bottom"><b>filter</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &input, <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a> &output, const std::string &method, int dim)</td></tr>
-<tr class="separator:a050448e66c190a2f56c62686fb0a5215"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a552f978ba6be6aaf3fd17572e9bf7f0e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a552f978ba6be6aaf3fd17572e9bf7f0e"></a>
-void </td><td class="memItemRight" valign="bottom"><b>getSavGolayCoefficients</b> (std::vector< double > &c, int np, int nl, int nr, int ld, int m)</td></tr>
-<tr class="separator:a552f978ba6be6aaf3fd17572e9bf7f0e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1fcb5a15b23f4b750701329c5a392d5a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1fcb5a15b23f4b750701329c5a392d5a"></a>
-void </td><td class="memItemRight" valign="bottom"><b>ludcmp</b> (std::vector< double > &a, std::vector< int > &indx, double &d)</td></tr>
-<tr class="separator:a1fcb5a15b23f4b750701329c5a392d5a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac42760b057c2febec0242cc48afcef90"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac42760b057c2febec0242cc48afcef90"></a>
-void </td><td class="memItemRight" valign="bottom"><b>lubksb</b> (std::vector< double > &a, std::vector< int > &indx, std::vector< double > &b)</td></tr>
-<tr class="separator:ac42760b057c2febec0242cc48afcef90"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af91824b0dbd1497eaebed5cd8280bf56"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af91824b0dbd1497eaebed5cd8280bf56"></a>
-void </td><td class="memItemRight" valign="bottom"><b>smooth</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &input, <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a> &output, short dim)</td></tr>
-<tr class="separator:af91824b0dbd1497eaebed5cd8280bf56"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4894c0252dacd8ff9cb5ec6a907a84a3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4894c0252dacd8ff9cb5ec6a907a84a3"></a>
-void </td><td class="memItemRight" valign="bottom"><b>smoothNoData</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &input, const std::string &interpolationType, <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a> &output)</td></tr>
-<tr class="separator:a4894c0252dacd8ff9cb5ec6a907a84a3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a234ae27bd82765cd617dc2c421647176"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a234ae27bd82765cd617dc2c421647176"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getCentreWavelength</b> (const std::vector< double > &wavelengthIn, const <a class="el" href="classVector2d.html">Vector2d</a>< double > &srf, const std::string &interpolationType, double delta=1.0, bool verbose=false)</td></tr>
-<tr class="separator:a234ae27bd82765cd617dc2c421647176"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5a4dad3e37d690cff2f03ad3c82a2cff"><td class="memTemplParams" colspan="2"><a class="anchor" id="a5a4dad3e37d690cff2f03ad3c82a2cff"></a>
-template<class T > </td></tr>
-<tr class="memitem:a5a4dad3e37d690cff2f03ad3c82a2cff"><td class="memTemplItemLeft" align="right" valign="top">double </td><td class="memTemplItemRight" valign="bottom"><b>applySrf</b> (const std::vector< double > &wavelengthIn, const std::vector< T > &input, const <a class="el" href="classVector2d.html">Vector2d</a>< double > &srf, const std::string &interpolationType, T &output, double delta=1.0, bool normalize=false, bool verbose=false)</td></tr>
-<tr class="separator:a5a4dad3e37d690cff2f03ad3c82a2cff"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a381288d83dd61975c8e8451f2346a1aa"><td class="memTemplParams" colspan="2"><a class="anchor" id="a381288d83dd61975c8e8451f2346a1aa"></a>
-template<class T > </td></tr>
-<tr class="memitem:a381288d83dd61975c8e8451f2346a1aa"><td class="memTemplItemLeft" align="right" valign="top">double </td><td class="memTemplItemRight" valign="bottom"><b>applySrf</b> (const std::vector< double > &wavelengthIn, const <a class="el" href="classVector2d.html">Vector2d</a>< T > &input, const <a class="el" href="classVector2d.html">Vector2d</a>< double > &srf, const std::string &interpolationType, std::vector< T > &output, doub [...]
-<tr class="separator:a381288d83dd61975c8e8451f2346a1aa"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af2b80b309d377cbea2858f4f27ef1413"><td class="memTemplParams" colspan="2"><a class="anchor" id="af2b80b309d377cbea2858f4f27ef1413"></a>
-template<class T > </td></tr>
-<tr class="memitem:af2b80b309d377cbea2858f4f27ef1413"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>applyFwhm</b> (const std::vector< double > &wavelengthIn, const std::vector< T > &input, const std::vector< double > &wavelengthOut, const std::vector< double > &fwhm, const std::string &interpolationType, std::vector< T > &output, bool verbose=false)</td></tr>
-<tr class="separator:af2b80b309d377cbea2858f4f27ef1413"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a41e7b4a064898d0f8165ca8ef8893a14"><td class="memTemplParams" colspan="2"><a class="anchor" id="a41e7b4a064898d0f8165ca8ef8893a14"></a>
-template<class T > </td></tr>
-<tr class="memitem:a41e7b4a064898d0f8165ca8ef8893a14"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>applyFwhm</b> (const std::vector< double > &wavelengthIn, const <a class="el" href="classVector2d.html">Vector2d</a>< T > &input, const std::vector< double > &wavelengthOut, const std::vector< double > &fwhm, const std::string &interpolationType, <a class="el" href="classVe [...]
-<tr class="separator:a41e7b4a064898d0f8165ca8ef8893a14"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3eed9fc0556de577a98913884b20d519"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3eed9fc0556de577a98913884b20d519"></a>
-void </td><td class="memItemRight" valign="bottom"><b>dwtForward</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &input, <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a> &output, const std::string &wavelet_type, int family)</td></tr>
-<tr class="separator:a3eed9fc0556de577a98913884b20d519"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa4a228c3c4563c189adba5ce2786b91a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa4a228c3c4563c189adba5ce2786b91a"></a>
-void </td><td class="memItemRight" valign="bottom"><b>dwtInverse</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &input, <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a> &output, const std::string &wavelet_type, int family)</td></tr>
-<tr class="separator:aa4a228c3c4563c189adba5ce2786b91a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af6f8c5812de0ddd67cdd11709e35efac"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af6f8c5812de0ddd67cdd11709e35efac"></a>
-void </td><td class="memItemRight" valign="bottom"><b>dwtCut</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &input, <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a> &output, const std::string &wavelet_type, int family, double cut)</td></tr>
-<tr class="separator:af6f8c5812de0ddd67cdd11709e35efac"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab81f3b58fd69563ed3e95ee8291d3bc1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab81f3b58fd69563ed3e95ee8291d3bc1"></a>
-void </td><td class="memItemRight" valign="bottom"><b>dwtForward</b> (std::vector< double > &data, const std::string &wavelet_type, int family)</td></tr>
-<tr class="separator:ab81f3b58fd69563ed3e95ee8291d3bc1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af0c8204c19c5c0a42c75d850e73210a7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af0c8204c19c5c0a42c75d850e73210a7"></a>
-void </td><td class="memItemRight" valign="bottom"><b>dwtInverse</b> (std::vector< double > &data, const std::string &wavelet_type, int family)</td></tr>
-<tr class="separator:af0c8204c19c5c0a42c75d850e73210a7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5f5c8741d10eb20e7aac88843aa3511b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5f5c8741d10eb20e7aac88843aa3511b"></a>
-void </td><td class="memItemRight" valign="bottom"><b>dwtCut</b> (std::vector< double > &data, const std::string &wavelet_type, int family, double cut)</td></tr>
-<tr class="separator:a5f5c8741d10eb20e7aac88843aa3511b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1e61e59c7e5af8296d621366d1963559"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1e61e59c7e5af8296d621366d1963559"></a>
-void </td><td class="memItemRight" valign="bottom"><b>dwtCutFrom</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &input, <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a> &output, const std::string &wavelet_type, int family, int band)</td></tr>
-<tr class="separator:a1e61e59c7e5af8296d621366d1963559"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4ff1ddbd0439ccddb0eaafa7e9275666"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4ff1ddbd0439ccddb0eaafa7e9275666"></a>
- </td><td class="memItemRight" valign="bottom"><b>Filter</b> (const std::vector< double > &taps)</td></tr>
-<tr class="separator:a4ff1ddbd0439ccddb0eaafa7e9275666"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac89eab9edeff79efea2bed6bc19a7a92"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac89eab9edeff79efea2bed6bc19a7a92"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setTaps</b> (const std::vector< double > &taps, bool normalize=true)</td></tr>
-<tr class="separator:ac89eab9edeff79efea2bed6bc19a7a92"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a36465972da723f10600080de7ac8d82a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a36465972da723f10600080de7ac8d82a"></a>
-void </td><td class="memItemRight" valign="bottom"><b>pushClass</b> (short theClass=1)</td></tr>
-<tr class="separator:a36465972da723f10600080de7ac8d82a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8023d7e37589845ded33a9ce3cd65dab"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8023d7e37589845ded33a9ce3cd65dab"></a>
-void </td><td class="memItemRight" valign="bottom"><b>pushMask</b> (short theMask=0)</td></tr>
-<tr class="separator:a8023d7e37589845ded33a9ce3cd65dab"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3be50ce8beda454c14172206a5df234b"><td class="memTemplParams" colspan="2"><a class="anchor" id="a3be50ce8beda454c14172206a5df234b"></a>
-template<class T > </td></tr>
-<tr class="memitem:a3be50ce8beda454c14172206a5df234b"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>filter</b> (const std::vector< T > &input, std::vector< T > &output)</td></tr>
-<tr class="separator:a3be50ce8beda454c14172206a5df234b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5d0a97415ba579992c258315a7ecdcf3"><td class="memTemplParams" colspan="2"><a class="anchor" id="a5d0a97415ba579992c258315a7ecdcf3"></a>
-template<class T > </td></tr>
-<tr class="memitem:a5d0a97415ba579992c258315a7ecdcf3"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>filter</b> (const std::vector< T > &input, std::vector< T > &output, const std::string &method, int dim)</td></tr>
-<tr class="separator:a5d0a97415ba579992c258315a7ecdcf3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afa3f2577e46fec0944faf21c8e6ecf20"><td class="memTemplParams" colspan="2"><a class="anchor" id="afa3f2577e46fec0944faf21c8e6ecf20"></a>
-template<class T > </td></tr>
-<tr class="memitem:afa3f2577e46fec0944faf21c8e6ecf20"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>smooth</b> (const std::vector< T > &input, std::vector< T > &output, short dim)</td></tr>
-<tr class="separator:afa3f2577e46fec0944faf21c8e6ecf20"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad3b873072da53931df24e107904c7d65"><td class="memTemplParams" colspan="2"><a class="anchor" id="ad3b873072da53931df24e107904c7d65"></a>
-template<class T > </td></tr>
-<tr class="memitem:ad3b873072da53931df24e107904c7d65"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>filter</b> (T *input, int inputSize, std::vector< T > &output)</td></tr>
-<tr class="separator:ad3b873072da53931df24e107904c7d65"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac9da637b07e80bc5c02d17a352c50fdf"><td class="memTemplParams" colspan="2"><a class="anchor" id="ac9da637b07e80bc5c02d17a352c50fdf"></a>
-template<class T > </td></tr>
-<tr class="memitem:ac9da637b07e80bc5c02d17a352c50fdf"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>smooth</b> (T *input, int inputSize, std::vector< T > &output, short dim)</td></tr>
-<tr class="separator:ac9da637b07e80bc5c02d17a352c50fdf"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4e6b1990bb265680b5ab8729e0d4ce65"><td class="memTemplParams" colspan="2"><a class="anchor" id="a4e6b1990bb265680b5ab8729e0d4ce65"></a>
-template<class T > </td></tr>
-<tr class="memitem:a4e6b1990bb265680b5ab8729e0d4ce65"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>morphology</b> (const std::vector< T > &input, std::vector< T > &output, const std::string &method, int dim, bool verbose=false)</td></tr>
-<tr class="separator:a4e6b1990bb265680b5ab8729e0d4ce65"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a83362ed47ef8df0ffb600310d82ddbd4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a83362ed47ef8df0ffb600310d82ddbd4"></a>
-void </td><td class="memItemRight" valign="bottom"><b>morphology</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &input, <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a> &output, const std::string &method, int dim, short verbose=0)</td></tr>
-<tr class="separator:a83362ed47ef8df0ffb600310d82ddbd4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a99f57bcbe78d6b90e80f2b64407a0cbb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a99f57bcbe78d6b90e80f2b64407a0cbb"></a>
-void </td><td class="memItemRight" valign="bottom"><b>filter</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &input, <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a> &output)</td></tr>
-<tr class="separator:a99f57bcbe78d6b90e80f2b64407a0cbb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae0e2990875162e2baba5986f351f9b0f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae0e2990875162e2baba5986f351f9b0f"></a>
-void </td><td class="memItemRight" valign="bottom"><b>stat</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &input, <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a> &output, const std::string &method)</td></tr>
-<tr class="separator:ae0e2990875162e2baba5986f351f9b0f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a050448e66c190a2f56c62686fb0a5215"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a050448e66c190a2f56c62686fb0a5215"></a>
-void </td><td class="memItemRight" valign="bottom"><b>filter</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &input, <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a> &output, const std::string &method, int dim)</td></tr>
-<tr class="separator:a050448e66c190a2f56c62686fb0a5215"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af91824b0dbd1497eaebed5cd8280bf56"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af91824b0dbd1497eaebed5cd8280bf56"></a>
-void </td><td class="memItemRight" valign="bottom"><b>smooth</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &input, <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a> &output, short dim)</td></tr>
-<tr class="separator:af91824b0dbd1497eaebed5cd8280bf56"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a234ae27bd82765cd617dc2c421647176"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a234ae27bd82765cd617dc2c421647176"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getCentreWavelength</b> (const std::vector< double > &wavelengthIn, const <a class="el" href="classVector2d.html">Vector2d</a>< double > &srf, const std::string &interpolationType, double delta=1.0, bool verbose=false)</td></tr>
-<tr class="separator:a234ae27bd82765cd617dc2c421647176"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5a4dad3e37d690cff2f03ad3c82a2cff"><td class="memTemplParams" colspan="2"><a class="anchor" id="a5a4dad3e37d690cff2f03ad3c82a2cff"></a>
-template<class T > </td></tr>
-<tr class="memitem:a5a4dad3e37d690cff2f03ad3c82a2cff"><td class="memTemplItemLeft" align="right" valign="top">double </td><td class="memTemplItemRight" valign="bottom"><b>applySrf</b> (const std::vector< double > &wavelengthIn, const std::vector< T > &input, const <a class="el" href="classVector2d.html">Vector2d</a>< double > &srf, const std::string &interpolationType, T &output, double delta=1.0, bool normalize=false, bool verbose=false)</td></tr>
-<tr class="separator:a5a4dad3e37d690cff2f03ad3c82a2cff"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a381288d83dd61975c8e8451f2346a1aa"><td class="memTemplParams" colspan="2"><a class="anchor" id="a381288d83dd61975c8e8451f2346a1aa"></a>
-template<class T > </td></tr>
-<tr class="memitem:a381288d83dd61975c8e8451f2346a1aa"><td class="memTemplItemLeft" align="right" valign="top">double </td><td class="memTemplItemRight" valign="bottom"><b>applySrf</b> (const std::vector< double > &wavelengthIn, const <a class="el" href="classVector2d.html">Vector2d</a>< T > &input, const <a class="el" href="classVector2d.html">Vector2d</a>< double > &srf, const std::string &interpolationType, std::vector< T > &output, doub [...]
-<tr class="separator:a381288d83dd61975c8e8451f2346a1aa"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af2b80b309d377cbea2858f4f27ef1413"><td class="memTemplParams" colspan="2"><a class="anchor" id="af2b80b309d377cbea2858f4f27ef1413"></a>
-template<class T > </td></tr>
-<tr class="memitem:af2b80b309d377cbea2858f4f27ef1413"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>applyFwhm</b> (const std::vector< double > &wavelengthIn, const std::vector< T > &input, const std::vector< double > &wavelengthOut, const std::vector< double > &fwhm, const std::string &interpolationType, std::vector< T > &output, bool verbose=false)</td></tr>
-<tr class="separator:af2b80b309d377cbea2858f4f27ef1413"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a41e7b4a064898d0f8165ca8ef8893a14"><td class="memTemplParams" colspan="2"><a class="anchor" id="a41e7b4a064898d0f8165ca8ef8893a14"></a>
-template<class T > </td></tr>
-<tr class="memitem:a41e7b4a064898d0f8165ca8ef8893a14"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>applyFwhm</b> (const std::vector< double > &wavelengthIn, const <a class="el" href="classVector2d.html">Vector2d</a>< T > &input, const std::vector< double > &wavelengthOut, const std::vector< double > &fwhm, const std::string &interpolationType, <a class="el" href="classVe [...]
-<tr class="separator:a41e7b4a064898d0f8165ca8ef8893a14"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3eed9fc0556de577a98913884b20d519"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3eed9fc0556de577a98913884b20d519"></a>
-void </td><td class="memItemRight" valign="bottom"><b>dwtForward</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &input, <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a> &output, const std::string &wavelet_type, int family)</td></tr>
-<tr class="separator:a3eed9fc0556de577a98913884b20d519"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa4a228c3c4563c189adba5ce2786b91a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa4a228c3c4563c189adba5ce2786b91a"></a>
-void </td><td class="memItemRight" valign="bottom"><b>dwtInverse</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &input, <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a> &output, const std::string &wavelet_type, int family)</td></tr>
-<tr class="separator:aa4a228c3c4563c189adba5ce2786b91a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af6f8c5812de0ddd67cdd11709e35efac"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af6f8c5812de0ddd67cdd11709e35efac"></a>
-void </td><td class="memItemRight" valign="bottom"><b>dwtCut</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &input, <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a> &output, const std::string &wavelet_type, int family, double cut)</td></tr>
-<tr class="separator:af6f8c5812de0ddd67cdd11709e35efac"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab81f3b58fd69563ed3e95ee8291d3bc1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab81f3b58fd69563ed3e95ee8291d3bc1"></a>
-void </td><td class="memItemRight" valign="bottom"><b>dwtForward</b> (std::vector< double > &data, const std::string &wavelet_type, int family)</td></tr>
-<tr class="separator:ab81f3b58fd69563ed3e95ee8291d3bc1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af0c8204c19c5c0a42c75d850e73210a7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af0c8204c19c5c0a42c75d850e73210a7"></a>
-void </td><td class="memItemRight" valign="bottom"><b>dwtInverse</b> (std::vector< double > &data, const std::string &wavelet_type, int family)</td></tr>
-<tr class="separator:af0c8204c19c5c0a42c75d850e73210a7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5f5c8741d10eb20e7aac88843aa3511b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5f5c8741d10eb20e7aac88843aa3511b"></a>
-void </td><td class="memItemRight" valign="bottom"><b>dwtCut</b> (std::vector< double > &data, const std::string &wavelet_type, int family, double cut)</td></tr>
-<tr class="separator:a5f5c8741d10eb20e7aac88843aa3511b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1e61e59c7e5af8296d621366d1963559"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1e61e59c7e5af8296d621366d1963559"></a>
-void </td><td class="memItemRight" valign="bottom"><b>dwtCutFrom</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &input, <a class="el" href="classImgWriterGdal.html">ImgWriterGdal</a> &output, const std::string &wavelet_type, int family, int band)</td></tr>
-<tr class="separator:a1e61e59c7e5af8296d621366d1963559"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac9da637b07e80bc5c02d17a352c50fdf"><td class="memTemplParams" colspan="2"><a class="anchor" id="ac9da637b07e80bc5c02d17a352c50fdf"></a>
-template<class T > </td></tr>
-<tr class="memitem:ac9da637b07e80bc5c02d17a352c50fdf"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>smooth</b> (T *input, int inputSize, std::vector< T > &output, short dim)</td></tr>
-<tr class="separator:ac9da637b07e80bc5c02d17a352c50fdf"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad3b873072da53931df24e107904c7d65"><td class="memTemplParams" colspan="2"><a class="anchor" id="ad3b873072da53931df24e107904c7d65"></a>
-template<class T > </td></tr>
-<tr class="memitem:ad3b873072da53931df24e107904c7d65"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>filter</b> (T *input, int inputSize, std::vector< T > &output)</td></tr>
-<tr class="separator:ad3b873072da53931df24e107904c7d65"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr class="memitem:a27a8c0eab2fdd27817b4a9a9269f4412"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a27a8c0eab2fdd27817b4a9a9269f4412"></a>
-static const gsl_wavelet_type * </td><td class="memItemRight" valign="bottom"><b>getWaveletType</b> (const std::string waveletType)</td></tr>
-<tr class="separator:a27a8c0eab2fdd27817b4a9a9269f4412"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a66f8033bde2fcdb990f8841ce6566942"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a66f8033bde2fcdb990f8841ce6566942"></a>
-static FILTER_TYPE </td><td class="memItemRight" valign="bottom"><b>getFilterType</b> (const std::string filterType)</td></tr>
-<tr class="separator:a66f8033bde2fcdb990f8841ce6566942"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a80237cb7e384c821caabf5ee918c0586"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a80237cb7e384c821caabf5ee918c0586"></a>
-static PADDING </td><td class="memItemRight" valign="bottom"><b>getPadding</b> (const std::string &padString)</td></tr>
-<tr class="separator:a80237cb7e384c821caabf5ee918c0586"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a27a8c0eab2fdd27817b4a9a9269f4412"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a27a8c0eab2fdd27817b4a9a9269f4412"></a>
-static const gsl_wavelet_type * </td><td class="memItemRight" valign="bottom"><b>getWaveletType</b> (const std::string waveletType)</td></tr>
-<tr class="separator:a27a8c0eab2fdd27817b4a9a9269f4412"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a66f8033bde2fcdb990f8841ce6566942"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a66f8033bde2fcdb990f8841ce6566942"></a>
-static FILTER_TYPE </td><td class="memItemRight" valign="bottom"><b>getFilterType</b> (const std::string filterType)</td></tr>
-<tr class="separator:a66f8033bde2fcdb990f8841ce6566942"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="Filter_8h_source.html#l00040">40</a> of file <a class="el" href="Filter_8h_source.html">Filter.h</a>.</p>
-</div><hr/>The documentation for this class was generated from the following files:<ul>
-<li>/home/kempenep/pktools/src/algorithms/<a class="el" href="Filter_8h_source.html">Filter.h</a></li>
-<li>/home/kempenep/pktools/src/algorithms/<a class="el" href="Filter__old_8h_source.html">Filter_old.h</a></li>
-<li>/home/kempenep/pktools/src/algorithms/<a class="el" href="Filter_8cc_source.html">Filter.cc</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classimgregression_1_1ImgRegression-members.html b/doc/html/classimgregression_1_1ImgRegression-members.html
deleted file mode 100644
index 7507b21..0000000
--- a/doc/html/classimgregression_1_1ImgRegression-members.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>imgregression</b></li><li class="navelem"><a class="el" href="classimgregression_1_1ImgRegression.html">ImgRegression</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">imgregression::ImgRegression Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classimgregression_1_1ImgRegression.html">imgregression::ImgRegression</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getR2</b>(const ImgReaderGdal &imgReader1, const ImgReaderGdal &imgReader2, double &c0, double &c1, unsigned short b1=0, unsigned short b2=0, short verbose=0) const  (defined in <a class="el" href="classimgregression_1_1ImgRegression.html">imgregression::ImgRegression</a>)</td><td class="entry"><a class="el" href="classimgregression_1_1ImgRegression.html">imgregression::ImgRegression</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getR2</b>(const ImgReaderGdal &imgReader, unsigned short b1, unsigned short b2, double &c0, double &c1, short verbose=0) const  (defined in <a class="el" href="classimgregression_1_1ImgRegression.html">imgregression::ImgRegression</a>)</td><td class="entry"><a class="el" href="classimgregression_1_1ImgRegression.html">imgregression::ImgRegression</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getRMSE</b>(const ImgReaderGdal &imgReader1, const ImgReaderGdal &imgReader2, double &c0, double &c1, unsigned short b1=0, unsigned short b2=0, short verbose=0) const  (defined in <a class="el" href="classimgregression_1_1ImgRegression.html">imgregression::ImgRegression</a>)</td><td class="entry"><a class="el" href="classimgregression_1_1ImgRegression.html">imgregression::ImgRegression</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getRMSE</b>(const ImgReaderGdal &imgReader, unsigned short b1, unsigned short b2, double &c0, double &c1, short verbose=0) const  (defined in <a class="el" href="classimgregression_1_1ImgRegression.html">imgregression::ImgRegression</a>)</td><td class="entry"><a class="el" href="classimgregression_1_1ImgRegression.html">imgregression::ImgRegression</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ImgRegression</b>(void) (defined in <a class="el" href="classimgregression_1_1ImgRegression.html">imgregression::ImgRegression</a>)</td><td class="entry"><a class="el" href="classimgregression_1_1ImgRegression.html">imgregression::ImgRegression</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>pgetR2</b>(const ImgReaderGdal &imgReader1, const ImgReaderGdal &imgReader2, double &c0, double &c1, unsigned short band1, unsigned short band2, short verbose=0) const  (defined in <a class="el" href="classimgregression_1_1ImgRegression.html">imgregression::ImgRegression</a>)</td><td class="entry"><a class="el" href="classimgregression_1_1ImgRegression.html">imgregression::ImgRegression</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pgetR2</b>(const ImgReaderGdal &imgReader, unsigned short band1, unsigned short band2, double &c0, double &c1, short verbose=0) const  (defined in <a class="el" href="classimgregression_1_1ImgRegression.html">imgregression::ImgRegression</a>)</td><td class="entry"><a class="el" href="classimgregression_1_1ImgRegression.html">imgregression::ImgRegression</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setDown</b>(int theDown) (defined in <a class="el" href="classimgregression_1_1ImgRegression.html">imgregression::ImgRegression</a>)</td><td class="entry"><a class="el" href="classimgregression_1_1ImgRegression.html">imgregression::ImgRegression</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setThreshold</b>(double theThreshold) (defined in <a class="el" href="classimgregression_1_1ImgRegression.html">imgregression::ImgRegression</a>)</td><td class="entry"><a class="el" href="classimgregression_1_1ImgRegression.html">imgregression::ImgRegression</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~ImgRegression</b>(void) (defined in <a class="el" href="classimgregression_1_1ImgRegression.html">imgregression::ImgRegression</a>)</td><td class="entry"><a class="el" href="classimgregression_1_1ImgRegression.html">imgregression::ImgRegression</a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classimgregression_1_1ImgRegression.html b/doc/html/classimgregression_1_1ImgRegression.html
deleted file mode 100644
index cee569c..0000000
--- a/doc/html/classimgregression_1_1ImgRegression.html
+++ /dev/null
@@ -1,113 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: imgregression::ImgRegression Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>imgregression</b></li><li class="navelem"><a class="el" href="classimgregression_1_1ImgRegression.html">ImgRegression</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="classimgregression_1_1ImgRegression-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">imgregression::ImgRegression Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a5b7755ffdd8217bbccf98d4c829cbe08"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5b7755ffdd8217bbccf98d4c829cbe08"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getRMSE</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &imgReader1, const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &imgReader2, double &c0, double &c1, unsigned short b1=0, unsigned short b2=0, short verbose=0) const </td></tr>
-<tr class="separator:a5b7755ffdd8217bbccf98d4c829cbe08"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a51edee4b32e24a78f6fc97cfae41baea"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a51edee4b32e24a78f6fc97cfae41baea"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getRMSE</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &imgReader, unsigned short b1, unsigned short b2, double &c0, double &c1, short verbose=0) const </td></tr>
-<tr class="separator:a51edee4b32e24a78f6fc97cfae41baea"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a88bab191720e1f8a47de6ce7378f0e50"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a88bab191720e1f8a47de6ce7378f0e50"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getR2</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &imgReader1, const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &imgReader2, double &c0, double &c1, unsigned short b1=0, unsigned short b2=0, short verbose=0) const </td></tr>
-<tr class="separator:a88bab191720e1f8a47de6ce7378f0e50"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a37affb0f4c5ebf29efc81c62625cb8f1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a37affb0f4c5ebf29efc81c62625cb8f1"></a>
-double </td><td class="memItemRight" valign="bottom"><b>pgetR2</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &imgReader1, const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &imgReader2, double &c0, double &c1, unsigned short band1, unsigned short band2, short verbose=0) const </td></tr>
-<tr class="separator:a37affb0f4c5ebf29efc81c62625cb8f1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5580afcfa0174a2a8bd2376feb5ca2df"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5580afcfa0174a2a8bd2376feb5ca2df"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getR2</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &imgReader, unsigned short b1, unsigned short b2, double &c0, double &c1, short verbose=0) const </td></tr>
-<tr class="separator:a5580afcfa0174a2a8bd2376feb5ca2df"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a55c901f741cef61808f8b77509085e76"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a55c901f741cef61808f8b77509085e76"></a>
-double </td><td class="memItemRight" valign="bottom"><b>pgetR2</b> (const <a class="el" href="classImgReaderGdal.html">ImgReaderGdal</a> &imgReader, unsigned short band1, unsigned short band2, double &c0, double &c1, short verbose=0) const </td></tr>
-<tr class="separator:a55c901f741cef61808f8b77509085e76"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aea02679e46f1a31c1628361f6e884d9d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aea02679e46f1a31c1628361f6e884d9d"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setThreshold</b> (double theThreshold)</td></tr>
-<tr class="separator:aea02679e46f1a31c1628361f6e884d9d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac1a38b1f361de8d0ca3c1a4f35ae8d0c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac1a38b1f361de8d0ca3c1a4f35ae8d0c"></a>
-void </td><td class="memItemRight" valign="bottom"><b>setDown</b> (int theDown)</td></tr>
-<tr class="separator:ac1a38b1f361de8d0ca3c1a4f35ae8d0c"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="ImgRegression_8h_source.html#l00030">30</a> of file <a class="el" href="ImgRegression_8h_source.html">ImgRegression.h</a>.</p>
-</div><hr/>The documentation for this class was generated from the following files:<ul>
-<li>/home/kempenep/pktools/src/algorithms/<a class="el" href="ImgRegression_8h_source.html">ImgRegression.h</a></li>
-<li>/home/kempenep/pktools/src/algorithms/<a class="el" href="ImgRegression_8cc_source.html">ImgRegression.cc</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin-members.html b/doc/html/classqgis_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin-members.html
deleted file mode 100644
index 811c0ef..0000000
--- a/doc/html/classqgis_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin-members.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>ProcessingPktoolsPlugin</b></li><li class="navelem"><a class="el" href="classqgis_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin.html">ProcessingPktoolsPlugin</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">qgis.ProcessingPktoolsPlugin.ProcessingPktoolsPlugin Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classqgis_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin.html">qgis.ProcessingPktoolsPlugin.ProcessingPktoolsPlugin</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>__init__</b> (defined in <a class="el" href="classqgis_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin.html">qgis.ProcessingPktoolsPlugin.ProcessingPktoolsPlugin</a>)</td><td class="entry"><a class="el" href="classqgis_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin.html">qgis.ProcessingPktoolsPlugin.ProcessingPktoolsPlugin</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>initGui</b> (defined in <a class="el" href="classqgis_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin.html">qgis.ProcessingPktoolsPlugin.ProcessingPktoolsPlugin</a>)</td><td class="entry"><a class="el" href="classqgis_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin.html">qgis.ProcessingPktoolsPlugin.ProcessingPktoolsPlugin</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>provider</b> (defined in <a class="el" href="classqgis_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin.html">qgis.ProcessingPktoolsPlugin.ProcessingPktoolsPlugin</a>)</td><td class="entry"><a class="el" href="classqgis_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin.html">qgis.ProcessingPktoolsPlugin.ProcessingPktoolsPlugin</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>unload</b> (defined in <a class="el" href="classqgis_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin.html">qgis.ProcessingPktoolsPlugin.ProcessingPktoolsPlugin</a>)</td><td class="entry"><a class="el" href="classqgis_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin.html">qgis.ProcessingPktoolsPlugin.ProcessingPktoolsPlugin</a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin.html b/doc/html/classqgis_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin.html
deleted file mode 100644
index 965c1fe..0000000
--- a/doc/html/classqgis_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin.html
+++ /dev/null
@@ -1,104 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: qgis.ProcessingPktoolsPlugin.ProcessingPktoolsPlugin Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>ProcessingPktoolsPlugin</b></li><li class="navelem"><a class="el" href="classqgis_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin.html">ProcessingPktoolsPlugin</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="classqgis_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">qgis.ProcessingPktoolsPlugin.ProcessingPktoolsPlugin Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:aa9bf8b288f8d812e20cd014aab978326"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa9bf8b288f8d812e20cd014aab978326"></a>
-def </td><td class="memItemRight" valign="bottom"><b>__init__</b></td></tr>
-<tr class="separator:aa9bf8b288f8d812e20cd014aab978326"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a62ca078ba93ec8854530cae4fdb50f44"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a62ca078ba93ec8854530cae4fdb50f44"></a>
-def </td><td class="memItemRight" valign="bottom"><b>initGui</b></td></tr>
-<tr class="separator:a62ca078ba93ec8854530cae4fdb50f44"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a96ab61e337c527a56abeaa6a96b790b6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a96ab61e337c527a56abeaa6a96b790b6"></a>
-def </td><td class="memItemRight" valign="bottom"><b>unload</b></td></tr>
-<tr class="separator:a96ab61e337c527a56abeaa6a96b790b6"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:a5de532d34abad9efe561b48f8e7fdf32"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5de532d34abad9efe561b48f8e7fdf32"></a>
- </td><td class="memItemRight" valign="bottom"><b>provider</b></td></tr>
-<tr class="separator:a5de532d34abad9efe561b48f8e7fdf32"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="ProcessingPktoolsPlugin_8py_source.html#l00040">40</a> of file <a class="el" href="ProcessingPktoolsPlugin_8py_source.html">ProcessingPktoolsPlugin.py</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/qgis/<a class="el" href="ProcessingPktoolsPlugin_8py_source.html">ProcessingPktoolsPlugin.py</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pkcomposite_1_1pkcomposite-members.html b/doc/html/classqgis_1_1pkcomposite_1_1pkcomposite-members.html
deleted file mode 100644
index 79bd3f2..0000000
--- a/doc/html/classqgis_1_1pkcomposite_1_1pkcomposite-members.html
+++ /dev/null
@@ -1,101 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pkcomposite</b></li><li class="navelem"><a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">pkcomposite</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">qgis.pkcomposite.pkcomposite Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>BNDNODATA</b> (defined in <a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>CB</b> (defined in <a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cliName</b> (defined in <a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>CRULE</b> (defined in <a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>CRULE_OPTIONS</b> (defined in <a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>defineCharacteristics</b> (defined in <a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>DSTNODATA</b> (defined in <a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>DX</b> (defined in <a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>DY</b> (defined in <a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>EXTRA</b> (defined in <a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>group</b> (defined in <a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>INPUT</b> (defined in <a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>MAXGUI</b> (defined in <a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>MINGUI</b> (defined in <a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>name</b> (defined in <a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>OUTPUT</b> (defined in <a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>processAlgorithm</b> (defined in <a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>PROJWIN</b> (defined in <a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>RESAMPLE</b> (defined in <a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>RESAMPLE_OPTIONS</b> (defined in <a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>RTYPE</b> (defined in <a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>SRCNODATA</b> (defined in <a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>TYPE</b> (defined in <a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pkcomposite_1_1pkcomposite.html b/doc/html/classqgis_1_1pkcomposite_1_1pkcomposite.html
deleted file mode 100644
index f9fde11..0000000
--- a/doc/html/classqgis_1_1pkcomposite_1_1pkcomposite.html
+++ /dev/null
@@ -1,175 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: qgis.pkcomposite.pkcomposite Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pkcomposite</b></li><li class="navelem"><a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">pkcomposite</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="classqgis_1_1pkcomposite_1_1pkcomposite-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">qgis.pkcomposite.pkcomposite Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for qgis.pkcomposite.pkcomposite:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pkcomposite_1_1pkcomposite__inherit__graph.png" border="0" usemap="#qgis_8pkcomposite_8pkcomposite_inherit__map" alt="Inheritance graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for qgis.pkcomposite.pkcomposite:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pkcomposite_1_1pkcomposite__coll__graph.png" border="0" usemap="#qgis_8pkcomposite_8pkcomposite_coll__map" alt="Collaboration graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a50e046d7f4d00ac95080ec2b2f281bb6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a50e046d7f4d00ac95080ec2b2f281bb6"></a>
-def </td><td class="memItemRight" valign="bottom"><b>cliName</b></td></tr>
-<tr class="separator:a50e046d7f4d00ac95080ec2b2f281bb6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1cf2090d81d678e95ef15cb8fbea18fe"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1cf2090d81d678e95ef15cb8fbea18fe"></a>
-def </td><td class="memItemRight" valign="bottom"><b>defineCharacteristics</b></td></tr>
-<tr class="separator:a1cf2090d81d678e95ef15cb8fbea18fe"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae2ffb4dcf36bc5cc006a5b78b1f4c4f7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae2ffb4dcf36bc5cc006a5b78b1f4c4f7"></a>
-def </td><td class="memItemRight" valign="bottom"><b>processAlgorithm</b></td></tr>
-<tr class="separator:ae2ffb4dcf36bc5cc006a5b78b1f4c4f7"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:af9ff4b9a274bc1edb87048da555c78c5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af9ff4b9a274bc1edb87048da555c78c5"></a>
- </td><td class="memItemRight" valign="bottom"><b>name</b></td></tr>
-<tr class="separator:af9ff4b9a274bc1edb87048da555c78c5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a93043eb33d26bf02e375323ca06ece59"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a93043eb33d26bf02e375323ca06ece59"></a>
- </td><td class="memItemRight" valign="bottom"><b>group</b></td></tr>
-<tr class="separator:a93043eb33d26bf02e375323ca06ece59"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:aebe799f44d6edf989b3d82412c02809a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aebe799f44d6edf989b3d82412c02809a"></a>
-string </td><td class="memItemRight" valign="bottom"><b>INPUT</b> = "INPUT"</td></tr>
-<tr class="separator:aebe799f44d6edf989b3d82412c02809a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a74b1ad0686d3e17322917be01eff6ac1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a74b1ad0686d3e17322917be01eff6ac1"></a>
-string </td><td class="memItemRight" valign="bottom"><b>OUTPUT</b> = "OUTPUT"</td></tr>
-<tr class="separator:a74b1ad0686d3e17322917be01eff6ac1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a17e19984fe0607f36ee4cee78b9e5d06"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a17e19984fe0607f36ee4cee78b9e5d06"></a>
-list </td><td class="memItemRight" valign="bottom"><b>CRULE_OPTIONS</b> = ["overwrite", "maxndvi", "maxband", "minband", "validband", "mean", "mode", "median", "sum", "minallbands", "maxallbands","stdev"]</td></tr>
-<tr class="separator:a17e19984fe0607f36ee4cee78b9e5d06"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa82de884f201e7c964fd97e55faa3df3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa82de884f201e7c964fd97e55faa3df3"></a>
-string </td><td class="memItemRight" valign="bottom"><b>CRULE</b> = "CRULE"</td></tr>
-<tr class="separator:aa82de884f201e7c964fd97e55faa3df3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae54bec0854b09e103e5dbe2146589997"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae54bec0854b09e103e5dbe2146589997"></a>
-string </td><td class="memItemRight" valign="bottom"><b>DX</b> = "DX"</td></tr>
-<tr class="separator:ae54bec0854b09e103e5dbe2146589997"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9b797d46ca05fd41a88d0400351bd828"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9b797d46ca05fd41a88d0400351bd828"></a>
-string </td><td class="memItemRight" valign="bottom"><b>DY</b> = "DY"</td></tr>
-<tr class="separator:a9b797d46ca05fd41a88d0400351bd828"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad003c6db03be187acded3c0890568c61"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad003c6db03be187acded3c0890568c61"></a>
-string </td><td class="memItemRight" valign="bottom"><b>PROJWIN</b> = 'PROJWIN'</td></tr>
-<tr class="separator:ad003c6db03be187acded3c0890568c61"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a75b586bb10dce1cb66553e222d3a214c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a75b586bb10dce1cb66553e222d3a214c"></a>
-string </td><td class="memItemRight" valign="bottom"><b>CB</b> = "CB"</td></tr>
-<tr class="separator:a75b586bb10dce1cb66553e222d3a214c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3c056445acdf3afd1cd26acd12c3c8f0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3c056445acdf3afd1cd26acd12c3c8f0"></a>
-string </td><td class="memItemRight" valign="bottom"><b>SRCNODATA</b> = "SRCNODATA"</td></tr>
-<tr class="separator:a3c056445acdf3afd1cd26acd12c3c8f0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a65825f1ecd8b707d842cdc9b6bef2722"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a65825f1ecd8b707d842cdc9b6bef2722"></a>
-string </td><td class="memItemRight" valign="bottom"><b>BNDNODATA</b> = "BNDNODATA"</td></tr>
-<tr class="separator:a65825f1ecd8b707d842cdc9b6bef2722"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a243d2bbaac6c49959b2117a4042fa219"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a243d2bbaac6c49959b2117a4042fa219"></a>
-string </td><td class="memItemRight" valign="bottom"><b>DSTNODATA</b> = "DSTNODATA"</td></tr>
-<tr class="separator:a243d2bbaac6c49959b2117a4042fa219"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3e62273f4e72fcf528d3c2a2bf2f407d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3e62273f4e72fcf528d3c2a2bf2f407d"></a>
-string </td><td class="memItemRight" valign="bottom"><b>MINGUI</b> = "MINGUI"</td></tr>
-<tr class="separator:a3e62273f4e72fcf528d3c2a2bf2f407d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3bc122ffa6ff04ac4da3c486387bf7cc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3bc122ffa6ff04ac4da3c486387bf7cc"></a>
-string </td><td class="memItemRight" valign="bottom"><b>MAXGUI</b> = "MAXGUI"</td></tr>
-<tr class="separator:a3bc122ffa6ff04ac4da3c486387bf7cc"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a08c3a8025fa0f42847033e6c7bfd6585"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a08c3a8025fa0f42847033e6c7bfd6585"></a>
-list </td><td class="memItemRight" valign="bottom"><b>RESAMPLE_OPTIONS</b> = ['near', 'bilinear']</td></tr>
-<tr class="separator:a08c3a8025fa0f42847033e6c7bfd6585"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a54b2d965b3a847cc1975fd62c9c4dce1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a54b2d965b3a847cc1975fd62c9c4dce1"></a>
-string </td><td class="memItemRight" valign="bottom"><b>RESAMPLE</b> = "RESAMPLE"</td></tr>
-<tr class="separator:a54b2d965b3a847cc1975fd62c9c4dce1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa65064fbe6e45aff10bd5e803026d12a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa65064fbe6e45aff10bd5e803026d12a"></a>
-string </td><td class="memItemRight" valign="bottom"><b>RTYPE</b> = 'RTYPE'</td></tr>
-<tr class="separator:aa65064fbe6e45aff10bd5e803026d12a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a71098b4079244d80eb821653a6e32f00"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a71098b4079244d80eb821653a6e32f00"></a>
-list </td><td class="memItemRight" valign="bottom"><b>TYPE</b> = ['none', 'Byte','Int16','UInt16','UInt32','Int32','Float32','Float64','CInt16','CInt32','CFloat32','CFloat64']</td></tr>
-<tr class="separator:a71098b4079244d80eb821653a6e32f00"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2a6835752fccf49eb80614d762310c49"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2a6835752fccf49eb80614d762310c49"></a>
-string </td><td class="memItemRight" valign="bottom"><b>EXTRA</b> = 'EXTRA'</td></tr>
-<tr class="separator:a2a6835752fccf49eb80614d762310c49"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="pkcomposite_8py_source.html#l00038">38</a> of file <a class="el" href="pkcomposite_8py_source.html">pkcomposite.py</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/qgis/<a class="el" href="pkcomposite_8py_source.html">pkcomposite.py</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pkcomposite_1_1pkcomposite__coll__graph.map b/doc/html/classqgis_1_1pkcomposite_1_1pkcomposite__coll__graph.map
deleted file mode 100644
index 21d2dcf..0000000
--- a/doc/html/classqgis_1_1pkcomposite_1_1pkcomposite__coll__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pkcomposite.pkcomposite" name="qgis.pkcomposite.pkcomposite">
-</map>
diff --git a/doc/html/classqgis_1_1pkcomposite_1_1pkcomposite__coll__graph.md5 b/doc/html/classqgis_1_1pkcomposite_1_1pkcomposite__coll__graph.md5
deleted file mode 100644
index 68db713..0000000
--- a/doc/html/classqgis_1_1pkcomposite_1_1pkcomposite__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-425d972d11444a735f88cea7a9295e8a
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pkcomposite_1_1pkcomposite__coll__graph.png b/doc/html/classqgis_1_1pkcomposite_1_1pkcomposite__coll__graph.png
deleted file mode 100644
index e550e99..0000000
Binary files a/doc/html/classqgis_1_1pkcomposite_1_1pkcomposite__coll__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pkcomposite_1_1pkcomposite__inherit__graph.map b/doc/html/classqgis_1_1pkcomposite_1_1pkcomposite__inherit__graph.map
deleted file mode 100644
index 21d2dcf..0000000
--- a/doc/html/classqgis_1_1pkcomposite_1_1pkcomposite__inherit__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pkcomposite.pkcomposite" name="qgis.pkcomposite.pkcomposite">
-</map>
diff --git a/doc/html/classqgis_1_1pkcomposite_1_1pkcomposite__inherit__graph.md5 b/doc/html/classqgis_1_1pkcomposite_1_1pkcomposite__inherit__graph.md5
deleted file mode 100644
index 68db713..0000000
--- a/doc/html/classqgis_1_1pkcomposite_1_1pkcomposite__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-425d972d11444a735f88cea7a9295e8a
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pkcomposite_1_1pkcomposite__inherit__graph.png b/doc/html/classqgis_1_1pkcomposite_1_1pkcomposite__inherit__graph.png
deleted file mode 100644
index e550e99..0000000
Binary files a/doc/html/classqgis_1_1pkcomposite_1_1pkcomposite__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pkcrop_1_1pkcrop-members.html b/doc/html/classqgis_1_1pkcrop_1_1pkcrop-members.html
deleted file mode 100644
index 668af7b..0000000
--- a/doc/html/classqgis_1_1pkcrop_1_1pkcrop-members.html
+++ /dev/null
@@ -1,95 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pkcrop</b></li><li class="navelem"><a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html">pkcrop</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">qgis.pkcrop.pkcrop Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html">qgis.pkcrop.pkcrop</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>BAND</b> (defined in <a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html">qgis.pkcrop.pkcrop</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html">qgis.pkcrop.pkcrop</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>cliName</b> (defined in <a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html">qgis.pkcrop.pkcrop</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html">qgis.pkcrop.pkcrop</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>defineCharacteristics</b> (defined in <a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html">qgis.pkcrop.pkcrop</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html">qgis.pkcrop.pkcrop</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>DX</b> (defined in <a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html">qgis.pkcrop.pkcrop</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html">qgis.pkcrop.pkcrop</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>DY</b> (defined in <a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html">qgis.pkcrop.pkcrop</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html">qgis.pkcrop.pkcrop</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>EXTRA</b> (defined in <a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html">qgis.pkcrop.pkcrop</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html">qgis.pkcrop.pkcrop</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>group</b> (defined in <a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html">qgis.pkcrop.pkcrop</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html">qgis.pkcrop.pkcrop</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>INPUT</b> (defined in <a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html">qgis.pkcrop.pkcrop</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html">qgis.pkcrop.pkcrop</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>name</b> (defined in <a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html">qgis.pkcrop.pkcrop</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html">qgis.pkcrop.pkcrop</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>NODATA</b> (defined in <a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html">qgis.pkcrop.pkcrop</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html">qgis.pkcrop.pkcrop</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>OUTPUT</b> (defined in <a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html">qgis.pkcrop.pkcrop</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html">qgis.pkcrop.pkcrop</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>processAlgorithm</b> (defined in <a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html">qgis.pkcrop.pkcrop</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html">qgis.pkcrop.pkcrop</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>PROJWIN</b> (defined in <a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html">qgis.pkcrop.pkcrop</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html">qgis.pkcrop.pkcrop</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>RESAMPLE</b> (defined in <a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html">qgis.pkcrop.pkcrop</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html">qgis.pkcrop.pkcrop</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>RESAMPLE_OPTIONS</b> (defined in <a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html">qgis.pkcrop.pkcrop</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html">qgis.pkcrop.pkcrop</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>RTYPE</b> (defined in <a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html">qgis.pkcrop.pkcrop</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html">qgis.pkcrop.pkcrop</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>TYPE</b> (defined in <a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html">qgis.pkcrop.pkcrop</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html">qgis.pkcrop.pkcrop</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pkcrop_1_1pkcrop.html b/doc/html/classqgis_1_1pkcrop_1_1pkcrop.html
deleted file mode 100644
index c2b4a76..0000000
--- a/doc/html/classqgis_1_1pkcrop_1_1pkcrop.html
+++ /dev/null
@@ -1,157 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: qgis.pkcrop.pkcrop Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pkcrop</b></li><li class="navelem"><a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html">pkcrop</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="classqgis_1_1pkcrop_1_1pkcrop-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">qgis.pkcrop.pkcrop Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for qgis.pkcrop.pkcrop:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pkcrop_1_1pkcrop__inherit__graph.png" border="0" usemap="#qgis_8pkcrop_8pkcrop_inherit__map" alt="Inheritance graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for qgis.pkcrop.pkcrop:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pkcrop_1_1pkcrop__coll__graph.png" border="0" usemap="#qgis_8pkcrop_8pkcrop_coll__map" alt="Collaboration graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a0a169418d9b1c0e55c1c09c711b920b1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0a169418d9b1c0e55c1c09c711b920b1"></a>
-def </td><td class="memItemRight" valign="bottom"><b>cliName</b></td></tr>
-<tr class="separator:a0a169418d9b1c0e55c1c09c711b920b1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3737ba86bc1676fd8276c43b1bf8a12b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3737ba86bc1676fd8276c43b1bf8a12b"></a>
-def </td><td class="memItemRight" valign="bottom"><b>defineCharacteristics</b></td></tr>
-<tr class="separator:a3737ba86bc1676fd8276c43b1bf8a12b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad91ffec9ffdd327ac66d08506ea8fca5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad91ffec9ffdd327ac66d08506ea8fca5"></a>
-def </td><td class="memItemRight" valign="bottom"><b>processAlgorithm</b></td></tr>
-<tr class="separator:ad91ffec9ffdd327ac66d08506ea8fca5"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:a21c98defb19a723cbdbcae90e5c414b9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a21c98defb19a723cbdbcae90e5c414b9"></a>
- </td><td class="memItemRight" valign="bottom"><b>name</b></td></tr>
-<tr class="separator:a21c98defb19a723cbdbcae90e5c414b9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a15a208344b67a578ed7592105617762f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a15a208344b67a578ed7592105617762f"></a>
- </td><td class="memItemRight" valign="bottom"><b>group</b></td></tr>
-<tr class="separator:a15a208344b67a578ed7592105617762f"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:a660abf1b5edd9b7c39f49a48748e73b5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a660abf1b5edd9b7c39f49a48748e73b5"></a>
-string </td><td class="memItemRight" valign="bottom"><b>INPUT</b> = "INPUT"</td></tr>
-<tr class="separator:a660abf1b5edd9b7c39f49a48748e73b5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afab963f14ed687777ea04b6b03a44708"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afab963f14ed687777ea04b6b03a44708"></a>
-string </td><td class="memItemRight" valign="bottom"><b>OUTPUT</b> = "OUTPUT"</td></tr>
-<tr class="separator:afab963f14ed687777ea04b6b03a44708"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa64c23657fe96444fe2d03717be4b5c5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa64c23657fe96444fe2d03717be4b5c5"></a>
-string </td><td class="memItemRight" valign="bottom"><b>DX</b> = "DX"</td></tr>
-<tr class="separator:aa64c23657fe96444fe2d03717be4b5c5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac5779beb227252f20da289d505f4deee"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac5779beb227252f20da289d505f4deee"></a>
-string </td><td class="memItemRight" valign="bottom"><b>DY</b> = "DY"</td></tr>
-<tr class="separator:ac5779beb227252f20da289d505f4deee"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6f6f27285700550bb52391c36d130328"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6f6f27285700550bb52391c36d130328"></a>
-string </td><td class="memItemRight" valign="bottom"><b>PROJWIN</b> = 'PROJWIN'</td></tr>
-<tr class="separator:a6f6f27285700550bb52391c36d130328"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5993a8cc5d573cf0bc3a0d97a1811cd7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5993a8cc5d573cf0bc3a0d97a1811cd7"></a>
-string </td><td class="memItemRight" valign="bottom"><b>BAND</b> = "BAND"</td></tr>
-<tr class="separator:a5993a8cc5d573cf0bc3a0d97a1811cd7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9d01bfa7ad85384abf071d59c0f5f69e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9d01bfa7ad85384abf071d59c0f5f69e"></a>
-string </td><td class="memItemRight" valign="bottom"><b>NODATA</b> = "NODATA"</td></tr>
-<tr class="separator:a9d01bfa7ad85384abf071d59c0f5f69e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4ca284fa3cb6e48275aa399f6547d4f2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4ca284fa3cb6e48275aa399f6547d4f2"></a>
-list </td><td class="memItemRight" valign="bottom"><b>RESAMPLE_OPTIONS</b> = ['near', 'bilinear']</td></tr>
-<tr class="separator:a4ca284fa3cb6e48275aa399f6547d4f2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a000a9bda4206edf6ef542590140e43e8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a000a9bda4206edf6ef542590140e43e8"></a>
-string </td><td class="memItemRight" valign="bottom"><b>RESAMPLE</b> = "RESAMPLE"</td></tr>
-<tr class="separator:a000a9bda4206edf6ef542590140e43e8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a67d94ff9e997ceda91ff39334e1e668a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a67d94ff9e997ceda91ff39334e1e668a"></a>
-string </td><td class="memItemRight" valign="bottom"><b>RTYPE</b> = 'RTYPE'</td></tr>
-<tr class="separator:a67d94ff9e997ceda91ff39334e1e668a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa901690d584f08efbc4a4225985fde89"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa901690d584f08efbc4a4225985fde89"></a>
-list </td><td class="memItemRight" valign="bottom"><b>TYPE</b> = ['none', 'Byte','Int16','UInt16','UInt32','Int32','Float32','Float64','CInt16','CInt32','CFloat32','CFloat64']</td></tr>
-<tr class="separator:aa901690d584f08efbc4a4225985fde89"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7c99a0e343473c7cfc94623c115590db"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7c99a0e343473c7cfc94623c115590db"></a>
-string </td><td class="memItemRight" valign="bottom"><b>EXTRA</b> = 'EXTRA'</td></tr>
-<tr class="separator:a7c99a0e343473c7cfc94623c115590db"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="pkcrop_8py_source.html#l00038">38</a> of file <a class="el" href="pkcrop_8py_source.html">pkcrop.py</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/qgis/<a class="el" href="pkcrop_8py_source.html">pkcrop.py</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pkcrop_1_1pkcrop__coll__graph.map b/doc/html/classqgis_1_1pkcrop_1_1pkcrop__coll__graph.map
deleted file mode 100644
index 6fad624..0000000
--- a/doc/html/classqgis_1_1pkcrop_1_1pkcrop__coll__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pkcrop.pkcrop" name="qgis.pkcrop.pkcrop">
-</map>
diff --git a/doc/html/classqgis_1_1pkcrop_1_1pkcrop__coll__graph.md5 b/doc/html/classqgis_1_1pkcrop_1_1pkcrop__coll__graph.md5
deleted file mode 100644
index 59a9c94..0000000
--- a/doc/html/classqgis_1_1pkcrop_1_1pkcrop__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-96897278b3ac460a3a4a246c00581d44
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pkcrop_1_1pkcrop__coll__graph.png b/doc/html/classqgis_1_1pkcrop_1_1pkcrop__coll__graph.png
deleted file mode 100644
index 4cd3744..0000000
Binary files a/doc/html/classqgis_1_1pkcrop_1_1pkcrop__coll__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pkcrop_1_1pkcrop__inherit__graph.map b/doc/html/classqgis_1_1pkcrop_1_1pkcrop__inherit__graph.map
deleted file mode 100644
index 6fad624..0000000
--- a/doc/html/classqgis_1_1pkcrop_1_1pkcrop__inherit__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pkcrop.pkcrop" name="qgis.pkcrop.pkcrop">
-</map>
diff --git a/doc/html/classqgis_1_1pkcrop_1_1pkcrop__inherit__graph.md5 b/doc/html/classqgis_1_1pkcrop_1_1pkcrop__inherit__graph.md5
deleted file mode 100644
index 59a9c94..0000000
--- a/doc/html/classqgis_1_1pkcrop_1_1pkcrop__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-96897278b3ac460a3a4a246c00581d44
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pkcrop_1_1pkcrop__inherit__graph.png b/doc/html/classqgis_1_1pkcrop_1_1pkcrop__inherit__graph.png
deleted file mode 100644
index 4cd3744..0000000
Binary files a/doc/html/classqgis_1_1pkcrop_1_1pkcrop__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy-members.html b/doc/html/classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy-members.html
deleted file mode 100644
index a93c6b1..0000000
--- a/doc/html/classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy-members.html
+++ /dev/null
@@ -1,95 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pkdiff_accuracy</b></li><li class="navelem"><a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">pkdiff_accuracy</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">qgis.pkdiff_accuracy.pkdiff_accuracy Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pkdiff_accuracy.pkdiff_accuracy</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cliName</b> (defined in <a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pkdiff_accuracy.pkdiff_accuracy</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pkdiff_accuracy.pkdiff_accuracy</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>CMFORMAT</b> (defined in <a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pkdiff_accuracy.pkdiff_accuracy</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pkdiff_accuracy.pkdiff_accuracy</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>CMFORMAT_OPTIONS</b> (defined in <a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pkdiff_accuracy.pkdiff_accuracy</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pkdiff_accuracy.pkdiff_accuracy</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>CMOUTPUT</b> (defined in <a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pkdiff_accuracy.pkdiff_accuracy</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pkdiff_accuracy.pkdiff_accuracy</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>defineCharacteristics</b> (defined in <a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pkdiff_accuracy.pkdiff_accuracy</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pkdiff_accuracy.pkdiff_accuracy</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>EXTRA</b> (defined in <a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pkdiff_accuracy.pkdiff_accuracy</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pkdiff_accuracy.pkdiff_accuracy</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>FORMAT</b> (defined in <a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pkdiff_accuracy.pkdiff_accuracy</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pkdiff_accuracy.pkdiff_accuracy</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>group</b> (defined in <a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pkdiff_accuracy.pkdiff_accuracy</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pkdiff_accuracy.pkdiff_accuracy</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>INPUT</b> (defined in <a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pkdiff_accuracy.pkdiff_accuracy</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pkdiff_accuracy.pkdiff_accuracy</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>ITERATE</b> (defined in <a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pkdiff_accuracy.pkdiff_accuracy</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pkdiff_accuracy.pkdiff_accuracy</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>LABELCLASS</b> (defined in <a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pkdiff_accuracy.pkdiff_accuracy</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pkdiff_accuracy.pkdiff_accuracy</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>LABELREF</b> (defined in <a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pkdiff_accuracy.pkdiff_accuracy</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pkdiff_accuracy.pkdiff_accuracy</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>name</b> (defined in <a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pkdiff_accuracy.pkdiff_accuracy</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pkdiff_accuracy.pkdiff_accuracy</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>NODATA</b> (defined in <a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pkdiff_accuracy.pkdiff_accuracy</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pkdiff_accuracy.pkdiff_accuracy</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>OUTPUT</b> (defined in <a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pkdiff_accuracy.pkdiff_accuracy</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pkdiff_accuracy.pkdiff_accuracy</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>processAlgorithm</b> (defined in <a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pkdiff_accuracy.pkdiff_accuracy</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pkdiff_accuracy.pkdiff_accuracy</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>REFERENCE</b> (defined in <a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pkdiff_accuracy.pkdiff_accuracy</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pkdiff_accuracy.pkdiff_accuracy</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html b/doc/html/classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html
deleted file mode 100644
index 13257ee..0000000
--- a/doc/html/classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html
+++ /dev/null
@@ -1,157 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: qgis.pkdiff_accuracy.pkdiff_accuracy Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pkdiff_accuracy</b></li><li class="navelem"><a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">pkdiff_accuracy</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">qgis.pkdiff_accuracy.pkdiff_accuracy Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for qgis.pkdiff_accuracy.pkdiff_accuracy:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy__inherit__graph.png" border="0" usemap="#qgis_8pkdiff__accuracy_8pkdiff__accuracy_inherit__map" alt="Inheritance graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for qgis.pkdiff_accuracy.pkdiff_accuracy:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy__coll__graph.png" border="0" usemap="#qgis_8pkdiff__accuracy_8pkdiff__accuracy_coll__map" alt="Collaboration graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a176e2f67f3be853c9197d99f4cd16a1c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a176e2f67f3be853c9197d99f4cd16a1c"></a>
-def </td><td class="memItemRight" valign="bottom"><b>cliName</b></td></tr>
-<tr class="separator:a176e2f67f3be853c9197d99f4cd16a1c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a616318b2e7f62de1a61615b3192af1bc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a616318b2e7f62de1a61615b3192af1bc"></a>
-def </td><td class="memItemRight" valign="bottom"><b>defineCharacteristics</b></td></tr>
-<tr class="separator:a616318b2e7f62de1a61615b3192af1bc"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4cf4fcd1ae42c2380732c1d6b88cbe21"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4cf4fcd1ae42c2380732c1d6b88cbe21"></a>
-def </td><td class="memItemRight" valign="bottom"><b>processAlgorithm</b></td></tr>
-<tr class="separator:a4cf4fcd1ae42c2380732c1d6b88cbe21"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:aa1a0571329dbfd38e21385392bab8de1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa1a0571329dbfd38e21385392bab8de1"></a>
- </td><td class="memItemRight" valign="bottom"><b>name</b></td></tr>
-<tr class="separator:aa1a0571329dbfd38e21385392bab8de1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a724b6dc67c93a4392de92dcfca91f701"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a724b6dc67c93a4392de92dcfca91f701"></a>
- </td><td class="memItemRight" valign="bottom"><b>group</b></td></tr>
-<tr class="separator:a724b6dc67c93a4392de92dcfca91f701"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:a6cabc221036f66d975847866eaf14dd9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6cabc221036f66d975847866eaf14dd9"></a>
-string </td><td class="memItemRight" valign="bottom"><b>INPUT</b> = "INPUT"</td></tr>
-<tr class="separator:a6cabc221036f66d975847866eaf14dd9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afdaa56e3a00e8ad32fffd8600b998b92"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afdaa56e3a00e8ad32fffd8600b998b92"></a>
-string </td><td class="memItemRight" valign="bottom"><b>REFERENCE</b> = "REFERENCE"</td></tr>
-<tr class="separator:afdaa56e3a00e8ad32fffd8600b998b92"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2a294e32e185d1f58bbde4ae40f62c55"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2a294e32e185d1f58bbde4ae40f62c55"></a>
-string </td><td class="memItemRight" valign="bottom"><b>ITERATE</b> = "ITERATE"</td></tr>
-<tr class="separator:a2a294e32e185d1f58bbde4ae40f62c55"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a99f5e02f16130f80143086252a38ee93"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a99f5e02f16130f80143086252a38ee93"></a>
-string </td><td class="memItemRight" valign="bottom"><b>LABELREF</b> = "LABELREF"</td></tr>
-<tr class="separator:a99f5e02f16130f80143086252a38ee93"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a02de7992fb58aea0f628f8f3c1c937ac"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a02de7992fb58aea0f628f8f3c1c937ac"></a>
-string </td><td class="memItemRight" valign="bottom"><b>NODATA</b> = "NODATA"</td></tr>
-<tr class="separator:a02de7992fb58aea0f628f8f3c1c937ac"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a22d37343b09f74019a836f1489d24c02"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a22d37343b09f74019a836f1489d24c02"></a>
-string </td><td class="memItemRight" valign="bottom"><b>OUTPUT</b> = "OUTPUT"</td></tr>
-<tr class="separator:a22d37343b09f74019a836f1489d24c02"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a792f4cf29ee2f6034149c0233b32f4ff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a792f4cf29ee2f6034149c0233b32f4ff"></a>
-string </td><td class="memItemRight" valign="bottom"><b>CMOUTPUT</b> = "CMOUTPUT"</td></tr>
-<tr class="separator:a792f4cf29ee2f6034149c0233b32f4ff"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2ed757ec7259c4b56bee1acc8bbe1a61"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2ed757ec7259c4b56bee1acc8bbe1a61"></a>
-list </td><td class="memItemRight" valign="bottom"><b>CMFORMAT_OPTIONS</b> = ["ascii", "latex"]</td></tr>
-<tr class="separator:a2ed757ec7259c4b56bee1acc8bbe1a61"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a21c954c78e110bb1c93de64075afe182"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a21c954c78e110bb1c93de64075afe182"></a>
-string </td><td class="memItemRight" valign="bottom"><b>CMFORMAT</b> = "CMFORMAT"</td></tr>
-<tr class="separator:a21c954c78e110bb1c93de64075afe182"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab922ac43189488cb53e46bccd0d02b6a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab922ac43189488cb53e46bccd0d02b6a"></a>
-string </td><td class="memItemRight" valign="bottom"><b>FORMAT</b> = "FORMAT"</td></tr>
-<tr class="separator:ab922ac43189488cb53e46bccd0d02b6a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7580c2442f384fcc956e14d936a3a305"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7580c2442f384fcc956e14d936a3a305"></a>
-string </td><td class="memItemRight" valign="bottom"><b>LABELCLASS</b> = "LABELCLASS"</td></tr>
-<tr class="separator:a7580c2442f384fcc956e14d936a3a305"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a83684b7d1751c3e507df1b2a61c06e7d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a83684b7d1751c3e507df1b2a61c06e7d"></a>
-string </td><td class="memItemRight" valign="bottom"><b>EXTRA</b> = 'EXTRA'</td></tr>
-<tr class="separator:a83684b7d1751c3e507df1b2a61c06e7d"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="pkdiff__accuracy_8py_source.html#l00093">93</a> of file <a class="el" href="pkdiff__accuracy_8py_source.html">pkdiff_accuracy.py</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/qgis/<a class="el" href="pkdiff__accuracy_8py_source.html">pkdiff_accuracy.py</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy__coll__graph.map b/doc/html/classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy__coll__graph.map
deleted file mode 100644
index 9f350cc..0000000
--- a/doc/html/classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy__coll__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pkdiff_accuracy.pkdiff_accuracy" name="qgis.pkdiff_accuracy.pkdiff_accuracy">
-</map>
diff --git a/doc/html/classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy__coll__graph.md5 b/doc/html/classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy__coll__graph.md5
deleted file mode 100644
index b309139..0000000
--- a/doc/html/classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-ef701b67026c6319312d673a8645c11c
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy__coll__graph.png b/doc/html/classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy__coll__graph.png
deleted file mode 100644
index ec34fe7..0000000
Binary files a/doc/html/classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy__coll__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy__inherit__graph.map b/doc/html/classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy__inherit__graph.map
deleted file mode 100644
index 9f350cc..0000000
--- a/doc/html/classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy__inherit__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pkdiff_accuracy.pkdiff_accuracy" name="qgis.pkdiff_accuracy.pkdiff_accuracy">
-</map>
diff --git a/doc/html/classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy__inherit__graph.md5 b/doc/html/classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy__inherit__graph.md5
deleted file mode 100644
index b309139..0000000
--- a/doc/html/classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-ef701b67026c6319312d673a8645c11c
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy__inherit__graph.png b/doc/html/classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy__inherit__graph.png
deleted file mode 100644
index ec34fe7..0000000
Binary files a/doc/html/classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pkextract_1_1pkextract-members.html b/doc/html/classqgis_1_1pkextract_1_1pkextract-members.html
deleted file mode 100644
index c104fbf..0000000
--- a/doc/html/classqgis_1_1pkextract_1_1pkextract-members.html
+++ /dev/null
@@ -1,95 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pkextract</b></li><li class="navelem"><a class="el" href="classqgis_1_1pkextract_1_1pkextract.html">pkextract</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">qgis.pkextract.pkextract Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classqgis_1_1pkextract_1_1pkextract.html">qgis.pkextract.pkextract</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>BNDNODATA</b> (defined in <a class="el" href="classqgis_1_1pkextract_1_1pkextract.html">qgis.pkextract.pkextract</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract_1_1pkextract.html">qgis.pkextract.pkextract</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>BUFFER</b> (defined in <a class="el" href="classqgis_1_1pkextract_1_1pkextract.html">qgis.pkextract.pkextract</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract_1_1pkextract.html">qgis.pkextract.pkextract</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cliName</b> (defined in <a class="el" href="classqgis_1_1pkextract_1_1pkextract.html">qgis.pkextract.pkextract</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract_1_1pkextract.html">qgis.pkextract.pkextract</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>defineCharacteristics</b> (defined in <a class="el" href="classqgis_1_1pkextract_1_1pkextract.html">qgis.pkextract.pkextract</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract_1_1pkextract.html">qgis.pkextract.pkextract</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>EXTRA</b> (defined in <a class="el" href="classqgis_1_1pkextract_1_1pkextract.html">qgis.pkextract.pkextract</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract_1_1pkextract.html">qgis.pkextract.pkextract</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>FORMAT</b> (defined in <a class="el" href="classqgis_1_1pkextract_1_1pkextract.html">qgis.pkextract.pkextract</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract_1_1pkextract.html">qgis.pkextract.pkextract</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>group</b> (defined in <a class="el" href="classqgis_1_1pkextract_1_1pkextract.html">qgis.pkextract.pkextract</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract_1_1pkextract.html">qgis.pkextract.pkextract</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>INPUT</b> (defined in <a class="el" href="classqgis_1_1pkextract_1_1pkextract.html">qgis.pkextract.pkextract</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract_1_1pkextract.html">qgis.pkextract.pkextract</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ITERATE</b> (defined in <a class="el" href="classqgis_1_1pkextract_1_1pkextract.html">qgis.pkextract.pkextract</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract_1_1pkextract.html">qgis.pkextract.pkextract</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>name</b> (defined in <a class="el" href="classqgis_1_1pkextract_1_1pkextract.html">qgis.pkextract.pkextract</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract_1_1pkextract.html">qgis.pkextract.pkextract</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>OUTPUT</b> (defined in <a class="el" href="classqgis_1_1pkextract_1_1pkextract.html">qgis.pkextract.pkextract</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract_1_1pkextract.html">qgis.pkextract.pkextract</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>POLYGON</b> (defined in <a class="el" href="classqgis_1_1pkextract_1_1pkextract.html">qgis.pkextract.pkextract</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract_1_1pkextract.html">qgis.pkextract.pkextract</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>processAlgorithm</b> (defined in <a class="el" href="classqgis_1_1pkextract_1_1pkextract.html">qgis.pkextract.pkextract</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract_1_1pkextract.html">qgis.pkextract.pkextract</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>RULE</b> (defined in <a class="el" href="classqgis_1_1pkextract_1_1pkextract.html">qgis.pkextract.pkextract</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract_1_1pkextract.html">qgis.pkextract.pkextract</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>RULE_OPTIONS</b> (defined in <a class="el" href="classqgis_1_1pkextract_1_1pkextract.html">qgis.pkextract.pkextract</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract_1_1pkextract.html">qgis.pkextract.pkextract</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>SAMPLE</b> (defined in <a class="el" href="classqgis_1_1pkextract_1_1pkextract.html">qgis.pkextract.pkextract</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract_1_1pkextract.html">qgis.pkextract.pkextract</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>SRCNODATA</b> (defined in <a class="el" href="classqgis_1_1pkextract_1_1pkextract.html">qgis.pkextract.pkextract</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract_1_1pkextract.html">qgis.pkextract.pkextract</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pkextract_1_1pkextract.html b/doc/html/classqgis_1_1pkextract_1_1pkextract.html
deleted file mode 100644
index 0451abb..0000000
--- a/doc/html/classqgis_1_1pkextract_1_1pkextract.html
+++ /dev/null
@@ -1,157 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: qgis.pkextract.pkextract Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pkextract</b></li><li class="navelem"><a class="el" href="classqgis_1_1pkextract_1_1pkextract.html">pkextract</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="classqgis_1_1pkextract_1_1pkextract-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">qgis.pkextract.pkextract Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for qgis.pkextract.pkextract:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pkextract_1_1pkextract__inherit__graph.png" border="0" usemap="#qgis_8pkextract_8pkextract_inherit__map" alt="Inheritance graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for qgis.pkextract.pkextract:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pkextract_1_1pkextract__coll__graph.png" border="0" usemap="#qgis_8pkextract_8pkextract_coll__map" alt="Collaboration graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:af5bc2523851ece32499990c6b9bd64f7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af5bc2523851ece32499990c6b9bd64f7"></a>
-def </td><td class="memItemRight" valign="bottom"><b>cliName</b></td></tr>
-<tr class="separator:af5bc2523851ece32499990c6b9bd64f7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afcbad22aed08a530d92a7eec5cf8040d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afcbad22aed08a530d92a7eec5cf8040d"></a>
-def </td><td class="memItemRight" valign="bottom"><b>defineCharacteristics</b></td></tr>
-<tr class="separator:afcbad22aed08a530d92a7eec5cf8040d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2037cc4b42106e0bb97fcbb5d9eda7f7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2037cc4b42106e0bb97fcbb5d9eda7f7"></a>
-def </td><td class="memItemRight" valign="bottom"><b>processAlgorithm</b></td></tr>
-<tr class="separator:a2037cc4b42106e0bb97fcbb5d9eda7f7"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:a682fac32a3bbc98fe364fc9d2a46a9ed"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a682fac32a3bbc98fe364fc9d2a46a9ed"></a>
- </td><td class="memItemRight" valign="bottom"><b>name</b></td></tr>
-<tr class="separator:a682fac32a3bbc98fe364fc9d2a46a9ed"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab9995a84ad157685b2d27025cdad22b0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab9995a84ad157685b2d27025cdad22b0"></a>
- </td><td class="memItemRight" valign="bottom"><b>group</b></td></tr>
-<tr class="separator:ab9995a84ad157685b2d27025cdad22b0"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:a95e1c0317ddcaeda681980e70494a638"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a95e1c0317ddcaeda681980e70494a638"></a>
-string </td><td class="memItemRight" valign="bottom"><b>INPUT</b> = "INPUT"</td></tr>
-<tr class="separator:a95e1c0317ddcaeda681980e70494a638"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a152b797f760ae98e27adbad95c3a8729"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a152b797f760ae98e27adbad95c3a8729"></a>
-string </td><td class="memItemRight" valign="bottom"><b>SAMPLE</b> = "SAMPLE"</td></tr>
-<tr class="separator:a152b797f760ae98e27adbad95c3a8729"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7a00b2c269b8968376d90b0bf893df9f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7a00b2c269b8968376d90b0bf893df9f"></a>
-string </td><td class="memItemRight" valign="bottom"><b>ITERATE</b> = "ITERATE"</td></tr>
-<tr class="separator:a7a00b2c269b8968376d90b0bf893df9f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aebb093e7f23d360f6657f8833f5c73f3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aebb093e7f23d360f6657f8833f5c73f3"></a>
-string </td><td class="memItemRight" valign="bottom"><b>OUTPUT</b> = "OUTPUT"</td></tr>
-<tr class="separator:aebb093e7f23d360f6657f8833f5c73f3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a78b93513da9f4173cd4218204a77d20a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a78b93513da9f4173cd4218204a77d20a"></a>
-list </td><td class="memItemRight" valign="bottom"><b>RULE_OPTIONS</b> = ['centroid', 'point', 'mean', 'proportion', 'count', 'min', 'max', 'mode', 'sum', 'median', 'stdev', 'percentile']</td></tr>
-<tr class="separator:a78b93513da9f4173cd4218204a77d20a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af877cda3a19feb1f37d368d54680fd59"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af877cda3a19feb1f37d368d54680fd59"></a>
-string </td><td class="memItemRight" valign="bottom"><b>RULE</b> = "RULE"</td></tr>
-<tr class="separator:af877cda3a19feb1f37d368d54680fd59"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac120a3debadb9cbd38552fcdefba2fb0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac120a3debadb9cbd38552fcdefba2fb0"></a>
-string </td><td class="memItemRight" valign="bottom"><b>POLYGON</b> = "POLYGON"</td></tr>
-<tr class="separator:ac120a3debadb9cbd38552fcdefba2fb0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0052109b006ae33bb2014a05ffd9226f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0052109b006ae33bb2014a05ffd9226f"></a>
-string </td><td class="memItemRight" valign="bottom"><b>BUFFER</b> = "BUFFER"</td></tr>
-<tr class="separator:a0052109b006ae33bb2014a05ffd9226f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab4431ebf4ce448655fcc25366f15abd3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab4431ebf4ce448655fcc25366f15abd3"></a>
-string </td><td class="memItemRight" valign="bottom"><b>SRCNODATA</b> = "SRCNODATA"</td></tr>
-<tr class="separator:ab4431ebf4ce448655fcc25366f15abd3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1cb12c6b9a06225999395afa50b17987"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1cb12c6b9a06225999395afa50b17987"></a>
-string </td><td class="memItemRight" valign="bottom"><b>BNDNODATA</b> = "BNDNODATA"</td></tr>
-<tr class="separator:a1cb12c6b9a06225999395afa50b17987"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a741cc5d777e44ecde629f16a2499ae6c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a741cc5d777e44ecde629f16a2499ae6c"></a>
-string </td><td class="memItemRight" valign="bottom"><b>EXTRA</b> = 'EXTRA'</td></tr>
-<tr class="separator:a741cc5d777e44ecde629f16a2499ae6c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aec905ae5cbf25bc9d1a4a592bff30311"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aec905ae5cbf25bc9d1a4a592bff30311"></a>
-string </td><td class="memItemRight" valign="bottom"><b>FORMAT</b> = "FORMAT"</td></tr>
-<tr class="separator:aec905ae5cbf25bc9d1a4a592bff30311"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="pkextract_8py_source.html#l00087">87</a> of file <a class="el" href="pkextract_8py_source.html">pkextract.py</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/qgis/<a class="el" href="pkextract_8py_source.html">pkextract.py</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pkextract_1_1pkextract__coll__graph.map b/doc/html/classqgis_1_1pkextract_1_1pkextract__coll__graph.map
deleted file mode 100644
index 48a5d78..0000000
--- a/doc/html/classqgis_1_1pkextract_1_1pkextract__coll__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pkextract.pkextract" name="qgis.pkextract.pkextract">
-</map>
diff --git a/doc/html/classqgis_1_1pkextract_1_1pkextract__coll__graph.md5 b/doc/html/classqgis_1_1pkextract_1_1pkextract__coll__graph.md5
deleted file mode 100644
index 90307c6..0000000
--- a/doc/html/classqgis_1_1pkextract_1_1pkextract__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-a6cee43ad8ab79b55c7d052fe8a940e4
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pkextract_1_1pkextract__coll__graph.png b/doc/html/classqgis_1_1pkextract_1_1pkextract__coll__graph.png
deleted file mode 100644
index bda8417..0000000
Binary files a/doc/html/classqgis_1_1pkextract_1_1pkextract__coll__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pkextract_1_1pkextract__inherit__graph.map b/doc/html/classqgis_1_1pkextract_1_1pkextract__inherit__graph.map
deleted file mode 100644
index 48a5d78..0000000
--- a/doc/html/classqgis_1_1pkextract_1_1pkextract__inherit__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pkextract.pkextract" name="qgis.pkextract.pkextract">
-</map>
diff --git a/doc/html/classqgis_1_1pkextract_1_1pkextract__inherit__graph.md5 b/doc/html/classqgis_1_1pkextract_1_1pkextract__inherit__graph.md5
deleted file mode 100644
index 90307c6..0000000
--- a/doc/html/classqgis_1_1pkextract_1_1pkextract__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-a6cee43ad8ab79b55c7d052fe8a940e4
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pkextract_1_1pkextract__inherit__graph.png b/doc/html/classqgis_1_1pkextract_1_1pkextract__inherit__graph.png
deleted file mode 100644
index bda8417..0000000
Binary files a/doc/html/classqgis_1_1pkextract_1_1pkextract__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pkextract__grid_1_1pkextract__grid-members.html b/doc/html/classqgis_1_1pkextract__grid_1_1pkextract__grid-members.html
deleted file mode 100644
index 37ec688..0000000
--- a/doc/html/classqgis_1_1pkextract__grid_1_1pkextract__grid-members.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pkextract_grid</b></li><li class="navelem"><a class="el" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">pkextract_grid</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">qgis.pkextract_grid.pkextract_grid Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pkextract_grid.pkextract_grid</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>BNDNODATA</b> (defined in <a class="el" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pkextract_grid.pkextract_grid</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pkextract_grid.pkextract_grid</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>BUFFER</b> (defined in <a class="el" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pkextract_grid.pkextract_grid</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pkextract_grid.pkextract_grid</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cliName</b> (defined in <a class="el" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pkextract_grid.pkextract_grid</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pkextract_grid.pkextract_grid</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>defineCharacteristics</b> (defined in <a class="el" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pkextract_grid.pkextract_grid</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pkextract_grid.pkextract_grid</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>EXTRA</b> (defined in <a class="el" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pkextract_grid.pkextract_grid</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pkextract_grid.pkextract_grid</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>FORMAT</b> (defined in <a class="el" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pkextract_grid.pkextract_grid</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pkextract_grid.pkextract_grid</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GRID</b> (defined in <a class="el" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pkextract_grid.pkextract_grid</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pkextract_grid.pkextract_grid</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>group</b> (defined in <a class="el" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pkextract_grid.pkextract_grid</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pkextract_grid.pkextract_grid</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>INPUT</b> (defined in <a class="el" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pkextract_grid.pkextract_grid</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pkextract_grid.pkextract_grid</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>name</b> (defined in <a class="el" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pkextract_grid.pkextract_grid</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pkextract_grid.pkextract_grid</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>OUTPUT</b> (defined in <a class="el" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pkextract_grid.pkextract_grid</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pkextract_grid.pkextract_grid</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>POLYGON</b> (defined in <a class="el" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pkextract_grid.pkextract_grid</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pkextract_grid.pkextract_grid</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>processAlgorithm</b> (defined in <a class="el" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pkextract_grid.pkextract_grid</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pkextract_grid.pkextract_grid</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>RULE</b> (defined in <a class="el" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pkextract_grid.pkextract_grid</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pkextract_grid.pkextract_grid</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>RULE_OPTIONS</b> (defined in <a class="el" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pkextract_grid.pkextract_grid</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pkextract_grid.pkextract_grid</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>SRCNODATA</b> (defined in <a class="el" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pkextract_grid.pkextract_grid</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pkextract_grid.pkextract_grid</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pkextract__grid_1_1pkextract__grid.html b/doc/html/classqgis_1_1pkextract__grid_1_1pkextract__grid.html
deleted file mode 100644
index f17b99e..0000000
--- a/doc/html/classqgis_1_1pkextract__grid_1_1pkextract__grid.html
+++ /dev/null
@@ -1,154 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: qgis.pkextract_grid.pkextract_grid Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pkextract_grid</b></li><li class="navelem"><a class="el" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">pkextract_grid</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="classqgis_1_1pkextract__grid_1_1pkextract__grid-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">qgis.pkextract_grid.pkextract_grid Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for qgis.pkextract_grid.pkextract_grid:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pkextract__grid_1_1pkextract__grid__inherit__graph.png" border="0" usemap="#qgis_8pkextract__grid_8pkextract__grid_inherit__map" alt="Inheritance graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for qgis.pkextract_grid.pkextract_grid:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pkextract__grid_1_1pkextract__grid__coll__graph.png" border="0" usemap="#qgis_8pkextract__grid_8pkextract__grid_coll__map" alt="Collaboration graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:aa939f27236fbd7a0919bcb66b214b8c9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa939f27236fbd7a0919bcb66b214b8c9"></a>
-def </td><td class="memItemRight" valign="bottom"><b>cliName</b></td></tr>
-<tr class="separator:aa939f27236fbd7a0919bcb66b214b8c9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1e6b65b8611efef8459dfd6fe7637bab"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1e6b65b8611efef8459dfd6fe7637bab"></a>
-def </td><td class="memItemRight" valign="bottom"><b>defineCharacteristics</b></td></tr>
-<tr class="separator:a1e6b65b8611efef8459dfd6fe7637bab"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a188bdc261506880ef885176843eb4437"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a188bdc261506880ef885176843eb4437"></a>
-def </td><td class="memItemRight" valign="bottom"><b>processAlgorithm</b></td></tr>
-<tr class="separator:a188bdc261506880ef885176843eb4437"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:aa9a3742d6a3703e840c7bc463740fb46"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa9a3742d6a3703e840c7bc463740fb46"></a>
- </td><td class="memItemRight" valign="bottom"><b>name</b></td></tr>
-<tr class="separator:aa9a3742d6a3703e840c7bc463740fb46"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a481d147d56925a1ab75e18b1c8f145fc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a481d147d56925a1ab75e18b1c8f145fc"></a>
- </td><td class="memItemRight" valign="bottom"><b>group</b></td></tr>
-<tr class="separator:a481d147d56925a1ab75e18b1c8f145fc"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:ad359b649a15e3dbd0795278b984c6b23"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad359b649a15e3dbd0795278b984c6b23"></a>
-string </td><td class="memItemRight" valign="bottom"><b>INPUT</b> = "INPUT"</td></tr>
-<tr class="separator:ad359b649a15e3dbd0795278b984c6b23"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a59fa1c64049fbed2cc81548cf5d0e3a8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a59fa1c64049fbed2cc81548cf5d0e3a8"></a>
-string </td><td class="memItemRight" valign="bottom"><b>OUTPUT</b> = "OUTPUT"</td></tr>
-<tr class="separator:a59fa1c64049fbed2cc81548cf5d0e3a8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aff9ec53af87f8f28b82ea13707ed31a3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aff9ec53af87f8f28b82ea13707ed31a3"></a>
-list </td><td class="memItemRight" valign="bottom"><b>RULE_OPTIONS</b> = ['centroid', 'point', 'mean', 'proportion', 'custom', 'min', 'max', 'mode', 'sum', 'median', 'stdev', 'percentile']</td></tr>
-<tr class="separator:aff9ec53af87f8f28b82ea13707ed31a3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8b1c35d0229515eb8a9a4f74fbb27df2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8b1c35d0229515eb8a9a4f74fbb27df2"></a>
-string </td><td class="memItemRight" valign="bottom"><b>RULE</b> = "RULE"</td></tr>
-<tr class="separator:a8b1c35d0229515eb8a9a4f74fbb27df2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adaea5d0be7bd0435fdd3f6a42dc4c80f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adaea5d0be7bd0435fdd3f6a42dc4c80f"></a>
-string </td><td class="memItemRight" valign="bottom"><b>POLYGON</b> = "POLYGON"</td></tr>
-<tr class="separator:adaea5d0be7bd0435fdd3f6a42dc4c80f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1c07170b9f1999083d925f16c78e5ab1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1c07170b9f1999083d925f16c78e5ab1"></a>
-string </td><td class="memItemRight" valign="bottom"><b>BUFFER</b> = "BUFFER"</td></tr>
-<tr class="separator:a1c07170b9f1999083d925f16c78e5ab1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a914f319e7a3734966056b0e396e4b0a1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a914f319e7a3734966056b0e396e4b0a1"></a>
-string </td><td class="memItemRight" valign="bottom"><b>GRID</b> = "GRID"</td></tr>
-<tr class="separator:a914f319e7a3734966056b0e396e4b0a1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2b5e358b248cb62615584a90d651fea1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2b5e358b248cb62615584a90d651fea1"></a>
-string </td><td class="memItemRight" valign="bottom"><b>SRCNODATA</b> = "SRCNODATA"</td></tr>
-<tr class="separator:a2b5e358b248cb62615584a90d651fea1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a458c8ea888792f63f8000afe8b6a5c6e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a458c8ea888792f63f8000afe8b6a5c6e"></a>
-string </td><td class="memItemRight" valign="bottom"><b>BNDNODATA</b> = "BNDNODATA"</td></tr>
-<tr class="separator:a458c8ea888792f63f8000afe8b6a5c6e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a058e183281127755bd1d851b3788138c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a058e183281127755bd1d851b3788138c"></a>
-string </td><td class="memItemRight" valign="bottom"><b>EXTRA</b> = 'EXTRA'</td></tr>
-<tr class="separator:a058e183281127755bd1d851b3788138c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4f170fcdea30859ad29048d61e90ce8b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4f170fcdea30859ad29048d61e90ce8b"></a>
-string </td><td class="memItemRight" valign="bottom"><b>FORMAT</b> = "FORMAT"</td></tr>
-<tr class="separator:a4f170fcdea30859ad29048d61e90ce8b"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="pkextract__grid_8py_source.html#l00087">87</a> of file <a class="el" href="pkextract__grid_8py_source.html">pkextract_grid.py</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/qgis/<a class="el" href="pkextract__grid_8py_source.html">pkextract_grid.py</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pkextract__grid_1_1pkextract__grid__coll__graph.map b/doc/html/classqgis_1_1pkextract__grid_1_1pkextract__grid__coll__graph.map
deleted file mode 100644
index 3cd95da..0000000
--- a/doc/html/classqgis_1_1pkextract__grid_1_1pkextract__grid__coll__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pkextract_grid.pkextract_grid" name="qgis.pkextract_grid.pkextract_grid">
-</map>
diff --git a/doc/html/classqgis_1_1pkextract__grid_1_1pkextract__grid__coll__graph.md5 b/doc/html/classqgis_1_1pkextract__grid_1_1pkextract__grid__coll__graph.md5
deleted file mode 100644
index 89e2358..0000000
--- a/doc/html/classqgis_1_1pkextract__grid_1_1pkextract__grid__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-5329576720c306ce1e73ae3720c000ef
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pkextract__grid_1_1pkextract__grid__coll__graph.png b/doc/html/classqgis_1_1pkextract__grid_1_1pkextract__grid__coll__graph.png
deleted file mode 100644
index 76623bf..0000000
Binary files a/doc/html/classqgis_1_1pkextract__grid_1_1pkextract__grid__coll__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pkextract__grid_1_1pkextract__grid__inherit__graph.map b/doc/html/classqgis_1_1pkextract__grid_1_1pkextract__grid__inherit__graph.map
deleted file mode 100644
index 3cd95da..0000000
--- a/doc/html/classqgis_1_1pkextract__grid_1_1pkextract__grid__inherit__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pkextract_grid.pkextract_grid" name="qgis.pkextract_grid.pkextract_grid">
-</map>
diff --git a/doc/html/classqgis_1_1pkextract__grid_1_1pkextract__grid__inherit__graph.md5 b/doc/html/classqgis_1_1pkextract__grid_1_1pkextract__grid__inherit__graph.md5
deleted file mode 100644
index 89e2358..0000000
--- a/doc/html/classqgis_1_1pkextract__grid_1_1pkextract__grid__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-5329576720c306ce1e73ae3720c000ef
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pkextract__grid_1_1pkextract__grid__inherit__graph.png b/doc/html/classqgis_1_1pkextract__grid_1_1pkextract__grid__inherit__graph.png
deleted file mode 100644
index 76623bf..0000000
Binary files a/doc/html/classqgis_1_1pkextract__grid_1_1pkextract__grid__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pkextract__random_1_1pkextract__random-members.html b/doc/html/classqgis_1_1pkextract__random_1_1pkextract__random-members.html
deleted file mode 100644
index 4cea811..0000000
--- a/doc/html/classqgis_1_1pkextract__random_1_1pkextract__random-members.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pkextract_random</b></li><li class="navelem"><a class="el" href="classqgis_1_1pkextract__random_1_1pkextract__random.html">pkextract_random</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">qgis.pkextract_random.pkextract_random Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classqgis_1_1pkextract__random_1_1pkextract__random.html">qgis.pkextract_random.pkextract_random</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>BNDNODATA</b> (defined in <a class="el" href="classqgis_1_1pkextract__random_1_1pkextract__random.html">qgis.pkextract_random.pkextract_random</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract__random_1_1pkextract__random.html">qgis.pkextract_random.pkextract_random</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>BUFFER</b> (defined in <a class="el" href="classqgis_1_1pkextract__random_1_1pkextract__random.html">qgis.pkextract_random.pkextract_random</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract__random_1_1pkextract__random.html">qgis.pkextract_random.pkextract_random</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cliName</b> (defined in <a class="el" href="classqgis_1_1pkextract__random_1_1pkextract__random.html">qgis.pkextract_random.pkextract_random</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract__random_1_1pkextract__random.html">qgis.pkextract_random.pkextract_random</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>defineCharacteristics</b> (defined in <a class="el" href="classqgis_1_1pkextract__random_1_1pkextract__random.html">qgis.pkextract_random.pkextract_random</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract__random_1_1pkextract__random.html">qgis.pkextract_random.pkextract_random</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>EXTRA</b> (defined in <a class="el" href="classqgis_1_1pkextract__random_1_1pkextract__random.html">qgis.pkextract_random.pkextract_random</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract__random_1_1pkextract__random.html">qgis.pkextract_random.pkextract_random</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>FORMAT</b> (defined in <a class="el" href="classqgis_1_1pkextract__random_1_1pkextract__random.html">qgis.pkextract_random.pkextract_random</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract__random_1_1pkextract__random.html">qgis.pkextract_random.pkextract_random</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>group</b> (defined in <a class="el" href="classqgis_1_1pkextract__random_1_1pkextract__random.html">qgis.pkextract_random.pkextract_random</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract__random_1_1pkextract__random.html">qgis.pkextract_random.pkextract_random</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>INPUT</b> (defined in <a class="el" href="classqgis_1_1pkextract__random_1_1pkextract__random.html">qgis.pkextract_random.pkextract_random</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract__random_1_1pkextract__random.html">qgis.pkextract_random.pkextract_random</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>name</b> (defined in <a class="el" href="classqgis_1_1pkextract__random_1_1pkextract__random.html">qgis.pkextract_random.pkextract_random</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract__random_1_1pkextract__random.html">qgis.pkextract_random.pkextract_random</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>OUTPUT</b> (defined in <a class="el" href="classqgis_1_1pkextract__random_1_1pkextract__random.html">qgis.pkextract_random.pkextract_random</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract__random_1_1pkextract__random.html">qgis.pkextract_random.pkextract_random</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>POLYGON</b> (defined in <a class="el" href="classqgis_1_1pkextract__random_1_1pkextract__random.html">qgis.pkextract_random.pkextract_random</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract__random_1_1pkextract__random.html">qgis.pkextract_random.pkextract_random</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>processAlgorithm</b> (defined in <a class="el" href="classqgis_1_1pkextract__random_1_1pkextract__random.html">qgis.pkextract_random.pkextract_random</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract__random_1_1pkextract__random.html">qgis.pkextract_random.pkextract_random</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>RANDOM</b> (defined in <a class="el" href="classqgis_1_1pkextract__random_1_1pkextract__random.html">qgis.pkextract_random.pkextract_random</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract__random_1_1pkextract__random.html">qgis.pkextract_random.pkextract_random</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>RULE</b> (defined in <a class="el" href="classqgis_1_1pkextract__random_1_1pkextract__random.html">qgis.pkextract_random.pkextract_random</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract__random_1_1pkextract__random.html">qgis.pkextract_random.pkextract_random</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>RULE_OPTIONS</b> (defined in <a class="el" href="classqgis_1_1pkextract__random_1_1pkextract__random.html">qgis.pkextract_random.pkextract_random</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract__random_1_1pkextract__random.html">qgis.pkextract_random.pkextract_random</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>SRCNODATA</b> (defined in <a class="el" href="classqgis_1_1pkextract__random_1_1pkextract__random.html">qgis.pkextract_random.pkextract_random</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkextract__random_1_1pkextract__random.html">qgis.pkextract_random.pkextract_random</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pkextract__random_1_1pkextract__random.html b/doc/html/classqgis_1_1pkextract__random_1_1pkextract__random.html
deleted file mode 100644
index 6fd3b48..0000000
--- a/doc/html/classqgis_1_1pkextract__random_1_1pkextract__random.html
+++ /dev/null
@@ -1,154 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: qgis.pkextract_random.pkextract_random Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pkextract_random</b></li><li class="navelem"><a class="el" href="classqgis_1_1pkextract__random_1_1pkextract__random.html">pkextract_random</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="classqgis_1_1pkextract__random_1_1pkextract__random-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">qgis.pkextract_random.pkextract_random Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for qgis.pkextract_random.pkextract_random:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pkextract__random_1_1pkextract__random__inherit__graph.png" border="0" usemap="#qgis_8pkextract__random_8pkextract__random_inherit__map" alt="Inheritance graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for qgis.pkextract_random.pkextract_random:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pkextract__random_1_1pkextract__random__coll__graph.png" border="0" usemap="#qgis_8pkextract__random_8pkextract__random_coll__map" alt="Collaboration graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a12d5f2e69fb4d44ceaa3446295ae8c99"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a12d5f2e69fb4d44ceaa3446295ae8c99"></a>
-def </td><td class="memItemRight" valign="bottom"><b>cliName</b></td></tr>
-<tr class="separator:a12d5f2e69fb4d44ceaa3446295ae8c99"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a133963a211abc5c6413ea49184ffb1e3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a133963a211abc5c6413ea49184ffb1e3"></a>
-def </td><td class="memItemRight" valign="bottom"><b>defineCharacteristics</b></td></tr>
-<tr class="separator:a133963a211abc5c6413ea49184ffb1e3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a381c05d2100529f51e11ab026270aecc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a381c05d2100529f51e11ab026270aecc"></a>
-def </td><td class="memItemRight" valign="bottom"><b>processAlgorithm</b></td></tr>
-<tr class="separator:a381c05d2100529f51e11ab026270aecc"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:a82b3377677efcc9221be352e4048cafd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a82b3377677efcc9221be352e4048cafd"></a>
- </td><td class="memItemRight" valign="bottom"><b>name</b></td></tr>
-<tr class="separator:a82b3377677efcc9221be352e4048cafd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aca5c7763815ce8ed031311ba3a789ca1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aca5c7763815ce8ed031311ba3a789ca1"></a>
- </td><td class="memItemRight" valign="bottom"><b>group</b></td></tr>
-<tr class="separator:aca5c7763815ce8ed031311ba3a789ca1"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:aa12d40db6d4c1db34cb7c9f577f7c005"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa12d40db6d4c1db34cb7c9f577f7c005"></a>
-string </td><td class="memItemRight" valign="bottom"><b>INPUT</b> = "INPUT"</td></tr>
-<tr class="separator:aa12d40db6d4c1db34cb7c9f577f7c005"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a085ee08ae2a482d8cbaff595892c54a8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a085ee08ae2a482d8cbaff595892c54a8"></a>
-string </td><td class="memItemRight" valign="bottom"><b>OUTPUT</b> = "OUTPUT"</td></tr>
-<tr class="separator:a085ee08ae2a482d8cbaff595892c54a8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a85a1e7cb635dcbd857a527768834e990"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a85a1e7cb635dcbd857a527768834e990"></a>
-list </td><td class="memItemRight" valign="bottom"><b>RULE_OPTIONS</b> = ['centroid', 'point', 'mean', 'proportion', 'custom', 'min', 'max', 'mode', 'sum', 'median', 'stdev', 'percentile']</td></tr>
-<tr class="separator:a85a1e7cb635dcbd857a527768834e990"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afedf8577b67d791e03897075d8aa27ac"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afedf8577b67d791e03897075d8aa27ac"></a>
-string </td><td class="memItemRight" valign="bottom"><b>RULE</b> = "RULE"</td></tr>
-<tr class="separator:afedf8577b67d791e03897075d8aa27ac"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a36283f7921c233717d3f14c8db5c1f0b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a36283f7921c233717d3f14c8db5c1f0b"></a>
-string </td><td class="memItemRight" valign="bottom"><b>POLYGON</b> = "POLYGON"</td></tr>
-<tr class="separator:a36283f7921c233717d3f14c8db5c1f0b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acd4d3fcc09b1d4e24614be0afaefbf3e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acd4d3fcc09b1d4e24614be0afaefbf3e"></a>
-string </td><td class="memItemRight" valign="bottom"><b>BUFFER</b> = "BUFFER"</td></tr>
-<tr class="separator:acd4d3fcc09b1d4e24614be0afaefbf3e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adcaa31fc02c279d8bbdb849104d939e1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adcaa31fc02c279d8bbdb849104d939e1"></a>
-string </td><td class="memItemRight" valign="bottom"><b>RANDOM</b> = "RANDOM"</td></tr>
-<tr class="separator:adcaa31fc02c279d8bbdb849104d939e1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a13dc6553f4a7a228ae4b94e810694889"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a13dc6553f4a7a228ae4b94e810694889"></a>
-string </td><td class="memItemRight" valign="bottom"><b>SRCNODATA</b> = "SRCNODATA"</td></tr>
-<tr class="separator:a13dc6553f4a7a228ae4b94e810694889"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa443b2341e1b83d1c1cf56f95cdb36a0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa443b2341e1b83d1c1cf56f95cdb36a0"></a>
-string </td><td class="memItemRight" valign="bottom"><b>BNDNODATA</b> = "BNDNODATA"</td></tr>
-<tr class="separator:aa443b2341e1b83d1c1cf56f95cdb36a0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acfa85cb06c31b3bf3a7b543e3185368e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acfa85cb06c31b3bf3a7b543e3185368e"></a>
-string </td><td class="memItemRight" valign="bottom"><b>EXTRA</b> = 'EXTRA'</td></tr>
-<tr class="separator:acfa85cb06c31b3bf3a7b543e3185368e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa9917fab3df26d469766bfa0ba603ee4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa9917fab3df26d469766bfa0ba603ee4"></a>
-string </td><td class="memItemRight" valign="bottom"><b>FORMAT</b> = "FORMAT"</td></tr>
-<tr class="separator:aa9917fab3df26d469766bfa0ba603ee4"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="pkextract__random_8py_source.html#l00087">87</a> of file <a class="el" href="pkextract__random_8py_source.html">pkextract_random.py</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/qgis/<a class="el" href="pkextract__random_8py_source.html">pkextract_random.py</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pkextract__random_1_1pkextract__random__coll__graph.map b/doc/html/classqgis_1_1pkextract__random_1_1pkextract__random__coll__graph.map
deleted file mode 100644
index 8848b67..0000000
--- a/doc/html/classqgis_1_1pkextract__random_1_1pkextract__random__coll__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pkextract_random.pkextract_random" name="qgis.pkextract_random.pkextract_random">
-</map>
diff --git a/doc/html/classqgis_1_1pkextract__random_1_1pkextract__random__coll__graph.md5 b/doc/html/classqgis_1_1pkextract__random_1_1pkextract__random__coll__graph.md5
deleted file mode 100644
index 1299426..0000000
--- a/doc/html/classqgis_1_1pkextract__random_1_1pkextract__random__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-e5c6a34fa04564968b7ad2a2a06e5c99
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pkextract__random_1_1pkextract__random__coll__graph.png b/doc/html/classqgis_1_1pkextract__random_1_1pkextract__random__coll__graph.png
deleted file mode 100644
index 98425e1..0000000
Binary files a/doc/html/classqgis_1_1pkextract__random_1_1pkextract__random__coll__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pkextract__random_1_1pkextract__random__inherit__graph.map b/doc/html/classqgis_1_1pkextract__random_1_1pkextract__random__inherit__graph.map
deleted file mode 100644
index 8848b67..0000000
--- a/doc/html/classqgis_1_1pkextract__random_1_1pkextract__random__inherit__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pkextract_random.pkextract_random" name="qgis.pkextract_random.pkextract_random">
-</map>
diff --git a/doc/html/classqgis_1_1pkextract__random_1_1pkextract__random__inherit__graph.md5 b/doc/html/classqgis_1_1pkextract__random_1_1pkextract__random__inherit__graph.md5
deleted file mode 100644
index 1299426..0000000
--- a/doc/html/classqgis_1_1pkextract__random_1_1pkextract__random__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-e5c6a34fa04564968b7ad2a2a06e5c99
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pkextract__random_1_1pkextract__random__inherit__graph.png b/doc/html/classqgis_1_1pkextract__random_1_1pkextract__random__inherit__graph.png
deleted file mode 100644
index 98425e1..0000000
Binary files a/doc/html/classqgis_1_1pkextract__random_1_1pkextract__random__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial-members.html b/doc/html/classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial-members.html
deleted file mode 100644
index 7841249..0000000
--- a/doc/html/classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial-members.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pkfilter_spatial</b></li><li class="navelem"><a class="el" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">pkfilter_spatial</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">qgis.pkfilter_spatial.pkfilter_spatial Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pkfilter_spatial.pkfilter_spatial</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cliName</b> (defined in <a class="el" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pkfilter_spatial.pkfilter_spatial</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pkfilter_spatial.pkfilter_spatial</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>defineCharacteristics</b> (defined in <a class="el" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pkfilter_spatial.pkfilter_spatial</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pkfilter_spatial.pkfilter_spatial</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>DIM</b> (defined in <a class="el" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pkfilter_spatial.pkfilter_spatial</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pkfilter_spatial.pkfilter_spatial</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>EXTRA</b> (defined in <a class="el" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pkfilter_spatial.pkfilter_spatial</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pkfilter_spatial.pkfilter_spatial</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>group</b> (defined in <a class="el" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pkfilter_spatial.pkfilter_spatial</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pkfilter_spatial.pkfilter_spatial</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>INPUT</b> (defined in <a class="el" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pkfilter_spatial.pkfilter_spatial</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pkfilter_spatial.pkfilter_spatial</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>METHOD</b> (defined in <a class="el" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pkfilter_spatial.pkfilter_spatial</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pkfilter_spatial.pkfilter_spatial</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>METHOD_OPTIONS</b> (defined in <a class="el" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pkfilter_spatial.pkfilter_spatial</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pkfilter_spatial.pkfilter_spatial</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>name</b> (defined in <a class="el" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pkfilter_spatial.pkfilter_spatial</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pkfilter_spatial.pkfilter_spatial</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>NODATA</b> (defined in <a class="el" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pkfilter_spatial.pkfilter_spatial</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pkfilter_spatial.pkfilter_spatial</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>OUTPUT</b> (defined in <a class="el" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pkfilter_spatial.pkfilter_spatial</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pkfilter_spatial.pkfilter_spatial</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>PADDING</b> (defined in <a class="el" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pkfilter_spatial.pkfilter_spatial</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pkfilter_spatial.pkfilter_spatial</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>PADDING_OPTIONS</b> (defined in <a class="el" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pkfilter_spatial.pkfilter_spatial</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pkfilter_spatial.pkfilter_spatial</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>processAlgorithm</b> (defined in <a class="el" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pkfilter_spatial.pkfilter_spatial</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pkfilter_spatial.pkfilter_spatial</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>RTYPE</b> (defined in <a class="el" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pkfilter_spatial.pkfilter_spatial</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pkfilter_spatial.pkfilter_spatial</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>TYPE</b> (defined in <a class="el" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pkfilter_spatial.pkfilter_spatial</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pkfilter_spatial.pkfilter_spatial</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html b/doc/html/classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html
deleted file mode 100644
index 7159bcc..0000000
--- a/doc/html/classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html
+++ /dev/null
@@ -1,154 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: qgis.pkfilter_spatial.pkfilter_spatial Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pkfilter_spatial</b></li><li class="navelem"><a class="el" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">pkfilter_spatial</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">qgis.pkfilter_spatial.pkfilter_spatial Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for qgis.pkfilter_spatial.pkfilter_spatial:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial__inherit__graph.png" border="0" usemap="#qgis_8pkfilter__spatial_8pkfilter__spatial_inherit__map" alt="Inheritance graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for qgis.pkfilter_spatial.pkfilter_spatial:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial__coll__graph.png" border="0" usemap="#qgis_8pkfilter__spatial_8pkfilter__spatial_coll__map" alt="Collaboration graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a8517fc04fd5f13c52e174efc16736f83"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8517fc04fd5f13c52e174efc16736f83"></a>
-def </td><td class="memItemRight" valign="bottom"><b>cliName</b></td></tr>
-<tr class="separator:a8517fc04fd5f13c52e174efc16736f83"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a28a9650dcd013cb49b033a7cef101d43"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a28a9650dcd013cb49b033a7cef101d43"></a>
-def </td><td class="memItemRight" valign="bottom"><b>defineCharacteristics</b></td></tr>
-<tr class="separator:a28a9650dcd013cb49b033a7cef101d43"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a916cd41987cb92d488afcdfe6b42b5f1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a916cd41987cb92d488afcdfe6b42b5f1"></a>
-def </td><td class="memItemRight" valign="bottom"><b>processAlgorithm</b></td></tr>
-<tr class="separator:a916cd41987cb92d488afcdfe6b42b5f1"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:abb1b57dd0e00851665ec24a1df526ab6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abb1b57dd0e00851665ec24a1df526ab6"></a>
- </td><td class="memItemRight" valign="bottom"><b>name</b></td></tr>
-<tr class="separator:abb1b57dd0e00851665ec24a1df526ab6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab468aa6da0990f5884debd8bfbe27e21"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab468aa6da0990f5884debd8bfbe27e21"></a>
- </td><td class="memItemRight" valign="bottom"><b>group</b></td></tr>
-<tr class="separator:ab468aa6da0990f5884debd8bfbe27e21"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:aab43173cb62c16cccd2311cc2351ea72"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aab43173cb62c16cccd2311cc2351ea72"></a>
-string </td><td class="memItemRight" valign="bottom"><b>INPUT</b> = "INPUT"</td></tr>
-<tr class="separator:aab43173cb62c16cccd2311cc2351ea72"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a17420bcb37a89c2b89f4531ab6180de0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a17420bcb37a89c2b89f4531ab6180de0"></a>
-string </td><td class="memItemRight" valign="bottom"><b>OUTPUT</b> = "OUTPUT"</td></tr>
-<tr class="separator:a17420bcb37a89c2b89f4531ab6180de0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af2ee51651a6a19a6922db57a4d72d549"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af2ee51651a6a19a6922db57a4d72d549"></a>
-list </td><td class="memItemRight" valign="bottom"><b>METHOD_OPTIONS</b> = ["none", "median", "var", "min", "max", "sum", "mean", "dilate", "erode", "close", "open", "homog ", "heterog ", "sobelx ", "sobely ", "sobelxy ", "sobelyx" , "smooth", "countid", "smoothnodata values", "thr [...]
-<tr class="separator:af2ee51651a6a19a6922db57a4d72d549"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a17c23d864a0778596b436f6fdb864de5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a17c23d864a0778596b436f6fdb864de5"></a>
-string </td><td class="memItemRight" valign="bottom"><b>METHOD</b> = "METHOD"</td></tr>
-<tr class="separator:a17c23d864a0778596b436f6fdb864de5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac31abd8117f135e1e7f43bcbdd8456c9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac31abd8117f135e1e7f43bcbdd8456c9"></a>
-string </td><td class="memItemRight" valign="bottom"><b>DIM</b> = "DIM"</td></tr>
-<tr class="separator:ac31abd8117f135e1e7f43bcbdd8456c9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a241b1a8c1933b44e84da25c708a93e61"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a241b1a8c1933b44e84da25c708a93e61"></a>
-string </td><td class="memItemRight" valign="bottom"><b>NODATA</b> = "NODATA"</td></tr>
-<tr class="separator:a241b1a8c1933b44e84da25c708a93e61"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a199b3a2d3018c67ea5046c7c38a9e974"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a199b3a2d3018c67ea5046c7c38a9e974"></a>
-list </td><td class="memItemRight" valign="bottom"><b>PADDING_OPTIONS</b> = ["symmetric", "replicate", "circular", "zero"]</td></tr>
-<tr class="separator:a199b3a2d3018c67ea5046c7c38a9e974"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a359fadbd1e77c36bfa229b1708b364a0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a359fadbd1e77c36bfa229b1708b364a0"></a>
-string </td><td class="memItemRight" valign="bottom"><b>PADDING</b> = "PADDING"</td></tr>
-<tr class="separator:a359fadbd1e77c36bfa229b1708b364a0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a556dd033f6fbe62238ea73f26f142752"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a556dd033f6fbe62238ea73f26f142752"></a>
-string </td><td class="memItemRight" valign="bottom"><b>RTYPE</b> = 'RTYPE'</td></tr>
-<tr class="separator:a556dd033f6fbe62238ea73f26f142752"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac9bc83f6c62747fafd30efecb13c5d62"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac9bc83f6c62747fafd30efecb13c5d62"></a>
-list </td><td class="memItemRight" valign="bottom"><b>TYPE</b> = ['none', 'Byte','Int16','UInt16','UInt32','Int32','Float32','Float64','CInt16','CInt32','CFloat32','CFloat64']</td></tr>
-<tr class="separator:ac9bc83f6c62747fafd30efecb13c5d62"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1a3a4d8cc8523b66376f621feed86909"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1a3a4d8cc8523b66376f621feed86909"></a>
-string </td><td class="memItemRight" valign="bottom"><b>EXTRA</b> = 'EXTRA'</td></tr>
-<tr class="separator:a1a3a4d8cc8523b66376f621feed86909"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="pkfilter__spatial_8py_source.html#l00038">38</a> of file <a class="el" href="pkfilter__spatial_8py_source.html">pkfilter_spatial.py</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/qgis/<a class="el" href="pkfilter__spatial_8py_source.html">pkfilter_spatial.py</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial__coll__graph.map b/doc/html/classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial__coll__graph.map
deleted file mode 100644
index f499189..0000000
--- a/doc/html/classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial__coll__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pkfilter_spatial.pkfilter_spatial" name="qgis.pkfilter_spatial.pkfilter_spatial">
-</map>
diff --git a/doc/html/classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial__coll__graph.md5 b/doc/html/classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial__coll__graph.md5
deleted file mode 100644
index 604caaa..0000000
--- a/doc/html/classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-bfd647e27b6d070eafc25fff7acac190
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial__coll__graph.png b/doc/html/classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial__coll__graph.png
deleted file mode 100644
index f4b8b25..0000000
Binary files a/doc/html/classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial__coll__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial__inherit__graph.map b/doc/html/classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial__inherit__graph.map
deleted file mode 100644
index f499189..0000000
--- a/doc/html/classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial__inherit__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pkfilter_spatial.pkfilter_spatial" name="qgis.pkfilter_spatial.pkfilter_spatial">
-</map>
diff --git a/doc/html/classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial__inherit__graph.md5 b/doc/html/classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial__inherit__graph.md5
deleted file mode 100644
index 604caaa..0000000
--- a/doc/html/classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-bfd647e27b6d070eafc25fff7acac190
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial__inherit__graph.png b/doc/html/classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial__inherit__graph.png
deleted file mode 100644
index f4b8b25..0000000
Binary files a/doc/html/classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral-members.html b/doc/html/classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral-members.html
deleted file mode 100644
index 9fc4f45..0000000
--- a/doc/html/classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral-members.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pkfilter_spectral</b></li><li class="navelem"><a class="el" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">pkfilter_spectral</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">qgis.pkfilter_spectral.pkfilter_spectral Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pkfilter_spectral.pkfilter_spectral</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cliName</b> (defined in <a class="el" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pkfilter_spectral.pkfilter_spectral</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pkfilter_spectral.pkfilter_spectral</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>defineCharacteristics</b> (defined in <a class="el" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pkfilter_spectral.pkfilter_spectral</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pkfilter_spectral.pkfilter_spectral</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>DZ</b> (defined in <a class="el" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pkfilter_spectral.pkfilter_spectral</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pkfilter_spectral.pkfilter_spectral</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>EXTRA</b> (defined in <a class="el" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pkfilter_spectral.pkfilter_spectral</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pkfilter_spectral.pkfilter_spectral</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>group</b> (defined in <a class="el" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pkfilter_spectral.pkfilter_spectral</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pkfilter_spectral.pkfilter_spectral</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>INPUT</b> (defined in <a class="el" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pkfilter_spectral.pkfilter_spectral</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pkfilter_spectral.pkfilter_spectral</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>METHOD</b> (defined in <a class="el" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pkfilter_spectral.pkfilter_spectral</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pkfilter_spectral.pkfilter_spectral</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>METHOD_OPTIONS</b> (defined in <a class="el" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pkfilter_spectral.pkfilter_spectral</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pkfilter_spectral.pkfilter_spectral</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>name</b> (defined in <a class="el" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pkfilter_spectral.pkfilter_spectral</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pkfilter_spectral.pkfilter_spectral</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>NODATA</b> (defined in <a class="el" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pkfilter_spectral.pkfilter_spectral</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pkfilter_spectral.pkfilter_spectral</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>OUTPUT</b> (defined in <a class="el" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pkfilter_spectral.pkfilter_spectral</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pkfilter_spectral.pkfilter_spectral</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>PADDING</b> (defined in <a class="el" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pkfilter_spectral.pkfilter_spectral</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pkfilter_spectral.pkfilter_spectral</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>PADDING_OPTIONS</b> (defined in <a class="el" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pkfilter_spectral.pkfilter_spectral</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pkfilter_spectral.pkfilter_spectral</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>processAlgorithm</b> (defined in <a class="el" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pkfilter_spectral.pkfilter_spectral</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pkfilter_spectral.pkfilter_spectral</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>RTYPE</b> (defined in <a class="el" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pkfilter_spectral.pkfilter_spectral</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pkfilter_spectral.pkfilter_spectral</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>TYPE</b> (defined in <a class="el" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pkfilter_spectral.pkfilter_spectral</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pkfilter_spectral.pkfilter_spectral</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html b/doc/html/classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html
deleted file mode 100644
index ea5d9fc..0000000
--- a/doc/html/classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html
+++ /dev/null
@@ -1,154 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: qgis.pkfilter_spectral.pkfilter_spectral Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pkfilter_spectral</b></li><li class="navelem"><a class="el" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">pkfilter_spectral</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">qgis.pkfilter_spectral.pkfilter_spectral Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for qgis.pkfilter_spectral.pkfilter_spectral:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral__inherit__graph.png" border="0" usemap="#qgis_8pkfilter__spectral_8pkfilter__spectral_inherit__map" alt="Inheritance graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for qgis.pkfilter_spectral.pkfilter_spectral:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral__coll__graph.png" border="0" usemap="#qgis_8pkfilter__spectral_8pkfilter__spectral_coll__map" alt="Collaboration graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a67ee5ff2f1cb29dd15291e3ac0e5331c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a67ee5ff2f1cb29dd15291e3ac0e5331c"></a>
-def </td><td class="memItemRight" valign="bottom"><b>cliName</b></td></tr>
-<tr class="separator:a67ee5ff2f1cb29dd15291e3ac0e5331c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af55a16e489b299317f90f5d15493efe8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af55a16e489b299317f90f5d15493efe8"></a>
-def </td><td class="memItemRight" valign="bottom"><b>defineCharacteristics</b></td></tr>
-<tr class="separator:af55a16e489b299317f90f5d15493efe8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0f7fba7c11f7644e71e8c41ae72fa06d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0f7fba7c11f7644e71e8c41ae72fa06d"></a>
-def </td><td class="memItemRight" valign="bottom"><b>processAlgorithm</b></td></tr>
-<tr class="separator:a0f7fba7c11f7644e71e8c41ae72fa06d"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:a85b2c92f62e8260f9f51d8d8f10ff44a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a85b2c92f62e8260f9f51d8d8f10ff44a"></a>
- </td><td class="memItemRight" valign="bottom"><b>name</b></td></tr>
-<tr class="separator:a85b2c92f62e8260f9f51d8d8f10ff44a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad21f52f89d4b6cbe06e4bf830a8f5678"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad21f52f89d4b6cbe06e4bf830a8f5678"></a>
- </td><td class="memItemRight" valign="bottom"><b>group</b></td></tr>
-<tr class="separator:ad21f52f89d4b6cbe06e4bf830a8f5678"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:a20a6cee11be7abd9325358a564819d26"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a20a6cee11be7abd9325358a564819d26"></a>
-string </td><td class="memItemRight" valign="bottom"><b>INPUT</b> = "INPUT"</td></tr>
-<tr class="separator:a20a6cee11be7abd9325358a564819d26"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0be5ed45033cae15184219a6485a396b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0be5ed45033cae15184219a6485a396b"></a>
-string </td><td class="memItemRight" valign="bottom"><b>OUTPUT</b> = "OUTPUT"</td></tr>
-<tr class="separator:a0be5ed45033cae15184219a6485a396b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a88267ee3b205fbfc5e6823c693eb4e14"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a88267ee3b205fbfc5e6823c693eb4e14"></a>
-list </td><td class="memItemRight" valign="bottom"><b>METHOD_OPTIONS</b> = ["none", "median", "var", "min", "max", "sum", "mean", "dilate", "erode", "close", "open", "smooth", "density", "smoothnodata values", "threshold local filtering", "stdev", "dwt", "dwti", "dwt_cut", "dwt_cut_from&quot [...]
-<tr class="separator:a88267ee3b205fbfc5e6823c693eb4e14"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a15c6950b12c57ff838be9ba415e28c8e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a15c6950b12c57ff838be9ba415e28c8e"></a>
-string </td><td class="memItemRight" valign="bottom"><b>METHOD</b> = "METHOD"</td></tr>
-<tr class="separator:a15c6950b12c57ff838be9ba415e28c8e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aeff20f41be397170c8e351d0aa74bc79"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeff20f41be397170c8e351d0aa74bc79"></a>
-string </td><td class="memItemRight" valign="bottom"><b>DZ</b> = "DZ"</td></tr>
-<tr class="separator:aeff20f41be397170c8e351d0aa74bc79"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a68d3c2ee722166fa9d8ddf3151fd8e55"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a68d3c2ee722166fa9d8ddf3151fd8e55"></a>
-string </td><td class="memItemRight" valign="bottom"><b>NODATA</b> = "NODATA"</td></tr>
-<tr class="separator:a68d3c2ee722166fa9d8ddf3151fd8e55"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a706e766bf47d4fab85e95879c6d657a4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a706e766bf47d4fab85e95879c6d657a4"></a>
-list </td><td class="memItemRight" valign="bottom"><b>PADDING_OPTIONS</b> = ["symmetric", "replicate", "circular", "zero"]</td></tr>
-<tr class="separator:a706e766bf47d4fab85e95879c6d657a4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae9fcf789fcc3b4871f5419bbce84511a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae9fcf789fcc3b4871f5419bbce84511a"></a>
-string </td><td class="memItemRight" valign="bottom"><b>PADDING</b> = "PADDING"</td></tr>
-<tr class="separator:ae9fcf789fcc3b4871f5419bbce84511a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab8240d9589b85c133897e73224e6bcb2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab8240d9589b85c133897e73224e6bcb2"></a>
-string </td><td class="memItemRight" valign="bottom"><b>RTYPE</b> = 'RTYPE'</td></tr>
-<tr class="separator:ab8240d9589b85c133897e73224e6bcb2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a43e8b1dc19ef86bee9a3c933f9f83529"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a43e8b1dc19ef86bee9a3c933f9f83529"></a>
-list </td><td class="memItemRight" valign="bottom"><b>TYPE</b> = ['none', 'Byte','Int16','UInt16','UInt32','Int32','Float32','Float64','CInt16','CInt32','CFloat32','CFloat64']</td></tr>
-<tr class="separator:a43e8b1dc19ef86bee9a3c933f9f83529"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a916a5975c9e4fc03fdf55a8a02dcb91e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a916a5975c9e4fc03fdf55a8a02dcb91e"></a>
-string </td><td class="memItemRight" valign="bottom"><b>EXTRA</b> = 'EXTRA'</td></tr>
-<tr class="separator:a916a5975c9e4fc03fdf55a8a02dcb91e"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="pkfilter__spectral_8py_source.html#l00038">38</a> of file <a class="el" href="pkfilter__spectral_8py_source.html">pkfilter_spectral.py</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/qgis/<a class="el" href="pkfilter__spectral_8py_source.html">pkfilter_spectral.py</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral__coll__graph.map b/doc/html/classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral__coll__graph.map
deleted file mode 100644
index 4d18a7a..0000000
--- a/doc/html/classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral__coll__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pkfilter_spectral.pkfilter_spectral" name="qgis.pkfilter_spectral.pkfilter_spectral">
-</map>
diff --git a/doc/html/classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral__coll__graph.md5 b/doc/html/classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral__coll__graph.md5
deleted file mode 100644
index 6216cd2..0000000
--- a/doc/html/classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-2a8400e38d6b76c1310fa9719dbc19a3
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral__coll__graph.png b/doc/html/classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral__coll__graph.png
deleted file mode 100644
index afd58d0..0000000
Binary files a/doc/html/classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral__coll__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral__inherit__graph.map b/doc/html/classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral__inherit__graph.map
deleted file mode 100644
index 4d18a7a..0000000
--- a/doc/html/classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral__inherit__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pkfilter_spectral.pkfilter_spectral" name="qgis.pkfilter_spectral.pkfilter_spectral">
-</map>
diff --git a/doc/html/classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral__inherit__graph.md5 b/doc/html/classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral__inherit__graph.md5
deleted file mode 100644
index 6216cd2..0000000
--- a/doc/html/classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-2a8400e38d6b76c1310fa9719dbc19a3
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral__inherit__graph.png b/doc/html/classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral__inherit__graph.png
deleted file mode 100644
index afd58d0..0000000
Binary files a/doc/html/classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pkfilterdem_1_1pkfilterdem-members.html b/doc/html/classqgis_1_1pkfilterdem_1_1pkfilterdem-members.html
deleted file mode 100644
index 76b9fdd..0000000
--- a/doc/html/classqgis_1_1pkfilterdem_1_1pkfilterdem-members.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pkfilterdem</b></li><li class="navelem"><a class="el" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html">pkfilterdem</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">qgis.pkfilterdem.pkfilterdem Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pkfilterdem.pkfilterdem</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cliName</b> (defined in <a class="el" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pkfilterdem.pkfilterdem</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pkfilterdem.pkfilterdem</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>defineCharacteristics</b> (defined in <a class="el" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pkfilterdem.pkfilterdem</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pkfilterdem.pkfilterdem</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>DIM</b> (defined in <a class="el" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pkfilterdem.pkfilterdem</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pkfilterdem.pkfilterdem</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>EXTRA</b> (defined in <a class="el" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pkfilterdem.pkfilterdem</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pkfilterdem.pkfilterdem</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>FILTER</b> (defined in <a class="el" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pkfilterdem.pkfilterdem</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pkfilterdem.pkfilterdem</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>FILTER_OPTIONS</b> (defined in <a class="el" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pkfilterdem.pkfilterdem</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pkfilterdem.pkfilterdem</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>group</b> (defined in <a class="el" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pkfilterdem.pkfilterdem</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pkfilterdem.pkfilterdem</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>INPUT</b> (defined in <a class="el" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pkfilterdem.pkfilterdem</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pkfilterdem.pkfilterdem</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>name</b> (defined in <a class="el" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pkfilterdem.pkfilterdem</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pkfilterdem.pkfilterdem</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>OUTPUT</b> (defined in <a class="el" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pkfilterdem.pkfilterdem</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pkfilterdem.pkfilterdem</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>processAlgorithm</b> (defined in <a class="el" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pkfilterdem.pkfilterdem</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pkfilterdem.pkfilterdem</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>RTYPE</b> (defined in <a class="el" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pkfilterdem.pkfilterdem</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pkfilterdem.pkfilterdem</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>TYPE</b> (defined in <a class="el" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pkfilterdem.pkfilterdem</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pkfilterdem.pkfilterdem</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pkfilterdem_1_1pkfilterdem.html b/doc/html/classqgis_1_1pkfilterdem_1_1pkfilterdem.html
deleted file mode 100644
index b1f7b63..0000000
--- a/doc/html/classqgis_1_1pkfilterdem_1_1pkfilterdem.html
+++ /dev/null
@@ -1,145 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: qgis.pkfilterdem.pkfilterdem Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pkfilterdem</b></li><li class="navelem"><a class="el" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html">pkfilterdem</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="classqgis_1_1pkfilterdem_1_1pkfilterdem-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">qgis.pkfilterdem.pkfilterdem Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for qgis.pkfilterdem.pkfilterdem:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pkfilterdem_1_1pkfilterdem__inherit__graph.png" border="0" usemap="#qgis_8pkfilterdem_8pkfilterdem_inherit__map" alt="Inheritance graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for qgis.pkfilterdem.pkfilterdem:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pkfilterdem_1_1pkfilterdem__coll__graph.png" border="0" usemap="#qgis_8pkfilterdem_8pkfilterdem_coll__map" alt="Collaboration graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a0f4ab9a21d0270b9215bdeadd24be172"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0f4ab9a21d0270b9215bdeadd24be172"></a>
-def </td><td class="memItemRight" valign="bottom"><b>cliName</b></td></tr>
-<tr class="separator:a0f4ab9a21d0270b9215bdeadd24be172"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a063c9e4fe1b7958eabc4bfaf5175de14"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a063c9e4fe1b7958eabc4bfaf5175de14"></a>
-def </td><td class="memItemRight" valign="bottom"><b>defineCharacteristics</b></td></tr>
-<tr class="separator:a063c9e4fe1b7958eabc4bfaf5175de14"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad836b1fe6c57ec07645d3a6db9c18bf0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad836b1fe6c57ec07645d3a6db9c18bf0"></a>
-def </td><td class="memItemRight" valign="bottom"><b>processAlgorithm</b></td></tr>
-<tr class="separator:ad836b1fe6c57ec07645d3a6db9c18bf0"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:a6cda59e12b5d35384148d3a9e50a380c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6cda59e12b5d35384148d3a9e50a380c"></a>
- </td><td class="memItemRight" valign="bottom"><b>name</b></td></tr>
-<tr class="separator:a6cda59e12b5d35384148d3a9e50a380c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a362a12d7bac87e1ef6bd3b0921893e4b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a362a12d7bac87e1ef6bd3b0921893e4b"></a>
- </td><td class="memItemRight" valign="bottom"><b>group</b></td></tr>
-<tr class="separator:a362a12d7bac87e1ef6bd3b0921893e4b"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:ac63e9625819c3df9a3f210a44577de8d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac63e9625819c3df9a3f210a44577de8d"></a>
-string </td><td class="memItemRight" valign="bottom"><b>INPUT</b> = "INPUT"</td></tr>
-<tr class="separator:ac63e9625819c3df9a3f210a44577de8d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af1b0b8b6543976e0436e35269673d135"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af1b0b8b6543976e0436e35269673d135"></a>
-string </td><td class="memItemRight" valign="bottom"><b>OUTPUT</b> = "OUTPUT"</td></tr>
-<tr class="separator:af1b0b8b6543976e0436e35269673d135"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a36f24e3cf45c53076e40bf050690c9e4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a36f24e3cf45c53076e40bf050690c9e4"></a>
-string </td><td class="memItemRight" valign="bottom"><b>DIM</b> = "DIM"</td></tr>
-<tr class="separator:a36f24e3cf45c53076e40bf050690c9e4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a93d222282debe7b1e835fe457e42668e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a93d222282debe7b1e835fe457e42668e"></a>
-string </td><td class="memItemRight" valign="bottom"><b>RTYPE</b> = 'RTYPE'</td></tr>
-<tr class="separator:a93d222282debe7b1e835fe457e42668e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a609a8357c611c1b7291714359d293205"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a609a8357c611c1b7291714359d293205"></a>
-list </td><td class="memItemRight" valign="bottom"><b>TYPE</b> = ['Float32','Byte','Int16','UInt16','UInt32','Int32','Float64','CInt16','CInt32','CFloat32','CFloat64']</td></tr>
-<tr class="separator:a609a8357c611c1b7291714359d293205"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa684f5dff3236fff634fd644507ead3f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa684f5dff3236fff634fd644507ead3f"></a>
-list </td><td class="memItemRight" valign="bottom"><b>FILTER_OPTIONS</b> = ["promorph"]</td></tr>
-<tr class="separator:aa684f5dff3236fff634fd644507ead3f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a231a73cc70938e1e8c0fbfe2ad354666"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a231a73cc70938e1e8c0fbfe2ad354666"></a>
-string </td><td class="memItemRight" valign="bottom"><b>FILTER</b> = "FILTER"</td></tr>
-<tr class="separator:a231a73cc70938e1e8c0fbfe2ad354666"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8d539783f415aef729ad8eec26d1befc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8d539783f415aef729ad8eec26d1befc"></a>
-string </td><td class="memItemRight" valign="bottom"><b>EXTRA</b> = 'EXTRA'</td></tr>
-<tr class="separator:a8d539783f415aef729ad8eec26d1befc"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="pkfilterdem_8py_source.html#l00039">39</a> of file <a class="el" href="pkfilterdem_8py_source.html">pkfilterdem.py</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/qgis/<a class="el" href="pkfilterdem_8py_source.html">pkfilterdem.py</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pkfilterdem_1_1pkfilterdem__coll__graph.map b/doc/html/classqgis_1_1pkfilterdem_1_1pkfilterdem__coll__graph.map
deleted file mode 100644
index bd0108c..0000000
--- a/doc/html/classqgis_1_1pkfilterdem_1_1pkfilterdem__coll__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pkfilterdem.pkfilterdem" name="qgis.pkfilterdem.pkfilterdem">
-</map>
diff --git a/doc/html/classqgis_1_1pkfilterdem_1_1pkfilterdem__coll__graph.md5 b/doc/html/classqgis_1_1pkfilterdem_1_1pkfilterdem__coll__graph.md5
deleted file mode 100644
index 272b3fe..0000000
--- a/doc/html/classqgis_1_1pkfilterdem_1_1pkfilterdem__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-6848dbb8564bac7bb85324114cc2e769
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pkfilterdem_1_1pkfilterdem__coll__graph.png b/doc/html/classqgis_1_1pkfilterdem_1_1pkfilterdem__coll__graph.png
deleted file mode 100644
index 70e9346..0000000
Binary files a/doc/html/classqgis_1_1pkfilterdem_1_1pkfilterdem__coll__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pkfilterdem_1_1pkfilterdem__inherit__graph.map b/doc/html/classqgis_1_1pkfilterdem_1_1pkfilterdem__inherit__graph.map
deleted file mode 100644
index bd0108c..0000000
--- a/doc/html/classqgis_1_1pkfilterdem_1_1pkfilterdem__inherit__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pkfilterdem.pkfilterdem" name="qgis.pkfilterdem.pkfilterdem">
-</map>
diff --git a/doc/html/classqgis_1_1pkfilterdem_1_1pkfilterdem__inherit__graph.md5 b/doc/html/classqgis_1_1pkfilterdem_1_1pkfilterdem__inherit__graph.md5
deleted file mode 100644
index 272b3fe..0000000
--- a/doc/html/classqgis_1_1pkfilterdem_1_1pkfilterdem__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-6848dbb8564bac7bb85324114cc2e769
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pkfilterdem_1_1pkfilterdem__inherit__graph.png b/doc/html/classqgis_1_1pkfilterdem_1_1pkfilterdem__inherit__graph.png
deleted file mode 100644
index 70e9346..0000000
Binary files a/doc/html/classqgis_1_1pkfilterdem_1_1pkfilterdem__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pkgetmask_1_1pkgetmask-members.html b/doc/html/classqgis_1_1pkgetmask_1_1pkgetmask-members.html
deleted file mode 100644
index 6ea29b9..0000000
--- a/doc/html/classqgis_1_1pkgetmask_1_1pkgetmask-members.html
+++ /dev/null
@@ -1,95 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pkgetmask</b></li><li class="navelem"><a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">pkgetmask</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">qgis.pkgetmask.pkgetmask Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">qgis.pkgetmask.pkgetmask</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>BAND</b> (defined in <a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">qgis.pkgetmask.pkgetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">qgis.pkgetmask.pkgetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>cliName</b> (defined in <a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">qgis.pkgetmask.pkgetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">qgis.pkgetmask.pkgetmask</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>DATA</b> (defined in <a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">qgis.pkgetmask.pkgetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">qgis.pkgetmask.pkgetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>defineCharacteristics</b> (defined in <a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">qgis.pkgetmask.pkgetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">qgis.pkgetmask.pkgetmask</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>EXTRA</b> (defined in <a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">qgis.pkgetmask.pkgetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">qgis.pkgetmask.pkgetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>group</b> (defined in <a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">qgis.pkgetmask.pkgetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">qgis.pkgetmask.pkgetmask</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>INPUT</b> (defined in <a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">qgis.pkgetmask.pkgetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">qgis.pkgetmask.pkgetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>MAX</b> (defined in <a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">qgis.pkgetmask.pkgetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">qgis.pkgetmask.pkgetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>MIN</b> (defined in <a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">qgis.pkgetmask.pkgetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">qgis.pkgetmask.pkgetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>name</b> (defined in <a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">qgis.pkgetmask.pkgetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">qgis.pkgetmask.pkgetmask</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>NODATA</b> (defined in <a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">qgis.pkgetmask.pkgetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">qgis.pkgetmask.pkgetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>OPERATOR</b> (defined in <a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">qgis.pkgetmask.pkgetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">qgis.pkgetmask.pkgetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>OPERATOR_OPTIONS</b> (defined in <a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">qgis.pkgetmask.pkgetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">qgis.pkgetmask.pkgetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>OUTPUT</b> (defined in <a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">qgis.pkgetmask.pkgetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">qgis.pkgetmask.pkgetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>processAlgorithm</b> (defined in <a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">qgis.pkgetmask.pkgetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">qgis.pkgetmask.pkgetmask</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>RTYPE</b> (defined in <a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">qgis.pkgetmask.pkgetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">qgis.pkgetmask.pkgetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>TYPE</b> (defined in <a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">qgis.pkgetmask.pkgetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">qgis.pkgetmask.pkgetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pkgetmask_1_1pkgetmask.html b/doc/html/classqgis_1_1pkgetmask_1_1pkgetmask.html
deleted file mode 100644
index df38592..0000000
--- a/doc/html/classqgis_1_1pkgetmask_1_1pkgetmask.html
+++ /dev/null
@@ -1,157 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: qgis.pkgetmask.pkgetmask Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pkgetmask</b></li><li class="navelem"><a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">pkgetmask</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="classqgis_1_1pkgetmask_1_1pkgetmask-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">qgis.pkgetmask.pkgetmask Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for qgis.pkgetmask.pkgetmask:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pkgetmask_1_1pkgetmask__inherit__graph.png" border="0" usemap="#qgis_8pkgetmask_8pkgetmask_inherit__map" alt="Inheritance graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for qgis.pkgetmask.pkgetmask:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pkgetmask_1_1pkgetmask__coll__graph.png" border="0" usemap="#qgis_8pkgetmask_8pkgetmask_coll__map" alt="Collaboration graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:ae9c628f2f53021c654f6cf1a597b3c54"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae9c628f2f53021c654f6cf1a597b3c54"></a>
-def </td><td class="memItemRight" valign="bottom"><b>cliName</b></td></tr>
-<tr class="separator:ae9c628f2f53021c654f6cf1a597b3c54"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4d990f23726755e8310f9c6ba3be21a6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4d990f23726755e8310f9c6ba3be21a6"></a>
-def </td><td class="memItemRight" valign="bottom"><b>defineCharacteristics</b></td></tr>
-<tr class="separator:a4d990f23726755e8310f9c6ba3be21a6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6db8620a4e55fda9dfbda6e86b052666"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6db8620a4e55fda9dfbda6e86b052666"></a>
-def </td><td class="memItemRight" valign="bottom"><b>processAlgorithm</b></td></tr>
-<tr class="separator:a6db8620a4e55fda9dfbda6e86b052666"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:ab9a736f64545f8ac36bbf1eae8576cd5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab9a736f64545f8ac36bbf1eae8576cd5"></a>
- </td><td class="memItemRight" valign="bottom"><b>name</b></td></tr>
-<tr class="separator:ab9a736f64545f8ac36bbf1eae8576cd5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa0e0d197447b16bee323b2e9fdaa876b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa0e0d197447b16bee323b2e9fdaa876b"></a>
- </td><td class="memItemRight" valign="bottom"><b>group</b></td></tr>
-<tr class="separator:aa0e0d197447b16bee323b2e9fdaa876b"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:a1990e1aab12f8a84394b7c44c9c78efd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1990e1aab12f8a84394b7c44c9c78efd"></a>
-string </td><td class="memItemRight" valign="bottom"><b>INPUT</b> = "INPUT"</td></tr>
-<tr class="separator:a1990e1aab12f8a84394b7c44c9c78efd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad45ff2519baa645c8bf75e063fc2939d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad45ff2519baa645c8bf75e063fc2939d"></a>
-string </td><td class="memItemRight" valign="bottom"><b>BAND</b> = "BAND"</td></tr>
-<tr class="separator:ad45ff2519baa645c8bf75e063fc2939d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a86f16ca18fe18083446f0a2fdab1c989"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a86f16ca18fe18083446f0a2fdab1c989"></a>
-string </td><td class="memItemRight" valign="bottom"><b>MIN</b> = "MIN"</td></tr>
-<tr class="separator:a86f16ca18fe18083446f0a2fdab1c989"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a74d4d91d62405ae1cb788e0fc52b64c6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a74d4d91d62405ae1cb788e0fc52b64c6"></a>
-string </td><td class="memItemRight" valign="bottom"><b>MAX</b> = "MAX"</td></tr>
-<tr class="separator:a74d4d91d62405ae1cb788e0fc52b64c6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a418e9d844d597fb600d16afc0b7e70cd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a418e9d844d597fb600d16afc0b7e70cd"></a>
-list </td><td class="memItemRight" valign="bottom"><b>OPERATOR_OPTIONS</b> = ["OR", "AND"]</td></tr>
-<tr class="separator:a418e9d844d597fb600d16afc0b7e70cd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2a1d0302fefa56238c42d3ea6f747941"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2a1d0302fefa56238c42d3ea6f747941"></a>
-string </td><td class="memItemRight" valign="bottom"><b>OPERATOR</b> = "OPERATOR"</td></tr>
-<tr class="separator:a2a1d0302fefa56238c42d3ea6f747941"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a579e059d072a57554c9a61180a9fd08c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a579e059d072a57554c9a61180a9fd08c"></a>
-string </td><td class="memItemRight" valign="bottom"><b>DATA</b> = "DATA"</td></tr>
-<tr class="separator:a579e059d072a57554c9a61180a9fd08c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab851d0b2d6acf47df89a9d89373f804b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab851d0b2d6acf47df89a9d89373f804b"></a>
-string </td><td class="memItemRight" valign="bottom"><b>NODATA</b> = "NODATA"</td></tr>
-<tr class="separator:ab851d0b2d6acf47df89a9d89373f804b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5eedd82f4dda4923e8560ff43b657f73"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5eedd82f4dda4923e8560ff43b657f73"></a>
-string </td><td class="memItemRight" valign="bottom"><b>OUTPUT</b> = "OUTPUT"</td></tr>
-<tr class="separator:a5eedd82f4dda4923e8560ff43b657f73"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a091f5ee5165bde746ed9841909d06d5c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a091f5ee5165bde746ed9841909d06d5c"></a>
-string </td><td class="memItemRight" valign="bottom"><b>RTYPE</b> = 'RTYPE'</td></tr>
-<tr class="separator:a091f5ee5165bde746ed9841909d06d5c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7f1272eeb8cf07f429440cdf387c2d17"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7f1272eeb8cf07f429440cdf387c2d17"></a>
-list </td><td class="memItemRight" valign="bottom"><b>TYPE</b> = ['none', 'Byte','Int16','UInt16','UInt32','Int32','Float32','Float64','CInt16','CInt32','CFloat32','CFloat64']</td></tr>
-<tr class="separator:a7f1272eeb8cf07f429440cdf387c2d17"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7c46da38f871a5211efe90216afff4ef"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7c46da38f871a5211efe90216afff4ef"></a>
-string </td><td class="memItemRight" valign="bottom"><b>EXTRA</b> = 'EXTRA'</td></tr>
-<tr class="separator:a7c46da38f871a5211efe90216afff4ef"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="pkgetmask_8py_source.html#l00038">38</a> of file <a class="el" href="pkgetmask_8py_source.html">pkgetmask.py</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/qgis/<a class="el" href="pkgetmask_8py_source.html">pkgetmask.py</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pkgetmask_1_1pkgetmask__coll__graph.map b/doc/html/classqgis_1_1pkgetmask_1_1pkgetmask__coll__graph.map
deleted file mode 100644
index 59b1816..0000000
--- a/doc/html/classqgis_1_1pkgetmask_1_1pkgetmask__coll__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pkgetmask.pkgetmask" name="qgis.pkgetmask.pkgetmask">
-</map>
diff --git a/doc/html/classqgis_1_1pkgetmask_1_1pkgetmask__coll__graph.md5 b/doc/html/classqgis_1_1pkgetmask_1_1pkgetmask__coll__graph.md5
deleted file mode 100644
index 6f3ee59..0000000
--- a/doc/html/classqgis_1_1pkgetmask_1_1pkgetmask__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-9473b48fc4d0e2ccad567f96a6c088dc
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pkgetmask_1_1pkgetmask__coll__graph.png b/doc/html/classqgis_1_1pkgetmask_1_1pkgetmask__coll__graph.png
deleted file mode 100644
index 86c161e..0000000
Binary files a/doc/html/classqgis_1_1pkgetmask_1_1pkgetmask__coll__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pkgetmask_1_1pkgetmask__inherit__graph.map b/doc/html/classqgis_1_1pkgetmask_1_1pkgetmask__inherit__graph.map
deleted file mode 100644
index 59b1816..0000000
--- a/doc/html/classqgis_1_1pkgetmask_1_1pkgetmask__inherit__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pkgetmask.pkgetmask" name="qgis.pkgetmask.pkgetmask">
-</map>
diff --git a/doc/html/classqgis_1_1pkgetmask_1_1pkgetmask__inherit__graph.md5 b/doc/html/classqgis_1_1pkgetmask_1_1pkgetmask__inherit__graph.md5
deleted file mode 100644
index 6f3ee59..0000000
--- a/doc/html/classqgis_1_1pkgetmask_1_1pkgetmask__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-9473b48fc4d0e2ccad567f96a6c088dc
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pkgetmask_1_1pkgetmask__inherit__graph.png b/doc/html/classqgis_1_1pkgetmask_1_1pkgetmask__inherit__graph.png
deleted file mode 100644
index 86c161e..0000000
Binary files a/doc/html/classqgis_1_1pkgetmask_1_1pkgetmask__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pklas2img_1_1pklas2img-members.html b/doc/html/classqgis_1_1pklas2img_1_1pklas2img-members.html
deleted file mode 100644
index 57fc4c3..0000000
--- a/doc/html/classqgis_1_1pklas2img_1_1pklas2img-members.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pklas2img</b></li><li class="navelem"><a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">pklas2img</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">qgis.pklas2img.pklas2img Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ATTRIBUTE</b> (defined in <a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>ATTRIBUTE_OPTIONS</b> (defined in <a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cliName</b> (defined in <a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>COMPOSITE</b> (defined in <a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>COMPOSITE_OPTIONS</b> (defined in <a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>defineCharacteristics</b> (defined in <a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>DX</b> (defined in <a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>DY</b> (defined in <a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>EXTRA</b> (defined in <a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>FILTER</b> (defined in <a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>FILTER_OPTIONS</b> (defined in <a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>group</b> (defined in <a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>INPUT</b> (defined in <a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>name</b> (defined in <a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>NODATA</b> (defined in <a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>OUTPUT</b> (defined in <a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>PERCENTILE</b> (defined in <a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>processAlgorithm</b> (defined in <a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>RTYPE</b> (defined in <a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>TYPE</b> (defined in <a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pklas2img_1_1pklas2img.html b/doc/html/classqgis_1_1pklas2img_1_1pklas2img.html
deleted file mode 100644
index 97c51f8..0000000
--- a/doc/html/classqgis_1_1pklas2img_1_1pklas2img.html
+++ /dev/null
@@ -1,166 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: qgis.pklas2img.pklas2img Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pklas2img</b></li><li class="navelem"><a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html">pklas2img</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="classqgis_1_1pklas2img_1_1pklas2img-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">qgis.pklas2img.pklas2img Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for qgis.pklas2img.pklas2img:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pklas2img_1_1pklas2img__inherit__graph.png" border="0" usemap="#qgis_8pklas2img_8pklas2img_inherit__map" alt="Inheritance graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for qgis.pklas2img.pklas2img:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pklas2img_1_1pklas2img__coll__graph.png" border="0" usemap="#qgis_8pklas2img_8pklas2img_coll__map" alt="Collaboration graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a32b88cd9bfc7602df94418d953cc44a7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a32b88cd9bfc7602df94418d953cc44a7"></a>
-def </td><td class="memItemRight" valign="bottom"><b>cliName</b></td></tr>
-<tr class="separator:a32b88cd9bfc7602df94418d953cc44a7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9d29035252b68c6d64910c363743357c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9d29035252b68c6d64910c363743357c"></a>
-def </td><td class="memItemRight" valign="bottom"><b>defineCharacteristics</b></td></tr>
-<tr class="separator:a9d29035252b68c6d64910c363743357c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adae08f5a8a287a1584d18aed0a0d994d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adae08f5a8a287a1584d18aed0a0d994d"></a>
-def </td><td class="memItemRight" valign="bottom"><b>processAlgorithm</b></td></tr>
-<tr class="separator:adae08f5a8a287a1584d18aed0a0d994d"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:aa41f6aa59efd28521fd49a8f2740917d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa41f6aa59efd28521fd49a8f2740917d"></a>
- </td><td class="memItemRight" valign="bottom"><b>name</b></td></tr>
-<tr class="separator:aa41f6aa59efd28521fd49a8f2740917d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5504eac2d342bdae408e9ce3d51a6a6a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5504eac2d342bdae408e9ce3d51a6a6a"></a>
- </td><td class="memItemRight" valign="bottom"><b>group</b></td></tr>
-<tr class="separator:a5504eac2d342bdae408e9ce3d51a6a6a"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:a7b57ce9958d387ac60e2564b468c9121"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7b57ce9958d387ac60e2564b468c9121"></a>
-string </td><td class="memItemRight" valign="bottom"><b>INPUT</b> = "INPUT"</td></tr>
-<tr class="separator:a7b57ce9958d387ac60e2564b468c9121"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6b94eb994fa787dc2a90c4df618b7192"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6b94eb994fa787dc2a90c4df618b7192"></a>
-string </td><td class="memItemRight" valign="bottom"><b>OUTPUT</b> = "OUTPUT"</td></tr>
-<tr class="separator:a6b94eb994fa787dc2a90c4df618b7192"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0409e973a7b8cdf6057c607a998354a5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0409e973a7b8cdf6057c607a998354a5"></a>
-list </td><td class="memItemRight" valign="bottom"><b>ATTRIBUTE_OPTIONS</b> = ["z","intensity", "return", "nreturn"]</td></tr>
-<tr class="separator:a0409e973a7b8cdf6057c607a998354a5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad00b69bd446875f229cadeb69ac6a8f7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad00b69bd446875f229cadeb69ac6a8f7"></a>
-list </td><td class="memItemRight" valign="bottom"><b>COMPOSITE_OPTIONS</b> = ["last", "min", "max", "median", "mean", "sum", "first", "profile" "percentile", "height", "values", "percentile", "number"]</td></tr>
-<tr class="separator:ad00b69bd446875f229cadeb69ac6a8f7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac7ef9219de8e84423760309190deb56e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac7ef9219de8e84423760309190deb56e"></a>
-list </td><td class="memItemRight" valign="bottom"><b>FILTER_OPTIONS</b> = ["all","first","last","single","multiple"]</td></tr>
-<tr class="separator:ac7ef9219de8e84423760309190deb56e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a130c1acc3e9b615079634fd9685b8dec"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a130c1acc3e9b615079634fd9685b8dec"></a>
-string </td><td class="memItemRight" valign="bottom"><b>ATTRIBUTE</b> = "ATTRIBUTE"</td></tr>
-<tr class="separator:a130c1acc3e9b615079634fd9685b8dec"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae0c885711f536f96a5c63d535f1bb878"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae0c885711f536f96a5c63d535f1bb878"></a>
-string </td><td class="memItemRight" valign="bottom"><b>COMPOSITE</b> = "COMPOSITE"</td></tr>
-<tr class="separator:ae0c885711f536f96a5c63d535f1bb878"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a63d7f043f1912491e2e34857ac4b498a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a63d7f043f1912491e2e34857ac4b498a"></a>
-string </td><td class="memItemRight" valign="bottom"><b>FILTER</b> = "FILTER"</td></tr>
-<tr class="separator:a63d7f043f1912491e2e34857ac4b498a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a320a11359d403b61b67cdf113770723e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a320a11359d403b61b67cdf113770723e"></a>
-string </td><td class="memItemRight" valign="bottom"><b>PERCENTILE</b> = "PERCENTILE"</td></tr>
-<tr class="separator:a320a11359d403b61b67cdf113770723e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6aa0d7c47f3a6c8b9eb4375049e69824"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6aa0d7c47f3a6c8b9eb4375049e69824"></a>
-string </td><td class="memItemRight" valign="bottom"><b>DX</b> = "DX"</td></tr>
-<tr class="separator:a6aa0d7c47f3a6c8b9eb4375049e69824"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a165ee10778d2f0bdbe5abfae21f36d8f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a165ee10778d2f0bdbe5abfae21f36d8f"></a>
-string </td><td class="memItemRight" valign="bottom"><b>DY</b> = "DY"</td></tr>
-<tr class="separator:a165ee10778d2f0bdbe5abfae21f36d8f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9cbf569ff7b068dade13fb6dc0ede553"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9cbf569ff7b068dade13fb6dc0ede553"></a>
-string </td><td class="memItemRight" valign="bottom"><b>NODATA</b> = "NODATA"</td></tr>
-<tr class="separator:a9cbf569ff7b068dade13fb6dc0ede553"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a60a126c8d52d3911d75f9e67231e3730"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a60a126c8d52d3911d75f9e67231e3730"></a>
-string </td><td class="memItemRight" valign="bottom"><b>RTYPE</b> = 'RTYPE'</td></tr>
-<tr class="separator:a60a126c8d52d3911d75f9e67231e3730"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab2c9b209aebe166c5202551470dcf7f0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab2c9b209aebe166c5202551470dcf7f0"></a>
-list </td><td class="memItemRight" valign="bottom"><b>TYPE</b> = ['Float32','Byte','Int16','UInt16','UInt32','Int32','Float64','CInt16','CInt32','CFloat32','CFloat64']</td></tr>
-<tr class="separator:ab2c9b209aebe166c5202551470dcf7f0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8cf9933f7aca1f1ace4957cbde0f958e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8cf9933f7aca1f1ace4957cbde0f958e"></a>
-string </td><td class="memItemRight" valign="bottom"><b>EXTRA</b> = 'EXTRA'</td></tr>
-<tr class="separator:a8cf9933f7aca1f1ace4957cbde0f958e"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="pklas2img_8py_source.html#l00039">39</a> of file <a class="el" href="pklas2img_8py_source.html">pklas2img.py</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/qgis/<a class="el" href="pklas2img_8py_source.html">pklas2img.py</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pklas2img_1_1pklas2img__coll__graph.map b/doc/html/classqgis_1_1pklas2img_1_1pklas2img__coll__graph.map
deleted file mode 100644
index cf047a3..0000000
--- a/doc/html/classqgis_1_1pklas2img_1_1pklas2img__coll__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pklas2img.pklas2img" name="qgis.pklas2img.pklas2img">
-</map>
diff --git a/doc/html/classqgis_1_1pklas2img_1_1pklas2img__coll__graph.md5 b/doc/html/classqgis_1_1pklas2img_1_1pklas2img__coll__graph.md5
deleted file mode 100644
index e6c946a..0000000
--- a/doc/html/classqgis_1_1pklas2img_1_1pklas2img__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-3d928e691b28993511fa3bf891620dcc
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pklas2img_1_1pklas2img__coll__graph.png b/doc/html/classqgis_1_1pklas2img_1_1pklas2img__coll__graph.png
deleted file mode 100644
index d7b1148..0000000
Binary files a/doc/html/classqgis_1_1pklas2img_1_1pklas2img__coll__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pklas2img_1_1pklas2img__inherit__graph.map b/doc/html/classqgis_1_1pklas2img_1_1pklas2img__inherit__graph.map
deleted file mode 100644
index cf047a3..0000000
--- a/doc/html/classqgis_1_1pklas2img_1_1pklas2img__inherit__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pklas2img.pklas2img" name="qgis.pklas2img.pklas2img">
-</map>
diff --git a/doc/html/classqgis_1_1pklas2img_1_1pklas2img__inherit__graph.md5 b/doc/html/classqgis_1_1pklas2img_1_1pklas2img__inherit__graph.md5
deleted file mode 100644
index e6c946a..0000000
--- a/doc/html/classqgis_1_1pklas2img_1_1pklas2img__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-3d928e691b28993511fa3bf891620dcc
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pklas2img_1_1pklas2img__inherit__graph.png b/doc/html/classqgis_1_1pklas2img_1_1pklas2img__inherit__graph.png
deleted file mode 100644
index d7b1148..0000000
Binary files a/doc/html/classqgis_1_1pklas2img_1_1pklas2img__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pkreclass_1_1pkreclass-members.html b/doc/html/classqgis_1_1pkreclass_1_1pkreclass-members.html
deleted file mode 100644
index cf88736..0000000
--- a/doc/html/classqgis_1_1pkreclass_1_1pkreclass-members.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pkreclass</b></li><li class="navelem"><a class="el" href="classqgis_1_1pkreclass_1_1pkreclass.html">pkreclass</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">qgis.pkreclass.pkreclass Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classqgis_1_1pkreclass_1_1pkreclass.html">qgis.pkreclass.pkreclass</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>BAND</b> (defined in <a class="el" href="classqgis_1_1pkreclass_1_1pkreclass.html">qgis.pkreclass.pkreclass</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkreclass_1_1pkreclass.html">qgis.pkreclass.pkreclass</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>CLASS</b> (defined in <a class="el" href="classqgis_1_1pkreclass_1_1pkreclass.html">qgis.pkreclass.pkreclass</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkreclass_1_1pkreclass.html">qgis.pkreclass.pkreclass</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cliName</b> (defined in <a class="el" href="classqgis_1_1pkreclass_1_1pkreclass.html">qgis.pkreclass.pkreclass</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkreclass_1_1pkreclass.html">qgis.pkreclass.pkreclass</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>defineCharacteristics</b> (defined in <a class="el" href="classqgis_1_1pkreclass_1_1pkreclass.html">qgis.pkreclass.pkreclass</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkreclass_1_1pkreclass.html">qgis.pkreclass.pkreclass</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>EXTRA</b> (defined in <a class="el" href="classqgis_1_1pkreclass_1_1pkreclass.html">qgis.pkreclass.pkreclass</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkreclass_1_1pkreclass.html">qgis.pkreclass.pkreclass</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>group</b> (defined in <a class="el" href="classqgis_1_1pkreclass_1_1pkreclass.html">qgis.pkreclass.pkreclass</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkreclass_1_1pkreclass.html">qgis.pkreclass.pkreclass</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>INPUT</b> (defined in <a class="el" href="classqgis_1_1pkreclass_1_1pkreclass.html">qgis.pkreclass.pkreclass</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkreclass_1_1pkreclass.html">qgis.pkreclass.pkreclass</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>MASK</b> (defined in <a class="el" href="classqgis_1_1pkreclass_1_1pkreclass.html">qgis.pkreclass.pkreclass</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkreclass_1_1pkreclass.html">qgis.pkreclass.pkreclass</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>MSKNODATA</b> (defined in <a class="el" href="classqgis_1_1pkreclass_1_1pkreclass.html">qgis.pkreclass.pkreclass</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkreclass_1_1pkreclass.html">qgis.pkreclass.pkreclass</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>name</b> (defined in <a class="el" href="classqgis_1_1pkreclass_1_1pkreclass.html">qgis.pkreclass.pkreclass</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkreclass_1_1pkreclass.html">qgis.pkreclass.pkreclass</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>NODATA</b> (defined in <a class="el" href="classqgis_1_1pkreclass_1_1pkreclass.html">qgis.pkreclass.pkreclass</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkreclass_1_1pkreclass.html">qgis.pkreclass.pkreclass</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>OUTPUT</b> (defined in <a class="el" href="classqgis_1_1pkreclass_1_1pkreclass.html">qgis.pkreclass.pkreclass</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkreclass_1_1pkreclass.html">qgis.pkreclass.pkreclass</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>processAlgorithm</b> (defined in <a class="el" href="classqgis_1_1pkreclass_1_1pkreclass.html">qgis.pkreclass.pkreclass</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkreclass_1_1pkreclass.html">qgis.pkreclass.pkreclass</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>RECLASS</b> (defined in <a class="el" href="classqgis_1_1pkreclass_1_1pkreclass.html">qgis.pkreclass.pkreclass</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkreclass_1_1pkreclass.html">qgis.pkreclass.pkreclass</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>RTYPE</b> (defined in <a class="el" href="classqgis_1_1pkreclass_1_1pkreclass.html">qgis.pkreclass.pkreclass</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkreclass_1_1pkreclass.html">qgis.pkreclass.pkreclass</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>TYPE</b> (defined in <a class="el" href="classqgis_1_1pkreclass_1_1pkreclass.html">qgis.pkreclass.pkreclass</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pkreclass_1_1pkreclass.html">qgis.pkreclass.pkreclass</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pkreclass_1_1pkreclass.html b/doc/html/classqgis_1_1pkreclass_1_1pkreclass.html
deleted file mode 100644
index c0ea4dc..0000000
--- a/doc/html/classqgis_1_1pkreclass_1_1pkreclass.html
+++ /dev/null
@@ -1,154 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: qgis.pkreclass.pkreclass Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pkreclass</b></li><li class="navelem"><a class="el" href="classqgis_1_1pkreclass_1_1pkreclass.html">pkreclass</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="classqgis_1_1pkreclass_1_1pkreclass-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">qgis.pkreclass.pkreclass Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for qgis.pkreclass.pkreclass:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pkreclass_1_1pkreclass__inherit__graph.png" border="0" usemap="#qgis_8pkreclass_8pkreclass_inherit__map" alt="Inheritance graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for qgis.pkreclass.pkreclass:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pkreclass_1_1pkreclass__coll__graph.png" border="0" usemap="#qgis_8pkreclass_8pkreclass_coll__map" alt="Collaboration graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a1e3b6410096d899e755b4c3b8ceb2b63"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1e3b6410096d899e755b4c3b8ceb2b63"></a>
-def </td><td class="memItemRight" valign="bottom"><b>cliName</b></td></tr>
-<tr class="separator:a1e3b6410096d899e755b4c3b8ceb2b63"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa10069a49d180825b9d299868cdee9b5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa10069a49d180825b9d299868cdee9b5"></a>
-def </td><td class="memItemRight" valign="bottom"><b>defineCharacteristics</b></td></tr>
-<tr class="separator:aa10069a49d180825b9d299868cdee9b5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab28b6ffbe5ed1d67d6f569af5af158ca"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab28b6ffbe5ed1d67d6f569af5af158ca"></a>
-def </td><td class="memItemRight" valign="bottom"><b>processAlgorithm</b></td></tr>
-<tr class="separator:ab28b6ffbe5ed1d67d6f569af5af158ca"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:a2d3e9d7948ff61e49ecaa646ace3b51c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2d3e9d7948ff61e49ecaa646ace3b51c"></a>
- </td><td class="memItemRight" valign="bottom"><b>name</b></td></tr>
-<tr class="separator:a2d3e9d7948ff61e49ecaa646ace3b51c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5474989e8a32b4f84da61b1030d928d4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5474989e8a32b4f84da61b1030d928d4"></a>
- </td><td class="memItemRight" valign="bottom"><b>group</b></td></tr>
-<tr class="separator:a5474989e8a32b4f84da61b1030d928d4"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:aac30b4b09ec8af2b365ffc60dd969fa4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aac30b4b09ec8af2b365ffc60dd969fa4"></a>
-string </td><td class="memItemRight" valign="bottom"><b>INPUT</b> = "INPUT"</td></tr>
-<tr class="separator:aac30b4b09ec8af2b365ffc60dd969fa4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac06924e2f6d01acffb97d97f5ed30550"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac06924e2f6d01acffb97d97f5ed30550"></a>
-string </td><td class="memItemRight" valign="bottom"><b>OUTPUT</b> = "OUTPUT"</td></tr>
-<tr class="separator:ac06924e2f6d01acffb97d97f5ed30550"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6eee06a836cf0cda3bb7d4e471dd0ff8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6eee06a836cf0cda3bb7d4e471dd0ff8"></a>
-string </td><td class="memItemRight" valign="bottom"><b>CLASS</b> = "CLASS"</td></tr>
-<tr class="separator:a6eee06a836cf0cda3bb7d4e471dd0ff8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a670784309f5dde13aa8d7c8956b85501"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a670784309f5dde13aa8d7c8956b85501"></a>
-string </td><td class="memItemRight" valign="bottom"><b>BAND</b> = "BAND"</td></tr>
-<tr class="separator:a670784309f5dde13aa8d7c8956b85501"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab677fcc1481ee0f4804a64ba5a9ccf41"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab677fcc1481ee0f4804a64ba5a9ccf41"></a>
-string </td><td class="memItemRight" valign="bottom"><b>RECLASS</b> = "RECLASS"</td></tr>
-<tr class="separator:ab677fcc1481ee0f4804a64ba5a9ccf41"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8d00f95e83e048f830d3541e0006412a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8d00f95e83e048f830d3541e0006412a"></a>
-string </td><td class="memItemRight" valign="bottom"><b>MASK</b> = "MASK"</td></tr>
-<tr class="separator:a8d00f95e83e048f830d3541e0006412a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad9cb8a5b163ad79ff18263dac1c27ea9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad9cb8a5b163ad79ff18263dac1c27ea9"></a>
-string </td><td class="memItemRight" valign="bottom"><b>MSKNODATA</b> = "MSKNODATA"</td></tr>
-<tr class="separator:ad9cb8a5b163ad79ff18263dac1c27ea9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a377d3003bdce66a2ef2083bcd439950f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a377d3003bdce66a2ef2083bcd439950f"></a>
-string </td><td class="memItemRight" valign="bottom"><b>NODATA</b> = "NODATA"</td></tr>
-<tr class="separator:a377d3003bdce66a2ef2083bcd439950f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7b77eea90f50504357742100c95ac454"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7b77eea90f50504357742100c95ac454"></a>
-string </td><td class="memItemRight" valign="bottom"><b>RTYPE</b> = 'RTYPE'</td></tr>
-<tr class="separator:a7b77eea90f50504357742100c95ac454"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af8727418e991db1564e423d9ebeb2c89"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af8727418e991db1564e423d9ebeb2c89"></a>
-list </td><td class="memItemRight" valign="bottom"><b>TYPE</b> = ['none', 'Byte','Int16','UInt16','UInt32','Int32','Float32','Float64','CInt16','CInt32','CFloat32','CFloat64']</td></tr>
-<tr class="separator:af8727418e991db1564e423d9ebeb2c89"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a10e1786759936dd074581841f73c2505"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a10e1786759936dd074581841f73c2505"></a>
-string </td><td class="memItemRight" valign="bottom"><b>EXTRA</b> = 'EXTRA'</td></tr>
-<tr class="separator:a10e1786759936dd074581841f73c2505"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="pkreclass_8py_source.html#l00038">38</a> of file <a class="el" href="pkreclass_8py_source.html">pkreclass.py</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/qgis/<a class="el" href="pkreclass_8py_source.html">pkreclass.py</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pkreclass_1_1pkreclass__coll__graph.map b/doc/html/classqgis_1_1pkreclass_1_1pkreclass__coll__graph.map
deleted file mode 100644
index d9022ef..0000000
--- a/doc/html/classqgis_1_1pkreclass_1_1pkreclass__coll__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pkreclass.pkreclass" name="qgis.pkreclass.pkreclass">
-</map>
diff --git a/doc/html/classqgis_1_1pkreclass_1_1pkreclass__coll__graph.md5 b/doc/html/classqgis_1_1pkreclass_1_1pkreclass__coll__graph.md5
deleted file mode 100644
index 6e72abe..0000000
--- a/doc/html/classqgis_1_1pkreclass_1_1pkreclass__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-00293936f75bf36c5fc69d4acd9d76a7
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pkreclass_1_1pkreclass__coll__graph.png b/doc/html/classqgis_1_1pkreclass_1_1pkreclass__coll__graph.png
deleted file mode 100644
index 6e99d45..0000000
Binary files a/doc/html/classqgis_1_1pkreclass_1_1pkreclass__coll__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pkreclass_1_1pkreclass__inherit__graph.map b/doc/html/classqgis_1_1pkreclass_1_1pkreclass__inherit__graph.map
deleted file mode 100644
index d9022ef..0000000
--- a/doc/html/classqgis_1_1pkreclass_1_1pkreclass__inherit__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pkreclass.pkreclass" name="qgis.pkreclass.pkreclass">
-</map>
diff --git a/doc/html/classqgis_1_1pkreclass_1_1pkreclass__inherit__graph.md5 b/doc/html/classqgis_1_1pkreclass_1_1pkreclass__inherit__graph.md5
deleted file mode 100644
index 6e72abe..0000000
--- a/doc/html/classqgis_1_1pkreclass_1_1pkreclass__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-00293936f75bf36c5fc69d4acd9d76a7
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pkreclass_1_1pkreclass__inherit__graph.png b/doc/html/classqgis_1_1pkreclass_1_1pkreclass__inherit__graph.png
deleted file mode 100644
index 6e99d45..0000000
Binary files a/doc/html/classqgis_1_1pkreclass_1_1pkreclass__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pksetmask_1_1pksetmask-members.html b/doc/html/classqgis_1_1pksetmask_1_1pksetmask-members.html
deleted file mode 100644
index 1175255..0000000
--- a/doc/html/classqgis_1_1pksetmask_1_1pksetmask-members.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pksetmask</b></li><li class="navelem"><a class="el" href="classqgis_1_1pksetmask_1_1pksetmask.html">pksetmask</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">qgis.pksetmask.pksetmask Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classqgis_1_1pksetmask_1_1pksetmask.html">qgis.pksetmask.pksetmask</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cliName</b> (defined in <a class="el" href="classqgis_1_1pksetmask_1_1pksetmask.html">qgis.pksetmask.pksetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pksetmask_1_1pksetmask.html">qgis.pksetmask.pksetmask</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>defineCharacteristics</b> (defined in <a class="el" href="classqgis_1_1pksetmask_1_1pksetmask.html">qgis.pksetmask.pksetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pksetmask_1_1pksetmask.html">qgis.pksetmask.pksetmask</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>EXTRA</b> (defined in <a class="el" href="classqgis_1_1pksetmask_1_1pksetmask.html">qgis.pksetmask.pksetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pksetmask_1_1pksetmask.html">qgis.pksetmask.pksetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>group</b> (defined in <a class="el" href="classqgis_1_1pksetmask_1_1pksetmask.html">qgis.pksetmask.pksetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pksetmask_1_1pksetmask.html">qgis.pksetmask.pksetmask</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>INPUT</b> (defined in <a class="el" href="classqgis_1_1pksetmask_1_1pksetmask.html">qgis.pksetmask.pksetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pksetmask_1_1pksetmask.html">qgis.pksetmask.pksetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>MASK</b> (defined in <a class="el" href="classqgis_1_1pksetmask_1_1pksetmask.html">qgis.pksetmask.pksetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pksetmask_1_1pksetmask.html">qgis.pksetmask.pksetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>MSKBAND</b> (defined in <a class="el" href="classqgis_1_1pksetmask_1_1pksetmask.html">qgis.pksetmask.pksetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pksetmask_1_1pksetmask.html">qgis.pksetmask.pksetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>MSKNODATA</b> (defined in <a class="el" href="classqgis_1_1pksetmask_1_1pksetmask.html">qgis.pksetmask.pksetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pksetmask_1_1pksetmask.html">qgis.pksetmask.pksetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>name</b> (defined in <a class="el" href="classqgis_1_1pksetmask_1_1pksetmask.html">qgis.pksetmask.pksetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pksetmask_1_1pksetmask.html">qgis.pksetmask.pksetmask</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>NODATA</b> (defined in <a class="el" href="classqgis_1_1pksetmask_1_1pksetmask.html">qgis.pksetmask.pksetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pksetmask_1_1pksetmask.html">qgis.pksetmask.pksetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>OPERATOR</b> (defined in <a class="el" href="classqgis_1_1pksetmask_1_1pksetmask.html">qgis.pksetmask.pksetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pksetmask_1_1pksetmask.html">qgis.pksetmask.pksetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>OPERATOR_OPTIONS</b> (defined in <a class="el" href="classqgis_1_1pksetmask_1_1pksetmask.html">qgis.pksetmask.pksetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pksetmask_1_1pksetmask.html">qgis.pksetmask.pksetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>OUTPUT</b> (defined in <a class="el" href="classqgis_1_1pksetmask_1_1pksetmask.html">qgis.pksetmask.pksetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pksetmask_1_1pksetmask.html">qgis.pksetmask.pksetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>processAlgorithm</b> (defined in <a class="el" href="classqgis_1_1pksetmask_1_1pksetmask.html">qgis.pksetmask.pksetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pksetmask_1_1pksetmask.html">qgis.pksetmask.pksetmask</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>RTYPE</b> (defined in <a class="el" href="classqgis_1_1pksetmask_1_1pksetmask.html">qgis.pksetmask.pksetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pksetmask_1_1pksetmask.html">qgis.pksetmask.pksetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>TYPE</b> (defined in <a class="el" href="classqgis_1_1pksetmask_1_1pksetmask.html">qgis.pksetmask.pksetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pksetmask_1_1pksetmask.html">qgis.pksetmask.pksetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pksetmask_1_1pksetmask.html b/doc/html/classqgis_1_1pksetmask_1_1pksetmask.html
deleted file mode 100644
index 4ff6786..0000000
--- a/doc/html/classqgis_1_1pksetmask_1_1pksetmask.html
+++ /dev/null
@@ -1,154 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: qgis.pksetmask.pksetmask Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pksetmask</b></li><li class="navelem"><a class="el" href="classqgis_1_1pksetmask_1_1pksetmask.html">pksetmask</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="classqgis_1_1pksetmask_1_1pksetmask-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">qgis.pksetmask.pksetmask Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for qgis.pksetmask.pksetmask:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pksetmask_1_1pksetmask__inherit__graph.png" border="0" usemap="#qgis_8pksetmask_8pksetmask_inherit__map" alt="Inheritance graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for qgis.pksetmask.pksetmask:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pksetmask_1_1pksetmask__coll__graph.png" border="0" usemap="#qgis_8pksetmask_8pksetmask_coll__map" alt="Collaboration graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a539b2bbbabaa1ea1ac1dcdcc60a87669"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a539b2bbbabaa1ea1ac1dcdcc60a87669"></a>
-def </td><td class="memItemRight" valign="bottom"><b>cliName</b></td></tr>
-<tr class="separator:a539b2bbbabaa1ea1ac1dcdcc60a87669"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af821d49d5dc0751df801aa77f3c45439"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af821d49d5dc0751df801aa77f3c45439"></a>
-def </td><td class="memItemRight" valign="bottom"><b>defineCharacteristics</b></td></tr>
-<tr class="separator:af821d49d5dc0751df801aa77f3c45439"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a525d67ecea4615d5e54bd6c2d6d7a911"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a525d67ecea4615d5e54bd6c2d6d7a911"></a>
-def </td><td class="memItemRight" valign="bottom"><b>processAlgorithm</b></td></tr>
-<tr class="separator:a525d67ecea4615d5e54bd6c2d6d7a911"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:ac356f16f384fdc78b5419cdbaaac496d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac356f16f384fdc78b5419cdbaaac496d"></a>
- </td><td class="memItemRight" valign="bottom"><b>name</b></td></tr>
-<tr class="separator:ac356f16f384fdc78b5419cdbaaac496d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a26a6204cff0e0414422bddb6d714c8d5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a26a6204cff0e0414422bddb6d714c8d5"></a>
- </td><td class="memItemRight" valign="bottom"><b>group</b></td></tr>
-<tr class="separator:a26a6204cff0e0414422bddb6d714c8d5"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:a64b4d0cf98dae937536135be3220011d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a64b4d0cf98dae937536135be3220011d"></a>
-string </td><td class="memItemRight" valign="bottom"><b>INPUT</b> = "INPUT"</td></tr>
-<tr class="separator:a64b4d0cf98dae937536135be3220011d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a926a151acae3b3947f8f659c08901a0e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a926a151acae3b3947f8f659c08901a0e"></a>
-string </td><td class="memItemRight" valign="bottom"><b>MASK</b> = "MASK"</td></tr>
-<tr class="separator:a926a151acae3b3947f8f659c08901a0e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afd621c70d1c2fc2f29a598ca94f52209"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afd621c70d1c2fc2f29a598ca94f52209"></a>
-string </td><td class="memItemRight" valign="bottom"><b>MSKNODATA</b> = "MSKNODATA"</td></tr>
-<tr class="separator:afd621c70d1c2fc2f29a598ca94f52209"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a72fd0200a13dd69eb8a8e8664288f8f3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a72fd0200a13dd69eb8a8e8664288f8f3"></a>
-string </td><td class="memItemRight" valign="bottom"><b>MSKBAND</b> = "MSKBAND"</td></tr>
-<tr class="separator:a72fd0200a13dd69eb8a8e8664288f8f3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0ec16c72e434e986dc7127edd22a8756"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0ec16c72e434e986dc7127edd22a8756"></a>
-list </td><td class="memItemRight" valign="bottom"><b>OPERATOR_OPTIONS</b> = ["=","<",">","!"]</td></tr>
-<tr class="separator:a0ec16c72e434e986dc7127edd22a8756"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a68d2802febad55d67d4848ee6553d21e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a68d2802febad55d67d4848ee6553d21e"></a>
-string </td><td class="memItemRight" valign="bottom"><b>OPERATOR</b> = "OPERATOR"</td></tr>
-<tr class="separator:a68d2802febad55d67d4848ee6553d21e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7db2c15757ac66baf866fcaaba9f27ac"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7db2c15757ac66baf866fcaaba9f27ac"></a>
-string </td><td class="memItemRight" valign="bottom"><b>NODATA</b> = "NODATA"</td></tr>
-<tr class="separator:a7db2c15757ac66baf866fcaaba9f27ac"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1f43a43129a59344782bd62b9984045b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1f43a43129a59344782bd62b9984045b"></a>
-string </td><td class="memItemRight" valign="bottom"><b>OUTPUT</b> = "OUTPUT"</td></tr>
-<tr class="separator:a1f43a43129a59344782bd62b9984045b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a53adabeb756e8f6c38b739a182b4c351"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a53adabeb756e8f6c38b739a182b4c351"></a>
-string </td><td class="memItemRight" valign="bottom"><b>RTYPE</b> = 'RTYPE'</td></tr>
-<tr class="separator:a53adabeb756e8f6c38b739a182b4c351"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4c222c8118aa51967806a48f9e67151a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4c222c8118aa51967806a48f9e67151a"></a>
-list </td><td class="memItemRight" valign="bottom"><b>TYPE</b> = ['none', 'Byte','Int16','UInt16','UInt32','Int32','Float32','Float64','CInt16','CInt32','CFloat32','CFloat64']</td></tr>
-<tr class="separator:a4c222c8118aa51967806a48f9e67151a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae31305e3b79571cc6475b47cf9c4762e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae31305e3b79571cc6475b47cf9c4762e"></a>
-string </td><td class="memItemRight" valign="bottom"><b>EXTRA</b> = 'EXTRA'</td></tr>
-<tr class="separator:ae31305e3b79571cc6475b47cf9c4762e"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="pksetmask_8py_source.html#l00038">38</a> of file <a class="el" href="pksetmask_8py_source.html">pksetmask.py</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/qgis/<a class="el" href="pksetmask_8py_source.html">pksetmask.py</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pksetmask_1_1pksetmask__coll__graph.map b/doc/html/classqgis_1_1pksetmask_1_1pksetmask__coll__graph.map
deleted file mode 100644
index 36c5ba5..0000000
--- a/doc/html/classqgis_1_1pksetmask_1_1pksetmask__coll__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pksetmask.pksetmask" name="qgis.pksetmask.pksetmask">
-</map>
diff --git a/doc/html/classqgis_1_1pksetmask_1_1pksetmask__coll__graph.md5 b/doc/html/classqgis_1_1pksetmask_1_1pksetmask__coll__graph.md5
deleted file mode 100644
index eb543ff..0000000
--- a/doc/html/classqgis_1_1pksetmask_1_1pksetmask__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-55dc897a815a6313e823df16f9c9b716
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pksetmask_1_1pksetmask__coll__graph.png b/doc/html/classqgis_1_1pksetmask_1_1pksetmask__coll__graph.png
deleted file mode 100644
index e502e7f..0000000
Binary files a/doc/html/classqgis_1_1pksetmask_1_1pksetmask__coll__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pksetmask_1_1pksetmask__inherit__graph.map b/doc/html/classqgis_1_1pksetmask_1_1pksetmask__inherit__graph.map
deleted file mode 100644
index 36c5ba5..0000000
--- a/doc/html/classqgis_1_1pksetmask_1_1pksetmask__inherit__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pksetmask.pksetmask" name="qgis.pksetmask.pksetmask">
-</map>
diff --git a/doc/html/classqgis_1_1pksetmask_1_1pksetmask__inherit__graph.md5 b/doc/html/classqgis_1_1pksetmask_1_1pksetmask__inherit__graph.md5
deleted file mode 100644
index eb543ff..0000000
--- a/doc/html/classqgis_1_1pksetmask_1_1pksetmask__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-55dc897a815a6313e823df16f9c9b716
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pksetmask_1_1pksetmask__inherit__graph.png b/doc/html/classqgis_1_1pksetmask_1_1pksetmask__inherit__graph.png
deleted file mode 100644
index e502e7f..0000000
Binary files a/doc/html/classqgis_1_1pksetmask_1_1pksetmask__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pksvm_1_1pksvm-members.html b/doc/html/classqgis_1_1pksvm_1_1pksvm-members.html
deleted file mode 100644
index ca27c29..0000000
--- a/doc/html/classqgis_1_1pksvm_1_1pksvm-members.html
+++ /dev/null
@@ -1,93 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pksvm</b></li><li class="navelem"><a class="el" href="classqgis_1_1pksvm_1_1pksvm.html">pksvm</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">qgis.pksvm.pksvm Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classqgis_1_1pksvm_1_1pksvm.html">qgis.pksvm.pksvm</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cliName</b> (defined in <a class="el" href="classqgis_1_1pksvm_1_1pksvm.html">qgis.pksvm.pksvm</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pksvm_1_1pksvm.html">qgis.pksvm.pksvm</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>COST</b> (defined in <a class="el" href="classqgis_1_1pksvm_1_1pksvm.html">qgis.pksvm.pksvm</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pksvm_1_1pksvm.html">qgis.pksvm.pksvm</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>defineCharacteristics</b> (defined in <a class="el" href="classqgis_1_1pksvm_1_1pksvm.html">qgis.pksvm.pksvm</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pksvm_1_1pksvm.html">qgis.pksvm.pksvm</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>EXTRA</b> (defined in <a class="el" href="classqgis_1_1pksvm_1_1pksvm.html">qgis.pksvm.pksvm</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pksvm_1_1pksvm.html">qgis.pksvm.pksvm</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GAMMA</b> (defined in <a class="el" href="classqgis_1_1pksvm_1_1pksvm.html">qgis.pksvm.pksvm</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pksvm_1_1pksvm.html">qgis.pksvm.pksvm</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>group</b> (defined in <a class="el" href="classqgis_1_1pksvm_1_1pksvm.html">qgis.pksvm.pksvm</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pksvm_1_1pksvm.html">qgis.pksvm.pksvm</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>INPUT</b> (defined in <a class="el" href="classqgis_1_1pksvm_1_1pksvm.html">qgis.pksvm.pksvm</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pksvm_1_1pksvm.html">qgis.pksvm.pksvm</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>ITERATE</b> (defined in <a class="el" href="classqgis_1_1pksvm_1_1pksvm.html">qgis.pksvm.pksvm</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pksvm_1_1pksvm.html">qgis.pksvm.pksvm</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>LABEL</b> (defined in <a class="el" href="classqgis_1_1pksvm_1_1pksvm.html">qgis.pksvm.pksvm</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pksvm_1_1pksvm.html">qgis.pksvm.pksvm</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>MASK</b> (defined in <a class="el" href="classqgis_1_1pksvm_1_1pksvm.html">qgis.pksvm.pksvm</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pksvm_1_1pksvm.html">qgis.pksvm.pksvm</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>MSKNODATA</b> (defined in <a class="el" href="classqgis_1_1pksvm_1_1pksvm.html">qgis.pksvm.pksvm</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pksvm_1_1pksvm.html">qgis.pksvm.pksvm</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>name</b> (defined in <a class="el" href="classqgis_1_1pksvm_1_1pksvm.html">qgis.pksvm.pksvm</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pksvm_1_1pksvm.html">qgis.pksvm.pksvm</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>OUTPUT</b> (defined in <a class="el" href="classqgis_1_1pksvm_1_1pksvm.html">qgis.pksvm.pksvm</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pksvm_1_1pksvm.html">qgis.pksvm.pksvm</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>processAlgorithm</b> (defined in <a class="el" href="classqgis_1_1pksvm_1_1pksvm.html">qgis.pksvm.pksvm</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pksvm_1_1pksvm.html">qgis.pksvm.pksvm</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>TRAINING</b> (defined in <a class="el" href="classqgis_1_1pksvm_1_1pksvm.html">qgis.pksvm.pksvm</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pksvm_1_1pksvm.html">qgis.pksvm.pksvm</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pksvm_1_1pksvm.html b/doc/html/classqgis_1_1pksvm_1_1pksvm.html
deleted file mode 100644
index d8a2095..0000000
--- a/doc/html/classqgis_1_1pksvm_1_1pksvm.html
+++ /dev/null
@@ -1,151 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: qgis.pksvm.pksvm Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pksvm</b></li><li class="navelem"><a class="el" href="classqgis_1_1pksvm_1_1pksvm.html">pksvm</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="classqgis_1_1pksvm_1_1pksvm-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">qgis.pksvm.pksvm Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for qgis.pksvm.pksvm:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pksvm_1_1pksvm__inherit__graph.png" border="0" usemap="#qgis_8pksvm_8pksvm_inherit__map" alt="Inheritance graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for qgis.pksvm.pksvm:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pksvm_1_1pksvm__coll__graph.png" border="0" usemap="#qgis_8pksvm_8pksvm_coll__map" alt="Collaboration graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:ac0504ade82ce87e0d386db1a50812bf9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac0504ade82ce87e0d386db1a50812bf9"></a>
-def </td><td class="memItemRight" valign="bottom"><b>cliName</b></td></tr>
-<tr class="separator:ac0504ade82ce87e0d386db1a50812bf9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2e00e56ee9a56a8f4010913f94e0bdb9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2e00e56ee9a56a8f4010913f94e0bdb9"></a>
-def </td><td class="memItemRight" valign="bottom"><b>defineCharacteristics</b></td></tr>
-<tr class="separator:a2e00e56ee9a56a8f4010913f94e0bdb9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9ea8c3f049900620ceebb3b1c3dea838"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9ea8c3f049900620ceebb3b1c3dea838"></a>
-def </td><td class="memItemRight" valign="bottom"><b>processAlgorithm</b></td></tr>
-<tr class="separator:a9ea8c3f049900620ceebb3b1c3dea838"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:aa5c7d4dda4c1b0316e26dfb3c8f4cf8f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa5c7d4dda4c1b0316e26dfb3c8f4cf8f"></a>
- </td><td class="memItemRight" valign="bottom"><b>name</b></td></tr>
-<tr class="separator:aa5c7d4dda4c1b0316e26dfb3c8f4cf8f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a33cc5cc741eadc78c3fa6687592cd810"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a33cc5cc741eadc78c3fa6687592cd810"></a>
- </td><td class="memItemRight" valign="bottom"><b>group</b></td></tr>
-<tr class="separator:a33cc5cc741eadc78c3fa6687592cd810"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:a70980660386dbf0e5a4abbaee81b20b7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a70980660386dbf0e5a4abbaee81b20b7"></a>
-string </td><td class="memItemRight" valign="bottom"><b>INPUT</b> = "INPUT"</td></tr>
-<tr class="separator:a70980660386dbf0e5a4abbaee81b20b7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a52e9137080458d2fa51683e03d046418"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a52e9137080458d2fa51683e03d046418"></a>
-string </td><td class="memItemRight" valign="bottom"><b>TRAINING</b> = "TRAINING"</td></tr>
-<tr class="separator:a52e9137080458d2fa51683e03d046418"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a655f6139a543113d1dd2ad8b11f773b9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a655f6139a543113d1dd2ad8b11f773b9"></a>
-string </td><td class="memItemRight" valign="bottom"><b>ITERATE</b> = "ITERATE"</td></tr>
-<tr class="separator:a655f6139a543113d1dd2ad8b11f773b9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a426fe91136cb5f3e7ebbeba2c4199501"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a426fe91136cb5f3e7ebbeba2c4199501"></a>
-string </td><td class="memItemRight" valign="bottom"><b>LABEL</b> = "LABEL"</td></tr>
-<tr class="separator:a426fe91136cb5f3e7ebbeba2c4199501"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab6c3b8cccb265ca1cfadeaa79fed04a1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab6c3b8cccb265ca1cfadeaa79fed04a1"></a>
-string </td><td class="memItemRight" valign="bottom"><b>GAMMA</b> = "GAMMA"</td></tr>
-<tr class="separator:ab6c3b8cccb265ca1cfadeaa79fed04a1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab3ec104ab7505d3115c8aa868b4f8cba"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab3ec104ab7505d3115c8aa868b4f8cba"></a>
-string </td><td class="memItemRight" valign="bottom"><b>COST</b> = "COST"</td></tr>
-<tr class="separator:ab3ec104ab7505d3115c8aa868b4f8cba"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aeb7332c0838e46bfe82b647cb5085700"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeb7332c0838e46bfe82b647cb5085700"></a>
-string </td><td class="memItemRight" valign="bottom"><b>OUTPUT</b> = "OUTPUT"</td></tr>
-<tr class="separator:aeb7332c0838e46bfe82b647cb5085700"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a614bbc0b875b73667749b0e58d89fc54"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a614bbc0b875b73667749b0e58d89fc54"></a>
-string </td><td class="memItemRight" valign="bottom"><b>MASK</b> = "MASK"</td></tr>
-<tr class="separator:a614bbc0b875b73667749b0e58d89fc54"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a63e8acd9ffce30910af0eed869439190"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a63e8acd9ffce30910af0eed869439190"></a>
-string </td><td class="memItemRight" valign="bottom"><b>MSKNODATA</b> = "MSKNODATA"</td></tr>
-<tr class="separator:a63e8acd9ffce30910af0eed869439190"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aead41106feadc1f8d3078aa839df4f79"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aead41106feadc1f8d3078aa839df4f79"></a>
-string </td><td class="memItemRight" valign="bottom"><b>EXTRA</b> = 'EXTRA'</td></tr>
-<tr class="separator:aead41106feadc1f8d3078aa839df4f79"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="pksvm_8py_source.html#l00040">40</a> of file <a class="el" href="pksvm_8py_source.html">pksvm.py</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/qgis/<a class="el" href="pksvm_8py_source.html">pksvm.py</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pksvm_1_1pksvm__coll__graph.map b/doc/html/classqgis_1_1pksvm_1_1pksvm__coll__graph.map
deleted file mode 100644
index 5ff40fb..0000000
--- a/doc/html/classqgis_1_1pksvm_1_1pksvm__coll__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pksvm.pksvm" name="qgis.pksvm.pksvm">
-</map>
diff --git a/doc/html/classqgis_1_1pksvm_1_1pksvm__coll__graph.md5 b/doc/html/classqgis_1_1pksvm_1_1pksvm__coll__graph.md5
deleted file mode 100644
index 89cada6..0000000
--- a/doc/html/classqgis_1_1pksvm_1_1pksvm__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-cf11085ef0104b77bc12740aee8128cb
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pksvm_1_1pksvm__coll__graph.png b/doc/html/classqgis_1_1pksvm_1_1pksvm__coll__graph.png
deleted file mode 100644
index f24fecf..0000000
Binary files a/doc/html/classqgis_1_1pksvm_1_1pksvm__coll__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pksvm_1_1pksvm__inherit__graph.map b/doc/html/classqgis_1_1pksvm_1_1pksvm__inherit__graph.map
deleted file mode 100644
index 5ff40fb..0000000
--- a/doc/html/classqgis_1_1pksvm_1_1pksvm__inherit__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pksvm.pksvm" name="qgis.pksvm.pksvm">
-</map>
diff --git a/doc/html/classqgis_1_1pksvm_1_1pksvm__inherit__graph.md5 b/doc/html/classqgis_1_1pksvm_1_1pksvm__inherit__graph.md5
deleted file mode 100644
index 89cada6..0000000
--- a/doc/html/classqgis_1_1pksvm_1_1pksvm__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-cf11085ef0104b77bc12740aee8128cb
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pksvm_1_1pksvm__inherit__graph.png b/doc/html/classqgis_1_1pksvm_1_1pksvm__inherit__graph.png
deleted file mode 100644
index f24fecf..0000000
Binary files a/doc/html/classqgis_1_1pksvm_1_1pksvm__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html b/doc/html/classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html
deleted file mode 100644
index a2709d7..0000000
--- a/doc/html/classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html
+++ /dev/null
@@ -1,251 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: qgis.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pktoolsAlgorithmProvider</b></li><li class="navelem"><a class="el" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html">pktoolsAlgorithmProvider</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">qgis.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for qgis.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider__inherit__graph.png" border="0" usemap="#qgis_8pktoolsAlgorithmProvider_8pktoolsAlgorithmProvider_inherit__map" alt="Inheritance graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for qgis.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider__coll__graph.png" border="0" usemap="#qgis_8pktoolsAlgorithmProvider_8pktoolsAlgorithmProvider_coll__map" alt="Collaboration graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:ac0e9f2b160f1d499c03525cd47ddc9ce"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac0e9f2b160f1d499c03525cd47ddc9ce"></a>
-def </td><td class="memItemRight" valign="bottom"><b>__init__</b></td></tr>
-<tr class="separator:ac0e9f2b160f1d499c03525cd47ddc9ce"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a41cbf8f2612d0ba5e7e858f421e4c344"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a41cbf8f2612d0ba5e7e858f421e4c344">initializeSettings</a></td></tr>
-<tr class="separator:a41cbf8f2612d0ba5e7e858f421e4c344"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a458d5bb02c856ca83d7ca332ff4125aa"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a458d5bb02c856ca83d7ca332ff4125aa">unload</a></td></tr>
-<tr class="separator:a458d5bb02c856ca83d7ca332ff4125aa"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac0eb1ee881715c3efe5819e23b8ff473"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#ac0eb1ee881715c3efe5819e23b8ff473">getName</a></td></tr>
-<tr class="separator:ac0eb1ee881715c3efe5819e23b8ff473"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa6d4f9562f9502ae7c12e90d0d95d7b1"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#aa6d4f9562f9502ae7c12e90d0d95d7b1">getDescription</a></td></tr>
-<tr class="separator:aa6d4f9562f9502ae7c12e90d0d95d7b1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5fffaef3d82382103103a3246bb23cb1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5fffaef3d82382103103a3246bb23cb1"></a>
-def </td><td class="memItemRight" valign="bottom"><b>getIcon</b></td></tr>
-<tr class="separator:a5fffaef3d82382103103a3246bb23cb1"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:a431ba8d9bcf8cb86744888c39ce0159e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a431ba8d9bcf8cb86744888c39ce0159e"></a>
- </td><td class="memItemRight" valign="bottom"><b>activate</b></td></tr>
-<tr class="separator:a431ba8d9bcf8cb86744888c39ce0159e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a18808e0ef41167a503d619e8dcf39c33"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a18808e0ef41167a503d619e8dcf39c33"></a>
- </td><td class="memItemRight" valign="bottom"><b>alglist</b></td></tr>
-<tr class="separator:a18808e0ef41167a503d619e8dcf39c33"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad93cae1d50d4c7fe0d39b40ae0a9f71b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad93cae1d50d4c7fe0d39b40ae0a9f71b"></a>
- </td><td class="memItemRight" valign="bottom"><b>algs</b></td></tr>
-<tr class="separator:ad93cae1d50d4c7fe0d39b40ae0a9f71b"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:ae7e50266795fd7ad8eb9eec60503b164"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae7e50266795fd7ad8eb9eec60503b164"></a>
-string </td><td class="memItemRight" valign="bottom"><b>MY_DUMMY_SETTING</b> = "MY_DUMMY_SETTING"</td></tr>
-<tr class="separator:ae7e50266795fd7ad8eb9eec60503b164"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="pktoolsAlgorithmProvider_8py_source.html#l00055">55</a> of file <a class="el" href="pktoolsAlgorithmProvider_8py_source.html">pktoolsAlgorithmProvider.py</a>.</p>
-</div><h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="aa6d4f9562f9502ae7c12e90d0d95d7b1"></a>
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">def qgis.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider.getDescription </td>
-          <td>(</td>
-          <td class="paramtype"> </td>
-          <td class="paramname"><em>self</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-<pre class="fragment">This is the provired full name.
-</pre> 
-<p>Definition at line <a class="el" href="pktoolsAlgorithmProvider_8py_source.html#l00100">100</a> of file <a class="el" href="pktoolsAlgorithmProvider_8py_source.html">pktoolsAlgorithmProvider.py</a>.</p>
-<div class="fragment"><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#aa6d4f9562f9502ae7c12e90d0d95d7b1">  100</a></span> </div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     <span class="keyword">def </span><a class="code" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#aa6d4f9562f9502ae7c12e90d0d95d7b1">getDescription</a>(self):</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>         <span class="stringliteral">'''This is the provired full name.</span></div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span> <span class="stringliteral">        '''</span></div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>         <span class="keywordflow">return</span> <span class="stringliteral">"Utilities for remote sensing image processing"</span></div>
-</div>
-<div class="ttc" id="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider_html_aa6d4f9562f9502ae7c12e90d0d95d7b1"><div class="ttname"><a href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#aa6d4f9562f9502ae7c12e90d0d95d7b1">qgis.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider.getDescription</a></div><div class="ttdeci">def getDescription</div><div class="ttdef"><b>Definition:</b> <a href="pktoolsAlgorithmProvider_8py_source.html#l00100">pktoolsAlgo [...]
-</div><!-- fragment -->
-</div>
-</div>
-<a class="anchor" id="ac0eb1ee881715c3efe5819e23b8ff473"></a>
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">def qgis.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider.getName </td>
-          <td>(</td>
-          <td class="paramtype"> </td>
-          <td class="paramname"><em>self</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-<pre class="fragment">This is the name that will appear on the toolbox group.
-It is also used to create the command line name of all the algorithms
-from this provider
-</pre> 
-<p>Definition at line <a class="el" href="pktoolsAlgorithmProvider_8py_source.html#l00093">93</a> of file <a class="el" href="pktoolsAlgorithmProvider_8py_source.html">pktoolsAlgorithmProvider.py</a>.</p>
-<div class="fragment"><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#ac0eb1ee881715c3efe5819e23b8ff473">   93</a></span> </div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>     <span class="keyword">def </span><a class="code" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#ac0eb1ee881715c3efe5819e23b8ff473">getName</a>(self):</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>         <span class="stringliteral">'''This is the name that will appear on the toolbox group.</span></div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span> <span class="stringliteral">        It is also used to create the command line name of all the algorithms</span></div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span> <span class="stringliteral">        from this provider</span></div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span> <span class="stringliteral">        '''</span></div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>         <span class="keywordflow">return</span> <span class="stringliteral">"pktools"</span></div>
-</div>
-<div class="ttc" id="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider_html_ac0eb1ee881715c3efe5819e23b8ff473"><div class="ttname"><a href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#ac0eb1ee881715c3efe5819e23b8ff473">qgis.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider.getName</a></div><div class="ttdeci">def getName</div><div class="ttdef"><b>Definition:</b> <a href="pktoolsAlgorithmProvider_8py_source.html#l00093">pktoolsAlgorithmProvider. [...]
-</div><!-- fragment -->
-</div>
-</div>
-<a class="anchor" id="a41cbf8f2612d0ba5e7e858f421e4c344"></a>
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">def qgis.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider.initializeSettings </td>
-          <td>(</td>
-          <td class="paramtype"> </td>
-          <td class="paramname"><em>self</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-<pre class="fragment">In this method we add settings needed to configure our provider.
-Do not forget to call the parent method, since it takes care or
-automatically adding a setting for activating or deactivating the
-algorithms in the provider
-</pre> 
-<p>Definition at line <a class="el" href="pktoolsAlgorithmProvider_8py_source.html#l00073">73</a> of file <a class="el" href="pktoolsAlgorithmProvider_8py_source.html">pktoolsAlgorithmProvider.py</a>.</p>
-<div class="fragment"><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a41cbf8f2612d0ba5e7e858f421e4c344">   73</a></span> </div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>     <span class="keyword">def </span><a class="code" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a41cbf8f2612d0ba5e7e858f421e4c344">initializeSettings</a>(self):</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>         <span class="stringliteral">'''In this method we add settings needed to configure our provider.</span></div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span> <span class="stringliteral">        Do not forget to call the parent method, since it takes care or</span></div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span> <span class="stringliteral">        automatically adding a setting for activating or deactivating the</span></div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span> <span class="stringliteral">        algorithms in the provider</span></div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span> <span class="stringliteral">        '''</span></div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>         AlgorithmProvider.initializeSettings(self)</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>         ProcessingConfig.addSetting(Setting(self.<a class="code" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#aa6d4f9562f9502ae7c12e90d0d95d7b1">getDescription</a>(), pktoolsUtils.PKTOOLS_FOLDER, <span class="stringliteral">"pktools folder"</span>, pktoolsUtils.pktoolsPath()))</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span> </div>
-<span class="comment">#        ProcessingConfig.addSetting(Setting("Example algorithms", pktoolsAlgorithmProvider.MY_DUMMY_SETTING, "Example setting", "Default value"))</span></div>
-<div class="ttc" id="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider_html_a41cbf8f2612d0ba5e7e858f421e4c344"><div class="ttname"><a href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a41cbf8f2612d0ba5e7e858f421e4c344">qgis.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider.initializeSettings</a></div><div class="ttdeci">def initializeSettings</div><div class="ttdef"><b>Definition:</b> <a href="pktoolsAlgorithmProvider_8py_source.html#l00073">pkt [...]
-<div class="ttc" id="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider_html_aa6d4f9562f9502ae7c12e90d0d95d7b1"><div class="ttname"><a href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#aa6d4f9562f9502ae7c12e90d0d95d7b1">qgis.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider.getDescription</a></div><div class="ttdeci">def getDescription</div><div class="ttdef"><b>Definition:</b> <a href="pktoolsAlgorithmProvider_8py_source.html#l00100">pktoolsAlgo [...]
-</div><!-- fragment -->
-</div>
-</div>
-<a class="anchor" id="a458d5bb02c856ca83d7ca332ff4125aa"></a>
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">def qgis.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider.unload </td>
-          <td>(</td>
-          <td class="paramtype"> </td>
-          <td class="paramname"><em>self</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-<pre class="fragment">Setting should be removed here, so they do not appear anymore
-when the plugin is unloaded</pre> 
-<p>Definition at line <a class="el" href="pktoolsAlgorithmProvider_8py_source.html#l00087">87</a> of file <a class="el" href="pktoolsAlgorithmProvider_8py_source.html">pktoolsAlgorithmProvider.py</a>.</p>
-<div class="fragment"><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a458d5bb02c856ca83d7ca332ff4125aa">   87</a></span> </div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>     <span class="keyword">def </span><a class="code" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a458d5bb02c856ca83d7ca332ff4125aa">unload</a>(self):</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>         <span class="stringliteral">'''Setting should be removed here, so they do not appear anymore</span></div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span> <span class="stringliteral">        when the plugin is unloaded'''</span></div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>         AlgorithmProvider.unload(self)</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>         ProcessingConfig.removeSetting(pktoolsAlgorithmProvider.MY_DUMMY_SETTING)</div>
-</div>
-<div class="ttc" id="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider_html_a458d5bb02c856ca83d7ca332ff4125aa"><div class="ttname"><a href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a458d5bb02c856ca83d7ca332ff4125aa">qgis.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider.unload</a></div><div class="ttdeci">def unload</div><div class="ttdef"><b>Definition:</b> <a href="pktoolsAlgorithmProvider_8py_source.html#l00087">pktoolsAlgorithmProvider.py [...]
-</div><!-- fragment -->
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/qgis/<a class="el" href="pktoolsAlgorithmProvider_8py_source.html">pktoolsAlgorithmProvider.py</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm-members.html b/doc/html/classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm-members.html
deleted file mode 100644
index 9cefed8..0000000
--- a/doc/html/classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm-members.html
+++ /dev/null
@@ -1,81 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pktoolsAlgorithm</b></li><li class="navelem"><a class="el" href="classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html">pktoolsAlgorithm</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">qgis.pktoolsAlgorithm.pktoolsAlgorithm Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html">qgis.pktoolsAlgorithm.pktoolsAlgorithm</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>checkBeforeOpeningParametersDialog</b> (defined in <a class="el" href="classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html">qgis.pktoolsAlgorithm.pktoolsAlgorithm</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html">qgis.pktoolsAlgorithm.pktoolsAlgorithm</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getIcon</b> (defined in <a class="el" href="classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html">qgis.pktoolsAlgorithm.pktoolsAlgorithm</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html">qgis.pktoolsAlgorithm.pktoolsAlgorithm</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>help</b> (defined in <a class="el" href="classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html">qgis.pktoolsAlgorithm.pktoolsAlgorithm</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html">qgis.pktoolsAlgorithm.pktoolsAlgorithm</a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html b/doc/html/classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html
deleted file mode 100644
index fccdc04..0000000
--- a/doc/html/classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: qgis.pktoolsAlgorithm.pktoolsAlgorithm Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pktoolsAlgorithm</b></li><li class="navelem"><a class="el" href="classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html">pktoolsAlgorithm</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">qgis.pktoolsAlgorithm.pktoolsAlgorithm Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for qgis.pktoolsAlgorithm.pktoolsAlgorithm:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm__inherit__graph.png" border="0" usemap="#qgis_8pktoolsAlgorithm_8pktoolsAlgorithm_inherit__map" alt="Inheritance graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for qgis.pktoolsAlgorithm.pktoolsAlgorithm:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm__coll__graph.png" border="0" usemap="#qgis_8pktoolsAlgorithm_8pktoolsAlgorithm_coll__map" alt="Collaboration graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:ac070faf19453a2d75e8cc14f7be097f8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac070faf19453a2d75e8cc14f7be097f8"></a>
-def </td><td class="memItemRight" valign="bottom"><b>getIcon</b></td></tr>
-<tr class="separator:ac070faf19453a2d75e8cc14f7be097f8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a38a2a21e8672ffe7f9533c0a144b7053"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a38a2a21e8672ffe7f9533c0a144b7053"></a>
-def </td><td class="memItemRight" valign="bottom"><b>checkBeforeOpeningParametersDialog</b></td></tr>
-<tr class="separator:a38a2a21e8672ffe7f9533c0a144b7053"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a758e81a12a427104dd46f9574115918c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a758e81a12a427104dd46f9574115918c"></a>
-def </td><td class="memItemRight" valign="bottom"><b>help</b></td></tr>
-<tr class="separator:a758e81a12a427104dd46f9574115918c"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="pktoolsAlgorithm_8py_source.html#l00041">41</a> of file <a class="el" href="pktoolsAlgorithm_8py_source.html">pktoolsAlgorithm.py</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/qgis/<a class="el" href="pktoolsAlgorithm_8py_source.html">pktoolsAlgorithm.py</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm__coll__graph.map b/doc/html/classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm__coll__graph.map
deleted file mode 100644
index eb38106..0000000
--- a/doc/html/classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm__coll__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pktoolsAlgorithm.pktoolsAlgorithm" name="qgis.pktoolsAlgorithm.pktoolsAlgorithm">
-</map>
diff --git a/doc/html/classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm__coll__graph.md5 b/doc/html/classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm__coll__graph.md5
deleted file mode 100644
index c0edf39..0000000
--- a/doc/html/classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-ee118d8207204db98eaa40ce89a69fd0
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm__coll__graph.png b/doc/html/classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm__coll__graph.png
deleted file mode 100644
index d480600..0000000
Binary files a/doc/html/classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm__coll__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm__inherit__graph.map b/doc/html/classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm__inherit__graph.map
deleted file mode 100644
index eb38106..0000000
--- a/doc/html/classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm__inherit__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pktoolsAlgorithm.pktoolsAlgorithm" name="qgis.pktoolsAlgorithm.pktoolsAlgorithm">
-</map>
diff --git a/doc/html/classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm__inherit__graph.md5 b/doc/html/classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm__inherit__graph.md5
deleted file mode 100644
index c0edf39..0000000
--- a/doc/html/classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-ee118d8207204db98eaa40ce89a69fd0
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm__inherit__graph.png b/doc/html/classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm__inherit__graph.png
deleted file mode 100644
index d480600..0000000
Binary files a/doc/html/classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pktoolsUtils_1_1pktoolsUtils-members.html b/doc/html/classqgis_1_1pktoolsUtils_1_1pktoolsUtils-members.html
deleted file mode 100644
index 466312d..0000000
--- a/doc/html/classqgis_1_1pktoolsUtils_1_1pktoolsUtils-members.html
+++ /dev/null
@@ -1,81 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pktoolsUtils</b></li><li class="navelem"><a class="el" href="classqgis_1_1pktoolsUtils_1_1pktoolsUtils.html">pktoolsUtils</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">qgis.pktoolsUtils.pktoolsUtils Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classqgis_1_1pktoolsUtils_1_1pktoolsUtils.html">qgis.pktoolsUtils.pktoolsUtils</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>PKTOOLS_FOLDER</b> (defined in <a class="el" href="classqgis_1_1pktoolsUtils_1_1pktoolsUtils.html">qgis.pktoolsUtils.pktoolsUtils</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktoolsUtils_1_1pktoolsUtils.html">qgis.pktoolsUtils.pktoolsUtils</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>pktoolsPath</b> (defined in <a class="el" href="classqgis_1_1pktoolsUtils_1_1pktoolsUtils.html">qgis.pktoolsUtils.pktoolsUtils</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktoolsUtils_1_1pktoolsUtils.html">qgis.pktoolsUtils.pktoolsUtils</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>runpktools</b> (defined in <a class="el" href="classqgis_1_1pktoolsUtils_1_1pktoolsUtils.html">qgis.pktoolsUtils.pktoolsUtils</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktoolsUtils_1_1pktoolsUtils.html">qgis.pktoolsUtils.pktoolsUtils</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pktoolsUtils_1_1pktoolsUtils.html b/doc/html/classqgis_1_1pktoolsUtils_1_1pktoolsUtils.html
deleted file mode 100644
index 2731eed..0000000
--- a/doc/html/classqgis_1_1pktoolsUtils_1_1pktoolsUtils.html
+++ /dev/null
@@ -1,101 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: qgis.pktoolsUtils.pktoolsUtils Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pktoolsUtils</b></li><li class="navelem"><a class="el" href="classqgis_1_1pktoolsUtils_1_1pktoolsUtils.html">pktoolsUtils</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="classqgis_1_1pktoolsUtils_1_1pktoolsUtils-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">qgis.pktoolsUtils.pktoolsUtils Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr class="memitem:ac38a2b2844a2bca6054bdf3cb8a6d526"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac38a2b2844a2bca6054bdf3cb8a6d526"></a>
-def </td><td class="memItemRight" valign="bottom"><b>pktoolsPath</b></td></tr>
-<tr class="separator:ac38a2b2844a2bca6054bdf3cb8a6d526"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a41b06e387849095ea42740a64edf5ceb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a41b06e387849095ea42740a64edf5ceb"></a>
-def </td><td class="memItemRight" valign="bottom"><b>runpktools</b></td></tr>
-<tr class="separator:a41b06e387849095ea42740a64edf5ceb"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:ab86e76240bd3e4d9f05be1abf84ea435"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab86e76240bd3e4d9f05be1abf84ea435"></a>
-string </td><td class="memItemRight" valign="bottom"><b>PKTOOLS_FOLDER</b> = "PKTOOLS_FOLDER"</td></tr>
-<tr class="separator:ab86e76240bd3e4d9f05be1abf84ea435"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="pktoolsUtils_8py_source.html#l00035">35</a> of file <a class="el" href="pktoolsUtils_8py_source.html">pktoolsUtils.py</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/qgis/<a class="el" href="pktoolsUtils_8py_source.html">pktoolsUtils.py</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite-members.html b/doc/html/classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite-members.html
deleted file mode 100644
index 13d9254..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite-members.html
+++ /dev/null
@@ -1,101 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pktools</b></li><li class="navelem"><b>pkcomposite</b></li><li class="navelem"><a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">pkcomposite</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">qgis.pktools.pkcomposite.pkcomposite Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>BNDNODATA</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>CB</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cliName</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>CRULE</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>CRULE_OPTIONS</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>defineCharacteristics</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>DSTNODATA</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>DX</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>DY</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>EXTRA</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>group</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>INPUT</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>MAXGUI</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>MINGUI</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>name</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>OUTPUT</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>processAlgorithm</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>PROJWIN</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>RESAMPLE</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>RESAMPLE_OPTIONS</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>RTYPE</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>SRCNODATA</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>TYPE</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html b/doc/html/classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html
deleted file mode 100644
index 6250964..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html
+++ /dev/null
@@ -1,175 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: qgis.pktools.pkcomposite.pkcomposite Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pktools</b></li><li class="navelem"><b>pkcomposite</b></li><li class="navelem"><a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">pkcomposite</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">qgis.pktools.pkcomposite.pkcomposite Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for qgis.pktools.pkcomposite.pkcomposite:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite__inherit__graph.png" border="0" usemap="#qgis_8pktools_8pkcomposite_8pkcomposite_inherit__map" alt="Inheritance graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for qgis.pktools.pkcomposite.pkcomposite:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite__coll__graph.png" border="0" usemap="#qgis_8pktools_8pkcomposite_8pkcomposite_coll__map" alt="Collaboration graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a3965eb26c90ee1566a43a333540654fb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3965eb26c90ee1566a43a333540654fb"></a>
-def </td><td class="memItemRight" valign="bottom"><b>cliName</b></td></tr>
-<tr class="separator:a3965eb26c90ee1566a43a333540654fb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3b9c98497217512cd3bb751d3cc155ab"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3b9c98497217512cd3bb751d3cc155ab"></a>
-def </td><td class="memItemRight" valign="bottom"><b>defineCharacteristics</b></td></tr>
-<tr class="separator:a3b9c98497217512cd3bb751d3cc155ab"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac0474454ed2da93c5f34c3f191c5ba97"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac0474454ed2da93c5f34c3f191c5ba97"></a>
-def </td><td class="memItemRight" valign="bottom"><b>processAlgorithm</b></td></tr>
-<tr class="separator:ac0474454ed2da93c5f34c3f191c5ba97"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:ae5c19770832f35898b752105d828721b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae5c19770832f35898b752105d828721b"></a>
- </td><td class="memItemRight" valign="bottom"><b>name</b></td></tr>
-<tr class="separator:ae5c19770832f35898b752105d828721b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae880cea72e765e6339ad058eee48338b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae880cea72e765e6339ad058eee48338b"></a>
- </td><td class="memItemRight" valign="bottom"><b>group</b></td></tr>
-<tr class="separator:ae880cea72e765e6339ad058eee48338b"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:afb22832137b08d855bea38be798f09ea"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afb22832137b08d855bea38be798f09ea"></a>
-string </td><td class="memItemRight" valign="bottom"><b>INPUT</b> = "INPUT"</td></tr>
-<tr class="separator:afb22832137b08d855bea38be798f09ea"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad095de90efcd6d1da7bc2590ce9a0ee9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad095de90efcd6d1da7bc2590ce9a0ee9"></a>
-string </td><td class="memItemRight" valign="bottom"><b>OUTPUT</b> = "OUTPUT"</td></tr>
-<tr class="separator:ad095de90efcd6d1da7bc2590ce9a0ee9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a73b416e6ed08b45bd7efcfdfdaba4ab6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a73b416e6ed08b45bd7efcfdfdaba4ab6"></a>
-list </td><td class="memItemRight" valign="bottom"><b>CRULE_OPTIONS</b> = ["overwrite", "maxndvi", "maxband", "minband", "validband", "mean", "mode", "median", "sum", "minallbands", "maxallbands","stdev"]</td></tr>
-<tr class="separator:a73b416e6ed08b45bd7efcfdfdaba4ab6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a47345a51323bb1691ca35ece877efb1d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a47345a51323bb1691ca35ece877efb1d"></a>
-string </td><td class="memItemRight" valign="bottom"><b>CRULE</b> = "CRULE"</td></tr>
-<tr class="separator:a47345a51323bb1691ca35ece877efb1d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7792dd836e222b13caadc31417e90a6b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7792dd836e222b13caadc31417e90a6b"></a>
-string </td><td class="memItemRight" valign="bottom"><b>DX</b> = "DX"</td></tr>
-<tr class="separator:a7792dd836e222b13caadc31417e90a6b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa940dd19d5252f4fef53d8257cd7811d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa940dd19d5252f4fef53d8257cd7811d"></a>
-string </td><td class="memItemRight" valign="bottom"><b>DY</b> = "DY"</td></tr>
-<tr class="separator:aa940dd19d5252f4fef53d8257cd7811d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a48b92a1335d66add3766103500c24a4d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a48b92a1335d66add3766103500c24a4d"></a>
-string </td><td class="memItemRight" valign="bottom"><b>PROJWIN</b> = 'PROJWIN'</td></tr>
-<tr class="separator:a48b92a1335d66add3766103500c24a4d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a450395c11852e1f005bffe466925c42d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a450395c11852e1f005bffe466925c42d"></a>
-string </td><td class="memItemRight" valign="bottom"><b>CB</b> = "CB"</td></tr>
-<tr class="separator:a450395c11852e1f005bffe466925c42d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2e5828b6eb4912e7fd035d9e885b54c4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2e5828b6eb4912e7fd035d9e885b54c4"></a>
-string </td><td class="memItemRight" valign="bottom"><b>SRCNODATA</b> = "SRCNODATA"</td></tr>
-<tr class="separator:a2e5828b6eb4912e7fd035d9e885b54c4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3eeab89eabe7294252f9610977f10c09"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3eeab89eabe7294252f9610977f10c09"></a>
-string </td><td class="memItemRight" valign="bottom"><b>BNDNODATA</b> = "BNDNODATA"</td></tr>
-<tr class="separator:a3eeab89eabe7294252f9610977f10c09"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae80eeebbec867494eb799574a2a22346"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae80eeebbec867494eb799574a2a22346"></a>
-string </td><td class="memItemRight" valign="bottom"><b>DSTNODATA</b> = "DSTNODATA"</td></tr>
-<tr class="separator:ae80eeebbec867494eb799574a2a22346"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1523a0a2abdd0cf84c1c794e8d2eed89"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1523a0a2abdd0cf84c1c794e8d2eed89"></a>
-string </td><td class="memItemRight" valign="bottom"><b>MINGUI</b> = "MINGUI"</td></tr>
-<tr class="separator:a1523a0a2abdd0cf84c1c794e8d2eed89"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aaeab6fdf6429c284df503d0ee29eee24"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaeab6fdf6429c284df503d0ee29eee24"></a>
-string </td><td class="memItemRight" valign="bottom"><b>MAXGUI</b> = "MAXGUI"</td></tr>
-<tr class="separator:aaeab6fdf6429c284df503d0ee29eee24"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aff4540989ad400292a4bb23fba35a598"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aff4540989ad400292a4bb23fba35a598"></a>
-list </td><td class="memItemRight" valign="bottom"><b>RESAMPLE_OPTIONS</b> = ['near', 'bilinear']</td></tr>
-<tr class="separator:aff4540989ad400292a4bb23fba35a598"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af1a5711589eb0837bf2f500508a6373e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af1a5711589eb0837bf2f500508a6373e"></a>
-string </td><td class="memItemRight" valign="bottom"><b>RESAMPLE</b> = "RESAMPLE"</td></tr>
-<tr class="separator:af1a5711589eb0837bf2f500508a6373e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a28599f5565263acdfe7ed1eadc976bde"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a28599f5565263acdfe7ed1eadc976bde"></a>
-string </td><td class="memItemRight" valign="bottom"><b>RTYPE</b> = 'RTYPE'</td></tr>
-<tr class="separator:a28599f5565263acdfe7ed1eadc976bde"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5c1caab4d9c94ad9d0648348a364f133"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5c1caab4d9c94ad9d0648348a364f133"></a>
-list </td><td class="memItemRight" valign="bottom"><b>TYPE</b> = ['none', 'Byte','Int16','UInt16','UInt32','Int32','Float32','Float64','CInt16','CInt32','CFloat32','CFloat64']</td></tr>
-<tr class="separator:a5c1caab4d9c94ad9d0648348a364f133"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac2d1f35938c4fc3a99039e06384df9a7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac2d1f35938c4fc3a99039e06384df9a7"></a>
-string </td><td class="memItemRight" valign="bottom"><b>EXTRA</b> = 'EXTRA'</td></tr>
-<tr class="separator:ac2d1f35938c4fc3a99039e06384df9a7"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="pktools_2pkcomposite_8py_source.html#l00038">38</a> of file <a class="el" href="pktools_2pkcomposite_8py_source.html">pkcomposite.py</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/qgis/pktools/<a class="el" href="pktools_2pkcomposite_8py_source.html">pkcomposite.py</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite__coll__graph.map b/doc/html/classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite__coll__graph.map
deleted file mode 100644
index c4f4629..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite__coll__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pktools.pkcomposite.pkcomposite" name="qgis.pktools.pkcomposite.pkcomposite">
-</map>
diff --git a/doc/html/classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite__coll__graph.md5 b/doc/html/classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite__coll__graph.md5
deleted file mode 100644
index b2bbf53..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-2da4461a4e6b277d95fe960fcbe8e840
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite__coll__graph.png b/doc/html/classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite__coll__graph.png
deleted file mode 100644
index f267a5d..0000000
Binary files a/doc/html/classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite__coll__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite__inherit__graph.map b/doc/html/classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite__inherit__graph.map
deleted file mode 100644
index c4f4629..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite__inherit__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pktools.pkcomposite.pkcomposite" name="qgis.pktools.pkcomposite.pkcomposite">
-</map>
diff --git a/doc/html/classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite__inherit__graph.md5 b/doc/html/classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite__inherit__graph.md5
deleted file mode 100644
index b2bbf53..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-2da4461a4e6b277d95fe960fcbe8e840
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite__inherit__graph.png b/doc/html/classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite__inherit__graph.png
deleted file mode 100644
index f267a5d..0000000
Binary files a/doc/html/classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pktools_1_1pkcrop_1_1pkcrop-members.html b/doc/html/classqgis_1_1pktools_1_1pkcrop_1_1pkcrop-members.html
deleted file mode 100644
index f03d519..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkcrop_1_1pkcrop-members.html
+++ /dev/null
@@ -1,95 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pktools</b></li><li class="navelem"><b>pkcrop</b></li><li class="navelem"><a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">pkcrop</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">qgis.pktools.pkcrop.pkcrop Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">qgis.pktools.pkcrop.pkcrop</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>BAND</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">qgis.pktools.pkcrop.pkcrop</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">qgis.pktools.pkcrop.pkcrop</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>cliName</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">qgis.pktools.pkcrop.pkcrop</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">qgis.pktools.pkcrop.pkcrop</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>defineCharacteristics</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">qgis.pktools.pkcrop.pkcrop</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">qgis.pktools.pkcrop.pkcrop</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>DX</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">qgis.pktools.pkcrop.pkcrop</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">qgis.pktools.pkcrop.pkcrop</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>DY</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">qgis.pktools.pkcrop.pkcrop</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">qgis.pktools.pkcrop.pkcrop</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>EXTRA</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">qgis.pktools.pkcrop.pkcrop</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">qgis.pktools.pkcrop.pkcrop</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>group</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">qgis.pktools.pkcrop.pkcrop</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">qgis.pktools.pkcrop.pkcrop</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>INPUT</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">qgis.pktools.pkcrop.pkcrop</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">qgis.pktools.pkcrop.pkcrop</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>name</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">qgis.pktools.pkcrop.pkcrop</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">qgis.pktools.pkcrop.pkcrop</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>NODATA</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">qgis.pktools.pkcrop.pkcrop</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">qgis.pktools.pkcrop.pkcrop</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>OUTPUT</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">qgis.pktools.pkcrop.pkcrop</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">qgis.pktools.pkcrop.pkcrop</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>processAlgorithm</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">qgis.pktools.pkcrop.pkcrop</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">qgis.pktools.pkcrop.pkcrop</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>PROJWIN</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">qgis.pktools.pkcrop.pkcrop</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">qgis.pktools.pkcrop.pkcrop</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>RESAMPLE</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">qgis.pktools.pkcrop.pkcrop</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">qgis.pktools.pkcrop.pkcrop</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>RESAMPLE_OPTIONS</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">qgis.pktools.pkcrop.pkcrop</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">qgis.pktools.pkcrop.pkcrop</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>RTYPE</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">qgis.pktools.pkcrop.pkcrop</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">qgis.pktools.pkcrop.pkcrop</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>TYPE</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">qgis.pktools.pkcrop.pkcrop</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">qgis.pktools.pkcrop.pkcrop</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html b/doc/html/classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html
deleted file mode 100644
index 5342ea7..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html
+++ /dev/null
@@ -1,157 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: qgis.pktools.pkcrop.pkcrop Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pktools</b></li><li class="navelem"><b>pkcrop</b></li><li class="navelem"><a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">pkcrop</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">qgis.pktools.pkcrop.pkcrop Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for qgis.pktools.pkcrop.pkcrop:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop__inherit__graph.png" border="0" usemap="#qgis_8pktools_8pkcrop_8pkcrop_inherit__map" alt="Inheritance graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for qgis.pktools.pkcrop.pkcrop:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop__coll__graph.png" border="0" usemap="#qgis_8pktools_8pkcrop_8pkcrop_coll__map" alt="Collaboration graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a6caffb1e09eec28b29ce9996e20b6cf9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6caffb1e09eec28b29ce9996e20b6cf9"></a>
-def </td><td class="memItemRight" valign="bottom"><b>cliName</b></td></tr>
-<tr class="separator:a6caffb1e09eec28b29ce9996e20b6cf9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2a03689f5bb781dc798f88f91c0a99bb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2a03689f5bb781dc798f88f91c0a99bb"></a>
-def </td><td class="memItemRight" valign="bottom"><b>defineCharacteristics</b></td></tr>
-<tr class="separator:a2a03689f5bb781dc798f88f91c0a99bb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a92cb5bdebb0b74f6d8b7635502bf2088"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a92cb5bdebb0b74f6d8b7635502bf2088"></a>
-def </td><td class="memItemRight" valign="bottom"><b>processAlgorithm</b></td></tr>
-<tr class="separator:a92cb5bdebb0b74f6d8b7635502bf2088"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:ae937210a61feb138b0abc2cb67d6ad5b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae937210a61feb138b0abc2cb67d6ad5b"></a>
- </td><td class="memItemRight" valign="bottom"><b>name</b></td></tr>
-<tr class="separator:ae937210a61feb138b0abc2cb67d6ad5b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae2c4e89f56b83d8cab9b6d99c9645e80"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae2c4e89f56b83d8cab9b6d99c9645e80"></a>
- </td><td class="memItemRight" valign="bottom"><b>group</b></td></tr>
-<tr class="separator:ae2c4e89f56b83d8cab9b6d99c9645e80"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:a7309fd72361327278b1fefabfa7f03ad"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7309fd72361327278b1fefabfa7f03ad"></a>
-string </td><td class="memItemRight" valign="bottom"><b>INPUT</b> = "INPUT"</td></tr>
-<tr class="separator:a7309fd72361327278b1fefabfa7f03ad"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac3c7e447a20304d204e1cb9d956a9eed"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac3c7e447a20304d204e1cb9d956a9eed"></a>
-string </td><td class="memItemRight" valign="bottom"><b>OUTPUT</b> = "OUTPUT"</td></tr>
-<tr class="separator:ac3c7e447a20304d204e1cb9d956a9eed"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac728a472b77be42ab2b4de231c21fe79"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac728a472b77be42ab2b4de231c21fe79"></a>
-string </td><td class="memItemRight" valign="bottom"><b>DX</b> = "DX"</td></tr>
-<tr class="separator:ac728a472b77be42ab2b4de231c21fe79"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a89711319003fc990e2dedb83eb5405a3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a89711319003fc990e2dedb83eb5405a3"></a>
-string </td><td class="memItemRight" valign="bottom"><b>DY</b> = "DY"</td></tr>
-<tr class="separator:a89711319003fc990e2dedb83eb5405a3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1beaf0244ed19ce9af19072399c95f47"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1beaf0244ed19ce9af19072399c95f47"></a>
-string </td><td class="memItemRight" valign="bottom"><b>PROJWIN</b> = 'PROJWIN'</td></tr>
-<tr class="separator:a1beaf0244ed19ce9af19072399c95f47"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a356b1c519f594aa18f0b8f7dbb83abf3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a356b1c519f594aa18f0b8f7dbb83abf3"></a>
-string </td><td class="memItemRight" valign="bottom"><b>BAND</b> = "BAND"</td></tr>
-<tr class="separator:a356b1c519f594aa18f0b8f7dbb83abf3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a19fb0d5c68f226f6a9e7a939581b0970"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a19fb0d5c68f226f6a9e7a939581b0970"></a>
-string </td><td class="memItemRight" valign="bottom"><b>NODATA</b> = "NODATA"</td></tr>
-<tr class="separator:a19fb0d5c68f226f6a9e7a939581b0970"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1b0888761b96112483aecfa774a9b8ab"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1b0888761b96112483aecfa774a9b8ab"></a>
-list </td><td class="memItemRight" valign="bottom"><b>RESAMPLE_OPTIONS</b> = ['near', 'bilinear']</td></tr>
-<tr class="separator:a1b0888761b96112483aecfa774a9b8ab"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab207608ada15c93982967e03b10b7524"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab207608ada15c93982967e03b10b7524"></a>
-string </td><td class="memItemRight" valign="bottom"><b>RESAMPLE</b> = "RESAMPLE"</td></tr>
-<tr class="separator:ab207608ada15c93982967e03b10b7524"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a909bbe623577b51ae6427d73aa703c28"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a909bbe623577b51ae6427d73aa703c28"></a>
-string </td><td class="memItemRight" valign="bottom"><b>RTYPE</b> = 'RTYPE'</td></tr>
-<tr class="separator:a909bbe623577b51ae6427d73aa703c28"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8135eba7dc27f89fef11c8cc226b77ca"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8135eba7dc27f89fef11c8cc226b77ca"></a>
-list </td><td class="memItemRight" valign="bottom"><b>TYPE</b> = ['none', 'Byte','Int16','UInt16','UInt32','Int32','Float32','Float64','CInt16','CInt32','CFloat32','CFloat64']</td></tr>
-<tr class="separator:a8135eba7dc27f89fef11c8cc226b77ca"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3076c24eb1c309b6f5091545d7bd78c9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3076c24eb1c309b6f5091545d7bd78c9"></a>
-string </td><td class="memItemRight" valign="bottom"><b>EXTRA</b> = 'EXTRA'</td></tr>
-<tr class="separator:a3076c24eb1c309b6f5091545d7bd78c9"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="pktools_2pkcrop_8py_source.html#l00038">38</a> of file <a class="el" href="pktools_2pkcrop_8py_source.html">pkcrop.py</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/qgis/pktools/<a class="el" href="pktools_2pkcrop_8py_source.html">pkcrop.py</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pktools_1_1pkcrop_1_1pkcrop__coll__graph.map b/doc/html/classqgis_1_1pktools_1_1pkcrop_1_1pkcrop__coll__graph.map
deleted file mode 100644
index 3049877..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkcrop_1_1pkcrop__coll__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pktools.pkcrop.pkcrop" name="qgis.pktools.pkcrop.pkcrop">
-</map>
diff --git a/doc/html/classqgis_1_1pktools_1_1pkcrop_1_1pkcrop__coll__graph.md5 b/doc/html/classqgis_1_1pktools_1_1pkcrop_1_1pkcrop__coll__graph.md5
deleted file mode 100644
index 1e1b326..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkcrop_1_1pkcrop__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-34fa2dac6c0a33c03e1352b8cee4a33b
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pktools_1_1pkcrop_1_1pkcrop__coll__graph.png b/doc/html/classqgis_1_1pktools_1_1pkcrop_1_1pkcrop__coll__graph.png
deleted file mode 100644
index 38b78ed..0000000
Binary files a/doc/html/classqgis_1_1pktools_1_1pkcrop_1_1pkcrop__coll__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pktools_1_1pkcrop_1_1pkcrop__inherit__graph.map b/doc/html/classqgis_1_1pktools_1_1pkcrop_1_1pkcrop__inherit__graph.map
deleted file mode 100644
index 3049877..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkcrop_1_1pkcrop__inherit__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pktools.pkcrop.pkcrop" name="qgis.pktools.pkcrop.pkcrop">
-</map>
diff --git a/doc/html/classqgis_1_1pktools_1_1pkcrop_1_1pkcrop__inherit__graph.md5 b/doc/html/classqgis_1_1pktools_1_1pkcrop_1_1pkcrop__inherit__graph.md5
deleted file mode 100644
index 1e1b326..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkcrop_1_1pkcrop__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-34fa2dac6c0a33c03e1352b8cee4a33b
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pktools_1_1pkcrop_1_1pkcrop__inherit__graph.png b/doc/html/classqgis_1_1pktools_1_1pkcrop_1_1pkcrop__inherit__graph.png
deleted file mode 100644
index 38b78ed..0000000
Binary files a/doc/html/classqgis_1_1pktools_1_1pkcrop_1_1pkcrop__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy-members.html b/doc/html/classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy-members.html
deleted file mode 100644
index 05c3357..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy-members.html
+++ /dev/null
@@ -1,95 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pktools</b></li><li class="navelem"><b>pkdiff_accuracy</b></li><li class="navelem"><a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">pkdiff_accuracy</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cliName</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>CMFORMAT</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>CMFORMAT_OPTIONS</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>CMOUTPUT</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>defineCharacteristics</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>EXTRA</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>FORMAT</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>group</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>INPUT</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>ITERATE</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>LABELCLASS</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>LABELREF</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>name</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>NODATA</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>OUTPUT</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>processAlgorithm</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>REFERENCE</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html b/doc/html/classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html
deleted file mode 100644
index 20d05bc..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html
+++ /dev/null
@@ -1,157 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: qgis.pktools.pkdiff_accuracy.pkdiff_accuracy Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pktools</b></li><li class="navelem"><b>pkdiff_accuracy</b></li><li class="navelem"><a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">pkdiff_accuracy</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for qgis.pktools.pkdiff_accuracy.pkdiff_accuracy:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy__inherit__graph.png" border="0" usemap="#qgis_8pktools_8pkdiff__accuracy_8pkdiff__accuracy_inherit__map" alt="Inheritance graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for qgis.pktools.pkdiff_accuracy.pkdiff_accuracy:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy__coll__graph.png" border="0" usemap="#qgis_8pktools_8pkdiff__accuracy_8pkdiff__accuracy_coll__map" alt="Collaboration graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a55056565ea9f8f166997ca32bcf92d68"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a55056565ea9f8f166997ca32bcf92d68"></a>
-def </td><td class="memItemRight" valign="bottom"><b>cliName</b></td></tr>
-<tr class="separator:a55056565ea9f8f166997ca32bcf92d68"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7c5c16b265bf74afd3deed5d22b558e9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7c5c16b265bf74afd3deed5d22b558e9"></a>
-def </td><td class="memItemRight" valign="bottom"><b>defineCharacteristics</b></td></tr>
-<tr class="separator:a7c5c16b265bf74afd3deed5d22b558e9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9c3ca1bf87e3a75d121b7a4518cf5be1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9c3ca1bf87e3a75d121b7a4518cf5be1"></a>
-def </td><td class="memItemRight" valign="bottom"><b>processAlgorithm</b></td></tr>
-<tr class="separator:a9c3ca1bf87e3a75d121b7a4518cf5be1"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:adde47dc64982051137c51b2b9c45d686"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adde47dc64982051137c51b2b9c45d686"></a>
- </td><td class="memItemRight" valign="bottom"><b>name</b></td></tr>
-<tr class="separator:adde47dc64982051137c51b2b9c45d686"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a25a018181afee40dea3e4d5275747bb7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a25a018181afee40dea3e4d5275747bb7"></a>
- </td><td class="memItemRight" valign="bottom"><b>group</b></td></tr>
-<tr class="separator:a25a018181afee40dea3e4d5275747bb7"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:ab4e343f53122cd27e365391daa149b8e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab4e343f53122cd27e365391daa149b8e"></a>
-string </td><td class="memItemRight" valign="bottom"><b>INPUT</b> = "INPUT"</td></tr>
-<tr class="separator:ab4e343f53122cd27e365391daa149b8e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab721f3d9ae2c876ef39abc3b07a12530"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab721f3d9ae2c876ef39abc3b07a12530"></a>
-string </td><td class="memItemRight" valign="bottom"><b>REFERENCE</b> = "REFERENCE"</td></tr>
-<tr class="separator:ab721f3d9ae2c876ef39abc3b07a12530"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a04cec215fc970c27c9cbbe0ddcd7a2b5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a04cec215fc970c27c9cbbe0ddcd7a2b5"></a>
-string </td><td class="memItemRight" valign="bottom"><b>ITERATE</b> = "ITERATE"</td></tr>
-<tr class="separator:a04cec215fc970c27c9cbbe0ddcd7a2b5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a392cc9957b286d74ad2515c0dba4a695"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a392cc9957b286d74ad2515c0dba4a695"></a>
-string </td><td class="memItemRight" valign="bottom"><b>LABELREF</b> = "LABELREF"</td></tr>
-<tr class="separator:a392cc9957b286d74ad2515c0dba4a695"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae62e0e32e5c75f22f5a8ef0f521f5cce"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae62e0e32e5c75f22f5a8ef0f521f5cce"></a>
-string </td><td class="memItemRight" valign="bottom"><b>NODATA</b> = "NODATA"</td></tr>
-<tr class="separator:ae62e0e32e5c75f22f5a8ef0f521f5cce"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae64041efab08dd8fa6c19b625e168761"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae64041efab08dd8fa6c19b625e168761"></a>
-string </td><td class="memItemRight" valign="bottom"><b>OUTPUT</b> = "OUTPUT"</td></tr>
-<tr class="separator:ae64041efab08dd8fa6c19b625e168761"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a53f02145c4734a0655c70a3d7b4950f6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a53f02145c4734a0655c70a3d7b4950f6"></a>
-string </td><td class="memItemRight" valign="bottom"><b>CMOUTPUT</b> = "CMOUTPUT"</td></tr>
-<tr class="separator:a53f02145c4734a0655c70a3d7b4950f6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad1221f675d9b9d779d83abbf9b437146"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad1221f675d9b9d779d83abbf9b437146"></a>
-list </td><td class="memItemRight" valign="bottom"><b>CMFORMAT_OPTIONS</b> = ["ascii", "latex"]</td></tr>
-<tr class="separator:ad1221f675d9b9d779d83abbf9b437146"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4b776ec91fa5d020d7680eca874427e2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4b776ec91fa5d020d7680eca874427e2"></a>
-string </td><td class="memItemRight" valign="bottom"><b>CMFORMAT</b> = "CMFORMAT"</td></tr>
-<tr class="separator:a4b776ec91fa5d020d7680eca874427e2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1fbcff81b3676249f0408de6319950d9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1fbcff81b3676249f0408de6319950d9"></a>
-string </td><td class="memItemRight" valign="bottom"><b>FORMAT</b> = "FORMAT"</td></tr>
-<tr class="separator:a1fbcff81b3676249f0408de6319950d9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2d4f21a8f0057584931a3a696a5d1b75"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2d4f21a8f0057584931a3a696a5d1b75"></a>
-string </td><td class="memItemRight" valign="bottom"><b>LABELCLASS</b> = "LABELCLASS"</td></tr>
-<tr class="separator:a2d4f21a8f0057584931a3a696a5d1b75"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5779733ceff946ac04ec1f6d0e494452"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5779733ceff946ac04ec1f6d0e494452"></a>
-string </td><td class="memItemRight" valign="bottom"><b>EXTRA</b> = 'EXTRA'</td></tr>
-<tr class="separator:a5779733ceff946ac04ec1f6d0e494452"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="pktools_2pkdiff__accuracy_8py_source.html#l00093">93</a> of file <a class="el" href="pktools_2pkdiff__accuracy_8py_source.html">pkdiff_accuracy.py</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/qgis/pktools/<a class="el" href="pktools_2pkdiff__accuracy_8py_source.html">pkdiff_accuracy.py</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy__coll__graph.map b/doc/html/classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy__coll__graph.map
deleted file mode 100644
index 2a43123..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy__coll__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pktools.pkdiff_accuracy.pkdiff_accuracy" name="qgis.pktools.pkdiff_accuracy.pkdiff_accuracy">
-</map>
diff --git a/doc/html/classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy__coll__graph.md5 b/doc/html/classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy__coll__graph.md5
deleted file mode 100644
index f6f9af4..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-cf65be9c6ad90b6aea751effcc659aed
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy__coll__graph.png b/doc/html/classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy__coll__graph.png
deleted file mode 100644
index 9f59937..0000000
Binary files a/doc/html/classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy__coll__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pktools_1_1pkextract_1_1pkextract-members.html b/doc/html/classqgis_1_1pktools_1_1pkextract_1_1pkextract-members.html
deleted file mode 100644
index 0a26df6..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkextract_1_1pkextract-members.html
+++ /dev/null
@@ -1,95 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pktools</b></li><li class="navelem"><b>pkextract</b></li><li class="navelem"><a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">pkextract</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">qgis.pktools.pkextract.pkextract Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">qgis.pktools.pkextract.pkextract</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>BNDNODATA</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">qgis.pktools.pkextract.pkextract</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">qgis.pktools.pkextract.pkextract</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>BUFFER</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">qgis.pktools.pkextract.pkextract</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">qgis.pktools.pkextract.pkextract</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cliName</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">qgis.pktools.pkextract.pkextract</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">qgis.pktools.pkextract.pkextract</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>defineCharacteristics</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">qgis.pktools.pkextract.pkextract</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">qgis.pktools.pkextract.pkextract</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>EXTRA</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">qgis.pktools.pkextract.pkextract</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">qgis.pktools.pkextract.pkextract</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>FORMAT</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">qgis.pktools.pkextract.pkextract</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">qgis.pktools.pkextract.pkextract</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>group</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">qgis.pktools.pkextract.pkextract</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">qgis.pktools.pkextract.pkextract</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>INPUT</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">qgis.pktools.pkextract.pkextract</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">qgis.pktools.pkextract.pkextract</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ITERATE</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">qgis.pktools.pkextract.pkextract</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">qgis.pktools.pkextract.pkextract</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>name</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">qgis.pktools.pkextract.pkextract</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">qgis.pktools.pkextract.pkextract</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>OUTPUT</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">qgis.pktools.pkextract.pkextract</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">qgis.pktools.pkextract.pkextract</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>POLYGON</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">qgis.pktools.pkextract.pkextract</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">qgis.pktools.pkextract.pkextract</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>processAlgorithm</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">qgis.pktools.pkextract.pkextract</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">qgis.pktools.pkextract.pkextract</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>RULE</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">qgis.pktools.pkextract.pkextract</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">qgis.pktools.pkextract.pkextract</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>RULE_OPTIONS</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">qgis.pktools.pkextract.pkextract</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">qgis.pktools.pkextract.pkextract</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>SAMPLE</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">qgis.pktools.pkextract.pkextract</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">qgis.pktools.pkextract.pkextract</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>SRCNODATA</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">qgis.pktools.pkextract.pkextract</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">qgis.pktools.pkextract.pkextract</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pktools_1_1pkextract_1_1pkextract.html b/doc/html/classqgis_1_1pktools_1_1pkextract_1_1pkextract.html
deleted file mode 100644
index 72ed74d..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkextract_1_1pkextract.html
+++ /dev/null
@@ -1,157 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: qgis.pktools.pkextract.pkextract Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pktools</b></li><li class="navelem"><b>pkextract</b></li><li class="navelem"><a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">pkextract</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="classqgis_1_1pktools_1_1pkextract_1_1pkextract-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">qgis.pktools.pkextract.pkextract Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for qgis.pktools.pkextract.pkextract:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pktools_1_1pkextract_1_1pkextract__inherit__graph.png" border="0" usemap="#qgis_8pktools_8pkextract_8pkextract_inherit__map" alt="Inheritance graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for qgis.pktools.pkextract.pkextract:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pktools_1_1pkextract_1_1pkextract__coll__graph.png" border="0" usemap="#qgis_8pktools_8pkextract_8pkextract_coll__map" alt="Collaboration graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:ae049566d661a688af829c9a068df729e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae049566d661a688af829c9a068df729e"></a>
-def </td><td class="memItemRight" valign="bottom"><b>cliName</b></td></tr>
-<tr class="separator:ae049566d661a688af829c9a068df729e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2cd838a9e6e09334cec83099bebaf449"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2cd838a9e6e09334cec83099bebaf449"></a>
-def </td><td class="memItemRight" valign="bottom"><b>defineCharacteristics</b></td></tr>
-<tr class="separator:a2cd838a9e6e09334cec83099bebaf449"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab31e1ea1144f5316827e0752bc336201"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab31e1ea1144f5316827e0752bc336201"></a>
-def </td><td class="memItemRight" valign="bottom"><b>processAlgorithm</b></td></tr>
-<tr class="separator:ab31e1ea1144f5316827e0752bc336201"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:ab9efcad6e33e229054cd88a80d2e31ff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab9efcad6e33e229054cd88a80d2e31ff"></a>
- </td><td class="memItemRight" valign="bottom"><b>name</b></td></tr>
-<tr class="separator:ab9efcad6e33e229054cd88a80d2e31ff"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae279e3125dc30a09e1430c5e76b473cb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae279e3125dc30a09e1430c5e76b473cb"></a>
- </td><td class="memItemRight" valign="bottom"><b>group</b></td></tr>
-<tr class="separator:ae279e3125dc30a09e1430c5e76b473cb"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:a257192faedfabf32e503d72a2f34f459"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a257192faedfabf32e503d72a2f34f459"></a>
-string </td><td class="memItemRight" valign="bottom"><b>INPUT</b> = "INPUT"</td></tr>
-<tr class="separator:a257192faedfabf32e503d72a2f34f459"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7e6d595c2e44bf7b9634f917bca79c61"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7e6d595c2e44bf7b9634f917bca79c61"></a>
-string </td><td class="memItemRight" valign="bottom"><b>SAMPLE</b> = "SAMPLE"</td></tr>
-<tr class="separator:a7e6d595c2e44bf7b9634f917bca79c61"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5797ede6cc9265a846e09a4f5ff31292"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5797ede6cc9265a846e09a4f5ff31292"></a>
-string </td><td class="memItemRight" valign="bottom"><b>ITERATE</b> = "ITERATE"</td></tr>
-<tr class="separator:a5797ede6cc9265a846e09a4f5ff31292"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a481ae866b7a60d1f8ec47f0caa8d3d6b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a481ae866b7a60d1f8ec47f0caa8d3d6b"></a>
-string </td><td class="memItemRight" valign="bottom"><b>OUTPUT</b> = "OUTPUT"</td></tr>
-<tr class="separator:a481ae866b7a60d1f8ec47f0caa8d3d6b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3e61a3b83a4917429eb54cdbe69bf84f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3e61a3b83a4917429eb54cdbe69bf84f"></a>
-list </td><td class="memItemRight" valign="bottom"><b>RULE_OPTIONS</b> = ['centroid', 'point', 'mean', 'proportion', 'min', 'max', 'mode', 'sum', 'median', 'stdev', 'percentile']</td></tr>
-<tr class="separator:a3e61a3b83a4917429eb54cdbe69bf84f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6997d33d8c4528dc3e278af16188ac1d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6997d33d8c4528dc3e278af16188ac1d"></a>
-string </td><td class="memItemRight" valign="bottom"><b>RULE</b> = "RULE"</td></tr>
-<tr class="separator:a6997d33d8c4528dc3e278af16188ac1d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aac5a26b050718715b4adfcdd5e10c6c2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aac5a26b050718715b4adfcdd5e10c6c2"></a>
-string </td><td class="memItemRight" valign="bottom"><b>POLYGON</b> = "POLYGON"</td></tr>
-<tr class="separator:aac5a26b050718715b4adfcdd5e10c6c2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a21c89f90489c9cc008332981c12868e2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a21c89f90489c9cc008332981c12868e2"></a>
-string </td><td class="memItemRight" valign="bottom"><b>BUFFER</b> = "BUFFER"</td></tr>
-<tr class="separator:a21c89f90489c9cc008332981c12868e2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adc9fa45630da5c63f41f4542bc82244f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adc9fa45630da5c63f41f4542bc82244f"></a>
-string </td><td class="memItemRight" valign="bottom"><b>SRCNODATA</b> = "SRCNODATA"</td></tr>
-<tr class="separator:adc9fa45630da5c63f41f4542bc82244f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a222f15dc4f8abcf5ccdb34e909da8ec8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a222f15dc4f8abcf5ccdb34e909da8ec8"></a>
-string </td><td class="memItemRight" valign="bottom"><b>BNDNODATA</b> = "BNDNODATA"</td></tr>
-<tr class="separator:a222f15dc4f8abcf5ccdb34e909da8ec8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afd7a165c5f77f4ad99a6f664576852dd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afd7a165c5f77f4ad99a6f664576852dd"></a>
-string </td><td class="memItemRight" valign="bottom"><b>EXTRA</b> = 'EXTRA'</td></tr>
-<tr class="separator:afd7a165c5f77f4ad99a6f664576852dd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3242dae21dccbdc5f1805b566fe4bc28"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3242dae21dccbdc5f1805b566fe4bc28"></a>
-string </td><td class="memItemRight" valign="bottom"><b>FORMAT</b> = "FORMAT"</td></tr>
-<tr class="separator:a3242dae21dccbdc5f1805b566fe4bc28"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="pktools_2pkextract_8py_source.html#l00087">87</a> of file <a class="el" href="pktools_2pkextract_8py_source.html">pkextract.py</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/qgis/pktools/<a class="el" href="pktools_2pkextract_8py_source.html">pkextract.py</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pktools_1_1pkextract_1_1pkextract__coll__graph.map b/doc/html/classqgis_1_1pktools_1_1pkextract_1_1pkextract__coll__graph.map
deleted file mode 100644
index f548170..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkextract_1_1pkextract__coll__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pktools.pkextract.pkextract" name="qgis.pktools.pkextract.pkextract">
-</map>
diff --git a/doc/html/classqgis_1_1pktools_1_1pkextract_1_1pkextract__coll__graph.md5 b/doc/html/classqgis_1_1pktools_1_1pkextract_1_1pkextract__coll__graph.md5
deleted file mode 100644
index 98a3bb6..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkextract_1_1pkextract__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-90220da46079f3d06c739089255dbeed
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pktools_1_1pkextract_1_1pkextract__coll__graph.png b/doc/html/classqgis_1_1pktools_1_1pkextract_1_1pkextract__coll__graph.png
deleted file mode 100644
index 9b4f7ec..0000000
Binary files a/doc/html/classqgis_1_1pktools_1_1pkextract_1_1pkextract__coll__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pktools_1_1pkextract_1_1pkextract__inherit__graph.map b/doc/html/classqgis_1_1pktools_1_1pkextract_1_1pkextract__inherit__graph.map
deleted file mode 100644
index f548170..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkextract_1_1pkextract__inherit__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pktools.pkextract.pkextract" name="qgis.pktools.pkextract.pkextract">
-</map>
diff --git a/doc/html/classqgis_1_1pktools_1_1pkextract_1_1pkextract__inherit__graph.md5 b/doc/html/classqgis_1_1pktools_1_1pkextract_1_1pkextract__inherit__graph.md5
deleted file mode 100644
index 98a3bb6..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkextract_1_1pkextract__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-90220da46079f3d06c739089255dbeed
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pktools_1_1pkextract_1_1pkextract__inherit__graph.png b/doc/html/classqgis_1_1pktools_1_1pkextract_1_1pkextract__inherit__graph.png
deleted file mode 100644
index 9b4f7ec..0000000
Binary files a/doc/html/classqgis_1_1pktools_1_1pkextract_1_1pkextract__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid-members.html b/doc/html/classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid-members.html
deleted file mode 100644
index 77bffaa..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid-members.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pktools</b></li><li class="navelem"><b>pkextract_grid</b></li><li class="navelem"><a class="el" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">pkextract_grid</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">qgis.pktools.pkextract_grid.pkextract_grid Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pktools.pkextract_grid.pkextract_grid</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>BNDNODATA</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pktools.pkextract_grid.pkextract_grid</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pktools.pkextract_grid.pkextract_grid</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>BUFFER</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pktools.pkextract_grid.pkextract_grid</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pktools.pkextract_grid.pkextract_grid</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cliName</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pktools.pkextract_grid.pkextract_grid</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pktools.pkextract_grid.pkextract_grid</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>defineCharacteristics</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pktools.pkextract_grid.pkextract_grid</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pktools.pkextract_grid.pkextract_grid</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>EXTRA</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pktools.pkextract_grid.pkextract_grid</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pktools.pkextract_grid.pkextract_grid</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>FORMAT</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pktools.pkextract_grid.pkextract_grid</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pktools.pkextract_grid.pkextract_grid</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GRID</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pktools.pkextract_grid.pkextract_grid</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pktools.pkextract_grid.pkextract_grid</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>group</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pktools.pkextract_grid.pkextract_grid</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pktools.pkextract_grid.pkextract_grid</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>INPUT</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pktools.pkextract_grid.pkextract_grid</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pktools.pkextract_grid.pkextract_grid</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>name</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pktools.pkextract_grid.pkextract_grid</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pktools.pkextract_grid.pkextract_grid</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>OUTPUT</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pktools.pkextract_grid.pkextract_grid</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pktools.pkextract_grid.pkextract_grid</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>POLYGON</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pktools.pkextract_grid.pkextract_grid</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pktools.pkextract_grid.pkextract_grid</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>processAlgorithm</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pktools.pkextract_grid.pkextract_grid</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pktools.pkextract_grid.pkextract_grid</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>RULE</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pktools.pkextract_grid.pkextract_grid</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pktools.pkextract_grid.pkextract_grid</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>RULE_OPTIONS</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pktools.pkextract_grid.pkextract_grid</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pktools.pkextract_grid.pkextract_grid</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>SRCNODATA</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pktools.pkextract_grid.pkextract_grid</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pktools.pkextract_grid.pkextract_grid</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html b/doc/html/classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html
deleted file mode 100644
index 04afa69..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html
+++ /dev/null
@@ -1,154 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: qgis.pktools.pkextract_grid.pkextract_grid Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pktools</b></li><li class="navelem"><b>pkextract_grid</b></li><li class="navelem"><a class="el" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">pkextract_grid</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">qgis.pktools.pkextract_grid.pkextract_grid Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for qgis.pktools.pkextract_grid.pkextract_grid:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid__inherit__graph.png" border="0" usemap="#qgis_8pktools_8pkextract__grid_8pkextract__grid_inherit__map" alt="Inheritance graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for qgis.pktools.pkextract_grid.pkextract_grid:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid__coll__graph.png" border="0" usemap="#qgis_8pktools_8pkextract__grid_8pkextract__grid_coll__map" alt="Collaboration graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:aa8f2f067f0a059b531c53a38b1a85308"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa8f2f067f0a059b531c53a38b1a85308"></a>
-def </td><td class="memItemRight" valign="bottom"><b>cliName</b></td></tr>
-<tr class="separator:aa8f2f067f0a059b531c53a38b1a85308"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afbc6d9ad20f758c9d75503b27076bf1d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afbc6d9ad20f758c9d75503b27076bf1d"></a>
-def </td><td class="memItemRight" valign="bottom"><b>defineCharacteristics</b></td></tr>
-<tr class="separator:afbc6d9ad20f758c9d75503b27076bf1d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a502688d2d6044c1e4c5d7e9013746b9c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a502688d2d6044c1e4c5d7e9013746b9c"></a>
-def </td><td class="memItemRight" valign="bottom"><b>processAlgorithm</b></td></tr>
-<tr class="separator:a502688d2d6044c1e4c5d7e9013746b9c"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:af13c9efdff741494bfb58c8b10d4b53e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af13c9efdff741494bfb58c8b10d4b53e"></a>
- </td><td class="memItemRight" valign="bottom"><b>name</b></td></tr>
-<tr class="separator:af13c9efdff741494bfb58c8b10d4b53e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a09ae45118a775983455e10ecc7959004"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a09ae45118a775983455e10ecc7959004"></a>
- </td><td class="memItemRight" valign="bottom"><b>group</b></td></tr>
-<tr class="separator:a09ae45118a775983455e10ecc7959004"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:a5412a66f1947ac26ccbd630b71428157"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5412a66f1947ac26ccbd630b71428157"></a>
-string </td><td class="memItemRight" valign="bottom"><b>INPUT</b> = "INPUT"</td></tr>
-<tr class="separator:a5412a66f1947ac26ccbd630b71428157"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6064a8e5b885a1bad7a28957e70e1cdc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6064a8e5b885a1bad7a28957e70e1cdc"></a>
-string </td><td class="memItemRight" valign="bottom"><b>OUTPUT</b> = "OUTPUT"</td></tr>
-<tr class="separator:a6064a8e5b885a1bad7a28957e70e1cdc"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3fb178091872bc1872478de700caf1b4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3fb178091872bc1872478de700caf1b4"></a>
-list </td><td class="memItemRight" valign="bottom"><b>RULE_OPTIONS</b> = ['centroid', 'point', 'mean', 'proportion', 'custom', 'min', 'max', 'mode', 'sum', 'median', 'stdev', 'percentile']</td></tr>
-<tr class="separator:a3fb178091872bc1872478de700caf1b4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a694eeda5f32f8f58ec20b873a2c31333"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a694eeda5f32f8f58ec20b873a2c31333"></a>
-string </td><td class="memItemRight" valign="bottom"><b>RULE</b> = "RULE"</td></tr>
-<tr class="separator:a694eeda5f32f8f58ec20b873a2c31333"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7834e2f6a8d96793e5d50c379d69495f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7834e2f6a8d96793e5d50c379d69495f"></a>
-string </td><td class="memItemRight" valign="bottom"><b>POLYGON</b> = "POLYGON"</td></tr>
-<tr class="separator:a7834e2f6a8d96793e5d50c379d69495f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af200c24667122672e45fd9d6f5067efd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af200c24667122672e45fd9d6f5067efd"></a>
-string </td><td class="memItemRight" valign="bottom"><b>BUFFER</b> = "BUFFER"</td></tr>
-<tr class="separator:af200c24667122672e45fd9d6f5067efd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a90b6bcee6161de183851f985a02be337"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a90b6bcee6161de183851f985a02be337"></a>
-string </td><td class="memItemRight" valign="bottom"><b>GRID</b> = "GRID"</td></tr>
-<tr class="separator:a90b6bcee6161de183851f985a02be337"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a567185dde201a783080d4e480a3f658b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a567185dde201a783080d4e480a3f658b"></a>
-string </td><td class="memItemRight" valign="bottom"><b>SRCNODATA</b> = "SRCNODATA"</td></tr>
-<tr class="separator:a567185dde201a783080d4e480a3f658b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a67f2914362c1595ea342a4b3a7a4715f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a67f2914362c1595ea342a4b3a7a4715f"></a>
-string </td><td class="memItemRight" valign="bottom"><b>BNDNODATA</b> = "BNDNODATA"</td></tr>
-<tr class="separator:a67f2914362c1595ea342a4b3a7a4715f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acb46e5b74179c65a686d0a6e5f49d226"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acb46e5b74179c65a686d0a6e5f49d226"></a>
-string </td><td class="memItemRight" valign="bottom"><b>EXTRA</b> = 'EXTRA'</td></tr>
-<tr class="separator:acb46e5b74179c65a686d0a6e5f49d226"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a064ad85bca7f4be990fbb62d99a89ba1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a064ad85bca7f4be990fbb62d99a89ba1"></a>
-string </td><td class="memItemRight" valign="bottom"><b>FORMAT</b> = "FORMAT"</td></tr>
-<tr class="separator:a064ad85bca7f4be990fbb62d99a89ba1"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="pktools_2pkextract__grid_8py_source.html#l00087">87</a> of file <a class="el" href="pktools_2pkextract__grid_8py_source.html">pkextract_grid.py</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/qgis/pktools/<a class="el" href="pktools_2pkextract__grid_8py_source.html">pkextract_grid.py</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid__coll__graph.map b/doc/html/classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid__coll__graph.map
deleted file mode 100644
index 8d269d2..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid__coll__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pktools.pkextract_grid.pkextract_grid" name="qgis.pktools.pkextract_grid.pkextract_grid">
-</map>
diff --git a/doc/html/classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid__coll__graph.md5 b/doc/html/classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid__coll__graph.md5
deleted file mode 100644
index a0ecf9c..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-b903a258f35a053bb6f874051241e16b
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid__coll__graph.png b/doc/html/classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid__coll__graph.png
deleted file mode 100644
index db7a250..0000000
Binary files a/doc/html/classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid__coll__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random-members.html b/doc/html/classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random-members.html
deleted file mode 100644
index f48f4dd..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random-members.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pktools</b></li><li class="navelem"><b>pkextract_random</b></li><li class="navelem"><a class="el" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">pkextract_random</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">qgis.pktools.pkextract_random.pkextract_random Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">qgis.pktools.pkextract_random.pkextract_random</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>BNDNODATA</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">qgis.pktools.pkextract_random.pkextract_random</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">qgis.pktools.pkextract_random.pkextract_random</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>BUFFER</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">qgis.pktools.pkextract_random.pkextract_random</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">qgis.pktools.pkextract_random.pkextract_random</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cliName</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">qgis.pktools.pkextract_random.pkextract_random</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">qgis.pktools.pkextract_random.pkextract_random</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>defineCharacteristics</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">qgis.pktools.pkextract_random.pkextract_random</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">qgis.pktools.pkextract_random.pkextract_random</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>EXTRA</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">qgis.pktools.pkextract_random.pkextract_random</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">qgis.pktools.pkextract_random.pkextract_random</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>FORMAT</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">qgis.pktools.pkextract_random.pkextract_random</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">qgis.pktools.pkextract_random.pkextract_random</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>group</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">qgis.pktools.pkextract_random.pkextract_random</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">qgis.pktools.pkextract_random.pkextract_random</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>INPUT</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">qgis.pktools.pkextract_random.pkextract_random</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">qgis.pktools.pkextract_random.pkextract_random</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>name</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">qgis.pktools.pkextract_random.pkextract_random</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">qgis.pktools.pkextract_random.pkextract_random</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>OUTPUT</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">qgis.pktools.pkextract_random.pkextract_random</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">qgis.pktools.pkextract_random.pkextract_random</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>POLYGON</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">qgis.pktools.pkextract_random.pkextract_random</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">qgis.pktools.pkextract_random.pkextract_random</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>processAlgorithm</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">qgis.pktools.pkextract_random.pkextract_random</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">qgis.pktools.pkextract_random.pkextract_random</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>RANDOM</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">qgis.pktools.pkextract_random.pkextract_random</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">qgis.pktools.pkextract_random.pkextract_random</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>RULE</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">qgis.pktools.pkextract_random.pkextract_random</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">qgis.pktools.pkextract_random.pkextract_random</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>RULE_OPTIONS</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">qgis.pktools.pkextract_random.pkextract_random</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">qgis.pktools.pkextract_random.pkextract_random</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>SRCNODATA</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">qgis.pktools.pkextract_random.pkextract_random</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">qgis.pktools.pkextract_random.pkextract_random</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html b/doc/html/classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html
deleted file mode 100644
index e4de0fc..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html
+++ /dev/null
@@ -1,154 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: qgis.pktools.pkextract_random.pkextract_random Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pktools</b></li><li class="navelem"><b>pkextract_random</b></li><li class="navelem"><a class="el" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">pkextract_random</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">qgis.pktools.pkextract_random.pkextract_random Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for qgis.pktools.pkextract_random.pkextract_random:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random__inherit__graph.png" border="0" usemap="#qgis_8pktools_8pkextract__random_8pkextract__random_inherit__map" alt="Inheritance graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for qgis.pktools.pkextract_random.pkextract_random:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random__coll__graph.png" border="0" usemap="#qgis_8pktools_8pkextract__random_8pkextract__random_coll__map" alt="Collaboration graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a4ad3adfb8949647f7e2ce887ef844473"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4ad3adfb8949647f7e2ce887ef844473"></a>
-def </td><td class="memItemRight" valign="bottom"><b>cliName</b></td></tr>
-<tr class="separator:a4ad3adfb8949647f7e2ce887ef844473"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1747f9b3668105092aa36592b72ede68"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1747f9b3668105092aa36592b72ede68"></a>
-def </td><td class="memItemRight" valign="bottom"><b>defineCharacteristics</b></td></tr>
-<tr class="separator:a1747f9b3668105092aa36592b72ede68"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abb5dcf24aee0cbba5e9495134d24795b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abb5dcf24aee0cbba5e9495134d24795b"></a>
-def </td><td class="memItemRight" valign="bottom"><b>processAlgorithm</b></td></tr>
-<tr class="separator:abb5dcf24aee0cbba5e9495134d24795b"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:af22352f109032ed3a3340b13a9013e09"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af22352f109032ed3a3340b13a9013e09"></a>
- </td><td class="memItemRight" valign="bottom"><b>name</b></td></tr>
-<tr class="separator:af22352f109032ed3a3340b13a9013e09"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a87570906ed677592d5f8bac33ff7a3d8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a87570906ed677592d5f8bac33ff7a3d8"></a>
- </td><td class="memItemRight" valign="bottom"><b>group</b></td></tr>
-<tr class="separator:a87570906ed677592d5f8bac33ff7a3d8"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:af378362e275409fbaadf0164809d9580"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af378362e275409fbaadf0164809d9580"></a>
-string </td><td class="memItemRight" valign="bottom"><b>INPUT</b> = "INPUT"</td></tr>
-<tr class="separator:af378362e275409fbaadf0164809d9580"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ada827e4d57de53322129310d1d2b01ac"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ada827e4d57de53322129310d1d2b01ac"></a>
-string </td><td class="memItemRight" valign="bottom"><b>OUTPUT</b> = "OUTPUT"</td></tr>
-<tr class="separator:ada827e4d57de53322129310d1d2b01ac"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ada2bb55cda0c34c8b4a82a13401d2455"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ada2bb55cda0c34c8b4a82a13401d2455"></a>
-list </td><td class="memItemRight" valign="bottom"><b>RULE_OPTIONS</b> = ['centroid', 'point', 'mean', 'proportion', 'custom', 'min', 'max', 'mode', 'sum', 'median', 'stdev', 'percentile']</td></tr>
-<tr class="separator:ada2bb55cda0c34c8b4a82a13401d2455"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae3e01342bd3404b653c4b8d24f505f17"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae3e01342bd3404b653c4b8d24f505f17"></a>
-string </td><td class="memItemRight" valign="bottom"><b>RULE</b> = "RULE"</td></tr>
-<tr class="separator:ae3e01342bd3404b653c4b8d24f505f17"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6d966809aee7401ccf7c298400e7d590"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6d966809aee7401ccf7c298400e7d590"></a>
-string </td><td class="memItemRight" valign="bottom"><b>POLYGON</b> = "POLYGON"</td></tr>
-<tr class="separator:a6d966809aee7401ccf7c298400e7d590"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9cae04c4754d9863a12c776286e96fdb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9cae04c4754d9863a12c776286e96fdb"></a>
-string </td><td class="memItemRight" valign="bottom"><b>BUFFER</b> = "BUFFER"</td></tr>
-<tr class="separator:a9cae04c4754d9863a12c776286e96fdb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aae134982ad295e7f2f206c85b6d28528"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aae134982ad295e7f2f206c85b6d28528"></a>
-string </td><td class="memItemRight" valign="bottom"><b>RANDOM</b> = "RANDOM"</td></tr>
-<tr class="separator:aae134982ad295e7f2f206c85b6d28528"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7a0f0334d5a3ecc367fc6621a9bfe63f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7a0f0334d5a3ecc367fc6621a9bfe63f"></a>
-string </td><td class="memItemRight" valign="bottom"><b>SRCNODATA</b> = "SRCNODATA"</td></tr>
-<tr class="separator:a7a0f0334d5a3ecc367fc6621a9bfe63f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aabe205b1faf586f973e527998303d834"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aabe205b1faf586f973e527998303d834"></a>
-string </td><td class="memItemRight" valign="bottom"><b>BNDNODATA</b> = "BNDNODATA"</td></tr>
-<tr class="separator:aabe205b1faf586f973e527998303d834"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a366ca672a6dc061ca5624107cd1e6701"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a366ca672a6dc061ca5624107cd1e6701"></a>
-string </td><td class="memItemRight" valign="bottom"><b>EXTRA</b> = 'EXTRA'</td></tr>
-<tr class="separator:a366ca672a6dc061ca5624107cd1e6701"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa477d50d42493c4a70f2d985dc235b8c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa477d50d42493c4a70f2d985dc235b8c"></a>
-string </td><td class="memItemRight" valign="bottom"><b>FORMAT</b> = "FORMAT"</td></tr>
-<tr class="separator:aa477d50d42493c4a70f2d985dc235b8c"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="pktools_2pkextract__random_8py_source.html#l00087">87</a> of file <a class="el" href="pktools_2pkextract__random_8py_source.html">pkextract_random.py</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/qgis/pktools/<a class="el" href="pktools_2pkextract__random_8py_source.html">pkextract_random.py</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial-members.html b/doc/html/classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial-members.html
deleted file mode 100644
index bd0eb31..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial-members.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pktools</b></li><li class="navelem"><b>pkfilter_spatial</b></li><li class="navelem"><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">pkfilter_spatial</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">qgis.pktools.pkfilter_spatial.pkfilter_spatial Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pktools.pkfilter_spatial.pkfilter_spatial</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cliName</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pktools.pkfilter_spatial.pkfilter_spatial</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pktools.pkfilter_spatial.pkfilter_spatial</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>defineCharacteristics</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pktools.pkfilter_spatial.pkfilter_spatial</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pktools.pkfilter_spatial.pkfilter_spatial</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>DIM</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pktools.pkfilter_spatial.pkfilter_spatial</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pktools.pkfilter_spatial.pkfilter_spatial</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>EXTRA</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pktools.pkfilter_spatial.pkfilter_spatial</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pktools.pkfilter_spatial.pkfilter_spatial</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>group</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pktools.pkfilter_spatial.pkfilter_spatial</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pktools.pkfilter_spatial.pkfilter_spatial</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>INPUT</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pktools.pkfilter_spatial.pkfilter_spatial</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pktools.pkfilter_spatial.pkfilter_spatial</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>METHOD</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pktools.pkfilter_spatial.pkfilter_spatial</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pktools.pkfilter_spatial.pkfilter_spatial</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>METHOD_OPTIONS</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pktools.pkfilter_spatial.pkfilter_spatial</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pktools.pkfilter_spatial.pkfilter_spatial</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>name</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pktools.pkfilter_spatial.pkfilter_spatial</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pktools.pkfilter_spatial.pkfilter_spatial</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>NODATA</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pktools.pkfilter_spatial.pkfilter_spatial</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pktools.pkfilter_spatial.pkfilter_spatial</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>OUTPUT</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pktools.pkfilter_spatial.pkfilter_spatial</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pktools.pkfilter_spatial.pkfilter_spatial</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>PADDING</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pktools.pkfilter_spatial.pkfilter_spatial</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pktools.pkfilter_spatial.pkfilter_spatial</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>PADDING_OPTIONS</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pktools.pkfilter_spatial.pkfilter_spatial</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pktools.pkfilter_spatial.pkfilter_spatial</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>processAlgorithm</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pktools.pkfilter_spatial.pkfilter_spatial</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pktools.pkfilter_spatial.pkfilter_spatial</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>RTYPE</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pktools.pkfilter_spatial.pkfilter_spatial</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pktools.pkfilter_spatial.pkfilter_spatial</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>TYPE</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pktools.pkfilter_spatial.pkfilter_spatial</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pktools.pkfilter_spatial.pkfilter_spatial</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html b/doc/html/classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html
deleted file mode 100644
index 6d5ab38..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html
+++ /dev/null
@@ -1,154 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: qgis.pktools.pkfilter_spatial.pkfilter_spatial Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pktools</b></li><li class="navelem"><b>pkfilter_spatial</b></li><li class="navelem"><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">pkfilter_spatial</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">qgis.pktools.pkfilter_spatial.pkfilter_spatial Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for qgis.pktools.pkfilter_spatial.pkfilter_spatial:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial__inherit__graph.png" border="0" usemap="#qgis_8pktools_8pkfilter__spatial_8pkfilter__spatial_inherit__map" alt="Inheritance graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for qgis.pktools.pkfilter_spatial.pkfilter_spatial:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial__coll__graph.png" border="0" usemap="#qgis_8pktools_8pkfilter__spatial_8pkfilter__spatial_coll__map" alt="Collaboration graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a49b7370981ec4d1b7ce7fe15c26138bd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a49b7370981ec4d1b7ce7fe15c26138bd"></a>
-def </td><td class="memItemRight" valign="bottom"><b>cliName</b></td></tr>
-<tr class="separator:a49b7370981ec4d1b7ce7fe15c26138bd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a40e4204b03bc22faae17a7562ca419b4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a40e4204b03bc22faae17a7562ca419b4"></a>
-def </td><td class="memItemRight" valign="bottom"><b>defineCharacteristics</b></td></tr>
-<tr class="separator:a40e4204b03bc22faae17a7562ca419b4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afe93b8974da64e6d9621e67c234080d1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afe93b8974da64e6d9621e67c234080d1"></a>
-def </td><td class="memItemRight" valign="bottom"><b>processAlgorithm</b></td></tr>
-<tr class="separator:afe93b8974da64e6d9621e67c234080d1"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:a94b3480f40673e5016d7383c63ec83a5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a94b3480f40673e5016d7383c63ec83a5"></a>
- </td><td class="memItemRight" valign="bottom"><b>name</b></td></tr>
-<tr class="separator:a94b3480f40673e5016d7383c63ec83a5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afff9b2d6386a3a2f623056162d9d5cfd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afff9b2d6386a3a2f623056162d9d5cfd"></a>
- </td><td class="memItemRight" valign="bottom"><b>group</b></td></tr>
-<tr class="separator:afff9b2d6386a3a2f623056162d9d5cfd"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:a70643eead7c6d1505fad7e785fb65360"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a70643eead7c6d1505fad7e785fb65360"></a>
-string </td><td class="memItemRight" valign="bottom"><b>INPUT</b> = "INPUT"</td></tr>
-<tr class="separator:a70643eead7c6d1505fad7e785fb65360"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2bded0b49bef4a2fbd1fb93c5448cd31"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2bded0b49bef4a2fbd1fb93c5448cd31"></a>
-string </td><td class="memItemRight" valign="bottom"><b>OUTPUT</b> = "OUTPUT"</td></tr>
-<tr class="separator:a2bded0b49bef4a2fbd1fb93c5448cd31"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5f7665673481e0fc3fcec2249af3ded1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5f7665673481e0fc3fcec2249af3ded1"></a>
-list </td><td class="memItemRight" valign="bottom"><b>METHOD_OPTIONS</b> = ["none", "median", "var", "min", "max", "sum", "mean", "dilate", "erode", "close", "open", "homog ", "heterog ", "sobelx ", "sobely ", "sobelxy ", "sobelyx" , "smooth", "countid", "smoothnodata values", "thr [...]
-<tr class="separator:a5f7665673481e0fc3fcec2249af3ded1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a50ea23abc53abb9a4b5b829c9e1ed221"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a50ea23abc53abb9a4b5b829c9e1ed221"></a>
-string </td><td class="memItemRight" valign="bottom"><b>METHOD</b> = "METHOD"</td></tr>
-<tr class="separator:a50ea23abc53abb9a4b5b829c9e1ed221"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5b3e50fc81018403e22380d4a9f81376"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5b3e50fc81018403e22380d4a9f81376"></a>
-string </td><td class="memItemRight" valign="bottom"><b>DIM</b> = "DIM"</td></tr>
-<tr class="separator:a5b3e50fc81018403e22380d4a9f81376"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9f53b19e3f757101071ad12687ea8133"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9f53b19e3f757101071ad12687ea8133"></a>
-string </td><td class="memItemRight" valign="bottom"><b>NODATA</b> = "NODATA"</td></tr>
-<tr class="separator:a9f53b19e3f757101071ad12687ea8133"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a701591dea36d98ef8ebc551500eb38f7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a701591dea36d98ef8ebc551500eb38f7"></a>
-list </td><td class="memItemRight" valign="bottom"><b>PADDING_OPTIONS</b> = ["symmetric", "replicate", "circular", "zero"]</td></tr>
-<tr class="separator:a701591dea36d98ef8ebc551500eb38f7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4c65e79b498ae3c1455181680af356ae"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4c65e79b498ae3c1455181680af356ae"></a>
-string </td><td class="memItemRight" valign="bottom"><b>PADDING</b> = "PADDING"</td></tr>
-<tr class="separator:a4c65e79b498ae3c1455181680af356ae"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a417eebdeec4c9e85ff7bf759c0f9396d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a417eebdeec4c9e85ff7bf759c0f9396d"></a>
-string </td><td class="memItemRight" valign="bottom"><b>RTYPE</b> = 'RTYPE'</td></tr>
-<tr class="separator:a417eebdeec4c9e85ff7bf759c0f9396d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1b6d5e87c0633ad7b7297d8689b681d8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1b6d5e87c0633ad7b7297d8689b681d8"></a>
-list </td><td class="memItemRight" valign="bottom"><b>TYPE</b> = ['none', 'Byte','Int16','UInt16','UInt32','Int32','Float32','Float64','CInt16','CInt32','CFloat32','CFloat64']</td></tr>
-<tr class="separator:a1b6d5e87c0633ad7b7297d8689b681d8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aea043fa4377c44c0e081e7377f6b30b3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aea043fa4377c44c0e081e7377f6b30b3"></a>
-string </td><td class="memItemRight" valign="bottom"><b>EXTRA</b> = 'EXTRA'</td></tr>
-<tr class="separator:aea043fa4377c44c0e081e7377f6b30b3"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="pktools_2pkfilter__spatial_8py_source.html#l00038">38</a> of file <a class="el" href="pktools_2pkfilter__spatial_8py_source.html">pkfilter_spatial.py</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/qgis/pktools/<a class="el" href="pktools_2pkfilter__spatial_8py_source.html">pkfilter_spatial.py</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral-members.html b/doc/html/classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral-members.html
deleted file mode 100644
index b531bd2..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral-members.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pktools</b></li><li class="navelem"><b>pkfilter_spectral</b></li><li class="navelem"><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">pkfilter_spectral</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">qgis.pktools.pkfilter_spectral.pkfilter_spectral Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pktools.pkfilter_spectral.pkfilter_spectral</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cliName</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pktools.pkfilter_spectral.pkfilter_spectral</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pktools.pkfilter_spectral.pkfilter_spectral</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>defineCharacteristics</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pktools.pkfilter_spectral.pkfilter_spectral</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pktools.pkfilter_spectral.pkfilter_spectral</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>DZ</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pktools.pkfilter_spectral.pkfilter_spectral</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pktools.pkfilter_spectral.pkfilter_spectral</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>EXTRA</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pktools.pkfilter_spectral.pkfilter_spectral</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pktools.pkfilter_spectral.pkfilter_spectral</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>group</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pktools.pkfilter_spectral.pkfilter_spectral</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pktools.pkfilter_spectral.pkfilter_spectral</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>INPUT</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pktools.pkfilter_spectral.pkfilter_spectral</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pktools.pkfilter_spectral.pkfilter_spectral</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>METHOD</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pktools.pkfilter_spectral.pkfilter_spectral</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pktools.pkfilter_spectral.pkfilter_spectral</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>METHOD_OPTIONS</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pktools.pkfilter_spectral.pkfilter_spectral</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pktools.pkfilter_spectral.pkfilter_spectral</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>name</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pktools.pkfilter_spectral.pkfilter_spectral</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pktools.pkfilter_spectral.pkfilter_spectral</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>NODATA</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pktools.pkfilter_spectral.pkfilter_spectral</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pktools.pkfilter_spectral.pkfilter_spectral</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>OUTPUT</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pktools.pkfilter_spectral.pkfilter_spectral</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pktools.pkfilter_spectral.pkfilter_spectral</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>PADDING</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pktools.pkfilter_spectral.pkfilter_spectral</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pktools.pkfilter_spectral.pkfilter_spectral</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>PADDING_OPTIONS</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pktools.pkfilter_spectral.pkfilter_spectral</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pktools.pkfilter_spectral.pkfilter_spectral</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>processAlgorithm</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pktools.pkfilter_spectral.pkfilter_spectral</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pktools.pkfilter_spectral.pkfilter_spectral</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>RTYPE</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pktools.pkfilter_spectral.pkfilter_spectral</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pktools.pkfilter_spectral.pkfilter_spectral</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>TYPE</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pktools.pkfilter_spectral.pkfilter_spectral</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pktools.pkfilter_spectral.pkfilter_spectral</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html b/doc/html/classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html
deleted file mode 100644
index 96001f9..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html
+++ /dev/null
@@ -1,154 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: qgis.pktools.pkfilter_spectral.pkfilter_spectral Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pktools</b></li><li class="navelem"><b>pkfilter_spectral</b></li><li class="navelem"><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">pkfilter_spectral</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">qgis.pktools.pkfilter_spectral.pkfilter_spectral Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for qgis.pktools.pkfilter_spectral.pkfilter_spectral:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral__inherit__graph.png" border="0" usemap="#qgis_8pktools_8pkfilter__spectral_8pkfilter__spectral_inherit__map" alt="Inheritance graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for qgis.pktools.pkfilter_spectral.pkfilter_spectral:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral__coll__graph.png" border="0" usemap="#qgis_8pktools_8pkfilter__spectral_8pkfilter__spectral_coll__map" alt="Collaboration graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:ae4ff77f62787c22082b90cce278fe647"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae4ff77f62787c22082b90cce278fe647"></a>
-def </td><td class="memItemRight" valign="bottom"><b>cliName</b></td></tr>
-<tr class="separator:ae4ff77f62787c22082b90cce278fe647"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a85ccd74854e3e2b5b3839301df8abc67"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a85ccd74854e3e2b5b3839301df8abc67"></a>
-def </td><td class="memItemRight" valign="bottom"><b>defineCharacteristics</b></td></tr>
-<tr class="separator:a85ccd74854e3e2b5b3839301df8abc67"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a59e137f4fdb6ab68662b260d89171314"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a59e137f4fdb6ab68662b260d89171314"></a>
-def </td><td class="memItemRight" valign="bottom"><b>processAlgorithm</b></td></tr>
-<tr class="separator:a59e137f4fdb6ab68662b260d89171314"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:a3acd427b14996200c28731af93881230"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3acd427b14996200c28731af93881230"></a>
- </td><td class="memItemRight" valign="bottom"><b>name</b></td></tr>
-<tr class="separator:a3acd427b14996200c28731af93881230"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a564ebf9df0204af2dcdddddd4242e8e1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a564ebf9df0204af2dcdddddd4242e8e1"></a>
- </td><td class="memItemRight" valign="bottom"><b>group</b></td></tr>
-<tr class="separator:a564ebf9df0204af2dcdddddd4242e8e1"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:a66e04e576250870781b5354957894c96"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a66e04e576250870781b5354957894c96"></a>
-string </td><td class="memItemRight" valign="bottom"><b>INPUT</b> = "INPUT"</td></tr>
-<tr class="separator:a66e04e576250870781b5354957894c96"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0386672f58fdda479ca994c7dd7ceda8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0386672f58fdda479ca994c7dd7ceda8"></a>
-string </td><td class="memItemRight" valign="bottom"><b>OUTPUT</b> = "OUTPUT"</td></tr>
-<tr class="separator:a0386672f58fdda479ca994c7dd7ceda8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0b6ef52a12318176d8a7274b0b3c0992"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0b6ef52a12318176d8a7274b0b3c0992"></a>
-list </td><td class="memItemRight" valign="bottom"><b>METHOD_OPTIONS</b> = ["none", "median", "var", "min", "max", "sum", "mean", "dilate", "erode", "close", "open", "smooth", "density", "smoothnodata values", "threshold local filtering", "stdev", "dwt", "dwti", "dwt_cut", "dwt_cut_from&quot [...]
-<tr class="separator:a0b6ef52a12318176d8a7274b0b3c0992"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2161052c92e79f5af48d6777d37afe2f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2161052c92e79f5af48d6777d37afe2f"></a>
-string </td><td class="memItemRight" valign="bottom"><b>METHOD</b> = "METHOD"</td></tr>
-<tr class="separator:a2161052c92e79f5af48d6777d37afe2f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a818a9a5d4a7484deaa19a4445e034c60"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a818a9a5d4a7484deaa19a4445e034c60"></a>
-string </td><td class="memItemRight" valign="bottom"><b>DZ</b> = "DZ"</td></tr>
-<tr class="separator:a818a9a5d4a7484deaa19a4445e034c60"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9f1e339aa49f2753729f9fcd4ed43d09"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9f1e339aa49f2753729f9fcd4ed43d09"></a>
-string </td><td class="memItemRight" valign="bottom"><b>NODATA</b> = "NODATA"</td></tr>
-<tr class="separator:a9f1e339aa49f2753729f9fcd4ed43d09"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a90860af18044f5ce29b36c7c4ef112dd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a90860af18044f5ce29b36c7c4ef112dd"></a>
-list </td><td class="memItemRight" valign="bottom"><b>PADDING_OPTIONS</b> = ["symmetric", "replicate", "circular", "zero"]</td></tr>
-<tr class="separator:a90860af18044f5ce29b36c7c4ef112dd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aeab6b7f6a3471187ae33f3597a86721a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeab6b7f6a3471187ae33f3597a86721a"></a>
-string </td><td class="memItemRight" valign="bottom"><b>PADDING</b> = "PADDING"</td></tr>
-<tr class="separator:aeab6b7f6a3471187ae33f3597a86721a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6464f37811e617e629087e4760f353d8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6464f37811e617e629087e4760f353d8"></a>
-string </td><td class="memItemRight" valign="bottom"><b>RTYPE</b> = 'RTYPE'</td></tr>
-<tr class="separator:a6464f37811e617e629087e4760f353d8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae43cc505f2d02b9bbc05f4a84658a792"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae43cc505f2d02b9bbc05f4a84658a792"></a>
-list </td><td class="memItemRight" valign="bottom"><b>TYPE</b> = ['none', 'Byte','Int16','UInt16','UInt32','Int32','Float32','Float64','CInt16','CInt32','CFloat32','CFloat64']</td></tr>
-<tr class="separator:ae43cc505f2d02b9bbc05f4a84658a792"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9c91be195b361b2616904f3ee2990ff5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9c91be195b361b2616904f3ee2990ff5"></a>
-string </td><td class="memItemRight" valign="bottom"><b>EXTRA</b> = 'EXTRA'</td></tr>
-<tr class="separator:a9c91be195b361b2616904f3ee2990ff5"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="pktools_2pkfilter__spectral_8py_source.html#l00038">38</a> of file <a class="el" href="pktools_2pkfilter__spectral_8py_source.html">pkfilter_spectral.py</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/qgis/pktools/<a class="el" href="pktools_2pkfilter__spectral_8py_source.html">pkfilter_spectral.py</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem-members.html b/doc/html/classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem-members.html
deleted file mode 100644
index dfda279..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem-members.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pktools</b></li><li class="navelem"><b>pkfilterdem</b></li><li class="navelem"><a class="el" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html">pkfilterdem</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">qgis.pktools.pkfilterdem.pkfilterdem Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pktools.pkfilterdem.pkfilterdem</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cliName</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pktools.pkfilterdem.pkfilterdem</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pktools.pkfilterdem.pkfilterdem</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>defineCharacteristics</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pktools.pkfilterdem.pkfilterdem</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pktools.pkfilterdem.pkfilterdem</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>DIM</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pktools.pkfilterdem.pkfilterdem</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pktools.pkfilterdem.pkfilterdem</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>EXTRA</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pktools.pkfilterdem.pkfilterdem</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pktools.pkfilterdem.pkfilterdem</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>FILTER</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pktools.pkfilterdem.pkfilterdem</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pktools.pkfilterdem.pkfilterdem</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>FILTER_OPTIONS</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pktools.pkfilterdem.pkfilterdem</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pktools.pkfilterdem.pkfilterdem</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>group</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pktools.pkfilterdem.pkfilterdem</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pktools.pkfilterdem.pkfilterdem</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>INPUT</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pktools.pkfilterdem.pkfilterdem</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pktools.pkfilterdem.pkfilterdem</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>name</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pktools.pkfilterdem.pkfilterdem</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pktools.pkfilterdem.pkfilterdem</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>OUTPUT</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pktools.pkfilterdem.pkfilterdem</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pktools.pkfilterdem.pkfilterdem</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>processAlgorithm</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pktools.pkfilterdem.pkfilterdem</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pktools.pkfilterdem.pkfilterdem</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>RTYPE</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pktools.pkfilterdem.pkfilterdem</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pktools.pkfilterdem.pkfilterdem</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>TYPE</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pktools.pkfilterdem.pkfilterdem</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pktools.pkfilterdem.pkfilterdem</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html b/doc/html/classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html
deleted file mode 100644
index a46515f..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html
+++ /dev/null
@@ -1,145 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: qgis.pktools.pkfilterdem.pkfilterdem Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pktools</b></li><li class="navelem"><b>pkfilterdem</b></li><li class="navelem"><a class="el" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html">pkfilterdem</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">qgis.pktools.pkfilterdem.pkfilterdem Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for qgis.pktools.pkfilterdem.pkfilterdem:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem__inherit__graph.png" border="0" usemap="#qgis_8pktools_8pkfilterdem_8pkfilterdem_inherit__map" alt="Inheritance graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for qgis.pktools.pkfilterdem.pkfilterdem:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem__coll__graph.png" border="0" usemap="#qgis_8pktools_8pkfilterdem_8pkfilterdem_coll__map" alt="Collaboration graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a0aac6f68d72ca4b02b164f5d76f25e6e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0aac6f68d72ca4b02b164f5d76f25e6e"></a>
-def </td><td class="memItemRight" valign="bottom"><b>cliName</b></td></tr>
-<tr class="separator:a0aac6f68d72ca4b02b164f5d76f25e6e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aadcc0a3cc20c7d83d271fff4b3b29f6c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aadcc0a3cc20c7d83d271fff4b3b29f6c"></a>
-def </td><td class="memItemRight" valign="bottom"><b>defineCharacteristics</b></td></tr>
-<tr class="separator:aadcc0a3cc20c7d83d271fff4b3b29f6c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aeccc625908484bc8a0ebcf2e6f2a7a20"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeccc625908484bc8a0ebcf2e6f2a7a20"></a>
-def </td><td class="memItemRight" valign="bottom"><b>processAlgorithm</b></td></tr>
-<tr class="separator:aeccc625908484bc8a0ebcf2e6f2a7a20"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:acf67738f3f769ecd8c908f883aaf585a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf67738f3f769ecd8c908f883aaf585a"></a>
- </td><td class="memItemRight" valign="bottom"><b>name</b></td></tr>
-<tr class="separator:acf67738f3f769ecd8c908f883aaf585a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2b10663adca2f38835d50d6872e157ce"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2b10663adca2f38835d50d6872e157ce"></a>
- </td><td class="memItemRight" valign="bottom"><b>group</b></td></tr>
-<tr class="separator:a2b10663adca2f38835d50d6872e157ce"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:ae1e46a26be886bacea781ad51b4410a8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae1e46a26be886bacea781ad51b4410a8"></a>
-string </td><td class="memItemRight" valign="bottom"><b>INPUT</b> = "INPUT"</td></tr>
-<tr class="separator:ae1e46a26be886bacea781ad51b4410a8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af8b963b1053b7cb062180301e101f6e8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af8b963b1053b7cb062180301e101f6e8"></a>
-string </td><td class="memItemRight" valign="bottom"><b>OUTPUT</b> = "OUTPUT"</td></tr>
-<tr class="separator:af8b963b1053b7cb062180301e101f6e8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad307370f861c20fe353817b2ab0b8d30"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad307370f861c20fe353817b2ab0b8d30"></a>
-string </td><td class="memItemRight" valign="bottom"><b>DIM</b> = "DIM"</td></tr>
-<tr class="separator:ad307370f861c20fe353817b2ab0b8d30"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aabf2e76352764ec3bd9c181276da0022"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aabf2e76352764ec3bd9c181276da0022"></a>
-string </td><td class="memItemRight" valign="bottom"><b>RTYPE</b> = 'RTYPE'</td></tr>
-<tr class="separator:aabf2e76352764ec3bd9c181276da0022"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa4a697381f67ada0cfdf81a7f103cfcb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa4a697381f67ada0cfdf81a7f103cfcb"></a>
-list </td><td class="memItemRight" valign="bottom"><b>TYPE</b> = ['Float32','Byte','Int16','UInt16','UInt32','Int32','Float64','CInt16','CInt32','CFloat32','CFloat64']</td></tr>
-<tr class="separator:aa4a697381f67ada0cfdf81a7f103cfcb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a638ece9d2b2398b40299138509bfb82b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a638ece9d2b2398b40299138509bfb82b"></a>
-list </td><td class="memItemRight" valign="bottom"><b>FILTER_OPTIONS</b> = ["promorph"]</td></tr>
-<tr class="separator:a638ece9d2b2398b40299138509bfb82b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7f5103cdd44f324038b46d976a5b83fd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7f5103cdd44f324038b46d976a5b83fd"></a>
-string </td><td class="memItemRight" valign="bottom"><b>FILTER</b> = "FILTER"</td></tr>
-<tr class="separator:a7f5103cdd44f324038b46d976a5b83fd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a350392989faf79142d8005da7a13056b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a350392989faf79142d8005da7a13056b"></a>
-string </td><td class="memItemRight" valign="bottom"><b>EXTRA</b> = 'EXTRA'</td></tr>
-<tr class="separator:a350392989faf79142d8005da7a13056b"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="pktools_2pkfilterdem_8py_source.html#l00039">39</a> of file <a class="el" href="pktools_2pkfilterdem_8py_source.html">pkfilterdem.py</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/qgis/pktools/<a class="el" href="pktools_2pkfilterdem_8py_source.html">pkfilterdem.py</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem__coll__graph.map b/doc/html/classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem__coll__graph.map
deleted file mode 100644
index a56174d..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem__coll__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pktools.pkfilterdem.pkfilterdem" name="qgis.pktools.pkfilterdem.pkfilterdem">
-</map>
diff --git a/doc/html/classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem__coll__graph.md5 b/doc/html/classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem__coll__graph.md5
deleted file mode 100644
index 82bb3fe..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-cbf52a07ff8eed0ceac70d0be39a651e
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem__coll__graph.png b/doc/html/classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem__coll__graph.png
deleted file mode 100644
index 1a777a3..0000000
Binary files a/doc/html/classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem__coll__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem__inherit__graph.map b/doc/html/classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem__inherit__graph.map
deleted file mode 100644
index a56174d..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem__inherit__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pktools.pkfilterdem.pkfilterdem" name="qgis.pktools.pkfilterdem.pkfilterdem">
-</map>
diff --git a/doc/html/classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem__inherit__graph.md5 b/doc/html/classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem__inherit__graph.md5
deleted file mode 100644
index 82bb3fe..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-cbf52a07ff8eed0ceac70d0be39a651e
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem__inherit__graph.png b/doc/html/classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem__inherit__graph.png
deleted file mode 100644
index 1a777a3..0000000
Binary files a/doc/html/classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask-members.html b/doc/html/classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask-members.html
deleted file mode 100644
index d18e9e3..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask-members.html
+++ /dev/null
@@ -1,95 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pktools</b></li><li class="navelem"><b>pkgetmask</b></li><li class="navelem"><a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">pkgetmask</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">qgis.pktools.pkgetmask.pkgetmask Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">qgis.pktools.pkgetmask.pkgetmask</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>BAND</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">qgis.pktools.pkgetmask.pkgetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">qgis.pktools.pkgetmask.pkgetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>cliName</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">qgis.pktools.pkgetmask.pkgetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">qgis.pktools.pkgetmask.pkgetmask</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>DATA</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">qgis.pktools.pkgetmask.pkgetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">qgis.pktools.pkgetmask.pkgetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>defineCharacteristics</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">qgis.pktools.pkgetmask.pkgetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">qgis.pktools.pkgetmask.pkgetmask</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>EXTRA</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">qgis.pktools.pkgetmask.pkgetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">qgis.pktools.pkgetmask.pkgetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>group</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">qgis.pktools.pkgetmask.pkgetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">qgis.pktools.pkgetmask.pkgetmask</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>INPUT</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">qgis.pktools.pkgetmask.pkgetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">qgis.pktools.pkgetmask.pkgetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>MAX</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">qgis.pktools.pkgetmask.pkgetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">qgis.pktools.pkgetmask.pkgetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>MIN</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">qgis.pktools.pkgetmask.pkgetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">qgis.pktools.pkgetmask.pkgetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>name</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">qgis.pktools.pkgetmask.pkgetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">qgis.pktools.pkgetmask.pkgetmask</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>NODATA</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">qgis.pktools.pkgetmask.pkgetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">qgis.pktools.pkgetmask.pkgetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>OPERATOR</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">qgis.pktools.pkgetmask.pkgetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">qgis.pktools.pkgetmask.pkgetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>OPERATOR_OPTIONS</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">qgis.pktools.pkgetmask.pkgetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">qgis.pktools.pkgetmask.pkgetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>OUTPUT</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">qgis.pktools.pkgetmask.pkgetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">qgis.pktools.pkgetmask.pkgetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>processAlgorithm</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">qgis.pktools.pkgetmask.pkgetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">qgis.pktools.pkgetmask.pkgetmask</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>RTYPE</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">qgis.pktools.pkgetmask.pkgetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">qgis.pktools.pkgetmask.pkgetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>TYPE</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">qgis.pktools.pkgetmask.pkgetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">qgis.pktools.pkgetmask.pkgetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html b/doc/html/classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html
deleted file mode 100644
index 4327c09..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html
+++ /dev/null
@@ -1,157 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: qgis.pktools.pkgetmask.pkgetmask Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pktools</b></li><li class="navelem"><b>pkgetmask</b></li><li class="navelem"><a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">pkgetmask</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">qgis.pktools.pkgetmask.pkgetmask Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for qgis.pktools.pkgetmask.pkgetmask:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask__inherit__graph.png" border="0" usemap="#qgis_8pktools_8pkgetmask_8pkgetmask_inherit__map" alt="Inheritance graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for qgis.pktools.pkgetmask.pkgetmask:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask__coll__graph.png" border="0" usemap="#qgis_8pktools_8pkgetmask_8pkgetmask_coll__map" alt="Collaboration graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:af8638a18a992135f0d2333599455da9d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af8638a18a992135f0d2333599455da9d"></a>
-def </td><td class="memItemRight" valign="bottom"><b>cliName</b></td></tr>
-<tr class="separator:af8638a18a992135f0d2333599455da9d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9885f1bdf78dc1cf60b2698ca3dd5730"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9885f1bdf78dc1cf60b2698ca3dd5730"></a>
-def </td><td class="memItemRight" valign="bottom"><b>defineCharacteristics</b></td></tr>
-<tr class="separator:a9885f1bdf78dc1cf60b2698ca3dd5730"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac321f521ff5d628f18d3769c4e5953cd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac321f521ff5d628f18d3769c4e5953cd"></a>
-def </td><td class="memItemRight" valign="bottom"><b>processAlgorithm</b></td></tr>
-<tr class="separator:ac321f521ff5d628f18d3769c4e5953cd"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:ac4229d79e7fdbcc320c34b70b4996c61"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac4229d79e7fdbcc320c34b70b4996c61"></a>
- </td><td class="memItemRight" valign="bottom"><b>name</b></td></tr>
-<tr class="separator:ac4229d79e7fdbcc320c34b70b4996c61"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afe1f40dd307ff76950c2b7095fa51b2d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afe1f40dd307ff76950c2b7095fa51b2d"></a>
- </td><td class="memItemRight" valign="bottom"><b>group</b></td></tr>
-<tr class="separator:afe1f40dd307ff76950c2b7095fa51b2d"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:aaf2310f968ae6d6254816539b83b424b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaf2310f968ae6d6254816539b83b424b"></a>
-string </td><td class="memItemRight" valign="bottom"><b>INPUT</b> = "INPUT"</td></tr>
-<tr class="separator:aaf2310f968ae6d6254816539b83b424b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4b3b39185a49678924fa180770112465"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4b3b39185a49678924fa180770112465"></a>
-string </td><td class="memItemRight" valign="bottom"><b>BAND</b> = "BAND"</td></tr>
-<tr class="separator:a4b3b39185a49678924fa180770112465"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:accd8fb321226d11fb68b2564297d3b13"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="accd8fb321226d11fb68b2564297d3b13"></a>
-string </td><td class="memItemRight" valign="bottom"><b>MIN</b> = "MIN"</td></tr>
-<tr class="separator:accd8fb321226d11fb68b2564297d3b13"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a89fc80dd3cf449b57ee883116ea2b4a7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a89fc80dd3cf449b57ee883116ea2b4a7"></a>
-string </td><td class="memItemRight" valign="bottom"><b>MAX</b> = "MAX"</td></tr>
-<tr class="separator:a89fc80dd3cf449b57ee883116ea2b4a7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8e2b218c2424a51cbc4a93fe83d07c04"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8e2b218c2424a51cbc4a93fe83d07c04"></a>
-list </td><td class="memItemRight" valign="bottom"><b>OPERATOR_OPTIONS</b> = ["OR", "AND"]</td></tr>
-<tr class="separator:a8e2b218c2424a51cbc4a93fe83d07c04"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af34e465611d97efa0f38d938c61391d6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af34e465611d97efa0f38d938c61391d6"></a>
-string </td><td class="memItemRight" valign="bottom"><b>OPERATOR</b> = "OPERATOR"</td></tr>
-<tr class="separator:af34e465611d97efa0f38d938c61391d6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a70f3dbf7f080106837a8b17c006d81ac"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a70f3dbf7f080106837a8b17c006d81ac"></a>
-string </td><td class="memItemRight" valign="bottom"><b>DATA</b> = "DATA"</td></tr>
-<tr class="separator:a70f3dbf7f080106837a8b17c006d81ac"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af966197d692f8351d058f374fbc5179c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af966197d692f8351d058f374fbc5179c"></a>
-string </td><td class="memItemRight" valign="bottom"><b>NODATA</b> = "NODATA"</td></tr>
-<tr class="separator:af966197d692f8351d058f374fbc5179c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9923121c7323d34231111da4876b6ae1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9923121c7323d34231111da4876b6ae1"></a>
-string </td><td class="memItemRight" valign="bottom"><b>OUTPUT</b> = "OUTPUT"</td></tr>
-<tr class="separator:a9923121c7323d34231111da4876b6ae1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac7313cff3a0c24fab4a0c93b49a46ed8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac7313cff3a0c24fab4a0c93b49a46ed8"></a>
-string </td><td class="memItemRight" valign="bottom"><b>RTYPE</b> = 'RTYPE'</td></tr>
-<tr class="separator:ac7313cff3a0c24fab4a0c93b49a46ed8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5d4080e59895fdae293320e363dbfa03"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5d4080e59895fdae293320e363dbfa03"></a>
-list </td><td class="memItemRight" valign="bottom"><b>TYPE</b> = ['none', 'Byte','Int16','UInt16','UInt32','Int32','Float32','Float64','CInt16','CInt32','CFloat32','CFloat64']</td></tr>
-<tr class="separator:a5d4080e59895fdae293320e363dbfa03"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a67fb04dae201f7eeacd2c1c15ea8a68b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a67fb04dae201f7eeacd2c1c15ea8a68b"></a>
-string </td><td class="memItemRight" valign="bottom"><b>EXTRA</b> = 'EXTRA'</td></tr>
-<tr class="separator:a67fb04dae201f7eeacd2c1c15ea8a68b"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="pktools_2pkgetmask_8py_source.html#l00038">38</a> of file <a class="el" href="pktools_2pkgetmask_8py_source.html">pkgetmask.py</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/qgis/pktools/<a class="el" href="pktools_2pkgetmask_8py_source.html">pkgetmask.py</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask__coll__graph.map b/doc/html/classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask__coll__graph.map
deleted file mode 100644
index 04427f3..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask__coll__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pktools.pkgetmask.pkgetmask" name="qgis.pktools.pkgetmask.pkgetmask">
-</map>
diff --git a/doc/html/classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask__coll__graph.md5 b/doc/html/classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask__coll__graph.md5
deleted file mode 100644
index 65aa0ff..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-49725e4acafdaf74f1676a3e738250f2
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask__coll__graph.png b/doc/html/classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask__coll__graph.png
deleted file mode 100644
index e299553..0000000
Binary files a/doc/html/classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask__coll__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask__inherit__graph.map b/doc/html/classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask__inherit__graph.map
deleted file mode 100644
index 04427f3..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask__inherit__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pktools.pkgetmask.pkgetmask" name="qgis.pktools.pkgetmask.pkgetmask">
-</map>
diff --git a/doc/html/classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask__inherit__graph.md5 b/doc/html/classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask__inherit__graph.md5
deleted file mode 100644
index 65aa0ff..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-49725e4acafdaf74f1676a3e738250f2
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask__inherit__graph.png b/doc/html/classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask__inherit__graph.png
deleted file mode 100644
index e299553..0000000
Binary files a/doc/html/classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pktools_1_1pklas2img_1_1pklas2img-members.html b/doc/html/classqgis_1_1pktools_1_1pklas2img_1_1pklas2img-members.html
deleted file mode 100644
index ab391ad..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pklas2img_1_1pklas2img-members.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pktools</b></li><li class="navelem"><b>pklas2img</b></li><li class="navelem"><a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">pklas2img</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">qgis.pktools.pklas2img.pklas2img Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ATTRIBUTE</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>ATTRIBUTE_OPTIONS</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cliName</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>COMPOSITE</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>COMPOSITE_OPTIONS</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>defineCharacteristics</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>DX</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>DY</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>EXTRA</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>FILTER</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>FILTER_OPTIONS</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>group</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>INPUT</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>name</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>NODATA</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>OUTPUT</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>PERCENTILE</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>processAlgorithm</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>RTYPE</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>TYPE</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html b/doc/html/classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html
deleted file mode 100644
index ef8dab6..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html
+++ /dev/null
@@ -1,166 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: qgis.pktools.pklas2img.pklas2img Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pktools</b></li><li class="navelem"><b>pklas2img</b></li><li class="navelem"><a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">pklas2img</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">qgis.pktools.pklas2img.pklas2img Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for qgis.pktools.pklas2img.pklas2img:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img__inherit__graph.png" border="0" usemap="#qgis_8pktools_8pklas2img_8pklas2img_inherit__map" alt="Inheritance graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for qgis.pktools.pklas2img.pklas2img:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img__coll__graph.png" border="0" usemap="#qgis_8pktools_8pklas2img_8pklas2img_coll__map" alt="Collaboration graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a341f95eb3efccf5c63b40c2aaf5b84d9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a341f95eb3efccf5c63b40c2aaf5b84d9"></a>
-def </td><td class="memItemRight" valign="bottom"><b>cliName</b></td></tr>
-<tr class="separator:a341f95eb3efccf5c63b40c2aaf5b84d9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a61418ad48dd382af34a30b773bea7cf9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a61418ad48dd382af34a30b773bea7cf9"></a>
-def </td><td class="memItemRight" valign="bottom"><b>defineCharacteristics</b></td></tr>
-<tr class="separator:a61418ad48dd382af34a30b773bea7cf9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aceb7c72250e537a43b5806ee109f7774"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aceb7c72250e537a43b5806ee109f7774"></a>
-def </td><td class="memItemRight" valign="bottom"><b>processAlgorithm</b></td></tr>
-<tr class="separator:aceb7c72250e537a43b5806ee109f7774"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:accc880de7d62d73a9a3c5b34d2c1205a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="accc880de7d62d73a9a3c5b34d2c1205a"></a>
- </td><td class="memItemRight" valign="bottom"><b>name</b></td></tr>
-<tr class="separator:accc880de7d62d73a9a3c5b34d2c1205a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae424f891aaec9acfd3d85259f0b5ebca"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae424f891aaec9acfd3d85259f0b5ebca"></a>
- </td><td class="memItemRight" valign="bottom"><b>group</b></td></tr>
-<tr class="separator:ae424f891aaec9acfd3d85259f0b5ebca"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:ac7de684f0362601c5bf667db9b68763a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac7de684f0362601c5bf667db9b68763a"></a>
-string </td><td class="memItemRight" valign="bottom"><b>INPUT</b> = "INPUT"</td></tr>
-<tr class="separator:ac7de684f0362601c5bf667db9b68763a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa923079e3e31c6f9045fc26402066b28"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa923079e3e31c6f9045fc26402066b28"></a>
-string </td><td class="memItemRight" valign="bottom"><b>OUTPUT</b> = "OUTPUT"</td></tr>
-<tr class="separator:aa923079e3e31c6f9045fc26402066b28"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afe4c444f4c7f89fd2851e4517c66e82d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afe4c444f4c7f89fd2851e4517c66e82d"></a>
-list </td><td class="memItemRight" valign="bottom"><b>ATTRIBUTE_OPTIONS</b> = ["z","intensity", "return", "nreturn"]</td></tr>
-<tr class="separator:afe4c444f4c7f89fd2851e4517c66e82d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a95fe33a74c29ec44b4601b384358e024"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a95fe33a74c29ec44b4601b384358e024"></a>
-list </td><td class="memItemRight" valign="bottom"><b>COMPOSITE_OPTIONS</b> = ["last", "min", "max", "median", "mean", "sum", "first", "profile" "percentile", "height", "values", "percentile", "number"]</td></tr>
-<tr class="separator:a95fe33a74c29ec44b4601b384358e024"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a18f6b8223a9c56b4fd5676f5c8062d13"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a18f6b8223a9c56b4fd5676f5c8062d13"></a>
-list </td><td class="memItemRight" valign="bottom"><b>FILTER_OPTIONS</b> = ["all","first","last","single","multiple"]</td></tr>
-<tr class="separator:a18f6b8223a9c56b4fd5676f5c8062d13"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adfbb8aab172e26f0382162c1a81fa863"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adfbb8aab172e26f0382162c1a81fa863"></a>
-string </td><td class="memItemRight" valign="bottom"><b>ATTRIBUTE</b> = "ATTRIBUTE"</td></tr>
-<tr class="separator:adfbb8aab172e26f0382162c1a81fa863"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8e27277f96bb3c59dc7fa3e39050ac85"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8e27277f96bb3c59dc7fa3e39050ac85"></a>
-string </td><td class="memItemRight" valign="bottom"><b>COMPOSITE</b> = "COMPOSITE"</td></tr>
-<tr class="separator:a8e27277f96bb3c59dc7fa3e39050ac85"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acf62ddc2366d8d598fbee8185a363c9d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf62ddc2366d8d598fbee8185a363c9d"></a>
-string </td><td class="memItemRight" valign="bottom"><b>FILTER</b> = "FILTER"</td></tr>
-<tr class="separator:acf62ddc2366d8d598fbee8185a363c9d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac0a6e98dcb6d3726d1e861e1485cf3d9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac0a6e98dcb6d3726d1e861e1485cf3d9"></a>
-string </td><td class="memItemRight" valign="bottom"><b>PERCENTILE</b> = "PERCENTILE"</td></tr>
-<tr class="separator:ac0a6e98dcb6d3726d1e861e1485cf3d9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4b50520fa826ccb6a6bc24e414ec5391"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4b50520fa826ccb6a6bc24e414ec5391"></a>
-string </td><td class="memItemRight" valign="bottom"><b>DX</b> = "DX"</td></tr>
-<tr class="separator:a4b50520fa826ccb6a6bc24e414ec5391"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab450e8c2f27160d69f5f376a6e39dfa1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab450e8c2f27160d69f5f376a6e39dfa1"></a>
-string </td><td class="memItemRight" valign="bottom"><b>DY</b> = "DY"</td></tr>
-<tr class="separator:ab450e8c2f27160d69f5f376a6e39dfa1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2072186e8c3a370ceb38067d56b33868"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2072186e8c3a370ceb38067d56b33868"></a>
-string </td><td class="memItemRight" valign="bottom"><b>NODATA</b> = "NODATA"</td></tr>
-<tr class="separator:a2072186e8c3a370ceb38067d56b33868"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a450ccb8c2deb11dff9a0debe2ab3873a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a450ccb8c2deb11dff9a0debe2ab3873a"></a>
-string </td><td class="memItemRight" valign="bottom"><b>RTYPE</b> = 'RTYPE'</td></tr>
-<tr class="separator:a450ccb8c2deb11dff9a0debe2ab3873a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae724a48a4f739d510c3d4aadfa069b83"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae724a48a4f739d510c3d4aadfa069b83"></a>
-list </td><td class="memItemRight" valign="bottom"><b>TYPE</b> = ['Float32','Byte','Int16','UInt16','UInt32','Int32','Float64','CInt16','CInt32','CFloat32','CFloat64']</td></tr>
-<tr class="separator:ae724a48a4f739d510c3d4aadfa069b83"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a534a211c9476179786a5b4fd526aa76b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a534a211c9476179786a5b4fd526aa76b"></a>
-string </td><td class="memItemRight" valign="bottom"><b>EXTRA</b> = 'EXTRA'</td></tr>
-<tr class="separator:a534a211c9476179786a5b4fd526aa76b"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="pktools_2pklas2img_8py_source.html#l00039">39</a> of file <a class="el" href="pktools_2pklas2img_8py_source.html">pklas2img.py</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/qgis/pktools/<a class="el" href="pktools_2pklas2img_8py_source.html">pklas2img.py</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pktools_1_1pklas2img_1_1pklas2img__coll__graph.map b/doc/html/classqgis_1_1pktools_1_1pklas2img_1_1pklas2img__coll__graph.map
deleted file mode 100644
index a8ab769..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pklas2img_1_1pklas2img__coll__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pktools.pklas2img.pklas2img" name="qgis.pktools.pklas2img.pklas2img">
-</map>
diff --git a/doc/html/classqgis_1_1pktools_1_1pklas2img_1_1pklas2img__coll__graph.md5 b/doc/html/classqgis_1_1pktools_1_1pklas2img_1_1pklas2img__coll__graph.md5
deleted file mode 100644
index ed84f11..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pklas2img_1_1pklas2img__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-370d3db2308817b35abccf3147f6e330
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pktools_1_1pklas2img_1_1pklas2img__coll__graph.png b/doc/html/classqgis_1_1pktools_1_1pklas2img_1_1pklas2img__coll__graph.png
deleted file mode 100644
index 01bb060..0000000
Binary files a/doc/html/classqgis_1_1pktools_1_1pklas2img_1_1pklas2img__coll__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pktools_1_1pklas2img_1_1pklas2img__inherit__graph.map b/doc/html/classqgis_1_1pktools_1_1pklas2img_1_1pklas2img__inherit__graph.map
deleted file mode 100644
index a8ab769..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pklas2img_1_1pklas2img__inherit__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pktools.pklas2img.pklas2img" name="qgis.pktools.pklas2img.pklas2img">
-</map>
diff --git a/doc/html/classqgis_1_1pktools_1_1pklas2img_1_1pklas2img__inherit__graph.md5 b/doc/html/classqgis_1_1pktools_1_1pklas2img_1_1pklas2img__inherit__graph.md5
deleted file mode 100644
index ed84f11..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pklas2img_1_1pklas2img__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-370d3db2308817b35abccf3147f6e330
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pktools_1_1pklas2img_1_1pklas2img__inherit__graph.png b/doc/html/classqgis_1_1pktools_1_1pklas2img_1_1pklas2img__inherit__graph.png
deleted file mode 100644
index 01bb060..0000000
Binary files a/doc/html/classqgis_1_1pktools_1_1pklas2img_1_1pklas2img__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pktools_1_1pkreclass_1_1pkreclass-members.html b/doc/html/classqgis_1_1pktools_1_1pkreclass_1_1pkreclass-members.html
deleted file mode 100644
index 81c02ca..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkreclass_1_1pkreclass-members.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pktools</b></li><li class="navelem"><b>pkreclass</b></li><li class="navelem"><a class="el" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">pkreclass</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">qgis.pktools.pkreclass.pkreclass Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">qgis.pktools.pkreclass.pkreclass</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>BAND</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">qgis.pktools.pkreclass.pkreclass</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">qgis.pktools.pkreclass.pkreclass</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>CLASS</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">qgis.pktools.pkreclass.pkreclass</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">qgis.pktools.pkreclass.pkreclass</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cliName</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">qgis.pktools.pkreclass.pkreclass</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">qgis.pktools.pkreclass.pkreclass</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>defineCharacteristics</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">qgis.pktools.pkreclass.pkreclass</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">qgis.pktools.pkreclass.pkreclass</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>EXTRA</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">qgis.pktools.pkreclass.pkreclass</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">qgis.pktools.pkreclass.pkreclass</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>group</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">qgis.pktools.pkreclass.pkreclass</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">qgis.pktools.pkreclass.pkreclass</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>INPUT</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">qgis.pktools.pkreclass.pkreclass</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">qgis.pktools.pkreclass.pkreclass</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>MASK</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">qgis.pktools.pkreclass.pkreclass</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">qgis.pktools.pkreclass.pkreclass</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>MSKNODATA</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">qgis.pktools.pkreclass.pkreclass</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">qgis.pktools.pkreclass.pkreclass</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>name</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">qgis.pktools.pkreclass.pkreclass</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">qgis.pktools.pkreclass.pkreclass</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>NODATA</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">qgis.pktools.pkreclass.pkreclass</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">qgis.pktools.pkreclass.pkreclass</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>OUTPUT</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">qgis.pktools.pkreclass.pkreclass</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">qgis.pktools.pkreclass.pkreclass</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>processAlgorithm</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">qgis.pktools.pkreclass.pkreclass</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">qgis.pktools.pkreclass.pkreclass</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>RECLASS</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">qgis.pktools.pkreclass.pkreclass</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">qgis.pktools.pkreclass.pkreclass</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>RTYPE</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">qgis.pktools.pkreclass.pkreclass</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">qgis.pktools.pkreclass.pkreclass</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>TYPE</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">qgis.pktools.pkreclass.pkreclass</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">qgis.pktools.pkreclass.pkreclass</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html b/doc/html/classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html
deleted file mode 100644
index 54dafe2..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html
+++ /dev/null
@@ -1,154 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: qgis.pktools.pkreclass.pkreclass Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pktools</b></li><li class="navelem"><b>pkreclass</b></li><li class="navelem"><a class="el" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">pkreclass</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">qgis.pktools.pkreclass.pkreclass Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for qgis.pktools.pkreclass.pkreclass:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass__inherit__graph.png" border="0" usemap="#qgis_8pktools_8pkreclass_8pkreclass_inherit__map" alt="Inheritance graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for qgis.pktools.pkreclass.pkreclass:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass__coll__graph.png" border="0" usemap="#qgis_8pktools_8pkreclass_8pkreclass_coll__map" alt="Collaboration graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a984813cdec014931ab57b85348708d12"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a984813cdec014931ab57b85348708d12"></a>
-def </td><td class="memItemRight" valign="bottom"><b>cliName</b></td></tr>
-<tr class="separator:a984813cdec014931ab57b85348708d12"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afddac1fdf3d950d63d50dec6aacbcc23"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afddac1fdf3d950d63d50dec6aacbcc23"></a>
-def </td><td class="memItemRight" valign="bottom"><b>defineCharacteristics</b></td></tr>
-<tr class="separator:afddac1fdf3d950d63d50dec6aacbcc23"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae33c054e79062fef196bfc42c7b5ba1f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae33c054e79062fef196bfc42c7b5ba1f"></a>
-def </td><td class="memItemRight" valign="bottom"><b>processAlgorithm</b></td></tr>
-<tr class="separator:ae33c054e79062fef196bfc42c7b5ba1f"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:a556f1db8b0402c9c9c4f7cca81b1c264"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a556f1db8b0402c9c9c4f7cca81b1c264"></a>
- </td><td class="memItemRight" valign="bottom"><b>name</b></td></tr>
-<tr class="separator:a556f1db8b0402c9c9c4f7cca81b1c264"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2fff886959f64cb10c12a26c056a1e88"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2fff886959f64cb10c12a26c056a1e88"></a>
- </td><td class="memItemRight" valign="bottom"><b>group</b></td></tr>
-<tr class="separator:a2fff886959f64cb10c12a26c056a1e88"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:a303601836409f7a7a101ac4af8d8f3a6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a303601836409f7a7a101ac4af8d8f3a6"></a>
-string </td><td class="memItemRight" valign="bottom"><b>INPUT</b> = "INPUT"</td></tr>
-<tr class="separator:a303601836409f7a7a101ac4af8d8f3a6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a065a117498a6be8d13ee27b0bcc04647"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a065a117498a6be8d13ee27b0bcc04647"></a>
-string </td><td class="memItemRight" valign="bottom"><b>OUTPUT</b> = "OUTPUT"</td></tr>
-<tr class="separator:a065a117498a6be8d13ee27b0bcc04647"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a47265725eeabaab2bb47e02c34ce8f66"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a47265725eeabaab2bb47e02c34ce8f66"></a>
-string </td><td class="memItemRight" valign="bottom"><b>CLASS</b> = "CLASS"</td></tr>
-<tr class="separator:a47265725eeabaab2bb47e02c34ce8f66"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a310bec7495dd575a3ac641d81f914ae3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a310bec7495dd575a3ac641d81f914ae3"></a>
-string </td><td class="memItemRight" valign="bottom"><b>BAND</b> = "BAND"</td></tr>
-<tr class="separator:a310bec7495dd575a3ac641d81f914ae3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a77d68ecc97bddef7f58cfdb7426139d8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a77d68ecc97bddef7f58cfdb7426139d8"></a>
-string </td><td class="memItemRight" valign="bottom"><b>RECLASS</b> = "RECLASS"</td></tr>
-<tr class="separator:a77d68ecc97bddef7f58cfdb7426139d8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a801a99540cfdf947b4837778ed0a1f37"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a801a99540cfdf947b4837778ed0a1f37"></a>
-string </td><td class="memItemRight" valign="bottom"><b>MASK</b> = "MASK"</td></tr>
-<tr class="separator:a801a99540cfdf947b4837778ed0a1f37"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad273e7dbdd1610b40f42d3c50295bd3a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad273e7dbdd1610b40f42d3c50295bd3a"></a>
-string </td><td class="memItemRight" valign="bottom"><b>MSKNODATA</b> = "MSKNODATA"</td></tr>
-<tr class="separator:ad273e7dbdd1610b40f42d3c50295bd3a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae133eccf7059c47635068612f8d788db"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae133eccf7059c47635068612f8d788db"></a>
-string </td><td class="memItemRight" valign="bottom"><b>NODATA</b> = "NODATA"</td></tr>
-<tr class="separator:ae133eccf7059c47635068612f8d788db"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad32491e68ff156791fe09f6435925b64"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad32491e68ff156791fe09f6435925b64"></a>
-string </td><td class="memItemRight" valign="bottom"><b>RTYPE</b> = 'RTYPE'</td></tr>
-<tr class="separator:ad32491e68ff156791fe09f6435925b64"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae0f930fadcfbe749ee6565d75bb090f3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae0f930fadcfbe749ee6565d75bb090f3"></a>
-list </td><td class="memItemRight" valign="bottom"><b>TYPE</b> = ['none', 'Byte','Int16','UInt16','UInt32','Int32','Float32','Float64','CInt16','CInt32','CFloat32','CFloat64']</td></tr>
-<tr class="separator:ae0f930fadcfbe749ee6565d75bb090f3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2da5ea965129a52c1559f80b8815b65d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2da5ea965129a52c1559f80b8815b65d"></a>
-string </td><td class="memItemRight" valign="bottom"><b>EXTRA</b> = 'EXTRA'</td></tr>
-<tr class="separator:a2da5ea965129a52c1559f80b8815b65d"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="pktools_2pkreclass_8py_source.html#l00038">38</a> of file <a class="el" href="pktools_2pkreclass_8py_source.html">pkreclass.py</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/qgis/pktools/<a class="el" href="pktools_2pkreclass_8py_source.html">pkreclass.py</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pktools_1_1pkreclass_1_1pkreclass__coll__graph.map b/doc/html/classqgis_1_1pktools_1_1pkreclass_1_1pkreclass__coll__graph.map
deleted file mode 100644
index b4bc7b8..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkreclass_1_1pkreclass__coll__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pktools.pkreclass.pkreclass" name="qgis.pktools.pkreclass.pkreclass">
-</map>
diff --git a/doc/html/classqgis_1_1pktools_1_1pkreclass_1_1pkreclass__coll__graph.md5 b/doc/html/classqgis_1_1pktools_1_1pkreclass_1_1pkreclass__coll__graph.md5
deleted file mode 100644
index b83e99a..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkreclass_1_1pkreclass__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-734d838e268dc55de60fb9356326c2d9
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pktools_1_1pkreclass_1_1pkreclass__coll__graph.png b/doc/html/classqgis_1_1pktools_1_1pkreclass_1_1pkreclass__coll__graph.png
deleted file mode 100644
index 1d0d610..0000000
Binary files a/doc/html/classqgis_1_1pktools_1_1pkreclass_1_1pkreclass__coll__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pktools_1_1pkreclass_1_1pkreclass__inherit__graph.map b/doc/html/classqgis_1_1pktools_1_1pkreclass_1_1pkreclass__inherit__graph.map
deleted file mode 100644
index b4bc7b8..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkreclass_1_1pkreclass__inherit__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pktools.pkreclass.pkreclass" name="qgis.pktools.pkreclass.pkreclass">
-</map>
diff --git a/doc/html/classqgis_1_1pktools_1_1pkreclass_1_1pkreclass__inherit__graph.md5 b/doc/html/classqgis_1_1pktools_1_1pkreclass_1_1pkreclass__inherit__graph.md5
deleted file mode 100644
index b83e99a..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pkreclass_1_1pkreclass__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-734d838e268dc55de60fb9356326c2d9
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pktools_1_1pkreclass_1_1pkreclass__inherit__graph.png b/doc/html/classqgis_1_1pktools_1_1pkreclass_1_1pkreclass__inherit__graph.png
deleted file mode 100644
index 1d0d610..0000000
Binary files a/doc/html/classqgis_1_1pktools_1_1pkreclass_1_1pkreclass__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pktools_1_1pksetmask_1_1pksetmask-members.html b/doc/html/classqgis_1_1pktools_1_1pksetmask_1_1pksetmask-members.html
deleted file mode 100644
index 67917d5..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pksetmask_1_1pksetmask-members.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pktools</b></li><li class="navelem"><b>pksetmask</b></li><li class="navelem"><a class="el" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">pksetmask</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">qgis.pktools.pksetmask.pksetmask Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">qgis.pktools.pksetmask.pksetmask</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cliName</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">qgis.pktools.pksetmask.pksetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">qgis.pktools.pksetmask.pksetmask</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>defineCharacteristics</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">qgis.pktools.pksetmask.pksetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">qgis.pktools.pksetmask.pksetmask</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>EXTRA</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">qgis.pktools.pksetmask.pksetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">qgis.pktools.pksetmask.pksetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>group</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">qgis.pktools.pksetmask.pksetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">qgis.pktools.pksetmask.pksetmask</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>INPUT</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">qgis.pktools.pksetmask.pksetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">qgis.pktools.pksetmask.pksetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>MASK</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">qgis.pktools.pksetmask.pksetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">qgis.pktools.pksetmask.pksetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>MSKBAND</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">qgis.pktools.pksetmask.pksetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">qgis.pktools.pksetmask.pksetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>MSKNODATA</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">qgis.pktools.pksetmask.pksetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">qgis.pktools.pksetmask.pksetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>name</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">qgis.pktools.pksetmask.pksetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">qgis.pktools.pksetmask.pksetmask</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>NODATA</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">qgis.pktools.pksetmask.pksetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">qgis.pktools.pksetmask.pksetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>OPERATOR</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">qgis.pktools.pksetmask.pksetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">qgis.pktools.pksetmask.pksetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>OPERATOR_OPTIONS</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">qgis.pktools.pksetmask.pksetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">qgis.pktools.pksetmask.pksetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>OUTPUT</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">qgis.pktools.pksetmask.pksetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">qgis.pktools.pksetmask.pksetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>processAlgorithm</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">qgis.pktools.pksetmask.pksetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">qgis.pktools.pksetmask.pksetmask</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>RTYPE</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">qgis.pktools.pksetmask.pksetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">qgis.pktools.pksetmask.pksetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>TYPE</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">qgis.pktools.pksetmask.pksetmask</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">qgis.pktools.pksetmask.pksetmask</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html b/doc/html/classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html
deleted file mode 100644
index 2399385..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html
+++ /dev/null
@@ -1,154 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: qgis.pktools.pksetmask.pksetmask Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pktools</b></li><li class="navelem"><b>pksetmask</b></li><li class="navelem"><a class="el" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">pksetmask</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">qgis.pktools.pksetmask.pksetmask Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for qgis.pktools.pksetmask.pksetmask:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask__inherit__graph.png" border="0" usemap="#qgis_8pktools_8pksetmask_8pksetmask_inherit__map" alt="Inheritance graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for qgis.pktools.pksetmask.pksetmask:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask__coll__graph.png" border="0" usemap="#qgis_8pktools_8pksetmask_8pksetmask_coll__map" alt="Collaboration graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a25ebf3b8fa56e16e2dfa077434ee4419"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a25ebf3b8fa56e16e2dfa077434ee4419"></a>
-def </td><td class="memItemRight" valign="bottom"><b>cliName</b></td></tr>
-<tr class="separator:a25ebf3b8fa56e16e2dfa077434ee4419"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a43fe1f0bfd877ae4e935517251971f7a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a43fe1f0bfd877ae4e935517251971f7a"></a>
-def </td><td class="memItemRight" valign="bottom"><b>defineCharacteristics</b></td></tr>
-<tr class="separator:a43fe1f0bfd877ae4e935517251971f7a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adb755e6a77023a07b337f3d76c0eb647"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adb755e6a77023a07b337f3d76c0eb647"></a>
-def </td><td class="memItemRight" valign="bottom"><b>processAlgorithm</b></td></tr>
-<tr class="separator:adb755e6a77023a07b337f3d76c0eb647"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:a0c7a9177b36c398a267bf8de262516eb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0c7a9177b36c398a267bf8de262516eb"></a>
- </td><td class="memItemRight" valign="bottom"><b>name</b></td></tr>
-<tr class="separator:a0c7a9177b36c398a267bf8de262516eb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae1d2501517fe54bab01bb8d797582e84"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae1d2501517fe54bab01bb8d797582e84"></a>
- </td><td class="memItemRight" valign="bottom"><b>group</b></td></tr>
-<tr class="separator:ae1d2501517fe54bab01bb8d797582e84"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:a8e87715eedd9a7165b00d55d02833569"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8e87715eedd9a7165b00d55d02833569"></a>
-string </td><td class="memItemRight" valign="bottom"><b>INPUT</b> = "INPUT"</td></tr>
-<tr class="separator:a8e87715eedd9a7165b00d55d02833569"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac40b33e07c5ee97c23a151a66df84689"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac40b33e07c5ee97c23a151a66df84689"></a>
-string </td><td class="memItemRight" valign="bottom"><b>MASK</b> = "MASK"</td></tr>
-<tr class="separator:ac40b33e07c5ee97c23a151a66df84689"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9b66ea21c12be4ad78c2ca6cff1f43f9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9b66ea21c12be4ad78c2ca6cff1f43f9"></a>
-string </td><td class="memItemRight" valign="bottom"><b>MSKNODATA</b> = "MSKNODATA"</td></tr>
-<tr class="separator:a9b66ea21c12be4ad78c2ca6cff1f43f9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ace691beff7bf0d303e8fee5efde7b265"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ace691beff7bf0d303e8fee5efde7b265"></a>
-string </td><td class="memItemRight" valign="bottom"><b>MSKBAND</b> = "MSKBAND"</td></tr>
-<tr class="separator:ace691beff7bf0d303e8fee5efde7b265"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a51a45aa30286d2a9ff7810da37e28aae"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a51a45aa30286d2a9ff7810da37e28aae"></a>
-list </td><td class="memItemRight" valign="bottom"><b>OPERATOR_OPTIONS</b> = ["=","<",">","!"]</td></tr>
-<tr class="separator:a51a45aa30286d2a9ff7810da37e28aae"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a73bb29985c2a59680763c0037397739e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a73bb29985c2a59680763c0037397739e"></a>
-string </td><td class="memItemRight" valign="bottom"><b>OPERATOR</b> = "OPERATOR"</td></tr>
-<tr class="separator:a73bb29985c2a59680763c0037397739e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a24c98153680e1de66746fd52785ae784"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a24c98153680e1de66746fd52785ae784"></a>
-string </td><td class="memItemRight" valign="bottom"><b>NODATA</b> = "NODATA"</td></tr>
-<tr class="separator:a24c98153680e1de66746fd52785ae784"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5883cf4f62435f304fdadd16b2cffc7b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5883cf4f62435f304fdadd16b2cffc7b"></a>
-string </td><td class="memItemRight" valign="bottom"><b>OUTPUT</b> = "OUTPUT"</td></tr>
-<tr class="separator:a5883cf4f62435f304fdadd16b2cffc7b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aebbb05f08af1f26f4bdab58e4765f0f4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aebbb05f08af1f26f4bdab58e4765f0f4"></a>
-string </td><td class="memItemRight" valign="bottom"><b>RTYPE</b> = 'RTYPE'</td></tr>
-<tr class="separator:aebbb05f08af1f26f4bdab58e4765f0f4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9e6a013c1e4fb1d7a17be4c55e414a21"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9e6a013c1e4fb1d7a17be4c55e414a21"></a>
-list </td><td class="memItemRight" valign="bottom"><b>TYPE</b> = ['none', 'Byte','Int16','UInt16','UInt32','Int32','Float32','Float64','CInt16','CInt32','CFloat32','CFloat64']</td></tr>
-<tr class="separator:a9e6a013c1e4fb1d7a17be4c55e414a21"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7844f283b29ff1eab06a928d703b1628"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7844f283b29ff1eab06a928d703b1628"></a>
-string </td><td class="memItemRight" valign="bottom"><b>EXTRA</b> = 'EXTRA'</td></tr>
-<tr class="separator:a7844f283b29ff1eab06a928d703b1628"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="pktools_2pksetmask_8py_source.html#l00038">38</a> of file <a class="el" href="pktools_2pksetmask_8py_source.html">pksetmask.py</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/qgis/pktools/<a class="el" href="pktools_2pksetmask_8py_source.html">pksetmask.py</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pktools_1_1pksetmask_1_1pksetmask__coll__graph.map b/doc/html/classqgis_1_1pktools_1_1pksetmask_1_1pksetmask__coll__graph.map
deleted file mode 100644
index 655c2cf..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pksetmask_1_1pksetmask__coll__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pktools.pksetmask.pksetmask" name="qgis.pktools.pksetmask.pksetmask">
-</map>
diff --git a/doc/html/classqgis_1_1pktools_1_1pksetmask_1_1pksetmask__coll__graph.md5 b/doc/html/classqgis_1_1pktools_1_1pksetmask_1_1pksetmask__coll__graph.md5
deleted file mode 100644
index c944154..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pksetmask_1_1pksetmask__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-fd4e090bd4f6765f6023ca57d131081d
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pktools_1_1pksetmask_1_1pksetmask__coll__graph.png b/doc/html/classqgis_1_1pktools_1_1pksetmask_1_1pksetmask__coll__graph.png
deleted file mode 100644
index 2fc79db..0000000
Binary files a/doc/html/classqgis_1_1pktools_1_1pksetmask_1_1pksetmask__coll__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pktools_1_1pksetmask_1_1pksetmask__inherit__graph.map b/doc/html/classqgis_1_1pktools_1_1pksetmask_1_1pksetmask__inherit__graph.map
deleted file mode 100644
index 655c2cf..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pksetmask_1_1pksetmask__inherit__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pktools.pksetmask.pksetmask" name="qgis.pktools.pksetmask.pksetmask">
-</map>
diff --git a/doc/html/classqgis_1_1pktools_1_1pksetmask_1_1pksetmask__inherit__graph.md5 b/doc/html/classqgis_1_1pktools_1_1pksetmask_1_1pksetmask__inherit__graph.md5
deleted file mode 100644
index c944154..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pksetmask_1_1pksetmask__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-fd4e090bd4f6765f6023ca57d131081d
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pktools_1_1pksetmask_1_1pksetmask__inherit__graph.png b/doc/html/classqgis_1_1pktools_1_1pksetmask_1_1pksetmask__inherit__graph.png
deleted file mode 100644
index 2fc79db..0000000
Binary files a/doc/html/classqgis_1_1pktools_1_1pksetmask_1_1pksetmask__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pktools_1_1pksvm_1_1pksvm-members.html b/doc/html/classqgis_1_1pktools_1_1pksvm_1_1pksvm-members.html
deleted file mode 100644
index da92ea6..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pksvm_1_1pksvm-members.html
+++ /dev/null
@@ -1,93 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pktools</b></li><li class="navelem"><b>pksvm</b></li><li class="navelem"><a class="el" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html">pksvm</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">qgis.pktools.pksvm.pksvm Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html">qgis.pktools.pksvm.pksvm</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cliName</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html">qgis.pktools.pksvm.pksvm</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html">qgis.pktools.pksvm.pksvm</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>COST</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html">qgis.pktools.pksvm.pksvm</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html">qgis.pktools.pksvm.pksvm</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>defineCharacteristics</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html">qgis.pktools.pksvm.pksvm</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html">qgis.pktools.pksvm.pksvm</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>EXTRA</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html">qgis.pktools.pksvm.pksvm</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html">qgis.pktools.pksvm.pksvm</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GAMMA</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html">qgis.pktools.pksvm.pksvm</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html">qgis.pktools.pksvm.pksvm</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>group</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html">qgis.pktools.pksvm.pksvm</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html">qgis.pktools.pksvm.pksvm</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>INPUT</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html">qgis.pktools.pksvm.pksvm</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html">qgis.pktools.pksvm.pksvm</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>ITERATE</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html">qgis.pktools.pksvm.pksvm</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html">qgis.pktools.pksvm.pksvm</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>LABEL</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html">qgis.pktools.pksvm.pksvm</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html">qgis.pktools.pksvm.pksvm</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>MASK</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html">qgis.pktools.pksvm.pksvm</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html">qgis.pktools.pksvm.pksvm</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>MSKNODATA</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html">qgis.pktools.pksvm.pksvm</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html">qgis.pktools.pksvm.pksvm</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>name</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html">qgis.pktools.pksvm.pksvm</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html">qgis.pktools.pksvm.pksvm</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>OUTPUT</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html">qgis.pktools.pksvm.pksvm</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html">qgis.pktools.pksvm.pksvm</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>processAlgorithm</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html">qgis.pktools.pksvm.pksvm</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html">qgis.pktools.pksvm.pksvm</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>TRAINING</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html">qgis.pktools.pksvm.pksvm</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html">qgis.pktools.pksvm.pksvm</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pktools_1_1pksvm_1_1pksvm.html b/doc/html/classqgis_1_1pktools_1_1pksvm_1_1pksvm.html
deleted file mode 100644
index 3107e2a..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pksvm_1_1pksvm.html
+++ /dev/null
@@ -1,151 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: qgis.pktools.pksvm.pksvm Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pktools</b></li><li class="navelem"><b>pksvm</b></li><li class="navelem"><a class="el" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html">pksvm</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="classqgis_1_1pktools_1_1pksvm_1_1pksvm-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">qgis.pktools.pksvm.pksvm Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for qgis.pktools.pksvm.pksvm:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pktools_1_1pksvm_1_1pksvm__inherit__graph.png" border="0" usemap="#qgis_8pktools_8pksvm_8pksvm_inherit__map" alt="Inheritance graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for qgis.pktools.pksvm.pksvm:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pktools_1_1pksvm_1_1pksvm__coll__graph.png" border="0" usemap="#qgis_8pktools_8pksvm_8pksvm_coll__map" alt="Collaboration graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:af39f9264502b9f57b573d61861e24061"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af39f9264502b9f57b573d61861e24061"></a>
-def </td><td class="memItemRight" valign="bottom"><b>cliName</b></td></tr>
-<tr class="separator:af39f9264502b9f57b573d61861e24061"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a64094c02a03a2ba3338dc776fed768d8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a64094c02a03a2ba3338dc776fed768d8"></a>
-def </td><td class="memItemRight" valign="bottom"><b>defineCharacteristics</b></td></tr>
-<tr class="separator:a64094c02a03a2ba3338dc776fed768d8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7d90b3106972788e6776cadb439ef645"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7d90b3106972788e6776cadb439ef645"></a>
-def </td><td class="memItemRight" valign="bottom"><b>processAlgorithm</b></td></tr>
-<tr class="separator:a7d90b3106972788e6776cadb439ef645"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:ac3e6f06386e8ed665adb2168e57e01a8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac3e6f06386e8ed665adb2168e57e01a8"></a>
- </td><td class="memItemRight" valign="bottom"><b>name</b></td></tr>
-<tr class="separator:ac3e6f06386e8ed665adb2168e57e01a8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa20dab28c3712708dbd39bf066bfb99c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa20dab28c3712708dbd39bf066bfb99c"></a>
- </td><td class="memItemRight" valign="bottom"><b>group</b></td></tr>
-<tr class="separator:aa20dab28c3712708dbd39bf066bfb99c"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:a449dacc23d9df8747a447f46d9f8295e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a449dacc23d9df8747a447f46d9f8295e"></a>
-string </td><td class="memItemRight" valign="bottom"><b>INPUT</b> = "INPUT"</td></tr>
-<tr class="separator:a449dacc23d9df8747a447f46d9f8295e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac4bd65562ba7f52abb53c6fb35e368ca"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac4bd65562ba7f52abb53c6fb35e368ca"></a>
-string </td><td class="memItemRight" valign="bottom"><b>TRAINING</b> = "TRAINING"</td></tr>
-<tr class="separator:ac4bd65562ba7f52abb53c6fb35e368ca"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae80fe946cdd873ff57e05a3a2ed6131b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae80fe946cdd873ff57e05a3a2ed6131b"></a>
-string </td><td class="memItemRight" valign="bottom"><b>ITERATE</b> = "ITERATE"</td></tr>
-<tr class="separator:ae80fe946cdd873ff57e05a3a2ed6131b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8a3efb11fd3716fd738991ec2289e2f1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8a3efb11fd3716fd738991ec2289e2f1"></a>
-string </td><td class="memItemRight" valign="bottom"><b>LABEL</b> = "LABEL"</td></tr>
-<tr class="separator:a8a3efb11fd3716fd738991ec2289e2f1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5cb924380f4009fa78a99f0e63a98a22"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5cb924380f4009fa78a99f0e63a98a22"></a>
-string </td><td class="memItemRight" valign="bottom"><b>GAMMA</b> = "GAMMA"</td></tr>
-<tr class="separator:a5cb924380f4009fa78a99f0e63a98a22"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af889c66eadaf2a22a56db24c11b6dc2a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af889c66eadaf2a22a56db24c11b6dc2a"></a>
-string </td><td class="memItemRight" valign="bottom"><b>COST</b> = "COST"</td></tr>
-<tr class="separator:af889c66eadaf2a22a56db24c11b6dc2a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a81bff218d4c83d0f71a38d81109bd395"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a81bff218d4c83d0f71a38d81109bd395"></a>
-string </td><td class="memItemRight" valign="bottom"><b>OUTPUT</b> = "OUTPUT"</td></tr>
-<tr class="separator:a81bff218d4c83d0f71a38d81109bd395"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a749c2182f8ab095d690e08951156f695"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a749c2182f8ab095d690e08951156f695"></a>
-string </td><td class="memItemRight" valign="bottom"><b>MASK</b> = "MASK"</td></tr>
-<tr class="separator:a749c2182f8ab095d690e08951156f695"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a986be02b97ec4cc26f00ea4dd9c878ff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a986be02b97ec4cc26f00ea4dd9c878ff"></a>
-string </td><td class="memItemRight" valign="bottom"><b>MSKNODATA</b> = "MSKNODATA"</td></tr>
-<tr class="separator:a986be02b97ec4cc26f00ea4dd9c878ff"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aea279cd6acf26d72a740aa6a8149b6fe"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aea279cd6acf26d72a740aa6a8149b6fe"></a>
-string </td><td class="memItemRight" valign="bottom"><b>EXTRA</b> = 'EXTRA'</td></tr>
-<tr class="separator:aea279cd6acf26d72a740aa6a8149b6fe"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="pktools_2pksvm_8py_source.html#l00039">39</a> of file <a class="el" href="pktools_2pksvm_8py_source.html">pksvm.py</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/qgis/pktools/<a class="el" href="pktools_2pksvm_8py_source.html">pksvm.py</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pktools_1_1pksvm_1_1pksvm__coll__graph.map b/doc/html/classqgis_1_1pktools_1_1pksvm_1_1pksvm__coll__graph.map
deleted file mode 100644
index 1986620..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pksvm_1_1pksvm__coll__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pktools.pksvm.pksvm" name="qgis.pktools.pksvm.pksvm">
-</map>
diff --git a/doc/html/classqgis_1_1pktools_1_1pksvm_1_1pksvm__coll__graph.md5 b/doc/html/classqgis_1_1pktools_1_1pksvm_1_1pksvm__coll__graph.md5
deleted file mode 100644
index fde0182..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pksvm_1_1pksvm__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-2ccee9e3c7ca2e8bb6385bb7d490defd
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pktools_1_1pksvm_1_1pksvm__coll__graph.png b/doc/html/classqgis_1_1pktools_1_1pksvm_1_1pksvm__coll__graph.png
deleted file mode 100644
index 04772b0..0000000
Binary files a/doc/html/classqgis_1_1pktools_1_1pksvm_1_1pksvm__coll__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pktools_1_1pksvm_1_1pksvm__inherit__graph.map b/doc/html/classqgis_1_1pktools_1_1pksvm_1_1pksvm__inherit__graph.map
deleted file mode 100644
index 1986620..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pksvm_1_1pksvm__inherit__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pktools.pksvm.pksvm" name="qgis.pktools.pksvm.pksvm">
-</map>
diff --git a/doc/html/classqgis_1_1pktools_1_1pksvm_1_1pksvm__inherit__graph.md5 b/doc/html/classqgis_1_1pktools_1_1pksvm_1_1pksvm__inherit__graph.md5
deleted file mode 100644
index fde0182..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pksvm_1_1pksvm__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-2ccee9e3c7ca2e8bb6385bb7d490defd
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pktools_1_1pksvm_1_1pksvm__inherit__graph.png b/doc/html/classqgis_1_1pktools_1_1pksvm_1_1pksvm__inherit__graph.png
deleted file mode 100644
index 04772b0..0000000
Binary files a/doc/html/classqgis_1_1pktools_1_1pksvm_1_1pksvm__inherit__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pktools_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm-members.html b/doc/html/classqgis_1_1pktools_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm-members.html
deleted file mode 100644
index 8eb5a69..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm-members.html
+++ /dev/null
@@ -1,81 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pktools</b></li><li class="navelem"><b>pktoolsAlgorithm</b></li><li class="navelem"><a class="el" href="classqgis_1_1pktools_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html">pktoolsAlgorithm</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">qgis.pktools.pktoolsAlgorithm.pktoolsAlgorithm Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classqgis_1_1pktools_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html">qgis.pktools.pktoolsAlgorithm.pktoolsAlgorithm</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>checkBeforeOpeningParametersDialog</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html">qgis.pktools.pktoolsAlgorithm.pktoolsAlgorithm</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html">qgis.pktools.pktoolsAlgorithm.pktoolsAlgorithm</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getIcon</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html">qgis.pktools.pktoolsAlgorithm.pktoolsAlgorithm</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html">qgis.pktools.pktoolsAlgorithm.pktoolsAlgorithm</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>help</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html">qgis.pktools.pktoolsAlgorithm.pktoolsAlgorithm</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html">qgis.pktools.pktoolsAlgorithm.pktoolsAlgorithm</a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pktools_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html b/doc/html/classqgis_1_1pktools_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html
deleted file mode 100644
index d227730..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: qgis.pktools.pktoolsAlgorithm.pktoolsAlgorithm Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pktools</b></li><li class="navelem"><b>pktoolsAlgorithm</b></li><li class="navelem"><a class="el" href="classqgis_1_1pktools_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html">pktoolsAlgorithm</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="classqgis_1_1pktools_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">qgis.pktools.pktoolsAlgorithm.pktoolsAlgorithm Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Inheritance diagram for qgis.pktools.pktoolsAlgorithm.pktoolsAlgorithm:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pktools_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm__inherit__graph.png" border="0" usemap="#qgis_8pktools_8pktoolsAlgorithm_8pktoolsAlgorithm_inherit__map" alt="Inheritance graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<div class="dynheader">
-Collaboration diagram for qgis.pktools.pktoolsAlgorithm.pktoolsAlgorithm:</div>
-<div class="dyncontent">
-<div class="center"><img src="classqgis_1_1pktools_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm__coll__graph.png" border="0" usemap="#qgis_8pktools_8pktoolsAlgorithm_8pktoolsAlgorithm_coll__map" alt="Collaboration graph"/></div>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:ac652ef4b9cf5a6b0318230209c127ba4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac652ef4b9cf5a6b0318230209c127ba4"></a>
-def </td><td class="memItemRight" valign="bottom"><b>getIcon</b></td></tr>
-<tr class="separator:ac652ef4b9cf5a6b0318230209c127ba4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a51ba8b742dd75bedd67749accfd7c8d5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a51ba8b742dd75bedd67749accfd7c8d5"></a>
-def </td><td class="memItemRight" valign="bottom"><b>checkBeforeOpeningParametersDialog</b></td></tr>
-<tr class="separator:a51ba8b742dd75bedd67749accfd7c8d5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1b82ca165baf14de65d194a55bb2d109"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1b82ca165baf14de65d194a55bb2d109"></a>
-def </td><td class="memItemRight" valign="bottom"><b>help</b></td></tr>
-<tr class="separator:a1b82ca165baf14de65d194a55bb2d109"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="pktools_2pktoolsAlgorithm_8py_source.html#l00041">41</a> of file <a class="el" href="pktools_2pktoolsAlgorithm_8py_source.html">pktoolsAlgorithm.py</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/qgis/pktools/<a class="el" href="pktools_2pktoolsAlgorithm_8py_source.html">pktoolsAlgorithm.py</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pktools_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm__coll__graph.map b/doc/html/classqgis_1_1pktools_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm__coll__graph.map
deleted file mode 100644
index 829bbaa..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm__coll__graph.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="qgis.pktools.pktoolsAlgorithm.pktoolsAlgorithm" name="qgis.pktools.pktoolsAlgorithm.pktoolsAlgorithm">
-</map>
diff --git a/doc/html/classqgis_1_1pktools_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm__coll__graph.md5 b/doc/html/classqgis_1_1pktools_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm__coll__graph.md5
deleted file mode 100644
index c5db4f4..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-e6760bfbce67e55c523cf5ac056d08d1
\ No newline at end of file
diff --git a/doc/html/classqgis_1_1pktools_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm__coll__graph.png b/doc/html/classqgis_1_1pktools_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm__coll__graph.png
deleted file mode 100644
index 2d321dc..0000000
Binary files a/doc/html/classqgis_1_1pktools_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm__coll__graph.png and /dev/null differ
diff --git a/doc/html/classqgis_1_1pktools_1_1pktoolsUtils_1_1pktoolsUtils-members.html b/doc/html/classqgis_1_1pktools_1_1pktoolsUtils_1_1pktoolsUtils-members.html
deleted file mode 100644
index 234a311..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pktoolsUtils_1_1pktoolsUtils-members.html
+++ /dev/null
@@ -1,81 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pktools</b></li><li class="navelem"><b>pktoolsUtils</b></li><li class="navelem"><a class="el" href="classqgis_1_1pktools_1_1pktoolsUtils_1_1pktoolsUtils.html">pktoolsUtils</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">qgis.pktools.pktoolsUtils.pktoolsUtils Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classqgis_1_1pktools_1_1pktoolsUtils_1_1pktoolsUtils.html">qgis.pktools.pktoolsUtils.pktoolsUtils</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>PKTOOLS_FOLDER</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pktoolsUtils_1_1pktoolsUtils.html">qgis.pktools.pktoolsUtils.pktoolsUtils</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pktoolsUtils_1_1pktoolsUtils.html">qgis.pktools.pktoolsUtils.pktoolsUtils</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>pktoolsPath</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pktoolsUtils_1_1pktoolsUtils.html">qgis.pktools.pktoolsUtils.pktoolsUtils</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pktoolsUtils_1_1pktoolsUtils.html">qgis.pktools.pktoolsUtils.pktoolsUtils</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>runpktools</b> (defined in <a class="el" href="classqgis_1_1pktools_1_1pktoolsUtils_1_1pktoolsUtils.html">qgis.pktools.pktoolsUtils.pktoolsUtils</a>)</td><td class="entry"><a class="el" href="classqgis_1_1pktools_1_1pktoolsUtils_1_1pktoolsUtils.html">qgis.pktools.pktoolsUtils.pktoolsUtils</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classqgis_1_1pktools_1_1pktoolsUtils_1_1pktoolsUtils.html b/doc/html/classqgis_1_1pktools_1_1pktoolsUtils_1_1pktoolsUtils.html
deleted file mode 100644
index 69914e5..0000000
--- a/doc/html/classqgis_1_1pktools_1_1pktoolsUtils_1_1pktoolsUtils.html
+++ /dev/null
@@ -1,101 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: qgis.pktools.pktoolsUtils.pktoolsUtils Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>qgis</b></li><li class="navelem"><b>pktools</b></li><li class="navelem"><b>pktoolsUtils</b></li><li class="navelem"><a class="el" href="classqgis_1_1pktools_1_1pktoolsUtils_1_1pktoolsUtils.html">pktoolsUtils</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="classqgis_1_1pktools_1_1pktoolsUtils_1_1pktoolsUtils-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">qgis.pktools.pktoolsUtils.pktoolsUtils Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr class="memitem:a478ecd4ffbf3bb233f532743dd589ea0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a478ecd4ffbf3bb233f532743dd589ea0"></a>
-def </td><td class="memItemRight" valign="bottom"><b>pktoolsPath</b></td></tr>
-<tr class="separator:a478ecd4ffbf3bb233f532743dd589ea0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1f658a8f9a0a6ef8aa58be57ad07b156"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1f658a8f9a0a6ef8aa58be57ad07b156"></a>
-def </td><td class="memItemRight" valign="bottom"><b>runpktools</b></td></tr>
-<tr class="separator:a1f658a8f9a0a6ef8aa58be57ad07b156"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:a88bdfaa9d7e469f7d554cda523d2354a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a88bdfaa9d7e469f7d554cda523d2354a"></a>
-string </td><td class="memItemRight" valign="bottom"><b>PKTOOLS_FOLDER</b> = "PKTOOLS_FOLDER"</td></tr>
-<tr class="separator:a88bdfaa9d7e469f7d554cda523d2354a"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="pktools_2pktoolsUtils_8py_source.html#l00035">35</a> of file <a class="el" href="pktools_2pktoolsUtils_8py_source.html">pktoolsUtils.py</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/qgis/pktools/<a class="el" href="pktools_2pktoolsUtils_8py_source.html">pktoolsUtils.py</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classstatfactory_1_1StatFactory-members.html b/doc/html/classstatfactory_1_1StatFactory-members.html
deleted file mode 100644
index e6e9985..0000000
--- a/doc/html/classstatfactory_1_1StatFactory-members.html
+++ /dev/null
@@ -1,164 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>statfactory</b></li><li class="navelem"><a class="el" href="classstatfactory_1_1StatFactory.html">StatFactory</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">statfactory::StatFactory Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>absmax</b>(const std::vector< T > &v, typename std::vector< T >::const_iterator begin, typename std::vector< T >::const_iterator end) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>absmin</b>(const std::vector< T > &v, typename std::vector< T >::const_iterator begin, typename std::vector< T >::const_iterator end) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>akima</b> enum value (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>akima_periodic</b> enum value (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>allocAcc</b>(gsl_interp_accel *&acc) (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>cmoment</b>(const std::vector< T > &v, int n) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>correlation</b>(const std::vector< T > &x, const std::vector< T > &y, int delay=0) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>cross_correlation</b>(const std::vector< T > &x, const std::vector< T > &y, int maxdelay, std::vector< T > &z) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cspline</b> enum value (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>cspline_periodic</b> enum value (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cumulative</b>(const std::vector< T > &input, typename std::vector< T >::const_iterator begin, typename std::vector< T >::const_iterator end, std::vector< int > &output, int nbin, T &minimum, T &maximum) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">sta [...]
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>cvrmse</b>(const std::vector< T > &x, const std::vector< T > &y) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>distribution</b>(const std::vector< T > &input, typename std::vector< T >::const_iterator begin, typename std::vector< T >::const_iterator end, std::vector< double > &output, int nbin, T &minimum, T &maximum, double sigma=0, const std::string &filename="") const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="e [...]
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>distribution</b>(const std::vector< T > &input, std::vector< double > &output, int nbin, double sigma=0, const std::string &filename="") const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>distribution2d</b>(const std::vector< T > &inputX, const std::vector< T > &inputY, std::vector< std::vector< double > > &output, int nbin, T &minX, T &maxX, T &minY, T &maxY, double sigma=0, const std::string &filename="") const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" hr [...]
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>DISTRIBUTION_TYPE</b> enum name (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>eraseNoData</b>(std::vector< T > &v) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>evalSpline</b>(gsl_spline *spline, double x, gsl_interp_accel *acc) (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>gaussian</b> enum value (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getDistributionType</b>(const std::string distributionType) (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getInterpolationType</b>(const std::string interpolationType) (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getNodataValues</b>(std::vector< double > &nodatav) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getRandomGenerator</b>(unsigned long int theSeed) (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getRandomValue</b>(const gsl_rng *r, const std::string type, double a=0, double b=1) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getSpline</b>(const std::string type, int size, gsl_spline *&spline) (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>gsl_covariance</b>(const std::vector< T > &x, const std::vector< T > &y) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>initSpline</b>(gsl_spline *spline, const double *x, const double *y, int size) (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>interpolateDown</b>(const std::vector< T > &input, std::vector< T > &output, int nbin) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>interpolateDown</b>(double *input, int dim, std::vector< T > &output, int nbin) (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>interpolateNoData</b>(const std::vector< double > &wavelengthIn, const std::vector< T > &input, const std::string &type, std::vector< T > &output, bool verbose=false) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>interpolateUp</b>(const std::vector< double > &wavelengthIn, const std::vector< T > &input, const std::vector< double > &wavelengthOut, const std::string &type, std::vector< T > &output, bool verbose=false) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.ht [...]
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>interpolateUp</b>(const std::vector< double > &wavelengthIn, const std::vector< std::vector< T > > &input, const std::vector< double > &wavelengthOut, const std::string &type, std::vector< std::vector< T > > &output, bool verbose=false) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="class [...]
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>interpolateUp</b>(const std::vector< T > &input, std::vector< T > &output, int nbin) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>interpolateUp</b>(double *input, int dim, std::vector< T > &output, int nbin) (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>INTERPOLATION_TYPE</b> enum name (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>isNoData</b>(double value) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>kurtosis</b>(const std::vector< T > &v) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>linear</b> enum value (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>linear_regression</b>(const std::vector< T > &x, const std::vector< T > &y, double &c0, double &c1) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>linear_regression_err</b>(const std::vector< T > &x, const std::vector< T > &y, double &c0, double &c1) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mean</b>(const std::vector< T > &v) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>meanVar</b>(const std::vector< T > &v, double &m1, double &v1) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>median</b>(const std::vector< T > &v) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>minmax</b>(const std::vector< T > &v, typename std::vector< T >::const_iterator begin, typename std::vector< T >::const_iterator end, T &theMin, T &theMax) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"><span class="mlabel">in [...]
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>moment</b>(const std::vector< T > &v, int n) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>mymax</b>(const typename std::vector< T > &v) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mymax</b>(const typename std::vector< T > &v, T maxConstraint) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>mymax</b>(const std::vector< T > &v, typename std::vector< T >::const_iterator begin, typename std::vector< T >::const_iterator end) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mymax</b>(const std::vector< T > &v, typename std::vector< T >::iterator begin, typename std::vector< T >::iterator end) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>mymax</b>(const std::vector< T > &v, typename std::vector< T >::const_iterator begin, typename std::vector< T >::const_iterator end, T maxConstraint) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mymax</b>(const std::vector< T > &v, typename std::vector< T >::iterator begin, typename std::vector< T >::iterator end, T maxConstraint) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"><span class="mlabel">inline</span></ [...]
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>mymax</b>(const std::vector< T > &v) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mymax</b>(const std::vector< T > &v, T maxConstraint) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>mymin</b>(const typename std::vector< T > &v) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mymin</b>(const typename std::vector< T > &v, T minConstraint) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>mymin</b>(const typename std::vector< T > &v, typename std::vector< T >::const_iterator begin, typename std::vector< T >::const_iterator end) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mymin</b>(const typename std::vector< T > &v, typename std::vector< T >::iterator begin, typename std::vector< T >::iterator end) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>mymin</b>(const typename std::vector< T > &v, typename std::vector< T >::const_iterator begin, typename std::vector< T >::const_iterator end, T minConstraint) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mymin</b>(const typename std::vector< T > &v, typename std::vector< T >::iterator begin, typename std::vector< T >::iterator end, T minConstraint) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>mymin</b>(const std::vector< T > &v, typename std::vector< T >::const_iterator begin, typename std::vector< T >::const_iterator end) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mymin</b>(const std::vector< T > &v, typename std::vector< T >::iterator begin, typename std::vector< T >::iterator end) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>mymin</b>(const std::vector< T > &v, typename std::vector< T >::const_iterator begin, typename std::vector< T >::const_iterator end, T minConstraint) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mymin</b>(const std::vector< T > &v, typename std::vector< T >::iterator begin, typename std::vector< T >::iterator end, T minConstraint) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"><span class="mlabel">inline</span></ [...]
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>mymin</b>(const std::vector< T > &v) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mymin</b>(const std::vector< T > &v, T minConstraint) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>nearUp</b>(const std::vector< T > &input, std::vector< T > &output) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>normalize</b>(const std::vector< T > &input, std::vector< double > &output) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>normalize_pct</b>(std::vector< T > &input) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>nrmse</b>(const std::vector< T > &x, const std::vector< T > &y) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>nvalid</b>(const std::vector< T > &v) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>percentile</b>(const std::vector< T > &input, typename std::vector< T >::const_iterator begin, typename std::vector< T >::const_iterator end, double percent, T minimum=0, T maximum=0) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td clas [...]
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>percentiles</b>(const std::vector< T > &input, typename std::vector< T >::const_iterator begin, typename std::vector< T >::const_iterator end, std::vector< T > &output, int nbin, T &minimum, T &maximum, const std::string &filename="") const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstat [...]
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>polynomial</b> enum value (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>pushNodDataValue</b>(double noDataValue) (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>rmse</b>(const std::vector< T > &x, const std::vector< T > &y) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>scale2byte</b>(const std::vector< T1 > &input, std::vector< T2 > &output, unsigned char lbound=0, unsigned char ubound=255) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setNoDataValues</b>(std::vector< double > vnodata) (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>signature</b>(const std::vector< T > &input, double &k, double &alpha, double &beta, double e) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>signature</b>(double m1, double m2, double &k, double &alpha, double &beta, double e) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>skewness</b>(const std::vector< T > &v) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>StatFactory</b>(void) (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>sum</b>(const std::vector< T > &v) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>undefined</b> enum value (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>uniform</b> enum value (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>var</b>(const std::vector< T > &v) const  (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~StatFactory</b>(void) (defined in <a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a>)</td><td class="entry"><a class="el" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/classstatfactory_1_1StatFactory.html b/doc/html/classstatfactory_1_1StatFactory.html
deleted file mode 100644
index afe1e10..0000000
--- a/doc/html/classstatfactory_1_1StatFactory.html
+++ /dev/null
@@ -1,391 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: statfactory::StatFactory Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><b>statfactory</b></li><li class="navelem"><a class="el" href="classstatfactory_1_1StatFactory.html">StatFactory</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a> |
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-static-methods">Static Public Member Functions</a> |
-<a href="classstatfactory_1_1StatFactory-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">statfactory::StatFactory Class Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr class="memitem:a37585f701a9b2d2cc402af04f5964596"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>INTERPOLATION_TYPE</b> { <br/>
-  <b>undefined</b> =0, 
-<b>linear</b> =1, 
-<b>polynomial</b> =2, 
-<b>cspline</b> =3, 
-<br/>
-  <b>cspline_periodic</b> =4, 
-<b>akima</b> =5, 
-<b>akima_periodic</b> =6
-<br/>
- }</td></tr>
-<tr class="separator:a37585f701a9b2d2cc402af04f5964596"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a105359fa72ba3832b8d3c81c66c2f395"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>DISTRIBUTION_TYPE</b> { <b>uniform</b> =1, 
-<b>gaussian</b> =2
- }</td></tr>
-<tr class="separator:a105359fa72ba3832b8d3c81c66c2f395"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a69a7bee43fc0441632ba69944d6a97cd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a69a7bee43fc0441632ba69944d6a97cd"></a>
-INTERPOLATION_TYPE </td><td class="memItemRight" valign="bottom"><b>getInterpolationType</b> (const std::string interpolationType)</td></tr>
-<tr class="separator:a69a7bee43fc0441632ba69944d6a97cd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a59cab2e8350a4f61a2f000b927f022d1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a59cab2e8350a4f61a2f000b927f022d1"></a>
-DISTRIBUTION_TYPE </td><td class="memItemRight" valign="bottom"><b>getDistributionType</b> (const std::string distributionType)</td></tr>
-<tr class="separator:a59cab2e8350a4f61a2f000b927f022d1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a67b5012e9bfcae6f96076686d253b6bf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a67b5012e9bfcae6f96076686d253b6bf"></a>
-void </td><td class="memItemRight" valign="bottom"><b>getNodataValues</b> (std::vector< double > &nodatav) const </td></tr>
-<tr class="separator:a67b5012e9bfcae6f96076686d253b6bf"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aee6d2cb98262e414249fd59fb2a0a6c6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aee6d2cb98262e414249fd59fb2a0a6c6"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>isNoData</b> (double value) const </td></tr>
-<tr class="separator:aee6d2cb98262e414249fd59fb2a0a6c6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a31d5cf2f8892aa591a99925a8fb00b0a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a31d5cf2f8892aa591a99925a8fb00b0a"></a>
-unsigned int </td><td class="memItemRight" valign="bottom"><b>pushNodDataValue</b> (double noDataValue)</td></tr>
-<tr class="separator:a31d5cf2f8892aa591a99925a8fb00b0a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3bdeab3b8a93ebc9bc3f23c3757e6adf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3bdeab3b8a93ebc9bc3f23c3757e6adf"></a>
-unsigned int </td><td class="memItemRight" valign="bottom"><b>setNoDataValues</b> (std::vector< double > vnodata)</td></tr>
-<tr class="separator:a3bdeab3b8a93ebc9bc3f23c3757e6adf"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af7cf127e92c38a5a4638c9865a08104b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af7cf127e92c38a5a4638c9865a08104b"></a>
-double </td><td class="memItemRight" valign="bottom"><b>getRandomValue</b> (const gsl_rng *r, const std::string type, double a=0, double b=1) const </td></tr>
-<tr class="separator:af7cf127e92c38a5a4638c9865a08104b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a40fd41a6f87835bee3dcd934c8f62145"><td class="memTemplParams" colspan="2"><a class="anchor" id="a40fd41a6f87835bee3dcd934c8f62145"></a>
-template<class T > </td></tr>
-<tr class="memitem:a40fd41a6f87835bee3dcd934c8f62145"><td class="memTemplItemLeft" align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><b>mymin</b> (const typename std::vector< T > &v) const </td></tr>
-<tr class="separator:a40fd41a6f87835bee3dcd934c8f62145"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac249aaf65122d3997546474461735608"><td class="memTemplParams" colspan="2"><a class="anchor" id="ac249aaf65122d3997546474461735608"></a>
-template<class T > </td></tr>
-<tr class="memitem:ac249aaf65122d3997546474461735608"><td class="memTemplItemLeft" align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><b>mymax</b> (const typename std::vector< T > &v) const </td></tr>
-<tr class="separator:ac249aaf65122d3997546474461735608"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4d169c0ef16be65ffc188abdbdfda772"><td class="memTemplParams" colspan="2"><a class="anchor" id="a4d169c0ef16be65ffc188abdbdfda772"></a>
-template<class T > </td></tr>
-<tr class="memitem:a4d169c0ef16be65ffc188abdbdfda772"><td class="memTemplItemLeft" align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><b>mymin</b> (const typename std::vector< T > &v, T minConstraint) const </td></tr>
-<tr class="separator:a4d169c0ef16be65ffc188abdbdfda772"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a959608316c247771df749e3c2dd52325"><td class="memTemplParams" colspan="2"><a class="anchor" id="a959608316c247771df749e3c2dd52325"></a>
-template<class T > </td></tr>
-<tr class="memitem:a959608316c247771df749e3c2dd52325"><td class="memTemplItemLeft" align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><b>mymax</b> (const typename std::vector< T > &v, T maxConstraint) const </td></tr>
-<tr class="separator:a959608316c247771df749e3c2dd52325"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a259af5d33ad6719e5ada8bd411f43505"><td class="memTemplParams" colspan="2"><a class="anchor" id="a259af5d33ad6719e5ada8bd411f43505"></a>
-template<class T > </td></tr>
-<tr class="memitem:a259af5d33ad6719e5ada8bd411f43505"><td class="memTemplItemLeft" align="right" valign="top">std::vector< T >::const_iterator </td><td class="memTemplItemRight" valign="bottom"><b>mymin</b> (const typename std::vector< T > &v, typename std::vector< T >::const_iterator begin, typename std::vector< T >::const_iterator end) const </td></tr>
-<tr class="separator:a259af5d33ad6719e5ada8bd411f43505"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a649880b9bd77bde8d73df6b08c9bb634"><td class="memTemplParams" colspan="2"><a class="anchor" id="a649880b9bd77bde8d73df6b08c9bb634"></a>
-template<class T > </td></tr>
-<tr class="memitem:a649880b9bd77bde8d73df6b08c9bb634"><td class="memTemplItemLeft" align="right" valign="top">std::vector< T >::iterator </td><td class="memTemplItemRight" valign="bottom"><b>mymin</b> (const typename std::vector< T > &v, typename std::vector< T >::iterator begin, typename std::vector< T >::iterator end) const </td></tr>
-<tr class="separator:a649880b9bd77bde8d73df6b08c9bb634"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a21e51667c62e97778aea20925bc0931c"><td class="memTemplParams" colspan="2"><a class="anchor" id="a21e51667c62e97778aea20925bc0931c"></a>
-template<class T > </td></tr>
-<tr class="memitem:a21e51667c62e97778aea20925bc0931c"><td class="memTemplItemLeft" align="right" valign="top">std::vector< T >::const_iterator </td><td class="memTemplItemRight" valign="bottom"><b>mymin</b> (const typename std::vector< T > &v, typename std::vector< T >::const_iterator begin, typename std::vector< T >::const_iterator end, T minConstraint) const </td></tr>
-<tr class="separator:a21e51667c62e97778aea20925bc0931c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aee306f3fc3fbea8b6f57b3844c8a0603"><td class="memTemplParams" colspan="2"><a class="anchor" id="aee306f3fc3fbea8b6f57b3844c8a0603"></a>
-template<class T > </td></tr>
-<tr class="memitem:aee306f3fc3fbea8b6f57b3844c8a0603"><td class="memTemplItemLeft" align="right" valign="top">std::vector< T >::iterator </td><td class="memTemplItemRight" valign="bottom"><b>mymin</b> (const typename std::vector< T > &v, typename std::vector< T >::iterator begin, typename std::vector< T >::iterator end, T minConstraint) const </td></tr>
-<tr class="separator:aee306f3fc3fbea8b6f57b3844c8a0603"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acd3324084ef54eabb81434c8039d6316"><td class="memTemplParams" colspan="2"><a class="anchor" id="acd3324084ef54eabb81434c8039d6316"></a>
-template<class T > </td></tr>
-<tr class="memitem:acd3324084ef54eabb81434c8039d6316"><td class="memTemplItemLeft" align="right" valign="top">std::vector< T >::const_iterator </td><td class="memTemplItemRight" valign="bottom"><b>mymax</b> (const std::vector< T > &v, typename std::vector< T >::const_iterator begin, typename std::vector< T >::const_iterator end) const </td></tr>
-<tr class="separator:acd3324084ef54eabb81434c8039d6316"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af9785577620ed04f31466083578cf330"><td class="memTemplParams" colspan="2"><a class="anchor" id="af9785577620ed04f31466083578cf330"></a>
-template<class T > </td></tr>
-<tr class="memitem:af9785577620ed04f31466083578cf330"><td class="memTemplItemLeft" align="right" valign="top">std::vector< T >::iterator </td><td class="memTemplItemRight" valign="bottom"><b>mymax</b> (const std::vector< T > &v, typename std::vector< T >::iterator begin, typename std::vector< T >::iterator end) const </td></tr>
-<tr class="separator:af9785577620ed04f31466083578cf330"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab79dffc4de71b781255a2ecbd5a12130"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab79dffc4de71b781255a2ecbd5a12130"></a>
-template<class T > </td></tr>
-<tr class="memitem:ab79dffc4de71b781255a2ecbd5a12130"><td class="memTemplItemLeft" align="right" valign="top">std::vector< T >::const_iterator </td><td class="memTemplItemRight" valign="bottom"><b>mymax</b> (const std::vector< T > &v, typename std::vector< T >::const_iterator begin, typename std::vector< T >::const_iterator end, T maxConstraint) const </td></tr>
-<tr class="separator:ab79dffc4de71b781255a2ecbd5a12130"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4e533d394fec188388f7be5d43521b14"><td class="memTemplParams" colspan="2"><a class="anchor" id="a4e533d394fec188388f7be5d43521b14"></a>
-template<class T > </td></tr>
-<tr class="memitem:a4e533d394fec188388f7be5d43521b14"><td class="memTemplItemLeft" align="right" valign="top">std::vector< T >::iterator </td><td class="memTemplItemRight" valign="bottom"><b>mymax</b> (const std::vector< T > &v, typename std::vector< T >::iterator begin, typename std::vector< T >::iterator end, T maxConstraint) const </td></tr>
-<tr class="separator:a4e533d394fec188388f7be5d43521b14"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac8f16d2cf5a3a487ea9cf627ccb80dbf"><td class="memTemplParams" colspan="2"><a class="anchor" id="ac8f16d2cf5a3a487ea9cf627ccb80dbf"></a>
-template<class T > </td></tr>
-<tr class="memitem:ac8f16d2cf5a3a487ea9cf627ccb80dbf"><td class="memTemplItemLeft" align="right" valign="top">std::vector< T >::const_iterator </td><td class="memTemplItemRight" valign="bottom"><b>absmin</b> (const std::vector< T > &v, typename std::vector< T >::const_iterator begin, typename std::vector< T >::const_iterator end) const </td></tr>
-<tr class="separator:ac8f16d2cf5a3a487ea9cf627ccb80dbf"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a37997a65aa3fed8337bb3697cb9d2a1d"><td class="memTemplParams" colspan="2"><a class="anchor" id="a37997a65aa3fed8337bb3697cb9d2a1d"></a>
-template<class T > </td></tr>
-<tr class="memitem:a37997a65aa3fed8337bb3697cb9d2a1d"><td class="memTemplItemLeft" align="right" valign="top">std::vector< T >::const_iterator </td><td class="memTemplItemRight" valign="bottom"><b>absmax</b> (const std::vector< T > &v, typename std::vector< T >::const_iterator begin, typename std::vector< T >::const_iterator end) const </td></tr>
-<tr class="separator:a37997a65aa3fed8337bb3697cb9d2a1d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aed1cb0fc32653ace9450b346f22e0aba"><td class="memTemplParams" colspan="2"><a class="anchor" id="aed1cb0fc32653ace9450b346f22e0aba"></a>
-template<class T > </td></tr>
-<tr class="memitem:aed1cb0fc32653ace9450b346f22e0aba"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>minmax</b> (const std::vector< T > &v, typename std::vector< T >::const_iterator begin, typename std::vector< T >::const_iterator end, T &theMin, T &theMax) const </td></tr>
-<tr class="separator:aed1cb0fc32653ace9450b346f22e0aba"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5f420755fb273d86e8979b5d240ca4d8"><td class="memTemplParams" colspan="2"><a class="anchor" id="a5f420755fb273d86e8979b5d240ca4d8"></a>
-template<class T > </td></tr>
-<tr class="memitem:a5f420755fb273d86e8979b5d240ca4d8"><td class="memTemplItemLeft" align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><b>sum</b> (const std::vector< T > &v) const </td></tr>
-<tr class="separator:a5f420755fb273d86e8979b5d240ca4d8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1f39030af10586748ffe5ee392f929de"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1f39030af10586748ffe5ee392f929de"></a>
-template<class T > </td></tr>
-<tr class="memitem:a1f39030af10586748ffe5ee392f929de"><td class="memTemplItemLeft" align="right" valign="top">double </td><td class="memTemplItemRight" valign="bottom"><b>mean</b> (const std::vector< T > &v) const </td></tr>
-<tr class="separator:a1f39030af10586748ffe5ee392f929de"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adb66e9d150b0112702c5b033501e0108"><td class="memTemplParams" colspan="2"><a class="anchor" id="adb66e9d150b0112702c5b033501e0108"></a>
-template<class T > </td></tr>
-<tr class="memitem:adb66e9d150b0112702c5b033501e0108"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>eraseNoData</b> (std::vector< T > &v) const </td></tr>
-<tr class="separator:adb66e9d150b0112702c5b033501e0108"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa861b82242a65907ccdeada2c1381689"><td class="memTemplParams" colspan="2"><a class="anchor" id="aa861b82242a65907ccdeada2c1381689"></a>
-template<class T > </td></tr>
-<tr class="memitem:aa861b82242a65907ccdeada2c1381689"><td class="memTemplItemLeft" align="right" valign="top">unsigned int </td><td class="memTemplItemRight" valign="bottom"><b>nvalid</b> (const std::vector< T > &v) const </td></tr>
-<tr class="separator:aa861b82242a65907ccdeada2c1381689"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a772be6bff058d3c7edfec58360e524b7"><td class="memTemplParams" colspan="2"><a class="anchor" id="a772be6bff058d3c7edfec58360e524b7"></a>
-template<class T > </td></tr>
-<tr class="memitem:a772be6bff058d3c7edfec58360e524b7"><td class="memTemplItemLeft" align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><b>median</b> (const std::vector< T > &v) const </td></tr>
-<tr class="separator:a772be6bff058d3c7edfec58360e524b7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad7de5f367d52281823f37cdfa7579bbd"><td class="memTemplParams" colspan="2"><a class="anchor" id="ad7de5f367d52281823f37cdfa7579bbd"></a>
-template<class T > </td></tr>
-<tr class="memitem:ad7de5f367d52281823f37cdfa7579bbd"><td class="memTemplItemLeft" align="right" valign="top">double </td><td class="memTemplItemRight" valign="bottom"><b>var</b> (const std::vector< T > &v) const </td></tr>
-<tr class="separator:ad7de5f367d52281823f37cdfa7579bbd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5c4c7e21f1a2effda178a2e83409b4e3"><td class="memTemplParams" colspan="2"><a class="anchor" id="a5c4c7e21f1a2effda178a2e83409b4e3"></a>
-template<class T > </td></tr>
-<tr class="memitem:a5c4c7e21f1a2effda178a2e83409b4e3"><td class="memTemplItemLeft" align="right" valign="top">double </td><td class="memTemplItemRight" valign="bottom"><b>moment</b> (const std::vector< T > &v, int n) const </td></tr>
-<tr class="separator:a5c4c7e21f1a2effda178a2e83409b4e3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a16df05e110b4af63ca525265967f902d"><td class="memTemplParams" colspan="2"><a class="anchor" id="a16df05e110b4af63ca525265967f902d"></a>
-template<class T > </td></tr>
-<tr class="memitem:a16df05e110b4af63ca525265967f902d"><td class="memTemplItemLeft" align="right" valign="top">double </td><td class="memTemplItemRight" valign="bottom"><b>cmoment</b> (const std::vector< T > &v, int n) const </td></tr>
-<tr class="separator:a16df05e110b4af63ca525265967f902d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aefc71804144a24f5de63597098bf2147"><td class="memTemplParams" colspan="2"><a class="anchor" id="aefc71804144a24f5de63597098bf2147"></a>
-template<class T > </td></tr>
-<tr class="memitem:aefc71804144a24f5de63597098bf2147"><td class="memTemplItemLeft" align="right" valign="top">double </td><td class="memTemplItemRight" valign="bottom"><b>skewness</b> (const std::vector< T > &v) const </td></tr>
-<tr class="separator:aefc71804144a24f5de63597098bf2147"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a37c6fda1ce862e53171d59a20c811178"><td class="memTemplParams" colspan="2"><a class="anchor" id="a37c6fda1ce862e53171d59a20c811178"></a>
-template<class T > </td></tr>
-<tr class="memitem:a37c6fda1ce862e53171d59a20c811178"><td class="memTemplItemLeft" align="right" valign="top">double </td><td class="memTemplItemRight" valign="bottom"><b>kurtosis</b> (const std::vector< T > &v) const </td></tr>
-<tr class="separator:a37c6fda1ce862e53171d59a20c811178"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac48046541317c59f012e1e86b9027fa8"><td class="memTemplParams" colspan="2"><a class="anchor" id="ac48046541317c59f012e1e86b9027fa8"></a>
-template<class T > </td></tr>
-<tr class="memitem:ac48046541317c59f012e1e86b9027fa8"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>meanVar</b> (const std::vector< T > &v, double &m1, double &v1) const </td></tr>
-<tr class="separator:ac48046541317c59f012e1e86b9027fa8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0d8bfc386123a0bc6d69a88a8864ab96"><td class="memTemplParams" colspan="2"><a class="anchor" id="a0d8bfc386123a0bc6d69a88a8864ab96"></a>
-template<class T1 , class T2 > </td></tr>
-<tr class="memitem:a0d8bfc386123a0bc6d69a88a8864ab96"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>scale2byte</b> (const std::vector< T1 > &input, std::vector< T2 > &output, unsigned char lbound=0, unsigned char ubound=255) const </td></tr>
-<tr class="separator:a0d8bfc386123a0bc6d69a88a8864ab96"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a114bb24c17355fa18dcf333d15ce71d5"><td class="memTemplParams" colspan="2"><a class="anchor" id="a114bb24c17355fa18dcf333d15ce71d5"></a>
-template<class T > </td></tr>
-<tr class="memitem:a114bb24c17355fa18dcf333d15ce71d5"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>distribution</b> (const std::vector< T > &input, typename std::vector< T >::const_iterator begin, typename std::vector< T >::const_iterator end, std::vector< double > &output, int nbin, T &minimum, T &maximum, double sigma=0, const std::string &filename="") const  [...]
-<tr class="separator:a114bb24c17355fa18dcf333d15ce71d5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a13ae6a00a53653ac1ea3e9dbca3ae35c"><td class="memTemplParams" colspan="2"><a class="anchor" id="a13ae6a00a53653ac1ea3e9dbca3ae35c"></a>
-template<class T > </td></tr>
-<tr class="memitem:a13ae6a00a53653ac1ea3e9dbca3ae35c"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>distribution</b> (const std::vector< T > &input, std::vector< double > &output, int nbin, double sigma=0, const std::string &filename="") const </td></tr>
-<tr class="separator:a13ae6a00a53653ac1ea3e9dbca3ae35c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a78316396ea5b437332bcb1b5cf64c0ab"><td class="memTemplParams" colspan="2"><a class="anchor" id="a78316396ea5b437332bcb1b5cf64c0ab"></a>
-template<class T > </td></tr>
-<tr class="memitem:a78316396ea5b437332bcb1b5cf64c0ab"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>distribution2d</b> (const std::vector< T > &inputX, const std::vector< T > &inputY, std::vector< std::vector< double > > &output, int nbin, T &minX, T &maxX, T &minY, T &maxY, double sigma=0, const std::string &filename="") const </td></tr>
-<tr class="separator:a78316396ea5b437332bcb1b5cf64c0ab"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a60927dd900865e482f6ab61205442eae"><td class="memTemplParams" colspan="2"><a class="anchor" id="a60927dd900865e482f6ab61205442eae"></a>
-template<class T > </td></tr>
-<tr class="memitem:a60927dd900865e482f6ab61205442eae"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>cumulative</b> (const std::vector< T > &input, typename std::vector< T >::const_iterator begin, typename std::vector< T >::const_iterator end, std::vector< int > &output, int nbin, T &minimum, T &maximum) const </td></tr>
-<tr class="separator:a60927dd900865e482f6ab61205442eae"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a89e4ec6f688673d1e1dd5fdcdfa475e0"><td class="memTemplParams" colspan="2"><a class="anchor" id="a89e4ec6f688673d1e1dd5fdcdfa475e0"></a>
-template<class T > </td></tr>
-<tr class="memitem:a89e4ec6f688673d1e1dd5fdcdfa475e0"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>percentiles</b> (const std::vector< T > &input, typename std::vector< T >::const_iterator begin, typename std::vector< T >::const_iterator end, std::vector< T > &output, int nbin, T &minimum, T &maximum, const std::string &filename="") const </td></tr>
-<tr class="separator:a89e4ec6f688673d1e1dd5fdcdfa475e0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac003e61319d4bb48c83952349903246b"><td class="memTemplParams" colspan="2"><a class="anchor" id="ac003e61319d4bb48c83952349903246b"></a>
-template<class T > </td></tr>
-<tr class="memitem:ac003e61319d4bb48c83952349903246b"><td class="memTemplItemLeft" align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><b>percentile</b> (const std::vector< T > &input, typename std::vector< T >::const_iterator begin, typename std::vector< T >::const_iterator end, double percent, T minimum=0, T maximum=0) const </td></tr>
-<tr class="separator:ac003e61319d4bb48c83952349903246b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0512a43de9766f87496c80360450beeb"><td class="memTemplParams" colspan="2"><a class="anchor" id="a0512a43de9766f87496c80360450beeb"></a>
-template<class T > </td></tr>
-<tr class="memitem:a0512a43de9766f87496c80360450beeb"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>signature</b> (const std::vector< T > &input, double &k, double &alpha, double &beta, double e) const </td></tr>
-<tr class="separator:a0512a43de9766f87496c80360450beeb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adf22f880205fdffc64e99b593e21a051"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adf22f880205fdffc64e99b593e21a051"></a>
-void </td><td class="memItemRight" valign="bottom"><b>signature</b> (double m1, double m2, double &k, double &alpha, double &beta, double e) const </td></tr>
-<tr class="separator:adf22f880205fdffc64e99b593e21a051"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af528217f1231bb82ffc702c77a20fd97"><td class="memTemplParams" colspan="2"><a class="anchor" id="af528217f1231bb82ffc702c77a20fd97"></a>
-template<class T > </td></tr>
-<tr class="memitem:af528217f1231bb82ffc702c77a20fd97"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>normalize</b> (const std::vector< T > &input, std::vector< double > &output) const </td></tr>
-<tr class="separator:af528217f1231bb82ffc702c77a20fd97"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4f811ad3aa2ef07de983bdfe596cfa37"><td class="memTemplParams" colspan="2"><a class="anchor" id="a4f811ad3aa2ef07de983bdfe596cfa37"></a>
-template<class T > </td></tr>
-<tr class="memitem:a4f811ad3aa2ef07de983bdfe596cfa37"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>normalize_pct</b> (std::vector< T > &input) const </td></tr>
-<tr class="separator:a4f811ad3aa2ef07de983bdfe596cfa37"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a93f585048edfc3a7298698911e3c91ce"><td class="memTemplParams" colspan="2"><a class="anchor" id="a93f585048edfc3a7298698911e3c91ce"></a>
-template<class T > </td></tr>
-<tr class="memitem:a93f585048edfc3a7298698911e3c91ce"><td class="memTemplItemLeft" align="right" valign="top">double </td><td class="memTemplItemRight" valign="bottom"><b>rmse</b> (const std::vector< T > &x, const std::vector< T > &y) const </td></tr>
-<tr class="separator:a93f585048edfc3a7298698911e3c91ce"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a44d5be757c977b7b232de5bcc0e30877"><td class="memTemplParams" colspan="2"><a class="anchor" id="a44d5be757c977b7b232de5bcc0e30877"></a>
-template<class T > </td></tr>
-<tr class="memitem:a44d5be757c977b7b232de5bcc0e30877"><td class="memTemplItemLeft" align="right" valign="top">double </td><td class="memTemplItemRight" valign="bottom"><b>nrmse</b> (const std::vector< T > &x, const std::vector< T > &y) const </td></tr>
-<tr class="separator:a44d5be757c977b7b232de5bcc0e30877"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6f8b64b6f5f9f4bd488f072231ebd5e3"><td class="memTemplParams" colspan="2"><a class="anchor" id="a6f8b64b6f5f9f4bd488f072231ebd5e3"></a>
-template<class T > </td></tr>
-<tr class="memitem:a6f8b64b6f5f9f4bd488f072231ebd5e3"><td class="memTemplItemLeft" align="right" valign="top">double </td><td class="memTemplItemRight" valign="bottom"><b>cvrmse</b> (const std::vector< T > &x, const std::vector< T > &y) const </td></tr>
-<tr class="separator:a6f8b64b6f5f9f4bd488f072231ebd5e3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3039e3126ee1e804655224a1b91d8fd4"><td class="memTemplParams" colspan="2"><a class="anchor" id="a3039e3126ee1e804655224a1b91d8fd4"></a>
-template<class T > </td></tr>
-<tr class="memitem:a3039e3126ee1e804655224a1b91d8fd4"><td class="memTemplItemLeft" align="right" valign="top">double </td><td class="memTemplItemRight" valign="bottom"><b>correlation</b> (const std::vector< T > &x, const std::vector< T > &y, int delay=0) const </td></tr>
-<tr class="separator:a3039e3126ee1e804655224a1b91d8fd4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6c5a1c11318f4665149d0b525a6e44c1"><td class="memTemplParams" colspan="2"><a class="anchor" id="a6c5a1c11318f4665149d0b525a6e44c1"></a>
-template<class T > </td></tr>
-<tr class="memitem:a6c5a1c11318f4665149d0b525a6e44c1"><td class="memTemplItemLeft" align="right" valign="top">double </td><td class="memTemplItemRight" valign="bottom"><b>gsl_covariance</b> (const std::vector< T > &x, const std::vector< T > &y) const </td></tr>
-<tr class="separator:a6c5a1c11318f4665149d0b525a6e44c1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2c61b568a9d06ba43011df3b4e8d94eb"><td class="memTemplParams" colspan="2"><a class="anchor" id="a2c61b568a9d06ba43011df3b4e8d94eb"></a>
-template<class T > </td></tr>
-<tr class="memitem:a2c61b568a9d06ba43011df3b4e8d94eb"><td class="memTemplItemLeft" align="right" valign="top">double </td><td class="memTemplItemRight" valign="bottom"><b>cross_correlation</b> (const std::vector< T > &x, const std::vector< T > &y, int maxdelay, std::vector< T > &z) const </td></tr>
-<tr class="separator:a2c61b568a9d06ba43011df3b4e8d94eb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adcb50455a44d3f98f4304be1d91317fa"><td class="memTemplParams" colspan="2"><a class="anchor" id="adcb50455a44d3f98f4304be1d91317fa"></a>
-template<class T > </td></tr>
-<tr class="memitem:adcb50455a44d3f98f4304be1d91317fa"><td class="memTemplItemLeft" align="right" valign="top">double </td><td class="memTemplItemRight" valign="bottom"><b>linear_regression</b> (const std::vector< T > &x, const std::vector< T > &y, double &c0, double &c1) const </td></tr>
-<tr class="separator:adcb50455a44d3f98f4304be1d91317fa"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a619da9993b8ae8b99389693b8d882427"><td class="memTemplParams" colspan="2"><a class="anchor" id="a619da9993b8ae8b99389693b8d882427"></a>
-template<class T > </td></tr>
-<tr class="memitem:a619da9993b8ae8b99389693b8d882427"><td class="memTemplItemLeft" align="right" valign="top">double </td><td class="memTemplItemRight" valign="bottom"><b>linear_regression_err</b> (const std::vector< T > &x, const std::vector< T > &y, double &c0, double &c1) const </td></tr>
-<tr class="separator:a619da9993b8ae8b99389693b8d882427"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad8f4f62a2f6d3b67adcc6469ab2ce132"><td class="memTemplParams" colspan="2"><a class="anchor" id="ad8f4f62a2f6d3b67adcc6469ab2ce132"></a>
-template<class T > </td></tr>
-<tr class="memitem:ad8f4f62a2f6d3b67adcc6469ab2ce132"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>interpolateNoData</b> (const std::vector< double > &wavelengthIn, const std::vector< T > &input, const std::string &type, std::vector< T > &output, bool verbose=false) const </td></tr>
-<tr class="separator:ad8f4f62a2f6d3b67adcc6469ab2ce132"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4bd027114924c41dfe6546b487e29bd2"><td class="memTemplParams" colspan="2"><a class="anchor" id="a4bd027114924c41dfe6546b487e29bd2"></a>
-template<class T > </td></tr>
-<tr class="memitem:a4bd027114924c41dfe6546b487e29bd2"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>interpolateUp</b> (const std::vector< double > &wavelengthIn, const std::vector< T > &input, const std::vector< double > &wavelengthOut, const std::string &type, std::vector< T > &output, bool verbose=false) const </td></tr>
-<tr class="separator:a4bd027114924c41dfe6546b487e29bd2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1d02c6f5d5f3cc2e6945b129ac0bd0b3"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1d02c6f5d5f3cc2e6945b129ac0bd0b3"></a>
-template<class T > </td></tr>
-<tr class="memitem:a1d02c6f5d5f3cc2e6945b129ac0bd0b3"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>interpolateUp</b> (const std::vector< double > &wavelengthIn, const std::vector< std::vector< T > > &input, const std::vector< double > &wavelengthOut, const std::string &type, std::vector< std::vector< T > > &output, bool verbose=false) const </td></tr>
-<tr class="separator:a1d02c6f5d5f3cc2e6945b129ac0bd0b3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa48b56d8aca769a58f6aff1eb6c7a3b3"><td class="memTemplParams" colspan="2"><a class="anchor" id="aa48b56d8aca769a58f6aff1eb6c7a3b3"></a>
-template<class T > </td></tr>
-<tr class="memitem:aa48b56d8aca769a58f6aff1eb6c7a3b3"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>interpolateUp</b> (const std::vector< T > &input, std::vector< T > &output, int nbin) const </td></tr>
-<tr class="separator:aa48b56d8aca769a58f6aff1eb6c7a3b3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ade77a05b7b782879fa7f611f95882a99"><td class="memTemplParams" colspan="2"><a class="anchor" id="ade77a05b7b782879fa7f611f95882a99"></a>
-template<class T > </td></tr>
-<tr class="memitem:ade77a05b7b782879fa7f611f95882a99"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>nearUp</b> (const std::vector< T > &input, std::vector< T > &output) const </td></tr>
-<tr class="separator:ade77a05b7b782879fa7f611f95882a99"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad4e1a549c60f3f87f021c737f77b1585"><td class="memTemplParams" colspan="2"><a class="anchor" id="ad4e1a549c60f3f87f021c737f77b1585"></a>
-template<class T > </td></tr>
-<tr class="memitem:ad4e1a549c60f3f87f021c737f77b1585"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>interpolateUp</b> (double *input, int dim, std::vector< T > &output, int nbin)</td></tr>
-<tr class="separator:ad4e1a549c60f3f87f021c737f77b1585"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0710e0643fc20f7e1130a812e7b5db85"><td class="memTemplParams" colspan="2"><a class="anchor" id="a0710e0643fc20f7e1130a812e7b5db85"></a>
-template<class T > </td></tr>
-<tr class="memitem:a0710e0643fc20f7e1130a812e7b5db85"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>interpolateDown</b> (const std::vector< T > &input, std::vector< T > &output, int nbin) const </td></tr>
-<tr class="separator:a0710e0643fc20f7e1130a812e7b5db85"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3c6b6b9dd195cdbe19cf0b1082115a42"><td class="memTemplParams" colspan="2"><a class="anchor" id="a3c6b6b9dd195cdbe19cf0b1082115a42"></a>
-template<class T > </td></tr>
-<tr class="memitem:a3c6b6b9dd195cdbe19cf0b1082115a42"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>interpolateDown</b> (double *input, int dim, std::vector< T > &output, int nbin)</td></tr>
-<tr class="separator:a3c6b6b9dd195cdbe19cf0b1082115a42"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a44a92afe5198c7fb844a8d9e540f02d6"><td class="memTemplParams" colspan="2"><a class="anchor" id="a44a92afe5198c7fb844a8d9e540f02d6"></a>
-template<class T > </td></tr>
-<tr class="memitem:a44a92afe5198c7fb844a8d9e540f02d6"><td class="memTemplItemLeft" align="right" valign="top">std::vector< T >::const_iterator </td><td class="memTemplItemRight" valign="bottom"><b>mymin</b> (const std::vector< T > &v, typename std::vector< T >::const_iterator begin, typename std::vector< T >::const_iterator end) const </td></tr>
-<tr class="separator:a44a92afe5198c7fb844a8d9e540f02d6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0ffe5bb780118a467cc301af8620e457"><td class="memTemplParams" colspan="2"><a class="anchor" id="a0ffe5bb780118a467cc301af8620e457"></a>
-template<class T > </td></tr>
-<tr class="memitem:a0ffe5bb780118a467cc301af8620e457"><td class="memTemplItemLeft" align="right" valign="top">std::vector< T >::iterator </td><td class="memTemplItemRight" valign="bottom"><b>mymin</b> (const std::vector< T > &v, typename std::vector< T >::iterator begin, typename std::vector< T >::iterator end) const </td></tr>
-<tr class="separator:a0ffe5bb780118a467cc301af8620e457"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a45a0587e82420f0ad5f40f701ea87d98"><td class="memTemplParams" colspan="2"><a class="anchor" id="a45a0587e82420f0ad5f40f701ea87d98"></a>
-template<class T > </td></tr>
-<tr class="memitem:a45a0587e82420f0ad5f40f701ea87d98"><td class="memTemplItemLeft" align="right" valign="top">std::vector< T >::const_iterator </td><td class="memTemplItemRight" valign="bottom"><b>mymin</b> (const std::vector< T > &v, typename std::vector< T >::const_iterator begin, typename std::vector< T >::const_iterator end, T minConstraint) const </td></tr>
-<tr class="separator:a45a0587e82420f0ad5f40f701ea87d98"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1885a39657b3674bc0f969fed049db41"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1885a39657b3674bc0f969fed049db41"></a>
-template<class T > </td></tr>
-<tr class="memitem:a1885a39657b3674bc0f969fed049db41"><td class="memTemplItemLeft" align="right" valign="top">std::vector< T >::iterator </td><td class="memTemplItemRight" valign="bottom"><b>mymin</b> (const std::vector< T > &v, typename std::vector< T >::iterator begin, typename std::vector< T >::iterator end, T minConstraint) const </td></tr>
-<tr class="separator:a1885a39657b3674bc0f969fed049db41"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2b4d79d285b928b904a5900cd28926ea"><td class="memTemplParams" colspan="2"><a class="anchor" id="a2b4d79d285b928b904a5900cd28926ea"></a>
-template<class T > </td></tr>
-<tr class="memitem:a2b4d79d285b928b904a5900cd28926ea"><td class="memTemplItemLeft" align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><b>mymin</b> (const std::vector< T > &v) const </td></tr>
-<tr class="separator:a2b4d79d285b928b904a5900cd28926ea"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a966f0ef6a163b09c8fa087a39afd58e4"><td class="memTemplParams" colspan="2"><a class="anchor" id="a966f0ef6a163b09c8fa087a39afd58e4"></a>
-template<class T > </td></tr>
-<tr class="memitem:a966f0ef6a163b09c8fa087a39afd58e4"><td class="memTemplItemLeft" align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><b>mymin</b> (const std::vector< T > &v, T minConstraint) const </td></tr>
-<tr class="separator:a966f0ef6a163b09c8fa087a39afd58e4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2287a84f19609ef7ad85ee19f2538550"><td class="memTemplParams" colspan="2"><a class="anchor" id="a2287a84f19609ef7ad85ee19f2538550"></a>
-template<class T > </td></tr>
-<tr class="memitem:a2287a84f19609ef7ad85ee19f2538550"><td class="memTemplItemLeft" align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><b>mymax</b> (const std::vector< T > &v) const </td></tr>
-<tr class="separator:a2287a84f19609ef7ad85ee19f2538550"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afce25dbe10fcceffdd16dbef1f2ffe2c"><td class="memTemplParams" colspan="2"><a class="anchor" id="afce25dbe10fcceffdd16dbef1f2ffe2c"></a>
-template<class T > </td></tr>
-<tr class="memitem:afce25dbe10fcceffdd16dbef1f2ffe2c"><td class="memTemplItemLeft" align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><b>mymax</b> (const std::vector< T > &v, T maxConstraint) const </td></tr>
-<tr class="separator:afce25dbe10fcceffdd16dbef1f2ffe2c"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr class="memitem:ad8186d8cd8ddc827d6cd1356a8fe82b1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad8186d8cd8ddc827d6cd1356a8fe82b1"></a>
-static void </td><td class="memItemRight" valign="bottom"><b>allocAcc</b> (gsl_interp_accel *&acc)</td></tr>
-<tr class="separator:ad8186d8cd8ddc827d6cd1356a8fe82b1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a92d0f32d645bd2d96ab498ab0c48623f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a92d0f32d645bd2d96ab498ab0c48623f"></a>
-static void </td><td class="memItemRight" valign="bottom"><b>getSpline</b> (const std::string type, int size, gsl_spline *&spline)</td></tr>
-<tr class="separator:a92d0f32d645bd2d96ab498ab0c48623f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af3038ffb1cca6dc356ed5204ea7d51ef"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af3038ffb1cca6dc356ed5204ea7d51ef"></a>
-static int </td><td class="memItemRight" valign="bottom"><b>initSpline</b> (gsl_spline *spline, const double *x, const double *y, int size)</td></tr>
-<tr class="separator:af3038ffb1cca6dc356ed5204ea7d51ef"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3d9ed090980860a68917d16a94dd20e9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3d9ed090980860a68917d16a94dd20e9"></a>
-static double </td><td class="memItemRight" valign="bottom"><b>evalSpline</b> (gsl_spline *spline, double x, gsl_interp_accel *acc)</td></tr>
-<tr class="separator:a3d9ed090980860a68917d16a94dd20e9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5b1bd3b14bebd22e61fc58dc45d4c5b7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5b1bd3b14bebd22e61fc58dc45d4c5b7"></a>
-static gsl_rng * </td><td class="memItemRight" valign="bottom"><b>getRandomGenerator</b> (unsigned long int theSeed)</td></tr>
-<tr class="separator:a5b1bd3b14bebd22e61fc58dc45d4c5b7"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="StatFactory_8h_source.html#l00043">43</a> of file <a class="el" href="StatFactory_8h_source.html">StatFactory.h</a>.</p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>/home/kempenep/pktools/src/algorithms/<a class="el" href="StatFactory_8h_source.html">StatFactory.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/closed.png b/doc/html/closed.png
deleted file mode 100644
index 98cc2c9..0000000
Binary files a/doc/html/closed.png and /dev/null differ
diff --git a/doc/html/config_8h_source.html b/doc/html/config_8h_source.html
deleted file mode 100644
index d665fda..0000000
--- a/doc/html/config_8h_source.html
+++ /dev/null
@@ -1,149 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/config.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">/home/kempenep/pktools/config.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/* config.h.  Generated from config.h.in by configure.  */</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">/* config.h.in.  Generated from configure.ac by autoheader.  */</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> </div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">/* Define to 1 if you have the <dlfcn.h> header file. */</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="preprocessor">#define HAVE_DLFCN_H 1</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">/* Define to 1 if GDAL library are available */</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="preprocessor">#define HAVE_GDAL 1</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">/* Define to 1 if you have the <gdal.h> header file. */</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment">/* #undef HAVE_GDAL_H */</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> </div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">/* Define to 1 if GDAL library includes OGR support */</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="preprocessor">#define HAVE_GDAL_OGR 1</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment">/* Define to 1 if you have the <inttypes.h> header file. */</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#define HAVE_INTTYPES_H 1</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">/* Define to 1 if you have the <iostream> header file. */</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#define HAVE_IOSTREAM 1</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="comment">/* Define to 1 if you have the <memory.h> header file. */</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#define HAVE_MEMORY_H 1</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="comment">/* Define to 1 if you have the <stdint.h> header file. */</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#define HAVE_STDINT_H 1</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="comment">/* Define to 1 if you have the <stdlib.h> header file. */</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#define HAVE_STDLIB_H 1</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="comment">/* Define to 1 if you have the <string> header file. */</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="preprocessor">#define HAVE_STRING 1</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="comment">/* Define to 1 if you have the <strings.h> header file. */</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="preprocessor">#define HAVE_STRINGS_H 1</span></div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="comment">/* Define to 1 if you have the <string.h> header file. */</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="preprocessor">#define HAVE_STRING_H 1</span></div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> <span class="comment">/* Define to 1 if you have the <sys/stat.h> header file. */</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="preprocessor">#define HAVE_SYS_STAT_H 1</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span> <span class="comment">/* Define to 1 if you have the <sys/types.h> header file. */</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span> <span class="preprocessor">#define HAVE_SYS_TYPES_H 1</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span> <span class="comment">/* Define to 1 if you have the <unistd.h> header file. */</span></div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span> <span class="preprocessor">#define HAVE_UNISTD_H 1</span></div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span> <span class="comment">/* Define to the sub-directory in which libtool stores uninstalled libraries.</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span> <span class="comment">   */</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span> <span class="preprocessor">#define LT_OBJDIR ".libs/"</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span> <span class="comment">/* Name of package */</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span> <span class="preprocessor">#define PACKAGE "pktools"</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span> <span class="comment">/* Define to the address where bug reports for this package should be sent. */</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span> <span class="preprocessor">#define PACKAGE_BUGREPORT "kempenep at gmail.com"</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span> <span class="comment">/* Define to the full name of this package. */</span></div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span> <span class="preprocessor">#define PACKAGE_NAME "pktools"</span></div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span> <span class="comment">/* Define to the full name and version of this package. */</span></div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span> <span class="preprocessor">#define PACKAGE_STRING "pktools 2.6.6"</span></div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span> <span class="comment">/* Define to the one symbol short name of this package. */</span></div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span> <span class="preprocessor">#define PACKAGE_TARNAME "pktools"</span></div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span> <span class="comment">/* Define to the home page for this package. */</span></div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span> <span class="preprocessor">#define PACKAGE_URL ""</span></div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span> <span class="comment">/* Define to the version of this package. */</span></div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span> <span class="preprocessor">#define PACKAGE_VERSION "2.6.6"</span></div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span> <span class="comment">/* Define to 1 if you have the ANSI C header files. */</span></div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span> <span class="preprocessor">#define STDC_HEADERS 1</span></div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span> <span class="comment">/* Version number of package */</span></div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span> <span class="preprocessor">#define VERSION "2.6.6"</span></div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span> <span class="comment">/* Define to `unsigned int' if <sys/types.h> does not define. */</span></div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span> <span class="comment">/* #undef size_t */</span></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/dir_0af1587c8378955de40f48b4bd1869f0.html b/doc/html/dir_0af1587c8378955de40f48b4bd1869f0.html
deleted file mode 100644
index 9348aa8..0000000
--- a/doc/html/dir_0af1587c8378955de40f48b4bd1869f0.html
+++ /dev/null
@@ -1,90 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/base Directory Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_0af1587c8378955de40f48b4bd1869f0.html">base</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">base Directory Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Directory dependency graph for base:</div>
-<div class="dyncontent">
-<div class="center"><img src="dir_0af1587c8378955de40f48b4bd1869f0_dep.png" border="0" usemap="#dir__0af1587c8378955de40f48b4bd1869f0__dep" alt="/home/kempenep/pktools/src/base"/></div>
-<map name="dir__0af1587c8378955de40f48b4bd1869f0__dep" id="dir__0af1587c8378955de40f48b4bd1869f0__dep">
-<area shape="rect" id="node1" href="dir_0af1587c8378955de40f48b4bd1869f0.html" title="base" alt="" coords="27,52,99,100"/><area shape="rect" id="clust1" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html" title="src" alt="" coords="16,16,109,111"/></map>
-</div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
-Files</h2></td></tr>
-<tr class="memitem:IndexValue_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>IndexValue.h</b> <a href="IndexValue_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:Optionpk_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>Optionpk.h</b> <a href="Optionpk_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pktestOption_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pktestOption.cc</b> <a href="pktestOption_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:PosValue_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>PosValue.h</b> <a href="PosValue_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:Vector2d_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>Vector2d.cc</b> <a href="Vector2d_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:Vector2d_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>Vector2d.h</b> <a href="Vector2d_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/dir_0af1587c8378955de40f48b4bd1869f0_dep.map b/doc/html/dir_0af1587c8378955de40f48b4bd1869f0_dep.map
deleted file mode 100644
index 0a40b5b..0000000
--- a/doc/html/dir_0af1587c8378955de40f48b4bd1869f0_dep.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="/home/kempenep/pktools/src/base" name="/home/kempenep/pktools/src/base">
-<area shape="rect" id="node1" href="dir_0af1587c8378955de40f48b4bd1869f0.html" title="base" alt="" coords="27,52,99,100"/>
-<area shape="rect" id="clust1" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html" title="src" alt="" coords="16,16,109,111"/>
-</map>
diff --git a/doc/html/dir_0af1587c8378955de40f48b4bd1869f0_dep.md5 b/doc/html/dir_0af1587c8378955de40f48b4bd1869f0_dep.md5
deleted file mode 100644
index 5693cb1..0000000
--- a/doc/html/dir_0af1587c8378955de40f48b4bd1869f0_dep.md5
+++ /dev/null
@@ -1 +0,0 @@
-96b7fb30a67002c344e82c7fa8da9774
\ No newline at end of file
diff --git a/doc/html/dir_0af1587c8378955de40f48b4bd1869f0_dep.png b/doc/html/dir_0af1587c8378955de40f48b4bd1869f0_dep.png
deleted file mode 100644
index ae6fa4a..0000000
Binary files a/doc/html/dir_0af1587c8378955de40f48b4bd1869f0_dep.png and /dev/null differ
diff --git a/doc/html/dir_0d45166ba6790a432639a127a727f02c.html b/doc/html/dir_0d45166ba6790a432639a127a727f02c.html
deleted file mode 100644
index 5bc1ebc..0000000
--- a/doc/html/dir_0d45166ba6790a432639a127a727f02c.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/vis_studio/base Directory Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.4</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_457de909e3893805a4d2d0b8c0742bd8.html">vis_studio</a></li><li class="navelem"><a class="el" href="dir_0d45166ba6790a432639a127a727f02c.html">base</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">base Directory Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Directory dependency graph for base:</div>
-<div class="dyncontent">
-<div class="center"><img src="dir_0d45166ba6790a432639a127a727f02c_dep.png" border="0" usemap="#dir__0d45166ba6790a432639a127a727f02c__dep" alt="/home/kempenep/pktools/vis_studio/base"/></div>
-<map name="dir__0d45166ba6790a432639a127a727f02c__dep" id="dir__0d45166ba6790a432639a127a727f02c__dep">
-<area shape="rect" id="node1" href="dir_0d45166ba6790a432639a127a727f02c.html" title="base" alt="" coords="27,52,99,100"/><area shape="rect" id="clust1" href="dir_457de909e3893805a4d2d0b8c0742bd8.html" title="vis_studio" alt="" coords="16,16,109,111"/></map>
-</div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
-Files</h2></td></tr>
-<tr class="memitem:Optionpk_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>Optionpk.cc</b> <a href="Optionpk_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Tue Nov 3 2015 15:58:27 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/dir_0d45166ba6790a432639a127a727f02c_dep.map b/doc/html/dir_0d45166ba6790a432639a127a727f02c_dep.map
deleted file mode 100644
index 202b223..0000000
--- a/doc/html/dir_0d45166ba6790a432639a127a727f02c_dep.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="/home/kempenep/pktools/vis_studio/base" name="/home/kempenep/pktools/vis_studio/base">
-<area shape="rect" id="node1" href="dir_0d45166ba6790a432639a127a727f02c.html" title="base" alt="" coords="27,52,99,100"/>
-<area shape="rect" id="clust1" href="dir_457de909e3893805a4d2d0b8c0742bd8.html" title="vis_studio" alt="" coords="16,16,109,111"/>
-</map>
diff --git a/doc/html/dir_0d45166ba6790a432639a127a727f02c_dep.md5 b/doc/html/dir_0d45166ba6790a432639a127a727f02c_dep.md5
deleted file mode 100644
index c13aecf..0000000
--- a/doc/html/dir_0d45166ba6790a432639a127a727f02c_dep.md5
+++ /dev/null
@@ -1 +0,0 @@
-817dcbce1d237547e8b7e579102e7493
\ No newline at end of file
diff --git a/doc/html/dir_0d45166ba6790a432639a127a727f02c_dep.png b/doc/html/dir_0d45166ba6790a432639a127a727f02c_dep.png
deleted file mode 100644
index 0963e0b..0000000
Binary files a/doc/html/dir_0d45166ba6790a432639a127a727f02c_dep.png and /dev/null differ
diff --git a/doc/html/dir_0f38b5d14ac73b43e2a48a75f9e70be8.html b/doc/html/dir_0f38b5d14ac73b43e2a48a75f9e70be8.html
deleted file mode 100644
index 83ef990..0000000
--- a/doc/html/dir_0f38b5d14ac73b43e2a48a75f9e70be8.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/build-pkcrop_gui-gcc-Debug Directory Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_0f38b5d14ac73b43e2a48a75f9e70be8.html">build-pkcrop_gui-gcc-Debug</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">build-pkcrop_gui-gcc-Debug Directory Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Directory dependency graph for build-pkcrop_gui-gcc-Debug:</div>
-<div class="dyncontent">
-<div class="center"><img src="dir_0f38b5d14ac73b43e2a48a75f9e70be8_dep.png" border="0" usemap="#dir__0f38b5d14ac73b43e2a48a75f9e70be8__dep" alt="/home/kempenep/pktools/qt/build-pkcrop_gui-gcc-Debug"/></div>
-<map name="dir__0f38b5d14ac73b43e2a48a75f9e70be8__dep" id="dir__0f38b5d14ac73b43e2a48a75f9e70be8__dep">
-<area shape="rect" id="node1" href="dir_0f38b5d14ac73b43e2a48a75f9e70be8.html" title="build-pkcrop_gui-gcc-Debug" alt="" coords="27,52,209,100"/><area shape="rect" id="clust1" href="dir_0f63d6441a2c250919e1e8723011eb2f.html" title="qt" alt="" coords="16,16,221,111"/></map>
-</div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
-Files</h2></td></tr>
-<tr class="memitem:build-pkcrop__gui-gcc-Debug_2moc__mainwindow_8cpp"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>moc_mainwindow.cpp</b> <a href="build-pkcrop__gui-gcc-Debug_2moc__mainwindow_8cpp_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:build-pkcrop__gui-gcc-Debug_2ui__mainwindow_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>ui_mainwindow.h</b> <a href="build-pkcrop__gui-gcc-Debug_2ui__mainwindow_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/dir_0f38b5d14ac73b43e2a48a75f9e70be8_dep.map b/doc/html/dir_0f38b5d14ac73b43e2a48a75f9e70be8_dep.map
deleted file mode 100644
index 0fbf82e..0000000
--- a/doc/html/dir_0f38b5d14ac73b43e2a48a75f9e70be8_dep.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="/home/kempenep/pktools/qt/build-pkcrop_gui-gcc-Debug" name="/home/kempenep/pktools/qt/build-pkcrop_gui-gcc-Debug">
-<area shape="rect" id="node1" href="dir_0f38b5d14ac73b43e2a48a75f9e70be8.html" title="build-pkcrop_gui-gcc-Debug" alt="" coords="27,52,209,100"/>
-<area shape="rect" id="clust1" href="dir_0f63d6441a2c250919e1e8723011eb2f.html" title="qt" alt="" coords="16,16,221,111"/>
-</map>
diff --git a/doc/html/dir_0f38b5d14ac73b43e2a48a75f9e70be8_dep.md5 b/doc/html/dir_0f38b5d14ac73b43e2a48a75f9e70be8_dep.md5
deleted file mode 100644
index bb7e13b..0000000
--- a/doc/html/dir_0f38b5d14ac73b43e2a48a75f9e70be8_dep.md5
+++ /dev/null
@@ -1 +0,0 @@
-e723766d52f35e43318ec9e0f0a6bc74
\ No newline at end of file
diff --git a/doc/html/dir_0f38b5d14ac73b43e2a48a75f9e70be8_dep.png b/doc/html/dir_0f38b5d14ac73b43e2a48a75f9e70be8_dep.png
deleted file mode 100644
index eef435f..0000000
Binary files a/doc/html/dir_0f38b5d14ac73b43e2a48a75f9e70be8_dep.png and /dev/null differ
diff --git a/doc/html/dir_0f63d6441a2c250919e1e8723011eb2f.html b/doc/html/dir_0f63d6441a2c250919e1e8723011eb2f.html
deleted file mode 100644
index 23f8b09..0000000
--- a/doc/html/dir_0f63d6441a2c250919e1e8723011eb2f.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt Directory Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">qt Directory Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Directory dependency graph for qt:</div>
-<div class="dyncontent">
-<div class="center"><img src="dir_0f63d6441a2c250919e1e8723011eb2f_dep.png" border="0" usemap="#dir__0f63d6441a2c250919e1e8723011eb2f__dep" alt="/home/kempenep/pktools/qt"/></div>
-<map name="dir__0f63d6441a2c250919e1e8723011eb2f__dep" id="dir__0f63d6441a2c250919e1e8723011eb2f__dep">
-<area shape="rect" id="node2" href="dir_280a0ba2820d23d6529bf494f1ea3ddd.html" title="build-pkcomposite_gui-gcc-Debug" alt="" coords="2587,27,2805,75"/><area shape="rect" id="node3" href="dir_b8eb6544d8d9ffceba16909a7b9d17d7.html" title="build-pkcomposite_gui-gcc-Release" alt="" coords="2334,27,2561,75"/><area shape="rect" id="node4" href="dir_0f38b5d14ac73b43e2a48a75f9e70be8.html" title="build-pkcrop_gui-gcc-Debug" alt="" coords="2127,27,2309,75"/><ar [...]
-</div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a>
-Directories</h2></td></tr>
-<tr class="memitem:dir_280a0ba2820d23d6529bf494f1ea3ddd"><td class="memItemLeft" align="right" valign="top">directory  </td><td class="memItemRight" valign="bottom"><a class="el" href="dir_280a0ba2820d23d6529bf494f1ea3ddd.html">build-pkcomposite_gui-gcc-Debug</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:dir_b8eb6544d8d9ffceba16909a7b9d17d7"><td class="memItemLeft" align="right" valign="top">directory  </td><td class="memItemRight" valign="bottom"><a class="el" href="dir_b8eb6544d8d9ffceba16909a7b9d17d7.html">build-pkcomposite_gui-gcc-Release</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:dir_0f38b5d14ac73b43e2a48a75f9e70be8"><td class="memItemLeft" align="right" valign="top">directory  </td><td class="memItemRight" valign="bottom"><a class="el" href="dir_0f38b5d14ac73b43e2a48a75f9e70be8.html">build-pkcrop_gui-gcc-Debug</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:dir_f92e37ed5759424bff98155847b1034b"><td class="memItemLeft" align="right" valign="top">directory  </td><td class="memItemRight" valign="bottom"><a class="el" href="dir_f92e37ed5759424bff98155847b1034b.html">build-pkcrop_gui-gcc-Release</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:dir_5f1e10fd305b434def78aaf73fd56d60"><td class="memItemLeft" align="right" valign="top">directory  </td><td class="memItemRight" valign="bottom"><a class="el" href="dir_5f1e10fd305b434def78aaf73fd56d60.html">build-pkdiff_gui-gcc-Debug</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:dir_4dfaa1fe1382d1276d1c80b1d5035ade"><td class="memItemLeft" align="right" valign="top">directory  </td><td class="memItemRight" valign="bottom"><a class="el" href="dir_4dfaa1fe1382d1276d1c80b1d5035ade.html">build-pkdiff_gui-gcc-Release</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:dir_d7b2ebecdb5f44d7fa09bdedebc881a7"><td class="memItemLeft" align="right" valign="top">directory  </td><td class="memItemRight" valign="bottom"><a class="el" href="dir_d7b2ebecdb5f44d7fa09bdedebc881a7.html">build-pkextract_gui-gcc-Debug</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:dir_41d189c72498e24f979b227eb8e138b1"><td class="memItemLeft" align="right" valign="top">directory  </td><td class="memItemRight" valign="bottom"><a class="el" href="dir_41d189c72498e24f979b227eb8e138b1.html">build-pkextract_gui-gcc-Release</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:dir_e61db0d85028141ec5940fd7f2a6e0fc"><td class="memItemLeft" align="right" valign="top">directory  </td><td class="memItemRight" valign="bottom"><a class="el" href="dir_e61db0d85028141ec5940fd7f2a6e0fc.html">build-pksvm_gui-gcc-Debug</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:dir_ed1df9621940d6aa1183c365ad1750d2"><td class="memItemLeft" align="right" valign="top">directory  </td><td class="memItemRight" valign="bottom"><a class="el" href="dir_ed1df9621940d6aa1183c365ad1750d2.html">build-pksvm_gui-gcc-Release</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:dir_ab1bbd5a6b4bd6507847335527b029bb"><td class="memItemLeft" align="right" valign="top">directory  </td><td class="memItemRight" valign="bottom"><a class="el" href="dir_ab1bbd5a6b4bd6507847335527b029bb.html">pkcomposite_gui</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:dir_35acdce8930fac877097c845a64519e5"><td class="memItemLeft" align="right" valign="top">directory  </td><td class="memItemRight" valign="bottom"><a class="el" href="dir_35acdce8930fac877097c845a64519e5.html">pkcrop_gui</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:dir_b6b6de371025fb67c6b8623f3d3cd2ce"><td class="memItemLeft" align="right" valign="top">directory  </td><td class="memItemRight" valign="bottom"><a class="el" href="dir_b6b6de371025fb67c6b8623f3d3cd2ce.html">pkdiff_gui</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:dir_2676862852e3d558e3597542a81ecc63"><td class="memItemLeft" align="right" valign="top">directory  </td><td class="memItemRight" valign="bottom"><a class="el" href="dir_2676862852e3d558e3597542a81ecc63.html">pkextract_gui</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:dir_b66e135988e27fdc966ddddb8708f514"><td class="memItemLeft" align="right" valign="top">directory  </td><td class="memItemRight" valign="bottom"><a class="el" href="dir_b66e135988e27fdc966ddddb8708f514.html">pksvm_gui</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/dir_0f63d6441a2c250919e1e8723011eb2f_dep.map b/doc/html/dir_0f63d6441a2c250919e1e8723011eb2f_dep.map
deleted file mode 100644
index b9fdfb1..0000000
--- a/doc/html/dir_0f63d6441a2c250919e1e8723011eb2f_dep.map
+++ /dev/null
@@ -1,18 +0,0 @@
-<map id="/home/kempenep/pktools/qt" name="/home/kempenep/pktools/qt">
-<area shape="rect" id="node2" href="dir_280a0ba2820d23d6529bf494f1ea3ddd.html" title="build-pkcomposite_gui-gcc-Debug" alt="" coords="2587,27,2805,75"/>
-<area shape="rect" id="node3" href="dir_b8eb6544d8d9ffceba16909a7b9d17d7.html" title="build-pkcomposite_gui-gcc-Release" alt="" coords="2334,27,2561,75"/>
-<area shape="rect" id="node4" href="dir_0f38b5d14ac73b43e2a48a75f9e70be8.html" title="build-pkcrop_gui-gcc-Debug" alt="" coords="2127,27,2309,75"/>
-<area shape="rect" id="node5" href="dir_f92e37ed5759424bff98155847b1034b.html" title="build-pkcrop_gui-gcc-Release" alt="" coords="1910,27,2103,75"/>
-<area shape="rect" id="node6" href="dir_5f1e10fd305b434def78aaf73fd56d60.html" title="build-pkdiff_gui-gcc-Debug" alt="" coords="1709,27,1885,75"/>
-<area shape="rect" id="node7" href="dir_4dfaa1fe1382d1276d1c80b1d5035ade.html" title="build-pkdiff_gui-gcc-Release" alt="" coords="1499,27,1685,75"/>
-<area shape="rect" id="node8" href="dir_d7b2ebecdb5f44d7fa09bdedebc881a7.html" title="build-pkextract_gui-gcc-Debug" alt="" coords="1275,27,1473,75"/>
-<area shape="rect" id="node9" href="dir_41d189c72498e24f979b227eb8e138b1.html" title="build-pkextract_gui-gcc-Release" alt="" coords="1043,27,1251,75"/>
-<area shape="rect" id="node10" href="dir_e61db0d85028141ec5940fd7f2a6e0fc.html" title="build-pksvm_gui-gcc-Debug" alt="" coords="835,27,1017,75"/>
-<area shape="rect" id="node11" href="dir_ed1df9621940d6aa1183c365ad1750d2.html" title="build-pksvm_gui-gcc-Release" alt="" coords="618,27,811,75"/>
-<area shape="rect" id="node12" href="dir_ab1bbd5a6b4bd6507847335527b029bb.html" title="pkcomposite_gui" alt="" coords="473,27,593,75"/>
-<area shape="rect" id="node13" href="dir_35acdce8930fac877097c845a64519e5.html" title="pkcrop_gui" alt="" coords="364,27,449,75"/>
-<area shape="rect" id="node14" href="dir_b6b6de371025fb67c6b8623f3d3cd2ce.html" title="pkdiff_gui" alt="" coords="261,27,339,75"/>
-<area shape="rect" id="node15" href="dir_2676862852e3d558e3597542a81ecc63.html" title="pkextract_gui" alt="" coords="137,27,236,75"/>
-<area shape="rect" id="node16" href="dir_b66e135988e27fdc966ddddb8708f514.html" title="pksvm_gui" alt="" coords="27,27,112,75"/>
-<area shape="rect" id="clust1" href="dir_0f63d6441a2c250919e1e8723011eb2f.html" alt="" coords="16,16,2912,85"/>
-</map>
diff --git a/doc/html/dir_0f63d6441a2c250919e1e8723011eb2f_dep.md5 b/doc/html/dir_0f63d6441a2c250919e1e8723011eb2f_dep.md5
deleted file mode 100644
index 6b28b08..0000000
--- a/doc/html/dir_0f63d6441a2c250919e1e8723011eb2f_dep.md5
+++ /dev/null
@@ -1 +0,0 @@
-86fe584ad2c1b5db72576c266e4d690a
\ No newline at end of file
diff --git a/doc/html/dir_0f63d6441a2c250919e1e8723011eb2f_dep.png b/doc/html/dir_0f63d6441a2c250919e1e8723011eb2f_dep.png
deleted file mode 100644
index 01a709e..0000000
Binary files a/doc/html/dir_0f63d6441a2c250919e1e8723011eb2f_dep.png and /dev/null differ
diff --git a/doc/html/dir_2676862852e3d558e3597542a81ecc63.html b/doc/html/dir_2676862852e3d558e3597542a81ecc63.html
deleted file mode 100644
index 5c6193d..0000000
--- a/doc/html/dir_2676862852e3d558e3597542a81ecc63.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/pkextract_gui Directory Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_2676862852e3d558e3597542a81ecc63.html">pkextract_gui</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkextract_gui Directory Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Directory dependency graph for pkextract_gui:</div>
-<div class="dyncontent">
-<div class="center"><img src="dir_2676862852e3d558e3597542a81ecc63_dep.png" border="0" usemap="#dir__2676862852e3d558e3597542a81ecc63__dep" alt="/home/kempenep/pktools/qt/pkextract_gui"/></div>
-<map name="dir__2676862852e3d558e3597542a81ecc63__dep" id="dir__2676862852e3d558e3597542a81ecc63__dep">
-<area shape="rect" id="node1" href="dir_2676862852e3d558e3597542a81ecc63.html" title="pkextract_gui" alt="" coords="26,52,125,100"/><area shape="rect" id="clust1" href="dir_0f63d6441a2c250919e1e8723011eb2f.html" title="qt" alt="" coords="16,16,136,111"/></map>
-</div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
-Files</h2></td></tr>
-<tr class="memitem:pkextract__gui_2main_8cpp"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>main.cpp</b> <a href="pkextract__gui_2main_8cpp_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkextract__gui_2mainwindow_8cpp"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>mainwindow.cpp</b> <a href="pkextract__gui_2mainwindow_8cpp_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkextract__gui_2mainwindow_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>mainwindow.h</b> <a href="pkextract__gui_2mainwindow_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/dir_2676862852e3d558e3597542a81ecc63_dep.map b/doc/html/dir_2676862852e3d558e3597542a81ecc63_dep.map
deleted file mode 100644
index 927ba3f..0000000
--- a/doc/html/dir_2676862852e3d558e3597542a81ecc63_dep.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="/home/kempenep/pktools/qt/pkextract_gui" name="/home/kempenep/pktools/qt/pkextract_gui">
-<area shape="rect" id="node1" href="dir_2676862852e3d558e3597542a81ecc63.html" title="pkextract_gui" alt="" coords="26,52,125,100"/>
-<area shape="rect" id="clust1" href="dir_0f63d6441a2c250919e1e8723011eb2f.html" title="qt" alt="" coords="16,16,136,111"/>
-</map>
diff --git a/doc/html/dir_2676862852e3d558e3597542a81ecc63_dep.md5 b/doc/html/dir_2676862852e3d558e3597542a81ecc63_dep.md5
deleted file mode 100644
index edf9772..0000000
--- a/doc/html/dir_2676862852e3d558e3597542a81ecc63_dep.md5
+++ /dev/null
@@ -1 +0,0 @@
-20b99824965ea0ddc79ad9ccbf211999
\ No newline at end of file
diff --git a/doc/html/dir_2676862852e3d558e3597542a81ecc63_dep.png b/doc/html/dir_2676862852e3d558e3597542a81ecc63_dep.png
deleted file mode 100644
index 4470350..0000000
Binary files a/doc/html/dir_2676862852e3d558e3597542a81ecc63_dep.png and /dev/null differ
diff --git a/doc/html/dir_280a0ba2820d23d6529bf494f1ea3ddd.html b/doc/html/dir_280a0ba2820d23d6529bf494f1ea3ddd.html
deleted file mode 100644
index 1ea5743..0000000
--- a/doc/html/dir_280a0ba2820d23d6529bf494f1ea3ddd.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/build-pkcomposite_gui-gcc-Debug Directory Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_280a0ba2820d23d6529bf494f1ea3ddd.html">build-pkcomposite_gui-gcc-Debug</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">build-pkcomposite_gui-gcc-Debug Directory Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Directory dependency graph for build-pkcomposite_gui-gcc-Debug:</div>
-<div class="dyncontent">
-<div class="center"><img src="dir_280a0ba2820d23d6529bf494f1ea3ddd_dep.png" border="0" usemap="#dir__280a0ba2820d23d6529bf494f1ea3ddd__dep" alt="/home/kempenep/pktools/qt/build-pkcomposite_gui-gcc-Debug"/></div>
-<map name="dir__280a0ba2820d23d6529bf494f1ea3ddd__dep" id="dir__280a0ba2820d23d6529bf494f1ea3ddd__dep">
-<area shape="rect" id="node1" href="dir_280a0ba2820d23d6529bf494f1ea3ddd.html" title="build-pkcomposite_gui-gcc-Debug" alt="" coords="27,52,245,100"/><area shape="rect" id="clust1" href="dir_0f63d6441a2c250919e1e8723011eb2f.html" title="qt" alt="" coords="16,16,256,111"/></map>
-</div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
-Files</h2></td></tr>
-<tr class="memitem:build-pkcomposite__gui-gcc-Debug_2moc__mainwindow_8cpp"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>moc_mainwindow.cpp</b> <a href="build-pkcomposite__gui-gcc-Debug_2moc__mainwindow_8cpp_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:build-pkcomposite__gui-gcc-Debug_2ui__mainwindow_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>ui_mainwindow.h</b> <a href="build-pkcomposite__gui-gcc-Debug_2ui__mainwindow_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/dir_280a0ba2820d23d6529bf494f1ea3ddd_dep.map b/doc/html/dir_280a0ba2820d23d6529bf494f1ea3ddd_dep.map
deleted file mode 100644
index 75f11ed..0000000
--- a/doc/html/dir_280a0ba2820d23d6529bf494f1ea3ddd_dep.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="/home/kempenep/pktools/qt/build-pkcomposite_gui-gcc-Debug" name="/home/kempenep/pktools/qt/build-pkcomposite_gui-gcc-Debug">
-<area shape="rect" id="node1" href="dir_280a0ba2820d23d6529bf494f1ea3ddd.html" title="build-pkcomposite_gui-gcc-Debug" alt="" coords="27,52,245,100"/>
-<area shape="rect" id="clust1" href="dir_0f63d6441a2c250919e1e8723011eb2f.html" title="qt" alt="" coords="16,16,256,111"/>
-</map>
diff --git a/doc/html/dir_280a0ba2820d23d6529bf494f1ea3ddd_dep.md5 b/doc/html/dir_280a0ba2820d23d6529bf494f1ea3ddd_dep.md5
deleted file mode 100644
index ff5ff88..0000000
--- a/doc/html/dir_280a0ba2820d23d6529bf494f1ea3ddd_dep.md5
+++ /dev/null
@@ -1 +0,0 @@
-bdbf2220911293af1ff4a33a748e52e8
\ No newline at end of file
diff --git a/doc/html/dir_280a0ba2820d23d6529bf494f1ea3ddd_dep.png b/doc/html/dir_280a0ba2820d23d6529bf494f1ea3ddd_dep.png
deleted file mode 100644
index c74316c..0000000
Binary files a/doc/html/dir_280a0ba2820d23d6529bf494f1ea3ddd_dep.png and /dev/null differ
diff --git a/doc/html/dir_35acdce8930fac877097c845a64519e5.html b/doc/html/dir_35acdce8930fac877097c845a64519e5.html
deleted file mode 100644
index 04edc74..0000000
--- a/doc/html/dir_35acdce8930fac877097c845a64519e5.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/pkcrop_gui Directory Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_35acdce8930fac877097c845a64519e5.html">pkcrop_gui</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkcrop_gui Directory Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Directory dependency graph for pkcrop_gui:</div>
-<div class="dyncontent">
-<div class="center"><img src="dir_35acdce8930fac877097c845a64519e5_dep.png" border="0" usemap="#dir__35acdce8930fac877097c845a64519e5__dep" alt="/home/kempenep/pktools/qt/pkcrop_gui"/></div>
-<map name="dir__35acdce8930fac877097c845a64519e5__dep" id="dir__35acdce8930fac877097c845a64519e5__dep">
-<area shape="rect" id="node1" href="dir_35acdce8930fac877097c845a64519e5.html" title="pkcrop_gui" alt="" coords="27,52,112,100"/><area shape="rect" id="clust1" href="dir_0f63d6441a2c250919e1e8723011eb2f.html" title="qt" alt="" coords="16,16,123,111"/></map>
-</div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
-Files</h2></td></tr>
-<tr class="memitem:pkcrop__gui_2main_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>main.cc</b> <a href="pkcrop__gui_2main_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkcrop__gui_2mainwindow_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>mainwindow.cc</b> <a href="pkcrop__gui_2mainwindow_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkcrop__gui_2mainwindow_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>mainwindow.h</b> <a href="pkcrop__gui_2mainwindow_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/dir_35acdce8930fac877097c845a64519e5_dep.map b/doc/html/dir_35acdce8930fac877097c845a64519e5_dep.map
deleted file mode 100644
index 95956d8..0000000
--- a/doc/html/dir_35acdce8930fac877097c845a64519e5_dep.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="/home/kempenep/pktools/qt/pkcrop_gui" name="/home/kempenep/pktools/qt/pkcrop_gui">
-<area shape="rect" id="node1" href="dir_35acdce8930fac877097c845a64519e5.html" title="pkcrop_gui" alt="" coords="27,52,112,100"/>
-<area shape="rect" id="clust1" href="dir_0f63d6441a2c250919e1e8723011eb2f.html" title="qt" alt="" coords="16,16,123,111"/>
-</map>
diff --git a/doc/html/dir_35acdce8930fac877097c845a64519e5_dep.md5 b/doc/html/dir_35acdce8930fac877097c845a64519e5_dep.md5
deleted file mode 100644
index 4ca2d02..0000000
--- a/doc/html/dir_35acdce8930fac877097c845a64519e5_dep.md5
+++ /dev/null
@@ -1 +0,0 @@
-12f089a77d3c4c4dc49c29d3db07f16a
\ No newline at end of file
diff --git a/doc/html/dir_35acdce8930fac877097c845a64519e5_dep.png b/doc/html/dir_35acdce8930fac877097c845a64519e5_dep.png
deleted file mode 100644
index 7e786e0..0000000
Binary files a/doc/html/dir_35acdce8930fac877097c845a64519e5_dep.png and /dev/null differ
diff --git a/doc/html/dir_41d189c72498e24f979b227eb8e138b1.html b/doc/html/dir_41d189c72498e24f979b227eb8e138b1.html
deleted file mode 100644
index 700e8a8..0000000
--- a/doc/html/dir_41d189c72498e24f979b227eb8e138b1.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/build-pkextract_gui-gcc-Release Directory Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_41d189c72498e24f979b227eb8e138b1.html">build-pkextract_gui-gcc-Release</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">build-pkextract_gui-gcc-Release Directory Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Directory dependency graph for build-pkextract_gui-gcc-Release:</div>
-<div class="dyncontent">
-<div class="center"><img src="dir_41d189c72498e24f979b227eb8e138b1_dep.png" border="0" usemap="#dir__41d189c72498e24f979b227eb8e138b1__dep" alt="/home/kempenep/pktools/qt/build-pkextract_gui-gcc-Release"/></div>
-<map name="dir__41d189c72498e24f979b227eb8e138b1__dep" id="dir__41d189c72498e24f979b227eb8e138b1__dep">
-<area shape="rect" id="node1" href="dir_41d189c72498e24f979b227eb8e138b1.html" title="build-pkextract_gui-gcc-Release" alt="" coords="27,52,235,100"/><area shape="rect" id="clust1" href="dir_0f63d6441a2c250919e1e8723011eb2f.html" title="qt" alt="" coords="16,16,245,111"/></map>
-</div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
-Files</h2></td></tr>
-<tr class="memitem:build-pkextract__gui-gcc-Release_2moc__mainwindow_8cpp"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>moc_mainwindow.cpp</b> <a href="build-pkextract__gui-gcc-Release_2moc__mainwindow_8cpp_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:build-pkextract__gui-gcc-Release_2ui__mainwindow_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>ui_mainwindow.h</b> <a href="build-pkextract__gui-gcc-Release_2ui__mainwindow_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/dir_41d189c72498e24f979b227eb8e138b1_dep.map b/doc/html/dir_41d189c72498e24f979b227eb8e138b1_dep.map
deleted file mode 100644
index d3edc8f..0000000
--- a/doc/html/dir_41d189c72498e24f979b227eb8e138b1_dep.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="/home/kempenep/pktools/qt/build-pkextract_gui-gcc-Release" name="/home/kempenep/pktools/qt/build-pkextract_gui-gcc-Release">
-<area shape="rect" id="node1" href="dir_41d189c72498e24f979b227eb8e138b1.html" title="build-pkextract_gui-gcc-Release" alt="" coords="27,52,235,100"/>
-<area shape="rect" id="clust1" href="dir_0f63d6441a2c250919e1e8723011eb2f.html" title="qt" alt="" coords="16,16,245,111"/>
-</map>
diff --git a/doc/html/dir_41d189c72498e24f979b227eb8e138b1_dep.md5 b/doc/html/dir_41d189c72498e24f979b227eb8e138b1_dep.md5
deleted file mode 100644
index 95c0c65..0000000
--- a/doc/html/dir_41d189c72498e24f979b227eb8e138b1_dep.md5
+++ /dev/null
@@ -1 +0,0 @@
-09fb1730371733387642ca424f55bac5
\ No newline at end of file
diff --git a/doc/html/dir_41d189c72498e24f979b227eb8e138b1_dep.png b/doc/html/dir_41d189c72498e24f979b227eb8e138b1_dep.png
deleted file mode 100644
index 37206f7..0000000
Binary files a/doc/html/dir_41d189c72498e24f979b227eb8e138b1_dep.png and /dev/null differ
diff --git a/doc/html/dir_457de909e3893805a4d2d0b8c0742bd8.html b/doc/html/dir_457de909e3893805a4d2d0b8c0742bd8.html
deleted file mode 100644
index 6ad804e..0000000
--- a/doc/html/dir_457de909e3893805a4d2d0b8c0742bd8.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/vis_studio Directory Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.4</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_457de909e3893805a4d2d0b8c0742bd8.html">vis_studio</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">vis_studio Directory Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Directory dependency graph for vis_studio:</div>
-<div class="dyncontent">
-<div class="center"><img src="dir_457de909e3893805a4d2d0b8c0742bd8_dep.png" border="0" usemap="#dir__457de909e3893805a4d2d0b8c0742bd8__dep" alt="/home/kempenep/pktools/vis_studio"/></div>
-<map name="dir__457de909e3893805a4d2d0b8c0742bd8__dep" id="dir__457de909e3893805a4d2d0b8c0742bd8__dep">
-<area shape="rect" id="node2" href="dir_0d45166ba6790a432639a127a727f02c.html" title="base" alt="" coords="27,27,99,75"/><area shape="rect" id="clust1" href="dir_457de909e3893805a4d2d0b8c0742bd8.html" alt="" coords="16,16,216,85"/></map>
-</div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a>
-Directories</h2></td></tr>
-<tr class="memitem:dir_0d45166ba6790a432639a127a727f02c"><td class="memItemLeft" align="right" valign="top">directory  </td><td class="memItemRight" valign="bottom"><a class="el" href="dir_0d45166ba6790a432639a127a727f02c.html">base</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
-Files</h2></td></tr>
-<tr class="memitem:vis__studio_2config_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>config.h</b> <a href="vis__studio_2config_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Tue Nov 3 2015 15:58:27 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/dir_457de909e3893805a4d2d0b8c0742bd8_dep.map b/doc/html/dir_457de909e3893805a4d2d0b8c0742bd8_dep.map
deleted file mode 100644
index 7e65bb3..0000000
--- a/doc/html/dir_457de909e3893805a4d2d0b8c0742bd8_dep.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="/home/kempenep/pktools/vis_studio" name="/home/kempenep/pktools/vis_studio">
-<area shape="rect" id="node2" href="dir_0d45166ba6790a432639a127a727f02c.html" title="base" alt="" coords="27,27,99,75"/>
-<area shape="rect" id="clust1" href="dir_457de909e3893805a4d2d0b8c0742bd8.html" alt="" coords="16,16,216,85"/>
-</map>
diff --git a/doc/html/dir_457de909e3893805a4d2d0b8c0742bd8_dep.md5 b/doc/html/dir_457de909e3893805a4d2d0b8c0742bd8_dep.md5
deleted file mode 100644
index f9d150c..0000000
--- a/doc/html/dir_457de909e3893805a4d2d0b8c0742bd8_dep.md5
+++ /dev/null
@@ -1 +0,0 @@
-de1c76cb70f2e7f410a90a7a5c7479f5
\ No newline at end of file
diff --git a/doc/html/dir_457de909e3893805a4d2d0b8c0742bd8_dep.png b/doc/html/dir_457de909e3893805a4d2d0b8c0742bd8_dep.png
deleted file mode 100644
index c628e66..0000000
Binary files a/doc/html/dir_457de909e3893805a4d2d0b8c0742bd8_dep.png and /dev/null differ
diff --git a/doc/html/dir_4dfaa1fe1382d1276d1c80b1d5035ade.html b/doc/html/dir_4dfaa1fe1382d1276d1c80b1d5035ade.html
deleted file mode 100644
index 5bb7e40..0000000
--- a/doc/html/dir_4dfaa1fe1382d1276d1c80b1d5035ade.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/build-pkdiff_gui-gcc-Release Directory Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_4dfaa1fe1382d1276d1c80b1d5035ade.html">build-pkdiff_gui-gcc-Release</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">build-pkdiff_gui-gcc-Release Directory Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Directory dependency graph for build-pkdiff_gui-gcc-Release:</div>
-<div class="dyncontent">
-<div class="center"><img src="dir_4dfaa1fe1382d1276d1c80b1d5035ade_dep.png" border="0" usemap="#dir__4dfaa1fe1382d1276d1c80b1d5035ade__dep" alt="/home/kempenep/pktools/qt/build-pkdiff_gui-gcc-Release"/></div>
-<map name="dir__4dfaa1fe1382d1276d1c80b1d5035ade__dep" id="dir__4dfaa1fe1382d1276d1c80b1d5035ade__dep">
-<area shape="rect" id="node1" href="dir_4dfaa1fe1382d1276d1c80b1d5035ade.html" title="build-pkdiff_gui-gcc-Release" alt="" coords="27,52,213,100"/><area shape="rect" id="clust1" href="dir_0f63d6441a2c250919e1e8723011eb2f.html" title="qt" alt="" coords="16,16,224,111"/></map>
-</div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
-Files</h2></td></tr>
-<tr class="memitem:build-pkdiff__gui-gcc-Release_2moc__mainwindow_8cpp"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>moc_mainwindow.cpp</b> <a href="build-pkdiff__gui-gcc-Release_2moc__mainwindow_8cpp_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:build-pkdiff__gui-gcc-Release_2ui__mainwindow_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>ui_mainwindow.h</b> <a href="build-pkdiff__gui-gcc-Release_2ui__mainwindow_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/dir_4dfaa1fe1382d1276d1c80b1d5035ade_dep.map b/doc/html/dir_4dfaa1fe1382d1276d1c80b1d5035ade_dep.map
deleted file mode 100644
index 33acb15..0000000
--- a/doc/html/dir_4dfaa1fe1382d1276d1c80b1d5035ade_dep.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="/home/kempenep/pktools/qt/build-pkdiff_gui-gcc-Release" name="/home/kempenep/pktools/qt/build-pkdiff_gui-gcc-Release">
-<area shape="rect" id="node1" href="dir_4dfaa1fe1382d1276d1c80b1d5035ade.html" title="build-pkdiff_gui-gcc-Release" alt="" coords="27,52,213,100"/>
-<area shape="rect" id="clust1" href="dir_0f63d6441a2c250919e1e8723011eb2f.html" title="qt" alt="" coords="16,16,224,111"/>
-</map>
diff --git a/doc/html/dir_4dfaa1fe1382d1276d1c80b1d5035ade_dep.md5 b/doc/html/dir_4dfaa1fe1382d1276d1c80b1d5035ade_dep.md5
deleted file mode 100644
index 30f0f9e..0000000
--- a/doc/html/dir_4dfaa1fe1382d1276d1c80b1d5035ade_dep.md5
+++ /dev/null
@@ -1 +0,0 @@
-5972fef120262b31c6ded442cc052402
\ No newline at end of file
diff --git a/doc/html/dir_4dfaa1fe1382d1276d1c80b1d5035ade_dep.png b/doc/html/dir_4dfaa1fe1382d1276d1c80b1d5035ade_dep.png
deleted file mode 100644
index 876f286..0000000
Binary files a/doc/html/dir_4dfaa1fe1382d1276d1c80b1d5035ade_dep.png and /dev/null differ
diff --git a/doc/html/dir_53adf0b982dc8545998aae3f283a5a58.html b/doc/html/dir_53adf0b982dc8545998aae3f283a5a58.html
deleted file mode 100644
index a9575da..0000000
--- a/doc/html/dir_53adf0b982dc8545998aae3f283a5a58.html
+++ /dev/null
@@ -1,155 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps Directory Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">apps Directory Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Directory dependency graph for apps:</div>
-<div class="dyncontent">
-<div class="center"><img src="dir_53adf0b982dc8545998aae3f283a5a58_dep.png" border="0" usemap="#dir__53adf0b982dc8545998aae3f283a5a58__dep" alt="/home/kempenep/pktools/src/apps"/></div>
-<map name="dir__53adf0b982dc8545998aae3f283a5a58__dep" id="dir__53adf0b982dc8545998aae3f283a5a58__dep">
-<area shape="rect" id="node2" href="dir_e28b2035b152bb51229fe7a0fca4e376.html" title="not_used" alt="" coords="37,63,111,111"/><area shape="rect" id="clust2" href="dir_53adf0b982dc8545998aae3f283a5a58.html" alt="" coords="27,52,219,121"/><area shape="rect" id="clust1" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html" title="src" alt="" coords="16,16,229,132"/></map>
-</div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a>
-Directories</h2></td></tr>
-<tr class="memitem:dir_e28b2035b152bb51229fe7a0fca4e376"><td class="memItemLeft" align="right" valign="top">directory  </td><td class="memItemRight" valign="bottom"><a class="el" href="dir_e28b2035b152bb51229fe7a0fca4e376.html">not_used</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
-Files</h2></td></tr>
-<tr class="memitem:pkann_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkann.cc</b> <a href="pkann_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkascii2img_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkascii2img.cc</b> <a href="pkascii2img_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkascii2ogr_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkascii2ogr.cc</b> <a href="pkascii2ogr_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkcomposite_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkcomposite.cc</b> <a href="pkcomposite_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkcreatect_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkcreatect.cc</b> <a href="pkcreatect_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkcrop_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkcrop.cc</b> <a href="pkcrop_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkdiff_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkdiff.cc</b> <a href="pkdiff_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkdsm2shadow_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkdsm2shadow.cc</b> <a href="pkdsm2shadow_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkdumpimg_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkdumpimg.cc</b> <a href="pkdumpimg_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkdumpogr_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkdumpogr.cc</b> <a href="pkdumpogr_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkdumpogr_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkdumpogr.h</b> <a href="pkdumpogr_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkegcs_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkegcs.cc</b> <a href="pkegcs_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkextract_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkextract.cc</b> <a href="pkextract_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkfillnodata_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkfillnodata.cc</b> <a href="pkfillnodata_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkfilter_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkfilter.cc</b> <a href="pkfilter_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkfilterascii_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkfilterascii.cc</b> <a href="pkfilterascii_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkfilterdem_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkfilterdem.cc</b> <a href="pkfilterdem_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkfsann_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkfsann.cc</b> <a href="pkfsann_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkfsann_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkfsann.h</b> <a href="pkfsann_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkfssvm_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkfssvm.cc</b> <a href="pkfssvm_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkgetmask_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkgetmask.cc</b> <a href="pkgetmask_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkinfo_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkinfo.cc</b> <a href="pkinfo_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkkalman_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkkalman.cc</b> <a href="pkkalman_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pklas2img_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pklas2img.cc</b> <a href="pklas2img_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkoptsvm_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkoptsvm.cc</b> <a href="pkoptsvm_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkpolygonize_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkpolygonize.cc</b> <a href="pkpolygonize_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkreclass_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkreclass.cc</b> <a href="pkreclass_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkregann_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkregann.cc</b> <a href="pkregann_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pksensormodel_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pksensormodel.h</b> <a href="pksensormodel_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pksetmask_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pksetmask.cc</b> <a href="pksetmask_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pksieve_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pksieve.cc</b> <a href="pksieve_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkstat_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkstat.cc</b> <a href="pkstat_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkstatascii_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkstatascii.cc</b> <a href="pkstatascii_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkstatogr_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkstatogr.cc</b> <a href="pkstatogr_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkstatprofile_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkstatprofile.cc</b> <a href="pkstatprofile_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pksvm_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pksvm.cc</b> <a href="pksvm_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/dir_53adf0b982dc8545998aae3f283a5a58_dep.map b/doc/html/dir_53adf0b982dc8545998aae3f283a5a58_dep.map
deleted file mode 100644
index 51e2f7c..0000000
--- a/doc/html/dir_53adf0b982dc8545998aae3f283a5a58_dep.map
+++ /dev/null
@@ -1,5 +0,0 @@
-<map id="/home/kempenep/pktools/src/apps" name="/home/kempenep/pktools/src/apps">
-<area shape="rect" id="node2" href="dir_e28b2035b152bb51229fe7a0fca4e376.html" title="not_used" alt="" coords="37,63,111,111"/>
-<area shape="rect" id="clust2" href="dir_53adf0b982dc8545998aae3f283a5a58.html" alt="" coords="27,52,219,121"/>
-<area shape="rect" id="clust1" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html" title="src" alt="" coords="16,16,229,132"/>
-</map>
diff --git a/doc/html/dir_53adf0b982dc8545998aae3f283a5a58_dep.md5 b/doc/html/dir_53adf0b982dc8545998aae3f283a5a58_dep.md5
deleted file mode 100644
index 4f67286..0000000
--- a/doc/html/dir_53adf0b982dc8545998aae3f283a5a58_dep.md5
+++ /dev/null
@@ -1 +0,0 @@
-b57292cdcfa82f3220b7290682271e9e
\ No newline at end of file
diff --git a/doc/html/dir_53adf0b982dc8545998aae3f283a5a58_dep.png b/doc/html/dir_53adf0b982dc8545998aae3f283a5a58_dep.png
deleted file mode 100644
index e10ec40..0000000
Binary files a/doc/html/dir_53adf0b982dc8545998aae3f283a5a58_dep.png and /dev/null differ
diff --git a/doc/html/dir_5785acc8d2e42f8795bdbe936856f26d.html b/doc/html/dir_5785acc8d2e42f8795bdbe936856f26d.html
deleted file mode 100644
index 26e429b..0000000
--- a/doc/html/dir_5785acc8d2e42f8795bdbe936856f26d.html
+++ /dev/null
@@ -1,121 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis Directory Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">qgis Directory Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Directory dependency graph for qgis:</div>
-<div class="dyncontent">
-<div class="center"><img src="dir_5785acc8d2e42f8795bdbe936856f26d_dep.png" border="0" usemap="#dir__5785acc8d2e42f8795bdbe936856f26d__dep" alt="/home/kempenep/pktools/qgis"/></div>
-<map name="dir__5785acc8d2e42f8795bdbe936856f26d__dep" id="dir__5785acc8d2e42f8795bdbe936856f26d__dep">
-<area shape="rect" id="node2" href="dir_b7cc22b4453454f1e686d9a2e78d988d.html" title="pktools" alt="" coords="27,27,99,75"/><area shape="rect" id="clust1" href="dir_5785acc8d2e42f8795bdbe936856f26d.html" alt="" coords="16,16,205,85"/></map>
-</div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a>
-Directories</h2></td></tr>
-<tr class="memitem:dir_b7cc22b4453454f1e686d9a2e78d988d"><td class="memItemLeft" align="right" valign="top">directory  </td><td class="memItemRight" valign="bottom"><a class="el" href="dir_b7cc22b4453454f1e686d9a2e78d988d.html">pktools</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
-Files</h2></td></tr>
-<tr class="memitem:____init_____8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>__init__.py</b> <a href="____init_____8py_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkcomposite_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkcomposite.py</b> <a href="pkcomposite_8py_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkcrop_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkcrop.py</b> <a href="pkcrop_8py_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkdiff__accuracy_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkdiff_accuracy.py</b> <a href="pkdiff__accuracy_8py_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkextract_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkextract.py</b> <a href="pkextract_8py_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkextract__grid_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkextract_grid.py</b> <a href="pkextract__grid_8py_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkextract__random_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkextract_random.py</b> <a href="pkextract__random_8py_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkfilter__spatial_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkfilter_spatial.py</b> <a href="pkfilter__spatial_8py_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkfilter__spectral_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkfilter_spectral.py</b> <a href="pkfilter__spectral_8py_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkfilterdem_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkfilterdem.py</b> <a href="pkfilterdem_8py_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkgetmask_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkgetmask.py</b> <a href="pkgetmask_8py_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pklas2img_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pklas2img.py</b> <a href="pklas2img_8py_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkreclass_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkreclass.py</b> <a href="pkreclass_8py_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pksetmask_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pksetmask.py</b> <a href="pksetmask_8py_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pksvm_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pksvm.py</b> <a href="pksvm_8py_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pktoolsAlgorithm_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pktoolsAlgorithm.py</b> <a href="pktoolsAlgorithm_8py_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pktoolsAlgorithmProvider_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pktoolsAlgorithmProvider.py</b> <a href="pktoolsAlgorithmProvider_8py_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pktoolsUtils_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pktoolsUtils.py</b> <a href="pktoolsUtils_8py_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ProcessingPktoolsPlugin_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>ProcessingPktoolsPlugin.py</b> <a href="ProcessingPktoolsPlugin_8py_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/dir_5785acc8d2e42f8795bdbe936856f26d_dep.map b/doc/html/dir_5785acc8d2e42f8795bdbe936856f26d_dep.map
deleted file mode 100644
index 6c892ab..0000000
--- a/doc/html/dir_5785acc8d2e42f8795bdbe936856f26d_dep.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="/home/kempenep/pktools/qgis" name="/home/kempenep/pktools/qgis">
-<area shape="rect" id="node2" href="dir_b7cc22b4453454f1e686d9a2e78d988d.html" title="pktools" alt="" coords="27,27,99,75"/>
-<area shape="rect" id="clust1" href="dir_5785acc8d2e42f8795bdbe936856f26d.html" alt="" coords="16,16,205,85"/>
-</map>
diff --git a/doc/html/dir_5785acc8d2e42f8795bdbe936856f26d_dep.md5 b/doc/html/dir_5785acc8d2e42f8795bdbe936856f26d_dep.md5
deleted file mode 100644
index 12c1869..0000000
--- a/doc/html/dir_5785acc8d2e42f8795bdbe936856f26d_dep.md5
+++ /dev/null
@@ -1 +0,0 @@
-5a8c8ae158394bd02678e26657f8b391
\ No newline at end of file
diff --git a/doc/html/dir_5785acc8d2e42f8795bdbe936856f26d_dep.png b/doc/html/dir_5785acc8d2e42f8795bdbe936856f26d_dep.png
deleted file mode 100644
index 0543d94..0000000
Binary files a/doc/html/dir_5785acc8d2e42f8795bdbe936856f26d_dep.png and /dev/null differ
diff --git a/doc/html/dir_5f1e10fd305b434def78aaf73fd56d60.html b/doc/html/dir_5f1e10fd305b434def78aaf73fd56d60.html
deleted file mode 100644
index e26f61a..0000000
--- a/doc/html/dir_5f1e10fd305b434def78aaf73fd56d60.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/build-pkdiff_gui-gcc-Debug Directory Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_5f1e10fd305b434def78aaf73fd56d60.html">build-pkdiff_gui-gcc-Debug</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">build-pkdiff_gui-gcc-Debug Directory Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Directory dependency graph for build-pkdiff_gui-gcc-Debug:</div>
-<div class="dyncontent">
-<div class="center"><img src="dir_5f1e10fd305b434def78aaf73fd56d60_dep.png" border="0" usemap="#dir__5f1e10fd305b434def78aaf73fd56d60__dep" alt="/home/kempenep/pktools/qt/build-pkdiff_gui-gcc-Debug"/></div>
-<map name="dir__5f1e10fd305b434def78aaf73fd56d60__dep" id="dir__5f1e10fd305b434def78aaf73fd56d60__dep">
-<area shape="rect" id="node1" href="dir_5f1e10fd305b434def78aaf73fd56d60.html" title="build-pkdiff_gui-gcc-Debug" alt="" coords="27,52,203,100"/><area shape="rect" id="clust1" href="dir_0f63d6441a2c250919e1e8723011eb2f.html" title="qt" alt="" coords="16,16,213,111"/></map>
-</div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
-Files</h2></td></tr>
-<tr class="memitem:build-pkdiff__gui-gcc-Debug_2moc__mainwindow_8cpp"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>moc_mainwindow.cpp</b> <a href="build-pkdiff__gui-gcc-Debug_2moc__mainwindow_8cpp_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:build-pkdiff__gui-gcc-Debug_2ui__mainwindow_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>ui_mainwindow.h</b> <a href="build-pkdiff__gui-gcc-Debug_2ui__mainwindow_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/dir_5f1e10fd305b434def78aaf73fd56d60_dep.map b/doc/html/dir_5f1e10fd305b434def78aaf73fd56d60_dep.map
deleted file mode 100644
index 07a30ef..0000000
--- a/doc/html/dir_5f1e10fd305b434def78aaf73fd56d60_dep.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="/home/kempenep/pktools/qt/build-pkdiff_gui-gcc-Debug" name="/home/kempenep/pktools/qt/build-pkdiff_gui-gcc-Debug">
-<area shape="rect" id="node1" href="dir_5f1e10fd305b434def78aaf73fd56d60.html" title="build-pkdiff_gui-gcc-Debug" alt="" coords="27,52,203,100"/>
-<area shape="rect" id="clust1" href="dir_0f63d6441a2c250919e1e8723011eb2f.html" title="qt" alt="" coords="16,16,213,111"/>
-</map>
diff --git a/doc/html/dir_5f1e10fd305b434def78aaf73fd56d60_dep.md5 b/doc/html/dir_5f1e10fd305b434def78aaf73fd56d60_dep.md5
deleted file mode 100644
index 400dd63..0000000
--- a/doc/html/dir_5f1e10fd305b434def78aaf73fd56d60_dep.md5
+++ /dev/null
@@ -1 +0,0 @@
-016a5f9d193cc948d4dc0ce95705fa52
\ No newline at end of file
diff --git a/doc/html/dir_5f1e10fd305b434def78aaf73fd56d60_dep.png b/doc/html/dir_5f1e10fd305b434def78aaf73fd56d60_dep.png
deleted file mode 100644
index 0abdcbd..0000000
Binary files a/doc/html/dir_5f1e10fd305b434def78aaf73fd56d60_dep.png and /dev/null differ
diff --git a/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html
deleted file mode 100644
index c24e74a..0000000
--- a/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html
+++ /dev/null
@@ -1,90 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src Directory Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">src Directory Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Directory dependency graph for src:</div>
-<div class="dyncontent">
-<div class="center"><img src="dir_68267d1309a1af8e8297ef4c3efbcdba_dep.png" border="0" usemap="#dir__68267d1309a1af8e8297ef4c3efbcdba__dep" alt="/home/kempenep/pktools/src"/></div>
-<map name="dir__68267d1309a1af8e8297ef4c3efbcdba__dep" id="dir__68267d1309a1af8e8297ef4c3efbcdba__dep">
-<area shape="rect" id="node2" href="dir_e6df591b0639d4c4807ef64d058833e2.html" title="algorithms" alt="" coords="563,27,644,75"/><area shape="rect" id="node3" href="dir_53adf0b982dc8545998aae3f283a5a58.html" title="apps" alt="" coords="467,27,539,75"/><area shape="rect" id="node4" href="dir_0af1587c8378955de40f48b4bd1869f0.html" title="base" alt="" coords="371,27,443,75"/><area shape="rect" id="node5" href="dir_849702d4228bd835bdf1201002937cb3.html" title="fileclasses" alt="" coords="262 [...]
-</div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a>
-Directories</h2></td></tr>
-<tr class="memitem:dir_e6df591b0639d4c4807ef64d058833e2"><td class="memItemLeft" align="right" valign="top">directory  </td><td class="memItemRight" valign="bottom"><a class="el" href="dir_e6df591b0639d4c4807ef64d058833e2.html">algorithms</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:dir_53adf0b982dc8545998aae3f283a5a58"><td class="memItemLeft" align="right" valign="top">directory  </td><td class="memItemRight" valign="bottom"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:dir_0af1587c8378955de40f48b4bd1869f0"><td class="memItemLeft" align="right" valign="top">directory  </td><td class="memItemRight" valign="bottom"><a class="el" href="dir_0af1587c8378955de40f48b4bd1869f0.html">base</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:dir_849702d4228bd835bdf1201002937cb3"><td class="memItemLeft" align="right" valign="top">directory  </td><td class="memItemRight" valign="bottom"><a class="el" href="dir_849702d4228bd835bdf1201002937cb3.html">fileclasses</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:dir_6d2fd95b0bd390617ad5a1eb4a537b4a"><td class="memItemLeft" align="right" valign="top">directory  </td><td class="memItemRight" valign="bottom"><a class="el" href="dir_6d2fd95b0bd390617ad5a1eb4a537b4a.html">imageclasses</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:dir_89a0bd85ecec8fbb2c320310670be290"><td class="memItemLeft" align="right" valign="top">directory  </td><td class="memItemRight" valign="bottom"><a class="el" href="dir_89a0bd85ecec8fbb2c320310670be290.html">lasclasses</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.map b/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.map
deleted file mode 100644
index 7845254..0000000
--- a/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.map
+++ /dev/null
@@ -1,9 +0,0 @@
-<map id="/home/kempenep/pktools/src" name="/home/kempenep/pktools/src">
-<area shape="rect" id="node2" href="dir_e6df591b0639d4c4807ef64d058833e2.html" title="algorithms" alt="" coords="563,27,644,75"/>
-<area shape="rect" id="node3" href="dir_53adf0b982dc8545998aae3f283a5a58.html" title="apps" alt="" coords="467,27,539,75"/>
-<area shape="rect" id="node4" href="dir_0af1587c8378955de40f48b4bd1869f0.html" title="base" alt="" coords="371,27,443,75"/>
-<area shape="rect" id="node5" href="dir_849702d4228bd835bdf1201002937cb3.html" title="fileclasses" alt="" coords="262,27,345,75"/>
-<area shape="rect" id="node6" href="dir_6d2fd95b0bd390617ad5a1eb4a537b4a.html" title="imageclasses" alt="" coords="135,27,237,75"/>
-<area shape="rect" id="node7" href="dir_89a0bd85ecec8fbb2c320310670be290.html" title="lasclasses" alt="" coords="27,27,111,75"/>
-<area shape="rect" id="clust1" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html" alt="" coords="16,16,752,85"/>
-</map>
diff --git a/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5 b/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5
deleted file mode 100644
index 5a3ba93..0000000
--- a/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5
+++ /dev/null
@@ -1 +0,0 @@
-f88560b66f96c6c024c33544efb1952d
\ No newline at end of file
diff --git a/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.png b/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.png
deleted file mode 100644
index 708f198..0000000
Binary files a/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.png and /dev/null differ
diff --git a/doc/html/dir_6d2fd95b0bd390617ad5a1eb4a537b4a.html b/doc/html/dir_6d2fd95b0bd390617ad5a1eb4a537b4a.html
deleted file mode 100644
index ed2538f..0000000
--- a/doc/html/dir_6d2fd95b0bd390617ad5a1eb4a537b4a.html
+++ /dev/null
@@ -1,104 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/imageclasses Directory Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_6d2fd95b0bd390617ad5a1eb4a537b4a.html">imageclasses</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">imageclasses Directory Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Directory dependency graph for imageclasses:</div>
-<div class="dyncontent">
-<div class="center"><img src="dir_6d2fd95b0bd390617ad5a1eb4a537b4a_dep.png" border="0" usemap="#dir__6d2fd95b0bd390617ad5a1eb4a537b4a__dep" alt="/home/kempenep/pktools/src/imageclasses"/></div>
-<map name="dir__6d2fd95b0bd390617ad5a1eb4a537b4a__dep" id="dir__6d2fd95b0bd390617ad5a1eb4a537b4a__dep">
-<area shape="rect" id="node1" href="dir_6d2fd95b0bd390617ad5a1eb4a537b4a.html" title="imageclasses" alt="" coords="27,52,129,100"/><area shape="rect" id="clust1" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html" title="src" alt="" coords="16,16,141,111"/></map>
-</div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
-Files</h2></td></tr>
-<tr class="memitem:ImgGdal_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>ImgGdal.h</b> <a href="ImgGdal_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ImgRasterGdal_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>ImgRasterGdal.cc</b> <a href="ImgRasterGdal_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ImgRasterGdal_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>ImgRasterGdal.h</b> <a href="ImgRasterGdal_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ImgReaderGdal_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>ImgReaderGdal.cc</b> <a href="ImgReaderGdal_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ImgReaderGdal_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>ImgReaderGdal.h</b> <a href="ImgReaderGdal_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ImgReaderOgr_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>ImgReaderOgr.cc</b> <a href="ImgReaderOgr_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ImgReaderOgr_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>ImgReaderOgr.h</b> <a href="ImgReaderOgr_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ImgUpdaterGdal_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>ImgUpdaterGdal.cc</b> <a href="ImgUpdaterGdal_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ImgUpdaterGdal_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>ImgUpdaterGdal.h</b> <a href="ImgUpdaterGdal_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ImgWriterGdal_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>ImgWriterGdal.cc</b> <a href="ImgWriterGdal_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ImgWriterGdal_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>ImgWriterGdal.h</b> <a href="ImgWriterGdal_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ImgWriterOgr_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>ImgWriterOgr.cc</b> <a href="ImgWriterOgr_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ImgWriterOgr_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>ImgWriterOgr.h</b> <a href="ImgWriterOgr_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/dir_6d2fd95b0bd390617ad5a1eb4a537b4a_dep.map b/doc/html/dir_6d2fd95b0bd390617ad5a1eb4a537b4a_dep.map
deleted file mode 100644
index ae16fec..0000000
--- a/doc/html/dir_6d2fd95b0bd390617ad5a1eb4a537b4a_dep.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="/home/kempenep/pktools/src/imageclasses" name="/home/kempenep/pktools/src/imageclasses">
-<area shape="rect" id="node1" href="dir_6d2fd95b0bd390617ad5a1eb4a537b4a.html" title="imageclasses" alt="" coords="27,52,129,100"/>
-<area shape="rect" id="clust1" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html" title="src" alt="" coords="16,16,141,111"/>
-</map>
diff --git a/doc/html/dir_6d2fd95b0bd390617ad5a1eb4a537b4a_dep.md5 b/doc/html/dir_6d2fd95b0bd390617ad5a1eb4a537b4a_dep.md5
deleted file mode 100644
index c4f3f2f..0000000
--- a/doc/html/dir_6d2fd95b0bd390617ad5a1eb4a537b4a_dep.md5
+++ /dev/null
@@ -1 +0,0 @@
-494718c3c8bbc08f25b24a1da2a07d9a
\ No newline at end of file
diff --git a/doc/html/dir_6d2fd95b0bd390617ad5a1eb4a537b4a_dep.png b/doc/html/dir_6d2fd95b0bd390617ad5a1eb4a537b4a_dep.png
deleted file mode 100644
index d41115f..0000000
Binary files a/doc/html/dir_6d2fd95b0bd390617ad5a1eb4a537b4a_dep.png and /dev/null differ
diff --git a/doc/html/dir_849702d4228bd835bdf1201002937cb3.html b/doc/html/dir_849702d4228bd835bdf1201002937cb3.html
deleted file mode 100644
index a9f278f..0000000
--- a/doc/html/dir_849702d4228bd835bdf1201002937cb3.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/fileclasses Directory Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_849702d4228bd835bdf1201002937cb3.html">fileclasses</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">fileclasses Directory Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Directory dependency graph for fileclasses:</div>
-<div class="dyncontent">
-<div class="center"><img src="dir_849702d4228bd835bdf1201002937cb3_dep.png" border="0" usemap="#dir__849702d4228bd835bdf1201002937cb3__dep" alt="/home/kempenep/pktools/src/fileclasses"/></div>
-<map name="dir__849702d4228bd835bdf1201002937cb3__dep" id="dir__849702d4228bd835bdf1201002937cb3__dep">
-<area shape="rect" id="node1" href="dir_849702d4228bd835bdf1201002937cb3.html" title="fileclasses" alt="" coords="27,52,111,100"/><area shape="rect" id="clust1" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html" title="src" alt="" coords="16,16,123,111"/></map>
-</div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
-Files</h2></td></tr>
-<tr class="memitem:FileReaderAscii_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>FileReaderAscii.cc</b> <a href="FileReaderAscii_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:FileReaderAscii_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>FileReaderAscii.h</b> <a href="FileReaderAscii_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/dir_849702d4228bd835bdf1201002937cb3_dep.map b/doc/html/dir_849702d4228bd835bdf1201002937cb3_dep.map
deleted file mode 100644
index 95f35c0..0000000
--- a/doc/html/dir_849702d4228bd835bdf1201002937cb3_dep.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="/home/kempenep/pktools/src/fileclasses" name="/home/kempenep/pktools/src/fileclasses">
-<area shape="rect" id="node1" href="dir_849702d4228bd835bdf1201002937cb3.html" title="fileclasses" alt="" coords="27,52,111,100"/>
-<area shape="rect" id="clust1" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html" title="src" alt="" coords="16,16,123,111"/>
-</map>
diff --git a/doc/html/dir_849702d4228bd835bdf1201002937cb3_dep.md5 b/doc/html/dir_849702d4228bd835bdf1201002937cb3_dep.md5
deleted file mode 100644
index f5ea5c6..0000000
--- a/doc/html/dir_849702d4228bd835bdf1201002937cb3_dep.md5
+++ /dev/null
@@ -1 +0,0 @@
-aa089dd78524c2f8fb48599b1b28f12e
\ No newline at end of file
diff --git a/doc/html/dir_849702d4228bd835bdf1201002937cb3_dep.png b/doc/html/dir_849702d4228bd835bdf1201002937cb3_dep.png
deleted file mode 100644
index 84a0688..0000000
Binary files a/doc/html/dir_849702d4228bd835bdf1201002937cb3_dep.png and /dev/null differ
diff --git a/doc/html/dir_89a0bd85ecec8fbb2c320310670be290.html b/doc/html/dir_89a0bd85ecec8fbb2c320310670be290.html
deleted file mode 100644
index e5be282..0000000
--- a/doc/html/dir_89a0bd85ecec8fbb2c320310670be290.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/lasclasses Directory Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_89a0bd85ecec8fbb2c320310670be290.html">lasclasses</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">lasclasses Directory Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Directory dependency graph for lasclasses:</div>
-<div class="dyncontent">
-<div class="center"><img src="dir_89a0bd85ecec8fbb2c320310670be290_dep.png" border="0" usemap="#dir__89a0bd85ecec8fbb2c320310670be290__dep" alt="/home/kempenep/pktools/src/lasclasses"/></div>
-<map name="dir__89a0bd85ecec8fbb2c320310670be290__dep" id="dir__89a0bd85ecec8fbb2c320310670be290__dep">
-<area shape="rect" id="node1" href="dir_89a0bd85ecec8fbb2c320310670be290.html" title="lasclasses" alt="" coords="27,52,111,100"/><area shape="rect" id="clust1" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html" title="src" alt="" coords="16,16,123,111"/></map>
-</div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
-Files</h2></td></tr>
-<tr class="memitem:FileReaderLas_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>FileReaderLas.cc</b> <a href="FileReaderLas_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:FileReaderLas_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>FileReaderLas.h</b> <a href="FileReaderLas_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/dir_89a0bd85ecec8fbb2c320310670be290_dep.map b/doc/html/dir_89a0bd85ecec8fbb2c320310670be290_dep.map
deleted file mode 100644
index 0cc4a12..0000000
--- a/doc/html/dir_89a0bd85ecec8fbb2c320310670be290_dep.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="/home/kempenep/pktools/src/lasclasses" name="/home/kempenep/pktools/src/lasclasses">
-<area shape="rect" id="node1" href="dir_89a0bd85ecec8fbb2c320310670be290.html" title="lasclasses" alt="" coords="27,52,111,100"/>
-<area shape="rect" id="clust1" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html" title="src" alt="" coords="16,16,123,111"/>
-</map>
diff --git a/doc/html/dir_89a0bd85ecec8fbb2c320310670be290_dep.md5 b/doc/html/dir_89a0bd85ecec8fbb2c320310670be290_dep.md5
deleted file mode 100644
index 60e1e90..0000000
--- a/doc/html/dir_89a0bd85ecec8fbb2c320310670be290_dep.md5
+++ /dev/null
@@ -1 +0,0 @@
-e6e07da8b6585d138231c16ab2b09b22
\ No newline at end of file
diff --git a/doc/html/dir_89a0bd85ecec8fbb2c320310670be290_dep.png b/doc/html/dir_89a0bd85ecec8fbb2c320310670be290_dep.png
deleted file mode 100644
index 8ad588b..0000000
Binary files a/doc/html/dir_89a0bd85ecec8fbb2c320310670be290_dep.png and /dev/null differ
diff --git a/doc/html/dir_ab1bbd5a6b4bd6507847335527b029bb.html b/doc/html/dir_ab1bbd5a6b4bd6507847335527b029bb.html
deleted file mode 100644
index 1215a50..0000000
--- a/doc/html/dir_ab1bbd5a6b4bd6507847335527b029bb.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/pkcomposite_gui Directory Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_ab1bbd5a6b4bd6507847335527b029bb.html">pkcomposite_gui</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkcomposite_gui Directory Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Directory dependency graph for pkcomposite_gui:</div>
-<div class="dyncontent">
-<div class="center"><img src="dir_ab1bbd5a6b4bd6507847335527b029bb_dep.png" border="0" usemap="#dir__ab1bbd5a6b4bd6507847335527b029bb__dep" alt="/home/kempenep/pktools/qt/pkcomposite_gui"/></div>
-<map name="dir__ab1bbd5a6b4bd6507847335527b029bb__dep" id="dir__ab1bbd5a6b4bd6507847335527b029bb__dep">
-<area shape="rect" id="node1" href="dir_ab1bbd5a6b4bd6507847335527b029bb.html" title="pkcomposite_gui" alt="" coords="27,52,147,100"/><area shape="rect" id="clust1" href="dir_0f63d6441a2c250919e1e8723011eb2f.html" title="qt" alt="" coords="16,16,157,111"/></map>
-</div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
-Files</h2></td></tr>
-<tr class="memitem:pkcomposite__gui_2main_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>main.cc</b> <a href="pkcomposite__gui_2main_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkcomposite__gui_2mainwindow_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>mainwindow.cc</b> <a href="pkcomposite__gui_2mainwindow_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkcomposite__gui_2mainwindow_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>mainwindow.h</b> <a href="pkcomposite__gui_2mainwindow_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/dir_ab1bbd5a6b4bd6507847335527b029bb_dep.map b/doc/html/dir_ab1bbd5a6b4bd6507847335527b029bb_dep.map
deleted file mode 100644
index ef4e614..0000000
--- a/doc/html/dir_ab1bbd5a6b4bd6507847335527b029bb_dep.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="/home/kempenep/pktools/qt/pkcomposite_gui" name="/home/kempenep/pktools/qt/pkcomposite_gui">
-<area shape="rect" id="node1" href="dir_ab1bbd5a6b4bd6507847335527b029bb.html" title="pkcomposite_gui" alt="" coords="27,52,147,100"/>
-<area shape="rect" id="clust1" href="dir_0f63d6441a2c250919e1e8723011eb2f.html" title="qt" alt="" coords="16,16,157,111"/>
-</map>
diff --git a/doc/html/dir_ab1bbd5a6b4bd6507847335527b029bb_dep.md5 b/doc/html/dir_ab1bbd5a6b4bd6507847335527b029bb_dep.md5
deleted file mode 100644
index 9af5188..0000000
--- a/doc/html/dir_ab1bbd5a6b4bd6507847335527b029bb_dep.md5
+++ /dev/null
@@ -1 +0,0 @@
-a3a1f0efad1743e2ec5d8734dc6f1eb9
\ No newline at end of file
diff --git a/doc/html/dir_ab1bbd5a6b4bd6507847335527b029bb_dep.png b/doc/html/dir_ab1bbd5a6b4bd6507847335527b029bb_dep.png
deleted file mode 100644
index 1406669..0000000
Binary files a/doc/html/dir_ab1bbd5a6b4bd6507847335527b029bb_dep.png and /dev/null differ
diff --git a/doc/html/dir_b66e135988e27fdc966ddddb8708f514.html b/doc/html/dir_b66e135988e27fdc966ddddb8708f514.html
deleted file mode 100644
index 1bb5572..0000000
--- a/doc/html/dir_b66e135988e27fdc966ddddb8708f514.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/pksvm_gui Directory Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_b66e135988e27fdc966ddddb8708f514.html">pksvm_gui</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pksvm_gui Directory Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Directory dependency graph for pksvm_gui:</div>
-<div class="dyncontent">
-<div class="center"><img src="dir_b66e135988e27fdc966ddddb8708f514_dep.png" border="0" usemap="#dir__b66e135988e27fdc966ddddb8708f514__dep" alt="/home/kempenep/pktools/qt/pksvm_gui"/></div>
-<map name="dir__b66e135988e27fdc966ddddb8708f514__dep" id="dir__b66e135988e27fdc966ddddb8708f514__dep">
-<area shape="rect" id="node1" href="dir_b66e135988e27fdc966ddddb8708f514.html" title="pksvm_gui" alt="" coords="27,52,112,100"/><area shape="rect" id="clust1" href="dir_0f63d6441a2c250919e1e8723011eb2f.html" title="qt" alt="" coords="16,16,123,111"/></map>
-</div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
-Files</h2></td></tr>
-<tr class="memitem:pksvm__gui_2main_8cpp"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>main.cpp</b> <a href="pksvm__gui_2main_8cpp_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pksvm__gui_2mainwindow_8cpp"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>mainwindow.cpp</b> <a href="pksvm__gui_2mainwindow_8cpp_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pksvm__gui_2mainwindow_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>mainwindow.h</b> <a href="pksvm__gui_2mainwindow_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/dir_b66e135988e27fdc966ddddb8708f514_dep.map b/doc/html/dir_b66e135988e27fdc966ddddb8708f514_dep.map
deleted file mode 100644
index 70675d4..0000000
--- a/doc/html/dir_b66e135988e27fdc966ddddb8708f514_dep.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="/home/kempenep/pktools/qt/pksvm_gui" name="/home/kempenep/pktools/qt/pksvm_gui">
-<area shape="rect" id="node1" href="dir_b66e135988e27fdc966ddddb8708f514.html" title="pksvm_gui" alt="" coords="27,52,112,100"/>
-<area shape="rect" id="clust1" href="dir_0f63d6441a2c250919e1e8723011eb2f.html" title="qt" alt="" coords="16,16,123,111"/>
-</map>
diff --git a/doc/html/dir_b66e135988e27fdc966ddddb8708f514_dep.md5 b/doc/html/dir_b66e135988e27fdc966ddddb8708f514_dep.md5
deleted file mode 100644
index 83e1078..0000000
--- a/doc/html/dir_b66e135988e27fdc966ddddb8708f514_dep.md5
+++ /dev/null
@@ -1 +0,0 @@
-928b491e528b51b218b678ed430a2838
\ No newline at end of file
diff --git a/doc/html/dir_b66e135988e27fdc966ddddb8708f514_dep.png b/doc/html/dir_b66e135988e27fdc966ddddb8708f514_dep.png
deleted file mode 100644
index 5393d53..0000000
Binary files a/doc/html/dir_b66e135988e27fdc966ddddb8708f514_dep.png and /dev/null differ
diff --git a/doc/html/dir_b6b6de371025fb67c6b8623f3d3cd2ce.html b/doc/html/dir_b6b6de371025fb67c6b8623f3d3cd2ce.html
deleted file mode 100644
index ad28052..0000000
--- a/doc/html/dir_b6b6de371025fb67c6b8623f3d3cd2ce.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/pkdiff_gui Directory Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_b6b6de371025fb67c6b8623f3d3cd2ce.html">pkdiff_gui</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkdiff_gui Directory Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Directory dependency graph for pkdiff_gui:</div>
-<div class="dyncontent">
-<div class="center"><img src="dir_b6b6de371025fb67c6b8623f3d3cd2ce_dep.png" border="0" usemap="#dir__b6b6de371025fb67c6b8623f3d3cd2ce__dep" alt="/home/kempenep/pktools/qt/pkdiff_gui"/></div>
-<map name="dir__b6b6de371025fb67c6b8623f3d3cd2ce__dep" id="dir__b6b6de371025fb67c6b8623f3d3cd2ce__dep">
-<area shape="rect" id="node1" href="dir_b6b6de371025fb67c6b8623f3d3cd2ce.html" title="pkdiff_gui" alt="" coords="27,52,105,100"/><area shape="rect" id="clust1" href="dir_0f63d6441a2c250919e1e8723011eb2f.html" title="qt" alt="" coords="16,16,117,111"/></map>
-</div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
-Files</h2></td></tr>
-<tr class="memitem:pkdiff__gui_2main_8cpp"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>main.cpp</b> <a href="pkdiff__gui_2main_8cpp_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkdiff__gui_2mainwindow_8cpp"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>mainwindow.cpp</b> <a href="pkdiff__gui_2mainwindow_8cpp_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkdiff__gui_2mainwindow_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>mainwindow.h</b> <a href="pkdiff__gui_2mainwindow_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/dir_b6b6de371025fb67c6b8623f3d3cd2ce_dep.map b/doc/html/dir_b6b6de371025fb67c6b8623f3d3cd2ce_dep.map
deleted file mode 100644
index ad28de2..0000000
--- a/doc/html/dir_b6b6de371025fb67c6b8623f3d3cd2ce_dep.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="/home/kempenep/pktools/qt/pkdiff_gui" name="/home/kempenep/pktools/qt/pkdiff_gui">
-<area shape="rect" id="node1" href="dir_b6b6de371025fb67c6b8623f3d3cd2ce.html" title="pkdiff_gui" alt="" coords="27,52,105,100"/>
-<area shape="rect" id="clust1" href="dir_0f63d6441a2c250919e1e8723011eb2f.html" title="qt" alt="" coords="16,16,117,111"/>
-</map>
diff --git a/doc/html/dir_b6b6de371025fb67c6b8623f3d3cd2ce_dep.md5 b/doc/html/dir_b6b6de371025fb67c6b8623f3d3cd2ce_dep.md5
deleted file mode 100644
index f0ee98d..0000000
--- a/doc/html/dir_b6b6de371025fb67c6b8623f3d3cd2ce_dep.md5
+++ /dev/null
@@ -1 +0,0 @@
-0df09d64d163559c1642b0f59823fec9
\ No newline at end of file
diff --git a/doc/html/dir_b6b6de371025fb67c6b8623f3d3cd2ce_dep.png b/doc/html/dir_b6b6de371025fb67c6b8623f3d3cd2ce_dep.png
deleted file mode 100644
index de54c48..0000000
Binary files a/doc/html/dir_b6b6de371025fb67c6b8623f3d3cd2ce_dep.png and /dev/null differ
diff --git a/doc/html/dir_b7cc22b4453454f1e686d9a2e78d988d.html b/doc/html/dir_b7cc22b4453454f1e686d9a2e78d988d.html
deleted file mode 100644
index 1dccf00..0000000
--- a/doc/html/dir_b7cc22b4453454f1e686d9a2e78d988d.html
+++ /dev/null
@@ -1,116 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/pktools Directory Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li><li class="navelem"><a class="el" href="dir_b7cc22b4453454f1e686d9a2e78d988d.html">pktools</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pktools Directory Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Directory dependency graph for pktools:</div>
-<div class="dyncontent">
-<div class="center"><img src="dir_b7cc22b4453454f1e686d9a2e78d988d_dep.png" border="0" usemap="#dir__b7cc22b4453454f1e686d9a2e78d988d__dep" alt="/home/kempenep/pktools/qgis/pktools"/></div>
-<map name="dir__b7cc22b4453454f1e686d9a2e78d988d__dep" id="dir__b7cc22b4453454f1e686d9a2e78d988d__dep">
-<area shape="rect" id="node1" href="dir_b7cc22b4453454f1e686d9a2e78d988d.html" title="pktools" alt="" coords="27,52,99,100"/><area shape="rect" id="clust1" href="dir_5785acc8d2e42f8795bdbe936856f26d.html" title="qgis" alt="" coords="16,16,109,111"/></map>
-</div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
-Files</h2></td></tr>
-<tr class="memitem:pktools_2____init_____8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>__init__.py</b> <a href="pktools_2____init_____8py_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pktools_2pkcomposite_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkcomposite.py</b> <a href="pktools_2pkcomposite_8py_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pktools_2pkcrop_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkcrop.py</b> <a href="pktools_2pkcrop_8py_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pktools_2pkdiff__accuracy_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkdiff_accuracy.py</b> <a href="pktools_2pkdiff__accuracy_8py_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pktools_2pkextract_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkextract.py</b> <a href="pktools_2pkextract_8py_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pktools_2pkextract__grid_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkextract_grid.py</b> <a href="pktools_2pkextract__grid_8py_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pktools_2pkextract__random_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkextract_random.py</b> <a href="pktools_2pkextract__random_8py_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pktools_2pkfilter__spatial_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkfilter_spatial.py</b> <a href="pktools_2pkfilter__spatial_8py_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pktools_2pkfilter__spectral_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkfilter_spectral.py</b> <a href="pktools_2pkfilter__spectral_8py_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pktools_2pkfilterdem_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkfilterdem.py</b> <a href="pktools_2pkfilterdem_8py_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pktools_2pkgetmask_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkgetmask.py</b> <a href="pktools_2pkgetmask_8py_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pktools_2pklas2img_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pklas2img.py</b> <a href="pktools_2pklas2img_8py_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pktools_2pkreclass_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkreclass.py</b> <a href="pktools_2pkreclass_8py_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pktools_2pksetmask_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pksetmask.py</b> <a href="pktools_2pksetmask_8py_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pktools_2pksvm_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pksvm.py</b> <a href="pktools_2pksvm_8py_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pktools_2pktoolsAlgorithm_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pktoolsAlgorithm.py</b> <a href="pktools_2pktoolsAlgorithm_8py_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pktools_2pktoolsAlgorithmProvider_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pktoolsAlgorithmProvider.py</b> <a href="pktools_2pktoolsAlgorithmProvider_8py_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pktools_2pktoolsUtils_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pktoolsUtils.py</b> <a href="pktools_2pktoolsUtils_8py_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pktools_2ProcessingPktoolsPlugin_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>ProcessingPktoolsPlugin.py</b> <a href="pktools_2ProcessingPktoolsPlugin_8py_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/dir_b7cc22b4453454f1e686d9a2e78d988d_dep.map b/doc/html/dir_b7cc22b4453454f1e686d9a2e78d988d_dep.map
deleted file mode 100644
index 4f867f5..0000000
--- a/doc/html/dir_b7cc22b4453454f1e686d9a2e78d988d_dep.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="/home/kempenep/pktools/qgis/pktools" name="/home/kempenep/pktools/qgis/pktools">
-<area shape="rect" id="node1" href="dir_b7cc22b4453454f1e686d9a2e78d988d.html" title="pktools" alt="" coords="27,52,99,100"/>
-<area shape="rect" id="clust1" href="dir_5785acc8d2e42f8795bdbe936856f26d.html" title="qgis" alt="" coords="16,16,109,111"/>
-</map>
diff --git a/doc/html/dir_b7cc22b4453454f1e686d9a2e78d988d_dep.md5 b/doc/html/dir_b7cc22b4453454f1e686d9a2e78d988d_dep.md5
deleted file mode 100644
index 7323714..0000000
--- a/doc/html/dir_b7cc22b4453454f1e686d9a2e78d988d_dep.md5
+++ /dev/null
@@ -1 +0,0 @@
-40d7a54b1a14c4a5188ebe70da9adad6
\ No newline at end of file
diff --git a/doc/html/dir_b7cc22b4453454f1e686d9a2e78d988d_dep.png b/doc/html/dir_b7cc22b4453454f1e686d9a2e78d988d_dep.png
deleted file mode 100644
index 1630b46..0000000
Binary files a/doc/html/dir_b7cc22b4453454f1e686d9a2e78d988d_dep.png and /dev/null differ
diff --git a/doc/html/dir_b8eb6544d8d9ffceba16909a7b9d17d7.html b/doc/html/dir_b8eb6544d8d9ffceba16909a7b9d17d7.html
deleted file mode 100644
index 639204b..0000000
--- a/doc/html/dir_b8eb6544d8d9ffceba16909a7b9d17d7.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/build-pkcomposite_gui-gcc-Release Directory Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_b8eb6544d8d9ffceba16909a7b9d17d7.html">build-pkcomposite_gui-gcc-Release</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">build-pkcomposite_gui-gcc-Release Directory Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Directory dependency graph for build-pkcomposite_gui-gcc-Release:</div>
-<div class="dyncontent">
-<div class="center"><img src="dir_b8eb6544d8d9ffceba16909a7b9d17d7_dep.png" border="0" usemap="#dir__b8eb6544d8d9ffceba16909a7b9d17d7__dep" alt="/home/kempenep/pktools/qt/build-pkcomposite_gui-gcc-Release"/></div>
-<map name="dir__b8eb6544d8d9ffceba16909a7b9d17d7__dep" id="dir__b8eb6544d8d9ffceba16909a7b9d17d7__dep">
-<area shape="rect" id="node1" href="dir_b8eb6544d8d9ffceba16909a7b9d17d7.html" title="build-pkcomposite_gui-gcc-Release" alt="" coords="27,52,255,100"/><area shape="rect" id="clust1" href="dir_0f63d6441a2c250919e1e8723011eb2f.html" title="qt" alt="" coords="16,16,267,111"/></map>
-</div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
-Files</h2></td></tr>
-<tr class="memitem:build-pkcomposite__gui-gcc-Release_2moc__mainwindow_8cpp"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>moc_mainwindow.cpp</b> <a href="build-pkcomposite__gui-gcc-Release_2moc__mainwindow_8cpp_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:build-pkcomposite__gui-gcc-Release_2ui__mainwindow_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>ui_mainwindow.h</b> <a href="build-pkcomposite__gui-gcc-Release_2ui__mainwindow_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/dir_b8eb6544d8d9ffceba16909a7b9d17d7_dep.map b/doc/html/dir_b8eb6544d8d9ffceba16909a7b9d17d7_dep.map
deleted file mode 100644
index 009e444..0000000
--- a/doc/html/dir_b8eb6544d8d9ffceba16909a7b9d17d7_dep.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="/home/kempenep/pktools/qt/build-pkcomposite_gui-gcc-Release" name="/home/kempenep/pktools/qt/build-pkcomposite_gui-gcc-Release">
-<area shape="rect" id="node1" href="dir_b8eb6544d8d9ffceba16909a7b9d17d7.html" title="build-pkcomposite_gui-gcc-Release" alt="" coords="27,52,255,100"/>
-<area shape="rect" id="clust1" href="dir_0f63d6441a2c250919e1e8723011eb2f.html" title="qt" alt="" coords="16,16,267,111"/>
-</map>
diff --git a/doc/html/dir_b8eb6544d8d9ffceba16909a7b9d17d7_dep.md5 b/doc/html/dir_b8eb6544d8d9ffceba16909a7b9d17d7_dep.md5
deleted file mode 100644
index fffbedf..0000000
--- a/doc/html/dir_b8eb6544d8d9ffceba16909a7b9d17d7_dep.md5
+++ /dev/null
@@ -1 +0,0 @@
-c7488fe8bb5008f9b47e1a3ee2ffd393
\ No newline at end of file
diff --git a/doc/html/dir_b8eb6544d8d9ffceba16909a7b9d17d7_dep.png b/doc/html/dir_b8eb6544d8d9ffceba16909a7b9d17d7_dep.png
deleted file mode 100644
index b13d2ea..0000000
Binary files a/doc/html/dir_b8eb6544d8d9ffceba16909a7b9d17d7_dep.png and /dev/null differ
diff --git a/doc/html/dir_d7b2ebecdb5f44d7fa09bdedebc881a7.html b/doc/html/dir_d7b2ebecdb5f44d7fa09bdedebc881a7.html
deleted file mode 100644
index 2af944a..0000000
--- a/doc/html/dir_d7b2ebecdb5f44d7fa09bdedebc881a7.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/build-pkextract_gui-gcc-Debug Directory Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_d7b2ebecdb5f44d7fa09bdedebc881a7.html">build-pkextract_gui-gcc-Debug</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">build-pkextract_gui-gcc-Debug Directory Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Directory dependency graph for build-pkextract_gui-gcc-Debug:</div>
-<div class="dyncontent">
-<div class="center"><img src="dir_d7b2ebecdb5f44d7fa09bdedebc881a7_dep.png" border="0" usemap="#dir__d7b2ebecdb5f44d7fa09bdedebc881a7__dep" alt="/home/kempenep/pktools/qt/build-pkextract_gui-gcc-Debug"/></div>
-<map name="dir__d7b2ebecdb5f44d7fa09bdedebc881a7__dep" id="dir__d7b2ebecdb5f44d7fa09bdedebc881a7__dep">
-<area shape="rect" id="node1" href="dir_d7b2ebecdb5f44d7fa09bdedebc881a7.html" title="build-pkextract_gui-gcc-Debug" alt="" coords="26,52,224,100"/><area shape="rect" id="clust1" href="dir_0f63d6441a2c250919e1e8723011eb2f.html" title="qt" alt="" coords="16,16,235,111"/></map>
-</div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
-Files</h2></td></tr>
-<tr class="memitem:build-pkextract__gui-gcc-Debug_2moc__mainwindow_8cpp"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>moc_mainwindow.cpp</b> <a href="build-pkextract__gui-gcc-Debug_2moc__mainwindow_8cpp_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:build-pkextract__gui-gcc-Debug_2ui__mainwindow_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>ui_mainwindow.h</b> <a href="build-pkextract__gui-gcc-Debug_2ui__mainwindow_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/dir_d7b2ebecdb5f44d7fa09bdedebc881a7_dep.map b/doc/html/dir_d7b2ebecdb5f44d7fa09bdedebc881a7_dep.map
deleted file mode 100644
index 0121d88..0000000
--- a/doc/html/dir_d7b2ebecdb5f44d7fa09bdedebc881a7_dep.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="/home/kempenep/pktools/qt/build-pkextract_gui-gcc-Debug" name="/home/kempenep/pktools/qt/build-pkextract_gui-gcc-Debug">
-<area shape="rect" id="node1" href="dir_d7b2ebecdb5f44d7fa09bdedebc881a7.html" title="build-pkextract_gui-gcc-Debug" alt="" coords="26,52,224,100"/>
-<area shape="rect" id="clust1" href="dir_0f63d6441a2c250919e1e8723011eb2f.html" title="qt" alt="" coords="16,16,235,111"/>
-</map>
diff --git a/doc/html/dir_d7b2ebecdb5f44d7fa09bdedebc881a7_dep.md5 b/doc/html/dir_d7b2ebecdb5f44d7fa09bdedebc881a7_dep.md5
deleted file mode 100644
index 4d132ed..0000000
--- a/doc/html/dir_d7b2ebecdb5f44d7fa09bdedebc881a7_dep.md5
+++ /dev/null
@@ -1 +0,0 @@
-7af0df1697ef693c5b6ca2143c088c4b
\ No newline at end of file
diff --git a/doc/html/dir_d7b2ebecdb5f44d7fa09bdedebc881a7_dep.png b/doc/html/dir_d7b2ebecdb5f44d7fa09bdedebc881a7_dep.png
deleted file mode 100644
index fc1c0e4..0000000
Binary files a/doc/html/dir_d7b2ebecdb5f44d7fa09bdedebc881a7_dep.png and /dev/null differ
diff --git a/doc/html/dir_e28b2035b152bb51229fe7a0fca4e376.html b/doc/html/dir_e28b2035b152bb51229fe7a0fca4e376.html
deleted file mode 100644
index a34b4eb..0000000
--- a/doc/html/dir_e28b2035b152bb51229fe7a0fca4e376.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/not_used Directory Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li><li class="navelem"><a class="el" href="dir_e28b2035b152bb51229fe7a0fca4e376.html">not_used</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">not_used Directory Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Directory dependency graph for not_used:</div>
-<div class="dyncontent">
-<div class="center"><img src="dir_e28b2035b152bb51229fe7a0fca4e376_dep.png" border="0" usemap="#dir__e28b2035b152bb51229fe7a0fca4e376__dep" alt="/home/kempenep/pktools/src/apps/not_used"/></div>
-<map name="dir__e28b2035b152bb51229fe7a0fca4e376__dep" id="dir__e28b2035b152bb51229fe7a0fca4e376__dep">
-<area shape="rect" id="node1" href="dir_e28b2035b152bb51229fe7a0fca4e376.html" title="not_used" alt="" coords="27,52,100,100"/><area shape="rect" id="clust1" href="dir_53adf0b982dc8545998aae3f283a5a58.html" title="apps" alt="" coords="16,16,112,111"/></map>
-</div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
-Files</h2></td></tr>
-<tr class="memitem:pkeditogr_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkeditogr.cc</b> <a href="pkeditogr_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkenhance_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkenhance.cc</b> <a href="pkenhance_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:pkndvi_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pkndvi.cc</b> <a href="pkndvi_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/dir_e28b2035b152bb51229fe7a0fca4e376_dep.map b/doc/html/dir_e28b2035b152bb51229fe7a0fca4e376_dep.map
deleted file mode 100644
index 7c8b764..0000000
--- a/doc/html/dir_e28b2035b152bb51229fe7a0fca4e376_dep.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="/home/kempenep/pktools/src/apps/not_used" name="/home/kempenep/pktools/src/apps/not_used">
-<area shape="rect" id="node1" href="dir_e28b2035b152bb51229fe7a0fca4e376.html" title="not_used" alt="" coords="27,52,100,100"/>
-<area shape="rect" id="clust1" href="dir_53adf0b982dc8545998aae3f283a5a58.html" title="apps" alt="" coords="16,16,112,111"/>
-</map>
diff --git a/doc/html/dir_e28b2035b152bb51229fe7a0fca4e376_dep.md5 b/doc/html/dir_e28b2035b152bb51229fe7a0fca4e376_dep.md5
deleted file mode 100644
index 2313d5c..0000000
--- a/doc/html/dir_e28b2035b152bb51229fe7a0fca4e376_dep.md5
+++ /dev/null
@@ -1 +0,0 @@
-54c1058bdf7998f40b4f8f8f0441c774
\ No newline at end of file
diff --git a/doc/html/dir_e28b2035b152bb51229fe7a0fca4e376_dep.png b/doc/html/dir_e28b2035b152bb51229fe7a0fca4e376_dep.png
deleted file mode 100644
index 3bcc320..0000000
Binary files a/doc/html/dir_e28b2035b152bb51229fe7a0fca4e376_dep.png and /dev/null differ
diff --git a/doc/html/dir_e61db0d85028141ec5940fd7f2a6e0fc.html b/doc/html/dir_e61db0d85028141ec5940fd7f2a6e0fc.html
deleted file mode 100644
index 653ea21..0000000
--- a/doc/html/dir_e61db0d85028141ec5940fd7f2a6e0fc.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/build-pksvm_gui-gcc-Debug Directory Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_e61db0d85028141ec5940fd7f2a6e0fc.html">build-pksvm_gui-gcc-Debug</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">build-pksvm_gui-gcc-Debug Directory Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Directory dependency graph for build-pksvm_gui-gcc-Debug:</div>
-<div class="dyncontent">
-<div class="center"><img src="dir_e61db0d85028141ec5940fd7f2a6e0fc_dep.png" border="0" usemap="#dir__e61db0d85028141ec5940fd7f2a6e0fc__dep" alt="/home/kempenep/pktools/qt/build-pksvm_gui-gcc-Debug"/></div>
-<map name="dir__e61db0d85028141ec5940fd7f2a6e0fc__dep" id="dir__e61db0d85028141ec5940fd7f2a6e0fc__dep">
-<area shape="rect" id="node1" href="dir_e61db0d85028141ec5940fd7f2a6e0fc.html" title="build-pksvm_gui-gcc-Debug" alt="" coords="27,52,209,100"/><area shape="rect" id="clust1" href="dir_0f63d6441a2c250919e1e8723011eb2f.html" title="qt" alt="" coords="16,16,221,111"/></map>
-</div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
-Files</h2></td></tr>
-<tr class="memitem:build-pksvm__gui-gcc-Debug_2moc__mainwindow_8cpp"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>moc_mainwindow.cpp</b> <a href="build-pksvm__gui-gcc-Debug_2moc__mainwindow_8cpp_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:build-pksvm__gui-gcc-Debug_2ui__mainwindow_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>ui_mainwindow.h</b> <a href="build-pksvm__gui-gcc-Debug_2ui__mainwindow_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/dir_e61db0d85028141ec5940fd7f2a6e0fc_dep.map b/doc/html/dir_e61db0d85028141ec5940fd7f2a6e0fc_dep.map
deleted file mode 100644
index 43426e5..0000000
--- a/doc/html/dir_e61db0d85028141ec5940fd7f2a6e0fc_dep.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="/home/kempenep/pktools/qt/build-pksvm_gui-gcc-Debug" name="/home/kempenep/pktools/qt/build-pksvm_gui-gcc-Debug">
-<area shape="rect" id="node1" href="dir_e61db0d85028141ec5940fd7f2a6e0fc.html" title="build-pksvm_gui-gcc-Debug" alt="" coords="27,52,209,100"/>
-<area shape="rect" id="clust1" href="dir_0f63d6441a2c250919e1e8723011eb2f.html" title="qt" alt="" coords="16,16,221,111"/>
-</map>
diff --git a/doc/html/dir_e61db0d85028141ec5940fd7f2a6e0fc_dep.md5 b/doc/html/dir_e61db0d85028141ec5940fd7f2a6e0fc_dep.md5
deleted file mode 100644
index b444780..0000000
--- a/doc/html/dir_e61db0d85028141ec5940fd7f2a6e0fc_dep.md5
+++ /dev/null
@@ -1 +0,0 @@
-465f06766900a94290281b83d3781d79
\ No newline at end of file
diff --git a/doc/html/dir_e61db0d85028141ec5940fd7f2a6e0fc_dep.png b/doc/html/dir_e61db0d85028141ec5940fd7f2a6e0fc_dep.png
deleted file mode 100644
index 74f1c5d..0000000
Binary files a/doc/html/dir_e61db0d85028141ec5940fd7f2a6e0fc_dep.png and /dev/null differ
diff --git a/doc/html/dir_e6df591b0639d4c4807ef64d058833e2.html b/doc/html/dir_e6df591b0639d4c4807ef64d058833e2.html
deleted file mode 100644
index 9bc95a8..0000000
--- a/doc/html/dir_e6df591b0639d4c4807ef64d058833e2.html
+++ /dev/null
@@ -1,118 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/algorithms Directory Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_e6df591b0639d4c4807ef64d058833e2.html">algorithms</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">algorithms Directory Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Directory dependency graph for algorithms:</div>
-<div class="dyncontent">
-<div class="center"><img src="dir_e6df591b0639d4c4807ef64d058833e2_dep.png" border="0" usemap="#dir__e6df591b0639d4c4807ef64d058833e2__dep" alt="/home/kempenep/pktools/src/algorithms"/></div>
-<map name="dir__e6df591b0639d4c4807ef64d058833e2__dep" id="dir__e6df591b0639d4c4807ef64d058833e2__dep">
-<area shape="rect" id="node1" href="dir_e6df591b0639d4c4807ef64d058833e2.html" title="algorithms" alt="" coords="27,52,108,100"/><area shape="rect" id="clust1" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html" title="src" alt="" coords="16,16,120,111"/></map>
-</div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
-Files</h2></td></tr>
-<tr class="memitem:ConfusionMatrix_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>ConfusionMatrix.cc</b> <a href="ConfusionMatrix_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ConfusionMatrix_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>ConfusionMatrix.h</b> <a href="ConfusionMatrix_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:CostFactory_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>CostFactory.h</b> <a href="CostFactory_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:CostFactorySVM_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>CostFactorySVM.cc</b> <a href="CostFactorySVM_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:CostFactorySVM_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>CostFactorySVM.h</b> <a href="CostFactorySVM_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:Egcs_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>Egcs.cc</b> <a href="Egcs_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:Egcs_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>Egcs.h</b> <a href="Egcs_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:FeatureSelector_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>FeatureSelector.h</b> <a href="FeatureSelector_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:Filter_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>Filter.cc</b> <a href="Filter_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:Filter_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>Filter.h</b> <a href="Filter_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:Filter2d_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>Filter2d.cc</b> <a href="Filter2d_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:Filter2d_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>Filter2d.h</b> <a href="Filter2d_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:Filter__old_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>Filter_old.h</b> <a href="Filter__old_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ImgRegression_8cc"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>ImgRegression.cc</b> <a href="ImgRegression_8cc_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ImgRegression_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>ImgRegression.h</b> <a href="ImgRegression_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:myfann__cpp_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>myfann_cpp.h</b> <a href="myfann__cpp_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:OptFactory_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>OptFactory.h</b> <a href="OptFactory_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:StatFactory_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>StatFactory.h</b> <a href="StatFactory_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:svm_8cpp"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>svm.cpp</b> <a href="svm_8cpp_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:svm_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>svm.h</b> <a href="svm_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/dir_e6df591b0639d4c4807ef64d058833e2_dep.map b/doc/html/dir_e6df591b0639d4c4807ef64d058833e2_dep.map
deleted file mode 100644
index 302c831..0000000
--- a/doc/html/dir_e6df591b0639d4c4807ef64d058833e2_dep.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="/home/kempenep/pktools/src/algorithms" name="/home/kempenep/pktools/src/algorithms">
-<area shape="rect" id="node1" href="dir_e6df591b0639d4c4807ef64d058833e2.html" title="algorithms" alt="" coords="27,52,108,100"/>
-<area shape="rect" id="clust1" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html" title="src" alt="" coords="16,16,120,111"/>
-</map>
diff --git a/doc/html/dir_e6df591b0639d4c4807ef64d058833e2_dep.md5 b/doc/html/dir_e6df591b0639d4c4807ef64d058833e2_dep.md5
deleted file mode 100644
index ed39f74..0000000
--- a/doc/html/dir_e6df591b0639d4c4807ef64d058833e2_dep.md5
+++ /dev/null
@@ -1 +0,0 @@
-24830e296d23aedfdd82882d134b036a
\ No newline at end of file
diff --git a/doc/html/dir_e6df591b0639d4c4807ef64d058833e2_dep.png b/doc/html/dir_e6df591b0639d4c4807ef64d058833e2_dep.png
deleted file mode 100644
index 3671f57..0000000
Binary files a/doc/html/dir_e6df591b0639d4c4807ef64d058833e2_dep.png and /dev/null differ
diff --git a/doc/html/dir_ed1df9621940d6aa1183c365ad1750d2.html b/doc/html/dir_ed1df9621940d6aa1183c365ad1750d2.html
deleted file mode 100644
index fc67059..0000000
--- a/doc/html/dir_ed1df9621940d6aa1183c365ad1750d2.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/build-pksvm_gui-gcc-Release Directory Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_ed1df9621940d6aa1183c365ad1750d2.html">build-pksvm_gui-gcc-Release</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">build-pksvm_gui-gcc-Release Directory Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Directory dependency graph for build-pksvm_gui-gcc-Release:</div>
-<div class="dyncontent">
-<div class="center"><img src="dir_ed1df9621940d6aa1183c365ad1750d2_dep.png" border="0" usemap="#dir__ed1df9621940d6aa1183c365ad1750d2__dep" alt="/home/kempenep/pktools/qt/build-pksvm_gui-gcc-Release"/></div>
-<map name="dir__ed1df9621940d6aa1183c365ad1750d2__dep" id="dir__ed1df9621940d6aa1183c365ad1750d2__dep">
-<area shape="rect" id="node1" href="dir_ed1df9621940d6aa1183c365ad1750d2.html" title="build-pksvm_gui-gcc-Release" alt="" coords="27,52,220,100"/><area shape="rect" id="clust1" href="dir_0f63d6441a2c250919e1e8723011eb2f.html" title="qt" alt="" coords="16,16,232,111"/></map>
-</div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
-Files</h2></td></tr>
-<tr class="memitem:build-pksvm__gui-gcc-Release_2moc__mainwindow_8cpp"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>moc_mainwindow.cpp</b> <a href="build-pksvm__gui-gcc-Release_2moc__mainwindow_8cpp_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:build-pksvm__gui-gcc-Release_2ui__mainwindow_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>ui_mainwindow.h</b> <a href="build-pksvm__gui-gcc-Release_2ui__mainwindow_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/dir_ed1df9621940d6aa1183c365ad1750d2_dep.map b/doc/html/dir_ed1df9621940d6aa1183c365ad1750d2_dep.map
deleted file mode 100644
index bedd210..0000000
--- a/doc/html/dir_ed1df9621940d6aa1183c365ad1750d2_dep.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="/home/kempenep/pktools/qt/build-pksvm_gui-gcc-Release" name="/home/kempenep/pktools/qt/build-pksvm_gui-gcc-Release">
-<area shape="rect" id="node1" href="dir_ed1df9621940d6aa1183c365ad1750d2.html" title="build-pksvm_gui-gcc-Release" alt="" coords="27,52,220,100"/>
-<area shape="rect" id="clust1" href="dir_0f63d6441a2c250919e1e8723011eb2f.html" title="qt" alt="" coords="16,16,232,111"/>
-</map>
diff --git a/doc/html/dir_ed1df9621940d6aa1183c365ad1750d2_dep.md5 b/doc/html/dir_ed1df9621940d6aa1183c365ad1750d2_dep.md5
deleted file mode 100644
index 50fd5df..0000000
--- a/doc/html/dir_ed1df9621940d6aa1183c365ad1750d2_dep.md5
+++ /dev/null
@@ -1 +0,0 @@
-7f040b78278908d2e6cbd34fe75f5551
\ No newline at end of file
diff --git a/doc/html/dir_ed1df9621940d6aa1183c365ad1750d2_dep.png b/doc/html/dir_ed1df9621940d6aa1183c365ad1750d2_dep.png
deleted file mode 100644
index 2609d83..0000000
Binary files a/doc/html/dir_ed1df9621940d6aa1183c365ad1750d2_dep.png and /dev/null differ
diff --git a/doc/html/dir_f92e37ed5759424bff98155847b1034b.html b/doc/html/dir_f92e37ed5759424bff98155847b1034b.html
deleted file mode 100644
index 122557b..0000000
--- a/doc/html/dir_f92e37ed5759424bff98155847b1034b.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/build-pkcrop_gui-gcc-Release Directory Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_f92e37ed5759424bff98155847b1034b.html">build-pkcrop_gui-gcc-Release</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">build-pkcrop_gui-gcc-Release Directory Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Directory dependency graph for build-pkcrop_gui-gcc-Release:</div>
-<div class="dyncontent">
-<div class="center"><img src="dir_f92e37ed5759424bff98155847b1034b_dep.png" border="0" usemap="#dir__f92e37ed5759424bff98155847b1034b__dep" alt="/home/kempenep/pktools/qt/build-pkcrop_gui-gcc-Release"/></div>
-<map name="dir__f92e37ed5759424bff98155847b1034b__dep" id="dir__f92e37ed5759424bff98155847b1034b__dep">
-<area shape="rect" id="node1" href="dir_f92e37ed5759424bff98155847b1034b.html" title="build-pkcrop_gui-gcc-Release" alt="" coords="27,52,220,100"/><area shape="rect" id="clust1" href="dir_0f63d6441a2c250919e1e8723011eb2f.html" title="qt" alt="" coords="16,16,232,111"/></map>
-</div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
-Files</h2></td></tr>
-<tr class="memitem:build-pkcrop__gui-gcc-Release_2moc__mainwindow_8cpp"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>moc_mainwindow.cpp</b> <a href="build-pkcrop__gui-gcc-Release_2moc__mainwindow_8cpp_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:build-pkcrop__gui-gcc-Release_2ui__mainwindow_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>ui_mainwindow.h</b> <a href="build-pkcrop__gui-gcc-Release_2ui__mainwindow_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/dir_f92e37ed5759424bff98155847b1034b_dep.map b/doc/html/dir_f92e37ed5759424bff98155847b1034b_dep.map
deleted file mode 100644
index da62e97..0000000
--- a/doc/html/dir_f92e37ed5759424bff98155847b1034b_dep.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="/home/kempenep/pktools/qt/build-pkcrop_gui-gcc-Release" name="/home/kempenep/pktools/qt/build-pkcrop_gui-gcc-Release">
-<area shape="rect" id="node1" href="dir_f92e37ed5759424bff98155847b1034b.html" title="build-pkcrop_gui-gcc-Release" alt="" coords="27,52,220,100"/>
-<area shape="rect" id="clust1" href="dir_0f63d6441a2c250919e1e8723011eb2f.html" title="qt" alt="" coords="16,16,232,111"/>
-</map>
diff --git a/doc/html/dir_f92e37ed5759424bff98155847b1034b_dep.md5 b/doc/html/dir_f92e37ed5759424bff98155847b1034b_dep.md5
deleted file mode 100644
index 8abab5d..0000000
--- a/doc/html/dir_f92e37ed5759424bff98155847b1034b_dep.md5
+++ /dev/null
@@ -1 +0,0 @@
-cece616180c71c1a958400f3b634f93b
\ No newline at end of file
diff --git a/doc/html/dir_f92e37ed5759424bff98155847b1034b_dep.png b/doc/html/dir_f92e37ed5759424bff98155847b1034b_dep.png
deleted file mode 100644
index 975ca35..0000000
Binary files a/doc/html/dir_f92e37ed5759424bff98155847b1034b_dep.png and /dev/null differ
diff --git a/doc/html/doxygen.css b/doc/html/doxygen.css
deleted file mode 100644
index f0f36f8..0000000
--- a/doc/html/doxygen.css
+++ /dev/null
@@ -1,1366 +0,0 @@
-/* The standard CSS for doxygen 1.8.6 */
-
-body, table, div, p, dl {
-	font: 400 14px/22px Roboto,sans-serif;
-}
-
-/* @group Heading Levels */
-
-h1.groupheader {
-	font-size: 150%;
-}
-
-.title {
-	font: 400 14px/28px Roboto,sans-serif;
-	font-size: 150%;
-	font-weight: bold;
-	margin: 10px 2px;
-}
-
-h2.groupheader {
-	border-bottom: 1px solid #879ECB;
-	color: #354C7B;
-	font-size: 150%;
-	font-weight: normal;
-	margin-top: 1.75em;
-	padding-top: 8px;
-	padding-bottom: 4px;
-	width: 100%;
-}
-
-h3.groupheader {
-	font-size: 100%;
-}
-
-h1, h2, h3, h4, h5, h6 {
-	-webkit-transition: text-shadow 0.5s linear;
-	-moz-transition: text-shadow 0.5s linear;
-	-ms-transition: text-shadow 0.5s linear;
-	-o-transition: text-shadow 0.5s linear;
-	transition: text-shadow 0.5s linear;
-	margin-right: 15px;
-}
-
-h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
-	text-shadow: 0 0 15px cyan;
-}
-
-dt {
-	font-weight: bold;
-}
-
-div.multicol {
-	-moz-column-gap: 1em;
-	-webkit-column-gap: 1em;
-	-moz-column-count: 3;
-	-webkit-column-count: 3;
-}
-
-p.startli, p.startdd {
-	margin-top: 2px;
-}
-
-p.starttd {
-	margin-top: 0px;
-}
-
-p.endli {
-	margin-bottom: 0px;
-}
-
-p.enddd {
-	margin-bottom: 4px;
-}
-
-p.endtd {
-	margin-bottom: 2px;
-}
-
-/* @end */
-
-caption {
-	font-weight: bold;
-}
-
-span.legend {
-        font-size: 70%;
-        text-align: center;
-}
-
-h3.version {
-        font-size: 90%;
-        text-align: center;
-}
-
-div.qindex, div.navtab{
-	background-color: #EBEFF6;
-	border: 1px solid #A3B4D7;
-	text-align: center;
-}
-
-div.qindex, div.navpath {
-	width: 100%;
-	line-height: 140%;
-}
-
-div.navtab {
-	margin-right: 15px;
-}
-
-/* @group Link Styling */
-
-a {
-	color: #3D578C;
-	font-weight: normal;
-	text-decoration: none;
-}
-
-.contents a:visited {
-	color: #4665A2;
-}
-
-a:hover {
-	text-decoration: underline;
-}
-
-a.qindex {
-	font-weight: bold;
-}
-
-a.qindexHL {
-	font-weight: bold;
-	background-color: #9CAFD4;
-	color: #ffffff;
-	border: 1px double #869DCA;
-}
-
-.contents a.qindexHL:visited {
-        color: #ffffff;
-}
-
-a.el {
-	font-weight: bold;
-}
-
-a.elRef {
-}
-
-a.code, a.code:visited, a.line, a.line:visited {
-	color: #4665A2; 
-}
-
-a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {
-	color: #4665A2; 
-}
-
-/* @end */
-
-dl.el {
-	margin-left: -1cm;
-}
-
-pre.fragment {
-        border: 1px solid #C4CFE5;
-        background-color: #FBFCFD;
-        padding: 4px 6px;
-        margin: 4px 8px 4px 2px;
-        overflow: auto;
-        word-wrap: break-word;
-        font-size:  9pt;
-        line-height: 125%;
-        font-family: monospace, fixed;
-        font-size: 105%;
-}
-
-div.fragment {
-        padding: 4px 6px;
-        margin: 4px 8px 4px 2px;
-	background-color: #FBFCFD;
-	border: 1px solid #C4CFE5;
-}
-
-div.line {
-	font-family: monospace, fixed;
-        font-size: 13px;
-	min-height: 13px;
-	line-height: 1.0;
-	text-wrap: unrestricted;
-	white-space: -moz-pre-wrap; /* Moz */
-	white-space: -pre-wrap;     /* Opera 4-6 */
-	white-space: -o-pre-wrap;   /* Opera 7 */
-	white-space: pre-wrap;      /* CSS3  */
-	word-wrap: break-word;      /* IE 5.5+ */
-	text-indent: -53px;
-	padding-left: 53px;
-	padding-bottom: 0px;
-	margin: 0px;
-	-webkit-transition-property: background-color, box-shadow;
-	-webkit-transition-duration: 0.5s;
-	-moz-transition-property: background-color, box-shadow;
-	-moz-transition-duration: 0.5s;
-	-ms-transition-property: background-color, box-shadow;
-	-ms-transition-duration: 0.5s;
-	-o-transition-property: background-color, box-shadow;
-	-o-transition-duration: 0.5s;
-	transition-property: background-color, box-shadow;
-	transition-duration: 0.5s;
-}
-
-div.line.glow {
-	background-color: cyan;
-	box-shadow: 0 0 10px cyan;
-}
-
-
-span.lineno {
-	padding-right: 4px;
-	text-align: right;
-	border-right: 2px solid #0F0;
-	background-color: #E8E8E8;
-        white-space: pre;
-}
-span.lineno a {
-	background-color: #D8D8D8;
-}
-
-span.lineno a:hover {
-	background-color: #C8C8C8;
-}
-
-div.ah {
-	background-color: black;
-	font-weight: bold;
-	color: #ffffff;
-	margin-bottom: 3px;
-	margin-top: 3px;
-	padding: 0.2em;
-	border: solid thin #333;
-	border-radius: 0.5em;
-	-webkit-border-radius: .5em;
-	-moz-border-radius: .5em;
-	box-shadow: 2px 2px 3px #999;
-	-webkit-box-shadow: 2px 2px 3px #999;
-	-moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
-	background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
-	background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000);
-}
-
-div.groupHeader {
-	margin-left: 16px;
-	margin-top: 12px;
-	font-weight: bold;
-}
-
-div.groupText {
-	margin-left: 16px;
-	font-style: italic;
-}
-
-body {
-	background-color: white;
-	color: black;
-        margin: 0;
-}
-
-div.contents {
-	margin-top: 10px;
-	margin-left: 12px;
-	margin-right: 8px;
-}
-
-td.indexkey {
-	background-color: #EBEFF6;
-	font-weight: bold;
-	border: 1px solid #C4CFE5;
-	margin: 2px 0px 2px 0;
-	padding: 2px 10px;
-        white-space: nowrap;
-        vertical-align: top;
-}
-
-td.indexvalue {
-	background-color: #EBEFF6;
-	border: 1px solid #C4CFE5;
-	padding: 2px 10px;
-	margin: 2px 0px;
-}
-
-tr.memlist {
-	background-color: #EEF1F7;
-}
-
-p.formulaDsp {
-	text-align: center;
-}
-
-img.formulaDsp {
-	
-}
-
-img.formulaInl {
-	vertical-align: middle;
-}
-
-div.center {
-	text-align: center;
-        margin-top: 0px;
-        margin-bottom: 0px;
-        padding: 0px;
-}
-
-div.center img {
-	border: 0px;
-}
-
-address.footer {
-	text-align: right;
-	padding-right: 12px;
-}
-
-img.footer {
-	border: 0px;
-	vertical-align: middle;
-}
-
-/* @group Code Colorization */
-
-span.keyword {
-	color: #008000
-}
-
-span.keywordtype {
-	color: #604020
-}
-
-span.keywordflow {
-	color: #e08000
-}
-
-span.comment {
-	color: #800000
-}
-
-span.preprocessor {
-	color: #806020
-}
-
-span.stringliteral {
-	color: #002080
-}
-
-span.charliteral {
-	color: #008080
-}
-
-span.vhdldigit { 
-	color: #ff00ff 
-}
-
-span.vhdlchar { 
-	color: #000000 
-}
-
-span.vhdlkeyword { 
-	color: #700070 
-}
-
-span.vhdllogic { 
-	color: #ff0000 
-}
-
-blockquote {
-        background-color: #F7F8FB;
-        border-left: 2px solid #9CAFD4;
-        margin: 0 24px 0 4px;
-        padding: 0 12px 0 16px;
-}
-
-/* @end */
-
-/*
-.search {
-	color: #003399;
-	font-weight: bold;
-}
-
-form.search {
-	margin-bottom: 0px;
-	margin-top: 0px;
-}
-
-input.search {
-	font-size: 75%;
-	color: #000080;
-	font-weight: normal;
-	background-color: #e8eef2;
-}
-*/
-
-td.tiny {
-	font-size: 75%;
-}
-
-.dirtab {
-	padding: 4px;
-	border-collapse: collapse;
-	border: 1px solid #A3B4D7;
-}
-
-th.dirtab {
-	background: #EBEFF6;
-	font-weight: bold;
-}
-
-hr {
-	height: 0px;
-	border: none;
-	border-top: 1px solid #4A6AAA;
-}
-
-hr.footer {
-	height: 1px;
-}
-
-/* @group Member Descriptions */
-
-table.memberdecls {
-	border-spacing: 0px;
-	padding: 0px;
-}
-
-.memberdecls td, .fieldtable tr {
-	-webkit-transition-property: background-color, box-shadow;
-	-webkit-transition-duration: 0.5s;
-	-moz-transition-property: background-color, box-shadow;
-	-moz-transition-duration: 0.5s;
-	-ms-transition-property: background-color, box-shadow;
-	-ms-transition-duration: 0.5s;
-	-o-transition-property: background-color, box-shadow;
-	-o-transition-duration: 0.5s;
-	transition-property: background-color, box-shadow;
-	transition-duration: 0.5s;
-}
-
-.memberdecls td.glow, .fieldtable tr.glow {
-	background-color: cyan;
-	box-shadow: 0 0 15px cyan;
-}
-
-.mdescLeft, .mdescRight,
-.memItemLeft, .memItemRight,
-.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
-	background-color: #F9FAFC;
-	border: none;
-	margin: 4px;
-	padding: 1px 0 0 8px;
-}
-
-.mdescLeft, .mdescRight {
-	padding: 0px 8px 4px 8px;
-	color: #555;
-}
-
-.memSeparator {
-        border-bottom: 1px solid #DEE4F0;
-        line-height: 1px;
-        margin: 0px;
-        padding: 0px;
-}
-
-.memItemLeft, .memTemplItemLeft {
-        white-space: nowrap;
-}
-
-.memItemRight {
-	width: 100%;
-}
-
-.memTemplParams {
-	color: #4665A2;
-        white-space: nowrap;
-	font-size: 80%;
-}
-
-/* @end */
-
-/* @group Member Details */
-
-/* Styles for detailed member documentation */
-
-.memtemplate {
-	font-size: 80%;
-	color: #4665A2;
-	font-weight: normal;
-	margin-left: 9px;
-}
-
-.memnav {
-	background-color: #EBEFF6;
-	border: 1px solid #A3B4D7;
-	text-align: center;
-	margin: 2px;
-	margin-right: 15px;
-	padding: 2px;
-}
-
-.mempage {
-	width: 100%;
-}
-
-.memitem {
-	padding: 0;
-	margin-bottom: 10px;
-	margin-right: 5px;
-        -webkit-transition: box-shadow 0.5s linear;
-        -moz-transition: box-shadow 0.5s linear;
-        -ms-transition: box-shadow 0.5s linear;
-        -o-transition: box-shadow 0.5s linear;
-        transition: box-shadow 0.5s linear;
-        display: table !important;
-        width: 100%;
-}
-
-.memitem.glow {
-         box-shadow: 0 0 15px cyan;
-}
-
-.memname {
-        font-weight: bold;
-        margin-left: 6px;
-}
-
-.memname td {
-	vertical-align: bottom;
-}
-
-.memproto, dl.reflist dt {
-        border-top: 1px solid #A8B8D9;
-        border-left: 1px solid #A8B8D9;
-        border-right: 1px solid #A8B8D9;
-        padding: 6px 0px 6px 0px;
-        color: #253555;
-        font-weight: bold;
-        text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
-        background-image:url('nav_f.png');
-        background-repeat:repeat-x;
-        background-color: #E2E8F2;
-        /* opera specific markup */
-        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-        border-top-right-radius: 4px;
-        border-top-left-radius: 4px;
-        /* firefox specific markup */
-        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
-        -moz-border-radius-topright: 4px;
-        -moz-border-radius-topleft: 4px;
-        /* webkit specific markup */
-        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-        -webkit-border-top-right-radius: 4px;
-        -webkit-border-top-left-radius: 4px;
-
-}
-
-.memdoc, dl.reflist dd {
-        border-bottom: 1px solid #A8B8D9;      
-        border-left: 1px solid #A8B8D9;      
-        border-right: 1px solid #A8B8D9; 
-        padding: 6px 10px 2px 10px;
-        background-color: #FBFCFD;
-        border-top-width: 0;
-        background-image:url('nav_g.png');
-        background-repeat:repeat-x;
-        background-color: #FFFFFF;
-        /* opera specific markup */
-        border-bottom-left-radius: 4px;
-        border-bottom-right-radius: 4px;
-        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-        /* firefox specific markup */
-        -moz-border-radius-bottomleft: 4px;
-        -moz-border-radius-bottomright: 4px;
-        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
-        /* webkit specific markup */
-        -webkit-border-bottom-left-radius: 4px;
-        -webkit-border-bottom-right-radius: 4px;
-        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-}
-
-dl.reflist dt {
-        padding: 5px;
-}
-
-dl.reflist dd {
-        margin: 0px 0px 10px 0px;
-        padding: 5px;
-}
-
-.paramkey {
-	text-align: right;
-}
-
-.paramtype {
-	white-space: nowrap;
-}
-
-.paramname {
-	color: #602020;
-	white-space: nowrap;
-}
-.paramname em {
-	font-style: normal;
-}
-.paramname code {
-        line-height: 14px;
-}
-
-.params, .retval, .exception, .tparams {
-        margin-left: 0px;
-        padding-left: 0px;
-}       
-
-.params .paramname, .retval .paramname {
-        font-weight: bold;
-        vertical-align: top;
-}
-        
-.params .paramtype {
-        font-style: italic;
-        vertical-align: top;
-}       
-        
-.params .paramdir {
-        font-family: "courier new",courier,monospace;
-        vertical-align: top;
-}
-
-table.mlabels {
-	border-spacing: 0px;
-}
-
-td.mlabels-left {
-	width: 100%;
-	padding: 0px;
-}
-
-td.mlabels-right {
-	vertical-align: bottom;
-	padding: 0px;
-	white-space: nowrap;
-}
-
-span.mlabels {
-        margin-left: 8px;
-}
-
-span.mlabel {
-        background-color: #728DC1;
-        border-top:1px solid #5373B4;
-        border-left:1px solid #5373B4;
-        border-right:1px solid #C4CFE5;
-        border-bottom:1px solid #C4CFE5;
-	text-shadow: none;
-	color: white;
-	margin-right: 4px;
-	padding: 2px 3px;
-	border-radius: 3px;
-	font-size: 7pt;
-	white-space: nowrap;
-	vertical-align: middle;
-}
-
-
-
-/* @end */
-
-/* these are for tree view when not used as main index */
-
-div.directory {
-        margin: 10px 0px;
-        border-top: 1px solid #A8B8D9;
-        border-bottom: 1px solid #A8B8D9;
-        width: 100%;
-}
-
-.directory table {
-        border-collapse:collapse;
-}
-
-.directory td {
-        margin: 0px;
-        padding: 0px;
-	vertical-align: top;
-}
-
-.directory td.entry {
-        white-space: nowrap;
-        padding-right: 6px;
-	padding-top: 3px;
-}
-
-.directory td.entry a {
-        outline:none;
-}
-
-.directory td.entry a img {
-        border: none;
-}
-
-.directory td.desc {
-        width: 100%;
-        padding-left: 6px;
-	padding-right: 6px;
-	padding-top: 3px;
-	border-left: 1px solid rgba(0,0,0,0.05);
-}
-
-.directory tr.even {
-	padding-left: 6px;
-	background-color: #F7F8FB;
-}
-
-.directory img {
-	vertical-align: -30%;
-}
-
-.directory .levels {
-        white-space: nowrap;
-        width: 100%;
-        text-align: right;
-        font-size: 9pt;
-}
-
-.directory .levels span {
-        cursor: pointer;
-        padding-left: 2px;
-        padding-right: 2px;
-	color: #3D578C;
-}
-
-div.dynheader {
-        margin-top: 8px;
-	-webkit-touch-callout: none;
-	-webkit-user-select: none;
-	-khtml-user-select: none;
-	-moz-user-select: none;
-	-ms-user-select: none;
-	user-select: none;
-}
-
-address {
-	font-style: normal;
-	color: #2A3D61;
-}
-
-table.doxtable {
-	border-collapse:collapse;
-        margin-top: 4px;
-        margin-bottom: 4px;
-}
-
-table.doxtable td, table.doxtable th {
-	border: 1px solid #2D4068;
-	padding: 3px 7px 2px;
-}
-
-table.doxtable th {
-	background-color: #374F7F;
-	color: #FFFFFF;
-	font-size: 110%;
-	padding-bottom: 4px;
-	padding-top: 5px;
-}
-
-table.fieldtable {
-        /*width: 100%;*/
-        margin-bottom: 10px;
-        border: 1px solid #A8B8D9;
-        border-spacing: 0px;
-        -moz-border-radius: 4px;
-        -webkit-border-radius: 4px;
-        border-radius: 4px;
-        -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
-        -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
-        box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
-}
-
-.fieldtable td, .fieldtable th {
-        padding: 3px 7px 2px;
-}
-
-.fieldtable td.fieldtype, .fieldtable td.fieldname {
-        white-space: nowrap;
-        border-right: 1px solid #A8B8D9;
-        border-bottom: 1px solid #A8B8D9;
-        vertical-align: top;
-}
-
-.fieldtable td.fieldname {
-        padding-top: 3px;
-}
-
-.fieldtable td.fielddoc {
-        border-bottom: 1px solid #A8B8D9;
-        /*width: 100%;*/
-}
-
-.fieldtable td.fielddoc p:first-child {
-        margin-top: 0px;
-}       
-        
-.fieldtable td.fielddoc p:last-child {
-        margin-bottom: 2px;
-}
-
-.fieldtable tr:last-child td {
-        border-bottom: none;
-}
-
-.fieldtable th {
-        background-image:url('nav_f.png');
-        background-repeat:repeat-x;
-        background-color: #E2E8F2;
-        font-size: 90%;
-        color: #253555;
-        padding-bottom: 4px;
-        padding-top: 5px;
-        text-align:left;
-        -moz-border-radius-topleft: 4px;
-        -moz-border-radius-topright: 4px;
-        -webkit-border-top-left-radius: 4px;
-        -webkit-border-top-right-radius: 4px;
-        border-top-left-radius: 4px;
-        border-top-right-radius: 4px;
-        border-bottom: 1px solid #A8B8D9;
-}
-
-
-.tabsearch {
-	top: 0px;
-	left: 10px;
-	height: 36px;
-	background-image: url('tab_b.png');
-	z-index: 101;
-	overflow: hidden;
-	font-size: 13px;
-}
-
-.navpath ul
-{
-	font-size: 11px;
-	background-image:url('tab_b.png');
-	background-repeat:repeat-x;
-	background-position: 0 -5px;
-	height:30px;
-	line-height:30px;
-	color:#8AA0CC;
-	border:solid 1px #C2CDE4;
-	overflow:hidden;
-	margin:0px;
-	padding:0px;
-}
-
-.navpath li
-{
-	list-style-type:none;
-	float:left;
-	padding-left:10px;
-	padding-right:15px;
-	background-image:url('bc_s.png');
-	background-repeat:no-repeat;
-	background-position:right;
-	color:#364D7C;
-}
-
-.navpath li.navelem a
-{
-	height:32px;
-	display:block;
-	text-decoration: none;
-	outline: none;
-	color: #283A5D;
-	font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
-	text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
-	text-decoration: none;        
-}
-
-.navpath li.navelem a:hover
-{
-	color:#6884BD;
-}
-
-.navpath li.footer
-{
-        list-style-type:none;
-        float:right;
-        padding-left:10px;
-        padding-right:15px;
-        background-image:none;
-        background-repeat:no-repeat;
-        background-position:right;
-        color:#364D7C;
-        font-size: 8pt;
-}
-
-
-div.summary
-{
-	float: right;
-	font-size: 8pt;
-	padding-right: 5px;
-	width: 50%;
-	text-align: right;
-}       
-
-div.summary a
-{
-	white-space: nowrap;
-}
-
-div.ingroups
-{
-	font-size: 8pt;
-	width: 50%;
-	text-align: left;
-}
-
-div.ingroups a
-{
-	white-space: nowrap;
-}
-
-div.header
-{
-        background-image:url('nav_h.png');
-        background-repeat:repeat-x;
-	background-color: #F9FAFC;
-	margin:  0px;
-	border-bottom: 1px solid #C4CFE5;
-}
-
-div.headertitle
-{
-	padding: 5px 5px 5px 10px;
-}
-
-dl
-{
-        padding: 0 0 0 10px;
-}
-
-/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */
-dl.section
-{
-	margin-left: 0px;
-	padding-left: 0px;
-}
-
-dl.note
-{
-        margin-left:-7px;
-        padding-left: 3px;
-        border-left:4px solid;
-        border-color: #D0C000;
-}
-
-dl.warning, dl.attention
-{
-        margin-left:-7px;
-        padding-left: 3px;
-        border-left:4px solid;
-        border-color: #FF0000;
-}
-
-dl.pre, dl.post, dl.invariant
-{
-        margin-left:-7px;
-        padding-left: 3px;
-        border-left:4px solid;
-        border-color: #00D000;
-}
-
-dl.deprecated
-{
-        margin-left:-7px;
-        padding-left: 3px;
-        border-left:4px solid;
-        border-color: #505050;
-}
-
-dl.todo
-{
-        margin-left:-7px;
-        padding-left: 3px;
-        border-left:4px solid;
-        border-color: #00C0E0;
-}
-
-dl.test
-{
-        margin-left:-7px;
-        padding-left: 3px;
-        border-left:4px solid;
-        border-color: #3030E0;
-}
-
-dl.bug
-{
-        margin-left:-7px;
-        padding-left: 3px;
-        border-left:4px solid;
-        border-color: #C08050;
-}
-
-dl.section dd {
-	margin-bottom: 6px;
-}
-
-
-#projectlogo
-{
-	text-align: center;
-	vertical-align: bottom;
-	border-collapse: separate;
-}
- 
-#projectlogo img
-{ 
-	border: 0px none;
-}
- 
-#projectname
-{
-	font: 300% Tahoma, Arial,sans-serif;
-	margin: 0px;
-	padding: 2px 0px;
-}
-    
-#projectbrief
-{
-	font: 120% Tahoma, Arial,sans-serif;
-	margin: 0px;
-	padding: 0px;
-}
-
-#projectnumber
-{
-	font: 50% Tahoma, Arial,sans-serif;
-	margin: 0px;
-	padding: 0px;
-}
-
-#titlearea
-{
-	padding: 0px;
-	margin: 0px;
-	width: 100%;
-	border-bottom: 1px solid #5373B4;
-}
-
-.image
-{
-        text-align: center;
-}
-
-.dotgraph
-{
-        text-align: center;
-}
-
-.mscgraph
-{
-        text-align: center;
-}
-
-.diagraph
-{
-        text-align: center;
-}
-
-.caption
-{
-	font-weight: bold;
-}
-
-div.zoom
-{
-	border: 1px solid #90A5CE;
-}
-
-dl.citelist {
-        margin-bottom:50px;
-}
-
-dl.citelist dt {
-        color:#334975;
-        float:left;
-        font-weight:bold;
-        margin-right:10px;
-        padding:5px;
-}
-
-dl.citelist dd {
-        margin:2px 0;
-        padding:5px 0;
-}
-
-div.toc {
-        padding: 14px 25px;
-        background-color: #F4F6FA;
-        border: 1px solid #D8DFEE;
-        border-radius: 7px 7px 7px 7px;
-        float: right;
-        height: auto;
-        margin: 0 20px 10px 10px;
-        width: 200px;
-}
-
-div.toc li {
-        background: url("bdwn.png") no-repeat scroll 0 5px transparent;
-        font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
-        margin-top: 5px;
-        padding-left: 10px;
-        padding-top: 2px;
-}
-
-div.toc h3 {
-        font: bold 12px/1.2 Arial,FreeSans,sans-serif;
-	color: #4665A2;
-        border-bottom: 0 none;
-        margin: 0;
-}
-
-div.toc ul {
-        list-style: none outside none;
-        border: medium none;
-        padding: 0px;
-}       
-
-div.toc li.level1 {
-        margin-left: 0px;
-}
-
-div.toc li.level2 {
-        margin-left: 15px;
-}
-
-div.toc li.level3 {
-        margin-left: 30px;
-}
-
-div.toc li.level4 {
-        margin-left: 45px;
-}
-
-.inherit_header {
-        font-weight: bold;
-        color: gray;
-        cursor: pointer;
-	-webkit-touch-callout: none;
-	-webkit-user-select: none;
-	-khtml-user-select: none;
-	-moz-user-select: none;
-	-ms-user-select: none;
-	user-select: none;
-}
-
-.inherit_header td {
-        padding: 6px 0px 2px 5px;
-}
-
-.inherit {
-        display: none;
-}
-
-tr.heading h2 {
-        margin-top: 12px;
-        margin-bottom: 4px;
-}
-
-/* tooltip related style info */
-
-.ttc {
-        position: absolute;
-        display: none;
-}
-
-#powerTip {
-	cursor: default;
-	white-space: nowrap;
-	background-color: white;
-	border: 1px solid gray;
-	border-radius: 4px 4px 4px 4px;
-	box-shadow: 1px 1px 7px gray;
-	display: none;
-	font-size: smaller;
-	max-width: 80%;
-	opacity: 0.9;
-	padding: 1ex 1em 1em;
-	position: absolute;
-	z-index: 2147483647;
-}
-
-#powerTip div.ttdoc {
-        color: grey;
-	font-style: italic;
-}
-
-#powerTip div.ttname a {
-        font-weight: bold;
-}
-
-#powerTip div.ttname {
-        font-weight: bold;
-}
-
-#powerTip div.ttdeci {
-        color: #006318;
-}
-
-#powerTip div {
-        margin: 0px;
-        padding: 0px;
-        font: 12px/16px Roboto,sans-serif;
-}
-
-#powerTip:before, #powerTip:after {
-	content: "";
-	position: absolute;
-	margin: 0px;
-}
-
-#powerTip.n:after,  #powerTip.n:before,
-#powerTip.s:after,  #powerTip.s:before,
-#powerTip.w:after,  #powerTip.w:before,
-#powerTip.e:after,  #powerTip.e:before,
-#powerTip.ne:after, #powerTip.ne:before,
-#powerTip.se:after, #powerTip.se:before,
-#powerTip.nw:after, #powerTip.nw:before,
-#powerTip.sw:after, #powerTip.sw:before {
-	border: solid transparent;
-	content: " ";
-	height: 0;
-	width: 0;
-	position: absolute;
-}
-
-#powerTip.n:after,  #powerTip.s:after,
-#powerTip.w:after,  #powerTip.e:after,
-#powerTip.nw:after, #powerTip.ne:after,
-#powerTip.sw:after, #powerTip.se:after {
-	border-color: rgba(255, 255, 255, 0);
-}
-
-#powerTip.n:before,  #powerTip.s:before,
-#powerTip.w:before,  #powerTip.e:before,
-#powerTip.nw:before, #powerTip.ne:before,
-#powerTip.sw:before, #powerTip.se:before {
-	border-color: rgba(128, 128, 128, 0);
-}
-
-#powerTip.n:after,  #powerTip.n:before,
-#powerTip.ne:after, #powerTip.ne:before,
-#powerTip.nw:after, #powerTip.nw:before {
-	top: 100%;
-}
-
-#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {
-	border-top-color: #ffffff;
-	border-width: 10px;
-	margin: 0px -10px;
-}
-#powerTip.n:before {
-	border-top-color: #808080;
-	border-width: 11px;
-	margin: 0px -11px;
-}
-#powerTip.n:after, #powerTip.n:before {
-	left: 50%;
-}
-
-#powerTip.nw:after, #powerTip.nw:before {
-	right: 14px;
-}
-
-#powerTip.ne:after, #powerTip.ne:before {
-	left: 14px;
-}
-
-#powerTip.s:after,  #powerTip.s:before,
-#powerTip.se:after, #powerTip.se:before,
-#powerTip.sw:after, #powerTip.sw:before {
-	bottom: 100%;
-}
-
-#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {
-	border-bottom-color: #ffffff;
-	border-width: 10px;
-	margin: 0px -10px;
-}
-
-#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {
-	border-bottom-color: #808080;
-	border-width: 11px;
-	margin: 0px -11px;
-}
-
-#powerTip.s:after, #powerTip.s:before {
-	left: 50%;
-}
-
-#powerTip.sw:after, #powerTip.sw:before {
-	right: 14px;
-}
-
-#powerTip.se:after, #powerTip.se:before {
-	left: 14px;
-}
-
-#powerTip.e:after, #powerTip.e:before {
-	left: 100%;
-}
-#powerTip.e:after {
-	border-left-color: #ffffff;
-	border-width: 10px;
-	top: 50%;
-	margin-top: -10px;
-}
-#powerTip.e:before {
-	border-left-color: #808080;
-	border-width: 11px;
-	top: 50%;
-	margin-top: -11px;
-}
-
-#powerTip.w:after, #powerTip.w:before {
-	right: 100%;
-}
-#powerTip.w:after {
-	border-right-color: #ffffff;
-	border-width: 10px;
-	top: 50%;
-	margin-top: -10px;
-}
-#powerTip.w:before {
-	border-right-color: #808080;
-	border-width: 11px;
-	top: 50%;
-	margin-top: -11px;
-}
-
- at media print
-{
-  #top { display: none; }
-  #side-nav { display: none; }
-  #nav-path { display: none; }
-  body { overflow:visible; }
-  h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
-  .summary { display: none; }
-  .memitem { page-break-inside: avoid; }
-  #doc-content
-  {
-    margin-left:0 !important;
-    height:auto !important;
-    width:auto !important;
-    overflow:inherit;
-    display:inline;
-  }
-}
-
diff --git a/doc/html/doxygen.png b/doc/html/doxygen.png
deleted file mode 100644
index 3ff17d8..0000000
Binary files a/doc/html/doxygen.png and /dev/null differ
diff --git a/doc/html/dynsections.js b/doc/html/dynsections.js
deleted file mode 100644
index 2f15470..0000000
--- a/doc/html/dynsections.js
+++ /dev/null
@@ -1,104 +0,0 @@
-function toggleVisibility(linkObj)
-{
- var base = $(linkObj).attr('id');
- var summary = $('#'+base+'-summary');
- var content = $('#'+base+'-content');
- var trigger = $('#'+base+'-trigger');
- var src=$(trigger).attr('src');
- if (content.is(':visible')===true) {
-   content.hide();
-   summary.show();
-   $(linkObj).addClass('closed').removeClass('opened');
-   $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
- } else {
-   content.show();
-   summary.hide();
-   $(linkObj).removeClass('closed').addClass('opened');
-   $(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
- } 
- return false;
-}
-
-function updateStripes()
-{
-  $('table.directory tr').
-       removeClass('even').filter(':visible:even').addClass('even');
-}
-function toggleLevel(level)
-{
-  $('table.directory tr').each(function(){ 
-    var l = this.id.split('_').length-1;
-    var i = $('#img'+this.id.substring(3));
-    var a = $('#arr'+this.id.substring(3));
-    if (l<level+1) {
-      i.attr('src','ftv2folderopen.png');
-      a.attr('src','ftv2mnode.png');
-      $(this).show();
-    } else if (l==level+1) {
-      i.attr('src','ftv2folderclosed.png');
-      a.attr('src','ftv2pnode.png');
-      $(this).show();
-    } else {
-      $(this).hide();
-    }
-  });
-  updateStripes();
-}
-
-function toggleFolder(id)
-{
-  //The clicked row
-  var currentRow = $('#row_'+id);
-  var currentRowImages = currentRow.find("img");
-
-  //All rows after the clicked row
-  var rows = currentRow.nextAll("tr");
-
-  //Only match elements AFTER this one (can't hide elements before)
-  var childRows = rows.filter(function() {
-    var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
-    return this.id.match(re);
-  });
-
-  //First row is visible we are HIDING
-  if (childRows.filter(':first').is(':visible')===true) {
-    currentRowImages.filter("[id^=arr]").attr('src', 'ftv2pnode.png');
-    currentRowImages.filter("[id^=img]").attr('src', 'ftv2folderclosed.png');
-    rows.filter("[id^=row_"+id+"]").hide();
-  } else { //We are SHOWING
-    //All sub images
-    var childImages = childRows.find("img");
-    var childImg = childImages.filter("[id^=img]");
-    var childArr = childImages.filter("[id^=arr]");
-
-    currentRow.find("[id^=arr]").attr('src', 'ftv2mnode.png'); //open row
-    currentRow.find("[id^=img]").attr('src', 'ftv2folderopen.png'); //open row
-    childImg.attr('src','ftv2folderclosed.png'); //children closed
-    childArr.attr('src','ftv2pnode.png'); //children closed
-    childRows.show(); //show all children
-  }
-  updateStripes();
-}
-
-
-function toggleInherit(id)
-{
-  var rows = $('tr.inherit.'+id);
-  var img = $('tr.inherit_header.'+id+' img');
-  var src = $(img).attr('src');
-  if (rows.filter(':first').is(':visible')===true) {
-    rows.css('display','none');
-    $(img).attr('src',src.substring(0,src.length-8)+'closed.png');
-  } else {
-    rows.css('display','table-row'); // using show() causes jump in firefox
-    $(img).attr('src',src.substring(0,src.length-10)+'open.png');
-  }
-}
-
-
-$(document).ready(function() {
-  $('.code,.codeRef').each(function() {
-    $(this).data('powertip',$('#'+$(this).attr('href').replace(/.*\//,'').replace(/[^a-z_A-Z0-9]/g,'_')).html());
-    $(this).powerTip({ placement: 's', smartPlacement: true, mouseOnToPopup: true });
-  });
-});
diff --git a/doc/html/files.html b/doc/html/files.html
deleted file mode 100644
index b759f96..0000000
--- a/doc/html/files.html
+++ /dev/null
@@ -1,254 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: File List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">File List</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock">Here is a list of all documented files with brief descriptions:</div><div class="directory">
-<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span><span onclick="javascript:toggleLevel(4);">4</span>]</div><table class="directory">
-<tr id="row_0_" class="even"><td class="entry"><img id="arr_0_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('0_')"/><img id="img_0_" src="ftv2folderopen.png" alt="-" width="24" height="22" onclick="toggleFolder('0_')"/><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html" target="_self">qgis</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_0_0_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('0_0_')"/><img id="img_0_0_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('0_0_')"/><a class="el" href="dir_b7cc22b4453454f1e686d9a2e78d988d.html" target="_self">pktools</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pktools_2____init_____8py_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>__init__.py</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pktools_2pkcomposite_8py_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkcomposite.py</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_2_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pktools_2pkcrop_8py_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkcrop.py</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_3_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pktools_2pkdiff__accuracy_8py_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkdiff_accuracy.py</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_4_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pktools_2pkextract_8py_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkextract.py</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_5_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pktools_2pkextract__grid_8py_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkextract_grid.py</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_6_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pktools_2pkextract__random_8py_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkextract_random.py</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_7_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pktools_2pkfilter__spatial_8py_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkfilter_spatial.py</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_8_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pktools_2pkfilter__spectral_8py_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkfilter_spectral.py</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_9_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pktools_2pkfilterdem_8py_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkfilterdem.py</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_10_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pktools_2pkgetmask_8py_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkgetmask.py</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_11_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pktools_2pklas2img_8py_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pklas2img.py</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_12_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pktools_2pkreclass_8py_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkreclass.py</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_13_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pktools_2pksetmask_8py_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pksetmask.py</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_14_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pktools_2pksvm_8py_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pksvm.py</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_15_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pktools_2pktoolsAlgorithm_8py_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pktoolsAlgorithm.py</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_16_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pktools_2pktoolsAlgorithmProvider_8py_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pktoolsAlgorithmProvider.py</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_17_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pktools_2pktoolsUtils_8py_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pktoolsUtils.py</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_18_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="pktools_2ProcessingPktoolsPlugin_8py_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>ProcessingPktoolsPlugin.py</b></td><td class="desc"></td></tr>
-<tr id="row_0_1_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="____init_____8py_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>__init__.py</b></td><td class="desc"></td></tr>
-<tr id="row_0_2_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkcomposite_8py_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkcomposite.py</b></td><td class="desc"></td></tr>
-<tr id="row_0_3_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkcrop_8py_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkcrop.py</b></td><td class="desc"></td></tr>
-<tr id="row_0_4_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkdiff__accuracy_8py_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkdiff_accuracy.py</b></td><td class="desc"></td></tr>
-<tr id="row_0_5_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkextract_8py_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkextract.py</b></td><td class="desc"></td></tr>
-<tr id="row_0_6_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkextract__grid_8py_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkextract_grid.py</b></td><td class="desc"></td></tr>
-<tr id="row_0_7_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkextract__random_8py_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkextract_random.py</b></td><td class="desc"></td></tr>
-<tr id="row_0_8_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkfilter__spatial_8py_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkfilter_spatial.py</b></td><td class="desc"></td></tr>
-<tr id="row_0_9_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkfilter__spectral_8py_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkfilter_spectral.py</b></td><td class="desc"></td></tr>
-<tr id="row_0_10_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkfilterdem_8py_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkfilterdem.py</b></td><td class="desc"></td></tr>
-<tr id="row_0_11_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkgetmask_8py_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkgetmask.py</b></td><td class="desc"></td></tr>
-<tr id="row_0_12_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pklas2img_8py_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pklas2img.py</b></td><td class="desc"></td></tr>
-<tr id="row_0_13_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkreclass_8py_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkreclass.py</b></td><td class="desc"></td></tr>
-<tr id="row_0_14_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pksetmask_8py_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pksetmask.py</b></td><td class="desc"></td></tr>
-<tr id="row_0_15_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pksvm_8py_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pksvm.py</b></td><td class="desc"></td></tr>
-<tr id="row_0_16_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pktoolsAlgorithm_8py_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pktoolsAlgorithm.py</b></td><td class="desc"></td></tr>
-<tr id="row_0_17_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pktoolsAlgorithmProvider_8py_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pktoolsAlgorithmProvider.py</b></td><td class="desc"></td></tr>
-<tr id="row_0_18_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pktoolsUtils_8py_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pktoolsUtils.py</b></td><td class="desc"></td></tr>
-<tr id="row_0_19_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="ProcessingPktoolsPlugin_8py_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>ProcessingPktoolsPlugin.py</b></td><td class="desc"></td></tr>
-<tr id="row_1_"><td class="entry"><img id="arr_1_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_')"/><img id="img_1_" src="ftv2folderopen.png" alt="-" width="24" height="22" onclick="toggleFolder('1_')"/><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html" target="_self">qt</a></td><td class="desc"></td></tr>
-<tr id="row_1_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_0_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_0_')"/><img id="img_1_0_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('1_0_')"/><a class="el" href="dir_280a0ba2820d23d6529bf494f1ea3ddd.html" target="_self">build-pkcomposite_gui-gcc-Debug</a></td><td class="desc"></td></tr>
-<tr id="row_1_0_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="build-pkcomposite__gui-gcc-Debug_2moc__mainwindow_8cpp_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>moc_mainwindow.cpp</b></td><td class="desc"></td></tr>
-<tr id="row_1_0_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="build-pkcomposite__gui-gcc-Debug_2ui__mainwindow_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>ui_mainwindow.h</b></td><td class="desc"></td></tr>
-<tr id="row_1_1_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_1_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_1_')"/><img id="img_1_1_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('1_1_')"/><a class="el" href="dir_b8eb6544d8d9ffceba16909a7b9d17d7.html" target="_self">build-pkcomposite_gui-gcc-Release</a></td><td class="desc"></td></tr>
-<tr id="row_1_1_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="build-pkcomposite__gui-gcc-Release_2moc__mainwindow_8cpp_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>moc_mainwindow.cpp</b></td><td class="desc"></td></tr>
-<tr id="row_1_1_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="build-pkcomposite__gui-gcc-Release_2ui__mainwindow_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>ui_mainwindow.h</b></td><td class="desc"></td></tr>
-<tr id="row_1_2_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_2_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_2_')"/><img id="img_1_2_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('1_2_')"/><a class="el" href="dir_0f38b5d14ac73b43e2a48a75f9e70be8.html" target="_self">build-pkcrop_gui-gcc-Debug</a></td><td class="desc"></td></tr>
-<tr id="row_1_2_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="build-pkcrop__gui-gcc-Debug_2moc__mainwindow_8cpp_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>moc_mainwindow.cpp</b></td><td class="desc"></td></tr>
-<tr id="row_1_2_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="build-pkcrop__gui-gcc-Debug_2ui__mainwindow_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>ui_mainwindow.h</b></td><td class="desc"></td></tr>
-<tr id="row_1_3_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_3_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_3_')"/><img id="img_1_3_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('1_3_')"/><a class="el" href="dir_f92e37ed5759424bff98155847b1034b.html" target="_self">build-pkcrop_gui-gcc-Release</a></td><td class="desc"></td></tr>
-<tr id="row_1_3_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="build-pkcrop__gui-gcc-Release_2moc__mainwindow_8cpp_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>moc_mainwindow.cpp</b></td><td class="desc"></td></tr>
-<tr id="row_1_3_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="build-pkcrop__gui-gcc-Release_2ui__mainwindow_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>ui_mainwindow.h</b></td><td class="desc"></td></tr>
-<tr id="row_1_4_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_4_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_4_')"/><img id="img_1_4_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('1_4_')"/><a class="el" href="dir_5f1e10fd305b434def78aaf73fd56d60.html" target="_self">build-pkdiff_gui-gcc-Debug</a></td><td class="desc"></td></tr>
-<tr id="row_1_4_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="build-pkdiff__gui-gcc-Debug_2moc__mainwindow_8cpp_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>moc_mainwindow.cpp</b></td><td class="desc"></td></tr>
-<tr id="row_1_4_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="build-pkdiff__gui-gcc-Debug_2ui__mainwindow_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>ui_mainwindow.h</b></td><td class="desc"></td></tr>
-<tr id="row_1_5_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_5_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_5_')"/><img id="img_1_5_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('1_5_')"/><a class="el" href="dir_4dfaa1fe1382d1276d1c80b1d5035ade.html" target="_self">build-pkdiff_gui-gcc-Release</a></td><td class="desc"></td></tr>
-<tr id="row_1_5_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="build-pkdiff__gui-gcc-Release_2moc__mainwindow_8cpp_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>moc_mainwindow.cpp</b></td><td class="desc"></td></tr>
-<tr id="row_1_5_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="build-pkdiff__gui-gcc-Release_2ui__mainwindow_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>ui_mainwindow.h</b></td><td class="desc"></td></tr>
-<tr id="row_1_6_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_6_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_6_')"/><img id="img_1_6_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('1_6_')"/><a class="el" href="dir_d7b2ebecdb5f44d7fa09bdedebc881a7.html" target="_self">build-pkextract_gui-gcc-Debug</a></td><td class="desc"></td></tr>
-<tr id="row_1_6_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="build-pkextract__gui-gcc-Debug_2moc__mainwindow_8cpp_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>moc_mainwindow.cpp</b></td><td class="desc"></td></tr>
-<tr id="row_1_6_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="build-pkextract__gui-gcc-Debug_2ui__mainwindow_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>ui_mainwindow.h</b></td><td class="desc"></td></tr>
-<tr id="row_1_7_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_7_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_7_')"/><img id="img_1_7_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('1_7_')"/><a class="el" href="dir_41d189c72498e24f979b227eb8e138b1.html" target="_self">build-pkextract_gui-gcc-Release</a></td><td class="desc"></td></tr>
-<tr id="row_1_7_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="build-pkextract__gui-gcc-Release_2moc__mainwindow_8cpp_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>moc_mainwindow.cpp</b></td><td class="desc"></td></tr>
-<tr id="row_1_7_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="build-pkextract__gui-gcc-Release_2ui__mainwindow_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>ui_mainwindow.h</b></td><td class="desc"></td></tr>
-<tr id="row_1_8_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_8_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_8_')"/><img id="img_1_8_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('1_8_')"/><a class="el" href="dir_e61db0d85028141ec5940fd7f2a6e0fc.html" target="_self">build-pksvm_gui-gcc-Debug</a></td><td class="desc"></td></tr>
-<tr id="row_1_8_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="build-pksvm__gui-gcc-Debug_2moc__mainwindow_8cpp_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>moc_mainwindow.cpp</b></td><td class="desc"></td></tr>
-<tr id="row_1_8_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="build-pksvm__gui-gcc-Debug_2ui__mainwindow_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>ui_mainwindow.h</b></td><td class="desc"></td></tr>
-<tr id="row_1_9_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_9_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_9_')"/><img id="img_1_9_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('1_9_')"/><a class="el" href="dir_ed1df9621940d6aa1183c365ad1750d2.html" target="_self">build-pksvm_gui-gcc-Release</a></td><td class="desc"></td></tr>
-<tr id="row_1_9_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="build-pksvm__gui-gcc-Release_2moc__mainwindow_8cpp_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>moc_mainwindow.cpp</b></td><td class="desc"></td></tr>
-<tr id="row_1_9_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="build-pksvm__gui-gcc-Release_2ui__mainwindow_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>ui_mainwindow.h</b></td><td class="desc"></td></tr>
-<tr id="row_1_10_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_10_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_10_')"/><img id="img_1_10_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('1_10_')"/><a class="el" href="dir_ab1bbd5a6b4bd6507847335527b029bb.html" target="_self">pkcomposite_gui</a></td><td class="desc"></td></tr>
-<tr id="row_1_10_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkcomposite__gui_2main_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>main.cc</b></td><td class="desc"></td></tr>
-<tr id="row_1_10_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkcomposite__gui_2mainwindow_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>mainwindow.cc</b></td><td class="desc"></td></tr>
-<tr id="row_1_10_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="pkcomposite__gui_2mainwindow_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>mainwindow.h</b></td><td class="desc"></td></tr>
-<tr id="row_1_11_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_11_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_11_')"/><img id="img_1_11_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('1_11_')"/><a class="el" href="dir_35acdce8930fac877097c845a64519e5.html" target="_self">pkcrop_gui</a></td><td class="desc"></td></tr>
-<tr id="row_1_11_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkcrop__gui_2main_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>main.cc</b></td><td class="desc"></td></tr>
-<tr id="row_1_11_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkcrop__gui_2mainwindow_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>mainwindow.cc</b></td><td class="desc"></td></tr>
-<tr id="row_1_11_2_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="pkcrop__gui_2mainwindow_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>mainwindow.h</b></td><td class="desc"></td></tr>
-<tr id="row_1_12_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_12_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_12_')"/><img id="img_1_12_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('1_12_')"/><a class="el" href="dir_b6b6de371025fb67c6b8623f3d3cd2ce.html" target="_self">pkdiff_gui</a></td><td class="desc"></td></tr>
-<tr id="row_1_12_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkdiff__gui_2main_8cpp_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>main.cpp</b></td><td class="desc"></td></tr>
-<tr id="row_1_12_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkdiff__gui_2mainwindow_8cpp_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>mainwindow.cpp</b></td><td class="desc"></td></tr>
-<tr id="row_1_12_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="pkdiff__gui_2mainwindow_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>mainwindow.h</b></td><td class="desc"></td></tr>
-<tr id="row_1_13_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_13_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_13_')"/><img id="img_1_13_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('1_13_')"/><a class="el" href="dir_2676862852e3d558e3597542a81ecc63.html" target="_self">pkextract_gui</a></td><td class="desc"></td></tr>
-<tr id="row_1_13_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkextract__gui_2main_8cpp_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>main.cpp</b></td><td class="desc"></td></tr>
-<tr id="row_1_13_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkextract__gui_2mainwindow_8cpp_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>mainwindow.cpp</b></td><td class="desc"></td></tr>
-<tr id="row_1_13_2_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="pkextract__gui_2mainwindow_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>mainwindow.h</b></td><td class="desc"></td></tr>
-<tr id="row_1_14_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_14_" src="ftv2plastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('1_14_')"/><img id="img_1_14_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('1_14_')"/><a class="el" href="dir_b66e135988e27fdc966ddddb8708f514.html" target="_self">pksvm_gui</a></td><td class="desc"></td></tr>
-<tr id="row_1_14_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pksvm__gui_2main_8cpp_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>main.cpp</b></td><td class="desc"></td></tr>
-<tr id="row_1_14_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pksvm__gui_2mainwindow_8cpp_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>mainwindow.cpp</b></td><td class="desc"></td></tr>
-<tr id="row_1_14_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="pksvm__gui_2mainwindow_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>mainwindow.h</b></td><td class="desc"></td></tr>
-<tr id="row_2_"><td class="entry"><img id="arr_2_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('2_')"/><img id="img_2_" src="ftv2folderopen.png" alt="-" width="24" height="22" onclick="toggleFolder('2_')"/><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html" target="_self">src</a></td><td class="desc"></td></tr>
-<tr id="row_2_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_2_0_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('2_0_')"/><img id="img_2_0_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('2_0_')"/><a class="el" href="dir_e6df591b0639d4c4807ef64d058833e2.html" target="_self">algorithms</a></td><td class="desc"></td></tr>
-<tr id="row_2_0_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="ConfusionMatrix_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>ConfusionMatrix.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_0_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="ConfusionMatrix_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>ConfusionMatrix.h</b></td><td class="desc"></td></tr>
-<tr id="row_2_0_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="CostFactory_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>CostFactory.h</b></td><td class="desc"></td></tr>
-<tr id="row_2_0_3_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="CostFactorySVM_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>CostFactorySVM.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_0_4_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="CostFactorySVM_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>CostFactorySVM.h</b></td><td class="desc"></td></tr>
-<tr id="row_2_0_5_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="Egcs_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>Egcs.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_0_6_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="Egcs_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>Egcs.h</b></td><td class="desc"></td></tr>
-<tr id="row_2_0_7_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="FeatureSelector_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>FeatureSelector.h</b></td><td class="desc"></td></tr>
-<tr id="row_2_0_8_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="Filter_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>Filter.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_0_9_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="Filter_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>Filter.h</b></td><td class="desc"></td></tr>
-<tr id="row_2_0_10_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="Filter2d_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>Filter2d.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_0_11_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="Filter2d_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>Filter2d.h</b></td><td class="desc"></td></tr>
-<tr id="row_2_0_12_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="Filter__old_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>Filter_old.h</b></td><td class="desc"></td></tr>
-<tr id="row_2_0_13_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="ImgRegression_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>ImgRegression.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_0_14_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="ImgRegression_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>ImgRegression.h</b></td><td class="desc"></td></tr>
-<tr id="row_2_0_15_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="myfann__cpp_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>myfann_cpp.h</b></td><td class="desc"></td></tr>
-<tr id="row_2_0_16_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="OptFactory_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>OptFactory.h</b></td><td class="desc"></td></tr>
-<tr id="row_2_0_17_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="StatFactory_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>StatFactory.h</b></td><td class="desc"></td></tr>
-<tr id="row_2_0_18_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="svm_8cpp_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>svm.cpp</b></td><td class="desc"></td></tr>
-<tr id="row_2_0_19_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="svm_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>svm.h</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_2_1_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('2_1_')"/><img id="img_2_1_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('2_1_')"/><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html" target="_self">apps</a></td><td class="desc"></td></tr>
-<tr id="row_2_1_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_2_1_0_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('2_1_0_')"/><img id="img_2_1_0_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('2_1_0_')"/><a class="el" href="dir_e28b2035b152bb51229fe7a0fca4e376.html" target="_self"> [...]
-<tr id="row_2_1_0_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkeditogr_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkeditogr.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_0_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkenhance_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkenhance.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_0_2_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="pkndvi_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkndvi.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkann_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkann.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_2_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkascii2img_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkascii2img.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_3_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkascii2ogr_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkascii2ogr.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_4_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkcomposite_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkcomposite.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_5_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkcreatect_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkcreatect.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_6_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkcrop_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkcrop.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_7_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkdiff_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkdiff.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_8_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkdsm2shadow_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkdsm2shadow.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_9_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkdumpimg_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkdumpimg.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_10_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkdumpogr_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkdumpogr.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_11_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkdumpogr_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkdumpogr.h</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_12_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkegcs_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkegcs.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_13_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkextract_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkextract.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_14_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkfillnodata_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkfillnodata.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_15_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkfilter_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkfilter.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_16_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkfilterascii_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkfilterascii.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_17_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkfilterdem_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkfilterdem.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_18_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkfsann_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkfsann.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_19_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkfsann_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkfsann.h</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_20_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkfssvm_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkfssvm.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_21_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkgetmask_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkgetmask.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_22_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkinfo_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkinfo.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_23_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkkalman_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkkalman.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_24_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pklas2img_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pklas2img.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_25_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkoptsvm_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkoptsvm.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_26_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkpolygonize_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkpolygonize.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_27_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkreclass_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkreclass.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_28_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkregann_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkregann.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_29_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pksensormodel_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pksensormodel.h</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_30_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pksetmask_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pksetmask.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_31_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pksieve_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pksieve.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_32_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkstat_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkstat.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_33_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkstatascii_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkstatascii.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_34_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkstatogr_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkstatogr.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_35_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pkstatprofile_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pkstatprofile.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_1_36_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="pksvm_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pksvm.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_2_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_2_2_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('2_2_')"/><img id="img_2_2_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('2_2_')"/><a class="el" href="dir_0af1587c8378955de40f48b4bd1869f0.html" target="_self">base</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="IndexValue_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>IndexValue.h</b></td><td class="desc"></td></tr>
-<tr id="row_2_2_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="Optionpk_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>Optionpk.h</b></td><td class="desc"></td></tr>
-<tr id="row_2_2_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pktestOption_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>pktestOption.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_2_3_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="PosValue_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>PosValue.h</b></td><td class="desc"></td></tr>
-<tr id="row_2_2_4_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="Vector2d_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>Vector2d.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_2_5_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="Vector2d_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>Vector2d.h</b></td><td class="desc"></td></tr>
-<tr id="row_2_3_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_2_3_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('2_3_')"/><img id="img_2_3_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('2_3_')"/><a class="el" href="dir_849702d4228bd835bdf1201002937cb3.html" target="_self">fileclasses</a></td><td class="desc"></td></tr>
-<tr id="row_2_3_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="FileReaderAscii_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>FileReaderAscii.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_3_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="FileReaderAscii_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>FileReaderAscii.h</b></td><td class="desc"></td></tr>
-<tr id="row_2_4_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_2_4_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('2_4_')"/><img id="img_2_4_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('2_4_')"/><a class="el" href="dir_6d2fd95b0bd390617ad5a1eb4a537b4a.html" target="_self">imageclasses</a></td><td class="desc"></td></tr>
-<tr id="row_2_4_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="ImgGdal_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>ImgGdal.h</b></td><td class="desc"></td></tr>
-<tr id="row_2_4_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="ImgRasterGdal_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>ImgRasterGdal.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_4_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="ImgRasterGdal_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>ImgRasterGdal.h</b></td><td class="desc"></td></tr>
-<tr id="row_2_4_3_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="ImgReaderGdal_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>ImgReaderGdal.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_4_4_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="ImgReaderGdal_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>ImgReaderGdal.h</b></td><td class="desc"></td></tr>
-<tr id="row_2_4_5_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="ImgReaderOgr_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>ImgReaderOgr.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_4_6_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="ImgReaderOgr_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>ImgReaderOgr.h</b></td><td class="desc"></td></tr>
-<tr id="row_2_4_7_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="ImgUpdaterGdal_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>ImgUpdaterGdal.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_4_8_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="ImgUpdaterGdal_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>ImgUpdaterGdal.h</b></td><td class="desc"></td></tr>
-<tr id="row_2_4_9_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="ImgWriterGdal_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>ImgWriterGdal.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_4_10_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="ImgWriterGdal_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>ImgWriterGdal.h</b></td><td class="desc"></td></tr>
-<tr id="row_2_4_11_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="ImgWriterOgr_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>ImgWriterOgr.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_4_12_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="ImgWriterOgr_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>ImgWriterOgr.h</b></td><td class="desc"></td></tr>
-<tr id="row_2_5_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_2_5_" src="ftv2plastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('2_5_')"/><img id="img_2_5_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('2_5_')"/><a class="el" href="dir_89a0bd85ecec8fbb2c320310670be290.html" target="_self">lasclasses</a></td><td class="desc"></td></tr>
-<tr id="row_2_5_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="FileReaderLas_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>FileReaderLas.cc</b></td><td class="desc"></td></tr>
-<tr id="row_2_5_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="FileReaderLas_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>FileReaderLas.h</b></td><td class="desc"></td></tr>
-<tr id="row_3_" class="even"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="config_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><b>config.h</b></td><td class="desc"></td></tr>
-</table>
-</div><!-- directory -->
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/ftv2blank.png b/doc/html/ftv2blank.png
deleted file mode 100644
index 63c605b..0000000
Binary files a/doc/html/ftv2blank.png and /dev/null differ
diff --git a/doc/html/ftv2cl.png b/doc/html/ftv2cl.png
deleted file mode 100644
index 132f657..0000000
Binary files a/doc/html/ftv2cl.png and /dev/null differ
diff --git a/doc/html/ftv2doc.png b/doc/html/ftv2doc.png
deleted file mode 100644
index 17edabf..0000000
Binary files a/doc/html/ftv2doc.png and /dev/null differ
diff --git a/doc/html/ftv2folderclosed.png b/doc/html/ftv2folderclosed.png
deleted file mode 100644
index bb8ab35..0000000
Binary files a/doc/html/ftv2folderclosed.png and /dev/null differ
diff --git a/doc/html/ftv2folderopen.png b/doc/html/ftv2folderopen.png
deleted file mode 100644
index d6c7f67..0000000
Binary files a/doc/html/ftv2folderopen.png and /dev/null differ
diff --git a/doc/html/ftv2lastnode.png b/doc/html/ftv2lastnode.png
deleted file mode 100644
index 63c605b..0000000
Binary files a/doc/html/ftv2lastnode.png and /dev/null differ
diff --git a/doc/html/ftv2link.png b/doc/html/ftv2link.png
deleted file mode 100644
index 17edabf..0000000
Binary files a/doc/html/ftv2link.png and /dev/null differ
diff --git a/doc/html/ftv2mlastnode.png b/doc/html/ftv2mlastnode.png
deleted file mode 100644
index 0b63f6d..0000000
Binary files a/doc/html/ftv2mlastnode.png and /dev/null differ
diff --git a/doc/html/ftv2mnode.png b/doc/html/ftv2mnode.png
deleted file mode 100644
index 0b63f6d..0000000
Binary files a/doc/html/ftv2mnode.png and /dev/null differ
diff --git a/doc/html/ftv2mo.png b/doc/html/ftv2mo.png
deleted file mode 100644
index 4bfb80f..0000000
Binary files a/doc/html/ftv2mo.png and /dev/null differ
diff --git a/doc/html/ftv2node.png b/doc/html/ftv2node.png
deleted file mode 100644
index 63c605b..0000000
Binary files a/doc/html/ftv2node.png and /dev/null differ
diff --git a/doc/html/ftv2ns.png b/doc/html/ftv2ns.png
deleted file mode 100644
index 72e3d71..0000000
Binary files a/doc/html/ftv2ns.png and /dev/null differ
diff --git a/doc/html/ftv2plastnode.png b/doc/html/ftv2plastnode.png
deleted file mode 100644
index c6ee22f..0000000
Binary files a/doc/html/ftv2plastnode.png and /dev/null differ
diff --git a/doc/html/ftv2pnode.png b/doc/html/ftv2pnode.png
deleted file mode 100644
index c6ee22f..0000000
Binary files a/doc/html/ftv2pnode.png and /dev/null differ
diff --git a/doc/html/ftv2splitbar.png b/doc/html/ftv2splitbar.png
deleted file mode 100644
index fe895f2..0000000
Binary files a/doc/html/ftv2splitbar.png and /dev/null differ
diff --git a/doc/html/ftv2vertline.png b/doc/html/ftv2vertline.png
deleted file mode 100644
index 63c605b..0000000
Binary files a/doc/html/ftv2vertline.png and /dev/null differ
diff --git a/doc/html/functions.html b/doc/html/functions.html
deleted file mode 100644
index dc4d1c6..0000000
--- a/doc/html/functions.html
+++ /dev/null
@@ -1,137 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Class Members</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow3" class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="contents">
-<div class="textblock">Here is a list of all documented class members with links to the class documentation for each member:</div><ul>
-<li>findSubstring()
-: <a class="el" href="classOptionpk.html#a092414f315f6b310fc88eaf5688b81f4">Optionpk< T ></a>
-</li>
-<li>getDescription()
-: <a class="el" href="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a7ccc5c08d6d0d906b57e978657d628c8">qgis.pktools.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider</a>
-, <a class="el" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#aa6d4f9562f9502ae7c12e90d0d95d7b1">qgis.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider</a>
-</li>
-<li>getGPLv3License()
-: <a class="el" href="classOptionpk.html#acb7e411ce6a318424bf2ad1f9dc846ff">Optionpk< T ></a>
-</li>
-<li>getHelp()
-: <a class="el" href="classOptionpk.html#a6054c64a684a4aaba41787d9f8be031f">Optionpk< T ></a>
-</li>
-<li>getLongName()
-: <a class="el" href="classOptionpk.html#af7ce0ff4dfe57f1e6685b67fb1d70b69">Optionpk< T ></a>
-</li>
-<li>getName()
-: <a class="el" href="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#aa1d3118388803531aa5368f90bd0dbce">qgis.pktools.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider</a>
-, <a class="el" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#ac0eb1ee881715c3efe5819e23b8ff473">qgis.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider</a>
-</li>
-<li>getShortName()
-: <a class="el" href="classOptionpk.html#ae0d0d55bac2456e6cbcec97892667742">Optionpk< T ></a>
-</li>
-<li>initializeSettings()
-: <a class="el" href="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a3c0515d681ec29ab388bc10d2d5cb455">qgis.pktools.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider</a>
-, <a class="el" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a41cbf8f2612d0ba5e7e858f421e4c344">qgis.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider</a>
-</li>
-<li>operator<<
-: <a class="el" href="classOptionpk.html#a4ab58d03540efa49fe3ebf6a58507f23">Optionpk< T ></a>
-</li>
-<li>Optionpk()
-: <a class="el" href="classOptionpk.html#a0082d074d437413b3beefa06c0521644">Optionpk< T ></a>
-</li>
-<li>retrieveOption()
-: <a class="el" href="classOptionpk.html#a7b788a1b8e5c738732a1733613065ef7">Optionpk< T ></a>
-</li>
-<li>setAll()
-: <a class="el" href="classOptionpk.html#affd58e09b1baaf0b1754fbf938eea11a">Optionpk< T ></a>
-</li>
-<li>setDefault()
-: <a class="el" href="classOptionpk.html#ae9dc2dafc605ed3e2a8a798063ce7187">Optionpk< T ></a>
-</li>
-<li>setHelp()
-: <a class="el" href="classOptionpk.html#afea9af606e15b12bc49bc25d0477fe8e">Optionpk< T ></a>
-</li>
-<li>setHide()
-: <a class="el" href="classOptionpk.html#a95628f0f149cb9465468facfb3f0f915">Optionpk< T ></a>
-</li>
-<li>setLongName()
-: <a class="el" href="classOptionpk.html#a6ee7c0fc0cbea09eac543e1d2c5b7457">Optionpk< T ></a>
-</li>
-<li>setShortName()
-: <a class="el" href="classOptionpk.html#a561e7d4b4141cd9023563d4dee01b932">Optionpk< T ></a>
-</li>
-<li>unload()
-: <a class="el" href="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a0d55ab57e07e57292f309173cf65114f">qgis.pktools.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider</a>
-, <a class="el" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a458d5bb02c856ca83d7ca332ff4125aa">qgis.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider</a>
-</li>
-<li>~Optionpk()
-: <a class="el" href="classOptionpk.html#aacf921491e6b6fab3c4cad8b39594cff">Optionpk< T ></a>
-</li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/functions_func.html b/doc/html/functions_func.html
deleted file mode 100644
index e26fdd4..0000000
--- a/doc/html/functions_func.html
+++ /dev/null
@@ -1,134 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Class Members - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow3" class="tabs2">
-    <ul class="tablist">
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
-      <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="contents">
- <ul>
-<li>findSubstring()
-: <a class="el" href="classOptionpk.html#a092414f315f6b310fc88eaf5688b81f4">Optionpk< T ></a>
-</li>
-<li>getDescription()
-: <a class="el" href="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a7ccc5c08d6d0d906b57e978657d628c8">qgis.pktools.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider</a>
-, <a class="el" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#aa6d4f9562f9502ae7c12e90d0d95d7b1">qgis.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider</a>
-</li>
-<li>getGPLv3License()
-: <a class="el" href="classOptionpk.html#acb7e411ce6a318424bf2ad1f9dc846ff">Optionpk< T ></a>
-</li>
-<li>getHelp()
-: <a class="el" href="classOptionpk.html#a6054c64a684a4aaba41787d9f8be031f">Optionpk< T ></a>
-</li>
-<li>getLongName()
-: <a class="el" href="classOptionpk.html#af7ce0ff4dfe57f1e6685b67fb1d70b69">Optionpk< T ></a>
-</li>
-<li>getName()
-: <a class="el" href="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#aa1d3118388803531aa5368f90bd0dbce">qgis.pktools.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider</a>
-, <a class="el" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#ac0eb1ee881715c3efe5819e23b8ff473">qgis.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider</a>
-</li>
-<li>getShortName()
-: <a class="el" href="classOptionpk.html#ae0d0d55bac2456e6cbcec97892667742">Optionpk< T ></a>
-</li>
-<li>initializeSettings()
-: <a class="el" href="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a3c0515d681ec29ab388bc10d2d5cb455">qgis.pktools.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider</a>
-, <a class="el" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a41cbf8f2612d0ba5e7e858f421e4c344">qgis.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider</a>
-</li>
-<li>Optionpk()
-: <a class="el" href="classOptionpk.html#a0082d074d437413b3beefa06c0521644">Optionpk< T ></a>
-</li>
-<li>retrieveOption()
-: <a class="el" href="classOptionpk.html#a7b788a1b8e5c738732a1733613065ef7">Optionpk< T ></a>
-</li>
-<li>setAll()
-: <a class="el" href="classOptionpk.html#affd58e09b1baaf0b1754fbf938eea11a">Optionpk< T ></a>
-</li>
-<li>setDefault()
-: <a class="el" href="classOptionpk.html#ae9dc2dafc605ed3e2a8a798063ce7187">Optionpk< T ></a>
-</li>
-<li>setHelp()
-: <a class="el" href="classOptionpk.html#afea9af606e15b12bc49bc25d0477fe8e">Optionpk< T ></a>
-</li>
-<li>setHide()
-: <a class="el" href="classOptionpk.html#a95628f0f149cb9465468facfb3f0f915">Optionpk< T ></a>
-</li>
-<li>setLongName()
-: <a class="el" href="classOptionpk.html#a6ee7c0fc0cbea09eac543e1d2c5b7457">Optionpk< T ></a>
-</li>
-<li>setShortName()
-: <a class="el" href="classOptionpk.html#a561e7d4b4141cd9023563d4dee01b932">Optionpk< T ></a>
-</li>
-<li>unload()
-: <a class="el" href="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a0d55ab57e07e57292f309173cf65114f">qgis.pktools.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider</a>
-, <a class="el" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a458d5bb02c856ca83d7ca332ff4125aa">qgis.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider</a>
-</li>
-<li>~Optionpk()
-: <a class="el" href="classOptionpk.html#aacf921491e6b6fab3c4cad8b39594cff">Optionpk< T ></a>
-</li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/functions_rela.html b/doc/html/functions_rela.html
deleted file mode 100644
index 470f3a6..0000000
--- a/doc/html/functions_rela.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Class Members - Related Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li class="current"><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow3" class="tabs2">
-    <ul class="tablist">
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_func.html"><span>Functions</span></a></li>
-      <li class="current"><a href="functions_rela.html"><span>Related Functions</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="contents">
- <ul>
-<li>operator<<
-: <a class="el" href="classOptionpk.html#a4ab58d03540efa49fe3ebf6a58507f23">Optionpk< T ></a>
-</li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/graph_legend.html b/doc/html/graph_legend.html
deleted file mode 100644
index cb6c687..0000000
--- a/doc/html/graph_legend.html
+++ /dev/null
@@ -1,127 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Graph Legend</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">Graph Legend</div>  </div>
-</div><!--header-->
-<div class="contents">
-<p>This page explains how to interpret the graphs that are generated by doxygen.</p>
-<p>Consider the following example: </p>
-<div class="fragment"><div class="line"><span class="comment">/*! Invisible class because of truncation */</span></div>
-<div class="line"><span class="keyword">class </span>Invisible { };</div>
-<div class="line"><span class="comment"></span></div>
-<div class="line"><span class="comment">/*! Truncated class, inheritance relation is hidden */</span></div>
-<div class="line"><span class="keyword">class </span>Truncated : <span class="keyword">public</span> Invisible { };</div>
-<div class="line"></div>
-<div class="line"><span class="comment">/* Class not documented with doxygen comments */</span></div>
-<div class="line"><span class="keyword">class </span>Undocumented { };</div>
-<div class="line"><span class="comment"></span></div>
-<div class="line"><span class="comment">/*! Class that is inherited using public inheritance */</span></div>
-<div class="line"><span class="keyword">class </span>PublicBase : <span class="keyword">public</span> Truncated { };</div>
-<div class="line"><span class="comment"></span></div>
-<div class="line"><span class="comment">/*! A template class */</span></div>
-<div class="line"><span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">class </span>Templ { };</div>
-<div class="line"><span class="comment"></span></div>
-<div class="line"><span class="comment">/*! Class that is inherited using protected inheritance */</span></div>
-<div class="line"><span class="keyword">class </span>ProtectedBase { };</div>
-<div class="line"><span class="comment"></span></div>
-<div class="line"><span class="comment">/*! Class that is inherited using private inheritance */</span></div>
-<div class="line"><span class="keyword">class </span>PrivateBase { };</div>
-<div class="line"><span class="comment"></span></div>
-<div class="line"><span class="comment">/*! Class that is used by the Inherited class */</span></div>
-<div class="line"><span class="keyword">class </span>Used { };</div>
-<div class="line"><span class="comment"></span></div>
-<div class="line"><span class="comment">/*! Super class that inherits a number of other classes */</span></div>
-<div class="line"><span class="keyword">class </span>Inherited : <span class="keyword">public</span> PublicBase,</div>
-<div class="line">                  <span class="keyword">protected</span> ProtectedBase,</div>
-<div class="line">                  <span class="keyword">private</span> PrivateBase,</div>
-<div class="line">                  <span class="keyword">public</span> Undocumented,</div>
-<div class="line">                  <span class="keyword">public</span> Templ<int></div>
-<div class="line">{</div>
-<div class="line">  <span class="keyword">private</span>:</div>
-<div class="line">    Used *m_usedClass;</div>
-<div class="line">};</div>
-</div><!-- fragment --><p> This will result in the following graph:</p>
-<center><div class="image">
-<img src="graph_legend.png" />
-</div>
-</center><p>The boxes in the above graph have the following meaning: </p>
-<ul>
-<li>
-A filled gray box represents the struct or class for which the graph is generated. </li>
-<li>
-A box with a black border denotes a documented struct or class. </li>
-<li>
-A box with a grey border denotes an undocumented struct or class. </li>
-<li>
-A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries. </li>
-</ul>
-<p>The arrows have the following meaning: </p>
-<ul>
-<li>
-A dark blue arrow is used to visualize a public inheritance relation between two classes. </li>
-<li>
-A dark green arrow is used for protected inheritance. </li>
-<li>
-A dark red arrow is used for private inheritance. </li>
-<li>
-A purple dashed arrow is used if a class is contained or used by another class. The arrow is labeled with the variable(s) through which the pointed class or struct is accessible. </li>
-<li>
-A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance. </li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/graph_legend.md5 b/doc/html/graph_legend.md5
deleted file mode 100644
index a06ed05..0000000
--- a/doc/html/graph_legend.md5
+++ /dev/null
@@ -1 +0,0 @@
-387ff8eb65306fa251338d3c9bd7bfff
\ No newline at end of file
diff --git a/doc/html/graph_legend.png b/doc/html/graph_legend.png
deleted file mode 100644
index 6c1d0c2..0000000
Binary files a/doc/html/graph_legend.png and /dev/null differ
diff --git a/doc/html/hierarchy.html b/doc/html/hierarchy.html
deleted file mode 100644
index 7e9d511..0000000
--- a/doc/html/hierarchy.html
+++ /dev/null
@@ -1,189 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Class Hierarchy</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li class="current"><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">Class Hierarchy</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock">
-<p><a href="inherits.html">Go to the graphical class hierarchy</a></p>
-This inheritance list is sorted roughly, but not completely, alphabetically:</div><div class="directory">
-<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span>]</div><table class="directory">
-<tr id="row_0_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classCache.html" target="_self">Cache</a></td><td class="desc"></td></tr>
-<tr id="row_1_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classCompare__IndexValue.html" target="_self">Compare_IndexValue</a></td><td class="desc"></td></tr>
-<tr id="row_2_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classCompare__PosValue.html" target="_self">Compare_PosValue</a></td><td class="desc"></td></tr>
-<tr id="row_3_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classconfusionmatrix_1_1ConfusionMatrix.html" target="_self">confusionmatrix::ConfusionMatrix</a></td><td class="desc"></td></tr>
-<tr id="row_4_" class="even"><td class="entry"><img id="arr_4_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('4_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classCostFactory.html" target="_self">CostFactory</a></td><td class="desc"></td></tr>
-<tr id="row_4_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classCostFactoryANN.html" target="_self">CostFactoryANN</a></td><td class="desc"></td></tr>
-<tr id="row_4_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classCostFactorySVM.html" target="_self">CostFactorySVM</a></td><td class="desc"></td></tr>
-<tr id="row_5_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classDataModel.html" target="_self">DataModel</a></td><td class="desc"></td></tr>
-<tr id="row_6_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structdecision__function.html" target="_self">decision_function</a></td><td class="desc"></td></tr>
-<tr id="row_7_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classDecrease__IndexValue.html" target="_self">Decrease_IndexValue</a></td><td class="desc"></td></tr>
-<tr id="row_8_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classDecrease__PosValue.html" target="_self">Decrease_PosValue</a></td><td class="desc"></td></tr>
-<tr id="row_9_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classEgcs.html" target="_self">Egcs</a></td><td class="desc"></td></tr>
-<tr id="row_10_" class="even"><td class="entry"><img id="arr_10_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('10_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>std::exception</b></td><td class="desc">STL class </td></tr>
-<tr id="row_10_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_10_0_" src="ftv2plastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('10_0_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>std::runtime_error</b></td><td class="desc">STL class </td></tr>
-<tr id="row_10_0_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classBadConversion.html" target="_self">BadConversion</a></td><td class="desc">Throw this class when syntax error in command line option </td></tr>
-<tr id="row_11_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classFeatureSelector.html" target="_self">FeatureSelector</a></td><td class="desc"></td></tr>
-<tr id="row_12_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classFileReaderAscii.html" target="_self">FileReaderAscii</a></td><td class="desc"></td></tr>
-<tr id="row_13_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classFileReaderLas.html" target="_self">FileReaderLas</a></td><td class="desc"></td></tr>
-<tr id="row_14_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classfilter_1_1Filter.html" target="_self">filter::Filter</a></td><td class="desc"></td></tr>
-<tr id="row_15_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classfilter2d_1_1Filter2d.html" target="_self">filter2d::Filter2d</a></td><td class="desc"></td></tr>
-<tr id="row_16_" class="even"><td class="entry"><img id="arr_16_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('16_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>FilterI</b></td><td class="desc"></td></tr>
-<tr id="row_16_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classLastReturnFilter.html" target="_self">LastReturnFilter</a></td><td class="desc"></td></tr>
-<tr id="row_17_"><td class="entry"><img id="arr_17_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('17_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classImgRasterGdal.html" target="_self">ImgRasterGdal</a></td><td class="desc"></td></tr>
-<tr id="row_17_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_17_0_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('17_0_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classImgReaderGdal.html" target="_self">ImgReaderGdal</a></td><td class="desc"></td></tr>
-<tr id="row_17_0_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classImgUpdaterGdal.html" target="_self">ImgUpdaterGdal</a></td><td class="desc"></td></tr>
-<tr id="row_17_0_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classImgUpdaterGdal.html" target="_self">ImgUpdaterGdal</a></td><td class="desc"></td></tr>
-<tr id="row_17_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_17_1_" src="ftv2plastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('17_1_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classImgWriterGdal.html" target="_self">ImgWriterGdal</a></td><td class="desc"></td></tr>
-<tr id="row_17_1_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classImgUpdaterGdal.html" target="_self">ImgUpdaterGdal</a></td><td class="desc"></td></tr>
-<tr id="row_17_1_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classImgUpdaterGdal.html" target="_self">ImgUpdaterGdal</a></td><td class="desc"></td></tr>
-<tr id="row_18_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classImgReaderOgr.html" target="_self">ImgReaderOgr</a></td><td class="desc"></td></tr>
-<tr id="row_19_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classimgregression_1_1ImgRegression.html" target="_self">imgregression::ImgRegression</a></td><td class="desc"></td></tr>
-<tr id="row_20_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classImgWriterOgr.html" target="_self">ImgWriterOgr</a></td><td class="desc"></td></tr>
-<tr id="row_21_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classIncrease__IndexValue.html" target="_self">Increase_IndexValue</a></td><td class="desc"></td></tr>
-<tr id="row_22_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classIncrease__PosValue.html" target="_self">Increase_PosValue</a></td><td class="desc"></td></tr>
-<tr id="row_23_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structIndexValue.html" target="_self">IndexValue</a></td><td class="desc"></td></tr>
-<tr id="row_24_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classFANN_1_1neural__net.html" target="_self">FANN::neural_net</a></td><td class="desc"></td></tr>
-<tr id="row_25_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classOptFactory.html" target="_self">OptFactory</a></td><td class="desc"></td></tr>
-<tr id="row_26_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktoolsUtils_1_1pktoolsUtils.html" target="_self">qgis.pktoolsUtils.pktoolsUtils</a></td><td class="desc"></td></tr>
-<tr id="row_27_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktools_1_1pktoolsUtils_1_1pktoolsUtils.html" target="_self">qgis.pktools.pktoolsUtils.pktoolsUtils</a></td><td class="desc"></td></tr>
-<tr id="row_28_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structPosValue.html" target="_self">PosValue</a></td><td class="desc"></td></tr>
-<tr id="row_29_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktools_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin.html" target="_self">qgis.pktools.ProcessingPktoolsPlugin.ProcessingPktoolsPlugin</a></td><td class="desc"></td></tr>
-<tr id="row_30_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin.html" target="_self">qgis.ProcessingPktoolsPlugin.ProcessingPktoolsPlugin</a></td><td class="desc"></td></tr>
-<tr id="row_31_"><td class="entry"><img id="arr_31_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('31_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>QMainWindow</b></td><td class="desc"></td></tr>
-<tr id="row_31_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classMainWindow.html" target="_self">MainWindow</a></td><td class="desc"></td></tr>
-<tr id="row_31_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classMainWindow.html" target="_self">MainWindow</a></td><td class="desc"></td></tr>
-<tr id="row_31_2_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classMainWindow.html" target="_self">MainWindow</a></td><td class="desc"></td></tr>
-<tr id="row_31_3_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classMainWindow.html" target="_self">MainWindow</a></td><td class="desc"></td></tr>
-<tr id="row_31_4_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classMainWindow.html" target="_self">MainWindow</a></td><td class="desc"></td></tr>
-<tr id="row_32_" class="even"><td class="entry"><img id="arr_32_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('32_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classQMatrix.html" target="_self">QMatrix</a></td><td class="desc"></td></tr>
-<tr id="row_32_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_32_0_" src="ftv2plastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('32_0_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classKernel.html" target="_self">Kernel</a></td><td class="desc"></td></tr>
-<tr id="row_32_0_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classONE__CLASS__Q.html" target="_self">ONE_CLASS_Q</a></td><td class="desc"></td></tr>
-<tr id="row_32_0_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classSVC__Q.html" target="_self">SVC_Q</a></td><td class="desc"></td></tr>
-<tr id="row_32_0_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classSVR__Q.html" target="_self">SVR_Q</a></td><td class="desc"></td></tr>
-<tr id="row_33_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structSolver_1_1SolutionInfo.html" target="_self">Solver::SolutionInfo</a></td><td class="desc"></td></tr>
-<tr id="row_34_" class="even"><td class="entry"><img id="arr_34_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('34_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classSolver.html" target="_self">Solver</a></td><td class="desc"></td></tr>
-<tr id="row_34_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classSolver__NU.html" target="_self">Solver_NU</a></td><td class="desc"></td></tr>
-<tr id="row_35_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classstatfactory_1_1StatFactory.html" target="_self">statfactory::StatFactory</a></td><td class="desc"></td></tr>
-<tr id="row_36_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structsvm__model.html" target="_self">svm_model</a></td><td class="desc"></td></tr>
-<tr id="row_37_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structsvm__node.html" target="_self">svm_node</a></td><td class="desc"></td></tr>
-<tr id="row_38_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structsvm__parameter.html" target="_self">svm_parameter</a></td><td class="desc"></td></tr>
-<tr id="row_39_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structsvm__problem.html" target="_self">svm_problem</a></td><td class="desc"></td></tr>
-<tr id="row_40_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classFANN_1_1training__data.html" target="_self">FANN::training_data</a></td><td class="desc"></td></tr>
-<tr id="row_41_"><td class="entry"><img id="arr_41_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('41_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classUi__MainWindow.html" target="_self">Ui_MainWindow</a></td><td class="desc"></td></tr>
-<tr id="row_41_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classUi_1_1MainWindow.html" target="_self">Ui::MainWindow</a></td><td class="desc"></td></tr>
-<tr id="row_41_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classUi_1_1MainWindow.html" target="_self">Ui::MainWindow</a></td><td class="desc"></td></tr>
-<tr id="row_41_2_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classUi_1_1MainWindow.html" target="_self">Ui::MainWindow</a></td><td class="desc"></td></tr>
-<tr id="row_41_3_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classUi_1_1MainWindow.html" target="_self">Ui::MainWindow</a></td><td class="desc"></td></tr>
-<tr id="row_41_4_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classUi_1_1MainWindow.html" target="_self">Ui::MainWindow</a></td><td class="desc"></td></tr>
-<tr id="row_41_5_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classUi_1_1MainWindow.html" target="_self">Ui::MainWindow</a></td><td class="desc"></td></tr>
-<tr id="row_41_6_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classUi_1_1MainWindow.html" target="_self">Ui::MainWindow</a></td><td class="desc"></td></tr>
-<tr id="row_41_7_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classUi_1_1MainWindow.html" target="_self">Ui::MainWindow</a></td><td class="desc"></td></tr>
-<tr id="row_41_8_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classUi_1_1MainWindow.html" target="_self">Ui::MainWindow</a></td><td class="desc"></td></tr>
-<tr id="row_41_9_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classUi_1_1MainWindow.html" target="_self">Ui::MainWindow</a></td><td class="desc"></td></tr>
-<tr id="row_42_" class="even"><td class="entry"><img id="arr_42_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('42_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>std::vector< T ></b></td><td class="desc">STL class </td></tr>
-<tr id="row_42_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classOptionpk.html" target="_self">Optionpk< T ></a></td><td class="desc"></td></tr>
-<tr id="row_42_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classVector2d.html" target="_self">Vector2d< T ></a></td><td class="desc"></td></tr>
-<tr id="row_42_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classVector2d.html" target="_self">Vector2d< double ></a></td><td class="desc"></td></tr>
-<tr id="row_43_"><td class="entry"><img id="arr_43_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('43_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>AlgorithmProvider</b></td><td class="desc"></td></tr>
-<tr id="row_43_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html" target="_self">qgis.pktools.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider</a></td><td class="desc"></td></tr>
-<tr id="row_43_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html" target="_self">qgis.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider</a></td><td class="desc"></td></tr>
-<tr id="row_44_" class="even"><td class="entry"><img id="arr_44_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('44_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>GeoAlgorithm</b></td><td class="desc"></td></tr>
-<tr id="row_44_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktools_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html" target="_self">qgis.pktools.pktoolsAlgorithm.pktoolsAlgorithm</a></td><td class="desc"></td></tr>
-<tr id="row_44_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html" target="_self">qgis.pktoolsAlgorithm.pktoolsAlgorithm</a></td><td class="desc"></td></tr>
-<tr id="row_45_"><td class="entry"><img id="arr_45_" src="ftv2plastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('45_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>pktoolsAlgorithm</b></td><td class="desc"></td></tr>
-<tr id="row_45_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pkcomposite_1_1pkcomposite.html" target="_self">qgis.pkcomposite.pkcomposite</a></td><td class="desc"></td></tr>
-<tr id="row_45_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pkcrop_1_1pkcrop.html" target="_self">qgis.pkcrop.pkcrop</a></td><td class="desc"></td></tr>
-<tr id="row_45_2_" class="even" style="display:none;"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html" target="_self">qgis.pkdiff_accuracy.pkdiff_accuracy</a></td><td class="desc"></td></tr>
-<tr id="row_45_3_" class="even" style="display:none;"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pkextract_1_1pkextract.html" target="_self">qgis.pkextract.pkextract</a></td><td class="desc"></td></tr>
-<tr id="row_45_4_" class="even" style="display:none;"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html" target="_self">qgis.pkextract_grid.pkextract_grid</a></td><td class="desc"></td></tr>
-<tr id="row_45_5_" class="even" style="display:none;"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pkextract__random_1_1pkextract__random.html" target="_self">qgis.pkextract_random.pkextract_random</a></td><td class="desc"></td></tr>
-<tr id="row_45_6_" class="even" style="display:none;"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html" target="_self">qgis.pkfilter_spatial.pkfilter_spatial</a></td><td class="desc"></td></tr>
-<tr id="row_45_7_" class="even" style="display:none;"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html" target="_self">qgis.pkfilter_spectral.pkfilter_spectral</a></td><td class="desc"></td></tr>
-<tr id="row_45_8_" class="even" style="display:none;"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html" target="_self">qgis.pkfilterdem.pkfilterdem</a></td><td class="desc"></td></tr>
-<tr id="row_45_9_" class="even" style="display:none;"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pkgetmask_1_1pkgetmask.html" target="_self">qgis.pkgetmask.pkgetmask</a></td><td class="desc"></td></tr>
-<tr id="row_45_10_" class="even" style="display:none;"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pklas2img_1_1pklas2img.html" target="_self">qgis.pklas2img.pklas2img</a></td><td class="desc"></td></tr>
-<tr id="row_45_11_" class="even" style="display:none;"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pkreclass_1_1pkreclass.html" target="_self">qgis.pkreclass.pkreclass</a></td><td class="desc"></td></tr>
-<tr id="row_45_12_" class="even" style="display:none;"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pksetmask_1_1pksetmask.html" target="_self">qgis.pksetmask.pksetmask</a></td><td class="desc"></td></tr>
-<tr id="row_45_13_" class="even" style="display:none;"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pksvm_1_1pksvm.html" target="_self">qgis.pksvm.pksvm</a></td><td class="desc"></td></tr>
-<tr id="row_45_14_" class="even" style="display:none;"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html" target="_self">qgis.pktools.pkcomposite.pkcomposite</a></td><td class="desc"></td></tr>
-<tr id="row_45_15_" class="even" style="display:none;"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html" target="_self">qgis.pktools.pkcrop.pkcrop</a></td><td class="desc"></td></tr>
-<tr id="row_45_16_" class="even" style="display:none;"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html" target="_self">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy</a></td><td class="desc"></td></tr>
-<tr id="row_45_17_" class="even" style="display:none;"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html" target="_self">qgis.pktools.pkextract.pkextract</a></td><td class="desc"></td></tr>
-<tr id="row_45_18_" class="even" style="display:none;"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html" target="_self">qgis.pktools.pkextract_grid.pkextract_grid</a></td><td class="desc"></td></tr>
-<tr id="row_45_19_" class="even" style="display:none;"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html" target="_self">qgis.pktools.pkextract_random.pkextract_random</a></td><td class="desc"></td></tr>
-<tr id="row_45_20_" class="even" style="display:none;"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html" target="_self">qgis.pktools.pkfilter_spatial.pkfilter_spatial</a></td><td class="desc"></td></tr>
-<tr id="row_45_21_" class="even" style="display:none;"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html" target="_self">qgis.pktools.pkfilter_spectral.pkfilter_spectral</a></td><td class="desc"></td></tr>
-<tr id="row_45_22_" class="even" style="display:none;"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html" target="_self">qgis.pktools.pkfilterdem.pkfilterdem</a></td><td class="desc"></td></tr>
-<tr id="row_45_23_" class="even" style="display:none;"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html" target="_self">qgis.pktools.pkgetmask.pkgetmask</a></td><td class="desc"></td></tr>
-<tr id="row_45_24_" class="even" style="display:none;"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html" target="_self">qgis.pktools.pklas2img.pklas2img</a></td><td class="desc"></td></tr>
-<tr id="row_45_25_" class="even" style="display:none;"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html" target="_self">qgis.pktools.pkreclass.pkreclass</a></td><td class="desc"></td></tr>
-<tr id="row_45_26_" class="even" style="display:none;"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html" target="_self">qgis.pktools.pksetmask.pksetmask</a></td><td class="desc"></td></tr>
-<tr id="row_45_27_" class="even" style="display:none;"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html" target="_self">qgis.pktools.pksvm.pksvm</a></td><td class="desc"></td></tr>
-</table>
-</div><!-- directory -->
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/index.html b/doc/html/index.html
deleted file mode 100644
index 930fca1..0000000
--- a/doc/html/index.html
+++ /dev/null
@@ -1,118 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Main Page</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li class="current"><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pktools Documentation</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><ul>
-<li><a class="el" href="index.html#pktools_introduction">Introduction</a></li>
-<li><a class="el" href="index.html#pktools_license">License</a></li>
-<li><a class="el" href="index.html#pktools_how_to_get">How te get pktools?</a></li>
-<li><a class="el" href="index.html#pktools_refer">How to refer</a></li>
-<li><a class="el" href="index.html#pktools_installation">Installation</a></li>
-<li><a class="el" href="index.html#pktools_plugins">Plugins</a></li>
-<li><a class="el" href="md_apps.html#available_tools">Available Tools</a></li>
-<li><a class="el" href="index.html#pktools_bugs">Found a bug or need a change?</a></li>
-</ul>
-<h1><a class="anchor" id="pktools_introduction"></a>
-Introduction</h1>
-<p>pktools is a collection of programs written in C++ for image processing with a focus on remote sensing applications. It relies on the Geospatial Data Abstraction Library (GDAL, <a href="http://www.gdal.org">http://www.gdal.org</a>) and OGR.</p>
-<p>All utilities in pktools use command line options and have a built in help</p>
-<ul>
-<li>use the <code>-h</code> option to get help</li>
-<li>pktools ALWAYS use -i for input and -o for output (unlike GDAL utilities that commonly use last argument as output and second but last argument as input)</li>
-</ul>
-<p>Check the code <a href="https://www.openhub.net/p/pktools">statistics</a></p>
-<h1><a class="anchor" id="pktools_license"></a>
-License</h1>
-<p>pktools is written by Pieter Kempeneers and released under the GNU General Public License version3</p>
-<p>See <a href="http://www.gnu.org/licenses">http://www.gnu.org/licenses</a> for more details</p>
-<h1><a class="anchor" id="pktools_how_to_get"></a>
-How to get pktools?</h1>
-<h2><a class="anchor" id="pktools_download"></a>
-Download</h2>
-<p>You can <a href="http://download.savannah.gnu.org/releases/pktools/">download</a> the latest stable release from <a href="https://savannah.nongnu.org/projects/pktools">Savannah</a></p>
-<h2><a class="anchor" id="From"></a>
-the git repository</h2>
-<p>Get the latest code in development (bleeding edge) from the Git repository:</p>
-<div class="fragment"><div class="line">git clone git:<span class="comment">//git.savannah.nongnu.org/pktools.git</span></div>
-</div><!-- fragment --><p>In a Linux environment, please perform the following actions before following the <a class="el" href="md_installation_linux.html#install_manual">manual installation procedure</a></p>
-<div class="fragment"><div class="line">cd pktools</div>
-</div><!-- fragment --><p>Add libtool support to your package:</p>
-<div class="fragment"><div class="line">libtoolize</div>
-</div><!-- fragment --><p>Remake the GNU Build System files by scanning 'configure.ac' and running 'autoconf', 'autoheader', 'aclocal', 'automake' and 'libtoolize':</p>
-<div class="fragment"><div class="line">autoreconf</div>
-</div><!-- fragment --><p>Finalize package generation:</p>
-<div class="fragment"><div class="line">automake --add-missing</div>
-</div><!-- fragment --><h1><a class="anchor" id="pktools_refer"></a>
-How to refer</h1>
-<p>Please refer to pktools as: <a href="http://pktools.nongnu.org">http://pktools.nongnu.org</a> (Pieter Kempeneers)</p>
-<p>Or use the following reference to the book on <a href="http://www.springer.com/earth+sciences+and+geography/earth+system+sciences/book/978-3-319-01823-2">Open Source Geospatial Tools</a></p>
-<p>contact: kempenep at gmail.com</p>
-<h1><a class="anchor" id="pktools_installation"></a>
-Installation</h1>
-<p>Installation for <a class="el" href="md_installation_linux.html#installation_linux">Linux</a></p>
-<p>Installation for <a class="el" href="md_installation_windows.html#installation_windows">Windows</a></p>
-<h1><a class="anchor" id="pktools_plugins"></a>
-Plugins</h1>
-<p>pktools in QGIS via <a class="el" href="md_installation_plugins.html#qgis_plugin">plugin</a></p>
-<h1><a class="anchor" id="pktools_bugs"></a>
-Bug reports and change requests</h1>
-<p>Please write a <a href="https://savannah.nongnu.org/bugs/?func=additem&group=pktools">ticket</a> in savannah to report bugs and request changes. You will automatically be informed about the ticket status and this helps me to keep track of the bugs/changes. </p>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/inherit_graph_0.map b/doc/html/inherit_graph_0.map
deleted file mode 100644
index 445d066..0000000
--- a/doc/html/inherit_graph_0.map
+++ /dev/null
@@ -1,5 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" title="STL class. " alt="" coords="5,5,109,32"/>
-<area shape="rect" id="node2" title="STL class. " alt="" coords="158,5,282,32"/>
-<area shape="rect" id="node3" href="$classBadConversion.html" title="throw this class when syntax error in command line option " alt="" coords="331,5,442,32"/>
-</map>
diff --git a/doc/html/inherit_graph_0.md5 b/doc/html/inherit_graph_0.md5
deleted file mode 100644
index 75892f5..0000000
--- a/doc/html/inherit_graph_0.md5
+++ /dev/null
@@ -1 +0,0 @@
-bbbf3c99db2603d6aa3dc4f84e081907
\ No newline at end of file
diff --git a/doc/html/inherit_graph_0.png b/doc/html/inherit_graph_0.png
deleted file mode 100644
index 1dc1a98..0000000
Binary files a/doc/html/inherit_graph_0.png and /dev/null differ
diff --git a/doc/html/inherit_graph_1.map b/doc/html/inherit_graph_1.map
deleted file mode 100644
index bb05386..0000000
--- a/doc/html/inherit_graph_1.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classCache.html" title="Cache" alt="" coords="6,5,66,32"/>
-</map>
diff --git a/doc/html/inherit_graph_1.md5 b/doc/html/inherit_graph_1.md5
deleted file mode 100644
index b611fd8..0000000
--- a/doc/html/inherit_graph_1.md5
+++ /dev/null
@@ -1 +0,0 @@
-17afa80b265b109e03a2a1e3cd25f7a2
\ No newline at end of file
diff --git a/doc/html/inherit_graph_1.png b/doc/html/inherit_graph_1.png
deleted file mode 100644
index a721539..0000000
Binary files a/doc/html/inherit_graph_1.png and /dev/null differ
diff --git a/doc/html/inherit_graph_10.map b/doc/html/inherit_graph_10.map
deleted file mode 100644
index cd2fc13..0000000
--- a/doc/html/inherit_graph_10.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classEgcs.html" title="Egcs" alt="" coords="6,5,58,32"/>
-</map>
diff --git a/doc/html/inherit_graph_10.md5 b/doc/html/inherit_graph_10.md5
deleted file mode 100644
index ad8c42d..0000000
--- a/doc/html/inherit_graph_10.md5
+++ /dev/null
@@ -1 +0,0 @@
-cf51d7512e9b125e1bf883b69eb17331
\ No newline at end of file
diff --git a/doc/html/inherit_graph_10.png b/doc/html/inherit_graph_10.png
deleted file mode 100644
index 2b73482..0000000
Binary files a/doc/html/inherit_graph_10.png and /dev/null differ
diff --git a/doc/html/inherit_graph_11.map b/doc/html/inherit_graph_11.map
deleted file mode 100644
index 601d5ed..0000000
--- a/doc/html/inherit_graph_11.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classFANN_1_1neural__net.html" title="FANN::neural_net" alt="" coords="6,5,133,32"/>
-</map>
diff --git a/doc/html/inherit_graph_11.md5 b/doc/html/inherit_graph_11.md5
deleted file mode 100644
index d40cbf9..0000000
--- a/doc/html/inherit_graph_11.md5
+++ /dev/null
@@ -1 +0,0 @@
-3ac4a0099168f402e096a08d93a6a94b
\ No newline at end of file
diff --git a/doc/html/inherit_graph_11.png b/doc/html/inherit_graph_11.png
deleted file mode 100644
index aa0a684..0000000
Binary files a/doc/html/inherit_graph_11.png and /dev/null differ
diff --git a/doc/html/inherit_graph_12.map b/doc/html/inherit_graph_12.map
deleted file mode 100644
index 534ee25..0000000
--- a/doc/html/inherit_graph_12.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classFANN_1_1training__data.html" title="FANN::training_data" alt="" coords="5,5,147,32"/>
-</map>
diff --git a/doc/html/inherit_graph_12.md5 b/doc/html/inherit_graph_12.md5
deleted file mode 100644
index 572038e..0000000
--- a/doc/html/inherit_graph_12.md5
+++ /dev/null
@@ -1 +0,0 @@
-335156a1751dfab19b1fec8c3a082454
\ No newline at end of file
diff --git a/doc/html/inherit_graph_12.png b/doc/html/inherit_graph_12.png
deleted file mode 100644
index 1061c58..0000000
Binary files a/doc/html/inherit_graph_12.png and /dev/null differ
diff --git a/doc/html/inherit_graph_13.map b/doc/html/inherit_graph_13.map
deleted file mode 100644
index c449c14..0000000
--- a/doc/html/inherit_graph_13.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classFeatureSelector.html" title="FeatureSelector" alt="" coords="5,5,120,32"/>
-</map>
diff --git a/doc/html/inherit_graph_13.md5 b/doc/html/inherit_graph_13.md5
deleted file mode 100644
index c64cf5c..0000000
--- a/doc/html/inherit_graph_13.md5
+++ /dev/null
@@ -1 +0,0 @@
-d7659eac38b836d9fe385459622c758d
\ No newline at end of file
diff --git a/doc/html/inherit_graph_13.png b/doc/html/inherit_graph_13.png
deleted file mode 100644
index 344be4a..0000000
Binary files a/doc/html/inherit_graph_13.png and /dev/null differ
diff --git a/doc/html/inherit_graph_14.map b/doc/html/inherit_graph_14.map
deleted file mode 100644
index cdfef2f..0000000
--- a/doc/html/inherit_graph_14.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classFileReaderAscii.html" title="FileReaderAscii" alt="" coords="5,5,120,32"/>
-</map>
diff --git a/doc/html/inherit_graph_14.md5 b/doc/html/inherit_graph_14.md5
deleted file mode 100644
index 56cdf1e..0000000
--- a/doc/html/inherit_graph_14.md5
+++ /dev/null
@@ -1 +0,0 @@
-70f7c2bb09bded5be1cd7f20c73a61ab
\ No newline at end of file
diff --git a/doc/html/inherit_graph_14.png b/doc/html/inherit_graph_14.png
deleted file mode 100644
index 6840178..0000000
Binary files a/doc/html/inherit_graph_14.png and /dev/null differ
diff --git a/doc/html/inherit_graph_15.map b/doc/html/inherit_graph_15.map
deleted file mode 100644
index 333689b..0000000
--- a/doc/html/inherit_graph_15.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classFileReaderLas.html" title="FileReaderLas" alt="" coords="5,5,112,32"/>
-</map>
diff --git a/doc/html/inherit_graph_15.md5 b/doc/html/inherit_graph_15.md5
deleted file mode 100644
index 61f5f36..0000000
--- a/doc/html/inherit_graph_15.md5
+++ /dev/null
@@ -1 +0,0 @@
-63abf9dc85b779812e5853a91d813293
\ No newline at end of file
diff --git a/doc/html/inherit_graph_15.png b/doc/html/inherit_graph_15.png
deleted file mode 100644
index 787dd4c..0000000
Binary files a/doc/html/inherit_graph_15.png and /dev/null differ
diff --git a/doc/html/inherit_graph_16.map b/doc/html/inherit_graph_16.map
deleted file mode 100644
index f4283f9..0000000
--- a/doc/html/inherit_graph_16.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classfilter2d_1_1Filter2d.html" title="filter2d::Filter2d" alt="" coords="5,5,117,32"/>
-</map>
diff --git a/doc/html/inherit_graph_16.md5 b/doc/html/inherit_graph_16.md5
deleted file mode 100644
index 73569b7..0000000
--- a/doc/html/inherit_graph_16.md5
+++ /dev/null
@@ -1 +0,0 @@
-7eb174f715b0c5488a80017bef290745
\ No newline at end of file
diff --git a/doc/html/inherit_graph_16.png b/doc/html/inherit_graph_16.png
deleted file mode 100644
index 31cffdf..0000000
Binary files a/doc/html/inherit_graph_16.png and /dev/null differ
diff --git a/doc/html/inherit_graph_17.map b/doc/html/inherit_graph_17.map
deleted file mode 100644
index 47d7e5c..0000000
--- a/doc/html/inherit_graph_17.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classfilter_1_1Filter.html" title="filter::Filter" alt="" coords="6,5,90,32"/>
-</map>
diff --git a/doc/html/inherit_graph_17.md5 b/doc/html/inherit_graph_17.md5
deleted file mode 100644
index c27798f..0000000
--- a/doc/html/inherit_graph_17.md5
+++ /dev/null
@@ -1 +0,0 @@
-8cb6dde6a68c795b9bab261632e7a838
\ No newline at end of file
diff --git a/doc/html/inherit_graph_17.png b/doc/html/inherit_graph_17.png
deleted file mode 100644
index 99d275f..0000000
Binary files a/doc/html/inherit_graph_17.png and /dev/null differ
diff --git a/doc/html/inherit_graph_18.map b/doc/html/inherit_graph_18.map
deleted file mode 100644
index aeab6d1..0000000
--- a/doc/html/inherit_graph_18.map
+++ /dev/null
@@ -1,6 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classImgRasterGdal.html" title="ImgRasterGdal" alt="" coords="6,31,117,57"/>
-<area shape="rect" id="node2" href="$classImgReaderGdal.html" title="ImgReaderGdal" alt="" coords="166,5,279,32"/>
-<area shape="rect" id="node4" href="$classImgWriterGdal.html" title="ImgWriterGdal" alt="" coords="169,56,276,83"/>
-<area shape="rect" id="node3" href="$classImgUpdaterGdal.html" title="ImgUpdaterGdal" alt="" coords="328,31,445,57"/>
-</map>
diff --git a/doc/html/inherit_graph_18.md5 b/doc/html/inherit_graph_18.md5
deleted file mode 100644
index 29b1966..0000000
--- a/doc/html/inherit_graph_18.md5
+++ /dev/null
@@ -1 +0,0 @@
-0370cb3959a2ebebf2f238d36085cf82
\ No newline at end of file
diff --git a/doc/html/inherit_graph_18.png b/doc/html/inherit_graph_18.png
deleted file mode 100644
index 8b39e18..0000000
Binary files a/doc/html/inherit_graph_18.png and /dev/null differ
diff --git a/doc/html/inherit_graph_19.map b/doc/html/inherit_graph_19.map
deleted file mode 100644
index 219cfc6..0000000
--- a/doc/html/inherit_graph_19.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classImgReaderOgr.html" title="ImgReaderOgr" alt="" coords="5,5,112,32"/>
-</map>
diff --git a/doc/html/inherit_graph_19.md5 b/doc/html/inherit_graph_19.md5
deleted file mode 100644
index 32ddd37..0000000
--- a/doc/html/inherit_graph_19.md5
+++ /dev/null
@@ -1 +0,0 @@
-ebf49c77976eace6726b30bc888c949a
\ No newline at end of file
diff --git a/doc/html/inherit_graph_19.png b/doc/html/inherit_graph_19.png
deleted file mode 100644
index 34fd8e0..0000000
Binary files a/doc/html/inherit_graph_19.png and /dev/null differ
diff --git a/doc/html/inherit_graph_2.map b/doc/html/inherit_graph_2.map
deleted file mode 100644
index 69c98f9..0000000
--- a/doc/html/inherit_graph_2.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classCompare__IndexValue.html" title="Compare_IndexValue" alt="" coords="5,5,152,32"/>
-</map>
diff --git a/doc/html/inherit_graph_2.md5 b/doc/html/inherit_graph_2.md5
deleted file mode 100644
index 07f2e6f..0000000
--- a/doc/html/inherit_graph_2.md5
+++ /dev/null
@@ -1 +0,0 @@
-a712eee6ed4da3865c5a6e68e7999cec
\ No newline at end of file
diff --git a/doc/html/inherit_graph_2.png b/doc/html/inherit_graph_2.png
deleted file mode 100644
index 06cdf72..0000000
Binary files a/doc/html/inherit_graph_2.png and /dev/null differ
diff --git a/doc/html/inherit_graph_20.map b/doc/html/inherit_graph_20.map
deleted file mode 100644
index 4542026..0000000
--- a/doc/html/inherit_graph_20.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classimgregression_1_1ImgRegression.html" title="imgregression::ImgRegression" alt="" coords="6,5,205,32"/>
-</map>
diff --git a/doc/html/inherit_graph_20.md5 b/doc/html/inherit_graph_20.md5
deleted file mode 100644
index bdbec24..0000000
--- a/doc/html/inherit_graph_20.md5
+++ /dev/null
@@ -1 +0,0 @@
-afdf8baeea1a9b1f09cb0eadd9de847f
\ No newline at end of file
diff --git a/doc/html/inherit_graph_20.png b/doc/html/inherit_graph_20.png
deleted file mode 100644
index 46708cb..0000000
Binary files a/doc/html/inherit_graph_20.png and /dev/null differ
diff --git a/doc/html/inherit_graph_21.map b/doc/html/inherit_graph_21.map
deleted file mode 100644
index 24933aa..0000000
--- a/doc/html/inherit_graph_21.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classImgWriterOgr.html" title="ImgWriterOgr" alt="" coords="6,5,106,32"/>
-</map>
diff --git a/doc/html/inherit_graph_21.md5 b/doc/html/inherit_graph_21.md5
deleted file mode 100644
index 0c84b4a..0000000
--- a/doc/html/inherit_graph_21.md5
+++ /dev/null
@@ -1 +0,0 @@
-6e5a11fe9edd8d1595a44dfa80dfce6a
\ No newline at end of file
diff --git a/doc/html/inherit_graph_21.png b/doc/html/inherit_graph_21.png
deleted file mode 100644
index fb54deb..0000000
Binary files a/doc/html/inherit_graph_21.png and /dev/null differ
diff --git a/doc/html/inherit_graph_22.map b/doc/html/inherit_graph_22.map
deleted file mode 100644
index 7962dfa..0000000
--- a/doc/html/inherit_graph_22.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classIncrease__IndexValue.html" title="Increase_IndexValue" alt="" coords="5,5,149,32"/>
-</map>
diff --git a/doc/html/inherit_graph_22.md5 b/doc/html/inherit_graph_22.md5
deleted file mode 100644
index a8084a2..0000000
--- a/doc/html/inherit_graph_22.md5
+++ /dev/null
@@ -1 +0,0 @@
-d6e93105bd541f3f440ea5342855f537
\ No newline at end of file
diff --git a/doc/html/inherit_graph_22.png b/doc/html/inherit_graph_22.png
deleted file mode 100644
index b6cd30d..0000000
Binary files a/doc/html/inherit_graph_22.png and /dev/null differ
diff --git a/doc/html/inherit_graph_23.map b/doc/html/inherit_graph_23.map
deleted file mode 100644
index 466aba9..0000000
--- a/doc/html/inherit_graph_23.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classIncrease__PosValue.html" title="Increase_PosValue" alt="" coords="6,5,141,32"/>
-</map>
diff --git a/doc/html/inherit_graph_23.md5 b/doc/html/inherit_graph_23.md5
deleted file mode 100644
index 868ecea..0000000
--- a/doc/html/inherit_graph_23.md5
+++ /dev/null
@@ -1 +0,0 @@
-3abc167c2529f40a3c3946792c422224
\ No newline at end of file
diff --git a/doc/html/inherit_graph_23.png b/doc/html/inherit_graph_23.png
deleted file mode 100644
index 126932b..0000000
Binary files a/doc/html/inherit_graph_23.png and /dev/null differ
diff --git a/doc/html/inherit_graph_24.map b/doc/html/inherit_graph_24.map
deleted file mode 100644
index 8342af7..0000000
--- a/doc/html/inherit_graph_24.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$structIndexValue.html" title="IndexValue" alt="" coords="6,5,93,32"/>
-</map>
diff --git a/doc/html/inherit_graph_24.md5 b/doc/html/inherit_graph_24.md5
deleted file mode 100644
index 2b82ca8..0000000
--- a/doc/html/inherit_graph_24.md5
+++ /dev/null
@@ -1 +0,0 @@
-9a43f2ea03fd9e148d021675b11a669f
\ No newline at end of file
diff --git a/doc/html/inherit_graph_24.png b/doc/html/inherit_graph_24.png
deleted file mode 100644
index 7f96468..0000000
Binary files a/doc/html/inherit_graph_24.png and /dev/null differ
diff --git a/doc/html/inherit_graph_25.map b/doc/html/inherit_graph_25.map
deleted file mode 100644
index ca98e7b..0000000
--- a/doc/html/inherit_graph_25.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node2" href="$classLastReturnFilter.html" title="LastReturnFilter" alt="" coords="109,5,224,32"/>
-</map>
diff --git a/doc/html/inherit_graph_25.md5 b/doc/html/inherit_graph_25.md5
deleted file mode 100644
index d606a14..0000000
--- a/doc/html/inherit_graph_25.md5
+++ /dev/null
@@ -1 +0,0 @@
-036f5f07709542323000a94860133ffe
\ No newline at end of file
diff --git a/doc/html/inherit_graph_25.png b/doc/html/inherit_graph_25.png
deleted file mode 100644
index 4e0c0d5..0000000
Binary files a/doc/html/inherit_graph_25.png and /dev/null differ
diff --git a/doc/html/inherit_graph_26.map b/doc/html/inherit_graph_26.map
deleted file mode 100644
index 1c7b0db..0000000
--- a/doc/html/inherit_graph_26.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node2" href="$classMainWindow.html" title="MainWindow" alt="" coords="161,5,258,32"/>
-</map>
diff --git a/doc/html/inherit_graph_26.md5 b/doc/html/inherit_graph_26.md5
deleted file mode 100644
index bd64fae..0000000
--- a/doc/html/inherit_graph_26.md5
+++ /dev/null
@@ -1 +0,0 @@
-56ebfdfc43aa9f9214fa9993b74d1491
\ No newline at end of file
diff --git a/doc/html/inherit_graph_26.png b/doc/html/inherit_graph_26.png
deleted file mode 100644
index 6d325d1..0000000
Binary files a/doc/html/inherit_graph_26.png and /dev/null differ
diff --git a/doc/html/inherit_graph_27.map b/doc/html/inherit_graph_27.map
deleted file mode 100644
index 620e343..0000000
--- a/doc/html/inherit_graph_27.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classOptFactory.html" title="OptFactory" alt="" coords="6,5,93,32"/>
-</map>
diff --git a/doc/html/inherit_graph_27.md5 b/doc/html/inherit_graph_27.md5
deleted file mode 100644
index e48f4b3..0000000
--- a/doc/html/inherit_graph_27.md5
+++ /dev/null
@@ -1 +0,0 @@
-c41cbe92df868fb422aa68de81c75529
\ No newline at end of file
diff --git a/doc/html/inherit_graph_27.png b/doc/html/inherit_graph_27.png
deleted file mode 100644
index 4a008fd..0000000
Binary files a/doc/html/inherit_graph_27.png and /dev/null differ
diff --git a/doc/html/inherit_graph_28.map b/doc/html/inherit_graph_28.map
deleted file mode 100644
index 6a6b04f..0000000
--- a/doc/html/inherit_graph_28.map
+++ /dev/null
@@ -1,6 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" title="STL class. " alt="" coords="6,56,122,83"/>
-<area shape="rect" id="node2" href="$classOptionpk.html" title="Optionpk\< T \>" alt="" coords="185,5,292,32"/>
-<area shape="rect" id="node3" href="$classVector2d.html" title="Vector2d\< T \>" alt="" coords="185,56,292,83"/>
-<area shape="rect" id="node4" href="$classVector2d.html" title="Vector2d\< double \>" alt="" coords="171,107,307,133"/>
-</map>
diff --git a/doc/html/inherit_graph_28.md5 b/doc/html/inherit_graph_28.md5
deleted file mode 100644
index de165f4..0000000
--- a/doc/html/inherit_graph_28.md5
+++ /dev/null
@@ -1 +0,0 @@
-53be632956c02d01c5dba81e3b1b18a2
\ No newline at end of file
diff --git a/doc/html/inherit_graph_28.png b/doc/html/inherit_graph_28.png
deleted file mode 100644
index b19bacf..0000000
Binary files a/doc/html/inherit_graph_28.png and /dev/null differ
diff --git a/doc/html/inherit_graph_29.map b/doc/html/inherit_graph_29.map
deleted file mode 100644
index d1912b6..0000000
--- a/doc/html/inherit_graph_29.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$structPosValue.html" title="PosValue" alt="" coords="6,5,85,32"/>
-</map>
diff --git a/doc/html/inherit_graph_29.md5 b/doc/html/inherit_graph_29.md5
deleted file mode 100644
index 0d28189..0000000
--- a/doc/html/inherit_graph_29.md5
+++ /dev/null
@@ -1 +0,0 @@
-0a770de7198bd9b8e8a2468ccef64e90
\ No newline at end of file
diff --git a/doc/html/inherit_graph_29.png b/doc/html/inherit_graph_29.png
deleted file mode 100644
index 9776235..0000000
Binary files a/doc/html/inherit_graph_29.png and /dev/null differ
diff --git a/doc/html/inherit_graph_3.map b/doc/html/inherit_graph_3.map
deleted file mode 100644
index f57f35a..0000000
--- a/doc/html/inherit_graph_3.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classCompare__PosValue.html" title="Compare_PosValue" alt="" coords="5,5,144,32"/>
-</map>
diff --git a/doc/html/inherit_graph_3.md5 b/doc/html/inherit_graph_3.md5
deleted file mode 100644
index 8988156..0000000
--- a/doc/html/inherit_graph_3.md5
+++ /dev/null
@@ -1 +0,0 @@
-db206f037e61bf07733c253f284e0cbc
\ No newline at end of file
diff --git a/doc/html/inherit_graph_3.png b/doc/html/inherit_graph_3.png
deleted file mode 100644
index 5fd9063..0000000
Binary files a/doc/html/inherit_graph_3.png and /dev/null differ
diff --git a/doc/html/inherit_graph_30.map b/doc/html/inherit_graph_30.map
deleted file mode 100644
index 7186a79..0000000
--- a/doc/html/inherit_graph_30.map
+++ /dev/null
@@ -1,30 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node2" href="$classqgis_1_1pkcomposite_1_1pkcomposite.html" title="qgis.pkcomposite.pkcomposite" alt="" coords="196,5,399,32"/>
-<area shape="rect" id="node3" href="$classqgis_1_1pkcrop_1_1pkcrop.html" title="qgis.pkcrop.pkcrop" alt="" coords="231,56,363,83"/>
-<area shape="rect" id="node4" href="$classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html" title="qgis.pkdiff_accuracy.pkdiff\l_accuracy" alt="" coords="208,107,387,149"/>
-<area shape="rect" id="node5" href="$classqgis_1_1pkextract_1_1pkextract.html" title="qgis.pkextract.pkextract" alt="" coords="216,173,379,200"/>
-<area shape="rect" id="node6" href="$classqgis_1_1pkextract__grid_1_1pkextract__grid.html" title="qgis.pkextract_grid.pkextract_grid" alt="" coords="188,224,407,251"/>
-<area shape="rect" id="node7" href="$classqgis_1_1pkextract__random_1_1pkextract__random.html" title="qgis.pkextract_random.pkextract\l_random" alt="" coords="191,275,403,317"/>
-<area shape="rect" id="node8" href="$classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html" title="qgis.pkfilter_spatial.pkfilter\l_spatial" alt="" coords="209,341,386,382"/>
-<area shape="rect" id="node9" href="$classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html" title="qgis.pkfilter_spectral.pkfilter\l_spectral" alt="" coords="205,406,390,447"/>
-<area shape="rect" id="node10" href="$classqgis_1_1pkfilterdem_1_1pkfilterdem.html" title="qgis.pkfilterdem.pkfilterdem" alt="" coords="206,472,389,499"/>
-<area shape="rect" id="node11" href="$classqgis_1_1pkgetmask_1_1pkgetmask.html" title="qgis.pkgetmask.pkgetmask" alt="" coords="206,523,389,549"/>
-<area shape="rect" id="node12" href="$classqgis_1_1pklas2img_1_1pklas2img.html" title="qgis.pklas2img.pklas2img" alt="" coords="211,573,383,600"/>
-<area shape="rect" id="node13" href="$classqgis_1_1pkreclass_1_1pkreclass.html" title="qgis.pkreclass.pkreclass" alt="" coords="214,624,381,651"/>
-<area shape="rect" id="node14" href="$classqgis_1_1pksetmask_1_1pksetmask.html" title="qgis.pksetmask.pksetmask" alt="" coords="206,675,389,701"/>
-<area shape="rect" id="node15" href="$classqgis_1_1pksvm_1_1pksvm.html" title="qgis.pksvm.pksvm" alt="" coords="231,725,363,752"/>
-<area shape="rect" id="node16" href="$classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html" title="qgis.pktools.pkcomposite.pkcomposite" alt="" coords="173,776,421,803"/>
-<area shape="rect" id="node17" href="$classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html" title="qgis.pktools.pkcrop.pkcrop" alt="" coords="208,827,387,853"/>
-<area shape="rect" id="node18" href="$classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html" title="qgis.pktools.pkdiff\l_accuracy.pkdiff_accuracy" alt="" coords="208,878,387,919"/>
-<area shape="rect" id="node19" href="$classqgis_1_1pktools_1_1pkextract_1_1pkextract.html" title="qgis.pktools.pkextract.pkextract" alt="" coords="193,944,401,971"/>
-<area shape="rect" id="node20" href="$classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html" title="qgis.pktools.pkextract\l_grid.pkextract_grid" alt="" coords="222,995,373,1037"/>
-<area shape="rect" id="node21" href="$classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html" title="qgis.pktools.pkextract\l_random.pkextract_random" alt="" coords="207,1061,387,1102"/>
-<area shape="rect" id="node22" href="$classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html" title="qgis.pktools.pkfilter\l_spatial.pkfilter_spatial" alt="" coords="220,1126,375,1167"/>
-<area shape="rect" id="node23" href="$classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html" title="qgis.pktools.pkfilter\l_spectral.pkfilter_spectral" alt="" coords="212,1191,383,1233"/>
-<area shape="rect" id="node24" href="$classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html" title="qgis.pktools.pkfilterdem.pkfilterdem" alt="" coords="183,1257,411,1284"/>
-<area shape="rect" id="node25" href="$classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html" title="qgis.pktools.pkgetmask.pkgetmask" alt="" coords="183,1308,411,1335"/>
-<area shape="rect" id="node26" href="$classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html" title="qgis.pktools.pklas2img.pklas2img" alt="" coords="188,1359,407,1385"/>
-<area shape="rect" id="node27" href="$classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html" title="qgis.pktools.pkreclass.pkreclass" alt="" coords="191,1409,403,1436"/>
-<area shape="rect" id="node28" href="$classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html" title="qgis.pktools.pksetmask.pksetmask" alt="" coords="183,1460,411,1487"/>
-<area shape="rect" id="node29" href="$classqgis_1_1pktools_1_1pksvm_1_1pksvm.html" title="qgis.pktools.pksvm.pksvm" alt="" coords="208,1511,387,1537"/>
-</map>
diff --git a/doc/html/inherit_graph_30.md5 b/doc/html/inherit_graph_30.md5
deleted file mode 100644
index 7119d49..0000000
--- a/doc/html/inherit_graph_30.md5
+++ /dev/null
@@ -1 +0,0 @@
-9954b2c568caef583bc28869e631b0dd
\ No newline at end of file
diff --git a/doc/html/inherit_graph_30.png b/doc/html/inherit_graph_30.png
deleted file mode 100644
index eba882d..0000000
Binary files a/doc/html/inherit_graph_30.png and /dev/null differ
diff --git a/doc/html/inherit_graph_31.map b/doc/html/inherit_graph_31.map
deleted file mode 100644
index b2c789c..0000000
--- a/doc/html/inherit_graph_31.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node2" href="$classqgis_1_1pktools_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html" title="qgis.pktools.pktoolsAlgorithm.pktools\lAlgorithm" alt="" coords="155,5,394,46"/>
-<area shape="rect" id="node3" href="$classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html" title="qgis.pktoolsAlgorithm.pktools\lAlgorithm" alt="" coords="178,70,371,111"/>
-</map>
diff --git a/doc/html/inherit_graph_31.md5 b/doc/html/inherit_graph_31.md5
deleted file mode 100644
index 71ce351..0000000
--- a/doc/html/inherit_graph_31.md5
+++ /dev/null
@@ -1 +0,0 @@
-3c9304ebe9fdad1e7a503db1c533d0b6
\ No newline at end of file
diff --git a/doc/html/inherit_graph_31.png b/doc/html/inherit_graph_31.png
deleted file mode 100644
index 498932d..0000000
Binary files a/doc/html/inherit_graph_31.png and /dev/null differ
diff --git a/doc/html/inherit_graph_32.map b/doc/html/inherit_graph_32.map
deleted file mode 100644
index f428487..0000000
--- a/doc/html/inherit_graph_32.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node2" href="$classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html" title="qgis.pktools.pktoolsAlgorithm\lProvider.pktoolsAlgorithmProvider" alt="" coords="191,5,409,46"/>
-<area shape="rect" id="node3" href="$classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html" title="qgis.pktoolsAlgorithmProvider.pktools\lAlgorithmProvider" alt="" coords="179,70,421,111"/>
-</map>
diff --git a/doc/html/inherit_graph_32.md5 b/doc/html/inherit_graph_32.md5
deleted file mode 100644
index 7b3dea2..0000000
--- a/doc/html/inherit_graph_32.md5
+++ /dev/null
@@ -1 +0,0 @@
-39685cc5d90d6118c44f4d26507483d2
\ No newline at end of file
diff --git a/doc/html/inherit_graph_32.png b/doc/html/inherit_graph_32.png
deleted file mode 100644
index d9a6035..0000000
Binary files a/doc/html/inherit_graph_32.png and /dev/null differ
diff --git a/doc/html/inherit_graph_33.map b/doc/html/inherit_graph_33.map
deleted file mode 100644
index 036ffcb..0000000
--- a/doc/html/inherit_graph_33.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classqgis_1_1pktools_1_1pktoolsUtils_1_1pktoolsUtils.html" title="qgis.pktools.pktoolsUtils.pktools\lUtils" alt="" coords="5,5,216,46"/>
-</map>
diff --git a/doc/html/inherit_graph_33.md5 b/doc/html/inherit_graph_33.md5
deleted file mode 100644
index b67dce0..0000000
--- a/doc/html/inherit_graph_33.md5
+++ /dev/null
@@ -1 +0,0 @@
-4fe4b1e5d89e7090871b53cf53608b74
\ No newline at end of file
diff --git a/doc/html/inherit_graph_33.png b/doc/html/inherit_graph_33.png
deleted file mode 100644
index 575928c..0000000
Binary files a/doc/html/inherit_graph_33.png and /dev/null differ
diff --git a/doc/html/inherit_graph_34.map b/doc/html/inherit_graph_34.map
deleted file mode 100644
index 21a4589..0000000
--- a/doc/html/inherit_graph_34.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classqgis_1_1pktools_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin.html" title="qgis.pktools.ProcessingPktools\lPlugin.ProcessingPktoolsPlugin" alt="" coords="6,5,213,46"/>
-</map>
diff --git a/doc/html/inherit_graph_34.md5 b/doc/html/inherit_graph_34.md5
deleted file mode 100644
index af00428..0000000
--- a/doc/html/inherit_graph_34.md5
+++ /dev/null
@@ -1 +0,0 @@
-2206cdc4d139a6c86521c0fd8a09da98
\ No newline at end of file
diff --git a/doc/html/inherit_graph_34.png b/doc/html/inherit_graph_34.png
deleted file mode 100644
index 9615251..0000000
Binary files a/doc/html/inherit_graph_34.png and /dev/null differ
diff --git a/doc/html/inherit_graph_35.map b/doc/html/inherit_graph_35.map
deleted file mode 100644
index 7ff2667..0000000
--- a/doc/html/inherit_graph_35.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classqgis_1_1pktoolsUtils_1_1pktoolsUtils.html" title="qgis.pktoolsUtils.pktools\lUtils" alt="" coords="5,5,171,46"/>
-</map>
diff --git a/doc/html/inherit_graph_35.md5 b/doc/html/inherit_graph_35.md5
deleted file mode 100644
index 92745d9..0000000
--- a/doc/html/inherit_graph_35.md5
+++ /dev/null
@@ -1 +0,0 @@
-193a7f60a5ea0dd260be1bdb91bbdc88
\ No newline at end of file
diff --git a/doc/html/inherit_graph_35.png b/doc/html/inherit_graph_35.png
deleted file mode 100644
index ac6fdf8..0000000
Binary files a/doc/html/inherit_graph_35.png and /dev/null differ
diff --git a/doc/html/inherit_graph_36.map b/doc/html/inherit_graph_36.map
deleted file mode 100644
index 8422376..0000000
--- a/doc/html/inherit_graph_36.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classqgis_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin.html" title="qgis.ProcessingPktoolsPlugin.\lProcessingPktoolsPlugin" alt="" coords="6,5,205,46"/>
-</map>
diff --git a/doc/html/inherit_graph_36.md5 b/doc/html/inherit_graph_36.md5
deleted file mode 100644
index e735e1f..0000000
--- a/doc/html/inherit_graph_36.md5
+++ /dev/null
@@ -1 +0,0 @@
-cff7ac1ee5a5232d6e7b82f41627ab2a
\ No newline at end of file
diff --git a/doc/html/inherit_graph_36.png b/doc/html/inherit_graph_36.png
deleted file mode 100644
index 210dc05..0000000
Binary files a/doc/html/inherit_graph_36.png and /dev/null differ
diff --git a/doc/html/inherit_graph_37.map b/doc/html/inherit_graph_37.map
deleted file mode 100644
index e63d8fd..0000000
--- a/doc/html/inherit_graph_37.map
+++ /dev/null
@@ -1,7 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classQMatrix.html" title="QMatrix" alt="" coords="6,56,74,83"/>
-<area shape="rect" id="node2" href="$classKernel.html" title="Kernel" alt="" coords="123,56,181,83"/>
-<area shape="rect" id="node3" href="$classONE__CLASS__Q.html" title="ONE_CLASS_Q" alt="" coords="230,5,349,32"/>
-<area shape="rect" id="node4" href="$classSVC__Q.html" title="SVC_Q" alt="" coords="256,56,323,83"/>
-<area shape="rect" id="node5" href="$classSVR__Q.html" title="SVR_Q" alt="" coords="256,107,323,133"/>
-</map>
diff --git a/doc/html/inherit_graph_37.md5 b/doc/html/inherit_graph_37.md5
deleted file mode 100644
index 1dc682b..0000000
--- a/doc/html/inherit_graph_37.md5
+++ /dev/null
@@ -1 +0,0 @@
-e7cc1a9ac7cc7303dcdad4850aa27124
\ No newline at end of file
diff --git a/doc/html/inherit_graph_37.png b/doc/html/inherit_graph_37.png
deleted file mode 100644
index 99af2bb..0000000
Binary files a/doc/html/inherit_graph_37.png and /dev/null differ
diff --git a/doc/html/inherit_graph_38.map b/doc/html/inherit_graph_38.map
deleted file mode 100644
index 13ba453..0000000
--- a/doc/html/inherit_graph_38.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classSolver.html" title="Solver" alt="" coords="5,5,64,32"/>
-<area shape="rect" id="node2" href="$classSolver__NU.html" title="Solver_NU" alt="" coords="113,5,199,32"/>
-</map>
diff --git a/doc/html/inherit_graph_38.md5 b/doc/html/inherit_graph_38.md5
deleted file mode 100644
index 5d06ade..0000000
--- a/doc/html/inherit_graph_38.md5
+++ /dev/null
@@ -1 +0,0 @@
-7be29cee47604c598e9b41d6f6d26540
\ No newline at end of file
diff --git a/doc/html/inherit_graph_38.png b/doc/html/inherit_graph_38.png
deleted file mode 100644
index a8f4610..0000000
Binary files a/doc/html/inherit_graph_38.png and /dev/null differ
diff --git a/doc/html/inherit_graph_39.map b/doc/html/inherit_graph_39.map
deleted file mode 100644
index ee2aeb5..0000000
--- a/doc/html/inherit_graph_39.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$structSolver_1_1SolutionInfo.html" title="Solver::SolutionInfo" alt="" coords="5,5,141,32"/>
-</map>
diff --git a/doc/html/inherit_graph_39.md5 b/doc/html/inherit_graph_39.md5
deleted file mode 100644
index 77ada4a..0000000
--- a/doc/html/inherit_graph_39.md5
+++ /dev/null
@@ -1 +0,0 @@
-eb536ae09518c9401a3cc68fe8336845
\ No newline at end of file
diff --git a/doc/html/inherit_graph_39.png b/doc/html/inherit_graph_39.png
deleted file mode 100644
index 6157226..0000000
Binary files a/doc/html/inherit_graph_39.png and /dev/null differ
diff --git a/doc/html/inherit_graph_4.map b/doc/html/inherit_graph_4.map
deleted file mode 100644
index 43c98a0..0000000
--- a/doc/html/inherit_graph_4.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classconfusionmatrix_1_1ConfusionMatrix.html" title="confusionmatrix::Confusion\lMatrix" alt="" coords="5,5,187,46"/>
-</map>
diff --git a/doc/html/inherit_graph_4.md5 b/doc/html/inherit_graph_4.md5
deleted file mode 100644
index f3d4252..0000000
--- a/doc/html/inherit_graph_4.md5
+++ /dev/null
@@ -1 +0,0 @@
-79a90069eeaf1cadc0f69227c89357cb
\ No newline at end of file
diff --git a/doc/html/inherit_graph_4.png b/doc/html/inherit_graph_4.png
deleted file mode 100644
index c037999..0000000
Binary files a/doc/html/inherit_graph_4.png and /dev/null differ
diff --git a/doc/html/inherit_graph_40.map b/doc/html/inherit_graph_40.map
deleted file mode 100644
index 38dc8ea..0000000
--- a/doc/html/inherit_graph_40.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classstatfactory_1_1StatFactory.html" title="statfactory::StatFactory" alt="" coords="5,5,165,32"/>
-</map>
diff --git a/doc/html/inherit_graph_40.md5 b/doc/html/inherit_graph_40.md5
deleted file mode 100644
index 12d0f53..0000000
--- a/doc/html/inherit_graph_40.md5
+++ /dev/null
@@ -1 +0,0 @@
-87aa7d801c4fb0d24fa9d29992fafeb1
\ No newline at end of file
diff --git a/doc/html/inherit_graph_40.png b/doc/html/inherit_graph_40.png
deleted file mode 100644
index 8414ef4..0000000
Binary files a/doc/html/inherit_graph_40.png and /dev/null differ
diff --git a/doc/html/inherit_graph_41.map b/doc/html/inherit_graph_41.map
deleted file mode 100644
index db2638c..0000000
--- a/doc/html/inherit_graph_41.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$structsvm__model.html" title="svm_model" alt="" coords="6,5,95,32"/>
-</map>
diff --git a/doc/html/inherit_graph_41.md5 b/doc/html/inherit_graph_41.md5
deleted file mode 100644
index 353d6e5..0000000
--- a/doc/html/inherit_graph_41.md5
+++ /dev/null
@@ -1 +0,0 @@
-7b410ece4435bb5898273f794141ca12
\ No newline at end of file
diff --git a/doc/html/inherit_graph_41.png b/doc/html/inherit_graph_41.png
deleted file mode 100644
index 74ce854..0000000
Binary files a/doc/html/inherit_graph_41.png and /dev/null differ
diff --git a/doc/html/inherit_graph_42.map b/doc/html/inherit_graph_42.map
deleted file mode 100644
index 7b61c83..0000000
--- a/doc/html/inherit_graph_42.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$structsvm__node.html" title="svm_node" alt="" coords="5,5,88,32"/>
-</map>
diff --git a/doc/html/inherit_graph_42.md5 b/doc/html/inherit_graph_42.md5
deleted file mode 100644
index c429b4a..0000000
--- a/doc/html/inherit_graph_42.md5
+++ /dev/null
@@ -1 +0,0 @@
-2af511324d18119462e473d0dca2ff4c
\ No newline at end of file
diff --git a/doc/html/inherit_graph_42.png b/doc/html/inherit_graph_42.png
deleted file mode 100644
index 24bc575..0000000
Binary files a/doc/html/inherit_graph_42.png and /dev/null differ
diff --git a/doc/html/inherit_graph_43.map b/doc/html/inherit_graph_43.map
deleted file mode 100644
index ce31d5f..0000000
--- a/doc/html/inherit_graph_43.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$structsvm__parameter.html" title="svm_parameter" alt="" coords="5,5,117,32"/>
-</map>
diff --git a/doc/html/inherit_graph_43.md5 b/doc/html/inherit_graph_43.md5
deleted file mode 100644
index 484819e..0000000
--- a/doc/html/inherit_graph_43.md5
+++ /dev/null
@@ -1 +0,0 @@
-9c46a02da171be2dc8c99dffaea9ef17
\ No newline at end of file
diff --git a/doc/html/inherit_graph_43.png b/doc/html/inherit_graph_43.png
deleted file mode 100644
index bf8a624..0000000
Binary files a/doc/html/inherit_graph_43.png and /dev/null differ
diff --git a/doc/html/inherit_graph_44.map b/doc/html/inherit_graph_44.map
deleted file mode 100644
index 3f7b1ce..0000000
--- a/doc/html/inherit_graph_44.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$structsvm__problem.html" title="svm_problem" alt="" coords="6,5,106,32"/>
-</map>
diff --git a/doc/html/inherit_graph_44.md5 b/doc/html/inherit_graph_44.md5
deleted file mode 100644
index ee30b79..0000000
--- a/doc/html/inherit_graph_44.md5
+++ /dev/null
@@ -1 +0,0 @@
-aadebe5d38499b3e0dfb844f4a073095
\ No newline at end of file
diff --git a/doc/html/inherit_graph_44.png b/doc/html/inherit_graph_44.png
deleted file mode 100644
index 5411fdc..0000000
Binary files a/doc/html/inherit_graph_44.png and /dev/null differ
diff --git a/doc/html/inherit_graph_45.map b/doc/html/inherit_graph_45.map
deleted file mode 100644
index 242be84..0000000
--- a/doc/html/inherit_graph_45.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classUi__MainWindow.html" title="Ui_MainWindow" alt="" coords="5,5,123,32"/>
-<area shape="rect" id="node2" href="$classUi_1_1MainWindow.html" title="Ui::MainWindow" alt="" coords="171,5,290,32"/>
-</map>
diff --git a/doc/html/inherit_graph_45.md5 b/doc/html/inherit_graph_45.md5
deleted file mode 100644
index 4054bc0..0000000
--- a/doc/html/inherit_graph_45.md5
+++ /dev/null
@@ -1 +0,0 @@
-62ce278189506cc1c0752d729480526e
\ No newline at end of file
diff --git a/doc/html/inherit_graph_45.png b/doc/html/inherit_graph_45.png
deleted file mode 100644
index 4742656..0000000
Binary files a/doc/html/inherit_graph_45.png and /dev/null differ
diff --git a/doc/html/inherit_graph_46.map b/doc/html/inherit_graph_46.map
deleted file mode 100644
index 242be84..0000000
--- a/doc/html/inherit_graph_46.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classUi__MainWindow.html" title="Ui_MainWindow" alt="" coords="5,5,123,32"/>
-<area shape="rect" id="node2" href="$classUi_1_1MainWindow.html" title="Ui::MainWindow" alt="" coords="171,5,290,32"/>
-</map>
diff --git a/doc/html/inherit_graph_46.md5 b/doc/html/inherit_graph_46.md5
deleted file mode 100644
index 4054bc0..0000000
--- a/doc/html/inherit_graph_46.md5
+++ /dev/null
@@ -1 +0,0 @@
-62ce278189506cc1c0752d729480526e
\ No newline at end of file
diff --git a/doc/html/inherit_graph_46.png b/doc/html/inherit_graph_46.png
deleted file mode 100644
index 4742656..0000000
Binary files a/doc/html/inherit_graph_46.png and /dev/null differ
diff --git a/doc/html/inherit_graph_5.map b/doc/html/inherit_graph_5.map
deleted file mode 100644
index dfe801f..0000000
--- a/doc/html/inherit_graph_5.map
+++ /dev/null
@@ -1,5 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classCostFactory.html" title="CostFactory" alt="" coords="6,31,101,57"/>
-<area shape="rect" id="node2" href="$classCostFactoryANN.html" title="CostFactoryANN" alt="" coords="149,5,272,32"/>
-<area shape="rect" id="node3" href="$classCostFactorySVM.html" title="CostFactorySVM" alt="" coords="149,56,272,83"/>
-</map>
diff --git a/doc/html/inherit_graph_5.md5 b/doc/html/inherit_graph_5.md5
deleted file mode 100644
index 7c5c143..0000000
--- a/doc/html/inherit_graph_5.md5
+++ /dev/null
@@ -1 +0,0 @@
-0d50b1bf6d0bd3f74522048e96a7f8a2
\ No newline at end of file
diff --git a/doc/html/inherit_graph_5.png b/doc/html/inherit_graph_5.png
deleted file mode 100644
index e880dc4..0000000
Binary files a/doc/html/inherit_graph_5.png and /dev/null differ
diff --git a/doc/html/inherit_graph_6.map b/doc/html/inherit_graph_6.map
deleted file mode 100644
index 23f71bc..0000000
--- a/doc/html/inherit_graph_6.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classDataModel.html" title="DataModel" alt="" coords="5,5,91,32"/>
-</map>
diff --git a/doc/html/inherit_graph_6.md5 b/doc/html/inherit_graph_6.md5
deleted file mode 100644
index 1ea6a91..0000000
--- a/doc/html/inherit_graph_6.md5
+++ /dev/null
@@ -1 +0,0 @@
-be15d991a7fe252377a40da2c00a817f
\ No newline at end of file
diff --git a/doc/html/inherit_graph_6.png b/doc/html/inherit_graph_6.png
deleted file mode 100644
index 5833bf4..0000000
Binary files a/doc/html/inherit_graph_6.png and /dev/null differ
diff --git a/doc/html/inherit_graph_7.map b/doc/html/inherit_graph_7.map
deleted file mode 100644
index 9a6f5a0..0000000
--- a/doc/html/inherit_graph_7.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$structdecision__function.html" title="decision_function" alt="" coords="5,5,128,32"/>
-</map>
diff --git a/doc/html/inherit_graph_7.md5 b/doc/html/inherit_graph_7.md5
deleted file mode 100644
index b943cd2..0000000
--- a/doc/html/inherit_graph_7.md5
+++ /dev/null
@@ -1 +0,0 @@
-5ee11c9862bcc37a09f033d717df12db
\ No newline at end of file
diff --git a/doc/html/inherit_graph_7.png b/doc/html/inherit_graph_7.png
deleted file mode 100644
index db49254..0000000
Binary files a/doc/html/inherit_graph_7.png and /dev/null differ
diff --git a/doc/html/inherit_graph_8.map b/doc/html/inherit_graph_8.map
deleted file mode 100644
index c9d678c..0000000
--- a/doc/html/inherit_graph_8.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classDecrease__IndexValue.html" title="Decrease_IndexValue" alt="" coords="6,5,157,32"/>
-</map>
diff --git a/doc/html/inherit_graph_8.md5 b/doc/html/inherit_graph_8.md5
deleted file mode 100644
index cc54e2b..0000000
--- a/doc/html/inherit_graph_8.md5
+++ /dev/null
@@ -1 +0,0 @@
-e7be88bf7b83e43a3c5e72ff57ce973e
\ No newline at end of file
diff --git a/doc/html/inherit_graph_8.png b/doc/html/inherit_graph_8.png
deleted file mode 100644
index e1f2267..0000000
Binary files a/doc/html/inherit_graph_8.png and /dev/null differ
diff --git a/doc/html/inherit_graph_9.map b/doc/html/inherit_graph_9.map
deleted file mode 100644
index a7d62ed..0000000
--- a/doc/html/inherit_graph_9.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classDecrease__PosValue.html" title="Decrease_PosValue" alt="" coords="5,5,147,32"/>
-</map>
diff --git a/doc/html/inherit_graph_9.md5 b/doc/html/inherit_graph_9.md5
deleted file mode 100644
index 7a532bf..0000000
--- a/doc/html/inherit_graph_9.md5
+++ /dev/null
@@ -1 +0,0 @@
-9f2f1fd6246cfc788f69061dc3962600
\ No newline at end of file
diff --git a/doc/html/inherit_graph_9.png b/doc/html/inherit_graph_9.png
deleted file mode 100644
index ea8e7f9..0000000
Binary files a/doc/html/inherit_graph_9.png and /dev/null differ
diff --git a/doc/html/inherits.html b/doc/html/inherits.html
deleted file mode 100644
index 40814d2..0000000
--- a/doc/html/inherits.html
+++ /dev/null
@@ -1,259 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Class Hierarchy</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li class="current"><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">Class Hierarchy</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock">
-<p><a href="hierarchy.html">Go to the textual class hierarchy</a></p>
-</div><table border="0" cellspacing="10" cellpadding="0">
-<tr><td><img src="inherit_graph_0.png" border="0" alt="" usemap="#BadConversion"/>
-<map name="BadConversion" id="BadConversion">
-<area shape="rect" id="node1" title="STL class. " alt="" coords="5,5,109,32"/><area shape="rect" id="node2" title="STL class. " alt="" coords="158,5,282,32"/><area shape="rect" id="node3" href="classBadConversion.html" title="throw this class when syntax error in command line option " alt="" coords="331,5,442,32"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_1.png" border="0" alt="" usemap="#Cache"/>
-<map name="Cache" id="Cache">
-<area shape="rect" id="node1" href="classCache.html" title="Cache" alt="" coords="6,5,66,32"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_2.png" border="0" alt="" usemap="#Compare__IndexValue"/>
-<map name="Compare__IndexValue" id="Compare__IndexValue">
-<area shape="rect" id="node1" href="classCompare__IndexValue.html" title="Compare_IndexValue" alt="" coords="5,5,152,32"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_3.png" border="0" alt="" usemap="#Compare__PosValue"/>
-<map name="Compare__PosValue" id="Compare__PosValue">
-<area shape="rect" id="node1" href="classCompare__PosValue.html" title="Compare_PosValue" alt="" coords="5,5,144,32"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_4.png" border="0" alt="" usemap="#confusionmatrix_1_1ConfusionMatrix"/>
-<map name="confusionmatrix_1_1ConfusionMatrix" id="confusionmatrix_1_1ConfusionMatrix">
-<area shape="rect" id="node1" href="classconfusionmatrix_1_1ConfusionMatrix.html" title="confusionmatrix::Confusion\lMatrix" alt="" coords="5,5,187,46"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_5.png" border="0" alt="" usemap="#CostFactory"/>
-<map name="CostFactory" id="CostFactory">
-<area shape="rect" id="node1" href="classCostFactory.html" title="CostFactory" alt="" coords="6,31,101,57"/><area shape="rect" id="node2" href="classCostFactoryANN.html" title="CostFactoryANN" alt="" coords="149,5,272,32"/><area shape="rect" id="node3" href="classCostFactorySVM.html" title="CostFactorySVM" alt="" coords="149,56,272,83"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_6.png" border="0" alt="" usemap="#DataModel"/>
-<map name="DataModel" id="DataModel">
-<area shape="rect" id="node1" href="classDataModel.html" title="DataModel" alt="" coords="5,5,91,32"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_7.png" border="0" alt="" usemap="#decision__function"/>
-<map name="decision__function" id="decision__function">
-<area shape="rect" id="node1" href="structdecision__function.html" title="decision_function" alt="" coords="5,5,128,32"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_8.png" border="0" alt="" usemap="#Decrease__IndexValue"/>
-<map name="Decrease__IndexValue" id="Decrease__IndexValue">
-<area shape="rect" id="node1" href="classDecrease__IndexValue.html" title="Decrease_IndexValue" alt="" coords="6,5,157,32"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_9.png" border="0" alt="" usemap="#Decrease__PosValue"/>
-<map name="Decrease__PosValue" id="Decrease__PosValue">
-<area shape="rect" id="node1" href="classDecrease__PosValue.html" title="Decrease_PosValue" alt="" coords="5,5,147,32"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_10.png" border="0" alt="" usemap="#Egcs"/>
-<map name="Egcs" id="Egcs">
-<area shape="rect" id="node1" href="classEgcs.html" title="Egcs" alt="" coords="6,5,58,32"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_11.png" border="0" alt="" usemap="#FANN_1_1neural__net"/>
-<map name="FANN_1_1neural__net" id="FANN_1_1neural__net">
-<area shape="rect" id="node1" href="classFANN_1_1neural__net.html" title="FANN::neural_net" alt="" coords="6,5,133,32"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_12.png" border="0" alt="" usemap="#FANN_1_1training__data"/>
-<map name="FANN_1_1training__data" id="FANN_1_1training__data">
-<area shape="rect" id="node1" href="classFANN_1_1training__data.html" title="FANN::training_data" alt="" coords="5,5,147,32"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_13.png" border="0" alt="" usemap="#FeatureSelector"/>
-<map name="FeatureSelector" id="FeatureSelector">
-<area shape="rect" id="node1" href="classFeatureSelector.html" title="FeatureSelector" alt="" coords="5,5,120,32"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_14.png" border="0" alt="" usemap="#FileReaderAscii"/>
-<map name="FileReaderAscii" id="FileReaderAscii">
-<area shape="rect" id="node1" href="classFileReaderAscii.html" title="FileReaderAscii" alt="" coords="5,5,120,32"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_15.png" border="0" alt="" usemap="#FileReaderLas"/>
-<map name="FileReaderLas" id="FileReaderLas">
-<area shape="rect" id="node1" href="classFileReaderLas.html" title="FileReaderLas" alt="" coords="5,5,112,32"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_16.png" border="0" alt="" usemap="#filter2d_1_1Filter2d"/>
-<map name="filter2d_1_1Filter2d" id="filter2d_1_1Filter2d">
-<area shape="rect" id="node1" href="classfilter2d_1_1Filter2d.html" title="filter2d::Filter2d" alt="" coords="5,5,117,32"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_17.png" border="0" alt="" usemap="#filter_1_1Filter"/>
-<map name="filter_1_1Filter" id="filter_1_1Filter">
-<area shape="rect" id="node1" href="classfilter_1_1Filter.html" title="filter::Filter" alt="" coords="6,5,90,32"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_18.png" border="0" alt="" usemap="#ImgRasterGdal"/>
-<map name="ImgRasterGdal" id="ImgRasterGdal">
-<area shape="rect" id="node1" href="classImgRasterGdal.html" title="ImgRasterGdal" alt="" coords="6,31,117,57"/><area shape="rect" id="node2" href="classImgReaderGdal.html" title="ImgReaderGdal" alt="" coords="166,5,279,32"/><area shape="rect" id="node4" href="classImgWriterGdal.html" title="ImgWriterGdal" alt="" coords="169,56,276,83"/><area shape="rect" id="node3" href="classImgUpdaterGdal.html" title="ImgUpdaterGdal" alt="" coords="328,31,445,57"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_19.png" border="0" alt="" usemap="#ImgReaderOgr"/>
-<map name="ImgReaderOgr" id="ImgReaderOgr">
-<area shape="rect" id="node1" href="classImgReaderOgr.html" title="ImgReaderOgr" alt="" coords="5,5,112,32"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_20.png" border="0" alt="" usemap="#imgregression_1_1ImgRegression"/>
-<map name="imgregression_1_1ImgRegression" id="imgregression_1_1ImgRegression">
-<area shape="rect" id="node1" href="classimgregression_1_1ImgRegression.html" title="imgregression::ImgRegression" alt="" coords="6,5,205,32"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_21.png" border="0" alt="" usemap="#ImgWriterOgr"/>
-<map name="ImgWriterOgr" id="ImgWriterOgr">
-<area shape="rect" id="node1" href="classImgWriterOgr.html" title="ImgWriterOgr" alt="" coords="6,5,106,32"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_22.png" border="0" alt="" usemap="#Increase__IndexValue"/>
-<map name="Increase__IndexValue" id="Increase__IndexValue">
-<area shape="rect" id="node1" href="classIncrease__IndexValue.html" title="Increase_IndexValue" alt="" coords="5,5,149,32"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_23.png" border="0" alt="" usemap="#Increase__PosValue"/>
-<map name="Increase__PosValue" id="Increase__PosValue">
-<area shape="rect" id="node1" href="classIncrease__PosValue.html" title="Increase_PosValue" alt="" coords="6,5,141,32"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_24.png" border="0" alt="" usemap="#IndexValue"/>
-<map name="IndexValue" id="IndexValue">
-<area shape="rect" id="node1" href="structIndexValue.html" title="IndexValue" alt="" coords="6,5,93,32"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_25.png" border="0" alt="" usemap="#LastReturnFilter"/>
-<map name="LastReturnFilter" id="LastReturnFilter">
-<area shape="rect" id="node2" href="classLastReturnFilter.html" title="LastReturnFilter" alt="" coords="109,5,224,32"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_26.png" border="0" alt="" usemap="#MainWindow"/>
-<map name="MainWindow" id="MainWindow">
-<area shape="rect" id="node2" href="classMainWindow.html" title="MainWindow" alt="" coords="161,5,258,32"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_27.png" border="0" alt="" usemap="#OptFactory"/>
-<map name="OptFactory" id="OptFactory">
-<area shape="rect" id="node1" href="classOptFactory.html" title="OptFactory" alt="" coords="6,5,93,32"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_28.png" border="0" alt="" usemap="#Optionpk_3_01T_01_4"/>
-<map name="Optionpk_3_01T_01_4" id="Optionpk_3_01T_01_4">
-<area shape="rect" id="node1" title="STL class. " alt="" coords="6,56,122,83"/><area shape="rect" id="node2" href="classOptionpk.html" title="Optionpk\< T \>" alt="" coords="185,5,292,32"/><area shape="rect" id="node3" href="classVector2d.html" title="Vector2d\< T \>" alt="" coords="185,56,292,83"/><area shape="rect" id="node4" href="classVector2d.html" title="Vector2d\< double \>" alt="" coords="171,107,307,133"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_29.png" border="0" alt="" usemap="#PosValue"/>
-<map name="PosValue" id="PosValue">
-<area shape="rect" id="node1" href="structPosValue.html" title="PosValue" alt="" coords="6,5,85,32"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_30.png" border="0" alt="" usemap="#qgis_8pkcomposite_8pkcomposite"/>
-<map name="qgis_8pkcomposite_8pkcomposite" id="qgis_8pkcomposite_8pkcomposite">
-<area shape="rect" id="node2" href="classqgis_1_1pkcomposite_1_1pkcomposite.html" title="qgis.pkcomposite.pkcomposite" alt="" coords="196,5,399,32"/><area shape="rect" id="node3" href="classqgis_1_1pkcrop_1_1pkcrop.html" title="qgis.pkcrop.pkcrop" alt="" coords="231,56,363,83"/><area shape="rect" id="node4" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html" title="qgis.pkdiff_accuracy.pkdiff\l_accuracy" alt="" coords="208,107,387,149"/><area shape="rect" id="node5" href="class [...]
-</td></tr>
-<tr><td><img src="inherit_graph_31.png" border="0" alt="" usemap="#qgis_8pktools_8pktoolsAlgorithm_8pktoolsAlgorithm"/>
-<map name="qgis_8pktools_8pktoolsAlgorithm_8pktoolsAlgorithm" id="qgis_8pktools_8pktoolsAlgorithm_8pktoolsAlgorithm">
-<area shape="rect" id="node2" href="classqgis_1_1pktools_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html" title="qgis.pktools.pktoolsAlgorithm.pktools\lAlgorithm" alt="" coords="155,5,394,46"/><area shape="rect" id="node3" href="classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html" title="qgis.pktoolsAlgorithm.pktools\lAlgorithm" alt="" coords="178,70,371,111"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_32.png" border="0" alt="" usemap="#qgis_8pktools_8pktoolsAlgorithmProvider_8pktoolsAlgorithmProvider"/>
-<map name="qgis_8pktools_8pktoolsAlgorithmProvider_8pktoolsAlgorithmProvider" id="qgis_8pktools_8pktoolsAlgorithmProvider_8pktoolsAlgorithmProvider">
-<area shape="rect" id="node2" href="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html" title="qgis.pktools.pktoolsAlgorithm\lProvider.pktoolsAlgorithmProvider" alt="" coords="191,5,409,46"/><area shape="rect" id="node3" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html" title="qgis.pktoolsAlgorithmProvider.pktools\lAlgorithmProvider" alt="" coords="179,70,421,111"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_33.png" border="0" alt="" usemap="#qgis_8pktools_8pktoolsUtils_8pktoolsUtils"/>
-<map name="qgis_8pktools_8pktoolsUtils_8pktoolsUtils" id="qgis_8pktools_8pktoolsUtils_8pktoolsUtils">
-<area shape="rect" id="node1" href="classqgis_1_1pktools_1_1pktoolsUtils_1_1pktoolsUtils.html" title="qgis.pktools.pktoolsUtils.pktools\lUtils" alt="" coords="5,5,216,46"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_34.png" border="0" alt="" usemap="#qgis_8pktools_8ProcessingPktoolsPlugin_8ProcessingPktoolsPlugin"/>
-<map name="qgis_8pktools_8ProcessingPktoolsPlugin_8ProcessingPktoolsPlugin" id="qgis_8pktools_8ProcessingPktoolsPlugin_8ProcessingPktoolsPlugin">
-<area shape="rect" id="node1" href="classqgis_1_1pktools_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin.html" title="qgis.pktools.ProcessingPktools\lPlugin.ProcessingPktoolsPlugin" alt="" coords="6,5,213,46"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_35.png" border="0" alt="" usemap="#qgis_8pktoolsUtils_8pktoolsUtils"/>
-<map name="qgis_8pktoolsUtils_8pktoolsUtils" id="qgis_8pktoolsUtils_8pktoolsUtils">
-<area shape="rect" id="node1" href="classqgis_1_1pktoolsUtils_1_1pktoolsUtils.html" title="qgis.pktoolsUtils.pktools\lUtils" alt="" coords="5,5,171,46"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_36.png" border="0" alt="" usemap="#qgis_8ProcessingPktoolsPlugin_8ProcessingPktoolsPlugin"/>
-<map name="qgis_8ProcessingPktoolsPlugin_8ProcessingPktoolsPlugin" id="qgis_8ProcessingPktoolsPlugin_8ProcessingPktoolsPlugin">
-<area shape="rect" id="node1" href="classqgis_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin.html" title="qgis.ProcessingPktoolsPlugin.\lProcessingPktoolsPlugin" alt="" coords="6,5,205,46"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_37.png" border="0" alt="" usemap="#QMatrix"/>
-<map name="QMatrix" id="QMatrix">
-<area shape="rect" id="node1" href="classQMatrix.html" title="QMatrix" alt="" coords="6,56,74,83"/><area shape="rect" id="node2" href="classKernel.html" title="Kernel" alt="" coords="123,56,181,83"/><area shape="rect" id="node3" href="classONE__CLASS__Q.html" title="ONE_CLASS_Q" alt="" coords="230,5,349,32"/><area shape="rect" id="node4" href="classSVC__Q.html" title="SVC_Q" alt="" coords="256,56,323,83"/><area shape="rect" id="node5" href="classSVR__Q.html" title="SVR_Q" alt="" coords=" [...]
-</td></tr>
-<tr><td><img src="inherit_graph_38.png" border="0" alt="" usemap="#Solver"/>
-<map name="Solver" id="Solver">
-<area shape="rect" id="node1" href="classSolver.html" title="Solver" alt="" coords="5,5,64,32"/><area shape="rect" id="node2" href="classSolver__NU.html" title="Solver_NU" alt="" coords="113,5,199,32"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_39.png" border="0" alt="" usemap="#Solver_1_1SolutionInfo"/>
-<map name="Solver_1_1SolutionInfo" id="Solver_1_1SolutionInfo">
-<area shape="rect" id="node1" href="structSolver_1_1SolutionInfo.html" title="Solver::SolutionInfo" alt="" coords="5,5,141,32"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_40.png" border="0" alt="" usemap="#statfactory_1_1StatFactory"/>
-<map name="statfactory_1_1StatFactory" id="statfactory_1_1StatFactory">
-<area shape="rect" id="node1" href="classstatfactory_1_1StatFactory.html" title="statfactory::StatFactory" alt="" coords="5,5,165,32"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_41.png" border="0" alt="" usemap="#svm__model"/>
-<map name="svm__model" id="svm__model">
-<area shape="rect" id="node1" href="structsvm__model.html" title="svm_model" alt="" coords="6,5,95,32"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_42.png" border="0" alt="" usemap="#svm__node"/>
-<map name="svm__node" id="svm__node">
-<area shape="rect" id="node1" href="structsvm__node.html" title="svm_node" alt="" coords="5,5,88,32"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_43.png" border="0" alt="" usemap="#svm__parameter"/>
-<map name="svm__parameter" id="svm__parameter">
-<area shape="rect" id="node1" href="structsvm__parameter.html" title="svm_parameter" alt="" coords="5,5,117,32"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_44.png" border="0" alt="" usemap="#svm__problem"/>
-<map name="svm__problem" id="svm__problem">
-<area shape="rect" id="node1" href="structsvm__problem.html" title="svm_problem" alt="" coords="6,5,106,32"/></map>
-</td></tr>
-<tr><td><img src="inherit_graph_45.png" border="0" alt="" usemap="#Ui__MainWindow"/>
-<map name="Ui__MainWindow" id="Ui__MainWindow">
-<area shape="rect" id="node1" href="classUi__MainWindow.html" title="Ui_MainWindow" alt="" coords="5,5,123,32"/><area shape="rect" id="node2" href="classUi_1_1MainWindow.html" title="Ui::MainWindow" alt="" coords="171,5,290,32"/></map>
-</td></tr>
-</table>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/md_apps.html b/doc/html/md_apps.html
deleted file mode 100644
index 605df72..0000000
--- a/doc/html/md_apps.html
+++ /dev/null
@@ -1,100 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: apps</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">apps </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><h1><a class="anchor" id="available_tools"></a>
-Available tools</h1>
-<ul>
-<li><a class="el" href="pkann.html">pkann</a> classify raster image using Artificial Neural Network</li>
-<li><a class="el" href="pkascii2img.html">pkascii2img</a> program to create raster image based on ascii file</li>
-<li><a class="el" href="pkascii2ogr.html">pkascii2ogr</a> program to create vector points or polygons from text file</li>
-<li><a class="el" href="pkcomposite.html">pkcomposite</a> program to mosaic and composite geo-referenced images</li>
-<li><a class="el" href="pkcreatect.html">pkcreatect</a> program to create and import colour table to GTiff image</li>
-<li><a class="el" href="pkcrop.html">pkcrop</a> perform raster data operations on image such as crop, extract and stack bands</li>
-<li><a class="el" href="pkdiff.html">pkdiff</a> program to compare two raster image files</li>
-<li><a class="el" href="pkdsm2shadow.html">pkdsm2shadow</a> program to calculate sun shadow based on digital surface model and sun angles</li>
-<li><a class="el" href="pkdumpimg.html">pkdumpimg</a> program to dump image content to ascii or std out</li>
-<li><a class="el" href="pkdumpogr.html">pkdumpogr</a> dump ogr file to text file or standard output</li>
-<li><a class="el" href="pkegcs.html">pkegcs</a> Utility for raster files in European Grid Coordinate System</li>
-<li><a class="el" href="pkextract.html">pkextract</a> extract pixel values from raster image from a (vector or raster) sample</li>
-<li><a class="el" href="pkfillnodata.html">pkfillnodata</a> program to fill holes in raster image</li>
-<li><a class="el" href="pkfilterascii.html">pkfilterascii</a> program to filter data in an ASCII file</li>
-<li><a class="el" href="pkfilter.html">pkfilter</a> program to filter raster images</li>
-<li><a class="el" href="pkfilterdem.html">pkfilterdem</a> Filter digital elevation model raster datasets</li>
-<li><a class="el" href="pkfsann.html">pkfsann</a> feature selection for artificial neural network classifier pkann</li>
-<li><a class="el" href="pkfssvm.html">pkfssvm</a> feature selection for support vector machine classifier pksvm</li>
-<li><a class="el" href="pkgetmask.html">pkgetmask</a> program to create mask image based on values in input raster image</li>
-<li><a class="el" href="pkinfo.html">pkinfo</a> Report basic information from raster datasets (similar to gdalinfo)</li>
-<li><a class="el" href="pkkalman.html">pkkalman</a> produce kalman filtered raster time series</li>
-<li><a class="el" href="pklas2img.html">pklas2img</a> Rasterize LAS/LAZ point clouds with filtering/compositing options</li>
-<li><a class="el" href="pkoptsvm.html">pkoptsvm</a> program to optimize parameters for support vector machine classifier pksvm</li>
-<li><a class="el" href="pkpolygonize.html">pkpolygonize</a> program to make vector file from raster image</li>
-<li><a class="el" href="pkreclass.html">pkreclass</a> program to replace pixel values in raster image</li>
-<li><a class="el" href="pkregann.html">pkregann</a> regression with artificial neural network (multi-layer perceptron)</li>
-<li><a class="el" href="pksetmask.html">pksetmask</a> program to apply mask image (set invalid values) to raster image</li>
-<li><a class="el" href="pksieve.html">pksieve</a> program to sieve filter raster image</li>
-<li><a class="el" href="pkstatascii.html">pkstatascii</a> program to calculate basic statistics from text file</li>
-<li><a class="el" href="pkstat.html">pkstat</a> program to calculate basic statistics from raster dataset</li>
-<li><a class="el" href="pkstatogr.html">pkstatogr</a> program to calculate basic statistics from vector file</li>
-<li><a class="el" href="pkstatprofile.html">pkstatprofile</a> program to calculate statistics in temporal or spectral profile</li>
-<li><a class="el" href="pksvm.html">pksvm</a> classify raster image using Support Vector Machine </li>
-</ul>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/md_description_pkstat.html b/doc/html/md_description_pkstat.html
deleted file mode 100644
index afbe368..0000000
--- a/doc/html/md_description_pkstat.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: description_pkstat</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">description_pkstat </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"></div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/md_examples_pkann.html b/doc/html/md_examples_pkann.html
deleted file mode 100644
index 27641b6..0000000
--- a/doc/html/md_examples_pkann.html
+++ /dev/null
@@ -1,69 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: examples_pkann</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">examples_pkann </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><h1><a class="anchor" id="examples_pkann"></a>
-Examples of pkann</h1>
-<p>Classify input image input.tif with an Artificial Neural Network using one hidden layer with 5 neurons. A training sample that is provided as an OGR vector dataset. It contains all features (same dimensionality as input.tif) in its fields (please check <a class="el" href="pkextract.html">pkextract</a> on how to obtain such a file from a "clean" vector file containing locations only). A two-fold cross validation (cv) is performed (output on screen).</p>
-<div class="fragment"><div class="line">pkann -i input.tif -t training.sqlite -o output.tif --nneuron 5 -cv 2</div>
-</div><!-- fragment --><p>Same example as above, but use two hidden layers with 15 and 5 neurons respectively</p>
-<div class="fragment"><div class="line">pkann -i input.tif -t training.sqlite -o output.tif --nneuron 15 --neuron 5 -cv 2</div>
-</div><!-- fragment --> </div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/md_examples_pkascii2img.html b/doc/html/md_examples_pkascii2img.html
deleted file mode 100644
index 7253ddc..0000000
--- a/doc/html/md_examples_pkascii2img.html
+++ /dev/null
@@ -1,116 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: examples_pkascii2img</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">examples_pkascii2img </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><h1><a class="anchor" id="examples_pkascii2img"></a>
-Examples of pkascii2img</h1>
-<p>We create a 5x5 raster dataset containing all 0 values except for its center (value=1)</p>
-<div class="fragment"><div class="line">cat input.txt</div>
-<div class="line"></div>
-<div class="line">0 0 0 0 0</div>
-<div class="line">0 0 0 0 0</div>
-<div class="line">0 0 1 0 0</div>
-<div class="line">0 0 0 0 0</div>
-<div class="line">0 0 0 0 0</div>
-</div><!-- fragment --><p>We define a pixel size of 25 by 25 m and and a projected in the European projection system ETS89/LAEA. The location of the upper left pixel is also set:</p>
-<div class="fragment"><div class="line">pkascii2img -i input.txt -o output.tif -of GTiff -a_srs epsg:3035 -dx 25 -dy 25 -ulx 1000000 -uly 1000000</div>
-</div><!-- fragment --><p>We check the output GeoTIFF using gdalinfo :</p>
-<div class="fragment"><div class="line">gdalinfo output.tif </div>
-<div class="line"></div>
-<div class="line">Driver: GTiff/GeoTIFF</div>
-<div class="line">Files: output.tif</div>
-<div class="line">Size is 5, 5</div>
-<div class="line">Coordinate System is:</div>
-<div class="line">PROJCS[<span class="stringliteral">"ETRS89 / LAEA Europe"</span>,</div>
-<div class="line">    GEOGCS[<span class="stringliteral">"ETRS89"</span>,</div>
-<div class="line">        DATUM[<span class="stringliteral">"European_Terrestrial_Reference_System_1989"</span>,</div>
-<div class="line">            SPHEROID[<span class="stringliteral">"GRS 1980"</span>,6378137,298.2572221010042,</div>
-<div class="line">                AUTHORITY[<span class="stringliteral">"EPSG"</span>,<span class="stringliteral">"7019"</span>]],</div>
-<div class="line">            TOWGS84[0,0,0,0,0,0,0],</div>
-<div class="line">            AUTHORITY[<span class="stringliteral">"EPSG"</span>,<span class="stringliteral">"6258"</span>]],</div>
-<div class="line">        PRIMEM[<span class="stringliteral">"Greenwich"</span>,0],</div>
-<div class="line">        UNIT[<span class="stringliteral">"degree"</span>,0.0174532925199433],</div>
-<div class="line">        AUTHORITY[<span class="stringliteral">"EPSG"</span>,<span class="stringliteral">"4258"</span>]],</div>
-<div class="line">    PROJECTION[<span class="stringliteral">"Lambert_Azimuthal_Equal_Area"</span>],</div>
-<div class="line">    PARAMETER[<span class="stringliteral">"latitude_of_center"</span>,52],</div>
-<div class="line">    PARAMETER[<span class="stringliteral">"longitude_of_center"</span>,10],</div>
-<div class="line">    PARAMETER[<span class="stringliteral">"false_easting"</span>,4321000],</div>
-<div class="line">    PARAMETER[<span class="stringliteral">"false_northing"</span>,3210000],</div>
-<div class="line">    UNIT[<span class="stringliteral">"metre"</span>,1,</div>
-<div class="line">        AUTHORITY[<span class="stringliteral">"EPSG"</span>,<span class="stringliteral">"9001"</span>]],</div>
-<div class="line">    AUTHORITY[<span class="stringliteral">"EPSG"</span>,<span class="stringliteral">"3035"</span>]]</div>
-<div class="line">Origin = (1000000.000000000000000,1000000.000000000000000)</div>
-<div class="line">Pixel Size = (25.000000000000000,-25.000000000000000)</div>
-<div class="line">Metadata:</div>
-<div class="line">  AREA_OR_POINT=Area</div>
-<div class="line">  TIFFTAG_DATETIME=2014:11:08 11:33:52</div>
-<div class="line">  TIFFTAG_DOCUMENTNAME=output.tif</div>
-<div class="line">  TIFFTAG_SOFTWARE=pktools 2.5.4 by Pieter Kempeneers</div>
-<div class="line">Image Structure Metadata:</div>
-<div class="line">  INTERLEAVE=BAND</div>
-<div class="line">Corner Coordinates:</div>
-<div class="line">Upper Left  ( 1000000.000, 1000000.000) ( 23d13<span class="stringliteral">' 9.44"W, 25d30'</span>21.01<span class="stringliteral">"N)</span></div>
-<div class="line"><span class="stringliteral">Lower Left  ( 1000000.000,  999875.000) ( 23d13' 8.02"</span>W, 25d30<span class="stringliteral">'17.24"N)</span></div>
-<div class="line"><span class="stringliteral">Upper Right ( 1000125.000, 1000000.000) ( 23d13'</span> 5.27<span class="stringliteral">"W, 25d30'22.72"</span>N)</div>
-<div class="line">Lower Right ( 1000125.000,  999875.000) ( 23d13<span class="stringliteral">' 3.85"W, 25d30'</span>18.95<span class="stringliteral">"N)</span></div>
-<div class="line"><span class="stringliteral">Center      ( 1000062.500,  999937.500) ( 23d13' 6.65"</span>W, 25d30<span class="stringliteral">'19.98"N)</span></div>
-<div class="line"><span class="stringliteral">Band 1 Block=5x5 Type=Byte, ColorInterp=Gray</span></div>
-</div><!-- fragment --> </div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/md_examples_pkascii2ogr.html b/doc/html/md_examples_pkascii2ogr.html
deleted file mode 100644
index 76b251d..0000000
--- a/doc/html/md_examples_pkascii2ogr.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: examples_pkascii2ogr</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">examples_pkascii2ogr </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><h1><a class="anchor" id="examples_pkascii2ogr"></a>
-Examples of pkascii2ogr</h1>
-<p>Create a vector shape file (output.shp) from input ASCII file (input.txt). The coordinates x (longitude) and y (latitude) can be found in input.txt as columns 3 and 2 respectively (columns start counting from 0). The remaining 2 columns in input.txt are used as fields (attributes) of type integer: id (column 0) and label (column 3). The projection is set to lat lon (epsg:4326).</p>
-<div class="fragment"><div class="line">pkascii2ogr -i input.txt -o output.shp -x 2 -y 1 -n <span class="keywordtype">id</span> -ot Integer -n label -ot Integer -a_srs epsg:4326</div>
-</div><!-- fragment --> </div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/md_examples_pkcomposite.html b/doc/html/md_examples_pkcomposite.html
deleted file mode 100644
index 57619d0..0000000
--- a/doc/html/md_examples_pkcomposite.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: examples_pkcomposite</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">examples_pkcomposite </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><h1><a class="anchor" id="examples_pkcomposite"></a>
-Examples of pkcomposite</h1>
-<p>Create a composit from two input images. If images overlap, keep only last image (default rule)</p>
-<div class="fragment"><div class="line">pkcomposite -i input1.tif -i input2.tif -o output.tif</div>
-</div><!-- fragment --><p>Create a composit from two input images. Values of 255 in band 1 (starting from 0) are masked as invalid. Typically used when second band of input image is a cloud mask</p>
-<div class="fragment"><div class="line">pkcomposite -i input1.tif -i input2.tif -srcnodata 255 -bndnodata 1 -dstnodata 0 -o output.tif </div>
-</div><!-- fragment --><p>Create a maximum NDVI (normalized difference vegetation index) composit. Values of 255 in band 0 are masked as invalid and flagged as 0 if no other valid coverage. Typically used for (e.g., MODIS) images where red and near infrared spectral bands are stored in bands 0 and 1 respectively. In this particular case, a value of 255 in the first input band indicates a nodata value (e.g., cloud mask is coded within the data values).</p>
-<div class="fragment"><div class="line">pkcomposite -i input1.tif -i input2.tif -cr maxndvi -cb 0 -cb 1 -srcnodata 255 -bndnodata 0 -dstnodata 0 -o output.tif</div>
-</div><!-- fragment --><p>Create a composite image using weighted mean: output=(3/4*input1+6/4*input2+3/4*input2)/3.0</p>
-<div class="fragment"><div class="line">pkcomposite -i input1.tif -i input2.tif -i input3.tif -o output.tif -cr mean -w 0.75 -w 1.5 -w 0.75</div>
-</div><!-- fragment --><p>Create a median composit of all GTiff images found in current directory that cover (at least part of) the image coverage.tif. Values smaller or equal to 0 are set as nodata 0 (default value for -dstnodata)</p>
-<div class="fragment"><div class="line">pkcomposite -i large.tif $(<span class="keywordflow">for</span> IMAGE in *.tif;<span class="keywordflow">do</span> pkinfo -i $IMAGE --cover $(pkinfo -i coverage.tif -bb);done) -cr median -min 0 -o output.tif</div>
-</div><!-- fragment --> </div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/md_examples_pkcreatect.html b/doc/html/md_examples_pkcreatect.html
deleted file mode 100644
index 8a28da4..0000000
--- a/doc/html/md_examples_pkcreatect.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: examples_pkcreatect</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">examples_pkcreatect </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><h1><a class="anchor" id="examples_pkcreatect"></a>
-Examples of pkcreatect</h1>
-<p>Attach a color table to image with values between 0 and 50</p>
-<div class="fragment"><div class="line">pkcreatect -i image.tif -o image_ct.tif -min 0 -max 50</div>
-</div><!-- fragment --><p>Attach a grey scale "color" table to image with values between 0 and 100 and create a legend image (annotation needs to be drawn manually)</p>
-<div class="fragment"><div class="line">pkcreatect -i image.tif -o image_ct.tif -min 0 -max 100 -l legend.tif -g</div>
-</div><!-- fragment --><p>Attach a predefined color table to image.tif. The colortable has 5 entries for the values 0 (black), 1 (red), 2 (green), 3 (blue) and 4 (grey)</p>
-<div class="fragment"><div class="line">cat colortable.txt</div>
-<div class="line"></div>
-<div class="line">0 0 0 0 255</div>
-<div class="line">1 255 0 0 255</div>
-<div class="line">2 0 255 0 255</div>
-<div class="line">3 0 0 255 255</div>
-<div class="line">4 100 100 100 255</div>
-</div><!-- fragment --><div class="fragment"><div class="line">pkcreatect -i image.tif -o image_ct.tif -ct colortable.txt</div>
-</div><!-- fragment --><p>Remove the color table from an image</p>
-<div class="fragment"><div class="line">pkcreatect -i image.tif -o image_noct.tif -ct none</div>
-</div><!-- fragment --> </div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/md_examples_pkcrop.html b/doc/html/md_examples_pkcrop.html
deleted file mode 100644
index dadae77..0000000
--- a/doc/html/md_examples_pkcrop.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: examples_pkcrop</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">examples_pkcrop </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><h1><a class="anchor" id="examples_pkcrop"></a>
-Examples of pkcrop</h1>
-<p>Crop the input image to the given bounding box</p>
-<div class="fragment"><div class="line">pkcrop -i input.tif -ulx 100 -uly 1000 -lrx 600 -lry 100 -o output.tif</div>
-</div><!-- fragment --><p>Crop the input image to the envelop of the given polygon and mask all pixels outside polygon as 0 (using gdal_rasterize)</p>
-<div class="fragment"><div class="line">pkcrop -i input.tif -e extent.shp -o output.tif</div>
-<div class="line">gdal_rasterize -i -burn 0 -l extent extent.shp output.tif</div>
-</div><!-- fragment --><p>Extract bands 3,2,1 (starting from 0) in that order from multi-band raster image input.tif</p>
-<div class="fragment"><div class="line">pkcrop -i input.tif -b 3 -b 2 -b 1 -o output.tif</div>
-</div><!-- fragment --><p>Scale raster floating point image fimage.tif with factor 100 and write as single byte image with the given colourtable (for auto scaling, see next example)</p>
-<div class="fragment"><div class="line">pkcrop -i fimage.tif -s 100 -ot Byte -o bimage.tif -ct colortable.txt</div>
-</div><!-- fragment --><p>Automatically scale raster floating point image fimage.tif to [0:100] and write the output as a single byte image with the given colourtable</p>
-<div class="fragment"><div class="line">pkcrop -i fimage.tif -as 0 -as 100 -ot Byte -o bimage.tif -ct colortable.txt</div>
-</div><!-- fragment --><p>Crop raster image large.tif to the bounding box of raster image small.tif and use the same pixel size.</p>
-<div class="fragment"><div class="line">pkcrop -i large.tif $(pkinfo -i small.tif -bb -dx -dy) -o output.tif</div>
-</div><!-- fragment --> </div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/md_examples_pkdiff.html b/doc/html/md_examples_pkdiff.html
deleted file mode 100644
index fa190d4..0000000
--- a/doc/html/md_examples_pkdiff.html
+++ /dev/null
@@ -1,69 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: examples_pkdiff</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">examples_pkdiff </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><h1><a class="anchor" id="examples_pkdiff"></a>
-Examples of pkdiff</h1>
-<p>Check if two raster images are different (reports only if images are different or not)</p>
-<div class="fragment"><div class="line">pkdiff -i input.tif -ref reference.tif</div>
-</div><!-- fragment --><p>Validate a classification map using points from a reference sample and report confusion matrix</p>
-<div class="fragment"><div class="line">pkdiff -i classificationMap.tif -ref referencePoints.shp -cm    </div>
-</div><!-- fragment --> </div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/md_examples_pkdsm2shadow.html b/doc/html/md_examples_pkdsm2shadow.html
deleted file mode 100644
index 694ae53..0000000
--- a/doc/html/md_examples_pkdsm2shadow.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: examples_pkdsm2shadow</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">examples_pkdsm2shadow </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><h1><a class="anchor" id="examples_pkdsm2shadow"></a>
-Examples of pkdsm2shadow</h1>
-<p>Create a shadow mask for the input raster dataset dsm.tif, using Sun zenith angle of 10 degrees and a Sun azimuth angle of 135 degrees (South-South-East). All shadow pixels are set to a value of 1.</p>
-<div class="fragment"><div class="line">pkdsm2shadow -i dsm.tif -sza 10 -saa 170 -f 1 -o shadow.tif</div>
-</div><!-- fragment --> </div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/md_examples_pkdumpimg.html b/doc/html/md_examples_pkdumpimg.html
deleted file mode 100644
index 78ba7f3..0000000
--- a/doc/html/md_examples_pkdumpimg.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: examples_pkdumpimg</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">examples_pkdumpimg </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><h1><a class="anchor" id="examples_pkdumpimg"></a>
-Examples of pkdumpimg</h1>
-<p>We create a 5x5 raster dataset containing all 0 values except for its center (value=1)</p>
-<div class="fragment"><div class="line">cat input.txt</div>
-<div class="line"></div>
-<div class="line">0 0 0 0 0</div>
-<div class="line">0 0 0 0 0</div>
-<div class="line">0 0 1 0 0</div>
-<div class="line">0 0 0 0 0</div>
-<div class="line">0 0 0 0 0</div>
-</div><!-- fragment --><p>Use <a class="el" href="pkascii2img.html">pkascii2img</a> to create an raster dataset from input.txt</p>
-<div class="fragment"><div class="line">pkascii2img -i input.txt -o output.tif -of GTiff -a_srs epsg:3035 -dx 25 -dy 25 -ulx 1000000 -uly 1000000</div>
-</div><!-- fragment --><p>Dump the image content of output.tif to screen</p>
-<div class="fragment"><div class="line">pkdumpimg -i output.tif</div>
-</div><!-- fragment --><div class="fragment"><div class="line">0 0 0 0 0</div>
-<div class="line">0 0 0 0 0</div>
-<div class="line">0 0 1 0 0</div>
-<div class="line">0 0 0 0 0</div>
-<div class="line">0 0 0 0 0</div>
-</div><!-- fragment --> </div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/md_examples_pkdumpogr.html b/doc/html/md_examples_pkdumpogr.html
deleted file mode 100644
index b619fe3..0000000
--- a/doc/html/md_examples_pkdumpogr.html
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: examples_pkdumpogr</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">examples_pkdumpogr </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><h1><a class="anchor" id="examples_pkdumpogr"></a>
-Examples of pkdumpogr</h1>
-<p>Dump the attributes label and description for the vector dataset sample.sqlite to standard output (screen)</p>
-<div class="fragment"><div class="line">pkdumpogr -i sample.sqlite -n label -n description</div>
-</div><!-- fragment --><div class="fragment"><div class="line">0 2 noforest</div>
-<div class="line">1 2 noforest</div>
-<div class="line">2 2 noforest</div>
-<div class="line">3 2 noforest</div>
-<div class="line">4 2 noforest</div>
-<div class="line">5 2 noforest</div>
-<div class="line">6 2 noforest</div>
-<div class="line">7 2 noforest</div>
-<div class="line">8 2 noforest</div>
-<div class="line">9 2 noforest</div>
-<div class="line">10 1 forest</div>
-<div class="line">11 2 noforest</div>
-</div><!-- fragment --><p>Similar to previous example, but transpose output (does not work without explicitly defining options -n for attributes)</p>
-<div class="fragment"><div class="line">pkdumpogr -i sample.sqlite -n label -n description -t</div>
-</div><!-- fragment --><div class="fragment"><div class="line">0 2 2 2 2 2 2 2 2 2 2 1 2</div>
-<div class="line">1 noforest noforest noforest noforest noforest noforest noforest noforest noforest noforest forest noforest </div>
-</div><!-- fragment --><p>Dump the entire content of vector dataset input.sqlite to standard output</p>
-<div class="fragment"><div class="line">pkdumpogr -i input.sqlite</div>
-</div><!-- fragment --><p>Dump only ATTRIBUTE of vector dataset input.sqlite including x and y position and output to ASCII file output.txt</p>
-<div class="fragment"><div class="line">pkdumpogr -i input.sqlite -o output.txt -n ATTRIBUTE -pos</div>
-</div><!-- fragment --> </div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/md_examples_pkextract.html b/doc/html/md_examples_pkextract.html
deleted file mode 100644
index 6c55f60..0000000
--- a/doc/html/md_examples_pkextract.html
+++ /dev/null
@@ -1,95 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: examples_pkextract</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">examples_pkextract </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><h1><a class="anchor" id="examples_pkextract"></a>
-Examples of pkextract</h1>
-<h2><a class="anchor" id="example_pkextract_vector"></a>
-Using vector samples</h2>
-<p>Extract all points for all layers read in points.sqlite from input.tif. Create a new point vector dataset named extracted.sqlite, where each point will contain an attribute for the individual input bands in input.tif. Notice that the default vector format is Spatialite (.sqlite).</p>
-<div class="fragment"><div class="line">pkextract -i input.tif -s points.sqlite -o extracted.sqlite</div>
-</div><!-- fragment --><p>Same example as above, but only extract the points for the layer in points.sqlite named "valid"</p>
-<div class="fragment"><div class="line">pkextract -i input.tif -s points.sqlite -ln valid -o extracted.sqlite</div>
-</div><!-- fragment --><p>Extract points and write output in ESRI Shapefile format</p>
-<div class="fragment"><div class="line">pkextract -i input.tif -s points.shp -f <span class="stringliteral">"ESRI Shapefile"</span> -o extracted.shp</div>
-</div><!-- fragment --><p>Extract the standard deviation for each input band in a 3 by 3 window, centered around the points in the sample vector dataset points.sqlite. The output vector dataset will contain polygon features defined by the buffered points (3x3 window). Use the option -circ to define a circular buffer.</p>
-<div class="fragment"><div class="line">pkextract -i input.tif -s points.sqlite -o extracted.sqlite -r stdev -buf 3 -polygon</div>
-</div><!-- fragment --><p>Extract all pixels from input.tif covered by the polygons in locations.sqlite. Each polygon can thus result in multiple point features with attributes for each input band. Write the extracted points to a point vector dataset training.sqlite.</p>
-<div class="fragment"><div class="line">pkextract -i input.tif -s polygons.sqlite -o training.sqlite -r point</div>
-</div><!-- fragment --><p>Extract the first band from input.tif at the centroids of the polygons in vector dataset polygons.sqlite. Assign the extracted point value to a new attribute of the polygon and write to the vector dataset extracted.sqlite.</p>
-<div class="fragment"><div class="line">pkextract -i input.tif -b 0 -s polygons.sqlite -r centroid -o extracted.sqlite -polygon  </div>
-</div><!-- fragment --><p> Extract the mean values for the second band in input.tif covered by each polygon in polygons.sqlite. The mean values are written to a copy of the polygons in output vector dataset extracted.sqlite</p>
-<div class="fragment"><div class="line">pkextract -i input.tif -b 1 -s polygons.sqlite -r mean -o extracted.sqlite -polygon  </div>
-</div><!-- fragment --><p>Extract the majority class in each polygon for the input land cover map. The land cover map contains five valid classes, labeled 1-5. Other class values (e.g., labeled as 0) are not taken into account in the voting.</p>
-<div class="fragment"><div class="line">pkextract -i landcover.tif -s polygons.sqlite -r maxvote -o majority.sqlite -polygon -c 1 -c 2 -c 3 -c 4 -c 5</div>
-</div><!-- fragment --><h2><a class="anchor" id="example_pkextract_random"></a>
-Using random and grid samples</h2>
-<p>Extract 100 sample units following a simple random sampling design. For each sample unit, the median value is extracted from the input raster dataset in a window of 3 by 3 pixels and written to an attribute of the output vector dataset. The output vector dataset contains polygon features defined by the windows centered at the random selected sample units.</p>
-<div class="fragment"><div class="line">pkextract -i input.tif -o random.sqlite -rand 100 -r median -buf 3 -polygon</div>
-</div><!-- fragment --><p>Extract points following a systematic grid with grid cell size of 100 m. Discard pixels that have a value 0 in the input raster dataset.</p>
-<div class="fragment"><div class="line">pkextract -i input.tif -o systematic.sqlite -grid 100 -srcnodata 0</div>
-</div><!-- fragment --><h2><a class="anchor" id="example_pkextract_raster"></a>
-Using raster samples</h2>
-<p>Typical use where pixels are extracted based on a land cover map (sample.tif). Extract all bands for a random sample of 10 percent of the pixels in the land cover map sample.tif where the land cover classes are either 1,2 or 3 (class values). Write output to the point vector dataset extracted.sqlite.</p>
-<div class="fragment"><div class="line">pkextract -i input.tif -s sample.tif -o extracted.sqlite -t 10 -c 1 -c 2 -c 3</div>
-</div><!-- fragment --><p>Extract all bands for the first 5000 pixels encountered in sample.tif where pixels have a value equal to 1. Write output to point vector dataset extracted.sqlite.</p>
-<div class="fragment"><div class="line">pkextract -i input.tif -s sample.tif -o extracted.sqlite -t -5000 -c 1</div>
-</div><!-- fragment --> </div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/md_examples_pkfilter.html b/doc/html/md_examples_pkfilter.html
deleted file mode 100644
index 646d0ae..0000000
--- a/doc/html/md_examples_pkfilter.html
+++ /dev/null
@@ -1,113 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: examples_pkfilter</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">examples_pkfilter </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><h1><a class="anchor" id="examples_pkfilter"></a>
-Examples of pkfilter</h1>
-<h2><a class="anchor" id="examples_pkfilter_spatial"></a>
-Filtering in spatial domain</h2>
-<p>Filter input.tif with morphological dilation filter. Use a circular kernel (instead of rectangular) of size 3x3.</p>
-<div class="fragment"><div class="line">pkfilter -i input.tif -o filter.tif -dx 3 -dy 3 -f dilate -circ</div>
-</div><!-- fragment --><p>Similar to previous example, but consider only values of 255 for filtering operation. Typical usage: dilate cloud values in input image that are flagged as 255</p>
-<div class="fragment"><div class="line">pkfilter -i input.tif -o filter.tif -dx 3 -dy 3 -<span class="keyword">class </span>255 -f dilate -circ</div>
-</div><!-- fragment --><h2><a class="anchor" id="examples_pkfilter_spectral"></a>
-Filtering in spectral/temporal domain</h2>
-<h3><a class="anchor" id="examples_pkfilter_spectral_moving_window"></a>
-Applications with moving window</h3>
-<p>Calculate the median value for each pixel, calculated on a moving window of width 3 (-dz 3) over all input bands. The output raster dataset will contain as many bands as the input raster dataset.</p>
-<div class="fragment"><div class="line">pkfilter -i input.tif -o filter_stdev.tif -dz 3 -f median</div>
-</div><!-- fragment --><h3><a class="anchor" id="examples_pkfilter_spectral_statistics"></a>
-Applications of statistical functions in spectral domain</h3>
-<p>Calculate the standard deviation for each pixel, calculated on all input bands. The output raster dataset will contain a single band only, no moving window is used (-dz 1).</p>
-<div class="fragment"><div class="line">pkfilter -i input.tif -o filter_stdev.tif -dz 1 -f stdev</div>
-</div><!-- fragment --><p>"Smooth" (interpolate) nodata in spectral/temporal domain (-dz 1), using a linear interpolation. The following interpolation types are supported: akima (default), linear, polynomial, cspline, cspline_periodic, akima_periodic (please check <a href="http://www.gnu.org/software/gsl/manual/html_node/Interpolation-Types.html">gsl</a> page for more information on the interpolation types).</p>
-<div class="fragment"><div class="line">pkfilter -i input.tif -o smoothed.tif -dz 1 -f smoothnodata -interp linear</div>
-</div><!-- fragment --><h3><a class="anchor" id="examples_pkfilter_srf"></a>
-Filter with spectral response functions</h3>
-<p>The following two examples show how to use pkfilter for spectral filtering a high dimensional input (hyperspectral image) to a lower dimensional output (multi-spectral image). Notice that the input wavelenghts must be provided as -win value1 -win value2 -win value3 ... To save typing, we assume the input wavelengths are listed in a text file wavelengths.txt (single column ASCII file with all wavelenghts listed in nanometer).</p>
-<div class="fragment"><div class="line">cat wavelengths.txt | <span class="keywordflow">while</span> read W;<span class="keywordflow">do</span> echo <span class="stringliteral">" -win $W"</span>;done</div>
-</div><!-- fragment --><p>In the first example, the hyperspectral image is filtered with a spectral response function. For each spectral response function provided, a separate output band is created. The spectral response function(s) must be listed in two column ASCII file(s) with the wavelengths and response listed in the first and second column respectively. The response functions can but must not be normalized (this is taken care of by the filter utility).</p>
-<p>In this example, the input is a hyperspectral image with N>>1 spectral wavelengths (bands). The output is a multispectral image with 3 bands, where a spectral response function is provided for each output band.</p>
-<div class="fragment"><div class="line">pkfilter -i hyperspectral.tif -o multispectral.tif -srf srf1.txt -srf srf2.txt -srf srf3.txt $(cat wavelengths.txt | <span class="keywordflow">while</span> read W;<span class="keywordflow">do</span> echo <span class="stringliteral">" -win $W"</span>;done)</div>
-</div><!-- fragment --><p>The next example is similar to the previous. Instead of providing a spectral response function for each output band, you can also provide the center wavelengths and full width half max values. Here, a three band (red, green, blue) output image is produced.</p>
-<div class="fragment"><div class="line">pkfilter -i hyperspectral.tif -o multispectral.tif -wout 650 -wout 510 -wout 475 -fwhm 50 -fwhm 50  -fwhm 50 $(cat wavelengths.txt | <span class="keywordflow">while</span> read W;<span class="keywordflow">do</span> echo <span class="stringliteral">" -win $W"</span>;done)</div>
-</div><!-- fragment --><h3><a class="anchor" id="examples_pkfilter_savgolay"></a>
-Applying the Savitzky-Golay filter to reconstruct a time-series data set</h3>
-<p>The following example reconstructs a time-series data set based on the Savitzky–Golay filter, as suggested by <a href="http://www.sciencedirect.com/science/article/pii/S003442570400080X">J. Chen 2004</a>.</p>
-<p>Input is a multi-band (Byte) raster dataset containing a noisy time series, e.g., a normalized difference vegetation index (NDVI) with cloud contaminated (low) NDVI values. Output is the reconstructed time-series data set, which approaches the upper NDVI enveloppe. Please refer to <a href="http://www.sciencedirect.com/science/article/pii/S003442570400080X">J. Chen 2004</a> for more details.</p>
-<h3><a class="anchor" id="savgolay_preparation"></a>
-Preparation</h3>
-<p>Create a long-term change trend fitting (lta.tif) using the Savitzky-Golay filter. Choose the number of lefward (past) and rightward (future) data points (e.g., 7). The order of smoothing polynomial in the Savitzky-Golay filter is set to 2. </p>
-<div class="fragment"><div class="line">pkfilter -i input.tif -o lta.tif -f savgolay -nl 7 -nr 7 -m 2 -pad replicate</div>
-</div><!-- fragment --><h3><a class="anchor" id="savgolay_initialization"></a>
-Initialization</h3>
-<p>Decrease the number of lefward (past) and rightward (future) data points to 4. The order of smoothing polynomial in the Savitzky-Golay filter is set to 6. Valid data are from 0 to 250 (nodata is set to 250). </p>
-<div class="fragment"><div class="line">pkcomposite -i lta.tif -i input.tif -o iter1.tif -cr maxallbands -max 250 -dstnodata 250</div>
-<div class="line">pkfilter -i iter1.tif -o savgolay1.tif -f savgolay -nl 4 -nr 4 -m 6 -pad replicate</div>
-</div><!-- fragment --><h3><a class="anchor" id="savgolay_iteration"></a>
-Iterative process (repeat, e.g., 5-10 times)</h3>
-<div class="fragment"><div class="line">pkcomposite -i input.tif -i savgolay1.tif -o iter2.tif -cr maxallbands -max 250 -dstnodata </div>
-<div class="line">pkfilter -i iter2.tif -o savgolay2.tif -f savgolay -nl 4 -nr 4 -m 6 -pad replicate</div>
-</div><!-- fragment --><div class="fragment"><div class="line">pkcomposite -i input.tif -i savgolay2.tif -o iter3.tif -cr maxallbands -max 250 -dstnodata </div>
-<div class="line">pkfilter -i iter3.tif -o savgolay3.tif -f savgolay -nl 4 -nr 4 -m 6 -pad replicate</div>
-</div><!-- fragment --> <div class="fragment"><div class="line">etc.</div>
-</div><!-- fragment --><p>Output savgolay<n>.tif is the reconstructed time-series data set. </p>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/md_examples_pkgetmask.html b/doc/html/md_examples_pkgetmask.html
deleted file mode 100644
index 4df11a9..0000000
--- a/doc/html/md_examples_pkgetmask.html
+++ /dev/null
@@ -1,69 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: examples_pkgetmask</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">examples_pkgetmask </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><h1><a class="anchor" id="examples_pkgetmask"></a>
-Examples of pkgetmask</h1>
-<div class="fragment"><div class="line">pkgetmask -i input.tif -o output.tif -min 0 -nodata 0 -data 1</div>
-</div><!-- fragment --><p> create mask, setting all negative values to 0 (rest to 1)</p>
-<div class="fragment"><div class="line">pkgetmask -i input.tif -o output.tif -min 0 -max 10 -min 0 -max 250 -b 0 -b 1</div>
-</div><!-- fragment --><p> create mask. Mask is set to 0 (default value for -nodata) if either band 0 is not between 0 and 10 OR (default operator) band 1 is not between 0 and 250. Else mask is set to 1 (default value for -data) </p>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/md_examples_pkinfo.html b/doc/html/md_examples_pkinfo.html
deleted file mode 100644
index e05f828..0000000
--- a/doc/html/md_examples_pkinfo.html
+++ /dev/null
@@ -1,83 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: examples_pkinfo</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">examples_pkinfo </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><h1><a class="anchor" id="examples_pkinfo"></a>
-Examples of pkinfo</h1>
-<div class="fragment"><div class="line">pkinfo -i image.tif -nb</div>
-</div><!-- fragment --><p> show number of bands in raster image.tif</p>
-<div class="fragment"><div class="line">pkinfo -i image.tif -max -b 1</div>
-</div><!-- fragment --><p> show maximum value of band 1 (starting from 0) of raster image.tif</p>
-<div class="fragment"><div class="line">pkinfo -i image.tif -x 0 -y 0 -r -b 3 -b 2 -b 1</div>
-</div><!-- fragment --><p> read (dump) upper left pixel value for bands 3,2,1</p>
-<div class="fragment"><div class="line">pkinfo -i image.tif -x 3528120 -y 4329681 -geo -r -b 3 -b 2 -b 1</div>
-</div><!-- fragment --><p> read (dump) pixel value at this geographic location (x,y) for bands 3,2,1</p>
-<div class="fragment"><div class="line">pkinfo -i image1.tif -b</div>
-</div><!-- fragment --><p> show bounding box (-ulx -uly -lrx -lry) in geo coordinates for image1.tif</p>
-<div class="fragment"><div class="line">pkinfo -i image1.tif -i image2.tif -i image3.tif -b</div>
-</div><!-- fragment --><p> show bounding box (-ulx -uly -lrx -lry) in geo coordinates for each image (and union and intersect)</p>
-<div class="fragment"><div class="line">pkinfo -i image1.tif --mask 0 --mask 255 -ref</div>
-</div><!-- fragment --><p> show the reference pixel (centre of gravity) for image1.tif, treating 0 and 255 as NO VALUE</p>
-<div class="fragment"><div class="line">pkinfo -i image.tif $(pkinfo -i image.tif -c) -geo -r</div>
-</div><!-- fragment --><p> read (dump) pixel value at image centre for band 0</p>
-<div class="fragment"><div class="line">pkinfo $(<span class="keywordflow">for</span> IMAGE in modis_2010*.tif; <span class="keywordflow">do</span> pkinfo -i $IMAGE --cover -x 4215500 -y 2534000;done) -x 4215500 -y 253400</div>
-</div><!-- fragment --><p> read (dump) pixel value in band 0 (default) for all images in current directory that cover this geographic location </p>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/md_examples_pkkalman.html b/doc/html/md_examples_pkkalman.html
deleted file mode 100644
index 2771b79..0000000
--- a/doc/html/md_examples_pkkalman.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: examples_pkkalman</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">examples_pkkalman </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><h1><a class="anchor" id="examples_pkkalman"></a>
-Examples of pkkalman</h1>
-<p>Assimilate fine spatial resolution NDVI time series acquired at (100 m) with median spatial resolution NDVI time series (300 m). Both time series consist of ten acquisitions in time (provided as a multi-band raster dataset), but fine spatial resolution data are sparse due to cloud coverage. Missing data are characterized by the option -obsnodata. Coarse spatial resolution data have occasional cloud cover too (-modnodata 255). The spatial coverage of the model must be at least the spat [...]
-<div class="fragment"><div class="line">pkkalman -obs fine_10band.tif -mod coarse_10band.tif -obsnodata 255 -modnodata 255 -dir forward -ofw fine_filled.tif</div>
-</div><!-- fragment --><p>Same as above, but run in forward, backward and smooth mode. Here we provide output filenames for the uncertainties of the predicted time series.</p>
-<div class="fragment"><div class="line">pkkalman -obs fine_10band.tif -mod coarse_10band.tif -obsnodata 255 -modnodata 255 -dir forward -ofw fine_forward_10band.tif -u_ofw fine_forward_uncert_10band.tif -dir backward -ofb fine_backward_10band.tif -u_obw fine_backward_uncert_10band.tif -dir smooth -ofw fine_smooth_10band.tif -u_ofb fine_smooth_uncert_10band.tif</div>
-</div><!-- fragment --><p>If the observation time series is not complete, i.e., has less acquisitions than the model, we must explicitly provide the time sequence. Here, the observation at fine spatial resolution is based on two acquisitions only (at times 3 and 8). The model at coarse spatial resolution is based on ten acquisitions (at times 1-10).</p>
-<div class="fragment"><div class="line">pkkalman -obs fine_2band.tif -mod coarse_10band.tif -obsnodata 255 -modnodata 255 -dir forward -ofw fine_forward_10band.tif -tmod 1 -tmod 2 -tmod 3 -tmod 4 -tmod 5 -tmod 6 -tmod 7 -tmod 8 -tmod 9 -tmod 10 -tobs 3 -tobs 8</div>
-</div><!-- fragment --><p>In the following example the missing data are not coded within the observations, but read from an external mask:</p>
-<div class="fragment"><div class="line">pkkalman -obs fine_10band.tif -mod coarse_10band.tif -obsmask finemask_10band.tif -modmask coarsemask_10band.tif -msknodata 1 -mskband 0 -dir forward -ofw fine_forward_10band.tif</div>
-</div><!-- fragment --><p>The observations and model can be provided as multiple single-band raster datasets. The time sequence for the two observations and ten model inputs are explicitly provided via the options -tobs and tmod.</p>
-<div class="fragment"><div class="line">pkkalman -obs fine_1.tif -obs fine_2.tif -obsmask finemask_1.tif -obs finemask_2.tif -mod coarse_1.tif -mod coarse_2.tif -mod coarse_3.tif -mod coarse_4.tif -mod coarse_5.tif -mod coarse_6.tif -mod coarse_7.tif -mod coarse_8.tif -mod coarse_9.tif -mod coarse_10.tif -modmask coarsemask_1.tif -modmask coarsemask_2.tif -modmask coarsemask_3.tif -modmask coarsemask_4.tif -modmask coarsemask_5.tif -modmask coarsemask_6.tif -modmask coarsemask_7.tif -mod [...]
-</div><!-- fragment --> </div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/md_examples_pkpolygonize.html b/doc/html/md_examples_pkpolygonize.html
deleted file mode 100644
index 4bb834a..0000000
--- a/doc/html/md_examples_pkpolygonize.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: examples_pkpolygonize</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">examples_pkpolygonize </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><h1><a class="anchor" id="examples_pkpolygonize"></a>
-Examples of pkpolygonize</h1>
-<div class="fragment"><div class="line">pkpolygonize -i input.tif -m input.tif -o ouput.shp</div>
-</div><!-- fragment --><p> create vector file from raster image (typically a classification image), based on pixel (land cover class) values. </p>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/md_examples_pkreclass.html b/doc/html/md_examples_pkreclass.html
deleted file mode 100644
index 18b9158..0000000
--- a/doc/html/md_examples_pkreclass.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: examples_pkreclass</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">examples_pkreclass </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><h1><a class="anchor" id="examples_pkreclass"></a>
-Examples of pkreclass</h1>
-<div class="fragment"><div class="line">pkreclass -i input1.tif -o output.tif -c 1 -r 0 -c 2 -r 0</div>
-</div><!-- fragment --><p> replace pixel values 1 and 2 with value 0</p>
-<div class="fragment"><div class="line">pkreclass -i vector.shp -o output.shp -c FROM -r TO -n INFIELD</div>
-</div><!-- fragment --><p> replace FROM with TO in field INFIELD (of type string) in vector file vector.shp and write to new vector output.shp</p>
-<div class="fragment"><div class="line"><span class="keywordflow">for</span>((i=0;i<256;++i));<span class="keywordflow">do</span> <span class="keywordflow">if</span>(($i<100));then echo <span class="stringliteral">"$i 1"</span>;<span class="keywordflow">else</span> echo <span class="stringliteral">"$i 0"</span>;fi;done > code.txt; pkreclass -i input1.tif -o output.tif --code code.txt</div>
-</div><!-- fragment --><p> replace all values smaller than 100 with 1, all other values with 0</p>
-<div class="fragment"><div class="line">pkreclass -i input1.tif -o output.tif $(<span class="keywordflow">for</span>((i=0;i<256;++i));<span class="keywordflow">do</span> <span class="keywordflow">if</span>(($i<100));then echo -n <span class="stringliteral">" -c $i "</span> <span class="stringliteral">" -r 1"</span>;<span class="keywordflow">else</span> echo <span class="stringliteral">" -c $i "</span> <span class="stringliteral">" -r 0"</span [...]
-</div><!-- fragment --><p> same as previous but without temporary file </p>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/md_examples_pksetmask.html b/doc/html/md_examples_pksetmask.html
deleted file mode 100644
index 915ac26..0000000
--- a/doc/html/md_examples_pksetmask.html
+++ /dev/null
@@ -1,89 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: examples_pksetmask</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">examples_pksetmask </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><h1><a class="anchor" id="examples_pksetmask"></a>
-Examples of pksetmask</h1>
-<h1><a class="anchor" id="single_mask"></a>
-Using a single mask</h1>
-<p>With a single mask you can provide as many triples (–operator, –msknodata, –nodata) as you wish. All operators work simultaneously on that mask. Caution: the first operator that tests true will be selected. This is explained in the next example:</p>
-<div class="fragment"><div class="line">pksetmask -i input.tif -m mask.tif --<span class="keyword">operator</span>=<span class="charliteral">'>'</span> --msknodata 0 --nodata 0 --<span class="keyword">operator</span>=<span class="charliteral">'>'</span> --msknodata 10 --nodata 10 -o output.tif</div>
-</div><!-- fragment --><p> Warning: second operator will never test true as first will supersede! </p>
-<div class="fragment"><div class="line">pksetmask -i input.tif -m mask.tif --<span class="keyword">operator</span>=<span class="charliteral">'>'</span> --msknodata 10 --nodata 10 --<span class="keyword">operator</span>=<span class="charliteral">'>'</span> --msknodata 0 --nodata 1 -output.tif</div>
-</div><!-- fragment --><p> OK: values above 10 will be 10, values between 0 and 10 will be 1</p>
-<h1><a class="anchor" id="multiple_masks"></a>
-Using multiple masks</h1>
-<p>With multiple masks, you can use one triple (–operator, –msknodata, –nodata) for each corresponding mask (following the same order of input). If the number of triples is not equal to the number of masks, then only the first triple is used for all masks simultaneously </p>
-<div class="fragment"><div class="line">pksetmask -i input.tif -m mask1.tif --<span class="keyword">operator</span> <span class="charliteral">'>'</span> --msknodata 250 --nodata 1 -m mask2.tif --<span class="keyword">operator</span> <span class="charliteral">'>'</span> --msknodata 100 --nodata 2 -o output.tif</div>
-</div><!-- fragment --><p> If mask1.tif is above 250, the output will be 1. If mask2 is above 100, the output will be 2. If both operators test true, the first will supersede (output will be 1)</p>
-<div class="fragment"><div class="line">pksetmask -i input.tif -m mask1.tif -m mask2.tif --<span class="keyword">operator</span> <span class="charliteral">'>'</span> --msknodata 250 --nodata 1 -o output.tif</div>
-</div><!-- fragment --><p> If either mask1.tif or mask2.tif is above 250, the output will be 1</p>
-<h1><a class="anchor" id="more_examples"></a>
-More examples</h1>
-<div class="fragment"><div class="line">pksetmask -i input.tif -m mask.tif -o output.tif -ot Byte --msknodata 0 -nodata 255</div>
-</div><!-- fragment --><p> copy pixel values from input.tif to output.tif, applying mask.tif, setting all values to 255 where mask is 0.</p>
-<div class="fragment"><div class="line">pksetmask -i input.tif -m mask.tif -o output.tif -ot Byte --msknodata 1 -nodata 255 --<span class="keyword">operator</span> <span class="charliteral">'!'</span></div>
-</div><!-- fragment --><p> copy values from input.tif to output.tif, but set all values to 255 if mask is not 1</p>
-<div class="fragment"><div class="line">pksetmask -i input.tif -m mask1.tif -m mask2.tif -o output.tif -ot Byte --msknodata 0 -nodata 255</div>
-</div><!-- fragment --><p> Application of two masks. Copy pixel values from input.tif to output.tif, setting all values to 255 where either mask is 0.</p>
-<div class="fragment"><div class="line">pksetmask -i input.tif -m mask.tif -o output.tif -ot Byte --msknodata 0 --msknodata 1 -nodata 255 -nodata 255</div>
-</div><!-- fragment --><p> copy pixel values from input.tif to output.tif, applying single masks, setting all values to 255 where mask is either 0 or 1. </p>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/md_examples_pksieve.html b/doc/html/md_examples_pksieve.html
deleted file mode 100644
index 2d15383..0000000
--- a/doc/html/md_examples_pksieve.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: examples_pksieve</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">examples_pksieve </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><h1><a class="anchor" id="examples_pksieve"></a>
-Examples of pksieve</h1>
-<div class="fragment"><div class="line">pksieve -i input.tif -c 8 -s 5 -o ouput.shp</div>
-</div><!-- fragment --><p> merge all patches smaller than 5 pixels into bigger classes, using 8 connectivity (horizontal, vertical and diagonal) </p>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/md_examples_pkstatogr.html b/doc/html/md_examples_pkstatogr.html
deleted file mode 100644
index 9473685..0000000
--- a/doc/html/md_examples_pkstatogr.html
+++ /dev/null
@@ -1,69 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: examples_pkstatogr</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">examples_pkstatogr </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><h1><a class="anchor" id="examples_pkstatogr"></a>
-Examples of pkstatogr</h1>
-<div class="fragment"><div class="line">pkstatogr -i input.shp -f FIELDID -n 100</div>
-</div><!-- fragment --><p> report histogram of values in FIELDID (to standard output)</p>
-<div class="fragment"><div class="line">pkstatogr -i input.shp -f FIELDID -min -max -mean -stdev</div>
-</div><!-- fragment --><p> report min, max, mean and standard deviation of values in FIELDID (to standard output) </p>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/md_examples_pksvm.html b/doc/html/md_examples_pksvm.html
deleted file mode 100644
index 2cfd50f..0000000
--- a/doc/html/md_examples_pksvm.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: examples_pksvm</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">examples_pksvm </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><h1><a class="anchor" id="examples_pksvm"></a>
-Examples of pksvm</h1>
-<p>Classify input image input.tif with a support vector machine. A training sample that is provided as an OGR vector dataset. It contains all features (same dimensionality as input.tif) in its fields (please check <a class="el" href="pkextract.html">pkextract</a> on how to obtain such a file from a "clean" vector file containing locations only). A two-fold cross validation (cv) is performed (output on screen). The parameters cost and gamma of the support vector machine are set to 1000 an [...]
-<div class="fragment"><div class="line">pksvm -i input.tif -t training.sqlite -o output.tif -cv 2 -ct colourtable.txt -cc 1000 -g 0.1</div>
-</div><!-- fragment --><p>Classification using bootstrap aggregation. The training sample is randomly split in three subsamples (33% of the original sample each).</p>
-<div class="fragment"><div class="line">pksvm -i input.tif -t training.sqlite -o output.tif -bs 33 -bag 3</div>
-</div><!-- fragment --><p>Classification using prior probabilities for each class. The priors are automatically normalized. The order in which the options -p are provide should respect the alphanumeric order of the class names (class 10 comes before 2...)</p>
-<div class="fragment"><div class="line">pksvm -i input.tif -t training.sqlite -o output.tif -p 1 -p 1 -p 1 -p 1 -p 1 -p 1 -p 1 -p 1 -p 1 -p 1 -p 1 -p 0.2 -p 1 -p 1 -p 1</div>
-</div><!-- fragment --> </div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/md_faq_pkcomposite.html b/doc/html/md_faq_pkcomposite.html
deleted file mode 100644
index 80cb6ab..0000000
--- a/doc/html/md_faq_pkcomposite.html
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: faq_pkcomposite</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">faq_pkcomposite </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><h1><a class="anchor" id="faq_pkcomposite"></a>
-Frequently asked questions about pkcomposite</h1>
-<ul>
-<li><p class="startli">How to use different nodata values in input images?</p>
-<p class="startli">For individual invalid value(s) in input image, use -srcnodata</p>
-<p class="startli">Usage: use unique value for each invalid bands set in -vb (–bndnodata) or use a single value that will be applied to all invalid bands</p>
-<p class="startli">Example:</p>
-</li>
-</ul>
-<div class="fragment"><div class="line">pkcomposite -i input1.tif -i input2.tif -o output.tif -srcnodata 0 -srcnodata 255 -bndnodat 0 -bndnodata 1</div>
-</div><!-- fragment --><p> will consider 0 in band 0 and 255 in band 1 of input images as no value</p>
-<div class="fragment"><div class="line">pkcomposite -i input1.tif -i input2.tif -o output.tif -srcnodata 0 -bndnodata 0 -bndnodata 1</div>
-</div><!-- fragment --><p> will consider 0 in both bands 0 and 1 of input images as no value</p>
-<ul>
-<li><p class="startli">How to use a range of nodata values in input images?</p>
-<p class="startli">For range(s) of invalid values in input images: use -min (–min) and -max (–max) Usage: use unique range set for each invalid bands set in -bndnodata</p>
-<p class="startli">Example: </p>
-<div class="fragment"><div class="line">pkcomposite -i input1.tif -i input2.tif -o output.tif -min 0 -max 200 -min 0 -max 2 -bndnodata 0 -bndnodata 1</div>
-</div><!-- fragment --><p> will consider all negative values in band 0 and 1 of input images as invalid. Values larger or equal to 200 in band 0 will be invalid, as well as values larger or equal to 2 in band 1</p>
-</li>
-<li><p class="startli">If I take the mean value as composit rule for multi-band input images, will the output image contain the mean value of overlapping images in each band?</p>
-<p class="startli">Yes </p>
-</li>
-</ul>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/md_faq_pksetmask.html b/doc/html/md_faq_pksetmask.html
deleted file mode 100644
index 129df3e..0000000
--- a/doc/html/md_faq_pksetmask.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: faq_pksetmask</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">faq_pksetmask </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><h1><a class="anchor" id="faq_pksetmask"></a>
-Frequently asked questions about pksetmask</h1>
-<p>Q1. I want to mask my input image (a byte image with values between 0 and 254) with a mask that only covers a spatial subset of the input image. Within the spatial subset of the primary mask, all pixels must be set to 0 where the primary mask equals 1. Outside the spatial subset I want to set all pixel values to 255.</p>
-<p>A1. This can be done using two masks, selecting the input image as the secondary mask. Choose the secondary operator acting on the secondary mask such that the condition is always true (e.g, < 255 ). </p>
-<div class="fragment"><div class="line">pksetmask -i input.tif -m mask.tif -t 1 -f 0 --<span class="keyword">operator</span> <span class="charliteral">'='</span>  -m input.tif -t 255 -f 255 --<span class="keyword">operator</span> <span class="charliteral">'<'</span>  -o output.tif</div>
-</div><!-- fragment --> </div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/md_header.html b/doc/html/md_header.html
deleted file mode 100644
index 1e32da9..0000000
--- a/doc/html/md_header.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: header</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">header </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><h1><a class="anchor" id="thetool"></a>
-thetool</h1>
-<p>theshortdescription</p>
-<h2>SYNOPSIS</h2>
-<p><code> thesynopsis </code></p>
-<h2>DESCRIPTION</h2>
-<p>thelongdescription</p>
-<h2>OPTIONS</h2>
-<ul>
-<li>use either <code>-short</code> or <code>--long</code> options (both <code>--long=value</code> and <code>--long value</code> are supported)</li>
-<li>short option <code>-h</code> shows basic options only, long option <code>--help</code> shows all options |short|long|type|default|description| |--—|-—|-—|----—|--------—| </li>
-</ul>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/md_installation_linux.html b/doc/html/md_installation_linux.html
deleted file mode 100644
index 4f7bf8d..0000000
--- a/doc/html/md_installation_linux.html
+++ /dev/null
@@ -1,184 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: installation_linux</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">installation_linux </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><h1><a class="anchor" id="installation_linux"></a>
-Installation on Linux</h1>
-<h2><a class="anchor" id="install_debian"></a>
-Installation for Debian Linux (via repository)</h2>
-<p>A <a href="https://packages.debian.org/source/sid/pktools">binary package</a> of pktools for Debian is maintained by Francesco Paolo Lovergine and available in the repository. You can install it using the advanced package tool (apt):</p>
-<div class="fragment"><div class="line">sudo apt-<span class="keyword">get</span> install pktools</div>
-</div><!-- fragment --><p>The version in the repository might not be the latest available (please check the <a href="https://qa.debian.org/developer.php?login=pkg-grass-devel%40lists.alioth.debian.org">packages overview</a>). The latest version of pktools can always be installed via the <a class="el" href="md_installation_linux.html#install_ubuntu">installation script</a> or from the source code using a <a class="el" href="md_installation_linux.html#install_manual">manual</a> installation.</p>
-<h2><a class="anchor" id="install_ubuntu"></a>
-Installation for Ubuntu (Debian based) Linux distributions (from source code via automatic script)</h2>
-<p>Users working with Debian based distributions (e.g., Ubuntu) can download <a href="http://download.savannah.gnu.org/releases/pktools/install_pktools.sh">install_pktools.sh</a>. This script will automatically download the latest release of pktools and dependencies. You need an internet connection when running the script (as root or sudo):</p>
-<div class="fragment"><div class="line">sudo bash install_pktools.sh</div>
-</div><!-- fragment --><h2><a class="anchor" id="install_manual"></a>
-Manual installation for (all Linux distributions)</h2>
-<p>For a manual installation, download the <a href="http://download.savannah.gnu.org/releases/pktools/pktools-latest.tar.gz">latest</a> release from <a href="http://download.savannah.gnu.org/releases/pktools/">Savannah</a></p>
-<p>Optionally: check the release <a href="http://download.savannah.gnu.org/releases/pktools/pktools-latest.md5">md5sum</a> to ensure originality.</p>
-<div class="fragment"><div class="line">md5sum pktools-latest.tar.gz</div>
-</div><!-- fragment --><p>The result should be identical to the content of the corresponding md5 file you downloaded.</p>
-<p>Unpack the tar zip file</p>
-<div class="fragment"><div class="line">tar xzvf pktools-latest.tar.gz</div>
-<div class="line">cd pktools-*</div>
-</div><!-- fragment --><p>You can install pktools via</p>
-<ul>
-<li><a class="el" href="md_installation_linux.html#installation_autotools">autotools</a> (linux only)</li>
-<li><a class="el" href="md_installation_linux.html#installation_cmake">cmake</a> (linux, windows, Mac OS)</li>
-</ul>
-<h2><a class="anchor" id="installation_autotools"></a>
-Installation via autotools</h2>
-<p>Add libtool support to your package:</p>
-<p>If you obtained pktools from the git repository, please please perform the following actions first (assuming the current directory is pktools):</p>
-<div class="fragment"><div class="line">libtoolize</div>
-</div><!-- fragment --><p>Remake the GNU Build System files by scanning 'configure.ac' and running 'autoconf', 'autoheader', 'aclocal', 'automake' and 'libtoolize':</p>
-<div class="fragment"><div class="line">autoreconf</div>
-</div><!-- fragment --><p>Finalize package generation:</p>
-<div class="fragment"><div class="line">automake --add-missing</div>
-</div><!-- fragment --><p>Basic installation (please refer to INSTALL file for more advanced configuration) </p>
-<div class="fragment"><div class="line">./configure</div>
-<div class="line">make</div>
-<div class="line">sudo make install</div>
-<div class="line">sudo ldconfig</div>
-</div><!-- fragment --><h3><a class="anchor" id="pktools_installation_required"></a>
-Required dependences</h3>
-<p>packages to install before pktools</p>
-<ul>
-<li>g++</li>
-<li>make</li>
-<li>libgdal-dev (see also <a href="http://trac.osgeo.org/gdal/wiki/BuildingOnUnix">http://trac.osgeo.org/gdal/wiki/BuildingOnUnix</a>)</li>
-<li>libgsl0-dev (see also <a href="http://www.gnu.org/software/gsl/">http://www.gnu.org/software/gsl/</a>)</li>
-<li>libarmadillo-dev (see also <a href="http://arma.sourceforge.net/download.html">http://arma.sourceforge.net/download.html</a>)</li>
-</ul>
-<p>Example on how to install required packages in Debian based system (using apt-get):</p>
-<ul>
-<li>sudo apt-get install g++ make libgdal-dev libgsl0-dev libarmadillo-dev</li>
-</ul>
-<h3><a class="anchor" id="pktools_installation_optional"></a>
-Optional dependences</h3>
-<p><b>To enable program <a class="el" href="pkoptsvm.html">pkoptsvm</a></b></p>
-<p>Install additional package</p>
-<ul>
-<li>libnlopt-dev (see also <a href="http://ab-initio.mit.edu/wiki/index.php/NLopt#Download_and_installation">http://ab-initio.mit.edu/wiki/index.php/NLopt#Download_and_installation</a> )</li>
-</ul>
-<p>Example on how to install required packages in Debian based system (using apt-get):</p>
-<div class="fragment"><div class="line">sudo apt-<span class="keyword">get</span> install libnlopt-dev</div>
-</div><!-- fragment --><p>Note: currently, the repository seems not to include this package anymore and manual installation is required (see also <a href="http://ab-initio.mit.edu/wiki/index.php/NLopt#Download_and_installation">http://ab-initio.mit.edu/wiki/index.php/NLopt#Download_and_installation</a>)</p>
-<ul>
-<li>Install pktools with with extra configuration option –enable-nlopt:</li>
-</ul>
-<div class="fragment"><div class="line">./configure --enable-nlopt</div>
-<div class="line">make</div>
-<div class="line">sudo make install</div>
-<div class="line">sudo ldconfig</div>
-</div><!-- fragment --><p><b>To enable programs <a class="el" href="pkann.html">pkann</a> and <a class="el" href="pkfsann.html">pkfsann</a></b></p>
-<p>Install package</p>
-<ul>
-<li>libfann-dev (see also <a href="http://leenissen.dk/fann/wp/download/">http://leenissen.dk/fann/wp/download/</a>)</li>
-</ul>
-<p>Example on how to install required packages in Debian based system (using apt-get):</p>
-<div class="fragment"><div class="line">sudo apt-<span class="keyword">get</span> install libfann-dev</div>
-</div><!-- fragment --><p>Install pktools with extra configuration option –libfann-dev:</p>
-<div class="fragment"><div class="line">./configure --enable-fann</div>
-<div class="line">make</div>
-<div class="line">sudo make install</div>
-<div class="line">sudo ldconfig</div>
-</div><!-- fragment --><p><b>To enable program <a class="el" href="pklas2img.html">pklas2img</a></b></p>
-<p>Install additional packages:</p>
-<ul>
-<li>libboost-dev (see also <a href="http://www.boost.org/">http://www.boost.org/</a>)</li>
-<li>liblas1 (from Mateusz Loskot, see also <a href="http://www.liblas.org/tutorial/cpp.html">http://www.liblas.org/tutorial/cpp.html</a>)</li>
-<li>liblas-dev</li>
-<li>python-liblas</li>
-<li>liblas2</li>
-<li>liblas-c2</li>
-<li>liblas-c-dev</li>
-</ul>
-<p>Example on how to install required packages in Debian based system (using apt-get):</p>
-<ul>
-<li>first add the following two lines to /etc/apt/sources.list (replace <codename> with what you get from lsb_release -c)</li>
-</ul>
-<div class="fragment"><div class="line">deb http:<span class="comment">//ppa.launchpad.net/ubuntugis/ubuntugis-unstable/ubuntu <codename> main </span></div>
-<div class="line">deb-src http:<span class="comment">//ppa.launchpad.net/ubuntugis/ubuntugis-unstable/ubuntu <codename> main </span></div>
-</div><!-- fragment --><ul>
-<li>then install extra packages:</li>
-</ul>
-<div class="fragment"><div class="line">sudo apt-<span class="keyword">get</span> install libboost-dev liblas-dev liblas-c-dev liblas1 liblas2 liblas-c2  python-liblas</div>
-</div><!-- fragment --><p>Or install manually as explained in <a href="http://www.liblas.org/compilation.html#using-unix-makefiles-on-linux">http://www.liblas.org/compilation.html#using-unix-makefiles-on-linux</a></p>
-<p>! Note that if you want support for compressed las format (LAZ), you need to install laszip first (<a href="http://www.laszip.org">http://www.laszip.org</a>) and install liblas manually</p>
-<ul>
-<li>Install pktools with with extra configuration option –enable-las:</li>
-</ul>
-<div class="fragment"><div class="line">./configure --enable-las</div>
-<div class="line">make</div>
-<div class="line">sudo make install</div>
-<div class="line">sudo ldconfig</div>
-</div><!-- fragment --><h2><a class="anchor" id="installation_cmake"></a>
-Installation via cmake (or ccmake)</h2>
-<p>Note that CMake version 3.0 or higher is required for building via cmake We will build out-of-source:</p>
-<div class="fragment"><div class="line">mkdir build</div>
-<div class="line">cd build</div>
-<div class="line">ccmake ..</div>
-</div><!-- fragment --><p>Within ccmake, press "c" to configure. Make sure all paths are correctly set. Then press "g" to generate and exit ccmake.</p>
-<p>Compile and link via make:</p>
-<div class="fragment"><div class="line">make</div>
-</div><!-- fragment --> </div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/md_installation_plugins.html b/doc/html/md_installation_plugins.html
deleted file mode 100644
index 8387f73..0000000
--- a/doc/html/md_installation_plugins.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: installation_plugins</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">installation_plugins </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><h1><a class="anchor" id="qgis_plugin"></a>
-QGIS plugin</h1>
-<p>A selection of the pktools utiltities can be run from within QGIS, via the Processing Toolbox.</p>
-<p>Make sure pktools is installed on your system first. Then, you can install the pktools Plugin via the QGIS menu:</p>
-<p>Plugins, Manage and Install Plugins...</p>
-<p>Then set the appropriate path of the pktools bin folder via Processing Options, Providers, pktools, pktools folder.</p>
-<p>Click OK and open the Processing Toolbox. The pktools utilities should appear when the Advanced interface is selected. </p>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/md_installation_windows.html b/doc/html/md_installation_windows.html
deleted file mode 100644
index ce9db27..0000000
--- a/doc/html/md_installation_windows.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: installation_windows</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">installation_windows </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><h1><a class="anchor" id="installation_windows"></a>
-Installation on Windows machines</h1>
-<h2><a class="anchor" id="installation_windows_dependencies"></a>
-Dependencies: OSGeo4W and Visual Studio redistributables</h2>
-<p>Download and install the ​<a href="http://download.osgeo.org/osgeo4w/osgeo4w-setup-x86.exe">32bit</a> or ​<a href="http://download.osgeo.org/osgeo4w/osgeo4w-setup-x86_64.exe">64bit</a> (preferred) version of <a href="osgeo4w.osgeo.org">OSGeo4W</a>. The basic installation with GDAL contains most dependencies that are required for pktools.</p>
-<p>Download and install the ​<a href="http://www.microsoft.com/en-us/download/details.aspx?id=48145">redistributables</a> for Visual Studio 2015.</p>
-<p>Please make sure the latest version of pktools is always installed. Changes with respect to the previous versions can be checked in the text file <a href="http://git.savannah.gnu.org/cgit/pktools.git/tree/ChangeLog">Changelog</a>. Older versions of pktools were installed with a setup exe file. They should be uninstalled first via Programs and Features in Control Panel.</p>
-<h2><a class="anchor" id="Installation_windows_binaries"></a>
-Binary packages of pktools</h2>
-<p>Binary packages of pktools are available for Windows on the <a href="http://download.savannah.gnu.org/releases/pktools">ftp server</a>. Latest versions are only available for <a href="http://download.savannah.gnu.org/releases/pktools/pktools-latest_win64.zip">64bit</a> architectures. Older versions of pktools are also available for 32 bit architectures</p>
-<p>Unzip the archives to your local hard drive. Then copy the pktools folder in the OSGeo apps directory (e.g., "C:\OSGeoW64\apps")</p>
-<h2><a class="anchor" id="Installation_windows_cmake"></a>
-Manual installation via cmake</h2>
-<p>If you prefer to compile pktools yourself, the easiest way is to use CMake. First, install CMake on your machine (version 3.0 or higher). These dependency packages must also be pre-installed: <a href="http://arma.sourceforge.net/download.html">Armadillo</a> and <a href="http://ab-initio.mit.edu/wiki/index.php/NLopt_on_Windows">NLOpt</a> (for the utility pkoptsvm only).</p>
-<p>Set the source directory in CMake to the pktools directory. Build out-of-source by setting a "build" directory, where binaries will be created.</p>
-<p>Specify the generator for building the pktools (e.g., Visual Studio 14 2015 Win64 for 64 bit architectures). You can leave the default native compilers checked.</p>
-<p>Add the OSGeoW64 and armadillo paths to the CMAKE_INSTALL_PREFIX (via the button "add Entry"). Other paths for dependencies on FANN and NLOPT should also be added here.</p>
-<p>Click on the "Configure" button.</p>
-<p>Under "BUILD" you can now select extra utilities based on FANN, LIBLAS and NLOPT. Click again on "Configure". Make sure all dependencies are resolved.</p>
-<p>Then press "Generate".</p>
-<p>A Visual Studio project (PKTOOLS.sln) will be created in the build directory. Open the project in Visual Studio and build the solution.</p>
-<h2><a class="anchor" id="run_windows"></a>
-How to run pktools in Windows</h2>
-<p>The pktools utilities can be run from the command line using the OSGEo4W Shell. A selection of them can also be run from within <a class="el" href="md_installation_plugins.html#qgis_plugin">QGIS</a>, via the Processing Toolbox.</p>
-<p>To run the pktools utilities from a simple Windows cmd shell, you first have to set some environment variables. This can be done by executing the batch file o4w_env.bat, located in OSGeo4W64 from within the cmd shell. </p>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/md_mainpage.html b/doc/html/md_mainpage.html
deleted file mode 100644
index d624211..0000000
--- a/doc/html/md_mainpage.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: mainpage</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">mainpage </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"></div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/myfann__cpp_8h_source.html b/doc/html/myfann__cpp_8h_source.html
deleted file mode 100644
index 3dfce34..0000000
--- a/doc/html/myfann__cpp_8h_source.html
+++ /dev/null
@@ -1,4061 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/algorithms/myfann_cpp.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_e6df591b0639d4c4807ef64d058833e2.html">algorithms</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">myfann_cpp.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="preprocessor">#ifndef FANN_CPP_H_INCLUDED</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="preprocessor"></span><span class="preprocessor">#define FANN_CPP_H_INCLUDED</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">/*</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment"> *</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"> *  Fast Artificial Neural Network (fann) C++ Wrapper</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment"> *  Copyright (C) 2004-2006 created by freegoldbar (at) yahoo dot com</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment"> *</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment"> *  This wrapper is free software; you can redistribute it and/or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment"> *  modify it under the terms of the GNU Lesser General Public</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"> *  License as published by the Free Software Foundation; either</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment"> *  version 2.1 of the License, or (at your option) any later version.</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment"> *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment"> *  This wrapper is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment"> *  but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"> *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment"> *  Lesser General Public License for more details.</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment"> *</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment"> *  You should have received a copy of the GNU Lesser General Public</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="comment"> *  License along with this library; if not, write to the Free Software</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="comment"> *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="comment"> *</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"> */</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> </div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="comment">/*</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="comment"> *  Title: FANN Wrapper for C++</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="comment"> *</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="comment"> *  Overview:</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="comment"> *</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="comment"> *  The Fann Wrapper for C++ provides two classes: <neural_net></span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="comment"> *  and <training_data>. To use the wrapper include</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="comment"> *  doublefann.h, floatfann.h or fixedfann.h before the</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="comment"> *  fann_cpp.h header file. To get started see xor_sample.cpp</span></div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="comment"> *  in the examples directory. The license is LGPL. Copyright (C)</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="comment"> *  2004-2006 created by <freegoldbar at yahoo.com>.</span></div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="comment"> *</span></div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="comment"> *  Note:  Notes and differences from C API</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="comment"> *</span></div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="comment"> *  -  The Fann Wrapper for C++ is a minimal wrapper without use of</span></div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> <span class="comment"> *       templates or exception handling for efficient use in any environment.</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="comment"> *       Benefits include stricter type checking, simpler memory</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span> <span class="comment"> *       management and possibly code completion in program editor.</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span> <span class="comment"> *  -  Method names are the same as the function names in the C</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span> <span class="comment"> *       API except the fann_ prefix has been removed. Enums in the</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span> <span class="comment"> *       namespace are similarly defined without the FANN_ prefix.</span></div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span> <span class="comment"> *  -  The arguments to the methods are the same as the C API</span></div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span> <span class="comment"> *       except that the struct fann *ann/struct fann_train_data *data</span></div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span> <span class="comment"> *       arguments are encapsulated so they are not present in the</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span> <span class="comment"> *       method signatures or are translated into class references.</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span> <span class="comment"> *  -  The various create methods return a boolean set to true to</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span> <span class="comment"> *       indicate that the neural network was created, false otherwise.</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span> <span class="comment"> *       The same goes for the read_train_from_file method.</span></div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span> <span class="comment"> *  -  The neural network and training data is automatically cleaned</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span> <span class="comment"> *       up in the destructors and create/read methods.</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span> <span class="comment"> *  -  To make the destructors virtual define USE_VIRTUAL_DESTRUCTOR</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span> <span class="comment"> *       before including the header file.</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span> <span class="comment"> *  -  Additional methods are available on the training_data class to</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span> <span class="comment"> *       give access to the underlying training data. They are get_input,</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span> <span class="comment"> *       get_output and set_train_data. Finally fann_duplicate_train_data</span></div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span> <span class="comment"> *       has been replaced by a copy constructor.</span></div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span> <span class="comment"> *</span></div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span> <span class="comment"> *  Note: Changes</span></div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span> <span class="comment"> *</span></div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span> <span class="comment"> *  Version 2.1.0:</span></div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span> <span class="comment"> *     - General update to fann C library 2.1.0 with support for new functionality</span></div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span> <span class="comment"> *     - Due to changes in the C API the C++ API is not fully backward compatible:</span></div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span> <span class="comment"> *        The create methods have changed names and parameters.</span></div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span> <span class="comment"> *        The training callback function has different parameters and a set_callback.</span></div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span> <span class="comment"> *        Some <training_data> methods have updated names.</span></div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span> <span class="comment"> *        Get activation function and steepness is available for neurons, not layers.</span></div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span> <span class="comment"> *     - Extensions are now part of fann so there is no fann_extensions.h</span></div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span> <span class="comment"> *</span></div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span> <span class="comment"> *  Version 1.2.0:</span></div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span> <span class="comment"> *     - Changed char pointers to const std::string references</span></div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span> <span class="comment"> *     - Added const_casts where the C API required it</span></div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span> <span class="comment"> *     - Initialized enums from the C enums instead of numeric constants</span></div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span> <span class="comment"> *     - Added a method set_train_data that copies and allocates training</span></div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span> <span class="comment"> *     - data in a way that is compatible with the way the C API deallocates</span></div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span> <span class="comment"> *     - the data thus making it possible to change training data.</span></div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span> <span class="comment"> *     - The get_rprop_increase_factor method did not return its value</span></div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span> <span class="comment"> *</span></div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span> <span class="comment"> *  Version 1.0.0:</span></div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span> <span class="comment"> *     - Initial version</span></div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span> <span class="comment"> *</span></div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span> <span class="comment"> */</span></div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span> </div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span> <span class="preprocessor">#include <iostream></span></div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span> <span class="preprocessor">#include <stdarg.h></span></div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span> <span class="preprocessor">#include <string></span></div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span> <span class="preprocessor">#include <vector></span></div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span> <span class="preprocessor">#include <cassert></span></div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span> <span class="preprocessor">#include "base/Vector2d.h"</span></div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span> </div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span> <span class="comment">/* Namespace: FANN</span></div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span> <span class="comment">    The FANN namespace groups the C++ wrapper definitions */</span></div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span> <span class="keyword">namespace </span>FANN</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span> {</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     <span class="comment">/* Enum: error_function_enum</span></div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span> <span class="comment">        Error function used during training.</span></div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span> <span class="comment">        </span></div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span> <span class="comment">        ERRORFUNC_LINEAR - Standard linear error function.</span></div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span> <span class="comment">        ERRORFUNC_TANH - Tanh error function, usually better </span></div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span> <span class="comment">            but can require a lower learning rate. This error function agressively targets outputs that</span></div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span> <span class="comment">            differ much from the desired, while not targetting outputs that only differ a little that much.</span></div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span> <span class="comment">            This activation function is not recommended for cascade training and incremental training.</span></div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span> <span class="comment"></span></div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span> <span class="comment">        See also:</span></div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span> <span class="comment">            <neural_net::set_train_error_function>, <neural_net::get_train_error_function></span></div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span> <span class="comment">    */</span></div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>     <span class="keyword">enum</span> error_function_enum {</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>         ERRORFUNC_LINEAR = FANN_ERRORFUNC_LINEAR,</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>         ERRORFUNC_TANH</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     };</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span> </div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     <span class="comment">/* Enum: stop_function_enum</span></div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span> <span class="comment">        Stop criteria used during training.</span></div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span> <span class="comment"></span></div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span> <span class="comment">        STOPFUNC_MSE - Stop criteria is Mean Square Error (MSE) value.</span></div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span> <span class="comment">        STOPFUNC_BIT - Stop criteria is number of bits that fail. The number of bits; means the</span></div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span> <span class="comment">            number of output neurons which differ more than the bit fail limit </span></div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span> <span class="comment">            (see <neural_net::get_bit_fail_limit>, <neural_net::set_bit_fail_limit>). </span></div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span> <span class="comment">            The bits are counted in all of the training data, so this number can be higher than</span></div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span> <span class="comment">            the number of training data.</span></div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span> <span class="comment"></span></div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span> <span class="comment">        See also:</span></div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span> <span class="comment">            <neural_net::set_train_stop_function>, <neural_net::get_train_stop_function></span></div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span> <span class="comment">    */</span></div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>     <span class="keyword">enum</span> stop_function_enum</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>     {</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>         STOPFUNC_MSE = FANN_STOPFUNC_MSE,</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>         STOPFUNC_BIT</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>     };</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span> </div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>     <span class="comment">/* Enum: training_algorithm_enum</span></div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span> <span class="comment">        The Training algorithms used when training on <training_data> with functions like</span></div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span> <span class="comment">        <neural_net::train_on_data> or <neural_net::train_on_file>. The incremental training</span></div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span> <span class="comment">        looks alters the weights after each time it is presented an input pattern, while batch</span></div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span> <span class="comment">        only alters the weights once after it has been presented to all the patterns.</span></div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span> <span class="comment"></span></div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span> <span class="comment">        TRAIN_INCREMENTAL -  Standard backpropagation algorithm, where the weights are </span></div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span> <span class="comment">            updated after each training pattern. This means that the weights are updated many </span></div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span> <span class="comment">            times during a single epoch. For this reason some problems, will train very fast with </span></div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span> <span class="comment">            this algorithm, while other more advanced problems will not train very well.</span></div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span> <span class="comment">        TRAIN_BATCH -  Standard backpropagation algorithm, where the weights are updated after </span></div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span> <span class="comment">            calculating the mean square error for the whole training set. This means that the weights </span></div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span> <span class="comment">            are only updated once during a epoch. For this reason some problems, will train slower with </span></div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span> <span class="comment">            this algorithm. But since the mean square error is calculated more correctly than in </span></div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span> <span class="comment">            incremental training, some problems will reach a better solutions with this algorithm.</span></div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span> <span class="comment">        TRAIN_RPROP - A more advanced batch training algorithm which achieves good results </span></div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span> <span class="comment">            for many problems. The RPROP training algorithm is adaptive, and does therefore not </span></div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span> <span class="comment">            use the learning_rate. Some other parameters can however be set to change the way the </span></div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span> <span class="comment">            RPROP algorithm works, but it is only recommended for users with insight in how the RPROP </span></div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span> <span class="comment">            training algorithm works. The RPROP training algorithm is described by </span></div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span> <span class="comment">            [Riedmiller and Braun, 1993], but the actual learning algorithm used here is the </span></div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span> <span class="comment">            iRPROP- training algorithm which is described by [Igel and Husken, 2000] which </span></div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span> <span class="comment">            is an variety of the standard RPROP training algorithm.</span></div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span> <span class="comment">        TRAIN_QUICKPROP - A more advanced batch training algorithm which achieves good results </span></div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span> <span class="comment">            for many problems. The quickprop training algorithm uses the learning_rate parameter </span></div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span> <span class="comment">            along with other more advanced parameters, but it is only recommended to change these </span></div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span> <span class="comment">            advanced parameters, for users with insight in how the quickprop training algorithm works.</span></div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span> <span class="comment">            The quickprop training algorithm is described by [Fahlman, 1988].</span></div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span> <span class="comment">        </span></div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span> <span class="comment">        See also:</span></div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span> <span class="comment">            <neural_net::set_training_algorithm>, <neural_net::get_training_algorithm></span></div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span> <span class="comment">    */</span></div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>     <span class="keyword">enum</span> training_algorithm_enum {</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>         TRAIN_INCREMENTAL = FANN_TRAIN_INCREMENTAL,</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>         TRAIN_BATCH,</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>         TRAIN_RPROP,</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>         TRAIN_QUICKPROP</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>     };</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span> </div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>     <span class="comment">/* Enum: activation_function_enum</span></div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span> <span class="comment">       </span></div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span> <span class="comment">        The activation functions used for the neurons during training. The activation functions</span></div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span> <span class="comment">        can either be defined for a group of neurons by <neural_net::set_activation_function_hidden></span></div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span> <span class="comment">        and <neural_net::set_activation_function_output> or it can be defined for a single neuron by</span></div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span> <span class="comment">        <neural_net::set_activation_function>.</span></div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span> <span class="comment"></span></div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span> <span class="comment">        The steepness of an activation function is defined in the same way by </span></div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span> <span class="comment">        <neural_net::set_activation_steepness_hidden>, <neural_net::set_activation_steepness_output></span></div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span> <span class="comment">        and <neural_net::set_activation_steepness>.</span></div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span> <span class="comment">       </span></div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span> <span class="comment">       The functions are described with functions where:</span></div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span> <span class="comment">       * x is the input to the activation function,</span></div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span> <span class="comment">       * y is the output,</span></div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span> <span class="comment">       * s is the steepness and</span></div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span> <span class="comment">       * d is the derivation.</span></div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span> <span class="comment"></span></div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span> <span class="comment">       FANN_LINEAR - Linear activation function. </span></div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span> <span class="comment">         * span: -inf < y < inf</span></div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span> <span class="comment">         * y = x*s, d = 1*s</span></div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span> <span class="comment">         * Can NOT be used in fixed point.</span></div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span> <span class="comment"></span></div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span> <span class="comment">       FANN_THRESHOLD - Threshold activation function.</span></div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span> <span class="comment">         * x < 0 -> y = 0, x >= 0 -> y = 1</span></div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span> <span class="comment">         * Can NOT be used during training.</span></div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span> <span class="comment"></span></div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span> <span class="comment">       FANN_THRESHOLD_SYMMETRIC - Threshold activation function.</span></div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span> <span class="comment">         * x < 0 -> y = 0, x >= 0 -> y = 1</span></div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span> <span class="comment">         * Can NOT be used during training.</span></div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span> <span class="comment"></span></div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span> <span class="comment">       FANN_SIGMOID - Sigmoid activation function.</span></div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span> <span class="comment">         * One of the most used activation functions.</span></div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span> <span class="comment">         * span: 0 < y < 1</span></div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span> <span class="comment">         * y = 1/(1 + exp(-2*s*x))</span></div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span> <span class="comment">         * d = 2*s*y*(1 - y)</span></div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span> <span class="comment"></span></div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span> <span class="comment">       FANN_SIGMOID_STEPWISE - Stepwise linear approximation to sigmoid.</span></div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span> <span class="comment">         * Faster than sigmoid but a bit less precise.</span></div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span> <span class="comment"></span></div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span> <span class="comment">       FANN_SIGMOID_SYMMETRIC - Symmetric sigmoid activation function, aka. tanh.</span></div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span> <span class="comment">         * One of the most used activation functions.</span></div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span> <span class="comment">         * span: -1 < y < 1</span></div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span> <span class="comment">         * y = tanh(s*x) = 2/(1 + exp(-2*s*x)) - 1</span></div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span> <span class="comment">         * d = s*(1-(y*y))</span></div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span> <span class="comment"></span></div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span> <span class="comment">       FANN_SIGMOID_SYMMETRIC - Stepwise linear approximation to symmetric sigmoid.</span></div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span> <span class="comment">         * Faster than symmetric sigmoid but a bit less precise.</span></div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span> <span class="comment"></span></div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span> <span class="comment">       FANN_GAUSSIAN - Gaussian activation function.</span></div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span> <span class="comment">         * 0 when x = -inf, 1 when x = 0 and 0 when x = inf</span></div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span> <span class="comment">         * span: 0 < y < 1</span></div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span> <span class="comment">         * y = exp(-x*s*x*s)</span></div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span> <span class="comment">         * d = -2*x*s*y*s</span></div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span> <span class="comment"></span></div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span> <span class="comment">       FANN_GAUSSIAN_SYMMETRIC - Symmetric gaussian activation function.</span></div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span> <span class="comment">         * -1 when x = -inf, 1 when x = 0 and 0 when x = inf</span></div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span> <span class="comment">         * span: -1 < y < 1</span></div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span> <span class="comment">         * y = exp(-x*s*x*s)*2-1</span></div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span> <span class="comment">         * d = -2*x*s*(y+1)*s</span></div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span> <span class="comment">         </span></div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span> <span class="comment">       FANN_ELLIOT - Fast (sigmoid like) activation function defined by David Elliott</span></div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span> <span class="comment">         * span: 0 < y < 1</span></div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span> <span class="comment">         * y = ((x*s) / 2) / (1 + |x*s|) + 0.5</span></div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span> <span class="comment">         * d = s*1/(2*(1+|x*s|)*(1+|x*s|))</span></div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span> <span class="comment">         </span></div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span> <span class="comment">       FANN_ELLIOT_SYMMETRIC - Fast (symmetric sigmoid like) activation function defined by David Elliott</span></div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span> <span class="comment">         * span: -1 < y < 1   </span></div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span> <span class="comment">         * y = (x*s) / (1 + |x*s|)</span></div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span> <span class="comment">         * d = s*1/((1+|x*s|)*(1+|x*s|))</span></div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span> <span class="comment"></span></div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span> <span class="comment">        FANN_LINEAR_PIECE - Bounded linear activation function.</span></div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span> <span class="comment">         * span: 0 < y < 1</span></div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span> <span class="comment">         * y = x*s, d = 1*s</span></div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span> <span class="comment">         </span></div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span> <span class="comment">        FANN_LINEAR_PIECE_SYMMETRIC - Bounded Linear activation function.</span></div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span> <span class="comment">         * span: -1 < y < 1</span></div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span> <span class="comment">         * y = x*s, d = 1*s</span></div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span> <span class="comment">    </span></div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span> <span class="comment">        FANN_SIN_SYMMETRIC - Periodical sinus activation function.</span></div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span> <span class="comment">         * span: -1 <= y <= 1</span></div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span> <span class="comment">         * y = sin(x*s)</span></div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span> <span class="comment">         * d = s*cos(x*s)</span></div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span> <span class="comment">         </span></div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span> <span class="comment">        FANN_COS_SYMMETRIC - Periodical cosinus activation function.</span></div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span> <span class="comment">         * span: -1 <= y <= 1</span></div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span> <span class="comment">         * y = cos(x*s)</span></div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span> <span class="comment">         * d = s*-sin(x*s)</span></div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span> <span class="comment">         </span></div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span> <span class="comment">        See also:</span></div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span> <span class="comment">            <neural_net::set_activation_function_hidden>,</span></div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span> <span class="comment">            <neural_net::set_activation_function_output></span></div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span> <span class="comment">    */</span></div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>     <span class="keyword">enum</span> activation_function_enum {</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>         LINEAR = FANN_LINEAR,</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>         THRESHOLD,</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>         THRESHOLD_SYMMETRIC,</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>         SIGMOID,</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>         SIGMOID_STEPWISE,</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>         SIGMOID_SYMMETRIC,</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>         SIGMOID_SYMMETRIC_STEPWISE,</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>         GAUSSIAN,</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>         GAUSSIAN_SYMMETRIC,</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>         GAUSSIAN_STEPWISE,</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>         ELLIOT,</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>         ELLIOT_SYMMETRIC,</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>         LINEAR_PIECE,</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>         LINEAR_PIECE_SYMMETRIC,</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>         SIN_SYMMETRIC,</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>         COS_SYMMETRIC</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>     };</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span> </div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>     <span class="comment">/* Enum: network_type_enum</span></div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span> <span class="comment"></span></div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span> <span class="comment">        Definition of network types used by <neural_net::get_network_type></span></div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span> <span class="comment"></span></div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span> <span class="comment">        LAYER - Each layer only has connections to the next layer</span></div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span> <span class="comment">        SHORTCUT - Each layer has connections to all following layers</span></div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span> <span class="comment"></span></div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span> <span class="comment">       See Also:</span></div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span> <span class="comment">          <neural_net::get_network_type>, <fann_get_network_type></span></div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span> <span class="comment"></span></div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span> <span class="comment">       This enumeration appears in FANN >= 2.1.0</span></div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span> <span class="comment">    */</span></div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>     <span class="keyword">enum</span> network_type_enum</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>     {</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>         LAYER = FANN_NETTYPE_LAYER,</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>         SHORTCUT</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>     };</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span> </div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>     <span class="comment">/* Type: connection</span></div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span> <span class="comment"></span></div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span> <span class="comment">        Describes a connection between two neurons and its weight</span></div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span> <span class="comment"></span></div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span> <span class="comment">        from_neuron - Unique number used to identify source neuron</span></div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span> <span class="comment">        to_neuron - Unique number used to identify destination neuron</span></div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span> <span class="comment">        weight - The numerical value of the weight</span></div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span> <span class="comment"></span></div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span> <span class="comment">        See Also:</span></div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span> <span class="comment">            <neural_net::get_connection_array>, <neural_net::set_weight_array></span></div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span> <span class="comment"></span></div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span> <span class="comment">       This structure appears in FANN >= 2.1.0</span></div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span> <span class="comment">    */</span></div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>     <span class="keyword">typedef</span> <span class="keyword">struct </span>fann_connection connection;</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span> </div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>     <span class="comment">/* Forward declaration of class neural_net and training_data */</span></div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>     <span class="keyword">class </span>neural_net;</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>     <span class="keyword">class </span>training_data;</div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span> </div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>     <span class="comment">/* Type: callback_type</span></div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span> <span class="comment">       This callback function can be called during training when using <neural_net::train_on_data>, </span></div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span> <span class="comment">       <neural_net::train_on_file> or <neural_net::cascadetrain_on_data>.</span></div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span> <span class="comment">        </span></div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span> <span class="comment">        >typedef int (*callback_type) (neural_net &net, training_data &train,</span></div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span> <span class="comment">        >    unsigned int max_epochs, unsigned int epochs_between_reports,</span></div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span> <span class="comment">        >    float desired_error, unsigned int epochs, void *user_data);</span></div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span> <span class="comment">        </span></div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span> <span class="comment">        The callback can be set by using <neural_net::set_callback> and is very usefull for doing custom </span></div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span> <span class="comment">        things during training. It is recommended to use this function when implementing custom </span></div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span> <span class="comment">        training procedures, or when visualizing the training in a GUI etc. The parameters which the</span></div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span> <span class="comment">        callback function takes is the parameters given to the <neural_net::train_on_data>, plus an epochs</span></div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span> <span class="comment">        parameter which tells how many epochs the training have taken so far.</span></div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span> <span class="comment">        </span></div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span> <span class="comment">        The callback function should return an integer, if the callback function returns -1, the training</span></div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span> <span class="comment">        will terminate.</span></div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span> <span class="comment">        </span></div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span> <span class="comment">        Example of a callback function that prints information to cout:</span></div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span> <span class="comment">            >int print_callback(FANN::neural_net &net, FANN::training_data &train,</span></div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span> <span class="comment">            >    unsigned int max_epochs, unsigned int epochs_between_reports,</span></div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span> <span class="comment">            >    float desired_error, unsigned int epochs, void *user_data)</span></div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span> <span class="comment">            >{</span></div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span> <span class="comment">            >    cout << "Epochs     " << setw(8) << epochs << ". "</span></div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span> <span class="comment">            >         << "Current Error: " << left << net.get_MSE() << right << endl;</span></div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span> <span class="comment">            >    return 0;</span></div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span> <span class="comment">            >}</span></div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span> <span class="comment">        </span></div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span> <span class="comment">        See also:</span></div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span> <span class="comment">            <neural_net::set_callback>, <fann_callback_type></span></div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span> <span class="comment">     */</span> </div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>     <span class="keyword">typedef</span> int (*callback_type) (neural_net &net, training_data &train,</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> max_epochs, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> epochs_between_reports,</div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>         <span class="keywordtype">float</span> desired_error, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> epochs, <span class="keywordtype">void</span> *user_data);</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span> </div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>     <span class="comment">/*************************************************************************/</span></div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span> </div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>     <span class="comment">/* Class: training_data</span></div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span> <span class="comment"></span></div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span> <span class="comment">        Encapsulation of a training data set <struct fann_train_data> and</span></div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span> <span class="comment">        associated C API functions.</span></div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span> <span class="comment">    */</span></div>
-<div class="line"><a name="l00362"></a><span class="lineno"><a class="line" href="classFANN_1_1training__data.html">  362</a></span>     <span class="keyword">class </span><a class="code" href="classFANN_1_1training__data.html">training_data</a></div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>     {</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>     <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>         <span class="comment">/* Constructor: training_data</span></div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span> <span class="comment">        </span></div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span> <span class="comment">            Default constructor creates an empty neural net.</span></div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span> <span class="comment">            Use <read_train_from_file>, <set_train_data> or <create_train_from_callback> to initialize.</span></div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span> <span class="comment">        */</span></div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>         <a class="code" href="classFANN_1_1training__data.html">training_data</a>() : train_data(NULL)</div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>         {</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>         }</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span> </div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>         <span class="comment">/* Constructor: training_data</span></div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span> <span class="comment">        </span></div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span> <span class="comment">            Copy constructor constructs a copy of the training data.</span></div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span> <span class="comment">            Corresponds to the C API <fann_duplicate_train_data> function.</span></div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span> <span class="comment">        */</span></div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>         <a class="code" href="classFANN_1_1training__data.html">training_data</a>(<span class="keyword">const</span> <a class="code" href="classFANN_1_1training__data.html">training_data</a> &data)</div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>         {</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>             destroy_train();</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>             <span class="keywordflow">if</span> (data.train_data != NULL)</div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>             {</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>                 train_data = fann_duplicate_train_data(data.train_data);</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>             }</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>         }</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span> </div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>         <span class="comment">/* Destructor: ~training_data</span></div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span> <span class="comment"></span></div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span> <span class="comment">            Provides automatic cleanup of data.</span></div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span> <span class="comment">            Define USE_VIRTUAL_DESTRUCTOR if you need the destructor to be virtual.</span></div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span> <span class="comment"></span></div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span> <span class="comment">            See also:</span></div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span> <span class="comment">                <destroy></span></div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span> <span class="comment">        */</span></div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span> <span class="preprocessor">#ifdef USE_VIRTUAL_DESTRUCTOR</span></div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span> <span class="preprocessor"></span>        <span class="keyword">virtual</span></div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span> <span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span> <span class="preprocessor"></span>        ~<a class="code" href="classFANN_1_1training__data.html">training_data</a>()</div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>         {</div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>             destroy_train();</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>         }</div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span> </div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>         <span class="comment">/* Method: destroy</span></div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span> <span class="comment">        </span></div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span> <span class="comment">            Destructs the training data. Called automatically by the destructor.</span></div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span> <span class="comment"></span></div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span> <span class="comment">            See also:</span></div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span> <span class="comment">                <~training_data></span></div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span> <span class="comment">        */</span></div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>         <span class="keywordtype">void</span> destroy_train()</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>         {</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>             <span class="keywordflow">if</span> (train_data != NULL)</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span>             {</div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>                 fann_destroy_train(train_data);</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>                 train_data = NULL;</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>             }</div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>         }</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span> </div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>         <span class="comment">/* Method: read_train_from_file</span></div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span> <span class="comment">           Reads a file that stores training data.</span></div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span> <span class="comment">           </span></div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span> <span class="comment">           The file must be formatted like:</span></div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span> <span class="comment">           >num_train_data num_input num_output</span></div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span> <span class="comment">           >inputdata seperated by space</span></div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span> <span class="comment">           >outputdata seperated by space</span></div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span> <span class="comment">           ></span></div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span> <span class="comment">           >.</span></div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span> <span class="comment">           >.</span></div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span> <span class="comment">           >.</span></div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span> <span class="comment">           ></span></div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span> <span class="comment">           >inputdata seperated by space</span></div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span> <span class="comment">           >outputdata seperated by space</span></div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span> <span class="comment">           </span></div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span> <span class="comment">            <neural_net::train_on_data>, <save_train>, <fann_read_train_from_file></span></div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span> <span class="comment"></span></div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span> <span class="comment">            This function appears in FANN >= 1.0.0</span></div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span> <span class="comment">        */</span> </div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span>         <span class="keywordtype">bool</span> read_train_from_file(<span class="keyword">const</span> std::string &filename)</div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span>         {</div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span>             destroy_train();</div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span>             train_data = fann_read_train_from_file(filename.c_str());</div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span>             <span class="keywordflow">return</span> (train_data != NULL);</div>
-<div class="line"><a name="l00445"></a><span class="lineno">  445</span>         }</div>
-<div class="line"><a name="l00446"></a><span class="lineno">  446</span> </div>
-<div class="line"><a name="l00447"></a><span class="lineno">  447</span>         <span class="comment">/* Method: save_train</span></div>
-<div class="line"><a name="l00448"></a><span class="lineno">  448</span> <span class="comment">           </span></div>
-<div class="line"><a name="l00449"></a><span class="lineno">  449</span> <span class="comment">           Save the training structure to a file, with the format as specified in <read_train_from_file></span></div>
-<div class="line"><a name="l00450"></a><span class="lineno">  450</span> <span class="comment"></span></div>
-<div class="line"><a name="l00451"></a><span class="lineno">  451</span> <span class="comment">           Return:</span></div>
-<div class="line"><a name="l00452"></a><span class="lineno">  452</span> <span class="comment">           The function returns true on success and false on failure.</span></div>
-<div class="line"><a name="l00453"></a><span class="lineno">  453</span> <span class="comment">              </span></div>
-<div class="line"><a name="l00454"></a><span class="lineno">  454</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span> <span class="comment">            <read_train_from_file>, <save_train_to_fixed>, <fann_save_train></span></div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</span> <span class="comment">            </span></div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span> <span class="comment">           This function appears in FANN >= 1.0.0.      </span></div>
-<div class="line"><a name="l00458"></a><span class="lineno">  458</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l00459"></a><span class="lineno">  459</span>         <span class="keywordtype">bool</span> save_train(<span class="keyword">const</span> std::string &filename)</div>
-<div class="line"><a name="l00460"></a><span class="lineno">  460</span>         {</div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span>             <span class="keywordflow">if</span> (train_data == NULL)</div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span>             {</div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span>                 <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00464"></a><span class="lineno">  464</span>             }</div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span>             <span class="keywordflow">if</span> (fann_save_train(train_data, filename.c_str()) == -1)</div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>             {</div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span>                 <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span>             }</div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span>             <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00470"></a><span class="lineno">  470</span>         }</div>
-<div class="line"><a name="l00471"></a><span class="lineno">  471</span> </div>
-<div class="line"><a name="l00472"></a><span class="lineno">  472</span>         <span class="comment">/* Method: save_train_to_fixed</span></div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span> <span class="comment">           </span></div>
-<div class="line"><a name="l00474"></a><span class="lineno">  474</span> <span class="comment">           Saves the training structure to a fixed point data file.</span></div>
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span> <span class="comment">         </span></div>
-<div class="line"><a name="l00476"></a><span class="lineno">  476</span> <span class="comment">           This function is very usefull for testing the quality of a fixed point network.</span></div>
-<div class="line"><a name="l00477"></a><span class="lineno">  477</span> <span class="comment">           </span></div>
-<div class="line"><a name="l00478"></a><span class="lineno">  478</span> <span class="comment">           Return:</span></div>
-<div class="line"><a name="l00479"></a><span class="lineno">  479</span> <span class="comment">           The function returns true on success and false on failure.</span></div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span> <span class="comment">           </span></div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l00482"></a><span class="lineno">  482</span> <span class="comment">            <save_train>, <fann_save_train_to_fixed></span></div>
-<div class="line"><a name="l00483"></a><span class="lineno">  483</span> <span class="comment"></span></div>
-<div class="line"><a name="l00484"></a><span class="lineno">  484</span> <span class="comment">           This function appears in FANN >= 1.0.0.      </span></div>
-<div class="line"><a name="l00485"></a><span class="lineno">  485</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l00486"></a><span class="lineno">  486</span>         <span class="keywordtype">bool</span> save_train_to_fixed(<span class="keyword">const</span> std::string &filename, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> decimal_point)</div>
-<div class="line"><a name="l00487"></a><span class="lineno">  487</span>         {</div>
-<div class="line"><a name="l00488"></a><span class="lineno">  488</span>             <span class="keywordflow">if</span> (train_data == NULL)</div>
-<div class="line"><a name="l00489"></a><span class="lineno">  489</span>             {</div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span>                 <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span>             }</div>
-<div class="line"><a name="l00492"></a><span class="lineno">  492</span>             <span class="keywordflow">if</span> (fann_save_train_to_fixed(train_data, filename.c_str(), decimal_point) == -1)</div>
-<div class="line"><a name="l00493"></a><span class="lineno">  493</span>             {</div>
-<div class="line"><a name="l00494"></a><span class="lineno">  494</span>                 <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00495"></a><span class="lineno">  495</span>             }</div>
-<div class="line"><a name="l00496"></a><span class="lineno">  496</span>             <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00497"></a><span class="lineno">  497</span>         }</div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span> </div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span>         <span class="comment">/* Method: shuffle_train_data</span></div>
-<div class="line"><a name="l00500"></a><span class="lineno">  500</span> <span class="comment">           </span></div>
-<div class="line"><a name="l00501"></a><span class="lineno">  501</span> <span class="comment">           Shuffles training data, randomizing the order. </span></div>
-<div class="line"><a name="l00502"></a><span class="lineno">  502</span> <span class="comment">           This is recommended for incremental training, while it have no influence during batch training.</span></div>
-<div class="line"><a name="l00503"></a><span class="lineno">  503</span> <span class="comment">           </span></div>
-<div class="line"><a name="l00504"></a><span class="lineno">  504</span> <span class="comment">           This function appears in FANN >= 1.1.0.</span></div>
-<div class="line"><a name="l00505"></a><span class="lineno">  505</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l00506"></a><span class="lineno">  506</span>         <span class="keywordtype">void</span> shuffle_train_data()</div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span>         {</div>
-<div class="line"><a name="l00508"></a><span class="lineno">  508</span>             <span class="keywordflow">if</span> (train_data != NULL)</div>
-<div class="line"><a name="l00509"></a><span class="lineno">  509</span>             {</div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span>                 fann_shuffle_train_data(train_data);</div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span>             }</div>
-<div class="line"><a name="l00512"></a><span class="lineno">  512</span>         }</div>
-<div class="line"><a name="l00513"></a><span class="lineno">  513</span> </div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span>         <span class="comment">/* Method: merge_train_data</span></div>
-<div class="line"><a name="l00515"></a><span class="lineno">  515</span> <span class="comment">           </span></div>
-<div class="line"><a name="l00516"></a><span class="lineno">  516</span> <span class="comment">           Merges the data into the data contained in the <training_data>.</span></div>
-<div class="line"><a name="l00517"></a><span class="lineno">  517</span> <span class="comment">           </span></div>
-<div class="line"><a name="l00518"></a><span class="lineno">  518</span> <span class="comment">           This function appears in FANN >= 1.1.0.</span></div>
-<div class="line"><a name="l00519"></a><span class="lineno">  519</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l00520"></a><span class="lineno">  520</span>         <span class="keywordtype">void</span> merge_train_data(<span class="keyword">const</span> <a class="code" href="classFANN_1_1training__data.html">training_data</a> &data)</div>
-<div class="line"><a name="l00521"></a><span class="lineno">  521</span>         {</div>
-<div class="line"><a name="l00522"></a><span class="lineno">  522</span>             fann_train_data *new_data = fann_merge_train_data(train_data, data.train_data);</div>
-<div class="line"><a name="l00523"></a><span class="lineno">  523</span>             <span class="keywordflow">if</span> (new_data != NULL)</div>
-<div class="line"><a name="l00524"></a><span class="lineno">  524</span>             {</div>
-<div class="line"><a name="l00525"></a><span class="lineno">  525</span>                 destroy_train();</div>
-<div class="line"><a name="l00526"></a><span class="lineno">  526</span>                 train_data = new_data;</div>
-<div class="line"><a name="l00527"></a><span class="lineno">  527</span>             }</div>
-<div class="line"><a name="l00528"></a><span class="lineno">  528</span>         }</div>
-<div class="line"><a name="l00529"></a><span class="lineno">  529</span> </div>
-<div class="line"><a name="l00530"></a><span class="lineno">  530</span>         <span class="comment">/* Method: length_train_data</span></div>
-<div class="line"><a name="l00531"></a><span class="lineno">  531</span> <span class="comment">           </span></div>
-<div class="line"><a name="l00532"></a><span class="lineno">  532</span> <span class="comment">           Returns the number of training patterns in the <training_data>.</span></div>
-<div class="line"><a name="l00533"></a><span class="lineno">  533</span> <span class="comment"></span></div>
-<div class="line"><a name="l00534"></a><span class="lineno">  534</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l00535"></a><span class="lineno">  535</span> <span class="comment">           <num_input_train_data>, <num_output_train_data>, <fann_length_train_data></span></div>
-<div class="line"><a name="l00536"></a><span class="lineno">  536</span> <span class="comment"></span></div>
-<div class="line"><a name="l00537"></a><span class="lineno">  537</span> <span class="comment">           This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l00538"></a><span class="lineno">  538</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l00539"></a><span class="lineno">  539</span>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length_train_data()</div>
-<div class="line"><a name="l00540"></a><span class="lineno">  540</span>         {</div>
-<div class="line"><a name="l00541"></a><span class="lineno">  541</span>             <span class="keywordflow">if</span> (train_data == NULL)</div>
-<div class="line"><a name="l00542"></a><span class="lineno">  542</span>             {</div>
-<div class="line"><a name="l00543"></a><span class="lineno">  543</span>                 <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l00544"></a><span class="lineno">  544</span>             }</div>
-<div class="line"><a name="l00545"></a><span class="lineno">  545</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00546"></a><span class="lineno">  546</span>             {</div>
-<div class="line"><a name="l00547"></a><span class="lineno">  547</span>                 <span class="keywordflow">return</span> fann_length_train_data(train_data);</div>
-<div class="line"><a name="l00548"></a><span class="lineno">  548</span>             }</div>
-<div class="line"><a name="l00549"></a><span class="lineno">  549</span>         }</div>
-<div class="line"><a name="l00550"></a><span class="lineno">  550</span> </div>
-<div class="line"><a name="l00551"></a><span class="lineno">  551</span>         <span class="comment">/* Method: num_input_train_data</span></div>
-<div class="line"><a name="l00552"></a><span class="lineno">  552</span> <span class="comment"></span></div>
-<div class="line"><a name="l00553"></a><span class="lineno">  553</span> <span class="comment">           Returns the number of inputs in each of the training patterns in the <training_data>.</span></div>
-<div class="line"><a name="l00554"></a><span class="lineno">  554</span> <span class="comment">           </span></div>
-<div class="line"><a name="l00555"></a><span class="lineno">  555</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l00556"></a><span class="lineno">  556</span> <span class="comment">           <num_output_train_data>, <length_train_data>, <fann_num_input_train_data></span></div>
-<div class="line"><a name="l00557"></a><span class="lineno">  557</span> <span class="comment"></span></div>
-<div class="line"><a name="l00558"></a><span class="lineno">  558</span> <span class="comment">           This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l00559"></a><span class="lineno">  559</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l00560"></a><span class="lineno">  560</span>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_input_train_data()</div>
-<div class="line"><a name="l00561"></a><span class="lineno">  561</span>         {</div>
-<div class="line"><a name="l00562"></a><span class="lineno">  562</span>             <span class="keywordflow">if</span> (train_data == NULL)</div>
-<div class="line"><a name="l00563"></a><span class="lineno">  563</span>             {</div>
-<div class="line"><a name="l00564"></a><span class="lineno">  564</span>                 <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l00565"></a><span class="lineno">  565</span>             }</div>
-<div class="line"><a name="l00566"></a><span class="lineno">  566</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00567"></a><span class="lineno">  567</span>             {</div>
-<div class="line"><a name="l00568"></a><span class="lineno">  568</span>                 <span class="keywordflow">return</span> fann_num_input_train_data(train_data);</div>
-<div class="line"><a name="l00569"></a><span class="lineno">  569</span>             }</div>
-<div class="line"><a name="l00570"></a><span class="lineno">  570</span>         }</div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span> </div>
-<div class="line"><a name="l00572"></a><span class="lineno">  572</span>         <span class="comment">/* Method: num_output_train_data</span></div>
-<div class="line"><a name="l00573"></a><span class="lineno">  573</span> <span class="comment">           </span></div>
-<div class="line"><a name="l00574"></a><span class="lineno">  574</span> <span class="comment">           Returns the number of outputs in each of the training patterns in the <struct fann_train_data>.</span></div>
-<div class="line"><a name="l00575"></a><span class="lineno">  575</span> <span class="comment">           </span></div>
-<div class="line"><a name="l00576"></a><span class="lineno">  576</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l00577"></a><span class="lineno">  577</span> <span class="comment">           <num_input_train_data>, <length_train_data>, <fann_num_output_train_data></span></div>
-<div class="line"><a name="l00578"></a><span class="lineno">  578</span> <span class="comment"></span></div>
-<div class="line"><a name="l00579"></a><span class="lineno">  579</span> <span class="comment">           This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l00580"></a><span class="lineno">  580</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l00581"></a><span class="lineno">  581</span>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_output_train_data()</div>
-<div class="line"><a name="l00582"></a><span class="lineno">  582</span>         {</div>
-<div class="line"><a name="l00583"></a><span class="lineno">  583</span>             <span class="keywordflow">if</span> (train_data == NULL)</div>
-<div class="line"><a name="l00584"></a><span class="lineno">  584</span>             {</div>
-<div class="line"><a name="l00585"></a><span class="lineno">  585</span>                 <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l00586"></a><span class="lineno">  586</span>             }</div>
-<div class="line"><a name="l00587"></a><span class="lineno">  587</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00588"></a><span class="lineno">  588</span>             {</div>
-<div class="line"><a name="l00589"></a><span class="lineno">  589</span>                 <span class="keywordflow">return</span> fann_num_output_train_data(train_data);</div>
-<div class="line"><a name="l00590"></a><span class="lineno">  590</span>             }</div>
-<div class="line"><a name="l00591"></a><span class="lineno">  591</span>         }</div>
-<div class="line"><a name="l00592"></a><span class="lineno">  592</span> </div>
-<div class="line"><a name="l00593"></a><span class="lineno">  593</span>         <span class="comment">/* Grant access to the encapsulated data since many situations</span></div>
-<div class="line"><a name="l00594"></a><span class="lineno">  594</span> <span class="comment">            and applications creates the data from sources other than files</span></div>
-<div class="line"><a name="l00595"></a><span class="lineno">  595</span> <span class="comment">            or uses the training data for testing and related functions */</span></div>
-<div class="line"><a name="l00596"></a><span class="lineno">  596</span> </div>
-<div class="line"><a name="l00597"></a><span class="lineno">  597</span>         <span class="comment">/* Method: get_input</span></div>
-<div class="line"><a name="l00598"></a><span class="lineno">  598</span> <span class="comment">        </span></div>
-<div class="line"><a name="l00599"></a><span class="lineno">  599</span> <span class="comment">            Returns:</span></div>
-<div class="line"><a name="l00600"></a><span class="lineno">  600</span> <span class="comment">                A pointer to the array of input training data</span></div>
-<div class="line"><a name="l00601"></a><span class="lineno">  601</span> <span class="comment"></span></div>
-<div class="line"><a name="l00602"></a><span class="lineno">  602</span> <span class="comment">            See also:</span></div>
-<div class="line"><a name="l00603"></a><span class="lineno">  603</span> <span class="comment">                <get_output>, <set_train_data></span></div>
-<div class="line"><a name="l00604"></a><span class="lineno">  604</span> <span class="comment">        */</span></div>
-<div class="line"><a name="l00605"></a><span class="lineno">  605</span>         fann_type **get_input()</div>
-<div class="line"><a name="l00606"></a><span class="lineno">  606</span>         {</div>
-<div class="line"><a name="l00607"></a><span class="lineno">  607</span>             <span class="keywordflow">if</span> (train_data == NULL)</div>
-<div class="line"><a name="l00608"></a><span class="lineno">  608</span>             {</div>
-<div class="line"><a name="l00609"></a><span class="lineno">  609</span>                 <span class="keywordflow">return</span> NULL;</div>
-<div class="line"><a name="l00610"></a><span class="lineno">  610</span>             }</div>
-<div class="line"><a name="l00611"></a><span class="lineno">  611</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00612"></a><span class="lineno">  612</span>             {</div>
-<div class="line"><a name="l00613"></a><span class="lineno">  613</span>                 <span class="keywordflow">return</span> train_data->input;</div>
-<div class="line"><a name="l00614"></a><span class="lineno">  614</span>             }</div>
-<div class="line"><a name="l00615"></a><span class="lineno">  615</span>         }</div>
-<div class="line"><a name="l00616"></a><span class="lineno">  616</span> </div>
-<div class="line"><a name="l00617"></a><span class="lineno">  617</span>         <span class="comment">/* Method: get_output</span></div>
-<div class="line"><a name="l00618"></a><span class="lineno">  618</span> <span class="comment">        </span></div>
-<div class="line"><a name="l00619"></a><span class="lineno">  619</span> <span class="comment">            Returns:</span></div>
-<div class="line"><a name="l00620"></a><span class="lineno">  620</span> <span class="comment">                A pointer to the array of output training data</span></div>
-<div class="line"><a name="l00621"></a><span class="lineno">  621</span> <span class="comment"></span></div>
-<div class="line"><a name="l00622"></a><span class="lineno">  622</span> <span class="comment">            See also:</span></div>
-<div class="line"><a name="l00623"></a><span class="lineno">  623</span> <span class="comment">                <get_input>, <set_train_data></span></div>
-<div class="line"><a name="l00624"></a><span class="lineno">  624</span> <span class="comment">        */</span></div>
-<div class="line"><a name="l00625"></a><span class="lineno">  625</span>         fann_type **get_output()</div>
-<div class="line"><a name="l00626"></a><span class="lineno">  626</span>         {</div>
-<div class="line"><a name="l00627"></a><span class="lineno">  627</span>             <span class="keywordflow">if</span> (train_data == NULL)</div>
-<div class="line"><a name="l00628"></a><span class="lineno">  628</span>             {</div>
-<div class="line"><a name="l00629"></a><span class="lineno">  629</span>                 <span class="keywordflow">return</span> NULL;</div>
-<div class="line"><a name="l00630"></a><span class="lineno">  630</span>             }</div>
-<div class="line"><a name="l00631"></a><span class="lineno">  631</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00632"></a><span class="lineno">  632</span>             {</div>
-<div class="line"><a name="l00633"></a><span class="lineno">  633</span>                 <span class="keywordflow">return</span> train_data->output;</div>
-<div class="line"><a name="l00634"></a><span class="lineno">  634</span>             }</div>
-<div class="line"><a name="l00635"></a><span class="lineno">  635</span>         }</div>
-<div class="line"><a name="l00636"></a><span class="lineno">  636</span> </div>
-<div class="line"><a name="l00637"></a><span class="lineno">  637</span>         <span class="comment">/* Method: set_train_data</span></div>
-<div class="line"><a name="l00638"></a><span class="lineno">  638</span> <span class="comment"></span></div>
-<div class="line"><a name="l00639"></a><span class="lineno">  639</span> <span class="comment">            Set the training data to the input and output data provided.</span></div>
-<div class="line"><a name="l00640"></a><span class="lineno">  640</span> <span class="comment"></span></div>
-<div class="line"><a name="l00641"></a><span class="lineno">  641</span> <span class="comment">            A copy of the data is made so there are no restrictions on the</span></div>
-<div class="line"><a name="l00642"></a><span class="lineno">  642</span> <span class="comment">            allocation of the input/output data and the caller is responsible</span></div>
-<div class="line"><a name="l00643"></a><span class="lineno">  643</span> <span class="comment">            for the deallocation of the data pointed to by input and output.</span></div>
-<div class="line"><a name="l00644"></a><span class="lineno">  644</span> <span class="comment"></span></div>
-<div class="line"><a name="l00645"></a><span class="lineno">  645</span> <span class="comment">           Parameters:</span></div>
-<div class="line"><a name="l00646"></a><span class="lineno">  646</span> <span class="comment">             num_data      - The number of training data</span></div>
-<div class="line"><a name="l00647"></a><span class="lineno">  647</span> <span class="comment">             num_input     - The number of inputs per training data</span></div>
-<div class="line"><a name="l00648"></a><span class="lineno">  648</span> <span class="comment">             num_output    - The number of outputs per training data</span></div>
-<div class="line"><a name="l00649"></a><span class="lineno">  649</span> <span class="comment">             input      - The set of inputs (a pointer to an array of pointers to arrays of floating point data)</span></div>
-<div class="line"><a name="l00650"></a><span class="lineno">  650</span> <span class="comment">             output     - The set of desired outputs (a pointer to an array of pointers to arrays of floating point data)</span></div>
-<div class="line"><a name="l00651"></a><span class="lineno">  651</span> <span class="comment"></span></div>
-<div class="line"><a name="l00652"></a><span class="lineno">  652</span> <span class="comment">            See also:</span></div>
-<div class="line"><a name="l00653"></a><span class="lineno">  653</span> <span class="comment">                <get_input>, <get_output></span></div>
-<div class="line"><a name="l00654"></a><span class="lineno">  654</span> <span class="comment">        */</span></div>
-<div class="line"><a name="l00655"></a><span class="lineno">  655</span>         <span class="keywordtype">void</span> set_train_data(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_data,</div>
-<div class="line"><a name="l00656"></a><span class="lineno">  656</span>             <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_input, fann_type **input,</div>
-<div class="line"><a name="l00657"></a><span class="lineno">  657</span>             <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_output, fann_type **output)</div>
-<div class="line"><a name="l00658"></a><span class="lineno">  658</span>         {</div>
-<div class="line"><a name="l00659"></a><span class="lineno">  659</span>             <span class="comment">// Uses the allocation method used in fann</span></div>
-<div class="line"><a name="l00660"></a><span class="lineno">  660</span>             <span class="keyword">struct </span>fann_train_data *data =</div>
-<div class="line"><a name="l00661"></a><span class="lineno">  661</span>                 (<span class="keyword">struct </span>fann_train_data *)malloc(<span class="keyword">sizeof</span>(<span class="keyword">struct</span> fann_train_data));</div>
-<div class="line"><a name="l00662"></a><span class="lineno">  662</span>             data->input = (fann_type **)calloc(num_data, <span class="keyword">sizeof</span>(fann_type *));</div>
-<div class="line"><a name="l00663"></a><span class="lineno">  663</span>             data->output = (fann_type **)calloc(num_data, <span class="keyword">sizeof</span>(fann_type *));</div>
-<div class="line"><a name="l00664"></a><span class="lineno">  664</span> </div>
-<div class="line"><a name="l00665"></a><span class="lineno">  665</span>             data->num_data = num_data;</div>
-<div class="line"><a name="l00666"></a><span class="lineno">  666</span>             data->num_input = num_input;</div>
-<div class="line"><a name="l00667"></a><span class="lineno">  667</span>             data->num_output = num_output;</div>
-<div class="line"><a name="l00668"></a><span class="lineno">  668</span> </div>
-<div class="line"><a name="l00669"></a><span class="lineno">  669</span>             fann_type *data_input = (fann_type *)calloc(num_input*num_data, <span class="keyword">sizeof</span>(fann_type));</div>
-<div class="line"><a name="l00670"></a><span class="lineno">  670</span>             fann_type *data_output = (fann_type *)calloc(num_output*num_data, <span class="keyword">sizeof</span>(fann_type));</div>
-<div class="line"><a name="l00671"></a><span class="lineno">  671</span> </div>
-<div class="line"><a name="l00672"></a><span class="lineno">  672</span>             <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < num_data; ++i)</div>
-<div class="line"><a name="l00673"></a><span class="lineno">  673</span>             {</div>
-<div class="line"><a name="l00674"></a><span class="lineno">  674</span>                 data->input[i] = data_input;</div>
-<div class="line"><a name="l00675"></a><span class="lineno">  675</span>                 data_input += num_input;</div>
-<div class="line"><a name="l00676"></a><span class="lineno">  676</span>                 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = 0; j < num_input; ++j)</div>
-<div class="line"><a name="l00677"></a><span class="lineno">  677</span>                 {</div>
-<div class="line"><a name="l00678"></a><span class="lineno">  678</span>                     data->input[i][j] = input[i][j];</div>
-<div class="line"><a name="l00679"></a><span class="lineno">  679</span>                 }</div>
-<div class="line"><a name="l00680"></a><span class="lineno">  680</span>                 data->output[i] = data_output;</div>
-<div class="line"><a name="l00681"></a><span class="lineno">  681</span>                 data_output += num_output;</div>
-<div class="line"><a name="l00682"></a><span class="lineno">  682</span>                 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = 0; j < num_output; ++j)</div>
-<div class="line"><a name="l00683"></a><span class="lineno">  683</span>                 {</div>
-<div class="line"><a name="l00684"></a><span class="lineno">  684</span>                     data->output[i][j] = output[i][j];</div>
-<div class="line"><a name="l00685"></a><span class="lineno">  685</span>                 }</div>
-<div class="line"><a name="l00686"></a><span class="lineno">  686</span>             }</div>
-<div class="line"><a name="l00687"></a><span class="lineno">  687</span>             set_train_data(data);</div>
-<div class="line"><a name="l00688"></a><span class="lineno">  688</span>         }</div>
-<div class="line"><a name="l00689"></a><span class="lineno">  689</span>       </div>
-<div class="line"><a name="l00690"></a><span class="lineno">  690</span>       </div>
-<div class="line"><a name="l00691"></a><span class="lineno">  691</span> </div>
-<div class="line"><a name="l00692"></a><span class="lineno">  692</span>       <span class="keywordtype">void</span> set_train_data(<span class="keyword">const</span> std::vector< std::vector<fann_type> >& input,</div>
-<div class="line"><a name="l00693"></a><span class="lineno">  693</span>                           <span class="keyword">const</span> std::vector< std::vector<fann_type> >& output)</div>
-<div class="line"><a name="l00694"></a><span class="lineno">  694</span>         {</div>
-<div class="line"><a name="l00695"></a><span class="lineno">  695</span>           <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_data=input.size();</div>
-<div class="line"><a name="l00696"></a><span class="lineno">  696</span>           assert(num_data);</div>
-<div class="line"><a name="l00697"></a><span class="lineno">  697</span>           assert(input.size()==output.size());</div>
-<div class="line"><a name="l00698"></a><span class="lineno">  698</span>           <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_input=input[0].size();</div>
-<div class="line"><a name="l00699"></a><span class="lineno">  699</span>           <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_output=output[0].size();</div>
-<div class="line"><a name="l00700"></a><span class="lineno">  700</span>           </div>
-<div class="line"><a name="l00701"></a><span class="lineno">  701</span>             <span class="comment">// Uses the allocation method used in fann</span></div>
-<div class="line"><a name="l00702"></a><span class="lineno">  702</span>             <span class="keyword">struct </span>fann_train_data *data =</div>
-<div class="line"><a name="l00703"></a><span class="lineno">  703</span>                 (<span class="keyword">struct </span>fann_train_data *)malloc(<span class="keyword">sizeof</span>(<span class="keyword">struct</span> fann_train_data));</div>
-<div class="line"><a name="l00704"></a><span class="lineno">  704</span>             data->input = (fann_type **)calloc(num_data, <span class="keyword">sizeof</span>(fann_type *));</div>
-<div class="line"><a name="l00705"></a><span class="lineno">  705</span>             data->output = (fann_type **)calloc(num_data, <span class="keyword">sizeof</span>(fann_type *));</div>
-<div class="line"><a name="l00706"></a><span class="lineno">  706</span> </div>
-<div class="line"><a name="l00707"></a><span class="lineno">  707</span>             data->num_data = num_data;</div>
-<div class="line"><a name="l00708"></a><span class="lineno">  708</span>             data->num_input = num_input;</div>
-<div class="line"><a name="l00709"></a><span class="lineno">  709</span>             data->num_output = num_output;</div>
-<div class="line"><a name="l00710"></a><span class="lineno">  710</span> </div>
-<div class="line"><a name="l00711"></a><span class="lineno">  711</span>             fann_type *data_input = (fann_type *)calloc(num_input*num_data, <span class="keyword">sizeof</span>(fann_type));</div>
-<div class="line"><a name="l00712"></a><span class="lineno">  712</span>             fann_type *data_output = (fann_type *)calloc(num_output*num_data, <span class="keyword">sizeof</span>(fann_type));</div>
-<div class="line"><a name="l00713"></a><span class="lineno">  713</span> </div>
-<div class="line"><a name="l00714"></a><span class="lineno">  714</span>             <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < num_data; ++i)</div>
-<div class="line"><a name="l00715"></a><span class="lineno">  715</span>             {</div>
-<div class="line"><a name="l00716"></a><span class="lineno">  716</span>                 data->input[i] = data_input;</div>
-<div class="line"><a name="l00717"></a><span class="lineno">  717</span>                 data_input += num_input;</div>
-<div class="line"><a name="l00718"></a><span class="lineno">  718</span>                 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = 0; j < num_input; ++j)</div>
-<div class="line"><a name="l00719"></a><span class="lineno">  719</span>                 {</div>
-<div class="line"><a name="l00720"></a><span class="lineno">  720</span>                     data->input[i][j] = input[i][j];</div>
-<div class="line"><a name="l00721"></a><span class="lineno">  721</span>                 }</div>
-<div class="line"><a name="l00722"></a><span class="lineno">  722</span>                 data->output[i] = data_output;</div>
-<div class="line"><a name="l00723"></a><span class="lineno">  723</span>                 data_output += num_output;</div>
-<div class="line"><a name="l00724"></a><span class="lineno">  724</span>                 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = 0; j < num_output; ++j)</div>
-<div class="line"><a name="l00725"></a><span class="lineno">  725</span>                 {</div>
-<div class="line"><a name="l00726"></a><span class="lineno">  726</span>                     data->output[i][j] = output[i][j];</div>
-<div class="line"><a name="l00727"></a><span class="lineno">  727</span>                 }</div>
-<div class="line"><a name="l00728"></a><span class="lineno">  728</span>             }</div>
-<div class="line"><a name="l00729"></a><span class="lineno">  729</span>             set_train_data(data);</div>
-<div class="line"><a name="l00730"></a><span class="lineno">  730</span>         }</div>
-<div class="line"><a name="l00731"></a><span class="lineno">  731</span>       </div>
-<div class="line"><a name="l00732"></a><span class="lineno">  732</span>       <span class="keywordtype">void</span> set_train_data(<span class="keyword">const</span> std::vector< std::vector< std::vector<fann_type> > >& input, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_data)</div>
-<div class="line"><a name="l00733"></a><span class="lineno">  733</span>       {</div>
-<div class="line"><a name="l00734"></a><span class="lineno">  734</span>           assert(num_data);</div>
-<div class="line"><a name="l00735"></a><span class="lineno">  735</span>           assert(input.size());</div>
-<div class="line"><a name="l00736"></a><span class="lineno">  736</span>           <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_class=input.size();</div>
-<div class="line"><a name="l00737"></a><span class="lineno">  737</span>           assert(input[0].size());</div>
-<div class="line"><a name="l00738"></a><span class="lineno">  738</span>           <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_input=input[0][0].size();</div>
-<div class="line"><a name="l00739"></a><span class="lineno">  739</span>           <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_output=num_class;</div>
-<div class="line"><a name="l00740"></a><span class="lineno">  740</span>           <span class="comment">//test</span></div>
-<div class="line"><a name="l00741"></a><span class="lineno">  741</span> <span class="comment">//           unsigned int num_output=1;</span></div>
-<div class="line"><a name="l00742"></a><span class="lineno">  742</span>           </div>
-<div class="line"><a name="l00743"></a><span class="lineno">  743</span>             <span class="comment">// Uses the allocation method used in fann</span></div>
-<div class="line"><a name="l00744"></a><span class="lineno">  744</span>             <span class="keyword">struct </span>fann_train_data *data =</div>
-<div class="line"><a name="l00745"></a><span class="lineno">  745</span>                 (<span class="keyword">struct </span>fann_train_data *)malloc(<span class="keyword">sizeof</span>(<span class="keyword">struct</span> fann_train_data));</div>
-<div class="line"><a name="l00746"></a><span class="lineno">  746</span>             data->input = (fann_type **)calloc(num_data, <span class="keyword">sizeof</span>(fann_type *));</div>
-<div class="line"><a name="l00747"></a><span class="lineno">  747</span>             data->output = (fann_type **)calloc(num_data, <span class="keyword">sizeof</span>(fann_type *));</div>
-<div class="line"><a name="l00748"></a><span class="lineno">  748</span> </div>
-<div class="line"><a name="l00749"></a><span class="lineno">  749</span>             data->num_data = num_data;</div>
-<div class="line"><a name="l00750"></a><span class="lineno">  750</span>             data->num_input = num_input;</div>
-<div class="line"><a name="l00751"></a><span class="lineno">  751</span>             data->num_output = num_output;</div>
-<div class="line"><a name="l00752"></a><span class="lineno">  752</span> </div>
-<div class="line"><a name="l00753"></a><span class="lineno">  753</span>             fann_type *data_input = (fann_type *)calloc(num_input*num_data, <span class="keyword">sizeof</span>(fann_type));</div>
-<div class="line"><a name="l00754"></a><span class="lineno">  754</span>             fann_type *data_output = (fann_type *)calloc(num_output*num_data, <span class="keyword">sizeof</span>(fann_type));</div>
-<div class="line"><a name="l00755"></a><span class="lineno">  755</span> </div>
-<div class="line"><a name="l00756"></a><span class="lineno">  756</span>             <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> isample=0;</div>
-<div class="line"><a name="l00757"></a><span class="lineno">  757</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<num_class;++iclass){</div>
-<div class="line"><a name="l00758"></a><span class="lineno">  758</span>               <span class="keywordflow">for</span>(<span class="keywordtype">int</span> csample=0;csample<input[iclass].size();++csample){</div>
-<div class="line"><a name="l00759"></a><span class="lineno">  759</span>                 data->input[isample] = data_input;</div>
-<div class="line"><a name="l00760"></a><span class="lineno">  760</span>                 data_input += num_input;</div>
-<div class="line"><a name="l00761"></a><span class="lineno">  761</span>                 <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input[iclass][csample].size();++iband){</div>
-<div class="line"><a name="l00762"></a><span class="lineno">  762</span>                   assert(input[iclass][csample].size()==num_input);</div>
-<div class="line"><a name="l00763"></a><span class="lineno">  763</span>                   data->input[isample][iband] = input[iclass][csample][iband];</div>
-<div class="line"><a name="l00764"></a><span class="lineno">  764</span>                 }</div>
-<div class="line"><a name="l00765"></a><span class="lineno">  765</span>                 data->output[isample] = data_output;</div>
-<div class="line"><a name="l00766"></a><span class="lineno">  766</span>                 data_output += num_output;</div>
-<div class="line"><a name="l00767"></a><span class="lineno">  767</span>                 <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ic=0;ic<num_output;++ic){</div>
-<div class="line"><a name="l00768"></a><span class="lineno">  768</span>                   <span class="comment">//for single neuron output:</span></div>
-<div class="line"><a name="l00769"></a><span class="lineno">  769</span> <span class="comment">//                   data->output[isample][ic]=2.0/(num_class-1)*(iclass-(num_class-1)/2.0);</span></div>
-<div class="line"><a name="l00770"></a><span class="lineno">  770</span>                   <span class="keywordflow">if</span>(ic==iclass)</div>
-<div class="line"><a name="l00771"></a><span class="lineno">  771</span>                     data->output[isample][ic] = 1;</div>
-<div class="line"><a name="l00772"></a><span class="lineno">  772</span>                   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00773"></a><span class="lineno">  773</span>                     data->output[isample][ic] = -1;</div>
-<div class="line"><a name="l00774"></a><span class="lineno">  774</span>                 }</div>
-<div class="line"><a name="l00775"></a><span class="lineno">  775</span>                 ++isample;</div>
-<div class="line"><a name="l00776"></a><span class="lineno">  776</span>               }</div>
-<div class="line"><a name="l00777"></a><span class="lineno">  777</span>             }</div>
-<div class="line"><a name="l00778"></a><span class="lineno">  778</span>             set_train_data(data);</div>
-<div class="line"><a name="l00779"></a><span class="lineno">  779</span>       }</div>
-<div class="line"><a name="l00780"></a><span class="lineno">  780</span> </div>
-<div class="line"><a name="l00781"></a><span class="lineno">  781</span>       <span class="keywordtype">void</span> set_train_data(<span class="keyword">const</span> std::vector< <a class="code" href="classVector2d.html">Vector2d<fann_type></a> >& input, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_data)</div>
-<div class="line"><a name="l00782"></a><span class="lineno">  782</span>       {</div>
-<div class="line"><a name="l00783"></a><span class="lineno">  783</span>           assert(num_data);</div>
-<div class="line"><a name="l00784"></a><span class="lineno">  784</span>           assert(input.size());</div>
-<div class="line"><a name="l00785"></a><span class="lineno">  785</span>           <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_class=input.size();</div>
-<div class="line"><a name="l00786"></a><span class="lineno">  786</span>           assert(input[0].size());</div>
-<div class="line"><a name="l00787"></a><span class="lineno">  787</span>           <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_input=input[0][0].size();</div>
-<div class="line"><a name="l00788"></a><span class="lineno">  788</span>           <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_output=num_class;</div>
-<div class="line"><a name="l00789"></a><span class="lineno">  789</span>           <span class="comment">//test</span></div>
-<div class="line"><a name="l00790"></a><span class="lineno">  790</span> <span class="comment">//           unsigned int num_output=1;</span></div>
-<div class="line"><a name="l00791"></a><span class="lineno">  791</span>           </div>
-<div class="line"><a name="l00792"></a><span class="lineno">  792</span>             <span class="comment">// Uses the allocation method used in fann</span></div>
-<div class="line"><a name="l00793"></a><span class="lineno">  793</span>             <span class="keyword">struct </span>fann_train_data *data =</div>
-<div class="line"><a name="l00794"></a><span class="lineno">  794</span>                 (<span class="keyword">struct </span>fann_train_data *)malloc(<span class="keyword">sizeof</span>(<span class="keyword">struct</span> fann_train_data));</div>
-<div class="line"><a name="l00795"></a><span class="lineno">  795</span>             data->input = (fann_type **)calloc(num_data, <span class="keyword">sizeof</span>(fann_type *));</div>
-<div class="line"><a name="l00796"></a><span class="lineno">  796</span>             data->output = (fann_type **)calloc(num_data, <span class="keyword">sizeof</span>(fann_type *));</div>
-<div class="line"><a name="l00797"></a><span class="lineno">  797</span> </div>
-<div class="line"><a name="l00798"></a><span class="lineno">  798</span>             data->num_data = num_data;</div>
-<div class="line"><a name="l00799"></a><span class="lineno">  799</span>             data->num_input = num_input;</div>
-<div class="line"><a name="l00800"></a><span class="lineno">  800</span>             data->num_output = num_output;</div>
-<div class="line"><a name="l00801"></a><span class="lineno">  801</span> </div>
-<div class="line"><a name="l00802"></a><span class="lineno">  802</span>             fann_type *data_input = (fann_type *)calloc(num_input*num_data, <span class="keyword">sizeof</span>(fann_type));</div>
-<div class="line"><a name="l00803"></a><span class="lineno">  803</span>             fann_type *data_output = (fann_type *)calloc(num_output*num_data, <span class="keyword">sizeof</span>(fann_type));</div>
-<div class="line"><a name="l00804"></a><span class="lineno">  804</span> </div>
-<div class="line"><a name="l00805"></a><span class="lineno">  805</span>             <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> isample=0;</div>
-<div class="line"><a name="l00806"></a><span class="lineno">  806</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<num_class;++iclass){</div>
-<div class="line"><a name="l00807"></a><span class="lineno">  807</span>               <span class="keywordflow">for</span>(<span class="keywordtype">int</span> csample=0;csample<input[iclass].size();++csample){</div>
-<div class="line"><a name="l00808"></a><span class="lineno">  808</span>                 data->input[isample] = data_input;</div>
-<div class="line"><a name="l00809"></a><span class="lineno">  809</span>                 data_input += num_input;</div>
-<div class="line"><a name="l00810"></a><span class="lineno">  810</span>                 <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input[iclass][csample].size();++iband){</div>
-<div class="line"><a name="l00811"></a><span class="lineno">  811</span>                   assert(input[iclass][csample].size()==num_input);</div>
-<div class="line"><a name="l00812"></a><span class="lineno">  812</span>                   data->input[isample][iband] = input[iclass][csample][iband];</div>
-<div class="line"><a name="l00813"></a><span class="lineno">  813</span>                 }</div>
-<div class="line"><a name="l00814"></a><span class="lineno">  814</span>                 data->output[isample] = data_output;</div>
-<div class="line"><a name="l00815"></a><span class="lineno">  815</span>                 data_output += num_output;</div>
-<div class="line"><a name="l00816"></a><span class="lineno">  816</span>                 <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ic=0;ic<num_output;++ic){</div>
-<div class="line"><a name="l00817"></a><span class="lineno">  817</span>                   <span class="comment">//for single neuron output:</span></div>
-<div class="line"><a name="l00818"></a><span class="lineno">  818</span> <span class="comment">//                   data->output[isample][ic]=2.0/(num_class-1)*(iclass-(num_class-1)/2.0);</span></div>
-<div class="line"><a name="l00819"></a><span class="lineno">  819</span>                   <span class="keywordflow">if</span>(ic==iclass)</div>
-<div class="line"><a name="l00820"></a><span class="lineno">  820</span>                     data->output[isample][ic] = 1;</div>
-<div class="line"><a name="l00821"></a><span class="lineno">  821</span>                   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00822"></a><span class="lineno">  822</span>                     data->output[isample][ic] = -1;</div>
-<div class="line"><a name="l00823"></a><span class="lineno">  823</span>                 }</div>
-<div class="line"><a name="l00824"></a><span class="lineno">  824</span>                 ++isample;</div>
-<div class="line"><a name="l00825"></a><span class="lineno">  825</span>               }</div>
-<div class="line"><a name="l00826"></a><span class="lineno">  826</span>             }</div>
-<div class="line"><a name="l00827"></a><span class="lineno">  827</span>             set_train_data(data);</div>
-<div class="line"><a name="l00828"></a><span class="lineno">  828</span>       }</div>
-<div class="line"><a name="l00829"></a><span class="lineno">  829</span> </div>
-<div class="line"><a name="l00830"></a><span class="lineno">  830</span> </div>
-<div class="line"><a name="l00831"></a><span class="lineno">  831</span> <span class="keyword">private</span>:</div>
-<div class="line"><a name="l00832"></a><span class="lineno">  832</span>         <span class="comment">/* Set the training data to the struct fann_training_data pointer.</span></div>
-<div class="line"><a name="l00833"></a><span class="lineno">  833</span> <span class="comment">            The struct has to be allocated with malloc to be compatible</span></div>
-<div class="line"><a name="l00834"></a><span class="lineno">  834</span> <span class="comment">            with fann_destroy. */</span></div>
-<div class="line"><a name="l00835"></a><span class="lineno">  835</span>         <span class="keywordtype">void</span> set_train_data(<span class="keyword">struct</span> fann_train_data *data)</div>
-<div class="line"><a name="l00836"></a><span class="lineno">  836</span>         {</div>
-<div class="line"><a name="l00837"></a><span class="lineno">  837</span>             destroy_train();</div>
-<div class="line"><a name="l00838"></a><span class="lineno">  838</span>             train_data = data;</div>
-<div class="line"><a name="l00839"></a><span class="lineno">  839</span>         }</div>
-<div class="line"><a name="l00840"></a><span class="lineno">  840</span> </div>
-<div class="line"><a name="l00841"></a><span class="lineno">  841</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00842"></a><span class="lineno">  842</span>         <span class="comment">/*********************************************************************/</span></div>
-<div class="line"><a name="l00843"></a><span class="lineno">  843</span> </div>
-<div class="line"><a name="l00844"></a><span class="lineno">  844</span>         <span class="comment">/* Method: create_train_from_callback</span></div>
-<div class="line"><a name="l00845"></a><span class="lineno">  845</span> <span class="comment">           Creates the training data struct from a user supplied function.</span></div>
-<div class="line"><a name="l00846"></a><span class="lineno">  846</span> <span class="comment">           As the training data are numerable (data 1, data 2...), the user must write</span></div>
-<div class="line"><a name="l00847"></a><span class="lineno">  847</span> <span class="comment">           a function that receives the number of the training data set (input,output)</span></div>
-<div class="line"><a name="l00848"></a><span class="lineno">  848</span> <span class="comment">           and returns the set.</span></div>
-<div class="line"><a name="l00849"></a><span class="lineno">  849</span> <span class="comment"></span></div>
-<div class="line"><a name="l00850"></a><span class="lineno">  850</span> <span class="comment">           Parameters:</span></div>
-<div class="line"><a name="l00851"></a><span class="lineno">  851</span> <span class="comment">             num_data      - The number of training data</span></div>
-<div class="line"><a name="l00852"></a><span class="lineno">  852</span> <span class="comment">             num_input     - The number of inputs per training data</span></div>
-<div class="line"><a name="l00853"></a><span class="lineno">  853</span> <span class="comment">             num_output    - The number of outputs per training data</span></div>
-<div class="line"><a name="l00854"></a><span class="lineno">  854</span> <span class="comment">             user_function - The user suplied function</span></div>
-<div class="line"><a name="l00855"></a><span class="lineno">  855</span> <span class="comment"></span></div>
-<div class="line"><a name="l00856"></a><span class="lineno">  856</span> <span class="comment">           Parameters for the user function:</span></div>
-<div class="line"><a name="l00857"></a><span class="lineno">  857</span> <span class="comment">             num        - The number of the training data set</span></div>
-<div class="line"><a name="l00858"></a><span class="lineno">  858</span> <span class="comment">             num_input  - The number of inputs per training data</span></div>
-<div class="line"><a name="l00859"></a><span class="lineno">  859</span> <span class="comment">             num_output - The number of outputs per training data</span></div>
-<div class="line"><a name="l00860"></a><span class="lineno">  860</span> <span class="comment">             input      - The set of inputs</span></div>
-<div class="line"><a name="l00861"></a><span class="lineno">  861</span> <span class="comment">             output     - The set of desired outputs</span></div>
-<div class="line"><a name="l00862"></a><span class="lineno">  862</span> <span class="comment">          </span></div>
-<div class="line"><a name="l00863"></a><span class="lineno">  863</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l00864"></a><span class="lineno">  864</span> <span class="comment">             <training_data::read_train_from_file>, <neural_net::train_on_data>,</span></div>
-<div class="line"><a name="l00865"></a><span class="lineno">  865</span> <span class="comment">             <fann_create_train_from_callback></span></div>
-<div class="line"><a name="l00866"></a><span class="lineno">  866</span> <span class="comment"></span></div>
-<div class="line"><a name="l00867"></a><span class="lineno">  867</span> <span class="comment">            This function appears in FANN >= 2.1.0</span></div>
-<div class="line"><a name="l00868"></a><span class="lineno">  868</span> <span class="comment">        */</span> </div>
-<div class="line"><a name="l00869"></a><span class="lineno">  869</span>         <span class="keywordtype">void</span> create_train_from_callback(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_data,</div>
-<div class="line"><a name="l00870"></a><span class="lineno">  870</span>                                                   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_input,</div>
-<div class="line"><a name="l00871"></a><span class="lineno">  871</span>                                                   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_output,</div>
-<div class="line"><a name="l00872"></a><span class="lineno">  872</span>                                                   <span class="keywordtype">void</span> (FANN_API *user_function)( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>,</div>
-<div class="line"><a name="l00873"></a><span class="lineno">  873</span>                                                                          <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>,</div>
-<div class="line"><a name="l00874"></a><span class="lineno">  874</span>                                                                          <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>,</div>
-<div class="line"><a name="l00875"></a><span class="lineno">  875</span>                                                                          fann_type * ,</div>
-<div class="line"><a name="l00876"></a><span class="lineno">  876</span>                                                                          fann_type * ))</div>
-<div class="line"><a name="l00877"></a><span class="lineno">  877</span>         {</div>
-<div class="line"><a name="l00878"></a><span class="lineno">  878</span>             destroy_train();</div>
-<div class="line"><a name="l00879"></a><span class="lineno">  879</span>             train_data = fann_create_train_from_callback(num_data, num_input, num_output, user_function);</div>
-<div class="line"><a name="l00880"></a><span class="lineno">  880</span>         }</div>
-<div class="line"><a name="l00881"></a><span class="lineno">  881</span> </div>
-<div class="line"><a name="l00882"></a><span class="lineno">  882</span>         <span class="comment">/* Method: scale_input_train_data</span></div>
-<div class="line"><a name="l00883"></a><span class="lineno">  883</span> <span class="comment">           </span></div>
-<div class="line"><a name="l00884"></a><span class="lineno">  884</span> <span class="comment">           Scales the inputs in the training data to the specified range.</span></div>
-<div class="line"><a name="l00885"></a><span class="lineno">  885</span> <span class="comment"></span></div>
-<div class="line"><a name="l00886"></a><span class="lineno">  886</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l00887"></a><span class="lineno">  887</span> <span class="comment">            <scale_output_train_data>, <scale_train_data>, <fann_scale_input_train_data></span></div>
-<div class="line"><a name="l00888"></a><span class="lineno">  888</span> <span class="comment"></span></div>
-<div class="line"><a name="l00889"></a><span class="lineno">  889</span> <span class="comment">           This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l00890"></a><span class="lineno">  890</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l00891"></a><span class="lineno">  891</span>         <span class="keywordtype">void</span> scale_input_train_data(fann_type new_min, fann_type new_max)</div>
-<div class="line"><a name="l00892"></a><span class="lineno">  892</span>         {</div>
-<div class="line"><a name="l00893"></a><span class="lineno">  893</span>             <span class="keywordflow">if</span> (train_data != NULL)</div>
-<div class="line"><a name="l00894"></a><span class="lineno">  894</span>             {</div>
-<div class="line"><a name="l00895"></a><span class="lineno">  895</span>                 fann_scale_input_train_data(train_data, new_min, new_max);</div>
-<div class="line"><a name="l00896"></a><span class="lineno">  896</span>             }</div>
-<div class="line"><a name="l00897"></a><span class="lineno">  897</span>         }</div>
-<div class="line"><a name="l00898"></a><span class="lineno">  898</span> </div>
-<div class="line"><a name="l00899"></a><span class="lineno">  899</span>         <span class="comment">/* Method: scale_output_train_data</span></div>
-<div class="line"><a name="l00900"></a><span class="lineno">  900</span> <span class="comment">           </span></div>
-<div class="line"><a name="l00901"></a><span class="lineno">  901</span> <span class="comment">           Scales the outputs in the training data to the specified range.</span></div>
-<div class="line"><a name="l00902"></a><span class="lineno">  902</span> <span class="comment"></span></div>
-<div class="line"><a name="l00903"></a><span class="lineno">  903</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l00904"></a><span class="lineno">  904</span> <span class="comment">            <scale_input_train_data>, <scale_train_data>, <fann_scale_output_train_data></span></div>
-<div class="line"><a name="l00905"></a><span class="lineno">  905</span> <span class="comment"></span></div>
-<div class="line"><a name="l00906"></a><span class="lineno">  906</span> <span class="comment">           This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l00907"></a><span class="lineno">  907</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l00908"></a><span class="lineno">  908</span>         <span class="keywordtype">void</span> scale_output_train_data(fann_type new_min, fann_type new_max)</div>
-<div class="line"><a name="l00909"></a><span class="lineno">  909</span>         {</div>
-<div class="line"><a name="l00910"></a><span class="lineno">  910</span>             <span class="keywordflow">if</span> (train_data != NULL)</div>
-<div class="line"><a name="l00911"></a><span class="lineno">  911</span>             {</div>
-<div class="line"><a name="l00912"></a><span class="lineno">  912</span>                 fann_scale_output_train_data(train_data, new_min, new_max);</div>
-<div class="line"><a name="l00913"></a><span class="lineno">  913</span>             }</div>
-<div class="line"><a name="l00914"></a><span class="lineno">  914</span>         }</div>
-<div class="line"><a name="l00915"></a><span class="lineno">  915</span> </div>
-<div class="line"><a name="l00916"></a><span class="lineno">  916</span>         <span class="comment">/* Method: scale_train_data</span></div>
-<div class="line"><a name="l00917"></a><span class="lineno">  917</span> <span class="comment">           </span></div>
-<div class="line"><a name="l00918"></a><span class="lineno">  918</span> <span class="comment">           Scales the inputs and outputs in the training data to the specified range.</span></div>
-<div class="line"><a name="l00919"></a><span class="lineno">  919</span> <span class="comment">           </span></div>
-<div class="line"><a name="l00920"></a><span class="lineno">  920</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l00921"></a><span class="lineno">  921</span> <span class="comment">            <scale_output_train_data>, <scale_input_train_data>, <fann_scale_train_data></span></div>
-<div class="line"><a name="l00922"></a><span class="lineno">  922</span> <span class="comment"></span></div>
-<div class="line"><a name="l00923"></a><span class="lineno">  923</span> <span class="comment">           This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l00924"></a><span class="lineno">  924</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l00925"></a><span class="lineno">  925</span>         <span class="keywordtype">void</span> scale_train_data(fann_type new_min, fann_type new_max)</div>
-<div class="line"><a name="l00926"></a><span class="lineno">  926</span>         {</div>
-<div class="line"><a name="l00927"></a><span class="lineno">  927</span>             <span class="keywordflow">if</span> (train_data != NULL)</div>
-<div class="line"><a name="l00928"></a><span class="lineno">  928</span>             {</div>
-<div class="line"><a name="l00929"></a><span class="lineno">  929</span>                 fann_scale_train_data(train_data, new_min, new_max);</div>
-<div class="line"><a name="l00930"></a><span class="lineno">  930</span>             }</div>
-<div class="line"><a name="l00931"></a><span class="lineno">  931</span>         }</div>
-<div class="line"><a name="l00932"></a><span class="lineno">  932</span> </div>
-<div class="line"><a name="l00933"></a><span class="lineno">  933</span>         <span class="comment">/* Method: subset_train_data</span></div>
-<div class="line"><a name="l00934"></a><span class="lineno">  934</span> <span class="comment">           </span></div>
-<div class="line"><a name="l00935"></a><span class="lineno">  935</span> <span class="comment">           Changes the training data to a subset, starting at position *pos* </span></div>
-<div class="line"><a name="l00936"></a><span class="lineno">  936</span> <span class="comment">           and *length* elements forward. Use the copy constructor to work</span></div>
-<div class="line"><a name="l00937"></a><span class="lineno">  937</span> <span class="comment">           on a new copy of the training data.</span></div>
-<div class="line"><a name="l00938"></a><span class="lineno">  938</span> <span class="comment">           </span></div>
-<div class="line"><a name="l00939"></a><span class="lineno">  939</span> <span class="comment">            >FANN::training_data full_data_set;</span></div>
-<div class="line"><a name="l00940"></a><span class="lineno">  940</span> <span class="comment">            >full_data_set.read_train_from_file("somefile.train");</span></div>
-<div class="line"><a name="l00941"></a><span class="lineno">  941</span> <span class="comment">            >FANN::training_data *small_data_set = new FANN::training_data(full_data_set);</span></div>
-<div class="line"><a name="l00942"></a><span class="lineno">  942</span> <span class="comment">            >small_data_set->subset_train_data(0, 2); // Only use first two</span></div>
-<div class="line"><a name="l00943"></a><span class="lineno">  943</span> <span class="comment">            >// Use small_data_set ...</span></div>
-<div class="line"><a name="l00944"></a><span class="lineno">  944</span> <span class="comment">            >delete small_data_set;</span></div>
-<div class="line"><a name="l00945"></a><span class="lineno">  945</span> <span class="comment"></span></div>
-<div class="line"><a name="l00946"></a><span class="lineno">  946</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l00947"></a><span class="lineno">  947</span> <span class="comment">            <fann_subset_train_data></span></div>
-<div class="line"><a name="l00948"></a><span class="lineno">  948</span> <span class="comment"></span></div>
-<div class="line"><a name="l00949"></a><span class="lineno">  949</span> <span class="comment">           This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l00950"></a><span class="lineno">  950</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l00951"></a><span class="lineno">  951</span>         <span class="keywordtype">void</span> subset_train_data(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> pos, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length)</div>
-<div class="line"><a name="l00952"></a><span class="lineno">  952</span>         {</div>
-<div class="line"><a name="l00953"></a><span class="lineno">  953</span>             <span class="keywordflow">if</span> (train_data != NULL)</div>
-<div class="line"><a name="l00954"></a><span class="lineno">  954</span>             {</div>
-<div class="line"><a name="l00955"></a><span class="lineno">  955</span>                 <span class="keyword">struct </span>fann_train_data *temp = fann_subset_train_data(train_data, pos, length);</div>
-<div class="line"><a name="l00956"></a><span class="lineno">  956</span>                 destroy_train();</div>
-<div class="line"><a name="l00957"></a><span class="lineno">  957</span>                 train_data = temp;</div>
-<div class="line"><a name="l00958"></a><span class="lineno">  958</span>             }</div>
-<div class="line"><a name="l00959"></a><span class="lineno">  959</span>         }</div>
-<div class="line"><a name="l00960"></a><span class="lineno">  960</span> </div>
-<div class="line"><a name="l00961"></a><span class="lineno">  961</span>         <span class="comment">/*********************************************************************/</span></div>
-<div class="line"><a name="l00962"></a><span class="lineno">  962</span> </div>
-<div class="line"><a name="l00963"></a><span class="lineno">  963</span>     <span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00964"></a><span class="lineno">  964</span>         <span class="comment">/* The neural_net class has direct access to the training data */</span></div>
-<div class="line"><a name="l00965"></a><span class="lineno">  965</span>         <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classFANN_1_1neural__net.html">neural_net</a>;</div>
-<div class="line"><a name="l00966"></a><span class="lineno">  966</span> </div>
-<div class="line"><a name="l00967"></a><span class="lineno">  967</span>         <span class="comment">/* Pointer to the encapsulated training data */</span></div>
-<div class="line"><a name="l00968"></a><span class="lineno">  968</span>         <span class="keyword">struct </span>fann_train_data* train_data;</div>
-<div class="line"><a name="l00969"></a><span class="lineno">  969</span>     };</div>
-<div class="line"><a name="l00970"></a><span class="lineno">  970</span> </div>
-<div class="line"><a name="l00971"></a><span class="lineno">  971</span>     <span class="comment">/*************************************************************************/</span></div>
-<div class="line"><a name="l00972"></a><span class="lineno">  972</span> </div>
-<div class="line"><a name="l00973"></a><span class="lineno">  973</span>     <span class="comment">/* Class: neural_net</span></div>
-<div class="line"><a name="l00974"></a><span class="lineno">  974</span> <span class="comment"></span></div>
-<div class="line"><a name="l00975"></a><span class="lineno">  975</span> <span class="comment">        Encapsulation of a neural network <struct fann> and</span></div>
-<div class="line"><a name="l00976"></a><span class="lineno">  976</span> <span class="comment">        associated C API functions.</span></div>
-<div class="line"><a name="l00977"></a><span class="lineno">  977</span> <span class="comment">    */</span></div>
-<div class="line"><a name="l00978"></a><span class="lineno"><a class="line" href="classFANN_1_1neural__net.html">  978</a></span>     <span class="keyword">class </span><a class="code" href="classFANN_1_1neural__net.html">neural_net</a></div>
-<div class="line"><a name="l00979"></a><span class="lineno">  979</span>     {</div>
-<div class="line"><a name="l00980"></a><span class="lineno">  980</span>     <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00981"></a><span class="lineno">  981</span>         <span class="comment">/* Constructor: neural_net</span></div>
-<div class="line"><a name="l00982"></a><span class="lineno">  982</span> <span class="comment">        </span></div>
-<div class="line"><a name="l00983"></a><span class="lineno">  983</span> <span class="comment">            Default constructor creates an empty neural net.</span></div>
-<div class="line"><a name="l00984"></a><span class="lineno">  984</span> <span class="comment">            Use one of the create functions to create the neural network.</span></div>
-<div class="line"><a name="l00985"></a><span class="lineno">  985</span> <span class="comment"></span></div>
-<div class="line"><a name="l00986"></a><span class="lineno">  986</span> <span class="comment">            See also:</span></div>
-<div class="line"><a name="l00987"></a><span class="lineno">  987</span> <span class="comment">                <create_standard>, <create_sparse>, <create_shortcut>,</span></div>
-<div class="line"><a name="l00988"></a><span class="lineno">  988</span> <span class="comment">                <create_standard_array>, <create_sparse_array>, <create_shortcut_array></span></div>
-<div class="line"><a name="l00989"></a><span class="lineno">  989</span> <span class="comment">        */</span></div>
-<div class="line"><a name="l00990"></a><span class="lineno">  990</span>         <a class="code" href="classFANN_1_1neural__net.html">neural_net</a>() : ann(NULL)</div>
-<div class="line"><a name="l00991"></a><span class="lineno">  991</span>         {</div>
-<div class="line"><a name="l00992"></a><span class="lineno">  992</span>         }</div>
-<div class="line"><a name="l00993"></a><span class="lineno">  993</span> </div>
-<div class="line"><a name="l00994"></a><span class="lineno">  994</span>         <span class="comment">/* Destructor: ~neural_net</span></div>
-<div class="line"><a name="l00995"></a><span class="lineno">  995</span> <span class="comment"></span></div>
-<div class="line"><a name="l00996"></a><span class="lineno">  996</span> <span class="comment">            Provides automatic cleanup of data.</span></div>
-<div class="line"><a name="l00997"></a><span class="lineno">  997</span> <span class="comment">            Define USE_VIRTUAL_DESTRUCTOR if you need the destructor to be virtual.</span></div>
-<div class="line"><a name="l00998"></a><span class="lineno">  998</span> <span class="comment"></span></div>
-<div class="line"><a name="l00999"></a><span class="lineno">  999</span> <span class="comment">            See also:</span></div>
-<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span> <span class="comment">                <destroy></span></div>
-<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span> <span class="comment">        */</span></div>
-<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span> <span class="preprocessor">#ifdef USE_VIRTUAL_DESTRUCTOR</span></div>
-<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span> <span class="preprocessor"></span>        <span class="keyword">virtual</span></div>
-<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span> <span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span> <span class="preprocessor"></span>        ~<a class="code" href="classFANN_1_1neural__net.html">neural_net</a>()</div>
-<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>         {</div>
-<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>             destroy();</div>
-<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>         }</div>
-<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span> </div>
-<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>         <span class="comment">/* Method: destroy</span></div>
-<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span> <span class="comment">        </span></div>
-<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span> <span class="comment">            Destructs the entire network. Called automatically by the destructor.</span></div>
-<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span> <span class="comment"></span></div>
-<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span> <span class="comment">            See also:</span></div>
-<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span> <span class="comment">                <~neural_net></span></div>
-<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span> <span class="comment">        */</span></div>
-<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>         <span class="keywordtype">void</span> destroy()</div>
-<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>         {</div>
-<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>             {</div>
-<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>                 user_context *user_data = <span class="keyword">static_cast<</span>user_context *<span class="keyword">></span>(fann_get_user_data(ann));</div>
-<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>                 <span class="keywordflow">if</span> (user_data != NULL)</div>
-<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>                     <span class="keyword">delete</span> user_data;</div>
-<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span> </div>
-<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>                 fann_destroy(ann);</div>
-<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>                 ann = NULL;</div>
-<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>             }</div>
-<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>         }</div>
-<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span> </div>
-<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>         <span class="comment">/* Method: create_standard</span></div>
-<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span> <span class="comment">            </span></div>
-<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span> <span class="comment">            Creates a standard fully connected backpropagation neural network.</span></div>
-<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span> <span class="comment"></span></div>
-<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span> <span class="comment">            There will be a bias neuron in each layer (except the output layer),</span></div>
-<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span> <span class="comment">            and this bias neuron will be connected to all neurons in the next layer.</span></div>
-<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span> <span class="comment">            When running the network, the bias nodes always emits 1.</span></div>
-<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span> <span class="comment">            </span></div>
-<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span> <span class="comment">            Parameters:</span></div>
-<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span> <span class="comment">                num_layers - The total number of layers including the input and the output layer.</span></div>
-<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span> <span class="comment">                ... - Integer values determining the number of neurons in each layer starting with the </span></div>
-<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span> <span class="comment">                    input layer and ending with the output layer.</span></div>
-<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span> <span class="comment">                    </span></div>
-<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span> <span class="comment">            Returns:</span></div>
-<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span> <span class="comment">                Boolean true if the network was created, false otherwise.</span></div>
-<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span> <span class="comment"></span></div>
-<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span> <span class="comment">            Example:</span></div>
-<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span> <span class="comment">                >const unsigned int num_layers = 3;</span></div>
-<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span> <span class="comment">                >const unsigned int num_input = 2;</span></div>
-<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span> <span class="comment">                >const unsigned int num_hidden = 3;</span></div>
-<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span> <span class="comment">                >const unsigned int num_output = 1;</span></div>
-<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span> <span class="comment">                ></span></div>
-<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span> <span class="comment">                >FANN::neural_net net;</span></div>
-<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span> <span class="comment">                >net.create_standard(num_layers, num_input, num_hidden, num_output);</span></div>
-<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span> <span class="comment"></span></div>
-<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span> <span class="comment">            See also:</span></div>
-<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span> <span class="comment">                <create_standard_array>, <create_sparse>, <create_shortcut>,</span></div>
-<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span> <span class="comment">                <fann_create_standard_array></span></div>
-<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span> <span class="comment"></span></div>
-<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span> <span class="comment">            This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span> <span class="comment">        */</span> </div>
-<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>         <span class="keywordtype">bool</span> create_standard(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_layers, ...)</div>
-<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>         {</div>
-<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>             va_list layers;</div>
-<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>             std::vector<unsigned int> arr(num_layers);<span class="comment">//pk</span></div>
-<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>             <span class="comment">//unsigned int arr[num_layers];</span></div>
-<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span> </div>
-<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>             va_start(layers, num_layers);</div>
-<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>             <span class="comment">/* bool status = create_standard_array(num_layers, */</span></div>
-<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>             <span class="comment">/*     reinterpret_cast<const unsigned int *>(layers)); */</span></div>
-<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>             <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ii = 0; ii < num_layers; ii++)</div>
-<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>                 arr[ii] = va_arg(layers, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>);</div>
-<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>             <span class="keywordtype">bool</span> status = create_standard_array(num_layers, &(arr[0]));<span class="comment">//pk</span></div>
-<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>             <span class="comment">//bool status = create_standard_array(num_layers, arr);</span></div>
-<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>             va_end(layers);</div>
-<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>             <span class="keywordflow">return</span> status;</div>
-<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>         }</div>
-<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span> </div>
-<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>         <span class="comment">/* Method: create_standard_array</span></div>
-<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span> <span class="comment"></span></div>
-<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span> <span class="comment">           Just like <create_standard>, but with an array of layer sizes</span></div>
-<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span> <span class="comment">           instead of individual parameters.</span></div>
-<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span> <span class="comment"></span></div>
-<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span> <span class="comment">            See also:</span></div>
-<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span> <span class="comment">                <create_standard>, <create_sparse>, <create_shortcut>,</span></div>
-<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span> <span class="comment">                <fann_create_standard></span></div>
-<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span> <span class="comment"></span></div>
-<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span> <span class="comment">            This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span> <span class="comment">        */</span> </div>
-<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>         <span class="keywordtype">bool</span> create_standard_array(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_layers, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> * layers)</div>
-<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>         {</div>
-<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>             destroy();</div>
-<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>             ann = fann_create_standard_array(num_layers, layers);</div>
-<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>             <span class="keywordflow">return</span> (ann != NULL);</div>
-<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>         }</div>
-<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span> </div>
-<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>         <span class="comment">/* Method: create_sparse</span></div>
-<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span> <span class="comment"></span></div>
-<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span> <span class="comment">            Creates a standard backpropagation neural network, which is not fully connected.</span></div>
-<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span> <span class="comment"></span></div>
-<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span> <span class="comment">            Parameters:</span></div>
-<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span> <span class="comment">                connection_rate - The connection rate controls how many connections there will be in the</span></div>
-<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span> <span class="comment">                    network. If the connection rate is set to 1, the network will be fully</span></div>
-<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span> <span class="comment">                    connected, but if it is set to 0.5 only half of the connections will be set.</span></div>
-<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span> <span class="comment">                    A connection rate of 1 will yield the same result as <fann_create_standard></span></div>
-<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span> <span class="comment">                num_layers - The total number of layers including the input and the output layer.</span></div>
-<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span> <span class="comment">                ... - Integer values determining the number of neurons in each layer starting with the </span></div>
-<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span> <span class="comment">                    input layer and ending with the output layer.</span></div>
-<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span> <span class="comment">                    </span></div>
-<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span> <span class="comment">            Returns:</span></div>
-<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span> <span class="comment">                Boolean true if the network was created, false otherwise.</span></div>
-<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span> <span class="comment"></span></div>
-<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span> <span class="comment">            See also:</span></div>
-<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span> <span class="comment">                <create_standard>, <create_sparse_array>, <create_shortcut>,</span></div>
-<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span> <span class="comment">                <fann_create_sparse></span></div>
-<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span> <span class="comment"></span></div>
-<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span> <span class="comment">            This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span> <span class="comment">        */</span></div>
-<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>         <span class="keywordtype">bool</span> create_sparse(<span class="keywordtype">float</span> connection_rate, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_layers, ...)</div>
-<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>         {</div>
-<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>             va_list layers;</div>
-<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>             std::vector<unsigned int> arr(num_layers);<span class="comment">//pk</span></div>
-<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>             <span class="comment">//unsigned int arr[num_layers];</span></div>
-<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span> </div>
-<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>             va_start(layers, num_layers);</div>
-<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>             <span class="comment">/* bool status = create_sparse_array(connection_rate, num_layers, */</span></div>
-<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>             <span class="comment">/*     reinterpret_cast<const unsigned int *>(layers)); */</span></div>
-<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span> </div>
-<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>             <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ii = 0; ii < num_layers; ii++)</div>
-<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>                 arr[ii] = va_arg(layers, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>);</div>
-<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>             <span class="keywordtype">bool</span> status = create_sparse_array(connection_rate, num_layers, &(arr[0]));<span class="comment">//pk</span></div>
-<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>             <span class="comment">//bool status = create_sparse_array(connection_rate, num_layers, arr);</span></div>
-<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>   </div>
-<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>             va_end(layers);</div>
-<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>             <span class="keywordflow">return</span> status;</div>
-<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>         }</div>
-<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span> </div>
-<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>         <span class="comment">/* Method: create_sparse_array</span></div>
-<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span> <span class="comment">           Just like <create_sparse>, but with an array of layer sizes</span></div>
-<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span> <span class="comment">           instead of individual parameters.</span></div>
-<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span> <span class="comment"></span></div>
-<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span> <span class="comment">           See <create_sparse> for a description of the parameters.</span></div>
-<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span> <span class="comment"></span></div>
-<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span> <span class="comment">            See also:</span></div>
-<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span> <span class="comment">                <create_standard>, <create_sparse>, <create_shortcut>,</span></div>
-<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span> <span class="comment">                <fann_create_sparse_array></span></div>
-<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span> <span class="comment"></span></div>
-<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span> <span class="comment">            This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span> <span class="comment">        */</span></div>
-<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>         <span class="keywordtype">bool</span> create_sparse_array(<span class="keywordtype">float</span> connection_rate,</div>
-<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>             <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_layers, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> * layers)</div>
-<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>         {</div>
-<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>             destroy();</div>
-<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>             ann = fann_create_sparse_array(connection_rate, num_layers, layers);</div>
-<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>             <span class="keywordflow">return</span> (ann != NULL);</div>
-<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>         }</div>
-<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span> </div>
-<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>         <span class="comment">/* Method: create_shortcut</span></div>
-<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span> <span class="comment"></span></div>
-<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span> <span class="comment">            Creates a standard backpropagation neural network, which is not fully connected and which</span></div>
-<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span> <span class="comment">            also has shortcut connections.</span></div>
-<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span> <span class="comment"></span></div>
-<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span> <span class="comment">            Shortcut connections are connections that skip layers. A fully connected network with shortcut </span></div>
-<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span> <span class="comment">            connections, is a network where all neurons are connected to all neurons in later layers. </span></div>
-<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span> <span class="comment">            Including direct connections from the input layer to the output layer.</span></div>
-<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span> <span class="comment"></span></div>
-<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span> <span class="comment">            See <create_standard> for a description of the parameters.</span></div>
-<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span> <span class="comment"></span></div>
-<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span> <span class="comment">            See also:</span></div>
-<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span> <span class="comment">                <create_standard>, <create_sparse>, <create_shortcut_array>,</span></div>
-<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span> <span class="comment">                <fann_create_shortcut></span></div>
-<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span> <span class="comment"></span></div>
-<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span> <span class="comment">            This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span> <span class="comment">        */</span> </div>
-<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>         <span class="keywordtype">bool</span> create_shortcut(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_layers, ...)</div>
-<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>         {</div>
-<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>             va_list layers;</div>
-<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>             std::vector<unsigned int> arr(num_layers);<span class="comment">//pk</span></div>
-<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>             <span class="comment">//unsigned int arr[num_layers];</span></div>
-<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span> </div>
-<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>             va_start(layers, num_layers);</div>
-<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>             <span class="comment">/* bool status = create_shortcut_array(num_layers, */</span></div>
-<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>             <span class="comment">/*     reinterpret_cast<const unsigned int *>(layers)); */</span></div>
-<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>             <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ii = 0; ii < num_layers; ii++)</div>
-<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>                 arr[ii] = va_arg(layers, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>);</div>
-<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>             <span class="keywordtype">bool</span> status = create_shortcut_array(num_layers, &(arr[0]));<span class="comment">//</span></div>
-<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>             <span class="comment">//bool status = create_shortcut_array(num_layers, arr);</span></div>
-<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span> </div>
-<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>             va_end(layers);</div>
-<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>             <span class="keywordflow">return</span> status;</div>
-<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>         }</div>
-<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span> </div>
-<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>         <span class="comment">/* Method: create_shortcut_array</span></div>
-<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span> <span class="comment"></span></div>
-<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span> <span class="comment">           Just like <create_shortcut>, but with an array of layer sizes</span></div>
-<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span> <span class="comment">           instead of individual parameters.</span></div>
-<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span> <span class="comment"></span></div>
-<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span> <span class="comment">            See <create_standard_array> for a description of the parameters.</span></div>
-<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span> <span class="comment"></span></div>
-<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span> <span class="comment">            See also:</span></div>
-<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span> <span class="comment">                <create_standard>, <create_sparse>, <create_shortcut>,</span></div>
-<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span> <span class="comment">                <fann_create_shortcut_array></span></div>
-<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span> <span class="comment"></span></div>
-<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span> <span class="comment">            This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span> <span class="comment">        */</span></div>
-<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>         <span class="keywordtype">bool</span> create_shortcut_array(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_layers,</div>
-<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>             <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> * layers)</div>
-<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>         {</div>
-<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>             destroy();</div>
-<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>             ann = fann_create_shortcut_array(num_layers, layers);</div>
-<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>             <span class="keywordflow">return</span> (ann != NULL);</div>
-<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>         }</div>
-<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span> </div>
-<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>         <span class="comment">/* Method: run</span></div>
-<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span> <span class="comment"></span></div>
-<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span> <span class="comment">            Will run input through the neural network, returning an array of outputs, the number of which being </span></div>
-<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span> <span class="comment">            equal to the number of neurons in the output layer.</span></div>
-<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span> <span class="comment"></span></div>
-<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span> <span class="comment">            See also:</span></div>
-<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span> <span class="comment">                <test>, <fann_run></span></div>
-<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span> <span class="comment"></span></div>
-<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span> <span class="comment">            This function appears in FANN >= 1.0.0.</span></div>
-<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span> <span class="comment">        */</span> </div>
-<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>         fann_type* run(fann_type *input)</div>
-<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>         {</div>
-<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>             <span class="keywordflow">if</span> (ann == NULL)</div>
-<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>             {</div>
-<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>                 <span class="keywordflow">return</span> NULL;</div>
-<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>             }</div>
-<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span> <span class="comment">//             for(int iband=0;iband<get_num_input();++iband)</span></div>
-<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span> <span class="comment">//               std::cout << (input)[iband] << " ";</span></div>
-<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span> <span class="comment">//             std::cout << std::endl;</span></div>
-<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>             <span class="keywordflow">return</span> fann_run(ann, input);</div>
-<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>         }</div>
-<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span> </div>
-<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>       std::vector<fann_type> run(std::vector<fann_type> input)</div>
-<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>         {</div>
-<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>           std::vector<fann_type> vresult;</div>
-<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>             <span class="keywordflow">if</span> (ann == NULL)</div>
-<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>             {</div>
-<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>                 <span class="keywordflow">return</span> vresult;</div>
-<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>             }</div>
-<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>             vresult.resize(get_num_output());</div>
-<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>             fann_type* result;</div>
-<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>             result=fann_run(ann,&(input[0]));</div>
-<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iout=0;iout<get_num_output();++iout)</div>
-<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>               vresult[iout]=*(result++);</div>
-<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>             <span class="keywordflow">return</span> vresult;</div>
-<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>         }</div>
-<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span> </div>
-<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>         <span class="comment">/* Method: randomize_weights</span></div>
-<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span> <span class="comment"></span></div>
-<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span> <span class="comment">            Give each connection a random weight between *min_weight* and *max_weight*</span></div>
-<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span> <span class="comment">           </span></div>
-<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span> <span class="comment">            From the beginning the weights are random between -0.1 and 0.1.</span></div>
-<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span> <span class="comment"></span></div>
-<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span> <span class="comment">            See also:</span></div>
-<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span> <span class="comment">                <init_weights>, <fann_randomize_weights></span></div>
-<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span> <span class="comment"></span></div>
-<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span> <span class="comment">            This function appears in FANN >= 1.0.0.</span></div>
-<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span> <span class="comment">        */</span> </div>
-<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>         <span class="keywordtype">void</span> randomize_weights(fann_type min_weight, fann_type max_weight)</div>
-<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>         {</div>
-<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>             {</div>
-<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>                 fann_randomize_weights(ann, min_weight, max_weight);</div>
-<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>             }</div>
-<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>         }</div>
-<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span> </div>
-<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>         <span class="comment">/* Method: init_weights</span></div>
-<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span> <span class="comment"></span></div>
-<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span> <span class="comment">            Initialize the weights using Widrow + Nguyen's algorithm.</span></div>
-<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span> <span class="comment">            </span></div>
-<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span> <span class="comment">            This function behaves similarly to fann_randomize_weights. It will use the algorithm developed </span></div>
-<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span> <span class="comment">            by Derrick Nguyen and Bernard Widrow to set the weights in such a way </span></div>
-<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span> <span class="comment">            as to speed up training. This technique is not always successful, and in some cases can be less </span></div>
-<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span> <span class="comment">            efficient than a purely random initialization.</span></div>
-<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span> <span class="comment"></span></div>
-<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span> <span class="comment">            The algorithm requires access to the range of the input data (ie, largest and smallest input), </span></div>
-<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span> <span class="comment">            and therefore accepts a second argument, data, which is the training data that will be used to </span></div>
-<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span> <span class="comment">            train the network.</span></div>
-<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span> <span class="comment"></span></div>
-<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span> <span class="comment">            See also:</span></div>
-<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span> <span class="comment">                <randomize_weights>, <training_data::read_train_from_file>,</span></div>
-<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span> <span class="comment">                <fann_init_weights></span></div>
-<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span> <span class="comment"></span></div>
-<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span> <span class="comment">            This function appears in FANN >= 1.1.0.</span></div>
-<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span> <span class="comment">        */</span> </div>
-<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>         <span class="keywordtype">void</span> init_weights(<span class="keyword">const</span> <a class="code" href="classFANN_1_1training__data.html">training_data</a> &data)</div>
-<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>         {</div>
-<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>             <span class="keywordflow">if</span> ((ann != NULL) && (data.train_data != NULL))</div>
-<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>             {</div>
-<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>                 fann_init_weights(ann, data.train_data);</div>
-<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>             }</div>
-<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>         }</div>
-<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span> </div>
-<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>         <span class="comment">/* Method: print_connections</span></div>
-<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span> <span class="comment"></span></div>
-<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span> <span class="comment">            Will print the connections of the ann in a compact matrix, for easy viewing of the internals </span></div>
-<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span> <span class="comment">            of the ann.</span></div>
-<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span> <span class="comment"></span></div>
-<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span> <span class="comment">            The output from fann_print_connections on a small (2 2 1) network trained on the xor problem</span></div>
-<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span> <span class="comment">            >Layer / Neuron 012345</span></div>
-<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span> <span class="comment">            >L   1 / N    3 BBa...</span></div>
-<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span> <span class="comment">            >L   1 / N    4 BBA...</span></div>
-<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span> <span class="comment">            >L   1 / N    5 ......</span></div>
-<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span> <span class="comment">            >L   2 / N    6 ...BBA</span></div>
-<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span> <span class="comment">            >L   2 / N    7 ......</span></div>
-<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span> <span class="comment">                  </span></div>
-<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span> <span class="comment">            This network have five real neurons and two bias neurons. This gives a total of seven neurons </span></div>
-<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span> <span class="comment">            named from 0 to 6. The connections between these neurons can be seen in the matrix. "." is a </span></div>
-<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span> <span class="comment">            place where there is no connection, while a character tells how strong the connection is on a </span></div>
-<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span> <span class="comment">            scale from a-z. The two real neurons in the hidden layer (neuron 3 and 4 in layer 1) has </span></div>
-<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span> <span class="comment">            connection from the three neurons in the previous layer as is visible in the first two lines. </span></div>
-<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span> <span class="comment">            The output neuron (6) has connections form the three neurons in the hidden layer 3 - 5 as is </span></div>
-<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span> <span class="comment">            visible in the fourth line.</span></div>
-<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span> <span class="comment"></span></div>
-<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span> <span class="comment">            To simplify the matrix output neurons is not visible as neurons that connections can come from, </span></div>
-<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span> <span class="comment">            and input and bias neurons are not visible as neurons that connections can go to.</span></div>
-<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span> <span class="comment"></span></div>
-<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span> <span class="comment">            This function appears in FANN >= 1.2.0.</span></div>
-<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span> <span class="comment">        */</span> </div>
-<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>         <span class="keywordtype">void</span> print_connections()</div>
-<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>         {</div>
-<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>             {</div>
-<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>                 fann_print_connections(ann);</div>
-<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>             }</div>
-<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>         }</div>
-<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span> </div>
-<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>         <span class="comment">/* Method: create_from_file</span></div>
-<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span> <span class="comment">           </span></div>
-<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span> <span class="comment">           Constructs a backpropagation neural network from a configuration file,</span></div>
-<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span> <span class="comment">           which have been saved by <save>.</span></div>
-<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span> <span class="comment">           </span></div>
-<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span> <span class="comment">            <save>, <save_to_fixed>, <fann_create_from_file></span></div>
-<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span> <span class="comment">            </span></div>
-<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span> <span class="comment">           This function appears in FANN >= 1.0.0.</span></div>
-<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>         <span class="keywordtype">bool</span> create_from_file(<span class="keyword">const</span> std::string &configuration_file)</div>
-<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>         {</div>
-<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>             destroy();</div>
-<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>             ann = fann_create_from_file(configuration_file.c_str());</div>
-<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>             <span class="keywordflow">return</span> (ann != NULL);</div>
-<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>         }</div>
-<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span> </div>
-<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>         <span class="comment">/* Method: save</span></div>
-<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span> <span class="comment"></span></div>
-<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span> <span class="comment">           Save the entire network to a configuration file.</span></div>
-<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span> <span class="comment">           </span></div>
-<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span> <span class="comment">           The configuration file contains all information about the neural network and enables </span></div>
-<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span> <span class="comment">           <create_from_file> to create an exact copy of the neural network and all of the</span></div>
-<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span> <span class="comment">           parameters associated with the neural network.</span></div>
-<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span> <span class="comment">           </span></div>
-<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span> <span class="comment">           These two parameters (<set_callback>, <set_error_log>) are *NOT* saved </span></div>
-<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span> <span class="comment">           to the file because they cannot safely be ported to a different location. Also temporary</span></div>
-<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span> <span class="comment">           parameters generated during training like <get_MSE> is not saved.</span></div>
-<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span> <span class="comment">           </span></div>
-<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span> <span class="comment">           Return:</span></div>
-<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span> <span class="comment">           The function returns 0 on success and -1 on failure.</span></div>
-<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span> <span class="comment">           </span></div>
-<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span> <span class="comment">            <create_from_file>, <save_to_fixed>, <fann_save></span></div>
-<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span> <span class="comment"></span></div>
-<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span> <span class="comment">           This function appears in FANN >= 1.0.0.</span></div>
-<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>         <span class="keywordtype">bool</span> save(<span class="keyword">const</span> std::string &configuration_file)</div>
-<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>         {</div>
-<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>             <span class="keywordflow">if</span> (ann == NULL)</div>
-<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>             {</div>
-<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>                 <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>             }</div>
-<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>             <span class="keywordflow">if</span> (fann_save(ann, configuration_file.c_str()) == -1)</div>
-<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>             {</div>
-<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>                 <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>             }</div>
-<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>             <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>         }</div>
-<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span> </div>
-<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>         <span class="comment">/* Method: save_to_fixed</span></div>
-<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span> <span class="comment"></span></div>
-<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span> <span class="comment">           Saves the entire network to a configuration file.</span></div>
-<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span> <span class="comment">           But it is saved in fixed point format no matter which</span></div>
-<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span> <span class="comment">           format it is currently in.</span></div>
-<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span> <span class="comment"></span></div>
-<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span> <span class="comment">           This is usefull for training a network in floating points,</span></div>
-<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span> <span class="comment">           and then later executing it in fixed point.</span></div>
-<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span> <span class="comment"></span></div>
-<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span> <span class="comment">           The function returns the bit position of the fix point, which</span></div>
-<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span> <span class="comment">           can be used to find out how accurate the fixed point network will be.</span></div>
-<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span> <span class="comment">           A high value indicates high precision, and a low value indicates low</span></div>
-<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span> <span class="comment">           precision.</span></div>
-<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span> <span class="comment"></span></div>
-<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span> <span class="comment">           A negative value indicates very low precision, and a very</span></div>
-<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span> <span class="comment">           strong possibility for overflow.</span></div>
-<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span> <span class="comment">           (the actual fix point will be set to 0, since a negative</span></div>
-<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span> <span class="comment">           fix point does not make sence).</span></div>
-<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span> <span class="comment"></span></div>
-<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span> <span class="comment">           Generally, a fix point lower than 6 is bad, and should be avoided.</span></div>
-<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span> <span class="comment">           The best way to avoid this, is to have less connections to each neuron,</span></div>
-<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span> <span class="comment">           or just less neurons in each layer.</span></div>
-<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span> <span class="comment"></span></div>
-<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span> <span class="comment">           The fixed point use of this network is only intended for use on machines that</span></div>
-<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span> <span class="comment">           have no floating point processor, like an iPAQ. On normal computers the floating</span></div>
-<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span> <span class="comment">           point version is actually faster.</span></div>
-<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span> <span class="comment"></span></div>
-<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span> <span class="comment">            <create_from_file>, <save>, <fann_save_to_fixed></span></div>
-<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span> <span class="comment"></span></div>
-<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span> <span class="comment">           This function appears in FANN >= 1.0.0.</span></div>
-<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span> <span class="comment">        */</span> </div>
-<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>         <span class="keywordtype">int</span> save_to_fixed(<span class="keyword">const</span> std::string &configuration_file)</div>
-<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>         {</div>
-<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>             <span class="keywordtype">int</span> fixpoint = 0;</div>
-<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>             {</div>
-<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>                 fixpoint = fann_save_to_fixed(ann, configuration_file.c_str());</div>
-<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>             }</div>
-<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>             <span class="keywordflow">return</span> fixpoint;</div>
-<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>         }</div>
-<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span> </div>
-<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span> <span class="preprocessor">#ifndef FIXEDFANN</span></div>
-<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span> <span class="preprocessor"></span>        <span class="comment">/* Method: train</span></div>
-<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span> <span class="comment"></span></div>
-<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span> <span class="comment">           Train one iteration with a set of inputs, and a set of desired outputs.</span></div>
-<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span> <span class="comment">           This training is always incremental training (see <FANN::training_algorithm_enum>),</span></div>
-<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span> <span class="comment">           since only one pattern is presented.</span></div>
-<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span> <span class="comment">           </span></div>
-<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span> <span class="comment">           Parameters:</span></div>
-<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span> <span class="comment">            ann - The neural network structure</span></div>
-<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span> <span class="comment">            input - an array of inputs. This array must be exactly <fann_get_num_input> long.</span></div>
-<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span> <span class="comment">            desired_output - an array of desired outputs. This array must be exactly <fann_get_num_output> long.</span></div>
-<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span> <span class="comment">            </span></div>
-<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span> <span class="comment">            See also:</span></div>
-<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span> <span class="comment">                <train_on_data>, <train_epoch>, <fann_train></span></div>
-<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span> <span class="comment">            </span></div>
-<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span> <span class="comment">            This function appears in FANN >= 1.0.0.</span></div>
-<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>         <span class="keywordtype">void</span> train(fann_type *input, fann_type *desired_output)</div>
-<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>         {</div>
-<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>             {</div>
-<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>                 fann_train(ann, input, desired_output);</div>
-<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>             }</div>
-<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>         }</div>
-<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span> </div>
-<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>         <span class="comment">/* Method: train_epoch</span></div>
-<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span> <span class="comment">            Train one epoch with a set of training data.</span></div>
-<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span> <span class="comment">           </span></div>
-<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span> <span class="comment">            Train one epoch with the training data stored in data. One epoch is where all of </span></div>
-<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span> <span class="comment">            the training data is considered exactly once.</span></div>
-<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span> <span class="comment"></span></div>
-<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span> <span class="comment">            This function returns the MSE error as it is calculated either before or during </span></div>
-<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span> <span class="comment">            the actual training. This is not the actual MSE after the training epoch, but since </span></div>
-<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span> <span class="comment">            calculating this will require to go through the entire training set once more, it is </span></div>
-<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span> <span class="comment">            more than adequate to use this value during training.</span></div>
-<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span> <span class="comment"></span></div>
-<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span> <span class="comment">            The training algorithm used by this function is chosen by the <fann_set_training_algorithm> </span></div>
-<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span> <span class="comment">            function.</span></div>
-<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span> <span class="comment">            </span></div>
-<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span> <span class="comment">            See also:</span></div>
-<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span> <span class="comment">                <train_on_data>, <test_data>, <fann_train_epoch></span></div>
-<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span> <span class="comment">                </span></div>
-<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span> <span class="comment">            This function appears in FANN >= 1.2.0.</span></div>
-<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>         <span class="keywordtype">float</span> train_epoch(<span class="keyword">const</span> <a class="code" href="classFANN_1_1training__data.html">training_data</a> &data)</div>
-<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>         {</div>
-<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>             <span class="keywordtype">float</span> mse = 0.0f;</div>
-<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>             <span class="keywordflow">if</span> ((ann != NULL) && (data.train_data != NULL))</div>
-<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>             {</div>
-<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>                 mse = fann_train_epoch(ann, data.train_data);</div>
-<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>             }</div>
-<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>             <span class="keywordflow">return</span> mse;</div>
-<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>         }</div>
-<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span> </div>
-<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>         <span class="comment">/* Method: train_on_data</span></div>
-<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span> <span class="comment"></span></div>
-<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span> <span class="comment">           Trains on an entire dataset, for a period of time. </span></div>
-<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span> <span class="comment">           </span></div>
-<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span> <span class="comment">           This training uses the training algorithm chosen by <set_training_algorithm>,</span></div>
-<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span> <span class="comment">           and the parameters set for these training algorithms.</span></div>
-<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span> <span class="comment">           </span></div>
-<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span> <span class="comment">           Parameters:</span></div>
-<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span> <span class="comment">                ann - The neural network</span></div>
-<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span> <span class="comment">                data - The data, which should be used during training</span></div>
-<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span> <span class="comment">                max_epochs - The maximum number of epochs the training should continue</span></div>
-<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span> <span class="comment">                epochs_between_reports - The number of epochs between printing a status report to stdout.</span></div>
-<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span> <span class="comment">                    A value of zero means no reports should be printed.</span></div>
-<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span> <span class="comment">                desired_error - The desired <get_MSE> or <get_bit_fail>, depending on which stop function</span></div>
-<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span> <span class="comment">                    is chosen by <set_train_stop_function>.</span></div>
-<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span> <span class="comment"></span></div>
-<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span> <span class="comment">            Instead of printing out reports every epochs_between_reports, a callback function can be called </span></div>
-<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span> <span class="comment">            (see <set_callback>).</span></div>
-<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span> <span class="comment">            </span></div>
-<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span> <span class="comment">            See also:</span></div>
-<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span> <span class="comment">                <train_on_file>, <train_epoch>, <fann_train_on_data></span></div>
-<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span> <span class="comment"></span></div>
-<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span> <span class="comment">            This function appears in FANN >= 1.0.0.</span></div>
-<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span> <span class="comment">        */</span> </div>
-<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>         <span class="keywordtype">void</span> train_on_data(<span class="keyword">const</span> <a class="code" href="classFANN_1_1training__data.html">training_data</a> &data, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> max_epochs,</div>
-<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>             <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> epochs_between_reports, <span class="keywordtype">float</span> desired_error)</div>
-<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>         {</div>
-<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>             <span class="keywordflow">if</span> ((ann != NULL) && (data.train_data != NULL))</div>
-<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>             {</div>
-<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>                 fann_train_on_data(ann, data.train_data, max_epochs,</div>
-<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>                     epochs_between_reports, desired_error);</div>
-<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>             }</div>
-<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>         }</div>
-<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span> </div>
-<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>       </div>
-<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span> </div>
-<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>       <span class="keywordtype">void</span> train_on_data(<span class="keyword">const</span> std::vector< std::vector<fann_type> >& input,</div>
-<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>                          <span class="keyword">const</span> std::vector< std::vector<fann_type> >& output,</div>
-<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>                          <span class="keywordtype">bool</span> initWeights,</div>
-<div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>                          <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> max_epochs,</div>
-<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>                          <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> epochs_between_reports,</div>
-<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>                          <span class="keywordtype">float</span> desired_error)</div>
-<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>         {</div>
-<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>           <span class="keywordflow">if</span> ((ann != NULL))</div>
-<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>             {</div>
-<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>               <a class="code" href="classFANN_1_1training__data.html">training_data</a> data;</div>
-<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>               data.set_train_data(input,output);</div>
-<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>               <span class="keywordflow">if</span>(data.train_data != NULL){</div>
-<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>                 <span class="keywordflow">if</span>(initWeights)</div>
-<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>                   init_weights(data);</div>
-<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>                 fann_train_on_data(ann, data.train_data, max_epochs,</div>
-<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>                                    epochs_between_reports, desired_error);</div>
-<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>               }</div>
-<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>             }</div>
-<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>         }</div>
-<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span> </div>
-<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>         <span class="keywordtype">void</span> train_on_data(<span class="keyword">const</span> std::vector< <a class="code" href="classVector2d.html">Vector2d<fann_type></a> >& input,</div>
-<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>                            <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_data,</div>
-<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>                            <span class="keywordtype">bool</span> initWeights,</div>
-<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>                            <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> max_epochs,</div>
-<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>                            <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> epochs_between_reports,</div>
-<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>                            <span class="keywordtype">float</span> desired_error)</div>
-<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>         {</div>
-<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>           <span class="keywordflow">if</span> ((ann != NULL))</div>
-<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>             {</div>
-<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>               <a class="code" href="classFANN_1_1training__data.html">training_data</a> data;</div>
-<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>               data.set_train_data(input,num_data);</div>
-<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>               <span class="keywordflow">if</span>(data.train_data != NULL){</div>
-<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>                 <span class="keywordflow">if</span>(initWeights)</div>
-<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>                   init_weights(data);</div>
-<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>                 fann_train_on_data(ann, data.train_data, max_epochs,</div>
-<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>                                    epochs_between_reports, desired_error);</div>
-<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>               }</div>
-<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>             }</div>
-<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>         }</div>
-<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span> </div>
-<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>       <span class="comment">//cross validation for classification</span></div>
-<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>         <span class="keywordtype">float</span> cross_validation(std::vector< <a class="code" href="classVector2d.html">Vector2d<fann_type></a> >& trainingFeatures,</div>
-<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>                                <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ntraining,</div>
-<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>                                <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> cv,</div>
-<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>                                <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> max_epochs,</div>
-<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>                                <span class="keywordtype">float</span> desired_error,</div>
-<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>                                std::vector<unsigned short>& referenceVector,</div>
-<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>                                std::vector<unsigned short>& outputVector,</div>
-<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>                                <span class="keywordtype">short</span> verbose=0)</div>
-<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>         {</div>
-<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>           referenceVector.clear();</div>
-<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>           outputVector.clear();</div>
-<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>           assert(cv<ntraining);</div>
-<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>           <span class="keywordtype">float</span> rmse=0;</div>
-<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>           <span class="keywordtype">int</span> nclass=trainingFeatures.size();</div>
-<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>           std::vector< Vector2d<float> > testFeatures(nclass);</div>
-<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>           <span class="keywordtype">int</span> testclass=0;<span class="comment">//class to leave out</span></div>
-<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>           <span class="keywordtype">int</span> testsample=0;<span class="comment">//sample to leave out</span></div>
-<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>           <span class="keywordtype">int</span> nrun=(cv>1)? cv : ntraining;</div>
-<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>           <span class="keywordflow">if</span>(nrun>ntraining)</div>
-<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>             nrun=ntraining;</div>
-<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irun=0;irun<nrun;++irun){</div>
-<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>             <span class="keywordflow">if</span>(verbose>1)</div>
-<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>               std::cout << <span class="stringliteral">"run "</span> << irun << std::endl;</div>
-<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>             <span class="comment">//reset training sample from last run</span></div>
-<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>             <span class="keywordflow">if</span>(verbose>1)</div>
-<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>               std::cout << <span class="stringliteral">"reset training sample from last run"</span> << std::endl;</div>
-<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>               <span class="keywordflow">while</span>(testFeatures[iclass].size()){</div>
-<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>                 trainingFeatures[iclass].push_back(testFeatures[iclass].back());</div>
-<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>                 testFeatures[iclass].pop_back();</div>
-<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>               }</div>
-<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>               <span class="keywordflow">if</span>(verbose>1){</div>
-<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>                 std::cout << <span class="stringliteral">"training size "</span> << iclass << <span class="stringliteral">": "</span> << trainingFeatures[iclass].size() << std::endl;</div>
-<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>                 std::cout << <span class="stringliteral">"test size "</span> << iclass << <span class="stringliteral">": "</span> << testFeatures[iclass].size() << std::endl;</div>
-<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>               }</div>
-<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>               assert(trainingFeatures[iclass].size());</div>
-<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>             }</div>
-<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>             <span class="comment">//create test sample</span></div>
-<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>             <span class="keywordflow">if</span>(verbose>1)</div>
-<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>               std::cout << <span class="stringliteral">"create test sample"</span> << std::endl;</div>
-<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>             <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nsample=0;</div>
-<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>             <span class="keywordtype">int</span> ntest=(cv>1)? ntraining/cv : 1; <span class="comment">//n-fold cross validation or leave-one-out</span></div>
-<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>             <span class="keywordflow">while</span>(nsample<ntest){</div>
-<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>               <span class="comment">// if(index>=trainingFeatures[testclass].size()){</span></div>
-<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>               <span class="comment">//   index=0;</span></div>
-<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>               <span class="comment">// }</span></div>
-<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>               testFeatures[testclass].push_back(trainingFeatures[testclass][0]);</div>
-<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>               trainingFeatures[testclass].erase(trainingFeatures[testclass].begin());</div>
-<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>               <span class="keywordflow">if</span>(!trainingFeatures[testclass].size())</div>
-<div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>                 std::cout << <span class="stringliteral">"Error: testclass "</span> << testclass << <span class="stringliteral">" has no training"</span> << std::endl;</div>
-<div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>               assert(trainingFeatures[testclass].size());</div>
-<div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>               ++nsample;</div>
-<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>               <span class="keywordflow">if</span>(static_cast<float>(trainingFeatures[testclass].size())/static_cast<float>(testFeatures[testclass].size())<=(cv-1)){</div>
-<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>                 <span class="keywordflow">if</span>(verbose>1){</div>
-<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>                   std::cout << <span class="stringliteral">"training size "</span> << testclass << <span class="stringliteral">": "</span> << trainingFeatures[testclass].size() << std::endl;</div>
-<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>                   std::cout << <span class="stringliteral">"test size "</span> << testclass << <span class="stringliteral">": "</span> << testFeatures[testclass].size() << std::endl;</div>
-<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>                 }</div>
-<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>                 testclass=(testclass+1)%nclass;</div>
-<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>               }</div>
-<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>             }</div>
-<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>             assert(nsample==ntest);</div>
-<div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>             <span class="comment">//training with left out training set</span></div>
-<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>             <span class="keywordflow">if</span>(verbose>1)</div>
-<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>               std::cout << std::endl << <span class="stringliteral">"Set training data"</span> << std::endl;</div>
-<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>             <span class="keywordtype">bool</span> initWeights=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>             <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> epochs_between_reports=0;</div>
-<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>             train_on_data(trainingFeatures,ntraining-ntest,initWeights, max_epochs,</div>
-<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>                           epochs_between_reports, desired_error);</div>
-<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>             <span class="comment">//cross validation with testFeatures</span></div>
-<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>             <span class="keywordflow">if</span>(verbose>1)</div>
-<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>               std::cout << std::endl << <span class="stringliteral">"Cross validation"</span> << std::endl;</div>
-<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span> </div>
-<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>             std::vector<float> result(nclass);</div>
-<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>             <span class="keywordtype">int</span> maxClass=-1;</div>
-<div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<testFeatures.size();++iclass){</div>
-<div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>               assert(trainingFeatures[iclass].size());</div>
-<div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>               <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<testFeatures[iclass].size();++isample){</div>
-<div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>                 result=run(testFeatures[iclass][isample]);</div>
-<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>                 <span class="comment">//search class with maximum posterior probability</span></div>
-<div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>                 <span class="keywordtype">float</span> maxP=-1;</div>
-<div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>                 <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ic=0;ic<nclass;++ic){</div>
-<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>                   <span class="keywordtype">float</span> pv=(result[ic]+1.0)/2.0;<span class="comment">//bring back to scale [0,1]</span></div>
-<div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>                   <span class="keywordflow">if</span>(pv>maxP){</div>
-<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>                     maxP=pv;</div>
-<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>                     maxClass=ic;</div>
-<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>                   }</div>
-<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>                 }</div>
-<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>                 assert(maxP>=0);</div>
-<div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>                 referenceVector.push_back(iclass);</div>
-<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>                 outputVector.push_back(maxClass);</div>
-<div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>               }</div>
-<div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>             }</div>
-<div class="line"><a name="l01645"></a><span class="lineno"> 1645</span> </div>
-<div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>             <span class="comment">// rmse+=test_data(testFeatures,ntest);</span></div>
-<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>             <span class="comment">// if(verbose>1)</span></div>
-<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>             <span class="comment">//   std::cout << std::endl << "rmse: " << rmse << std::endl;</span></div>
-<div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>           }</div>
-<div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>           <span class="comment">// rmse/=nrun;</span></div>
-<div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>           <span class="comment">//reset from very last run</span></div>
-<div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>             <span class="keywordflow">while</span>(testFeatures[iclass].size()){</div>
-<div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>               trainingFeatures[iclass].push_back(testFeatures[iclass].back());</div>
-<div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>               testFeatures[iclass].pop_back();</div>
-<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>             }</div>
-<div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>           }</div>
-<div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>           <span class="comment">// return(rmse);</span></div>
-<div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>           <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>         }</div>
-<div class="line"><a name="l01661"></a><span class="lineno"> 1661</span> </div>
-<div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>       <span class="comment">//cross validation for regresssion</span></div>
-<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>         <span class="keywordtype">float</span> cross_validation(std::vector< std::vector<fann_type> >& input,</div>
-<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>                                std::vector< std::vector<fann_type> >& output,</div>
-<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>                                <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> cv,</div>
-<div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>                                <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> max_epochs,</div>
-<div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>                                <span class="keywordtype">float</span> desired_error,</div>
-<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>                                std::vector< std::vector<fann_type> >& referenceVector,</div>
-<div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>                                std::vector< std::vector<fann_type> >& outputVector,</div>
-<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>                                <span class="keywordtype">short</span> verbose=0)</div>
-<div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>         {</div>
-<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>           assert(input.size());</div>
-<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>           assert(output.size()==input.size());</div>
-<div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>           <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ntraining=input.size();</div>
-<div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>           <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> noutput=output[0].size();</div>
-<div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>           referenceVector.clear();</div>
-<div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>           outputVector.clear();</div>
-<div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>           assert(cv<ntraining);</div>
-<div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>           <span class="keywordtype">float</span> rmse=0;</div>
-<div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>           std::vector< std::vector<fann_type> > testInput;</div>
-<div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>           std::vector< std::vector<fann_type> > testOutput;</div>
-<div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>           <span class="keywordtype">int</span> testsample=0;<span class="comment">//sample to leave out</span></div>
-<div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>           <span class="keywordtype">int</span> nrun=(cv>1)? cv : ntraining;</div>
-<div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>           <span class="keywordflow">if</span>(nrun>ntraining)</div>
-<div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>             nrun=ntraining;</div>
-<div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irun=0;irun<nrun;++irun){</div>
-<div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>             <span class="keywordflow">if</span>(verbose>1)</div>
-<div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>               std::cout << <span class="stringliteral">"run "</span> << irun << std::endl;</div>
-<div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>             <span class="comment">//reset training sample from last run</span></div>
-<div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>             <span class="keywordflow">if</span>(verbose>1)</div>
-<div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>               std::cout << <span class="stringliteral">"reset training sample from last run"</span> << std::endl;</div>
-<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>             <span class="keywordflow">while</span>(testInput.size()){</div>
-<div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>               input.push_back(testInput.back());</div>
-<div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>               testInput.pop_back();</div>
-<div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>             }</div>
-<div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>             <span class="keywordflow">while</span>(testOutput.size()){</div>
-<div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>               output.push_back(testOutput.back());</div>
-<div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>               testOutput.pop_back();</div>
-<div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>             }</div>
-<div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>             assert(testInput.size()==testOutput.size());</div>
-<div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>             <span class="keywordflow">if</span>(verbose>1){</div>
-<div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>               std::cout << <span class="stringliteral">"training size: "</span> << input.size() << std::endl;</div>
-<div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>               std::cout << <span class="stringliteral">"test size: "</span> << testInput.size() << std::endl;</div>
-<div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>             }</div>
-<div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>             assert(input.size());</div>
-<div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>             <span class="comment">//create test sample</span></div>
-<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>             <span class="keywordflow">if</span>(verbose>1)</div>
-<div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>               std::cout << <span class="stringliteral">"create test sample"</span> << std::endl;</div>
-<div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>             <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nsample=0;</div>
-<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>             <span class="keywordtype">int</span> ntest=(cv>1)? ntraining/cv : 1; <span class="comment">//n-fold cross validation or leave-one-out</span></div>
-<div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>             <span class="keywordflow">while</span>(nsample<ntest){</div>
-<div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>               testInput.push_back(input[0]);</div>
-<div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>               testOutput.push_back(output[0]);</div>
-<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>               input.erase(input.begin());</div>
-<div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>               output.erase(output.begin());</div>
-<div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>               assert(input.size());</div>
-<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>               assert(output.size());</div>
-<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>               assert(input.size()==output.size());</div>
-<div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>               ++nsample;</div>
-<div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>             }</div>
-<div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>             assert(nsample==ntest);</div>
-<div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>             assert(testInput.size()==testOutput.size());</div>
-<div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>             <span class="comment">//training with left out training set</span></div>
-<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>             <span class="keywordflow">if</span>(verbose>1)</div>
-<div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>               std::cout << std::endl << <span class="stringliteral">"Set training data"</span> << std::endl;</div>
-<div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>             <span class="keywordtype">bool</span> initWeights=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>             <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> epochs_between_reports=0;</div>
-<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>             </div>
-<div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>             train_on_data(input,output,initWeights, max_epochs,</div>
-<div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>                           epochs_between_reports, desired_error);</div>
-<div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>             <span class="comment">//cross validation with testFeatures</span></div>
-<div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>             <span class="keywordflow">if</span>(verbose>1)</div>
-<div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>               std::cout << std::endl << <span class="stringliteral">"Cross validation"</span> << std::endl;</div>
-<div class="line"><a name="l01734"></a><span class="lineno"> 1734</span> </div>
-<div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>             std::vector<fann_type> result(noutput);</div>
-<div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<testInput.size();++isample){</div>
-<div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>               result=run(testInput[isample]);</div>
-<div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>               referenceVector.push_back(testOutput[isample]);</div>
-<div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>               outputVector.push_back(result);</div>
-<div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>             }</div>
-<div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>           }</div>
-<div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>           <span class="comment">//reset from very last run</span></div>
-<div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>           <span class="keywordflow">while</span>(testInput.size()){</div>
-<div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>             input.push_back(testInput.back());</div>
-<div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>             testInput.pop_back();</div>
-<div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>           }</div>
-<div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>           <span class="keywordflow">while</span>(testOutput.size()){</div>
-<div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>             output.push_back(testOutput.back());</div>
-<div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>             testOutput.pop_back();</div>
-<div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>           }</div>
-<div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>           <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>         }</div>
-<div class="line"><a name="l01753"></a><span class="lineno"> 1753</span> </div>
-<div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>         <span class="comment">/* Method: train_on_file</span></div>
-<div class="line"><a name="l01755"></a><span class="lineno"> 1755</span> <span class="comment">           </span></div>
-<div class="line"><a name="l01756"></a><span class="lineno"> 1756</span> <span class="comment">           Does the same as <train_on_data>, but reads the training data directly from a file.</span></div>
-<div class="line"><a name="l01757"></a><span class="lineno"> 1757</span> <span class="comment">           </span></div>
-<div class="line"><a name="l01758"></a><span class="lineno"> 1758</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l01759"></a><span class="lineno"> 1759</span> <span class="comment">                <train_on_data>, <fann_train_on_file></span></div>
-<div class="line"><a name="l01760"></a><span class="lineno"> 1760</span> <span class="comment"></span></div>
-<div class="line"><a name="l01761"></a><span class="lineno"> 1761</span> <span class="comment">            This function appears in FANN >= 1.0.0.</span></div>
-<div class="line"><a name="l01762"></a><span class="lineno"> 1762</span> <span class="comment">        */</span> </div>
-<div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>         <span class="keywordtype">void</span> train_on_file(<span class="keyword">const</span> std::string &filename, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> max_epochs,</div>
-<div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>             <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> epochs_between_reports, <span class="keywordtype">float</span> desired_error)</div>
-<div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>         {</div>
-<div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>             {</div>
-<div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>                 fann_train_on_file(ann, filename.c_str(),</div>
-<div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>                     max_epochs, epochs_between_reports, desired_error);</div>
-<div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>             }</div>
-<div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>         }</div>
-<div class="line"><a name="l01772"></a><span class="lineno"> 1772</span> <span class="preprocessor">#endif </span><span class="comment">/* NOT FIXEDFANN */</span><span class="preprocessor"></span></div>
-<div class="line"><a name="l01773"></a><span class="lineno"> 1773</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>         <span class="comment">/* Method: test</span></div>
-<div class="line"><a name="l01775"></a><span class="lineno"> 1775</span> <span class="comment"></span></div>
-<div class="line"><a name="l01776"></a><span class="lineno"> 1776</span> <span class="comment">           Test with a set of inputs, and a set of desired outputs.</span></div>
-<div class="line"><a name="l01777"></a><span class="lineno"> 1777</span> <span class="comment">           This operation updates the mean square error, but does not</span></div>
-<div class="line"><a name="l01778"></a><span class="lineno"> 1778</span> <span class="comment">           change the network in any way.</span></div>
-<div class="line"><a name="l01779"></a><span class="lineno"> 1779</span> <span class="comment">           </span></div>
-<div class="line"><a name="l01780"></a><span class="lineno"> 1780</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l01781"></a><span class="lineno"> 1781</span> <span class="comment">                <test_data>, <train>, <fann_test></span></div>
-<div class="line"><a name="l01782"></a><span class="lineno"> 1782</span> <span class="comment">           </span></div>
-<div class="line"><a name="l01783"></a><span class="lineno"> 1783</span> <span class="comment">           This function appears in FANN >= 1.0.0.</span></div>
-<div class="line"><a name="l01784"></a><span class="lineno"> 1784</span> <span class="comment">        */</span> </div>
-<div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>         fann_type * test(fann_type *input, fann_type *desired_output)</div>
-<div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>         {</div>
-<div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>             fann_type * output = NULL;</div>
-<div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>             {</div>
-<div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>                 output = fann_test(ann, input, desired_output);</div>
-<div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>             }</div>
-<div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>             <span class="keywordflow">return</span> output;</div>
-<div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>         }</div>
-<div class="line"><a name="l01794"></a><span class="lineno"> 1794</span> </div>
-<div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>         <span class="comment">/* Method: test_data</span></div>
-<div class="line"><a name="l01796"></a><span class="lineno"> 1796</span> <span class="comment">          </span></div>
-<div class="line"><a name="l01797"></a><span class="lineno"> 1797</span> <span class="comment">           Test a set of training data and calculates the MSE for the training data. </span></div>
-<div class="line"><a name="l01798"></a><span class="lineno"> 1798</span> <span class="comment">           </span></div>
-<div class="line"><a name="l01799"></a><span class="lineno"> 1799</span> <span class="comment">           This function updates the MSE and the bit fail values.</span></div>
-<div class="line"><a name="l01800"></a><span class="lineno"> 1800</span> <span class="comment">           </span></div>
-<div class="line"><a name="l01801"></a><span class="lineno"> 1801</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l01802"></a><span class="lineno"> 1802</span> <span class="comment">            <test>, <get_MSE>, <get_bit_fail>, <fann_test_data></span></div>
-<div class="line"><a name="l01803"></a><span class="lineno"> 1803</span> <span class="comment"></span></div>
-<div class="line"><a name="l01804"></a><span class="lineno"> 1804</span> <span class="comment">            This function appears in FANN >= 1.2.0.</span></div>
-<div class="line"><a name="l01805"></a><span class="lineno"> 1805</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>         <span class="keywordtype">float</span> test_data(<span class="keyword">const</span> <a class="code" href="classFANN_1_1training__data.html">training_data</a> &data)</div>
-<div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>         {</div>
-<div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>             <span class="keywordtype">float</span> mse = 0.0f;</div>
-<div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>             <span class="keywordflow">if</span> ((ann != NULL) && (data.train_data != NULL))</div>
-<div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>             {</div>
-<div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>                 mse = fann_test_data(ann, data.train_data);</div>
-<div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>             }</div>
-<div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>             <span class="keywordflow">return</span> mse;</div>
-<div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>         }</div>
-<div class="line"><a name="l01815"></a><span class="lineno"> 1815</span> </div>
-<div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>       <span class="keywordtype">float</span> test_data(<span class="keyword">const</span> std::vector< <a class="code" href="classVector2d.html">Vector2d<fann_type></a> >& input, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_data)</div>
-<div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>       {</div>
-<div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>           assert(num_data);</div>
-<div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>           assert(input.size());</div>
-<div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>           <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_class=input.size();</div>
-<div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>           assert(input[0].size());</div>
-<div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>           <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_input=input[0][0].size();</div>
-<div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>           <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_output=num_class;</div>
-<div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>             <span class="keyword">struct </span>fann_train_data *data =</div>
-<div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>                 (<span class="keyword">struct </span>fann_train_data *)malloc(<span class="keyword">sizeof</span>(<span class="keyword">struct</span> fann_train_data));</div>
-<div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>             data->input = (fann_type **)calloc(num_data, <span class="keyword">sizeof</span>(fann_type *));</div>
-<div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>             data->output = (fann_type **)calloc(num_data, <span class="keyword">sizeof</span>(fann_type *));</div>
-<div class="line"><a name="l01828"></a><span class="lineno"> 1828</span> </div>
-<div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>             data->num_data = num_data;</div>
-<div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>             data->num_input = num_input;</div>
-<div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>             data->num_output = num_output;</div>
-<div class="line"><a name="l01832"></a><span class="lineno"> 1832</span> </div>
-<div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>             fann_type *data_input = (fann_type *)calloc(num_input*num_data, <span class="keyword">sizeof</span>(fann_type));</div>
-<div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>             fann_type *data_output = (fann_type *)calloc(num_output*num_data, <span class="keyword">sizeof</span>(fann_type));</div>
-<div class="line"><a name="l01835"></a><span class="lineno"> 1835</span> </div>
-<div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>             <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> isample=0;</div>
-<div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<num_class;++iclass){</div>
-<div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>               <span class="keywordflow">for</span>(<span class="keywordtype">int</span> csample=0;csample<input[iclass].size();++csample){</div>
-<div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>                 data->input[isample] = data_input;</div>
-<div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>                 data_input += num_input;</div>
-<div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>                 <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input[iclass][csample].size();++iband){</div>
-<div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>                   assert(input[iclass][csample].size()==num_input);</div>
-<div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>                   data->input[isample][iband] = input[iclass][csample][iband];</div>
-<div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>                 }</div>
-<div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>                 data->output[isample] = data_output;</div>
-<div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>                 data_output += num_output;</div>
-<div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>                 <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ic=0;ic<num_output;++ic){</div>
-<div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>                   <span class="comment">//for single neuron output:</span></div>
-<div class="line"><a name="l01849"></a><span class="lineno"> 1849</span> <span class="comment">//                   data->output[isample][ic]=2.0/(num_class-1)*(iclass-(num_class-1)/2.0);</span></div>
-<div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>                   <span class="keywordflow">if</span>(ic==iclass)</div>
-<div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>                     data->output[isample][ic] = 1;</div>
-<div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>                   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>                     data->output[isample][ic] = -1;</div>
-<div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>                 }</div>
-<div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>                 ++isample;</div>
-<div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>               }</div>
-<div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>             }</div>
-<div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>             <a class="code" href="classFANN_1_1training__data.html">FANN::training_data</a> trainingData;</div>
-<div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>             trainingData.train_data = data;</div>
-<div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>             <span class="keywordflow">return</span> test_data(trainingData);</div>
-<div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>       }</div>
-<div class="line"><a name="l01862"></a><span class="lineno"> 1862</span> </div>
-<div class="line"><a name="l01863"></a><span class="lineno"> 1863</span> </div>
-<div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>         <span class="comment">/* Method: get_MSE</span></div>
-<div class="line"><a name="l01865"></a><span class="lineno"> 1865</span> <span class="comment">           Reads the mean square error from the network.</span></div>
-<div class="line"><a name="l01866"></a><span class="lineno"> 1866</span> <span class="comment">           </span></div>
-<div class="line"><a name="l01867"></a><span class="lineno"> 1867</span> <span class="comment">           Reads the mean square error from the network. This value is calculated during </span></div>
-<div class="line"><a name="l01868"></a><span class="lineno"> 1868</span> <span class="comment">           training or testing, and can therefore sometimes be a bit off if the weights </span></div>
-<div class="line"><a name="l01869"></a><span class="lineno"> 1869</span> <span class="comment">           have been changed since the last calculation of the value.</span></div>
-<div class="line"><a name="l01870"></a><span class="lineno"> 1870</span> <span class="comment">           </span></div>
-<div class="line"><a name="l01871"></a><span class="lineno"> 1871</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l01872"></a><span class="lineno"> 1872</span> <span class="comment">            <test_data>, <fann_get_MSE></span></div>
-<div class="line"><a name="l01873"></a><span class="lineno"> 1873</span> <span class="comment"></span></div>
-<div class="line"><a name="l01874"></a><span class="lineno"> 1874</span> <span class="comment">            This function appears in FANN >= 1.1.0.</span></div>
-<div class="line"><a name="l01875"></a><span class="lineno"> 1875</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>         <span class="keywordtype">float</span> get_MSE()</div>
-<div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>         {</div>
-<div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>             <span class="keywordtype">float</span> mse = 0.0f;</div>
-<div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>             {</div>
-<div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>                 mse = fann_get_MSE(ann);</div>
-<div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>             }</div>
-<div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>             <span class="keywordflow">return</span> mse;</div>
-<div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>         }</div>
-<div class="line"><a name="l01885"></a><span class="lineno"> 1885</span> </div>
-<div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>         <span class="comment">/* Method: reset_MSE</span></div>
-<div class="line"><a name="l01887"></a><span class="lineno"> 1887</span> <span class="comment"></span></div>
-<div class="line"><a name="l01888"></a><span class="lineno"> 1888</span> <span class="comment">           Resets the mean square error from the network.</span></div>
-<div class="line"><a name="l01889"></a><span class="lineno"> 1889</span> <span class="comment">   </span></div>
-<div class="line"><a name="l01890"></a><span class="lineno"> 1890</span> <span class="comment">           This function also resets the number of bits that fail.</span></div>
-<div class="line"><a name="l01891"></a><span class="lineno"> 1891</span> <span class="comment">           </span></div>
-<div class="line"><a name="l01892"></a><span class="lineno"> 1892</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l01893"></a><span class="lineno"> 1893</span> <span class="comment">            <get_MSE>, <get_bit_fail_limit>, <fann_reset_MSE></span></div>
-<div class="line"><a name="l01894"></a><span class="lineno"> 1894</span> <span class="comment">           </span></div>
-<div class="line"><a name="l01895"></a><span class="lineno"> 1895</span> <span class="comment">            This function appears in FANN >= 1.1.0</span></div>
-<div class="line"><a name="l01896"></a><span class="lineno"> 1896</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>         <span class="keywordtype">void</span> reset_MSE()</div>
-<div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>         {</div>
-<div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>             {</div>
-<div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>                 fann_reset_MSE(ann);</div>
-<div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>             }</div>
-<div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>         }</div>
-<div class="line"><a name="l01904"></a><span class="lineno"> 1904</span> </div>
-<div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>         <span class="comment">/* Method: set_callback</span></div>
-<div class="line"><a name="l01906"></a><span class="lineno"> 1906</span> <span class="comment">           </span></div>
-<div class="line"><a name="l01907"></a><span class="lineno"> 1907</span> <span class="comment">           Sets the callback function for use during training. The user_data is passed to</span></div>
-<div class="line"><a name="l01908"></a><span class="lineno"> 1908</span> <span class="comment">           the callback. It can point to arbitrary data that the callback might require and</span></div>
-<div class="line"><a name="l01909"></a><span class="lineno"> 1909</span> <span class="comment">           can be NULL if it is not used.</span></div>
-<div class="line"><a name="l01910"></a><span class="lineno"> 1910</span> <span class="comment">            </span></div>
-<div class="line"><a name="l01911"></a><span class="lineno"> 1911</span> <span class="comment">           See <FANN::callback_type> for more information about the callback function.</span></div>
-<div class="line"><a name="l01912"></a><span class="lineno"> 1912</span> <span class="comment">           </span></div>
-<div class="line"><a name="l01913"></a><span class="lineno"> 1913</span> <span class="comment">           The default callback function simply prints out some status information.</span></div>
-<div class="line"><a name="l01914"></a><span class="lineno"> 1914</span> <span class="comment"></span></div>
-<div class="line"><a name="l01915"></a><span class="lineno"> 1915</span> <span class="comment">           This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l01916"></a><span class="lineno"> 1916</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>         <span class="keywordtype">void</span> set_callback(callback_type callback, <span class="keywordtype">void</span> *user_data)</div>
-<div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>         {</div>
-<div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>             {</div>
-<div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>                 <span class="comment">// Allocated data is also deleted in the destroy method called by the destructor</span></div>
-<div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>                 user_context *user_instance = <span class="keyword">static_cast<</span>user_context *<span class="keyword">></span>(fann_get_user_data(ann));</div>
-<div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>                 <span class="keywordflow">if</span> (user_instance != NULL)</div>
-<div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>                     <span class="keyword">delete</span> user_instance;</div>
-<div class="line"><a name="l01925"></a><span class="lineno"> 1925</span> </div>
-<div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>                 user_instance = <span class="keyword">new</span> user_context();</div>
-<div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>                 user_instance->user_callback = callback;</div>
-<div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>                 user_instance->user_data = user_data;</div>
-<div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>                 user_instance->net = <span class="keyword">this</span>;</div>
-<div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>                 fann_set_user_data(ann, user_instance);</div>
-<div class="line"><a name="l01931"></a><span class="lineno"> 1931</span> </div>
-<div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>                 <span class="keywordflow">if</span> (callback != NULL)</div>
-<div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>                     fann_set_callback(ann, &FANN::neural_net::internal_callback);</div>
-<div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>                 <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>                     fann_set_callback(ann, NULL);</div>
-<div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>             }</div>
-<div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>         }</div>
-<div class="line"><a name="l01938"></a><span class="lineno"> 1938</span> </div>
-<div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>         <span class="comment">/* Method: print_parameters</span></div>
-<div class="line"><a name="l01940"></a><span class="lineno"> 1940</span> <span class="comment"></span></div>
-<div class="line"><a name="l01941"></a><span class="lineno"> 1941</span> <span class="comment">            Prints all of the parameters and options of the neural network</span></div>
-<div class="line"><a name="l01942"></a><span class="lineno"> 1942</span> <span class="comment"></span></div>
-<div class="line"><a name="l01943"></a><span class="lineno"> 1943</span> <span class="comment">            See also:</span></div>
-<div class="line"><a name="l01944"></a><span class="lineno"> 1944</span> <span class="comment">                <fann_print_parameters></span></div>
-<div class="line"><a name="l01945"></a><span class="lineno"> 1945</span> <span class="comment"></span></div>
-<div class="line"><a name="l01946"></a><span class="lineno"> 1946</span> <span class="comment">            This function appears in FANN >= 1.2.0.</span></div>
-<div class="line"><a name="l01947"></a><span class="lineno"> 1947</span> <span class="comment">        */</span> </div>
-<div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>         <span class="keywordtype">void</span> print_parameters()</div>
-<div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>         {</div>
-<div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>             {</div>
-<div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>                 fann_print_parameters(ann);</div>
-<div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>             }</div>
-<div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>         }</div>
-<div class="line"><a name="l01955"></a><span class="lineno"> 1955</span> </div>
-<div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>         <span class="comment">/* Method: get_training_algorithm</span></div>
-<div class="line"><a name="l01957"></a><span class="lineno"> 1957</span> <span class="comment"></span></div>
-<div class="line"><a name="l01958"></a><span class="lineno"> 1958</span> <span class="comment">           Return the training algorithm as described by <FANN::training_algorithm_enum>.</span></div>
-<div class="line"><a name="l01959"></a><span class="lineno"> 1959</span> <span class="comment">           This training algorithm is used by <train_on_data> and associated functions.</span></div>
-<div class="line"><a name="l01960"></a><span class="lineno"> 1960</span> <span class="comment">           </span></div>
-<div class="line"><a name="l01961"></a><span class="lineno"> 1961</span> <span class="comment">           Note that this algorithm is also used during <cascadetrain_on_data>, although only</span></div>
-<div class="line"><a name="l01962"></a><span class="lineno"> 1962</span> <span class="comment">           FANN::TRAIN_RPROP and FANN::TRAIN_QUICKPROP is allowed during cascade training.</span></div>
-<div class="line"><a name="l01963"></a><span class="lineno"> 1963</span> <span class="comment">           </span></div>
-<div class="line"><a name="l01964"></a><span class="lineno"> 1964</span> <span class="comment">           The default training algorithm is FANN::TRAIN_RPROP.</span></div>
-<div class="line"><a name="l01965"></a><span class="lineno"> 1965</span> <span class="comment">           </span></div>
-<div class="line"><a name="l01966"></a><span class="lineno"> 1966</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l01967"></a><span class="lineno"> 1967</span> <span class="comment">            <set_training_algorithm>, <FANN::training_algorithm_enum>,</span></div>
-<div class="line"><a name="l01968"></a><span class="lineno"> 1968</span> <span class="comment">            <fann_get_training_algorithm></span></div>
-<div class="line"><a name="l01969"></a><span class="lineno"> 1969</span> <span class="comment"></span></div>
-<div class="line"><a name="l01970"></a><span class="lineno"> 1970</span> <span class="comment">           This function appears in FANN >= 1.0.0.      </span></div>
-<div class="line"><a name="l01971"></a><span class="lineno"> 1971</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>         training_algorithm_enum get_training_algorithm()</div>
-<div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>         {</div>
-<div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>             fann_train_enum training_algorithm = FANN_TRAIN_INCREMENTAL;</div>
-<div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>             {</div>
-<div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>                 training_algorithm = fann_get_training_algorithm(ann);</div>
-<div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>             }</div>
-<div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>             <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>training_algorithm_enum<span class="keyword">></span>(training_algorithm);</div>
-<div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>         }</div>
-<div class="line"><a name="l01981"></a><span class="lineno"> 1981</span> </div>
-<div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>         <span class="comment">/* Method: set_training_algorithm</span></div>
-<div class="line"><a name="l01983"></a><span class="lineno"> 1983</span> <span class="comment"></span></div>
-<div class="line"><a name="l01984"></a><span class="lineno"> 1984</span> <span class="comment">           Set the training algorithm.</span></div>
-<div class="line"><a name="l01985"></a><span class="lineno"> 1985</span> <span class="comment">           </span></div>
-<div class="line"><a name="l01986"></a><span class="lineno"> 1986</span> <span class="comment">           More info available in <get_training_algorithm></span></div>
-<div class="line"><a name="l01987"></a><span class="lineno"> 1987</span> <span class="comment"></span></div>
-<div class="line"><a name="l01988"></a><span class="lineno"> 1988</span> <span class="comment">           This function appears in FANN >= 1.0.0.      </span></div>
-<div class="line"><a name="l01989"></a><span class="lineno"> 1989</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>         <span class="keywordtype">void</span> set_training_algorithm(training_algorithm_enum training_algorithm)</div>
-<div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>         {</div>
-<div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>             {</div>
-<div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>                 fann_set_training_algorithm(ann,</div>
-<div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>                     static_cast<fann_train_enum>(training_algorithm));</div>
-<div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>             }</div>
-<div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>         }</div>
-<div class="line"><a name="l01998"></a><span class="lineno"> 1998</span> </div>
-<div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>         <span class="comment">/* Method: get_learning_rate</span></div>
-<div class="line"><a name="l02000"></a><span class="lineno"> 2000</span> <span class="comment"></span></div>
-<div class="line"><a name="l02001"></a><span class="lineno"> 2001</span> <span class="comment">           Return the learning rate.</span></div>
-<div class="line"><a name="l02002"></a><span class="lineno"> 2002</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02003"></a><span class="lineno"> 2003</span> <span class="comment">           The learning rate is used to determine how aggressive training should be for some of the</span></div>
-<div class="line"><a name="l02004"></a><span class="lineno"> 2004</span> <span class="comment">           training algorithms (FANN::TRAIN_INCREMENTAL, FANN::TRAIN_BATCH, FANN::TRAIN_QUICKPROP).</span></div>
-<div class="line"><a name="l02005"></a><span class="lineno"> 2005</span> <span class="comment">           Do however note that it is not used in FANN::TRAIN_RPROP.</span></div>
-<div class="line"><a name="l02006"></a><span class="lineno"> 2006</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02007"></a><span class="lineno"> 2007</span> <span class="comment">           The default learning rate is 0.7.</span></div>
-<div class="line"><a name="l02008"></a><span class="lineno"> 2008</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02009"></a><span class="lineno"> 2009</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l02010"></a><span class="lineno"> 2010</span> <span class="comment">            <set_learning_rate>, <set_training_algorithm>,</span></div>
-<div class="line"><a name="l02011"></a><span class="lineno"> 2011</span> <span class="comment">            <fann_get_learning_rate></span></div>
-<div class="line"><a name="l02012"></a><span class="lineno"> 2012</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02013"></a><span class="lineno"> 2013</span> <span class="comment">           This function appears in FANN >= 1.0.0.      </span></div>
-<div class="line"><a name="l02014"></a><span class="lineno"> 2014</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>         <span class="keywordtype">float</span> get_learning_rate()</div>
-<div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>         {</div>
-<div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>             <span class="keywordtype">float</span> learning_rate = 0.0f;</div>
-<div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>             {</div>
-<div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>                 learning_rate = fann_get_learning_rate(ann);</div>
-<div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>             }</div>
-<div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>             <span class="keywordflow">return</span> learning_rate;</div>
-<div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>         }</div>
-<div class="line"><a name="l02024"></a><span class="lineno"> 2024</span> </div>
-<div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>         <span class="comment">/* Method: set_learning_rate</span></div>
-<div class="line"><a name="l02026"></a><span class="lineno"> 2026</span> <span class="comment"></span></div>
-<div class="line"><a name="l02027"></a><span class="lineno"> 2027</span> <span class="comment">           Set the learning rate.</span></div>
-<div class="line"><a name="l02028"></a><span class="lineno"> 2028</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02029"></a><span class="lineno"> 2029</span> <span class="comment">           More info available in <get_learning_rate></span></div>
-<div class="line"><a name="l02030"></a><span class="lineno"> 2030</span> <span class="comment"></span></div>
-<div class="line"><a name="l02031"></a><span class="lineno"> 2031</span> <span class="comment">           This function appears in FANN >= 1.0.0.      </span></div>
-<div class="line"><a name="l02032"></a><span class="lineno"> 2032</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>         <span class="keywordtype">void</span> set_learning_rate(<span class="keywordtype">float</span> learning_rate)</div>
-<div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>         {</div>
-<div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>             {</div>
-<div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>                 fann_set_learning_rate(ann, learning_rate);</div>
-<div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>             }</div>
-<div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>         }</div>
-<div class="line"><a name="l02040"></a><span class="lineno"> 2040</span> </div>
-<div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>         <span class="comment">/*************************************************************************************************************/</span></div>
-<div class="line"><a name="l02042"></a><span class="lineno"> 2042</span> </div>
-<div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>         <span class="comment">/* Method: get_activation_function</span></div>
-<div class="line"><a name="l02044"></a><span class="lineno"> 2044</span> <span class="comment"></span></div>
-<div class="line"><a name="l02045"></a><span class="lineno"> 2045</span> <span class="comment">           Get the activation function for neuron number *neuron* in layer number *layer*, </span></div>
-<div class="line"><a name="l02046"></a><span class="lineno"> 2046</span> <span class="comment">           counting the input layer as layer 0. </span></div>
-<div class="line"><a name="l02047"></a><span class="lineno"> 2047</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02048"></a><span class="lineno"> 2048</span> <span class="comment">           It is not possible to get activation functions for the neurons in the input layer.</span></div>
-<div class="line"><a name="l02049"></a><span class="lineno"> 2049</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02050"></a><span class="lineno"> 2050</span> <span class="comment">           Information about the individual activation functions is available at <FANN::activation_function_enum>.</span></div>
-<div class="line"><a name="l02051"></a><span class="lineno"> 2051</span> <span class="comment"></span></div>
-<div class="line"><a name="l02052"></a><span class="lineno"> 2052</span> <span class="comment">           Returns:</span></div>
-<div class="line"><a name="l02053"></a><span class="lineno"> 2053</span> <span class="comment">            The activation function for the neuron or -1 if the neuron is not defined in the neural network.</span></div>
-<div class="line"><a name="l02054"></a><span class="lineno"> 2054</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02055"></a><span class="lineno"> 2055</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l02056"></a><span class="lineno"> 2056</span> <span class="comment">            <set_activation_function_layer>, <set_activation_function_hidden>,</span></div>
-<div class="line"><a name="l02057"></a><span class="lineno"> 2057</span> <span class="comment">            <set_activation_function_output>, <set_activation_steepness>,</span></div>
-<div class="line"><a name="l02058"></a><span class="lineno"> 2058</span> <span class="comment">            <set_activation_function>, <fann_get_activation_function></span></div>
-<div class="line"><a name="l02059"></a><span class="lineno"> 2059</span> <span class="comment"></span></div>
-<div class="line"><a name="l02060"></a><span class="lineno"> 2060</span> <span class="comment">           This function appears in FANN >= 2.1.0</span></div>
-<div class="line"><a name="l02061"></a><span class="lineno"> 2061</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>         activation_function_enum get_activation_function(<span class="keywordtype">int</span> layer, <span class="keywordtype">int</span> neuron)</div>
-<div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>         {</div>
-<div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>             <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> activation_function = 0;</div>
-<div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>             {</div>
-<div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>                 activation_function = fann_get_activation_function(ann, layer, neuron);</div>
-<div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>             }</div>
-<div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>             <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>activation_function_enum<span class="keyword">></span>(activation_function);</div>
-<div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>         }</div>
-<div class="line"><a name="l02071"></a><span class="lineno"> 2071</span> </div>
-<div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>         <span class="comment">/* Method: set_activation_function</span></div>
-<div class="line"><a name="l02073"></a><span class="lineno"> 2073</span> <span class="comment"></span></div>
-<div class="line"><a name="l02074"></a><span class="lineno"> 2074</span> <span class="comment">           Set the activation function for neuron number *neuron* in layer number *layer*, </span></div>
-<div class="line"><a name="l02075"></a><span class="lineno"> 2075</span> <span class="comment">           counting the input layer as layer 0. </span></div>
-<div class="line"><a name="l02076"></a><span class="lineno"> 2076</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02077"></a><span class="lineno"> 2077</span> <span class="comment">           It is not possible to set activation functions for the neurons in the input layer.</span></div>
-<div class="line"><a name="l02078"></a><span class="lineno"> 2078</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02079"></a><span class="lineno"> 2079</span> <span class="comment">           When choosing an activation function it is important to note that the activation </span></div>
-<div class="line"><a name="l02080"></a><span class="lineno"> 2080</span> <span class="comment">           functions have different range. FANN::SIGMOID is e.g. in the 0 - 1 range while </span></div>
-<div class="line"><a name="l02081"></a><span class="lineno"> 2081</span> <span class="comment">           FANN::SIGMOID_SYMMETRIC is in the -1 - 1 range and FANN::LINEAR is unbound.</span></div>
-<div class="line"><a name="l02082"></a><span class="lineno"> 2082</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02083"></a><span class="lineno"> 2083</span> <span class="comment">           Information about the individual activation functions is available at <FANN::activation_function_enum>.</span></div>
-<div class="line"><a name="l02084"></a><span class="lineno"> 2084</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02085"></a><span class="lineno"> 2085</span> <span class="comment">           The default activation function is FANN::SIGMOID_STEPWISE.</span></div>
-<div class="line"><a name="l02086"></a><span class="lineno"> 2086</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02087"></a><span class="lineno"> 2087</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l02088"></a><span class="lineno"> 2088</span> <span class="comment">            <set_activation_function_layer>, <set_activation_function_hidden>,</span></div>
-<div class="line"><a name="l02089"></a><span class="lineno"> 2089</span> <span class="comment">            <set_activation_function_output>, <set_activation_steepness>,</span></div>
-<div class="line"><a name="l02090"></a><span class="lineno"> 2090</span> <span class="comment">            <get_activation_function>, <fann_set_activation_function></span></div>
-<div class="line"><a name="l02091"></a><span class="lineno"> 2091</span> <span class="comment"></span></div>
-<div class="line"><a name="l02092"></a><span class="lineno"> 2092</span> <span class="comment">           This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l02093"></a><span class="lineno"> 2093</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>         <span class="keywordtype">void</span> set_activation_function(activation_function_enum activation_function, <span class="keywordtype">int</span> layer, <span class="keywordtype">int</span> neuron)</div>
-<div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>         {</div>
-<div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>             {</div>
-<div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>                 fann_set_activation_function(ann,</div>
-<div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>                     static_cast<fann_activationfunc_enum>(activation_function), layer, neuron);</div>
-<div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>             }</div>
-<div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>         }</div>
-<div class="line"><a name="l02102"></a><span class="lineno"> 2102</span> </div>
-<div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>         <span class="comment">/* Method: set_activation_function_layer</span></div>
-<div class="line"><a name="l02104"></a><span class="lineno"> 2104</span> <span class="comment"></span></div>
-<div class="line"><a name="l02105"></a><span class="lineno"> 2105</span> <span class="comment">           Set the activation function for all the neurons in the layer number *layer*, </span></div>
-<div class="line"><a name="l02106"></a><span class="lineno"> 2106</span> <span class="comment">           counting the input layer as layer 0. </span></div>
-<div class="line"><a name="l02107"></a><span class="lineno"> 2107</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02108"></a><span class="lineno"> 2108</span> <span class="comment">           It is not possible to set activation functions for the neurons in the input layer.</span></div>
-<div class="line"><a name="l02109"></a><span class="lineno"> 2109</span> <span class="comment"></span></div>
-<div class="line"><a name="l02110"></a><span class="lineno"> 2110</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l02111"></a><span class="lineno"> 2111</span> <span class="comment">            <set_activation_function>, <set_activation_function_hidden>,</span></div>
-<div class="line"><a name="l02112"></a><span class="lineno"> 2112</span> <span class="comment">            <set_activation_function_output>, <set_activation_steepness_layer>,</span></div>
-<div class="line"><a name="l02113"></a><span class="lineno"> 2113</span> <span class="comment">            <fann_set_activation_function_layer></span></div>
-<div class="line"><a name="l02114"></a><span class="lineno"> 2114</span> <span class="comment"></span></div>
-<div class="line"><a name="l02115"></a><span class="lineno"> 2115</span> <span class="comment">           This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l02116"></a><span class="lineno"> 2116</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>         <span class="keywordtype">void</span> set_activation_function_layer(activation_function_enum activation_function, <span class="keywordtype">int</span> layer)</div>
-<div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>         {</div>
-<div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>             {</div>
-<div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>                 fann_set_activation_function_layer(ann,</div>
-<div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>                     static_cast<fann_activationfunc_enum>(activation_function), layer);</div>
-<div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>             }</div>
-<div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>         }</div>
-<div class="line"><a name="l02125"></a><span class="lineno"> 2125</span> </div>
-<div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>         <span class="comment">/* Method: set_activation_function_hidden</span></div>
-<div class="line"><a name="l02127"></a><span class="lineno"> 2127</span> <span class="comment"></span></div>
-<div class="line"><a name="l02128"></a><span class="lineno"> 2128</span> <span class="comment">           Set the activation function for all of the hidden layers.</span></div>
-<div class="line"><a name="l02129"></a><span class="lineno"> 2129</span> <span class="comment"></span></div>
-<div class="line"><a name="l02130"></a><span class="lineno"> 2130</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l02131"></a><span class="lineno"> 2131</span> <span class="comment">            <set_activation_function>, <set_activation_function_layer>,</span></div>
-<div class="line"><a name="l02132"></a><span class="lineno"> 2132</span> <span class="comment">            <set_activation_function_output>, <set_activation_steepness_hidden>,</span></div>
-<div class="line"><a name="l02133"></a><span class="lineno"> 2133</span> <span class="comment">            <fann_set_activation_function_hidden></span></div>
-<div class="line"><a name="l02134"></a><span class="lineno"> 2134</span> <span class="comment"></span></div>
-<div class="line"><a name="l02135"></a><span class="lineno"> 2135</span> <span class="comment">           This function appears in FANN >= 1.0.0.</span></div>
-<div class="line"><a name="l02136"></a><span class="lineno"> 2136</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>         <span class="keywordtype">void</span> set_activation_function_hidden(activation_function_enum activation_function)</div>
-<div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>         {</div>
-<div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>             {</div>
-<div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>                 fann_set_activation_function_hidden(ann,</div>
-<div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>                     static_cast<fann_activationfunc_enum>(activation_function));</div>
-<div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>             }</div>
-<div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>         }</div>
-<div class="line"><a name="l02145"></a><span class="lineno"> 2145</span> </div>
-<div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>         <span class="comment">/* Method: set_activation_function_output</span></div>
-<div class="line"><a name="l02147"></a><span class="lineno"> 2147</span> <span class="comment"></span></div>
-<div class="line"><a name="l02148"></a><span class="lineno"> 2148</span> <span class="comment">           Set the activation function for the output layer.</span></div>
-<div class="line"><a name="l02149"></a><span class="lineno"> 2149</span> <span class="comment"></span></div>
-<div class="line"><a name="l02150"></a><span class="lineno"> 2150</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l02151"></a><span class="lineno"> 2151</span> <span class="comment">            <set_activation_function>, <set_activation_function_layer>,</span></div>
-<div class="line"><a name="l02152"></a><span class="lineno"> 2152</span> <span class="comment">            <set_activation_function_hidden>, <set_activation_steepness_output>,</span></div>
-<div class="line"><a name="l02153"></a><span class="lineno"> 2153</span> <span class="comment">            <fann_set_activation_function_output></span></div>
-<div class="line"><a name="l02154"></a><span class="lineno"> 2154</span> <span class="comment"></span></div>
-<div class="line"><a name="l02155"></a><span class="lineno"> 2155</span> <span class="comment">           This function appears in FANN >= 1.0.0.</span></div>
-<div class="line"><a name="l02156"></a><span class="lineno"> 2156</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>         <span class="keywordtype">void</span> set_activation_function_output(activation_function_enum activation_function)</div>
-<div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>         {</div>
-<div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>             {</div>
-<div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>                 fann_set_activation_function_output(ann,</div>
-<div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>                     static_cast<fann_activationfunc_enum>(activation_function));</div>
-<div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>             }</div>
-<div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>         }</div>
-<div class="line"><a name="l02165"></a><span class="lineno"> 2165</span> </div>
-<div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>         <span class="comment">/* Method: get_activation_steepness</span></div>
-<div class="line"><a name="l02167"></a><span class="lineno"> 2167</span> <span class="comment"></span></div>
-<div class="line"><a name="l02168"></a><span class="lineno"> 2168</span> <span class="comment">           Get the activation steepness for neuron number *neuron* in layer number *layer*, </span></div>
-<div class="line"><a name="l02169"></a><span class="lineno"> 2169</span> <span class="comment">           counting the input layer as layer 0. </span></div>
-<div class="line"><a name="l02170"></a><span class="lineno"> 2170</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02171"></a><span class="lineno"> 2171</span> <span class="comment">           It is not possible to get activation steepness for the neurons in the input layer.</span></div>
-<div class="line"><a name="l02172"></a><span class="lineno"> 2172</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02173"></a><span class="lineno"> 2173</span> <span class="comment">           The steepness of an activation function says something about how fast the activation function </span></div>
-<div class="line"><a name="l02174"></a><span class="lineno"> 2174</span> <span class="comment">           goes from the minimum to the maximum. A high value for the activation function will also</span></div>
-<div class="line"><a name="l02175"></a><span class="lineno"> 2175</span> <span class="comment">           give a more agressive training.</span></div>
-<div class="line"><a name="l02176"></a><span class="lineno"> 2176</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02177"></a><span class="lineno"> 2177</span> <span class="comment">           When training neural networks where the output values should be at the extremes (usually 0 and 1, </span></div>
-<div class="line"><a name="l02178"></a><span class="lineno"> 2178</span> <span class="comment">           depending on the activation function), a steep activation function can be used (e.g. 1.0).</span></div>
-<div class="line"><a name="l02179"></a><span class="lineno"> 2179</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02180"></a><span class="lineno"> 2180</span> <span class="comment">           The default activation steepness is 0.5.</span></div>
-<div class="line"><a name="l02181"></a><span class="lineno"> 2181</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02182"></a><span class="lineno"> 2182</span> <span class="comment">           Returns:</span></div>
-<div class="line"><a name="l02183"></a><span class="lineno"> 2183</span> <span class="comment">            The activation steepness for the neuron or -1 if the neuron is not defined in the neural network.</span></div>
-<div class="line"><a name="l02184"></a><span class="lineno"> 2184</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02185"></a><span class="lineno"> 2185</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l02186"></a><span class="lineno"> 2186</span> <span class="comment">            <set_activation_steepness_layer>, <set_activation_steepness_hidden>,</span></div>
-<div class="line"><a name="l02187"></a><span class="lineno"> 2187</span> <span class="comment">            <set_activation_steepness_output>, <set_activation_function>,</span></div>
-<div class="line"><a name="l02188"></a><span class="lineno"> 2188</span> <span class="comment">            <set_activation_steepness>, <fann_get_activation_steepness></span></div>
-<div class="line"><a name="l02189"></a><span class="lineno"> 2189</span> <span class="comment"></span></div>
-<div class="line"><a name="l02190"></a><span class="lineno"> 2190</span> <span class="comment">           This function appears in FANN >= 2.1.0</span></div>
-<div class="line"><a name="l02191"></a><span class="lineno"> 2191</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>         fann_type get_activation_steepness(<span class="keywordtype">int</span> layer, <span class="keywordtype">int</span> neuron)</div>
-<div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>         {</div>
-<div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>             fann_type activation_steepness = 0;</div>
-<div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>             {</div>
-<div class="line"><a name="l02197"></a><span class="lineno"> 2197</span>                 activation_steepness = fann_get_activation_steepness(ann, layer, neuron);</div>
-<div class="line"><a name="l02198"></a><span class="lineno"> 2198</span>             }</div>
-<div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>             <span class="keywordflow">return</span> activation_steepness;</div>
-<div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>         }</div>
-<div class="line"><a name="l02201"></a><span class="lineno"> 2201</span> </div>
-<div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>         <span class="comment">/* Method: set_activation_steepness</span></div>
-<div class="line"><a name="l02203"></a><span class="lineno"> 2203</span> <span class="comment"></span></div>
-<div class="line"><a name="l02204"></a><span class="lineno"> 2204</span> <span class="comment">           Set the activation steepness for neuron number *neuron* in layer number *layer*, </span></div>
-<div class="line"><a name="l02205"></a><span class="lineno"> 2205</span> <span class="comment">           counting the input layer as layer 0. </span></div>
-<div class="line"><a name="l02206"></a><span class="lineno"> 2206</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02207"></a><span class="lineno"> 2207</span> <span class="comment">           It is not possible to set activation steepness for the neurons in the input layer.</span></div>
-<div class="line"><a name="l02208"></a><span class="lineno"> 2208</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02209"></a><span class="lineno"> 2209</span> <span class="comment">           The steepness of an activation function says something about how fast the activation function </span></div>
-<div class="line"><a name="l02210"></a><span class="lineno"> 2210</span> <span class="comment">           goes from the minimum to the maximum. A high value for the activation function will also</span></div>
-<div class="line"><a name="l02211"></a><span class="lineno"> 2211</span> <span class="comment">           give a more agressive training.</span></div>
-<div class="line"><a name="l02212"></a><span class="lineno"> 2212</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02213"></a><span class="lineno"> 2213</span> <span class="comment">           When training neural networks where the output values should be at the extremes (usually 0 and 1, </span></div>
-<div class="line"><a name="l02214"></a><span class="lineno"> 2214</span> <span class="comment">           depending on the activation function), a steep activation function can be used (e.g. 1.0).</span></div>
-<div class="line"><a name="l02215"></a><span class="lineno"> 2215</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02216"></a><span class="lineno"> 2216</span> <span class="comment">           The default activation steepness is 0.5.</span></div>
-<div class="line"><a name="l02217"></a><span class="lineno"> 2217</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02218"></a><span class="lineno"> 2218</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l02219"></a><span class="lineno"> 2219</span> <span class="comment">            <set_activation_steepness_layer>, <set_activation_steepness_hidden>,</span></div>
-<div class="line"><a name="l02220"></a><span class="lineno"> 2220</span> <span class="comment">            <set_activation_steepness_output>, <set_activation_function>,</span></div>
-<div class="line"><a name="l02221"></a><span class="lineno"> 2221</span> <span class="comment">            <get_activation_steepness>, <fann_set_activation_steepness></span></div>
-<div class="line"><a name="l02222"></a><span class="lineno"> 2222</span> <span class="comment"></span></div>
-<div class="line"><a name="l02223"></a><span class="lineno"> 2223</span> <span class="comment">           This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l02224"></a><span class="lineno"> 2224</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l02225"></a><span class="lineno"> 2225</span>         <span class="keywordtype">void</span> set_activation_steepness(fann_type steepness, <span class="keywordtype">int</span> layer, <span class="keywordtype">int</span> neuron)</div>
-<div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>         {</div>
-<div class="line"><a name="l02227"></a><span class="lineno"> 2227</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02228"></a><span class="lineno"> 2228</span>             {</div>
-<div class="line"><a name="l02229"></a><span class="lineno"> 2229</span>                 fann_set_activation_steepness(ann, steepness, layer, neuron);</div>
-<div class="line"><a name="l02230"></a><span class="lineno"> 2230</span>             }</div>
-<div class="line"><a name="l02231"></a><span class="lineno"> 2231</span>         }</div>
-<div class="line"><a name="l02232"></a><span class="lineno"> 2232</span> </div>
-<div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>         <span class="comment">/* Method: set_activation_steepness_layer</span></div>
-<div class="line"><a name="l02234"></a><span class="lineno"> 2234</span> <span class="comment"></span></div>
-<div class="line"><a name="l02235"></a><span class="lineno"> 2235</span> <span class="comment">           Set the activation steepness all of the neurons in layer number *layer*, </span></div>
-<div class="line"><a name="l02236"></a><span class="lineno"> 2236</span> <span class="comment">           counting the input layer as layer 0. </span></div>
-<div class="line"><a name="l02237"></a><span class="lineno"> 2237</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02238"></a><span class="lineno"> 2238</span> <span class="comment">           It is not possible to set activation steepness for the neurons in the input layer.</span></div>
-<div class="line"><a name="l02239"></a><span class="lineno"> 2239</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02240"></a><span class="lineno"> 2240</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l02241"></a><span class="lineno"> 2241</span> <span class="comment">            <set_activation_steepness>, <set_activation_steepness_hidden>,</span></div>
-<div class="line"><a name="l02242"></a><span class="lineno"> 2242</span> <span class="comment">            <set_activation_steepness_output>, <set_activation_function_layer>,</span></div>
-<div class="line"><a name="l02243"></a><span class="lineno"> 2243</span> <span class="comment">            <fann_set_activation_steepness_layer></span></div>
-<div class="line"><a name="l02244"></a><span class="lineno"> 2244</span> <span class="comment"></span></div>
-<div class="line"><a name="l02245"></a><span class="lineno"> 2245</span> <span class="comment">           This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l02246"></a><span class="lineno"> 2246</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>         <span class="keywordtype">void</span> set_activation_steepness_layer(fann_type steepness, <span class="keywordtype">int</span> layer)</div>
-<div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>         {</div>
-<div class="line"><a name="l02249"></a><span class="lineno"> 2249</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02250"></a><span class="lineno"> 2250</span>             {</div>
-<div class="line"><a name="l02251"></a><span class="lineno"> 2251</span>                 fann_set_activation_steepness_layer(ann, steepness, layer);</div>
-<div class="line"><a name="l02252"></a><span class="lineno"> 2252</span>             }</div>
-<div class="line"><a name="l02253"></a><span class="lineno"> 2253</span>         }</div>
-<div class="line"><a name="l02254"></a><span class="lineno"> 2254</span> </div>
-<div class="line"><a name="l02255"></a><span class="lineno"> 2255</span>         <span class="comment">/* Method: set_activation_steepness_hidden</span></div>
-<div class="line"><a name="l02256"></a><span class="lineno"> 2256</span> <span class="comment"></span></div>
-<div class="line"><a name="l02257"></a><span class="lineno"> 2257</span> <span class="comment">           Set the steepness of the activation steepness in all of the hidden layers.</span></div>
-<div class="line"><a name="l02258"></a><span class="lineno"> 2258</span> <span class="comment"></span></div>
-<div class="line"><a name="l02259"></a><span class="lineno"> 2259</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l02260"></a><span class="lineno"> 2260</span> <span class="comment">            <set_activation_steepness>, <set_activation_steepness_layer>,</span></div>
-<div class="line"><a name="l02261"></a><span class="lineno"> 2261</span> <span class="comment">            <set_activation_steepness_output>, <set_activation_function_hidden>,</span></div>
-<div class="line"><a name="l02262"></a><span class="lineno"> 2262</span> <span class="comment">            <fann_set_activation_steepness_hidden></span></div>
-<div class="line"><a name="l02263"></a><span class="lineno"> 2263</span> <span class="comment"></span></div>
-<div class="line"><a name="l02264"></a><span class="lineno"> 2264</span> <span class="comment">           This function appears in FANN >= 1.2.0.</span></div>
-<div class="line"><a name="l02265"></a><span class="lineno"> 2265</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l02266"></a><span class="lineno"> 2266</span>         <span class="keywordtype">void</span> set_activation_steepness_hidden(fann_type steepness)</div>
-<div class="line"><a name="l02267"></a><span class="lineno"> 2267</span>         {</div>
-<div class="line"><a name="l02268"></a><span class="lineno"> 2268</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02269"></a><span class="lineno"> 2269</span>             {</div>
-<div class="line"><a name="l02270"></a><span class="lineno"> 2270</span>                 fann_set_activation_steepness_hidden(ann, steepness);</div>
-<div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>             }</div>
-<div class="line"><a name="l02272"></a><span class="lineno"> 2272</span>         }</div>
-<div class="line"><a name="l02273"></a><span class="lineno"> 2273</span> </div>
-<div class="line"><a name="l02274"></a><span class="lineno"> 2274</span>         <span class="comment">/* Method: set_activation_steepness_output</span></div>
-<div class="line"><a name="l02275"></a><span class="lineno"> 2275</span> <span class="comment"></span></div>
-<div class="line"><a name="l02276"></a><span class="lineno"> 2276</span> <span class="comment">           Set the steepness of the activation steepness in the output layer.</span></div>
-<div class="line"><a name="l02277"></a><span class="lineno"> 2277</span> <span class="comment"></span></div>
-<div class="line"><a name="l02278"></a><span class="lineno"> 2278</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l02279"></a><span class="lineno"> 2279</span> <span class="comment">            <set_activation_steepness>, <set_activation_steepness_layer>,</span></div>
-<div class="line"><a name="l02280"></a><span class="lineno"> 2280</span> <span class="comment">            <set_activation_steepness_hidden>, <set_activation_function_output>,</span></div>
-<div class="line"><a name="l02281"></a><span class="lineno"> 2281</span> <span class="comment">            <fann_set_activation_steepness_output></span></div>
-<div class="line"><a name="l02282"></a><span class="lineno"> 2282</span> <span class="comment"></span></div>
-<div class="line"><a name="l02283"></a><span class="lineno"> 2283</span> <span class="comment">           This function appears in FANN >= 1.2.0.</span></div>
-<div class="line"><a name="l02284"></a><span class="lineno"> 2284</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>         <span class="keywordtype">void</span> set_activation_steepness_output(fann_type steepness)</div>
-<div class="line"><a name="l02286"></a><span class="lineno"> 2286</span>         {</div>
-<div class="line"><a name="l02287"></a><span class="lineno"> 2287</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02288"></a><span class="lineno"> 2288</span>             {</div>
-<div class="line"><a name="l02289"></a><span class="lineno"> 2289</span>                 fann_set_activation_steepness_output(ann, steepness);</div>
-<div class="line"><a name="l02290"></a><span class="lineno"> 2290</span>             }</div>
-<div class="line"><a name="l02291"></a><span class="lineno"> 2291</span>         }</div>
-<div class="line"><a name="l02292"></a><span class="lineno"> 2292</span> </div>
-<div class="line"><a name="l02293"></a><span class="lineno"> 2293</span>         <span class="comment">/*************************************************************************************************************/</span></div>
-<div class="line"><a name="l02294"></a><span class="lineno"> 2294</span> </div>
-<div class="line"><a name="l02295"></a><span class="lineno"> 2295</span>         <span class="comment">/* Method: get_train_error_function</span></div>
-<div class="line"><a name="l02296"></a><span class="lineno"> 2296</span> <span class="comment"></span></div>
-<div class="line"><a name="l02297"></a><span class="lineno"> 2297</span> <span class="comment">           Returns the error function used during training.</span></div>
-<div class="line"><a name="l02298"></a><span class="lineno"> 2298</span> <span class="comment"></span></div>
-<div class="line"><a name="l02299"></a><span class="lineno"> 2299</span> <span class="comment">           The error functions is described further in <FANN::error_function_enum></span></div>
-<div class="line"><a name="l02300"></a><span class="lineno"> 2300</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02301"></a><span class="lineno"> 2301</span> <span class="comment">           The default error function is FANN::ERRORFUNC_TANH</span></div>
-<div class="line"><a name="l02302"></a><span class="lineno"> 2302</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02303"></a><span class="lineno"> 2303</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l02304"></a><span class="lineno"> 2304</span> <span class="comment">            <set_train_error_function>, <fann_get_train_error_function></span></div>
-<div class="line"><a name="l02305"></a><span class="lineno"> 2305</span> <span class="comment">              </span></div>
-<div class="line"><a name="l02306"></a><span class="lineno"> 2306</span> <span class="comment">           This function appears in FANN >= 1.2.0.</span></div>
-<div class="line"><a name="l02307"></a><span class="lineno"> 2307</span> <span class="comment">          */</span> </div>
-<div class="line"><a name="l02308"></a><span class="lineno"> 2308</span>         error_function_enum get_train_error_function()</div>
-<div class="line"><a name="l02309"></a><span class="lineno"> 2309</span>         {</div>
-<div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>             fann_errorfunc_enum train_error_function = FANN_ERRORFUNC_LINEAR;</div>
-<div class="line"><a name="l02311"></a><span class="lineno"> 2311</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02312"></a><span class="lineno"> 2312</span>             {</div>
-<div class="line"><a name="l02313"></a><span class="lineno"> 2313</span>                 train_error_function = fann_get_train_error_function(ann);</div>
-<div class="line"><a name="l02314"></a><span class="lineno"> 2314</span>             }</div>
-<div class="line"><a name="l02315"></a><span class="lineno"> 2315</span>             <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>error_function_enum<span class="keyword">></span>(train_error_function);</div>
-<div class="line"><a name="l02316"></a><span class="lineno"> 2316</span>         }</div>
-<div class="line"><a name="l02317"></a><span class="lineno"> 2317</span> </div>
-<div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>         <span class="comment">/* Method: set_train_error_function</span></div>
-<div class="line"><a name="l02319"></a><span class="lineno"> 2319</span> <span class="comment"></span></div>
-<div class="line"><a name="l02320"></a><span class="lineno"> 2320</span> <span class="comment">           Set the error function used during training.</span></div>
-<div class="line"><a name="l02321"></a><span class="lineno"> 2321</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02322"></a><span class="lineno"> 2322</span> <span class="comment">           The error functions is described further in <FANN::error_function_enum></span></div>
-<div class="line"><a name="l02323"></a><span class="lineno"> 2323</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02324"></a><span class="lineno"> 2324</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l02325"></a><span class="lineno"> 2325</span> <span class="comment">            <get_train_error_function>, <fann_set_train_error_function></span></div>
-<div class="line"><a name="l02326"></a><span class="lineno"> 2326</span> <span class="comment">              </span></div>
-<div class="line"><a name="l02327"></a><span class="lineno"> 2327</span> <span class="comment">           This function appears in FANN >= 1.2.0.</span></div>
-<div class="line"><a name="l02328"></a><span class="lineno"> 2328</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l02329"></a><span class="lineno"> 2329</span>         <span class="keywordtype">void</span> set_train_error_function(error_function_enum train_error_function)</div>
-<div class="line"><a name="l02330"></a><span class="lineno"> 2330</span>         {</div>
-<div class="line"><a name="l02331"></a><span class="lineno"> 2331</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02332"></a><span class="lineno"> 2332</span>             {</div>
-<div class="line"><a name="l02333"></a><span class="lineno"> 2333</span>                 fann_set_train_error_function(ann,</div>
-<div class="line"><a name="l02334"></a><span class="lineno"> 2334</span>                     static_cast<fann_errorfunc_enum>(train_error_function));</div>
-<div class="line"><a name="l02335"></a><span class="lineno"> 2335</span>             }</div>
-<div class="line"><a name="l02336"></a><span class="lineno"> 2336</span>         }</div>
-<div class="line"><a name="l02337"></a><span class="lineno"> 2337</span> </div>
-<div class="line"><a name="l02338"></a><span class="lineno"> 2338</span>         <span class="comment">/* Method: get_quickprop_decay</span></div>
-<div class="line"><a name="l02339"></a><span class="lineno"> 2339</span> <span class="comment"></span></div>
-<div class="line"><a name="l02340"></a><span class="lineno"> 2340</span> <span class="comment">           The decay is a small negative valued number which is the factor that the weights </span></div>
-<div class="line"><a name="l02341"></a><span class="lineno"> 2341</span> <span class="comment">           should become smaller in each iteration during quickprop training. This is used </span></div>
-<div class="line"><a name="l02342"></a><span class="lineno"> 2342</span> <span class="comment">           to make sure that the weights do not become too high during training.</span></div>
-<div class="line"><a name="l02343"></a><span class="lineno"> 2343</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02344"></a><span class="lineno"> 2344</span> <span class="comment">           The default decay is -0.0001.</span></div>
-<div class="line"><a name="l02345"></a><span class="lineno"> 2345</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02346"></a><span class="lineno"> 2346</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l02347"></a><span class="lineno"> 2347</span> <span class="comment">            <set_quickprop_decay>, <fann_get_quickprop_decay></span></div>
-<div class="line"><a name="l02348"></a><span class="lineno"> 2348</span> <span class="comment"></span></div>
-<div class="line"><a name="l02349"></a><span class="lineno"> 2349</span> <span class="comment">           This function appears in FANN >= 1.2.0.</span></div>
-<div class="line"><a name="l02350"></a><span class="lineno"> 2350</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l02351"></a><span class="lineno"> 2351</span>         <span class="keywordtype">float</span> get_quickprop_decay()</div>
-<div class="line"><a name="l02352"></a><span class="lineno"> 2352</span>         {</div>
-<div class="line"><a name="l02353"></a><span class="lineno"> 2353</span>             <span class="keywordtype">float</span> quickprop_decay = 0.0f;</div>
-<div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02355"></a><span class="lineno"> 2355</span>             {</div>
-<div class="line"><a name="l02356"></a><span class="lineno"> 2356</span>                 quickprop_decay = fann_get_quickprop_decay(ann);</div>
-<div class="line"><a name="l02357"></a><span class="lineno"> 2357</span>             }</div>
-<div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>             <span class="keywordflow">return</span> quickprop_decay;</div>
-<div class="line"><a name="l02359"></a><span class="lineno"> 2359</span>         }</div>
-<div class="line"><a name="l02360"></a><span class="lineno"> 2360</span> </div>
-<div class="line"><a name="l02361"></a><span class="lineno"> 2361</span>         <span class="comment">/* Method: set_quickprop_decay</span></div>
-<div class="line"><a name="l02362"></a><span class="lineno"> 2362</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02363"></a><span class="lineno"> 2363</span> <span class="comment">           Sets the quickprop decay factor.</span></div>
-<div class="line"><a name="l02364"></a><span class="lineno"> 2364</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02365"></a><span class="lineno"> 2365</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l02366"></a><span class="lineno"> 2366</span> <span class="comment">            <get_quickprop_decay>, <fann_set_quickprop_decay></span></div>
-<div class="line"><a name="l02367"></a><span class="lineno"> 2367</span> <span class="comment"></span></div>
-<div class="line"><a name="l02368"></a><span class="lineno"> 2368</span> <span class="comment">           This function appears in FANN >= 1.2.0.</span></div>
-<div class="line"><a name="l02369"></a><span class="lineno"> 2369</span> <span class="comment">        */</span> </div>
-<div class="line"><a name="l02370"></a><span class="lineno"> 2370</span>         <span class="keywordtype">void</span> set_quickprop_decay(<span class="keywordtype">float</span> quickprop_decay)</div>
-<div class="line"><a name="l02371"></a><span class="lineno"> 2371</span>         {</div>
-<div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02373"></a><span class="lineno"> 2373</span>             {</div>
-<div class="line"><a name="l02374"></a><span class="lineno"> 2374</span>                 fann_set_quickprop_decay(ann, quickprop_decay);</div>
-<div class="line"><a name="l02375"></a><span class="lineno"> 2375</span>             }</div>
-<div class="line"><a name="l02376"></a><span class="lineno"> 2376</span>         }</div>
-<div class="line"><a name="l02377"></a><span class="lineno"> 2377</span> </div>
-<div class="line"><a name="l02378"></a><span class="lineno"> 2378</span>         <span class="comment">/* Method: get_quickprop_mu</span></div>
-<div class="line"><a name="l02379"></a><span class="lineno"> 2379</span> <span class="comment"></span></div>
-<div class="line"><a name="l02380"></a><span class="lineno"> 2380</span> <span class="comment">           The mu factor is used to increase and decrease the step-size during quickprop training. </span></div>
-<div class="line"><a name="l02381"></a><span class="lineno"> 2381</span> <span class="comment">           The mu factor should always be above 1, since it would otherwise decrease the step-size </span></div>
-<div class="line"><a name="l02382"></a><span class="lineno"> 2382</span> <span class="comment">           when it was suppose to increase it.</span></div>
-<div class="line"><a name="l02383"></a><span class="lineno"> 2383</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02384"></a><span class="lineno"> 2384</span> <span class="comment">           The default mu factor is 1.75. </span></div>
-<div class="line"><a name="l02385"></a><span class="lineno"> 2385</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02386"></a><span class="lineno"> 2386</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l02387"></a><span class="lineno"> 2387</span> <span class="comment">            <set_quickprop_mu>, <fann_get_quickprop_mu></span></div>
-<div class="line"><a name="l02388"></a><span class="lineno"> 2388</span> <span class="comment"></span></div>
-<div class="line"><a name="l02389"></a><span class="lineno"> 2389</span> <span class="comment">           This function appears in FANN >= 1.2.0.</span></div>
-<div class="line"><a name="l02390"></a><span class="lineno"> 2390</span> <span class="comment">        */</span> </div>
-<div class="line"><a name="l02391"></a><span class="lineno"> 2391</span>         <span class="keywordtype">float</span> get_quickprop_mu()</div>
-<div class="line"><a name="l02392"></a><span class="lineno"> 2392</span>         {</div>
-<div class="line"><a name="l02393"></a><span class="lineno"> 2393</span>             <span class="keywordtype">float</span> quickprop_mu = 0.0f;</div>
-<div class="line"><a name="l02394"></a><span class="lineno"> 2394</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02395"></a><span class="lineno"> 2395</span>             {</div>
-<div class="line"><a name="l02396"></a><span class="lineno"> 2396</span>                 quickprop_mu = fann_get_quickprop_mu(ann);</div>
-<div class="line"><a name="l02397"></a><span class="lineno"> 2397</span>             }</div>
-<div class="line"><a name="l02398"></a><span class="lineno"> 2398</span>             <span class="keywordflow">return</span> quickprop_mu;</div>
-<div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>         }</div>
-<div class="line"><a name="l02400"></a><span class="lineno"> 2400</span> </div>
-<div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>         <span class="comment">/* Method: set_quickprop_mu</span></div>
-<div class="line"><a name="l02402"></a><span class="lineno"> 2402</span> <span class="comment"></span></div>
-<div class="line"><a name="l02403"></a><span class="lineno"> 2403</span> <span class="comment">            Sets the quickprop mu factor.</span></div>
-<div class="line"><a name="l02404"></a><span class="lineno"> 2404</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02405"></a><span class="lineno"> 2405</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l02406"></a><span class="lineno"> 2406</span> <span class="comment">            <get_quickprop_mu>, <fann_set_quickprop_mu></span></div>
-<div class="line"><a name="l02407"></a><span class="lineno"> 2407</span> <span class="comment"></span></div>
-<div class="line"><a name="l02408"></a><span class="lineno"> 2408</span> <span class="comment">           This function appears in FANN >= 1.2.0.</span></div>
-<div class="line"><a name="l02409"></a><span class="lineno"> 2409</span> <span class="comment">        */</span> </div>
-<div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>         <span class="keywordtype">void</span> set_quickprop_mu(<span class="keywordtype">float</span> quickprop_mu)</div>
-<div class="line"><a name="l02411"></a><span class="lineno"> 2411</span>         {</div>
-<div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>             {</div>
-<div class="line"><a name="l02414"></a><span class="lineno"> 2414</span>                 fann_set_quickprop_mu(ann, quickprop_mu);</div>
-<div class="line"><a name="l02415"></a><span class="lineno"> 2415</span>             }</div>
-<div class="line"><a name="l02416"></a><span class="lineno"> 2416</span>         }</div>
-<div class="line"><a name="l02417"></a><span class="lineno"> 2417</span> </div>
-<div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>         <span class="comment">/* Method: get_rprop_increase_factor</span></div>
-<div class="line"><a name="l02419"></a><span class="lineno"> 2419</span> <span class="comment"></span></div>
-<div class="line"><a name="l02420"></a><span class="lineno"> 2420</span> <span class="comment">           The increase factor is a value larger than 1, which is used to </span></div>
-<div class="line"><a name="l02421"></a><span class="lineno"> 2421</span> <span class="comment">           increase the step-size during RPROP training.</span></div>
-<div class="line"><a name="l02422"></a><span class="lineno"> 2422</span> <span class="comment"></span></div>
-<div class="line"><a name="l02423"></a><span class="lineno"> 2423</span> <span class="comment">           The default increase factor is 1.2.</span></div>
-<div class="line"><a name="l02424"></a><span class="lineno"> 2424</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02425"></a><span class="lineno"> 2425</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l02426"></a><span class="lineno"> 2426</span> <span class="comment">            <set_rprop_increase_factor>, <fann_get_rprop_increase_factor></span></div>
-<div class="line"><a name="l02427"></a><span class="lineno"> 2427</span> <span class="comment"></span></div>
-<div class="line"><a name="l02428"></a><span class="lineno"> 2428</span> <span class="comment">           This function appears in FANN >= 1.2.0.</span></div>
-<div class="line"><a name="l02429"></a><span class="lineno"> 2429</span> <span class="comment">        */</span> </div>
-<div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>         <span class="keywordtype">float</span> get_rprop_increase_factor()</div>
-<div class="line"><a name="l02431"></a><span class="lineno"> 2431</span>         {</div>
-<div class="line"><a name="l02432"></a><span class="lineno"> 2432</span>             <span class="keywordtype">float</span> factor = 0.0f;</div>
-<div class="line"><a name="l02433"></a><span class="lineno"> 2433</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02434"></a><span class="lineno"> 2434</span>             {</div>
-<div class="line"><a name="l02435"></a><span class="lineno"> 2435</span>                 factor = fann_get_rprop_increase_factor(ann);</div>
-<div class="line"><a name="l02436"></a><span class="lineno"> 2436</span>             }</div>
-<div class="line"><a name="l02437"></a><span class="lineno"> 2437</span>             <span class="keywordflow">return</span> factor;</div>
-<div class="line"><a name="l02438"></a><span class="lineno"> 2438</span>         }</div>
-<div class="line"><a name="l02439"></a><span class="lineno"> 2439</span> </div>
-<div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>         <span class="comment">/* Method: set_rprop_increase_factor</span></div>
-<div class="line"><a name="l02441"></a><span class="lineno"> 2441</span> <span class="comment"></span></div>
-<div class="line"><a name="l02442"></a><span class="lineno"> 2442</span> <span class="comment">           The increase factor used during RPROP training.</span></div>
-<div class="line"><a name="l02443"></a><span class="lineno"> 2443</span> <span class="comment"></span></div>
-<div class="line"><a name="l02444"></a><span class="lineno"> 2444</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l02445"></a><span class="lineno"> 2445</span> <span class="comment">            <get_rprop_increase_factor>, <fann_set_rprop_increase_factor></span></div>
-<div class="line"><a name="l02446"></a><span class="lineno"> 2446</span> <span class="comment"></span></div>
-<div class="line"><a name="l02447"></a><span class="lineno"> 2447</span> <span class="comment">           This function appears in FANN >= 1.2.0.</span></div>
-<div class="line"><a name="l02448"></a><span class="lineno"> 2448</span> <span class="comment">        */</span> </div>
-<div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>         <span class="keywordtype">void</span> set_rprop_increase_factor(<span class="keywordtype">float</span> rprop_increase_factor)</div>
-<div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>         {</div>
-<div class="line"><a name="l02451"></a><span class="lineno"> 2451</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>             {</div>
-<div class="line"><a name="l02453"></a><span class="lineno"> 2453</span>                 fann_set_rprop_increase_factor(ann, rprop_increase_factor);</div>
-<div class="line"><a name="l02454"></a><span class="lineno"> 2454</span>             }</div>
-<div class="line"><a name="l02455"></a><span class="lineno"> 2455</span>         }</div>
-<div class="line"><a name="l02456"></a><span class="lineno"> 2456</span> </div>
-<div class="line"><a name="l02457"></a><span class="lineno"> 2457</span>         <span class="comment">/* Method: get_rprop_decrease_factor</span></div>
-<div class="line"><a name="l02458"></a><span class="lineno"> 2458</span> <span class="comment"></span></div>
-<div class="line"><a name="l02459"></a><span class="lineno"> 2459</span> <span class="comment">           The decrease factor is a value smaller than 1, which is used to decrease the step-size during RPROP training.</span></div>
-<div class="line"><a name="l02460"></a><span class="lineno"> 2460</span> <span class="comment"></span></div>
-<div class="line"><a name="l02461"></a><span class="lineno"> 2461</span> <span class="comment">           The default decrease factor is 0.5.</span></div>
-<div class="line"><a name="l02462"></a><span class="lineno"> 2462</span> <span class="comment"></span></div>
-<div class="line"><a name="l02463"></a><span class="lineno"> 2463</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l02464"></a><span class="lineno"> 2464</span> <span class="comment">            <set_rprop_decrease_factor>, <fann_get_rprop_decrease_factor></span></div>
-<div class="line"><a name="l02465"></a><span class="lineno"> 2465</span> <span class="comment"></span></div>
-<div class="line"><a name="l02466"></a><span class="lineno"> 2466</span> <span class="comment">           This function appears in FANN >= 1.2.0.</span></div>
-<div class="line"><a name="l02467"></a><span class="lineno"> 2467</span> <span class="comment">        */</span> </div>
-<div class="line"><a name="l02468"></a><span class="lineno"> 2468</span>         <span class="keywordtype">float</span> get_rprop_decrease_factor()</div>
-<div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>         {</div>
-<div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>             <span class="keywordtype">float</span> factor = 0.0f;</div>
-<div class="line"><a name="l02471"></a><span class="lineno"> 2471</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02472"></a><span class="lineno"> 2472</span>             {</div>
-<div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>                 factor = fann_get_rprop_decrease_factor(ann);</div>
-<div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>             }</div>
-<div class="line"><a name="l02475"></a><span class="lineno"> 2475</span>             <span class="keywordflow">return</span> factor;</div>
-<div class="line"><a name="l02476"></a><span class="lineno"> 2476</span>         }</div>
-<div class="line"><a name="l02477"></a><span class="lineno"> 2477</span> </div>
-<div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>         <span class="comment">/* Method: set_rprop_decrease_factor</span></div>
-<div class="line"><a name="l02479"></a><span class="lineno"> 2479</span> <span class="comment"></span></div>
-<div class="line"><a name="l02480"></a><span class="lineno"> 2480</span> <span class="comment">           The decrease factor is a value smaller than 1, which is used to decrease the step-size during RPROP training.</span></div>
-<div class="line"><a name="l02481"></a><span class="lineno"> 2481</span> <span class="comment"></span></div>
-<div class="line"><a name="l02482"></a><span class="lineno"> 2482</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l02483"></a><span class="lineno"> 2483</span> <span class="comment">            <get_rprop_decrease_factor>, <fann_set_rprop_decrease_factor></span></div>
-<div class="line"><a name="l02484"></a><span class="lineno"> 2484</span> <span class="comment"></span></div>
-<div class="line"><a name="l02485"></a><span class="lineno"> 2485</span> <span class="comment">           This function appears in FANN >= 1.2.0.</span></div>
-<div class="line"><a name="l02486"></a><span class="lineno"> 2486</span> <span class="comment">        */</span></div>
-<div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>         <span class="keywordtype">void</span> set_rprop_decrease_factor(<span class="keywordtype">float</span> rprop_decrease_factor)</div>
-<div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>         {</div>
-<div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>             {</div>
-<div class="line"><a name="l02491"></a><span class="lineno"> 2491</span>                 fann_set_rprop_decrease_factor(ann, rprop_decrease_factor);</div>
-<div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>             }</div>
-<div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>         }</div>
-<div class="line"><a name="l02494"></a><span class="lineno"> 2494</span> </div>
-<div class="line"><a name="l02495"></a><span class="lineno"> 2495</span>         <span class="comment">/* Method: get_rprop_delta_min</span></div>
-<div class="line"><a name="l02496"></a><span class="lineno"> 2496</span> <span class="comment"></span></div>
-<div class="line"><a name="l02497"></a><span class="lineno"> 2497</span> <span class="comment">           The minimum step-size is a small positive number determining how small the minimum step-size may be.</span></div>
-<div class="line"><a name="l02498"></a><span class="lineno"> 2498</span> <span class="comment"></span></div>
-<div class="line"><a name="l02499"></a><span class="lineno"> 2499</span> <span class="comment">           The default value delta min is 0.0.</span></div>
-<div class="line"><a name="l02500"></a><span class="lineno"> 2500</span> <span class="comment"></span></div>
-<div class="line"><a name="l02501"></a><span class="lineno"> 2501</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l02502"></a><span class="lineno"> 2502</span> <span class="comment">            <set_rprop_delta_min>, <fann_get_rprop_delta_min></span></div>
-<div class="line"><a name="l02503"></a><span class="lineno"> 2503</span> <span class="comment">            </span></div>
-<div class="line"><a name="l02504"></a><span class="lineno"> 2504</span> <span class="comment">           This function appears in FANN >= 1.2.0.</span></div>
-<div class="line"><a name="l02505"></a><span class="lineno"> 2505</span> <span class="comment">        */</span> </div>
-<div class="line"><a name="l02506"></a><span class="lineno"> 2506</span>         <span class="keywordtype">float</span> get_rprop_delta_min()</div>
-<div class="line"><a name="l02507"></a><span class="lineno"> 2507</span>         {</div>
-<div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>             <span class="keywordtype">float</span> delta = 0.0f;</div>
-<div class="line"><a name="l02509"></a><span class="lineno"> 2509</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02510"></a><span class="lineno"> 2510</span>             {</div>
-<div class="line"><a name="l02511"></a><span class="lineno"> 2511</span>                 delta = fann_get_rprop_delta_min(ann);</div>
-<div class="line"><a name="l02512"></a><span class="lineno"> 2512</span>             }</div>
-<div class="line"><a name="l02513"></a><span class="lineno"> 2513</span>             <span class="keywordflow">return</span> delta;</div>
-<div class="line"><a name="l02514"></a><span class="lineno"> 2514</span>         }</div>
-<div class="line"><a name="l02515"></a><span class="lineno"> 2515</span> </div>
-<div class="line"><a name="l02516"></a><span class="lineno"> 2516</span>         <span class="comment">/* Method: set_rprop_delta_min</span></div>
-<div class="line"><a name="l02517"></a><span class="lineno"> 2517</span> <span class="comment"></span></div>
-<div class="line"><a name="l02518"></a><span class="lineno"> 2518</span> <span class="comment">           The minimum step-size is a small positive number determining how small the minimum step-size may be.</span></div>
-<div class="line"><a name="l02519"></a><span class="lineno"> 2519</span> <span class="comment"></span></div>
-<div class="line"><a name="l02520"></a><span class="lineno"> 2520</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l02521"></a><span class="lineno"> 2521</span> <span class="comment">            <get_rprop_delta_min>, <fann_set_rprop_delta_min></span></div>
-<div class="line"><a name="l02522"></a><span class="lineno"> 2522</span> <span class="comment">            </span></div>
-<div class="line"><a name="l02523"></a><span class="lineno"> 2523</span> <span class="comment">           This function appears in FANN >= 1.2.0.</span></div>
-<div class="line"><a name="l02524"></a><span class="lineno"> 2524</span> <span class="comment">        */</span> </div>
-<div class="line"><a name="l02525"></a><span class="lineno"> 2525</span>         <span class="keywordtype">void</span> set_rprop_delta_min(<span class="keywordtype">float</span> rprop_delta_min)</div>
-<div class="line"><a name="l02526"></a><span class="lineno"> 2526</span>         {</div>
-<div class="line"><a name="l02527"></a><span class="lineno"> 2527</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>             {</div>
-<div class="line"><a name="l02529"></a><span class="lineno"> 2529</span>                 fann_set_rprop_delta_min(ann, rprop_delta_min);</div>
-<div class="line"><a name="l02530"></a><span class="lineno"> 2530</span>             }</div>
-<div class="line"><a name="l02531"></a><span class="lineno"> 2531</span>         }</div>
-<div class="line"><a name="l02532"></a><span class="lineno"> 2532</span> </div>
-<div class="line"><a name="l02533"></a><span class="lineno"> 2533</span>         <span class="comment">/* Method: get_rprop_delta_max</span></div>
-<div class="line"><a name="l02534"></a><span class="lineno"> 2534</span> <span class="comment"></span></div>
-<div class="line"><a name="l02535"></a><span class="lineno"> 2535</span> <span class="comment">           The maximum step-size is a positive number determining how large the maximum step-size may be.</span></div>
-<div class="line"><a name="l02536"></a><span class="lineno"> 2536</span> <span class="comment"></span></div>
-<div class="line"><a name="l02537"></a><span class="lineno"> 2537</span> <span class="comment">           The default delta max is 50.0.</span></div>
-<div class="line"><a name="l02538"></a><span class="lineno"> 2538</span> <span class="comment"></span></div>
-<div class="line"><a name="l02539"></a><span class="lineno"> 2539</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l02540"></a><span class="lineno"> 2540</span> <span class="comment">            <set_rprop_delta_max>, <get_rprop_delta_min>, <fann_get_rprop_delta_max></span></div>
-<div class="line"><a name="l02541"></a><span class="lineno"> 2541</span> <span class="comment"></span></div>
-<div class="line"><a name="l02542"></a><span class="lineno"> 2542</span> <span class="comment">           This function appears in FANN >= 1.2.0.</span></div>
-<div class="line"><a name="l02543"></a><span class="lineno"> 2543</span> <span class="comment">        */</span> </div>
-<div class="line"><a name="l02544"></a><span class="lineno"> 2544</span>         <span class="keywordtype">float</span> get_rprop_delta_max()</div>
-<div class="line"><a name="l02545"></a><span class="lineno"> 2545</span>         {</div>
-<div class="line"><a name="l02546"></a><span class="lineno"> 2546</span>             <span class="keywordtype">float</span> delta = 0.0f;</div>
-<div class="line"><a name="l02547"></a><span class="lineno"> 2547</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02548"></a><span class="lineno"> 2548</span>             {</div>
-<div class="line"><a name="l02549"></a><span class="lineno"> 2549</span>                 delta = fann_get_rprop_delta_max(ann);</div>
-<div class="line"><a name="l02550"></a><span class="lineno"> 2550</span>             }</div>
-<div class="line"><a name="l02551"></a><span class="lineno"> 2551</span>             <span class="keywordflow">return</span> delta;</div>
-<div class="line"><a name="l02552"></a><span class="lineno"> 2552</span>         }</div>
-<div class="line"><a name="l02553"></a><span class="lineno"> 2553</span> </div>
-<div class="line"><a name="l02554"></a><span class="lineno"> 2554</span>         <span class="comment">/* Method: set_rprop_delta_max</span></div>
-<div class="line"><a name="l02555"></a><span class="lineno"> 2555</span> <span class="comment"></span></div>
-<div class="line"><a name="l02556"></a><span class="lineno"> 2556</span> <span class="comment">           The maximum step-size is a positive number determining how large the maximum step-size may be.</span></div>
-<div class="line"><a name="l02557"></a><span class="lineno"> 2557</span> <span class="comment"></span></div>
-<div class="line"><a name="l02558"></a><span class="lineno"> 2558</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l02559"></a><span class="lineno"> 2559</span> <span class="comment">            <get_rprop_delta_max>, <get_rprop_delta_min>, <fann_set_rprop_delta_max></span></div>
-<div class="line"><a name="l02560"></a><span class="lineno"> 2560</span> <span class="comment"></span></div>
-<div class="line"><a name="l02561"></a><span class="lineno"> 2561</span> <span class="comment">           This function appears in FANN >= 1.2.0.</span></div>
-<div class="line"><a name="l02562"></a><span class="lineno"> 2562</span> <span class="comment">        */</span></div>
-<div class="line"><a name="l02563"></a><span class="lineno"> 2563</span>         <span class="keywordtype">void</span> set_rprop_delta_max(<span class="keywordtype">float</span> rprop_delta_max)</div>
-<div class="line"><a name="l02564"></a><span class="lineno"> 2564</span>         {</div>
-<div class="line"><a name="l02565"></a><span class="lineno"> 2565</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02566"></a><span class="lineno"> 2566</span>             {</div>
-<div class="line"><a name="l02567"></a><span class="lineno"> 2567</span>                 fann_set_rprop_delta_max(ann, rprop_delta_max);</div>
-<div class="line"><a name="l02568"></a><span class="lineno"> 2568</span>             }</div>
-<div class="line"><a name="l02569"></a><span class="lineno"> 2569</span>         }</div>
-<div class="line"><a name="l02570"></a><span class="lineno"> 2570</span> </div>
-<div class="line"><a name="l02571"></a><span class="lineno"> 2571</span>         <span class="comment">/* Method: get_num_input</span></div>
-<div class="line"><a name="l02572"></a><span class="lineno"> 2572</span> <span class="comment"></span></div>
-<div class="line"><a name="l02573"></a><span class="lineno"> 2573</span> <span class="comment">           Get the number of input neurons.</span></div>
-<div class="line"><a name="l02574"></a><span class="lineno"> 2574</span> <span class="comment"></span></div>
-<div class="line"><a name="l02575"></a><span class="lineno"> 2575</span> <span class="comment">            This function appears in FANN >= 1.0.0.</span></div>
-<div class="line"><a name="l02576"></a><span class="lineno"> 2576</span> <span class="comment">        */</span> </div>
-<div class="line"><a name="l02577"></a><span class="lineno"> 2577</span>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> get_num_input()</div>
-<div class="line"><a name="l02578"></a><span class="lineno"> 2578</span>         {</div>
-<div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>             <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_input = 0;</div>
-<div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02581"></a><span class="lineno"> 2581</span>             {</div>
-<div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>                 num_input = fann_get_num_input(ann);</div>
-<div class="line"><a name="l02583"></a><span class="lineno"> 2583</span>             }</div>
-<div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>             <span class="keywordflow">return</span> num_input;</div>
-<div class="line"><a name="l02585"></a><span class="lineno"> 2585</span>         }</div>
-<div class="line"><a name="l02586"></a><span class="lineno"> 2586</span> </div>
-<div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>         <span class="comment">/* Method: get_num_output</span></div>
-<div class="line"><a name="l02588"></a><span class="lineno"> 2588</span> <span class="comment"></span></div>
-<div class="line"><a name="l02589"></a><span class="lineno"> 2589</span> <span class="comment">           Get the number of output neurons.</span></div>
-<div class="line"><a name="l02590"></a><span class="lineno"> 2590</span> <span class="comment"></span></div>
-<div class="line"><a name="l02591"></a><span class="lineno"> 2591</span> <span class="comment">            This function appears in FANN >= 1.0.0.</span></div>
-<div class="line"><a name="l02592"></a><span class="lineno"> 2592</span> <span class="comment">        */</span> </div>
-<div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> get_num_output()</div>
-<div class="line"><a name="l02594"></a><span class="lineno"> 2594</span>         {</div>
-<div class="line"><a name="l02595"></a><span class="lineno"> 2595</span>             <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_output = 0;</div>
-<div class="line"><a name="l02596"></a><span class="lineno"> 2596</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02597"></a><span class="lineno"> 2597</span>             {</div>
-<div class="line"><a name="l02598"></a><span class="lineno"> 2598</span>                 num_output = fann_get_num_output(ann);</div>
-<div class="line"><a name="l02599"></a><span class="lineno"> 2599</span>             }</div>
-<div class="line"><a name="l02600"></a><span class="lineno"> 2600</span>             <span class="keywordflow">return</span> num_output;</div>
-<div class="line"><a name="l02601"></a><span class="lineno"> 2601</span>         }</div>
-<div class="line"><a name="l02602"></a><span class="lineno"> 2602</span> </div>
-<div class="line"><a name="l02603"></a><span class="lineno"> 2603</span>         <span class="comment">/* Method: get_total_neurons</span></div>
-<div class="line"><a name="l02604"></a><span class="lineno"> 2604</span> <span class="comment"></span></div>
-<div class="line"><a name="l02605"></a><span class="lineno"> 2605</span> <span class="comment">           Get the total number of neurons in the entire network. This number does also include the </span></div>
-<div class="line"><a name="l02606"></a><span class="lineno"> 2606</span> <span class="comment">            bias neurons, so a 2-4-2 network has 2+4+2 +2(bias) = 10 neurons.</span></div>
-<div class="line"><a name="l02607"></a><span class="lineno"> 2607</span> <span class="comment"></span></div>
-<div class="line"><a name="l02608"></a><span class="lineno"> 2608</span> <span class="comment">            This function appears in FANN >= 1.0.0.</span></div>
-<div class="line"><a name="l02609"></a><span class="lineno"> 2609</span> <span class="comment">        */</span> </div>
-<div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> get_total_neurons()</div>
-<div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>         {</div>
-<div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>             <span class="keywordflow">if</span> (ann == NULL)</div>
-<div class="line"><a name="l02613"></a><span class="lineno"> 2613</span>             {</div>
-<div class="line"><a name="l02614"></a><span class="lineno"> 2614</span>                 <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>             }</div>
-<div class="line"><a name="l02616"></a><span class="lineno"> 2616</span>             <span class="keywordflow">return</span> fann_get_total_neurons(ann);</div>
-<div class="line"><a name="l02617"></a><span class="lineno"> 2617</span>         }</div>
-<div class="line"><a name="l02618"></a><span class="lineno"> 2618</span> </div>
-<div class="line"><a name="l02619"></a><span class="lineno"> 2619</span>         <span class="comment">/* Method: get_total_connections</span></div>
-<div class="line"><a name="l02620"></a><span class="lineno"> 2620</span> <span class="comment"></span></div>
-<div class="line"><a name="l02621"></a><span class="lineno"> 2621</span> <span class="comment">           Get the total number of connections in the entire network.</span></div>
-<div class="line"><a name="l02622"></a><span class="lineno"> 2622</span> <span class="comment"></span></div>
-<div class="line"><a name="l02623"></a><span class="lineno"> 2623</span> <span class="comment">            This function appears in FANN >= 1.0.0.</span></div>
-<div class="line"><a name="l02624"></a><span class="lineno"> 2624</span> <span class="comment">        */</span> </div>
-<div class="line"><a name="l02625"></a><span class="lineno"> 2625</span>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> get_total_connections()</div>
-<div class="line"><a name="l02626"></a><span class="lineno"> 2626</span>         {</div>
-<div class="line"><a name="l02627"></a><span class="lineno"> 2627</span>             <span class="keywordflow">if</span> (ann == NULL)</div>
-<div class="line"><a name="l02628"></a><span class="lineno"> 2628</span>             {</div>
-<div class="line"><a name="l02629"></a><span class="lineno"> 2629</span>                 <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l02630"></a><span class="lineno"> 2630</span>             }</div>
-<div class="line"><a name="l02631"></a><span class="lineno"> 2631</span>             <span class="keywordflow">return</span> fann_get_total_connections(ann);</div>
-<div class="line"><a name="l02632"></a><span class="lineno"> 2632</span>         }</div>
-<div class="line"><a name="l02633"></a><span class="lineno"> 2633</span> </div>
-<div class="line"><a name="l02634"></a><span class="lineno"> 2634</span> <span class="preprocessor">#ifdef FIXEDFANN</span></div>
-<div class="line"><a name="l02635"></a><span class="lineno"> 2635</span> <span class="preprocessor"></span>        <span class="comment">/* Method: get_decimal_point</span></div>
-<div class="line"><a name="l02636"></a><span class="lineno"> 2636</span> <span class="comment"></span></div>
-<div class="line"><a name="l02637"></a><span class="lineno"> 2637</span> <span class="comment">            Returns the position of the decimal point in the ann.</span></div>
-<div class="line"><a name="l02638"></a><span class="lineno"> 2638</span> <span class="comment"></span></div>
-<div class="line"><a name="l02639"></a><span class="lineno"> 2639</span> <span class="comment">            This function is only available when the ANN is in fixed point mode.</span></div>
-<div class="line"><a name="l02640"></a><span class="lineno"> 2640</span> <span class="comment"></span></div>
-<div class="line"><a name="l02641"></a><span class="lineno"> 2641</span> <span class="comment">            The decimal point is described in greater detail in the tutorial <Fixed Point Usage>.</span></div>
-<div class="line"><a name="l02642"></a><span class="lineno"> 2642</span> <span class="comment"></span></div>
-<div class="line"><a name="l02643"></a><span class="lineno"> 2643</span> <span class="comment">            See also:</span></div>
-<div class="line"><a name="l02644"></a><span class="lineno"> 2644</span> <span class="comment">                <Fixed Point Usage>, <get_multiplier>, <save_to_fixed>,</span></div>
-<div class="line"><a name="l02645"></a><span class="lineno"> 2645</span> <span class="comment">                <training_data::save_train_to_fixed>, <fann_get_decimal_point></span></div>
-<div class="line"><a name="l02646"></a><span class="lineno"> 2646</span> <span class="comment"></span></div>
-<div class="line"><a name="l02647"></a><span class="lineno"> 2647</span> <span class="comment">            This function appears in FANN >= 1.0.0.</span></div>
-<div class="line"><a name="l02648"></a><span class="lineno"> 2648</span> <span class="comment">        */</span> </div>
-<div class="line"><a name="l02649"></a><span class="lineno"> 2649</span>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> get_decimal_point()</div>
-<div class="line"><a name="l02650"></a><span class="lineno"> 2650</span>         {</div>
-<div class="line"><a name="l02651"></a><span class="lineno"> 2651</span>             <span class="keywordflow">if</span> (ann == NULL)</div>
-<div class="line"><a name="l02652"></a><span class="lineno"> 2652</span>             {</div>
-<div class="line"><a name="l02653"></a><span class="lineno"> 2653</span>                 <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l02654"></a><span class="lineno"> 2654</span>             }</div>
-<div class="line"><a name="l02655"></a><span class="lineno"> 2655</span>             <span class="keywordflow">return</span> fann_get_decimal_point(ann);</div>
-<div class="line"><a name="l02656"></a><span class="lineno"> 2656</span>         }</div>
-<div class="line"><a name="l02657"></a><span class="lineno"> 2657</span> </div>
-<div class="line"><a name="l02658"></a><span class="lineno"> 2658</span>         <span class="comment">/* Method: get_multiplier</span></div>
-<div class="line"><a name="l02659"></a><span class="lineno"> 2659</span> <span class="comment"></span></div>
-<div class="line"><a name="l02660"></a><span class="lineno"> 2660</span> <span class="comment">            Returns the multiplier that fix point data is multiplied with.</span></div>
-<div class="line"><a name="l02661"></a><span class="lineno"> 2661</span> <span class="comment"></span></div>
-<div class="line"><a name="l02662"></a><span class="lineno"> 2662</span> <span class="comment">            This function is only available when the ANN is in fixed point mode.</span></div>
-<div class="line"><a name="l02663"></a><span class="lineno"> 2663</span> <span class="comment"></span></div>
-<div class="line"><a name="l02664"></a><span class="lineno"> 2664</span> <span class="comment">            The multiplier is the used to convert between floating point and fixed point notation. </span></div>
-<div class="line"><a name="l02665"></a><span class="lineno"> 2665</span> <span class="comment">            A floating point number is multiplied with the multiplier in order to get the fixed point</span></div>
-<div class="line"><a name="l02666"></a><span class="lineno"> 2666</span> <span class="comment">            number and visa versa.</span></div>
-<div class="line"><a name="l02667"></a><span class="lineno"> 2667</span> <span class="comment"></span></div>
-<div class="line"><a name="l02668"></a><span class="lineno"> 2668</span> <span class="comment">            The multiplier is described in greater detail in the tutorial <Fixed Point Usage>.</span></div>
-<div class="line"><a name="l02669"></a><span class="lineno"> 2669</span> <span class="comment"></span></div>
-<div class="line"><a name="l02670"></a><span class="lineno"> 2670</span> <span class="comment">            See also:</span></div>
-<div class="line"><a name="l02671"></a><span class="lineno"> 2671</span> <span class="comment">                <Fixed Point Usage>, <get_decimal_point>, <save_to_fixed>,</span></div>
-<div class="line"><a name="l02672"></a><span class="lineno"> 2672</span> <span class="comment">                <training_data::save_train_to_fixed>, <fann_get_multiplier></span></div>
-<div class="line"><a name="l02673"></a><span class="lineno"> 2673</span> <span class="comment"></span></div>
-<div class="line"><a name="l02674"></a><span class="lineno"> 2674</span> <span class="comment">            This function appears in FANN >= 1.0.0.</span></div>
-<div class="line"><a name="l02675"></a><span class="lineno"> 2675</span> <span class="comment">        */</span> </div>
-<div class="line"><a name="l02676"></a><span class="lineno"> 2676</span>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> get_multiplier()</div>
-<div class="line"><a name="l02677"></a><span class="lineno"> 2677</span>         {</div>
-<div class="line"><a name="l02678"></a><span class="lineno"> 2678</span>             <span class="keywordflow">if</span> (ann == NULL)</div>
-<div class="line"><a name="l02679"></a><span class="lineno"> 2679</span>             {</div>
-<div class="line"><a name="l02680"></a><span class="lineno"> 2680</span>                 <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l02681"></a><span class="lineno"> 2681</span>             }</div>
-<div class="line"><a name="l02682"></a><span class="lineno"> 2682</span>             <span class="keywordflow">return</span> fann_get_multiplier(ann);</div>
-<div class="line"><a name="l02683"></a><span class="lineno"> 2683</span>         }</div>
-<div class="line"><a name="l02684"></a><span class="lineno"> 2684</span> <span class="preprocessor">#endif </span><span class="comment">/* FIXEDFANN */</span><span class="preprocessor"></span></div>
-<div class="line"><a name="l02685"></a><span class="lineno"> 2685</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l02686"></a><span class="lineno"> 2686</span>         <span class="comment">/*********************************************************************/</span></div>
-<div class="line"><a name="l02687"></a><span class="lineno"> 2687</span> </div>
-<div class="line"><a name="l02688"></a><span class="lineno"> 2688</span>         <span class="comment">/* Method: get_network_type</span></div>
-<div class="line"><a name="l02689"></a><span class="lineno"> 2689</span> <span class="comment"></span></div>
-<div class="line"><a name="l02690"></a><span class="lineno"> 2690</span> <span class="comment">            Get the type of neural network it was created as.</span></div>
-<div class="line"><a name="l02691"></a><span class="lineno"> 2691</span> <span class="comment"></span></div>
-<div class="line"><a name="l02692"></a><span class="lineno"> 2692</span> <span class="comment">            Returns:</span></div>
-<div class="line"><a name="l02693"></a><span class="lineno"> 2693</span> <span class="comment">                The neural network type from enum <FANN::network_type_enum></span></div>
-<div class="line"><a name="l02694"></a><span class="lineno"> 2694</span> <span class="comment"></span></div>
-<div class="line"><a name="l02695"></a><span class="lineno"> 2695</span> <span class="comment">            See Also:</span></div>
-<div class="line"><a name="l02696"></a><span class="lineno"> 2696</span> <span class="comment">                <fann_get_network_type></span></div>
-<div class="line"><a name="l02697"></a><span class="lineno"> 2697</span> <span class="comment"></span></div>
-<div class="line"><a name="l02698"></a><span class="lineno"> 2698</span> <span class="comment">           This function appears in FANN >= 2.1.0</span></div>
-<div class="line"><a name="l02699"></a><span class="lineno"> 2699</span> <span class="comment">        */</span></div>
-<div class="line"><a name="l02700"></a><span class="lineno"> 2700</span>         network_type_enum get_network_type()</div>
-<div class="line"><a name="l02701"></a><span class="lineno"> 2701</span>         {</div>
-<div class="line"><a name="l02702"></a><span class="lineno"> 2702</span>             fann_nettype_enum network_type = FANN_NETTYPE_LAYER;</div>
-<div class="line"><a name="l02703"></a><span class="lineno"> 2703</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02704"></a><span class="lineno"> 2704</span>             {</div>
-<div class="line"><a name="l02705"></a><span class="lineno"> 2705</span>                 network_type = fann_get_network_type(ann);</div>
-<div class="line"><a name="l02706"></a><span class="lineno"> 2706</span>             }</div>
-<div class="line"><a name="l02707"></a><span class="lineno"> 2707</span>             <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>network_type_enum<span class="keyword">></span>(network_type);</div>
-<div class="line"><a name="l02708"></a><span class="lineno"> 2708</span>         }</div>
-<div class="line"><a name="l02709"></a><span class="lineno"> 2709</span> </div>
-<div class="line"><a name="l02710"></a><span class="lineno"> 2710</span>         <span class="comment">/* Method: get_connection_rate</span></div>
-<div class="line"><a name="l02711"></a><span class="lineno"> 2711</span> <span class="comment"></span></div>
-<div class="line"><a name="l02712"></a><span class="lineno"> 2712</span> <span class="comment">            Get the connection rate used when the network was created</span></div>
-<div class="line"><a name="l02713"></a><span class="lineno"> 2713</span> <span class="comment"></span></div>
-<div class="line"><a name="l02714"></a><span class="lineno"> 2714</span> <span class="comment">            Returns:</span></div>
-<div class="line"><a name="l02715"></a><span class="lineno"> 2715</span> <span class="comment">                The connection rate</span></div>
-<div class="line"><a name="l02716"></a><span class="lineno"> 2716</span> <span class="comment"></span></div>
-<div class="line"><a name="l02717"></a><span class="lineno"> 2717</span> <span class="comment">            See also:</span></div>
-<div class="line"><a name="l02718"></a><span class="lineno"> 2718</span> <span class="comment">                <fann_get_connection_rate></span></div>
-<div class="line"><a name="l02719"></a><span class="lineno"> 2719</span> <span class="comment"></span></div>
-<div class="line"><a name="l02720"></a><span class="lineno"> 2720</span> <span class="comment">           This function appears in FANN >= 2.1.0</span></div>
-<div class="line"><a name="l02721"></a><span class="lineno"> 2721</span> <span class="comment">        */</span></div>
-<div class="line"><a name="l02722"></a><span class="lineno"> 2722</span>         <span class="keywordtype">float</span> get_connection_rate()</div>
-<div class="line"><a name="l02723"></a><span class="lineno"> 2723</span>         {</div>
-<div class="line"><a name="l02724"></a><span class="lineno"> 2724</span>             <span class="keywordflow">if</span> (ann == NULL)</div>
-<div class="line"><a name="l02725"></a><span class="lineno"> 2725</span>             {</div>
-<div class="line"><a name="l02726"></a><span class="lineno"> 2726</span>                 <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l02727"></a><span class="lineno"> 2727</span>             }</div>
-<div class="line"><a name="l02728"></a><span class="lineno"> 2728</span>             <span class="keywordflow">return</span> fann_get_connection_rate(ann);</div>
-<div class="line"><a name="l02729"></a><span class="lineno"> 2729</span>         }</div>
-<div class="line"><a name="l02730"></a><span class="lineno"> 2730</span> </div>
-<div class="line"><a name="l02731"></a><span class="lineno"> 2731</span>         <span class="comment">/* Method: get_num_layers</span></div>
-<div class="line"><a name="l02732"></a><span class="lineno"> 2732</span> <span class="comment"></span></div>
-<div class="line"><a name="l02733"></a><span class="lineno"> 2733</span> <span class="comment">            Get the number of layers in the network</span></div>
-<div class="line"><a name="l02734"></a><span class="lineno"> 2734</span> <span class="comment"></span></div>
-<div class="line"><a name="l02735"></a><span class="lineno"> 2735</span> <span class="comment">            Returns:</span></div>
-<div class="line"><a name="l02736"></a><span class="lineno"> 2736</span> <span class="comment">                The number of layers in the neural network</span></div>
-<div class="line"><a name="l02737"></a><span class="lineno"> 2737</span> <span class="comment"></span></div>
-<div class="line"><a name="l02738"></a><span class="lineno"> 2738</span> <span class="comment">            See also:</span></div>
-<div class="line"><a name="l02739"></a><span class="lineno"> 2739</span> <span class="comment">                <fann_get_num_layers></span></div>
-<div class="line"><a name="l02740"></a><span class="lineno"> 2740</span> <span class="comment"></span></div>
-<div class="line"><a name="l02741"></a><span class="lineno"> 2741</span> <span class="comment">           This function appears in FANN >= 2.1.0</span></div>
-<div class="line"><a name="l02742"></a><span class="lineno"> 2742</span> <span class="comment">        */</span></div>
-<div class="line"><a name="l02743"></a><span class="lineno"> 2743</span>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> get_num_layers()</div>
-<div class="line"><a name="l02744"></a><span class="lineno"> 2744</span>         {</div>
-<div class="line"><a name="l02745"></a><span class="lineno"> 2745</span>             <span class="keywordflow">if</span> (ann == NULL)</div>
-<div class="line"><a name="l02746"></a><span class="lineno"> 2746</span>             {</div>
-<div class="line"><a name="l02747"></a><span class="lineno"> 2747</span>                 <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l02748"></a><span class="lineno"> 2748</span>             }</div>
-<div class="line"><a name="l02749"></a><span class="lineno"> 2749</span>             <span class="keywordflow">return</span> fann_get_num_layers(ann);</div>
-<div class="line"><a name="l02750"></a><span class="lineno"> 2750</span>         }</div>
-<div class="line"><a name="l02751"></a><span class="lineno"> 2751</span> </div>
-<div class="line"><a name="l02752"></a><span class="lineno"> 2752</span>         <span class="comment">/* Method: get_layer_array</span></div>
-<div class="line"><a name="l02753"></a><span class="lineno"> 2753</span> <span class="comment"></span></div>
-<div class="line"><a name="l02754"></a><span class="lineno"> 2754</span> <span class="comment">            Get the number of neurons in each layer in the network.</span></div>
-<div class="line"><a name="l02755"></a><span class="lineno"> 2755</span> <span class="comment"></span></div>
-<div class="line"><a name="l02756"></a><span class="lineno"> 2756</span> <span class="comment">            Bias is not included so the layers match the create methods.</span></div>
-<div class="line"><a name="l02757"></a><span class="lineno"> 2757</span> <span class="comment"></span></div>
-<div class="line"><a name="l02758"></a><span class="lineno"> 2758</span> <span class="comment">            The layers array must be preallocated to at least</span></div>
-<div class="line"><a name="l02759"></a><span class="lineno"> 2759</span> <span class="comment">            sizeof(unsigned int) * get_num_layers() long.</span></div>
-<div class="line"><a name="l02760"></a><span class="lineno"> 2760</span> <span class="comment"></span></div>
-<div class="line"><a name="l02761"></a><span class="lineno"> 2761</span> <span class="comment">            See also:</span></div>
-<div class="line"><a name="l02762"></a><span class="lineno"> 2762</span> <span class="comment">                <fann_get_layer_array></span></div>
-<div class="line"><a name="l02763"></a><span class="lineno"> 2763</span> <span class="comment"></span></div>
-<div class="line"><a name="l02764"></a><span class="lineno"> 2764</span> <span class="comment">           This function appears in FANN >= 2.1.0</span></div>
-<div class="line"><a name="l02765"></a><span class="lineno"> 2765</span> <span class="comment">        */</span></div>
-<div class="line"><a name="l02766"></a><span class="lineno"> 2766</span>         <span class="keywordtype">void</span> get_layer_array(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *layers)</div>
-<div class="line"><a name="l02767"></a><span class="lineno"> 2767</span>         {</div>
-<div class="line"><a name="l02768"></a><span class="lineno"> 2768</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02769"></a><span class="lineno"> 2769</span>             {</div>
-<div class="line"><a name="l02770"></a><span class="lineno"> 2770</span>                 fann_get_layer_array(ann, layers);</div>
-<div class="line"><a name="l02771"></a><span class="lineno"> 2771</span>             }</div>
-<div class="line"><a name="l02772"></a><span class="lineno"> 2772</span>         }</div>
-<div class="line"><a name="l02773"></a><span class="lineno"> 2773</span> </div>
-<div class="line"><a name="l02774"></a><span class="lineno"> 2774</span>         <span class="keywordtype">void</span> get_layer_array(std::vector<unsigned int> vlayers)</div>
-<div class="line"><a name="l02775"></a><span class="lineno"> 2775</span>         {</div>
-<div class="line"><a name="l02776"></a><span class="lineno"> 2776</span>           vlayers.clear();</div>
-<div class="line"><a name="l02777"></a><span class="lineno"> 2777</span>           <span class="keywordflow">if</span> (ann != NULL){</div>
-<div class="line"><a name="l02778"></a><span class="lineno"> 2778</span>             vlayers.resize(get_num_layers());</div>
-<div class="line"><a name="l02779"></a><span class="lineno"> 2779</span>             <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>* layers=(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *)calloc(get_num_layers(),<span class="keyword">sizeof</span>(<span class="keywordtype">unsigned</span> int));</div>
-<div class="line"><a name="l02780"></a><span class="lineno"> 2780</span>             fann_get_layer_array(ann, layers);</div>
-<div class="line"><a name="l02781"></a><span class="lineno"> 2781</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ilayer=0;ilayer<get_num_layers();++ilayer)</div>
-<div class="line"><a name="l02782"></a><span class="lineno"> 2782</span>               vlayers[ilayer]=*(layers++);</div>
-<div class="line"><a name="l02783"></a><span class="lineno"> 2783</span>           }</div>
-<div class="line"><a name="l02784"></a><span class="lineno"> 2784</span>         }</div>
-<div class="line"><a name="l02785"></a><span class="lineno"> 2785</span> </div>
-<div class="line"><a name="l02786"></a><span class="lineno"> 2786</span>         <span class="comment">/* Method: get_bias_array</span></div>
-<div class="line"><a name="l02787"></a><span class="lineno"> 2787</span> <span class="comment"></span></div>
-<div class="line"><a name="l02788"></a><span class="lineno"> 2788</span> <span class="comment">            Get the number of bias in each layer in the network.</span></div>
-<div class="line"><a name="l02789"></a><span class="lineno"> 2789</span> <span class="comment"></span></div>
-<div class="line"><a name="l02790"></a><span class="lineno"> 2790</span> <span class="comment">            The bias array must be preallocated to at least</span></div>
-<div class="line"><a name="l02791"></a><span class="lineno"> 2791</span> <span class="comment">            sizeof(unsigned int) * get_num_layers() long.</span></div>
-<div class="line"><a name="l02792"></a><span class="lineno"> 2792</span> <span class="comment"></span></div>
-<div class="line"><a name="l02793"></a><span class="lineno"> 2793</span> <span class="comment">            See also:</span></div>
-<div class="line"><a name="l02794"></a><span class="lineno"> 2794</span> <span class="comment">                <fann_get_bias_array></span></div>
-<div class="line"><a name="l02795"></a><span class="lineno"> 2795</span> <span class="comment"></span></div>
-<div class="line"><a name="l02796"></a><span class="lineno"> 2796</span> <span class="comment">            This function appears in FANN >= 2.1.0</span></div>
-<div class="line"><a name="l02797"></a><span class="lineno"> 2797</span> <span class="comment">        */</span></div>
-<div class="line"><a name="l02798"></a><span class="lineno"> 2798</span>         <span class="keywordtype">void</span> get_bias_array(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bias)</div>
-<div class="line"><a name="l02799"></a><span class="lineno"> 2799</span>         {</div>
-<div class="line"><a name="l02800"></a><span class="lineno"> 2800</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02801"></a><span class="lineno"> 2801</span>             {</div>
-<div class="line"><a name="l02802"></a><span class="lineno"> 2802</span>                 fann_get_bias_array(ann, bias);</div>
-<div class="line"><a name="l02803"></a><span class="lineno"> 2803</span>             }</div>
-<div class="line"><a name="l02804"></a><span class="lineno"> 2804</span>         }</div>
-<div class="line"><a name="l02805"></a><span class="lineno"> 2805</span> </div>
-<div class="line"><a name="l02806"></a><span class="lineno"> 2806</span>         <span class="comment">/* Method: get_connection_array</span></div>
-<div class="line"><a name="l02807"></a><span class="lineno"> 2807</span> <span class="comment"></span></div>
-<div class="line"><a name="l02808"></a><span class="lineno"> 2808</span> <span class="comment">            Get the connections in the network.</span></div>
-<div class="line"><a name="l02809"></a><span class="lineno"> 2809</span> <span class="comment"></span></div>
-<div class="line"><a name="l02810"></a><span class="lineno"> 2810</span> <span class="comment">            The connections array must be preallocated to at least</span></div>
-<div class="line"><a name="l02811"></a><span class="lineno"> 2811</span> <span class="comment">            sizeof(struct fann_connection) * get_total_connections() long.</span></div>
-<div class="line"><a name="l02812"></a><span class="lineno"> 2812</span> <span class="comment"></span></div>
-<div class="line"><a name="l02813"></a><span class="lineno"> 2813</span> <span class="comment">            See also:</span></div>
-<div class="line"><a name="l02814"></a><span class="lineno"> 2814</span> <span class="comment">                <fann_get_connection_array></span></div>
-<div class="line"><a name="l02815"></a><span class="lineno"> 2815</span> <span class="comment"></span></div>
-<div class="line"><a name="l02816"></a><span class="lineno"> 2816</span> <span class="comment">           This function appears in FANN >= 2.1.0</span></div>
-<div class="line"><a name="l02817"></a><span class="lineno"> 2817</span> <span class="comment">        */</span></div>
-<div class="line"><a name="l02818"></a><span class="lineno"> 2818</span>         <span class="keywordtype">void</span> get_connection_array(connection *connections)</div>
-<div class="line"><a name="l02819"></a><span class="lineno"> 2819</span>         {</div>
-<div class="line"><a name="l02820"></a><span class="lineno"> 2820</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02821"></a><span class="lineno"> 2821</span>             {</div>
-<div class="line"><a name="l02822"></a><span class="lineno"> 2822</span>                 fann_get_connection_array(ann, connections);</div>
-<div class="line"><a name="l02823"></a><span class="lineno"> 2823</span>             }</div>
-<div class="line"><a name="l02824"></a><span class="lineno"> 2824</span>         }</div>
-<div class="line"><a name="l02825"></a><span class="lineno"> 2825</span> </div>
-<div class="line"><a name="l02826"></a><span class="lineno"> 2826</span>       <span class="keywordtype">void</span> get_connection_array(std::vector<connection>& convector)</div>
-<div class="line"><a name="l02827"></a><span class="lineno"> 2827</span>         {</div>
-<div class="line"><a name="l02828"></a><span class="lineno"> 2828</span>           convector.clear();</div>
-<div class="line"><a name="l02829"></a><span class="lineno"> 2829</span>           <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02830"></a><span class="lineno"> 2830</span>             {</div>
-<div class="line"><a name="l02831"></a><span class="lineno"> 2831</span>               convector.resize(get_total_connections());</div>
-<div class="line"><a name="l02832"></a><span class="lineno"> 2832</span>               connection* connections=(connection*)calloc(get_total_connections(),<span class="keyword">sizeof</span>(connection));</div>
-<div class="line"><a name="l02833"></a><span class="lineno"> 2833</span>               fann_get_connection_array(ann, connections);</div>
-<div class="line"><a name="l02834"></a><span class="lineno"> 2834</span>               <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icon=0;icon<get_total_connections();++icon)</div>
-<div class="line"><a name="l02835"></a><span class="lineno"> 2835</span>                 convector[icon]=*(connections++);</div>
-<div class="line"><a name="l02836"></a><span class="lineno"> 2836</span>             }</div>
-<div class="line"><a name="l02837"></a><span class="lineno"> 2837</span>         }</div>
-<div class="line"><a name="l02838"></a><span class="lineno"> 2838</span> </div>
-<div class="line"><a name="l02839"></a><span class="lineno"> 2839</span>         <span class="comment">/* Method: set_weight_array</span></div>
-<div class="line"><a name="l02840"></a><span class="lineno"> 2840</span> <span class="comment"></span></div>
-<div class="line"><a name="l02841"></a><span class="lineno"> 2841</span> <span class="comment">            Set connections in the network.</span></div>
-<div class="line"><a name="l02842"></a><span class="lineno"> 2842</span> <span class="comment"></span></div>
-<div class="line"><a name="l02843"></a><span class="lineno"> 2843</span> <span class="comment">            Only the weights can be changed, connections and weights are ignored</span></div>
-<div class="line"><a name="l02844"></a><span class="lineno"> 2844</span> <span class="comment">            if they do not already exist in the network.</span></div>
-<div class="line"><a name="l02845"></a><span class="lineno"> 2845</span> <span class="comment"></span></div>
-<div class="line"><a name="l02846"></a><span class="lineno"> 2846</span> <span class="comment">            The array must have sizeof(struct fann_connection) * num_connections size.</span></div>
-<div class="line"><a name="l02847"></a><span class="lineno"> 2847</span> <span class="comment"></span></div>
-<div class="line"><a name="l02848"></a><span class="lineno"> 2848</span> <span class="comment">            See also:</span></div>
-<div class="line"><a name="l02849"></a><span class="lineno"> 2849</span> <span class="comment">                <fann_set_weight_array></span></div>
-<div class="line"><a name="l02850"></a><span class="lineno"> 2850</span> <span class="comment"></span></div>
-<div class="line"><a name="l02851"></a><span class="lineno"> 2851</span> <span class="comment">           This function appears in FANN >= 2.1.0</span></div>
-<div class="line"><a name="l02852"></a><span class="lineno"> 2852</span> <span class="comment">        */</span></div>
-<div class="line"><a name="l02853"></a><span class="lineno"> 2853</span>       <span class="keywordtype">void</span> set_weight_array(connection *connections, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_connections)</div>
-<div class="line"><a name="l02854"></a><span class="lineno"> 2854</span>         {</div>
-<div class="line"><a name="l02855"></a><span class="lineno"> 2855</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02856"></a><span class="lineno"> 2856</span>             {</div>
-<div class="line"><a name="l02857"></a><span class="lineno"> 2857</span>                 fann_set_weight_array(ann, connections, num_connections);</div>
-<div class="line"><a name="l02858"></a><span class="lineno"> 2858</span>             }</div>
-<div class="line"><a name="l02859"></a><span class="lineno"> 2859</span>         }</div>
-<div class="line"><a name="l02860"></a><span class="lineno"> 2860</span> </div>
-<div class="line"><a name="l02861"></a><span class="lineno"> 2861</span>       <span class="keywordtype">void</span> set_weight_array(std::vector<connection> convector)</div>
-<div class="line"><a name="l02862"></a><span class="lineno"> 2862</span>         {</div>
-<div class="line"><a name="l02863"></a><span class="lineno"> 2863</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02864"></a><span class="lineno"> 2864</span>             {</div>
-<div class="line"><a name="l02865"></a><span class="lineno"> 2865</span>               <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_connections=convector.size();</div>
-<div class="line"><a name="l02866"></a><span class="lineno"> 2866</span>               connection* connections=(connection*)calloc(num_connections,<span class="keyword">sizeof</span>(connection));</div>
-<div class="line"><a name="l02867"></a><span class="lineno"> 2867</span>               connections=&(convector[0]);</div>
-<div class="line"><a name="l02868"></a><span class="lineno"> 2868</span>               fann_set_weight_array(ann, connections, num_connections);</div>
-<div class="line"><a name="l02869"></a><span class="lineno"> 2869</span>             }</div>
-<div class="line"><a name="l02870"></a><span class="lineno"> 2870</span>         }</div>
-<div class="line"><a name="l02871"></a><span class="lineno"> 2871</span> </div>
-<div class="line"><a name="l02872"></a><span class="lineno"> 2872</span>         <span class="comment">/* Method: set_weight</span></div>
-<div class="line"><a name="l02873"></a><span class="lineno"> 2873</span> <span class="comment"></span></div>
-<div class="line"><a name="l02874"></a><span class="lineno"> 2874</span> <span class="comment">            Set a connection in the network.</span></div>
-<div class="line"><a name="l02875"></a><span class="lineno"> 2875</span> <span class="comment"></span></div>
-<div class="line"><a name="l02876"></a><span class="lineno"> 2876</span> <span class="comment">            Only the weights can be changed. The connection/weight is</span></div>
-<div class="line"><a name="l02877"></a><span class="lineno"> 2877</span> <span class="comment">            ignored if it does not already exist in the network.</span></div>
-<div class="line"><a name="l02878"></a><span class="lineno"> 2878</span> <span class="comment"></span></div>
-<div class="line"><a name="l02879"></a><span class="lineno"> 2879</span> <span class="comment">            See also:</span></div>
-<div class="line"><a name="l02880"></a><span class="lineno"> 2880</span> <span class="comment">                <fann_set_weight></span></div>
-<div class="line"><a name="l02881"></a><span class="lineno"> 2881</span> <span class="comment"></span></div>
-<div class="line"><a name="l02882"></a><span class="lineno"> 2882</span> <span class="comment">           This function appears in FANN >= 2.1.0</span></div>
-<div class="line"><a name="l02883"></a><span class="lineno"> 2883</span> <span class="comment">        */</span></div>
-<div class="line"><a name="l02884"></a><span class="lineno"> 2884</span>         <span class="keywordtype">void</span> set_weight(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> from_neuron, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> to_neuron, fann_type weight)</div>
-<div class="line"><a name="l02885"></a><span class="lineno"> 2885</span>         {</div>
-<div class="line"><a name="l02886"></a><span class="lineno"> 2886</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02887"></a><span class="lineno"> 2887</span>             {</div>
-<div class="line"><a name="l02888"></a><span class="lineno"> 2888</span>                 fann_set_weight(ann, from_neuron, to_neuron, weight);</div>
-<div class="line"><a name="l02889"></a><span class="lineno"> 2889</span>             }</div>
-<div class="line"><a name="l02890"></a><span class="lineno"> 2890</span>         }</div>
-<div class="line"><a name="l02891"></a><span class="lineno"> 2891</span> </div>
-<div class="line"><a name="l02892"></a><span class="lineno"> 2892</span>         <span class="comment">/*********************************************************************/</span></div>
-<div class="line"><a name="l02893"></a><span class="lineno"> 2893</span> </div>
-<div class="line"><a name="l02894"></a><span class="lineno"> 2894</span>         <span class="comment">/* Method: get_learning_momentum</span></div>
-<div class="line"><a name="l02895"></a><span class="lineno"> 2895</span> <span class="comment"></span></div>
-<div class="line"><a name="l02896"></a><span class="lineno"> 2896</span> <span class="comment">           Get the learning momentum.</span></div>
-<div class="line"><a name="l02897"></a><span class="lineno"> 2897</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02898"></a><span class="lineno"> 2898</span> <span class="comment">           The learning momentum can be used to speed up FANN::TRAIN_INCREMENTAL training.</span></div>
-<div class="line"><a name="l02899"></a><span class="lineno"> 2899</span> <span class="comment">           A too high momentum will however not benefit training. Setting momentum to 0 will</span></div>
-<div class="line"><a name="l02900"></a><span class="lineno"> 2900</span> <span class="comment">           be the same as not using the momentum parameter. The recommended value of this parameter</span></div>
-<div class="line"><a name="l02901"></a><span class="lineno"> 2901</span> <span class="comment">           is between 0.0 and 1.0.</span></div>
-<div class="line"><a name="l02902"></a><span class="lineno"> 2902</span> <span class="comment"></span></div>
-<div class="line"><a name="l02903"></a><span class="lineno"> 2903</span> <span class="comment">           The default momentum is 0.</span></div>
-<div class="line"><a name="l02904"></a><span class="lineno"> 2904</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02905"></a><span class="lineno"> 2905</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l02906"></a><span class="lineno"> 2906</span> <span class="comment">           <set_learning_momentum>, <set_training_algorithm></span></div>
-<div class="line"><a name="l02907"></a><span class="lineno"> 2907</span> <span class="comment"></span></div>
-<div class="line"><a name="l02908"></a><span class="lineno"> 2908</span> <span class="comment">           This function appears in FANN >= 2.0.0.      </span></div>
-<div class="line"><a name="l02909"></a><span class="lineno"> 2909</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l02910"></a><span class="lineno"> 2910</span>         <span class="keywordtype">float</span> get_learning_momentum()</div>
-<div class="line"><a name="l02911"></a><span class="lineno"> 2911</span>         {</div>
-<div class="line"><a name="l02912"></a><span class="lineno"> 2912</span>             <span class="keywordtype">float</span> learning_momentum = 0.0f;</div>
-<div class="line"><a name="l02913"></a><span class="lineno"> 2913</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02914"></a><span class="lineno"> 2914</span>             {</div>
-<div class="line"><a name="l02915"></a><span class="lineno"> 2915</span>                 learning_momentum = fann_get_learning_momentum(ann);</div>
-<div class="line"><a name="l02916"></a><span class="lineno"> 2916</span>             }</div>
-<div class="line"><a name="l02917"></a><span class="lineno"> 2917</span>             <span class="keywordflow">return</span> learning_momentum;</div>
-<div class="line"><a name="l02918"></a><span class="lineno"> 2918</span>         }</div>
-<div class="line"><a name="l02919"></a><span class="lineno"> 2919</span> </div>
-<div class="line"><a name="l02920"></a><span class="lineno"> 2920</span>         <span class="comment">/* Method: set_learning_momentum</span></div>
-<div class="line"><a name="l02921"></a><span class="lineno"> 2921</span> <span class="comment"></span></div>
-<div class="line"><a name="l02922"></a><span class="lineno"> 2922</span> <span class="comment">           Set the learning momentum.</span></div>
-<div class="line"><a name="l02923"></a><span class="lineno"> 2923</span> <span class="comment"></span></div>
-<div class="line"><a name="l02924"></a><span class="lineno"> 2924</span> <span class="comment">           More info available in <get_learning_momentum></span></div>
-<div class="line"><a name="l02925"></a><span class="lineno"> 2925</span> <span class="comment"></span></div>
-<div class="line"><a name="l02926"></a><span class="lineno"> 2926</span> <span class="comment">           This function appears in FANN >= 2.0.0.      </span></div>
-<div class="line"><a name="l02927"></a><span class="lineno"> 2927</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l02928"></a><span class="lineno"> 2928</span>         <span class="keywordtype">void</span> set_learning_momentum(<span class="keywordtype">float</span> learning_momentum)</div>
-<div class="line"><a name="l02929"></a><span class="lineno"> 2929</span>         {</div>
-<div class="line"><a name="l02930"></a><span class="lineno"> 2930</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02931"></a><span class="lineno"> 2931</span>             {</div>
-<div class="line"><a name="l02932"></a><span class="lineno"> 2932</span>                 fann_set_learning_momentum(ann, learning_momentum);</div>
-<div class="line"><a name="l02933"></a><span class="lineno"> 2933</span>             }</div>
-<div class="line"><a name="l02934"></a><span class="lineno"> 2934</span>         }</div>
-<div class="line"><a name="l02935"></a><span class="lineno"> 2935</span> </div>
-<div class="line"><a name="l02936"></a><span class="lineno"> 2936</span>         <span class="comment">/* Method: get_train_stop_function</span></div>
-<div class="line"><a name="l02937"></a><span class="lineno"> 2937</span> <span class="comment"></span></div>
-<div class="line"><a name="l02938"></a><span class="lineno"> 2938</span> <span class="comment">           Returns the the stop function used during training.</span></div>
-<div class="line"><a name="l02939"></a><span class="lineno"> 2939</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02940"></a><span class="lineno"> 2940</span> <span class="comment">           The stop function is described further in <FANN::stop_function_enum></span></div>
-<div class="line"><a name="l02941"></a><span class="lineno"> 2941</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02942"></a><span class="lineno"> 2942</span> <span class="comment">           The default stop function is FANN::STOPFUNC_MSE</span></div>
-<div class="line"><a name="l02943"></a><span class="lineno"> 2943</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02944"></a><span class="lineno"> 2944</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l02945"></a><span class="lineno"> 2945</span> <span class="comment">            <get_train_stop_function>, <get_bit_fail_limit></span></div>
-<div class="line"><a name="l02946"></a><span class="lineno"> 2946</span> <span class="comment">              </span></div>
-<div class="line"><a name="l02947"></a><span class="lineno"> 2947</span> <span class="comment">           This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l02948"></a><span class="lineno"> 2948</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l02949"></a><span class="lineno"> 2949</span>         stop_function_enum get_train_stop_function()</div>
-<div class="line"><a name="l02950"></a><span class="lineno"> 2950</span>         {</div>
-<div class="line"><a name="l02951"></a><span class="lineno"> 2951</span>             <span class="keyword">enum</span> fann_stopfunc_enum stopfunc = FANN_STOPFUNC_MSE;</div>
-<div class="line"><a name="l02952"></a><span class="lineno"> 2952</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02953"></a><span class="lineno"> 2953</span>             {</div>
-<div class="line"><a name="l02954"></a><span class="lineno"> 2954</span>                 stopfunc = fann_get_train_stop_function(ann);</div>
-<div class="line"><a name="l02955"></a><span class="lineno"> 2955</span>             }</div>
-<div class="line"><a name="l02956"></a><span class="lineno"> 2956</span>             <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>stop_function_enum<span class="keyword">></span>(stopfunc);</div>
-<div class="line"><a name="l02957"></a><span class="lineno"> 2957</span>         }</div>
-<div class="line"><a name="l02958"></a><span class="lineno"> 2958</span> </div>
-<div class="line"><a name="l02959"></a><span class="lineno"> 2959</span>         <span class="comment">/* Method: set_train_stop_function</span></div>
-<div class="line"><a name="l02960"></a><span class="lineno"> 2960</span> <span class="comment"></span></div>
-<div class="line"><a name="l02961"></a><span class="lineno"> 2961</span> <span class="comment">           Set the stop function used during training.</span></div>
-<div class="line"><a name="l02962"></a><span class="lineno"> 2962</span> <span class="comment"></span></div>
-<div class="line"><a name="l02963"></a><span class="lineno"> 2963</span> <span class="comment">           The stop function is described further in <FANN::stop_function_enum></span></div>
-<div class="line"><a name="l02964"></a><span class="lineno"> 2964</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02965"></a><span class="lineno"> 2965</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l02966"></a><span class="lineno"> 2966</span> <span class="comment">            <get_train_stop_function></span></div>
-<div class="line"><a name="l02967"></a><span class="lineno"> 2967</span> <span class="comment">              </span></div>
-<div class="line"><a name="l02968"></a><span class="lineno"> 2968</span> <span class="comment">           This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l02969"></a><span class="lineno"> 2969</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l02970"></a><span class="lineno"> 2970</span>         <span class="keywordtype">void</span> set_train_stop_function(stop_function_enum train_stop_function)</div>
-<div class="line"><a name="l02971"></a><span class="lineno"> 2971</span>         {</div>
-<div class="line"><a name="l02972"></a><span class="lineno"> 2972</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l02973"></a><span class="lineno"> 2973</span>             {</div>
-<div class="line"><a name="l02974"></a><span class="lineno"> 2974</span>                 fann_set_train_stop_function(ann,</div>
-<div class="line"><a name="l02975"></a><span class="lineno"> 2975</span>                     static_cast<enum fann_stopfunc_enum>(train_stop_function));</div>
-<div class="line"><a name="l02976"></a><span class="lineno"> 2976</span>             }</div>
-<div class="line"><a name="l02977"></a><span class="lineno"> 2977</span>         }</div>
-<div class="line"><a name="l02978"></a><span class="lineno"> 2978</span> </div>
-<div class="line"><a name="l02979"></a><span class="lineno"> 2979</span>         <span class="comment">/* Method: get_bit_fail_limit</span></div>
-<div class="line"><a name="l02980"></a><span class="lineno"> 2980</span> <span class="comment"></span></div>
-<div class="line"><a name="l02981"></a><span class="lineno"> 2981</span> <span class="comment">           Returns the bit fail limit used during training.</span></div>
-<div class="line"><a name="l02982"></a><span class="lineno"> 2982</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02983"></a><span class="lineno"> 2983</span> <span class="comment">           The bit fail limit is used during training when the <FANN::stop_function_enum> is set to FANN_STOPFUNC_BIT.</span></div>
-<div class="line"><a name="l02984"></a><span class="lineno"> 2984</span> <span class="comment"></span></div>
-<div class="line"><a name="l02985"></a><span class="lineno"> 2985</span> <span class="comment">           The limit is the maximum accepted difference between the desired output and the actual output during</span></div>
-<div class="line"><a name="l02986"></a><span class="lineno"> 2986</span> <span class="comment">           training. Each output that diverges more than this limit is counted as an error bit.</span></div>
-<div class="line"><a name="l02987"></a><span class="lineno"> 2987</span> <span class="comment">           This difference is divided by two when dealing with symmetric activation functions,</span></div>
-<div class="line"><a name="l02988"></a><span class="lineno"> 2988</span> <span class="comment">           so that symmetric and not symmetric activation functions can use the same limit.</span></div>
-<div class="line"><a name="l02989"></a><span class="lineno"> 2989</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02990"></a><span class="lineno"> 2990</span> <span class="comment">           The default bit fail limit is 0.35.</span></div>
-<div class="line"><a name="l02991"></a><span class="lineno"> 2991</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02992"></a><span class="lineno"> 2992</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l02993"></a><span class="lineno"> 2993</span> <span class="comment">            <set_bit_fail_limit></span></div>
-<div class="line"><a name="l02994"></a><span class="lineno"> 2994</span> <span class="comment">           </span></div>
-<div class="line"><a name="l02995"></a><span class="lineno"> 2995</span> <span class="comment">           This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l02996"></a><span class="lineno"> 2996</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l02997"></a><span class="lineno"> 2997</span>         fann_type get_bit_fail_limit()</div>
-<div class="line"><a name="l02998"></a><span class="lineno"> 2998</span>         {</div>
-<div class="line"><a name="l02999"></a><span class="lineno"> 2999</span>             fann_type bit_fail_limit = 0.0f;</div>
-<div class="line"><a name="l03000"></a><span class="lineno"> 3000</span> </div>
-<div class="line"><a name="l03001"></a><span class="lineno"> 3001</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03002"></a><span class="lineno"> 3002</span>             {</div>
-<div class="line"><a name="l03003"></a><span class="lineno"> 3003</span>                 bit_fail_limit = fann_get_bit_fail_limit(ann);</div>
-<div class="line"><a name="l03004"></a><span class="lineno"> 3004</span>             }</div>
-<div class="line"><a name="l03005"></a><span class="lineno"> 3005</span>             <span class="keywordflow">return</span> bit_fail_limit;</div>
-<div class="line"><a name="l03006"></a><span class="lineno"> 3006</span>         }</div>
-<div class="line"><a name="l03007"></a><span class="lineno"> 3007</span> </div>
-<div class="line"><a name="l03008"></a><span class="lineno"> 3008</span>         <span class="comment">/* Method: set_bit_fail_limit</span></div>
-<div class="line"><a name="l03009"></a><span class="lineno"> 3009</span> <span class="comment"></span></div>
-<div class="line"><a name="l03010"></a><span class="lineno"> 3010</span> <span class="comment">           Set the bit fail limit used during training.</span></div>
-<div class="line"><a name="l03011"></a><span class="lineno"> 3011</span> <span class="comment">          </span></div>
-<div class="line"><a name="l03012"></a><span class="lineno"> 3012</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03013"></a><span class="lineno"> 3013</span> <span class="comment">            <get_bit_fail_limit></span></div>
-<div class="line"><a name="l03014"></a><span class="lineno"> 3014</span> <span class="comment">           </span></div>
-<div class="line"><a name="l03015"></a><span class="lineno"> 3015</span> <span class="comment">           This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l03016"></a><span class="lineno"> 3016</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l03017"></a><span class="lineno"> 3017</span>         <span class="keywordtype">void</span> set_bit_fail_limit(fann_type bit_fail_limit)</div>
-<div class="line"><a name="l03018"></a><span class="lineno"> 3018</span>         {</div>
-<div class="line"><a name="l03019"></a><span class="lineno"> 3019</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03020"></a><span class="lineno"> 3020</span>             {</div>
-<div class="line"><a name="l03021"></a><span class="lineno"> 3021</span>                 fann_set_bit_fail_limit(ann, bit_fail_limit);</div>
-<div class="line"><a name="l03022"></a><span class="lineno"> 3022</span>             }</div>
-<div class="line"><a name="l03023"></a><span class="lineno"> 3023</span>         }</div>
-<div class="line"><a name="l03024"></a><span class="lineno"> 3024</span> </div>
-<div class="line"><a name="l03025"></a><span class="lineno"> 3025</span>         <span class="comment">/* Method: get_bit_fail</span></div>
-<div class="line"><a name="l03026"></a><span class="lineno"> 3026</span> <span class="comment">            </span></div>
-<div class="line"><a name="l03027"></a><span class="lineno"> 3027</span> <span class="comment">            The number of fail bits; means the number of output neurons which differ more </span></div>
-<div class="line"><a name="l03028"></a><span class="lineno"> 3028</span> <span class="comment">            than the bit fail limit (see <get_bit_fail_limit>, <set_bit_fail_limit>). </span></div>
-<div class="line"><a name="l03029"></a><span class="lineno"> 3029</span> <span class="comment">            The bits are counted in all of the training data, so this number can be higher than</span></div>
-<div class="line"><a name="l03030"></a><span class="lineno"> 3030</span> <span class="comment">            the number of training data.</span></div>
-<div class="line"><a name="l03031"></a><span class="lineno"> 3031</span> <span class="comment">            </span></div>
-<div class="line"><a name="l03032"></a><span class="lineno"> 3032</span> <span class="comment">            This value is reset by <reset_MSE> and updated by all the same functions which also</span></div>
-<div class="line"><a name="l03033"></a><span class="lineno"> 3033</span> <span class="comment">            updates the MSE value (e.g. <test_data>, <train_epoch>)</span></div>
-<div class="line"><a name="l03034"></a><span class="lineno"> 3034</span> <span class="comment">            </span></div>
-<div class="line"><a name="l03035"></a><span class="lineno"> 3035</span> <span class="comment">            See also:</span></div>
-<div class="line"><a name="l03036"></a><span class="lineno"> 3036</span> <span class="comment">                <FANN::stop_function_enum>, <get_MSE></span></div>
-<div class="line"><a name="l03037"></a><span class="lineno"> 3037</span> <span class="comment"></span></div>
-<div class="line"><a name="l03038"></a><span class="lineno"> 3038</span> <span class="comment">            This function appears in FANN >= 2.0.0</span></div>
-<div class="line"><a name="l03039"></a><span class="lineno"> 3039</span> <span class="comment">        */</span></div>
-<div class="line"><a name="l03040"></a><span class="lineno"> 3040</span>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> get_bit_fail()</div>
-<div class="line"><a name="l03041"></a><span class="lineno"> 3041</span>         {</div>
-<div class="line"><a name="l03042"></a><span class="lineno"> 3042</span>             <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bit_fail = 0;</div>
-<div class="line"><a name="l03043"></a><span class="lineno"> 3043</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03044"></a><span class="lineno"> 3044</span>             {</div>
-<div class="line"><a name="l03045"></a><span class="lineno"> 3045</span>                 bit_fail = fann_get_bit_fail(ann);</div>
-<div class="line"><a name="l03046"></a><span class="lineno"> 3046</span>             }</div>
-<div class="line"><a name="l03047"></a><span class="lineno"> 3047</span>             <span class="keywordflow">return</span> bit_fail;</div>
-<div class="line"><a name="l03048"></a><span class="lineno"> 3048</span>         }</div>
-<div class="line"><a name="l03049"></a><span class="lineno"> 3049</span> </div>
-<div class="line"><a name="l03050"></a><span class="lineno"> 3050</span>         <span class="comment">/*********************************************************************/</span></div>
-<div class="line"><a name="l03051"></a><span class="lineno"> 3051</span> </div>
-<div class="line"><a name="l03052"></a><span class="lineno"> 3052</span>         <span class="comment">/* Method: cascadetrain_on_data</span></div>
-<div class="line"><a name="l03053"></a><span class="lineno"> 3053</span> <span class="comment"></span></div>
-<div class="line"><a name="l03054"></a><span class="lineno"> 3054</span> <span class="comment">           Trains on an entire dataset, for a period of time using the Cascade2 training algorithm.</span></div>
-<div class="line"><a name="l03055"></a><span class="lineno"> 3055</span> <span class="comment">           This algorithm adds neurons to the neural network while training, which means that it</span></div>
-<div class="line"><a name="l03056"></a><span class="lineno"> 3056</span> <span class="comment">           needs to start with an ANN without any hidden layers. The neural network should also use</span></div>
-<div class="line"><a name="l03057"></a><span class="lineno"> 3057</span> <span class="comment">           shortcut connections, so <create_shortcut> should be used to create the ANN like this:</span></div>
-<div class="line"><a name="l03058"></a><span class="lineno"> 3058</span> <span class="comment">           >net.create_shortcut(2, train_data.num_input_train_data(), train_data.num_output_train_data());</span></div>
-<div class="line"><a name="l03059"></a><span class="lineno"> 3059</span> <span class="comment">           </span></div>
-<div class="line"><a name="l03060"></a><span class="lineno"> 3060</span> <span class="comment">           This training uses the parameters set using the set_cascade_..., but it also uses another</span></div>
-<div class="line"><a name="l03061"></a><span class="lineno"> 3061</span> <span class="comment">           training algorithm as it's internal training algorithm. This algorithm can be set to either</span></div>
-<div class="line"><a name="l03062"></a><span class="lineno"> 3062</span> <span class="comment">           FANN::TRAIN_RPROP or FANN::TRAIN_QUICKPROP by <set_training_algorithm>, and the parameters </span></div>
-<div class="line"><a name="l03063"></a><span class="lineno"> 3063</span> <span class="comment">           set for these training algorithms will also affect the cascade training.</span></div>
-<div class="line"><a name="l03064"></a><span class="lineno"> 3064</span> <span class="comment">           </span></div>
-<div class="line"><a name="l03065"></a><span class="lineno"> 3065</span> <span class="comment">           Parameters:</span></div>
-<div class="line"><a name="l03066"></a><span class="lineno"> 3066</span> <span class="comment">                data - The data, which should be used during training</span></div>
-<div class="line"><a name="l03067"></a><span class="lineno"> 3067</span> <span class="comment">                max_neuron - The maximum number of neurons to be added to neural network</span></div>
-<div class="line"><a name="l03068"></a><span class="lineno"> 3068</span> <span class="comment">                neurons_between_reports - The number of neurons between printing a status report to stdout.</span></div>
-<div class="line"><a name="l03069"></a><span class="lineno"> 3069</span> <span class="comment">                    A value of zero means no reports should be printed.</span></div>
-<div class="line"><a name="l03070"></a><span class="lineno"> 3070</span> <span class="comment">                desired_error - The desired <fann_get_MSE> or <fann_get_bit_fail>, depending on which stop function</span></div>
-<div class="line"><a name="l03071"></a><span class="lineno"> 3071</span> <span class="comment">                    is chosen by <fann_set_train_stop_function>.</span></div>
-<div class="line"><a name="l03072"></a><span class="lineno"> 3072</span> <span class="comment"></span></div>
-<div class="line"><a name="l03073"></a><span class="lineno"> 3073</span> <span class="comment">            Instead of printing out reports every neurons_between_reports, a callback function can be called </span></div>
-<div class="line"><a name="l03074"></a><span class="lineno"> 3074</span> <span class="comment">            (see <set_callback>).</span></div>
-<div class="line"><a name="l03075"></a><span class="lineno"> 3075</span> <span class="comment">            </span></div>
-<div class="line"><a name="l03076"></a><span class="lineno"> 3076</span> <span class="comment">            See also:</span></div>
-<div class="line"><a name="l03077"></a><span class="lineno"> 3077</span> <span class="comment">                <train_on_data>, <cascadetrain_on_file>, <fann_cascadetrain_on_data></span></div>
-<div class="line"><a name="l03078"></a><span class="lineno"> 3078</span> <span class="comment"></span></div>
-<div class="line"><a name="l03079"></a><span class="lineno"> 3079</span> <span class="comment">            This function appears in FANN >= 2.0.0. </span></div>
-<div class="line"><a name="l03080"></a><span class="lineno"> 3080</span> <span class="comment">        */</span></div>
-<div class="line"><a name="l03081"></a><span class="lineno"> 3081</span>         <span class="keywordtype">void</span> cascadetrain_on_data(<span class="keyword">const</span> <a class="code" href="classFANN_1_1training__data.html">training_data</a> &data, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> max_neurons,</div>
-<div class="line"><a name="l03082"></a><span class="lineno"> 3082</span>             <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> neurons_between_reports, <span class="keywordtype">float</span> desired_error)</div>
-<div class="line"><a name="l03083"></a><span class="lineno"> 3083</span>         {</div>
-<div class="line"><a name="l03084"></a><span class="lineno"> 3084</span>             <span class="keywordflow">if</span> ((ann != NULL) && (data.train_data != NULL))</div>
-<div class="line"><a name="l03085"></a><span class="lineno"> 3085</span>             {</div>
-<div class="line"><a name="l03086"></a><span class="lineno"> 3086</span>                 fann_cascadetrain_on_data(ann, data.train_data, max_neurons,</div>
-<div class="line"><a name="l03087"></a><span class="lineno"> 3087</span>                     neurons_between_reports, desired_error);</div>
-<div class="line"><a name="l03088"></a><span class="lineno"> 3088</span>             }</div>
-<div class="line"><a name="l03089"></a><span class="lineno"> 3089</span>         }</div>
-<div class="line"><a name="l03090"></a><span class="lineno"> 3090</span> </div>
-<div class="line"><a name="l03091"></a><span class="lineno"> 3091</span>         <span class="comment">/* Method: cascadetrain_on_file</span></div>
-<div class="line"><a name="l03092"></a><span class="lineno"> 3092</span> <span class="comment">           </span></div>
-<div class="line"><a name="l03093"></a><span class="lineno"> 3093</span> <span class="comment">           Does the same as <cascadetrain_on_data>, but reads the training data directly from a file.</span></div>
-<div class="line"><a name="l03094"></a><span class="lineno"> 3094</span> <span class="comment">           </span></div>
-<div class="line"><a name="l03095"></a><span class="lineno"> 3095</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03096"></a><span class="lineno"> 3096</span> <span class="comment">                <fann_cascadetrain_on_data>, <fann_cascadetrain_on_file></span></div>
-<div class="line"><a name="l03097"></a><span class="lineno"> 3097</span> <span class="comment"></span></div>
-<div class="line"><a name="l03098"></a><span class="lineno"> 3098</span> <span class="comment">            This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l03099"></a><span class="lineno"> 3099</span> <span class="comment">        */</span> </div>
-<div class="line"><a name="l03100"></a><span class="lineno"> 3100</span>         <span class="keywordtype">void</span> cascadetrain_on_file(<span class="keyword">const</span> std::string &filename, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> max_neurons,</div>
-<div class="line"><a name="l03101"></a><span class="lineno"> 3101</span>             <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> neurons_between_reports, <span class="keywordtype">float</span> desired_error)</div>
-<div class="line"><a name="l03102"></a><span class="lineno"> 3102</span>         {</div>
-<div class="line"><a name="l03103"></a><span class="lineno"> 3103</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03104"></a><span class="lineno"> 3104</span>             {</div>
-<div class="line"><a name="l03105"></a><span class="lineno"> 3105</span>                 fann_cascadetrain_on_file(ann, filename.c_str(),</div>
-<div class="line"><a name="l03106"></a><span class="lineno"> 3106</span>                     max_neurons, neurons_between_reports, desired_error);</div>
-<div class="line"><a name="l03107"></a><span class="lineno"> 3107</span>             }</div>
-<div class="line"><a name="l03108"></a><span class="lineno"> 3108</span>         }</div>
-<div class="line"><a name="l03109"></a><span class="lineno"> 3109</span> </div>
-<div class="line"><a name="l03110"></a><span class="lineno"> 3110</span>         <span class="comment">/* Method: get_cascade_output_change_fraction</span></div>
-<div class="line"><a name="l03111"></a><span class="lineno"> 3111</span> <span class="comment"></span></div>
-<div class="line"><a name="l03112"></a><span class="lineno"> 3112</span> <span class="comment">           The cascade output change fraction is a number between 0 and 1 determining how large a fraction</span></div>
-<div class="line"><a name="l03113"></a><span class="lineno"> 3113</span> <span class="comment">           the <get_MSE> value should change within <get_cascade_output_stagnation_epochs> during</span></div>
-<div class="line"><a name="l03114"></a><span class="lineno"> 3114</span> <span class="comment">           training of the output connections, in order for the training not to stagnate. If the training </span></div>
-<div class="line"><a name="l03115"></a><span class="lineno"> 3115</span> <span class="comment">           stagnates, the training of the output connections will be ended and new candidates will be prepared.</span></div>
-<div class="line"><a name="l03116"></a><span class="lineno"> 3116</span> <span class="comment">           </span></div>
-<div class="line"><a name="l03117"></a><span class="lineno"> 3117</span> <span class="comment">           This means:</span></div>
-<div class="line"><a name="l03118"></a><span class="lineno"> 3118</span> <span class="comment">           If the MSE does not change by a fraction of <get_cascade_output_change_fraction> during a </span></div>
-<div class="line"><a name="l03119"></a><span class="lineno"> 3119</span> <span class="comment">           period of <get_cascade_output_stagnation_epochs>, the training of the output connections</span></div>
-<div class="line"><a name="l03120"></a><span class="lineno"> 3120</span> <span class="comment">           is stopped because the training has stagnated.</span></div>
-<div class="line"><a name="l03121"></a><span class="lineno"> 3121</span> <span class="comment"></span></div>
-<div class="line"><a name="l03122"></a><span class="lineno"> 3122</span> <span class="comment">           If the cascade output change fraction is low, the output connections will be trained more and if the</span></div>
-<div class="line"><a name="l03123"></a><span class="lineno"> 3123</span> <span class="comment">           fraction is high they will be trained less.</span></div>
-<div class="line"><a name="l03124"></a><span class="lineno"> 3124</span> <span class="comment">           </span></div>
-<div class="line"><a name="l03125"></a><span class="lineno"> 3125</span> <span class="comment">           The default cascade output change fraction is 0.01, which is equalent to a 1% change in MSE.</span></div>
-<div class="line"><a name="l03126"></a><span class="lineno"> 3126</span> <span class="comment"></span></div>
-<div class="line"><a name="l03127"></a><span class="lineno"> 3127</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03128"></a><span class="lineno"> 3128</span> <span class="comment">                <set_cascade_output_change_fraction>, <get_MSE>,</span></div>
-<div class="line"><a name="l03129"></a><span class="lineno"> 3129</span> <span class="comment">                <get_cascade_output_stagnation_epochs>, <fann_get_cascade_output_change_fraction></span></div>
-<div class="line"><a name="l03130"></a><span class="lineno"> 3130</span> <span class="comment"></span></div>
-<div class="line"><a name="l03131"></a><span class="lineno"> 3131</span> <span class="comment">            This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l03132"></a><span class="lineno"> 3132</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l03133"></a><span class="lineno"> 3133</span>         <span class="keywordtype">float</span> get_cascade_output_change_fraction()</div>
-<div class="line"><a name="l03134"></a><span class="lineno"> 3134</span>         {</div>
-<div class="line"><a name="l03135"></a><span class="lineno"> 3135</span>             <span class="keywordtype">float</span> change_fraction = 0.0f;</div>
-<div class="line"><a name="l03136"></a><span class="lineno"> 3136</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03137"></a><span class="lineno"> 3137</span>             {</div>
-<div class="line"><a name="l03138"></a><span class="lineno"> 3138</span>                 change_fraction = fann_get_cascade_output_change_fraction(ann);</div>
-<div class="line"><a name="l03139"></a><span class="lineno"> 3139</span>             }</div>
-<div class="line"><a name="l03140"></a><span class="lineno"> 3140</span>             <span class="keywordflow">return</span> change_fraction;</div>
-<div class="line"><a name="l03141"></a><span class="lineno"> 3141</span>         }</div>
-<div class="line"><a name="l03142"></a><span class="lineno"> 3142</span> </div>
-<div class="line"><a name="l03143"></a><span class="lineno"> 3143</span>         <span class="comment">/* Method: set_cascade_output_change_fraction</span></div>
-<div class="line"><a name="l03144"></a><span class="lineno"> 3144</span> <span class="comment"></span></div>
-<div class="line"><a name="l03145"></a><span class="lineno"> 3145</span> <span class="comment">           Sets the cascade output change fraction.</span></div>
-<div class="line"><a name="l03146"></a><span class="lineno"> 3146</span> <span class="comment">           </span></div>
-<div class="line"><a name="l03147"></a><span class="lineno"> 3147</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03148"></a><span class="lineno"> 3148</span> <span class="comment">                <get_cascade_output_change_fraction>, <fann_set_cascade_output_change_fraction></span></div>
-<div class="line"><a name="l03149"></a><span class="lineno"> 3149</span> <span class="comment"></span></div>
-<div class="line"><a name="l03150"></a><span class="lineno"> 3150</span> <span class="comment">            This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l03151"></a><span class="lineno"> 3151</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l03152"></a><span class="lineno"> 3152</span>         <span class="keywordtype">void</span> set_cascade_output_change_fraction(<span class="keywordtype">float</span> cascade_output_change_fraction)</div>
-<div class="line"><a name="l03153"></a><span class="lineno"> 3153</span>         {</div>
-<div class="line"><a name="l03154"></a><span class="lineno"> 3154</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03155"></a><span class="lineno"> 3155</span>             {</div>
-<div class="line"><a name="l03156"></a><span class="lineno"> 3156</span>                 fann_set_cascade_output_change_fraction(ann, cascade_output_change_fraction);</div>
-<div class="line"><a name="l03157"></a><span class="lineno"> 3157</span>             }</div>
-<div class="line"><a name="l03158"></a><span class="lineno"> 3158</span>         }</div>
-<div class="line"><a name="l03159"></a><span class="lineno"> 3159</span> </div>
-<div class="line"><a name="l03160"></a><span class="lineno"> 3160</span>         <span class="comment">/* Method: get_cascade_output_stagnation_epochs</span></div>
-<div class="line"><a name="l03161"></a><span class="lineno"> 3161</span> <span class="comment"></span></div>
-<div class="line"><a name="l03162"></a><span class="lineno"> 3162</span> <span class="comment">           The number of cascade output stagnation epochs determines the number of epochs training is allowed to</span></div>
-<div class="line"><a name="l03163"></a><span class="lineno"> 3163</span> <span class="comment">           continue without changing the MSE by a fraction of <get_cascade_output_change_fraction>.</span></div>
-<div class="line"><a name="l03164"></a><span class="lineno"> 3164</span> <span class="comment">           </span></div>
-<div class="line"><a name="l03165"></a><span class="lineno"> 3165</span> <span class="comment">           See more info about this parameter in <get_cascade_output_change_fraction>.</span></div>
-<div class="line"><a name="l03166"></a><span class="lineno"> 3166</span> <span class="comment">           </span></div>
-<div class="line"><a name="l03167"></a><span class="lineno"> 3167</span> <span class="comment">           The default number of cascade output stagnation epochs is 12.</span></div>
-<div class="line"><a name="l03168"></a><span class="lineno"> 3168</span> <span class="comment"></span></div>
-<div class="line"><a name="l03169"></a><span class="lineno"> 3169</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03170"></a><span class="lineno"> 3170</span> <span class="comment">                <set_cascade_output_stagnation_epochs>, <get_cascade_output_change_fraction>,</span></div>
-<div class="line"><a name="l03171"></a><span class="lineno"> 3171</span> <span class="comment">                <fann_get_cascade_output_stagnation_epochs></span></div>
-<div class="line"><a name="l03172"></a><span class="lineno"> 3172</span> <span class="comment"></span></div>
-<div class="line"><a name="l03173"></a><span class="lineno"> 3173</span> <span class="comment">            This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l03174"></a><span class="lineno"> 3174</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l03175"></a><span class="lineno"> 3175</span>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> get_cascade_output_stagnation_epochs()</div>
-<div class="line"><a name="l03176"></a><span class="lineno"> 3176</span>         {</div>
-<div class="line"><a name="l03177"></a><span class="lineno"> 3177</span>             <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> stagnation_epochs = 0;</div>
-<div class="line"><a name="l03178"></a><span class="lineno"> 3178</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03179"></a><span class="lineno"> 3179</span>             {</div>
-<div class="line"><a name="l03180"></a><span class="lineno"> 3180</span>                 stagnation_epochs = fann_get_cascade_output_stagnation_epochs(ann);</div>
-<div class="line"><a name="l03181"></a><span class="lineno"> 3181</span>             }</div>
-<div class="line"><a name="l03182"></a><span class="lineno"> 3182</span>             <span class="keywordflow">return</span> stagnation_epochs;</div>
-<div class="line"><a name="l03183"></a><span class="lineno"> 3183</span>         }</div>
-<div class="line"><a name="l03184"></a><span class="lineno"> 3184</span> </div>
-<div class="line"><a name="l03185"></a><span class="lineno"> 3185</span>         <span class="comment">/* Method: set_cascade_output_stagnation_epochs</span></div>
-<div class="line"><a name="l03186"></a><span class="lineno"> 3186</span> <span class="comment"></span></div>
-<div class="line"><a name="l03187"></a><span class="lineno"> 3187</span> <span class="comment">           Sets the number of cascade output stagnation epochs.</span></div>
-<div class="line"><a name="l03188"></a><span class="lineno"> 3188</span> <span class="comment">           </span></div>
-<div class="line"><a name="l03189"></a><span class="lineno"> 3189</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03190"></a><span class="lineno"> 3190</span> <span class="comment">                <get_cascade_output_stagnation_epochs>, <fann_set_cascade_output_stagnation_epochs></span></div>
-<div class="line"><a name="l03191"></a><span class="lineno"> 3191</span> <span class="comment"></span></div>
-<div class="line"><a name="l03192"></a><span class="lineno"> 3192</span> <span class="comment">            This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l03193"></a><span class="lineno"> 3193</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l03194"></a><span class="lineno"> 3194</span>         <span class="keywordtype">void</span> set_cascade_output_stagnation_epochs(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cascade_output_stagnation_epochs)</div>
-<div class="line"><a name="l03195"></a><span class="lineno"> 3195</span>         {</div>
-<div class="line"><a name="l03196"></a><span class="lineno"> 3196</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03197"></a><span class="lineno"> 3197</span>             {</div>
-<div class="line"><a name="l03198"></a><span class="lineno"> 3198</span>                 fann_set_cascade_output_stagnation_epochs(ann, cascade_output_stagnation_epochs);</div>
-<div class="line"><a name="l03199"></a><span class="lineno"> 3199</span>             }</div>
-<div class="line"><a name="l03200"></a><span class="lineno"> 3200</span>         }</div>
-<div class="line"><a name="l03201"></a><span class="lineno"> 3201</span> </div>
-<div class="line"><a name="l03202"></a><span class="lineno"> 3202</span>         <span class="comment">/* Method: get_cascade_candidate_change_fraction</span></div>
-<div class="line"><a name="l03203"></a><span class="lineno"> 3203</span> <span class="comment"></span></div>
-<div class="line"><a name="l03204"></a><span class="lineno"> 3204</span> <span class="comment">           The cascade candidate change fraction is a number between 0 and 1 determining how large a fraction</span></div>
-<div class="line"><a name="l03205"></a><span class="lineno"> 3205</span> <span class="comment">           the <get_MSE> value should change within <get_cascade_candidate_stagnation_epochs> during</span></div>
-<div class="line"><a name="l03206"></a><span class="lineno"> 3206</span> <span class="comment">           training of the candidate neurons, in order for the training not to stagnate. If the training </span></div>
-<div class="line"><a name="l03207"></a><span class="lineno"> 3207</span> <span class="comment">           stagnates, the training of the candidate neurons will be ended and the best candidate will be selected.</span></div>
-<div class="line"><a name="l03208"></a><span class="lineno"> 3208</span> <span class="comment">           </span></div>
-<div class="line"><a name="l03209"></a><span class="lineno"> 3209</span> <span class="comment">           This means:</span></div>
-<div class="line"><a name="l03210"></a><span class="lineno"> 3210</span> <span class="comment">           If the MSE does not change by a fraction of <get_cascade_candidate_change_fraction> during a </span></div>
-<div class="line"><a name="l03211"></a><span class="lineno"> 3211</span> <span class="comment">           period of <get_cascade_candidate_stagnation_epochs>, the training of the candidate neurons</span></div>
-<div class="line"><a name="l03212"></a><span class="lineno"> 3212</span> <span class="comment">           is stopped because the training has stagnated.</span></div>
-<div class="line"><a name="l03213"></a><span class="lineno"> 3213</span> <span class="comment"></span></div>
-<div class="line"><a name="l03214"></a><span class="lineno"> 3214</span> <span class="comment">           If the cascade candidate change fraction is low, the candidate neurons will be trained more and if the</span></div>
-<div class="line"><a name="l03215"></a><span class="lineno"> 3215</span> <span class="comment">           fraction is high they will be trained less.</span></div>
-<div class="line"><a name="l03216"></a><span class="lineno"> 3216</span> <span class="comment">           </span></div>
-<div class="line"><a name="l03217"></a><span class="lineno"> 3217</span> <span class="comment">           The default cascade candidate change fraction is 0.01, which is equalent to a 1% change in MSE.</span></div>
-<div class="line"><a name="l03218"></a><span class="lineno"> 3218</span> <span class="comment"></span></div>
-<div class="line"><a name="l03219"></a><span class="lineno"> 3219</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03220"></a><span class="lineno"> 3220</span> <span class="comment">                <set_cascade_candidate_change_fraction>, <get_MSE>,</span></div>
-<div class="line"><a name="l03221"></a><span class="lineno"> 3221</span> <span class="comment">                <get_cascade_candidate_stagnation_epochs>, <fann_get_cascade_candidate_change_fraction></span></div>
-<div class="line"><a name="l03222"></a><span class="lineno"> 3222</span> <span class="comment"></span></div>
-<div class="line"><a name="l03223"></a><span class="lineno"> 3223</span> <span class="comment">            This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l03224"></a><span class="lineno"> 3224</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l03225"></a><span class="lineno"> 3225</span>         <span class="keywordtype">float</span> get_cascade_candidate_change_fraction()</div>
-<div class="line"><a name="l03226"></a><span class="lineno"> 3226</span>         {</div>
-<div class="line"><a name="l03227"></a><span class="lineno"> 3227</span>             <span class="keywordtype">float</span> change_fraction = 0.0f;</div>
-<div class="line"><a name="l03228"></a><span class="lineno"> 3228</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03229"></a><span class="lineno"> 3229</span>             {</div>
-<div class="line"><a name="l03230"></a><span class="lineno"> 3230</span>                 change_fraction = fann_get_cascade_candidate_change_fraction(ann);</div>
-<div class="line"><a name="l03231"></a><span class="lineno"> 3231</span>             }</div>
-<div class="line"><a name="l03232"></a><span class="lineno"> 3232</span>             <span class="keywordflow">return</span> change_fraction;</div>
-<div class="line"><a name="l03233"></a><span class="lineno"> 3233</span>         }</div>
-<div class="line"><a name="l03234"></a><span class="lineno"> 3234</span> </div>
-<div class="line"><a name="l03235"></a><span class="lineno"> 3235</span>         <span class="comment">/* Method: set_cascade_candidate_change_fraction</span></div>
-<div class="line"><a name="l03236"></a><span class="lineno"> 3236</span> <span class="comment"></span></div>
-<div class="line"><a name="l03237"></a><span class="lineno"> 3237</span> <span class="comment">           Sets the cascade candidate change fraction.</span></div>
-<div class="line"><a name="l03238"></a><span class="lineno"> 3238</span> <span class="comment">           </span></div>
-<div class="line"><a name="l03239"></a><span class="lineno"> 3239</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03240"></a><span class="lineno"> 3240</span> <span class="comment">                <get_cascade_candidate_change_fraction>,</span></div>
-<div class="line"><a name="l03241"></a><span class="lineno"> 3241</span> <span class="comment">                <fann_set_cascade_candidate_change_fraction></span></div>
-<div class="line"><a name="l03242"></a><span class="lineno"> 3242</span> <span class="comment"></span></div>
-<div class="line"><a name="l03243"></a><span class="lineno"> 3243</span> <span class="comment">            This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l03244"></a><span class="lineno"> 3244</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l03245"></a><span class="lineno"> 3245</span>         <span class="keywordtype">void</span> set_cascade_candidate_change_fraction(<span class="keywordtype">float</span> cascade_candidate_change_fraction)</div>
-<div class="line"><a name="l03246"></a><span class="lineno"> 3246</span>         {</div>
-<div class="line"><a name="l03247"></a><span class="lineno"> 3247</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03248"></a><span class="lineno"> 3248</span>             {</div>
-<div class="line"><a name="l03249"></a><span class="lineno"> 3249</span>                 fann_set_cascade_candidate_change_fraction(ann, cascade_candidate_change_fraction);</div>
-<div class="line"><a name="l03250"></a><span class="lineno"> 3250</span>             }</div>
-<div class="line"><a name="l03251"></a><span class="lineno"> 3251</span>         }</div>
-<div class="line"><a name="l03252"></a><span class="lineno"> 3252</span> </div>
-<div class="line"><a name="l03253"></a><span class="lineno"> 3253</span>         <span class="comment">/* Method: get_cascade_candidate_stagnation_epochs</span></div>
-<div class="line"><a name="l03254"></a><span class="lineno"> 3254</span> <span class="comment"></span></div>
-<div class="line"><a name="l03255"></a><span class="lineno"> 3255</span> <span class="comment">           The number of cascade candidate stagnation epochs determines the number of epochs training is allowed to</span></div>
-<div class="line"><a name="l03256"></a><span class="lineno"> 3256</span> <span class="comment">           continue without changing the MSE by a fraction of <get_cascade_candidate_change_fraction>.</span></div>
-<div class="line"><a name="l03257"></a><span class="lineno"> 3257</span> <span class="comment">           </span></div>
-<div class="line"><a name="l03258"></a><span class="lineno"> 3258</span> <span class="comment">           See more info about this parameter in <get_cascade_candidate_change_fraction>.</span></div>
-<div class="line"><a name="l03259"></a><span class="lineno"> 3259</span> <span class="comment"></span></div>
-<div class="line"><a name="l03260"></a><span class="lineno"> 3260</span> <span class="comment">           The default number of cascade candidate stagnation epochs is 12.</span></div>
-<div class="line"><a name="l03261"></a><span class="lineno"> 3261</span> <span class="comment"></span></div>
-<div class="line"><a name="l03262"></a><span class="lineno"> 3262</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03263"></a><span class="lineno"> 3263</span> <span class="comment">                <set_cascade_candidate_stagnation_epochs>, <get_cascade_candidate_change_fraction>,</span></div>
-<div class="line"><a name="l03264"></a><span class="lineno"> 3264</span> <span class="comment">                <fann_get_cascade_candidate_stagnation_epochs></span></div>
-<div class="line"><a name="l03265"></a><span class="lineno"> 3265</span> <span class="comment"></span></div>
-<div class="line"><a name="l03266"></a><span class="lineno"> 3266</span> <span class="comment">            This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l03267"></a><span class="lineno"> 3267</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l03268"></a><span class="lineno"> 3268</span>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> get_cascade_candidate_stagnation_epochs()</div>
-<div class="line"><a name="l03269"></a><span class="lineno"> 3269</span>         {</div>
-<div class="line"><a name="l03270"></a><span class="lineno"> 3270</span>             <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> stagnation_epochs = 0;</div>
-<div class="line"><a name="l03271"></a><span class="lineno"> 3271</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03272"></a><span class="lineno"> 3272</span>             {</div>
-<div class="line"><a name="l03273"></a><span class="lineno"> 3273</span>                 stagnation_epochs = fann_get_cascade_candidate_stagnation_epochs(ann);</div>
-<div class="line"><a name="l03274"></a><span class="lineno"> 3274</span>             }</div>
-<div class="line"><a name="l03275"></a><span class="lineno"> 3275</span>             <span class="keywordflow">return</span> stagnation_epochs;</div>
-<div class="line"><a name="l03276"></a><span class="lineno"> 3276</span>         }</div>
-<div class="line"><a name="l03277"></a><span class="lineno"> 3277</span> </div>
-<div class="line"><a name="l03278"></a><span class="lineno"> 3278</span>         <span class="comment">/* Method: set_cascade_candidate_stagnation_epochs</span></div>
-<div class="line"><a name="l03279"></a><span class="lineno"> 3279</span> <span class="comment"></span></div>
-<div class="line"><a name="l03280"></a><span class="lineno"> 3280</span> <span class="comment">           Sets the number of cascade candidate stagnation epochs.</span></div>
-<div class="line"><a name="l03281"></a><span class="lineno"> 3281</span> <span class="comment">           </span></div>
-<div class="line"><a name="l03282"></a><span class="lineno"> 3282</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03283"></a><span class="lineno"> 3283</span> <span class="comment">                <get_cascade_candidate_stagnation_epochs>,</span></div>
-<div class="line"><a name="l03284"></a><span class="lineno"> 3284</span> <span class="comment">                <fann_set_cascade_candidate_stagnation_epochs></span></div>
-<div class="line"><a name="l03285"></a><span class="lineno"> 3285</span> <span class="comment"></span></div>
-<div class="line"><a name="l03286"></a><span class="lineno"> 3286</span> <span class="comment">            This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l03287"></a><span class="lineno"> 3287</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l03288"></a><span class="lineno"> 3288</span>         <span class="keywordtype">void</span> set_cascade_candidate_stagnation_epochs(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cascade_candidate_stagnation_epochs)</div>
-<div class="line"><a name="l03289"></a><span class="lineno"> 3289</span>         {</div>
-<div class="line"><a name="l03290"></a><span class="lineno"> 3290</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03291"></a><span class="lineno"> 3291</span>             {</div>
-<div class="line"><a name="l03292"></a><span class="lineno"> 3292</span>                 fann_set_cascade_candidate_stagnation_epochs(ann, cascade_candidate_stagnation_epochs);</div>
-<div class="line"><a name="l03293"></a><span class="lineno"> 3293</span>             }</div>
-<div class="line"><a name="l03294"></a><span class="lineno"> 3294</span>         }</div>
-<div class="line"><a name="l03295"></a><span class="lineno"> 3295</span> </div>
-<div class="line"><a name="l03296"></a><span class="lineno"> 3296</span>         <span class="comment">/* Method: get_cascade_weight_multiplier</span></div>
-<div class="line"><a name="l03297"></a><span class="lineno"> 3297</span> <span class="comment"></span></div>
-<div class="line"><a name="l03298"></a><span class="lineno"> 3298</span> <span class="comment">           The weight multiplier is a parameter which is used to multiply the weights from the candidate neuron</span></div>
-<div class="line"><a name="l03299"></a><span class="lineno"> 3299</span> <span class="comment">           before adding the neuron to the neural network. This parameter is usually between 0 and 1, and is used</span></div>
-<div class="line"><a name="l03300"></a><span class="lineno"> 3300</span> <span class="comment">           to make the training a bit less aggressive.</span></div>
-<div class="line"><a name="l03301"></a><span class="lineno"> 3301</span> <span class="comment"></span></div>
-<div class="line"><a name="l03302"></a><span class="lineno"> 3302</span> <span class="comment">           The default weight multiplier is 0.4</span></div>
-<div class="line"><a name="l03303"></a><span class="lineno"> 3303</span> <span class="comment"></span></div>
-<div class="line"><a name="l03304"></a><span class="lineno"> 3304</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03305"></a><span class="lineno"> 3305</span> <span class="comment">                <set_cascade_weight_multiplier>, <fann_get_cascade_weight_multiplier></span></div>
-<div class="line"><a name="l03306"></a><span class="lineno"> 3306</span> <span class="comment"></span></div>
-<div class="line"><a name="l03307"></a><span class="lineno"> 3307</span> <span class="comment">            This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l03308"></a><span class="lineno"> 3308</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l03309"></a><span class="lineno"> 3309</span>         fann_type get_cascade_weight_multiplier()</div>
-<div class="line"><a name="l03310"></a><span class="lineno"> 3310</span>         {</div>
-<div class="line"><a name="l03311"></a><span class="lineno"> 3311</span>             fann_type weight_multiplier = 0;</div>
-<div class="line"><a name="l03312"></a><span class="lineno"> 3312</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03313"></a><span class="lineno"> 3313</span>             {</div>
-<div class="line"><a name="l03314"></a><span class="lineno"> 3314</span>                 weight_multiplier = fann_get_cascade_weight_multiplier(ann);</div>
-<div class="line"><a name="l03315"></a><span class="lineno"> 3315</span>             }</div>
-<div class="line"><a name="l03316"></a><span class="lineno"> 3316</span>             <span class="keywordflow">return</span> weight_multiplier;</div>
-<div class="line"><a name="l03317"></a><span class="lineno"> 3317</span>         }</div>
-<div class="line"><a name="l03318"></a><span class="lineno"> 3318</span> </div>
-<div class="line"><a name="l03319"></a><span class="lineno"> 3319</span>         <span class="comment">/* Method: set_cascade_weight_multiplier</span></div>
-<div class="line"><a name="l03320"></a><span class="lineno"> 3320</span> <span class="comment">           </span></div>
-<div class="line"><a name="l03321"></a><span class="lineno"> 3321</span> <span class="comment">           Sets the weight multiplier.</span></div>
-<div class="line"><a name="l03322"></a><span class="lineno"> 3322</span> <span class="comment">           </span></div>
-<div class="line"><a name="l03323"></a><span class="lineno"> 3323</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03324"></a><span class="lineno"> 3324</span> <span class="comment">                <get_cascade_weight_multiplier>, <fann_set_cascade_weight_multiplier></span></div>
-<div class="line"><a name="l03325"></a><span class="lineno"> 3325</span> <span class="comment"></span></div>
-<div class="line"><a name="l03326"></a><span class="lineno"> 3326</span> <span class="comment">            This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l03327"></a><span class="lineno"> 3327</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l03328"></a><span class="lineno"> 3328</span>         <span class="keywordtype">void</span> set_cascade_weight_multiplier(fann_type cascade_weight_multiplier)</div>
-<div class="line"><a name="l03329"></a><span class="lineno"> 3329</span>         {</div>
-<div class="line"><a name="l03330"></a><span class="lineno"> 3330</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03331"></a><span class="lineno"> 3331</span>             {</div>
-<div class="line"><a name="l03332"></a><span class="lineno"> 3332</span>                 fann_set_cascade_weight_multiplier(ann, cascade_weight_multiplier);</div>
-<div class="line"><a name="l03333"></a><span class="lineno"> 3333</span>             }</div>
-<div class="line"><a name="l03334"></a><span class="lineno"> 3334</span>         }</div>
-<div class="line"><a name="l03335"></a><span class="lineno"> 3335</span> </div>
-<div class="line"><a name="l03336"></a><span class="lineno"> 3336</span>         <span class="comment">/* Method: get_cascade_candidate_limit</span></div>
-<div class="line"><a name="l03337"></a><span class="lineno"> 3337</span> <span class="comment"></span></div>
-<div class="line"><a name="l03338"></a><span class="lineno"> 3338</span> <span class="comment">           The candidate limit is a limit for how much the candidate neuron may be trained.</span></div>
-<div class="line"><a name="l03339"></a><span class="lineno"> 3339</span> <span class="comment">           The limit is a limit on the proportion between the MSE and candidate score.</span></div>
-<div class="line"><a name="l03340"></a><span class="lineno"> 3340</span> <span class="comment">           </span></div>
-<div class="line"><a name="l03341"></a><span class="lineno"> 3341</span> <span class="comment">           Set this to a lower value to avoid overfitting and to a higher if overfitting is</span></div>
-<div class="line"><a name="l03342"></a><span class="lineno"> 3342</span> <span class="comment">           not a problem.</span></div>
-<div class="line"><a name="l03343"></a><span class="lineno"> 3343</span> <span class="comment">           </span></div>
-<div class="line"><a name="l03344"></a><span class="lineno"> 3344</span> <span class="comment">           The default candidate limit is 1000.0</span></div>
-<div class="line"><a name="l03345"></a><span class="lineno"> 3345</span> <span class="comment"></span></div>
-<div class="line"><a name="l03346"></a><span class="lineno"> 3346</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03347"></a><span class="lineno"> 3347</span> <span class="comment">                <set_cascade_candidate_limit>, <fann_get_cascade_candidate_limit></span></div>
-<div class="line"><a name="l03348"></a><span class="lineno"> 3348</span> <span class="comment"></span></div>
-<div class="line"><a name="l03349"></a><span class="lineno"> 3349</span> <span class="comment">            This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l03350"></a><span class="lineno"> 3350</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l03351"></a><span class="lineno"> 3351</span>         fann_type get_cascade_candidate_limit()</div>
-<div class="line"><a name="l03352"></a><span class="lineno"> 3352</span>         {</div>
-<div class="line"><a name="l03353"></a><span class="lineno"> 3353</span>             fann_type candidate_limit = 0;</div>
-<div class="line"><a name="l03354"></a><span class="lineno"> 3354</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03355"></a><span class="lineno"> 3355</span>             {</div>
-<div class="line"><a name="l03356"></a><span class="lineno"> 3356</span>                 candidate_limit = fann_get_cascade_candidate_limit(ann);</div>
-<div class="line"><a name="l03357"></a><span class="lineno"> 3357</span>             }</div>
-<div class="line"><a name="l03358"></a><span class="lineno"> 3358</span>             <span class="keywordflow">return</span> candidate_limit;</div>
-<div class="line"><a name="l03359"></a><span class="lineno"> 3359</span>         }</div>
-<div class="line"><a name="l03360"></a><span class="lineno"> 3360</span> </div>
-<div class="line"><a name="l03361"></a><span class="lineno"> 3361</span>         <span class="comment">/* Method: set_cascade_candidate_limit</span></div>
-<div class="line"><a name="l03362"></a><span class="lineno"> 3362</span> <span class="comment"></span></div>
-<div class="line"><a name="l03363"></a><span class="lineno"> 3363</span> <span class="comment">           Sets the candidate limit.</span></div>
-<div class="line"><a name="l03364"></a><span class="lineno"> 3364</span> <span class="comment">          </span></div>
-<div class="line"><a name="l03365"></a><span class="lineno"> 3365</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03366"></a><span class="lineno"> 3366</span> <span class="comment">                <get_cascade_candidate_limit>, <fann_set_cascade_candidate_limit></span></div>
-<div class="line"><a name="l03367"></a><span class="lineno"> 3367</span> <span class="comment"></span></div>
-<div class="line"><a name="l03368"></a><span class="lineno"> 3368</span> <span class="comment">            This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l03369"></a><span class="lineno"> 3369</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l03370"></a><span class="lineno"> 3370</span>         <span class="keywordtype">void</span> set_cascade_candidate_limit(fann_type cascade_candidate_limit)</div>
-<div class="line"><a name="l03371"></a><span class="lineno"> 3371</span>         {</div>
-<div class="line"><a name="l03372"></a><span class="lineno"> 3372</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03373"></a><span class="lineno"> 3373</span>             {</div>
-<div class="line"><a name="l03374"></a><span class="lineno"> 3374</span>                 fann_set_cascade_candidate_limit(ann, cascade_candidate_limit);</div>
-<div class="line"><a name="l03375"></a><span class="lineno"> 3375</span>             }</div>
-<div class="line"><a name="l03376"></a><span class="lineno"> 3376</span>         }</div>
-<div class="line"><a name="l03377"></a><span class="lineno"> 3377</span> </div>
-<div class="line"><a name="l03378"></a><span class="lineno"> 3378</span>         <span class="comment">/* Method: get_cascade_max_out_epochs</span></div>
-<div class="line"><a name="l03379"></a><span class="lineno"> 3379</span> <span class="comment"></span></div>
-<div class="line"><a name="l03380"></a><span class="lineno"> 3380</span> <span class="comment">           The maximum out epochs determines the maximum number of epochs the output connections</span></div>
-<div class="line"><a name="l03381"></a><span class="lineno"> 3381</span> <span class="comment">           may be trained after adding a new candidate neuron.</span></div>
-<div class="line"><a name="l03382"></a><span class="lineno"> 3382</span> <span class="comment">           </span></div>
-<div class="line"><a name="l03383"></a><span class="lineno"> 3383</span> <span class="comment">           The default max out epochs is 150</span></div>
-<div class="line"><a name="l03384"></a><span class="lineno"> 3384</span> <span class="comment"></span></div>
-<div class="line"><a name="l03385"></a><span class="lineno"> 3385</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03386"></a><span class="lineno"> 3386</span> <span class="comment">                <set_cascade_max_out_epochs>, <fann_get_cascade_max_out_epochs></span></div>
-<div class="line"><a name="l03387"></a><span class="lineno"> 3387</span> <span class="comment"></span></div>
-<div class="line"><a name="l03388"></a><span class="lineno"> 3388</span> <span class="comment">            This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l03389"></a><span class="lineno"> 3389</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l03390"></a><span class="lineno"> 3390</span>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> get_cascade_max_out_epochs()</div>
-<div class="line"><a name="l03391"></a><span class="lineno"> 3391</span>         {</div>
-<div class="line"><a name="l03392"></a><span class="lineno"> 3392</span>             <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> max_out_epochs = 0;</div>
-<div class="line"><a name="l03393"></a><span class="lineno"> 3393</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03394"></a><span class="lineno"> 3394</span>             {</div>
-<div class="line"><a name="l03395"></a><span class="lineno"> 3395</span>                 max_out_epochs = fann_get_cascade_max_out_epochs(ann);</div>
-<div class="line"><a name="l03396"></a><span class="lineno"> 3396</span>             }</div>
-<div class="line"><a name="l03397"></a><span class="lineno"> 3397</span>             <span class="keywordflow">return</span> max_out_epochs;</div>
-<div class="line"><a name="l03398"></a><span class="lineno"> 3398</span>         }</div>
-<div class="line"><a name="l03399"></a><span class="lineno"> 3399</span> </div>
-<div class="line"><a name="l03400"></a><span class="lineno"> 3400</span>         <span class="comment">/* Method: set_cascade_max_out_epochs</span></div>
-<div class="line"><a name="l03401"></a><span class="lineno"> 3401</span> <span class="comment"></span></div>
-<div class="line"><a name="l03402"></a><span class="lineno"> 3402</span> <span class="comment">           Sets the maximum out epochs.</span></div>
-<div class="line"><a name="l03403"></a><span class="lineno"> 3403</span> <span class="comment"></span></div>
-<div class="line"><a name="l03404"></a><span class="lineno"> 3404</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03405"></a><span class="lineno"> 3405</span> <span class="comment">                <get_cascade_max_out_epochs>, <fann_set_cascade_max_out_epochs></span></div>
-<div class="line"><a name="l03406"></a><span class="lineno"> 3406</span> <span class="comment"></span></div>
-<div class="line"><a name="l03407"></a><span class="lineno"> 3407</span> <span class="comment">            This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l03408"></a><span class="lineno"> 3408</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l03409"></a><span class="lineno"> 3409</span>         <span class="keywordtype">void</span> set_cascade_max_out_epochs(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cascade_max_out_epochs)</div>
-<div class="line"><a name="l03410"></a><span class="lineno"> 3410</span>         {</div>
-<div class="line"><a name="l03411"></a><span class="lineno"> 3411</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03412"></a><span class="lineno"> 3412</span>             {</div>
-<div class="line"><a name="l03413"></a><span class="lineno"> 3413</span>                 fann_set_cascade_max_out_epochs(ann, cascade_max_out_epochs);</div>
-<div class="line"><a name="l03414"></a><span class="lineno"> 3414</span>             }</div>
-<div class="line"><a name="l03415"></a><span class="lineno"> 3415</span>         }</div>
-<div class="line"><a name="l03416"></a><span class="lineno"> 3416</span> </div>
-<div class="line"><a name="l03417"></a><span class="lineno"> 3417</span>         <span class="comment">/* Method: get_cascade_max_cand_epochs</span></div>
-<div class="line"><a name="l03418"></a><span class="lineno"> 3418</span> <span class="comment"></span></div>
-<div class="line"><a name="l03419"></a><span class="lineno"> 3419</span> <span class="comment">           The maximum candidate epochs determines the maximum number of epochs the input </span></div>
-<div class="line"><a name="l03420"></a><span class="lineno"> 3420</span> <span class="comment">           connections to the candidates may be trained before adding a new candidate neuron.</span></div>
-<div class="line"><a name="l03421"></a><span class="lineno"> 3421</span> <span class="comment">           </span></div>
-<div class="line"><a name="l03422"></a><span class="lineno"> 3422</span> <span class="comment">           The default max candidate epochs is 150</span></div>
-<div class="line"><a name="l03423"></a><span class="lineno"> 3423</span> <span class="comment"></span></div>
-<div class="line"><a name="l03424"></a><span class="lineno"> 3424</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03425"></a><span class="lineno"> 3425</span> <span class="comment">                <set_cascade_max_cand_epochs>, <fann_get_cascade_max_cand_epochs></span></div>
-<div class="line"><a name="l03426"></a><span class="lineno"> 3426</span> <span class="comment"></span></div>
-<div class="line"><a name="l03427"></a><span class="lineno"> 3427</span> <span class="comment">            This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l03428"></a><span class="lineno"> 3428</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l03429"></a><span class="lineno"> 3429</span>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> get_cascade_max_cand_epochs()</div>
-<div class="line"><a name="l03430"></a><span class="lineno"> 3430</span>         {</div>
-<div class="line"><a name="l03431"></a><span class="lineno"> 3431</span>             <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> max_cand_epochs = 0;</div>
-<div class="line"><a name="l03432"></a><span class="lineno"> 3432</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03433"></a><span class="lineno"> 3433</span>             {</div>
-<div class="line"><a name="l03434"></a><span class="lineno"> 3434</span>                 max_cand_epochs = fann_get_cascade_max_cand_epochs(ann);</div>
-<div class="line"><a name="l03435"></a><span class="lineno"> 3435</span>             }</div>
-<div class="line"><a name="l03436"></a><span class="lineno"> 3436</span>             <span class="keywordflow">return</span> max_cand_epochs;</div>
-<div class="line"><a name="l03437"></a><span class="lineno"> 3437</span>         }</div>
-<div class="line"><a name="l03438"></a><span class="lineno"> 3438</span> </div>
-<div class="line"><a name="l03439"></a><span class="lineno"> 3439</span>         <span class="comment">/* Method: set_cascade_max_cand_epochs</span></div>
-<div class="line"><a name="l03440"></a><span class="lineno"> 3440</span> <span class="comment"></span></div>
-<div class="line"><a name="l03441"></a><span class="lineno"> 3441</span> <span class="comment">           Sets the max candidate epochs.</span></div>
-<div class="line"><a name="l03442"></a><span class="lineno"> 3442</span> <span class="comment">          </span></div>
-<div class="line"><a name="l03443"></a><span class="lineno"> 3443</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03444"></a><span class="lineno"> 3444</span> <span class="comment">                <get_cascade_max_cand_epochs>, <fann_set_cascade_max_cand_epochs></span></div>
-<div class="line"><a name="l03445"></a><span class="lineno"> 3445</span> <span class="comment"></span></div>
-<div class="line"><a name="l03446"></a><span class="lineno"> 3446</span> <span class="comment">            This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l03447"></a><span class="lineno"> 3447</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l03448"></a><span class="lineno"> 3448</span>         <span class="keywordtype">void</span> set_cascade_max_cand_epochs(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cascade_max_cand_epochs)</div>
-<div class="line"><a name="l03449"></a><span class="lineno"> 3449</span>         {</div>
-<div class="line"><a name="l03450"></a><span class="lineno"> 3450</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03451"></a><span class="lineno"> 3451</span>             {</div>
-<div class="line"><a name="l03452"></a><span class="lineno"> 3452</span>                 fann_set_cascade_max_cand_epochs(ann, cascade_max_cand_epochs);</div>
-<div class="line"><a name="l03453"></a><span class="lineno"> 3453</span>             }</div>
-<div class="line"><a name="l03454"></a><span class="lineno"> 3454</span>         }</div>
-<div class="line"><a name="l03455"></a><span class="lineno"> 3455</span> </div>
-<div class="line"><a name="l03456"></a><span class="lineno"> 3456</span>         <span class="comment">/* Method: get_cascade_num_candidates</span></div>
-<div class="line"><a name="l03457"></a><span class="lineno"> 3457</span> <span class="comment"></span></div>
-<div class="line"><a name="l03458"></a><span class="lineno"> 3458</span> <span class="comment">           The number of candidates used during training (calculated by multiplying <get_cascade_activation_functions_count>,</span></div>
-<div class="line"><a name="l03459"></a><span class="lineno"> 3459</span> <span class="comment">           <get_cascade_activation_steepnesses_count> and <get_cascade_num_candidate_groups>). </span></div>
-<div class="line"><a name="l03460"></a><span class="lineno"> 3460</span> <span class="comment"></span></div>
-<div class="line"><a name="l03461"></a><span class="lineno"> 3461</span> <span class="comment">           The actual candidates is defined by the <get_cascade_activation_functions> and </span></div>
-<div class="line"><a name="l03462"></a><span class="lineno"> 3462</span> <span class="comment">           <get_cascade_activation_steepnesses> arrays. These arrays define the activation functions </span></div>
-<div class="line"><a name="l03463"></a><span class="lineno"> 3463</span> <span class="comment">           and activation steepnesses used for the candidate neurons. If there are 2 activation functions</span></div>
-<div class="line"><a name="l03464"></a><span class="lineno"> 3464</span> <span class="comment">           in the activation function array and 3 steepnesses in the steepness array, then there will be </span></div>
-<div class="line"><a name="l03465"></a><span class="lineno"> 3465</span> <span class="comment">           2x3=6 different candidates which will be trained. These 6 different candidates can be copied into</span></div>
-<div class="line"><a name="l03466"></a><span class="lineno"> 3466</span> <span class="comment">           several candidate groups, where the only difference between these groups is the initial weights.</span></div>
-<div class="line"><a name="l03467"></a><span class="lineno"> 3467</span> <span class="comment">           If the number of groups is set to 2, then the number of candidate neurons will be 2x3x2=12. The </span></div>
-<div class="line"><a name="l03468"></a><span class="lineno"> 3468</span> <span class="comment">           number of candidate groups is defined by <set_cascade_num_candidate_groups>.</span></div>
-<div class="line"><a name="l03469"></a><span class="lineno"> 3469</span> <span class="comment"></span></div>
-<div class="line"><a name="l03470"></a><span class="lineno"> 3470</span> <span class="comment">           The default number of candidates is 6x4x2 = 48</span></div>
-<div class="line"><a name="l03471"></a><span class="lineno"> 3471</span> <span class="comment"></span></div>
-<div class="line"><a name="l03472"></a><span class="lineno"> 3472</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03473"></a><span class="lineno"> 3473</span> <span class="comment">                <get_cascade_activation_functions>, <get_cascade_activation_functions_count>, </span></div>
-<div class="line"><a name="l03474"></a><span class="lineno"> 3474</span> <span class="comment">                <get_cascade_activation_steepnesses>, <get_cascade_activation_steepnesses_count>,</span></div>
-<div class="line"><a name="l03475"></a><span class="lineno"> 3475</span> <span class="comment">                <get_cascade_num_candidate_groups>, <fann_get_cascade_num_candidates></span></div>
-<div class="line"><a name="l03476"></a><span class="lineno"> 3476</span> <span class="comment"></span></div>
-<div class="line"><a name="l03477"></a><span class="lineno"> 3477</span> <span class="comment">            This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l03478"></a><span class="lineno"> 3478</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l03479"></a><span class="lineno"> 3479</span>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> get_cascade_num_candidates()</div>
-<div class="line"><a name="l03480"></a><span class="lineno"> 3480</span>         {</div>
-<div class="line"><a name="l03481"></a><span class="lineno"> 3481</span>             <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_candidates = 0;</div>
-<div class="line"><a name="l03482"></a><span class="lineno"> 3482</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03483"></a><span class="lineno"> 3483</span>             {</div>
-<div class="line"><a name="l03484"></a><span class="lineno"> 3484</span>                 num_candidates = fann_get_cascade_num_candidates(ann);</div>
-<div class="line"><a name="l03485"></a><span class="lineno"> 3485</span>             }</div>
-<div class="line"><a name="l03486"></a><span class="lineno"> 3486</span>             <span class="keywordflow">return</span> num_candidates;</div>
-<div class="line"><a name="l03487"></a><span class="lineno"> 3487</span>         }</div>
-<div class="line"><a name="l03488"></a><span class="lineno"> 3488</span> </div>
-<div class="line"><a name="l03489"></a><span class="lineno"> 3489</span>         <span class="comment">/* Method: get_cascade_activation_functions_count</span></div>
-<div class="line"><a name="l03490"></a><span class="lineno"> 3490</span> <span class="comment"></span></div>
-<div class="line"><a name="l03491"></a><span class="lineno"> 3491</span> <span class="comment">           The number of activation functions in the <get_cascade_activation_functions> array.</span></div>
-<div class="line"><a name="l03492"></a><span class="lineno"> 3492</span> <span class="comment"></span></div>
-<div class="line"><a name="l03493"></a><span class="lineno"> 3493</span> <span class="comment">           The default number of activation functions is 6.</span></div>
-<div class="line"><a name="l03494"></a><span class="lineno"> 3494</span> <span class="comment"></span></div>
-<div class="line"><a name="l03495"></a><span class="lineno"> 3495</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03496"></a><span class="lineno"> 3496</span> <span class="comment">                <get_cascade_activation_functions>, <set_cascade_activation_functions>,</span></div>
-<div class="line"><a name="l03497"></a><span class="lineno"> 3497</span> <span class="comment">                <fann_get_cascade_activation_functions_count></span></div>
-<div class="line"><a name="l03498"></a><span class="lineno"> 3498</span> <span class="comment"></span></div>
-<div class="line"><a name="l03499"></a><span class="lineno"> 3499</span> <span class="comment">            This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l03500"></a><span class="lineno"> 3500</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l03501"></a><span class="lineno"> 3501</span>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> get_cascade_activation_functions_count()</div>
-<div class="line"><a name="l03502"></a><span class="lineno"> 3502</span>         {</div>
-<div class="line"><a name="l03503"></a><span class="lineno"> 3503</span>             <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> activation_functions_count = 0;</div>
-<div class="line"><a name="l03504"></a><span class="lineno"> 3504</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03505"></a><span class="lineno"> 3505</span>             {</div>
-<div class="line"><a name="l03506"></a><span class="lineno"> 3506</span>                 activation_functions_count = fann_get_cascade_activation_functions_count(ann);</div>
-<div class="line"><a name="l03507"></a><span class="lineno"> 3507</span>             }</div>
-<div class="line"><a name="l03508"></a><span class="lineno"> 3508</span>             <span class="keywordflow">return</span> activation_functions_count;</div>
-<div class="line"><a name="l03509"></a><span class="lineno"> 3509</span>         }</div>
-<div class="line"><a name="l03510"></a><span class="lineno"> 3510</span> </div>
-<div class="line"><a name="l03511"></a><span class="lineno"> 3511</span>         <span class="comment">/* Method: get_cascade_activation_functions</span></div>
-<div class="line"><a name="l03512"></a><span class="lineno"> 3512</span> <span class="comment"></span></div>
-<div class="line"><a name="l03513"></a><span class="lineno"> 3513</span> <span class="comment">           The cascade activation functions array is an array of the different activation functions used by</span></div>
-<div class="line"><a name="l03514"></a><span class="lineno"> 3514</span> <span class="comment">           the candidates. </span></div>
-<div class="line"><a name="l03515"></a><span class="lineno"> 3515</span> <span class="comment">           </span></div>
-<div class="line"><a name="l03516"></a><span class="lineno"> 3516</span> <span class="comment">           See <get_cascade_num_candidates> for a description of which candidate neurons will be </span></div>
-<div class="line"><a name="l03517"></a><span class="lineno"> 3517</span> <span class="comment">           generated by this array.</span></div>
-<div class="line"><a name="l03518"></a><span class="lineno"> 3518</span> <span class="comment">           </span></div>
-<div class="line"><a name="l03519"></a><span class="lineno"> 3519</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03520"></a><span class="lineno"> 3520</span> <span class="comment">                <get_cascade_activation_functions_count>, <set_cascade_activation_functions>,</span></div>
-<div class="line"><a name="l03521"></a><span class="lineno"> 3521</span> <span class="comment">                <FANN::activation_function_enum></span></div>
-<div class="line"><a name="l03522"></a><span class="lineno"> 3522</span> <span class="comment"></span></div>
-<div class="line"><a name="l03523"></a><span class="lineno"> 3523</span> <span class="comment">            This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l03524"></a><span class="lineno"> 3524</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l03525"></a><span class="lineno"> 3525</span>         activation_function_enum * get_cascade_activation_functions()</div>
-<div class="line"><a name="l03526"></a><span class="lineno"> 3526</span>         {</div>
-<div class="line"><a name="l03527"></a><span class="lineno"> 3527</span>             <span class="keyword">enum</span> fann_activationfunc_enum *activation_functions = NULL;</div>
-<div class="line"><a name="l03528"></a><span class="lineno"> 3528</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03529"></a><span class="lineno"> 3529</span>             {</div>
-<div class="line"><a name="l03530"></a><span class="lineno"> 3530</span>                 activation_functions = fann_get_cascade_activation_functions(ann);</div>
-<div class="line"><a name="l03531"></a><span class="lineno"> 3531</span>             }</div>
-<div class="line"><a name="l03532"></a><span class="lineno"> 3532</span>             <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>activation_function_enum *<span class="keyword">></span>(activation_functions);</div>
-<div class="line"><a name="l03533"></a><span class="lineno"> 3533</span>         }</div>
-<div class="line"><a name="l03534"></a><span class="lineno"> 3534</span> </div>
-<div class="line"><a name="l03535"></a><span class="lineno"> 3535</span>         <span class="comment">/* Method: set_cascade_activation_functions</span></div>
-<div class="line"><a name="l03536"></a><span class="lineno"> 3536</span> <span class="comment"></span></div>
-<div class="line"><a name="l03537"></a><span class="lineno"> 3537</span> <span class="comment">           Sets the array of cascade candidate activation functions. The array must be just as long</span></div>
-<div class="line"><a name="l03538"></a><span class="lineno"> 3538</span> <span class="comment">           as defined by the count.</span></div>
-<div class="line"><a name="l03539"></a><span class="lineno"> 3539</span> <span class="comment"></span></div>
-<div class="line"><a name="l03540"></a><span class="lineno"> 3540</span> <span class="comment">           See <get_cascade_num_candidates> for a description of which candidate neurons will be </span></div>
-<div class="line"><a name="l03541"></a><span class="lineno"> 3541</span> <span class="comment">           generated by this array.</span></div>
-<div class="line"><a name="l03542"></a><span class="lineno"> 3542</span> <span class="comment"></span></div>
-<div class="line"><a name="l03543"></a><span class="lineno"> 3543</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03544"></a><span class="lineno"> 3544</span> <span class="comment">                <get_cascade_activation_steepnesses_count>, <get_cascade_activation_steepnesses>,</span></div>
-<div class="line"><a name="l03545"></a><span class="lineno"> 3545</span> <span class="comment">                <fann_set_cascade_activation_functions></span></div>
-<div class="line"><a name="l03546"></a><span class="lineno"> 3546</span> <span class="comment"></span></div>
-<div class="line"><a name="l03547"></a><span class="lineno"> 3547</span> <span class="comment">            This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l03548"></a><span class="lineno"> 3548</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l03549"></a><span class="lineno"> 3549</span>         <span class="keywordtype">void</span> set_cascade_activation_functions(activation_function_enum *cascade_activation_functions,</div>
-<div class="line"><a name="l03550"></a><span class="lineno"> 3550</span>             <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cascade_activation_functions_count)</div>
-<div class="line"><a name="l03551"></a><span class="lineno"> 3551</span>         {</div>
-<div class="line"><a name="l03552"></a><span class="lineno"> 3552</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03553"></a><span class="lineno"> 3553</span>             {</div>
-<div class="line"><a name="l03554"></a><span class="lineno"> 3554</span>                 fann_set_cascade_activation_functions(ann,</div>
-<div class="line"><a name="l03555"></a><span class="lineno"> 3555</span>                     reinterpret_cast<enum fann_activationfunc_enum *>(cascade_activation_functions),</div>
-<div class="line"><a name="l03556"></a><span class="lineno"> 3556</span>                     cascade_activation_functions_count);</div>
-<div class="line"><a name="l03557"></a><span class="lineno"> 3557</span>             }</div>
-<div class="line"><a name="l03558"></a><span class="lineno"> 3558</span>         }</div>
-<div class="line"><a name="l03559"></a><span class="lineno"> 3559</span> </div>
-<div class="line"><a name="l03560"></a><span class="lineno"> 3560</span>         <span class="comment">/* Method: get_cascade_activation_steepnesses_count</span></div>
-<div class="line"><a name="l03561"></a><span class="lineno"> 3561</span> <span class="comment"></span></div>
-<div class="line"><a name="l03562"></a><span class="lineno"> 3562</span> <span class="comment">           The number of activation steepnesses in the <get_cascade_activation_functions> array.</span></div>
-<div class="line"><a name="l03563"></a><span class="lineno"> 3563</span> <span class="comment"></span></div>
-<div class="line"><a name="l03564"></a><span class="lineno"> 3564</span> <span class="comment">           The default number of activation steepnesses is 4.</span></div>
-<div class="line"><a name="l03565"></a><span class="lineno"> 3565</span> <span class="comment"></span></div>
-<div class="line"><a name="l03566"></a><span class="lineno"> 3566</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03567"></a><span class="lineno"> 3567</span> <span class="comment">                <get_cascade_activation_steepnesses>, <set_cascade_activation_functions>,</span></div>
-<div class="line"><a name="l03568"></a><span class="lineno"> 3568</span> <span class="comment">                <fann_get_cascade_activation_steepnesses_count></span></div>
-<div class="line"><a name="l03569"></a><span class="lineno"> 3569</span> <span class="comment"></span></div>
-<div class="line"><a name="l03570"></a><span class="lineno"> 3570</span> <span class="comment">            This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l03571"></a><span class="lineno"> 3571</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l03572"></a><span class="lineno"> 3572</span>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> get_cascade_activation_steepnesses_count()</div>
-<div class="line"><a name="l03573"></a><span class="lineno"> 3573</span>         {</div>
-<div class="line"><a name="l03574"></a><span class="lineno"> 3574</span>             <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> activation_steepness_count = 0;</div>
-<div class="line"><a name="l03575"></a><span class="lineno"> 3575</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03576"></a><span class="lineno"> 3576</span>             {</div>
-<div class="line"><a name="l03577"></a><span class="lineno"> 3577</span>                 activation_steepness_count = fann_get_cascade_activation_steepnesses_count(ann);</div>
-<div class="line"><a name="l03578"></a><span class="lineno"> 3578</span>             }</div>
-<div class="line"><a name="l03579"></a><span class="lineno"> 3579</span>             <span class="keywordflow">return</span> activation_steepness_count;</div>
-<div class="line"><a name="l03580"></a><span class="lineno"> 3580</span>         }</div>
-<div class="line"><a name="l03581"></a><span class="lineno"> 3581</span> </div>
-<div class="line"><a name="l03582"></a><span class="lineno"> 3582</span>         <span class="comment">/* Method: get_cascade_activation_steepnesses</span></div>
-<div class="line"><a name="l03583"></a><span class="lineno"> 3583</span> <span class="comment"></span></div>
-<div class="line"><a name="l03584"></a><span class="lineno"> 3584</span> <span class="comment">           The cascade activation steepnesses array is an array of the different activation functions used by</span></div>
-<div class="line"><a name="l03585"></a><span class="lineno"> 3585</span> <span class="comment">           the candidates.</span></div>
-<div class="line"><a name="l03586"></a><span class="lineno"> 3586</span> <span class="comment"></span></div>
-<div class="line"><a name="l03587"></a><span class="lineno"> 3587</span> <span class="comment">           See <get_cascade_num_candidates> for a description of which candidate neurons will be </span></div>
-<div class="line"><a name="l03588"></a><span class="lineno"> 3588</span> <span class="comment">           generated by this array.</span></div>
-<div class="line"><a name="l03589"></a><span class="lineno"> 3589</span> <span class="comment"></span></div>
-<div class="line"><a name="l03590"></a><span class="lineno"> 3590</span> <span class="comment">           The default activation steepnesses is {0.25, 0.50, 0.75, 1.00}</span></div>
-<div class="line"><a name="l03591"></a><span class="lineno"> 3591</span> <span class="comment"></span></div>
-<div class="line"><a name="l03592"></a><span class="lineno"> 3592</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03593"></a><span class="lineno"> 3593</span> <span class="comment">                <set_cascade_activation_steepnesses>, <get_cascade_activation_steepnesses_count>,</span></div>
-<div class="line"><a name="l03594"></a><span class="lineno"> 3594</span> <span class="comment">                <fann_get_cascade_activation_steepnesses></span></div>
-<div class="line"><a name="l03595"></a><span class="lineno"> 3595</span> <span class="comment"></span></div>
-<div class="line"><a name="l03596"></a><span class="lineno"> 3596</span> <span class="comment">            This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l03597"></a><span class="lineno"> 3597</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l03598"></a><span class="lineno"> 3598</span>         fann_type *get_cascade_activation_steepnesses()</div>
-<div class="line"><a name="l03599"></a><span class="lineno"> 3599</span>         {</div>
-<div class="line"><a name="l03600"></a><span class="lineno"> 3600</span>             fann_type *activation_steepnesses = NULL;</div>
-<div class="line"><a name="l03601"></a><span class="lineno"> 3601</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03602"></a><span class="lineno"> 3602</span>             {</div>
-<div class="line"><a name="l03603"></a><span class="lineno"> 3603</span>                 activation_steepnesses = fann_get_cascade_activation_steepnesses(ann);</div>
-<div class="line"><a name="l03604"></a><span class="lineno"> 3604</span>             }</div>
-<div class="line"><a name="l03605"></a><span class="lineno"> 3605</span>             <span class="keywordflow">return</span> activation_steepnesses;</div>
-<div class="line"><a name="l03606"></a><span class="lineno"> 3606</span>         }                                                               </div>
-<div class="line"><a name="l03607"></a><span class="lineno"> 3607</span> </div>
-<div class="line"><a name="l03608"></a><span class="lineno"> 3608</span>         <span class="comment">/* Method: set_cascade_activation_steepnesses</span></div>
-<div class="line"><a name="l03609"></a><span class="lineno"> 3609</span> <span class="comment"></span></div>
-<div class="line"><a name="l03610"></a><span class="lineno"> 3610</span> <span class="comment">           Sets the array of cascade candidate activation steepnesses. The array must be just as long</span></div>
-<div class="line"><a name="l03611"></a><span class="lineno"> 3611</span> <span class="comment">           as defined by the count.</span></div>
-<div class="line"><a name="l03612"></a><span class="lineno"> 3612</span> <span class="comment"></span></div>
-<div class="line"><a name="l03613"></a><span class="lineno"> 3613</span> <span class="comment">           See <get_cascade_num_candidates> for a description of which candidate neurons will be </span></div>
-<div class="line"><a name="l03614"></a><span class="lineno"> 3614</span> <span class="comment">           generated by this array.</span></div>
-<div class="line"><a name="l03615"></a><span class="lineno"> 3615</span> <span class="comment"></span></div>
-<div class="line"><a name="l03616"></a><span class="lineno"> 3616</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03617"></a><span class="lineno"> 3617</span> <span class="comment">                <get_cascade_activation_steepnesses>, <get_cascade_activation_steepnesses_count>,</span></div>
-<div class="line"><a name="l03618"></a><span class="lineno"> 3618</span> <span class="comment">                <fann_set_cascade_activation_steepnesses></span></div>
-<div class="line"><a name="l03619"></a><span class="lineno"> 3619</span> <span class="comment"></span></div>
-<div class="line"><a name="l03620"></a><span class="lineno"> 3620</span> <span class="comment">            This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l03621"></a><span class="lineno"> 3621</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l03622"></a><span class="lineno"> 3622</span>         <span class="keywordtype">void</span> set_cascade_activation_steepnesses(fann_type *cascade_activation_steepnesses,</div>
-<div class="line"><a name="l03623"></a><span class="lineno"> 3623</span>             <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cascade_activation_steepnesses_count)</div>
-<div class="line"><a name="l03624"></a><span class="lineno"> 3624</span>         {</div>
-<div class="line"><a name="l03625"></a><span class="lineno"> 3625</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03626"></a><span class="lineno"> 3626</span>             {</div>
-<div class="line"><a name="l03627"></a><span class="lineno"> 3627</span>                 fann_set_cascade_activation_steepnesses(ann,</div>
-<div class="line"><a name="l03628"></a><span class="lineno"> 3628</span>                     cascade_activation_steepnesses, cascade_activation_steepnesses_count);</div>
-<div class="line"><a name="l03629"></a><span class="lineno"> 3629</span>             }</div>
-<div class="line"><a name="l03630"></a><span class="lineno"> 3630</span>         }</div>
-<div class="line"><a name="l03631"></a><span class="lineno"> 3631</span> </div>
-<div class="line"><a name="l03632"></a><span class="lineno"> 3632</span>         <span class="comment">/* Method: get_cascade_num_candidate_groups</span></div>
-<div class="line"><a name="l03633"></a><span class="lineno"> 3633</span> <span class="comment"></span></div>
-<div class="line"><a name="l03634"></a><span class="lineno"> 3634</span> <span class="comment">           The number of candidate groups is the number of groups of identical candidates which will be used</span></div>
-<div class="line"><a name="l03635"></a><span class="lineno"> 3635</span> <span class="comment">           during training.</span></div>
-<div class="line"><a name="l03636"></a><span class="lineno"> 3636</span> <span class="comment">           </span></div>
-<div class="line"><a name="l03637"></a><span class="lineno"> 3637</span> <span class="comment">           This number can be used to have more candidates without having to define new parameters for the candidates.</span></div>
-<div class="line"><a name="l03638"></a><span class="lineno"> 3638</span> <span class="comment">           </span></div>
-<div class="line"><a name="l03639"></a><span class="lineno"> 3639</span> <span class="comment">           See <get_cascade_num_candidates> for a description of which candidate neurons will be </span></div>
-<div class="line"><a name="l03640"></a><span class="lineno"> 3640</span> <span class="comment">           generated by this parameter.</span></div>
-<div class="line"><a name="l03641"></a><span class="lineno"> 3641</span> <span class="comment">           </span></div>
-<div class="line"><a name="l03642"></a><span class="lineno"> 3642</span> <span class="comment">           The default number of candidate groups is 2</span></div>
-<div class="line"><a name="l03643"></a><span class="lineno"> 3643</span> <span class="comment"></span></div>
-<div class="line"><a name="l03644"></a><span class="lineno"> 3644</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03645"></a><span class="lineno"> 3645</span> <span class="comment">                <set_cascade_num_candidate_groups>, <fann_get_cascade_num_candidate_groups></span></div>
-<div class="line"><a name="l03646"></a><span class="lineno"> 3646</span> <span class="comment"></span></div>
-<div class="line"><a name="l03647"></a><span class="lineno"> 3647</span> <span class="comment">            This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l03648"></a><span class="lineno"> 3648</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l03649"></a><span class="lineno"> 3649</span>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> get_cascade_num_candidate_groups()</div>
-<div class="line"><a name="l03650"></a><span class="lineno"> 3650</span>         {</div>
-<div class="line"><a name="l03651"></a><span class="lineno"> 3651</span>             <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_candidate_groups = 0;</div>
-<div class="line"><a name="l03652"></a><span class="lineno"> 3652</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03653"></a><span class="lineno"> 3653</span>             {</div>
-<div class="line"><a name="l03654"></a><span class="lineno"> 3654</span>                 num_candidate_groups = fann_get_cascade_num_candidate_groups(ann);</div>
-<div class="line"><a name="l03655"></a><span class="lineno"> 3655</span>             }</div>
-<div class="line"><a name="l03656"></a><span class="lineno"> 3656</span>             <span class="keywordflow">return</span> num_candidate_groups;</div>
-<div class="line"><a name="l03657"></a><span class="lineno"> 3657</span>         }</div>
-<div class="line"><a name="l03658"></a><span class="lineno"> 3658</span> </div>
-<div class="line"><a name="l03659"></a><span class="lineno"> 3659</span>         <span class="comment">/* Method: set_cascade_num_candidate_groups</span></div>
-<div class="line"><a name="l03660"></a><span class="lineno"> 3660</span> <span class="comment"></span></div>
-<div class="line"><a name="l03661"></a><span class="lineno"> 3661</span> <span class="comment">           Sets the number of candidate groups.</span></div>
-<div class="line"><a name="l03662"></a><span class="lineno"> 3662</span> <span class="comment"></span></div>
-<div class="line"><a name="l03663"></a><span class="lineno"> 3663</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03664"></a><span class="lineno"> 3664</span> <span class="comment">                <get_cascade_num_candidate_groups>, <fann_set_cascade_num_candidate_groups></span></div>
-<div class="line"><a name="l03665"></a><span class="lineno"> 3665</span> <span class="comment"></span></div>
-<div class="line"><a name="l03666"></a><span class="lineno"> 3666</span> <span class="comment">            This function appears in FANN >= 2.0.0.</span></div>
-<div class="line"><a name="l03667"></a><span class="lineno"> 3667</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l03668"></a><span class="lineno"> 3668</span>         <span class="keywordtype">void</span> set_cascade_num_candidate_groups(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cascade_num_candidate_groups)</div>
-<div class="line"><a name="l03669"></a><span class="lineno"> 3669</span>         {</div>
-<div class="line"><a name="l03670"></a><span class="lineno"> 3670</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03671"></a><span class="lineno"> 3671</span>             {</div>
-<div class="line"><a name="l03672"></a><span class="lineno"> 3672</span>                 fann_set_cascade_num_candidate_groups(ann, cascade_num_candidate_groups);</div>
-<div class="line"><a name="l03673"></a><span class="lineno"> 3673</span>             }</div>
-<div class="line"><a name="l03674"></a><span class="lineno"> 3674</span>         }</div>
-<div class="line"><a name="l03675"></a><span class="lineno"> 3675</span> </div>
-<div class="line"><a name="l03676"></a><span class="lineno"> 3676</span>         <span class="comment">/*********************************************************************/</span></div>
-<div class="line"><a name="l03677"></a><span class="lineno"> 3677</span> </div>
-<div class="line"><a name="l03678"></a><span class="lineno"> 3678</span> <span class="preprocessor">#ifndef FIXEDFANN</span></div>
-<div class="line"><a name="l03679"></a><span class="lineno"> 3679</span> <span class="preprocessor"></span>        <span class="comment">/* Method: scale_train</span></div>
-<div class="line"><a name="l03680"></a><span class="lineno"> 3680</span> <span class="comment"></span></div>
-<div class="line"><a name="l03681"></a><span class="lineno"> 3681</span> <span class="comment">           Scale input and output data based on previously calculated parameters.</span></div>
-<div class="line"><a name="l03682"></a><span class="lineno"> 3682</span> <span class="comment"></span></div>
-<div class="line"><a name="l03683"></a><span class="lineno"> 3683</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03684"></a><span class="lineno"> 3684</span> <span class="comment">                <descale_train>, <fann_scale_train></span></div>
-<div class="line"><a name="l03685"></a><span class="lineno"> 3685</span> <span class="comment"></span></div>
-<div class="line"><a name="l03686"></a><span class="lineno"> 3686</span> <span class="comment">            This function appears in FANN >= 2.1.0.</span></div>
-<div class="line"><a name="l03687"></a><span class="lineno"> 3687</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l03688"></a><span class="lineno"> 3688</span>         <span class="keywordtype">void</span> scale_train(<a class="code" href="classFANN_1_1training__data.html">training_data</a> &data)</div>
-<div class="line"><a name="l03689"></a><span class="lineno"> 3689</span>         {</div>
-<div class="line"><a name="l03690"></a><span class="lineno"> 3690</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03691"></a><span class="lineno"> 3691</span>             {</div>
-<div class="line"><a name="l03692"></a><span class="lineno"> 3692</span>                 fann_scale_train(ann, data.train_data);</div>
-<div class="line"><a name="l03693"></a><span class="lineno"> 3693</span>             }</div>
-<div class="line"><a name="l03694"></a><span class="lineno"> 3694</span>         }</div>
-<div class="line"><a name="l03695"></a><span class="lineno"> 3695</span> </div>
-<div class="line"><a name="l03696"></a><span class="lineno"> 3696</span>         <span class="comment">/* Method: descale_train</span></div>
-<div class="line"><a name="l03697"></a><span class="lineno"> 3697</span> <span class="comment"></span></div>
-<div class="line"><a name="l03698"></a><span class="lineno"> 3698</span> <span class="comment">           Descale input and output data based on previously calculated parameters.</span></div>
-<div class="line"><a name="l03699"></a><span class="lineno"> 3699</span> <span class="comment"></span></div>
-<div class="line"><a name="l03700"></a><span class="lineno"> 3700</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03701"></a><span class="lineno"> 3701</span> <span class="comment">                <scale_train>, <fann_descale_train></span></div>
-<div class="line"><a name="l03702"></a><span class="lineno"> 3702</span> <span class="comment"></span></div>
-<div class="line"><a name="l03703"></a><span class="lineno"> 3703</span> <span class="comment">            This function appears in FANN >= 2.1.0.</span></div>
-<div class="line"><a name="l03704"></a><span class="lineno"> 3704</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l03705"></a><span class="lineno"> 3705</span>         <span class="keywordtype">void</span> descale_train(<a class="code" href="classFANN_1_1training__data.html">training_data</a> &data)</div>
-<div class="line"><a name="l03706"></a><span class="lineno"> 3706</span>         {</div>
-<div class="line"><a name="l03707"></a><span class="lineno"> 3707</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03708"></a><span class="lineno"> 3708</span>             {</div>
-<div class="line"><a name="l03709"></a><span class="lineno"> 3709</span>                 fann_descale_train(ann, data.train_data);</div>
-<div class="line"><a name="l03710"></a><span class="lineno"> 3710</span>             }</div>
-<div class="line"><a name="l03711"></a><span class="lineno"> 3711</span>         }</div>
-<div class="line"><a name="l03712"></a><span class="lineno"> 3712</span> </div>
-<div class="line"><a name="l03713"></a><span class="lineno"> 3713</span>         <span class="comment">/* Method: set_input_scaling_params</span></div>
-<div class="line"><a name="l03714"></a><span class="lineno"> 3714</span> <span class="comment"></span></div>
-<div class="line"><a name="l03715"></a><span class="lineno"> 3715</span> <span class="comment">           Calculate scaling parameters for future use based on training data.</span></div>
-<div class="line"><a name="l03716"></a><span class="lineno"> 3716</span> <span class="comment"></span></div>
-<div class="line"><a name="l03717"></a><span class="lineno"> 3717</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03718"></a><span class="lineno"> 3718</span> <span class="comment">                <set_output_scaling_params>, <fann_set_input_scaling_params></span></div>
-<div class="line"><a name="l03719"></a><span class="lineno"> 3719</span> <span class="comment"></span></div>
-<div class="line"><a name="l03720"></a><span class="lineno"> 3720</span> <span class="comment">            This function appears in FANN >= 2.1.0.</span></div>
-<div class="line"><a name="l03721"></a><span class="lineno"> 3721</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l03722"></a><span class="lineno"> 3722</span>         <span class="keywordtype">bool</span> set_input_scaling_params(<span class="keyword">const</span> <a class="code" href="classFANN_1_1training__data.html">training_data</a> &data, <span class="keywordtype">float</span> new_input_min, <span class="keywordtype">float</span> new_input_max)</div>
-<div class="line"><a name="l03723"></a><span class="lineno"> 3723</span>         {</div>
-<div class="line"><a name="l03724"></a><span class="lineno"> 3724</span>             <span class="keywordtype">bool</span> status = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l03725"></a><span class="lineno"> 3725</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03726"></a><span class="lineno"> 3726</span>             {</div>
-<div class="line"><a name="l03727"></a><span class="lineno"> 3727</span>                 status = (fann_set_input_scaling_params(ann, data.train_data, new_input_min, new_input_max) != -1);</div>
-<div class="line"><a name="l03728"></a><span class="lineno"> 3728</span>             }</div>
-<div class="line"><a name="l03729"></a><span class="lineno"> 3729</span>             <span class="keywordflow">return</span> status;</div>
-<div class="line"><a name="l03730"></a><span class="lineno"> 3730</span>         }</div>
-<div class="line"><a name="l03731"></a><span class="lineno"> 3731</span> </div>
-<div class="line"><a name="l03732"></a><span class="lineno"> 3732</span>         <span class="comment">/* Method: set_output_scaling_params</span></div>
-<div class="line"><a name="l03733"></a><span class="lineno"> 3733</span> <span class="comment"></span></div>
-<div class="line"><a name="l03734"></a><span class="lineno"> 3734</span> <span class="comment">           Calculate scaling parameters for future use based on training data.</span></div>
-<div class="line"><a name="l03735"></a><span class="lineno"> 3735</span> <span class="comment"></span></div>
-<div class="line"><a name="l03736"></a><span class="lineno"> 3736</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03737"></a><span class="lineno"> 3737</span> <span class="comment">                <set_input_scaling_params>, <fann_set_output_scaling_params></span></div>
-<div class="line"><a name="l03738"></a><span class="lineno"> 3738</span> <span class="comment"></span></div>
-<div class="line"><a name="l03739"></a><span class="lineno"> 3739</span> <span class="comment">            This function appears in FANN >= 2.1.0.</span></div>
-<div class="line"><a name="l03740"></a><span class="lineno"> 3740</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l03741"></a><span class="lineno"> 3741</span>         <span class="keywordtype">bool</span> set_output_scaling_params(<span class="keyword">const</span> <a class="code" href="classFANN_1_1training__data.html">training_data</a> &data, <span class="keywordtype">float</span> new_output_min, <span class="keywordtype">float</span> new_output_max)</div>
-<div class="line"><a name="l03742"></a><span class="lineno"> 3742</span>         {</div>
-<div class="line"><a name="l03743"></a><span class="lineno"> 3743</span>             <span class="keywordtype">bool</span> status = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l03744"></a><span class="lineno"> 3744</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03745"></a><span class="lineno"> 3745</span>             {</div>
-<div class="line"><a name="l03746"></a><span class="lineno"> 3746</span>                 status = (fann_set_output_scaling_params(ann, data.train_data, new_output_min, new_output_max) != -1);</div>
-<div class="line"><a name="l03747"></a><span class="lineno"> 3747</span>             }</div>
-<div class="line"><a name="l03748"></a><span class="lineno"> 3748</span>             <span class="keywordflow">return</span> status;</div>
-<div class="line"><a name="l03749"></a><span class="lineno"> 3749</span>         }</div>
-<div class="line"><a name="l03750"></a><span class="lineno"> 3750</span> </div>
-<div class="line"><a name="l03751"></a><span class="lineno"> 3751</span>         <span class="comment">/* Method: set_scaling_params</span></div>
-<div class="line"><a name="l03752"></a><span class="lineno"> 3752</span> <span class="comment"></span></div>
-<div class="line"><a name="l03753"></a><span class="lineno"> 3753</span> <span class="comment">           Calculate scaling parameters for future use based on training data.</span></div>
-<div class="line"><a name="l03754"></a><span class="lineno"> 3754</span> <span class="comment"></span></div>
-<div class="line"><a name="l03755"></a><span class="lineno"> 3755</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03756"></a><span class="lineno"> 3756</span> <span class="comment">                <clear_scaling_params>, <fann_set_scaling_params></span></div>
-<div class="line"><a name="l03757"></a><span class="lineno"> 3757</span> <span class="comment"></span></div>
-<div class="line"><a name="l03758"></a><span class="lineno"> 3758</span> <span class="comment">            This function appears in FANN >= 2.1.0.</span></div>
-<div class="line"><a name="l03759"></a><span class="lineno"> 3759</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l03760"></a><span class="lineno"> 3760</span>         <span class="keywordtype">bool</span> set_scaling_params(<span class="keyword">const</span> <a class="code" href="classFANN_1_1training__data.html">training_data</a> &data,</div>
-<div class="line"><a name="l03761"></a><span class="lineno"> 3761</span>             <span class="keywordtype">float</span> new_input_min, <span class="keywordtype">float</span> new_input_max, <span class="keywordtype">float</span> new_output_min, <span class="keywordtype">float</span> new_output_max)</div>
-<div class="line"><a name="l03762"></a><span class="lineno"> 3762</span>         {</div>
-<div class="line"><a name="l03763"></a><span class="lineno"> 3763</span>             <span class="keywordtype">bool</span> status = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l03764"></a><span class="lineno"> 3764</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03765"></a><span class="lineno"> 3765</span>             {</div>
-<div class="line"><a name="l03766"></a><span class="lineno"> 3766</span>                 status = (fann_set_scaling_params(ann, data.train_data,</div>
-<div class="line"><a name="l03767"></a><span class="lineno"> 3767</span>                     new_input_min, new_input_max, new_output_min, new_output_max) != -1);</div>
-<div class="line"><a name="l03768"></a><span class="lineno"> 3768</span>             }</div>
-<div class="line"><a name="l03769"></a><span class="lineno"> 3769</span>             <span class="keywordflow">return</span> status;</div>
-<div class="line"><a name="l03770"></a><span class="lineno"> 3770</span>         }</div>
-<div class="line"><a name="l03771"></a><span class="lineno"> 3771</span> </div>
-<div class="line"><a name="l03772"></a><span class="lineno"> 3772</span>         <span class="comment">/* Method: clear_scaling_params</span></div>
-<div class="line"><a name="l03773"></a><span class="lineno"> 3773</span> <span class="comment"></span></div>
-<div class="line"><a name="l03774"></a><span class="lineno"> 3774</span> <span class="comment">           Clears scaling parameters.</span></div>
-<div class="line"><a name="l03775"></a><span class="lineno"> 3775</span> <span class="comment"></span></div>
-<div class="line"><a name="l03776"></a><span class="lineno"> 3776</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03777"></a><span class="lineno"> 3777</span> <span class="comment">                <set_scaling_params>, <fann_clear_scaling_params></span></div>
-<div class="line"><a name="l03778"></a><span class="lineno"> 3778</span> <span class="comment"></span></div>
-<div class="line"><a name="l03779"></a><span class="lineno"> 3779</span> <span class="comment">            This function appears in FANN >= 2.1.0.</span></div>
-<div class="line"><a name="l03780"></a><span class="lineno"> 3780</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l03781"></a><span class="lineno"> 3781</span>         <span class="keywordtype">bool</span> clear_scaling_params()</div>
-<div class="line"><a name="l03782"></a><span class="lineno"> 3782</span>         {</div>
-<div class="line"><a name="l03783"></a><span class="lineno"> 3783</span>             <span class="keywordtype">bool</span> status = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l03784"></a><span class="lineno"> 3784</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03785"></a><span class="lineno"> 3785</span>             {</div>
-<div class="line"><a name="l03786"></a><span class="lineno"> 3786</span>                 status = (fann_clear_scaling_params(ann) != -1);</div>
-<div class="line"><a name="l03787"></a><span class="lineno"> 3787</span>             }</div>
-<div class="line"><a name="l03788"></a><span class="lineno"> 3788</span>             <span class="keywordflow">return</span> status;</div>
-<div class="line"><a name="l03789"></a><span class="lineno"> 3789</span>         }</div>
-<div class="line"><a name="l03790"></a><span class="lineno"> 3790</span> </div>
-<div class="line"><a name="l03791"></a><span class="lineno"> 3791</span>         <span class="comment">/* Method: scale_input</span></div>
-<div class="line"><a name="l03792"></a><span class="lineno"> 3792</span> <span class="comment"></span></div>
-<div class="line"><a name="l03793"></a><span class="lineno"> 3793</span> <span class="comment">           Scale data in input vector before feed it to ann based on previously calculated parameters.</span></div>
-<div class="line"><a name="l03794"></a><span class="lineno"> 3794</span> <span class="comment"></span></div>
-<div class="line"><a name="l03795"></a><span class="lineno"> 3795</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03796"></a><span class="lineno"> 3796</span> <span class="comment">                <descale_input>, <scale_output>, <fann_scale_input></span></div>
-<div class="line"><a name="l03797"></a><span class="lineno"> 3797</span> <span class="comment"></span></div>
-<div class="line"><a name="l03798"></a><span class="lineno"> 3798</span> <span class="comment">            This function appears in FANN >= 2.1.0.</span></div>
-<div class="line"><a name="l03799"></a><span class="lineno"> 3799</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l03800"></a><span class="lineno"> 3800</span>         <span class="keywordtype">void</span> scale_input(fann_type *input_vector)</div>
-<div class="line"><a name="l03801"></a><span class="lineno"> 3801</span>         {</div>
-<div class="line"><a name="l03802"></a><span class="lineno"> 3802</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03803"></a><span class="lineno"> 3803</span>             {</div>
-<div class="line"><a name="l03804"></a><span class="lineno"> 3804</span>                 fann_scale_input(ann, input_vector );</div>
-<div class="line"><a name="l03805"></a><span class="lineno"> 3805</span>             }</div>
-<div class="line"><a name="l03806"></a><span class="lineno"> 3806</span>         }</div>
-<div class="line"><a name="l03807"></a><span class="lineno"> 3807</span> </div>
-<div class="line"><a name="l03808"></a><span class="lineno"> 3808</span>         <span class="comment">/* Method: scale_output</span></div>
-<div class="line"><a name="l03809"></a><span class="lineno"> 3809</span> <span class="comment"></span></div>
-<div class="line"><a name="l03810"></a><span class="lineno"> 3810</span> <span class="comment">           Scale data in output vector before feed it to ann based on previously calculated parameters.</span></div>
-<div class="line"><a name="l03811"></a><span class="lineno"> 3811</span> <span class="comment"></span></div>
-<div class="line"><a name="l03812"></a><span class="lineno"> 3812</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03813"></a><span class="lineno"> 3813</span> <span class="comment">                <descale_output>, <scale_input>, <fann_scale_output></span></div>
-<div class="line"><a name="l03814"></a><span class="lineno"> 3814</span> <span class="comment"></span></div>
-<div class="line"><a name="l03815"></a><span class="lineno"> 3815</span> <span class="comment">            This function appears in FANN >= 2.1.0.</span></div>
-<div class="line"><a name="l03816"></a><span class="lineno"> 3816</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l03817"></a><span class="lineno"> 3817</span>         <span class="keywordtype">void</span> scale_output(fann_type *output_vector)</div>
-<div class="line"><a name="l03818"></a><span class="lineno"> 3818</span>         {</div>
-<div class="line"><a name="l03819"></a><span class="lineno"> 3819</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03820"></a><span class="lineno"> 3820</span>             {</div>
-<div class="line"><a name="l03821"></a><span class="lineno"> 3821</span>                 fann_scale_output(ann, output_vector );</div>
-<div class="line"><a name="l03822"></a><span class="lineno"> 3822</span>             }</div>
-<div class="line"><a name="l03823"></a><span class="lineno"> 3823</span>         }</div>
-<div class="line"><a name="l03824"></a><span class="lineno"> 3824</span> </div>
-<div class="line"><a name="l03825"></a><span class="lineno"> 3825</span>         <span class="comment">/* Method: descale_input</span></div>
-<div class="line"><a name="l03826"></a><span class="lineno"> 3826</span> <span class="comment"></span></div>
-<div class="line"><a name="l03827"></a><span class="lineno"> 3827</span> <span class="comment">           Scale data in input vector after get it from ann based on previously calculated parameters.</span></div>
-<div class="line"><a name="l03828"></a><span class="lineno"> 3828</span> <span class="comment"></span></div>
-<div class="line"><a name="l03829"></a><span class="lineno"> 3829</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03830"></a><span class="lineno"> 3830</span> <span class="comment">                <scale_input>, <descale_output>, <fann_descale_input></span></div>
-<div class="line"><a name="l03831"></a><span class="lineno"> 3831</span> <span class="comment"></span></div>
-<div class="line"><a name="l03832"></a><span class="lineno"> 3832</span> <span class="comment">            This function appears in FANN >= 2.1.0.</span></div>
-<div class="line"><a name="l03833"></a><span class="lineno"> 3833</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l03834"></a><span class="lineno"> 3834</span>         <span class="keywordtype">void</span> descale_input(fann_type *input_vector)</div>
-<div class="line"><a name="l03835"></a><span class="lineno"> 3835</span>         {</div>
-<div class="line"><a name="l03836"></a><span class="lineno"> 3836</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03837"></a><span class="lineno"> 3837</span>             {</div>
-<div class="line"><a name="l03838"></a><span class="lineno"> 3838</span>                 fann_descale_input(ann, input_vector );</div>
-<div class="line"><a name="l03839"></a><span class="lineno"> 3839</span>             }</div>
-<div class="line"><a name="l03840"></a><span class="lineno"> 3840</span>         }</div>
-<div class="line"><a name="l03841"></a><span class="lineno"> 3841</span> </div>
-<div class="line"><a name="l03842"></a><span class="lineno"> 3842</span>         <span class="comment">/* Method: descale_output</span></div>
-<div class="line"><a name="l03843"></a><span class="lineno"> 3843</span> <span class="comment"></span></div>
-<div class="line"><a name="l03844"></a><span class="lineno"> 3844</span> <span class="comment">           Scale data in output vector after get it from ann based on previously calculated parameters.</span></div>
-<div class="line"><a name="l03845"></a><span class="lineno"> 3845</span> <span class="comment"></span></div>
-<div class="line"><a name="l03846"></a><span class="lineno"> 3846</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03847"></a><span class="lineno"> 3847</span> <span class="comment">                <scale_output>, <descale_input>, <fann_descale_output></span></div>
-<div class="line"><a name="l03848"></a><span class="lineno"> 3848</span> <span class="comment"></span></div>
-<div class="line"><a name="l03849"></a><span class="lineno"> 3849</span> <span class="comment">            This function appears in FANN >= 2.1.0.</span></div>
-<div class="line"><a name="l03850"></a><span class="lineno"> 3850</span> <span class="comment">         */</span></div>
-<div class="line"><a name="l03851"></a><span class="lineno"> 3851</span>         <span class="keywordtype">void</span> descale_output(fann_type *output_vector)</div>
-<div class="line"><a name="l03852"></a><span class="lineno"> 3852</span>         {</div>
-<div class="line"><a name="l03853"></a><span class="lineno"> 3853</span>             <span class="keywordflow">if</span> (ann != NULL)</div>
-<div class="line"><a name="l03854"></a><span class="lineno"> 3854</span>             {</div>
-<div class="line"><a name="l03855"></a><span class="lineno"> 3855</span>                 fann_descale_output(ann, output_vector );</div>
-<div class="line"><a name="l03856"></a><span class="lineno"> 3856</span>             }</div>
-<div class="line"><a name="l03857"></a><span class="lineno"> 3857</span>         }</div>
-<div class="line"><a name="l03858"></a><span class="lineno"> 3858</span> </div>
-<div class="line"><a name="l03859"></a><span class="lineno"> 3859</span> <span class="preprocessor">#endif </span><span class="comment">/* FIXEDFANN */</span><span class="preprocessor"></span></div>
-<div class="line"><a name="l03860"></a><span class="lineno"> 3860</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l03861"></a><span class="lineno"> 3861</span>         <span class="comment">/*********************************************************************/</span></div>
-<div class="line"><a name="l03862"></a><span class="lineno"> 3862</span> </div>
-<div class="line"><a name="l03863"></a><span class="lineno"> 3863</span>         <span class="comment">/* Method: set_error_log</span></div>
-<div class="line"><a name="l03864"></a><span class="lineno"> 3864</span> <span class="comment"></span></div>
-<div class="line"><a name="l03865"></a><span class="lineno"> 3865</span> <span class="comment">           Change where errors are logged to.</span></div>
-<div class="line"><a name="l03866"></a><span class="lineno"> 3866</span> <span class="comment">           </span></div>
-<div class="line"><a name="l03867"></a><span class="lineno"> 3867</span> <span class="comment">           If log_file is NULL, no errors will be printed.</span></div>
-<div class="line"><a name="l03868"></a><span class="lineno"> 3868</span> <span class="comment">           </span></div>
-<div class="line"><a name="l03869"></a><span class="lineno"> 3869</span> <span class="comment">           If neural_net is empty i.e. ann is NULL, the default log will be set.</span></div>
-<div class="line"><a name="l03870"></a><span class="lineno"> 3870</span> <span class="comment">           The default log is the log used when creating a neural_net.</span></div>
-<div class="line"><a name="l03871"></a><span class="lineno"> 3871</span> <span class="comment">           This default log will also be the default for all new structs</span></div>
-<div class="line"><a name="l03872"></a><span class="lineno"> 3872</span> <span class="comment">           that are created.</span></div>
-<div class="line"><a name="l03873"></a><span class="lineno"> 3873</span> <span class="comment">           </span></div>
-<div class="line"><a name="l03874"></a><span class="lineno"> 3874</span> <span class="comment">           The default behavior is to log them to stderr.</span></div>
-<div class="line"><a name="l03875"></a><span class="lineno"> 3875</span> <span class="comment">           </span></div>
-<div class="line"><a name="l03876"></a><span class="lineno"> 3876</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03877"></a><span class="lineno"> 3877</span> <span class="comment">                <struct fann_error>, <fann_set_error_log></span></div>
-<div class="line"><a name="l03878"></a><span class="lineno"> 3878</span> <span class="comment">           </span></div>
-<div class="line"><a name="l03879"></a><span class="lineno"> 3879</span> <span class="comment">           This function appears in FANN >= 1.1.0.   </span></div>
-<div class="line"><a name="l03880"></a><span class="lineno"> 3880</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l03881"></a><span class="lineno"> 3881</span>         <span class="keywordtype">void</span> set_error_log(FILE *log_file)</div>
-<div class="line"><a name="l03882"></a><span class="lineno"> 3882</span>         {</div>
-<div class="line"><a name="l03883"></a><span class="lineno"> 3883</span>             fann_set_error_log(reinterpret_cast<struct fann_error *>(ann), log_file);</div>
-<div class="line"><a name="l03884"></a><span class="lineno"> 3884</span>         }</div>
-<div class="line"><a name="l03885"></a><span class="lineno"> 3885</span> </div>
-<div class="line"><a name="l03886"></a><span class="lineno"> 3886</span>         <span class="comment">/* Method: get_errno</span></div>
-<div class="line"><a name="l03887"></a><span class="lineno"> 3887</span> <span class="comment"></span></div>
-<div class="line"><a name="l03888"></a><span class="lineno"> 3888</span> <span class="comment">           Returns the last error number.</span></div>
-<div class="line"><a name="l03889"></a><span class="lineno"> 3889</span> <span class="comment">           </span></div>
-<div class="line"><a name="l03890"></a><span class="lineno"> 3890</span> <span class="comment">           See also:</span></div>
-<div class="line"><a name="l03891"></a><span class="lineno"> 3891</span> <span class="comment">            <fann_errno_enum>, <fann_reset_errno>, <fann_get_errno></span></div>
-<div class="line"><a name="l03892"></a><span class="lineno"> 3892</span> <span class="comment">            </span></div>
-<div class="line"><a name="l03893"></a><span class="lineno"> 3893</span> <span class="comment">           This function appears in FANN >= 1.1.0.   </span></div>
-<div class="line"><a name="l03894"></a><span class="lineno"> 3894</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l03895"></a><span class="lineno"> 3895</span>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> get_errno()</div>
-<div class="line"><a name="l03896"></a><span class="lineno"> 3896</span>         {</div>
-<div class="line"><a name="l03897"></a><span class="lineno"> 3897</span>             <span class="keywordflow">return</span> fann_get_errno(reinterpret_cast<struct fann_error *>(ann));</div>
-<div class="line"><a name="l03898"></a><span class="lineno"> 3898</span>         }</div>
-<div class="line"><a name="l03899"></a><span class="lineno"> 3899</span> </div>
-<div class="line"><a name="l03900"></a><span class="lineno"> 3900</span>         <span class="comment">/* Method: reset_errno</span></div>
-<div class="line"><a name="l03901"></a><span class="lineno"> 3901</span> <span class="comment"></span></div>
-<div class="line"><a name="l03902"></a><span class="lineno"> 3902</span> <span class="comment">           Resets the last error number.</span></div>
-<div class="line"><a name="l03903"></a><span class="lineno"> 3903</span> <span class="comment">           </span></div>
-<div class="line"><a name="l03904"></a><span class="lineno"> 3904</span> <span class="comment">           This function appears in FANN >= 1.1.0.   </span></div>
-<div class="line"><a name="l03905"></a><span class="lineno"> 3905</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l03906"></a><span class="lineno"> 3906</span>         <span class="keywordtype">void</span> reset_errno()</div>
-<div class="line"><a name="l03907"></a><span class="lineno"> 3907</span>         {</div>
-<div class="line"><a name="l03908"></a><span class="lineno"> 3908</span>             fann_reset_errno(reinterpret_cast<struct fann_error *>(ann));</div>
-<div class="line"><a name="l03909"></a><span class="lineno"> 3909</span>         }</div>
-<div class="line"><a name="l03910"></a><span class="lineno"> 3910</span> </div>
-<div class="line"><a name="l03911"></a><span class="lineno"> 3911</span>         <span class="comment">/* Method: reset_errstr</span></div>
-<div class="line"><a name="l03912"></a><span class="lineno"> 3912</span> <span class="comment"></span></div>
-<div class="line"><a name="l03913"></a><span class="lineno"> 3913</span> <span class="comment">           Resets the last error string.</span></div>
-<div class="line"><a name="l03914"></a><span class="lineno"> 3914</span> <span class="comment"></span></div>
-<div class="line"><a name="l03915"></a><span class="lineno"> 3915</span> <span class="comment">           This function appears in FANN >= 1.1.0.   </span></div>
-<div class="line"><a name="l03916"></a><span class="lineno"> 3916</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l03917"></a><span class="lineno"> 3917</span>         <span class="keywordtype">void</span> reset_errstr()</div>
-<div class="line"><a name="l03918"></a><span class="lineno"> 3918</span>         {</div>
-<div class="line"><a name="l03919"></a><span class="lineno"> 3919</span>             fann_reset_errstr(reinterpret_cast<struct fann_error *>(ann));</div>
-<div class="line"><a name="l03920"></a><span class="lineno"> 3920</span>         }</div>
-<div class="line"><a name="l03921"></a><span class="lineno"> 3921</span> </div>
-<div class="line"><a name="l03922"></a><span class="lineno"> 3922</span>         <span class="comment">/* Method: get_errstr</span></div>
-<div class="line"><a name="l03923"></a><span class="lineno"> 3923</span> <span class="comment"></span></div>
-<div class="line"><a name="l03924"></a><span class="lineno"> 3924</span> <span class="comment">           Returns the last errstr.</span></div>
-<div class="line"><a name="l03925"></a><span class="lineno"> 3925</span> <span class="comment">          </span></div>
-<div class="line"><a name="l03926"></a><span class="lineno"> 3926</span> <span class="comment">           This function calls <fann_reset_errno> and <fann_reset_errstr></span></div>
-<div class="line"><a name="l03927"></a><span class="lineno"> 3927</span> <span class="comment"></span></div>
-<div class="line"><a name="l03928"></a><span class="lineno"> 3928</span> <span class="comment">           This function appears in FANN >= 1.1.0.   </span></div>
-<div class="line"><a name="l03929"></a><span class="lineno"> 3929</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l03930"></a><span class="lineno"> 3930</span>         std::string get_errstr()</div>
-<div class="line"><a name="l03931"></a><span class="lineno"> 3931</span>         {</div>
-<div class="line"><a name="l03932"></a><span class="lineno"> 3932</span>             <span class="keywordflow">return</span> std::string(fann_get_errstr(reinterpret_cast<struct fann_error *>(ann)));</div>
-<div class="line"><a name="l03933"></a><span class="lineno"> 3933</span>         }</div>
-<div class="line"><a name="l03934"></a><span class="lineno"> 3934</span> </div>
-<div class="line"><a name="l03935"></a><span class="lineno"> 3935</span>         <span class="comment">/* Method: print_error</span></div>
-<div class="line"><a name="l03936"></a><span class="lineno"> 3936</span> <span class="comment"></span></div>
-<div class="line"><a name="l03937"></a><span class="lineno"> 3937</span> <span class="comment">           Prints the last error to stderr.</span></div>
-<div class="line"><a name="l03938"></a><span class="lineno"> 3938</span> <span class="comment"></span></div>
-<div class="line"><a name="l03939"></a><span class="lineno"> 3939</span> <span class="comment">           This function appears in FANN >= 1.1.0.   </span></div>
-<div class="line"><a name="l03940"></a><span class="lineno"> 3940</span> <span class="comment">         */</span> </div>
-<div class="line"><a name="l03941"></a><span class="lineno"> 3941</span>         <span class="keywordtype">void</span> print_error()</div>
-<div class="line"><a name="l03942"></a><span class="lineno"> 3942</span>         {</div>
-<div class="line"><a name="l03943"></a><span class="lineno"> 3943</span>             fann_print_error(reinterpret_cast<struct fann_error *>(ann));</div>
-<div class="line"><a name="l03944"></a><span class="lineno"> 3944</span>         }</div>
-<div class="line"><a name="l03945"></a><span class="lineno"> 3945</span> </div>
-<div class="line"><a name="l03946"></a><span class="lineno"> 3946</span>         <span class="comment">/*********************************************************************/</span></div>
-<div class="line"><a name="l03947"></a><span class="lineno"> 3947</span> </div>
-<div class="line"><a name="l03948"></a><span class="lineno"> 3948</span>     <span class="keyword">private</span>:</div>
-<div class="line"><a name="l03949"></a><span class="lineno"> 3949</span>         <span class="comment">// Structure used by set_callback to hold information about a user callback</span></div>
-<div class="line"><a name="l03950"></a><span class="lineno"> 3950</span>         <span class="keyword">typedef</span> <span class="keyword">struct </span>user_context_type</div>
-<div class="line"><a name="l03951"></a><span class="lineno"> 3951</span>         {</div>
-<div class="line"><a name="l03952"></a><span class="lineno"> 3952</span>             callback_type user_callback; <span class="comment">// Pointer to user callback function</span></div>
-<div class="line"><a name="l03953"></a><span class="lineno"> 3953</span>             <span class="keywordtype">void</span> *user_data; <span class="comment">// Arbitrary data pointer passed to the callback</span></div>
-<div class="line"><a name="l03954"></a><span class="lineno"> 3954</span>             <a class="code" href="classFANN_1_1neural__net.html">neural_net</a> *net; <span class="comment">// This pointer for the neural network</span></div>
-<div class="line"><a name="l03955"></a><span class="lineno"> 3955</span>         } user_context;</div>
-<div class="line"><a name="l03956"></a><span class="lineno"> 3956</span> </div>
-<div class="line"><a name="l03957"></a><span class="lineno"> 3957</span>         <span class="comment">// Internal callback used to convert from pointers to class references</span></div>
-<div class="line"><a name="l03958"></a><span class="lineno"> 3958</span>         <span class="keyword">static</span> <span class="keywordtype">int</span> FANN_API internal_callback(<span class="keyword">struct</span> fann *ann, <span class="keyword">struct</span> fann_train_data *train, </div>
-<div class="line"><a name="l03959"></a><span class="lineno"> 3959</span>             <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> max_epochs, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> epochs_between_reports, <span class="keywordtype">float</span> desired_error, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> epochs)</div>
-<div class="line"><a name="l03960"></a><span class="lineno"> 3960</span>         {</div>
-<div class="line"><a name="l03961"></a><span class="lineno"> 3961</span>             user_context *user_data = <span class="keyword">static_cast<</span>user_context *<span class="keyword">></span>(fann_get_user_data(ann));</div>
-<div class="line"><a name="l03962"></a><span class="lineno"> 3962</span>             <span class="keywordflow">if</span> (user_data != NULL)</div>
-<div class="line"><a name="l03963"></a><span class="lineno"> 3963</span>             {</div>
-<div class="line"><a name="l03964"></a><span class="lineno"> 3964</span>                 <a class="code" href="classFANN_1_1training__data.html">FANN::training_data</a> data;</div>
-<div class="line"><a name="l03965"></a><span class="lineno"> 3965</span>                 data.train_data = train;</div>
-<div class="line"><a name="l03966"></a><span class="lineno"> 3966</span> </div>
-<div class="line"><a name="l03967"></a><span class="lineno"> 3967</span>                 <span class="keywordtype">int</span> result = (*user_data->user_callback)(*user_data->net,</div>
-<div class="line"><a name="l03968"></a><span class="lineno"> 3968</span>                     data, max_epochs, epochs_between_reports, desired_error, epochs, user_data);</div>
-<div class="line"><a name="l03969"></a><span class="lineno"> 3969</span> </div>
-<div class="line"><a name="l03970"></a><span class="lineno"> 3970</span>                 data.train_data = NULL; <span class="comment">// Prevent automatic cleanup</span></div>
-<div class="line"><a name="l03971"></a><span class="lineno"> 3971</span>                 <span class="keywordflow">return</span> result;</div>
-<div class="line"><a name="l03972"></a><span class="lineno"> 3972</span>             }</div>
-<div class="line"><a name="l03973"></a><span class="lineno"> 3973</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l03974"></a><span class="lineno"> 3974</span>             {</div>
-<div class="line"><a name="l03975"></a><span class="lineno"> 3975</span>                 <span class="keywordflow">return</span> -1; <span class="comment">// This should not occur except if out of memory</span></div>
-<div class="line"><a name="l03976"></a><span class="lineno"> 3976</span>             }</div>
-<div class="line"><a name="l03977"></a><span class="lineno"> 3977</span>         }</div>
-<div class="line"><a name="l03978"></a><span class="lineno"> 3978</span>     <span class="keyword">protected</span>:</div>
-<div class="line"><a name="l03979"></a><span class="lineno"> 3979</span>         <span class="comment">// Pointer the encapsulated fann neural net structure</span></div>
-<div class="line"><a name="l03980"></a><span class="lineno"> 3980</span>         <span class="keyword">struct </span>fann *ann;</div>
-<div class="line"><a name="l03981"></a><span class="lineno"> 3981</span>     };</div>
-<div class="line"><a name="l03982"></a><span class="lineno"> 3982</span> </div>
-<div class="line"><a name="l03983"></a><span class="lineno"> 3983</span>     <span class="comment">/*************************************************************************/</span></div>
-<div class="line"><a name="l03984"></a><span class="lineno"> 3984</span> };</div>
-<div class="line"><a name="l03985"></a><span class="lineno"> 3985</span> </div>
-<div class="line"><a name="l03986"></a><span class="lineno"> 3986</span> <span class="preprocessor">#endif </span><span class="comment">/* FANN_CPP_H_INCLUDED */</span><span class="preprocessor"></span></div>
-<div class="ttc" id="classVector2d_html"><div class="ttname"><a href="classVector2d.html">Vector2d</a></div><div class="ttdef"><b>Definition:</b> <a href="Vector2d_8h_source.html#l00031">Vector2d.h:31</a></div></div>
-<div class="ttc" id="classFANN_1_1training__data_html"><div class="ttname"><a href="classFANN_1_1training__data.html">FANN::training_data</a></div><div class="ttdef"><b>Definition:</b> <a href="myfann__cpp_8h_source.html#l00362">myfann_cpp.h:362</a></div></div>
-<div class="ttc" id="classFANN_1_1neural__net_html"><div class="ttname"><a href="classFANN_1_1neural__net.html">FANN::neural_net</a></div><div class="ttdef"><b>Definition:</b> <a href="myfann__cpp_8h_source.html#l00978">myfann_cpp.h:978</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/nav_f.png b/doc/html/nav_f.png
deleted file mode 100644
index 72a58a5..0000000
Binary files a/doc/html/nav_f.png and /dev/null differ
diff --git a/doc/html/nav_g.png b/doc/html/nav_g.png
deleted file mode 100644
index 2093a23..0000000
Binary files a/doc/html/nav_g.png and /dev/null differ
diff --git a/doc/html/nav_h.png b/doc/html/nav_h.png
deleted file mode 100644
index 33389b1..0000000
Binary files a/doc/html/nav_h.png and /dev/null differ
diff --git a/doc/html/open.png b/doc/html/open.png
deleted file mode 100644
index 30f75c7..0000000
Binary files a/doc/html/open.png and /dev/null differ
diff --git a/doc/html/pages.html b/doc/html/pages.html
deleted file mode 100644
index b2fbd21..0000000
--- a/doc/html/pages.html
+++ /dev/null
@@ -1,130 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Related Pages</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">Related Pages</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock">Here is a list of all related documentation pages:</div><div class="directory">
-<table class="directory">
-<tr id="row_0_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_apps.html" target="_self">apps</a></td><td class="desc"></td></tr>
-<tr id="row_1_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_description_pkstat.html" target="_self">description_pkstat</a></td><td class="desc"></td></tr>
-<tr id="row_2_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_examples_pkann.html" target="_self">examples_pkann</a></td><td class="desc"></td></tr>
-<tr id="row_3_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_examples_pkascii2img.html" target="_self">examples_pkascii2img</a></td><td class="desc"></td></tr>
-<tr id="row_4_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_examples_pkascii2ogr.html" target="_self">examples_pkascii2ogr</a></td><td class="desc"></td></tr>
-<tr id="row_5_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_examples_pkcomposite.html" target="_self">examples_pkcomposite</a></td><td class="desc"></td></tr>
-<tr id="row_6_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_examples_pkcreatect.html" target="_self">examples_pkcreatect</a></td><td class="desc"></td></tr>
-<tr id="row_7_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_examples_pkcrop.html" target="_self">examples_pkcrop</a></td><td class="desc"></td></tr>
-<tr id="row_8_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_examples_pkdiff.html" target="_self">examples_pkdiff</a></td><td class="desc"></td></tr>
-<tr id="row_9_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_examples_pkdsm2shadow.html" target="_self">examples_pkdsm2shadow</a></td><td class="desc"></td></tr>
-<tr id="row_10_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_examples_pkdumpimg.html" target="_self">examples_pkdumpimg</a></td><td class="desc"></td></tr>
-<tr id="row_11_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_examples_pkdumpogr.html" target="_self">examples_pkdumpogr</a></td><td class="desc"></td></tr>
-<tr id="row_12_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_examples_pkextract.html" target="_self">examples_pkextract</a></td><td class="desc"></td></tr>
-<tr id="row_13_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_examples_pkfilter.html" target="_self">examples_pkfilter</a></td><td class="desc"></td></tr>
-<tr id="row_14_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_examples_pkgetmask.html" target="_self">examples_pkgetmask</a></td><td class="desc"></td></tr>
-<tr id="row_15_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_examples_pkinfo.html" target="_self">examples_pkinfo</a></td><td class="desc"></td></tr>
-<tr id="row_16_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_examples_pkkalman.html" target="_self">examples_pkkalman</a></td><td class="desc"></td></tr>
-<tr id="row_17_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_examples_pkpolygonize.html" target="_self">examples_pkpolygonize</a></td><td class="desc"></td></tr>
-<tr id="row_18_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_examples_pkreclass.html" target="_self">examples_pkreclass</a></td><td class="desc"></td></tr>
-<tr id="row_19_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_examples_pksetmask.html" target="_self">examples_pksetmask</a></td><td class="desc"></td></tr>
-<tr id="row_20_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_examples_pksieve.html" target="_self">examples_pksieve</a></td><td class="desc"></td></tr>
-<tr id="row_21_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_examples_pkstatogr.html" target="_self">examples_pkstatogr</a></td><td class="desc"></td></tr>
-<tr id="row_22_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_examples_pksvm.html" target="_self">examples_pksvm</a></td><td class="desc"></td></tr>
-<tr id="row_23_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_faq_pkcomposite.html" target="_self">faq_pkcomposite</a></td><td class="desc"></td></tr>
-<tr id="row_24_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_faq_pksetmask.html" target="_self">faq_pksetmask</a></td><td class="desc"></td></tr>
-<tr id="row_25_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_header.html" target="_self">header</a></td><td class="desc"></td></tr>
-<tr id="row_26_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_installation_linux.html" target="_self">installation_linux</a></td><td class="desc"></td></tr>
-<tr id="row_27_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_installation_plugins.html" target="_self">installation_plugins</a></td><td class="desc"></td></tr>
-<tr id="row_28_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_installation_windows.html" target="_self">installation_windows</a></td><td class="desc"></td></tr>
-<tr id="row_29_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_mainpage.html" target="_self">mainpage</a></td><td class="desc"></td></tr>
-<tr id="row_30_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pkann.html" target="_self">pkann</a></td><td class="desc"></td></tr>
-<tr id="row_31_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pkascii2img.html" target="_self">pkascii2img</a></td><td class="desc"></td></tr>
-<tr id="row_32_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pkascii2ogr.html" target="_self">pkascii2ogr</a></td><td class="desc"></td></tr>
-<tr id="row_33_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pkcomposite.html" target="_self">pkcomposite</a></td><td class="desc"></td></tr>
-<tr id="row_34_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pkcreatect.html" target="_self">pkcreatect</a></td><td class="desc"></td></tr>
-<tr id="row_35_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pkcrop.html" target="_self">pkcrop</a></td><td class="desc"></td></tr>
-<tr id="row_36_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pkdiff.html" target="_self">pkdiff</a></td><td class="desc"></td></tr>
-<tr id="row_37_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pkdsm2shadow.html" target="_self">pkdsm2shadow</a></td><td class="desc"></td></tr>
-<tr id="row_38_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pkdumpimg.html" target="_self">pkdumpimg</a></td><td class="desc"></td></tr>
-<tr id="row_39_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pkdumpogr.html" target="_self">pkdumpogr</a></td><td class="desc"></td></tr>
-<tr id="row_40_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pkegcs.html" target="_self">pkegcs</a></td><td class="desc"></td></tr>
-<tr id="row_41_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pkextract.html" target="_self">pkextract</a></td><td class="desc"></td></tr>
-<tr id="row_42_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pkfillnodata.html" target="_self">pkfillnodata</a></td><td class="desc"></td></tr>
-<tr id="row_43_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pkfilter.html" target="_self">pkfilter</a></td><td class="desc"></td></tr>
-<tr id="row_44_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pkfilterascii.html" target="_self">pkfilterascii</a></td><td class="desc"></td></tr>
-<tr id="row_45_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pkfilterdem.html" target="_self">pkfilterdem</a></td><td class="desc"></td></tr>
-<tr id="row_46_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pkfsann.html" target="_self">pkfsann</a></td><td class="desc"></td></tr>
-<tr id="row_47_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pkfssvm.html" target="_self">pkfssvm</a></td><td class="desc"></td></tr>
-<tr id="row_48_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pkgetmask.html" target="_self">pkgetmask</a></td><td class="desc"></td></tr>
-<tr id="row_49_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pkinfo.html" target="_self">pkinfo</a></td><td class="desc"></td></tr>
-<tr id="row_50_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pkkalman.html" target="_self">pkkalman</a></td><td class="desc"></td></tr>
-<tr id="row_51_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pklas2img.html" target="_self">pklas2img</a></td><td class="desc"></td></tr>
-<tr id="row_52_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pkoptsvm.html" target="_self">pkoptsvm</a></td><td class="desc"></td></tr>
-<tr id="row_53_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pkpolygonize.html" target="_self">pkpolygonize</a></td><td class="desc"></td></tr>
-<tr id="row_54_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pkreclass.html" target="_self">pkreclass</a></td><td class="desc"></td></tr>
-<tr id="row_55_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pkregann.html" target="_self">pkregann</a></td><td class="desc"></td></tr>
-<tr id="row_56_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pksetmask.html" target="_self">pksetmask</a></td><td class="desc"></td></tr>
-<tr id="row_57_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pksieve.html" target="_self">pksieve</a></td><td class="desc"></td></tr>
-<tr id="row_58_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pkstat.html" target="_self">pkstat</a></td><td class="desc"></td></tr>
-<tr id="row_59_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pkstatascii.html" target="_self">pkstatascii</a></td><td class="desc"></td></tr>
-<tr id="row_60_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pkstatogr.html" target="_self">pkstatogr</a></td><td class="desc"></td></tr>
-<tr id="row_61_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="pkstatprofile.html" target="_self">pkstatprofile</a></td><td class="desc"></td></tr>
-<tr id="row_62_" class="even"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a class="el" href="pksvm.html" target="_self">pksvm</a></td><td class="desc"></td></tr>
-</table>
-</div><!-- directory -->
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:07 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkann.html b/doc/html/pkann.html
deleted file mode 100644
index 1ef699b..0000000
--- a/doc/html/pkann.html
+++ /dev/null
@@ -1,160 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: pkann</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkann </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><p>classify raster image using Artificial Neural Network </p>
-<h2>SYNOPSIS</h2>
-<p><code> Usage: pkann -t training [-i input -o output] [-cv value] </code></p>
-<p><code></code></p>
-<p><code> Options: [-tln layer]* [-c name -r value]* [-of GDALformat|-f OGRformat] [-co NAME=VALUE]* [-ct filename] [-label attribute] [-prior value]* [-nn number]* [-m filename [-msknodata value]*] [-nodata value]</code></p>
-<p><code> Advanced options: [-b band] [-sband band -eband band]* [-bal size]* [-min] [-bag value] [-bs value] [-comb rule] [-cb filename] [-prob filename] [-pim priorimage] [–offset value] [–scale value] [–connection 0|1] [-w weights]* [–learning rate] [–maxit number] </code></p>
-<h1><a class="anchor" id="pkann_description"></a>
-Description</h1>
-<p>The utility pkann implements an artificial neural network (ANN) to solve a supervised classification problem. The implementation is based on the open source C++ library <a href="http://leenissen.dk/fann/wp/">fann</a>). Both raster and vector files are supported as input. The output will contain the classification result, either in raster or vector format, corresponding to the format of the input. A training sample must be provided as an OGR vector dataset that contains the class label [...]
-<h1><a class="anchor" id="pkann_options"></a>
-Options</h1>
-<ul>
-<li>use either <code>-short</code> or <code>--long</code> options (both <code>--long=value</code> and <code>--long value</code> are supported)</li>
-<li>short option <code>-h</code> shows basic options only, long option <code>--help</code> shows all options <table class="doxtable">
-<tr>
-<th>short</th><th>long</th><th>type</th><th>default</th><th>description  </th></tr>
-<tr>
-<td>i </td><td>input </td><td>std::string </td><td></td><td>input image </td></tr>
-<tr>
-<td>t </td><td>training </td><td>std::string </td><td></td><td>training vector file. A single vector file contains all training features (must be set as: B0, B1, B2,...) for all classes (class numbers identified by label option). Use multiple training files for bootstrap aggregation (alternative to the bag and bsize options, where a random subset is taken from a single training file) </td></tr>
-<tr>
-<td>tln </td><td>tln </td><td>std::string </td><td></td><td>training layer name(s) </td></tr>
-<tr>
-<td>label </td><td>label </td><td>std::string </td><td>label </td><td>identifier for class label in training vector file. </td></tr>
-<tr>
-<td>bal </td><td>balance </td><td>unsigned int </td><td>0 </td><td>balance the input data to this number of samples for each class </td></tr>
-<tr>
-<td>min </td><td>min </td><td>int </td><td>0 </td><td>if number of training pixels is less then min, do not take this class into account (0: consider all classes) </td></tr>
-<tr>
-<td>b </td><td>band </td><td>short </td><td></td><td>band index (starting from 0, either use band option or use start to end) </td></tr>
-<tr>
-<td>sband </td><td>startband </td><td>unsigned short </td><td></td><td>Start band sequence number </td></tr>
-<tr>
-<td>eband </td><td>endband </td><td>unsigned short </td><td></td><td>End band sequence number </td></tr>
-<tr>
-<td></td><td>offset </td><td>double </td><td>0 </td><td>offset value for each spectral band input features: refl[band]=(DN[band]-offset[band])/scale[band] </td></tr>
-<tr>
-<td>scale </td><td>scale </td><td>double </td><td>0 </td><td>scale value for each spectral band input features: refl=(DN[band]-offset[band])/scale<a href="use 0 if scale min and max in each band to -1.0 and 1.0">band</a> </td></tr>
-<tr>
-<td>a </td><td>aggreg </td><td>unsigned short </td><td>1 </td><td>how to combine aggregated classifiers, see also rc option (1: sum rule, 2: max rule). </td></tr>
-<tr>
-<td>prior </td><td>prior </td><td>double </td><td>0 </td><td>prior probabilities for each class (e.g., -p 0.3 -p 0.3 -p 0.2 ) </td></tr>
-<tr>
-<td>pim </td><td>priorimg </td><td>std::string </td><td></td><td>prior probability image (multi-band img with band for each class </td></tr>
-<tr>
-<td>cv </td><td>cv </td><td>unsigned short </td><td>0 </td><td>n-fold cross validation mode </td></tr>
-<tr>
-<td>cmf </td><td>cmf </td><td>std::string </td><td>ascii </td><td>Format for confusion matrix (ascii or latex) </td></tr>
-<tr>
-<td>nn </td><td>nneuron </td><td>unsigned int </td><td>5 </td><td>number of neurons in hidden layers in neural network (multiple hidden layers are set by defining multiple number of neurons: -n 15 -n 1, default is one hidden layer with 5 neurons) </td></tr>
-<tr>
-<td></td><td>connection </td><td>float </td><td>1 </td><td>connection reate (default: 1.0 for a fully connected network) </td></tr>
-<tr>
-<td>w </td><td>weights </td><td>float </td><td>0 </td><td>weights for neural network. Apply to fully connected network only, starting from first input neuron to last output neuron, including the bias neurons (last neuron in each but last layer) </td></tr>
-<tr>
-<td>l </td><td>learning </td><td>float </td><td>0.7 </td><td>learning rate (default: 0.7) </td></tr>
-<tr>
-<td></td><td>maxit </td><td>unsigned int </td><td>500 </td><td>number of maximum iterations (epoch) (default: 500) </td></tr>
-<tr>
-<td>comb </td><td>comb </td><td>unsigned short </td><td>0 </td><td>how to combine bootstrap aggregation classifiers (0: sum rule, 1: product rule, 2: max rule). Also used to aggregate classes with rc option. Default is sum rule (0) </td></tr>
-<tr>
-<td>bag </td><td>bag </td><td>unsigned short </td><td>1 </td><td>Number of bootstrap aggregations (default is no bagging: 1) </td></tr>
-<tr>
-<td>bs </td><td>bsize </td><td>int </td><td>100 </td><td>Percentage of features used from available training features for each bootstrap aggregation (one size for all classes, or a different size for each class respectively </td></tr>
-<tr>
-<td>cb </td><td>classbag </td><td>std::string </td><td></td><td>output for each individual bootstrap aggregation (default is blank) </td></tr>
-<tr>
-<td>m </td><td>mask </td><td>std::string </td><td></td><td>Only classify within specified mask (vector or raster). For raster mask, set nodata values with the option msknodata. </td></tr>
-<tr>
-<td>msknodata </td><td>msknodata </td><td>short </td><td>0 </td><td>mask value(s) not to consider for classification. Values will be taken over in classification image. Default is 0 </td></tr>
-<tr>
-<td>nodata </td><td>nodata </td><td>unsigned short </td><td>0 </td><td>nodata value to put where image is masked as nodata </td></tr>
-<tr>
-<td>o </td><td>output </td><td>std::string </td><td></td><td>output classification image </td></tr>
-<tr>
-<td>ot </td><td>otype </td><td>std::string </td><td></td><td>Data type for output image ({Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/CInt16/CInt32/CFloat32/CFloat64}). Empty string: inherit type from input image </td></tr>
-<tr>
-<td>of </td><td>oformat </td><td>std::string </td><td></td><td>Output image format (see also gdal_translate). Empty string: inherit from input image </td></tr>
-<tr>
-<td>ct </td><td>ct </td><td>std::string </td><td></td><td>colour table in ASCII format having 5 columns: id R G B ALFA (0: transparent, 255: solid) </td></tr>
-<tr>
-<td>co </td><td>co </td><td>std::string </td><td></td><td>Creation option for output file. Multiple options can be specified. </td></tr>
-<tr>
-<td></td><td>prob </td><td>std::string </td><td></td><td>probability image. Default is no probability image </td></tr>
-<tr>
-<td>f </td><td>f </td><td>std::string </td><td>SQLite </td><td>Output ogr format for active training sample </td></tr>
-<tr>
-<td>na </td><td>nactive </td><td>unsigned int </td><td>1 </td><td>number of active training points </td></tr>
-<tr>
-<td>c </td><td>class </td><td>std::string </td><td></td><td>list of class names. </td></tr>
-<tr>
-<td>r </td><td>reclass </td><td>short </td><td></td><td>list of class values (use same order as in class opt). </td></tr>
-</table>
-Usage: pkann -t training [-i input -o output] [-cv value]</li>
-</ul>
-<h1>Examples </h1>
-<p>Some examples how to use pkann can be found <a class="el" href="md_examples_pkann.html#examples_pkann">here</a> </p>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkann_8cc_source.html b/doc/html/pkann_8cc_source.html
deleted file mode 100644
index 914819b..0000000
--- a/doc/html/pkann_8cc_source.html
+++ /dev/null
@@ -1,1361 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/pkann.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkann.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pkann.cc: classify raster image using Artificial Neural Network</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <stdlib.h></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <vector></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <map></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <algorithm></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "imageclasses/ImgReaderGdal.h"</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "imageclasses/ImgWriterGdal.h"</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "imageclasses/ImgReaderOgr.h"</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "imageclasses/ImgWriterOgr.h"</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include "base/PosValue.h"</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include "algorithms/ConfusionMatrix.h"</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="preprocessor">#include "floatfann.h"</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="preprocessor">#include "algorithms/myfann_cpp.h"</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> </div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="comment">/******************************************************************************/</span></div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span> </div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span> {</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>   vector<double> priors;</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>   </div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   <span class="comment">//--------------------------- command line options ------------------------------------</span></div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> input_opt(<span class="stringliteral">"i"</span>, <span class="stringliteral">"input"</span>, <span class="stringliteral">"input image"</span>); </div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> training_opt(<span class="stringliteral">"t"</span>, <span class="stringliteral">"training"</span>, <span class="stringliteral">"training vector file. A single vector file contains all training features (must be set as: B0, B1, B2,...) for all classes (class numbers identified by label option). Use multiple training  [...]
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> tlayer_opt(<span class="stringliteral">"tln"</span>, <span class="stringliteral">"tln"</span>, <span class="stringliteral">"training layer name(s)"</span>);</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> label_opt(<span class="stringliteral">"label"</span>, <span class="stringliteral">"label"</span>, <span class="stringliteral">"identifier for class label in training vector file."</span>,<span class="stringliteral">"label"</span>); </div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned int></a> balance_opt(<span class="stringliteral">"bal"</span>, <span class="stringliteral">"balance"</span>, <span class="stringliteral">"balance the input data to this number of samples for each class"</span>, 0);</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> random_opt(<span class="stringliteral">"random"</span>, <span class="stringliteral">"random"</span>, <span class="stringliteral">"in case of balance, randomize input data"</span>, <span class="keyword">true</span>,2);</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> minSize_opt(<span class="stringliteral">"min"</span>, <span class="stringliteral">"min"</span>, <span class="stringliteral">"if number of training pixels is less then min, do not take this class into account (0: consider all classes)"</span>, 0);</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> band_opt(<span class="stringliteral">"b"</span>, <span class="stringliteral">"band"</span>, <span class="stringliteral">"band index (starting from 0, either use band option or use start to end)"</span>);</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> bstart_opt(<span class="stringliteral">"sband"</span>, <span class="stringliteral">"startband"</span>, <span class="stringliteral">"Start band sequence number"</span>); </div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> bend_opt(<span class="stringliteral">"eband"</span>, <span class="stringliteral">"endband"</span>, <span class="stringliteral">"End band sequence number"</span>); </div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> offset_opt(<span class="stringliteral">"offset"</span>, <span class="stringliteral">"offset"</span>, <span class="stringliteral">"offset value for each spectral band input features: refl[band]=(DN[band]-offset[band])/scale[band]"</span>, 0.0);</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> scale_opt(<span class="stringliteral">"scale"</span>, <span class="stringliteral">"scale"</span>, <span class="stringliteral">"scale value for each spectral band input features: refl=(DN[band]-offset[band])/scale[band] (use 0 if scale min and max in each band to -1.0 and 1.0)"</span>, 0.0);</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> aggreg_opt(<span class="stringliteral">"a"</span>, <span class="stringliteral">"aggreg"</span>, <span class="stringliteral">"how to combine aggregated classifiers, see also rc option (1: sum rule, 2: max rule)."</span>,1);</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> priors_opt(<span class="stringliteral">"prior"</span>, <span class="stringliteral">"prior"</span>, <span class="stringliteral">"prior probabilities for each class (e.g., -p 0.3 -p 0.3 -p 0.2 )"</span>, 0.0); </div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> priorimg_opt(<span class="stringliteral">"pim"</span>, <span class="stringliteral">"priorimg"</span>, <span class="stringliteral">"prior probability image (multi-band img with band for each class"</span>,<span class="stringliteral">""</span>,2); </div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> cv_opt(<span class="stringliteral">"cv"</span>, <span class="stringliteral">"cv"</span>, <span class="stringliteral">"n-fold cross validation mode"</span>,0);</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> cmformat_opt(<span class="stringliteral">"cmf"</span>,<span class="stringliteral">"cmf"</span>,<span class="stringliteral">"Format for confusion matrix (ascii or latex)"</span>,<span class="stringliteral">"ascii"</span>);</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned int></a> nneuron_opt(<span class="stringliteral">"nn"</span>, <span class="stringliteral">"nneuron"</span>, <span class="stringliteral">"number of neurons in hidden layers in neural network (multiple hidden layers are set by defining multiple number of neurons: -n 15 -n 1, default is one hidden layer with 5 neurons)&quo [...]
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>   <a class="code" href="classOptionpk.html">Optionpk<float></a> connection_opt(<span class="stringliteral">"\0"</span>, <span class="stringliteral">"connection"</span>, <span class="stringliteral">"connection reate (default: 1.0 for a fully connected network)"</span>, 1.0); </div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>   <a class="code" href="classOptionpk.html">Optionpk<float></a> learning_opt(<span class="stringliteral">"l"</span>, <span class="stringliteral">"learning"</span>, <span class="stringliteral">"learning rate (default: 0.7)"</span>, 0.7); </div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>   <a class="code" href="classOptionpk.html">Optionpk<float></a> weights_opt(<span class="stringliteral">"w"</span>, <span class="stringliteral">"weights"</span>, <span class="stringliteral">"weights for neural network. Apply to fully connected network only, starting from first input neuron to last output neuron, including the bias neurons (last neuron in each but last layer)" [...]
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned int></a> maxit_opt(<span class="stringliteral">"\0"</span>, <span class="stringliteral">"maxit"</span>, <span class="stringliteral">"number of maximum iterations (epoch) (default: 500)"</span>, 500); </div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> comb_opt(<span class="stringliteral">"comb"</span>, <span class="stringliteral">"comb"</span>, <span class="stringliteral">"how to combine bootstrap aggregation classifiers (0: sum rule, 1: product rule, 2: max rule). Also used to aggregate classes with rc option. Default is sum rule (0)"</span>,0); </div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> bag_opt(<span class="stringliteral">"bag"</span>, <span class="stringliteral">"bag"</span>, <span class="stringliteral">"Number of bootstrap aggregations (default is no bagging: 1)"</span>, 1);</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> bagSize_opt(<span class="stringliteral">"bs"</span>, <span class="stringliteral">"bsize"</span>, <span class="stringliteral">"Percentage of features used from available training features for each bootstrap aggregation (one size for all classes, or a different size for each class respectively"</span>, 100);</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> classBag_opt(<span class="stringliteral">"cb"</span>, <span class="stringliteral">"classbag"</span>, <span class="stringliteral">"output for each individual bootstrap aggregation (default is blank)"</span>); </div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> mask_opt(<span class="stringliteral">"m"</span>, <span class="stringliteral">"mask"</span>, <span class="stringliteral">"Only classify within specified mask (vector or raster). For raster mask, set nodata values with the option msknodata."</span>);</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> msknodata_opt(<span class="stringliteral">"msknodata"</span>, <span class="stringliteral">"msknodata"</span>, <span class="stringliteral">"mask value(s) not to consider for classification. Values will be taken over in classification image. Default is 0"</span>, 0);</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> nodata_opt(<span class="stringliteral">"nodata"</span>, <span class="stringliteral">"nodata"</span>, <span class="stringliteral">"nodata value to put where image is masked as nodata"</span>, 0);</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> output_opt(<span class="stringliteral">"o"</span>, <span class="stringliteral">"output"</span>, <span class="stringliteral">"output classification image"</span>); </div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  otype_opt(<span class="stringliteral">"ot"</span>, <span class="stringliteral">"otype"</span>, <span class="stringliteral">"Data type for output image ({Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/CInt16/CInt32/CFloat32/CFloat64}). Empty string: inherit type from input image"</span>);</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  oformat_opt(<span class="stringliteral">"of"</span>, <span class="stringliteral">"oformat"</span>, <span class="stringliteral">"Output image format (see also gdal_translate)."</span>,<span class="stringliteral">"GTiff"</span>);</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> option_opt(<span class="stringliteral">"co"</span>, <span class="stringliteral">"co"</span>, <span class="stringliteral">"Creation option for output file. Multiple options can be specified."</span>);</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> colorTable_opt(<span class="stringliteral">"ct"</span>, <span class="stringliteral">"ct"</span>, <span class="stringliteral">"colour table in ASCII format having 5 columns: id R G B ALFA (0: transparent, 255: solid)"</span>); </div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> prob_opt(<span class="stringliteral">"\0"</span>, <span class="stringliteral">"prob"</span>, <span class="stringliteral">"probability image. Default is no probability image"</span>); </div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> entropy_opt(<span class="stringliteral">"entropy"</span>, <span class="stringliteral">"entropy"</span>, <span class="stringliteral">"entropy image (measure for uncertainty of classifier output"</span>,<span class="stringliteral">""</span>,2); </div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> active_opt(<span class="stringliteral">"active"</span>, <span class="stringliteral">"active"</span>, <span class="stringliteral">"ogr output for active training sample."</span>,<span class="stringliteral">""</span>,2); </div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> ogrformat_opt(<span class="stringliteral">"f"</span>, <span class="stringliteral">"f"</span>, <span class="stringliteral">"Output ogr format for active training sample"</span>,<span class="stringliteral">"SQLite"</span>);</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned int></a> nactive_opt(<span class="stringliteral">"na"</span>, <span class="stringliteral">"nactive"</span>, <span class="stringliteral">"number of active training points"</span>,1);</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> classname_opt(<span class="stringliteral">"c"</span>, <span class="stringliteral">"class"</span>, <span class="stringliteral">"list of class names."</span>); </div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> classvalue_opt(<span class="stringliteral">"r"</span>, <span class="stringliteral">"reclass"</span>, <span class="stringliteral">"list of class values (use same order as in class opt)."</span>); </div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> verbose_opt(<span class="stringliteral">"v"</span>, <span class="stringliteral">"verbose"</span>, <span class="stringliteral">"set to: 0 (results only), 1 (confusion matrix), 2 (debug)"</span>,0,2);</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span> </div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>   option_opt.setHide(1);</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   oformat_opt.setHide(1);</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>   band_opt.setHide(1);</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>   bstart_opt.setHide(1);</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>   bend_opt.setHide(1);</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>   balance_opt.setHide(1);</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>   minSize_opt.setHide(1);</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>   bag_opt.setHide(1);</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>   bagSize_opt.setHide(1);</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>   comb_opt.setHide(1);</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>   classBag_opt.setHide(1);</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>   minSize_opt.setHide(1);</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>   prob_opt.setHide(1);</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>   priorimg_opt.setHide(1);</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>   minSize_opt.setHide(1);</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>   offset_opt.setHide(1);</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>   scale_opt.setHide(1);</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>   connection_opt.setHide(1);</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>   weights_opt.setHide(1);</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>   maxit_opt.setHide(1);</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>   learning_opt.setHide(1);</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span> </div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>   verbose_opt.setHide(2);</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span> </div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>   <span class="keywordtype">bool</span> doProcess;<span class="comment">//stop process when program was invoked with help option (-h --help)</span></div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>     doProcess=input_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>     training_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>     tlayer_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>     label_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>     balance_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>     random_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>     minSize_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>     band_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>     bstart_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>     bend_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>     offset_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>     scale_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>     aggreg_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>     priors_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>     priorimg_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>     cv_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>     cmformat_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>     nneuron_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>     connection_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>     weights_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>     learning_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>     maxit_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>     comb_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>     bag_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>     bagSize_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>     classBag_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>     mask_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>     msknodata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>     nodata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>     output_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>     otype_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>     oformat_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>     colorTable_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>     option_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>     prob_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>     entropy_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>     active_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>     ogrformat_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>     nactive_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>     classname_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>     classvalue_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>     verbose_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>   }</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> predefinedString){</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>     std::cout << predefinedString << std::endl;</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>     exit(0);</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>   }</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>   <span class="keywordflow">if</span>(!doProcess){</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>     cout << endl;</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>     cout << <span class="stringliteral">"Usage: pkann -t training [-i input -o output] [-cv value]"</span> << endl;</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>     cout << endl;</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>     cout << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << endl;</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>     exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>   }</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span> </div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>   <span class="keywordflow">if</span>(entropy_opt[0]==<span class="stringliteral">""</span>)</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>     entropy_opt.clear();</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>   <span class="keywordflow">if</span>(active_opt[0]==<span class="stringliteral">""</span>)</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>     active_opt.clear();</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>   <span class="keywordflow">if</span>(priorimg_opt[0]==<span class="stringliteral">""</span>)</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>     priorimg_opt.clear();</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span> </div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>   <span class="keywordflow">if</span>(verbose_opt[0]>=1){</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>     <span class="keywordflow">if</span>(input_opt.size())</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>       cout << <span class="stringliteral">"image filename: "</span> << input_opt[0] << endl;</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>     <span class="keywordflow">if</span>(mask_opt.size())</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>       cout << <span class="stringliteral">"mask filename: "</span> << mask_opt[0] << endl;</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>     <span class="keywordflow">if</span>(training_opt.size()){</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>       cout << <span class="stringliteral">"training vector file: "</span> << endl;</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ifile=0;ifile<training_opt.size();++ifile)</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>         cout << training_opt[ifile] << endl;</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>     }</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>       cerr << <span class="stringliteral">"no training file set!"</span> << endl;</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>     cout << <span class="stringliteral">"verbose: "</span> << verbose_opt[0] << endl;</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>   }</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> nbag=(training_opt.size()>1)?training_opt.size():bag_opt[0];</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>   <span class="keywordflow">if</span>(verbose_opt[0]>=1)</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>     cout << <span class="stringliteral">"number of bootstrap aggregations: "</span> << nbag << endl;</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>   </div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>   <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a> extentReader;</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>   OGRLayer  *readLayer;</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span> </div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>   <span class="keywordtype">double</span> ulx=0;</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>   <span class="keywordtype">double</span> uly=0;</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>   <span class="keywordtype">double</span> lrx=0;</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>   <span class="keywordtype">double</span> lry=0;</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span> </div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>   <span class="keywordtype">bool</span> maskIsVector=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>   <span class="keywordflow">if</span>(mask_opt.size()){</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>       extentReader.open(mask_opt[0]);</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>       maskIsVector=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>       readLayer = extentReader.getDataSource()->GetLayer(0);</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>       <span class="keywordflow">if</span>(!(extentReader.getExtent(ulx,uly,lrx,lry))){</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>     cerr << <span class="stringliteral">"Error: could not get extent from "</span> << mask_opt[0] << endl;</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>     exit(1);</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>       }</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>     }</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>     <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorString){</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>       maskIsVector=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>     }</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>   }</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span> </div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>   <a class="code" href="classImgWriterOgr.html">ImgWriterOgr</a> activeWriter;</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>   <span class="keywordflow">if</span>(active_opt.size()){</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>     <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a> trainingReader(training_opt[0]);</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>     activeWriter.open(active_opt[0],ogrformat_opt[0]);</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>     activeWriter.createLayer(active_opt[0],trainingReader.getProjection(),wkbPoint,NULL);</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>     activeWriter.copyFields(trainingReader);</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>   }</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>   vector<PosValue> activePoints(nactive_opt[0]);</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iactive=0;iactive<activePoints.size();++iactive){</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>     activePoints[iactive].value=1.0;</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>     activePoints[iactive].posx=0.0;</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>     activePoints[iactive].posy=0.0;</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>   }</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span> </div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> totalSamples=0;</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nactive=0;</div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>   vector<FANN::neural_net> net(nbag);<span class="comment">//the neural network</span></div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span> </div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nclass=0;</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>   <span class="keywordtype">int</span> nband=0;</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>   <span class="keywordtype">int</span> startBand=2;<span class="comment">//first two bands represent X and Y pos</span></div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span> </div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>   <span class="keywordflow">if</span>(priors_opt.size()>1){<span class="comment">//priors from argument list</span></div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>     priors.resize(priors_opt.size());</div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>     <span class="keywordtype">double</span> normPrior=0;</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<priors_opt.size();++iclass){</div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>       priors[iclass]=priors_opt[iclass];</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>       normPrior+=priors[iclass];</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>     }</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>     <span class="comment">//normalize</span></div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<priors_opt.size();++iclass)</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>       priors[iclass]/=normPrior;</div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>   }</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span> </div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>   <span class="comment">//convert start and end band options to vector of band indexes</span></div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>     <span class="keywordflow">if</span>(bstart_opt.size()){</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>       <span class="keywordflow">if</span>(bend_opt.size()!=bstart_opt.size()){</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>     <span class="keywordtype">string</span> errorstring=<span class="stringliteral">"Error: options for start and end band indexes must be provided as pairs, missing end band"</span>;</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>     <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>       }</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>       band_opt.clear();</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ipair=0;ipair<bstart_opt.size();++ipair){</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>     <span class="keywordflow">if</span>(bend_opt[ipair]<=bstart_opt[ipair]){</div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>       <span class="keywordtype">string</span> errorstring=<span class="stringliteral">"Error: index for end band must be smaller then start band"</span>;</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>       <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>     }</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=bstart_opt[ipair];iband<=bend_opt[ipair];++iband)</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>       band_opt.push_back(iband);</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>       }</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>     }</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>   }</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> error){</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>     cerr << error << std::endl;</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>     exit(1);</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>   }</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>   <span class="comment">//sort bands</span></div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>   <span class="keywordflow">if</span>(band_opt.size())</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>     std::sort(band_opt.begin(),band_opt.end());</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span> </div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>   map<string,short> classValueMap;</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>   vector<std::string> nameVector;</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>   <span class="keywordflow">if</span>(classname_opt.size()){</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>     assert(classname_opt.size()==classvalue_opt.size());</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<classname_opt.size();++iclass)</div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>       classValueMap[classname_opt[iclass]]=classvalue_opt[iclass];</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>   }</div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>   <span class="comment">//----------------------------------- Training -------------------------------</span></div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>   <a class="code" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a> cm;</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>   vector< vector<double> > offset(nbag);</div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>   vector< vector<double> > scale(nbag);</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>   map<string,Vector2d<float> > trainingMap;</div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>   vector< Vector2d<float> > trainingPixels;<span class="comment">//[class][sample][band]</span></div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>   vector<string> fields;</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ibag=0;ibag<nbag;++ibag){</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>     <span class="comment">//organize training data</span></div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>     <span class="keywordflow">if</span>(ibag<training_opt.size()){<span class="comment">//if bag contains new training pixels</span></div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>       trainingMap.clear();</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>       trainingPixels.clear();</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>       <span class="keywordflow">if</span>(verbose_opt[0]>=1)</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>         cout << <span class="stringliteral">"reading imageVector file "</span> << training_opt[0] << endl;</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>     <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a> trainingReaderBag(training_opt[ibag]);</div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>         <span class="keywordflow">if</span>(band_opt.size())</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>           totalSamples=trainingReaderBag.readDataImageOgr(trainingMap,fields,band_opt,label_opt[0],tlayer_opt);</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>           totalSamples=trainingReaderBag.readDataImageOgr(trainingMap,fields,0,0,label_opt[0],tlayer_opt);</div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>         <span class="keywordflow">if</span>(trainingMap.size()<2){</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>           <span class="keywordtype">string</span> errorstring=<span class="stringliteral">"Error: could not read at least two classes from training file, did you provide class labels in training sample (see option label)?"</span>;</div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>           <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>         }</div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>     trainingReaderBag.close();</div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>       }</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> error){</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>         cerr << error << std::endl;</div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>         exit(1);</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>       }</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>       <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>         cerr << <span class="stringliteral">"error caught"</span> << std::endl;</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>         exit(1);</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>       }</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>       <span class="comment">//delete class 0 ?</span></div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>       <span class="comment">// if(verbose_opt[0]>=1)</span></div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>       <span class="comment">//   std::cout << "erasing class 0 from training set (" << trainingMap[0].size() << " from " << totalSamples << ") samples" << std::endl;</span></div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>       <span class="comment">// totalSamples-=trainingMap[0].size();</span></div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>       <span class="comment">// trainingMap.erase(0);</span></div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>       <span class="comment">//convert map to vector</span></div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>       <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>         std::cout << <span class="stringliteral">"training pixels: "</span> << std::endl;</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>       map<string,Vector2d<float> >::iterator mapit=trainingMap.begin();</div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>       <span class="keywordflow">while</span>(mapit!=trainingMap.end()){</div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>         <span class="comment">//delete small classes</span></div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>         <span class="keywordflow">if</span>((mapit->second).size()<minSize_opt[0]){</div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>           trainingMap.erase(mapit);</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>           <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span>         }</div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>         trainingPixels.push_back(mapit->second);</div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>         <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>           std::cout << mapit->first << <span class="stringliteral">": "</span> << (mapit->second).size() << <span class="stringliteral">" samples"</span> << std::endl;</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span>         ++mapit;</div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>         }</div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span>       <span class="keywordflow">if</span>(!ibag){</div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>         nclass=trainingPixels.size();</div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>     <span class="keywordflow">if</span>(classname_opt.size())</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>       assert(nclass==classname_opt.size());</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>         nband=(training_opt.size())?trainingPixels[0][0].size()-2:trainingPixels[0][0].size();<span class="comment">//X and Y</span></div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span>       }</div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>         assert(nclass==trainingPixels.size());</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>         assert(nband==(training_opt.size())?trainingPixels[0][0].size()-2:trainingPixels[0][0].size());</div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>       }</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span> </div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>       <span class="comment">//do not remove outliers here: could easily be obtained through ogr2ogr -where 'B2<110' output.shp input.shp</span></div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>       <span class="comment">//balance training data</span></div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span>       <span class="keywordflow">if</span>(balance_opt[0]>0){</div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>         <span class="keywordflow">while</span>(balance_opt.size()<nclass)</div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span>           balance_opt.push_back(balance_opt.back());</div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span>         <span class="keywordflow">if</span>(random_opt[0])</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>           srand(time(NULL));</div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span>         totalSamples=0;</div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span>           <span class="keywordflow">if</span>(trainingPixels[iclass].size()>balance_opt[iclass]){</div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span>             <span class="keywordflow">while</span>(trainingPixels[iclass].size()>balance_opt[iclass]){</div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span>               <span class="keywordtype">int</span> index=rand()%trainingPixels[iclass].size();</div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span>               trainingPixels[iclass].erase(trainingPixels[iclass].begin()+index);</div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span>             }</div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span>           }</div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>           <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>             <span class="keywordtype">int</span> oldsize=trainingPixels[iclass].size();</div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=trainingPixels[iclass].size();isample<balance_opt[iclass];++isample){</div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span>               <span class="keywordtype">int</span> index = rand()%oldsize;</div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span>               trainingPixels[iclass].push_back(trainingPixels[iclass][index]);</div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span>             }</div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span>           }</div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span>           totalSamples+=trainingPixels[iclass].size();</div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span>         }</div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span>       }</div>
-<div class="line"><a name="l00445"></a><span class="lineno">  445</span>     </div>
-<div class="line"><a name="l00446"></a><span class="lineno">  446</span>       <span class="comment">//set scale and offset</span></div>
-<div class="line"><a name="l00447"></a><span class="lineno">  447</span>       offset[ibag].resize(nband);</div>
-<div class="line"><a name="l00448"></a><span class="lineno">  448</span>       scale[ibag].resize(nband);</div>
-<div class="line"><a name="l00449"></a><span class="lineno">  449</span>       <span class="keywordflow">if</span>(offset_opt.size()>1)</div>
-<div class="line"><a name="l00450"></a><span class="lineno">  450</span>         assert(offset_opt.size()==nband);</div>
-<div class="line"><a name="l00451"></a><span class="lineno">  451</span>       <span class="keywordflow">if</span>(scale_opt.size()>1)</div>
-<div class="line"><a name="l00452"></a><span class="lineno">  452</span>         assert(scale_opt.size()==nband);</div>
-<div class="line"><a name="l00453"></a><span class="lineno">  453</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l00454"></a><span class="lineno">  454</span>         <span class="keywordflow">if</span>(verbose_opt[0]>=1)</div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span>           cout << <span class="stringliteral">"scaling for band"</span> << iband << endl;</div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</span>         offset[ibag][iband]=(offset_opt.size()==1)?offset_opt[0]:offset_opt[iband];</div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span>         scale[ibag][iband]=(scale_opt.size()==1)?scale_opt[0]:scale_opt[iband];</div>
-<div class="line"><a name="l00458"></a><span class="lineno">  458</span>         <span class="comment">//search for min and maximum</span></div>
-<div class="line"><a name="l00459"></a><span class="lineno">  459</span>         <span class="keywordflow">if</span>(scale[ibag][iband]<=0){</div>
-<div class="line"><a name="l00460"></a><span class="lineno">  460</span>           <span class="keywordtype">float</span> theMin=trainingPixels[0][0][iband+startBand];</div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span>           <span class="keywordtype">float</span> theMax=trainingPixels[0][0][iband+startBand];</div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<trainingPixels[iclass].size();++isample){</div>
-<div class="line"><a name="l00464"></a><span class="lineno">  464</span>               <span class="keywordflow">if</span>(theMin>trainingPixels[iclass][isample][iband+startBand])</div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span>                 theMin=trainingPixels[iclass][isample][iband+startBand];</div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>               <span class="keywordflow">if</span>(theMax<trainingPixels[iclass][isample][iband+startBand])</div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span>                 theMax=trainingPixels[iclass][isample][iband+startBand];</div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span>             }</div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span>           }</div>
-<div class="line"><a name="l00470"></a><span class="lineno">  470</span>           offset[ibag][iband]=theMin+(theMax-theMin)/2.0;</div>
-<div class="line"><a name="l00471"></a><span class="lineno">  471</span>           scale[ibag][iband]=(theMax-theMin)/2.0;</div>
-<div class="line"><a name="l00472"></a><span class="lineno">  472</span>           <span class="keywordflow">if</span>(verbose_opt[0]>=1){</div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span>             std::cout << <span class="stringliteral">"Extreme image values for band "</span> << iband << <span class="stringliteral">": ["</span> << theMin << <span class="stringliteral">","</span> << theMax << <span class="stringliteral">"]"</span> << std::endl;</div>
-<div class="line"><a name="l00474"></a><span class="lineno">  474</span>             std::cout << <span class="stringliteral">"Using offset, scale: "</span> << offset[ibag][iband] << <span class="stringliteral">", "</span> << scale[ibag][iband] << std::endl;</div>
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span>             std::cout << <span class="stringliteral">"scaled values for band "</span> << iband << <span class="stringliteral">": ["</span> << (theMin-offset[ibag][iband])/scale[ibag][iband] << <span class="stringliteral">","</span> << (theMax-offset[ibag][iband])/scale[ibag][iband] << <span class="stringliteral">"]"</span> <&lt [...]
-<div class="line"><a name="l00476"></a><span class="lineno">  476</span>           }</div>
-<div class="line"><a name="l00477"></a><span class="lineno">  477</span>         }</div>
-<div class="line"><a name="l00478"></a><span class="lineno">  478</span>       }</div>
-<div class="line"><a name="l00479"></a><span class="lineno">  479</span>     }</div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span>     <span class="keywordflow">else</span>{<span class="comment">//use same offset and scale </span></div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span>       offset[ibag].resize(nband);</div>
-<div class="line"><a name="l00482"></a><span class="lineno">  482</span>       scale[ibag].resize(nband);</div>
-<div class="line"><a name="l00483"></a><span class="lineno">  483</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l00484"></a><span class="lineno">  484</span>         offset[ibag][iband]=offset[0][iband];</div>
-<div class="line"><a name="l00485"></a><span class="lineno">  485</span>         scale[ibag][iband]=scale[0][iband];</div>
-<div class="line"><a name="l00486"></a><span class="lineno">  486</span>       }</div>
-<div class="line"><a name="l00487"></a><span class="lineno">  487</span>     }</div>
-<div class="line"><a name="l00488"></a><span class="lineno">  488</span>       </div>
-<div class="line"><a name="l00489"></a><span class="lineno">  489</span>     <span class="keywordflow">if</span>(!ibag){</div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span>       <span class="keywordflow">if</span>(priors_opt.size()==1){<span class="comment">//default: equal priors for each class</span></div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span>         priors.resize(nclass);</div>
-<div class="line"><a name="l00492"></a><span class="lineno">  492</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<nclass;++iclass)</div>
-<div class="line"><a name="l00493"></a><span class="lineno">  493</span>           priors[iclass]=1.0/nclass;</div>
-<div class="line"><a name="l00494"></a><span class="lineno">  494</span>       }</div>
-<div class="line"><a name="l00495"></a><span class="lineno">  495</span>       assert(priors_opt.size()==1||priors_opt.size()==nclass);</div>
-<div class="line"><a name="l00496"></a><span class="lineno">  496</span>     </div>
-<div class="line"><a name="l00497"></a><span class="lineno">  497</span>       <span class="comment">//set bagsize for each class if not done already via command line</span></div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span>       <span class="keywordflow">while</span>(bagSize_opt.size()<nclass)</div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span>         bagSize_opt.push_back(bagSize_opt.back());</div>
-<div class="line"><a name="l00500"></a><span class="lineno">  500</span> </div>
-<div class="line"><a name="l00501"></a><span class="lineno">  501</span>       <span class="keywordflow">if</span>(verbose_opt[0]>=1){</div>
-<div class="line"><a name="l00502"></a><span class="lineno">  502</span>         std::cout << <span class="stringliteral">"number of bands: "</span> << nband << std::endl;</div>
-<div class="line"><a name="l00503"></a><span class="lineno">  503</span>         std::cout << <span class="stringliteral">"number of classes: "</span> << nclass << std::endl;</div>
-<div class="line"><a name="l00504"></a><span class="lineno">  504</span>         std::cout << <span class="stringliteral">"priors:"</span>;</div>
-<div class="line"><a name="l00505"></a><span class="lineno">  505</span>     <span class="keywordflow">if</span>(priorimg_opt.empty()){</div>
-<div class="line"><a name="l00506"></a><span class="lineno">  506</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<nclass;++iclass)</div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span>             std::cout << <span class="stringliteral">" "</span> << priors[iclass];</div>
-<div class="line"><a name="l00508"></a><span class="lineno">  508</span>           std::cout << std::endl;</div>
-<div class="line"><a name="l00509"></a><span class="lineno">  509</span>         }</div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span>       }</div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span>       map<string,Vector2d<float> >::iterator mapit=trainingMap.begin();</div>
-<div class="line"><a name="l00512"></a><span class="lineno">  512</span>       <span class="keywordtype">bool</span> doSort=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00513"></a><span class="lineno">  513</span>       <span class="keywordflow">while</span>(mapit!=trainingMap.end()){</div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span>     nameVector.push_back(mapit->first);</div>
-<div class="line"><a name="l00515"></a><span class="lineno">  515</span>     <span class="keywordflow">if</span>(classValueMap.size()){</div>
-<div class="line"><a name="l00516"></a><span class="lineno">  516</span>       <span class="comment">//check if name in training is covered by classname_opt (values can not be 0)</span></div>
-<div class="line"><a name="l00517"></a><span class="lineno">  517</span>       <span class="keywordflow">if</span>(classValueMap[mapit->first]>0){</div>
-<div class="line"><a name="l00518"></a><span class="lineno">  518</span>         <span class="keywordflow">if</span>(cm.getClassIndex(type2string<short>(classValueMap[mapit->first]))<0)</div>
-<div class="line"><a name="l00519"></a><span class="lineno">  519</span>           cm.pushBackClassName(type2string<short>(classValueMap[mapit->first]),doSort);</div>
-<div class="line"><a name="l00520"></a><span class="lineno">  520</span>       }</div>
-<div class="line"><a name="l00521"></a><span class="lineno">  521</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00522"></a><span class="lineno">  522</span>         std::cerr << <span class="stringliteral">"Error: names in classname option are not complete, please check names in training vector and make sure classvalue is > 0"</span> << std::endl;</div>
-<div class="line"><a name="l00523"></a><span class="lineno">  523</span>         exit(1);</div>
-<div class="line"><a name="l00524"></a><span class="lineno">  524</span>       }</div>
-<div class="line"><a name="l00525"></a><span class="lineno">  525</span>     }</div>
-<div class="line"><a name="l00526"></a><span class="lineno">  526</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00527"></a><span class="lineno">  527</span>       cm.pushBackClassName(mapit->first,doSort);</div>
-<div class="line"><a name="l00528"></a><span class="lineno">  528</span>     ++mapit;</div>
-<div class="line"><a name="l00529"></a><span class="lineno">  529</span>       }</div>
-<div class="line"><a name="l00530"></a><span class="lineno">  530</span>       <span class="keywordflow">if</span>(classname_opt.empty()){</div>
-<div class="line"><a name="l00531"></a><span class="lineno">  531</span>         <span class="comment">//std::cerr << "Warning: no class name and value pair provided for all " << nclass << " classes, using string2type<int> instead!" << std::endl;</span></div>
-<div class="line"><a name="l00532"></a><span class="lineno">  532</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l00533"></a><span class="lineno">  533</span>           <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00534"></a><span class="lineno">  534</span>             std::cout << iclass << <span class="stringliteral">" "</span> << cm.getClass(iclass) << <span class="stringliteral">" -> "</span> << string2type<short>(cm.getClass(iclass)) << std::endl;</div>
-<div class="line"><a name="l00535"></a><span class="lineno">  535</span>           classValueMap[cm.getClass(iclass)]=string2type<short>(cm.getClass(iclass));</div>
-<div class="line"><a name="l00536"></a><span class="lineno">  536</span>         }</div>
-<div class="line"><a name="l00537"></a><span class="lineno">  537</span>       }</div>
-<div class="line"><a name="l00538"></a><span class="lineno">  538</span>       <span class="keywordflow">if</span>(priors_opt.size()==nameVector.size()){</div>
-<div class="line"><a name="l00539"></a><span class="lineno">  539</span>     std::cerr << <span class="stringliteral">"Warning: please check if priors are provided in correct order!!!"</span> << std::endl;</div>
-<div class="line"><a name="l00540"></a><span class="lineno">  540</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<nameVector.size();++iclass)</div>
-<div class="line"><a name="l00541"></a><span class="lineno">  541</span>       std::cerr << nameVector[iclass] << <span class="stringliteral">" "</span> << priors_opt[iclass] << std::endl;</div>
-<div class="line"><a name="l00542"></a><span class="lineno">  542</span>       }</div>
-<div class="line"><a name="l00543"></a><span class="lineno">  543</span>     }<span class="comment">//if(!ibag)</span></div>
-<div class="line"><a name="l00544"></a><span class="lineno">  544</span> </div>
-<div class="line"><a name="l00545"></a><span class="lineno">  545</span>     <span class="comment">//Calculate features of training set</span></div>
-<div class="line"><a name="l00546"></a><span class="lineno">  546</span>     vector< Vector2d<float> > trainingFeatures(nclass);</div>
-<div class="line"><a name="l00547"></a><span class="lineno">  547</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l00548"></a><span class="lineno">  548</span>       <span class="keywordtype">int</span> nctraining=0;</div>
-<div class="line"><a name="l00549"></a><span class="lineno">  549</span>       <span class="keywordflow">if</span>(verbose_opt[0]>=1)</div>
-<div class="line"><a name="l00550"></a><span class="lineno">  550</span>         cout << <span class="stringliteral">"calculating features for class "</span> << iclass << endl;</div>
-<div class="line"><a name="l00551"></a><span class="lineno">  551</span>       <span class="keywordflow">if</span>(random_opt[0])</div>
-<div class="line"><a name="l00552"></a><span class="lineno">  552</span>         srand(time(NULL));</div>
-<div class="line"><a name="l00553"></a><span class="lineno">  553</span>       nctraining=(bagSize_opt[iclass]<100)? trainingPixels[iclass].size()/100.0*bagSize_opt[iclass] : trainingPixels[iclass].size();<span class="comment">//bagSize_opt[iclass] given in % of training size</span></div>
-<div class="line"><a name="l00554"></a><span class="lineno">  554</span>       <span class="keywordflow">if</span>(nctraining<=0)</div>
-<div class="line"><a name="l00555"></a><span class="lineno">  555</span>         nctraining=1;</div>
-<div class="line"><a name="l00556"></a><span class="lineno">  556</span>       assert(nctraining<=trainingPixels[iclass].size());</div>
-<div class="line"><a name="l00557"></a><span class="lineno">  557</span>       <span class="keywordtype">int</span> index=0;</div>
-<div class="line"><a name="l00558"></a><span class="lineno">  558</span>       <span class="keywordflow">if</span>(bagSize_opt[iclass]<100)</div>
-<div class="line"><a name="l00559"></a><span class="lineno">  559</span>         random_shuffle(trainingPixels[iclass].begin(),trainingPixels[iclass].end());</div>
-<div class="line"><a name="l00560"></a><span class="lineno">  560</span>       </div>
-<div class="line"><a name="l00561"></a><span class="lineno">  561</span>       trainingFeatures[iclass].resize(nctraining);</div>
-<div class="line"><a name="l00562"></a><span class="lineno">  562</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<nctraining;++isample){</div>
-<div class="line"><a name="l00563"></a><span class="lineno">  563</span>         <span class="comment">//scale pixel values according to scale and offset!!!</span></div>
-<div class="line"><a name="l00564"></a><span class="lineno">  564</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l00565"></a><span class="lineno">  565</span>           <span class="keywordtype">float</span> value=trainingPixels[iclass][isample][iband+startBand];</div>
-<div class="line"><a name="l00566"></a><span class="lineno">  566</span>           trainingFeatures[iclass][isample].push_back((value-offset[ibag][iband])/scale[ibag][iband]);</div>
-<div class="line"><a name="l00567"></a><span class="lineno">  567</span>         }</div>
-<div class="line"><a name="l00568"></a><span class="lineno">  568</span>       }</div>
-<div class="line"><a name="l00569"></a><span class="lineno">  569</span>       assert(trainingFeatures[iclass].size()==nctraining);</div>
-<div class="line"><a name="l00570"></a><span class="lineno">  570</span>     }</div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span>     </div>
-<div class="line"><a name="l00572"></a><span class="lineno">  572</span>     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nFeatures=trainingFeatures[0][0].size();</div>
-<div class="line"><a name="l00573"></a><span class="lineno">  573</span>     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ntraining=0;</div>
-<div class="line"><a name="l00574"></a><span class="lineno">  574</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<nclass;++iclass)</div>
-<div class="line"><a name="l00575"></a><span class="lineno">  575</span>       ntraining+=trainingFeatures[iclass].size();</div>
-<div class="line"><a name="l00576"></a><span class="lineno">  576</span> </div>
-<div class="line"><a name="l00577"></a><span class="lineno">  577</span>     <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_layers = nneuron_opt.size()+2;</div>
-<div class="line"><a name="l00578"></a><span class="lineno">  578</span>     <span class="keyword">const</span> <span class="keywordtype">float</span> desired_error = 0.0003;</div>
-<div class="line"><a name="l00579"></a><span class="lineno">  579</span>     <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iterations_between_reports = (verbose_opt[0])? maxit_opt[0]+1:0;</div>
-<div class="line"><a name="l00580"></a><span class="lineno">  580</span>     <span class="keywordflow">if</span>(verbose_opt[0]>=1){</div>
-<div class="line"><a name="l00581"></a><span class="lineno">  581</span>       cout << <span class="stringliteral">"number of features: "</span> << nFeatures << endl;</div>
-<div class="line"><a name="l00582"></a><span class="lineno">  582</span>       cout << <span class="stringliteral">"creating artificial neural network with "</span> << nneuron_opt.size() << <span class="stringliteral">" hidden layer, having "</span> << endl;</div>
-<div class="line"><a name="l00583"></a><span class="lineno">  583</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ilayer=0;ilayer<nneuron_opt.size();++ilayer)</div>
-<div class="line"><a name="l00584"></a><span class="lineno">  584</span>         cout << nneuron_opt[ilayer] << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00585"></a><span class="lineno">  585</span>       cout << <span class="stringliteral">"neurons"</span> << endl;</div>
-<div class="line"><a name="l00586"></a><span class="lineno">  586</span>       cout << <span class="stringliteral">"connection_opt[0]: "</span> << connection_opt[0] << std::endl;</div>
-<div class="line"><a name="l00587"></a><span class="lineno">  587</span>       cout << <span class="stringliteral">"num_layers: "</span> << num_layers << std::endl;</div>
-<div class="line"><a name="l00588"></a><span class="lineno">  588</span>       cout << <span class="stringliteral">"nFeatures: "</span> << nFeatures << std::endl;</div>
-<div class="line"><a name="l00589"></a><span class="lineno">  589</span>       cout << <span class="stringliteral">"nneuron_opt[0]: "</span> << nneuron_opt[0] << std::endl;</div>
-<div class="line"><a name="l00590"></a><span class="lineno">  590</span>       cout << <span class="stringliteral">"number of classes (nclass): "</span> << nclass << std::endl;</div>
-<div class="line"><a name="l00591"></a><span class="lineno">  591</span>     }</div>
-<div class="line"><a name="l00592"></a><span class="lineno">  592</span>     <span class="keywordflow">switch</span>(num_layers){</div>
-<div class="line"><a name="l00593"></a><span class="lineno">  593</span>     <span class="keywordflow">case</span>(3):{</div>
-<div class="line"><a name="l00594"></a><span class="lineno">  594</span>       <span class="comment">// net[ibag].create_sparse(connection_opt[0],num_layers, nFeatures, nneuron_opt[0], nclass);//replace all create_sparse with create_sparse_array due to bug in FANN!</span></div>
-<div class="line"><a name="l00595"></a><span class="lineno">  595</span>       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> layers[3];</div>
-<div class="line"><a name="l00596"></a><span class="lineno">  596</span>       layers[0]=nFeatures;</div>
-<div class="line"><a name="l00597"></a><span class="lineno">  597</span>       layers[1]=nneuron_opt[0];</div>
-<div class="line"><a name="l00598"></a><span class="lineno">  598</span>       layers[2]=nclass;</div>
-<div class="line"><a name="l00599"></a><span class="lineno">  599</span>       net[ibag].create_sparse_array(connection_opt[0],num_layers,layers);</div>
-<div class="line"><a name="l00600"></a><span class="lineno">  600</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00601"></a><span class="lineno">  601</span>     }</div>
-<div class="line"><a name="l00602"></a><span class="lineno">  602</span>     <span class="keywordflow">case</span>(4):{</div>
-<div class="line"><a name="l00603"></a><span class="lineno">  603</span>       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> layers[4];</div>
-<div class="line"><a name="l00604"></a><span class="lineno">  604</span>       layers[0]=nFeatures;</div>
-<div class="line"><a name="l00605"></a><span class="lineno">  605</span>       layers[1]=nneuron_opt[0];</div>
-<div class="line"><a name="l00606"></a><span class="lineno">  606</span>       layers[2]=nneuron_opt[1];</div>
-<div class="line"><a name="l00607"></a><span class="lineno">  607</span>       layers[3]=nclass;</div>
-<div class="line"><a name="l00608"></a><span class="lineno">  608</span>       <span class="comment">// layers.push_back(nFeatures);</span></div>
-<div class="line"><a name="l00609"></a><span class="lineno">  609</span>       <span class="comment">// for(int ihidden=0;ihidden<nneuron_opt.size();++ihidden)</span></div>
-<div class="line"><a name="l00610"></a><span class="lineno">  610</span>       <span class="comment">//    layers.push_back(nneuron_opt[ihidden]);</span></div>
-<div class="line"><a name="l00611"></a><span class="lineno">  611</span>       <span class="comment">// layers.push_back(nclass);</span></div>
-<div class="line"><a name="l00612"></a><span class="lineno">  612</span>       net[ibag].create_sparse_array(connection_opt[0],num_layers,layers);</div>
-<div class="line"><a name="l00613"></a><span class="lineno">  613</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00614"></a><span class="lineno">  614</span>     }</div>
-<div class="line"><a name="l00615"></a><span class="lineno">  615</span>     <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00616"></a><span class="lineno">  616</span>       cerr << <span class="stringliteral">"Only 1 or 2 hidden layers are supported!"</span> << endl;</div>
-<div class="line"><a name="l00617"></a><span class="lineno">  617</span>       exit(1);</div>
-<div class="line"><a name="l00618"></a><span class="lineno">  618</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00619"></a><span class="lineno">  619</span>     }</div>
-<div class="line"><a name="l00620"></a><span class="lineno">  620</span>     <span class="keywordflow">if</span>(verbose_opt[0]>=1)</div>
-<div class="line"><a name="l00621"></a><span class="lineno">  621</span>       cout << <span class="stringliteral">"network created"</span> << endl;</div>
-<div class="line"><a name="l00622"></a><span class="lineno">  622</span>   </div>
-<div class="line"><a name="l00623"></a><span class="lineno">  623</span>     net[ibag].set_learning_rate(learning_opt[0]);</div>
-<div class="line"><a name="l00624"></a><span class="lineno">  624</span> </div>
-<div class="line"><a name="l00625"></a><span class="lineno">  625</span>     <span class="comment">//   net.set_activation_steepness_hidden(1.0);</span></div>
-<div class="line"><a name="l00626"></a><span class="lineno">  626</span>     <span class="comment">//   net.set_activation_steepness_output(1.0);</span></div>
-<div class="line"><a name="l00627"></a><span class="lineno">  627</span>     </div>
-<div class="line"><a name="l00628"></a><span class="lineno">  628</span>     net[ibag].set_activation_function_hidden(FANN::SIGMOID_SYMMETRIC_STEPWISE);</div>
-<div class="line"><a name="l00629"></a><span class="lineno">  629</span>     net[ibag].set_activation_function_output(FANN::SIGMOID_SYMMETRIC_STEPWISE);</div>
-<div class="line"><a name="l00630"></a><span class="lineno">  630</span> </div>
-<div class="line"><a name="l00631"></a><span class="lineno">  631</span>     <span class="comment">// Set additional properties such as the training algorithm</span></div>
-<div class="line"><a name="l00632"></a><span class="lineno">  632</span>     <span class="comment">//   net.set_training_algorithm(FANN::TRAIN_QUICKPROP);</span></div>
-<div class="line"><a name="l00633"></a><span class="lineno">  633</span> </div>
-<div class="line"><a name="l00634"></a><span class="lineno">  634</span>     <span class="comment">// Output network type and parameters</span></div>
-<div class="line"><a name="l00635"></a><span class="lineno">  635</span>     <span class="keywordflow">if</span>(verbose_opt[0]>=1){</div>
-<div class="line"><a name="l00636"></a><span class="lineno">  636</span>       cout << endl << <span class="stringliteral">"Network Type                         :  "</span>;</div>
-<div class="line"><a name="l00637"></a><span class="lineno">  637</span>       <span class="keywordflow">switch</span> (net[ibag].get_network_type())</div>
-<div class="line"><a name="l00638"></a><span class="lineno">  638</span>         {</div>
-<div class="line"><a name="l00639"></a><span class="lineno">  639</span>         <span class="keywordflow">case</span> FANN::LAYER:</div>
-<div class="line"><a name="l00640"></a><span class="lineno">  640</span>           cout << <span class="stringliteral">"LAYER"</span> << endl;</div>
-<div class="line"><a name="l00641"></a><span class="lineno">  641</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00642"></a><span class="lineno">  642</span>         <span class="keywordflow">case</span> FANN::SHORTCUT:</div>
-<div class="line"><a name="l00643"></a><span class="lineno">  643</span>           cout << <span class="stringliteral">"SHORTCUT"</span> << endl;</div>
-<div class="line"><a name="l00644"></a><span class="lineno">  644</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00645"></a><span class="lineno">  645</span>         <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00646"></a><span class="lineno">  646</span>           cout << <span class="stringliteral">"UNKNOWN"</span> << endl;</div>
-<div class="line"><a name="l00647"></a><span class="lineno">  647</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00648"></a><span class="lineno">  648</span>         }</div>
-<div class="line"><a name="l00649"></a><span class="lineno">  649</span>       net[ibag].print_parameters();</div>
-<div class="line"><a name="l00650"></a><span class="lineno">  650</span>     }</div>
-<div class="line"><a name="l00651"></a><span class="lineno">  651</span>       </div>
-<div class="line"><a name="l00652"></a><span class="lineno">  652</span>     <span class="keywordflow">if</span>(cv_opt[0]>1){</div>
-<div class="line"><a name="l00653"></a><span class="lineno">  653</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00654"></a><span class="lineno">  654</span>         std::cout << <span class="stringliteral">"cross validation"</span> << std::endl;</div>
-<div class="line"><a name="l00655"></a><span class="lineno">  655</span>       vector<unsigned short> referenceVector;</div>
-<div class="line"><a name="l00656"></a><span class="lineno">  656</span>       vector<unsigned short> outputVector;</div>
-<div class="line"><a name="l00657"></a><span class="lineno">  657</span>       <span class="keywordtype">float</span> rmse=net[ibag].cross_validation(trainingFeatures,</div>
-<div class="line"><a name="l00658"></a><span class="lineno">  658</span>                                             ntraining,</div>
-<div class="line"><a name="l00659"></a><span class="lineno">  659</span>                                             cv_opt[0],</div>
-<div class="line"><a name="l00660"></a><span class="lineno">  660</span>                                             maxit_opt[0],</div>
-<div class="line"><a name="l00661"></a><span class="lineno">  661</span>                                             desired_error,</div>
-<div class="line"><a name="l00662"></a><span class="lineno">  662</span>                                             referenceVector,</div>
-<div class="line"><a name="l00663"></a><span class="lineno">  663</span>                                             outputVector,</div>
-<div class="line"><a name="l00664"></a><span class="lineno">  664</span>                                             verbose_opt[0]);</div>
-<div class="line"><a name="l00665"></a><span class="lineno">  665</span>       map<string,Vector2d<float> >::iterator mapit=trainingMap.begin();</div>
-<div class="line"><a name="l00666"></a><span class="lineno">  666</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<referenceVector.size();++isample){</div>
-<div class="line"><a name="l00667"></a><span class="lineno">  667</span>     <span class="keywordtype">string</span> refClassName=nameVector[referenceVector[isample]];</div>
-<div class="line"><a name="l00668"></a><span class="lineno">  668</span>     <span class="keywordtype">string</span> className=nameVector[outputVector[isample]];</div>
-<div class="line"><a name="l00669"></a><span class="lineno">  669</span>     <span class="keywordflow">if</span>(classValueMap.size())</div>
-<div class="line"><a name="l00670"></a><span class="lineno">  670</span>       cm.incrementResult(type2string<short>(classValueMap[refClassName]),type2string<short>(classValueMap[className]),1.0/nbag);</div>
-<div class="line"><a name="l00671"></a><span class="lineno">  671</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00672"></a><span class="lineno">  672</span>       cm.incrementResult(cm.getClass(referenceVector[isample]),cm.getClass(outputVector[isample]),1.0/nbag);</div>
-<div class="line"><a name="l00673"></a><span class="lineno">  673</span>       }        </div>
-<div class="line"><a name="l00674"></a><span class="lineno">  674</span>     }</div>
-<div class="line"><a name="l00675"></a><span class="lineno">  675</span>   </div>
-<div class="line"><a name="l00676"></a><span class="lineno">  676</span>     <span class="keywordflow">if</span>(verbose_opt[0]>=1)</div>
-<div class="line"><a name="l00677"></a><span class="lineno">  677</span>       cout << endl << <span class="stringliteral">"Set training data"</span> << endl;</div>
-<div class="line"><a name="l00678"></a><span class="lineno">  678</span> </div>
-<div class="line"><a name="l00679"></a><span class="lineno">  679</span>     <span class="keywordflow">if</span>(verbose_opt[0]>=1)</div>
-<div class="line"><a name="l00680"></a><span class="lineno">  680</span>       cout << endl << <span class="stringliteral">"Training network"</span> << endl;</div>
-<div class="line"><a name="l00681"></a><span class="lineno">  681</span>     </div>
-<div class="line"><a name="l00682"></a><span class="lineno">  682</span>     <span class="keywordflow">if</span>(verbose_opt[0]>=1){</div>
-<div class="line"><a name="l00683"></a><span class="lineno">  683</span>       cout << <span class="stringliteral">"Max Epochs "</span> << setw(8) << maxit_opt[0] << <span class="stringliteral">". "</span></div>
-<div class="line"><a name="l00684"></a><span class="lineno">  684</span>            << <span class="stringliteral">"Desired Error: "</span> << left << desired_error << right << endl;</div>
-<div class="line"><a name="l00685"></a><span class="lineno">  685</span>     }</div>
-<div class="line"><a name="l00686"></a><span class="lineno">  686</span>     <span class="keywordflow">if</span>(weights_opt.size()==net[ibag].get_total_connections()){<span class="comment">//no new training needed (same training sample)</span></div>
-<div class="line"><a name="l00687"></a><span class="lineno">  687</span>       vector<fann_connection> convector;</div>
-<div class="line"><a name="l00688"></a><span class="lineno">  688</span>       net[ibag].get_connection_array(convector);</div>
-<div class="line"><a name="l00689"></a><span class="lineno">  689</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i_connection=0;i_connection<net[ibag].get_total_connections();++i_connection)</div>
-<div class="line"><a name="l00690"></a><span class="lineno">  690</span>         convector[i_connection].weight=weights_opt[i_connection];</div>
-<div class="line"><a name="l00691"></a><span class="lineno">  691</span>       net[ibag].set_weight_array(convector);</div>
-<div class="line"><a name="l00692"></a><span class="lineno">  692</span>     }</div>
-<div class="line"><a name="l00693"></a><span class="lineno">  693</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00694"></a><span class="lineno">  694</span>       <span class="keywordtype">bool</span> initWeights=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00695"></a><span class="lineno">  695</span>       net[ibag].train_on_data(trainingFeatures,ntraining,initWeights, maxit_opt[0],</div>
-<div class="line"><a name="l00696"></a><span class="lineno">  696</span>                               iterations_between_reports, desired_error);</div>
-<div class="line"><a name="l00697"></a><span class="lineno">  697</span>     }</div>
-<div class="line"><a name="l00698"></a><span class="lineno">  698</span> </div>
-<div class="line"><a name="l00699"></a><span class="lineno">  699</span> </div>
-<div class="line"><a name="l00700"></a><span class="lineno">  700</span>     <span class="keywordflow">if</span>(verbose_opt[0]>=2){</div>
-<div class="line"><a name="l00701"></a><span class="lineno">  701</span>       net[ibag].print_connections();</div>
-<div class="line"><a name="l00702"></a><span class="lineno">  702</span>       vector<fann_connection> convector;</div>
-<div class="line"><a name="l00703"></a><span class="lineno">  703</span>       net[ibag].get_connection_array(convector);</div>
-<div class="line"><a name="l00704"></a><span class="lineno">  704</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i_connection=0;i_connection<net[ibag].get_total_connections();++i_connection)</div>
-<div class="line"><a name="l00705"></a><span class="lineno">  705</span>         cout << <span class="stringliteral">"connection "</span> << i_connection << <span class="stringliteral">": "</span> << convector[i_connection].weight << endl;</div>
-<div class="line"><a name="l00706"></a><span class="lineno">  706</span> </div>
-<div class="line"><a name="l00707"></a><span class="lineno">  707</span>     }</div>
-<div class="line"><a name="l00708"></a><span class="lineno">  708</span>   }<span class="comment">//for ibag</span></div>
-<div class="line"><a name="l00709"></a><span class="lineno">  709</span>   <span class="keywordflow">if</span>(cv_opt[0]>1){</div>
-<div class="line"><a name="l00710"></a><span class="lineno">  710</span>     assert(cm.nReference());</div>
-<div class="line"><a name="l00711"></a><span class="lineno">  711</span>     cm.setFormat(cmformat_opt[0]);</div>
-<div class="line"><a name="l00712"></a><span class="lineno">  712</span>     cm.reportSE95(<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00713"></a><span class="lineno">  713</span>     std::cout << cm << std::endl;</div>
-<div class="line"><a name="l00714"></a><span class="lineno">  714</span>     cout << <span class="stringliteral">"class #samples userAcc prodAcc"</span> << endl;</div>
-<div class="line"><a name="l00715"></a><span class="lineno">  715</span>     <span class="keywordtype">double</span> se95_ua=0;</div>
-<div class="line"><a name="l00716"></a><span class="lineno">  716</span>     <span class="keywordtype">double</span> se95_pa=0;</div>
-<div class="line"><a name="l00717"></a><span class="lineno">  717</span>     <span class="keywordtype">double</span> se95_oa=0;</div>
-<div class="line"><a name="l00718"></a><span class="lineno">  718</span>     <span class="keywordtype">double</span> dua=0;</div>
-<div class="line"><a name="l00719"></a><span class="lineno">  719</span>     <span class="keywordtype">double</span> dpa=0;</div>
-<div class="line"><a name="l00720"></a><span class="lineno">  720</span>     <span class="keywordtype">double</span> doa=0;</div>
-<div class="line"><a name="l00721"></a><span class="lineno">  721</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<cm.nClasses();++iclass){</div>
-<div class="line"><a name="l00722"></a><span class="lineno">  722</span>       dua=cm.ua_pct(cm.getClass(iclass),&se95_ua);</div>
-<div class="line"><a name="l00723"></a><span class="lineno">  723</span>       dpa=cm.pa_pct(cm.getClass(iclass),&se95_pa);</div>
-<div class="line"><a name="l00724"></a><span class="lineno">  724</span>       cout << cm.getClass(iclass) << <span class="stringliteral">" "</span> << cm.nReference(cm.getClass(iclass)) << <span class="stringliteral">" "</span> << dua << <span class="stringliteral">" ("</span> << se95_ua << <span class="stringliteral">")"</span> << <span class="stringliteral">" "</span> <<  [...]
-<div class="line"><a name="l00725"></a><span class="lineno">  725</span>     }</div>
-<div class="line"><a name="l00726"></a><span class="lineno">  726</span>     std::cout << <span class="stringliteral">"Kappa: "</span> << cm.kappa() << std::endl;</div>
-<div class="line"><a name="l00727"></a><span class="lineno">  727</span>     doa=cm.oa_pct(&se95_oa);</div>
-<div class="line"><a name="l00728"></a><span class="lineno">  728</span>     std::cout << <span class="stringliteral">"Overall Accuracy: "</span> << doa << <span class="stringliteral">" ("</span> << se95_oa << <span class="stringliteral">")"</span>  << std::endl;</div>
-<div class="line"><a name="l00729"></a><span class="lineno">  729</span>   }</div>
-<div class="line"><a name="l00730"></a><span class="lineno">  730</span>   <span class="comment">//--------------------------------- end of training -----------------------------------</span></div>
-<div class="line"><a name="l00731"></a><span class="lineno">  731</span>   <span class="keywordflow">if</span>(input_opt.empty())</div>
-<div class="line"><a name="l00732"></a><span class="lineno">  732</span>     exit(0);</div>
-<div class="line"><a name="l00733"></a><span class="lineno">  733</span> </div>
-<div class="line"><a name="l00734"></a><span class="lineno">  734</span>     <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00735"></a><span class="lineno">  735</span>     <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00736"></a><span class="lineno">  736</span>     GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00737"></a><span class="lineno">  737</span>     <span class="keywordtype">float</span> progress=0;</div>
-<div class="line"><a name="l00738"></a><span class="lineno">  738</span>   <span class="comment">//-------------------------------- open image file ------------------------------------</span></div>
-<div class="line"><a name="l00739"></a><span class="lineno">  739</span>   <span class="keywordtype">bool</span> inputIsRaster=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00740"></a><span class="lineno">  740</span>   <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a> imgReaderOgr;</div>
-<div class="line"><a name="l00741"></a><span class="lineno">  741</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00742"></a><span class="lineno">  742</span>     imgReaderOgr.open(input_opt[0]);</div>
-<div class="line"><a name="l00743"></a><span class="lineno">  743</span>     imgReaderOgr.close();</div>
-<div class="line"><a name="l00744"></a><span class="lineno">  744</span>   }</div>
-<div class="line"><a name="l00745"></a><span class="lineno">  745</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorString){</div>
-<div class="line"><a name="l00746"></a><span class="lineno">  746</span>     inputIsRaster=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00747"></a><span class="lineno">  747</span>   }</div>
-<div class="line"><a name="l00748"></a><span class="lineno">  748</span>   <span class="keywordflow">if</span>(inputIsRaster){</div>
-<div class="line"><a name="l00749"></a><span class="lineno">  749</span>   <span class="comment">// if(input_opt[0].find(".shp")==string::npos){</span></div>
-<div class="line"><a name="l00750"></a><span class="lineno">  750</span>     <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> testImage;</div>
-<div class="line"><a name="l00751"></a><span class="lineno">  751</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00752"></a><span class="lineno">  752</span>       <span class="keywordflow">if</span>(verbose_opt[0]>=1)</div>
-<div class="line"><a name="l00753"></a><span class="lineno">  753</span>         cout << <span class="stringliteral">"opening image "</span> << input_opt[0] << endl; </div>
-<div class="line"><a name="l00754"></a><span class="lineno">  754</span>       testImage.open(input_opt[0]);</div>
-<div class="line"><a name="l00755"></a><span class="lineno">  755</span>     }</div>
-<div class="line"><a name="l00756"></a><span class="lineno">  756</span>     <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> error){</div>
-<div class="line"><a name="l00757"></a><span class="lineno">  757</span>       cerr << error << endl;</div>
-<div class="line"><a name="l00758"></a><span class="lineno">  758</span>       exit(2);</div>
-<div class="line"><a name="l00759"></a><span class="lineno">  759</span>     }</div>
-<div class="line"><a name="l00760"></a><span class="lineno">  760</span>     <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> priorReader;</div>
-<div class="line"><a name="l00761"></a><span class="lineno">  761</span>     <span class="keywordflow">if</span>(priorimg_opt.size()){</div>
-<div class="line"><a name="l00762"></a><span class="lineno">  762</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00763"></a><span class="lineno">  763</span>     <span class="keywordflow">if</span>(verbose_opt[0]>=1)</div>
-<div class="line"><a name="l00764"></a><span class="lineno">  764</span>           std::cout << <span class="stringliteral">"opening prior image "</span> << priorimg_opt[0] << std::endl;</div>
-<div class="line"><a name="l00765"></a><span class="lineno">  765</span>         priorReader.open(priorimg_opt[0]);</div>
-<div class="line"><a name="l00766"></a><span class="lineno">  766</span>         assert(priorReader.nrOfCol()==testImage.nrOfCol());</div>
-<div class="line"><a name="l00767"></a><span class="lineno">  767</span>         assert(priorReader.nrOfRow()==testImage.nrOfRow());</div>
-<div class="line"><a name="l00768"></a><span class="lineno">  768</span>       }</div>
-<div class="line"><a name="l00769"></a><span class="lineno">  769</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> error){</div>
-<div class="line"><a name="l00770"></a><span class="lineno">  770</span>         cerr << error << std::endl;</div>
-<div class="line"><a name="l00771"></a><span class="lineno">  771</span>         exit(2);</div>
-<div class="line"><a name="l00772"></a><span class="lineno">  772</span>       }</div>
-<div class="line"><a name="l00773"></a><span class="lineno">  773</span>       <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l00774"></a><span class="lineno">  774</span>         cerr << <span class="stringliteral">"error caught"</span> << std::endl;</div>
-<div class="line"><a name="l00775"></a><span class="lineno">  775</span>         exit(1);</div>
-<div class="line"><a name="l00776"></a><span class="lineno">  776</span>       }</div>
-<div class="line"><a name="l00777"></a><span class="lineno">  777</span>     }</div>
-<div class="line"><a name="l00778"></a><span class="lineno">  778</span> </div>
-<div class="line"><a name="l00779"></a><span class="lineno">  779</span>     <span class="keywordtype">int</span> nrow=testImage.nrOfRow();</div>
-<div class="line"><a name="l00780"></a><span class="lineno">  780</span>     <span class="keywordtype">int</span> ncol=testImage.nrOfCol();</div>
-<div class="line"><a name="l00781"></a><span class="lineno">  781</span>     <span class="keywordflow">if</span>(option_opt.findSubstring(<span class="stringliteral">"INTERLEAVE="</span>)==option_opt.end()){</div>
-<div class="line"><a name="l00782"></a><span class="lineno">  782</span>       <span class="keywordtype">string</span> theInterleave=<span class="stringliteral">"INTERLEAVE="</span>;</div>
-<div class="line"><a name="l00783"></a><span class="lineno">  783</span>       theInterleave+=testImage.getInterleave();</div>
-<div class="line"><a name="l00784"></a><span class="lineno">  784</span>       option_opt.push_back(theInterleave);</div>
-<div class="line"><a name="l00785"></a><span class="lineno">  785</span>     }</div>
-<div class="line"><a name="l00786"></a><span class="lineno">  786</span>     vector<char> classOut(ncol);<span class="comment">//classified line for writing to image file</span></div>
-<div class="line"><a name="l00787"></a><span class="lineno">  787</span> </div>
-<div class="line"><a name="l00788"></a><span class="lineno">  788</span>     <span class="comment">//   assert(nband==testImage.nrOfBand());</span></div>
-<div class="line"><a name="l00789"></a><span class="lineno">  789</span>     <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> classImageBag;</div>
-<div class="line"><a name="l00790"></a><span class="lineno">  790</span>     <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> classImageOut;</div>
-<div class="line"><a name="l00791"></a><span class="lineno">  791</span>     <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> probImage;</div>
-<div class="line"><a name="l00792"></a><span class="lineno">  792</span>     <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> entropyImage;</div>
-<div class="line"><a name="l00793"></a><span class="lineno">  793</span> </div>
-<div class="line"><a name="l00794"></a><span class="lineno">  794</span>     <span class="keywordtype">string</span> imageType;<span class="comment">//testImage.getImageType();</span></div>
-<div class="line"><a name="l00795"></a><span class="lineno">  795</span>     <span class="keywordflow">if</span>(oformat_opt.size())<span class="comment">//default</span></div>
-<div class="line"><a name="l00796"></a><span class="lineno">  796</span>       imageType=oformat_opt[0];</div>
-<div class="line"><a name="l00797"></a><span class="lineno">  797</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00798"></a><span class="lineno">  798</span> </div>
-<div class="line"><a name="l00799"></a><span class="lineno">  799</span>       <span class="keywordflow">if</span>(verbose_opt[0]>=1)</div>
-<div class="line"><a name="l00800"></a><span class="lineno">  800</span>         cout << <span class="stringliteral">"opening class image for writing output "</span> << output_opt[0] << endl;</div>
-<div class="line"><a name="l00801"></a><span class="lineno">  801</span>       <span class="keywordflow">if</span>(classBag_opt.size()){</div>
-<div class="line"><a name="l00802"></a><span class="lineno">  802</span>         classImageBag.open(classBag_opt[0],ncol,nrow,nbag,GDT_Byte,imageType,option_opt);</div>
-<div class="line"><a name="l00803"></a><span class="lineno">  803</span>     classImageBag.GDALSetNoDataValue(nodata_opt[0]);</div>
-<div class="line"><a name="l00804"></a><span class="lineno">  804</span>         classImageBag.copyGeoTransform(testImage);</div>
-<div class="line"><a name="l00805"></a><span class="lineno">  805</span>         classImageBag.setProjection(testImage.getProjection());</div>
-<div class="line"><a name="l00806"></a><span class="lineno">  806</span>       }</div>
-<div class="line"><a name="l00807"></a><span class="lineno">  807</span>       classImageOut.open(output_opt[0],ncol,nrow,1,GDT_Byte,imageType,option_opt);</div>
-<div class="line"><a name="l00808"></a><span class="lineno">  808</span>       classImageOut.GDALSetNoDataValue(nodata_opt[0]);</div>
-<div class="line"><a name="l00809"></a><span class="lineno">  809</span>       classImageOut.copyGeoTransform(testImage);</div>
-<div class="line"><a name="l00810"></a><span class="lineno">  810</span>       classImageOut.setProjection(testImage.getProjection());</div>
-<div class="line"><a name="l00811"></a><span class="lineno">  811</span>       <span class="keywordflow">if</span>(colorTable_opt.size())</div>
-<div class="line"><a name="l00812"></a><span class="lineno">  812</span>         classImageOut.setColorTable(colorTable_opt[0],0);</div>
-<div class="line"><a name="l00813"></a><span class="lineno">  813</span>       <span class="keywordflow">if</span>(prob_opt.size()){</div>
-<div class="line"><a name="l00814"></a><span class="lineno">  814</span>         probImage.open(prob_opt[0],ncol,nrow,nclass,GDT_Byte,imageType,option_opt);</div>
-<div class="line"><a name="l00815"></a><span class="lineno">  815</span>     probImage.GDALSetNoDataValue(nodata_opt[0]);</div>
-<div class="line"><a name="l00816"></a><span class="lineno">  816</span>         probImage.copyGeoTransform(testImage);</div>
-<div class="line"><a name="l00817"></a><span class="lineno">  817</span>         probImage.setProjection(testImage.getProjection());</div>
-<div class="line"><a name="l00818"></a><span class="lineno">  818</span>       }</div>
-<div class="line"><a name="l00819"></a><span class="lineno">  819</span>       <span class="keywordflow">if</span>(entropy_opt.size()){</div>
-<div class="line"><a name="l00820"></a><span class="lineno">  820</span>         entropyImage.open(entropy_opt[0],ncol,nrow,1,GDT_Byte,imageType,option_opt);</div>
-<div class="line"><a name="l00821"></a><span class="lineno">  821</span>     entropyImage.GDALSetNoDataValue(nodata_opt[0]);</div>
-<div class="line"><a name="l00822"></a><span class="lineno">  822</span>         entropyImage.copyGeoTransform(testImage);</div>
-<div class="line"><a name="l00823"></a><span class="lineno">  823</span>         entropyImage.setProjection(testImage.getProjection());</div>
-<div class="line"><a name="l00824"></a><span class="lineno">  824</span>       }</div>
-<div class="line"><a name="l00825"></a><span class="lineno">  825</span>     }</div>
-<div class="line"><a name="l00826"></a><span class="lineno">  826</span>     <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> error){</div>
-<div class="line"><a name="l00827"></a><span class="lineno">  827</span>       cerr << error << endl;</div>
-<div class="line"><a name="l00828"></a><span class="lineno">  828</span>     }</div>
-<div class="line"><a name="l00829"></a><span class="lineno">  829</span>   </div>
-<div class="line"><a name="l00830"></a><span class="lineno">  830</span>     <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> maskWriter;</div>
-<div class="line"><a name="l00831"></a><span class="lineno">  831</span> </div>
-<div class="line"><a name="l00832"></a><span class="lineno">  832</span>     <span class="keywordflow">if</span>(maskIsVector){</div>
-<div class="line"><a name="l00833"></a><span class="lineno">  833</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00834"></a><span class="lineno">  834</span>     maskWriter.open(<span class="stringliteral">"/vsimem/mask.tif"</span>,ncol,nrow,1,GDT_Float32,imageType,option_opt);</div>
-<div class="line"><a name="l00835"></a><span class="lineno">  835</span>     maskWriter.GDALSetNoDataValue(nodata_opt[0]);</div>
-<div class="line"><a name="l00836"></a><span class="lineno">  836</span>         maskWriter.copyGeoTransform(testImage);</div>
-<div class="line"><a name="l00837"></a><span class="lineno">  837</span>         maskWriter.setProjection(testImage.getProjection());</div>
-<div class="line"><a name="l00838"></a><span class="lineno">  838</span>     vector<double> burnValues(1,1);<span class="comment">//burn value is 1 (single band)</span></div>
-<div class="line"><a name="l00839"></a><span class="lineno">  839</span>     maskWriter.rasterizeOgr(extentReader,burnValues);</div>
-<div class="line"><a name="l00840"></a><span class="lineno">  840</span>     extentReader.close();</div>
-<div class="line"><a name="l00841"></a><span class="lineno">  841</span>     maskWriter.close();</div>
-<div class="line"><a name="l00842"></a><span class="lineno">  842</span>       }</div>
-<div class="line"><a name="l00843"></a><span class="lineno">  843</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> error){</div>
-<div class="line"><a name="l00844"></a><span class="lineno">  844</span>         cerr << error << std::endl;</div>
-<div class="line"><a name="l00845"></a><span class="lineno">  845</span>         exit(2);</div>
-<div class="line"><a name="l00846"></a><span class="lineno">  846</span>       }</div>
-<div class="line"><a name="l00847"></a><span class="lineno">  847</span>       <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l00848"></a><span class="lineno">  848</span>         cerr << <span class="stringliteral">"error caught"</span> << std::endl;</div>
-<div class="line"><a name="l00849"></a><span class="lineno">  849</span>         exit(1);</div>
-<div class="line"><a name="l00850"></a><span class="lineno">  850</span>       }</div>
-<div class="line"><a name="l00851"></a><span class="lineno">  851</span>       mask_opt.clear();</div>
-<div class="line"><a name="l00852"></a><span class="lineno">  852</span>       mask_opt.push_back(<span class="stringliteral">"/vsimem/mask.tif"</span>);</div>
-<div class="line"><a name="l00853"></a><span class="lineno">  853</span>     }</div>
-<div class="line"><a name="l00854"></a><span class="lineno">  854</span>     <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> maskReader;</div>
-<div class="line"><a name="l00855"></a><span class="lineno">  855</span>     <span class="keywordflow">if</span>(mask_opt.size()){</div>
-<div class="line"><a name="l00856"></a><span class="lineno">  856</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00857"></a><span class="lineno">  857</span>         <span class="keywordflow">if</span>(verbose_opt[0]>=1)</div>
-<div class="line"><a name="l00858"></a><span class="lineno">  858</span>           std::cout << <span class="stringliteral">"opening mask image file "</span> << mask_opt[0] << std::endl;</div>
-<div class="line"><a name="l00859"></a><span class="lineno">  859</span>         maskReader.open(mask_opt[0]);</div>
-<div class="line"><a name="l00860"></a><span class="lineno">  860</span>       }</div>
-<div class="line"><a name="l00861"></a><span class="lineno">  861</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> error){</div>
-<div class="line"><a name="l00862"></a><span class="lineno">  862</span>         cerr << error << std::endl;</div>
-<div class="line"><a name="l00863"></a><span class="lineno">  863</span>         exit(2);</div>
-<div class="line"><a name="l00864"></a><span class="lineno">  864</span>       }</div>
-<div class="line"><a name="l00865"></a><span class="lineno">  865</span>       <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l00866"></a><span class="lineno">  866</span>         cerr << <span class="stringliteral">"error caught"</span> << std::endl;</div>
-<div class="line"><a name="l00867"></a><span class="lineno">  867</span>         exit(1);</div>
-<div class="line"><a name="l00868"></a><span class="lineno">  868</span>       }</div>
-<div class="line"><a name="l00869"></a><span class="lineno">  869</span>     }</div>
-<div class="line"><a name="l00870"></a><span class="lineno">  870</span> </div>
-<div class="line"><a name="l00871"></a><span class="lineno">  871</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iline=0;iline<nrow;++iline){</div>
-<div class="line"><a name="l00872"></a><span class="lineno">  872</span>       vector<float> buffer(ncol);</div>
-<div class="line"><a name="l00873"></a><span class="lineno">  873</span>       vector<short> lineMask;</div>
-<div class="line"><a name="l00874"></a><span class="lineno">  874</span>       <span class="keywordflow">if</span>(mask_opt.size())</div>
-<div class="line"><a name="l00875"></a><span class="lineno">  875</span>         lineMask.resize(maskReader.nrOfCol());</div>
-<div class="line"><a name="l00876"></a><span class="lineno">  876</span>       <a class="code" href="classVector2d.html">Vector2d<float></a> linePrior;</div>
-<div class="line"><a name="l00877"></a><span class="lineno">  877</span>       <span class="keywordflow">if</span>(priorimg_opt.size())</div>
-<div class="line"><a name="l00878"></a><span class="lineno">  878</span>      linePrior.resize(nclass,ncol);<span class="comment">//prior prob for each class</span></div>
-<div class="line"><a name="l00879"></a><span class="lineno">  879</span>       <a class="code" href="classVector2d.html">Vector2d<float></a> hpixel(ncol);</div>
-<div class="line"><a name="l00880"></a><span class="lineno">  880</span>       <a class="code" href="classVector2d.html">Vector2d<float></a> fpixel(ncol);</div>
-<div class="line"><a name="l00881"></a><span class="lineno">  881</span>       <a class="code" href="classVector2d.html">Vector2d<float></a> probOut(nclass,ncol);<span class="comment">//posterior prob for each (internal) class</span></div>
-<div class="line"><a name="l00882"></a><span class="lineno">  882</span>       vector<float> entropy(ncol);</div>
-<div class="line"><a name="l00883"></a><span class="lineno">  883</span>       <a class="code" href="classVector2d.html">Vector2d<char></a> classBag;<span class="comment">//classified line for writing to image file</span></div>
-<div class="line"><a name="l00884"></a><span class="lineno">  884</span>       <span class="keywordflow">if</span>(classBag_opt.size())</div>
-<div class="line"><a name="l00885"></a><span class="lineno">  885</span>         classBag.resize(nbag,ncol);</div>
-<div class="line"><a name="l00886"></a><span class="lineno">  886</span>       <span class="comment">//read all bands of all pixels in this line in hline</span></div>
-<div class="line"><a name="l00887"></a><span class="lineno">  887</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00888"></a><span class="lineno">  888</span>         <span class="keywordflow">if</span>(band_opt.size()){</div>
-<div class="line"><a name="l00889"></a><span class="lineno">  889</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<band_opt.size();++iband){</div>
-<div class="line"><a name="l00890"></a><span class="lineno">  890</span>             <span class="keywordflow">if</span>(verbose_opt[0]==2)</div>
-<div class="line"><a name="l00891"></a><span class="lineno">  891</span>               std::cout << <span class="stringliteral">"reading band "</span> << band_opt[iband] << std::endl;</div>
-<div class="line"><a name="l00892"></a><span class="lineno">  892</span>             assert(band_opt[iband]>=0);</div>
-<div class="line"><a name="l00893"></a><span class="lineno">  893</span>             assert(band_opt[iband]<testImage.nrOfBand());</div>
-<div class="line"><a name="l00894"></a><span class="lineno">  894</span>             testImage.readData(buffer,GDT_Float32,iline,band_opt[iband]);</div>
-<div class="line"><a name="l00895"></a><span class="lineno">  895</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<ncol;++icol)</div>
-<div class="line"><a name="l00896"></a><span class="lineno">  896</span>               hpixel[icol].push_back(buffer[icol]);</div>
-<div class="line"><a name="l00897"></a><span class="lineno">  897</span>           }</div>
-<div class="line"><a name="l00898"></a><span class="lineno">  898</span>         }</div>
-<div class="line"><a name="l00899"></a><span class="lineno">  899</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00900"></a><span class="lineno">  900</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l00901"></a><span class="lineno">  901</span>             <span class="keywordflow">if</span>(verbose_opt[0]==2)</div>
-<div class="line"><a name="l00902"></a><span class="lineno">  902</span>               std::cout << <span class="stringliteral">"reading band "</span> << iband << std::endl;</div>
-<div class="line"><a name="l00903"></a><span class="lineno">  903</span>             assert(iband>=0);</div>
-<div class="line"><a name="l00904"></a><span class="lineno">  904</span>             assert(iband<testImage.nrOfBand());</div>
-<div class="line"><a name="l00905"></a><span class="lineno">  905</span>             testImage.readData(buffer,GDT_Float32,iline,iband);</div>
-<div class="line"><a name="l00906"></a><span class="lineno">  906</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<ncol;++icol)</div>
-<div class="line"><a name="l00907"></a><span class="lineno">  907</span>               hpixel[icol].push_back(buffer[icol]);</div>
-<div class="line"><a name="l00908"></a><span class="lineno">  908</span>           }</div>
-<div class="line"><a name="l00909"></a><span class="lineno">  909</span>         }</div>
-<div class="line"><a name="l00910"></a><span class="lineno">  910</span>       }</div>
-<div class="line"><a name="l00911"></a><span class="lineno">  911</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> theError){</div>
-<div class="line"><a name="l00912"></a><span class="lineno">  912</span>         cerr << <span class="stringliteral">"Error reading "</span> << input_opt[0] << <span class="stringliteral">": "</span> << theError << std::endl;</div>
-<div class="line"><a name="l00913"></a><span class="lineno">  913</span>         exit(3);</div>
-<div class="line"><a name="l00914"></a><span class="lineno">  914</span>       }</div>
-<div class="line"><a name="l00915"></a><span class="lineno">  915</span>       <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l00916"></a><span class="lineno">  916</span>         cerr << <span class="stringliteral">"error caught"</span> << std::endl;</div>
-<div class="line"><a name="l00917"></a><span class="lineno">  917</span>         exit(3);</div>
-<div class="line"><a name="l00918"></a><span class="lineno">  918</span>       }</div>
-<div class="line"><a name="l00919"></a><span class="lineno">  919</span>       assert(nband==hpixel[0].size());</div>
-<div class="line"><a name="l00920"></a><span class="lineno">  920</span>       <span class="keywordflow">if</span>(verbose_opt[0]==2)</div>
-<div class="line"><a name="l00921"></a><span class="lineno">  921</span>         cout << <span class="stringliteral">"used bands: "</span> << nband << endl;</div>
-<div class="line"><a name="l00922"></a><span class="lineno">  922</span>       <span class="comment">//read prior</span></div>
-<div class="line"><a name="l00923"></a><span class="lineno">  923</span>       <span class="keywordflow">if</span>(priorimg_opt.size()){</div>
-<div class="line"><a name="l00924"></a><span class="lineno">  924</span>         <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00925"></a><span class="lineno">  925</span>       <span class="keywordflow">for</span>(<span class="keywordtype">short</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l00926"></a><span class="lineno">  926</span>         <span class="keywordflow">if</span>(verbose_opt.size()>1)</div>
-<div class="line"><a name="l00927"></a><span class="lineno">  927</span>           std::cout << <span class="stringliteral">"Reading "</span> << priorimg_opt[0] << <span class="stringliteral">" band "</span> << iclass << <span class="stringliteral">" line "</span> << iline << std::endl;</div>
-<div class="line"><a name="l00928"></a><span class="lineno">  928</span>         priorReader.readData(linePrior[iclass],GDT_Float32,iline,iclass);</div>
-<div class="line"><a name="l00929"></a><span class="lineno">  929</span>       }</div>
-<div class="line"><a name="l00930"></a><span class="lineno">  930</span>         }</div>
-<div class="line"><a name="l00931"></a><span class="lineno">  931</span>         <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> theError){</div>
-<div class="line"><a name="l00932"></a><span class="lineno">  932</span>       std::cerr << <span class="stringliteral">"Error reading "</span> << priorimg_opt[0] << <span class="stringliteral">": "</span> << theError << std::endl;</div>
-<div class="line"><a name="l00933"></a><span class="lineno">  933</span>           exit(3);</div>
-<div class="line"><a name="l00934"></a><span class="lineno">  934</span>         }</div>
-<div class="line"><a name="l00935"></a><span class="lineno">  935</span>         <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l00936"></a><span class="lineno">  936</span>           cerr << <span class="stringliteral">"error caught"</span> << std::endl;</div>
-<div class="line"><a name="l00937"></a><span class="lineno">  937</span>           exit(3);</div>
-<div class="line"><a name="l00938"></a><span class="lineno">  938</span>         }</div>
-<div class="line"><a name="l00939"></a><span class="lineno">  939</span>       }</div>
-<div class="line"><a name="l00940"></a><span class="lineno">  940</span>       <span class="keywordtype">double</span> oldRowMask=-1;<span class="comment">//keep track of row mask to optimize number of line readings</span></div>
-<div class="line"><a name="l00941"></a><span class="lineno">  941</span>       <span class="comment">//process per pixel</span></div>
-<div class="line"><a name="l00942"></a><span class="lineno">  942</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<ncol;++icol){</div>
-<div class="line"><a name="l00943"></a><span class="lineno">  943</span>         assert(hpixel[icol].size()==nband);</div>
-<div class="line"><a name="l00944"></a><span class="lineno">  944</span>     <span class="keywordtype">bool</span> doClassify=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00945"></a><span class="lineno">  945</span>         <span class="keywordtype">bool</span> masked=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00946"></a><span class="lineno">  946</span>     <span class="keywordtype">double</span> geox=0;</div>
-<div class="line"><a name="l00947"></a><span class="lineno">  947</span>     <span class="keywordtype">double</span> geoy=0;</div>
-<div class="line"><a name="l00948"></a><span class="lineno">  948</span>         <span class="keywordflow">if</span>(maskIsVector){</div>
-<div class="line"><a name="l00949"></a><span class="lineno">  949</span>       doClassify=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00950"></a><span class="lineno">  950</span>       testImage.image2geo(icol,iline,geox,geoy);</div>
-<div class="line"><a name="l00951"></a><span class="lineno">  951</span>       <span class="comment">//check enveloppe first</span></div>
-<div class="line"><a name="l00952"></a><span class="lineno">  952</span>       <span class="keywordflow">if</span>(uly>=geoy&&lry<=geoy&&ulx<=geox&&lrx>=geox){</div>
-<div class="line"><a name="l00953"></a><span class="lineno">  953</span>         doClassify=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00954"></a><span class="lineno">  954</span>       }</div>
-<div class="line"><a name="l00955"></a><span class="lineno">  955</span>     }</div>
-<div class="line"><a name="l00956"></a><span class="lineno">  956</span>         <span class="keywordflow">if</span>(mask_opt.size()){</div>
-<div class="line"><a name="l00957"></a><span class="lineno">  957</span>       <span class="comment">//read mask</span></div>
-<div class="line"><a name="l00958"></a><span class="lineno">  958</span>       <span class="keywordtype">double</span> colMask=0;</div>
-<div class="line"><a name="l00959"></a><span class="lineno">  959</span>       <span class="keywordtype">double</span> rowMask=0;</div>
-<div class="line"><a name="l00960"></a><span class="lineno">  960</span> </div>
-<div class="line"><a name="l00961"></a><span class="lineno">  961</span>       testImage.image2geo(icol,iline,geox,geoy);</div>
-<div class="line"><a name="l00962"></a><span class="lineno">  962</span>       maskReader.geo2image(geox,geoy,colMask,rowMask);</div>
-<div class="line"><a name="l00963"></a><span class="lineno">  963</span>       colMask=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(colMask);</div>
-<div class="line"><a name="l00964"></a><span class="lineno">  964</span>       rowMask=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(rowMask);</div>
-<div class="line"><a name="l00965"></a><span class="lineno">  965</span>       <span class="keywordflow">if</span>(rowMask>=0&&rowMask<maskReader.nrOfRow()&&colMask>=0&&colMask<maskReader.nrOfCol()){</div>
-<div class="line"><a name="l00966"></a><span class="lineno">  966</span>         <span class="keywordflow">if</span>(static_cast<int>(rowMask)!=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(oldRowMask)){</div>
-<div class="line"><a name="l00967"></a><span class="lineno">  967</span>           assert(rowMask>=0&&rowMask<maskReader.nrOfRow());</div>
-<div class="line"><a name="l00968"></a><span class="lineno">  968</span>           <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00969"></a><span class="lineno">  969</span>         <span class="comment">// maskReader.readData(lineMask[imask],GDT_Int32,static_cast<int>(rowMask));</span></div>
-<div class="line"><a name="l00970"></a><span class="lineno">  970</span>         maskReader.readData(lineMask,GDT_Int16,static_cast<int>(rowMask));</div>
-<div class="line"><a name="l00971"></a><span class="lineno">  971</span>           }</div>
-<div class="line"><a name="l00972"></a><span class="lineno">  972</span>           <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00973"></a><span class="lineno">  973</span>         cerr << errorstring << endl;</div>
-<div class="line"><a name="l00974"></a><span class="lineno">  974</span>         exit(1);</div>
-<div class="line"><a name="l00975"></a><span class="lineno">  975</span>           }</div>
-<div class="line"><a name="l00976"></a><span class="lineno">  976</span>           <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l00977"></a><span class="lineno">  977</span>         cerr << <span class="stringliteral">"error caught"</span> << std::endl;</div>
-<div class="line"><a name="l00978"></a><span class="lineno">  978</span>         exit(3);</div>
-<div class="line"><a name="l00979"></a><span class="lineno">  979</span>           }</div>
-<div class="line"><a name="l00980"></a><span class="lineno">  980</span>           oldRowMask=rowMask;</div>
-<div class="line"><a name="l00981"></a><span class="lineno">  981</span>         }</div>
-<div class="line"><a name="l00982"></a><span class="lineno">  982</span>         <span class="keywordtype">short</span> theMask=0;</div>
-<div class="line"><a name="l00983"></a><span class="lineno">  983</span>         <span class="keywordflow">for</span>(<span class="keywordtype">short</span> ivalue=0;ivalue<msknodata_opt.size();++ivalue){</div>
-<div class="line"><a name="l00984"></a><span class="lineno">  984</span>           <span class="comment">// if(msknodata_opt[ivalue]>=0){//values set in msknodata_opt are invalid</span></div>
-<div class="line"><a name="l00985"></a><span class="lineno">  985</span>         <span class="keywordflow">if</span>(lineMask[colMask]==msknodata_opt[ivalue]){</div>
-<div class="line"><a name="l00986"></a><span class="lineno">  986</span>           theMask=lineMask[colMask];</div>
-<div class="line"><a name="l00987"></a><span class="lineno">  987</span>           masked=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00988"></a><span class="lineno">  988</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00989"></a><span class="lineno">  989</span>         }</div>
-<div class="line"><a name="l00990"></a><span class="lineno">  990</span>           <span class="comment">// }</span></div>
-<div class="line"><a name="l00991"></a><span class="lineno">  991</span>           <span class="comment">// else{//only values set in msknodata_opt are valid</span></div>
-<div class="line"><a name="l00992"></a><span class="lineno">  992</span>           <span class="comment">//    if(lineMask[colMask]!=-msknodata_opt[ivalue]){</span></div>
-<div class="line"><a name="l00993"></a><span class="lineno">  993</span>           <span class="comment">//      theMask=lineMask[colMask];</span></div>
-<div class="line"><a name="l00994"></a><span class="lineno">  994</span>           <span class="comment">//      masked=true;</span></div>
-<div class="line"><a name="l00995"></a><span class="lineno">  995</span>           <span class="comment">//    }</span></div>
-<div class="line"><a name="l00996"></a><span class="lineno">  996</span>           <span class="comment">//    else{</span></div>
-<div class="line"><a name="l00997"></a><span class="lineno">  997</span>           <span class="comment">//      masked=false;</span></div>
-<div class="line"><a name="l00998"></a><span class="lineno">  998</span>           <span class="comment">//      break;</span></div>
-<div class="line"><a name="l00999"></a><span class="lineno">  999</span>           <span class="comment">//    }</span></div>
-<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>           <span class="comment">// }</span></div>
-<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>         }</div>
-<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>         <span class="keywordflow">if</span>(masked){</div>
-<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>           <span class="keywordflow">if</span>(classBag_opt.size())</div>
-<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ibag=0;ibag<nbag;++ibag)</div>
-<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>           classBag[ibag][icol]=theMask;</div>
-<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>           classOut[icol]=theMask;</div>
-<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>           <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>         }</div>
-<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>       }</div>
-<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>       <span class="keywordtype">bool</span> valid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<hpixel[icol].size();++iband){</div>
-<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>         <span class="keywordflow">if</span>(hpixel[icol][iband]){</div>
-<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>           valid=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>         }</div>
-<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>       }</div>
-<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>       <span class="keywordflow">if</span>(!valid)</div>
-<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>         doClassify=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span> </div>
-<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>     }</div>
-<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>         <span class="keywordflow">for</span>(<span class="keywordtype">short</span> iclass=0;iclass<nclass;++iclass)</div>
-<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>           probOut[iclass][icol]=0;</div>
-<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>     <span class="keywordflow">if</span>(!doClassify){</div>
-<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>       <span class="keywordflow">if</span>(classBag_opt.size())</div>
-<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ibag=0;ibag<nbag;++ibag)</div>
-<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>           classBag[ibag][icol]=nodata_opt[0];</div>
-<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>       classOut[icol]=nodata_opt[0];</div>
-<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>       <span class="keywordflow">continue</span>;<span class="comment">//next column</span></div>
-<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>     }</div>
-<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>     <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>       std::cout << <span class="stringliteral">"begin classification "</span> << std::endl;</div>
-<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>         <span class="comment">//----------------------------------- classification -------------------</span></div>
-<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ibag=0;ibag<nbag;++ibag){</div>
-<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>           <span class="comment">//calculate image features</span></div>
-<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>           fpixel[icol].clear();</div>
-<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband)</div>
-<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>             fpixel[icol].push_back((hpixel[icol][iband]-offset[ibag][iband])/scale[ibag][iband]);</div>
-<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>           vector<float> result(nclass);</div>
-<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>           result=net[ibag].run(fpixel[icol]);</div>
-<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>           <span class="keywordtype">int</span> maxClass=0;</div>
-<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>           vector<float> prValues(nclass);</div>
-<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>           <span class="keywordtype">float</span> maxP=0;</div>
-<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span> </div>
-<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>           <span class="comment">//calculate posterior prob of bag </span></div>
-<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>           <span class="keywordflow">if</span>(classBag_opt.size()){</div>
-<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>             <span class="comment">//search for max prob within bag</span></div>
-<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>             maxP=0;</div>
-<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>             classBag[ibag][icol]=0;</div>
-<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>           }</div>
-<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>       <span class="keywordtype">double</span> normPrior=0;</div>
-<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>       <span class="keywordflow">if</span>(priorimg_opt.size()){</div>
-<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>         <span class="keywordflow">for</span>(<span class="keywordtype">short</span> iclass=0;iclass<nclass;++iclass)</div>
-<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>           normPrior+=linePrior[iclass][icol];</div>
-<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>       }</div>
-<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>         result[iclass]=(result[iclass]+1.0)/2.0;<span class="comment">//bring back to scale [0,1]</span></div>
-<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>         <span class="keywordflow">if</span>(priorimg_opt.size())</div>
-<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>           priors[iclass]=linePrior[iclass][icol]/normPrior;<span class="comment">//todo: check if correct for all cases... (automatic classValueMap and manual input for names and values)</span></div>
-<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>             <span class="keywordflow">switch</span>(comb_opt[0]){</div>
-<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>             <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>             <span class="keywordflow">case</span>(0):<span class="comment">//sum rule</span></div>
-<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>               probOut[iclass][icol]+=result[iclass]*priors[iclass];<span class="comment">//add probabilities for each bag</span></div>
-<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>             <span class="keywordflow">case</span>(1):<span class="comment">//product rule</span></div>
-<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>               probOut[iclass][icol]*=pow(static_cast<float>(priors[iclass]),static_cast<float>(1.0-nbag)/nbag)*result[iclass];<span class="comment">//multiply probabilities for each bag</span></div>
-<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>             <span class="keywordflow">case</span>(2):<span class="comment">//max rule</span></div>
-<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>               <span class="keywordflow">if</span>(priors[iclass]*result[iclass]>probOut[iclass][icol])</div>
-<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>                 probOut[iclass][icol]=priors[iclass]*result[iclass];</div>
-<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>             }</div>
-<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>             <span class="keywordflow">if</span>(classBag_opt.size()){</div>
-<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>               <span class="comment">//search for max prob within bag</span></div>
-<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>               <span class="comment">// if(prValues[iclass]>maxP){</span></div>
-<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>               <span class="comment">//   maxP=prValues[iclass];</span></div>
-<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>               <span class="comment">//   classBag[ibag][icol]=vcode[iclass];</span></div>
-<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>               <span class="comment">// }</span></div>
-<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>               <span class="keywordflow">if</span>(result[iclass]>maxP){</div>
-<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>                 maxP=result[iclass];</div>
-<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>                 classBag[ibag][icol]=iclass;</div>
-<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>               }</div>
-<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>             }</div>
-<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>           }</div>
-<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>         }<span class="comment">//ibag</span></div>
-<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span> </div>
-<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>         <span class="comment">//search for max class prob</span></div>
-<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>         <span class="keywordtype">float</span> maxBag1=0;<span class="comment">//max probability</span></div>
-<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>         <span class="keywordtype">float</span> maxBag2=0;<span class="comment">//second max probability</span></div>
-<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>         <span class="keywordtype">float</span> normBag=0;</div>
-<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>         <span class="keywordflow">for</span>(<span class="keywordtype">short</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>           <span class="keywordflow">if</span>(probOut[iclass][icol]>maxBag1){</div>
-<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>             maxBag1=probOut[iclass][icol];</div>
-<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>             classOut[icol]=classValueMap[nameVector[iclass]];</div>
-<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>           }</div>
-<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(probOut[iclass][icol]>maxBag2)</div>
-<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>             maxBag2=probOut[iclass][icol];</div>
-<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>           normBag+=probOut[iclass][icol];</div>
-<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>         }</div>
-<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>         <span class="comment">//normalize probOut and convert to percentage</span></div>
-<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>         entropy[icol]=0;</div>
-<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>         <span class="keywordflow">for</span>(<span class="keywordtype">short</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>           <span class="keywordtype">float</span> prv=probOut[iclass][icol];</div>
-<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>           prv/=normBag;</div>
-<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>           entropy[icol]-=prv*log(prv)/log(2.0);</div>
-<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>           prv*=100.0;</div>
-<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>             </div>
-<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>           probOut[iclass][icol]=<span class="keyword">static_cast<</span><span class="keywordtype">short</span><span class="keyword">></span>(prv+0.5);</div>
-<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>           <span class="comment">// assert(classValueMap[nameVector[iclass]]<probOut.size());</span></div>
-<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>           <span class="comment">// assert(classValueMap[nameVector[iclass]]>=0);</span></div>
-<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>           <span class="comment">// probOut[classValueMap[nameVector[iclass]]][icol]=static_cast<short>(prv+0.5);</span></div>
-<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>         }</div>
-<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>         entropy[icol]/=log(static_cast<double>(nclass))/log(2.0);</div>
-<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>         entropy[icol]=<span class="keyword">static_cast<</span><span class="keywordtype">short</span><span class="keyword">></span>(100*entropy[icol]+0.5);</div>
-<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>     <span class="keywordflow">if</span>(active_opt.size()){</div>
-<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>       <span class="keywordflow">if</span>(entropy[icol]>activePoints.back().value){</div>
-<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>         activePoints.back().value=entropy[icol];<span class="comment">//replace largest value (last)</span></div>
-<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>         activePoints.back().posx=icol;</div>
-<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>         activePoints.back().posy=iline;</div>
-<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>         std::sort(activePoints.begin(),activePoints.end(),<a class="code" href="classDecrease__PosValue.html">Decrease_PosValue</a>());<span class="comment">//sort in descending order (largest first, smallest last)</span></div>
-<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>         <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>           std::cout << activePoints.back().posx << <span class="stringliteral">" "</span> << activePoints.back().posy << <span class="stringliteral">" "</span> << activePoints.back().value << std::endl;</div>
-<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>       }</div>
-<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>         }</div>
-<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>       }<span class="comment">//icol</span></div>
-<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>       <span class="comment">//----------------------------------- write output ------------------------------------------</span></div>
-<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>       <span class="keywordflow">if</span>(classBag_opt.size())</div>
-<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ibag=0;ibag<nbag;++ibag)</div>
-<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>           classImageBag.writeData(classBag[ibag],GDT_Byte,iline,ibag);</div>
-<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>       <span class="keywordflow">if</span>(prob_opt.size()){</div>
-<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<nclass;++iclass)</div>
-<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>           probImage.writeData(probOut[iclass],GDT_Float32,iline,iclass);</div>
-<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>       }</div>
-<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>       <span class="keywordflow">if</span>(entropy_opt.size()){</div>
-<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>         entropyImage.writeData(entropy,GDT_Float32,iline);</div>
-<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>       }</div>
-<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>       classImageOut.writeData(classOut,GDT_Byte,iline);</div>
-<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>       <span class="keywordflow">if</span>(!verbose_opt[0]){</div>
-<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>         progress=<span class="keyword">static_cast<</span><span class="keywordtype">float</span><span class="keyword">></span>(iline+1.0)/classImageOut.nrOfRow();</div>
-<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>         pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>       }</div>
-<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>     }</div>
-<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>     <span class="comment">//write active learning points</span></div>
-<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>     <span class="keywordflow">if</span>(active_opt.size()){</div>
-<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iactive=0;iactive<activePoints.size();++iactive){</div>
-<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>     std::map<string,double> pointMap;</div>
-<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<testImage.nrOfBand();++iband){</div>
-<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>       <span class="keywordtype">double</span> value;</div>
-<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>       testImage.readData(value,GDT_Float64,static_cast<int>(activePoints[iactive].posx),static_cast<int>(activePoints[iactive].posy),iband);</div>
-<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>       ostringstream fs;</div>
-<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>       fs << <span class="stringliteral">"B"</span> << iband;</div>
-<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>       pointMap[fs.str()]=value;</div>
-<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>     }</div>
-<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>     pointMap[label_opt[0]]=0;</div>
-<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>     <span class="keywordtype">double</span> x, y;</div>
-<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>     testImage.image2geo(activePoints[iactive].posx,activePoints[iactive].posy,x,y);</div>
-<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>         std::string fieldname=<span class="stringliteral">"id"</span>;<span class="comment">//number of the point</span></div>
-<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>     activeWriter.addPoint(x,y,pointMap,fieldname,++nactive);</div>
-<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>       }</div>
-<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>     }</div>
-<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span> </div>
-<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>     testImage.close();</div>
-<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>     <span class="keywordflow">if</span>(mask_opt.size())</div>
-<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>       maskReader.close();</div>
-<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>     <span class="keywordflow">if</span>(priorimg_opt.size())</div>
-<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>       priorReader.close();</div>
-<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>     <span class="keywordflow">if</span>(prob_opt.size())</div>
-<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>       probImage.close();</div>
-<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>     <span class="keywordflow">if</span>(entropy_opt.size())</div>
-<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>       entropyImage.close();</div>
-<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>     <span class="keywordflow">if</span>(classBag_opt.size())</div>
-<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>       classImageBag.close();</div>
-<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>     classImageOut.close();</div>
-<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>   }</div>
-<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>   <span class="keywordflow">else</span>{<span class="comment">//classify vector file</span></div>
-<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>     cm.clearResults();</div>
-<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>     <span class="comment">//notice that fields have already been set by readDataImageOgr (taking into account appropriate bands)</span></div>
-<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ivalidation=0;ivalidation<input_opt.size();++ivalidation){</div>
-<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>       <span class="keywordflow">if</span>(output_opt.size())</div>
-<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>         assert(output_opt.size()==input_opt.size());</div>
-<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>         cout << <span class="stringliteral">"opening img reader "</span> << input_opt[ivalidation] << endl;</div>
-<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>       imgReaderOgr.open(input_opt[ivalidation]);</div>
-<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>       <a class="code" href="classImgWriterOgr.html">ImgWriterOgr</a> imgWriterOgr;</div>
-<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span> </div>
-<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>       <span class="keywordflow">if</span>(output_opt.size()){</div>
-<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>       std::cout << <span class="stringliteral">"opening img writer and copying fields from img reader"</span> << output_opt[ivalidation] << std::endl;</div>
-<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>     imgWriterOgr.open(output_opt[ivalidation],imgReaderOgr);</div>
-<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>       }</div>
-<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>     cout << <span class="stringliteral">"number of layers in input ogr file: "</span> << imgReaderOgr.getLayerCount() << endl;</div>
-<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ilayer=0;ilayer<imgReaderOgr.getLayerCount();++ilayer){</div>
-<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>       cout << <span class="stringliteral">"processing input layer "</span> << ilayer << endl;</div>
-<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>     <span class="keywordflow">if</span>(output_opt.size()){</div>
-<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>         std::cout << <span class="stringliteral">"creating field class"</span> << std::endl;</div>
-<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>       <span class="keywordflow">if</span>(classValueMap.size())</div>
-<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>         imgWriterOgr.createField(<span class="stringliteral">"class"</span>,OFTInteger,ilayer);</div>
-<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>         imgWriterOgr.createField(<span class="stringliteral">"class"</span>,OFTString,ilayer);</div>
-<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>     }</div>
-<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nFeatures=imgReaderOgr.getFeatureCount(ilayer);</div>
-<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ifeature=0;</div>
-<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>     progress=0;</div>
-<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>     OGRFeature *poFeature;</div>
-<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>     <span class="keywordflow">while</span>( (poFeature = imgReaderOgr.getLayer(ilayer)->GetNextFeature()) != NULL ){</div>
-<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>       <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>         cout << <span class="stringliteral">"feature "</span> << ifeature << endl;</div>
-<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>       <span class="keywordflow">if</span>( poFeature == NULL ){</div>
-<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>         cout << <span class="stringliteral">"Warning: could not read feature "</span> << ifeature << <span class="stringliteral">" in layer "</span> << imgReaderOgr.getLayerName(ilayer) << endl;</div>
-<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>         <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>       }</div>
-<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>       OGRFeature *poDstFeature = NULL;</div>
-<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>       <span class="keywordflow">if</span>(output_opt.size()){</div>
-<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>         poDstFeature=imgWriterOgr.createFeature(ilayer);</div>
-<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>         <span class="keywordflow">if</span>( poDstFeature->SetFrom( poFeature, TRUE ) != OGRERR_NONE ){</div>
-<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>           CPLError( CE_Failure, CPLE_AppDefined,</div>
-<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>             <span class="stringliteral">"Unable to translate feature %d from layer %s.\n"</span>,</div>
-<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>             poFeature->GetFID(), imgWriterOgr.getLayerName(ilayer).c_str() );</div>
-<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>           OGRFeature::DestroyFeature( poFeature );</div>
-<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>           OGRFeature::DestroyFeature( poDstFeature );</div>
-<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>         }</div>
-<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>       }</div>
-<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>       vector<float> validationPixel;</div>
-<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>       vector<float> validationFeature;</div>
-<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>         </div>
-<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>       imgReaderOgr.readData(validationPixel,OFTReal,fields,poFeature,ilayer);</div>
-<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>       assert(validationPixel.size()==nband);</div>
-<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>       vector<float> probOut(nclass);<span class="comment">//posterior prob for each class</span></div>
-<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<nclass;++iclass)</div>
-<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>         probOut[iclass]=0;</div>
-<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ibag=0;ibag<nbag;++ibag){</div>
-<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>           validationFeature.push_back((validationPixel[iband]-offset[ibag][iband])/scale[ibag][iband]);</div>
-<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>           <span class="keywordflow">if</span>(verbose_opt[0]==2)</div>
-<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>         std:: cout << <span class="stringliteral">" "</span> << validationFeature.back();</div>
-<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>         }</div>
-<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>         <span class="keywordflow">if</span>(verbose_opt[0]==2)</div>
-<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>           std::cout << std:: endl;</div>
-<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>         vector<float> result(nclass);</div>
-<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>         result=net[ibag].run(validationFeature);</div>
-<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span> </div>
-<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>         <span class="keywordflow">if</span>(verbose_opt[0]>1){</div>
-<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<result.size();++iclass)</div>
-<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>         std::cout << result[iclass] << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>           std::cout << std::endl;</div>
-<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>         }</div>
-<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>         <span class="comment">//calculate posterior prob of bag </span></div>
-<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>           result[iclass]=(result[iclass]+1.0)/2.0;<span class="comment">//bring back to scale [0,1]</span></div>
-<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>           <span class="keywordflow">switch</span>(comb_opt[0]){</div>
-<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>           <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>           <span class="keywordflow">case</span>(0):<span class="comment">//sum rule</span></div>
-<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>         probOut[iclass]+=result[iclass]*priors[iclass];<span class="comment">//add probabilities for each bag</span></div>
-<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>           <span class="keywordflow">case</span>(1):<span class="comment">//product rule</span></div>
-<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>         probOut[iclass]*=pow(static_cast<float>(priors[iclass]),static_cast<float>(1.0-nbag)/nbag)*result[iclass];<span class="comment">//multiply probabilities for each bag</span></div>
-<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>           <span class="keywordflow">case</span>(2):<span class="comment">//max rule</span></div>
-<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>         <span class="keywordflow">if</span>(priors[iclass]*result[iclass]>probOut[iclass])</div>
-<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>           probOut[iclass]=priors[iclass]*result[iclass];</div>
-<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>           }</div>
-<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>         }</div>
-<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>       }<span class="comment">//for ibag</span></div>
-<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>       <span class="comment">//search for max class prob</span></div>
-<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>       <span class="keywordtype">float</span> maxBag=0;</div>
-<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>       <span class="keywordtype">float</span> normBag=0;</div>
-<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>       <span class="keywordtype">string</span> classOut=<span class="stringliteral">"Unclassified"</span>;</div>
-<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>         <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>           std::cout << probOut[iclass] << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>         <span class="keywordflow">if</span>(probOut[iclass]>maxBag){</div>
-<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>           maxBag=probOut[iclass];</div>
-<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>           classOut=nameVector[iclass];</div>
-<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>         }</div>
-<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>       }</div>
-<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>       <span class="comment">//look for class name</span></div>
-<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>       <span class="keywordflow">if</span>(verbose_opt[0]>1){</div>
-<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>         <span class="keywordflow">if</span>(classValueMap.size())</div>
-<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>           std::cout << <span class="stringliteral">"->"</span> << classValueMap[classOut] << std::endl;</div>
-<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>         <span class="keywordflow">else</span>        </div>
-<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>           std::cout << <span class="stringliteral">"->"</span> << classOut << std::endl;</div>
-<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>       }</div>
-<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>       <span class="keywordflow">if</span>(output_opt.size()){</div>
-<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>         <span class="keywordflow">if</span>(classValueMap.size())</div>
-<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>           poDstFeature->SetField(<span class="stringliteral">"class"</span>,classValueMap[classOut]);</div>
-<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>         <span class="keywordflow">else</span>        </div>
-<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>           poDstFeature->SetField(<span class="stringliteral">"class"</span>,classOut.c_str());</div>
-<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>         poDstFeature->SetFID( poFeature->GetFID() );</div>
-<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>       }</div>
-<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>       <span class="keywordtype">int</span> labelIndex=poFeature->GetFieldIndex(label_opt[0].c_str());</div>
-<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>       <span class="keywordflow">if</span>(labelIndex>=0){</div>
-<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>         <span class="keywordtype">string</span> classRef=poFeature->GetFieldAsString(labelIndex);</div>
-<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>         <span class="keywordflow">if</span>(classRef!=<span class="stringliteral">"0"</span>){</div>
-<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>           <span class="keywordflow">if</span>(classValueMap.size())</div>
-<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>         cm.incrementResult(type2string<short>(classValueMap[classRef]),type2string<short>(classValueMap[classOut]),1);</div>
-<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>         cm.incrementResult(classRef,classOut,1);</div>
-<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>         }</div>
-<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>       }</div>
-<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>       CPLErrorReset();</div>
-<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>       <span class="keywordflow">if</span>(output_opt.size()){</div>
-<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>         <span class="keywordflow">if</span>(imgWriterOgr.createFeature(poDstFeature,ilayer) != OGRERR_NONE){</div>
-<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>           CPLError( CE_Failure, CPLE_AppDefined,</div>
-<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>             <span class="stringliteral">"Unable to translate feature %d from layer %s.\n"</span>,</div>
-<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>             poFeature->GetFID(), imgWriterOgr.getLayerName(ilayer).c_str() );</div>
-<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>           OGRFeature::DestroyFeature( poDstFeature );</div>
-<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>           OGRFeature::DestroyFeature( poDstFeature );</div>
-<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>         }</div>
-<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>       }</div>
-<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>       ++ifeature;</div>
-<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>       <span class="keywordflow">if</span>(!verbose_opt[0]){</div>
-<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>         progress=<span class="keyword">static_cast<</span><span class="keywordtype">float</span><span class="keyword">></span>(ifeature+1.0)/nFeatures;</div>
-<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>         pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>       }</div>
-<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>       OGRFeature::DestroyFeature( poFeature );</div>
-<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>       OGRFeature::DestroyFeature( poDstFeature );</div>
-<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>     }<span class="comment">//get next feature</span></div>
-<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>       }<span class="comment">//next layer</span></div>
-<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>       imgReaderOgr.close();</div>
-<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>       <span class="keywordflow">if</span>(output_opt.size())</div>
-<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>       imgWriterOgr.close();</div>
-<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>     }</div>
-<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>     <span class="keywordflow">if</span>(cm.nReference()){</div>
-<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>       std::cout << cm << std::endl;</div>
-<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>       <span class="comment">// cout << "class #samples userAcc prodAcc" << endl;</span></div>
-<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>       <span class="comment">// double se95_ua=0;</span></div>
-<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>       <span class="comment">// double se95_pa=0;</span></div>
-<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>       <span class="comment">// double se95_oa=0;</span></div>
-<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>       <span class="comment">// double dua=0;</span></div>
-<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>       <span class="comment">// double dpa=0;</span></div>
-<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>       <span class="comment">// double doa=0;</span></div>
-<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>       <span class="comment">// for(short iclass=0;iclass<cm.nClasses();++iclass){</span></div>
-<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>       <span class="comment">//    dua=cm.ua_pct(cm.getClass(iclass),&se95_ua);</span></div>
-<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>       <span class="comment">//    dpa=cm.pa_pct(cm.getClass(iclass),&se95_pa);</span></div>
-<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>       <span class="comment">//    cout << cm.getClass(iclass) << " " << cm.nReference(cm.getClass(iclass)) << " " << dua << " (" << se95_ua << ")" << " " << dpa << " (" << se95_pa << ")" << endl;</span></div>
-<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>       <span class="comment">// }</span></div>
-<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>       <span class="comment">// std::cout << "Kappa: " << cm.kappa() << std::endl;</span></div>
-<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>       <span class="comment">// doa=cm.oa_pct(&se95_oa);</span></div>
-<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>       <span class="comment">// std::cout << "Overall Accuracy: " << doa << " (" << se95_oa << ")"  << std::endl;</span></div>
-<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>     }</div>
-<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>   }</div>
-<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>     <span class="keywordflow">if</span>(active_opt.size())</div>
-<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>       activeWriter.close();</div>
-<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>   }</div>
-<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorString){</div>
-<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>     std::cerr << <span class="stringliteral">"Error: errorString"</span> << std::endl;</div>
-<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>   }</div>
-<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>   <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span> }</div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-<div class="ttc" id="classImgWriterGdal_html"><div class="ttname"><a href="classImgWriterGdal.html">ImgWriterGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgWriterGdal_8h_source.html#l00033">ImgWriterGdal.h:33</a></div></div>
-<div class="ttc" id="classDecrease__PosValue_html"><div class="ttname"><a href="classDecrease__PosValue.html">Decrease_PosValue</a></div><div class="ttdef"><b>Definition:</b> <a href="PosValue_8h_source.html#l00034">PosValue.h:34</a></div></div>
-<div class="ttc" id="classVector2d_html"><div class="ttname"><a href="classVector2d.html">Vector2d</a></div><div class="ttdef"><b>Definition:</b> <a href="Vector2d_8h_source.html#l00031">Vector2d.h:31</a></div></div>
-<div class="ttc" id="classImgReaderOgr_html"><div class="ttname"><a href="classImgReaderOgr.html">ImgReaderOgr</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderOgr_8h_source.html#l00035">ImgReaderOgr.h:35</a></div></div>
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-<div class="ttc" id="classconfusionmatrix_1_1ConfusionMatrix_html"><div class="ttname"><a href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></div><div class="ttdef"><b>Definition:</b> <a href="ConfusionMatrix_8h_source.html#l00032">ConfusionMatrix.h:32</a></div></div>
-<div class="ttc" id="classImgWriterOgr_html"><div class="ttname"><a href="classImgWriterOgr.html">ImgWriterOgr</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgWriterOgr_8h_source.html#l00035">ImgWriterOgr.h:35</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkascii2img.html b/doc/html/pkascii2img.html
deleted file mode 100644
index bcf43d8..0000000
--- a/doc/html/pkascii2img.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: pkascii2img</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkascii2img </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><p>program to create raster image based on ascii file </p>
-<h2>SYNOPSIS</h2>
-<p><code> Usage: pkascii2img -i input.txt -o output </code></p>
-<p><code></code></p>
-<p><code> Options: [-ot type] [-of GDALformat] [-co NAME=VALUE]* [-dx value] [-dy value] [-ulx value] [-uly value] [-ct filename] [-a_srs EPSG:number] [-d description]</code></p>
-<p><code></code></p>
-<h1><a class="anchor" id="pkascii2img_description"></a>
-Description</h1>
-<p>The utility pkascii2img creates a raster dataset from an ASCII textfile. The textfile is in matrix format (rows and columns). The dimensions in x and y are defined by the number of columns and rows respectively. The georeferencing can be defined by providing the options for cell size (-dx -dy), upper left position (-ulx -uly) and the projection (-a_srs). Some dataset formats can also store a description (-d) and a color table (-ct).</p>
-<h1><a class="anchor" id="pkascii2img_options"></a>
-Options</h1>
-<ul>
-<li>use either <code>-short</code> or <code>--long</code> options (both <code>--long=value</code> and <code>--long value</code> are supported)</li>
-<li>short option <code>-h</code> shows basic options only, long option <code>--help</code> shows all options <table class="doxtable">
-<tr>
-<th>short</th><th>long</th><th>type</th><th>default</th><th>description  </th></tr>
-<tr>
-<td>i </td><td>input </td><td>std::string </td><td></td><td>input ASCII file </td></tr>
-<tr>
-<td>o </td><td>output </td><td>std::string </td><td></td><td>Output image file </td></tr>
-<tr>
-<td>ot </td><td>otype </td><td>std::string </td><td>Byte </td><td>Data type for output image ({Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/CInt16/CInt32/CFloat32/CFloat64}). Empty string: inherit type from input image </td></tr>
-<tr>
-<td>of </td><td>oformat </td><td>std::string </td><td>GTiff </td><td>image type string (see also gdal_translate) </td></tr>
-<tr>
-<td>co </td><td>co </td><td>std::string </td><td></td><td>Creation option for output file. Multiple options can be specified. </td></tr>
-<tr>
-<td>ulx </td><td>ulx </td><td>double </td><td>0 </td><td>Upper left x value bounding box (in geocoordinates if georef is true) </td></tr>
-<tr>
-<td>uly </td><td>uly </td><td>double </td><td>0 </td><td>Upper left y value bounding box (in geocoordinates if georef is true) </td></tr>
-<tr>
-<td>dx </td><td>dx </td><td>double </td><td></td><td>Output resolution in x (in meter) </td></tr>
-<tr>
-<td>dy </td><td>dy </td><td>double </td><td></td><td>Output resolution in y (in meter) </td></tr>
-<tr>
-<td>ct </td><td>ct </td><td>std::string </td><td></td><td>color table (file with 5 columns: id R G B ALFA (0: transparent, 255: solid) </td></tr>
-<tr>
-<td>a_srs </td><td>a_srs </td><td>std::string </td><td></td><td>Override the projection for the output file </td></tr>
-<tr>
-<td>d </td><td>description </td><td>std::string </td><td></td><td>Set image description </td></tr>
-</table>
-Usage: pkascii2img -i input.txt -o output</li>
-</ul>
-<h1>Examples </h1>
-<p>Some examples how to use pkascii2img can be found <a class="el" href="md_examples_pkascii2img.html#examples_pkascii2img">here</a> </p>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkascii2img_8cc_source.html b/doc/html/pkascii2img_8cc_source.html
deleted file mode 100644
index e09eb69..0000000
--- a/doc/html/pkascii2img_8cc_source.html
+++ /dev/null
@@ -1,244 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/pkascii2img.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkascii2img.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pkascii2img.cc: program to create raster image based on ascii file</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <string></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <fstream></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <assert.h></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "imageclasses/ImgWriterGdal.h"</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="comment">/******************************************************************************/</span></div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span> </div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span> {</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> input_opt(<span class="stringliteral">"i"</span>,<span class="stringliteral">"input"</span>,<span class="stringliteral">"input ASCII file"</span>);</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> output_opt(<span class="stringliteral">"o"</span>, <span class="stringliteral">"output"</span>, <span class="stringliteral">"Output image file"</span>);</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> dataType_opt(<span class="stringliteral">"ot"</span>, <span class="stringliteral">"otype"</span>, <span class="stringliteral">"Data type for output image ({Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/CInt16/CInt32/CFloat32/CFloat64}). Empty string: inherit type from input image"</span>,<span class="stringlite [...]
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> imageType_opt(<span class="stringliteral">"of"</span>, <span class="stringliteral">"oformat"</span>, <span class="stringliteral">"image type string (see also gdal_translate)"</span>, <span class="stringliteral">"GTiff"</span>);</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> option_opt(<span class="stringliteral">"co"</span>, <span class="stringliteral">"co"</span>, <span class="stringliteral">"Creation option for output file. Multiple options can be specified."</span>);</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> ulx_opt(<span class="stringliteral">"ulx"</span>, <span class="stringliteral">"ulx"</span>, <span class="stringliteral">"Upper left x value bounding box (in geocoordinates if georef is true)"</span>, 0.0);</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> uly_opt(<span class="stringliteral">"uly"</span>, <span class="stringliteral">"uly"</span>, <span class="stringliteral">"Upper left y value bounding box (in geocoordinates if georef is true)"</span>, 0.0);</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> dx_opt(<span class="stringliteral">"dx"</span>, <span class="stringliteral">"dx"</span>, <span class="stringliteral">"Output resolution in x (in meter)"</span>);</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> dy_opt(<span class="stringliteral">"dy"</span>, <span class="stringliteral">"dy"</span>, <span class="stringliteral">"Output resolution in y (in meter)"</span>);</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> projection_opt(<span class="stringliteral">"a_srs"</span>, <span class="stringliteral">"a_srs"</span>, <span class="stringliteral">"Override the projection for the output file"</span>);</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> colorTable_opt(<span class="stringliteral">"ct"</span>, <span class="stringliteral">"ct"</span>, <span class="stringliteral">"color table (file with 5 columns: id R G B ALFA (0: transparent, 255: solid)"</span>);</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> description_opt(<span class="stringliteral">"d"</span>, <span class="stringliteral">"description"</span>, <span class="stringliteral">"Set image description"</span>);</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> verbose_opt(<span class="stringliteral">"v"</span>, <span class="stringliteral">"verbose"</span>, <span class="stringliteral">"verbose"</span>, <span class="keyword">false</span>,2);</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span> </div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>   <span class="keywordtype">bool</span> doProcess;<span class="comment">//stop process when program was invoked with help option (-h --help)</span></div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     doProcess=input_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>     output_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>     dataType_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>     imageType_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     option_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     ulx_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     uly_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     dx_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     dy_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     colorTable_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     projection_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     description_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     verbose_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>   }</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> predefinedString){</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     std::cout << predefinedString << std::endl;</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     exit(0);</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   }</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   <span class="keywordflow">if</span>(!doProcess){</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>     cout << endl;</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>     cout << <span class="stringliteral">"Usage: pkascii2img -i input.txt -o output"</span> << endl;</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     cout << endl;</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     std::cout << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << std::endl;</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>   }</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span> </div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>   assert(input_opt.size());</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>   assert(output_opt.size());</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>   <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> imgWriter;</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>   ifstream ifile(input_opt[0].c_str(),ios::in);</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   <span class="comment">//get number of lines</span></div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>   <span class="keywordtype">string</span> line;</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>   <span class="keywordtype">int</span> nrow=0;</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>   <span class="keywordtype">int</span> ncol=0;</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>   <span class="keywordtype">int</span> irow=0;</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>   <span class="keywordtype">string</span> interleave=<span class="stringliteral">"BAND"</span>;</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>   vector< vector<double> > data;</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>   vector<double> row;</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>   <span class="keywordtype">double</span> value;</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>     <span class="keywordflow">while</span>(getline(ifile,line)){</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>       row.clear();</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>       <span class="comment">//read data from ascii file</span></div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>       istringstream ist(line);</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>       <span class="keywordflow">while</span>(ist>>value)</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>         row.push_back(value);</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>       <span class="keywordflow">if</span>(!ncol){</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>         ncol=row.size();</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>         data.push_back(row);</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>       }</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>         data.push_back(row);</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>       <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<row.size();++icol)</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>           cout << row[icol] << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>         cout << endl;</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>       }</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>       ++irow;</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>     }</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>     nrow=irow;</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>     assert(ncol);</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>     assert(nrow);</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>     <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>       cout << <span class="stringliteral">"nrow: "</span> << nrow << endl;</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>       cout << <span class="stringliteral">"ncol: "</span> << ncol << endl;</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>     }</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>   }</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> theError){</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>     cout << theError << endl;</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>   }</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span> </div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>   GDALDataType dataType=GDT_Unknown;</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>     cout << <span class="stringliteral">"possible output data types: "</span>;</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iType = 0; iType < GDT_TypeCount; ++iType){</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>       cout << <span class="stringliteral">" "</span> << GDALGetDataTypeName((GDALDataType)iType);</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>     <span class="keywordflow">if</span>( GDALGetDataTypeName((GDALDataType)iType) != NULL</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>         && EQUAL(GDALGetDataTypeName((GDALDataType)iType),</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>                  dataType_opt[0].c_str()))</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>       dataType=(GDALDataType) iType;</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>   }</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>     cout << endl;</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>   <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>     <span class="keywordflow">if</span>(dataType==GDT_Unknown)</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>       cout << <span class="stringliteral">"Unknown output pixel type: "</span> << dataType_opt[0] << endl;</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>       cout << <span class="stringliteral">"Output pixel type:  "</span> << GDALGetDataTypeName(dataType) << endl;</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>   }</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span> </div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>   imgWriter.open(output_opt[0],ncol,nrow,1,dataType,imageType_opt[0],option_opt);</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>   <span class="keywordflow">if</span>(description_opt.size())</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>     imgWriter.setImageDescription(description_opt[0]);</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>   <span class="keywordflow">if</span>(projection_opt.size()){</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>     assert(dx_opt.size());</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>     assert(dy_opt.size());</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>       cout << output_opt[0] << <span class="stringliteral">" is georeferenced."</span> << endl;</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>     <span class="keywordtype">double</span> gt[6];</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>     gt[0]=ulx_opt[0];</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>     gt[1]=dx_opt[0];</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>     gt[2]=0;</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>     gt[3]=uly_opt[0];</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>     gt[4]=0;</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>     gt[5]=-dy_opt[0];</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>     imgWriter.setGeoTransform(gt);</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>     imgWriter.setProjectionProj4(projection_opt[0]);</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>   }</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>       cout << output_opt[0] << <span class="stringliteral">" is not georeferenced."</span> << endl;</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>     assert(!imgWriter.isGeoRef());</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>   }</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>   <span class="keywordflow">if</span>(colorTable_opt.size()){</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>     assert(imgWriter.getDataType()==GDT_Byte);</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>     imgWriter.setColorTable(colorTable_opt[0]);</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>   }</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>   assert(data.size()==nrow);</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>   <span class="keywordflow">for</span>(irow=0;irow<nrow;++irow)</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>     imgWriter.writeData(data[irow],GDT_Float64,irow);</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>   imgWriter.close();</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span> }</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span> </div>
-<div class="ttc" id="classImgWriterGdal_html"><div class="ttname"><a href="classImgWriterGdal.html">ImgWriterGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgWriterGdal_8h_source.html#l00033">ImgWriterGdal.h:33</a></div></div>
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkascii2ogr.html b/doc/html/pkascii2ogr.html
deleted file mode 100644
index 52eb38d..0000000
--- a/doc/html/pkascii2ogr.html
+++ /dev/null
@@ -1,106 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: pkascii2ogr</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkascii2ogr </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><p>program to create vector points or polygons from text file </p>
-<h2>SYNOPSIS</h2>
-<p><code> Usage: pkascii2ogr -i input.txt -o output </code></p>
-<p><code></code></p>
-<p><code> Options: [-f OGRformat] [-x col] [-y col] [–line] [-n fieldname -ot type]* [-fs separator]</code></p>
-<p><code></code></p>
-<h1><a class="anchor" id="pkascii2ogr_description"></a>
-Description</h1>
-<p>Poor man's utility to create a vector dataset (points or single polygon) from an ASCII textfile. A better alternative is to use <a href="http://www.gdal.org/drv_vrt.html">virtual vector datasets</a>. Specify the position of the vertices (x and y) in the columns defined by the options (-x -y), starting from 0. The default is to use the first (-dx 0) and second (-dx 1) columns for x and y respectvely. Specify the names and types of the remaining columns in your input file via the option [...]
-<h1><a class="anchor" id="pkascii2ogr_options"></a>
-Options</h1>
-<ul>
-<li>use either <code>-short</code> or <code>--long</code> options (both <code>--long=value</code> and <code>--long value</code> are supported)</li>
-<li>short option <code>-h</code> shows basic options only, long option <code>--help</code> shows all options <table class="doxtable">
-<tr>
-<th>short</th><th>long</th><th>type</th><th>default</th><th>description  </th></tr>
-<tr>
-<td>i </td><td>input </td><td>std::string </td><td></td><td>Input ASCII file </td></tr>
-<tr>
-<td>o </td><td>output </td><td>std::string </td><td></td><td>Output file </td></tr>
-<tr>
-<td>f </td><td>f </td><td>std::string </td><td>ESRI Shapefile </td><td>Output sample file format </td></tr>
-<tr>
-<td>x </td><td>x </td><td>short </td><td>0 </td><td>column number of x (0) </td></tr>
-<tr>
-<td>y </td><td>y </td><td>short </td><td>1 </td><td>column number of y (1) </td></tr>
-<tr>
-<td>l </td><td>line </td><td>bool </td><td>false </td><td>create OGRPolygon as geometry instead of points. Fields are taken from first point and polygon is automatically closed (no need to repeat first point at last line). (false: use OGRPoint) </td></tr>
-<tr>
-<td>n </td><td>name </td><td>std::string </td><td></td><td>Field names for the columns in the input ascii file </td></tr>
-<tr>
-<td>ot </td><td>ot </td><td>std::string </td><td>Real </td><td>Field type (Real, Integer, String) for each of the fields as defined by name </td></tr>
-<tr>
-<td>a_srs </td><td>a_srs </td><td>std::string </td><td>epsg:4326 </td><td>Override the projection for the output file, use epsg:<code> or Wkt string </code></td></tr>
-<tr>
-<td><code> fs </code></td><td><code> fs </code></td><td><code> char </code></td><td><code> </code></td><td><code>field separator. </code></td></tr>
-</table>
-Usage: pkascii2ogr -i input.txt -o output</li>
-</ul>
-<p><code></p>
-<h1>Examples </h1>
-<p></code></p>
-<p><code> Some examples how to use pkascii2ogr can be found <a class="el" href="md_examples_pkascii2ogr.html#examples_pkascii2ogr">here</a> </code></p>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkascii2ogr_8cc_source.html b/doc/html/pkascii2ogr_8cc_source.html
deleted file mode 100644
index 61c2c7d..0000000
--- a/doc/html/pkascii2ogr_8cc_source.html
+++ /dev/null
@@ -1,191 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/pkascii2ogr.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkascii2ogr.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pkascii2ogr.cc: program to create vector points or polygons from text file</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <string></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <fstream></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <assert.h></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "imageclasses/ImgWriterOgr.h"</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="comment">/******************************************************************************/</span></div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span> </div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span> {</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> input_opt(<span class="stringliteral">"i"</span>,<span class="stringliteral">"input"</span>,<span class="stringliteral">"Input ASCII file"</span>);</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> output_opt(<span class="stringliteral">"o"</span>, <span class="stringliteral">"output"</span>, <span class="stringliteral">"Output file"</span>);</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> ogrformat_opt(<span class="stringliteral">"f"</span>, <span class="stringliteral">"f"</span>, <span class="stringliteral">"Output sample file format"</span>,<span class="stringliteral">"ESRI Shapefile"</span>);</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> colX_opt(<span class="stringliteral">"x"</span>, <span class="stringliteral">"x"</span>, <span class="stringliteral">"column number of x (0)"</span>, 0);</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> colY_opt(<span class="stringliteral">"y"</span>, <span class="stringliteral">"y"</span>, <span class="stringliteral">"column number of y (1)"</span>, 1);</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> polygon_opt(<span class="stringliteral">"l"</span>, <span class="stringliteral">"line"</span>, <span class="stringliteral">"create OGRPolygon as geometry instead of points.  Fields are taken from first point and polygon is automatically closed (no need to repeat first point at last line). (false: use OGRPoint)"</s [...]
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> fname_opt(<span class="stringliteral">"n"</span>, <span class="stringliteral">"name"</span>, <span class="stringliteral">"Field names for the columns in the input ascii file"</span>);</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> ftype_opt(<span class="stringliteral">"ot"</span>, <span class="stringliteral">"ot"</span>, <span class="stringliteral">"Field type (Real, Integer, String) for each of the fields as defined by name"</span>,<span class="stringliteral">"Real"</span>);</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> projection_opt(<span class="stringliteral">"a_srs"</span>, <span class="stringliteral">"a_srs"</span>, <span class="stringliteral">"Override the projection for the output file, use epsg:<code> or Wkt string"</span>, <span class="stringliteral">"epsg:4326"</span>);</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   <a class="code" href="classOptionpk.html">Optionpk<char></a> fs_opt(<span class="stringliteral">"fs"</span>,<span class="stringliteral">"fs"</span>,<span class="stringliteral">"field separator."</span>,<span class="charliteral">' '</span>);</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> verbose_opt(<span class="stringliteral">"v"</span>, <span class="stringliteral">"verbose"</span>, <span class="stringliteral">"verbose (0)"</span>, 0,2);</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span> </div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   <span class="keywordtype">bool</span> doProcess;<span class="comment">//stop process when program was invoked with help option (-h --help)</span></div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>     doProcess=input_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     output_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     ogrformat_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     colX_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     colY_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>     polygon_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>     fname_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>     ftype_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     projection_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     fs_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     verbose_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>   }</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> predefinedString){</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     std::cout << predefinedString << std::endl;</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     exit(0);</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>   }</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>   <span class="keywordflow">if</span>(!doProcess){</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     cout << endl;</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     cout << <span class="stringliteral">"Usage: pkascii2ogr -i input.txt -o output"</span> << endl;</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     cout << endl;</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     std::cout << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << std::endl;</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>     exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   }</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>   <span class="keywordflow">if</span>(input_opt.empty()){</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>     std::cerr << <span class="stringliteral">"No input file provided (use option -i). Use --help for help information"</span>;</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     exit(0);</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   }</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>  <span class="keywordflow">if</span>(output_opt.empty()){</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>    std::cerr << <span class="stringliteral">"No output file provided (use option -o). Use --help for help information"</span>;</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>       exit(0);</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>   }</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span> </div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>   <span class="keywordtype">string</span> theProjection;</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>   theProjection=projection_opt[0];</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   <span class="keywordtype">int</span> ogr_typecount=11;<span class="comment">//hard coded for now!</span></div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>   <span class="keywordflow">while</span>(ftype_opt.size()<fname_opt.size())</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     ftype_opt.push_back(ftype_opt[0]);</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>   <span class="comment">// vector<string> fname(fname_opt.size());</span></div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>   vector<OGRFieldType> ftype(ftype_opt.size());</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>     cout << <span class="stringliteral">"field types can be: "</span>;</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ifield=0;ifield<fname_opt.size();++ifield){</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>     <span class="comment">// fname[ifield]=fname_opt[ifield];</span></div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iType = 0; iType < ogr_typecount; ++iType){</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>       <span class="keywordflow">if</span>(!ifield&&verbose_opt[0])</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>         cout << <span class="stringliteral">" "</span> << OGRFieldDefn::GetFieldTypeName((OGRFieldType)iType);</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>       <span class="keywordflow">if</span>( OGRFieldDefn::GetFieldTypeName((OGRFieldType)iType) != NULL</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>           && EQUAL(OGRFieldDefn::GetFieldTypeName((OGRFieldType)iType),</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>                    ftype_opt[ifield].c_str()))</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>         ftype[ifield]=(OGRFieldType) iType;</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>     }</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>   }</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>   <span class="comment">//todo: what if unknown?</span></div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>   <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>     cout << endl << <span class="stringliteral">"field types are: "</span>;</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ifield=0;ifield<ftype.size();++ifield)</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>       cout << OGRFieldDefn::GetFieldTypeName(ftype[ifield]) << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>     cout << endl;</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>   }</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>   </div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>   <a class="code" href="classImgWriterOgr.html">ImgWriterOgr</a> imgWriter;</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>   imgWriter.open(output_opt[0],ogrformat_opt[0]);</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>     <span class="keywordflow">if</span>(polygon_opt[0])</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>       imgWriter.ascii2ogr(input_opt[0], <span class="stringliteral">"New Layer"</span>, fname_opt, ftype, colX_opt[0], colY_opt[0], theProjection, wkbPolygon, fs_opt[0]);</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>       imgWriter.ascii2ogr(input_opt[0], <span class="stringliteral">"New Layer"</span>, fname_opt, ftype, colX_opt[0], colY_opt[0], theProjection, wkbPoint, fs_opt[0]);</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>   }</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorString){</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>     cout << errorString << endl;</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>   }</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   imgWriter.close();</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span> }</div>
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-<div class="ttc" id="classImgWriterOgr_html"><div class="ttname"><a href="classImgWriterOgr.html">ImgWriterOgr</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgWriterOgr_8h_source.html#l00035">ImgWriterOgr.h:35</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkcomposite.html b/doc/html/pkcomposite.html
deleted file mode 100644
index d56601b..0000000
--- a/doc/html/pkcomposite.html
+++ /dev/null
@@ -1,183 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: pkcomposite</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkcomposite </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><p>program to mosaic and composite geo-referenced images </p>
-<h2>SYNOPSIS</h2>
-<p><code> Usage: pkcomposite -i input [-i input]* -o output </code></p>
-<p><code></code></p>
-<p><code> Options: [-b band]* [-dx xres] [-dy yres] [-e vector] [-ulx ULX -uly ULY -lrx LRX -lry LRY] [-cr rule] [-cb band] [-srcnodata value] [-bndnodata band] [-min value] [-max value] [-dstnodata value] [-r resampling_method] [-ot {Byte / Int16 / UInt16 / UInt32 / Int32 / Float32 / Float64 / CInt16 / CInt32 / CFloat32 / CFloat64}] [-of format] [-co NAME=VALUE]* [-a_srs epsg:number]</code></p>
-<p><code> Advanced options: [-file] [-w weight]* [-c class]* [-ct colortable] [-d description] [-align] </code></p>
-<h1><a class="anchor" id="pkcomposite_description"></a>
-Description</h1>
-<p>The utility pkcomposite can be used to <em>mosaic</em> and <em>composite</em> multiple (georeferenced) raster datasets. A mosaic can merge images with different geographical extents into a single larger image. Compositing resolves the overlapping pixels according to some rule (e.g, the median of all overlapping pixels). This utility is complementary to GDAL, which currently does not support a composite step. Input datasets can have different bounding boxes and spatial resolutionsresol [...]
-<p><a class="anchor" id="pkcomposite_rules"></a> </p>
-<table class="doxtable">
-<tr>
-<th>composite rule </th><th>composite output  </th></tr>
-<tr>
-<td>overwrite </td><td>Overwrite overlapping pixels: the latter input image on the command line overrules the previous image </td></tr>
-<tr>
-<td>maxndvi </td><td>Create a maximum NDVI (normalized difference vegetation index) composite from multi-band input images. Use option -cb to set the indexes of the red and near infrared bands respectively (e.g., -cb 0 -cb 1) </td></tr>
-<tr>
-<td>maxband </td><td>Select the pixel with a maximum value in the band specified by option -cb </td></tr>
-<tr>
-<td>minband </td><td>Select the pixel with a minimum value in the band specified by option -cb </td></tr>
-<tr>
-<td>mean </td><td>Calculate the mean (average) of overlapping pixels </td></tr>
-<tr>
-<td>stdev </td><td>Calculate the standard deviation of overlapping pixels </td></tr>
-<tr>
-<td>median </td><td>Calculate the median of overlapping pixels </td></tr>
-<tr>
-<td>mode </td><td>Select the mode of overlapping pixels (maximum voting): use for Byte images only </td></tr>
-<tr>
-<td>sum </td><td>Calculate the arithmetic sum of overlapping pixels </td></tr>
-<tr>
-<td>maxallbands </td><td>For each individual band, assign the maximum value found in all overlapping pixels. Unlike maxband, output band values cannot be attributed to a single (date) pixel in the input time series </td></tr>
-<tr>
-<td>minallbands </td><td>For each individual band, assign the minimum value found in all overlapping pixels. Unlike minband, output band values cannot be attributed to a single (date) pixel in the input time series </td></tr>
-</table>
-<p>Example: Calculate the maximum NDVI composite of two multispectral input images (e.g., red is band 0 and near infrared is band 1)</p>
-<div class="fragment"><div class="line">pkcomposite -i input1.tif -i input2.tif -o output.tif -cr maxndvi -cb 0 -cb 1</div>
-</div><!-- fragment --><p>Example: Calculate the minimum nadir composite of two input images, where the forth band (b=3) contains the view zenith angle</p>
-<div class="fragment"><div class="line">pkcomposite -i input1.tif -i input2.tif -o minzenith.tif -cr minband -cb 3</div>
-</div><!-- fragment --><p>Example: Calculate the minimum of two input images in all bands</p>
-<div class="fragment"><div class="line">pkcomposite -i input1.tif -i input2.tif -o minimum.tif -cr minallbands</div>
-</div><!-- fragment --><h1><a class="anchor" id="pkcomposite_options"></a>
-Options</h1>
-<ul>
-<li>use either <code>-short</code> or <code>--long</code> options (both <code>--long=value</code> and <code>--long value</code> are supported)</li>
-<li>short option <code>-h</code> shows basic options only, long option <code>--help</code> shows all options</li>
-</ul>
-<table class="doxtable">
-<tr>
-<th>short</th><th>long</th><th>type</th><th>default</th><th>description  </th></tr>
-<tr>
-<td>i </td><td>input </td><td>std::string </td><td></td><td>Input image file(s). If input contains multiple images, a multi-band output is created </td></tr>
-<tr>
-<td>o </td><td>output </td><td>std::string </td><td></td><td>Output image file </td></tr>
-<tr>
-<td>b </td><td>band </td><td>int </td><td></td><td>band index(es) to crop (leave empty if all bands must be retained) </td></tr>
-<tr>
-<td>dx </td><td>dx </td><td>double </td><td></td><td>Output resolution in x (in meter) (empty: keep original resolution) </td></tr>
-<tr>
-<td>dy </td><td>dy </td><td>double </td><td></td><td>Output resolution in y (in meter) (empty: keep original resolution) </td></tr>
-<tr>
-<td>e </td><td>extent </td><td>std::string </td><td></td><td>get boundary from extent from polygons in vector file </td></tr>
-<tr>
-<td>cut </td><td>crop_to_cutline </td><td>bool </td><td>false </td><td>Crop the extent of the target dataset to the extent of the cutline </td></tr>
-<tr>
-<td>m </td><td>mask </td><td>std::string </td><td></td><td>Use the first band of the specified file as a validity mask (0 is nodata) </td></tr>
-<tr>
-<td>msknodata </td><td>msknodata </td><td>float </td><td>0 </td><td>Mask value not to consider for composite </td></tr>
-<tr>
-<td>mskband </td><td>mskband </td><td>short </td><td>0 </td><td>Mask band to read (0 indexed). Provide band for each mask. </td></tr>
-<tr>
-<td>ulx </td><td>ulx </td><td>double </td><td>0 </td><td>Upper left x value bounding box </td></tr>
-<tr>
-<td>uly </td><td>uly </td><td>double </td><td>0 </td><td>Upper left y value bounding box </td></tr>
-<tr>
-<td>lrx </td><td>lrx </td><td>double </td><td>0 </td><td>Lower right x value bounding box </td></tr>
-<tr>
-<td>lry </td><td>lry </td><td>double </td><td>0 </td><td>Lower right y value bounding box </td></tr>
-<tr>
-<td>cr </td><td>crule </td><td>std::string </td><td>overwrite </td><td>Composite rule (overwrite, maxndvi, maxband, minband, mean, mode (only for byte images), median, sum, maxallbands, minallbands, stdev </td></tr>
-<tr>
-<td>cb </td><td>cband </td><td>int </td><td>0 </td><td>band index used for the composite rule (e.g., for ndvi, use –cband=0 –cband=1 with 0 and 1 indices for red and nir band respectively </td></tr>
-<tr>
-<td>srcnodata </td><td>srcnodata </td><td>double </td><td></td><td>invalid value(s) for input raster dataset </td></tr>
-<tr>
-<td>bndnodata </td><td>bndnodata </td><td>int </td><td>0 </td><td>Band(s) in input image to check if pixel is valid (used for srcnodata, min and max options) </td></tr>
-<tr>
-<td>min </td><td>min </td><td>double </td><td></td><td>flag values smaller or equal to this value as invalid. </td></tr>
-<tr>
-<td>max </td><td>max </td><td>double </td><td></td><td>flag values larger or equal to this value as invalid. </td></tr>
-<tr>
-<td>dstnodata </td><td>dstnodata </td><td>double </td><td>0 </td><td>nodata value to put in output raster dataset if not valid or out of bounds. </td></tr>
-<tr>
-<td>r </td><td>resampling-method </td><td>std::string </td><td>near </td><td>Resampling method (near: nearest neighbor, bilinear: bi-linear interpolation). </td></tr>
-<tr>
-<td>ot </td><td>otype </td><td>std::string </td><td></td><td>Data type for output image ({Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/CInt16/CInt32/CFloat32/CFloat64}). Empty string: inherit type from input image </td></tr>
-<tr>
-<td>of </td><td>oformat </td><td>std::string </td><td>GTiff </td><td>Output image format (see also gdal_translate). </td></tr>
-<tr>
-<td>co </td><td>co </td><td>std::string </td><td></td><td>Creation option for output file. Multiple options can be specified. </td></tr>
-<tr>
-<td>a_srs </td><td>a_srs </td><td>std::string </td><td></td><td>Override the spatial reference for the output file (leave blank to copy from input file, use epsg:3035 to use European projection and force to European grid </td></tr>
-<tr>
-<td>file </td><td>file </td><td>short </td><td>0 </td><td>write number of observations (1) or sequence nr of selected file (2) for each pixels as additional layer in composite </td></tr>
-<tr>
-<td>w </td><td>weight </td><td>short </td><td>1 </td><td>Weights (type: short) for the composite, use one weight for each input file in same order as input files are provided). Use value 1 for equal weights. </td></tr>
-<tr>
-<td>c </td><td>class </td><td>short </td><td>0 </td><td>classes for multi-band output image: each band represents the number of observations for one specific class. Use value 0 for no multi-band output image. </td></tr>
-<tr>
-<td>ct </td><td>ct </td><td>std::string </td><td></td><td>color table file with 5 columns: id R G B ALFA (0: transparent, 255: solid) </td></tr>
-<tr>
-<td>align </td><td>align </td><td>bool </td><td></td><td>Align output bounding box to first input image </td></tr>
-<tr>
-<td>d </td><td>description </td><td>std::string </td><td></td><td>Set image description </td></tr>
-</table>
-<h1>Examples </h1>
-<p>Some examples how to use pkcomposite can be found <a class="el" href="md_examples_pkcomposite.html#examples_pkcomposite">here</a></p>
-<h1>FAQ </h1>
-<p>Frequently asked questions on pkcomposite can be found <a class="el" href="md_faq_pkcomposite.html#faq_pkcomposite">here</a></p>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkcomposite_8cc_source.html b/doc/html/pkcomposite_8cc_source.html
deleted file mode 100644
index f844591..0000000
--- a/doc/html/pkcomposite_8cc_source.html
+++ /dev/null
@@ -1,1274 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/pkcomposite.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkcomposite.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pkcomposite.cc: program to mosaic and composite geo-referenced images</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <algorithm></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <vector></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <iostream></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <string></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "imageclasses/ImgReaderGdal.h"</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "imageclasses/ImgWriterGdal.h"</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "imageclasses/ImgReaderOgr.h"</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "base/Vector2d.h"</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include "algorithms/StatFactory.h"</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> </div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="comment">/******************************************************************************/</span></div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span> <span class="keyword">namespace </span>crule{</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>   <span class="keyword">enum</span> CRULE_TYPE {overwrite=0, maxndvi=1, maxband=2, minband=3, validband=4, mean=5, mode=6, median=7,sum=8,minallbands=9,maxallbands=10,stdev=11};</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span> }</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span> </div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span> </div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span> {</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  input_opt(<span class="stringliteral">"i"</span>, <span class="stringliteral">"input"</span>, <span class="stringliteral">"Input image file(s). If input contains multiple images, a multi-band output is created"</span>);</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  output_opt(<span class="stringliteral">"o"</span>, <span class="stringliteral">"output"</span>, <span class="stringliteral">"Output image file"</span>);</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a>  band_opt(<span class="stringliteral">"b"</span>, <span class="stringliteral">"band"</span>, <span class="stringliteral">"band index(es) to crop (leave empty if all bands must be retained)"</span>);</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a>  dx_opt(<span class="stringliteral">"dx"</span>, <span class="stringliteral">"dx"</span>, <span class="stringliteral">"Output resolution in x (in meter) (empty: keep original resolution)"</span>);</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a>  dy_opt(<span class="stringliteral">"dy"</span>, <span class="stringliteral">"dy"</span>, <span class="stringliteral">"Output resolution in y (in meter) (empty: keep original resolution)"</span>);</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  extent_opt(<span class="stringliteral">"e"</span>, <span class="stringliteral">"extent"</span>, <span class="stringliteral">"get boundary from extent from polygons in vector file"</span>);</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> cut_opt(<span class="stringliteral">"cut"</span>, <span class="stringliteral">"crop_to_cutline"</span>, <span class="stringliteral">"Crop the extent of the target dataset to the extent of the cutline."</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> mask_opt(<span class="stringliteral">"m"</span>, <span class="stringliteral">"mask"</span>, <span class="stringliteral">"Use the first band of the specified file as a validity mask (0 is nodata)."</span>);</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>   <a class="code" href="classOptionpk.html">Optionpk<float></a> msknodata_opt(<span class="stringliteral">"msknodata"</span>, <span class="stringliteral">"msknodata"</span>, <span class="stringliteral">"Mask value not to consider for composite."</span>, 0);</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> mskband_opt(<span class="stringliteral">"mskband"</span>, <span class="stringliteral">"mskband"</span>, <span class="stringliteral">"Mask band to read (0 indexed). Provide band for each mask."</span>, 0);</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a>  ulx_opt(<span class="stringliteral">"ulx"</span>, <span class="stringliteral">"ulx"</span>, <span class="stringliteral">"Upper left x value bounding box"</span>, 0.0);</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a>  uly_opt(<span class="stringliteral">"uly"</span>, <span class="stringliteral">"uly"</span>, <span class="stringliteral">"Upper left y value bounding box"</span>, 0.0);</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a>  lrx_opt(<span class="stringliteral">"lrx"</span>, <span class="stringliteral">"lrx"</span>, <span class="stringliteral">"Lower right x value bounding box"</span>, 0.0);</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a>  lry_opt(<span class="stringliteral">"lry"</span>, <span class="stringliteral">"lry"</span>, <span class="stringliteral">"Lower right y value bounding box"</span>, 0.0);</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> crule_opt(<span class="stringliteral">"cr"</span>, <span class="stringliteral">"crule"</span>, <span class="stringliteral">"Composite rule (overwrite, maxndvi, maxband, minband, mean, mode (only for byte images), median, sum, maxallbands, minallbands, stdev"</span>, <span class="stringliteral">"overwrite&qu [...]
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> ruleBand_opt(<span class="stringliteral">"cb"</span>, <span class="stringliteral">"cband"</span>, <span class="stringliteral">"band index used for the composite rule (e.g., for ndvi, use --cband=0 --cband=1 with 0 and 1 indices for red and nir band respectively"</span>, 0);</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> srcnodata_opt(<span class="stringliteral">"srcnodata"</span>, <span class="stringliteral">"srcnodata"</span>, <span class="stringliteral">"invalid value(s) for input raster dataset"</span>);</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> bndnodata_opt(<span class="stringliteral">"bndnodata"</span>, <span class="stringliteral">"bndnodata"</span>, <span class="stringliteral">"Band(s) in input image to check if pixel is valid (used for srcnodata, min and max options)"</span>, 0);</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> minValue_opt(<span class="stringliteral">"min"</span>, <span class="stringliteral">"min"</span>, <span class="stringliteral">"flag values smaller or equal to this value as invalid."</span>);</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> maxValue_opt(<span class="stringliteral">"max"</span>, <span class="stringliteral">"max"</span>, <span class="stringliteral">"flag values larger or equal to this value as invalid."</span>);</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a>  dstnodata_opt(<span class="stringliteral">"dstnodata"</span>, <span class="stringliteral">"dstnodata"</span>, <span class="stringliteral">"nodata value to put in output raster dataset if not valid or out of bounds."</span>, 0);</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  resample_opt(<span class="stringliteral">"r"</span>, <span class="stringliteral">"resampling-method"</span>, <span class="stringliteral">"Resampling method (near: nearest neighbor, bilinear: bi-linear interpolation)."</span>, <span class="stringliteral">"near"</span>);</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  otype_opt(<span class="stringliteral">"ot"</span>, <span class="stringliteral">"otype"</span>, <span class="stringliteral">"Data type for output image ({Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/CInt16/CInt32/CFloat32/CFloat64}). Empty string: inherit type from input image"</span>, <span class="stringliter [...]
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  oformat_opt(<span class="stringliteral">"of"</span>, <span class="stringliteral">"oformat"</span>, <span class="stringliteral">"Output image format (see also gdal_translate)."</span>,<span class="stringliteral">"GTiff"</span>);</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> option_opt(<span class="stringliteral">"co"</span>, <span class="stringliteral">"co"</span>, <span class="stringliteral">"Creation option for output file. Multiple options can be specified."</span>);</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  projection_opt(<span class="stringliteral">"a_srs"</span>, <span class="stringliteral">"a_srs"</span>, <span class="stringliteral">"Override the spatial reference for the output file (leave blank to copy from input file, use epsg:3035 to use European projection and force to European grid"</span>);</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> file_opt(<span class="stringliteral">"file"</span>, <span class="stringliteral">"file"</span>, <span class="stringliteral">"write number of observations (1) or sequence nr of selected file (2) for each pixels as additional layer in composite"</span>, 0);</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> weight_opt(<span class="stringliteral">"w"</span>, <span class="stringliteral">"weight"</span>, <span class="stringliteral">"Weights (type: short) for the composite, use one weight for each input file in same order as input files are provided). Use value 1 for equal weights."</span>, 1);</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> class_opt(<span class="stringliteral">"c"</span>, <span class="stringliteral">"class"</span>, <span class="stringliteral">"classes for multi-band output image: each band represents the number of observations for one specific class. Use value 0 for no multi-band output image."</span>, 0);</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  colorTable_opt(<span class="stringliteral">"ct"</span>, <span class="stringliteral">"ct"</span>, <span class="stringliteral">"color table file with 5 columns: id R G B ALFA (0: transparent, 255: solid)"</span>);</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  description_opt(<span class="stringliteral">"d"</span>, <span class="stringliteral">"description"</span>, <span class="stringliteral">"Set image description"</span>);</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a>  align_opt(<span class="stringliteral">"align"</span>, <span class="stringliteral">"align"</span>, <span class="stringliteral">"Align output bounding box to input image"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a>  verbose_opt(<span class="stringliteral">"v"</span>, <span class="stringliteral">"verbose"</span>, <span class="stringliteral">"verbose"</span>, 0,2);</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span> </div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>   extent_opt.setHide(1);</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>   cut_opt.setHide(1);</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>   mask_opt.setHide(1);</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>   msknodata_opt.setHide(1);</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>   mskband_opt.setHide(1);</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>   option_opt.setHide(1);</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>   file_opt.setHide(1);</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>   weight_opt.setHide(1);</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>   class_opt.setHide(1);</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>   colorTable_opt.setHide(1);</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>   description_opt.setHide(1);</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span> </div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>   <span class="keywordtype">bool</span> doProcess;<span class="comment">//stop process when program was invoked with help option (-h --help)</span></div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>     doProcess=input_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>     output_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>     band_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>     dx_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>     dy_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>     extent_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>     cut_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>     mask_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>     msknodata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>     mskband_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>     ulx_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>     uly_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>     lrx_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>     lry_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>     crule_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>     ruleBand_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>     srcnodata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>     bndnodata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>     minValue_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>     maxValue_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>     dstnodata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>     resample_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>     otype_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>     oformat_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>     option_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>     projection_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>     file_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>     weight_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>     class_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>     colorTable_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>     description_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>     align_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>     verbose_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>   }</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> predefinedString){</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>     std::cout << predefinedString << std::endl;</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>     exit(0);</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>   }</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>   <span class="keywordflow">if</span>(!doProcess){</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>     cout << endl;</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>     cout << <span class="stringliteral">"Usage: pkcomposite -i input [-i input]* -o output"</span> << endl;</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>     cout << endl;</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>     std::cout << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << std::endl;</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>     exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>   }</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span> </div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>   std::map<std::string, crule::CRULE_TYPE> cruleMap;</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>   <span class="comment">// //initialize cruleMap</span></div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>   <span class="comment">// enum CRULE_TYPE {overwrite=0, maxndvi=1, maxband=2, minband=3, validband=4, mean=5, mode=6, median=7,sum=8};</span></div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span> </div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>   cruleMap[<span class="stringliteral">"overwrite"</span>]=crule::overwrite;</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>   cruleMap[<span class="stringliteral">"maxndvi"</span>]=crule::maxndvi;</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>   cruleMap[<span class="stringliteral">"maxband"</span>]=crule::maxband;</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>   cruleMap[<span class="stringliteral">"minband"</span>]=crule::minband;</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>   cruleMap[<span class="stringliteral">"validband"</span>]=crule::validband;</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>   cruleMap[<span class="stringliteral">"mean"</span>]=crule::mean;</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>   cruleMap[<span class="stringliteral">"mode"</span>]=crule::mode;</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>   cruleMap[<span class="stringliteral">"median"</span>]=crule::median;</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>   cruleMap[<span class="stringliteral">"sum"</span>]=crule::sum;</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>   cruleMap[<span class="stringliteral">"maxallbands"</span>]=crule::maxallbands;</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>   cruleMap[<span class="stringliteral">"minallbands"</span>]=crule::minallbands;</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>   cruleMap[<span class="stringliteral">"stdev"</span>]=crule::stdev;</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span> </div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>   <span class="keywordflow">if</span>(srcnodata_opt.size()){</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>     <span class="keywordflow">while</span>(srcnodata_opt.size()<bndnodata_opt.size())</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>       srcnodata_opt.push_back(srcnodata_opt[0]);</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>   }</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>   <span class="keywordflow">while</span>(bndnodata_opt.size()<srcnodata_opt.size())</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>     bndnodata_opt.push_back(bndnodata_opt[0]);</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>   <span class="keywordflow">if</span>(minValue_opt.size()){</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>     <span class="keywordflow">while</span>(minValue_opt.size()<bndnodata_opt.size())</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>       minValue_opt.push_back(minValue_opt[0]);</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>     <span class="keywordflow">while</span>(bndnodata_opt.size()<minValue_opt.size())</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>       bndnodata_opt.push_back(bndnodata_opt[0]);</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>   }</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>   <span class="keywordflow">if</span>(maxValue_opt.size()){</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>     <span class="keywordflow">while</span>(maxValue_opt.size()<bndnodata_opt.size())</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>       maxValue_opt.push_back(maxValue_opt[0]);</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>     <span class="keywordflow">while</span>(bndnodata_opt.size()<maxValue_opt.size())</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>       bndnodata_opt.push_back(bndnodata_opt[0]);</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>   }</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>   RESAMPLE theResample;</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>   <span class="keywordflow">if</span>(resample_opt[0]==<span class="stringliteral">"near"</span>){</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>     theResample=NEAR;</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>       cout << <span class="stringliteral">"resampling: nearest neighbor"</span> << endl;</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>   }</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(resample_opt[0]==<span class="stringliteral">"bilinear"</span>){</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>     theResample=BILINEAR;</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>       cout << <span class="stringliteral">"resampling: bilinear interpolation"</span> << endl;</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>   }</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>     std::cout << <span class="stringliteral">"Error: resampling method "</span> << resample_opt[0] << <span class="stringliteral">" not supported"</span> << std::endl;</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>     exit(1);</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>   }</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>   </div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>   <span class="keywordflow">if</span>(input_opt.empty()){</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>     std::cerr << <span class="stringliteral">"No input file provided (use option -i). Use --help for help information"</span> << std::endl;</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>     exit(0);</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>   }</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>   <span class="keywordtype">int</span> nband=0;</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>   <span class="keywordtype">int</span> nwriteBand=0;</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>   <span class="keywordtype">int</span> writeBand=0;</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>   vector<short> bands;</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>   </div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>   <span class="comment">//get bounding box</span></div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>   <span class="keywordtype">double</span> maxLRX=0;</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>   <span class="keywordtype">double</span> maxULY=0;</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>   <span class="keywordtype">double</span> minULX=0;</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>   <span class="keywordtype">double</span> minLRY=0;</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>   <span class="keywordtype">double</span> magic_x=1,magic_y=1;<span class="comment">//magic pixel for GDAL map info</span></div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span> </div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>   GDALDataType theType=GDT_Unknown;</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>     cout << <span class="stringliteral">"possible output data types: "</span>;</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iType = 0; iType < GDT_TypeCount; ++iType){</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>       cout << <span class="stringliteral">" "</span> << GDALGetDataTypeName((GDALDataType)iType);</div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>     <span class="keywordflow">if</span>( GDALGetDataTypeName((GDALDataType)iType) != NULL</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>         && EQUAL(GDALGetDataTypeName((GDALDataType)iType),</div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>                  otype_opt[0].c_str()))</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>       theType=(GDALDataType) iType;</div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>   }</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>   <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>     cout << endl;</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>     <span class="keywordflow">if</span>(theType==GDT_Unknown)</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>       cout << <span class="stringliteral">"Unknown output pixel type: "</span> << otype_opt[0] << endl;</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>       cout << <span class="stringliteral">"Output pixel type:  "</span> << GDALGetDataTypeName(theType) << endl;</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>   }</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span> </div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>   <span class="keywordtype">double</span> dx=0;</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>   <span class="keywordtype">double</span> dy=0;</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>   <span class="comment">//get bounding box from extentReader if defined</span></div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>   <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a> extentReader;</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>   <span class="keywordflow">if</span>(extent_opt.size()){</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>     <span class="keywordtype">double</span> e_ulx;</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>     <span class="keywordtype">double</span> e_uly;</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>     <span class="keywordtype">double</span> e_lrx;</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>     <span class="keywordtype">double</span> e_lry;</div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iextent=0;iextent<extent_opt.size();++iextent){</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>       extentReader.open(extent_opt[iextent]);</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>       <span class="keywordflow">if</span>(!(extentReader.getExtent(e_ulx,e_uly,e_lrx,e_lry))){</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>         cerr << <span class="stringliteral">"Error: could not get extent from "</span> << extent_opt[0] << endl;</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>         exit(1);</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>       }</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>       <span class="keywordflow">if</span>(!iextent){</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>     ulx_opt[0]=e_ulx;</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>     uly_opt[0]=e_uly;</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>     lrx_opt[0]=e_lrx;</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>     lry_opt[0]=e_lry;</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>       }</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>     <span class="keywordflow">if</span>(e_ulx<ulx_opt[0])</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>       ulx_opt[0]=e_ulx;</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>     <span class="keywordflow">if</span>(e_uly>uly_opt[0])</div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>       uly_opt[0]=e_uly;</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>     <span class="keywordflow">if</span>(e_lrx>lrx_opt[0])</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>       lrx_opt[0]=e_lrx;</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>     <span class="keywordflow">if</span>(e_lry<lry_opt[0])</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>       lry_opt[0]=e_lry;</div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>       }</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>       extentReader.close();</div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>     }</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>     <span class="keywordflow">if</span>(cut_opt.size())</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>       extentReader.open(extent_opt[0]);</div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>   }</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span> </div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>     cout << <span class="stringliteral">"--ulx="</span> << ulx_opt[0] << <span class="stringliteral">" --uly="</span> << uly_opt[0] << <span class="stringliteral">" --lrx="</span> << lrx_opt[0] << <span class="stringliteral">" --lry="</span> << lry_opt[0] << endl;</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span> </div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>   vector<ImgReaderGdal> imgReader(input_opt.size());</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>   <span class="keywordtype">string</span> theProjection=<span class="stringliteral">""</span>;</div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>   GDALColorTable* theColorTable=NULL;</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>   <span class="keywordtype">string</span> imageType;</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>   <span class="keywordtype">bool</span> init=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ifile=0;ifile<input_opt.size();++ifile){</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>       imgReader[ifile].open(input_opt[ifile]);</div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>     }</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>     <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>       cerr << errorstring << <span class="stringliteral">" "</span> << input_opt[ifile] << endl;</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>     }</div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span> </div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>     <span class="comment">//todo: must be in init part only?</span></div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>     <span class="keywordflow">if</span>(colorTable_opt.empty())</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>       <span class="keywordflow">if</span>(imgReader[ifile].getColorTable())</div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>     theColorTable=(imgReader[ifile].getColorTable()->Clone());</div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>     <span class="keywordflow">if</span>(projection_opt.empty())</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>       theProjection=imgReader[ifile].getProjection();</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>     <span class="keywordflow">if</span>(option_opt.findSubstring(<span class="stringliteral">"INTERLEAVE="</span>)==option_opt.end()){</div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>       <span class="keywordtype">string</span> theInterleave=<span class="stringliteral">"INTERLEAVE="</span>;</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>       theInterleave+=imgReader[ifile].getInterleave();</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>       option_opt.push_back(theInterleave);</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>     }</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span> </div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>     <span class="keywordflow">if</span>((ulx_opt[0]||uly_opt[0]||lrx_opt[0]||lry_opt[0])&&(!imgReader[ifile].covers(ulx_opt[0],uly_opt[0],lrx_opt[0],lry_opt[0]))){</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>     cout << input_opt[ifile] << <span class="stringliteral">" not within bounding box, skipping..."</span> << endl;</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>       <span class="comment">// imgReader.close();</span></div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>     }</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>     <span class="keywordtype">double</span> theULX, theULY, theLRX, theLRY;</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>     imgReader[ifile].getBoundingBox(theULX,theULY,theLRX,theLRY);</div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>     <span class="keywordflow">if</span>(theLRY>theULY){</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>       cerr << <span class="stringliteral">"Error: "</span> << input_opt[ifile] << <span class="stringliteral">" is not georeferenced, only referenced images are supported for pkcomposite "</span> << endl;</div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>       exit(1);</div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>     }</div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>       cout << <span class="stringliteral">"Bounding Box (ULX ULY LRX LRY): "</span> << fixed << setprecision(6) << theULX << <span class="stringliteral">" "</span> << theULY << <span class="stringliteral">" "</span> << theLRX << <span class="stringliteral">" "</span> << theLRY << endl;</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>     <span class="keywordflow">if</span>(!init){</div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span>       <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>         <span class="keywordflow">switch</span>(cruleMap[crule_opt[0]]){</div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>         <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>         <span class="keywordflow">case</span>(crule::overwrite):</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span>           cout << <span class="stringliteral">"Composite rule: overwrite"</span> << endl;</div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span>         <span class="keywordflow">case</span>(crule::maxndvi):</div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>           cout << <span class="stringliteral">"Composite rule: max ndvi"</span> << endl;</div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>         <span class="keywordflow">case</span>(crule::maxband):</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>           cout << <span class="stringliteral">"Composite rule: max band"</span> << endl;</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>         <span class="keywordflow">case</span>(crule::minband):</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>           cout << <span class="stringliteral">"Composite rule: min band"</span> << endl;</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>         <span class="keywordflow">case</span>(crule::validband):</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span>           cout << <span class="stringliteral">"Composite rule: valid band"</span> << endl;</div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>         <span class="keywordflow">case</span>(crule::mean):</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span>           cout << <span class="stringliteral">"Composite rule: mean value"</span> << endl;</div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span>         <span class="keywordflow">case</span>(crule::mode):</div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span>           cout << <span class="stringliteral">"Composite rule: max voting (only for byte images)"</span> << endl;</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span>         <span class="keywordflow">case</span>(crule::median):</div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span>           cout << <span class="stringliteral">"Composite rule: median"</span> << endl;</div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span>         <span class="keywordflow">case</span>(crule::stdev):</div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span>           cout << <span class="stringliteral">"Composite rule: stdev"</span> << endl;</div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span>         <span class="keywordflow">case</span>(crule::sum):</div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span>           cout << <span class="stringliteral">"Composite rule: sum"</span> << endl;</div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>         <span class="keywordflow">case</span>(crule::minallbands):</div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span>           cout << <span class="stringliteral">"Composite rule: minallbands"</span> << endl;</div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span>         <span class="keywordflow">case</span>(crule::maxallbands):</div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span>           cout << <span class="stringliteral">"Composite rule: maxallbands"</span> << endl;</div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span>         }</div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span>       }</div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span>       <span class="keywordflow">if</span>(band_opt.size()){</div>
-<div class="line"><a name="l00445"></a><span class="lineno">  445</span>     nband=band_opt.size();</div>
-<div class="line"><a name="l00446"></a><span class="lineno">  446</span>         bands.resize(band_opt.size());</div>
-<div class="line"><a name="l00447"></a><span class="lineno">  447</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<band_opt.size();++iband){</div>
-<div class="line"><a name="l00448"></a><span class="lineno">  448</span>           bands[iband]=band_opt[iband];</div>
-<div class="line"><a name="l00449"></a><span class="lineno">  449</span>           assert(bands[iband]<imgReader[ifile].nrOfBand());</div>
-<div class="line"><a name="l00450"></a><span class="lineno">  450</span>         }</div>
-<div class="line"><a name="l00451"></a><span class="lineno">  451</span>       }</div>
-<div class="line"><a name="l00452"></a><span class="lineno">  452</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00453"></a><span class="lineno">  453</span>     nband=imgReader[ifile].nrOfBand();</div>
-<div class="line"><a name="l00454"></a><span class="lineno">  454</span>         bands.resize(nband);</div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband)</div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</span>           bands[iband]=iband;</div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span>       }</div>
-<div class="line"><a name="l00458"></a><span class="lineno">  458</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<bndnodata_opt.size();++iband){</div>
-<div class="line"><a name="l00459"></a><span class="lineno">  459</span>         assert(bndnodata_opt[iband]>=0&&bndnodata_opt[iband]<nband);</div>
-<div class="line"><a name="l00460"></a><span class="lineno">  460</span>       }</div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span>       <span class="comment">//if output type not set, get type from input image</span></div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span>       <span class="keywordflow">if</span>(theType==GDT_Unknown){</div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span>         theType=imgReader[ifile].getDataType();</div>
-<div class="line"><a name="l00464"></a><span class="lineno">  464</span>         <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span>           cout << <span class="stringliteral">"Using data type from input image: "</span> << GDALGetDataTypeName(theType) << endl;</div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>       }</div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span> </div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span>       <span class="keywordflow">if</span>(oformat_opt.size())<span class="comment">//default</span></div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span>         imageType=oformat_opt[0];</div>
-<div class="line"><a name="l00470"></a><span class="lineno">  470</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00471"></a><span class="lineno">  471</span>         imageType=imgReader[ifile].getImageType();</div>
-<div class="line"><a name="l00472"></a><span class="lineno">  472</span> </div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span>       <span class="comment">// dataType=imgReader.getDataType(0);</span></div>
-<div class="line"><a name="l00474"></a><span class="lineno">  474</span>       <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span>         cout << <span class="stringliteral">"type of data for "</span> << input_opt[ifile] << <span class="stringliteral">": "</span> << theType << endl;</div>
-<div class="line"><a name="l00476"></a><span class="lineno">  476</span>         cout << <span class="stringliteral">"nband: "</span> << nband << endl;</div>
-<div class="line"><a name="l00477"></a><span class="lineno">  477</span>       }</div>
-<div class="line"><a name="l00478"></a><span class="lineno">  478</span>       </div>
-<div class="line"><a name="l00479"></a><span class="lineno">  479</span>       maxLRX=theLRX;</div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span>       maxULY=theULY;</div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span>       minULX=theULX;</div>
-<div class="line"><a name="l00482"></a><span class="lineno">  482</span>       minLRY=theLRY;</div>
-<div class="line"><a name="l00483"></a><span class="lineno">  483</span>       <span class="keywordflow">if</span>(dx_opt.size())</div>
-<div class="line"><a name="l00484"></a><span class="lineno">  484</span>     dx=dx_opt[0];</div>
-<div class="line"><a name="l00485"></a><span class="lineno">  485</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00486"></a><span class="lineno">  486</span>         dx=imgReader[ifile].getDeltaX();</div>
-<div class="line"><a name="l00487"></a><span class="lineno">  487</span>       <span class="keywordflow">if</span>(dy_opt.size())</div>
-<div class="line"><a name="l00488"></a><span class="lineno">  488</span>     dy=dy_opt[0];</div>
-<div class="line"><a name="l00489"></a><span class="lineno">  489</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span>         dy=imgReader[ifile].getDeltaY();</div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span>       <span class="comment">// imgReader.getMagicPixel(magic_x,magic_y);</span></div>
-<div class="line"><a name="l00492"></a><span class="lineno">  492</span>       init=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00493"></a><span class="lineno">  493</span>     }</div>
-<div class="line"><a name="l00494"></a><span class="lineno">  494</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00495"></a><span class="lineno">  495</span>       <span class="comment">//convert bounding box to magic coordinates</span></div>
-<div class="line"><a name="l00496"></a><span class="lineno">  496</span>       <span class="comment">//check uniformity magic pixel</span></div>
-<div class="line"><a name="l00497"></a><span class="lineno">  497</span>       <span class="comment">// double test_x,test_y;</span></div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span>       <span class="comment">// imgReader.getMagicPixel(test_x,test_y);</span></div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span>       <span class="comment">// if(verbose_opt[0]){</span></div>
-<div class="line"><a name="l00500"></a><span class="lineno">  500</span>       <span class="comment">//   cout << "magic_x, magic_y: " << magic_x << ", " << magic_y << endl;</span></div>
-<div class="line"><a name="l00501"></a><span class="lineno">  501</span>       <span class="comment">// }</span></div>
-<div class="line"><a name="l00502"></a><span class="lineno">  502</span>       <span class="comment">// assert(magic_x==test_x);</span></div>
-<div class="line"><a name="l00503"></a><span class="lineno">  503</span>       <span class="comment">// assert(magic_y==test_y);</span></div>
-<div class="line"><a name="l00504"></a><span class="lineno">  504</span>       maxLRX=(theLRX>maxLRX)?theLRX:maxLRX;</div>
-<div class="line"><a name="l00505"></a><span class="lineno">  505</span>       maxULY=(theULY>maxULY)?theULY:maxULY;</div>
-<div class="line"><a name="l00506"></a><span class="lineno">  506</span>       minULX=(theULX<minULX)?theULX:minULX;</div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span>       minLRY=(theLRY<minLRY)?theLRY:minLRY;</div>
-<div class="line"><a name="l00508"></a><span class="lineno">  508</span>     }</div>
-<div class="line"><a name="l00509"></a><span class="lineno">  509</span>     <span class="comment">// imgReader.close();</span></div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span>   }</div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00512"></a><span class="lineno">  512</span>     cout << <span class="stringliteral">"bounding box input images (ULX ULY LRX LRY): "</span> << fixed << setprecision(6) << minULX << <span class="stringliteral">" "</span> << maxULY << <span class="stringliteral">" "</span> << maxLRX << <span class="stringliteral">" "</span> << minLRY << endl;</div>
-<div class="line"><a name="l00513"></a><span class="lineno">  513</span>   <span class="keywordflow">if</span>(ulx_opt[0]||uly_opt[0]||lrx_opt[0]||lry_opt[0]){</div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span>     maxLRX=lrx_opt[0];</div>
-<div class="line"><a name="l00515"></a><span class="lineno">  515</span>     maxULY=uly_opt[0];</div>
-<div class="line"><a name="l00516"></a><span class="lineno">  516</span>     minULX=ulx_opt[0];</div>
-<div class="line"><a name="l00517"></a><span class="lineno">  517</span>     minLRY=lry_opt[0];</div>
-<div class="line"><a name="l00518"></a><span class="lineno">  518</span>   }</div>
-<div class="line"><a name="l00519"></a><span class="lineno">  519</span>   </div>
-<div class="line"><a name="l00520"></a><span class="lineno">  520</span>   <span class="keywordtype">bool</span> forceEUgrid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00521"></a><span class="lineno">  521</span>   <span class="keywordflow">if</span>(projection_opt.size())</div>
-<div class="line"><a name="l00522"></a><span class="lineno">  522</span>     forceEUgrid=(!(projection_opt[0].compare(<span class="stringliteral">"EPSG:3035"</span>))||!(projection_opt[0].compare(<span class="stringliteral">"EPSG:3035"</span>))||projection_opt[0].find(<span class="stringliteral">"ETRS-LAEA"</span>)!=string::npos);</div>
-<div class="line"><a name="l00523"></a><span class="lineno">  523</span>   <span class="keywordflow">if</span>(forceEUgrid){</div>
-<div class="line"><a name="l00524"></a><span class="lineno">  524</span>     <span class="comment">//force to LAEA grid</span></div>
-<div class="line"><a name="l00525"></a><span class="lineno">  525</span>     minULX=floor(minULX);</div>
-<div class="line"><a name="l00526"></a><span class="lineno">  526</span>     minULX-=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(minULX)%(static_cast<int>(dx));</div>
-<div class="line"><a name="l00527"></a><span class="lineno">  527</span>     maxULY=ceil(maxULY);</div>
-<div class="line"><a name="l00528"></a><span class="lineno">  528</span>     <span class="keywordflow">if</span>(static_cast<int>(maxULY)%static_cast<int>(dy))</div>
-<div class="line"><a name="l00529"></a><span class="lineno">  529</span>       maxULY+=dy;</div>
-<div class="line"><a name="l00530"></a><span class="lineno">  530</span>     maxULY-=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(maxULY)%(static_cast<int>(dy));</div>
-<div class="line"><a name="l00531"></a><span class="lineno">  531</span>     maxLRX=ceil(maxLRX);</div>
-<div class="line"><a name="l00532"></a><span class="lineno">  532</span>     <span class="keywordflow">if</span>(static_cast<int>(maxLRX)%static_cast<int>(dx))</div>
-<div class="line"><a name="l00533"></a><span class="lineno">  533</span>       maxLRX+=dx;</div>
-<div class="line"><a name="l00534"></a><span class="lineno">  534</span>     maxLRX-=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(maxLRX)%(static_cast<int>(dx));</div>
-<div class="line"><a name="l00535"></a><span class="lineno">  535</span>     minLRY=floor(minLRY);</div>
-<div class="line"><a name="l00536"></a><span class="lineno">  536</span>     minLRY-=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(minLRY)%(static_cast<int>(dy));</div>
-<div class="line"><a name="l00537"></a><span class="lineno">  537</span>   }</div>
-<div class="line"><a name="l00538"></a><span class="lineno">  538</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(align_opt[0]){</div>
-<div class="line"><a name="l00539"></a><span class="lineno">  539</span>     <span class="keywordflow">if</span>(minULX>imgReader[0].getUlx())</div>
-<div class="line"><a name="l00540"></a><span class="lineno">  540</span>       minULX-=fmod(minULX-imgReader[0].getUlx(),dx);</div>
-<div class="line"><a name="l00541"></a><span class="lineno">  541</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(minULX<imgReader[0].getUlx())</div>
-<div class="line"><a name="l00542"></a><span class="lineno">  542</span>       minULX+=fmod(imgReader[0].getUlx()-minULX,dx)-dx;</div>
-<div class="line"><a name="l00543"></a><span class="lineno">  543</span>     <span class="keywordflow">if</span>(maxLRX<imgReader[0].getLrx())</div>
-<div class="line"><a name="l00544"></a><span class="lineno">  544</span>       maxLRX+=fmod(imgReader[0].getLrx()-maxLRX,dx);</div>
-<div class="line"><a name="l00545"></a><span class="lineno">  545</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(maxLRX>imgReader[0].getLrx())</div>
-<div class="line"><a name="l00546"></a><span class="lineno">  546</span>       maxLRX-=fmod(maxLRX-imgReader[0].getLrx(),dx)+dx;</div>
-<div class="line"><a name="l00547"></a><span class="lineno">  547</span>     <span class="keywordflow">if</span>(minLRY>imgReader[0].getLry())</div>
-<div class="line"><a name="l00548"></a><span class="lineno">  548</span>       minLRY-=fmod(minLRY-imgReader[0].getLry(),dy);</div>
-<div class="line"><a name="l00549"></a><span class="lineno">  549</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(minLRY<imgReader[0].getLry())</div>
-<div class="line"><a name="l00550"></a><span class="lineno">  550</span>       minLRY+=fmod(imgReader[0].getLry()-minLRY,dy)-dy;</div>
-<div class="line"><a name="l00551"></a><span class="lineno">  551</span>     <span class="keywordflow">if</span>(maxULY<imgReader[0].getUly())</div>
-<div class="line"><a name="l00552"></a><span class="lineno">  552</span>       maxULY+=fmod(imgReader[0].getUly()-maxULY,dy);</div>
-<div class="line"><a name="l00553"></a><span class="lineno">  553</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(maxULY>imgReader[0].getUly())</div>
-<div class="line"><a name="l00554"></a><span class="lineno">  554</span>       maxULY-=fmod(maxULY-imgReader[0].getUly(),dy)+dy;</div>
-<div class="line"><a name="l00555"></a><span class="lineno">  555</span>   }</div>
-<div class="line"><a name="l00556"></a><span class="lineno">  556</span> </div>
-<div class="line"><a name="l00557"></a><span class="lineno">  557</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00558"></a><span class="lineno">  558</span>     cout << <span class="stringliteral">"bounding box composite image (ULX ULY LRX LRY): "</span> << fixed << setprecision(6) << minULX << <span class="stringliteral">" "</span> << maxULY << <span class="stringliteral">" "</span> << maxLRX << <span class="stringliteral">" "</span> << minLRY << endl;</div>
-<div class="line"><a name="l00559"></a><span class="lineno">  559</span>   <span class="comment">//initialize image</span></div>
-<div class="line"><a name="l00560"></a><span class="lineno">  560</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00561"></a><span class="lineno">  561</span>     cout << <span class="stringliteral">"initializing composite image..."</span> << endl;</div>
-<div class="line"><a name="l00562"></a><span class="lineno">  562</span> <span class="comment">//   double dcol=(maxLRX-minULX+dx-1)/dx;</span></div>
-<div class="line"><a name="l00563"></a><span class="lineno">  563</span> <span class="comment">//   double drow=(maxULY-minLRY+dy-1)/dy;</span></div>
-<div class="line"><a name="l00564"></a><span class="lineno">  564</span> <span class="comment">//   int ncol=static_cast<int>(dcol);</span></div>
-<div class="line"><a name="l00565"></a><span class="lineno">  565</span> <span class="comment">//   int nrow=static_cast<int>(drow);</span></div>
-<div class="line"><a name="l00566"></a><span class="lineno">  566</span> </div>
-<div class="line"><a name="l00567"></a><span class="lineno">  567</span>   <span class="keywordtype">int</span> ncol=ceil((maxLRX-minULX)/dx);</div>
-<div class="line"><a name="l00568"></a><span class="lineno">  568</span>   <span class="keywordtype">int</span> nrow=ceil((maxULY-minLRY)/dy);</div>
-<div class="line"><a name="l00569"></a><span class="lineno">  569</span> </div>
-<div class="line"><a name="l00570"></a><span class="lineno">  570</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span>     cout << <span class="stringliteral">"composite image dim (nrow x ncol): "</span> << nrow << <span class="stringliteral">" x "</span> << ncol << endl;</div>
-<div class="line"><a name="l00572"></a><span class="lineno">  572</span>   <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> imgWriter;</div>
-<div class="line"><a name="l00573"></a><span class="lineno">  573</span>   <span class="keywordflow">while</span>(weight_opt.size()<input_opt.size())</div>
-<div class="line"><a name="l00574"></a><span class="lineno">  574</span>     weight_opt.push_back(weight_opt[0]);</div>
-<div class="line"><a name="l00575"></a><span class="lineno">  575</span>   <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00576"></a><span class="lineno">  576</span>     std::cout << weight_opt << std::endl;</div>
-<div class="line"><a name="l00577"></a><span class="lineno">  577</span>   }</div>
-<div class="line"><a name="l00578"></a><span class="lineno">  578</span>   <span class="keywordflow">if</span>(cruleMap[crule_opt[0]]==crule::mode){</div>
-<div class="line"><a name="l00579"></a><span class="lineno">  579</span>     nwriteBand=(file_opt[0])? class_opt.size()+1:class_opt.size();</div>
-<div class="line"><a name="l00580"></a><span class="lineno">  580</span>   }</div>
-<div class="line"><a name="l00581"></a><span class="lineno">  581</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00582"></a><span class="lineno">  582</span>     nwriteBand=(file_opt[0])? bands.size()+1:bands.size();</div>
-<div class="line"><a name="l00583"></a><span class="lineno">  583</span>   <span class="keywordflow">if</span>(output_opt.empty()){</div>
-<div class="line"><a name="l00584"></a><span class="lineno">  584</span>     std::cerr << <span class="stringliteral">"No output file provided (use option -o). Use --help for help information"</span> << std::endl;</div>
-<div class="line"><a name="l00585"></a><span class="lineno">  585</span>     exit(0);</div>
-<div class="line"><a name="l00586"></a><span class="lineno">  586</span>   }</div>
-<div class="line"><a name="l00587"></a><span class="lineno">  587</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00588"></a><span class="lineno">  588</span>     cout << <span class="stringliteral">"open output image "</span> << output_opt[0] << <span class="stringliteral">" with "</span> << nwriteBand << <span class="stringliteral">" bands"</span> << endl << flush;</div>
-<div class="line"><a name="l00589"></a><span class="lineno">  589</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00590"></a><span class="lineno">  590</span>     imgWriter.open(output_opt[0],ncol,nrow,nwriteBand,theType,imageType,option_opt);</div>
-<div class="line"><a name="l00591"></a><span class="lineno">  591</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nwriteBand;++iband)</div>
-<div class="line"><a name="l00592"></a><span class="lineno">  592</span>       imgWriter.GDALSetNoDataValue(dstnodata_opt[0],iband);</div>
-<div class="line"><a name="l00593"></a><span class="lineno">  593</span>   }</div>
-<div class="line"><a name="l00594"></a><span class="lineno">  594</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> error){</div>
-<div class="line"><a name="l00595"></a><span class="lineno">  595</span>     cout << error << endl;</div>
-<div class="line"><a name="l00596"></a><span class="lineno">  596</span>   }</div>
-<div class="line"><a name="l00597"></a><span class="lineno">  597</span>   <span class="keywordflow">if</span>(description_opt.size())</div>
-<div class="line"><a name="l00598"></a><span class="lineno">  598</span>     imgWriter.setImageDescription(description_opt[0]);</div>
-<div class="line"><a name="l00599"></a><span class="lineno">  599</span>   <span class="keywordtype">double</span> gt[6];</div>
-<div class="line"><a name="l00600"></a><span class="lineno">  600</span>   gt[0]=minULX;</div>
-<div class="line"><a name="l00601"></a><span class="lineno">  601</span>   gt[1]=dx;</div>
-<div class="line"><a name="l00602"></a><span class="lineno">  602</span>   gt[2]=0;</div>
-<div class="line"><a name="l00603"></a><span class="lineno">  603</span>   gt[3]=maxULY;</div>
-<div class="line"><a name="l00604"></a><span class="lineno">  604</span>   gt[4]=0;</div>
-<div class="line"><a name="l00605"></a><span class="lineno">  605</span>   gt[5]=-dy;</div>
-<div class="line"><a name="l00606"></a><span class="lineno">  606</span>   imgWriter.setGeoTransform(gt);</div>
-<div class="line"><a name="l00607"></a><span class="lineno">  607</span>   <span class="comment">// imgWriter.setGeoTransform(minULX,maxULY,dx,dy,0,0);</span></div>
-<div class="line"><a name="l00608"></a><span class="lineno">  608</span>   <span class="keywordflow">if</span>(projection_opt.size()){</div>
-<div class="line"><a name="l00609"></a><span class="lineno">  609</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00610"></a><span class="lineno">  610</span>       cout << <span class="stringliteral">"projection: "</span> << projection_opt[0] << endl;</div>
-<div class="line"><a name="l00611"></a><span class="lineno">  611</span>     imgWriter.setProjectionProj4(projection_opt[0]);</div>
-<div class="line"><a name="l00612"></a><span class="lineno">  612</span>   }</div>
-<div class="line"><a name="l00613"></a><span class="lineno">  613</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(theProjection!=<span class="stringliteral">""</span>){</div>
-<div class="line"><a name="l00614"></a><span class="lineno">  614</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00615"></a><span class="lineno">  615</span>       cout << <span class="stringliteral">"projection: "</span> << theProjection << endl;</div>
-<div class="line"><a name="l00616"></a><span class="lineno">  616</span>     imgWriter.setProjection(theProjection);</div>
-<div class="line"><a name="l00617"></a><span class="lineno">  617</span>   }</div>
-<div class="line"><a name="l00618"></a><span class="lineno">  618</span>   <span class="keywordflow">if</span>(imgWriter.getDataType()==GDT_Byte){</div>
-<div class="line"><a name="l00619"></a><span class="lineno">  619</span>     <span class="keywordflow">if</span>(colorTable_opt.size()){</div>
-<div class="line"><a name="l00620"></a><span class="lineno">  620</span>       <span class="keywordflow">if</span>(colorTable_opt[0]!=<span class="stringliteral">"none"</span>)</div>
-<div class="line"><a name="l00621"></a><span class="lineno">  621</span>     imgWriter.setColorTable(colorTable_opt[0]);</div>
-<div class="line"><a name="l00622"></a><span class="lineno">  622</span>     }</div>
-<div class="line"><a name="l00623"></a><span class="lineno">  623</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(theColorTable)</div>
-<div class="line"><a name="l00624"></a><span class="lineno">  624</span>       imgWriter.setColorTable(theColorTable);</div>
-<div class="line"><a name="l00625"></a><span class="lineno">  625</span>   }</div>
-<div class="line"><a name="l00626"></a><span class="lineno">  626</span> </div>
-<div class="line"><a name="l00627"></a><span class="lineno">  627</span>   <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> maskWriter;</div>
-<div class="line"><a name="l00628"></a><span class="lineno">  628</span>   <span class="keywordflow">if</span>(extent_opt.size()&&cut_opt[0]){</div>
-<div class="line"><a name="l00629"></a><span class="lineno">  629</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00630"></a><span class="lineno">  630</span>       maskWriter.open(<span class="stringliteral">"/vsimem/mask.tif"</span>,ncol,nrow,1,GDT_Float32,<span class="stringliteral">"GTiff"</span>,option_opt);</div>
-<div class="line"><a name="l00631"></a><span class="lineno">  631</span>       <span class="keywordtype">double</span> gt[6];</div>
-<div class="line"><a name="l00632"></a><span class="lineno">  632</span>       gt[0]=minULX;</div>
-<div class="line"><a name="l00633"></a><span class="lineno">  633</span>       gt[1]=dx;</div>
-<div class="line"><a name="l00634"></a><span class="lineno">  634</span>       gt[2]=0;</div>
-<div class="line"><a name="l00635"></a><span class="lineno">  635</span>       gt[3]=maxULY;</div>
-<div class="line"><a name="l00636"></a><span class="lineno">  636</span>       gt[4]=0;</div>
-<div class="line"><a name="l00637"></a><span class="lineno">  637</span>       gt[5]=-dy;</div>
-<div class="line"><a name="l00638"></a><span class="lineno">  638</span>       maskWriter.setGeoTransform(gt);</div>
-<div class="line"><a name="l00639"></a><span class="lineno">  639</span>       <span class="keywordflow">if</span>(projection_opt.size())</div>
-<div class="line"><a name="l00640"></a><span class="lineno">  640</span>     maskWriter.setProjectionProj4(projection_opt[0]);</div>
-<div class="line"><a name="l00641"></a><span class="lineno">  641</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(theProjection!=<span class="stringliteral">""</span>){</div>
-<div class="line"><a name="l00642"></a><span class="lineno">  642</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00643"></a><span class="lineno">  643</span>       cout << <span class="stringliteral">"projection: "</span> << theProjection << endl;</div>
-<div class="line"><a name="l00644"></a><span class="lineno">  644</span>     maskWriter.setProjection(theProjection);</div>
-<div class="line"><a name="l00645"></a><span class="lineno">  645</span>       }</div>
-<div class="line"><a name="l00646"></a><span class="lineno">  646</span>     </div>
-<div class="line"><a name="l00647"></a><span class="lineno">  647</span>       <span class="comment">//todo: handle multiple extent options</span></div>
-<div class="line"><a name="l00648"></a><span class="lineno">  648</span>       vector<double> burnValues(1,1);<span class="comment">//burn value is 1 (single band)</span></div>
-<div class="line"><a name="l00649"></a><span class="lineno">  649</span>       maskWriter.rasterizeOgr(extentReader,burnValues);</div>
-<div class="line"><a name="l00650"></a><span class="lineno">  650</span>       maskWriter.close();</div>
-<div class="line"><a name="l00651"></a><span class="lineno">  651</span>     }</div>
-<div class="line"><a name="l00652"></a><span class="lineno">  652</span>     <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> error){</div>
-<div class="line"><a name="l00653"></a><span class="lineno">  653</span>       cerr << error << std::endl;</div>
-<div class="line"><a name="l00654"></a><span class="lineno">  654</span>       exit(2);</div>
-<div class="line"><a name="l00655"></a><span class="lineno">  655</span>     }</div>
-<div class="line"><a name="l00656"></a><span class="lineno">  656</span>     <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l00657"></a><span class="lineno">  657</span>       cerr << <span class="stringliteral">"error caught"</span> << std::endl;</div>
-<div class="line"><a name="l00658"></a><span class="lineno">  658</span>       exit(1);</div>
-<div class="line"><a name="l00659"></a><span class="lineno">  659</span>     }</div>
-<div class="line"><a name="l00660"></a><span class="lineno">  660</span>     <span class="comment">//todo: support multiple masks</span></div>
-<div class="line"><a name="l00661"></a><span class="lineno">  661</span>     mask_opt.clear();</div>
-<div class="line"><a name="l00662"></a><span class="lineno">  662</span>     mask_opt.push_back(<span class="stringliteral">"/vsimem/mask.tif"</span>);</div>
-<div class="line"><a name="l00663"></a><span class="lineno">  663</span>   }</div>
-<div class="line"><a name="l00664"></a><span class="lineno">  664</span>   <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> maskReader;</div>
-<div class="line"><a name="l00665"></a><span class="lineno">  665</span>   <span class="keywordflow">if</span>(mask_opt.size()){</div>
-<div class="line"><a name="l00666"></a><span class="lineno">  666</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00667"></a><span class="lineno">  667</span>       <span class="keywordflow">if</span>(verbose_opt[0]>=1)</div>
-<div class="line"><a name="l00668"></a><span class="lineno">  668</span>     std::cout << <span class="stringliteral">"opening mask image file "</span> << mask_opt[0] << std::endl;</div>
-<div class="line"><a name="l00669"></a><span class="lineno">  669</span>       maskReader.open(mask_opt[0]);</div>
-<div class="line"><a name="l00670"></a><span class="lineno">  670</span>       <span class="keywordflow">if</span>(mskband_opt[0]>=maskReader.nrOfBand()){</div>
-<div class="line"><a name="l00671"></a><span class="lineno">  671</span>     <span class="keywordtype">string</span> errorString=<span class="stringliteral">"Error: illegal mask band"</span>;</div>
-<div class="line"><a name="l00672"></a><span class="lineno">  672</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00673"></a><span class="lineno">  673</span>       }</div>
-<div class="line"><a name="l00674"></a><span class="lineno">  674</span>     }</div>
-<div class="line"><a name="l00675"></a><span class="lineno">  675</span>     <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> error){</div>
-<div class="line"><a name="l00676"></a><span class="lineno">  676</span>       cerr << error << std::endl;</div>
-<div class="line"><a name="l00677"></a><span class="lineno">  677</span>       exit(2);</div>
-<div class="line"><a name="l00678"></a><span class="lineno">  678</span>     }</div>
-<div class="line"><a name="l00679"></a><span class="lineno">  679</span>     <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l00680"></a><span class="lineno">  680</span>       cerr << <span class="stringliteral">"error caught"</span> << std::endl;</div>
-<div class="line"><a name="l00681"></a><span class="lineno">  681</span>       exit(1);</div>
-<div class="line"><a name="l00682"></a><span class="lineno">  682</span>     }</div>
-<div class="line"><a name="l00683"></a><span class="lineno">  683</span>   }</div>
-<div class="line"><a name="l00684"></a><span class="lineno">  684</span> </div>
-<div class="line"><a name="l00685"></a><span class="lineno">  685</span>   <span class="comment">//create composite image</span></div>
-<div class="line"><a name="l00686"></a><span class="lineno">  686</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00687"></a><span class="lineno">  687</span>      cout << <span class="stringliteral">"creating composite image"</span> << endl;</div>
-<div class="line"><a name="l00688"></a><span class="lineno">  688</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> writeBuffer(nband,imgWriter.nrOfCol());</div>
-<div class="line"><a name="l00689"></a><span class="lineno">  689</span>   vector<short> fileBuffer(ncol);<span class="comment">//holds the number of used files</span></div>
-<div class="line"><a name="l00690"></a><span class="lineno">  690</span>   <a class="code" href="classVector2d.html">Vector2d<short></a> maxBuffer;<span class="comment">//buffer used for maximum voting</span></div>
-<div class="line"><a name="l00691"></a><span class="lineno">  691</span>   <span class="comment">// Vector2d<double> readBuffer(nband);</span></div>
-<div class="line"><a name="l00692"></a><span class="lineno">  692</span>   vector<Vector2d<double> > readBuffer(input_opt.size());</div>
-<div class="line"><a name="l00693"></a><span class="lineno">  693</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ifile=0;ifile<input_opt.size();++ifile)</div>
-<div class="line"><a name="l00694"></a><span class="lineno">  694</span>     readBuffer[ifile].resize(imgReader[ifile].nrOfBand());</div>
-<div class="line"><a name="l00695"></a><span class="lineno">  695</span>   <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00696"></a><span class="lineno">  696</span>   <span class="keywordflow">if</span>(cruleMap[crule_opt[0]]==crule::maxndvi)<span class="comment">//ndvi</span></div>
-<div class="line"><a name="l00697"></a><span class="lineno">  697</span>     assert(ruleBand_opt.size()==2);</div>
-<div class="line"><a name="l00698"></a><span class="lineno">  698</span>   <span class="keywordflow">if</span>(cruleMap[crule_opt[0]]==crule::mode){<span class="comment">//max voting</span></div>
-<div class="line"><a name="l00699"></a><span class="lineno">  699</span>     maxBuffer.resize(imgWriter.nrOfCol(),256);<span class="comment">//use only byte images for max voting</span></div>
-<div class="line"><a name="l00700"></a><span class="lineno">  700</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<class_opt.size();++iclass)</div>
-<div class="line"><a name="l00701"></a><span class="lineno">  701</span>       assert(class_opt[iclass]<maxBuffer.size());</div>
-<div class="line"><a name="l00702"></a><span class="lineno">  702</span>   }</div>
-<div class="line"><a name="l00703"></a><span class="lineno">  703</span>   <span class="keywordtype">int</span> jb=0;</div>
-<div class="line"><a name="l00704"></a><span class="lineno">  704</span>   <span class="keywordtype">double</span> readRow=0;</div>
-<div class="line"><a name="l00705"></a><span class="lineno">  705</span>   <span class="keywordtype">double</span> readCol=0;</div>
-<div class="line"><a name="l00706"></a><span class="lineno">  706</span>   <span class="keywordtype">double</span> lowerCol=0;</div>
-<div class="line"><a name="l00707"></a><span class="lineno">  707</span>   <span class="keywordtype">double</span> upperCol=0;</div>
-<div class="line"><a name="l00708"></a><span class="lineno">  708</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00709"></a><span class="lineno">  709</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00710"></a><span class="lineno">  710</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00711"></a><span class="lineno">  711</span>   <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l00712"></a><span class="lineno">  712</span>   pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00713"></a><span class="lineno">  713</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<imgWriter.nrOfRow();++irow){</div>
-<div class="line"><a name="l00714"></a><span class="lineno">  714</span>     vector<float> lineMask;</div>
-<div class="line"><a name="l00715"></a><span class="lineno">  715</span>     <a class="code" href="classVector2d.html">Vector2d< vector<double></a> > storeBuffer;</div>
-<div class="line"><a name="l00716"></a><span class="lineno">  716</span>     vector<bool> writeValid(ncol);</div>
-<div class="line"><a name="l00717"></a><span class="lineno">  717</span> </div>
-<div class="line"><a name="l00718"></a><span class="lineno">  718</span>     <span class="comment">//convert irow to geo</span></div>
-<div class="line"><a name="l00719"></a><span class="lineno">  719</span>     <span class="keywordtype">double</span> x=0;</div>
-<div class="line"><a name="l00720"></a><span class="lineno">  720</span>     <span class="keywordtype">double</span> y=0;</div>
-<div class="line"><a name="l00721"></a><span class="lineno">  721</span>     imgWriter.image2geo(0,irow,x,y);</div>
-<div class="line"><a name="l00722"></a><span class="lineno">  722</span> </div>
-<div class="line"><a name="l00723"></a><span class="lineno">  723</span> </div>
-<div class="line"><a name="l00724"></a><span class="lineno">  724</span>     <span class="keywordflow">if</span>(cruleMap[crule_opt[0]]==crule::mean ||</div>
-<div class="line"><a name="l00725"></a><span class="lineno">  725</span>        cruleMap[crule_opt[0]]==crule::median ||</div>
-<div class="line"><a name="l00726"></a><span class="lineno">  726</span>        cruleMap[crule_opt[0]]==crule::sum ||</div>
-<div class="line"><a name="l00727"></a><span class="lineno">  727</span>        cruleMap[crule_opt[0]]==crule::minallbands ||</div>
-<div class="line"><a name="l00728"></a><span class="lineno">  728</span>        cruleMap[crule_opt[0]]==crule::maxallbands ||</div>
-<div class="line"><a name="l00729"></a><span class="lineno">  729</span>        cruleMap[crule_opt[0]]==crule::stdev)</div>
-<div class="line"><a name="l00730"></a><span class="lineno">  730</span>       storeBuffer.resize(nband,ncol);</div>
-<div class="line"><a name="l00731"></a><span class="lineno">  731</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<imgWriter.nrOfCol();++icol){</div>
-<div class="line"><a name="l00732"></a><span class="lineno">  732</span>       writeValid[icol]=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00733"></a><span class="lineno">  733</span>       fileBuffer[icol]=0;</div>
-<div class="line"><a name="l00734"></a><span class="lineno">  734</span>       <span class="keywordflow">if</span>(cruleMap[crule_opt[0]]==crule::mode){<span class="comment">//max voting</span></div>
-<div class="line"><a name="l00735"></a><span class="lineno">  735</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<256;++iclass)</div>
-<div class="line"><a name="l00736"></a><span class="lineno">  736</span>           maxBuffer[icol][iclass]=0;</div>
-<div class="line"><a name="l00737"></a><span class="lineno">  737</span>       }</div>
-<div class="line"><a name="l00738"></a><span class="lineno">  738</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00739"></a><span class="lineno">  739</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband)</div>
-<div class="line"><a name="l00740"></a><span class="lineno">  740</span>           writeBuffer[iband][icol]=dstnodata_opt[0];</div>
-<div class="line"><a name="l00741"></a><span class="lineno">  741</span>       }</div>
-<div class="line"><a name="l00742"></a><span class="lineno">  742</span>     }</div>
-<div class="line"><a name="l00743"></a><span class="lineno">  743</span> </div>
-<div class="line"><a name="l00744"></a><span class="lineno">  744</span>     <span class="keywordtype">double</span> oldRowMask=-1;<span class="comment">//keep track of row mask to optimize number of line readings</span></div>
-<div class="line"><a name="l00745"></a><span class="lineno">  745</span> </div>
-<div class="line"><a name="l00746"></a><span class="lineno">  746</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ifile=0;ifile<input_opt.size();++ifile){</div>
-<div class="line"><a name="l00747"></a><span class="lineno">  747</span>       <span class="comment">//imgReader already open...</span></div>
-<div class="line"><a name="l00748"></a><span class="lineno">  748</span>       <span class="comment">// try{</span></div>
-<div class="line"><a name="l00749"></a><span class="lineno">  749</span>       <span class="comment">//   imgReader.open(input_opt[ifile]);</span></div>
-<div class="line"><a name="l00750"></a><span class="lineno">  750</span>       <span class="comment">// }</span></div>
-<div class="line"><a name="l00751"></a><span class="lineno">  751</span>       <span class="comment">// catch(string error){</span></div>
-<div class="line"><a name="l00752"></a><span class="lineno">  752</span>       <span class="comment">//   cout << error << endl;</span></div>
-<div class="line"><a name="l00753"></a><span class="lineno">  753</span>       <span class="comment">// }</span></div>
-<div class="line"><a name="l00754"></a><span class="lineno">  754</span>       <span class="comment">// assert(imgReader.getDataType()==theType);</span></div>
-<div class="line"><a name="l00755"></a><span class="lineno">  755</span>       assert(imgReader[ifile].nrOfBand()>=nband);</div>
-<div class="line"><a name="l00756"></a><span class="lineno">  756</span>       <span class="keywordflow">if</span>(!imgReader[ifile].covers(minULX,maxULY,maxLRX,minLRY)){</div>
-<div class="line"><a name="l00757"></a><span class="lineno">  757</span>         <span class="comment">// imgReader.close();</span></div>
-<div class="line"><a name="l00758"></a><span class="lineno">  758</span>         <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00759"></a><span class="lineno">  759</span>       }</div>
-<div class="line"><a name="l00760"></a><span class="lineno">  760</span>       <span class="keywordtype">double</span> uli,ulj,lri,lrj;</div>
-<div class="line"><a name="l00761"></a><span class="lineno">  761</span>       imgReader[ifile].geo2image(minULX+(magic_x-1.0)*imgReader[ifile].getDeltaX(),maxULY-(magic_y-1.0)*imgReader[ifile].getDeltaY(),uli,ulj);</div>
-<div class="line"><a name="l00762"></a><span class="lineno">  762</span>       imgReader[ifile].geo2image(maxLRX+(magic_x-2.0)*imgReader[ifile].getDeltaX(),minLRY-(magic_y-2.0)*imgReader[ifile].getDeltaY(),lri,lrj);</div>
-<div class="line"><a name="l00763"></a><span class="lineno">  763</span>       uli=floor(uli);</div>
-<div class="line"><a name="l00764"></a><span class="lineno">  764</span>       ulj=floor(ulj);</div>
-<div class="line"><a name="l00765"></a><span class="lineno">  765</span>       lri=floor(lri);</div>
-<div class="line"><a name="l00766"></a><span class="lineno">  766</span>       lrj=floor(lrj);</div>
-<div class="line"><a name="l00767"></a><span class="lineno">  767</span>         </div>
-<div class="line"><a name="l00768"></a><span class="lineno">  768</span>       <span class="keywordtype">double</span> startCol=uli;</div>
-<div class="line"><a name="l00769"></a><span class="lineno">  769</span>       <span class="keywordtype">double</span> endCol=lri;</div>
-<div class="line"><a name="l00770"></a><span class="lineno">  770</span>       <span class="keywordflow">if</span>(uli<0)</div>
-<div class="line"><a name="l00771"></a><span class="lineno">  771</span>         startCol=0;</div>
-<div class="line"><a name="l00772"></a><span class="lineno">  772</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(uli>=imgReader[ifile].nrOfCol())</div>
-<div class="line"><a name="l00773"></a><span class="lineno">  773</span>         startCol=imgReader[ifile].nrOfCol()-1;</div>
-<div class="line"><a name="l00774"></a><span class="lineno">  774</span>       <span class="keywordflow">if</span>(lri<0)</div>
-<div class="line"><a name="l00775"></a><span class="lineno">  775</span>         endCol=0;</div>
-<div class="line"><a name="l00776"></a><span class="lineno">  776</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(lri>=imgReader[ifile].nrOfCol())</div>
-<div class="line"><a name="l00777"></a><span class="lineno">  777</span>         endCol=imgReader[ifile].nrOfCol()-1;</div>
-<div class="line"><a name="l00778"></a><span class="lineno">  778</span>       <span class="keywordtype">int</span> readncol=endCol-startCol+1;</div>
-<div class="line"><a name="l00779"></a><span class="lineno">  779</span> </div>
-<div class="line"><a name="l00780"></a><span class="lineno">  780</span>       <span class="comment">//lookup corresponding row for irow in this file</span></div>
-<div class="line"><a name="l00781"></a><span class="lineno">  781</span>       imgReader[ifile].geo2image(x,y,readCol,readRow);</div>
-<div class="line"><a name="l00782"></a><span class="lineno">  782</span>       <span class="keywordflow">if</span>(readRow<0||readRow>=imgReader[ifile].nrOfRow()){</div>
-<div class="line"><a name="l00783"></a><span class="lineno">  783</span>         <span class="comment">// imgReader.close();</span></div>
-<div class="line"><a name="l00784"></a><span class="lineno">  784</span>         <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00785"></a><span class="lineno">  785</span>       }</div>
-<div class="line"><a name="l00786"></a><span class="lineno">  786</span>       <span class="comment">// for(int iband=0;iband<imgReader.nrOfBand();++iband){</span></div>
-<div class="line"><a name="l00787"></a><span class="lineno">  787</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l00788"></a><span class="lineno">  788</span>     <span class="keywordtype">int</span> readBand=(band_opt.size()>iband)? band_opt[iband] : iband;</div>
-<div class="line"><a name="l00789"></a><span class="lineno">  789</span>         <span class="comment">// readBuffer[iband].resize(readncol);</span></div>
-<div class="line"><a name="l00790"></a><span class="lineno">  790</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00791"></a><span class="lineno">  791</span>           imgReader[ifile].readData(readBuffer[ifile][iband],GDT_Float64,startCol,endCol,readRow,readBand,theResample);</div>
-<div class="line"><a name="l00792"></a><span class="lineno">  792</span>     }</div>
-<div class="line"><a name="l00793"></a><span class="lineno">  793</span>     <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> error){</div>
-<div class="line"><a name="l00794"></a><span class="lineno">  794</span>       cerr << <span class="stringliteral">"error reading image "</span> << input_opt[ifile] << <span class="stringliteral">": "</span> << endl;</div>
-<div class="line"><a name="l00795"></a><span class="lineno">  795</span>       <span class="keywordflow">throw</span>;</div>
-<div class="line"><a name="l00796"></a><span class="lineno">  796</span>     }</div>
-<div class="line"><a name="l00797"></a><span class="lineno">  797</span>       }</div>
-<div class="line"><a name="l00798"></a><span class="lineno">  798</span>         </div>
-<div class="line"><a name="l00799"></a><span class="lineno">  799</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ib=0;ib<ncol;++ib){</div>
-<div class="line"><a name="l00800"></a><span class="lineno">  800</span>         imgWriter.image2geo(ib,irow,x,y);</div>
-<div class="line"><a name="l00801"></a><span class="lineno">  801</span>     <span class="comment">//check mask first</span></div>
-<div class="line"><a name="l00802"></a><span class="lineno">  802</span>     <span class="keywordtype">bool</span> valid=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00803"></a><span class="lineno">  803</span>     <span class="keywordflow">if</span>(mask_opt.size()){</div>
-<div class="line"><a name="l00804"></a><span class="lineno">  804</span>       <span class="comment">//read mask</span></div>
-<div class="line"><a name="l00805"></a><span class="lineno">  805</span>       <span class="keywordtype">double</span> colMask=0;</div>
-<div class="line"><a name="l00806"></a><span class="lineno">  806</span>       <span class="keywordtype">double</span> rowMask=0;</div>
-<div class="line"><a name="l00807"></a><span class="lineno">  807</span> </div>
-<div class="line"><a name="l00808"></a><span class="lineno">  808</span>       maskReader.geo2image(x,y,colMask,rowMask);</div>
-<div class="line"><a name="l00809"></a><span class="lineno">  809</span>       colMask=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(colMask);</div>
-<div class="line"><a name="l00810"></a><span class="lineno">  810</span>       rowMask=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(rowMask);</div>
-<div class="line"><a name="l00811"></a><span class="lineno">  811</span>       <span class="keywordflow">if</span>(rowMask>=0&&rowMask<maskReader.nrOfRow()&&colMask>=0&&colMask<maskReader.nrOfCol()){</div>
-<div class="line"><a name="l00812"></a><span class="lineno">  812</span>         <span class="keywordflow">if</span>(static_cast<int>(rowMask)!=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(oldRowMask)){</div>
-<div class="line"><a name="l00813"></a><span class="lineno">  813</span> </div>
-<div class="line"><a name="l00814"></a><span class="lineno">  814</span>           assert(rowMask>=0&&rowMask<maskReader.nrOfRow());</div>
-<div class="line"><a name="l00815"></a><span class="lineno">  815</span>           <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00816"></a><span class="lineno">  816</span>         maskReader.readData(lineMask,GDT_Float32,static_cast<int>(rowMask),mskband_opt[0]);</div>
-<div class="line"><a name="l00817"></a><span class="lineno">  817</span>           }</div>
-<div class="line"><a name="l00818"></a><span class="lineno">  818</span>           <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00819"></a><span class="lineno">  819</span>         cerr << errorstring << endl;</div>
-<div class="line"><a name="l00820"></a><span class="lineno">  820</span>         exit(1);</div>
-<div class="line"><a name="l00821"></a><span class="lineno">  821</span>           }</div>
-<div class="line"><a name="l00822"></a><span class="lineno">  822</span>           <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l00823"></a><span class="lineno">  823</span>         cerr << <span class="stringliteral">"error caught"</span> << std::endl;</div>
-<div class="line"><a name="l00824"></a><span class="lineno">  824</span>         exit(3);</div>
-<div class="line"><a name="l00825"></a><span class="lineno">  825</span>           }</div>
-<div class="line"><a name="l00826"></a><span class="lineno">  826</span>           oldRowMask=rowMask;</div>
-<div class="line"><a name="l00827"></a><span class="lineno">  827</span>         }</div>
-<div class="line"><a name="l00828"></a><span class="lineno">  828</span>         <span class="keywordflow">if</span>(lineMask[colMask]==msknodata_opt[0])</div>
-<div class="line"><a name="l00829"></a><span class="lineno">  829</span>           valid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00830"></a><span class="lineno">  830</span>       }</div>
-<div class="line"><a name="l00831"></a><span class="lineno">  831</span>     }</div>
-<div class="line"><a name="l00832"></a><span class="lineno">  832</span> </div>
-<div class="line"><a name="l00833"></a><span class="lineno">  833</span>     <span class="keywordflow">if</span>(!valid)</div>
-<div class="line"><a name="l00834"></a><span class="lineno">  834</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00835"></a><span class="lineno">  835</span> </div>
-<div class="line"><a name="l00836"></a><span class="lineno">  836</span>         <span class="comment">//lookup corresponding row for irow in this file</span></div>
-<div class="line"><a name="l00837"></a><span class="lineno">  837</span>         imgReader[ifile].geo2image(x,y,readCol,readRow);</div>
-<div class="line"><a name="l00838"></a><span class="lineno">  838</span>         <span class="keywordflow">if</span>(readCol<0||readCol>=imgReader[ifile].nrOfCol())</div>
-<div class="line"><a name="l00839"></a><span class="lineno">  839</span>           <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00840"></a><span class="lineno">  840</span>         <span class="keywordtype">double</span> val_current=0;</div>
-<div class="line"><a name="l00841"></a><span class="lineno">  841</span>         <span class="keywordtype">double</span> val_new=0;</div>
-<div class="line"><a name="l00842"></a><span class="lineno">  842</span>         <span class="keywordtype">bool</span> readValid=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00843"></a><span class="lineno">  843</span>         <span class="keywordflow">switch</span>(theResample){</div>
-<div class="line"><a name="l00844"></a><span class="lineno">  844</span>         <span class="keywordflow">case</span>(BILINEAR):</div>
-<div class="line"><a name="l00845"></a><span class="lineno">  845</span>           lowerCol=readCol-0.5;</div>
-<div class="line"><a name="l00846"></a><span class="lineno">  846</span>           lowerCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(lowerCol);</div>
-<div class="line"><a name="l00847"></a><span class="lineno">  847</span>           upperCol=readCol+0.5;</div>
-<div class="line"><a name="l00848"></a><span class="lineno">  848</span>           upperCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(upperCol);</div>
-<div class="line"><a name="l00849"></a><span class="lineno">  849</span>           <span class="keywordflow">if</span>(lowerCol<0)</div>
-<div class="line"><a name="l00850"></a><span class="lineno">  850</span>             lowerCol=0;</div>
-<div class="line"><a name="l00851"></a><span class="lineno">  851</span>           <span class="keywordflow">if</span>(upperCol>=imgReader[ifile].nrOfCol())</div>
-<div class="line"><a name="l00852"></a><span class="lineno">  852</span>             upperCol=imgReader[ifile].nrOfCol()-1;</div>
-<div class="line"><a name="l00853"></a><span class="lineno">  853</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> vband=0;vband<bndnodata_opt.size();++vband){</div>
-<div class="line"><a name="l00854"></a><span class="lineno">  854</span>             val_new=(readCol-0.5-lowerCol)*readBuffer[ifile][bndnodata_opt[vband]][upperCol-startCol]+(1-readCol+0.5+lowerCol)*readBuffer[ifile][bndnodata_opt[vband]][lowerCol-startCol];</div>
-<div class="line"><a name="l00855"></a><span class="lineno">  855</span>         <span class="keywordflow">if</span>(minValue_opt.size()>vband){</div>
-<div class="line"><a name="l00856"></a><span class="lineno">  856</span>           <span class="keywordflow">if</span>(val_new<=minValue_opt[vband]){</div>
-<div class="line"><a name="l00857"></a><span class="lineno">  857</span>         readValid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00858"></a><span class="lineno">  858</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00859"></a><span class="lineno">  859</span>           }</div>
-<div class="line"><a name="l00860"></a><span class="lineno">  860</span>         }</div>
-<div class="line"><a name="l00861"></a><span class="lineno">  861</span>         <span class="keywordflow">if</span>(maxValue_opt.size()>vband){</div>
-<div class="line"><a name="l00862"></a><span class="lineno">  862</span>           <span class="keywordflow">if</span>(val_new>=maxValue_opt[vband]){</div>
-<div class="line"><a name="l00863"></a><span class="lineno">  863</span>         readValid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00864"></a><span class="lineno">  864</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00865"></a><span class="lineno">  865</span>           }</div>
-<div class="line"><a name="l00866"></a><span class="lineno">  866</span>         }</div>
-<div class="line"><a name="l00867"></a><span class="lineno">  867</span>         <span class="keywordflow">if</span>(srcnodata_opt.size()>vband){</div>
-<div class="line"><a name="l00868"></a><span class="lineno">  868</span>           <span class="keywordflow">if</span>(val_new==srcnodata_opt[vband]){</div>
-<div class="line"><a name="l00869"></a><span class="lineno">  869</span>         readValid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00870"></a><span class="lineno">  870</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00871"></a><span class="lineno">  871</span>           }</div>
-<div class="line"><a name="l00872"></a><span class="lineno">  872</span>         }</div>
-<div class="line"><a name="l00873"></a><span class="lineno">  873</span>       }</div>
-<div class="line"><a name="l00874"></a><span class="lineno">  874</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00875"></a><span class="lineno">  875</span>         <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00876"></a><span class="lineno">  876</span>           readCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(readCol);</div>
-<div class="line"><a name="l00877"></a><span class="lineno">  877</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> vband=0;vband<bndnodata_opt.size();++vband){</div>
-<div class="line"><a name="l00878"></a><span class="lineno">  878</span>             val_new=readBuffer[ifile][bndnodata_opt[vband]][readCol-startCol];</div>
-<div class="line"><a name="l00879"></a><span class="lineno">  879</span>         <span class="keywordflow">if</span>(minValue_opt.size()>vband){</div>
-<div class="line"><a name="l00880"></a><span class="lineno">  880</span>           <span class="keywordflow">if</span>(val_new<=minValue_opt[vband]){</div>
-<div class="line"><a name="l00881"></a><span class="lineno">  881</span>         readValid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00882"></a><span class="lineno">  882</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00883"></a><span class="lineno">  883</span>           }</div>
-<div class="line"><a name="l00884"></a><span class="lineno">  884</span>         }</div>
-<div class="line"><a name="l00885"></a><span class="lineno">  885</span>         <span class="keywordflow">if</span>(maxValue_opt.size()>vband){</div>
-<div class="line"><a name="l00886"></a><span class="lineno">  886</span>           <span class="keywordflow">if</span>(val_new>=maxValue_opt[vband]){</div>
-<div class="line"><a name="l00887"></a><span class="lineno">  887</span>         readValid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00888"></a><span class="lineno">  888</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00889"></a><span class="lineno">  889</span>           }</div>
-<div class="line"><a name="l00890"></a><span class="lineno">  890</span>         }</div>
-<div class="line"><a name="l00891"></a><span class="lineno">  891</span>         <span class="keywordflow">if</span>(srcnodata_opt.size()>vband){</div>
-<div class="line"><a name="l00892"></a><span class="lineno">  892</span>           <span class="keywordflow">if</span>(val_new==srcnodata_opt[vband]){</div>
-<div class="line"><a name="l00893"></a><span class="lineno">  893</span>         readValid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00894"></a><span class="lineno">  894</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00895"></a><span class="lineno">  895</span>           }</div>
-<div class="line"><a name="l00896"></a><span class="lineno">  896</span>         }</div>
-<div class="line"><a name="l00897"></a><span class="lineno">  897</span>       }</div>
-<div class="line"><a name="l00898"></a><span class="lineno">  898</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00899"></a><span class="lineno">  899</span>     }</div>
-<div class="line"><a name="l00900"></a><span class="lineno">  900</span>     <span class="keywordflow">if</span>(readValid){</div>
-<div class="line"><a name="l00901"></a><span class="lineno">  901</span>       <span class="keywordflow">if</span>(file_opt[0]==1)</div>
-<div class="line"><a name="l00902"></a><span class="lineno">  902</span>         ++fileBuffer[ib];</div>
-<div class="line"><a name="l00903"></a><span class="lineno">  903</span>           <span class="keywordflow">if</span>(writeValid[ib]){</div>
-<div class="line"><a name="l00904"></a><span class="lineno">  904</span>             <span class="keywordtype">int</span> iband=0;</div>
-<div class="line"><a name="l00905"></a><span class="lineno">  905</span>         <span class="keywordflow">switch</span>(cruleMap[crule_opt[0]]){</div>
-<div class="line"><a name="l00906"></a><span class="lineno">  906</span>         <span class="keywordflow">case</span>(crule::maxndvi):{<span class="comment">//max ndvi</span></div>
-<div class="line"><a name="l00907"></a><span class="lineno">  907</span>               <span class="keywordtype">double</span> red_current=writeBuffer[ruleBand_opt[0]][ib];</div>
-<div class="line"><a name="l00908"></a><span class="lineno">  908</span>               <span class="keywordtype">double</span> nir_current=writeBuffer[ruleBand_opt[1]][ib];</div>
-<div class="line"><a name="l00909"></a><span class="lineno">  909</span>           <span class="keywordtype">double</span> ndvi_current=0;</div>
-<div class="line"><a name="l00910"></a><span class="lineno">  910</span>               <span class="keywordflow">if</span>(red_current+nir_current>0&&red_current>=0&&nir_current>=0)</div>
-<div class="line"><a name="l00911"></a><span class="lineno">  911</span>                 ndvi_current=(nir_current-red_current)/(nir_current+red_current);</div>
-<div class="line"><a name="l00912"></a><span class="lineno">  912</span>           <span class="keywordtype">double</span> ndvi_new=0;</div>
-<div class="line"><a name="l00913"></a><span class="lineno">  913</span>               <span class="keywordtype">double</span> red_new=0;</div>
-<div class="line"><a name="l00914"></a><span class="lineno">  914</span>               <span class="keywordtype">double</span> nir_new=0;</div>
-<div class="line"><a name="l00915"></a><span class="lineno">  915</span>               <span class="keywordflow">switch</span>(theResample){</div>
-<div class="line"><a name="l00916"></a><span class="lineno">  916</span>               <span class="keywordflow">case</span>(BILINEAR):</div>
-<div class="line"><a name="l00917"></a><span class="lineno">  917</span>                 lowerCol=readCol-0.5;</div>
-<div class="line"><a name="l00918"></a><span class="lineno">  918</span>                 lowerCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(lowerCol);</div>
-<div class="line"><a name="l00919"></a><span class="lineno">  919</span>                 upperCol=readCol+0.5;</div>
-<div class="line"><a name="l00920"></a><span class="lineno">  920</span>                 upperCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(upperCol);</div>
-<div class="line"><a name="l00921"></a><span class="lineno">  921</span>                 <span class="keywordflow">if</span>(lowerCol<0)</div>
-<div class="line"><a name="l00922"></a><span class="lineno">  922</span>                   lowerCol=0;</div>
-<div class="line"><a name="l00923"></a><span class="lineno">  923</span>                 <span class="keywordflow">if</span>(upperCol>=imgReader[ifile].nrOfCol())</div>
-<div class="line"><a name="l00924"></a><span class="lineno">  924</span>                   upperCol=imgReader[ifile].nrOfCol()-1;</div>
-<div class="line"><a name="l00925"></a><span class="lineno">  925</span>                 red_new=(readCol-0.5-lowerCol)*readBuffer[ifile][ruleBand_opt[0]][upperCol-startCol]+(1-readCol+0.5+lowerCol)*readBuffer[ifile][ruleBand_opt[0]][lowerCol-startCol];</div>
-<div class="line"><a name="l00926"></a><span class="lineno">  926</span>                 nir_new=(readCol-0.5-lowerCol)*readBuffer[ifile][ruleBand_opt[1]][upperCol-startCol]+(1-readCol+0.5+lowerCol)*readBuffer[ifile][ruleBand_opt[1]][lowerCol-startCol];</div>
-<div class="line"><a name="l00927"></a><span class="lineno">  927</span>                 <span class="keywordflow">if</span>(red_new+nir_new>0&&red_new>=0&&nir_new>=0)</div>
-<div class="line"><a name="l00928"></a><span class="lineno">  928</span>                   ndvi_new=(nir_new-red_new)/(nir_new+red_new);</div>
-<div class="line"><a name="l00929"></a><span class="lineno">  929</span>                 <span class="keywordflow">if</span>(ndvi_new>=ndvi_current){</div>
-<div class="line"><a name="l00930"></a><span class="lineno">  930</span>                   <span class="keywordflow">for</span>(iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l00931"></a><span class="lineno">  931</span>                     val_new=(readCol-0.5-lowerCol)*readBuffer[ifile][iband][upperCol-startCol]+(1-readCol+0.5+lowerCol)*readBuffer[ifile][iband][lowerCol-startCol];</div>
-<div class="line"><a name="l00932"></a><span class="lineno">  932</span>                     writeBuffer[iband][ib]=val_new;</div>
-<div class="line"><a name="l00933"></a><span class="lineno">  933</span>                   }</div>
-<div class="line"><a name="l00934"></a><span class="lineno">  934</span>           <span class="keywordflow">if</span>(file_opt[0]>1)</div>
-<div class="line"><a name="l00935"></a><span class="lineno">  935</span>             fileBuffer[ib]=ifile;</div>
-<div class="line"><a name="l00936"></a><span class="lineno">  936</span>                 }</div>
-<div class="line"><a name="l00937"></a><span class="lineno">  937</span>                 <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00938"></a><span class="lineno">  938</span>               <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00939"></a><span class="lineno">  939</span>                 readCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(readCol);</div>
-<div class="line"><a name="l00940"></a><span class="lineno">  940</span>                 red_new=readBuffer[ifile][ruleBand_opt[0]][readCol-startCol];</div>
-<div class="line"><a name="l00941"></a><span class="lineno">  941</span>                 nir_new=readBuffer[ifile][ruleBand_opt[1]][readCol-startCol];</div>
-<div class="line"><a name="l00942"></a><span class="lineno">  942</span>                 <span class="keywordflow">if</span>(red_new+nir_new>0&&red_new>=0&&nir_new>=0)</div>
-<div class="line"><a name="l00943"></a><span class="lineno">  943</span>                   ndvi_new=(nir_new-red_new)/(nir_new+red_new);</div>
-<div class="line"><a name="l00944"></a><span class="lineno">  944</span>                 <span class="keywordflow">if</span>(ndvi_new>=ndvi_current){</div>
-<div class="line"><a name="l00945"></a><span class="lineno">  945</span>                   <span class="keywordflow">for</span>(iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l00946"></a><span class="lineno">  946</span>                     val_new=readBuffer[ifile][iband][readCol-startCol];</div>
-<div class="line"><a name="l00947"></a><span class="lineno">  947</span>                     writeBuffer[iband][ib]=val_new;</div>
-<div class="line"><a name="l00948"></a><span class="lineno">  948</span>                   }</div>
-<div class="line"><a name="l00949"></a><span class="lineno">  949</span>           <span class="keywordflow">if</span>(file_opt[0]>1)</div>
-<div class="line"><a name="l00950"></a><span class="lineno">  950</span>             fileBuffer[ib]=ifile;</div>
-<div class="line"><a name="l00951"></a><span class="lineno">  951</span>                 }</div>
-<div class="line"><a name="l00952"></a><span class="lineno">  952</span>                 <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00953"></a><span class="lineno">  953</span>               }</div>
-<div class="line"><a name="l00954"></a><span class="lineno">  954</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00955"></a><span class="lineno">  955</span>             }</div>
-<div class="line"><a name="l00956"></a><span class="lineno">  956</span>         <span class="keywordflow">case</span>(crule::maxband):</div>
-<div class="line"><a name="l00957"></a><span class="lineno">  957</span>             <span class="keywordflow">case</span>(crule::minband):</div>
-<div class="line"><a name="l00958"></a><span class="lineno">  958</span>             <span class="keywordflow">case</span>(crule::validband):<span class="comment">//max,min,valid band</span></div>
-<div class="line"><a name="l00959"></a><span class="lineno">  959</span>               val_current=writeBuffer[ruleBand_opt[0]][ib];</div>
-<div class="line"><a name="l00960"></a><span class="lineno">  960</span>               <span class="keywordflow">switch</span>(theResample){</div>
-<div class="line"><a name="l00961"></a><span class="lineno">  961</span>               <span class="keywordflow">case</span>(BILINEAR):</div>
-<div class="line"><a name="l00962"></a><span class="lineno">  962</span>                 lowerCol=readCol-0.5;</div>
-<div class="line"><a name="l00963"></a><span class="lineno">  963</span>                 lowerCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(lowerCol);</div>
-<div class="line"><a name="l00964"></a><span class="lineno">  964</span>                 upperCol=readCol+0.5;</div>
-<div class="line"><a name="l00965"></a><span class="lineno">  965</span>                 upperCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(upperCol);</div>
-<div class="line"><a name="l00966"></a><span class="lineno">  966</span>                 <span class="keywordflow">if</span>(lowerCol<0)</div>
-<div class="line"><a name="l00967"></a><span class="lineno">  967</span>                   lowerCol=0;</div>
-<div class="line"><a name="l00968"></a><span class="lineno">  968</span>                 <span class="keywordflow">if</span>(upperCol>=imgReader[ifile].nrOfCol())</div>
-<div class="line"><a name="l00969"></a><span class="lineno">  969</span>                   upperCol=imgReader[ifile].nrOfCol()-1;</div>
-<div class="line"><a name="l00970"></a><span class="lineno">  970</span>                 val_new=(readCol-0.5-lowerCol)*readBuffer[ifile][ruleBand_opt[0]][upperCol-startCol]+(1-readCol+0.5+lowerCol)*readBuffer[ifile][ruleBand_opt[0]][lowerCol-startCol];</div>
-<div class="line"><a name="l00971"></a><span class="lineno">  971</span>                 val_new*=weight_opt[ifile];</div>
-<div class="line"><a name="l00972"></a><span class="lineno">  972</span>                 <span class="keywordflow">if</span>((cruleMap[crule_opt[0]]==crule::maxband&&val_new>val_current)||(cruleMap[crule_opt[0]]==crule::minband&&val_new<val_current)||(cruleMap[crule_opt[0]]==crule::validband)){<span class="comment">//&&val_new>minValue_opt[0]&&val_new<maxValue_opt[0])){</span></div>
-<div class="line"><a name="l00973"></a><span class="lineno">  973</span>                   <span class="keywordflow">for</span>(iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l00974"></a><span class="lineno">  974</span>                     val_new=(readCol-0.5-lowerCol)*readBuffer[ifile][iband][upperCol-startCol]+(1-readCol+0.5+lowerCol)*readBuffer[ifile][iband][lowerCol-startCol];</div>
-<div class="line"><a name="l00975"></a><span class="lineno">  975</span>                     val_new*=weight_opt[ifile];</div>
-<div class="line"><a name="l00976"></a><span class="lineno">  976</span>                     writeBuffer[iband][ib]=val_new;</div>
-<div class="line"><a name="l00977"></a><span class="lineno">  977</span>                   }</div>
-<div class="line"><a name="l00978"></a><span class="lineno">  978</span>           <span class="keywordflow">if</span>(file_opt[0]>1)</div>
-<div class="line"><a name="l00979"></a><span class="lineno">  979</span>             fileBuffer[ib]=ifile;</div>
-<div class="line"><a name="l00980"></a><span class="lineno">  980</span>                 }</div>
-<div class="line"><a name="l00981"></a><span class="lineno">  981</span>                 <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00982"></a><span class="lineno">  982</span>               <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00983"></a><span class="lineno">  983</span>                 readCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(readCol);</div>
-<div class="line"><a name="l00984"></a><span class="lineno">  984</span>                 val_new=readBuffer[ifile][ruleBand_opt[0]][readCol-startCol];</div>
-<div class="line"><a name="l00985"></a><span class="lineno">  985</span>                 val_new*=weight_opt[ifile];</div>
-<div class="line"><a name="l00986"></a><span class="lineno">  986</span>                 <span class="keywordflow">if</span>((cruleMap[crule_opt[0]]==crule::maxband&&val_new>val_current)||(cruleMap[crule_opt[0]]==crule::minband&&val_new<val_current)||(cruleMap[crule_opt[0]]==crule::validband)){<span class="comment">//&&val_new>minValue_opt[0]&&val_new<maxValue_opt[0])){</span></div>
-<div class="line"><a name="l00987"></a><span class="lineno">  987</span>                   <span class="keywordflow">for</span>(iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l00988"></a><span class="lineno">  988</span>                     val_new=readBuffer[ifile][iband][readCol-startCol];</div>
-<div class="line"><a name="l00989"></a><span class="lineno">  989</span>                     val_new*=weight_opt[ifile];</div>
-<div class="line"><a name="l00990"></a><span class="lineno">  990</span>                     writeBuffer[iband][ib]=val_new;</div>
-<div class="line"><a name="l00991"></a><span class="lineno">  991</span>                   }</div>
-<div class="line"><a name="l00992"></a><span class="lineno">  992</span>           <span class="keywordflow">if</span>(file_opt[0]>1)</div>
-<div class="line"><a name="l00993"></a><span class="lineno">  993</span>             fileBuffer[ib]=ifile;</div>
-<div class="line"><a name="l00994"></a><span class="lineno">  994</span>                 }</div>
-<div class="line"><a name="l00995"></a><span class="lineno">  995</span>                 <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00996"></a><span class="lineno">  996</span>               }</div>
-<div class="line"><a name="l00997"></a><span class="lineno">  997</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00998"></a><span class="lineno">  998</span>             <span class="keywordflow">case</span>(crule::mode):<span class="comment">//max voting (only for Byte images)</span></div>
-<div class="line"><a name="l00999"></a><span class="lineno">  999</span>               <span class="keywordflow">switch</span>(theResample){</div>
-<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>               <span class="keywordflow">case</span>(BILINEAR):</div>
-<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>                 lowerCol=readCol-0.5;</div>
-<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>                 lowerCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(lowerCol);</div>
-<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>                 upperCol=readCol+0.5;</div>
-<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>                 upperCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(upperCol);</div>
-<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>                 <span class="keywordflow">if</span>(lowerCol<0)</div>
-<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>                   lowerCol=0;</div>
-<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>                 <span class="keywordflow">if</span>(upperCol>=imgReader[ifile].nrOfCol())</div>
-<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>                   upperCol=imgReader[ifile].nrOfCol()-1;</div>
-<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>                 <span class="keywordflow">for</span>(iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>                   val_new=(readCol-0.5-lowerCol)*readBuffer[ifile][iband][upperCol-startCol]+(1-readCol+0.5+lowerCol)*readBuffer[ifile][iband][lowerCol-startCol];</div>
-<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>           maxBuffer[ib][val_new]=maxBuffer[ib][val_new]+weight_opt[ifile];</div>
-<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>                   <span class="comment">// ++(maxBuffer[ib][val_new]);</span></div>
-<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>                 }</div>
-<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>                 <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>               <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>                 readCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(readCol);</div>
-<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>                 <span class="keywordflow">for</span>(iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>                   val_new=readBuffer[ifile][iband][readCol-startCol];</div>
-<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>           maxBuffer[ib][val_new]=maxBuffer[ib][val_new]+weight_opt[ifile];</div>
-<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>         }</div>
-<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>                 <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>           }</div>
-<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>             <span class="keywordflow">case</span>(crule::mean):<span class="comment">//mean value</span></div>
-<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>         <span class="keywordflow">case</span>(crule::median):<span class="comment">//median value</span></div>
-<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>         <span class="keywordflow">case</span>(crule::sum):<span class="comment">//sum value</span></div>
-<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>         <span class="keywordflow">case</span>(crule::minallbands):<span class="comment">//minimum for each and every band</span></div>
-<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>         <span class="keywordflow">case</span>(crule::maxallbands):<span class="comment">//maximum for each and every band</span></div>
-<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>         <span class="keywordflow">case</span>(crule::stdev):<span class="comment">//maximum for each and every band</span></div>
-<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>               <span class="keywordflow">switch</span>(theResample){</div>
-<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>               <span class="keywordflow">case</span>(BILINEAR):</div>
-<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>                 lowerCol=readCol-0.5;</div>
-<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>                 lowerCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(lowerCol);</div>
-<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>                 upperCol=readCol+0.5;</div>
-<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>                 upperCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(upperCol);</div>
-<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>                 <span class="keywordflow">if</span>(lowerCol<0)</div>
-<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>                   lowerCol=0;</div>
-<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>                 <span class="keywordflow">if</span>(upperCol>=imgReader[ifile].nrOfCol())</div>
-<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>                   upperCol=imgReader[ifile].nrOfCol()-1;</div>
-<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>                 <span class="keywordflow">for</span>(iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>                   val_new=(readCol-0.5-lowerCol)*readBuffer[ifile][iband][upperCol-startCol]+(1-readCol+0.5+lowerCol)*readBuffer[ifile][iband][lowerCol-startCol];</div>
-<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>                   val_new*=weight_opt[ifile];</div>
-<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>                   storeBuffer[iband][ib].push_back(val_new);</div>
-<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>                 }</div>
-<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>                 <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>               <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>                 readCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(readCol);</div>
-<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>                 <span class="keywordflow">for</span>(iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>                   val_new=readBuffer[ifile][iband][readCol-startCol];</div>
-<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>                   val_new*=weight_opt[ifile];</div>
-<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>                   storeBuffer[iband][ib].push_back(val_new);</div>
-<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>                   assert(ifile>0);</div>
-<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>                   <span class="comment">// assert(weight_opt[ifile]>=0);</span></div>
-<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>                   <span class="comment">// assert(storeBuffer[iband][ib].back()>=0);</span></div>
-<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>                 }</div>
-<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>                 <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>               }</div>
-<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>         <span class="keywordflow">if</span>(file_opt[0]>1)</div>
-<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>           fileBuffer[ib]=ifile;</div>
-<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>         <span class="keywordflow">case</span>(crule::overwrite):</div>
-<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>         <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>               <span class="keywordflow">switch</span>(theResample){</div>
-<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>               <span class="keywordflow">case</span>(BILINEAR):</div>
-<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>                 lowerCol=readCol-0.5;</div>
-<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>                 lowerCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(lowerCol);</div>
-<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>                 upperCol=readCol+0.5;</div>
-<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>                 upperCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(upperCol);</div>
-<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>                 <span class="keywordflow">if</span>(lowerCol<0)</div>
-<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>                   lowerCol=0;</div>
-<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>                 <span class="keywordflow">if</span>(upperCol>=imgReader[ifile].nrOfCol())</div>
-<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>                   upperCol=imgReader[ifile].nrOfCol()-1;</div>
-<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>                 <span class="keywordflow">for</span>(iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>                   val_new=(readCol-0.5-lowerCol)*readBuffer[ifile][iband][upperCol-startCol]+(1-readCol+0.5+lowerCol)*readBuffer[ifile][iband][lowerCol-startCol];</div>
-<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>                   val_new*=weight_opt[ifile];</div>
-<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>                   writeBuffer[iband][ib]=val_new;</div>
-<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>                 }</div>
-<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>                 <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>               <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>                 readCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(readCol);</div>
-<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>                 <span class="keywordflow">for</span>(iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>                   val_new=readBuffer[ifile][iband][readCol-startCol];</div>
-<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>                   val_new*=weight_opt[ifile];</div>
-<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>                   writeBuffer[iband][ib]=val_new;</div>
-<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>                 }</div>
-<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>                 <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>               }</div>
-<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>         <span class="keywordflow">if</span>(file_opt[0]>1)</div>
-<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>           fileBuffer[ib]=ifile;</div>
-<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>         }</div>
-<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>       }</div>
-<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>             writeValid[ib]=<span class="keyword">true</span>;<span class="comment">//readValid was true</span></div>
-<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>             <span class="keywordtype">int</span> iband=0;</div>
-<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>         <span class="keywordflow">switch</span>(cruleMap[crule_opt[0]]){</div>
-<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>             <span class="keywordflow">case</span>(crule::mean):</div>
-<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>             <span class="keywordflow">case</span>(crule::median):</div>
-<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>             <span class="keywordflow">case</span>(crule::sum):</div>
-<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>             <span class="keywordflow">case</span>(crule::minallbands):</div>
-<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>             <span class="keywordflow">case</span>(crule::maxallbands):</div>
-<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>             <span class="keywordflow">case</span>(crule::stdev):</div>
-<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>               <span class="keywordflow">switch</span>(theResample){</div>
-<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>               <span class="keywordflow">case</span>(BILINEAR):</div>
-<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>                 lowerCol=readCol-0.5;</div>
-<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>                 lowerCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(lowerCol);</div>
-<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>                 upperCol=readCol+0.5;</div>
-<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>                 upperCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(upperCol);</div>
-<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>                 <span class="keywordflow">if</span>(lowerCol<0)</div>
-<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>                   lowerCol=0;</div>
-<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>                 <span class="keywordflow">if</span>(upperCol>=imgReader[ifile].nrOfCol())</div>
-<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>                   upperCol=imgReader[ifile].nrOfCol()-1;</div>
-<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>                 <span class="keywordflow">for</span>(iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>                   val_new=(readCol-0.5-lowerCol)*readBuffer[ifile][iband][upperCol-startCol]+(1-readCol+0.5+lowerCol)*readBuffer[ifile][iband][lowerCol-startCol];</div>
-<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>                   val_new*=weight_opt[ifile];</div>
-<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>                   storeBuffer[iband][ib].push_back(val_new);</div>
-<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>                 }</div>
-<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>                 <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>               <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>                 readCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(readCol);</div>
-<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>                 <span class="keywordflow">for</span>(iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>                   val_new=readBuffer[ifile][iband][readCol-startCol];</div>
-<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>                   val_new*=weight_opt[ifile];</div>
-<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>                   storeBuffer[iband][ib].push_back(val_new);</div>
-<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>                 }</div>
-<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>                 <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>               }</div>
-<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>         <span class="keywordflow">if</span>(file_opt[0]>1)</div>
-<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>           fileBuffer[ib]=ifile;</div>
-<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>             <span class="keywordflow">case</span>(crule::mode):</div>
-<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>               <span class="keywordflow">switch</span>(theResample){</div>
-<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>               <span class="keywordflow">case</span>(BILINEAR):</div>
-<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>                 lowerCol=readCol-0.5;</div>
-<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>                 lowerCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(lowerCol);</div>
-<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>                 upperCol=readCol+0.5;</div>
-<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>                 upperCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(upperCol);</div>
-<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>                 <span class="keywordflow">if</span>(lowerCol<0)</div>
-<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>                   lowerCol=0;</div>
-<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>                 <span class="keywordflow">if</span>(upperCol>=imgReader[ifile].nrOfCol())</div>
-<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>                   upperCol=imgReader[ifile].nrOfCol()-1;</div>
-<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>                 <span class="keywordflow">for</span>(iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>                   val_new=(readCol-0.5-lowerCol)*readBuffer[ifile][iband][upperCol-startCol]+(1-readCol+0.5+lowerCol)*readBuffer[ifile][iband][lowerCol-startCol];</div>
-<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>           maxBuffer[ib][val_new]=maxBuffer[ib][val_new]+weight_opt[ifile];</div>
-<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>                   <span class="comment">// ++(maxBuffer[ib][val_new]);</span></div>
-<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>         }</div>
-<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>                 <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>               <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>                 readCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(readCol);</div>
-<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>                 <span class="keywordflow">for</span>(iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>           val_new=readBuffer[ifile][iband][readCol-startCol];</div>
-<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>           maxBuffer[ib][val_new]=maxBuffer[ib][val_new]+weight_opt[ifile];</div>
-<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>         }</div>
-<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>                   <span class="comment">// ++(maxBuffer[ib][val_new]);</span></div>
-<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>                 <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>               }</div>
-<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>             <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>               <span class="keywordflow">switch</span>(theResample){</div>
-<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>               <span class="keywordflow">case</span>(BILINEAR):</div>
-<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>                 lowerCol=readCol-0.5;</div>
-<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>                 lowerCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(lowerCol);</div>
-<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>                 upperCol=readCol+0.5;</div>
-<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>                 upperCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(upperCol);</div>
-<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>                 <span class="keywordflow">if</span>(lowerCol<0)</div>
-<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>                   lowerCol=0;</div>
-<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>                 <span class="keywordflow">if</span>(upperCol>=imgReader[ifile].nrOfCol())</div>
-<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>                   upperCol=imgReader[ifile].nrOfCol()-1;</div>
-<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>                 <span class="keywordflow">for</span>(iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>                   val_new=(readCol-0.5-lowerCol)*readBuffer[ifile][iband][upperCol-startCol]+(1-readCol+0.5+lowerCol)*readBuffer[ifile][iband][lowerCol-startCol];</div>
-<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>                   val_new*=weight_opt[ifile];</div>
-<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>                   writeBuffer[iband][ib]=val_new;</div>
-<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>                 }</div>
-<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>                 <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>               <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>                 readCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(readCol);</div>
-<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>                 <span class="keywordflow">for</span>(iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>                   val_new=readBuffer[ifile][iband][readCol-startCol];</div>
-<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>                   val_new*=weight_opt[ifile];</div>
-<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>                   writeBuffer[iband][ib]=val_new;</div>
-<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>                 }</div>
-<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>                 <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>               }</div>
-<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>           <span class="keywordflow">if</span>(file_opt[0]>1)</div>
-<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>         fileBuffer[ib]=ifile;</div>
-<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>             }</div>
-<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>           }</div>
-<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>         }</div>
-<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>       }</div>
-<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>       <span class="comment">// imgReader.close();</span></div>
-<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>     }</div>
-<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>     <span class="keywordflow">if</span>(cruleMap[crule_opt[0]]==crule::mode){</div>
-<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>       vector<short> classBuffer(imgWriter.nrOfCol());</div>
-<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>       <span class="keywordflow">if</span>(class_opt.size()>1){</div>
-<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<class_opt.size();++iclass){</div>
-<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<imgWriter.nrOfCol();++icol)</div>
-<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>             classBuffer[icol]=maxBuffer[icol][class_opt[iclass]];</div>
-<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>           <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>             imgWriter.writeData(classBuffer,GDT_Int16,irow,iclass);</div>
-<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>           }</div>
-<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>           <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> error){</div>
-<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>             cerr << <span class="stringliteral">"error writing image file "</span> << output_opt[0] << <span class="stringliteral">": "</span> << error << endl;</div>
-<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>             <span class="keywordflow">throw</span>;</div>
-<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>           }</div>
-<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>         }</div>
-<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>       }</div>
-<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<imgWriter.nrOfCol();++icol){</div>
-<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>           vector<short>::iterator maxit=maxBuffer[icol].begin();</div>
-<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>           maxit=stat.mymax(maxBuffer[icol],maxBuffer[icol].begin(),maxBuffer[icol].end());</div>
-<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>           writeBuffer[0][icol]=distance(maxBuffer[icol].begin(),maxit);</div>
-<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>       <span class="keywordflow">if</span>(file_opt[0]>1)</div>
-<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>         fileBuffer[icol]=*(maxit);</div>
-<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>         }</div>
-<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>         <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>           imgWriter.writeData(writeBuffer[0],GDT_Float64,irow,0);</div>
-<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>           <span class="keywordflow">if</span>(file_opt[0])</div>
-<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>             imgWriter.writeData(fileBuffer,GDT_Int16,irow,1);</div>
-<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>         }</div>
-<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>         <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> error){</div>
-<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>           cerr << <span class="stringliteral">"error writing image file "</span> << output_opt[0] << <span class="stringliteral">": "</span> << error << endl;</div>
-<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>           <span class="keywordflow">throw</span>;</div>
-<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>         }</div>
-<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>       }</div>
-<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>     }</div>
-<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<bands.size();++iband){</div>
-<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>         <span class="comment">// assert(writeBuffer[bands[iband]].size()==imgWriter.nrOfCol());</span></div>
-<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>         assert(writeBuffer[iband].size()==imgWriter.nrOfCol());</div>
-<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<imgWriter.nrOfCol();++icol){</div>
-<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>         <span class="keywordflow">switch</span>(cruleMap[crule_opt[0]]){</div>
-<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>         <span class="keywordflow">case</span>(crule::mean):</div>
-<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>           <span class="comment">// writeBuffer[iband][icol]=stat.mean(storeBuffer[bands[iband]][icol]);</span></div>
-<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>           writeBuffer[iband][icol]=stat.mean(storeBuffer[iband][icol]);</div>
-<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>         <span class="keywordflow">case</span>(crule::median):</div>
-<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>           <span class="comment">// writeBuffer[iband][icol]=stat.median(storeBuffer[bands[iband]][icol]);</span></div>
-<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>           writeBuffer[iband][icol]=stat.median(storeBuffer[iband][icol]);</div>
-<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>         <span class="keywordflow">case</span>(crule::sum):</div>
-<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>           <span class="comment">// writeBuffer[iband][icol]=stat.sum(storeBuffer[bands[iband]][icol]);</span></div>
-<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>           writeBuffer[iband][icol]=stat.sum(storeBuffer[iband][icol]);</div>
-<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>         <span class="keywordflow">case</span>(crule::minallbands):</div>
-<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>           <span class="comment">// writeBuffer[iband][icol]=stat.mymin(storeBuffer[bands[iband]][icol]);</span></div>
-<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>           writeBuffer[iband][icol]=stat.mymin(storeBuffer[iband][icol]);</div>
-<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>         <span class="keywordflow">case</span>(crule::maxallbands):</div>
-<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>           <span class="comment">// writeBuffer[iband][icol]=stat.mymax(storeBuffer[bands[iband]][icol]);</span></div>
-<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>           writeBuffer[iband][icol]=stat.mymax(storeBuffer[iband][icol]);</div>
-<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>         <span class="keywordflow">case</span>(crule::stdev):</div>
-<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>           <span class="comment">// writeBuffer[iband][icol]=sqrt(stat.var(storeBuffer[bands[iband]][icol]));</span></div>
-<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>           writeBuffer[iband][icol]=sqrt(stat.var(storeBuffer[iband][icol]));</div>
-<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>         <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>         }</div>
-<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>       }</div>
-<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> error){</div>
-<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>         <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>           cerr << error << endl;</div>
-<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>         writeBuffer[iband][icol]=dstnodata_opt[0];</div>
-<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>         <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>       }</div>
-<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>         }</div>
-<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>         <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>           imgWriter.writeData(writeBuffer[iband],GDT_Float64,irow,iband);</div>
-<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>         }</div>
-<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>         <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> error){</div>
-<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>           cerr << error << <span class="stringliteral">" in "</span> << output_opt[0] << endl;</div>
-<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>           <span class="keywordflow">throw</span>;</div>
-<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>         }</div>
-<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>       }</div>
-<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>       <span class="keywordflow">if</span>(file_opt[0]){</div>
-<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>         <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>           imgWriter.writeData(fileBuffer,GDT_Int16,irow,bands.size());</div>
-<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>         }</div>
-<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>         <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> error){</div>
-<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>           cerr << error << <span class="stringliteral">" in "</span> << output_opt[0] << endl;</div>
-<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>           <span class="keywordflow">throw</span>;</div>
-<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>         }</div>
-<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>       }</div>
-<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>     }</div>
-<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>     progress=<span class="keyword">static_cast<</span><span class="keywordtype">float</span><span class="keyword">></span>(irow+1.0)/imgWriter.nrOfRow();</div>
-<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>   }</div>
-<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>   <span class="keywordflow">if</span>(extent_opt.size()&&cut_opt.size()){</div>
-<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>     extentReader.close();</div>
-<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>   }</div>
-<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ifile=0;ifile<input_opt.size();++ifile)</div>
-<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>     imgReader[ifile].close();</div>
-<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>   <span class="keywordflow">if</span>(mask_opt.size())</div>
-<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>     maskReader.close();</div>
-<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>   imgWriter.close();</div>
-<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span> }</div>
-<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>   </div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-<div class="ttc" id="classImgWriterGdal_html"><div class="ttname"><a href="classImgWriterGdal.html">ImgWriterGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgWriterGdal_8h_source.html#l00033">ImgWriterGdal.h:33</a></div></div>
-<div class="ttc" id="classVector2d_html"><div class="ttname"><a href="classVector2d.html">Vector2d< double ></a></div></div>
-<div class="ttc" id="classImgReaderOgr_html"><div class="ttname"><a href="classImgReaderOgr.html">ImgReaderOgr</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderOgr_8h_source.html#l00035">ImgReaderOgr.h:35</a></div></div>
-<div class="ttc" id="classstatfactory_1_1StatFactory_html"><div class="ttname"><a href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></div><div class="ttdef"><b>Definition:</b> <a href="StatFactory_8h_source.html#l00043">StatFactory.h:43</a></div></div>
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkcomposite_8py_source.html b/doc/html/pkcomposite_8py_source.html
deleted file mode 100644
index 740587a..0000000
--- a/doc/html/pkcomposite_8py_source.html
+++ /dev/null
@@ -1,249 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/pkcomposite.py Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkcomposite.py</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment"># -*- coding: utf-8 -*-</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> </div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="stringliteral">    pkcomposite.py</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="stringliteral">    ---------------------</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="stringliteral">    Date                 : April 2015</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="stringliteral">    Copyright            : (C) 2015 by Pieter Kempeneers</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="stringliteral">    Email                : kempenep at gmail dot com</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="stringliteral">*   This program is free software; you can redistribute it and/or modify  *</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="stringliteral">*   it under the terms of the GNU General Public License as published by  *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="stringliteral">*   the Free Software Foundation; either version 2 of the License, or     *</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="stringliteral">*   (at your option) any later version.                                   *</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> __author__ = <span class="stringliteral">'Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> __date__ = <span class="stringliteral">'April 2015'</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> __copyright__ = <span class="stringliteral">'(C) 2015, Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"># This will get replaced with a git SHA1 when you do a git archive</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> __revision__ = <span class="stringliteral">'$Format:%H$'</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">import</span> os</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">from</span> pktoolsUtils <span class="keyword">import</span> pktoolsUtils</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">from</span> pktoolsAlgorithm <span class="keyword">import</span> pktoolsAlgorithm</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterMultipleInput</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterRaster</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">from</span> processing.core.outputs <span class="keyword">import</span> OutputRaster</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterSelection</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterNumber</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterString</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterBoolean</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterExtent</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
-<div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">   38</a></span> <span class="keyword">class </span><a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html">pkcomposite</a>(pktoolsAlgorithm):</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> </div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     INPUT = <span class="stringliteral">"INPUT"</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     OUTPUT = <span class="stringliteral">"OUTPUT"</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     CRULE_OPTIONS = [<span class="stringliteral">"overwrite"</span>, <span class="stringliteral">"maxndvi"</span>, <span class="stringliteral">"maxband"</span>, <span class="stringliteral">"minband"</span>, <span class="stringliteral">"validband"</span>, <span class="stringliteral">"mean"</span>, <span class="stringliteral">"mode"</span>, <sp [...]
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     CRULE = <span class="stringliteral">"CRULE"</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     DX = <span class="stringliteral">"DX"</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     DY = <span class="stringliteral">"DY"</span></div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     PROJWIN = <span class="stringliteral">'PROJWIN'</span></div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     CB = <span class="stringliteral">"CB"</span></div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     SRCNODATA = <span class="stringliteral">"SRCNODATA"</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     BNDNODATA = <span class="stringliteral">"BNDNODATA"</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     DSTNODATA = <span class="stringliteral">"DSTNODATA"</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     MINGUI = <span class="stringliteral">"MINGUI"</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     MAXGUI = <span class="stringliteral">"MAXGUI"</span></div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     RESAMPLE_OPTIONS = [<span class="stringliteral">'near'</span>, <span class="stringliteral">'bilinear'</span>]</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     RESAMPLE = <span class="stringliteral">"RESAMPLE"</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     RTYPE = <span class="stringliteral">'RTYPE'</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     TYPE = [<span class="stringliteral">'none'</span>, <span class="stringliteral">'Byte'</span>,<span class="stringliteral">'Int16'</span>,<span class="stringliteral">'UInt16'</span>,<span class="stringliteral">'UInt32'</span>,<span class="stringliteral">'Int32'</span>,<span class="stringliteral">'Float32'</span>,<span class="stringliteral">'Float64&# [...]
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     EXTRA = <span class="stringliteral">'EXTRA'</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span> </div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     <span class="keyword">def </span>cliName(self):</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>         <span class="keywordflow">return</span> <span class="stringliteral">"pkcomposite"</span></div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span> </div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     <span class="keyword">def </span>defineCharacteristics(self):</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>         self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#af9ff4b9a274bc1edb87048da555c78c5">name</a> = <span class="stringliteral">"composite/mosaic raster datasets"</span></div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>         self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a93043eb33d26bf02e375323ca06ece59">group</a> = <span class="stringliteral">"[pktools] raster"</span></div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>         self.addParameter(ParameterMultipleInput(self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#aebe799f44d6edf989b3d82412c02809a">INPUT</a>, <span class="stringliteral">'Input layer raster data set'</span>,ParameterMultipleInput.TYPE_RASTER))</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#aa82de884f201e7c964fd97e55faa3df3">CRULE</a>,<span class="stringliteral">"composite rule"</span>,self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a17e19984fe0607f36ee4cee78b9e5d06">CRULE_OPTIONS</a>, 0))</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>         self.addOutput(OutputRaster(self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a74b1ad0686d3e17322917be01eff6ac1">OUTPUT</a>, <span class="stringliteral">"Output raster data set"</span>))</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#aa65064fbe6e45aff10bd5e803026d12a">RTYPE</a>, <span class="stringliteral">'Output raster type (leave as none to keep original type)'</span>, self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a71098b4079244d80eb821653a6e32f00">TYPE</a>, 0))</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>         self.addParameter(ParameterNumber(self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#ae54bec0854b09e103e5dbe2146589997">DX</a>, <span class="stringliteral">"Output resolution in x (leave 0 for no change)"</span>,0.0,<span class="keywordtype">None</span>,0.0))</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>         self.addParameter(ParameterNumber(self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a9b797d46ca05fd41a88d0400351bd828">DY</a>, <span class="stringliteral">"Output resolution in y (leave 0 for no change)"</span>,0.0,<span class="keywordtype">None</span>,0.0))</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>         self.addParameter(ParameterExtent(self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#ad003c6db03be187acded3c0890568c61">PROJWIN</a>,</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>                           <span class="stringliteral">'Georeferenced boundingbox'</span>))</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a75b586bb10dce1cb66553e222d3a214c">CB</a>, <span class="stringliteral">"band index(es) used for the composite rule (0 based), e.g., 0;1 in case of maxndvi"</span>,<span class="stringliteral">"0"</span>))</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a3c056445acdf3afd1cd26acd12c3c8f0">SRCNODATA</a>, <span class="stringliteral">"invalid value(s) for input raster dataset (e.g., 0;255)"</span>,<span class="stringliteral">"none"</span>))</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a65825f1ecd8b707d842cdc9b6bef2722">BNDNODATA</a>, <span class="stringliteral">"Band(s) in input image to check if pixel is valid (e.g., 0;1)"</span>,<span class="stringliteral">"0"</span>))</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a243d2bbaac6c49959b2117a4042fa219">DSTNODATA</a>, <span class="stringliteral">"nodata value to put in output raster dataset if not valid or out of bounds"</span>,<span class="stringliteral">"0"</span>))</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a3e62273f4e72fcf528d3c2a2bf2f407d">MINGUI</a>, <span class="stringliteral">"flag values smaller or equal to this value as invalid"</span>,<span class="stringliteral">"none"</span>))</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a3bc122ffa6ff04ac4da3c486387bf7cc">MAXGUI</a>, <span class="stringliteral">"flag values larger or equal to this value as invalid"</span>,<span class="stringliteral">"none"</span>))</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a54b2d965b3a847cc1975fd62c9c4dce1">RESAMPLE</a>,<span class="stringliteral">"resampling method"</span>,self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a08c3a8025fa0f42847033e6c7bfd6585">RESAMPLE_OPTIONS</a>, 0))</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a2a6835752fccf49eb80614d762310c49">EXTRA</a>,</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>                           <span class="stringliteral">'Additional parameters'</span>, <span class="stringliteral">'-of GTiff'</span>, optional=<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span> </div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     <span class="keyword">def </span>processAlgorithm(self, progress):</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>         cliPath = <span class="stringliteral">'"'</span> + os.path.join(pktoolsUtils.pktoolsPath(), self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a50e046d7f4d00ac95080ec2b2f281bb6">cliName</a>()) + <span class="stringliteral">'"'</span></div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>         commands = [cliPath]</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span> </div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>         input=self.getParameterValue(self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#aebe799f44d6edf989b3d82412c02809a">INPUT</a>)</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>         inputFiles = input.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>         <span class="keywordflow">for</span> inputFile <span class="keywordflow">in</span> inputFiles:</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>             commands.append(<span class="stringliteral">'-i'</span>)</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>             commands.append(<span class="stringliteral">'"'</span> + inputFile + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span> </div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>         <span class="keywordflow">if</span> self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a71098b4079244d80eb821653a6e32f00">TYPE</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#aa65064fbe6e45aff10bd5e803026d12a">RTYPE</a>)] != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>             commands.append(<span class="stringliteral">'-ot'</span>)</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>             commands.append(self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a71098b4079244d80eb821653a6e32f00">TYPE</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#aa65064fbe6e45aff10bd5e803026d12a">RTYPE</a>)])</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>         output=self.getOutputValue(self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a74b1ad0686d3e17322917be01eff6ac1">OUTPUT</a>)</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>         <span class="keywordflow">if</span> output != <span class="stringliteral">""</span>:</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>             commands.append(<span class="stringliteral">"-o"</span>)</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>             commands.append(<span class="stringliteral">'"'</span> + output + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>         commands.append(<span class="stringliteral">"-cr"</span>)</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>         commands.append(self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a17e19984fe0607f36ee4cee78b9e5d06">CRULE_OPTIONS</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#aa82de884f201e7c964fd97e55faa3df3">CRULE</a>)])</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>         <span class="keywordflow">if</span> self.getParameterValue(self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#ae54bec0854b09e103e5dbe2146589997">DX</a>) != 0:</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>             commands.append(<span class="stringliteral">"-dx"</span>)</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>             commands.append(str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#ae54bec0854b09e103e5dbe2146589997">DX</a>)))</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>         <span class="keywordflow">if</span> self.getParameterValue(self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a9b797d46ca05fd41a88d0400351bd828">DY</a>) != 0:</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>             commands.append(<span class="stringliteral">"-dy"</span>)</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>             commands.append(str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a9b797d46ca05fd41a88d0400351bd828">DY</a>)))</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>         projwin = str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#ad003c6db03be187acded3c0890568c61">PROJWIN</a>))</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>         regionCoords = projwin.split(<span class="stringliteral">','</span>)</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>         commands.append(<span class="stringliteral">'-ulx'</span>)</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>         commands.append(regionCoords[0])</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>         commands.append(<span class="stringliteral">'-uly'</span>)</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>         commands.append(regionCoords[3])</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>         commands.append(<span class="stringliteral">'-lrx'</span>)</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>         commands.append(regionCoords[1])</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>         commands.append(<span class="stringliteral">'-lry'</span>)</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>         commands.append(regionCoords[2])</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>         cb=self.getParameterValue(self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a75b586bb10dce1cb66553e222d3a214c">CB</a>)</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>         cbValues = cb.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>         <span class="keywordflow">for</span> cbValue <span class="keywordflow">in</span> cbValues:</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>                 commands.append(<span class="stringliteral">'-cb'</span>)</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>                 commands.append(cbValue)</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>         srcnodata=self.getParameterValue(self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a3c056445acdf3afd1cd26acd12c3c8f0">SRCNODATA</a>)</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>         <span class="keywordflow">if</span> srcnodata != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>             srcnodataValues = srcnodata.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>             <span class="keywordflow">for</span> srcnodataValue <span class="keywordflow">in</span> srcnodataValues:</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>                 commands.append(<span class="stringliteral">'-srcnodata'</span>)</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>                 commands.append(srcnodataValue)</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>         bndnodata=self.getParameterValue(self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a65825f1ecd8b707d842cdc9b6bef2722">BNDNODATA</a>)</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>         bndnodataValues = bndnodata.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>         <span class="keywordflow">for</span> bndnodataValue <span class="keywordflow">in</span> bndnodataValues:</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>             commands.append(<span class="stringliteral">'-bndnodata'</span>)</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>             commands.append(bndnodataValue)</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>         commands.append(<span class="stringliteral">'-dstnodata'</span>)</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>         commands.append(self.getParameterValue(self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a243d2bbaac6c49959b2117a4042fa219">DSTNODATA</a>))</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span> </div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>         minGUI=self.getParameterValue(self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a3e62273f4e72fcf528d3c2a2bf2f407d">MINGUI</a>)</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>         <span class="keywordflow">if</span> minGUI != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>             minValues = minGUI.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>             <span class="keywordflow">for</span> minValue <span class="keywordflow">in</span> minValues:</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>                 commands.append(<span class="stringliteral">'-min'</span>)</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>                 commands.append(minValue)</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>         maxGUI=self.getParameterValue(self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a3bc122ffa6ff04ac4da3c486387bf7cc">MAXGUI</a>)</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>         <span class="keywordflow">if</span> maxGUI != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>             maxValues = maxGUI.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>             <span class="keywordflow">for</span> maxValue <span class="keywordflow">in</span> maxValues:</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>                 commands.append(<span class="stringliteral">'-max'</span>)</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>                 commands.append(maxValue)</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>         commands.append(<span class="stringliteral">"-r"</span>)</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>         commands.append(self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a08c3a8025fa0f42847033e6c7bfd6585">RESAMPLE_OPTIONS</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a54b2d965b3a847cc1975fd62c9c4dce1">RESAMPLE</a>)])</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>         extra = str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a2a6835752fccf49eb80614d762310c49">EXTRA</a>))</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>         <span class="keywordflow">if</span> len(extra) > 0:</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>             commands.append(extra)</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span> </div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>         pktoolsUtils.runpktools(commands, progress)</div>
-<div class="ttc" id="classqgis_1_1pkcomposite_1_1pkcomposite_html_a08c3a8025fa0f42847033e6c7bfd6585"><div class="ttname"><a href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a08c3a8025fa0f42847033e6c7bfd6585">qgis.pkcomposite.pkcomposite.RESAMPLE_OPTIONS</a></div><div class="ttdeci">list RESAMPLE_OPTIONS</div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite_8py_source.html#l00053">pkcomposite.py:53</a></div></div>
-<div class="ttc" id="classqgis_1_1pkcomposite_1_1pkcomposite_html_aebe799f44d6edf989b3d82412c02809a"><div class="ttname"><a href="classqgis_1_1pkcomposite_1_1pkcomposite.html#aebe799f44d6edf989b3d82412c02809a">qgis.pkcomposite.pkcomposite.INPUT</a></div><div class="ttdeci">string INPUT</div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite_8py_source.html#l00040">pkcomposite.py:40</a></div></div>
-<div class="ttc" id="classqgis_1_1pkcomposite_1_1pkcomposite_html"><div class="ttname"><a href="classqgis_1_1pkcomposite_1_1pkcomposite.html">qgis.pkcomposite.pkcomposite</a></div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite_8py_source.html#l00038">pkcomposite.py:38</a></div></div>
-<div class="ttc" id="classqgis_1_1pkcomposite_1_1pkcomposite_html_a3c056445acdf3afd1cd26acd12c3c8f0"><div class="ttname"><a href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a3c056445acdf3afd1cd26acd12c3c8f0">qgis.pkcomposite.pkcomposite.SRCNODATA</a></div><div class="ttdeci">string SRCNODATA</div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite_8py_source.html#l00048">pkcomposite.py:48</a></div></div>
-<div class="ttc" id="classqgis_1_1pkcomposite_1_1pkcomposite_html_a75b586bb10dce1cb66553e222d3a214c"><div class="ttname"><a href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a75b586bb10dce1cb66553e222d3a214c">qgis.pkcomposite.pkcomposite.CB</a></div><div class="ttdeci">string CB</div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite_8py_source.html#l00047">pkcomposite.py:47</a></div></div>
-<div class="ttc" id="classqgis_1_1pkcomposite_1_1pkcomposite_html_a243d2bbaac6c49959b2117a4042fa219"><div class="ttname"><a href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a243d2bbaac6c49959b2117a4042fa219">qgis.pkcomposite.pkcomposite.DSTNODATA</a></div><div class="ttdeci">string DSTNODATA</div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite_8py_source.html#l00050">pkcomposite.py:50</a></div></div>
-<div class="ttc" id="classqgis_1_1pkcomposite_1_1pkcomposite_html_a17e19984fe0607f36ee4cee78b9e5d06"><div class="ttname"><a href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a17e19984fe0607f36ee4cee78b9e5d06">qgis.pkcomposite.pkcomposite.CRULE_OPTIONS</a></div><div class="ttdeci">list CRULE_OPTIONS</div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite_8py_source.html#l00042">pkcomposite.py:42</a></div></div>
-<div class="ttc" id="classqgis_1_1pkcomposite_1_1pkcomposite_html_a54b2d965b3a847cc1975fd62c9c4dce1"><div class="ttname"><a href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a54b2d965b3a847cc1975fd62c9c4dce1">qgis.pkcomposite.pkcomposite.RESAMPLE</a></div><div class="ttdeci">string RESAMPLE</div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite_8py_source.html#l00054">pkcomposite.py:54</a></div></div>
-<div class="ttc" id="classqgis_1_1pkcomposite_1_1pkcomposite_html_a71098b4079244d80eb821653a6e32f00"><div class="ttname"><a href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a71098b4079244d80eb821653a6e32f00">qgis.pkcomposite.pkcomposite.TYPE</a></div><div class="ttdeci">list TYPE</div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite_8py_source.html#l00056">pkcomposite.py:56</a></div></div>
-<div class="ttc" id="classqgis_1_1pkcomposite_1_1pkcomposite_html_aa65064fbe6e45aff10bd5e803026d12a"><div class="ttname"><a href="classqgis_1_1pkcomposite_1_1pkcomposite.html#aa65064fbe6e45aff10bd5e803026d12a">qgis.pkcomposite.pkcomposite.RTYPE</a></div><div class="ttdeci">string RTYPE</div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite_8py_source.html#l00055">pkcomposite.py:55</a></div></div>
-<div class="ttc" id="classqgis_1_1pkcomposite_1_1pkcomposite_html_a50e046d7f4d00ac95080ec2b2f281bb6"><div class="ttname"><a href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a50e046d7f4d00ac95080ec2b2f281bb6">qgis.pkcomposite.pkcomposite.cliName</a></div><div class="ttdeci">def cliName</div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite_8py_source.html#l00059">pkcomposite.py:59</a></div></div>
-<div class="ttc" id="classqgis_1_1pkcomposite_1_1pkcomposite_html_a3bc122ffa6ff04ac4da3c486387bf7cc"><div class="ttname"><a href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a3bc122ffa6ff04ac4da3c486387bf7cc">qgis.pkcomposite.pkcomposite.MAXGUI</a></div><div class="ttdeci">string MAXGUI</div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite_8py_source.html#l00052">pkcomposite.py:52</a></div></div>
-<div class="ttc" id="classqgis_1_1pkcomposite_1_1pkcomposite_html_a93043eb33d26bf02e375323ca06ece59"><div class="ttname"><a href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a93043eb33d26bf02e375323ca06ece59">qgis.pkcomposite.pkcomposite.group</a></div><div class="ttdeci">group</div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite_8py_source.html#l00064">pkcomposite.py:64</a></div></div>
-<div class="ttc" id="classqgis_1_1pkcomposite_1_1pkcomposite_html_a74b1ad0686d3e17322917be01eff6ac1"><div class="ttname"><a href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a74b1ad0686d3e17322917be01eff6ac1">qgis.pkcomposite.pkcomposite.OUTPUT</a></div><div class="ttdeci">string OUTPUT</div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite_8py_source.html#l00041">pkcomposite.py:41</a></div></div>
-<div class="ttc" id="classqgis_1_1pkcomposite_1_1pkcomposite_html_a9b797d46ca05fd41a88d0400351bd828"><div class="ttname"><a href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a9b797d46ca05fd41a88d0400351bd828">qgis.pkcomposite.pkcomposite.DY</a></div><div class="ttdeci">string DY</div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite_8py_source.html#l00045">pkcomposite.py:45</a></div></div>
-<div class="ttc" id="classqgis_1_1pkcomposite_1_1pkcomposite_html_ad003c6db03be187acded3c0890568c61"><div class="ttname"><a href="classqgis_1_1pkcomposite_1_1pkcomposite.html#ad003c6db03be187acded3c0890568c61">qgis.pkcomposite.pkcomposite.PROJWIN</a></div><div class="ttdeci">string PROJWIN</div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite_8py_source.html#l00046">pkcomposite.py:46</a></div></div>
-<div class="ttc" id="classqgis_1_1pkcomposite_1_1pkcomposite_html_a65825f1ecd8b707d842cdc9b6bef2722"><div class="ttname"><a href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a65825f1ecd8b707d842cdc9b6bef2722">qgis.pkcomposite.pkcomposite.BNDNODATA</a></div><div class="ttdeci">string BNDNODATA</div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite_8py_source.html#l00049">pkcomposite.py:49</a></div></div>
-<div class="ttc" id="classqgis_1_1pkcomposite_1_1pkcomposite_html_ae54bec0854b09e103e5dbe2146589997"><div class="ttname"><a href="classqgis_1_1pkcomposite_1_1pkcomposite.html#ae54bec0854b09e103e5dbe2146589997">qgis.pkcomposite.pkcomposite.DX</a></div><div class="ttdeci">string DX</div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite_8py_source.html#l00044">pkcomposite.py:44</a></div></div>
-<div class="ttc" id="classqgis_1_1pkcomposite_1_1pkcomposite_html_a2a6835752fccf49eb80614d762310c49"><div class="ttname"><a href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a2a6835752fccf49eb80614d762310c49">qgis.pkcomposite.pkcomposite.EXTRA</a></div><div class="ttdeci">string EXTRA</div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite_8py_source.html#l00057">pkcomposite.py:57</a></div></div>
-<div class="ttc" id="classqgis_1_1pkcomposite_1_1pkcomposite_html_af9ff4b9a274bc1edb87048da555c78c5"><div class="ttname"><a href="classqgis_1_1pkcomposite_1_1pkcomposite.html#af9ff4b9a274bc1edb87048da555c78c5">qgis.pkcomposite.pkcomposite.name</a></div><div class="ttdeci">name</div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite_8py_source.html#l00063">pkcomposite.py:63</a></div></div>
-<div class="ttc" id="classqgis_1_1pkcomposite_1_1pkcomposite_html_a3e62273f4e72fcf528d3c2a2bf2f407d"><div class="ttname"><a href="classqgis_1_1pkcomposite_1_1pkcomposite.html#a3e62273f4e72fcf528d3c2a2bf2f407d">qgis.pkcomposite.pkcomposite.MINGUI</a></div><div class="ttdeci">string MINGUI</div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite_8py_source.html#l00051">pkcomposite.py:51</a></div></div>
-<div class="ttc" id="classqgis_1_1pkcomposite_1_1pkcomposite_html_aa82de884f201e7c964fd97e55faa3df3"><div class="ttname"><a href="classqgis_1_1pkcomposite_1_1pkcomposite.html#aa82de884f201e7c964fd97e55faa3df3">qgis.pkcomposite.pkcomposite.CRULE</a></div><div class="ttdeci">string CRULE</div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite_8py_source.html#l00043">pkcomposite.py:43</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkcomposite__gui_2main_8cc_source.html b/doc/html/pkcomposite__gui_2main_8cc_source.html
deleted file mode 100644
index 377ee74..0000000
--- a/doc/html/pkcomposite__gui_2main_8cc_source.html
+++ /dev/null
@@ -1,104 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/pkcomposite_gui/main.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_ab1bbd5a6b4bd6507847335527b029bb.html">pkcomposite_gui</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">main.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">main.cc</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> </div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "mainwindow.h"</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <QApplication></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> </div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])</div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> {</div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span>     QApplication a(argc, argv);</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span>     <a class="code" href="classMainWindow.html">MainWindow</a> w;</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span>     w.show();</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span>     </div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>     <span class="keywordflow">return</span> a.exec();</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> }</div>
-<div class="ttc" id="classMainWindow_html"><div class="ttname"><a href="classMainWindow.html">MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite__gui_2mainwindow_8h_source.html#l00031">mainwindow.h:31</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkcomposite__gui_2mainwindow_8cc_source.html b/doc/html/pkcomposite__gui_2mainwindow_8cc_source.html
deleted file mode 100644
index 1f3a245..0000000
--- a/doc/html/pkcomposite__gui_2mainwindow_8cc_source.html
+++ /dev/null
@@ -1,332 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/pkcomposite_gui/mainwindow.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_ab1bbd5a6b4bd6507847335527b029bb.html">pkcomposite_gui</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">mainwindow.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">mainwindow.cpp: GUI for pktools</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> </div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "mainwindow.h"</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "ui_mainwindow.h"</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <QFileDialog></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <QProcess></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include <QMessageBox></span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include <QShortcut></span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> </div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> MainWindow::MainWindow(QWidget *parent) :</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span>     QMainWindow(parent),</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>     ui(new Ui::<a class="code" href="classMainWindow.html">MainWindow</a>)</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> {</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>     ui->setupUi(<span class="keyword">this</span>);</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>     QStringList resamplelist;</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>     resamplelist << <span class="stringliteral">"near"</span> << <span class="stringliteral">"bilinear"</span>;</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>     ui->resample->addItems(resamplelist);</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>     QStringList crulelist;</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>     crulelist << <span class="stringliteral">"overwrite"</span> << <span class="stringliteral">"maxndvi"</span> << <span class="stringliteral">"maxband"</span> <<<span class="stringliteral">"minband"</span> << <span class="stringliteral">"mean"</span> << <span class="stringliteral">"mode"</span> << <span class= [...]
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>     ui->crule->addItems(crulelist);</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>     QStringList interleavedlist;</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     interleavedlist << <span class="stringliteral">"BAND"</span> << <span class="stringliteral">"LINE"</span> << <span class="stringliteral">"PIXEL"</span> <<<span class="stringliteral">"BSQ"</span>;</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     ui->interleaved->addItems(interleavedlist);</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     QStringList compressedlist;</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     compressedlist << <span class="stringliteral">"NONE"</span> << <span class="stringliteral">"LZW"</span> << <span class="stringliteral">"PACKBITS"</span> <<<span class="stringliteral">"DEFLATE"</span>;</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     ui->compressed->addItems(compressedlist);</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     QStringList otypelist;</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     otypelist << <span class="stringliteral">""</span> << <span class="stringliteral">"Byte"</span> << <span class="stringliteral">"Int16"</span> << <span class="stringliteral">"UInt16"</span> << <span class="stringliteral">"UInt32"</span> << <span class="stringliteral">"Int32"</span> << <span class="stringlite [...]
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     ui->otype->addItems(otypelist);</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     QStringList oformatlist;</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     oformatlist << <span class="stringliteral">""</span> << <span class="stringliteral">"GTiff"</span> << <span class="stringliteral">"HFA"</span> << <span class="stringliteral">"ENVI"</span>;</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     ui->oformat->addItems(oformatlist);</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     setDefaults();</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span> </div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     ui->listWidget_input->setSelectionMode(QAbstractItemView::ExtendedSelection);</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     <span class="comment">//pressing DEL activates the slots only when list widget has focus</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     QShortcut* shortcutDel = <span class="keyword">new</span> QShortcut(QKeySequence(Qt::Key_Delete), ui->listWidget_input);</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     connect(shortcutDel, SIGNAL(activated()), <span class="keyword">this</span>, SLOT(deleteItemInput()));</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     <span class="comment">//pressing Backspace activates the slots only when list widget has focus</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     QShortcut* shortcutBackspace = <span class="keyword">new</span> QShortcut(QKeySequence(Qt::Key_Backspace), ui->listWidget_input);</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     connect(shortcutBackspace, SIGNAL(activated()), <span class="keyword">this</span>, SLOT(deleteItemInput()));</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span> </div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span> }</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span> </div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span> MainWindow::~MainWindow()</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span> {</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     <span class="keyword">delete</span> ui;</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span> }</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span> </div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span> <span class="keywordtype">void</span> MainWindow::deleteItemInput()</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span> {</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     qDeleteAll(ui->listWidget_input->selectedItems());</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span> <span class="comment">//    delete ui->listWidget_input->currentItem();</span></div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span> }</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span> </div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span> <span class="keywordtype">void</span> MainWindow::setDefaults()</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span> {</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>     <span class="comment">//input</span></div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>     ui->listWidget_input->clear();</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>     ui->ulx->clear();</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>     ui->uly->clear();</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>     ui->lrx->clear();</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>     ui->lry->clear();</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     ui->extent->clear();</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     <span class="comment">//composit</span></div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     ui->resample->setCurrentIndex(0);</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>     ui->crule->setCurrentIndex(0);</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>     ui->cband->setText(<span class="stringliteral">"0"</span>);</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>     ui->bndnodata->setText(<span class="stringliteral">"0"</span>);</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>     ui->srcnodata->setText(<span class="stringliteral">"0"</span>);</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     ui->min->clear();</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     ui->max->clear();</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     <span class="comment">//output</span></div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     ui->output->clear();</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>     ui->a_srs->clear();</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>     ui->otype->setCurrentIndex(0);</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>     ui->oformat->setCurrentIndex(0);</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     ui->ct->clear();</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     ui->dx->clear();</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     ui->dy->clear();</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     ui->interleaved->setCurrentIndex(0);</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     ui->tiled->setChecked(<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     ui->compressed->setCurrentIndex(0);</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     ui->dstnodata->clear();</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     ui->file->clear();</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span> }</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span> </div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span> <span class="keywordtype">void</span> MainWindow::on_toolButton_input_clicked()</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span> {</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     on_actionInput_image_triggered();</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span> }</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span> </div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span> <span class="keywordtype">void</span> MainWindow::on_toolButton_output_clicked()</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span> {</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     on_actionOutput_image_triggered();</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span> }</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span> </div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span> <span class="keywordtype">void</span> MainWindow::on_toolButton_file_clicked()</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span> {</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     on_actionSelection_Info_file_triggered();</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span> }</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span> </div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span> <span class="keywordtype">void</span> MainWindow::on_toolButton_ct_clicked()</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span> {</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>     QString qsctfilename=QFileDialog::getSaveFileName(<span class="keyword">this</span>,<span class="stringliteral">"Color table ASCII"</span>,<span class="stringliteral">""</span>,<span class="stringliteral">"*.*"</span>);</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     ui->ct->setText(qsctfilename);</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span> }</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span> </div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span> <span class="keywordtype">void</span> MainWindow::on_toolButton_defaults_clicked()</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span> {</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>     setDefaults();</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span> }</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span> </div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span> <span class="keywordtype">void</span> MainWindow::on_actionInput_image_triggered()</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span> {</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>     QFileDialog dialog(<span class="keyword">this</span>);</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>     dialog.setDirectory(QDir::homePath());</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>     dialog.setFileMode(QFileDialog::ExistingFiles);</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>     QStringList fileNames;</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>     <span class="keywordflow">if</span> (dialog.exec())</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>         fileNames = dialog.selectedFiles();</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>     ui->listWidget_input->addItems(fileNames);</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span> }</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span> </div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span> <span class="keywordtype">void</span> MainWindow::on_actionOutput_image_triggered()</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span> {</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>     QString outputfilename=QFileDialog::getSaveFileName(<span class="keyword">this</span>,<span class="stringliteral">"Output image"</span>,<span class="stringliteral">""</span>,<span class="stringliteral">"*.*"</span>);</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>     ui->output->setText(outputfilename);</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span> }</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span> </div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span> <span class="keywordtype">void</span> MainWindow::on_actionSelection_Info_file_triggered()</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span> {</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>     QString infofilename=QFileDialog::getSaveFileName(<span class="keyword">this</span>,<span class="stringliteral">"Selection info image"</span>,<span class="stringliteral">""</span>,<span class="stringliteral">"*.*"</span>);</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>     ui->file->setText(infofilename);</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span> }</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span> </div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span> <span class="keywordtype">void</span> MainWindow::on_actionQuit_triggered()</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span> {</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>     close();</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span> }</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span> </div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span> </div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span> <span class="keywordtype">void</span> MainWindow::on_toolButton_Run_clicked()</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span> {</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>         ui->commandLineEdit->clear();</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>         ui->consoleEdit->clear();</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span> </div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>         QString program = <span class="stringliteral">"pkcomposite"</span>;</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span> </div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>         <span class="keywordflow">if</span>(ui->listWidget_input->count()<1)</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>             MainWindow::on_actionInput_image_triggered();</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>         <span class="keywordflow">if</span>(ui->listWidget_input->count()<1){</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>             QString qsError=<span class="stringliteral">"No input image file selected"</span>;</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>             <span class="keywordflow">throw</span>(qsError);</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>         }</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span> </div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < ui->listWidget_input->count(); ++i)</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>         {</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>             QListWidgetItem* item = ui->listWidget_input->item(i);</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>             program+=<span class="stringliteral">" --input "</span>+item->text();</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>         }</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span> </div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>         <span class="keywordflow">if</span>(ui->output->text().isEmpty())</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>             MainWindow::on_actionOutput_image_triggered();</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>         <span class="keywordflow">if</span>(ui->output->text().isEmpty()){</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>             QString qsError=<span class="stringliteral">"No output image file selected"</span>;</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>             <span class="keywordflow">throw</span>(qsError);</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>         }</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span> </div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>         program+=<span class="stringliteral">" --resample "</span>+ui->resample->currentText();</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>         program+=<span class="stringliteral">" --crule "</span>+ui->crule->currentText();</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>         <span class="keywordflow">if</span>(!ui->otype->currentText().isEmpty())</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>             program+=<span class="stringliteral">" --otype "</span>+ui->otype->currentText();</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>         <span class="keywordflow">if</span>(!ui->oformat->currentText().isEmpty())</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>             program+=<span class="stringliteral">" --oformat "</span>+ui->oformat->currentText();</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>         program+=<span class="stringliteral">" -co COMPRESS="</span>+ui->compressed->currentText();</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>         program+=<span class="stringliteral">" -co INTERLEAVE="</span>+ui->interleaved->currentText();</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>         <span class="keywordflow">if</span>(ui->tiled->isChecked())</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>             program+=<span class="stringliteral">" -co TILED=YES"</span>;</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span> </div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span> <span class="comment">//        QList<QCheckBox*> qcheckBoxList = this->findChildren<QCheckBox *>();</span></div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span> </div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span> <span class="comment">//        for(QList<QCheckBox*>::ConstIterator qcbit=qcheckBoxList.begin();qcbit!=qcheckBoxList.end();++qcbit){</span></div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span> <span class="comment">//            if((*qcbit)->isChecked()){</span></div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span> <span class="comment">//                QString qsOption;</span></div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span> <span class="comment">//                qsOption+=" --";</span></div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span> <span class="comment">//                qsOption+=(*qcbit)->objectName();</span></div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span> <span class="comment">//                program+=qsOption;</span></div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span> <span class="comment">//            }</span></div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span> <span class="comment">//        }</span></div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span> </div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>         QList<QLineEdit*> qlineEditList = this->findChildren<QLineEdit *>();</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span> </div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>         <span class="keywordflow">for</span>(QList<QLineEdit*>::ConstIterator qlbit=qlineEditList.begin();qlbit!=qlineEditList.end();++qlbit){</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>             <span class="keywordflow">if</span>(!((*qlbit)->text().isEmpty())){</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>                 QString qsOption;</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>                 qsOption+=<span class="stringliteral">" --"</span>;</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>                 qsOption+=(*qlbit)->objectName();</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>                 qsOption+=<span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>                 qsOption+=(*qlbit)->text();</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>                 program+=qsOption;</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>             }</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>         }</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span> </div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>         ui->commandLineEdit->insert(program);</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span> </div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span> <span class="comment">//        QProcess *myProcess = new QProcess(parent);</span></div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>         QProcess *myProcess = <span class="keyword">new</span> QProcess(<span class="keyword">this</span>);</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>         myProcess->start(program);</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>         myProcess->setProcessChannelMode(QProcess::MergedChannels);</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>         this->setCursor(Qt::WaitCursor);</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>         myProcess->waitForFinished(-1);</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>         this->setCursor(Qt::ArrowCursor);</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>         QString p_stderr = myProcess->readAllStandardError();</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>         <span class="keywordflow">if</span>(!p_stderr.isEmpty()){</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>             QMessageBox msgBox;</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>             msgBox.setText(p_stderr);</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>             msgBox.exec();</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>         }</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>         QString p_stdout = myProcess->readAll();</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>         ui->consoleEdit->insertPlainText(p_stdout);</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>         <span class="keyword">delete</span> myProcess;</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>     }</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>     <span class="keywordflow">catch</span>(QString qsError){</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>         QMessageBox msgBox;</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>         msgBox.setText(qsError);</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>         msgBox.exec();</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>     }</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span> }</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span> </div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span> <span class="keywordtype">void</span> MainWindow::on_toolButton_extent_clicked()</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span> {</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>     on_actionExtent_triggered();</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span> }</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span> </div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span> <span class="keywordtype">void</span> MainWindow::on_actionExtent_triggered()</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span> {</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>     QString qsextent = QFileDialog::getOpenFileName(<span class="keyword">this</span>, <span class="stringliteral">"extent"</span>);</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>     ui->extent->setText(qsextent);</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span> }</div>
-<div class="ttc" id="classMainWindow_html"><div class="ttname"><a href="classMainWindow.html">MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite__gui_2mainwindow_8h_source.html#l00031">mainwindow.h:31</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkcomposite__gui_2mainwindow_8h_source.html b/doc/html/pkcomposite__gui_2mainwindow_8h_source.html
deleted file mode 100644
index 5fb9dff..0000000
--- a/doc/html/pkcomposite__gui_2mainwindow_8h_source.html
+++ /dev/null
@@ -1,145 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/pkcomposite_gui/mainwindow.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_ab1bbd5a6b4bd6507847335527b029bb.html">pkcomposite_gui</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">mainwindow.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">mainwindow.h</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> </div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#ifndef MAINWINDOW_H</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor"></span><span class="preprocessor">#define MAINWINDOW_H</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <QMainWindow></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include <QListWidget></span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> </div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">namespace </span>Ui {</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">class </span><a class="code" href="classMainWindow.html">MainWindow</a>;</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> }</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> </div>
-<div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="classMainWindow.html">   31</a></span> <span class="keyword">class </span><a class="code" href="classMainWindow.html">MainWindow</a> : <span class="keyword">public</span> QMainWindow</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> {</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>     Q_OBJECT</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>     </div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>     <span class="keyword">explicit</span> <a class="code" href="classMainWindow.html">MainWindow</a>(QWidget *parent = 0);</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>     ~<a class="code" href="classMainWindow.html">MainWindow</a>();</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>     </div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="keyword">private</span> slots:</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     <span class="keywordtype">void</span> on_toolButton_input_clicked();</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> </div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     <span class="keywordtype">void</span> on_toolButton_defaults_clicked();</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span> </div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     <span class="keywordtype">void</span> on_actionInput_image_triggered();</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span> </div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     <span class="keywordtype">void</span> on_actionOutput_image_triggered();</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span> </div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     <span class="keywordtype">void</span> on_actionQuit_triggered();</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span> </div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     <span class="keywordtype">void</span> on_toolButton_output_clicked();</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span> </div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     <span class="keywordtype">void</span> on_toolButton_Run_clicked();</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span> </div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     <span class="keywordtype">void</span> on_actionSelection_Info_file_triggered();</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span> </div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <span class="keywordtype">void</span> on_toolButton_file_clicked();</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span> </div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     <span class="keywordtype">void</span> on_toolButton_ct_clicked();</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span> </div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     <span class="keywordtype">void</span> on_toolButton_extent_clicked();</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span> </div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     <span class="keywordtype">void</span> on_actionExtent_triggered();</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span> </div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     <span class="keywordtype">void</span> deleteItemInput();</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span> </div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span> <span class="keyword">private</span>:</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>     <a class="code" href="classUi_1_1MainWindow.html">Ui::MainWindow</a> *ui;</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     <span class="keywordtype">void</span> setDefaults();</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span> };</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span> </div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span> <span class="preprocessor">#endif // MAINWINDOW_H</span></div>
-<div class="ttc" id="classUi_1_1MainWindow_html"><div class="ttname"><a href="classUi_1_1MainWindow.html">Ui::MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="build-pkcomposite__gui-gcc-Debug_2ui__mainwindow_8h_source.html#l00702">ui_mainwindow.h:702</a></div></div>
-<div class="ttc" id="classMainWindow_html"><div class="ttname"><a href="classMainWindow.html">MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite__gui_2mainwindow_8h_source.html#l00031">mainwindow.h:31</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkcreatect.html b/doc/html/pkcreatect.html
deleted file mode 100644
index 0f307fc..0000000
--- a/doc/html/pkcreatect.html
+++ /dev/null
@@ -1,106 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: pkcreatect</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkcreatect </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><p>program to create and import colour table to GTiff image </p>
-<h2>SYNOPSIS</h2>
-<p><code> Usage: pkcreatect -i input.txt -o output [-ct colortable | -min value -max value] </code></p>
-<p><code></code></p>
-<p><code> Options: [–grey] [-of GDALformat] [-co option]* [-d description]</code></p>
-<p><code> Advanced options: [–legend filename [–dim cols –dim rows]] </code></p>
-<h1><a class="anchor" id="pkascii2ogr_description"></a>
-Description</h1>
-<p>Utility to include a color table to a raster dataset. You can either define an existing color table (ASCII text file) with the option -ct or define a minimum (-min) and maximum (-max) value.</p>
-<h1><a class="anchor" id="pkcreatect_options"></a>
-Options</h1>
-<ul>
-<li>use either <code>-short</code> or <code>--long</code> options (both <code>--long=value</code> and <code>--long value</code> are supported)</li>
-<li>short option <code>-h</code> shows basic options only, long option <code>--help</code> shows all options <table class="doxtable">
-<tr>
-<th>short</th><th>long</th><th>type</th><th>default</th><th>description  </th></tr>
-<tr>
-<td>i </td><td>input </td><td>std::string </td><td></td><td>Input image file </td></tr>
-<tr>
-<td>o </td><td>output </td><td>std::string </td><td></td><td>Output image file </td></tr>
-<tr>
-<td>l </td><td>legend </td><td>std::string </td><td></td><td>Create legend as png file </td></tr>
-<tr>
-<td>dim </td><td>dim </td><td>short </td><td>100 </td><td>number of columns and rows in legend. </td></tr>
-<tr>
-<td>min </td><td>min </td><td>double </td><td>0 </td><td>minimum value </td></tr>
-<tr>
-<td>max </td><td>max </td><td>double </td><td>100 </td><td>maximum value </td></tr>
-<tr>
-<td>g </td><td>grey </td><td>bool </td><td>false </td><td>grey scale </td></tr>
-<tr>
-<td>ct </td><td>ct </td><td>std::string </td><td></td><td>color table (file with 5 columns: id R G B ALFA (0: transparent, 255: solid) </td></tr>
-<tr>
-<td>d </td><td>description </td><td>std::string </td><td></td><td>Set image description </td></tr>
-<tr>
-<td>of </td><td>oformat </td><td>std::string </td><td>GTiff </td><td>Output image format (see also gdal_translate). </td></tr>
-<tr>
-<td>co </td><td>co </td><td>std::string </td><td></td><td>Creation option for output file. Multiple options can be specified. </td></tr>
-</table>
-Usage: pkcreatect -i input.txt -o output [-ct colortable | -min value -max value]</li>
-</ul>
-<h1>Examples </h1>
-<p>Some examples how to use pkcreatect can be found <a class="el" href="md_examples_pkcreatect.html#examples_pkcreatect">here</a> </p>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkcreatect_8cc_source.html b/doc/html/pkcreatect_8cc_source.html
deleted file mode 100644
index 6a359ed..0000000
--- a/doc/html/pkcreatect_8cc_source.html
+++ /dev/null
@@ -1,280 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/pkcreatect.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkcreatect.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pkcreatect.cc: program to create and import colour table to GTiff image</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <iostream></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "imageclasses/ImgReaderGdal.h"</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "imageclasses/ImgWriterGdal.h"</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> </div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="comment">/******************************************************************************/</span></div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span> </div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc,<span class="keywordtype">char</span> **argv) {</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span> </div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>   <span class="keywordtype">short</span> red=-1;</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>   <span class="keywordtype">short</span> green=-1;</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>   <span class="keywordtype">short</span> blue=-1;</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span> </div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  input_opt(<span class="stringliteral">"i"</span>, <span class="stringliteral">"input"</span>, <span class="stringliteral">"Input image file"</span>);</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  output_opt(<span class="stringliteral">"o"</span>, <span class="stringliteral">"output"</span>, <span class="stringliteral">"Output image file"</span>);</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  legend_opt(<span class="stringliteral">"l"</span>, <span class="stringliteral">"legend"</span>, <span class="stringliteral">"Create legend as png file"</span>);</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a>  dim_opt(<span class="stringliteral">"dim"</span>, <span class="stringliteral">"dim"</span>, <span class="stringliteral">"number of columns and rows in legend."</span>, 100);</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a>  min_opt(<span class="stringliteral">"min"</span>, <span class="stringliteral">"min"</span>, <span class="stringliteral">"minimum value"</span>, 0);</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a>  max_opt(<span class="stringliteral">"max"</span>, <span class="stringliteral">"max"</span>, <span class="stringliteral">"maximum value"</span>, 100);</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a>  grey_opt(<span class="stringliteral">"g"</span>, <span class="stringliteral">"grey"</span>, <span class="stringliteral">"grey scale"</span>, <span class="keyword">false</span>);</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  colorTable_opt(<span class="stringliteral">"ct"</span>, <span class="stringliteral">"ct"</span>, <span class="stringliteral">"color table (file with 5 columns: id R G B ALFA (0: transparent, 255: solid)"</span>);</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> oformat_opt(<span class="stringliteral">"of"</span>, <span class="stringliteral">"oformat"</span>, <span class="stringliteral">"Output image format (see also gdal_translate)."</span>, <span class="stringliteral">"GTiff"</span>);</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> option_opt(<span class="stringliteral">"co"</span>, <span class="stringliteral">"co"</span>, <span class="stringliteral">"Creation option for output file. Multiple options can be specified."</span>);</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  description_opt(<span class="stringliteral">"d"</span>, <span class="stringliteral">"description"</span>, <span class="stringliteral">"Set image description"</span>);</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a>  verbose_opt(<span class="stringliteral">"v"</span>, <span class="stringliteral">"verbose"</span>, <span class="stringliteral">"verbose"</span>, <span class="keyword">false</span>,2);</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>   </div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   legend_opt.setHide(1);</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>   dim_opt.setHide(1);</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   </div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   <span class="keywordtype">bool</span> doProcess;<span class="comment">//stop process when program was invoked with help option (-h --help)</span></div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     doProcess=input_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     output_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     legend_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     dim_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     min_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     max_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     grey_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     colorTable_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     description_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     oformat_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     option_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     verbose_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   }</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> predefinedString){</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>     std::cout << predefinedString << std::endl;</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>     exit(0);</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>   }</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   <span class="keywordflow">if</span>(!doProcess){</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     cout << endl;</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     cout << <span class="stringliteral">"Usage: pkcreatect -i input.txt -o output [-ct colortable | -min value -max value]"</span> << endl;</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     cout << endl;</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     std::cout << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << std::endl;</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>     exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>   }</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span> </div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   GDALColorTable colorTable;</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>   GDALColorEntry sEntry;</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>   <span class="keywordflow">if</span>(colorTable_opt.empty()){</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>     sEntry.c4=255;</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=min_opt[0];i<=max_opt[0];++i){</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>       <span class="keywordflow">if</span>(grey_opt[0]){</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>         sEntry.c1=255*(i-min_opt[0])/(max_opt[0]-min_opt[0]);</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>         sEntry.c2=255*(i-min_opt[0])/(max_opt[0]-min_opt[0]);</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>         sEntry.c3=255*(i-min_opt[0])/(max_opt[0]-min_opt[0]);</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>       }</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>       <span class="keywordflow">else</span>{<span class="comment">//hot to cold colour ramp</span></div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>         sEntry.c1=255;</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>         sEntry.c2=255;</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>         sEntry.c3=255;</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>         <span class="keywordtype">double</span> delta=max_opt[0]-min_opt[0];</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>         <span class="keywordflow">if</span>(i<(min_opt[0]+0.25*delta)){</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>           sEntry.c1=0;</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>           sEntry.c2=255*4*(i-min_opt[0])/delta;</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>         }</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(i<(min_opt[0]+0.5*delta)){</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>           sEntry.c1=0;</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>           sEntry.c3=255*(1+4*(min_opt[0]+0.25*delta-i)/delta);</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>         }</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(i<(min_opt[0]+0.75*delta)){</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>           sEntry.c1=255*4*(i-min_opt[0]-0.5*delta)/delta;</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>           sEntry.c3=0;</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>         }</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>           sEntry.c2=255*(1+4*(min_opt[0]+0.75*delta-i)/delta);</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>           sEntry.c3=0;</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>         }</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>       }</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>       colorTable.SetColorEntry(i,&sEntry);</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>       <span class="keywordflow">if</span>(output_opt.empty())</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>         cout << i << <span class="stringliteral">" "</span> << sEntry.c1 << <span class="stringliteral">" "</span> << sEntry.c2 << <span class="stringliteral">" "</span> << sEntry.c3 << <span class="stringliteral">" "</span> << sEntry.c4 << endl;</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>     }</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>   }</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> legendWriter;</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>   <span class="keywordtype">short</span> ncol=dim_opt[0];</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>   <span class="keywordtype">short</span> nrow;</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>   <span class="keywordflow">if</span>(legend_opt.size()){</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>     <span class="keywordflow">if</span>(dim_opt.size()>1)</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>       nrow=dim_opt[1];</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>       nrow=max_opt[0]-min_opt[0]+1;</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>       ncol=dim_opt[0];</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>     }</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>     vector<string> pngOption;</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>     <span class="comment">// pngOption.push_back("-co worldfile=no");</span></div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>     pngOption.push_back(<span class="stringliteral">""</span>);</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>     legendWriter.open(legend_opt[0],ncol,nrow,1,GDT_Byte,oformat_opt[0],option_opt);</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>     <span class="keywordflow">if</span>(colorTable_opt.size()){</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>       <span class="keywordflow">if</span>(colorTable_opt[0]!=<span class="stringliteral">"none"</span>)</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>         legendWriter.setColorTable(colorTable_opt[0]);</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>     }</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>       legendWriter.setColorTable(&colorTable);</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>     <span class="keywordflow">if</span>(legend_opt.size()){</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<legendWriter.nrOfRow();++irow){</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>         vector<char> buffer(legendWriter.nrOfCol());</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<legendWriter.nrOfCol();++icol)</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>           buffer[icol]=min_opt[0]+irow*static_cast<short>(max_opt[0]-min_opt[0]+1)/legendWriter.nrOfRow();</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>         legendWriter.writeData(buffer,GDT_Byte,legendWriter.nrOfRow()-1-irow);</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>       }</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>     }</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>   }</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span> </div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>   <span class="comment">// const char* pszMessage;</span></div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>   <span class="comment">// void* pProgressArg=NULL;</span></div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>   <span class="comment">// GDALProgressFunc pfnProgress=GDALTermProgress;</span></div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>   <span class="comment">// double progress=0;</span></div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>   <span class="comment">// pfnProgress(progress,pszMessage,pProgressArg);</span></div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>   <span class="keywordflow">if</span>(input_opt.size()&&output_opt.size()){</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>     <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> imgReader(input_opt[0]);</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>     <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> imgWriter;</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>     <span class="keywordflow">if</span>(option_opt.findSubstring(<span class="stringliteral">"INTERLEAVE="</span>)==option_opt.end()){</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>       <span class="keywordtype">string</span> theInterleave=<span class="stringliteral">"INTERLEAVE="</span>;</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>       theInterleave+=imgReader.getInterleave();</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>       option_opt.push_back(theInterleave);</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>     }</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span> </div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>     imgWriter.open(output_opt[0],imgReader.nrOfCol(),imgReader.nrOfRow(),1,GDT_Byte,oformat_opt[0],option_opt);</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span> </div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>     imgWriter.copyGeoTransform(imgReader);</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>     <span class="keywordflow">if</span>(colorTable_opt.size()){</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>       <span class="keywordflow">if</span>(colorTable_opt[0]!=<span class="stringliteral">"none"</span>)</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>         imgWriter.setColorTable(colorTable_opt[0]);</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>     }</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>       imgWriter.setColorTable(&colorTable);</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>     <span class="keywordflow">if</span>(description_opt.size())</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>       imgWriter.setImageDescription(description_opt[0]);</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>     <span class="keywordflow">switch</span>(imgReader.getDataType()){</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>     <span class="keywordflow">case</span>(GDT_Byte):{</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>       vector<char> buffer;</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<imgReader.nrOfRow();++irow){</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>         imgReader.readData(buffer,GDT_Byte,irow);</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>         imgWriter.writeData(buffer,GDT_Byte,irow);</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>       }</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>     }</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>     <span class="keywordflow">case</span>(GDT_Int16):{</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>       vector<short> buffer;</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>       cout << <span class="stringliteral">"Warning: copying short to unsigned short without conversion, use gdal_translate -scale if needed..."</span> << endl;</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<imgReader.nrOfRow();++irow){</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>         imgReader.readData(buffer,GDT_Int16,irow,0);</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>         imgWriter.writeData(buffer,GDT_Int16,irow,0);</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>       }</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>     }</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>     <span class="keywordflow">case</span>(GDT_UInt16):{</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>       vector<unsigned short> buffer;</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<imgReader.nrOfRow();++irow){</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>         imgReader.readData(buffer,GDT_UInt16,irow,0);</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>         imgWriter.writeData(buffer,GDT_UInt16,irow,0);</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>       }</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>     }</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>     <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>       cerr << <span class="stringliteral">"data type "</span> << imgReader.getDataType() << <span class="stringliteral">" not supported for adding a colortable"</span> << endl;</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>     }</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>     imgReader.close();</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>     imgWriter.close();</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>   }</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>   <span class="keywordflow">if</span>(legend_opt.size())</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>     legendWriter.close();</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span> }</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span> </div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-<div class="ttc" id="classImgWriterGdal_html"><div class="ttname"><a href="classImgWriterGdal.html">ImgWriterGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgWriterGdal_8h_source.html#l00033">ImgWriterGdal.h:33</a></div></div>
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkcrop.html b/doc/html/pkcrop.html
deleted file mode 100644
index e1f5418..0000000
--- a/doc/html/pkcrop.html
+++ /dev/null
@@ -1,154 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: pkcrop</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkcrop </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><p>perform raster data operations on image such as crop, extract and stack bands </p>
-<h2>SYNOPSIS</h2>
-<p><code> Usage: pkcrop -i input -o output </code></p>
-<p><code></code></p>
-<p><code> Options: [-of out_format] [-ot {Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/CInt16/CInt32/CFloat32/CFloat64}] [-b band]* [-ulx ULX -uly ULY -lrx LRX -lry LRY] [-dx xres] [-dy yres] [-r resampling_method] [-a_srs epsg:number] [-nodata value]</code></p>
-<p><code> Advanced options: [-e vector [-cut]] [-sband band -eband band]* [-co NAME=VALUE]* [-x center_x -y center_y] [-nx size_x -ny size_y] [-ns nsample -nl nlines] [-as min -as max] [-scale value]* [-off offset]* [-ct colortable] [-d description] [-align] </code></p>
-<h1><a class="anchor" id="pkcrop_description"></a>
-Description</h1>
-<p>The utility pkcrop can subset and stack raster images. In the spatial domain it can crop a bounding box from a larger image. The output bounding box is selected by setting the new corner coordinates using the options -ulx -uly -lrx -lry. Alternatively you can set the new image center (-x -y) and size. This can be done either in projected coordinates (using the options -nx -ny) or in image coordinates (using the options -ns -nl). You can also use a vector file to set the new bounding b [...]
-<h1><a class="anchor" id="pkcrop_options"></a>
-Options</h1>
-<ul>
-<li>use either <code>-short</code> or <code>--long</code> options (both <code>--long=value</code> and <code>--long value</code> are supported)</li>
-<li>short option <code>-h</code> shows basic options only, long option <code>--help</code> shows all options <table class="doxtable">
-<tr>
-<th>short</th><th>long</th><th>type</th><th>default</th><th>description  </th></tr>
-<tr>
-<td>i </td><td>input </td><td>std::string </td><td></td><td>Input image file(s). If input contains multiple images, a multi-band output is created </td></tr>
-<tr>
-<td>o </td><td>output </td><td>std::string </td><td></td><td>Output image file </td></tr>
-<tr>
-<td>a_srs </td><td>a_srs </td><td>std::string </td><td></td><td>Override the projection for the output file (leave blank to copy from input file, use epsg:3035 to use European projection and force to European grid </td></tr>
-<tr>
-<td>ulx </td><td>ulx </td><td>double </td><td>0 </td><td>Upper left x value bounding box </td></tr>
-<tr>
-<td>uly </td><td>uly </td><td>double </td><td>0 </td><td>Upper left y value bounding box </td></tr>
-<tr>
-<td>lrx </td><td>lrx </td><td>double </td><td>0 </td><td>Lower right x value bounding box </td></tr>
-<tr>
-<td>lry </td><td>lry </td><td>double </td><td>0 </td><td>Lower right y value bounding box </td></tr>
-<tr>
-<td>b </td><td>band </td><td>unsigned short </td><td></td><td>band index to crop (leave empty to retain all bands) </td></tr>
-<tr>
-<td>sband </td><td>startband </td><td>unsigned short </td><td></td><td>Start band sequence number </td></tr>
-<tr>
-<td>eband </td><td>endband </td><td>unsigned short </td><td></td><td>End band sequence number </td></tr>
-<tr>
-<td>as </td><td>autoscale </td><td>double </td><td></td><td>scale output to min and max, e.g., –autoscale 0 –autoscale 255 </td></tr>
-<tr>
-<td>ot </td><td>otype </td><td>std::string </td><td></td><td>Data type for output image ({Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/CInt16/CInt32/CFloat32/CFloat64}). Empty string: inherit type from input image </td></tr>
-<tr>
-<td>of </td><td>oformat </td><td>std::string </td><td>GTiff </td><td>Output image format (see also gdal_translate) </td></tr>
-<tr>
-<td>ct </td><td>ct </td><td>std::string </td><td></td><td>color table (file with 5 columns: id R G B ALFA (0: transparent, 255: solid) </td></tr>
-<tr>
-<td>dx </td><td>dx </td><td>double </td><td></td><td>Output resolution in x (in meter) (empty: keep original resolution) </td></tr>
-<tr>
-<td>dy </td><td>dy </td><td>double </td><td></td><td>Output resolution in y (in meter) (empty: keep original resolution) </td></tr>
-<tr>
-<td>r </td><td>resampling-method </td><td>std::string </td><td>near </td><td>Resampling method (near: nearest neighbor, bilinear: bi-linear interpolation). </td></tr>
-<tr>
-<td>e </td><td>extent </td><td>std::string </td><td></td><td>get boundary from extent from polygons in vector file </td></tr>
-<tr>
-<td>cut </td><td>crop_to_cutline </td><td>bool </td><td>false </td><td>Crop the extent of the target dataset to the extent of the cutline </td></tr>
-<tr>
-<td>m </td><td>mask </td><td>std::string </td><td></td><td>Use the specified file as a validity mask (0 is nodata) </td></tr>
-<tr>
-<td>msknodata </td><td>msknodata </td><td>float </td><td>0 </td><td>Mask value not to consider for crop </td></tr>
-<tr>
-<td>msknodata </td><td>msknodata </td><td>float </td><td>0 </td><td>Mask value not to consider for crop </td></tr>
-<tr>
-<td>mskband </td><td>mskband </td><td>short </td><td>0 </td><td>Mask band to read (0 indexed). Provide band for each mask. </td></tr>
-<tr>
-<td>co </td><td>co </td><td>std::string </td><td></td><td>Creation option for output file. Multiple options can be specified. </td></tr>
-<tr>
-<td>x </td><td>x </td><td>double </td><td></td><td>x-coordinate of image center to crop (in meter) </td></tr>
-<tr>
-<td>y </td><td>y </td><td>double </td><td></td><td>y-coordinate of image center to crop (in meter) </td></tr>
-<tr>
-<td>nx </td><td>nx </td><td>double </td><td></td><td>image size in x to crop (in meter) </td></tr>
-<tr>
-<td>ny </td><td>ny </td><td>double </td><td></td><td>image size in y to crop (in meter) </td></tr>
-<tr>
-<td>ns </td><td>ns </td><td>int </td><td></td><td>number of samples to crop (in pixels) </td></tr>
-<tr>
-<td>nl </td><td>nl </td><td>int </td><td></td><td>number of lines to crop (in pixels) </td></tr>
-<tr>
-<td>scale </td><td>scale </td><td>double </td><td></td><td>output=scale*input+offset </td></tr>
-<tr>
-<td>off </td><td>offset </td><td>double </td><td></td><td>output=scale*input+offset </td></tr>
-<tr>
-<td>nodata </td><td>nodata </td><td>float </td><td></td><td>Nodata value to put in image if out of bounds. </td></tr>
-<tr>
-<td>align </td><td>align </td><td>bool </td><td></td><td>Align output bounding box to input image </td></tr>
-<tr>
-<td>d </td><td>description </td><td>std::string </td><td></td><td>Set image description </td></tr>
-</table>
-<h1>Examples </h1>
-</li>
-</ul>
-<p>Some examples how to use pkcrop can be found <a class="el" href="md_examples_pkcrop.html#examples_pkcrop">here</a> </p>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkcrop_8cc_source.html b/doc/html/pkcrop_8cc_source.html
deleted file mode 100644
index c0d48ba..0000000
--- a/doc/html/pkcrop_8cc_source.html
+++ /dev/null
@@ -1,854 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/pkcrop.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkcrop.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pkcrop.cc: perform raster data operations on image such as crop, extract and stack bands</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment"> ***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <assert.h></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <cstdlib></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <string></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <list></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <iostream></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include <algorithm></span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "imageclasses/ImgWriterGdal.h"</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "imageclasses/ImgReaderGdal.h"</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include "imageclasses/ImgReaderOgr.h"</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include "algorithms/Egcs.h"</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> </div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="comment">/******************************************************************************/</span></div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span> </div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span> {</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  input_opt(<span class="stringliteral">"i"</span>, <span class="stringliteral">"input"</span>, <span class="stringliteral">"Input image file(s). If input contains multiple images, a multi-band output is created"</span>);</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  output_opt(<span class="stringliteral">"o"</span>, <span class="stringliteral">"output"</span>, <span class="stringliteral">"Output image file"</span>);</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  projection_opt(<span class="stringliteral">"a_srs"</span>, <span class="stringliteral">"a_srs"</span>, <span class="stringliteral">"Override the projection for the output file (leave blank to copy from input file, use epsg:3035 to use European projection and force to European grid"</span>);</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>   <span class="comment">//todo: support layer names</span></div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  extent_opt(<span class="stringliteral">"e"</span>, <span class="stringliteral">"extent"</span>, <span class="stringliteral">"get boundary from extent from polygons in vector file"</span>);</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> cut_opt(<span class="stringliteral">"cut"</span>, <span class="stringliteral">"crop_to_cutline"</span>, <span class="stringliteral">"Crop the extent of the target dataset to the extent of the cutline."</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> mask_opt(<span class="stringliteral">"m"</span>, <span class="stringliteral">"mask"</span>, <span class="stringliteral">"Use the the specified file as a validity mask (0 is nodata)."</span>);</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   <a class="code" href="classOptionpk.html">Optionpk<float></a> msknodata_opt(<span class="stringliteral">"msknodata"</span>, <span class="stringliteral">"msknodata"</span>, <span class="stringliteral">"Mask value not to consider for crop."</span>, 0);</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> mskband_opt(<span class="stringliteral">"mskband"</span>, <span class="stringliteral">"mskband"</span>, <span class="stringliteral">"Mask band to read (0 indexed). Provide band for each mask."</span>, 0);</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a>  ulx_opt(<span class="stringliteral">"ulx"</span>, <span class="stringliteral">"ulx"</span>, <span class="stringliteral">"Upper left x value bounding box"</span>, 0.0);</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a>  uly_opt(<span class="stringliteral">"uly"</span>, <span class="stringliteral">"uly"</span>, <span class="stringliteral">"Upper left y value bounding box"</span>, 0.0);</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a>  lrx_opt(<span class="stringliteral">"lrx"</span>, <span class="stringliteral">"lrx"</span>, <span class="stringliteral">"Lower right x value bounding box"</span>, 0.0);</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a>  lry_opt(<span class="stringliteral">"lry"</span>, <span class="stringliteral">"lry"</span>, <span class="stringliteral">"Lower right y value bounding box"</span>, 0.0);</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a>  dx_opt(<span class="stringliteral">"dx"</span>, <span class="stringliteral">"dx"</span>, <span class="stringliteral">"Output resolution in x (in meter) (empty: keep original resolution)"</span>);</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a>  dy_opt(<span class="stringliteral">"dy"</span>, <span class="stringliteral">"dy"</span>, <span class="stringliteral">"Output resolution in y (in meter) (empty: keep original resolution)"</span>);</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> cx_opt(<span class="stringliteral">"x"</span>, <span class="stringliteral">"x"</span>, <span class="stringliteral">"x-coordinate of image center to crop (in meter)"</span>);</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> cy_opt(<span class="stringliteral">"y"</span>, <span class="stringliteral">"y"</span>, <span class="stringliteral">"y-coordinate of image center to crop (in meter)"</span>);</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> nx_opt(<span class="stringliteral">"nx"</span>, <span class="stringliteral">"nx"</span>, <span class="stringliteral">"image size in x to crop (in meter)"</span>);</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> ny_opt(<span class="stringliteral">"ny"</span>, <span class="stringliteral">"ny"</span>, <span class="stringliteral">"image size in y to crop (in meter)"</span>);</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> ns_opt(<span class="stringliteral">"ns"</span>, <span class="stringliteral">"ns"</span>, <span class="stringliteral">"number of samples  to crop (in pixels)"</span>);</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> nl_opt(<span class="stringliteral">"nl"</span>, <span class="stringliteral">"nl"</span>, <span class="stringliteral">"number of lines to crop (in pixels)"</span>);</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a>  band_opt(<span class="stringliteral">"b"</span>, <span class="stringliteral">"band"</span>, <span class="stringliteral">"band index to crop (leave empty to retain all bands)"</span>);</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> bstart_opt(<span class="stringliteral">"sband"</span>, <span class="stringliteral">"startband"</span>, <span class="stringliteral">"Start band sequence number"</span>); </div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> bend_opt(<span class="stringliteral">"eband"</span>, <span class="stringliteral">"endband"</span>, <span class="stringliteral">"End band sequence number"</span>); </div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> autoscale_opt(<span class="stringliteral">"as"</span>, <span class="stringliteral">"autoscale"</span>, <span class="stringliteral">"scale output to min and max, e.g., --autoscale 0 --autoscale 255"</span>);</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> scale_opt(<span class="stringliteral">"scale"</span>, <span class="stringliteral">"scale"</span>, <span class="stringliteral">"output=scale*input+offset"</span>);</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> offset_opt(<span class="stringliteral">"offset"</span>, <span class="stringliteral">"offset"</span>, <span class="stringliteral">"output=scale*input+offset"</span>);</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  otype_opt(<span class="stringliteral">"ot"</span>, <span class="stringliteral">"otype"</span>, <span class="stringliteral">"Data type for output image ({Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/CInt16/CInt32/CFloat32/CFloat64}). Empty string: inherit type from input image"</span>,<span class="stringlitera [...]
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  oformat_opt(<span class="stringliteral">"of"</span>, <span class="stringliteral">"oformat"</span>, <span class="stringliteral">"Output image format (see also gdal_translate)."</span>,<span class="stringliteral">"GTiff"</span>);</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> option_opt(<span class="stringliteral">"co"</span>, <span class="stringliteral">"co"</span>, <span class="stringliteral">"Creation option for output file. Multiple options can be specified."</span>);</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  colorTable_opt(<span class="stringliteral">"ct"</span>, <span class="stringliteral">"ct"</span>, <span class="stringliteral">"color table (file with 5 columns: id R G B ALFA (0: transparent, 255: solid)"</span>);</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>   <a class="code" href="classOptionpk.html">Optionpk<float></a>  nodata_opt(<span class="stringliteral">"nodata"</span>, <span class="stringliteral">"nodata"</span>, <span class="stringliteral">"Nodata value to put in image if out of bounds."</span>);</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  resample_opt(<span class="stringliteral">"r"</span>, <span class="stringliteral">"resampling-method"</span>, <span class="stringliteral">"Resampling method (near: nearest neighbor, bilinear: bi-linear interpolation)."</span>, <span class="stringliteral">"near"</span>);</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  description_opt(<span class="stringliteral">"d"</span>, <span class="stringliteral">"description"</span>, <span class="stringliteral">"Set image description"</span>);</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a>  align_opt(<span class="stringliteral">"align"</span>, <span class="stringliteral">"align"</span>, <span class="stringliteral">"Align output bounding box to input image"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a>  verbose_opt(<span class="stringliteral">"v"</span>, <span class="stringliteral">"verbose"</span>, <span class="stringliteral">"verbose"</span>, 0,2);</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span> </div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>   extent_opt.setHide(1);</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>   cut_opt.setHide(1);</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>   bstart_opt.setHide(1);</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>   bend_opt.setHide(1);</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>   mask_opt.setHide(1);</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>   msknodata_opt.setHide(1);</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>   mskband_opt.setHide(1);</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>   option_opt.setHide(1);</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>   cx_opt.setHide(1);</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>   cy_opt.setHide(1);</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>   nx_opt.setHide(1);</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>   ny_opt.setHide(1);</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>   ns_opt.setHide(1);</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>   nl_opt.setHide(1);</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>   scale_opt.setHide(1);</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>   offset_opt.setHide(1);</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>   nodata_opt.setHide(1);</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>   description_opt.setHide(1);</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>   </div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   <span class="keywordtype">bool</span> doProcess;<span class="comment">//stop process when program was invoked with help option (-h --help)</span></div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>     doProcess=input_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>     output_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>     projection_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>     ulx_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>     uly_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>     lrx_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>     lry_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>     band_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>     bstart_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>     bend_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>     autoscale_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>     otype_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>     oformat_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>     colorTable_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>     dx_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>     dy_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>     resample_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>     extent_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>     cut_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>     mask_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>     msknodata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>     mskband_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>     option_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>     cx_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>     cy_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>     nx_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>     ny_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>     ns_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>     nl_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>     scale_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>     offset_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>     nodata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>     description_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>     align_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>     verbose_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>   }</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> predefinedString){</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>     std::cout << predefinedString << std::endl;</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>     exit(0);</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>   }</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>     cout << setprecision(12) << <span class="stringliteral">"--ulx="</span> << ulx_opt[0] << <span class="stringliteral">" --uly="</span> << uly_opt[0] << <span class="stringliteral">" --lrx="</span> << lrx_opt[0] << <span class="stringliteral">" --lry="</span> << lry_opt[0] << endl;</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span> </div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>   <span class="keywordflow">if</span>(!doProcess){</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>     cout << endl;</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>     cout << <span class="stringliteral">"Usage: pkcrop -i input -o output"</span> << endl;</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>     cout << endl;</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>     std::cout << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << std::endl;</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>     exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>   }</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>   <span class="keywordflow">if</span>(input_opt.empty()){</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>     std::cerr << <span class="stringliteral">"No input file provided (use option -i). Use --help for help information"</span> << std::endl;</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>     exit(0);</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>   }</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>   <span class="keywordflow">if</span>(output_opt.empty()){</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>     std::cerr << <span class="stringliteral">"No output file provided (use option -o). Use --help for help information"</span> << std::endl;</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>     exit(0);</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>   }</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span> </div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>   <span class="keywordtype">float</span> nodataValue=nodata_opt.size()? nodata_opt[0] : 0;</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>   RESAMPLE theResample;</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>   <span class="keywordflow">if</span>(resample_opt[0]==<span class="stringliteral">"near"</span>){</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>     theResample=NEAR;</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>       cout << <span class="stringliteral">"resampling: nearest neighbor"</span> << endl;</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>   }</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(resample_opt[0]==<span class="stringliteral">"bilinear"</span>){</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>     theResample=BILINEAR;</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>       cout << <span class="stringliteral">"resampling: bilinear interpolation"</span> << endl;</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>   }</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>     std::cout << <span class="stringliteral">"Error: resampling method "</span> << resample_opt[0] << <span class="stringliteral">" not supported"</span> << std::endl;</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>     exit(1);</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>   }</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span> </div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>   <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>   pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>   <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> imgReader;</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>   <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> imgWriter;</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>   <span class="comment">//open input images to extract number of bands and spatial resolution</span></div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>   <span class="keywordtype">int</span> ncropband=0;<span class="comment">//total number of bands to write</span></div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>   <span class="keywordtype">double</span> dx=0;</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>   <span class="keywordtype">double</span> dy=0;</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>   <span class="keywordflow">if</span>(dx_opt.size())</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>     dx=dx_opt[0];</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>   <span class="keywordflow">if</span>(dy_opt.size())</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>     dy=dy_opt[0];</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span> </div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>   <span class="comment">//convert start and end band options to vector of band indexes</span></div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>     <span class="keywordflow">if</span>(bstart_opt.size()){</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>       <span class="keywordflow">if</span>(bend_opt.size()!=bstart_opt.size()){</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>     <span class="keywordtype">string</span> errorstring=<span class="stringliteral">"Error: options for start and end band indexes must be provided as pairs, missing end band"</span>;</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>     <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>       }</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>       band_opt.clear();</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ipair=0;ipair<bstart_opt.size();++ipair){</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>     <span class="keywordflow">if</span>(bend_opt[ipair]<=bstart_opt[ipair]){</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>       <span class="keywordtype">string</span> errorstring=<span class="stringliteral">"Error: index for end band must be smaller then start band"</span>;</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>       <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>     }</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=bstart_opt[ipair];iband<=bend_opt[ipair];++iband)</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>       band_opt.push_back(iband);</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>       }</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>     }</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>   }</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> error){</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>     cerr << error << std::endl;</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>     exit(1);</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>   }</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span> </div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>   <span class="keywordtype">bool</span> isGeoRef=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>   <span class="keywordtype">string</span> projectionString;</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iimg=0;iimg<input_opt.size();++iimg){</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>     imgReader.open(input_opt[iimg]);</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>     <span class="keywordflow">if</span>(!isGeoRef)</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>       isGeoRef=imgReader.isGeoRef();</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>     <span class="keywordflow">if</span>(imgReader.isGeoRef()&&projection_opt.empty())</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>       projectionString=imgReader.getProjection();</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>     <span class="keywordflow">if</span>(dx_opt.empty()){</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>       <span class="keywordflow">if</span>(!iimg||imgReader.getDeltaX()<dx)</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>         dx=imgReader.getDeltaX();</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>     }</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>     <span class="keywordflow">if</span>(dy_opt.empty()){</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>       <span class="keywordflow">if</span>(!iimg||imgReader.getDeltaY()<dy)</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>         dy=imgReader.getDeltaY();</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>     }</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>     <span class="keywordflow">if</span>(band_opt.size())</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>       ncropband+=band_opt.size();</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>       ncropband+=imgReader.nrOfBand();</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>     imgReader.close();</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>   }</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span> </div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>   GDALDataType theType=GDT_Unknown;</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>     cout << <span class="stringliteral">"possible output data types: "</span>;</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iType = 0; iType < GDT_TypeCount; ++iType){</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>       cout << <span class="stringliteral">" "</span> << GDALGetDataTypeName((GDALDataType)iType);</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>     <span class="keywordflow">if</span>( GDALGetDataTypeName((GDALDataType)iType) != NULL</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>         && EQUAL(GDALGetDataTypeName((GDALDataType)iType),</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>                  otype_opt[0].c_str()))</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>       theType=(GDALDataType) iType;</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>   }</div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>   <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>     cout << endl;</div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>     <span class="keywordflow">if</span>(theType==GDT_Unknown)</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>       cout << <span class="stringliteral">"Unknown output pixel type: "</span> << otype_opt[0] << endl;</div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>       cout << <span class="stringliteral">"Output pixel type:  "</span> << GDALGetDataTypeName(theType) << endl;</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>   }</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>   <span class="comment">//bounding box of cropped image</span></div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>   <span class="keywordtype">double</span> cropulx=ulx_opt[0];</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>   <span class="keywordtype">double</span> cropuly=uly_opt[0];</div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>   <span class="keywordtype">double</span> croplrx=lrx_opt[0];</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>   <span class="keywordtype">double</span> croplry=lry_opt[0];</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>   <span class="comment">//get bounding box from extentReader if defined</span></div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>   <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a> extentReader;</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span> </div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>   <span class="keywordflow">if</span>(extent_opt.size()){</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>     <span class="keywordtype">double</span> e_ulx;</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>     <span class="keywordtype">double</span> e_uly;</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>     <span class="keywordtype">double</span> e_lrx;</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>     <span class="keywordtype">double</span> e_lry;</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iextent=0;iextent<extent_opt.size();++iextent){</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>       extentReader.open(extent_opt[iextent]);</div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>       <span class="keywordflow">if</span>(!(extentReader.getExtent(e_ulx,e_uly,e_lrx,e_lry))){</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>         cerr << <span class="stringliteral">"Error: could not get extent from "</span> << extent_opt[0] << endl;</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>         exit(1);</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>       }</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>       <span class="keywordflow">if</span>(!iextent){</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>     ulx_opt[0]=e_ulx;</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>     uly_opt[0]=e_uly;</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>     lrx_opt[0]=e_lrx;</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>     lry_opt[0]=e_lry;</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>       }</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>     <span class="keywordflow">if</span>(e_ulx<ulx_opt[0])</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>       ulx_opt[0]=e_ulx;</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>     <span class="keywordflow">if</span>(e_uly>uly_opt[0])</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>       uly_opt[0]=e_uly;</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>     <span class="keywordflow">if</span>(e_lrx>lrx_opt[0])</div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>       lrx_opt[0]=e_lrx;</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>     <span class="keywordflow">if</span>(e_lry<lry_opt[0])</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>       lry_opt[0]=e_lry;</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>       }</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>       extentReader.close();</div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>     }</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>     <span class="keywordflow">if</span>(cut_opt.size())</div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>       extentReader.open(extent_opt[0]);</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>   }</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(cx_opt.size()&&cy_opt.size()&&nx_opt.size()&&ny_opt.size()){</div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>     ulx_opt[0]=cx_opt[0]-nx_opt[0]/2.0;</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>     uly_opt[0]=(isGeoRef) ? cy_opt[0]+ny_opt[0]/2.0 : cy_opt[0]-ny_opt[0]/2.0;</div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>     lrx_opt[0]=cx_opt[0]+nx_opt[0]/2.0;</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>     lry_opt[0]=(isGeoRef) ? cy_opt[0]-ny_opt[0]/2.0 : cy_opt[0]+ny_opt[0]/2.0;</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>     <span class="comment">// if(cropulx<ulx_opt[0])</span></div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>     <span class="comment">//   cropulx=ulx_opt[0];</span></div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>     <span class="comment">// if(cropuly>uly_opt[0])</span></div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>     <span class="comment">//   cropuly=uly_opt[0];</span></div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>     <span class="comment">// if(croplrx>lrx_opt[0])</span></div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>     <span class="comment">//   croplrx=lrx_opt[0];</span></div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>     <span class="comment">// if(croplry<lry_opt[0])</span></div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>     <span class="comment">//   croplry=lry_opt[0];</span></div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>   }</div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(cx_opt.size()&&cy_opt.size()&&ns_opt.size()&&nl_opt.size()){</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>     ulx_opt[0]=cx_opt[0]-ns_opt[0]*dx/2.0;</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>     uly_opt[0]=(isGeoRef) ? cy_opt[0]+nl_opt[0]*dy/2.0 : cy_opt[0]-nl_opt[0]*dy/2.0;</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>     lrx_opt[0]=cx_opt[0]+ns_opt[0]*dx/2.0;</div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>     lry_opt[0]=(isGeoRef) ? cy_opt[0]-nl_opt[0]*dy/2.0 : cy_opt[0]+nl_opt[0]*dy/2.0;</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>     <span class="comment">// if(cropulx<ulx_opt[0])</span></div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>     <span class="comment">//   cropulx=ulx_opt[0];</span></div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>     <span class="comment">// if(cropuly>uly_opt[0])</span></div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>     <span class="comment">//   cropuly=uly_opt[0];</span></div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>     <span class="comment">// if(croplrx>lrx_opt[0])</span></div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>     <span class="comment">//   croplrx=lrx_opt[0];</span></div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>     <span class="comment">// if(croplry<lry_opt[0])</span></div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>     <span class="comment">//   croplry=lry_opt[0];</span></div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>   }</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span> </div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>     cout << <span class="stringliteral">"--ulx="</span> << ulx_opt[0] << <span class="stringliteral">" --uly="</span> << uly_opt[0] << <span class="stringliteral">" --lrx="</span> << lrx_opt[0] << <span class="stringliteral">" --lry="</span> << lry_opt[0] << endl;</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span> </div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>   <span class="keywordtype">int</span> ncropcol=0;</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>   <span class="keywordtype">int</span> ncroprow=0;</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span> </div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>   <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> maskWriter;</div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>   <span class="keywordflow">if</span>(extent_opt.size()&&cut_opt[0]){</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>       ncropcol=abs(static_cast<int>(ceil((lrx_opt[0]-ulx_opt[0])/dx)));</div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>       ncroprow=abs(static_cast<int>(ceil((uly_opt[0]-lry_opt[0])/dy)));</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>       maskWriter.open(<span class="stringliteral">"/vsimem/mask.tif"</span>,ncropcol,ncroprow,1,GDT_Float32,<span class="stringliteral">"GTiff"</span>,option_opt);</div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>       <span class="keywordtype">double</span> gt[6];</div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>       gt[0]=ulx_opt[0];</div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>       gt[1]=dx;</div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>       gt[2]=0;</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>       gt[3]=uly_opt[0];</div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span>       gt[4]=0;</div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>       gt[5]=-dy;</div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>       maskWriter.setGeoTransform(gt);</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>       <span class="keywordflow">if</span>(projection_opt.size())</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span>     maskWriter.setProjectionProj4(projection_opt[0]);</div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(projectionString.size())</div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span>     maskWriter.setProjection(projectionString);</div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>     </div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>       <span class="comment">//todo: handle multiple extent options</span></div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>       vector<double> burnValues(1,1);<span class="comment">//burn value is 1 (single band)</span></div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>       maskWriter.rasterizeOgr(extentReader,burnValues);</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span>       maskWriter.close();</div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>     }</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>     <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> error){</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>       cerr << error << std::endl;</div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>       exit(2);</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span>     }</div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>     <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>       cerr << <span class="stringliteral">"error caught"</span> << std::endl;</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span>       exit(1);</div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>     }</div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span>     <span class="comment">//todo: support multiple masks</span></div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span>     mask_opt.clear();</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>     mask_opt.push_back(<span class="stringliteral">"/vsimem/mask.tif"</span>);</div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span>   }</div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span>   <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> maskReader;</div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span>   <span class="keywordflow">if</span>(mask_opt.size()){</div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span>       <span class="keywordflow">if</span>(verbose_opt[0]>=1)</div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span>     std::cout << <span class="stringliteral">"opening mask image file "</span> << mask_opt[0] << std::endl;</div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span>       maskReader.open(mask_opt[0]);</div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span>       <span class="keywordflow">if</span>(mskband_opt[0]>=maskReader.nrOfBand()){</div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>     <span class="keywordtype">string</span> errorString=<span class="stringliteral">"Error: illegal mask band"</span>;</div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span>       }</div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span>     }</div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span>     <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> error){</div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span>       cerr << error << std::endl;</div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span>       exit(2);</div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span>     }</div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span>     <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span>       cerr << <span class="stringliteral">"error caught"</span> << std::endl;</div>
-<div class="line"><a name="l00445"></a><span class="lineno">  445</span>       exit(1);</div>
-<div class="line"><a name="l00446"></a><span class="lineno">  446</span>     }</div>
-<div class="line"><a name="l00447"></a><span class="lineno">  447</span>   }</div>
-<div class="line"><a name="l00448"></a><span class="lineno">  448</span> </div>
-<div class="line"><a name="l00449"></a><span class="lineno">  449</span>   <span class="comment">//determine number of output bands</span></div>
-<div class="line"><a name="l00450"></a><span class="lineno">  450</span>   <span class="keywordtype">int</span> writeBand=0;<span class="comment">//write band</span></div>
-<div class="line"><a name="l00451"></a><span class="lineno">  451</span> </div>
-<div class="line"><a name="l00452"></a><span class="lineno">  452</span>   <span class="keywordflow">if</span>(scale_opt.size()){</div>
-<div class="line"><a name="l00453"></a><span class="lineno">  453</span>     <span class="keywordflow">while</span>(scale_opt.size()<band_opt.size())</div>
-<div class="line"><a name="l00454"></a><span class="lineno">  454</span>       scale_opt.push_back(scale_opt[0]);</div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span>   }</div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</span>   <span class="keywordflow">if</span>(offset_opt.size()){</div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span>     <span class="keywordflow">while</span>(offset_opt.size()<band_opt.size())</div>
-<div class="line"><a name="l00458"></a><span class="lineno">  458</span>       offset_opt.push_back(offset_opt[0]);</div>
-<div class="line"><a name="l00459"></a><span class="lineno">  459</span>   }</div>
-<div class="line"><a name="l00460"></a><span class="lineno">  460</span>   <span class="keywordflow">if</span>(autoscale_opt.size()){</div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span>     assert(autoscale_opt.size()%2==0);</div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span>     <span class="comment">// while(autoscale_opt.size()<band_opt.size()*2){</span></div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span>     <span class="comment">//   autoscale_opt.push_back(autoscale_opt[0]);</span></div>
-<div class="line"><a name="l00464"></a><span class="lineno">  464</span>     <span class="comment">//   autoscale_opt.push_back(autoscale_opt[1]);</span></div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span>     <span class="comment">// }</span></div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>   }</div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span> </div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iimg=0;iimg<input_opt.size();++iimg){</div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00470"></a><span class="lineno">  470</span>       cout << <span class="stringliteral">"opening image "</span> << input_opt[iimg] << endl;</div>
-<div class="line"><a name="l00471"></a><span class="lineno">  471</span>     imgReader.open(input_opt[iimg]);</div>
-<div class="line"><a name="l00472"></a><span class="lineno">  472</span>     <span class="comment">//if output type not set, get type from input image</span></div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span>     <span class="keywordflow">if</span>(theType==GDT_Unknown){</div>
-<div class="line"><a name="l00474"></a><span class="lineno">  474</span>       theType=imgReader.getDataType();</div>
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00476"></a><span class="lineno">  476</span>         cout << <span class="stringliteral">"Using data type from input image: "</span> << GDALGetDataTypeName(theType) << endl;</div>
-<div class="line"><a name="l00477"></a><span class="lineno">  477</span>     }</div>
-<div class="line"><a name="l00478"></a><span class="lineno">  478</span>     <span class="keywordflow">if</span>(option_opt.findSubstring(<span class="stringliteral">"INTERLEAVE="</span>)==option_opt.end()){</div>
-<div class="line"><a name="l00479"></a><span class="lineno">  479</span>       <span class="keywordtype">string</span> theInterleave=<span class="stringliteral">"INTERLEAVE="</span>;</div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span>       theInterleave+=imgReader.getInterleave();</div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span>       option_opt.push_back(theInterleave);</div>
-<div class="line"><a name="l00482"></a><span class="lineno">  482</span>     }</div>
-<div class="line"><a name="l00483"></a><span class="lineno">  483</span>     <span class="keywordtype">int</span> nrow=imgReader.nrOfRow();</div>
-<div class="line"><a name="l00484"></a><span class="lineno">  484</span>     <span class="keywordtype">int</span> ncol=imgReader.nrOfCol();</div>
-<div class="line"><a name="l00485"></a><span class="lineno">  485</span>     <span class="comment">// if(!dx||!dy){</span></div>
-<div class="line"><a name="l00486"></a><span class="lineno">  486</span>     <span class="comment">//   dx=imgReader.getDeltaX();</span></div>
-<div class="line"><a name="l00487"></a><span class="lineno">  487</span>     <span class="comment">//   dy=imgReader.getDeltaY();</span></div>
-<div class="line"><a name="l00488"></a><span class="lineno">  488</span>     <span class="comment">// }</span></div>
-<div class="line"><a name="l00489"></a><span class="lineno">  489</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span>       cout << <span class="stringliteral">"size of "</span> << input_opt[iimg] << <span class="stringliteral">": "</span> << ncol << <span class="stringliteral">" cols, "</span><< nrow << <span class="stringliteral">" rows"</span> << endl;</div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span>     <span class="keywordtype">double</span> uli,ulj,lri,lrj;<span class="comment">//image coordinates</span></div>
-<div class="line"><a name="l00492"></a><span class="lineno">  492</span>     <span class="keywordtype">bool</span> forceEUgrid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00493"></a><span class="lineno">  493</span>     <span class="keywordflow">if</span>(projection_opt.size())</div>
-<div class="line"><a name="l00494"></a><span class="lineno">  494</span>       forceEUgrid=(!(projection_opt[0].compare(<span class="stringliteral">"EPSG:3035"</span>))||!(projection_opt[0].compare(<span class="stringliteral">"EPSG:3035"</span>))||projection_opt[0].find(<span class="stringliteral">"ETRS-LAEA"</span>)!=string::npos);</div>
-<div class="line"><a name="l00495"></a><span class="lineno">  495</span>     <span class="keywordflow">if</span>(ulx_opt[0]>=lrx_opt[0]){<span class="comment">//default bounding box: no cropping</span></div>
-<div class="line"><a name="l00496"></a><span class="lineno">  496</span>       uli=0;</div>
-<div class="line"><a name="l00497"></a><span class="lineno">  497</span>       lri=imgReader.nrOfCol()-1;</div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span>       ulj=0;</div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span>       lrj=imgReader.nrOfRow()-1;</div>
-<div class="line"><a name="l00500"></a><span class="lineno">  500</span>       ncropcol=imgReader.nrOfCol();</div>
-<div class="line"><a name="l00501"></a><span class="lineno">  501</span>       ncroprow=imgReader.nrOfRow();</div>
-<div class="line"><a name="l00502"></a><span class="lineno">  502</span>       imgReader.getBoundingBox(cropulx,cropuly,croplrx,croplry);</div>
-<div class="line"><a name="l00503"></a><span class="lineno">  503</span>       <span class="keywordtype">double</span> magicX=1,magicY=1;</div>
-<div class="line"><a name="l00504"></a><span class="lineno">  504</span>       <span class="comment">// imgReader.getMagicPixel(magicX,magicY);</span></div>
-<div class="line"><a name="l00505"></a><span class="lineno">  505</span>       <span class="keywordflow">if</span>(forceEUgrid){</div>
-<div class="line"><a name="l00506"></a><span class="lineno">  506</span>     <span class="comment">//force to LAEA grid</span></div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span>     <a class="code" href="classEgcs.html">Egcs</a> egcs;</div>
-<div class="line"><a name="l00508"></a><span class="lineno">  508</span>         egcs.setLevel(egcs.res2level(dx));</div>
-<div class="line"><a name="l00509"></a><span class="lineno">  509</span>     egcs.force2grid(cropulx,cropuly,croplrx,croplry);</div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span>     imgReader.geo2image(cropulx+(magicX-1.0)*imgReader.getDeltaX(),cropuly-(magicY-1.0)*imgReader.getDeltaY(),uli,ulj);</div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span>     imgReader.geo2image(croplrx+(magicX-2.0)*imgReader.getDeltaX(),croplry-(magicY-2.0)*imgReader.getDeltaY(),lri,lrj);</div>
-<div class="line"><a name="l00512"></a><span class="lineno">  512</span>       }</div>
-<div class="line"><a name="l00513"></a><span class="lineno">  513</span>       imgReader.geo2image(cropulx+(magicX-1.0)*imgReader.getDeltaX(),cropuly-(magicY-1.0)*imgReader.getDeltaY(),uli,ulj);</div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span>       imgReader.geo2image(croplrx+(magicX-2.0)*imgReader.getDeltaX(),croplry-(magicY-2.0)*imgReader.getDeltaY(),lri,lrj);</div>
-<div class="line"><a name="l00515"></a><span class="lineno">  515</span>       <span class="comment">//test</span></div>
-<div class="line"><a name="l00516"></a><span class="lineno">  516</span>       ncropcol=abs(static_cast<int>(ceil((croplrx-cropulx)/dx)));</div>
-<div class="line"><a name="l00517"></a><span class="lineno">  517</span>       ncroprow=abs(static_cast<int>(ceil((cropuly-croplry)/dy)));</div>
-<div class="line"><a name="l00518"></a><span class="lineno">  518</span>     }</div>
-<div class="line"><a name="l00519"></a><span class="lineno">  519</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00520"></a><span class="lineno">  520</span>       <span class="keywordtype">double</span> magicX=1,magicY=1;</div>
-<div class="line"><a name="l00521"></a><span class="lineno">  521</span>       <span class="comment">// imgReader.getMagicPixel(magicX,magicY);</span></div>
-<div class="line"><a name="l00522"></a><span class="lineno">  522</span>       cropulx=ulx_opt[0];</div>
-<div class="line"><a name="l00523"></a><span class="lineno">  523</span>       cropuly=uly_opt[0];</div>
-<div class="line"><a name="l00524"></a><span class="lineno">  524</span>       croplrx=lrx_opt[0];</div>
-<div class="line"><a name="l00525"></a><span class="lineno">  525</span>       croplry=lry_opt[0];</div>
-<div class="line"><a name="l00526"></a><span class="lineno">  526</span>       <span class="keywordflow">if</span>(forceEUgrid){</div>
-<div class="line"><a name="l00527"></a><span class="lineno">  527</span>     <span class="comment">//force to LAEA grid</span></div>
-<div class="line"><a name="l00528"></a><span class="lineno">  528</span>     <a class="code" href="classEgcs.html">Egcs</a> egcs;</div>
-<div class="line"><a name="l00529"></a><span class="lineno">  529</span>         egcs.setLevel(egcs.res2level(dx));</div>
-<div class="line"><a name="l00530"></a><span class="lineno">  530</span>     egcs.force2grid(cropulx,cropuly,croplrx,croplry);</div>
-<div class="line"><a name="l00531"></a><span class="lineno">  531</span>       }</div>
-<div class="line"><a name="l00532"></a><span class="lineno">  532</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(align_opt[0]){</div>
-<div class="line"><a name="l00533"></a><span class="lineno">  533</span>         <span class="keywordflow">if</span>(cropulx>imgReader.getUlx())</div>
-<div class="line"><a name="l00534"></a><span class="lineno">  534</span>           cropulx-=fmod(cropulx-imgReader.getUlx(),dx);</div>
-<div class="line"><a name="l00535"></a><span class="lineno">  535</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(cropulx<imgReader.getUlx())</div>
-<div class="line"><a name="l00536"></a><span class="lineno">  536</span>           cropulx+=fmod(imgReader.getUlx()-cropulx,dx)-dx;</div>
-<div class="line"><a name="l00537"></a><span class="lineno">  537</span>         <span class="keywordflow">if</span>(croplrx<imgReader.getLrx())</div>
-<div class="line"><a name="l00538"></a><span class="lineno">  538</span>           croplrx+=fmod(imgReader.getLrx()-croplrx,dx);</div>
-<div class="line"><a name="l00539"></a><span class="lineno">  539</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(croplrx>imgReader.getLrx())</div>
-<div class="line"><a name="l00540"></a><span class="lineno">  540</span>           croplrx-=fmod(croplrx-imgReader.getLrx(),dx)+dx;</div>
-<div class="line"><a name="l00541"></a><span class="lineno">  541</span>         <span class="keywordflow">if</span>(croplry>imgReader.getLry())</div>
-<div class="line"><a name="l00542"></a><span class="lineno">  542</span>           croplry-=fmod(croplry-imgReader.getLry(),dy);</div>
-<div class="line"><a name="l00543"></a><span class="lineno">  543</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(croplry<imgReader.getLry())</div>
-<div class="line"><a name="l00544"></a><span class="lineno">  544</span>           croplry+=fmod(imgReader.getLry()-croplry,dy)-dy;</div>
-<div class="line"><a name="l00545"></a><span class="lineno">  545</span>         <span class="keywordflow">if</span>(cropuly<imgReader.getUly())</div>
-<div class="line"><a name="l00546"></a><span class="lineno">  546</span>           cropuly+=fmod(imgReader.getUly()-cropuly,dy);</div>
-<div class="line"><a name="l00547"></a><span class="lineno">  547</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(cropuly>imgReader.getUly())</div>
-<div class="line"><a name="l00548"></a><span class="lineno">  548</span>           cropuly-=fmod(cropuly-imgReader.getUly(),dy)+dy;</div>
-<div class="line"><a name="l00549"></a><span class="lineno">  549</span>       }</div>
-<div class="line"><a name="l00550"></a><span class="lineno">  550</span>       imgReader.geo2image(cropulx+(magicX-1.0)*imgReader.getDeltaX(),cropuly-(magicY-1.0)*imgReader.getDeltaY(),uli,ulj);</div>
-<div class="line"><a name="l00551"></a><span class="lineno">  551</span>       imgReader.geo2image(croplrx+(magicX-2.0)*imgReader.getDeltaX(),croplry-(magicY-2.0)*imgReader.getDeltaY(),lri,lrj);</div>
-<div class="line"><a name="l00552"></a><span class="lineno">  552</span> </div>
-<div class="line"><a name="l00553"></a><span class="lineno">  553</span>       ncropcol=abs(static_cast<int>(ceil((croplrx-cropulx)/dx)));</div>
-<div class="line"><a name="l00554"></a><span class="lineno">  554</span>       ncroprow=abs(static_cast<int>(ceil((cropuly-croplry)/dy)));</div>
-<div class="line"><a name="l00555"></a><span class="lineno">  555</span>       uli=floor(uli);</div>
-<div class="line"><a name="l00556"></a><span class="lineno">  556</span>       ulj=floor(ulj);</div>
-<div class="line"><a name="l00557"></a><span class="lineno">  557</span>       lri=floor(lri);</div>
-<div class="line"><a name="l00558"></a><span class="lineno">  558</span>       lrj=floor(lrj);</div>
-<div class="line"><a name="l00559"></a><span class="lineno">  559</span>     }</div>
-<div class="line"><a name="l00560"></a><span class="lineno">  560</span> </div>
-<div class="line"><a name="l00561"></a><span class="lineno">  561</span>     <span class="keywordtype">double</span> dcropcol=0;</div>
-<div class="line"><a name="l00562"></a><span class="lineno">  562</span>     <span class="keywordtype">double</span> dcroprow=0;</div>
-<div class="line"><a name="l00563"></a><span class="lineno">  563</span>     <span class="keywordtype">double</span> deltaX=imgReader.getDeltaX();</div>
-<div class="line"><a name="l00564"></a><span class="lineno">  564</span>     <span class="keywordtype">double</span> deltaY=imgReader.getDeltaY();</div>
-<div class="line"><a name="l00565"></a><span class="lineno">  565</span>     dcropcol=(lri-uli+1)/(dx/deltaX);</div>
-<div class="line"><a name="l00566"></a><span class="lineno">  566</span>     dcroprow=(lrj-ulj+1)/(dy/deltaY);</div>
-<div class="line"><a name="l00567"></a><span class="lineno">  567</span>     <span class="keywordflow">if</span>(!imgWriter.nrOfBand()){<span class="comment">//not opened yet</span></div>
-<div class="line"><a name="l00568"></a><span class="lineno">  568</span>       <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00569"></a><span class="lineno">  569</span>     cout << <span class="stringliteral">"cropulx: "</span> << cropulx << endl;</div>
-<div class="line"><a name="l00570"></a><span class="lineno">  570</span>     cout << <span class="stringliteral">"cropuly: "</span> << cropuly << endl;</div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span>     cout << <span class="stringliteral">"croplrx: "</span> << croplrx << endl;</div>
-<div class="line"><a name="l00572"></a><span class="lineno">  572</span>     cout << <span class="stringliteral">"croplry: "</span> << croplry << endl;</div>
-<div class="line"><a name="l00573"></a><span class="lineno">  573</span>     cout << <span class="stringliteral">"ncropcol: "</span> << ncropcol << endl;</div>
-<div class="line"><a name="l00574"></a><span class="lineno">  574</span>     cout << <span class="stringliteral">"ncroprow: "</span> << ncroprow << endl;</div>
-<div class="line"><a name="l00575"></a><span class="lineno">  575</span>     cout << <span class="stringliteral">"cropulx+ncropcol*dx: "</span> << cropulx+ncropcol*dx << endl;</div>
-<div class="line"><a name="l00576"></a><span class="lineno">  576</span>     cout << <span class="stringliteral">"cropuly-ncroprow*dy: "</span> << cropuly-ncroprow*dy << endl;</div>
-<div class="line"><a name="l00577"></a><span class="lineno">  577</span>     cout << <span class="stringliteral">"upper left column of input image: "</span> << uli << endl;</div>
-<div class="line"><a name="l00578"></a><span class="lineno">  578</span>     cout << <span class="stringliteral">"upper left row of input image: "</span> << ulj << endl;</div>
-<div class="line"><a name="l00579"></a><span class="lineno">  579</span>     cout << <span class="stringliteral">"lower right column of input image: "</span> << lri << endl;</div>
-<div class="line"><a name="l00580"></a><span class="lineno">  580</span>     cout << <span class="stringliteral">"lower right row of input image: "</span> << lrj << endl;</div>
-<div class="line"><a name="l00581"></a><span class="lineno">  581</span>     cout << <span class="stringliteral">"new number of cols: "</span> << ncropcol << endl;</div>
-<div class="line"><a name="l00582"></a><span class="lineno">  582</span>     cout << <span class="stringliteral">"new number of rows: "</span> << ncroprow << endl;</div>
-<div class="line"><a name="l00583"></a><span class="lineno">  583</span>     cout << <span class="stringliteral">"new number of bands: "</span> << ncropband << endl;</div>
-<div class="line"><a name="l00584"></a><span class="lineno">  584</span>       }</div>
-<div class="line"><a name="l00585"></a><span class="lineno">  585</span>       <span class="comment">// string theCompression;</span></div>
-<div class="line"><a name="l00586"></a><span class="lineno">  586</span>       <span class="comment">// if(compress_opt[0]!="")//default</span></div>
-<div class="line"><a name="l00587"></a><span class="lineno">  587</span>       <span class="comment">//   theCompression=compress_opt[0];</span></div>
-<div class="line"><a name="l00588"></a><span class="lineno">  588</span>       <span class="comment">// else</span></div>
-<div class="line"><a name="l00589"></a><span class="lineno">  589</span>       <span class="comment">//   theCompression=imgReader.getCompression();</span></div>
-<div class="line"><a name="l00590"></a><span class="lineno">  590</span>       <span class="comment">// string theInterleave;</span></div>
-<div class="line"><a name="l00591"></a><span class="lineno">  591</span>       <span class="comment">// if(interleave_opt[0]!="")//default</span></div>
-<div class="line"><a name="l00592"></a><span class="lineno">  592</span>       <span class="comment">//   theInterleave=interleave_opt[0];</span></div>
-<div class="line"><a name="l00593"></a><span class="lineno">  593</span>       <span class="comment">// else</span></div>
-<div class="line"><a name="l00594"></a><span class="lineno">  594</span>       <span class="comment">//   theInterleave=imgReader.getInterleave();</span></div>
-<div class="line"><a name="l00595"></a><span class="lineno">  595</span>       <span class="keywordtype">string</span> imageType;<span class="comment">//=imgReader.getImageType();</span></div>
-<div class="line"><a name="l00596"></a><span class="lineno">  596</span>       <span class="keywordflow">if</span>(oformat_opt.size())<span class="comment">//default</span></div>
-<div class="line"><a name="l00597"></a><span class="lineno">  597</span>         imageType=oformat_opt[0];</div>
-<div class="line"><a name="l00598"></a><span class="lineno">  598</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00599"></a><span class="lineno">  599</span>         imgWriter.open(output_opt[0],ncropcol,ncroprow,ncropband,theType,imageType,option_opt);</div>
-<div class="line"><a name="l00600"></a><span class="lineno">  600</span>     <span class="keywordflow">if</span>(nodata_opt.size()){</div>
-<div class="line"><a name="l00601"></a><span class="lineno">  601</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<ncropband;++iband)</div>
-<div class="line"><a name="l00602"></a><span class="lineno">  602</span>         imgWriter.GDALSetNoDataValue(nodata_opt[0],iband);</div>
-<div class="line"><a name="l00603"></a><span class="lineno">  603</span>     }</div>
-<div class="line"><a name="l00604"></a><span class="lineno">  604</span>       }</div>
-<div class="line"><a name="l00605"></a><span class="lineno">  605</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00606"></a><span class="lineno">  606</span>         cout << errorstring << endl;</div>
-<div class="line"><a name="l00607"></a><span class="lineno">  607</span>         exit(4);</div>
-<div class="line"><a name="l00608"></a><span class="lineno">  608</span>       }</div>
-<div class="line"><a name="l00609"></a><span class="lineno">  609</span>       <span class="keywordflow">if</span>(description_opt.size())</div>
-<div class="line"><a name="l00610"></a><span class="lineno">  610</span>     imgWriter.setImageDescription(description_opt[0]);</div>
-<div class="line"><a name="l00611"></a><span class="lineno">  611</span>       <span class="keywordtype">double</span> gt[6];</div>
-<div class="line"><a name="l00612"></a><span class="lineno">  612</span>       gt[0]=cropulx;</div>
-<div class="line"><a name="l00613"></a><span class="lineno">  613</span>       gt[1]=dx;</div>
-<div class="line"><a name="l00614"></a><span class="lineno">  614</span>       gt[2]=0;</div>
-<div class="line"><a name="l00615"></a><span class="lineno">  615</span>       gt[3]=cropuly;</div>
-<div class="line"><a name="l00616"></a><span class="lineno">  616</span>       gt[4]=0;</div>
-<div class="line"><a name="l00617"></a><span class="lineno">  617</span>       gt[5]=(imgReader.isGeoRef())? -dy : dy;</div>
-<div class="line"><a name="l00618"></a><span class="lineno">  618</span>       imgWriter.setGeoTransform(gt);</div>
-<div class="line"><a name="l00619"></a><span class="lineno">  619</span>       <span class="keywordflow">if</span>(projection_opt.size()){</div>
-<div class="line"><a name="l00620"></a><span class="lineno">  620</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00621"></a><span class="lineno">  621</span>       cout << <span class="stringliteral">"projection: "</span> << projection_opt[0] << endl;</div>
-<div class="line"><a name="l00622"></a><span class="lineno">  622</span>     imgWriter.setProjectionProj4(projection_opt[0]);</div>
-<div class="line"><a name="l00623"></a><span class="lineno">  623</span>       }</div>
-<div class="line"><a name="l00624"></a><span class="lineno">  624</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00625"></a><span class="lineno">  625</span>     imgWriter.setProjection(imgReader.getProjection());</div>
-<div class="line"><a name="l00626"></a><span class="lineno">  626</span>       <span class="keywordflow">if</span>(imgWriter.getDataType()==GDT_Byte){</div>
-<div class="line"><a name="l00627"></a><span class="lineno">  627</span>     <span class="keywordflow">if</span>(colorTable_opt.size()){</div>
-<div class="line"><a name="l00628"></a><span class="lineno">  628</span>       <span class="keywordflow">if</span>(colorTable_opt[0]!=<span class="stringliteral">"none"</span>)</div>
-<div class="line"><a name="l00629"></a><span class="lineno">  629</span>         imgWriter.setColorTable(colorTable_opt[0]);</div>
-<div class="line"><a name="l00630"></a><span class="lineno">  630</span>     }</div>
-<div class="line"><a name="l00631"></a><span class="lineno">  631</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (imgReader.getColorTable()!=NULL)<span class="comment">//copy colorTable from input image</span></div>
-<div class="line"><a name="l00632"></a><span class="lineno">  632</span>       imgWriter.setColorTable(imgReader.getColorTable());</div>
-<div class="line"><a name="l00633"></a><span class="lineno">  633</span>       }</div>
-<div class="line"><a name="l00634"></a><span class="lineno">  634</span>     }</div>
-<div class="line"><a name="l00635"></a><span class="lineno">  635</span> </div>
-<div class="line"><a name="l00636"></a><span class="lineno">  636</span>     <span class="keywordtype">double</span> startCol=uli;</div>
-<div class="line"><a name="l00637"></a><span class="lineno">  637</span>     <span class="keywordtype">double</span> endCol=lri;</div>
-<div class="line"><a name="l00638"></a><span class="lineno">  638</span>     <span class="keywordflow">if</span>(uli<0)</div>
-<div class="line"><a name="l00639"></a><span class="lineno">  639</span>       startCol=0;</div>
-<div class="line"><a name="l00640"></a><span class="lineno">  640</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(uli>=imgReader.nrOfCol())</div>
-<div class="line"><a name="l00641"></a><span class="lineno">  641</span>       startCol=imgReader.nrOfCol()-1;</div>
-<div class="line"><a name="l00642"></a><span class="lineno">  642</span>     <span class="keywordflow">if</span>(lri<0)</div>
-<div class="line"><a name="l00643"></a><span class="lineno">  643</span>       endCol=0;</div>
-<div class="line"><a name="l00644"></a><span class="lineno">  644</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(lri>=imgReader.nrOfCol())</div>
-<div class="line"><a name="l00645"></a><span class="lineno">  645</span>       endCol=imgReader.nrOfCol()-1;</div>
-<div class="line"><a name="l00646"></a><span class="lineno">  646</span>     <span class="keywordtype">double</span> startRow=ulj;</div>
-<div class="line"><a name="l00647"></a><span class="lineno">  647</span>     <span class="keywordtype">double</span> endRow=lrj;</div>
-<div class="line"><a name="l00648"></a><span class="lineno">  648</span>     <span class="keywordflow">if</span>(ulj<0)</div>
-<div class="line"><a name="l00649"></a><span class="lineno">  649</span>       startRow=0;</div>
-<div class="line"><a name="l00650"></a><span class="lineno">  650</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ulj>=imgReader.nrOfRow())</div>
-<div class="line"><a name="l00651"></a><span class="lineno">  651</span>       startRow=imgReader.nrOfRow()-1;</div>
-<div class="line"><a name="l00652"></a><span class="lineno">  652</span>     <span class="keywordflow">if</span>(lrj<0)</div>
-<div class="line"><a name="l00653"></a><span class="lineno">  653</span>       endRow=0;</div>
-<div class="line"><a name="l00654"></a><span class="lineno">  654</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(lrj>=imgReader.nrOfRow())</div>
-<div class="line"><a name="l00655"></a><span class="lineno">  655</span>       endRow=imgReader.nrOfRow()-1;</div>
-<div class="line"><a name="l00656"></a><span class="lineno">  656</span> </div>
-<div class="line"><a name="l00657"></a><span class="lineno">  657</span> </div>
-<div class="line"><a name="l00658"></a><span class="lineno">  658</span> </div>
-<div class="line"><a name="l00659"></a><span class="lineno">  659</span>     <span class="keywordtype">int</span> readncol=endCol-startCol+1;</div>
-<div class="line"><a name="l00660"></a><span class="lineno">  660</span>     vector<double> readBuffer(readncol+1);</div>
-<div class="line"><a name="l00661"></a><span class="lineno">  661</span>     <span class="keywordtype">int</span> nband=(band_opt.size())?band_opt.size() : imgReader.nrOfBand();</div>
-<div class="line"><a name="l00662"></a><span class="lineno">  662</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l00663"></a><span class="lineno">  663</span>       <span class="keywordtype">int</span> readBand=(band_opt.size()>iband)?band_opt[iband]:iband;</div>
-<div class="line"><a name="l00664"></a><span class="lineno">  664</span>       <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00665"></a><span class="lineno">  665</span>     cout << <span class="stringliteral">"extracting band "</span> << readBand << endl;</div>
-<div class="line"><a name="l00666"></a><span class="lineno">  666</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00667"></a><span class="lineno">  667</span>       }</div>
-<div class="line"><a name="l00668"></a><span class="lineno">  668</span>       <span class="keywordtype">double</span> theMin=0;</div>
-<div class="line"><a name="l00669"></a><span class="lineno">  669</span>       <span class="keywordtype">double</span> theMax=0;</div>
-<div class="line"><a name="l00670"></a><span class="lineno">  670</span>       <span class="keywordflow">if</span>(autoscale_opt.size()){</div>
-<div class="line"><a name="l00671"></a><span class="lineno">  671</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00672"></a><span class="lineno">  672</span>       imgReader.getMinMax(static_cast<int>(startCol),static_cast<int>(endCol),static_cast<int>(startRow),static_cast<int>(endRow),readBand,theMin,theMax);</div>
-<div class="line"><a name="l00673"></a><span class="lineno">  673</span>     }</div>
-<div class="line"><a name="l00674"></a><span class="lineno">  674</span>     <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorString){</div>
-<div class="line"><a name="l00675"></a><span class="lineno">  675</span>       cout << errorString << endl;</div>
-<div class="line"><a name="l00676"></a><span class="lineno">  676</span>     }</div>
-<div class="line"><a name="l00677"></a><span class="lineno">  677</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00678"></a><span class="lineno">  678</span>       cout << <span class="stringliteral">"minmax: "</span> << theMin << <span class="stringliteral">", "</span> << theMax << endl;</div>
-<div class="line"><a name="l00679"></a><span class="lineno">  679</span>     <span class="keywordtype">double</span> theScale=(autoscale_opt[1]-autoscale_opt[0])/(theMax-theMin);</div>
-<div class="line"><a name="l00680"></a><span class="lineno">  680</span>     <span class="keywordtype">double</span> theOffset=autoscale_opt[0]-theScale*theMin;</div>
-<div class="line"><a name="l00681"></a><span class="lineno">  681</span>     imgReader.setScale(theScale,readBand);</div>
-<div class="line"><a name="l00682"></a><span class="lineno">  682</span>     imgReader.setOffset(theOffset,readBand);</div>
-<div class="line"><a name="l00683"></a><span class="lineno">  683</span>       } </div>
-<div class="line"><a name="l00684"></a><span class="lineno">  684</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00685"></a><span class="lineno">  685</span>     <span class="keywordflow">if</span>(scale_opt.size()){</div>
-<div class="line"><a name="l00686"></a><span class="lineno">  686</span>       <span class="keywordflow">if</span>(scale_opt.size()>iband)</div>
-<div class="line"><a name="l00687"></a><span class="lineno">  687</span>         imgReader.setScale(scale_opt[iband],readBand);</div>
-<div class="line"><a name="l00688"></a><span class="lineno">  688</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00689"></a><span class="lineno">  689</span>         imgReader.setScale(scale_opt[0],readBand);</div>
-<div class="line"><a name="l00690"></a><span class="lineno">  690</span>     }</div>
-<div class="line"><a name="l00691"></a><span class="lineno">  691</span>     <span class="keywordflow">if</span>(offset_opt.size()){</div>
-<div class="line"><a name="l00692"></a><span class="lineno">  692</span>       <span class="keywordflow">if</span>(offset_opt.size()>iband)</div>
-<div class="line"><a name="l00693"></a><span class="lineno">  693</span>         imgReader.setOffset(offset_opt[iband],readBand);</div>
-<div class="line"><a name="l00694"></a><span class="lineno">  694</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00695"></a><span class="lineno">  695</span>         imgReader.setOffset(offset_opt[0],readBand);</div>
-<div class="line"><a name="l00696"></a><span class="lineno">  696</span>     }</div>
-<div class="line"><a name="l00697"></a><span class="lineno">  697</span>       }</div>
-<div class="line"><a name="l00698"></a><span class="lineno">  698</span> </div>
-<div class="line"><a name="l00699"></a><span class="lineno">  699</span>       <span class="keywordtype">double</span> readRow=0;</div>
-<div class="line"><a name="l00700"></a><span class="lineno">  700</span>       <span class="keywordtype">double</span> readCol=0;</div>
-<div class="line"><a name="l00701"></a><span class="lineno">  701</span>       <span class="keywordtype">double</span> lowerCol=0;</div>
-<div class="line"><a name="l00702"></a><span class="lineno">  702</span>       <span class="keywordtype">double</span> upperCol=0;</div>
-<div class="line"><a name="l00703"></a><span class="lineno">  703</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<imgWriter.nrOfRow();++irow){</div>
-<div class="line"><a name="l00704"></a><span class="lineno">  704</span>     vector<float> lineMask;</div>
-<div class="line"><a name="l00705"></a><span class="lineno">  705</span>     <span class="keywordtype">double</span> x=0;</div>
-<div class="line"><a name="l00706"></a><span class="lineno">  706</span>     <span class="keywordtype">double</span> y=0;</div>
-<div class="line"><a name="l00707"></a><span class="lineno">  707</span>     <span class="comment">//convert irow to geo</span></div>
-<div class="line"><a name="l00708"></a><span class="lineno">  708</span>     imgWriter.image2geo(0,irow,x,y);</div>
-<div class="line"><a name="l00709"></a><span class="lineno">  709</span>     <span class="comment">//lookup corresponding row for irow in this file</span></div>
-<div class="line"><a name="l00710"></a><span class="lineno">  710</span>     imgReader.geo2image(x,y,readCol,readRow);</div>
-<div class="line"><a name="l00711"></a><span class="lineno">  711</span>     vector<double> writeBuffer;</div>
-<div class="line"><a name="l00712"></a><span class="lineno">  712</span>     <span class="keywordflow">if</span>(readRow<0||readRow>=imgReader.nrOfRow()){</div>
-<div class="line"><a name="l00713"></a><span class="lineno">  713</span>       <span class="comment">//if(readRow<0)</span></div>
-<div class="line"><a name="l00714"></a><span class="lineno">  714</span>       <span class="comment">//readRow=0;</span></div>
-<div class="line"><a name="l00715"></a><span class="lineno">  715</span>       <span class="comment">//else if(readRow>=imgReader.nrOfRow())</span></div>
-<div class="line"><a name="l00716"></a><span class="lineno">  716</span>       <span class="comment">//readRow=imgReader.nrOfRow()-1;</span></div>
-<div class="line"><a name="l00717"></a><span class="lineno">  717</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<imgWriter.nrOfCol();++icol)</div>
-<div class="line"><a name="l00718"></a><span class="lineno">  718</span>         writeBuffer.push_back(nodataValue);</div>
-<div class="line"><a name="l00719"></a><span class="lineno">  719</span>     }</div>
-<div class="line"><a name="l00720"></a><span class="lineno">  720</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00721"></a><span class="lineno">  721</span>       <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00722"></a><span class="lineno">  722</span>         cout << <span class="stringliteral">"reading row: "</span> << readRow << endl;</div>
-<div class="line"><a name="l00723"></a><span class="lineno">  723</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00724"></a><span class="lineno">  724</span>             <span class="keywordflow">if</span>(endCol<imgReader.nrOfCol()-1)</div>
-<div class="line"><a name="l00725"></a><span class="lineno">  725</span>               imgReader.readData(readBuffer,GDT_Float64,startCol,endCol+1,readRow,readBand,theResample);</div>
-<div class="line"><a name="l00726"></a><span class="lineno">  726</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00727"></a><span class="lineno">  727</span>               imgReader.readData(readBuffer,GDT_Float64,startCol,endCol,readRow,readBand,theResample);</div>
-<div class="line"><a name="l00728"></a><span class="lineno">  728</span>         <span class="comment">// for(int icol=0;icol<ncropcol;++icol){</span></div>
-<div class="line"><a name="l00729"></a><span class="lineno">  729</span>         <span class="keywordtype">double</span> oldRowMask=-1;<span class="comment">//keep track of row mask to optimize number of line readings</span></div>
-<div class="line"><a name="l00730"></a><span class="lineno">  730</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<imgWriter.nrOfCol();++icol){</div>
-<div class="line"><a name="l00731"></a><span class="lineno">  731</span>           imgWriter.image2geo(icol,irow,x,y);</div>
-<div class="line"><a name="l00732"></a><span class="lineno">  732</span>           <span class="comment">//lookup corresponding row for irow in this file</span></div>
-<div class="line"><a name="l00733"></a><span class="lineno">  733</span>           imgReader.geo2image(x,y,readCol,readRow);</div>
-<div class="line"><a name="l00734"></a><span class="lineno">  734</span>           <span class="keywordflow">if</span>(readCol<0||readCol>=imgReader.nrOfCol()){</div>
-<div class="line"><a name="l00735"></a><span class="lineno">  735</span>           <span class="comment">// if(readCol<0||readCol>=imgReader.nrOfCol()){</span></div>
-<div class="line"><a name="l00736"></a><span class="lineno">  736</span>         <span class="comment">//               if(readCol<0)</span></div>
-<div class="line"><a name="l00737"></a><span class="lineno">  737</span>         <span class="comment">//                 readCol=0;</span></div>
-<div class="line"><a name="l00738"></a><span class="lineno">  738</span>         <span class="comment">//               else if(readCol>=imgReader.nrOfCol())</span></div>
-<div class="line"><a name="l00739"></a><span class="lineno">  739</span>         <span class="comment">//                 readCol=imgReader.nrOfCol()-1;</span></div>
-<div class="line"><a name="l00740"></a><span class="lineno">  740</span>         writeBuffer.push_back(nodataValue);</div>
-<div class="line"><a name="l00741"></a><span class="lineno">  741</span>           }</div>
-<div class="line"><a name="l00742"></a><span class="lineno">  742</span>           <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00743"></a><span class="lineno">  743</span>                 <span class="keywordtype">bool</span> valid=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00744"></a><span class="lineno">  744</span>         <span class="keywordtype">double</span> geox=0;</div>
-<div class="line"><a name="l00745"></a><span class="lineno">  745</span>         <span class="keywordtype">double</span> geoy=0;</div>
-<div class="line"><a name="l00746"></a><span class="lineno">  746</span>                 <span class="keywordflow">if</span>(mask_opt.size()){</div>
-<div class="line"><a name="l00747"></a><span class="lineno">  747</span>           <span class="comment">//read mask</span></div>
-<div class="line"><a name="l00748"></a><span class="lineno">  748</span>           <span class="keywordtype">double</span> colMask=0;</div>
-<div class="line"><a name="l00749"></a><span class="lineno">  749</span>           <span class="keywordtype">double</span> rowMask=0;</div>
-<div class="line"><a name="l00750"></a><span class="lineno">  750</span> </div>
-<div class="line"><a name="l00751"></a><span class="lineno">  751</span>           imgWriter.image2geo(icol,irow,geox,geoy);</div>
-<div class="line"><a name="l00752"></a><span class="lineno">  752</span>           maskReader.geo2image(geox,geoy,colMask,rowMask);</div>
-<div class="line"><a name="l00753"></a><span class="lineno">  753</span>           colMask=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(colMask);</div>
-<div class="line"><a name="l00754"></a><span class="lineno">  754</span>           rowMask=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(rowMask);</div>
-<div class="line"><a name="l00755"></a><span class="lineno">  755</span>           <span class="keywordflow">if</span>(rowMask>=0&&rowMask<maskReader.nrOfRow()&&colMask>=0&&colMask<maskReader.nrOfCol()){</div>
-<div class="line"><a name="l00756"></a><span class="lineno">  756</span>             <span class="keywordflow">if</span>(static_cast<int>(rowMask)!=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(oldRowMask)){</div>
-<div class="line"><a name="l00757"></a><span class="lineno">  757</span> </div>
-<div class="line"><a name="l00758"></a><span class="lineno">  758</span>               assert(rowMask>=0&&rowMask<maskReader.nrOfRow());</div>
-<div class="line"><a name="l00759"></a><span class="lineno">  759</span>               <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00760"></a><span class="lineno">  760</span>             maskReader.readData(lineMask,GDT_Float32,static_cast<int>(rowMask),mskband_opt[0]);</div>
-<div class="line"><a name="l00761"></a><span class="lineno">  761</span>               }</div>
-<div class="line"><a name="l00762"></a><span class="lineno">  762</span>               <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00763"></a><span class="lineno">  763</span>             cerr << errorstring << endl;</div>
-<div class="line"><a name="l00764"></a><span class="lineno">  764</span>             exit(1);</div>
-<div class="line"><a name="l00765"></a><span class="lineno">  765</span>               }</div>
-<div class="line"><a name="l00766"></a><span class="lineno">  766</span>               <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l00767"></a><span class="lineno">  767</span>             cerr << <span class="stringliteral">"error caught"</span> << std::endl;</div>
-<div class="line"><a name="l00768"></a><span class="lineno">  768</span>             exit(3);</div>
-<div class="line"><a name="l00769"></a><span class="lineno">  769</span>               }</div>
-<div class="line"><a name="l00770"></a><span class="lineno">  770</span>               oldRowMask=rowMask;</div>
-<div class="line"><a name="l00771"></a><span class="lineno">  771</span>             }</div>
-<div class="line"><a name="l00772"></a><span class="lineno">  772</span>             <span class="keywordflow">if</span>(lineMask[colMask]==msknodata_opt[0])</div>
-<div class="line"><a name="l00773"></a><span class="lineno">  773</span>               valid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00774"></a><span class="lineno">  774</span>           }</div>
-<div class="line"><a name="l00775"></a><span class="lineno">  775</span>         }</div>
-<div class="line"><a name="l00776"></a><span class="lineno">  776</span> </div>
-<div class="line"><a name="l00777"></a><span class="lineno">  777</span>                 <span class="keywordflow">if</span>(!valid)</div>
-<div class="line"><a name="l00778"></a><span class="lineno">  778</span>                   writeBuffer.push_back(nodataValue);</div>
-<div class="line"><a name="l00779"></a><span class="lineno">  779</span>                 <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00780"></a><span class="lineno">  780</span>                   <span class="keywordflow">switch</span>(theResample){</div>
-<div class="line"><a name="l00781"></a><span class="lineno">  781</span>                   <span class="keywordflow">case</span>(BILINEAR):</div>
-<div class="line"><a name="l00782"></a><span class="lineno">  782</span>                     lowerCol=readCol-0.5;</div>
-<div class="line"><a name="l00783"></a><span class="lineno">  783</span>                     lowerCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(lowerCol);</div>
-<div class="line"><a name="l00784"></a><span class="lineno">  784</span>                     upperCol=readCol+0.5;</div>
-<div class="line"><a name="l00785"></a><span class="lineno">  785</span>                     upperCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(upperCol);</div>
-<div class="line"><a name="l00786"></a><span class="lineno">  786</span>                     <span class="keywordflow">if</span>(lowerCol<0)</div>
-<div class="line"><a name="l00787"></a><span class="lineno">  787</span>                       lowerCol=0;</div>
-<div class="line"><a name="l00788"></a><span class="lineno">  788</span>                     <span class="keywordflow">if</span>(upperCol>=imgReader.nrOfCol())</div>
-<div class="line"><a name="l00789"></a><span class="lineno">  789</span>                       upperCol=imgReader.nrOfCol()-1;</div>
-<div class="line"><a name="l00790"></a><span class="lineno">  790</span>                     <span class="comment">// writeBuffer.push_back((readCol-0.5-lowerCol)*(readBuffer[upperCol-startCol]*theScale+theOffset)+(1-readCol+0.5+lowerCol)*(readBuffer[lowerCol-startCol]*theScale+theOffset));</span></div>
-<div class="line"><a name="l00791"></a><span class="lineno">  791</span>                     writeBuffer.push_back((readCol-0.5-lowerCol)*readBuffer[upperCol-startCol]+(1-readCol+0.5+lowerCol)*readBuffer[lowerCol-startCol]);</div>
-<div class="line"><a name="l00792"></a><span class="lineno">  792</span>                     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00793"></a><span class="lineno">  793</span>                   <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00794"></a><span class="lineno">  794</span>                     readCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(readCol);</div>
-<div class="line"><a name="l00795"></a><span class="lineno">  795</span>                     readCol-=startCol;<span class="comment">//we only start reading from startCol</span></div>
-<div class="line"><a name="l00796"></a><span class="lineno">  796</span>                     <span class="comment">// writeBuffer.push_back(readBuffer[readCol]*theScale+theOffset);</span></div>
-<div class="line"><a name="l00797"></a><span class="lineno">  797</span>                     writeBuffer.push_back(readBuffer[readCol]);</div>
-<div class="line"><a name="l00798"></a><span class="lineno">  798</span>                     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00799"></a><span class="lineno">  799</span>           }</div>
-<div class="line"><a name="l00800"></a><span class="lineno">  800</span>         }</div>
-<div class="line"><a name="l00801"></a><span class="lineno">  801</span>           }</div>
-<div class="line"><a name="l00802"></a><span class="lineno">  802</span>         }</div>
-<div class="line"><a name="l00803"></a><span class="lineno">  803</span>       }</div>
-<div class="line"><a name="l00804"></a><span class="lineno">  804</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00805"></a><span class="lineno">  805</span>         cout << errorstring << endl;</div>
-<div class="line"><a name="l00806"></a><span class="lineno">  806</span>         exit(2);</div>
-<div class="line"><a name="l00807"></a><span class="lineno">  807</span>       }</div>
-<div class="line"><a name="l00808"></a><span class="lineno">  808</span>     }</div>
-<div class="line"><a name="l00809"></a><span class="lineno">  809</span>     <span class="keywordflow">if</span>(writeBuffer.size()!=imgWriter.nrOfCol())</div>
-<div class="line"><a name="l00810"></a><span class="lineno">  810</span>       cout << <span class="stringliteral">"writeBuffer.size()="</span> << writeBuffer.size() << <span class="stringliteral">", imgWriter.nrOfCol()="</span> << imgWriter.nrOfCol() << endl;</div>
-<div class="line"><a name="l00811"></a><span class="lineno">  811</span>     assert(writeBuffer.size()==imgWriter.nrOfCol());</div>
-<div class="line"><a name="l00812"></a><span class="lineno">  812</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00813"></a><span class="lineno">  813</span>       imgWriter.writeData(writeBuffer,GDT_Float64,irow,writeBand);</div>
-<div class="line"><a name="l00814"></a><span class="lineno">  814</span>     }</div>
-<div class="line"><a name="l00815"></a><span class="lineno">  815</span>     <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00816"></a><span class="lineno">  816</span>       cout << errorstring << endl;</div>
-<div class="line"><a name="l00817"></a><span class="lineno">  817</span>       exit(3);</div>
-<div class="line"><a name="l00818"></a><span class="lineno">  818</span>     }</div>
-<div class="line"><a name="l00819"></a><span class="lineno">  819</span>     <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00820"></a><span class="lineno">  820</span>       progress=(1.0+irow);</div>
-<div class="line"><a name="l00821"></a><span class="lineno">  821</span>       progress/=imgWriter.nrOfRow();</div>
-<div class="line"><a name="l00822"></a><span class="lineno">  822</span>       pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00823"></a><span class="lineno">  823</span>     }</div>
-<div class="line"><a name="l00824"></a><span class="lineno">  824</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00825"></a><span class="lineno">  825</span>       progress=(1.0+irow);</div>
-<div class="line"><a name="l00826"></a><span class="lineno">  826</span>       progress+=(imgWriter.nrOfRow()*writeBand);</div>
-<div class="line"><a name="l00827"></a><span class="lineno">  827</span>       progress/=imgWriter.nrOfBand()*imgWriter.nrOfRow();</div>
-<div class="line"><a name="l00828"></a><span class="lineno">  828</span>       assert(progress>=0);</div>
-<div class="line"><a name="l00829"></a><span class="lineno">  829</span>       assert(progress<=1);</div>
-<div class="line"><a name="l00830"></a><span class="lineno">  830</span>       pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00831"></a><span class="lineno">  831</span>     }</div>
-<div class="line"><a name="l00832"></a><span class="lineno">  832</span>       }</div>
-<div class="line"><a name="l00833"></a><span class="lineno">  833</span>       ++writeBand;</div>
-<div class="line"><a name="l00834"></a><span class="lineno">  834</span>     }</div>
-<div class="line"><a name="l00835"></a><span class="lineno">  835</span>     imgReader.close();</div>
-<div class="line"><a name="l00836"></a><span class="lineno">  836</span>   }</div>
-<div class="line"><a name="l00837"></a><span class="lineno">  837</span>   <span class="keywordflow">if</span>(extent_opt.size()&&cut_opt.size()){</div>
-<div class="line"><a name="l00838"></a><span class="lineno">  838</span>     extentReader.close();</div>
-<div class="line"><a name="l00839"></a><span class="lineno">  839</span>   }</div>
-<div class="line"><a name="l00840"></a><span class="lineno">  840</span>   <span class="keywordflow">if</span>(mask_opt.size())</div>
-<div class="line"><a name="l00841"></a><span class="lineno">  841</span>     maskReader.close();</div>
-<div class="line"><a name="l00842"></a><span class="lineno">  842</span>   imgWriter.close();</div>
-<div class="line"><a name="l00843"></a><span class="lineno">  843</span> }</div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-<div class="ttc" id="classImgWriterGdal_html"><div class="ttname"><a href="classImgWriterGdal.html">ImgWriterGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgWriterGdal_8h_source.html#l00033">ImgWriterGdal.h:33</a></div></div>
-<div class="ttc" id="classImgReaderOgr_html"><div class="ttname"><a href="classImgReaderOgr.html">ImgReaderOgr</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderOgr_8h_source.html#l00035">ImgReaderOgr.h:35</a></div></div>
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-<div class="ttc" id="classEgcs_html"><div class="ttname"><a href="classEgcs.html">Egcs</a></div><div class="ttdef"><b>Definition:</b> <a href="Egcs_8h_source.html#l00026">Egcs.h:26</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkcrop_8py_source.html b/doc/html/pkcrop_8py_source.html
deleted file mode 100644
index 76b3546..0000000
--- a/doc/html/pkcrop_8py_source.html
+++ /dev/null
@@ -1,216 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/pkcrop.py Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkcrop.py</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment"># -*- coding: utf-8 -*-</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> </div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="stringliteral">    pkcrop.py</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="stringliteral">    ---------------------</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="stringliteral">    Date                 : April 2015</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="stringliteral">    Copyright            : (C) 2015 by Pieter Kempeneers</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="stringliteral">    Email                : kempenep at gmail dot com</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="stringliteral">*   This program is free software; you can redistribute it and/or modify  *</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="stringliteral">*   it under the terms of the GNU General Public License as published by  *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="stringliteral">*   the Free Software Foundation; either version 2 of the License, or     *</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="stringliteral">*   (at your option) any later version.                                   *</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> __author__ = <span class="stringliteral">'Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> __date__ = <span class="stringliteral">'April 2015'</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> __copyright__ = <span class="stringliteral">'(C) 2015, Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"># This will get replaced with a git SHA1 when you do a git archive</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> __revision__ = <span class="stringliteral">'$Format:%H$'</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">import</span> os</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">from</span> pktoolsUtils <span class="keyword">import</span> pktoolsUtils</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">from</span> pktoolsAlgorithm <span class="keyword">import</span> pktoolsAlgorithm</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterMultipleInput</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterRaster</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">from</span> processing.core.outputs <span class="keyword">import</span> OutputRaster</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterSelection</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterNumber</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterString</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterBoolean</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterExtent</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
-<div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classqgis_1_1pkcrop_1_1pkcrop.html">   38</a></span> <span class="keyword">class </span><a class="code" href="classqgis_1_1pkcrop_1_1pkcrop.html">pkcrop</a>(pktoolsAlgorithm):</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> </div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     INPUT = <span class="stringliteral">"INPUT"</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     OUTPUT = <span class="stringliteral">"OUTPUT"</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     DX = <span class="stringliteral">"DX"</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     DY = <span class="stringliteral">"DY"</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     PROJWIN = <span class="stringliteral">'PROJWIN'</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     BAND = <span class="stringliteral">"BAND"</span></div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     NODATA = <span class="stringliteral">"NODATA"</span></div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     RESAMPLE_OPTIONS = [<span class="stringliteral">'near'</span>, <span class="stringliteral">'bilinear'</span>]</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     RESAMPLE = <span class="stringliteral">"RESAMPLE"</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     RTYPE = <span class="stringliteral">'RTYPE'</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     TYPE = [<span class="stringliteral">'none'</span>, <span class="stringliteral">'Byte'</span>,<span class="stringliteral">'Int16'</span>,<span class="stringliteral">'UInt16'</span>,<span class="stringliteral">'UInt32'</span>,<span class="stringliteral">'Int32'</span>,<span class="stringliteral">'Float32'</span>,<span class="stringliteral">'Float64&# [...]
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     EXTRA = <span class="stringliteral">'EXTRA'</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span> </div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     <span class="keyword">def </span>cliName(self):</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>         <span class="keywordflow">return</span> <span class="stringliteral">"pkcrop"</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span> </div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <span class="keyword">def </span>defineCharacteristics(self):</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>         self.<a class="code" href="classqgis_1_1pkcrop_1_1pkcrop.html#a21c98defb19a723cbdbcae90e5c414b9">name</a> = <span class="stringliteral">"crop raster datasets"</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>         self.<a class="code" href="classqgis_1_1pkcrop_1_1pkcrop.html#a15a208344b67a578ed7592105617762f">group</a> = <span class="stringliteral">"[pktools] raster"</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>         self.addParameter(ParameterMultipleInput(self.<a class="code" href="classqgis_1_1pkcrop_1_1pkcrop.html#a660abf1b5edd9b7c39f49a48748e73b5">INPUT</a>, <span class="stringliteral">'Input layer raster data set'</span>,ParameterMultipleInput.TYPE_RASTER))</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>         self.addOutput(OutputRaster(self.<a class="code" href="classqgis_1_1pkcrop_1_1pkcrop.html#afab963f14ed687777ea04b6b03a44708">OUTPUT</a>, <span class="stringliteral">"Output raster data set"</span>))</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pkcrop_1_1pkcrop.html#a67d94ff9e997ceda91ff39334e1e668a">RTYPE</a>, <span class="stringliteral">'Output raster type (leave as none to keep original type)'</span>, self.<a class="code" href="classqgis_1_1pkcrop_1_1pkcrop.html#aa901690d584f08efbc4a4225985fde89">TYPE</a>, 0))</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>         self.addParameter(ParameterNumber(self.<a class="code" href="classqgis_1_1pkcrop_1_1pkcrop.html#aa64c23657fe96444fe2d03717be4b5c5">DX</a>, <span class="stringliteral">"Output resolution in x (leave 0 for no change)"</span>,0.0,<span class="keywordtype">None</span>,0.0))</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>         self.addParameter(ParameterNumber(self.<a class="code" href="classqgis_1_1pkcrop_1_1pkcrop.html#ac5779beb227252f20da289d505f4deee">DY</a>, <span class="stringliteral">"Output resolution in y (leave 0 for no change)"</span>,0.0,<span class="keywordtype">None</span>,0.0))</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>         self.addParameter(ParameterExtent(self.<a class="code" href="classqgis_1_1pkcrop_1_1pkcrop.html#a6f6f27285700550bb52391c36d130328">PROJWIN</a>,</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>                           <span class="stringliteral">'Georeferenced boundingbox'</span>))</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkcrop_1_1pkcrop.html#a9d01bfa7ad85384abf071d59c0f5f69e">NODATA</a>, <span class="stringliteral">"invalid value(s) for input raster dataset (e.g., 0;255)"</span>,<span class="stringliteral">"none"</span>))</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkcrop_1_1pkcrop.html#a5993a8cc5d573cf0bc3a0d97a1811cd7">BAND</a>, <span class="stringliteral">"Band(s) in input image to crop, e.g., 0;1;2 (leave empty to retain all bands)"</span>,<span class="stringliteral">''</span>, optional=<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pkcrop_1_1pkcrop.html#a000a9bda4206edf6ef542590140e43e8">RESAMPLE</a>,<span class="stringliteral">"resampling method"</span>,self.<a class="code" href="classqgis_1_1pkcrop_1_1pkcrop.html#a4ca284fa3cb6e48275aa399f6547d4f2">RESAMPLE_OPTIONS</a>, 0))</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkcrop_1_1pkcrop.html#a7c99a0e343473c7cfc94623c115590db">EXTRA</a>,</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>                           <span class="stringliteral">'Additional parameters'</span>, <span class="stringliteral">'-of GTiff'</span>, optional=<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span> </div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>     <span class="keyword">def </span>processAlgorithm(self, progress):</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>         cliPath = <span class="stringliteral">'"'</span> + os.path.join(pktoolsUtils.pktoolsPath(), self.<a class="code" href="classqgis_1_1pkcrop_1_1pkcrop.html#a0a169418d9b1c0e55c1c09c711b920b1">cliName</a>()) + <span class="stringliteral">'"'</span></div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>         commands = [cliPath]</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span> </div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>         input=self.getParameterValue(self.<a class="code" href="classqgis_1_1pkcrop_1_1pkcrop.html#a660abf1b5edd9b7c39f49a48748e73b5">INPUT</a>)</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>         inputFiles = input.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>         <span class="keywordflow">for</span> inputFile <span class="keywordflow">in</span> inputFiles:</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>             commands.append(<span class="stringliteral">'-i'</span>)</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>             commands.append(<span class="stringliteral">'"'</span> + inputFile + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span> </div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>         <span class="keywordflow">if</span> self.<a class="code" href="classqgis_1_1pkcrop_1_1pkcrop.html#aa901690d584f08efbc4a4225985fde89">TYPE</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pkcrop_1_1pkcrop.html#a67d94ff9e997ceda91ff39334e1e668a">RTYPE</a>)] != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>             commands.append(<span class="stringliteral">'-ot'</span>)</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>             commands.append(self.<a class="code" href="classqgis_1_1pkcrop_1_1pkcrop.html#aa901690d584f08efbc4a4225985fde89">TYPE</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pkcrop_1_1pkcrop.html#a67d94ff9e997ceda91ff39334e1e668a">RTYPE</a>)])</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>         output=self.getOutputValue(self.<a class="code" href="classqgis_1_1pkcrop_1_1pkcrop.html#afab963f14ed687777ea04b6b03a44708">OUTPUT</a>)</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>         <span class="keywordflow">if</span> output != <span class="stringliteral">""</span>:</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>             commands.append(<span class="stringliteral">"-o"</span>)</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>             commands.append(<span class="stringliteral">'"'</span> + output + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>         <span class="keywordflow">if</span> self.getParameterValue(self.<a class="code" href="classqgis_1_1pkcrop_1_1pkcrop.html#aa64c23657fe96444fe2d03717be4b5c5">DX</a>) != 0:</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>             commands.append(<span class="stringliteral">"-dx"</span>)</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>             commands.append(str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pkcrop_1_1pkcrop.html#aa64c23657fe96444fe2d03717be4b5c5">DX</a>)))</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>         <span class="keywordflow">if</span> self.getParameterValue(self.<a class="code" href="classqgis_1_1pkcrop_1_1pkcrop.html#ac5779beb227252f20da289d505f4deee">DY</a>) != 0:</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>             commands.append(<span class="stringliteral">"-dy"</span>)</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>             commands.append(str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pkcrop_1_1pkcrop.html#ac5779beb227252f20da289d505f4deee">DY</a>)))</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span> </div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>         projwin = str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pkcrop_1_1pkcrop.html#a6f6f27285700550bb52391c36d130328">PROJWIN</a>))</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>         if(str(projwin).find(<span class="stringliteral">','</span>)>0):</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>            regionCoords = projwin.split(<span class="stringliteral">','</span>)</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>            commands.append(<span class="stringliteral">'-ulx'</span>)</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>            commands.append(regionCoords[0])</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>            commands.append(<span class="stringliteral">'-uly'</span>)</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>            commands.append(regionCoords[3])</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>            commands.append(<span class="stringliteral">'-lrx'</span>)</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>            commands.append(regionCoords[1])</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>            commands.append(<span class="stringliteral">'-lry'</span>)</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>            commands.append(regionCoords[2])</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span> </div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>         nodata=self.getParameterValue(self.<a class="code" href="classqgis_1_1pkcrop_1_1pkcrop.html#a9d01bfa7ad85384abf071d59c0f5f69e">NODATA</a>)</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>         <span class="keywordflow">if</span> nodata != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>             nodataValues = nodata.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>             <span class="keywordflow">for</span> nodataValue <span class="keywordflow">in</span> nodataValues:</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>                 commands.append(<span class="stringliteral">'-nodata'</span>)</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>                 commands.append(nodataValue)</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>         </div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>         band=self.getParameterValue(self.<a class="code" href="classqgis_1_1pkcrop_1_1pkcrop.html#a5993a8cc5d573cf0bc3a0d97a1811cd7">BAND</a>)</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>         <span class="keywordflow">if</span> band != <span class="stringliteral">''</span>:</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>             bandValues = band.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>             <span class="keywordflow">for</span> bandValue <span class="keywordflow">in</span> bandValues:</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>                 commands.append(<span class="stringliteral">'-b'</span>)</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>                 commands.append(bandValue)</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>         commands.append(<span class="stringliteral">"-r"</span>)</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>         commands.append(self.<a class="code" href="classqgis_1_1pkcrop_1_1pkcrop.html#a4ca284fa3cb6e48275aa399f6547d4f2">RESAMPLE_OPTIONS</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pkcrop_1_1pkcrop.html#a000a9bda4206edf6ef542590140e43e8">RESAMPLE</a>)])</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span> </div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>         extra = str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pkcrop_1_1pkcrop.html#a7c99a0e343473c7cfc94623c115590db">EXTRA</a>))</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>         <span class="keywordflow">if</span> len(extra) > 0:</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>             commands.append(extra)</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span> </div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>         pktoolsUtils.runpktools(commands, progress)</div>
-<div class="ttc" id="classqgis_1_1pkcrop_1_1pkcrop_html_a6f6f27285700550bb52391c36d130328"><div class="ttname"><a href="classqgis_1_1pkcrop_1_1pkcrop.html#a6f6f27285700550bb52391c36d130328">qgis.pkcrop.pkcrop.PROJWIN</a></div><div class="ttdeci">string PROJWIN</div><div class="ttdef"><b>Definition:</b> <a href="pkcrop_8py_source.html#l00044">pkcrop.py:44</a></div></div>
-<div class="ttc" id="classqgis_1_1pkcrop_1_1pkcrop_html_a000a9bda4206edf6ef542590140e43e8"><div class="ttname"><a href="classqgis_1_1pkcrop_1_1pkcrop.html#a000a9bda4206edf6ef542590140e43e8">qgis.pkcrop.pkcrop.RESAMPLE</a></div><div class="ttdeci">string RESAMPLE</div><div class="ttdef"><b>Definition:</b> <a href="pkcrop_8py_source.html#l00048">pkcrop.py:48</a></div></div>
-<div class="ttc" id="classqgis_1_1pkcrop_1_1pkcrop_html_a15a208344b67a578ed7592105617762f"><div class="ttname"><a href="classqgis_1_1pkcrop_1_1pkcrop.html#a15a208344b67a578ed7592105617762f">qgis.pkcrop.pkcrop.group</a></div><div class="ttdeci">group</div><div class="ttdef"><b>Definition:</b> <a href="pkcrop_8py_source.html#l00058">pkcrop.py:58</a></div></div>
-<div class="ttc" id="classqgis_1_1pkcrop_1_1pkcrop_html_aa901690d584f08efbc4a4225985fde89"><div class="ttname"><a href="classqgis_1_1pkcrop_1_1pkcrop.html#aa901690d584f08efbc4a4225985fde89">qgis.pkcrop.pkcrop.TYPE</a></div><div class="ttdeci">list TYPE</div><div class="ttdef"><b>Definition:</b> <a href="pkcrop_8py_source.html#l00050">pkcrop.py:50</a></div></div>
-<div class="ttc" id="classqgis_1_1pkcrop_1_1pkcrop_html_a4ca284fa3cb6e48275aa399f6547d4f2"><div class="ttname"><a href="classqgis_1_1pkcrop_1_1pkcrop.html#a4ca284fa3cb6e48275aa399f6547d4f2">qgis.pkcrop.pkcrop.RESAMPLE_OPTIONS</a></div><div class="ttdeci">list RESAMPLE_OPTIONS</div><div class="ttdef"><b>Definition:</b> <a href="pkcrop_8py_source.html#l00047">pkcrop.py:47</a></div></div>
-<div class="ttc" id="classqgis_1_1pkcrop_1_1pkcrop_html_afab963f14ed687777ea04b6b03a44708"><div class="ttname"><a href="classqgis_1_1pkcrop_1_1pkcrop.html#afab963f14ed687777ea04b6b03a44708">qgis.pkcrop.pkcrop.OUTPUT</a></div><div class="ttdeci">string OUTPUT</div><div class="ttdef"><b>Definition:</b> <a href="pkcrop_8py_source.html#l00041">pkcrop.py:41</a></div></div>
-<div class="ttc" id="classqgis_1_1pkcrop_1_1pkcrop_html_a660abf1b5edd9b7c39f49a48748e73b5"><div class="ttname"><a href="classqgis_1_1pkcrop_1_1pkcrop.html#a660abf1b5edd9b7c39f49a48748e73b5">qgis.pkcrop.pkcrop.INPUT</a></div><div class="ttdeci">string INPUT</div><div class="ttdef"><b>Definition:</b> <a href="pkcrop_8py_source.html#l00040">pkcrop.py:40</a></div></div>
-<div class="ttc" id="classqgis_1_1pkcrop_1_1pkcrop_html_ac5779beb227252f20da289d505f4deee"><div class="ttname"><a href="classqgis_1_1pkcrop_1_1pkcrop.html#ac5779beb227252f20da289d505f4deee">qgis.pkcrop.pkcrop.DY</a></div><div class="ttdeci">string DY</div><div class="ttdef"><b>Definition:</b> <a href="pkcrop_8py_source.html#l00043">pkcrop.py:43</a></div></div>
-<div class="ttc" id="classqgis_1_1pkcrop_1_1pkcrop_html_a21c98defb19a723cbdbcae90e5c414b9"><div class="ttname"><a href="classqgis_1_1pkcrop_1_1pkcrop.html#a21c98defb19a723cbdbcae90e5c414b9">qgis.pkcrop.pkcrop.name</a></div><div class="ttdeci">name</div><div class="ttdef"><b>Definition:</b> <a href="pkcrop_8py_source.html#l00057">pkcrop.py:57</a></div></div>
-<div class="ttc" id="classqgis_1_1pkcrop_1_1pkcrop_html"><div class="ttname"><a href="classqgis_1_1pkcrop_1_1pkcrop.html">qgis.pkcrop.pkcrop</a></div><div class="ttdef"><b>Definition:</b> <a href="pkcrop_8py_source.html#l00038">pkcrop.py:38</a></div></div>
-<div class="ttc" id="classqgis_1_1pkcrop_1_1pkcrop_html_aa64c23657fe96444fe2d03717be4b5c5"><div class="ttname"><a href="classqgis_1_1pkcrop_1_1pkcrop.html#aa64c23657fe96444fe2d03717be4b5c5">qgis.pkcrop.pkcrop.DX</a></div><div class="ttdeci">string DX</div><div class="ttdef"><b>Definition:</b> <a href="pkcrop_8py_source.html#l00042">pkcrop.py:42</a></div></div>
-<div class="ttc" id="classqgis_1_1pkcrop_1_1pkcrop_html_a7c99a0e343473c7cfc94623c115590db"><div class="ttname"><a href="classqgis_1_1pkcrop_1_1pkcrop.html#a7c99a0e343473c7cfc94623c115590db">qgis.pkcrop.pkcrop.EXTRA</a></div><div class="ttdeci">string EXTRA</div><div class="ttdef"><b>Definition:</b> <a href="pkcrop_8py_source.html#l00051">pkcrop.py:51</a></div></div>
-<div class="ttc" id="classqgis_1_1pkcrop_1_1pkcrop_html_a67d94ff9e997ceda91ff39334e1e668a"><div class="ttname"><a href="classqgis_1_1pkcrop_1_1pkcrop.html#a67d94ff9e997ceda91ff39334e1e668a">qgis.pkcrop.pkcrop.RTYPE</a></div><div class="ttdeci">string RTYPE</div><div class="ttdef"><b>Definition:</b> <a href="pkcrop_8py_source.html#l00049">pkcrop.py:49</a></div></div>
-<div class="ttc" id="classqgis_1_1pkcrop_1_1pkcrop_html_a9d01bfa7ad85384abf071d59c0f5f69e"><div class="ttname"><a href="classqgis_1_1pkcrop_1_1pkcrop.html#a9d01bfa7ad85384abf071d59c0f5f69e">qgis.pkcrop.pkcrop.NODATA</a></div><div class="ttdeci">string NODATA</div><div class="ttdef"><b>Definition:</b> <a href="pkcrop_8py_source.html#l00046">pkcrop.py:46</a></div></div>
-<div class="ttc" id="classqgis_1_1pkcrop_1_1pkcrop_html_a0a169418d9b1c0e55c1c09c711b920b1"><div class="ttname"><a href="classqgis_1_1pkcrop_1_1pkcrop.html#a0a169418d9b1c0e55c1c09c711b920b1">qgis.pkcrop.pkcrop.cliName</a></div><div class="ttdeci">def cliName</div><div class="ttdef"><b>Definition:</b> <a href="pkcrop_8py_source.html#l00053">pkcrop.py:53</a></div></div>
-<div class="ttc" id="classqgis_1_1pkcrop_1_1pkcrop_html_a5993a8cc5d573cf0bc3a0d97a1811cd7"><div class="ttname"><a href="classqgis_1_1pkcrop_1_1pkcrop.html#a5993a8cc5d573cf0bc3a0d97a1811cd7">qgis.pkcrop.pkcrop.BAND</a></div><div class="ttdeci">string BAND</div><div class="ttdef"><b>Definition:</b> <a href="pkcrop_8py_source.html#l00045">pkcrop.py:45</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkcrop__gui_2main_8cc_source.html b/doc/html/pkcrop__gui_2main_8cc_source.html
deleted file mode 100644
index 823fa50..0000000
--- a/doc/html/pkcrop__gui_2main_8cc_source.html
+++ /dev/null
@@ -1,104 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/pkcrop_gui/main.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_35acdce8930fac877097c845a64519e5.html">pkcrop_gui</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">main.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">main.cc: GUI for pktools</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> </div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "mainwindow.h"</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <QApplication></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> </div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])</div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> {</div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span>     QApplication a(argc, argv);</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span>     <a class="code" href="classMainWindow.html">MainWindow</a> w;</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span>     w.show();</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span>     </div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>     <span class="keywordflow">return</span> a.exec();</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> }</div>
-<div class="ttc" id="classMainWindow_html"><div class="ttname"><a href="classMainWindow.html">MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite__gui_2mainwindow_8h_source.html#l00031">mainwindow.h:31</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkcrop__gui_2mainwindow_8cc_source.html b/doc/html/pkcrop__gui_2mainwindow_8cc_source.html
deleted file mode 100644
index 9356d16..0000000
--- a/doc/html/pkcrop__gui_2mainwindow_8cc_source.html
+++ /dev/null
@@ -1,379 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/pkcrop_gui/mainwindow.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_35acdce8930fac877097c845a64519e5.html">pkcrop_gui</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">mainwindow.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">mainwindow.cc: GUI for pktools</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> </div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "mainwindow.h"</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "ui_mainwindow.h"</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <QFileDialog></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <QProcess></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include <QMessageBox></span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include <QProcess></span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> </div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> MainWindow::MainWindow(QWidget *parent) :</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span>     QMainWindow(parent),</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>     ui(new Ui::<a class="code" href="classMainWindow.html">MainWindow</a>)</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> {</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>     ui->setupUi(<span class="keyword">this</span>);</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>     QStringList resamplelist;</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>     resamplelist << <span class="stringliteral">"near"</span> << <span class="stringliteral">"bilinear"</span>;</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>     ui->resample->addItems(resamplelist);</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>     QStringList interleavedlist;</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>     interleavedlist << <span class="stringliteral">"BAND"</span> << <span class="stringliteral">"LINE"</span> << <span class="stringliteral">"PIXEL"</span> <<<span class="stringliteral">"BSQ"</span>;</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>     ui->interleaved->addItems(interleavedlist);</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>     QStringList compressedlist;</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     compressedlist << <span class="stringliteral">"NONE"</span> << <span class="stringliteral">"LZW"</span> << <span class="stringliteral">"PACKBITS"</span> <<<span class="stringliteral">"DEFLATE"</span>;</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     ui->compressed->addItems(compressedlist);</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     QStringList otypelist;</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     otypelist << <span class="stringliteral">""</span> << <span class="stringliteral">"Byte"</span> << <span class="stringliteral">"Int16"</span> << <span class="stringliteral">"UInt16"</span> << <span class="stringliteral">"UInt32"</span> << <span class="stringliteral">"Int32"</span> << <span class="stringlite [...]
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     ui->otype->addItems(otypelist);</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     QStringList oformatlist;</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     oformatlist << <span class="stringliteral">""</span> << <span class="stringliteral">"GTiff"</span> << <span class="stringliteral">"HFA"</span> << <span class="stringliteral">"ENVI"</span>;</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     ui->oformat->addItems(oformatlist);</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span> </div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     setDefaults();</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span> </div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     ui->listWidget_input->setSelectionMode(QAbstractItemView::ExtendedSelection);</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span> </div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     <span class="comment">//pressing DEL activates the slots only when list widget has focus</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     QShortcut* shortcutDel = <span class="keyword">new</span> QShortcut(QKeySequence(Qt::Key_Delete), ui->listWidget_band);</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     connect(shortcutDel, SIGNAL(activated()), <span class="keyword">this</span>, SLOT(deleteItem()));</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <span class="comment">//pressing Backspace activates the slots only when list widget has focus</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     QShortcut* shortcutBackspace = <span class="keyword">new</span> QShortcut(QKeySequence(Qt::Key_Backspace), ui->listWidget_band);</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     connect(shortcutBackspace, SIGNAL(activated()), <span class="keyword">this</span>, SLOT(deleteItem()));</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span> }</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span> </div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span> MainWindow::~MainWindow()</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span> {</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     <span class="keyword">delete</span> ui;</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span> }</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span> </div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span> <span class="keywordtype">void</span> MainWindow::setDefaults()</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span> {</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     m_as=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     m_manual=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     <span class="comment">//input</span></div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     ui->listWidget_input->clear();</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>     ui->ulx->clear();</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>     ui->uly->clear();</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>     ui->lrx->clear();</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>     ui->lry->clear();</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>     ui->extent->clear();</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>     ui->listWidget_band->clear();</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>     <span class="comment">//scaling</span></div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>     ui->resample->setCurrentIndex(0);</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>     ui->as_from->clear();</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>     ui->as_to->clear();</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     ui->scale->clear();</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     ui->offset->clear();</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     <span class="comment">//output</span></div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>     ui->output->clear();</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>     ui->a_srs->clear();</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>     ui->otype->setCurrentIndex(0);</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>     ui->oformat->setCurrentIndex(0);</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     ui->ct->clear();</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     ui->dx->clear();</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     ui->dy->clear();</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     ui->interleaved->setCurrentIndex(0);</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>     ui->tiled->setChecked(<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>     ui->compressed->setCurrentIndex(0);</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>     ui->nodata->clear();</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span> }</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span> </div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span> <span class="keywordtype">void</span> MainWindow::deleteItem()</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span> {</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     qDeleteAll(ui->listWidget_band->selectedItems());</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span> }</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span> </div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span> <span class="keywordtype">void</span> MainWindow::on_toolButton_input_clicked()</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span> {</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     on_actionInput_triggered();</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span> }</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span> </div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span> </div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span> <span class="keywordtype">void</span> MainWindow::on_toolButton_extent_clicked()</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span> {</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>     on_actionExtent_triggered();</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span> }</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span> </div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span> <span class="keywordtype">void</span> MainWindow::on_toolButton_output_clicked()</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span> {</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     on_actionOutput_triggered();</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span> }</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span> </div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span> <span class="keywordtype">void</span> MainWindow::on_toolButton_defaults_clicked()</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span> {</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>     setDefaults();</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span> }</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span> </div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span> <span class="keywordtype">void</span> MainWindow::on_toolButton_ct_clicked()</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span> {</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     QString qsct = QFileDialog::getOpenFileName(<span class="keyword">this</span>, <span class="stringliteral">"Color table ASCII"</span>);</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>     ui->ct->setText(qsct);</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span> }</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span> </div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span> <span class="keywordtype">void</span> MainWindow::on_actionInput_triggered()</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span> {</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>     QFileDialog dialog(<span class="keyword">this</span>);</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>     dialog.setDirectory(QDir::homePath());</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>     dialog.setFileMode(QFileDialog::ExistingFiles);</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>     QStringList fileNames;</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>     <span class="keywordflow">if</span> (dialog.exec())</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>         fileNames = dialog.selectedFiles();</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>     ui->listWidget_input->addItems(fileNames);</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>     <span class="comment">//fill in band list</span></div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>     ui->listWidget_band->clear();</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>     QProcess *myProcess = <span class="keyword">new</span> QProcess(<span class="keyword">this</span>);</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>     QString program=<span class="stringliteral">"pkinfo -nb -i "</span>;</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>     <span class="comment">//todo: loop over all filenames and get the minimum number of bands?</span></div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>     program+=fileNames[0];</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>     myProcess->start(program);</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>     this->setCursor(Qt::WaitCursor);</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>     myProcess->waitForFinished(-1);</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>     this->setCursor(Qt::ArrowCursor);</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>     QString p_stdout=myProcess->readAll();</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>     <span class="keywordtype">int</span> nband=p_stdout.section(<span class="charliteral">' '</span>,1).toInt();</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>     QStringList bandlist;</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>         QString qsband=QString::number(iband);</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>         bandlist << qsband;</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>     }</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>     ui->listWidget_band->addItems(bandlist);</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>     ui->listWidget_band->setSelectionMode(QAbstractItemView::ExtendedSelection);</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>     ui->listWidget_band->selectAll();</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span> }</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span> </div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span> <span class="keywordtype">void</span> MainWindow::on_actionExtent_triggered()</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span> {</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>     QString qsextent = QFileDialog::getOpenFileName(<span class="keyword">this</span>, <span class="stringliteral">"extent"</span>);</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>     ui->extent->setText(qsextent);</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span> }</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span> </div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span> <span class="keywordtype">void</span> MainWindow::on_actionOutput_triggered()</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span> {</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>     QString outputfilename=QFileDialog::getSaveFileName(<span class="keyword">this</span>,<span class="stringliteral">"Output image"</span>,<span class="stringliteral">""</span>,<span class="stringliteral">"*.*"</span>);</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>     ui->output->setText(outputfilename);</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span> }</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span> </div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span> <span class="keywordtype">void</span> MainWindow::on_actionQuit_triggered()</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span> {</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>     close();</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span> }</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span> </div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span> <span class="keywordtype">void</span> MainWindow::on_toolButton_Run_clicked()</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span> {</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>         ui->commandLineEdit->clear();</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>         ui->consoleEdit->clear();</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span> </div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>         QString program = <span class="stringliteral">"pkcomposite"</span>;</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span> </div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>         <span class="keywordflow">if</span>(ui->listWidget_input->count()<1)</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>             MainWindow::on_actionInput_triggered();</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>         <span class="keywordflow">if</span>(ui->listWidget_input->count()<1){</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>             QString qsError=<span class="stringliteral">"No input image file selected"</span>;</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>             <span class="keywordflow">throw</span>(qsError);</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>         }</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span> </div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < ui->listWidget_input->count(); ++i)</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>         {</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>             QListWidgetItem* item = ui->listWidget_input->item(i);</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>             program+=<span class="stringliteral">" --input "</span>+item->text();</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>         }</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span> </div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < ui->listWidget_band->count(); ++i)</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>         {</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>             QListWidgetItem* item = ui->listWidget_band->item(i);</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>             program+=<span class="stringliteral">" --band "</span>+item->text();</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>         }</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span> </div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>         <span class="keywordflow">if</span>(ui->output->text().isEmpty())</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>             MainWindow::on_actionOutput_triggered();</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>         <span class="keywordflow">if</span>(ui->output->text().isEmpty()){</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>             QString qsError=<span class="stringliteral">"No output image file selected"</span>;</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>             <span class="keywordflow">throw</span>(qsError);</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>         }</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span> </div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>         program+=<span class="stringliteral">" --resample "</span>+ui->resample->currentText();</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>         <span class="keywordflow">if</span>(!ui->otype->currentText().isEmpty())</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>             program+=<span class="stringliteral">" --otype "</span>+ui->otype->currentText();</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>         <span class="keywordflow">if</span>(!ui->oformat->currentText().isEmpty())</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>             program+=<span class="stringliteral">" --oformat "</span>+ui->oformat->currentText();</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>         program+=<span class="stringliteral">" -co COMPRESS="</span>+ui->compressed->currentText();</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>         program+=<span class="stringliteral">" -co INTERLEAVE="</span>+ui->interleaved->currentText();</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>         <span class="keywordflow">if</span>(ui->tiled->isChecked())</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>             program+=<span class="stringliteral">" -co TILED=YES"</span>;</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span> </div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>         <span class="comment">//todo: radiobuttons on scaling</span></div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>         <span class="keywordflow">if</span>(m_as){</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>             program+=<span class="stringliteral">" --autoscale "</span>;</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>             program+=ui->as_from->text();</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>             program+=<span class="stringliteral">" --autoscale "</span>;</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>             program+=ui->as_to->text();</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>         }</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_manual){</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>             program+=<span class="stringliteral">" --scale "</span>;</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>             program+=ui->scale->text();</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>             program+=<span class="stringliteral">" ---offset "</span>;</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>             program+=ui->offset->text();</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>         }</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span> <span class="comment">//        QList<QCheckBox*> qcheckBoxList = this->findChildren<QCheckBox *>();</span></div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span> </div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span> <span class="comment">//        for(QList<QCheckBox*>::ConstIterator qcbit=qcheckBoxList.begin();qcbit!=qcheckBoxList.end();++qcbit){</span></div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span> <span class="comment">//            if((*qcbit)->isChecked()){</span></div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span> <span class="comment">//                QString qsOption;</span></div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span> <span class="comment">//                qsOption+=" --";</span></div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span> <span class="comment">//                qsOption+=(*qcbit)->objectName();</span></div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span> <span class="comment">//                program+=qsOption;</span></div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span> <span class="comment">//            }</span></div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span> <span class="comment">//        }</span></div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span> </div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>         QList<QLineEdit*> qlineEditList = this->findChildren<QLineEdit *>();</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span> </div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>         <span class="keywordflow">for</span>(QList<QLineEdit*>::ConstIterator qlbit=qlineEditList.begin();qlbit!=qlineEditList.end();++qlbit){</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>             <span class="keywordflow">if</span>(!((*qlbit)->text().isEmpty())){</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>                 QString qsOption;</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>                 qsOption+=<span class="stringliteral">" --"</span>;</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>                 qsOption+=(*qlbit)->objectName();</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>                 qsOption+=<span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>                 qsOption+=(*qlbit)->text();</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>                 program+=qsOption;</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>             }</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>         }</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span> </div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>         ui->commandLineEdit->insert(program);</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span> </div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span> <span class="comment">//        QProcess *myProcess = new QProcess(parent);        </span></div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>         QProcess *myProcess = <span class="keyword">new</span> QProcess(<span class="keyword">this</span>);</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>         myProcess->start(program);</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>         myProcess->setProcessChannelMode(QProcess::MergedChannels);</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>         this->setCursor(Qt::WaitCursor);</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>         myProcess->waitForFinished(-1);</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span> <span class="comment">//        QString p_stderr = myProcess->readyReadStandardError();</span></div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span> <span class="comment">//        if(!p_stderr.isEmpty()){</span></div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span> <span class="comment">//            QMessageBox msgBox;</span></div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span> <span class="comment">//            msgBox.setText(p_stderr);</span></div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span> <span class="comment">//            msgBox.exec();</span></div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span> <span class="comment">//        }</span></div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>         this->setCursor(Qt::ArrowCursor);</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>         QString p_stdout = myProcess->readAll();</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>         ui->consoleEdit->insertPlainText(p_stdout);</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>         <span class="keyword">delete</span> myProcess;</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>     }</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>     <span class="keywordflow">catch</span>(QString qsError){</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>         QMessageBox msgBox;</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>         msgBox.setText(qsError);</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>         msgBox.exec();</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>     }</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span> }</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span> </div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span> <span class="keywordtype">void</span> MainWindow::on_autoscale_clicked()</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span> {</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>     m_as=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>     m_manual=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span> }</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span> </div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span> <span class="keywordtype">void</span> MainWindow::on_manual_clicked()</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span> {</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>     m_as=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>     m_manual=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span> }</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span> </div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span> <span class="keywordtype">void</span> MainWindow::on_noscale_clicked()</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span> {</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>     m_as=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>     m_manual=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span> }</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span> </div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span> <span class="keywordtype">void</span> MainWindow::on_toolButton_clicked()</div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span> {</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>     ui->listWidget_input->clear();</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span> }</div>
-<div class="ttc" id="classMainWindow_html"><div class="ttname"><a href="classMainWindow.html">MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite__gui_2mainwindow_8h_source.html#l00031">mainwindow.h:31</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkcrop__gui_2mainwindow_8h_source.html b/doc/html/pkcrop__gui_2mainwindow_8h_source.html
deleted file mode 100644
index 94e7c29..0000000
--- a/doc/html/pkcrop__gui_2mainwindow_8h_source.html
+++ /dev/null
@@ -1,153 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/pkcrop_gui/mainwindow.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_35acdce8930fac877097c845a64519e5.html">pkcrop_gui</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">mainwindow.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">mainwindow.h: GUI for pktools</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> </div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#ifndef MAINWINDOW_H</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor"></span><span class="preprocessor">#define MAINWINDOW_H</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <QMainWindow></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include <QModelIndex></span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include <QShortcut></span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include <QListWidget></span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> </div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">namespace </span>Ui {</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">class </span><a class="code" href="classMainWindow.html">MainWindow</a>;</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> }</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> </div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">class </span><a class="code" href="classMainWindow.html">MainWindow</a> : <span class="keyword">public</span> QMainWindow</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> {</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>     Q_OBJECT</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>     </div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>     <span class="keyword">explicit</span> <a class="code" href="classMainWindow.html">MainWindow</a>(QWidget *parent = 0);</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>     ~<a class="code" href="classMainWindow.html">MainWindow</a>();</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     </div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="keyword">private</span> slots:</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     <span class="keywordtype">void</span> on_actionInput_triggered();</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span> </div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     <span class="keywordtype">void</span> on_toolButton_input_clicked();</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span> </div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     <span class="keywordtype">void</span> on_toolButton_extent_clicked();</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span> </div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     <span class="keywordtype">void</span> on_toolButton_output_clicked();</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span> </div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     <span class="keywordtype">void</span> on_toolButton_ct_clicked();</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span> </div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     <span class="keywordtype">void</span> on_toolButton_Run_clicked();</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span> </div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     <span class="keywordtype">void</span> on_toolButton_defaults_clicked();</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span> </div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <span class="keywordtype">void</span> on_actionQuit_triggered();</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span> </div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     <span class="keywordtype">void</span> on_actionOutput_triggered();</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span> </div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     <span class="keywordtype">void</span> on_autoscale_clicked();</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span> </div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     <span class="keywordtype">void</span> on_actionExtent_triggered();</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span> </div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     <span class="keywordtype">void</span> on_manual_clicked();</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span> </div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     <span class="keywordtype">void</span> on_noscale_clicked();</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span> </div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     <span class="keywordtype">void</span> deleteItem();</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span> </div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     <span class="keywordtype">void</span> on_toolButton_clicked();</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span> </div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span> <span class="keyword">private</span>:</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>     <a class="code" href="classUi_1_1MainWindow.html">Ui::MainWindow</a> *ui;</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>     <span class="keywordtype">void</span> setDefaults();</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>     <span class="keywordtype">bool</span> m_manual;</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>     <span class="keywordtype">bool</span> m_as;</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span> };</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span> </div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span> <span class="preprocessor">#endif // MAINWINDOW_H</span></div>
-<div class="ttc" id="classUi_1_1MainWindow_html"><div class="ttname"><a href="classUi_1_1MainWindow.html">Ui::MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="build-pkcomposite__gui-gcc-Debug_2ui__mainwindow_8h_source.html#l00702">ui_mainwindow.h:702</a></div></div>
-<div class="ttc" id="classMainWindow_html"><div class="ttname"><a href="classMainWindow.html">MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite__gui_2mainwindow_8h_source.html#l00031">mainwindow.h:31</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkdiff.html b/doc/html/pkdiff.html
deleted file mode 100644
index 3702170..0000000
--- a/doc/html/pkdiff.html
+++ /dev/null
@@ -1,138 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: pkdiff</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkdiff </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><p>program to compare two raster image files </p>
-<h2>SYNOPSIS</h2>
-<p><code> Usage: pkdiff -i input -ref reference </code></p>
-<p><code></code></p>
-<p><code> Options: [-ln layer] [-b band] [-cm] [-lr attribute] [-c name -r value]* [-nodata value]* [-m mask] [-msknodata value]*</code></p>
-<p><code> Advanced options: [-o output] [-f OGR format] [-lc attribute] [-bnd value [-hom] [-circ]] [-ct colortable] [-co NAME=VALUE]*</code></p>
-<p><code></code></p>
-<h1><a class="anchor" id="pkdiff_description"></a>
-Description</h1>
-<p>The utility pkdiff compares two datasets. The reference can either be a raster or a vector, but the input must be a raster dataset. In case the reference is a raster dataset, a pixel by pixel comparison is performed. With no further options, the utility reports if the rasters are identical or different. If required, an output raster dataset can be written with a qualitative information per pixel: 0 (input=reference), 1 (input>reference) or 2 (input<reference). If, however, the r [...]
-<p>A typical use of the utility is to assess the accuracy of an input raster land cover map, based on a reference vector dataset. The reference dataset must contain an attribute (label) for each class. A confusion matrix is produced if the option -cm|–confusion is set. Here too, an output dataset can be written, which will be a vector dataset in this case. It contains the reference feature points with the extracted data value of the raster input dataset as a new attribute. </p>
-<h1><a class="anchor" id="pkdiff_options"></a>
-Options</h1>
-<ul>
-<li>use either <code>-short</code> or <code>--long</code> options (both <code>--long=value</code> and <code>--long value</code> are supported)</li>
-<li>short option <code>-h</code> shows basic options only, long option <code>--help</code> shows all options <table class="doxtable">
-<tr>
-<th>short</th><th>long</th><th>type</th><th>default</th><th>description  </th></tr>
-<tr>
-<td>i </td><td>input </td><td>std::string </td><td></td><td>Input raster dataset. </td></tr>
-<tr>
-<td>ref </td><td>reference </td><td>std::string </td><td></td><td>Reference (raster or vector) dataset </td></tr>
-<tr>
-<td>ln </td><td>ln </td><td>std::string </td><td></td><td>Layer name(s) in sample. Leave empty to select all (for vector reference datasets only) </td></tr>
-<tr>
-<td>b </td><td>band </td><td>short </td><td>0 </td><td>Input (reference) raster band. Optionally, you can define different bands for input and reference bands respectively: -b 1 -b 0. </td></tr>
-<tr>
-<td>rmse </td><td>rmse </td><td>bool </td><td>false </td><td>Report root mean squared error </td></tr>
-<tr>
-<td>reg </td><td>reg </td><td>bool </td><td>false </td><td>Report linear regression (Input = c0+c1*Reference) </td></tr>
-<tr>
-<td>cm </td><td>confusion </td><td>bool </td><td>false </td><td>Create confusion matrix (to std out) </td></tr>
-<tr>
-<td>lr </td><td>lref </td><td>std::string </td><td>label </td><td>Attribute name of the reference label (for vector reference datasets only) </td></tr>
-<tr>
-<td>c </td><td>class </td><td>std::string </td><td></td><td>List of class names. </td></tr>
-<tr>
-<td>r </td><td>reclass </td><td>short </td><td></td><td>List of class values (use same order as in classname option). </td></tr>
-<tr>
-<td>nodata </td><td>nodata </td><td>double </td><td></td><td>No data value(s) in input or reference dataset are ignored </td></tr>
-<tr>
-<td>m </td><td>mask </td><td>std::string </td><td></td><td>Use the first band of the specified file as a validity mask. Nodata values can be set with the option msknodata. </td></tr>
-<tr>
-<td>msknodata </td><td>msknodata </td><td>double </td><td>0 </td><td>Mask value(s) where image is invalid. Use negative value for valid data (example: use -t -1: if only -1 is valid value) </td></tr>
-<tr>
-<td>o </td><td>output </td><td>std::string </td><td></td><td>Output dataset (optional) </td></tr>
-<tr>
-<td>f </td><td>f </td><td>std::string </td><td>SQLite </td><td>OGR format for output vector (for vector reference datasets only) </td></tr>
-<tr>
-<td>of </td><td>oformat </td><td>std::string </td><td>GTiff </td><td>Output image format (see also gdal_translate). </td></tr>
-<tr>
-<td>lc </td><td>lclass </td><td>std::string </td><td>class </td><td>Attribute name of the classified label (for vector reference datasets only) </td></tr>
-<tr>
-<td>cmf </td><td>cmf </td><td>std::string </td><td>ascii </td><td>Format for confusion matrix (ascii or latex) </td></tr>
-<tr>
-<td>cmo </td><td>cmo </td><td>std::string </td><td></td><td>Output file for confusion matrix </td></tr>
-<tr>
-<td>se95 </td><td>se95 </td><td>bool </td><td>false </td><td>Report standard error for 95 confidence interval </td></tr>
-<tr>
-<td>bnd </td><td>boundary </td><td>short </td><td>1 </td><td>Boundary for selecting the sample (for vector reference datasets only) </td></tr>
-<tr>
-<td>hom </td><td>homogeneous </td><td>bool </td><td>false </td><td>Only take regions with homogeneous boundary into account (for reference datasets only) </td></tr>
-<tr>
-<td>circ </td><td>circular </td><td>bool </td><td>false </td><td>Use circular boundary (for vector reference datasets only) </td></tr>
-<tr>
-<td>ct </td><td>ct </td><td>std::string </td><td></td><td>Color table in ASCII format having 5 columns: id R G B ALFA (0: transparent, 255: solid). </td></tr>
-<tr>
-<td>co </td><td>co </td><td>std::string </td><td></td><td>Creation option for output file. Multiple options can be specified. </td></tr>
-<tr>
-<td></td><td>commission </td><td>short </td><td>2 </td><td>Value for commission errors: input label < reference label </td></tr>
-</table>
-Usage: pkdiff -i input -ref reference</li>
-</ul>
-<h1>Examples </h1>
-<p>Some examples how to use pkdiff can be found <a class="el" href="md_examples_pkdiff.html#examples_pkdiff">here</a> </p>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkdiff_8cc_source.html b/doc/html/pkdiff_8cc_source.html
deleted file mode 100644
index b25658c..0000000
--- a/doc/html/pkdiff_8cc_source.html
+++ /dev/null
@@ -1,973 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/pkdiff.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkdiff.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pkdiff.cc: program to compare two raster image files</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <assert.h></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "imageclasses/ImgReaderGdal.h"</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "imageclasses/ImgWriterGdal.h"</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "imageclasses/ImgReaderOgr.h"</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "imageclasses/ImgWriterOgr.h"</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "algorithms/ConfusionMatrix.h"</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> </div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="comment">/******************************************************************************/</span></div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span> </div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span> {</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> input_opt(<span class="stringliteral">"i"</span>, <span class="stringliteral">"input"</span>, <span class="stringliteral">"Input raster dataset."</span>);</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> reference_opt(<span class="stringliteral">"ref"</span>, <span class="stringliteral">"reference"</span>, <span class="stringliteral">"Reference (raster or vector) dataset"</span>);</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> layer_opt(<span class="stringliteral">"ln"</span>, <span class="stringliteral">"ln"</span>, <span class="stringliteral">"Layer name(s) in sample. Leave empty to select all (for vector reference datasets only)"</span>);</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> mask_opt(<span class="stringliteral">"m"</span>, <span class="stringliteral">"mask"</span>, <span class="stringliteral">"Use the first band of the specified file as a validity mask. Nodata values can be set with the option msknodata."</span>);</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> msknodata_opt(<span class="stringliteral">"msknodata"</span>, <span class="stringliteral">"msknodata"</span>, <span class="stringliteral">"Mask value(s) where image is invalid. Use negative value for valid data (example: use -t -1: if only -1 is valid value)"</span>, 0);</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> nodata_opt(<span class="stringliteral">"nodata"</span>, <span class="stringliteral">"nodata"</span>, <span class="stringliteral">"No data value(s) in input or reference dataset are ignored"</span>);</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> band_opt(<span class="stringliteral">"b"</span>, <span class="stringliteral">"band"</span>, <span class="stringliteral">"Input (reference) raster band. Optionally, you can define different bands for input and reference bands respectively: -b 1 -b 0."</span>, 0);</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> rmse_opt(<span class="stringliteral">"rmse"</span>, <span class="stringliteral">"rmse"</span>, <span class="stringliteral">"Report root mean squared error"</span>, <span class="keyword">false</span>);</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> regression_opt(<span class="stringliteral">"reg"</span>, <span class="stringliteral">"reg"</span>, <span class="stringliteral">"Report linear regression (Input = c0+c1*Reference)"</span>, <span class="keyword">false</span>);</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> confusion_opt(<span class="stringliteral">"cm"</span>, <span class="stringliteral">"confusion"</span>, <span class="stringliteral">"Create confusion matrix (to std out)"</span>, <span class="keyword">false</span>);</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> cmformat_opt(<span class="stringliteral">"cmf"</span>,<span class="stringliteral">"cmf"</span>,<span class="stringliteral">"Format for confusion matrix (ascii or latex)"</span>,<span class="stringliteral">"ascii"</span>);</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> cmoutput_opt(<span class="stringliteral">"cmo"</span>,<span class="stringliteral">"cmo"</span>,<span class="stringliteral">"Output file for confusion matrix"</span>);</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> se95_opt(<span class="stringliteral">"se95"</span>,<span class="stringliteral">"se95"</span>,<span class="stringliteral">"Report standard error for 95 confidence interval"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> labelref_opt(<span class="stringliteral">"lr"</span>, <span class="stringliteral">"lref"</span>, <span class="stringliteral">"Attribute name of the reference label (for vector reference datasets only)"</span>, <span class="stringliteral">"label"</span>);</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> classname_opt(<span class="stringliteral">"c"</span>, <span class="stringliteral">"class"</span>, <span class="stringliteral">"List of class names."</span>); </div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> classvalue_opt(<span class="stringliteral">"r"</span>, <span class="stringliteral">"reclass"</span>, <span class="stringliteral">"List of class values (use same order as in classname option)."</span>); </div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> output_opt(<span class="stringliteral">"o"</span>, <span class="stringliteral">"output"</span>, <span class="stringliteral">"Output dataset (optional)"</span>);</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> ogrformat_opt(<span class="stringliteral">"f"</span>, <span class="stringliteral">"f"</span>, <span class="stringliteral">"OGR format for output vector (for vector reference datasets only)"</span>,<span class="stringliteral">"SQLite"</span>);</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  oformat_opt(<span class="stringliteral">"of"</span>, <span class="stringliteral">"oformat"</span>, <span class="stringliteral">"Output image format (see also gdal_translate)."</span>,<span class="stringliteral">"GTiff"</span>);</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> labelclass_opt(<span class="stringliteral">"lc"</span>, <span class="stringliteral">"lclass"</span>, <span class="stringliteral">"Attribute name of the classified label (for vector reference datasets only)"</span>, <span class="stringliteral">"class"</span>);</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> boundary_opt(<span class="stringliteral">"bnd"</span>, <span class="stringliteral">"boundary"</span>, <span class="stringliteral">"Boundary for selecting the sample (for vector reference datasets only)"</span>, 1,1);</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> homogeneous_opt(<span class="stringliteral">"hom"</span>, <span class="stringliteral">"homogeneous"</span>, <span class="stringliteral">"Only take regions with homogeneous boundary into account (for reference datasets only)"</span>, <span class="keyword">false</span>,1);</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> disc_opt(<span class="stringliteral">"circ"</span>, <span class="stringliteral">"circular"</span>, <span class="stringliteral">"Use circular boundary (for vector reference datasets only)"</span>, <span class="keyword">false</span>,1);</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> colorTable_opt(<span class="stringliteral">"ct"</span>, <span class="stringliteral">"ct"</span>, <span class="stringliteral">"Color table in ASCII format having 5 columns: id R G B ALFA (0: transparent, 255: solid)."</span>);</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> option_opt(<span class="stringliteral">"co"</span>, <span class="stringliteral">"co"</span>, <span class="stringliteral">"Creation option for output file. Multiple options can be specified."</span>);</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> valueE_opt(<span class="stringliteral">"\0"</span>, <span class="stringliteral">"correct"</span>, <span class="stringliteral">"Value for correct pixels"</span>, 0,2);</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> valueO_opt(<span class="stringliteral">"\0"</span>, <span class="stringliteral">"omission"</span>, <span class="stringliteral">"Value for omission errors: input label > reference label"</span>, 1,2);</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> valueC_opt(<span class="stringliteral">"\0"</span>, <span class="stringliteral">"commission"</span>, <span class="stringliteral">"Value for commission errors: input label < reference label"</span>, 2,1);</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> verbose_opt(<span class="stringliteral">"v"</span>, <span class="stringliteral">"verbose"</span>, <span class="stringliteral">"Verbose level"</span>, 0,2);</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span> </div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>   output_opt.setHide(1);</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>   ogrformat_opt.setHide(1);</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>   oformat_opt.setHide(1);</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>   labelclass_opt.setHide(1);</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>   boundary_opt.setHide(1);</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>   homogeneous_opt.setHide(1);</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>   disc_opt.setHide(1);</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>   colorTable_opt.setHide(1);</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>   option_opt.setHide(1);</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span> </div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>   <span class="keywordtype">bool</span> doProcess;<span class="comment">//stop process when program was invoked with help option (-h --help)</span></div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>     doProcess=input_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>     reference_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>     layer_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>     band_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>     rmse_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>     regression_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>     confusion_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>     labelref_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>     classname_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>     classvalue_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>     nodata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>     mask_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>     msknodata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>     output_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>     ogrformat_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>     labelclass_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>     cmformat_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>     cmoutput_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>     se95_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>     boundary_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>     homogeneous_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>     disc_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>     colorTable_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>     option_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>     <span class="comment">// class_opt.retrieveOption(argc,argv);</span></div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>     valueE_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>     valueO_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>     valueC_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>     verbose_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>   }</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> predefinedString){</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>     std::cout << predefinedString << std::endl;</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>     exit(0);</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>   }</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>   <span class="keywordflow">if</span>(!doProcess){</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>     cout << endl;</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>     cout << <span class="stringliteral">"Usage: pkdiff -i input -ref reference"</span> << endl;</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>     cout << endl;</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>     std::cout << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << std::endl;</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>     exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>   }</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span> </div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>   <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> inputReader;</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>   <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> maskReader;</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span> </div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>   <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>     cout << <span class="stringliteral">"flag(s) set to"</span>;</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iflag=0;iflag<nodata_opt.size();++iflag)</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>       cout << <span class="stringliteral">" "</span> << nodata_opt[iflag];</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>     cout << endl;</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>   }</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span> </div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>   <span class="keywordflow">if</span>(input_opt.empty()){</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>     std::cerr << <span class="stringliteral">"No input file provided (use option -i). Use --help for help information"</span> << std::endl;</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>     exit(0);</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>   }</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>   <span class="keywordflow">if</span>(reference_opt.empty()){</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>     std::cerr << <span class="stringliteral">"No reference file provided (use option -ref). Use --help for help information"</span> << std::endl;</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>     exit(0);</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>   }</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span> </div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>   <span class="comment">//band_opt[0] is for input</span></div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>   <span class="comment">//band_opt[1] is for reference</span></div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>   <span class="keywordflow">if</span>(band_opt.size()<2)</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>     band_opt.push_back(band_opt[0]);</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span> </div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>   <span class="keywordflow">if</span>(mask_opt.size())</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>     <span class="keywordflow">while</span>(mask_opt.size()<input_opt.size())</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>       mask_opt.push_back(mask_opt[0]);</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>   vector<short> inputRange;</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>   vector<short> referenceRange;</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>   <a class="code" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a> cm;</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>   <span class="keywordtype">int</span> nclass=0;</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>   map<string,short> classValueMap;</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>   vector<std::string> nameVector(255);<span class="comment">//the inverse of the classValueMap</span></div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>   vector<string> classNames;</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span> </div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ntotalValidation=0;</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nflagged=0;</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>   <a class="code" href="classVector2d.html">Vector2d<int></a> resultClass;</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>   vector<float> user;</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>   vector<float> producer;</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>   vector<unsigned int> nvalidation;</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span> </div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>   <span class="keywordflow">if</span>(confusion_opt[0]){</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>     <span class="comment">// if(class_opt.size()>1)</span></div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>     <span class="comment">//   inputRange=class_opt;</span></div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>     <span class="comment">// if(classvalue_opt.size()>1)</span></div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>     <span class="comment">//   inputRange=classvalue_opt;</span></div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>     <span class="comment">// else{</span></div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>         <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>           cout << <span class="stringliteral">"opening input image file "</span> << input_opt[0] << endl;</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>         inputReader.open(input_opt[0]);<span class="comment">//,imagicX_opt[0],imagicY_opt[0]);</span></div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>       }</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> error){</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>         cerr << error << endl;</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>         exit(1);</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>       }</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>       inputReader.getRange(inputRange,band_opt[0]);</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>       inputReader.close();</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>     <span class="comment">// }</span></div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>   </div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iflag=0;iflag<nodata_opt.size();++iflag){</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>       vector<short>::iterator fit;</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>       fit=find(inputRange.begin(),inputRange.end(),<span class="keyword">static_cast<</span><span class="keywordtype">short</span><span class="keyword">></span>(nodata_opt[iflag]));</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>       <span class="keywordflow">if</span>(fit!=inputRange.end())</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>         inputRange.erase(fit);</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>     }</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>     nclass=inputRange.size();</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>     <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>       cout << <span class="stringliteral">"nclass (inputRange.size()): "</span> << nclass << endl;</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>       cout << <span class="stringliteral">"input range: "</span> << endl;</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>     }</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>     <span class="keywordflow">if</span>(classname_opt.size()){</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>       assert(classname_opt.size()==classvalue_opt.size());</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<classname_opt.size();++iclass){</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>         classValueMap[classname_opt[iclass]]=classvalue_opt[iclass];</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>         assert(classvalue_opt[iclass]<nameVector.size());</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>         nameVector[classvalue_opt[iclass]]=classname_opt[iclass];</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>       }</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>     }</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>     <span class="comment">// nclass=classValueMap.size();</span></div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> rc=0;rc<inputRange.size();++rc){</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>       classNames.push_back(type2string(inputRange[rc]));</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>         cout << inputRange[rc] << endl;</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>     }</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>     cm.setClassNames(classNames);</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>     <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>       cout << <span class="stringliteral">"class names: "</span> << endl;</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<cm.nClasses();++iclass)</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>         cout << iclass << <span class="stringliteral">" "</span> << cm.getClass(iclass) << endl;</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>     }</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>     resultClass.resize(nclass,nclass);</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>     user.resize(nclass);</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>     producer.resize(nclass);</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>     nvalidation.resize(nclass);</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>     <span class="comment">//initialize</span></div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> rc=0;rc<nclass;++rc){</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ic=0;ic<nclass;++ic)</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>         resultClass[rc][ic]=0;</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>       nvalidation[rc]=0;</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>     }</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>   }</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>   </div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>   <span class="keywordtype">bool</span> isDifferent=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>   <span class="keywordtype">bool</span> refIsRaster=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span> </div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>   <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a> referenceReaderOgr;</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>     referenceReaderOgr.open(reference_opt[0]);</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>     referenceReaderOgr.close();</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>   }</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorString){</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>     refIsRaster=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>   }</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>   <span class="keywordtype">float</span> progress=0;</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>   <span class="comment">// if(reference_opt[0].find(".shp")!=string::npos){</span></div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>   <span class="keywordflow">if</span>(!refIsRaster){</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iinput=0;iinput<input_opt.size();++iinput){</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>     cout << <span class="stringliteral">"Processing input "</span> << input_opt[iinput] << endl;</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>       <span class="keywordflow">if</span>(output_opt.size())</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>         assert(reference_opt.size()==output_opt.size());</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iref=0;iref<reference_opt.size();++iref){</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>     cout << <span class="stringliteral">"reference "</span> << reference_opt[iref] << endl;</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>         <span class="comment">// assert(reference_opt[iref].find(".shp")!=string::npos);</span></div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>         <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>           inputReader.open(input_opt[iinput]);<span class="comment">//,imagicX_opt[0],imagicY_opt[0]);</span></div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>           <span class="keywordflow">if</span>(mask_opt.size()){</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>             maskReader.open(mask_opt[iinput]);</div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>             assert(inputReader.nrOfCol()==maskReader.nrOfCol());</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>             assert(inputReader.nrOfRow()==maskReader.nrOfRow());</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>           }</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>           referenceReaderOgr.open(reference_opt[iref]);</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>         }</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>         <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> error){</div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>           cerr << error << endl;</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>           exit(1);</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>         }</div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>         <span class="keywordflow">if</span>(confusion_opt[0])</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>           referenceRange=inputRange;</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span> </div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>         <a class="code" href="classImgWriterOgr.html">ImgWriterOgr</a> ogrWriter;</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>     <span class="keywordflow">if</span>(output_opt.size()){</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>         ogrWriter.open(output_opt[iref],ogrformat_opt[0]);</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>       }</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> error){</div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>         cerr << error << endl;</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>         exit(1);</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>       }</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>     }</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>     <span class="keywordtype">int</span> nlayer=referenceReaderOgr.getDataSource()->GetLayerCount();</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ilayer=0;ilayer<nlayer;++ilayer){</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>       progress=0;</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>       OGRLayer *readLayer=referenceReaderOgr.getLayer(ilayer);</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>       <span class="comment">//      readLayer = referenceReaderOgr.getDataSource()->GetLayer(ilayer);</span></div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>       <span class="keywordtype">string</span> currentLayername=readLayer->GetName();</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>       <span class="keywordflow">if</span>(layer_opt.size())</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>         <span class="keywordflow">if</span>(find(layer_opt.begin(),layer_opt.end(),currentLayername)==layer_opt.end())</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>           <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>       <span class="keywordflow">if</span>(!verbose_opt[0])</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>         pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>         cout << <span class="stringliteral">"processing layer "</span> << readLayer->GetName() << endl;</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span> </div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>       readLayer->ResetReading();</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>       OGRLayer *writeLayer;</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>       <span class="keywordflow">if</span>(output_opt.size()){</div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>         <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>           cout << <span class="stringliteral">"creating output vector file "</span> << output_opt[0] << endl;</div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>         <span class="comment">// assert(output_opt[0].find(".shp")!=string::npos);</span></div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>         <span class="keywordtype">char</span>     **papszOptions=NULL;</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>         <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>           cout << <span class="stringliteral">"creating layer: "</span> << readLayer->GetName() << endl;</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>         <span class="comment">// if(ogrWriter.createLayer(layername, referenceReaderOgr.getProjection(ilayer), referenceReaderOgr.getGeometryType(ilayer), papszOptions)==NULL)</span></div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>         writeLayer=ogrWriter.createLayer(readLayer->GetName(), referenceReaderOgr.getProjection(ilayer), wkbPoint, papszOptions);</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>         assert(writeLayer);</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>         <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>           cout << <span class="stringliteral">"created layer"</span> << endl;</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>           cout << <span class="stringliteral">"copy fields from "</span> << reference_opt[iref] << endl;</div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>         }</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>         ogrWriter.copyFields(referenceReaderOgr,ilayer,ilayer);</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>         <span class="comment">//create extra field for classified label</span></div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>         <span class="keywordtype">short</span> theDim=boundary_opt[0];</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> windowJ=-theDim/2;windowJ<(theDim+1)/2;++windowJ){</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> windowI=-theDim/2;windowI<(theDim+1)/2;++windowI){</div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>         <span class="keywordflow">if</span>(disc_opt[0]&&(windowI*windowI+windowJ*windowJ>(theDim/2)*(theDim/2)))</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>           <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>         ostringstream fs;</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>         <span class="keywordflow">if</span>(theDim>1)</div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>           fs << labelclass_opt[0] << <span class="stringliteral">"_"</span> << windowJ << <span class="stringliteral">"_"</span> << windowI;</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>           fs << labelclass_opt[0];</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>         <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>           cout << <span class="stringliteral">"creating field "</span> << fs.str() << endl;</div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>         ogrWriter.createField(fs.str(),OFTInteger,ilayer);</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>           }</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>         }</div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>       }</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>       OGRFeature *readFeature;</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>       OGRFeature *writeFeature;</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>       <span class="keywordtype">int</span> isample=0;</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nfeatureInLayer=readLayer->GetFeatureCount();</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ifeature=0;</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>       <span class="keywordflow">while</span>( (readFeature = readLayer->GetNextFeature()) != NULL ){</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>         <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>           cout << <span class="stringliteral">"sample "</span> << ++isample << endl;</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>         <span class="comment">//get x and y from readFeature</span></div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>         <span class="keywordtype">double</span> x,y;</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>         OGRGeometry *poGeometry;</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>         OGRPoint centroidPoint;</div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>         OGRPoint *poPoint;</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>         poGeometry = readFeature->GetGeometryRef();</div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>         <span class="comment">// assert( poGeometry != NULL && wkbFlatten(poGeometry->getGeometryType()) == wkbPoint );</span></div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>         <span class="keywordflow">if</span>(poGeometry==NULL)</div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>           <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(wkbFlatten(poGeometry->getGeometryType()) == wkbMultiPolygon){</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>           OGRMultiPolygon readPolygon = *((OGRMultiPolygon *) poGeometry);</div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span>           readPolygon = *((OGRMultiPolygon *) poGeometry);</div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>           readPolygon.Centroid(&centroidPoint);</div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>           poPoint=&centroidPoint;</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>         }</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(wkbFlatten(poGeometry->getGeometryType()) == wkbPolygon){</div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>           OGRPolygon readPolygon=*((OGRPolygon *) poGeometry);</div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span>           readPolygon.Centroid(&centroidPoint);</div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>           poPoint=&centroidPoint;</div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>         }</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(wkbFlatten(poGeometry->getGeometryType()) == wkbPoint )</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>           poPoint = (OGRPoint *) poGeometry;</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>           std::cerr << <span class="stringliteral">"Warning: skipping feature (not of type point or polygon)"</span> << std::endl;</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>           <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>         }</div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>         x=poPoint->getX();</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span>         y=poPoint->getY();</div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>         <span class="keywordtype">double</span> inputValue;</div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>         vector<double> inputValues;</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span>         <span class="keywordtype">bool</span> isHomogeneous=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>         <span class="keywordtype">short</span> maskValue;</div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span>         <span class="keywordtype">short</span> outputValue;</div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span>         <span class="comment">//read referenceValue from feature</span></div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>         <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> referenceValue;</div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span>         <span class="keywordtype">string</span> referenceClassName;</div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span>         <span class="keywordflow">if</span>(classValueMap.size()){</div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span>           referenceClassName=readFeature->GetFieldAsString(readFeature->GetFieldIndex(labelref_opt[0].c_str()));</div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span>           referenceValue=classValueMap[referenceClassName];</div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span>         }</div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span>           referenceValue=readFeature->GetFieldAsInteger(readFeature->GetFieldIndex(labelref_opt[0].c_str()));</div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span>         <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>           cout << <span class="stringliteral">"reference value: "</span> << referenceValue << endl;</div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>         </div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span>         <span class="keywordtype">bool</span> pixelFlagged=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span>         <span class="keywordtype">bool</span> maskFlagged=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iflag=0;iflag<nodata_opt.size();++iflag){</div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span>           <span class="keywordflow">if</span>(referenceValue==nodata_opt[iflag])</div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span>         pixelFlagged=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span>         }</div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span>         <span class="keywordflow">if</span>(pixelFlagged)</div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span>           <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00445"></a><span class="lineno">  445</span>         <span class="keywordtype">double</span> i_centre,j_centre;</div>
-<div class="line"><a name="l00446"></a><span class="lineno">  446</span>         <span class="comment">//input reader is georeferenced!</span></div>
-<div class="line"><a name="l00447"></a><span class="lineno">  447</span>         inputReader.geo2image(x,y,i_centre,j_centre);</div>
-<div class="line"><a name="l00448"></a><span class="lineno">  448</span>         <span class="comment">//       else{</span></div>
-<div class="line"><a name="l00449"></a><span class="lineno">  449</span>         <span class="comment">//         i_centre=x;</span></div>
-<div class="line"><a name="l00450"></a><span class="lineno">  450</span>         <span class="comment">//         j_centre=y;</span></div>
-<div class="line"><a name="l00451"></a><span class="lineno">  451</span>         <span class="comment">//       }</span></div>
-<div class="line"><a name="l00452"></a><span class="lineno">  452</span>         <span class="comment">//nearest neighbour</span></div>
-<div class="line"><a name="l00453"></a><span class="lineno">  453</span>         j_centre=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(j_centre);</div>
-<div class="line"><a name="l00454"></a><span class="lineno">  454</span>         i_centre=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(i_centre);</div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span>         <span class="comment">//check if j_centre is out of bounds</span></div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</span>         <span class="keywordflow">if</span>(static_cast<int>(j_centre)<0||<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(j_centre)>=inputReader.nrOfRow())</div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span>           <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00458"></a><span class="lineno">  458</span>         <span class="comment">//check if i_centre is out of bounds</span></div>
-<div class="line"><a name="l00459"></a><span class="lineno">  459</span>         <span class="keywordflow">if</span>(static_cast<int>(i_centre)<0||<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(i_centre)>=inputReader.nrOfCol())</div>
-<div class="line"><a name="l00460"></a><span class="lineno">  460</span>           <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span> </div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span>         <span class="keywordflow">if</span>(output_opt.size()){</div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span>           writeFeature = OGRFeature::CreateFeature(writeLayer->GetLayerDefn());</div>
-<div class="line"><a name="l00464"></a><span class="lineno">  464</span>           assert(readFeature);</div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span>           <span class="keywordtype">int</span> nfield=readFeature->GetFieldCount();</div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>           writeFeature->SetGeometry(poPoint);</div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span>           <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span>             cout << <span class="stringliteral">"copying fields from "</span> << reference_opt[0] << endl;</div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span>           assert(readFeature);</div>
-<div class="line"><a name="l00470"></a><span class="lineno">  470</span>           assert(writeFeature);</div>
-<div class="line"><a name="l00471"></a><span class="lineno">  471</span>           vector<int> panMap(nfield);</div>
-<div class="line"><a name="l00472"></a><span class="lineno">  472</span>           vector<int>::iterator panit=panMap.begin();</div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ifield=0;ifield<nfield;++ifield)</div>
-<div class="line"><a name="l00474"></a><span class="lineno">  474</span>             panMap[ifield]=ifield;</div>
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span>           writeFeature->SetFieldsFrom(readFeature,&(panMap[0]));</div>
-<div class="line"><a name="l00476"></a><span class="lineno">  476</span>           <span class="comment">// if(writeFeature->SetFrom(readFeature)!= OGRERR_NONE)</span></div>
-<div class="line"><a name="l00477"></a><span class="lineno">  477</span>           <span class="comment">//    cerr << "writing feature failed" << endl;</span></div>
-<div class="line"><a name="l00478"></a><span class="lineno">  478</span>           <span class="comment">// if(verbose_opt[0])</span></div>
-<div class="line"><a name="l00479"></a><span class="lineno">  479</span>           <span class="comment">//    cout << "feature written" << endl;</span></div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span>         }</div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span>         <span class="keywordtype">bool</span> windowAllFlagged=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00482"></a><span class="lineno">  482</span>         <span class="keywordtype">bool</span> windowHasFlag=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00483"></a><span class="lineno">  483</span>         <span class="keywordtype">short</span> theDim=boundary_opt[0];</div>
-<div class="line"><a name="l00484"></a><span class="lineno">  484</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> windowJ=-theDim/2;windowJ<(theDim+1)/2;++windowJ){</div>
-<div class="line"><a name="l00485"></a><span class="lineno">  485</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> windowI=-theDim/2;windowI<(theDim+1)/2;++windowI){</div>
-<div class="line"><a name="l00486"></a><span class="lineno">  486</span>         <span class="keywordflow">if</span>(disc_opt[0]&&(windowI*windowI+windowJ*windowJ>(theDim/2)*(theDim/2)))</div>
-<div class="line"><a name="l00487"></a><span class="lineno">  487</span>           <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00488"></a><span class="lineno">  488</span>         <span class="keywordtype">int</span> j=j_centre+windowJ;</div>
-<div class="line"><a name="l00489"></a><span class="lineno">  489</span>         <span class="comment">//check if j is out of bounds</span></div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span>         <span class="keywordflow">if</span>(static_cast<int>(j)<0||<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(j)>=inputReader.nrOfRow())</div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span>           <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00492"></a><span class="lineno">  492</span>         <span class="keywordtype">int</span> i=i_centre+windowI;</div>
-<div class="line"><a name="l00493"></a><span class="lineno">  493</span>         <span class="comment">//check if i is out of bounds</span></div>
-<div class="line"><a name="l00494"></a><span class="lineno">  494</span>         <span class="keywordflow">if</span>(static_cast<int>(i)<0||<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(i)>=inputReader.nrOfCol())</div>
-<div class="line"><a name="l00495"></a><span class="lineno">  495</span>           <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00496"></a><span class="lineno">  496</span>         <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00497"></a><span class="lineno">  497</span>           cout << setprecision(12) << <span class="stringliteral">"reading image value at x,y "</span> << x << <span class="stringliteral">","</span> << y << <span class="stringliteral">" ("</span> << i << <span class="stringliteral">","</span> << j << <span class="stringliteral">"), "</span>;</div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span>         inputReader.readData(inputValue,GDT_Float64,i,j,band_opt[0]);</div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span>         inputValues.push_back(inputValue);</div>
-<div class="line"><a name="l00500"></a><span class="lineno">  500</span>         <span class="keywordflow">if</span>(inputValues.back()!=*(inputValues.begin()))</div>
-<div class="line"><a name="l00501"></a><span class="lineno">  501</span>           isHomogeneous=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00502"></a><span class="lineno">  502</span>         <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00503"></a><span class="lineno">  503</span>           cout << <span class="stringliteral">"input value: "</span> << inputValue << endl;</div>
-<div class="line"><a name="l00504"></a><span class="lineno">  504</span>         pixelFlagged=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00505"></a><span class="lineno">  505</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iflag=0;iflag<nodata_opt.size();++iflag){</div>
-<div class="line"><a name="l00506"></a><span class="lineno">  506</span>           <span class="keywordflow">if</span>(inputValue==nodata_opt[iflag]){</div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span>             pixelFlagged=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00508"></a><span class="lineno">  508</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00509"></a><span class="lineno">  509</span>           }</div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span>         }</div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span>         maskFlagged=<span class="keyword">false</span>;<span class="comment">//(msknodata_opt[ivalue]>=0)?false:true;</span></div>
-<div class="line"><a name="l00512"></a><span class="lineno">  512</span>         <span class="keywordflow">if</span>(mask_opt.size()){</div>
-<div class="line"><a name="l00513"></a><span class="lineno">  513</span>           maskReader.readData(maskValue,GDT_Float64,i,j,0);</div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ivalue=0;ivalue<msknodata_opt.size();++ivalue){</div>
-<div class="line"><a name="l00515"></a><span class="lineno">  515</span>             <span class="keywordflow">if</span>(msknodata_opt[ivalue]>=0){<span class="comment">//values set in msknodata_opt are invalid</span></div>
-<div class="line"><a name="l00516"></a><span class="lineno">  516</span>               <span class="keywordflow">if</span>(maskValue==msknodata_opt[ivalue]){</div>
-<div class="line"><a name="l00517"></a><span class="lineno">  517</span>             maskFlagged=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00518"></a><span class="lineno">  518</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00519"></a><span class="lineno">  519</span>               }</div>
-<div class="line"><a name="l00520"></a><span class="lineno">  520</span>             }</div>
-<div class="line"><a name="l00521"></a><span class="lineno">  521</span>             <span class="keywordflow">else</span>{<span class="comment">//only values set in msknodata_opt are valid</span></div>
-<div class="line"><a name="l00522"></a><span class="lineno">  522</span>               <span class="keywordflow">if</span>(maskValue!=-msknodata_opt[ivalue])</div>
-<div class="line"><a name="l00523"></a><span class="lineno">  523</span>             maskFlagged=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00524"></a><span class="lineno">  524</span>               <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00525"></a><span class="lineno">  525</span>             maskFlagged=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00526"></a><span class="lineno">  526</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00527"></a><span class="lineno">  527</span>               }</div>
-<div class="line"><a name="l00528"></a><span class="lineno">  528</span>             }</div>
-<div class="line"><a name="l00529"></a><span class="lineno">  529</span>           }</div>
-<div class="line"><a name="l00530"></a><span class="lineno">  530</span>         }</div>
-<div class="line"><a name="l00531"></a><span class="lineno">  531</span>         pixelFlagged=pixelFlagged||maskFlagged;</div>
-<div class="line"><a name="l00532"></a><span class="lineno">  532</span>         <span class="keywordflow">if</span>(pixelFlagged)</div>
-<div class="line"><a name="l00533"></a><span class="lineno">  533</span>           windowHasFlag=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00534"></a><span class="lineno">  534</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00535"></a><span class="lineno">  535</span>           windowAllFlagged=<span class="keyword">false</span>;<span class="comment">//at least one good pixel in neighborhood</span></div>
-<div class="line"><a name="l00536"></a><span class="lineno">  536</span>           }</div>
-<div class="line"><a name="l00537"></a><span class="lineno">  537</span>         }</div>
-<div class="line"><a name="l00538"></a><span class="lineno">  538</span>         <span class="comment">//at this point we know the values for the entire window</span></div>
-<div class="line"><a name="l00539"></a><span class="lineno">  539</span> </div>
-<div class="line"><a name="l00540"></a><span class="lineno">  540</span>         <span class="keywordflow">if</span>(homogeneous_opt[0]){<span class="comment">//only centre pixel</span></div>
-<div class="line"><a name="l00541"></a><span class="lineno">  541</span>           <span class="keywordtype">int</span> j=j_centre;</div>
-<div class="line"><a name="l00542"></a><span class="lineno">  542</span>           <span class="keywordtype">int</span> i=i_centre;</div>
-<div class="line"><a name="l00543"></a><span class="lineno">  543</span>           <span class="comment">//flag if not all pixels are homogeneous or if at least one pixel flagged</span></div>
-<div class="line"><a name="l00544"></a><span class="lineno">  544</span>           </div>
-<div class="line"><a name="l00545"></a><span class="lineno">  545</span>           <span class="keywordflow">if</span>(!windowHasFlag&&isHomogeneous){</div>
-<div class="line"><a name="l00546"></a><span class="lineno">  546</span>         <span class="keywordflow">if</span>(output_opt.size())</div>
-<div class="line"><a name="l00547"></a><span class="lineno">  547</span>           writeFeature->SetField(labelclass_opt[0].c_str(),<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(inputValue));</div>
-<div class="line"><a name="l00548"></a><span class="lineno">  548</span>         <span class="keywordflow">if</span>(confusion_opt[0]){</div>
-<div class="line"><a name="l00549"></a><span class="lineno">  549</span>           ++ntotalValidation;</div>
-<div class="line"><a name="l00550"></a><span class="lineno">  550</span>           <span class="keywordflow">if</span>(classValueMap.size()){</div>
-<div class="line"><a name="l00551"></a><span class="lineno">  551</span>             assert(inputValue<nameVector.size());</div>
-<div class="line"><a name="l00552"></a><span class="lineno">  552</span>             <span class="keywordtype">string</span> className=nameVector[<span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">short</span><span class="keyword">></span>(inputValue)];</div>
-<div class="line"><a name="l00553"></a><span class="lineno">  553</span>             cm.incrementResult(type2string<short>(classValueMap[referenceClassName]),type2string<short>(classValueMap[className]),1);</div>
-<div class="line"><a name="l00554"></a><span class="lineno">  554</span>           }</div>
-<div class="line"><a name="l00555"></a><span class="lineno">  555</span>           <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00556"></a><span class="lineno">  556</span>             <span class="keywordtype">int</span> rc=distance(referenceRange.begin(),find(referenceRange.begin(),referenceRange.end(),<span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">short</span><span class="keyword">></span>(referenceValue)));</div>
-<div class="line"><a name="l00557"></a><span class="lineno">  557</span>             <span class="keywordtype">int</span> ic=distance(inputRange.begin(),find(inputRange.begin(),inputRange.end(),<span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">short</span><span class="keyword">></span>(inputValue)));</div>
-<div class="line"><a name="l00558"></a><span class="lineno">  558</span>             assert(rc<nclass);</div>
-<div class="line"><a name="l00559"></a><span class="lineno">  559</span>             assert(ic<nclass);</div>
-<div class="line"><a name="l00560"></a><span class="lineno">  560</span>             ++nvalidation[rc];</div>
-<div class="line"><a name="l00561"></a><span class="lineno">  561</span>             ++resultClass[rc][ic];</div>
-<div class="line"><a name="l00562"></a><span class="lineno">  562</span>             <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00563"></a><span class="lineno">  563</span>               cout << <span class="stringliteral">"increment: "</span> << rc << <span class="stringliteral">" "</span> << referenceRange[rc] << <span class="stringliteral">" "</span> << ic << <span class="stringliteral">" "</span> << inputRange[ic] << endl;</div>
-<div class="line"><a name="l00564"></a><span class="lineno">  564</span>             cm.incrementResult(cm.getClass(rc),cm.getClass(ic),1);</div>
-<div class="line"><a name="l00565"></a><span class="lineno">  565</span>           }</div>
-<div class="line"><a name="l00566"></a><span class="lineno">  566</span>         }</div>
-<div class="line"><a name="l00567"></a><span class="lineno">  567</span>         <span class="keywordflow">if</span>(inputValue==referenceValue){<span class="comment">//correct</span></div>
-<div class="line"><a name="l00568"></a><span class="lineno">  568</span>           outputValue=valueE_opt[0];</div>
-<div class="line"><a name="l00569"></a><span class="lineno">  569</span>           <span class="keywordflow">if</span>(nodata_opt.size()){</div>
-<div class="line"><a name="l00570"></a><span class="lineno">  570</span>             <span class="keywordflow">if</span>(valueE_opt[0]==nodata_opt[0])</div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span>               outputValue=inputValue;</div>
-<div class="line"><a name="l00572"></a><span class="lineno">  572</span>           }</div>
-<div class="line"><a name="l00573"></a><span class="lineno">  573</span>         }</div>
-<div class="line"><a name="l00574"></a><span class="lineno">  574</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(inputValue>referenceValue)<span class="comment">//1=forest,2=non-forest</span></div>
-<div class="line"><a name="l00575"></a><span class="lineno">  575</span>           outputValue=valueO_opt[0];<span class="comment">//omission error</span></div>
-<div class="line"><a name="l00576"></a><span class="lineno">  576</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00577"></a><span class="lineno">  577</span>           outputValue=valueC_opt[0];<span class="comment">//commission error</span></div>
-<div class="line"><a name="l00578"></a><span class="lineno">  578</span>           }</div>
-<div class="line"><a name="l00579"></a><span class="lineno">  579</span>         }</div>
-<div class="line"><a name="l00580"></a><span class="lineno">  580</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00581"></a><span class="lineno">  581</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> windowJ=-theDim/2;windowJ<(theDim+1)/2;++windowJ){</div>
-<div class="line"><a name="l00582"></a><span class="lineno">  582</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> windowI=-theDim/2;windowI<(theDim+1)/2;++windowI){</div>
-<div class="line"><a name="l00583"></a><span class="lineno">  583</span>           <span class="keywordflow">if</span>(disc_opt[0]&&(windowI*windowI+windowJ*windowJ>(theDim/2)*(theDim/2)))</div>
-<div class="line"><a name="l00584"></a><span class="lineno">  584</span>             <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00585"></a><span class="lineno">  585</span>           <span class="keywordtype">int</span> j=j_centre+windowJ;</div>
-<div class="line"><a name="l00586"></a><span class="lineno">  586</span>           <span class="comment">//check if j is out of bounds</span></div>
-<div class="line"><a name="l00587"></a><span class="lineno">  587</span>           <span class="keywordflow">if</span>(static_cast<int>(j)<0||<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(j)>=inputReader.nrOfRow())</div>
-<div class="line"><a name="l00588"></a><span class="lineno">  588</span>             <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00589"></a><span class="lineno">  589</span>           <span class="keywordtype">int</span> i=i_centre+windowI;</div>
-<div class="line"><a name="l00590"></a><span class="lineno">  590</span>           <span class="comment">//check if i is out of bounds</span></div>
-<div class="line"><a name="l00591"></a><span class="lineno">  591</span>           <span class="keywordflow">if</span>(static_cast<int>(i)<0||<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(i)>=inputReader.nrOfCol())</div>
-<div class="line"><a name="l00592"></a><span class="lineno">  592</span>             <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00593"></a><span class="lineno">  593</span>           <span class="keywordflow">if</span>(!windowAllFlagged){</div>
-<div class="line"><a name="l00594"></a><span class="lineno">  594</span>             ostringstream fs;</div>
-<div class="line"><a name="l00595"></a><span class="lineno">  595</span>             <span class="keywordflow">if</span>(theDim>1)</div>
-<div class="line"><a name="l00596"></a><span class="lineno">  596</span>               fs << labelclass_opt[0] << <span class="stringliteral">"_"</span> << windowJ << <span class="stringliteral">"_"</span> << windowI;</div>
-<div class="line"><a name="l00597"></a><span class="lineno">  597</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00598"></a><span class="lineno">  598</span>               fs << labelclass_opt[0];</div>
-<div class="line"><a name="l00599"></a><span class="lineno">  599</span>             <span class="keywordflow">if</span>(output_opt.size())</div>
-<div class="line"><a name="l00600"></a><span class="lineno">  600</span>               writeFeature->SetField(fs.str().c_str(),inputValue);</div>
-<div class="line"><a name="l00601"></a><span class="lineno">  601</span>             <span class="keywordflow">if</span>(!windowJ&&!windowI){<span class="comment">//centre pixel</span></div>
-<div class="line"><a name="l00602"></a><span class="lineno">  602</span>               <span class="keywordflow">if</span>(confusion_opt[0]){</div>
-<div class="line"><a name="l00603"></a><span class="lineno">  603</span>             ++ntotalValidation;</div>
-<div class="line"><a name="l00604"></a><span class="lineno">  604</span>             <span class="keywordflow">if</span>(classValueMap.size()){</div>
-<div class="line"><a name="l00605"></a><span class="lineno">  605</span>               assert(inputValue<nameVector.size());</div>
-<div class="line"><a name="l00606"></a><span class="lineno">  606</span>               <span class="keywordtype">string</span> className=nameVector[<span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">short</span><span class="keyword">></span>(inputValue)];</div>
-<div class="line"><a name="l00607"></a><span class="lineno">  607</span>               cm.incrementResult(type2string<short>(classValueMap[referenceClassName]),type2string<short>(classValueMap[className]),1);</div>
-<div class="line"><a name="l00608"></a><span class="lineno">  608</span>             }</div>
-<div class="line"><a name="l00609"></a><span class="lineno">  609</span>             <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00610"></a><span class="lineno">  610</span>               <span class="keywordtype">int</span> rc=distance(referenceRange.begin(),find(referenceRange.begin(),referenceRange.end(),<span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">short</span><span class="keyword">></span>(referenceValue)));</div>
-<div class="line"><a name="l00611"></a><span class="lineno">  611</span>               <span class="keywordtype">int</span> ic=distance(inputRange.begin(),find(inputRange.begin(),inputRange.end(),<span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">short</span><span class="keyword">></span>(inputValue)));</div>
-<div class="line"><a name="l00612"></a><span class="lineno">  612</span>               <span class="keywordflow">if</span>(rc>=nclass)</div>
-<div class="line"><a name="l00613"></a><span class="lineno">  613</span>                 <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00614"></a><span class="lineno">  614</span>               <span class="keywordflow">if</span>(ic>=nclass)</div>
-<div class="line"><a name="l00615"></a><span class="lineno">  615</span>                 <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00616"></a><span class="lineno">  616</span>               <span class="comment">// assert(rc<nclass);</span></div>
-<div class="line"><a name="l00617"></a><span class="lineno">  617</span>               <span class="comment">// assert(ic<nclass);</span></div>
-<div class="line"><a name="l00618"></a><span class="lineno">  618</span>               ++nvalidation[rc];</div>
-<div class="line"><a name="l00619"></a><span class="lineno">  619</span>               ++resultClass[rc][ic];</div>
-<div class="line"><a name="l00620"></a><span class="lineno">  620</span>               <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00621"></a><span class="lineno">  621</span>                 cout << <span class="stringliteral">"increment: "</span> << rc << <span class="stringliteral">" "</span> << referenceRange[rc] << <span class="stringliteral">" "</span> << ic << <span class="stringliteral">" "</span> << inputRange[ic] << endl;</div>
-<div class="line"><a name="l00622"></a><span class="lineno">  622</span>               cm.incrementResult(cm.getClass(rc),cm.getClass(ic),1);</div>
-<div class="line"><a name="l00623"></a><span class="lineno">  623</span>             }</div>
-<div class="line"><a name="l00624"></a><span class="lineno">  624</span>               }</div>
-<div class="line"><a name="l00625"></a><span class="lineno">  625</span>               <span class="keywordflow">if</span>(inputValue==referenceValue){<span class="comment">//correct</span></div>
-<div class="line"><a name="l00626"></a><span class="lineno">  626</span>             outputValue=valueE_opt[0];</div>
-<div class="line"><a name="l00627"></a><span class="lineno">  627</span>             <span class="keywordflow">if</span>(nodata_opt.size()){</div>
-<div class="line"><a name="l00628"></a><span class="lineno">  628</span>               <span class="keywordflow">if</span>(valueE_opt[0]==nodata_opt[0])</div>
-<div class="line"><a name="l00629"></a><span class="lineno">  629</span>                 outputValue=inputValue;</div>
-<div class="line"><a name="l00630"></a><span class="lineno">  630</span>             }</div>
-<div class="line"><a name="l00631"></a><span class="lineno">  631</span>               }</div>
-<div class="line"><a name="l00632"></a><span class="lineno">  632</span>               <span class="keywordflow">else</span> <span class="keywordflow">if</span>(inputValue>referenceValue)<span class="comment">//1=forest,2=non-forest</span></div>
-<div class="line"><a name="l00633"></a><span class="lineno">  633</span>             outputValue=valueO_opt[0];<span class="comment">//omission error</span></div>
-<div class="line"><a name="l00634"></a><span class="lineno">  634</span>               <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00635"></a><span class="lineno">  635</span>             outputValue=valueC_opt[0];<span class="comment">//commission error</span></div>
-<div class="line"><a name="l00636"></a><span class="lineno">  636</span>             }</div>
-<div class="line"><a name="l00637"></a><span class="lineno">  637</span>           }</div>
-<div class="line"><a name="l00638"></a><span class="lineno">  638</span>         }</div>
-<div class="line"><a name="l00639"></a><span class="lineno">  639</span>           }</div>
-<div class="line"><a name="l00640"></a><span class="lineno">  640</span>         }</div>
-<div class="line"><a name="l00641"></a><span class="lineno">  641</span>         <span class="keywordflow">if</span>(output_opt.size()){</div>
-<div class="line"><a name="l00642"></a><span class="lineno">  642</span>           <span class="keywordflow">if</span>(!windowAllFlagged){</div>
-<div class="line"><a name="l00643"></a><span class="lineno">  643</span>         <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00644"></a><span class="lineno">  644</span>           cout << <span class="stringliteral">"creating feature"</span> << endl;</div>
-<div class="line"><a name="l00645"></a><span class="lineno">  645</span>         <span class="keywordflow">if</span>(writeLayer->CreateFeature( writeFeature ) != OGRERR_NONE ){</div>
-<div class="line"><a name="l00646"></a><span class="lineno">  646</span>           <span class="keywordtype">string</span> errorString=<span class="stringliteral">"Failed to create feature in OGR vector file"</span>;</div>
-<div class="line"><a name="l00647"></a><span class="lineno">  647</span>           <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00648"></a><span class="lineno">  648</span>         }</div>
-<div class="line"><a name="l00649"></a><span class="lineno">  649</span>           }</div>
-<div class="line"><a name="l00650"></a><span class="lineno">  650</span>           OGRFeature::DestroyFeature( writeFeature );</div>
-<div class="line"><a name="l00651"></a><span class="lineno">  651</span>         }</div>
-<div class="line"><a name="l00652"></a><span class="lineno">  652</span>         ++ifeature;</div>
-<div class="line"><a name="l00653"></a><span class="lineno">  653</span>         progress=<span class="keyword">static_cast<</span><span class="keywordtype">float</span><span class="keyword">></span>(ifeature+1)/nfeatureInLayer;</div>
-<div class="line"><a name="l00654"></a><span class="lineno">  654</span>         pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00655"></a><span class="lineno">  655</span>       }<span class="comment">//next feature</span></div>
-<div class="line"><a name="l00656"></a><span class="lineno">  656</span>     }<span class="comment">//next layer</span></div>
-<div class="line"><a name="l00657"></a><span class="lineno">  657</span>         <span class="keywordflow">if</span>(output_opt.size())</div>
-<div class="line"><a name="l00658"></a><span class="lineno">  658</span>           ogrWriter.close();</div>
-<div class="line"><a name="l00659"></a><span class="lineno">  659</span>         referenceReaderOgr.close();</div>
-<div class="line"><a name="l00660"></a><span class="lineno">  660</span>         inputReader.close();</div>
-<div class="line"><a name="l00661"></a><span class="lineno">  661</span>         <span class="keywordflow">if</span>(mask_opt.size())</div>
-<div class="line"><a name="l00662"></a><span class="lineno">  662</span>           maskReader.close();</div>
-<div class="line"><a name="l00663"></a><span class="lineno">  663</span>       }<span class="comment">//next reference</span></div>
-<div class="line"><a name="l00664"></a><span class="lineno">  664</span>     }<span class="comment">//next input</span></div>
-<div class="line"><a name="l00665"></a><span class="lineno">  665</span>     pfnProgress(1.0,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00666"></a><span class="lineno">  666</span>   }<span class="comment">//reference is OGR vector</span></div>
-<div class="line"><a name="l00667"></a><span class="lineno">  667</span>   <span class="keywordflow">else</span>{<span class="comment">//reference is GDAL raster</span></div>
-<div class="line"><a name="l00668"></a><span class="lineno">  668</span>     <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> gdalWriter;</div>
-<div class="line"><a name="l00669"></a><span class="lineno">  669</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00670"></a><span class="lineno">  670</span>       inputReader.open(input_opt[0]);</div>
-<div class="line"><a name="l00671"></a><span class="lineno">  671</span>       <span class="keywordflow">if</span>(mask_opt.size())</div>
-<div class="line"><a name="l00672"></a><span class="lineno">  672</span>         maskReader.open(mask_opt[0]);</div>
-<div class="line"><a name="l00673"></a><span class="lineno">  673</span>       <span class="keywordflow">if</span>(output_opt.size()){</div>
-<div class="line"><a name="l00674"></a><span class="lineno">  674</span>         <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00675"></a><span class="lineno">  675</span>           cout << <span class="stringliteral">"opening output image "</span> << output_opt[0] << endl;</div>
-<div class="line"><a name="l00676"></a><span class="lineno">  676</span>         <span class="keywordflow">if</span>(option_opt.findSubstring(<span class="stringliteral">"INTERLEAVE="</span>)==option_opt.end()){</div>
-<div class="line"><a name="l00677"></a><span class="lineno">  677</span>           <span class="keywordtype">string</span> theInterleave=<span class="stringliteral">"INTERLEAVE="</span>;</div>
-<div class="line"><a name="l00678"></a><span class="lineno">  678</span>           theInterleave+=inputReader.getInterleave();</div>
-<div class="line"><a name="l00679"></a><span class="lineno">  679</span>           option_opt.push_back(theInterleave);</div>
-<div class="line"><a name="l00680"></a><span class="lineno">  680</span>         }</div>
-<div class="line"><a name="l00681"></a><span class="lineno">  681</span>         gdalWriter.open(output_opt[0],inputReader.nrOfCol(),inputReader.nrOfRow(),1,inputReader.getDataType(),oformat_opt[0],option_opt);</div>
-<div class="line"><a name="l00682"></a><span class="lineno">  682</span>     <span class="keywordflow">if</span>(nodata_opt.size())</div>
-<div class="line"><a name="l00683"></a><span class="lineno">  683</span>       gdalWriter.GDALSetNoDataValue(nodata_opt[0]);</div>
-<div class="line"><a name="l00684"></a><span class="lineno">  684</span>     gdalWriter.copyGeoTransform(inputReader);</div>
-<div class="line"><a name="l00685"></a><span class="lineno">  685</span>         <span class="keywordflow">if</span>(colorTable_opt.size())</div>
-<div class="line"><a name="l00686"></a><span class="lineno">  686</span>           gdalWriter.setColorTable(colorTable_opt[0]);</div>
-<div class="line"><a name="l00687"></a><span class="lineno">  687</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(inputReader.getColorTable()!=NULL){</div>
-<div class="line"><a name="l00688"></a><span class="lineno">  688</span>           <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00689"></a><span class="lineno">  689</span>             cout << <span class="stringliteral">"set colortable from input image"</span> << endl;</div>
-<div class="line"><a name="l00690"></a><span class="lineno">  690</span>           gdalWriter.setColorTable(inputReader.getColorTable());</div>
-<div class="line"><a name="l00691"></a><span class="lineno">  691</span>         }</div>
-<div class="line"><a name="l00692"></a><span class="lineno">  692</span>       }</div>
-<div class="line"><a name="l00693"></a><span class="lineno">  693</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00694"></a><span class="lineno">  694</span>         cout << <span class="stringliteral">"no output image defined"</span> << endl;</div>
-<div class="line"><a name="l00695"></a><span class="lineno">  695</span>         </div>
-<div class="line"><a name="l00696"></a><span class="lineno">  696</span>     }</div>
-<div class="line"><a name="l00697"></a><span class="lineno">  697</span>     <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> error){</div>
-<div class="line"><a name="l00698"></a><span class="lineno">  698</span>       cout << error << endl;</div>
-<div class="line"><a name="l00699"></a><span class="lineno">  699</span>       exit(2);</div>
-<div class="line"><a name="l00700"></a><span class="lineno">  700</span>     }</div>
-<div class="line"><a name="l00701"></a><span class="lineno">  701</span>     <span class="comment">//todo: support different data types!</span></div>
-<div class="line"><a name="l00702"></a><span class="lineno">  702</span>     vector<double> lineInput(inputReader.nrOfCol());</div>
-<div class="line"><a name="l00703"></a><span class="lineno">  703</span>     vector<double> lineMask(maskReader.nrOfCol());</div>
-<div class="line"><a name="l00704"></a><span class="lineno">  704</span>     vector<double> lineOutput;</div>
-<div class="line"><a name="l00705"></a><span class="lineno">  705</span>     vector<double> bufferInput;<span class="comment">//for regression</span></div>
-<div class="line"><a name="l00706"></a><span class="lineno">  706</span>     vector<double> bufferReference;<span class="comment">//for regression</span></div>
-<div class="line"><a name="l00707"></a><span class="lineno">  707</span>     <span class="keywordflow">if</span>(output_opt.size())</div>
-<div class="line"><a name="l00708"></a><span class="lineno">  708</span>       lineOutput.resize(inputReader.nrOfCol());</div>
-<div class="line"><a name="l00709"></a><span class="lineno">  709</span> </div>
-<div class="line"><a name="l00710"></a><span class="lineno">  710</span>     <span class="keywordtype">int</span> irow=0;</div>
-<div class="line"><a name="l00711"></a><span class="lineno">  711</span>     <span class="keywordtype">int</span> icol=0;</div>
-<div class="line"><a name="l00712"></a><span class="lineno">  712</span>     <span class="keywordtype">double</span> oldreferencerow=-1;</div>
-<div class="line"><a name="l00713"></a><span class="lineno">  713</span>     <span class="keywordtype">double</span> oldmaskrow=-1;</div>
-<div class="line"><a name="l00714"></a><span class="lineno">  714</span>     <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> referenceReaderGdal;</div>
-<div class="line"><a name="l00715"></a><span class="lineno">  715</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00716"></a><span class="lineno">  716</span>       referenceReaderGdal.open(reference_opt[0]);<span class="comment">//,rmagicX_opt[0],rmagicY_opt[0]);</span></div>
-<div class="line"><a name="l00717"></a><span class="lineno">  717</span>     }</div>
-<div class="line"><a name="l00718"></a><span class="lineno">  718</span>     <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> error){</div>
-<div class="line"><a name="l00719"></a><span class="lineno">  719</span>       cerr << error << endl;</div>
-<div class="line"><a name="l00720"></a><span class="lineno">  720</span>       exit(1);</div>
-<div class="line"><a name="l00721"></a><span class="lineno">  721</span>     }</div>
-<div class="line"><a name="l00722"></a><span class="lineno">  722</span>     <span class="keywordflow">if</span>(inputReader.isGeoRef()){</div>
-<div class="line"><a name="l00723"></a><span class="lineno">  723</span>       assert(referenceReaderGdal.isGeoRef());</div>
-<div class="line"><a name="l00724"></a><span class="lineno">  724</span>       <span class="keywordflow">if</span>(inputReader.getProjection()!=referenceReaderGdal.getProjection())</div>
-<div class="line"><a name="l00725"></a><span class="lineno">  725</span>         cerr << <span class="stringliteral">"Warning: projection of input image and reference image are different"</span> << endl;</div>
-<div class="line"><a name="l00726"></a><span class="lineno">  726</span>     }</div>
-<div class="line"><a name="l00727"></a><span class="lineno">  727</span>     vector<double> lineReference(referenceReaderGdal.nrOfCol());</div>
-<div class="line"><a name="l00728"></a><span class="lineno">  728</span>     <span class="keywordflow">if</span>(confusion_opt[0]){</div>
-<div class="line"><a name="l00729"></a><span class="lineno">  729</span>       referenceReaderGdal.getRange(referenceRange,band_opt[1]);</div>
-<div class="line"><a name="l00730"></a><span class="lineno">  730</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iflag=0;iflag<nodata_opt.size();++iflag){</div>
-<div class="line"><a name="l00731"></a><span class="lineno">  731</span>         vector<short>::iterator fit;</div>
-<div class="line"><a name="l00732"></a><span class="lineno">  732</span>         fit=find(referenceRange.begin(),referenceRange.end(),<span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">short</span><span class="keyword">></span>(nodata_opt[iflag]));</div>
-<div class="line"><a name="l00733"></a><span class="lineno">  733</span>         <span class="keywordflow">if</span>(fit!=referenceRange.end())</div>
-<div class="line"><a name="l00734"></a><span class="lineno">  734</span>           referenceRange.erase(fit);</div>
-<div class="line"><a name="l00735"></a><span class="lineno">  735</span>       }</div>
-<div class="line"><a name="l00736"></a><span class="lineno">  736</span>       <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00737"></a><span class="lineno">  737</span>         cout << <span class="stringliteral">"reference range: "</span> << endl;</div>
-<div class="line"><a name="l00738"></a><span class="lineno">  738</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> rc=0;rc<referenceRange.size();++rc)</div>
-<div class="line"><a name="l00739"></a><span class="lineno">  739</span>           cout << referenceRange[rc] << endl;</div>
-<div class="line"><a name="l00740"></a><span class="lineno">  740</span>       }</div>
-<div class="line"><a name="l00741"></a><span class="lineno">  741</span>       <span class="keywordflow">if</span>(referenceRange.size()!=inputRange.size()){</div>
-<div class="line"><a name="l00742"></a><span class="lineno">  742</span>         <span class="keywordflow">if</span>(confusion_opt[0]||output_opt.size()){</div>
-<div class="line"><a name="l00743"></a><span class="lineno">  743</span>           cout << <span class="stringliteral">"reference range is not equal to input range!"</span> << endl;</div>
-<div class="line"><a name="l00744"></a><span class="lineno">  744</span>           cout << <span class="stringliteral">"Kappa: "</span> << 0 << endl;    </div>
-<div class="line"><a name="l00745"></a><span class="lineno">  745</span>           cout << <span class="stringliteral">"total weighted: "</span> << 0 << endl;</div>
-<div class="line"><a name="l00746"></a><span class="lineno">  746</span>         }</div>
-<div class="line"><a name="l00747"></a><span class="lineno">  747</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00748"></a><span class="lineno">  748</span>           cout << <span class="stringliteral">"reference range is not equal to input range!"</span> << endl;</div>
-<div class="line"><a name="l00749"></a><span class="lineno">  749</span>         cout << input_opt[0] << <span class="stringliteral">" and "</span> << reference_opt[0] << <span class="stringliteral">" are different"</span> << endl;</div>
-<div class="line"><a name="l00750"></a><span class="lineno">  750</span>         exit(1);</div>
-<div class="line"><a name="l00751"></a><span class="lineno">  751</span>       }</div>
-<div class="line"><a name="l00752"></a><span class="lineno">  752</span>     }</div>
-<div class="line"><a name="l00753"></a><span class="lineno">  753</span>     <span class="keywordtype">double</span> rmse=0;</div>
-<div class="line"><a name="l00754"></a><span class="lineno">  754</span>     <span class="comment">// for(irow=0;irow<inputReader.nrOfRow()&&!isDifferent;++irow){</span></div>
-<div class="line"><a name="l00755"></a><span class="lineno">  755</span>     <span class="keywordflow">for</span>(irow=0;irow<inputReader.nrOfRow();++irow){</div>
-<div class="line"><a name="l00756"></a><span class="lineno">  756</span>       <span class="comment">//read line in lineInput, lineReference and lineMask</span></div>
-<div class="line"><a name="l00757"></a><span class="lineno">  757</span>       inputReader.readData(lineInput,GDT_Float64,irow,band_opt[0]);</div>
-<div class="line"><a name="l00758"></a><span class="lineno">  758</span>       <span class="keywordtype">double</span> x,y;<span class="comment">//geo coordinates</span></div>
-<div class="line"><a name="l00759"></a><span class="lineno">  759</span>       <span class="keywordtype">double</span> ireference,jreference;<span class="comment">//image coordinates in reference image</span></div>
-<div class="line"><a name="l00760"></a><span class="lineno">  760</span>       <span class="keywordtype">double</span> imask,jmask;<span class="comment">//image coordinates in mask image</span></div>
-<div class="line"><a name="l00761"></a><span class="lineno">  761</span>       <span class="keywordflow">for</span>(icol=0;icol<inputReader.nrOfCol();++icol){</div>
-<div class="line"><a name="l00762"></a><span class="lineno">  762</span>         <span class="comment">//find col in reference</span></div>
-<div class="line"><a name="l00763"></a><span class="lineno">  763</span>         inputReader.image2geo(icol,irow,x,y);</div>
-<div class="line"><a name="l00764"></a><span class="lineno">  764</span>         referenceReaderGdal.geo2image(x,y,ireference,jreference);</div>
-<div class="line"><a name="l00765"></a><span class="lineno">  765</span>         <span class="keywordflow">if</span>(ireference<0||ireference>=referenceReaderGdal.nrOfCol()){</div>
-<div class="line"><a name="l00766"></a><span class="lineno">  766</span>       <span class="keywordflow">if</span>(rmse_opt[0]||regression_opt[0])</div>
-<div class="line"><a name="l00767"></a><span class="lineno">  767</span>         <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00768"></a><span class="lineno">  768</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00769"></a><span class="lineno">  769</span>         cerr << ireference << <span class="stringliteral">" out of reference range!"</span> << endl;</div>
-<div class="line"><a name="l00770"></a><span class="lineno">  770</span>         cerr << x << <span class="stringliteral">" "</span> << y << <span class="stringliteral">" "</span> << icol << <span class="stringliteral">" "</span> << irow << endl;</div>
-<div class="line"><a name="l00771"></a><span class="lineno">  771</span>         cerr << x << <span class="stringliteral">" "</span> << y << <span class="stringliteral">" "</span> << ireference << <span class="stringliteral">" "</span> << jreference << endl;</div>
-<div class="line"><a name="l00772"></a><span class="lineno">  772</span>         exit(1);</div>
-<div class="line"><a name="l00773"></a><span class="lineno">  773</span>       }</div>
-<div class="line"><a name="l00774"></a><span class="lineno">  774</span>         }</div>
-<div class="line"><a name="l00775"></a><span class="lineno">  775</span>         <span class="keywordflow">if</span>(jreference!=oldreferencerow){</div>
-<div class="line"><a name="l00776"></a><span class="lineno">  776</span>           <span class="keywordflow">if</span>(jreference<0||jreference>=referenceReaderGdal.nrOfRow()){</div>
-<div class="line"><a name="l00777"></a><span class="lineno">  777</span>         <span class="keywordflow">if</span>(rmse_opt[0]||regression_opt[0])</div>
-<div class="line"><a name="l00778"></a><span class="lineno">  778</span>           <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00779"></a><span class="lineno">  779</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00780"></a><span class="lineno">  780</span>           cerr << jreference << <span class="stringliteral">" out of reference range!"</span> << endl;</div>
-<div class="line"><a name="l00781"></a><span class="lineno">  781</span>           cerr << x << <span class="stringliteral">" "</span> << y << <span class="stringliteral">" "</span> << icol << <span class="stringliteral">" "</span> << irow << endl;</div>
-<div class="line"><a name="l00782"></a><span class="lineno">  782</span>           cerr << x << <span class="stringliteral">" "</span> << y << <span class="stringliteral">" "</span> << ireference << <span class="stringliteral">" "</span> << jreference << endl;</div>
-<div class="line"><a name="l00783"></a><span class="lineno">  783</span>           exit(1);</div>
-<div class="line"><a name="l00784"></a><span class="lineno">  784</span>         }</div>
-<div class="line"><a name="l00785"></a><span class="lineno">  785</span>           }</div>
-<div class="line"><a name="l00786"></a><span class="lineno">  786</span>           <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00787"></a><span class="lineno">  787</span>             referenceReaderGdal.readData(lineReference,GDT_Float64,static_cast<int>(jreference),band_opt[1]);</div>
-<div class="line"><a name="l00788"></a><span class="lineno">  788</span>             oldreferencerow=jreference;</div>
-<div class="line"><a name="l00789"></a><span class="lineno">  789</span>           }</div>
-<div class="line"><a name="l00790"></a><span class="lineno">  790</span>         }</div>
-<div class="line"><a name="l00791"></a><span class="lineno">  791</span>         <span class="keywordtype">bool</span> flagged=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00792"></a><span class="lineno">  792</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iflag=0;iflag<nodata_opt.size();++iflag){</div>
-<div class="line"><a name="l00793"></a><span class="lineno">  793</span>           <span class="keywordflow">if</span>((lineInput[icol]==nodata_opt[iflag])||(lineReference[ireference]==nodata_opt[iflag])){</div>
-<div class="line"><a name="l00794"></a><span class="lineno">  794</span>             <span class="keywordflow">if</span>(output_opt.size())</div>
-<div class="line"><a name="l00795"></a><span class="lineno">  795</span>               lineOutput[icol]=nodata_opt[iflag];</div>
-<div class="line"><a name="l00796"></a><span class="lineno">  796</span>             flagged=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00797"></a><span class="lineno">  797</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00798"></a><span class="lineno">  798</span>           }</div>
-<div class="line"><a name="l00799"></a><span class="lineno">  799</span>         }</div>
-<div class="line"><a name="l00800"></a><span class="lineno">  800</span>         <span class="keywordflow">if</span>(mask_opt.size()){</div>
-<div class="line"><a name="l00801"></a><span class="lineno">  801</span>       maskReader.geo2image(x,y,imask,jmask);</div>
-<div class="line"><a name="l00802"></a><span class="lineno">  802</span>       <span class="keywordflow">if</span>(jmask>=0&&jmask<maskReader.nrOfRow()){</div>
-<div class="line"><a name="l00803"></a><span class="lineno">  803</span>         <span class="keywordflow">if</span>(jmask!=oldmaskrow)</div>
-<div class="line"><a name="l00804"></a><span class="lineno">  804</span>           maskReader.readData(lineMask,GDT_Float64,jmask);</div>
-<div class="line"><a name="l00805"></a><span class="lineno">  805</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ivalue=0;ivalue<msknodata_opt.size();++ivalue){</div>
-<div class="line"><a name="l00806"></a><span class="lineno">  806</span>           <span class="keywordflow">if</span>(lineMask[icol]==msknodata_opt[ivalue]){</div>
-<div class="line"><a name="l00807"></a><span class="lineno">  807</span>         flagged=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00808"></a><span class="lineno">  808</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00809"></a><span class="lineno">  809</span>           }</div>
-<div class="line"><a name="l00810"></a><span class="lineno">  810</span>         }</div>
-<div class="line"><a name="l00811"></a><span class="lineno">  811</span>           }</div>
-<div class="line"><a name="l00812"></a><span class="lineno">  812</span>         }</div>
-<div class="line"><a name="l00813"></a><span class="lineno">  813</span>         <span class="keywordflow">if</span>(!flagged){</div>
-<div class="line"><a name="l00814"></a><span class="lineno">  814</span>       <span class="keywordflow">if</span>(rmse_opt[0]){<span class="comment">//divide by image size to prevent overflow. At the end we need to take care about flagged pixels by normalizing...</span></div>
-<div class="line"><a name="l00815"></a><span class="lineno">  815</span>         rmse+=<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(lineInput[icol]-lineReference[ireference])*(lineInput[icol]-lineReference[ireference])/inputReader.nrOfCol()/inputReader.nrOfRow();</div>
-<div class="line"><a name="l00816"></a><span class="lineno">  816</span>       }</div>
-<div class="line"><a name="l00817"></a><span class="lineno">  817</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(regression_opt[0]){</div>
-<div class="line"><a name="l00818"></a><span class="lineno">  818</span>         bufferInput.push_back(lineInput[icol]);</div>
-<div class="line"><a name="l00819"></a><span class="lineno">  819</span>         bufferReference.push_back(lineReference[ireference]);</div>
-<div class="line"><a name="l00820"></a><span class="lineno">  820</span>       }</div>
-<div class="line"><a name="l00821"></a><span class="lineno">  821</span> </div>
-<div class="line"><a name="l00822"></a><span class="lineno">  822</span>           <span class="keywordflow">if</span>(confusion_opt[0]){</div>
-<div class="line"><a name="l00823"></a><span class="lineno">  823</span>             ++ntotalValidation;</div>
-<div class="line"><a name="l00824"></a><span class="lineno">  824</span>             <span class="keywordtype">int</span> rc=distance(referenceRange.begin(),find(referenceRange.begin(),referenceRange.end(),lineReference[ireference]));</div>
-<div class="line"><a name="l00825"></a><span class="lineno">  825</span>             <span class="keywordtype">int</span> ic=distance(inputRange.begin(),find(inputRange.begin(),inputRange.end(),lineInput[icol]));</div>
-<div class="line"><a name="l00826"></a><span class="lineno">  826</span>             assert(rc<nclass);</div>
-<div class="line"><a name="l00827"></a><span class="lineno">  827</span>             assert(ic<nclass);</div>
-<div class="line"><a name="l00828"></a><span class="lineno">  828</span>             ++nvalidation[rc];</div>
-<div class="line"><a name="l00829"></a><span class="lineno">  829</span>             ++resultClass[rc][ic];</div>
-<div class="line"><a name="l00830"></a><span class="lineno">  830</span>             <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00831"></a><span class="lineno">  831</span>               cout << <span class="stringliteral">"increment: "</span> << rc << <span class="stringliteral">" "</span> << referenceRange[rc] << <span class="stringliteral">" "</span> << ic << <span class="stringliteral">" "</span> << inputRange[ic] << endl;</div>
-<div class="line"><a name="l00832"></a><span class="lineno">  832</span>             cm.incrementResult(cm.getClass(rc),cm.getClass(ic),1);</div>
-<div class="line"><a name="l00833"></a><span class="lineno">  833</span>           }</div>
-<div class="line"><a name="l00834"></a><span class="lineno">  834</span>           <span class="keywordflow">if</span>(lineInput[icol]==lineReference[ireference]){<span class="comment">//correct</span></div>
-<div class="line"><a name="l00835"></a><span class="lineno">  835</span>             <span class="keywordflow">if</span>(output_opt.size()){</div>
-<div class="line"><a name="l00836"></a><span class="lineno">  836</span>           lineOutput[icol]=valueE_opt[0];</div>
-<div class="line"><a name="l00837"></a><span class="lineno">  837</span>           <span class="keywordflow">if</span>(nodata_opt.size()){</div>
-<div class="line"><a name="l00838"></a><span class="lineno">  838</span>         <span class="keywordflow">if</span>(valueE_opt[0]==nodata_opt[0])</div>
-<div class="line"><a name="l00839"></a><span class="lineno">  839</span>           lineOutput[icol]=lineInput[icol];</div>
-<div class="line"><a name="l00840"></a><span class="lineno">  840</span>           }</div>
-<div class="line"><a name="l00841"></a><span class="lineno">  841</span>             }</div>
-<div class="line"><a name="l00842"></a><span class="lineno">  842</span>           }</div>
-<div class="line"><a name="l00843"></a><span class="lineno">  843</span>           <span class="keywordflow">else</span>{<span class="comment">//error</span></div>
-<div class="line"><a name="l00844"></a><span class="lineno">  844</span>             <span class="keywordflow">if</span>(output_opt.empty()&&!confusion_opt[0]&&!rmse_opt[0]&&!regression_opt[0]){</div>
-<div class="line"><a name="l00845"></a><span class="lineno">  845</span>               isDifferent=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00846"></a><span class="lineno">  846</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00847"></a><span class="lineno">  847</span>             }</div>
-<div class="line"><a name="l00848"></a><span class="lineno">  848</span>             <span class="keywordflow">if</span>(output_opt.size()){</div>
-<div class="line"><a name="l00849"></a><span class="lineno">  849</span>               <span class="keywordflow">if</span>(lineInput[icol]>lineReference[ireference])</div>
-<div class="line"><a name="l00850"></a><span class="lineno">  850</span>         lineOutput[icol]=valueO_opt[0];<span class="comment">//omission error</span></div>
-<div class="line"><a name="l00851"></a><span class="lineno">  851</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00852"></a><span class="lineno">  852</span>         lineOutput[icol]=valueC_opt[0];<span class="comment">//commission error</span></div>
-<div class="line"><a name="l00853"></a><span class="lineno">  853</span>             }</div>
-<div class="line"><a name="l00854"></a><span class="lineno">  854</span>           }</div>
-<div class="line"><a name="l00855"></a><span class="lineno">  855</span>     }</div>
-<div class="line"><a name="l00856"></a><span class="lineno">  856</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00857"></a><span class="lineno">  857</span>           ++nflagged;</div>
-<div class="line"><a name="l00858"></a><span class="lineno">  858</span>           <span class="keywordflow">if</span>(output_opt.size()){</div>
-<div class="line"><a name="l00859"></a><span class="lineno">  859</span>         <span class="keywordflow">if</span>(nodata_opt.size())</div>
-<div class="line"><a name="l00860"></a><span class="lineno">  860</span>           lineOutput[icol]=nodata_opt[0];</div>
-<div class="line"><a name="l00861"></a><span class="lineno">  861</span>         <span class="keywordflow">else</span> <span class="comment">//should never occur?</span></div>
-<div class="line"><a name="l00862"></a><span class="lineno">  862</span>           lineOutput[icol]=0;</div>
-<div class="line"><a name="l00863"></a><span class="lineno">  863</span>       }       </div>
-<div class="line"><a name="l00864"></a><span class="lineno">  864</span>         }</div>
-<div class="line"><a name="l00865"></a><span class="lineno">  865</span>       }</div>
-<div class="line"><a name="l00866"></a><span class="lineno">  866</span>       <span class="keywordflow">if</span>(output_opt.size()){</div>
-<div class="line"><a name="l00867"></a><span class="lineno">  867</span>         <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00868"></a><span class="lineno">  868</span>           gdalWriter.writeData(lineOutput,GDT_Float64,irow);</div>
-<div class="line"><a name="l00869"></a><span class="lineno">  869</span>         }</div>
-<div class="line"><a name="l00870"></a><span class="lineno">  870</span>         <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00871"></a><span class="lineno">  871</span>           cerr << <span class="stringliteral">"lineOutput.size(): "</span> << lineOutput.size() << endl;</div>
-<div class="line"><a name="l00872"></a><span class="lineno">  872</span>           cerr << <span class="stringliteral">"gdalWriter.nrOfCol(): "</span> << gdalWriter.nrOfCol() << endl;</div>
-<div class="line"><a name="l00873"></a><span class="lineno">  873</span>           cerr << errorstring << endl;</div>
-<div class="line"><a name="l00874"></a><span class="lineno">  874</span>           exit(1);</div>
-<div class="line"><a name="l00875"></a><span class="lineno">  875</span>         }</div>
-<div class="line"><a name="l00876"></a><span class="lineno">  876</span>       }</div>
-<div class="line"><a name="l00877"></a><span class="lineno">  877</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(isDifferent&&!confusion_opt[0]&&!rmse_opt[0]&&!regression_opt[0]){<span class="comment">//we can break off here, files are different...</span></div>
-<div class="line"><a name="l00878"></a><span class="lineno">  878</span>         <span class="keywordflow">if</span>(!verbose_opt[0])</div>
-<div class="line"><a name="l00879"></a><span class="lineno">  879</span>           pfnProgress(1.0,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00880"></a><span class="lineno">  880</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00881"></a><span class="lineno">  881</span>       }</div>
-<div class="line"><a name="l00882"></a><span class="lineno">  882</span>       progress=<span class="keyword">static_cast<</span><span class="keywordtype">float</span><span class="keyword">></span>(irow+1.0)/inputReader.nrOfRow();</div>
-<div class="line"><a name="l00883"></a><span class="lineno">  883</span>       <span class="keywordflow">if</span>(!verbose_opt[0])</div>
-<div class="line"><a name="l00884"></a><span class="lineno">  884</span>         pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00885"></a><span class="lineno">  885</span>     }</div>
-<div class="line"><a name="l00886"></a><span class="lineno">  886</span>     <span class="keywordflow">if</span>(output_opt.size())</div>
-<div class="line"><a name="l00887"></a><span class="lineno">  887</span>       gdalWriter.close();</div>
-<div class="line"><a name="l00888"></a><span class="lineno">  888</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!confusion_opt[0]){</div>
-<div class="line"><a name="l00889"></a><span class="lineno">  889</span>       <span class="keywordflow">if</span>(rmse_opt[0]){</div>
-<div class="line"><a name="l00890"></a><span class="lineno">  890</span>     <span class="keywordtype">double</span> normalization=1.0*inputReader.nrOfCol()*inputReader.nrOfRow()/(inputReader.nrOfCol()*inputReader.nrOfRow()-nflagged);</div>
-<div class="line"><a name="l00891"></a><span class="lineno">  891</span>     <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00892"></a><span class="lineno">  892</span>       cout << <span class="stringliteral">"normalization: "</span> << normalization << endl;</div>
-<div class="line"><a name="l00893"></a><span class="lineno">  893</span>       cout << <span class="stringliteral">"rmse before sqrt and normalization: "</span> << rmse << endl;</div>
-<div class="line"><a name="l00894"></a><span class="lineno">  894</span>     }</div>
-<div class="line"><a name="l00895"></a><span class="lineno">  895</span>     cout << <span class="stringliteral">"--rmse "</span> << sqrt(rmse/normalization) << endl;</div>
-<div class="line"><a name="l00896"></a><span class="lineno">  896</span>       }</div>
-<div class="line"><a name="l00897"></a><span class="lineno">  897</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(regression_opt[0]){</div>
-<div class="line"><a name="l00898"></a><span class="lineno">  898</span>     <span class="keywordtype">double</span> err=0;</div>
-<div class="line"><a name="l00899"></a><span class="lineno">  899</span>     <span class="keywordtype">double</span> c0=0;</div>
-<div class="line"><a name="l00900"></a><span class="lineno">  900</span>     <span class="keywordtype">double</span> c1=1;</div>
-<div class="line"><a name="l00901"></a><span class="lineno">  901</span>     <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00902"></a><span class="lineno">  902</span>     <span class="keywordflow">if</span>(bufferInput.size()&&bufferReference.size()){</div>
-<div class="line"><a name="l00903"></a><span class="lineno">  903</span>       err=stat.linear_regression_err(bufferInput,bufferReference,c0,c1);</div>
-<div class="line"><a name="l00904"></a><span class="lineno">  904</span>     }</div>
-<div class="line"><a name="l00905"></a><span class="lineno">  905</span>     <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00906"></a><span class="lineno">  906</span>       cout << <span class="stringliteral">"bufferInput.size(): "</span> << bufferInput.size() << endl;</div>
-<div class="line"><a name="l00907"></a><span class="lineno">  907</span>       cout << <span class="stringliteral">"bufferReference.size(): "</span> << bufferReference.size() << endl;</div>
-<div class="line"><a name="l00908"></a><span class="lineno">  908</span>       <span class="keywordtype">double</span> theMin=0;</div>
-<div class="line"><a name="l00909"></a><span class="lineno">  909</span>       <span class="keywordtype">double</span> theMax=0;</div>
-<div class="line"><a name="l00910"></a><span class="lineno">  910</span>       stat.minmax(bufferInput,bufferInput.begin(),bufferInput.end(),theMin,theMax);</div>
-<div class="line"><a name="l00911"></a><span class="lineno">  911</span>       cout << <span class="stringliteral">"min,  max input: "</span> << theMin << <span class="stringliteral">", "</span> << theMax << endl;</div>
-<div class="line"><a name="l00912"></a><span class="lineno">  912</span>       theMin=0;</div>
-<div class="line"><a name="l00913"></a><span class="lineno">  913</span>       theMax=0;</div>
-<div class="line"><a name="l00914"></a><span class="lineno">  914</span>       stat.minmax(bufferReference,bufferReference.begin(),bufferReference.end(),theMin,theMax);</div>
-<div class="line"><a name="l00915"></a><span class="lineno">  915</span>       cout << <span class="stringliteral">"min,  max reference: "</span> << theMin << <span class="stringliteral">", "</span> << theMax << endl;</div>
-<div class="line"><a name="l00916"></a><span class="lineno">  916</span>     }</div>
-<div class="line"><a name="l00917"></a><span class="lineno">  917</span>     cout << <span class="stringliteral">"--c0 "</span> << c0 << <span class="stringliteral">"--c1 "</span> << c1 << <span class="stringliteral">" --rmse: "</span> << err << endl;</div>
-<div class="line"><a name="l00918"></a><span class="lineno">  918</span>     </div>
-<div class="line"><a name="l00919"></a><span class="lineno">  919</span>       }</div>
-<div class="line"><a name="l00920"></a><span class="lineno">  920</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(isDifferent)</div>
-<div class="line"><a name="l00921"></a><span class="lineno">  921</span>         cout << input_opt[0] << <span class="stringliteral">" and "</span> << reference_opt[0] << <span class="stringliteral">" are different"</span> << endl;</div>
-<div class="line"><a name="l00922"></a><span class="lineno">  922</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00923"></a><span class="lineno">  923</span>         cout << input_opt[0] << <span class="stringliteral">" and "</span> << reference_opt[0] << <span class="stringliteral">" are identical"</span> << endl;</div>
-<div class="line"><a name="l00924"></a><span class="lineno">  924</span>     }</div>
-<div class="line"><a name="l00925"></a><span class="lineno">  925</span>     referenceReaderGdal.close();</div>
-<div class="line"><a name="l00926"></a><span class="lineno">  926</span>     inputReader.close();</div>
-<div class="line"><a name="l00927"></a><span class="lineno">  927</span>     <span class="keywordflow">if</span>(mask_opt.size())</div>
-<div class="line"><a name="l00928"></a><span class="lineno">  928</span>       maskReader.close();</div>
-<div class="line"><a name="l00929"></a><span class="lineno">  929</span>   }<span class="comment">//raster dataset</span></div>
-<div class="line"><a name="l00930"></a><span class="lineno">  930</span> </div>
-<div class="line"><a name="l00931"></a><span class="lineno">  931</span>   <span class="keywordflow">if</span>(confusion_opt[0]){</div>
-<div class="line"><a name="l00932"></a><span class="lineno">  932</span>     cm.setFormat(cmformat_opt[0]);</div>
-<div class="line"><a name="l00933"></a><span class="lineno">  933</span>     cm.reportSE95(se95_opt[0]);</div>
-<div class="line"><a name="l00934"></a><span class="lineno">  934</span>     ofstream outputFile;</div>
-<div class="line"><a name="l00935"></a><span class="lineno">  935</span>     <span class="keywordflow">if</span>(cmoutput_opt.size()){</div>
-<div class="line"><a name="l00936"></a><span class="lineno">  936</span>       outputFile.open(cmoutput_opt[0].c_str(),ios::out);</div>
-<div class="line"><a name="l00937"></a><span class="lineno">  937</span>       outputFile << cm << endl;</div>
-<div class="line"><a name="l00938"></a><span class="lineno">  938</span>     }</div>
-<div class="line"><a name="l00939"></a><span class="lineno">  939</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00940"></a><span class="lineno">  940</span>       cout << cm << endl;</div>
-<div class="line"><a name="l00941"></a><span class="lineno">  941</span>     <span class="comment">// cout << "class #samples userAcc prodAcc" << endl;</span></div>
-<div class="line"><a name="l00942"></a><span class="lineno">  942</span>     <span class="comment">// double se95_ua=0;</span></div>
-<div class="line"><a name="l00943"></a><span class="lineno">  943</span>     <span class="comment">// double se95_pa=0;</span></div>
-<div class="line"><a name="l00944"></a><span class="lineno">  944</span>     <span class="comment">// double se95_oa=0;</span></div>
-<div class="line"><a name="l00945"></a><span class="lineno">  945</span>     <span class="comment">// double dua=0;</span></div>
-<div class="line"><a name="l00946"></a><span class="lineno">  946</span>     <span class="comment">// double dpa=0;</span></div>
-<div class="line"><a name="l00947"></a><span class="lineno">  947</span>     <span class="comment">// double doa=0;</span></div>
-<div class="line"><a name="l00948"></a><span class="lineno">  948</span>     <span class="comment">// for(int iclass=0;iclass<cm.nClasses();++iclass){</span></div>
-<div class="line"><a name="l00949"></a><span class="lineno">  949</span>     <span class="comment">//   dua=cm.ua_pct(classNames[iclass],&se95_ua);</span></div>
-<div class="line"><a name="l00950"></a><span class="lineno">  950</span>     <span class="comment">//   dpa=cm.pa_pct(classNames[iclass],&se95_pa);</span></div>
-<div class="line"><a name="l00951"></a><span class="lineno">  951</span>     <span class="comment">//   cout << cm.getClass(iclass) << " " << cm.nReference(cm.getClass(iclass)) << " " << dua << " (" << se95_ua << ")" << " " << dpa << " (" << se95_pa << ")" << endl;</span></div>
-<div class="line"><a name="l00952"></a><span class="lineno">  952</span>     <span class="comment">// }</span></div>
-<div class="line"><a name="l00953"></a><span class="lineno">  953</span>     <span class="comment">// doa=cm.oa(&se95_oa);</span></div>
-<div class="line"><a name="l00954"></a><span class="lineno">  954</span>     <span class="comment">// cout << "Kappa: " << cm.kappa() << endl;</span></div>
-<div class="line"><a name="l00955"></a><span class="lineno">  955</span>     <span class="comment">// cout << "Overall Accuracy: " << 100*doa << " (" << 100*se95_oa << ")"  << endl;</span></div>
-<div class="line"><a name="l00956"></a><span class="lineno">  956</span>   }</div>
-<div class="line"><a name="l00957"></a><span class="lineno">  957</span> }</div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-<div class="ttc" id="classImgWriterGdal_html"><div class="ttname"><a href="classImgWriterGdal.html">ImgWriterGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgWriterGdal_8h_source.html#l00033">ImgWriterGdal.h:33</a></div></div>
-<div class="ttc" id="classVector2d_html"><div class="ttname"><a href="classVector2d.html">Vector2d</a></div><div class="ttdef"><b>Definition:</b> <a href="Vector2d_8h_source.html#l00031">Vector2d.h:31</a></div></div>
-<div class="ttc" id="classImgReaderOgr_html"><div class="ttname"><a href="classImgReaderOgr.html">ImgReaderOgr</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderOgr_8h_source.html#l00035">ImgReaderOgr.h:35</a></div></div>
-<div class="ttc" id="classstatfactory_1_1StatFactory_html"><div class="ttname"><a href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></div><div class="ttdef"><b>Definition:</b> <a href="StatFactory_8h_source.html#l00043">StatFactory.h:43</a></div></div>
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-<div class="ttc" id="classconfusionmatrix_1_1ConfusionMatrix_html"><div class="ttname"><a href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></div><div class="ttdef"><b>Definition:</b> <a href="ConfusionMatrix_8h_source.html#l00032">ConfusionMatrix.h:32</a></div></div>
-<div class="ttc" id="classImgWriterOgr_html"><div class="ttname"><a href="classImgWriterOgr.html">ImgWriterOgr</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgWriterOgr_8h_source.html#l00035">ImgWriterOgr.h:35</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkdiff__accuracy_8py_source.html b/doc/html/pkdiff__accuracy_8py_source.html
deleted file mode 100644
index d29f118..0000000
--- a/doc/html/pkdiff__accuracy_8py_source.html
+++ /dev/null
@@ -1,277 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/pkdiff_accuracy.py Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkdiff_accuracy.py</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment"># -*- coding: utf-8 -*-</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> </div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="stringliteral">    pkdiff_accuracy.py</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="stringliteral">    ---------------------</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="stringliteral">    Date                 : April 2015</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="stringliteral">    Copyright            : (C) 2015 by Pieter Kempeneers</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="stringliteral">    Email                : kempenep at gmail dot com</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="stringliteral">*   This program is free software; you can redistribute it and/or modify  *</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="stringliteral">*   it under the terms of the GNU General Public License as published by  *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="stringliteral">*   the Free Software Foundation; either version 2 of the License, or     *</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="stringliteral">*   (at your option) any later version.                                   *</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> __author__ = <span class="stringliteral">'Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> __date__ = <span class="stringliteral">'April 2015'</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> __copyright__ = <span class="stringliteral">'(C) 2015, Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"># This will get replaced with a git SHA1 when you do a git archive</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> __revision__ = <span class="stringliteral">'$Format:%H$'</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">import</span> os</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> </div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">from</span> <a class="code" href="namespacePyQt4_1_1QtCore.html">PyQt4.QtCore</a> <span class="keyword">import</span> QVariant</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">from</span> <a class="code" href="namespaceqgis_1_1core.html">qgis.core</a> <span class="keyword">import</span> QgsField</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> </div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">from</span> pktoolsUtils <span class="keyword">import</span> pktoolsUtils</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">from</span> pktoolsAlgorithm <span class="keyword">import</span> pktoolsAlgorithm</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterRaster</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterVector</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">from</span> processing.core.outputs <span class="keyword">import</span> OutputVector</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">from</span> processing.core.outputs <span class="keyword">import</span> OutputFile</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="comment">#from processing.core.outputs import OutputTable</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterSelection</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterNumber</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterString</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterBoolean</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterExtent</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span> </div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span> FORMATS = [</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     <span class="stringliteral">'ESRI Shapefile'</span>,</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     <span class="stringliteral">'GeoJSON'</span>,</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     <span class="stringliteral">'GeoRSS'</span>,</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     <span class="stringliteral">'SQLite'</span>,</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     <span class="stringliteral">'GMT'</span>,</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     <span class="stringliteral">'MapInfo File'</span>,</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     <span class="stringliteral">'INTERLIS 1'</span>,</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     <span class="stringliteral">'INTERLIS 2'</span>,</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     <span class="stringliteral">'GML'</span>,</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     <span class="stringliteral">'Geoconcept'</span>,</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     <span class="stringliteral">'DXF'</span>,</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <span class="stringliteral">'DGN'</span>,</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     <span class="stringliteral">'CSV'</span>,</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     <span class="stringliteral">'BNA'</span>,</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     <span class="stringliteral">'S57'</span>,</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     <span class="stringliteral">'KML'</span>,</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     <span class="stringliteral">'GPX'</span>,</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     <span class="stringliteral">'PGDump'</span>,</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     <span class="stringliteral">'GPSTrackMaker'</span>,</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     <span class="stringliteral">'ODS'</span>,</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     <span class="stringliteral">'XLSX'</span>,</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     <span class="stringliteral">'PDF'</span>,</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span> ]</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span> EXTS = [</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     <span class="stringliteral">'.shp'</span>,</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     <span class="stringliteral">'.geojson'</span>,</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     <span class="stringliteral">'.xml'</span>,</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>     <span class="stringliteral">'.sqlite'</span>,</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>     <span class="stringliteral">'.gmt'</span>,</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>     <span class="stringliteral">'.tab'</span>,</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>     <span class="stringliteral">'.ili'</span>,</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>     <span class="stringliteral">'.ili'</span>,</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>     <span class="stringliteral">'.gml'</span>,</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>     <span class="stringliteral">'.txt'</span>,</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>     <span class="stringliteral">'.dxf'</span>,</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>     <span class="stringliteral">'.dgn'</span>,</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>     <span class="stringliteral">'.csv'</span>,</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     <span class="stringliteral">'.bna'</span>,</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     <span class="stringliteral">'.000'</span>,</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     <span class="stringliteral">'.kml'</span>,</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>     <span class="stringliteral">'.gpx'</span>,</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>     <span class="stringliteral">'.pgdump'</span>,</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>     <span class="stringliteral">'.gtm'</span>,</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>     <span class="stringliteral">'.ods'</span>,</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     <span class="stringliteral">'.xlsx'</span>,</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     <span class="stringliteral">'.pdf'</span>,</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span> ]</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span> </div>
-<div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">   93</a></span> <span class="keyword">class </span><a class="code" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">pkdiff_accuracy</a>(pktoolsAlgorithm):</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span> </div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>     INPUT = <span class="stringliteral">"INPUT"</span></div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     REFERENCE = <span class="stringliteral">"REFERENCE"</span></div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     ITERATE = <span class="stringliteral">"ITERATE"</span></div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     LABELREF = <span class="stringliteral">"LABELREF"</span></div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     NODATA = <span class="stringliteral">"NODATA"</span></div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span> <span class="comment">#    TABLE = 'TABLE'</span></div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     OUTPUT = <span class="stringliteral">"OUTPUT"</span></div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     CMOUTPUT = <span class="stringliteral">"CMOUTPUT"</span></div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     CMFORMAT_OPTIONS = [<span class="stringliteral">"ascii"</span>, <span class="stringliteral">"latex"</span>]</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     CMFORMAT = <span class="stringliteral">"CMFORMAT"</span></div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span> </div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     FORMAT = <span class="stringliteral">"FORMAT"</span></div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     LABELCLASS = <span class="stringliteral">"LABELCLASS"</span></div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     EXTRA = <span class="stringliteral">'EXTRA'</span></div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span> </div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>     <span class="keyword">def </span>cliName(self):</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>         <span class="keywordflow">return</span> <span class="stringliteral">"pkdiff"</span></div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span> </div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     <span class="keyword">def </span>defineCharacteristics(self):</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>         self.<a class="code" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#aa1a0571329dbfd38e21385392bab8de1">name</a> = <span class="stringliteral">"Accuracy assessment with ground reference"</span></div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>         self.<a class="code" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a724b6dc67c93a4392de92dcfca91f701">group</a> = <span class="stringliteral">"[pktools] supervised classification"</span></div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>         self.addParameter(ParameterRaster(self.<a class="code" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a6cabc221036f66d975847866eaf14dd9">INPUT</a>, <span class="stringliteral">'Classification result (raster map)'</span>))</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>         self.addParameter(ParameterVector(self.<a class="code" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#afdaa56e3a00e8ad32fffd8600b998b92">REFERENCE</a>, <span class="stringliteral">'Labeled reference vector data set'</span>))</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>         self.addParameter(ParameterBoolean(self.<a class="code" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a2a294e32e185d1f58bbde4ae40f62c55">ITERATE</a>, <span class="stringliteral">"Iterate over all layers"</span>,<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a99f5e02f16130f80143086252a38ee93">LABELREF</a>, <span class="stringliteral">"Attribute name of the reference label"</span>,<span class="stringliteral">"label"</span>))</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a02de7992fb58aea0f628f8f3c1c937ac">NODATA</a>, <span class="stringliteral">"No data value(s) in input or reference dataset to ignore (e.g., 0;255)"</span>,<span class="stringliteral">"0"</span>))</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>         self.addOutput(OutputFile(self.<a class="code" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a792f4cf29ee2f6034149c0233b32f4ff">CMOUTPUT</a>, self.tr(<span class="stringliteral">"Confusion matrix output file "</span>)))</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a21c954c78e110bb1c93de64075afe182">CMFORMAT</a>,<span class="stringliteral">"Format for confusion matrix output"</span>,self.<a class="code" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a2ed757ec7259c4b56bee1acc8bbe1a61">CMFORMAT_OPTIONS</a>, 0))</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span> </div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span> <span class="comment">#        self.addOutput(OutputTable(self.TABLE, self.tr('Confusion matrix table')))</span></div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>         self.addOutput(OutputVector(self.<a class="code" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a22d37343b09f74019a836f1489d24c02">OUTPUT</a>, <span class="stringliteral">'Assessment output vector data set'</span>))</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#ab922ac43189488cb53e46bccd0d02b6a">FORMAT</a>,</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>                           <span class="stringliteral">'Assessment output vector Format'</span>, FORMATS))</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a7580c2442f384fcc956e14d936a3a305">LABELCLASS</a>, <span class="stringliteral">"Attribute name of classified (map) label"</span>,<span class="stringliteral">"class"</span>))</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a83684b7d1751c3e507df1b2a61c06e7d">EXTRA</a>,</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>                           <span class="stringliteral">'Additional parameters'</span>, <span class="stringliteral">''</span>, optional=<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span> </div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>     <span class="keyword">def </span>processAlgorithm(self, progress):</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>         cliPath = <span class="stringliteral">'"'</span> + os.path.join(pktoolsUtils.pktoolsPath(), self.<a class="code" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a176e2f67f3be853c9197d99f4cd16a1c">cliName</a>()) + <span class="stringliteral">'"'</span></div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>         commands = [cliPath]</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>         <span class="comment">#outputtable = self.getOutputFromName(self.TABLE)</span></div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span> </div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>         input=self.getParameterValue(self.<a class="code" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a6cabc221036f66d975847866eaf14dd9">INPUT</a>)</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>         commands.append(<span class="stringliteral">'-i'</span>)</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>         commands.append(<span class="stringliteral">'"'</span> + input + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span> </div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>         reference=self.getParameterValue(self.<a class="code" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#afdaa56e3a00e8ad32fffd8600b998b92">REFERENCE</a>)</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>         <span class="keywordflow">if</span> self.getParameterValue(self.<a class="code" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a2a294e32e185d1f58bbde4ae40f62c55">ITERATE</a>):</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>             <span class="keywordflow">if</span> str(reference).find(<span class="stringliteral">'|'</span>)>0:</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>                 referencename=str(reference)[:str(reference).find(<span class="stringliteral">'|'</span>)]</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>             <span class="keywordflow">else</span>:</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>                 referencename=str(reference)</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>         <span class="keywordflow">else</span>:</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>             referencename=str(reference).replace(<span class="stringliteral">"|layername"</span>,<span class="stringliteral">" -ln"</span>)</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>         commands.append(<span class="stringliteral">'-ref'</span>)</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>         commands.append(referencename)</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span> </div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>         commands.append(<span class="stringliteral">'-lr'</span>);</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>         commands.append(self.getParameterValue(self.<a class="code" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a99f5e02f16130f80143086252a38ee93">LABELREF</a>))</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span> </div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>         nodata=self.getParameterValue(self.<a class="code" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a02de7992fb58aea0f628f8f3c1c937ac">NODATA</a>)</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>         <span class="keywordflow">if</span> nodata != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>             nodataValues = nodata.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>             <span class="keywordflow">for</span> nodataValue <span class="keywordflow">in</span> nodataValues:</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>                 commands.append(<span class="stringliteral">'-nodata'</span>)</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>                 commands.append(nodataValue)</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span> </div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>         commands.append(<span class="stringliteral">"-cm"</span>)</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>         commands.append(<span class="stringliteral">"-cmf"</span>)</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>         commands.append(self.<a class="code" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a2ed757ec7259c4b56bee1acc8bbe1a61">CMFORMAT_OPTIONS</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a21c954c78e110bb1c93de64075afe182">CMFORMAT</a>)])</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>         commands.append(<span class="stringliteral">"-cmo"</span>)</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>         commands.append(self.getOutputValue(self.<a class="code" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a792f4cf29ee2f6034149c0233b32f4ff">CMOUTPUT</a>))</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span> </div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>         output = self.getOutputFromName(self.<a class="code" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a22d37343b09f74019a836f1489d24c02">OUTPUT</a>)</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>         outFile = output.value</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>         formatIdx = self.getParameterValue(self.<a class="code" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#ab922ac43189488cb53e46bccd0d02b6a">FORMAT</a>)</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>         outFormat = <span class="stringliteral">'"'</span> + FORMATS[formatIdx] + <span class="stringliteral">'"'</span></div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>         commands.append(<span class="stringliteral">'-f'</span>)</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>         commands.append(outFormat)</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>         ext = EXTS[formatIdx]</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>         <span class="keywordflow">if</span> <span class="keywordflow">not</span> outFile.endswith(ext):</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>             outFile += ext</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>             output.value = outFile</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>         commands.append(<span class="stringliteral">'-o'</span>)</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>         commands.append(<span class="stringliteral">'"'</span> + outFile + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>         commands.append(<span class="stringliteral">'-lc'</span>);</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>         commands.append(self.getParameterValue(self.<a class="code" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a7580c2442f384fcc956e14d936a3a305">LABELCLASS</a>))</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span> </div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>         extra = str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a83684b7d1751c3e507df1b2a61c06e7d">EXTRA</a>))</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>         <span class="keywordflow">if</span> len(extra) > 0:</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>             commands.append(extra)</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span> </div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>         pktoolsUtils.runpktools(commands, progress)</div>
-<div class="ttc" id="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy_html_a6cabc221036f66d975847866eaf14dd9"><div class="ttname"><a href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a6cabc221036f66d975847866eaf14dd9">qgis.pkdiff_accuracy.pkdiff_accuracy.INPUT</a></div><div class="ttdeci">string INPUT</div><div class="ttdef"><b>Definition:</b> <a href="pkdiff__accuracy_8py_source.html#l00095">pkdiff_accuracy.py:95</a></div></div>
-<div class="ttc" id="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy_html_a99f5e02f16130f80143086252a38ee93"><div class="ttname"><a href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a99f5e02f16130f80143086252a38ee93">qgis.pkdiff_accuracy.pkdiff_accuracy.LABELREF</a></div><div class="ttdeci">string LABELREF</div><div class="ttdef"><b>Definition:</b> <a href="pkdiff__accuracy_8py_source.html#l00098">pkdiff_accuracy.py:98</a></div></div>
-<div class="ttc" id="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy_html_a02de7992fb58aea0f628f8f3c1c937ac"><div class="ttname"><a href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a02de7992fb58aea0f628f8f3c1c937ac">qgis.pkdiff_accuracy.pkdiff_accuracy.NODATA</a></div><div class="ttdeci">string NODATA</div><div class="ttdef"><b>Definition:</b> <a href="pkdiff__accuracy_8py_source.html#l00099">pkdiff_accuracy.py:99</a></div></div>
-<div class="ttc" id="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy_html_a792f4cf29ee2f6034149c0233b32f4ff"><div class="ttname"><a href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a792f4cf29ee2f6034149c0233b32f4ff">qgis.pkdiff_accuracy.pkdiff_accuracy.CMOUTPUT</a></div><div class="ttdeci">string CMOUTPUT</div><div class="ttdef"><b>Definition:</b> <a href="pkdiff__accuracy_8py_source.html#l00102">pkdiff_accuracy.py:102</a></div></div>
-<div class="ttc" id="namespacePyQt4_1_1QtCore_html"><div class="ttname"><a href="namespacePyQt4_1_1QtCore.html">QtCore</a></div></div>
-<div class="ttc" id="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy_html_a176e2f67f3be853c9197d99f4cd16a1c"><div class="ttname"><a href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a176e2f67f3be853c9197d99f4cd16a1c">qgis.pkdiff_accuracy.pkdiff_accuracy.cliName</a></div><div class="ttdeci">def cliName</div><div class="ttdef"><b>Definition:</b> <a href="pkdiff__accuracy_8py_source.html#l00110">pkdiff_accuracy.py:110</a></div></div>
-<div class="ttc" id="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy_html_a7580c2442f384fcc956e14d936a3a305"><div class="ttname"><a href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a7580c2442f384fcc956e14d936a3a305">qgis.pkdiff_accuracy.pkdiff_accuracy.LABELCLASS</a></div><div class="ttdeci">string LABELCLASS</div><div class="ttdef"><b>Definition:</b> <a href="pkdiff__accuracy_8py_source.html#l00107">pkdiff_accuracy.py:107</a></div></div>
-<div class="ttc" id="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy_html"><div class="ttname"><a href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pkdiff_accuracy.pkdiff_accuracy</a></div><div class="ttdef"><b>Definition:</b> <a href="pkdiff__accuracy_8py_source.html#l00093">pkdiff_accuracy.py:93</a></div></div>
-<div class="ttc" id="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy_html_afdaa56e3a00e8ad32fffd8600b998b92"><div class="ttname"><a href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#afdaa56e3a00e8ad32fffd8600b998b92">qgis.pkdiff_accuracy.pkdiff_accuracy.REFERENCE</a></div><div class="ttdeci">string REFERENCE</div><div class="ttdef"><b>Definition:</b> <a href="pkdiff__accuracy_8py_source.html#l00096">pkdiff_accuracy.py:96</a></div></div>
-<div class="ttc" id="namespaceqgis_1_1core_html"><div class="ttname"><a href="namespaceqgis_1_1core.html">core</a></div></div>
-<div class="ttc" id="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy_html_a21c954c78e110bb1c93de64075afe182"><div class="ttname"><a href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a21c954c78e110bb1c93de64075afe182">qgis.pkdiff_accuracy.pkdiff_accuracy.CMFORMAT</a></div><div class="ttdeci">string CMFORMAT</div><div class="ttdef"><b>Definition:</b> <a href="pkdiff__accuracy_8py_source.html#l00104">pkdiff_accuracy.py:104</a></div></div>
-<div class="ttc" id="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy_html_aa1a0571329dbfd38e21385392bab8de1"><div class="ttname"><a href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#aa1a0571329dbfd38e21385392bab8de1">qgis.pkdiff_accuracy.pkdiff_accuracy.name</a></div><div class="ttdeci">name</div><div class="ttdef"><b>Definition:</b> <a href="pkdiff__accuracy_8py_source.html#l00114">pkdiff_accuracy.py:114</a></div></div>
-<div class="ttc" id="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy_html_a724b6dc67c93a4392de92dcfca91f701"><div class="ttname"><a href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a724b6dc67c93a4392de92dcfca91f701">qgis.pkdiff_accuracy.pkdiff_accuracy.group</a></div><div class="ttdeci">group</div><div class="ttdef"><b>Definition:</b> <a href="pkdiff__accuracy_8py_source.html#l00115">pkdiff_accuracy.py:115</a></div></div>
-<div class="ttc" id="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy_html_a83684b7d1751c3e507df1b2a61c06e7d"><div class="ttname"><a href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a83684b7d1751c3e507df1b2a61c06e7d">qgis.pkdiff_accuracy.pkdiff_accuracy.EXTRA</a></div><div class="ttdeci">string EXTRA</div><div class="ttdef"><b>Definition:</b> <a href="pkdiff__accuracy_8py_source.html#l00108">pkdiff_accuracy.py:108</a></div></div>
-<div class="ttc" id="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy_html_ab922ac43189488cb53e46bccd0d02b6a"><div class="ttname"><a href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#ab922ac43189488cb53e46bccd0d02b6a">qgis.pkdiff_accuracy.pkdiff_accuracy.FORMAT</a></div><div class="ttdeci">string FORMAT</div><div class="ttdef"><b>Definition:</b> <a href="pkdiff__accuracy_8py_source.html#l00106">pkdiff_accuracy.py:106</a></div></div>
-<div class="ttc" id="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy_html_a22d37343b09f74019a836f1489d24c02"><div class="ttname"><a href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a22d37343b09f74019a836f1489d24c02">qgis.pkdiff_accuracy.pkdiff_accuracy.OUTPUT</a></div><div class="ttdeci">string OUTPUT</div><div class="ttdef"><b>Definition:</b> <a href="pkdiff__accuracy_8py_source.html#l00101">pkdiff_accuracy.py:101</a></div></div>
-<div class="ttc" id="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy_html_a2a294e32e185d1f58bbde4ae40f62c55"><div class="ttname"><a href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a2a294e32e185d1f58bbde4ae40f62c55">qgis.pkdiff_accuracy.pkdiff_accuracy.ITERATE</a></div><div class="ttdeci">string ITERATE</div><div class="ttdef"><b>Definition:</b> <a href="pkdiff__accuracy_8py_source.html#l00097">pkdiff_accuracy.py:97</a></div></div>
-<div class="ttc" id="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy_html_a2ed757ec7259c4b56bee1acc8bbe1a61"><div class="ttname"><a href="classqgis_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a2ed757ec7259c4b56bee1acc8bbe1a61">qgis.pkdiff_accuracy.pkdiff_accuracy.CMFORMAT_OPTIONS</a></div><div class="ttdeci">list CMFORMAT_OPTIONS</div><div class="ttdef"><b>Definition:</b> <a href="pkdiff__accuracy_8py_source.html#l00103">pkdiff_accuracy.py:103</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkdiff__gui_2main_8cpp_source.html b/doc/html/pkdiff__gui_2main_8cpp_source.html
deleted file mode 100644
index 9ce5c4f..0000000
--- a/doc/html/pkdiff__gui_2main_8cpp_source.html
+++ /dev/null
@@ -1,103 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/pkdiff_gui/main.cpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_b6b6de371025fb67c6b8623f3d3cd2ce.html">pkdiff_gui</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">main.cpp</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">main.cpp: GUI for pktools</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "mainwindow.h"</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <QApplication></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> </div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])</div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> {</div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span>     QApplication a(argc, argv);</div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span>     <a class="code" href="classMainWindow.html">MainWindow</a> w;</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span>     w.show();</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> </div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span>     <span class="keywordflow">return</span> a.exec();</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> }</div>
-<div class="ttc" id="classMainWindow_html"><div class="ttname"><a href="classMainWindow.html">MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite__gui_2mainwindow_8h_source.html#l00031">mainwindow.h:31</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkdiff__gui_2mainwindow_8cpp_source.html b/doc/html/pkdiff__gui_2mainwindow_8cpp_source.html
deleted file mode 100644
index 3471ccc..0000000
--- a/doc/html/pkdiff__gui_2mainwindow_8cpp_source.html
+++ /dev/null
@@ -1,281 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/pkdiff_gui/mainwindow.cpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_b6b6de371025fb67c6b8623f3d3cd2ce.html">pkdiff_gui</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">mainwindow.cpp</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">mainwindow.cpp: GUI for pktools</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "mainwindow.h"</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "ui_mainwindow.h"</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <QFileDialog></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <QStandardItemModel></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <QMessageBox></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include <QProcess></span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> </div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> MainWindow::MainWindow(QWidget *parent) :</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span>     QMainWindow(parent),</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span>     ui(new Ui::<a class="code" href="classMainWindow.html">MainWindow</a>)</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> {</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span>     ui->setupUi(<span class="keyword">this</span>);</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>     QStringList formatlist;</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>     formatlist << <span class="stringliteral">"SQLite"</span> << <span class="stringliteral">"ESRI Shapefile"</span>;</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>     ui->f->addItems(formatlist);</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>     setDefaults();</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> }</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> MainWindow::~MainWindow()</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> {</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     <span class="keyword">delete</span> ui;</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> }</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span> </div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span> <span class="keywordtype">void</span> MainWindow::setDefaults()</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span> {</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     <span class="comment">//tab input/output</span></div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     ui->input->clear();</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     ui->reference->clear();</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     ui->msknodata->setText(<span class="stringliteral">"0"</span>);</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     ui->output->clear();</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     ui->confusion->setChecked(<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span> }</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span> </div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span> <span class="keywordtype">void</span> MainWindow::on_actionReference_triggered()</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span> {</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     QString qsreference= QFileDialog::getOpenFileName(<span class="keyword">this</span>, <span class="stringliteral">"Reference"</span>);</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     ui->reference->setText(qsreference);</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span> }</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span> </div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span> <span class="keywordtype">void</span> MainWindow::on_actionMask_triggered()</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span> {</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     QString qsmask = QFileDialog::getOpenFileName(<span class="keyword">this</span>, <span class="stringliteral">"Mask"</span>);</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     ui->mask->setText(qsmask);</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span> }</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span> </div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span> <span class="keywordtype">void</span> MainWindow::on_actionOutput_triggered()</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span> {</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>     QString qsoutput = QFileDialog::getSaveFileName(<span class="keyword">this</span>,<span class="stringliteral">"Output image"</span>,<span class="stringliteral">""</span>,<span class="stringliteral">"*.*"</span>);</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     ui->output->setText(qsoutput);</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span> }</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span> </div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span> <span class="keywordtype">void</span> MainWindow::on_actionInput_triggered()</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span> {</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>     QString qsinput = QFileDialog::getOpenFileName(<span class="keyword">this</span>, <span class="stringliteral">"Input"</span>);</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>     ui->input->setText(qsinput);</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span> }</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span> </div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span> <span class="keywordtype">void</span> MainWindow::on_toolButton_input_clicked()</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span> {</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>     on_actionInput_triggered();</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span> }</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span> </div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span> <span class="keywordtype">void</span> MainWindow::on_toolButton_mask_clicked()</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span> {</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     on_actionMask_triggered();</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span> }</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span> </div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span> <span class="keywordtype">void</span> MainWindow::on_toolButton_output_clicked()</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span> {</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     on_actionOutput_triggered();</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span> }</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span> </div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span> <span class="keywordtype">void</span> MainWindow::on_toolButton_reference_clicked()</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span> {</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>     on_actionReference_triggered();</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span> }</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span> </div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span> <span class="keywordtype">void</span> MainWindow::setClassTable(<span class="keyword">const</span> QStringList &labels)</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span> {</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     QStandardItemModel *model = <span class="keyword">new</span> QStandardItemModel(labels.size(),2,<span class="keyword">this</span>); <span class="comment">//nlabel rows and 2 columns</span></div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     model->setHorizontalHeaderItem(0, <span class="keyword">new</span> QStandardItem(QString(<span class="stringliteral">"label name"</span>)));</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     model->setHorizontalHeaderItem(1, <span class="keyword">new</span> QStandardItem(QString(<span class="stringliteral">"class nr"</span>)));</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ilabel=0;ilabel<labels.size();++ilabel){</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>         QStandardItem *firstCol = <span class="keyword">new</span> QStandardItem(QString(labels[ilabel]));</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>         model->setItem(ilabel,0,firstCol);</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>         QStandardItem *secondCol = <span class="keyword">new</span> QStandardItem(QString::number(ilabel+1));</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>         model->setItem(ilabel,1,secondCol);</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     }</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     ui->tableView_labels->setModel(model);</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span> }</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span> </div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span> <span class="keywordtype">void</span> MainWindow::on_pushButton_run_clicked()</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span> {</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>         ui->commandLineEdit->clear();</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>         ui->consoleEdit->clear();</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>         QString program = <span class="stringliteral">"pkdiff"</span>;</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>         <span class="keywordflow">if</span>(ui->input->text().isEmpty()){</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>             MainWindow::on_actionInput_triggered();</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>             <span class="keywordflow">if</span>(ui->input->text().isEmpty()){</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>                 QString qsError=<span class="stringliteral">"No input raster dataset selected"</span>;</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>                 <span class="keywordflow">throw</span>(qsError);</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>             }</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>         }</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>         <span class="keywordflow">if</span>(ui->reference->text().isEmpty()){</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>             MainWindow::on_actionReference_triggered();</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>             <span class="keywordflow">if</span>(ui->reference->text().isEmpty()){</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>                 QString qsError=<span class="stringliteral">"No reference vector file selected"</span>;</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>                 <span class="keywordflow">throw</span>(qsError);</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>             }</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>         }</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<ui->tableView_labels->model()->rowCount();++irow){</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>             QString qsOption;</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>             qsOption+=<span class="stringliteral">" --class "</span>;</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>             qsOption+=ui->tableView_labels->model()->data(ui->tableView_labels->model()->index(irow,0)).toString();</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>             qsOption+=<span class="stringliteral">" --reclass "</span>;</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>             qsOption+=ui->tableView_labels->model()->data(ui->tableView_labels->model()->index(irow,1)).toString();</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>             program+=qsOption;</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>          }</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span> </div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>         QList<QComboBox*> qcomboBoxList = this->findChildren<QComboBox *>();</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span> </div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>         <span class="keywordflow">for</span>(QList<QComboBox*>::ConstIterator qcbit=qcomboBoxList.begin();qcbit!=qcomboBoxList.end();++qcbit){</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>             QString qsOption;</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>             qsOption+=<span class="stringliteral">" --"</span>;</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>             qsOption+=(*qcbit)->objectName();</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>             program+=qsOption;</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>             program+=<span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>             program+=(*qcbit)->currentText();</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>         }</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span> </div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>         QList<QLineEdit*> qlineEditList = this->findChildren<QLineEdit *>();</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span> </div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>         <span class="keywordflow">for</span>(QList<QLineEdit*>::ConstIterator qlbit=qlineEditList.begin();qlbit!=qlineEditList.end();++qlbit){</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>             <span class="keywordflow">if</span>(!((*qlbit)->text().isEmpty())){</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>                 QString qsOption;</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>                 qsOption+=<span class="stringliteral">" --"</span>;</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>                 qsOption+=(*qlbit)->objectName();</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>                 qsOption+=<span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>                 qsOption+=(*qlbit)->text();</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>                 program+=qsOption;</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>             }</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>         }</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span> </div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>         <span class="keywordflow">if</span>(ui->confusion->isChecked())</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>             program+=<span class="stringliteral">" --confusion"</span>;</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span> </div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>         ui->commandLineEdit->setText(program);</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span> </div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span> <span class="comment">//        QProcess *myProcess = new QProcess(parent);</span></div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>         QProcess *myProcess = <span class="keyword">new</span> QProcess(<span class="keyword">this</span>);</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>         myProcess->start(program);</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>         myProcess->setProcessChannelMode(QProcess::MergedChannels);</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>         this->setCursor(Qt::WaitCursor);</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>         myProcess->waitForFinished(-1);</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>         this->setCursor(Qt::ArrowCursor);</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>         QMessageBox msgBox;</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>         QString p_stderr = myProcess->readAllStandardError();</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>         <span class="keywordflow">if</span>(!p_stderr.isEmpty()){</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>             msgBox.setText(p_stderr);</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>             msgBox.exec();</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>         }</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>         QString p_stdout = myProcess->readAll();</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>         ui->consoleEdit->insertPlainText(p_stdout);</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>         <span class="keyword">delete</span> myProcess;</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>     }</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>     <span class="keywordflow">catch</span>(QString qsError){</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>         QMessageBox msgBox;</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>         msgBox.setText(qsError);</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>         msgBox.exec();</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>     }</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span> }</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span> </div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span> <span class="keywordtype">void</span> MainWindow::on_pushButton_restore_clicked()</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span> {</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>     setDefaults();</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span> }</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span> </div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span> <span class="keywordtype">void</span> MainWindow::on_commandLinkButtonPrepareTable_clicked()</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span> {</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>     <span class="keywordtype">int</span> nclass=ui->nclass->text().toInt();</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>     QStringList labels;</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=1;iclass<=nclass;++iclass){</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>         QString lstring=<span class="stringliteral">"label"</span>;</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>         lstring+=QString::number(iclass);</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>         labels << lstring;</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>     }</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>     setClassTable(labels);</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span> }</div>
-<div class="ttc" id="classMainWindow_html"><div class="ttname"><a href="classMainWindow.html">MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite__gui_2mainwindow_8h_source.html#l00031">mainwindow.h:31</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkdiff__gui_2mainwindow_8h_source.html b/doc/html/pkdiff__gui_2mainwindow_8h_source.html
deleted file mode 100644
index f0eb428..0000000
--- a/doc/html/pkdiff__gui_2mainwindow_8h_source.html
+++ /dev/null
@@ -1,141 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/pkdiff_gui/mainwindow.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_b6b6de371025fb67c6b8623f3d3cd2ce.html">pkdiff_gui</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">mainwindow.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">mainwindow.h: GUI for pktools</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#ifndef MAINWINDOW_H</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor"></span><span class="preprocessor">#define MAINWINDOW_H</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <QMainWindow></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> </div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="keyword">namespace </span>Ui {</div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">class </span><a class="code" href="classMainWindow.html">MainWindow</a>;</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> }</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> </div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">class </span><a class="code" href="classMainWindow.html">MainWindow</a> : <span class="keyword">public</span> QMainWindow</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> {</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span>     Q_OBJECT</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> </div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>     <span class="keyword">explicit</span> <a class="code" href="classMainWindow.html">MainWindow</a>(QWidget *parent = 0);</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>     ~<a class="code" href="classMainWindow.html">MainWindow</a>();</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> </div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="keyword">private</span> slots:</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>     <span class="keywordtype">void</span> on_actionInput_triggered();</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> </div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     <span class="keywordtype">void</span> on_actionReference_triggered();</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> </div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     <span class="keywordtype">void</span> on_actionMask_triggered();</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span> </div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     <span class="keywordtype">void</span> on_actionOutput_triggered();</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span> </div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     <span class="keywordtype">void</span> on_toolButton_input_clicked();</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span> </div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     <span class="keywordtype">void</span> on_toolButton_mask_clicked();</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span> </div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     <span class="keywordtype">void</span> on_toolButton_output_clicked();</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span> </div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     <span class="keywordtype">void</span> on_toolButton_reference_clicked();</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span> </div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     <span class="keywordtype">void</span> on_pushButton_run_clicked();</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span> </div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <span class="keywordtype">void</span> on_pushButton_restore_clicked();</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span> </div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     <span class="keywordtype">void</span> on_commandLinkButtonPrepareTable_clicked();</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span> </div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span> <span class="keyword">private</span>:</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     <span class="keywordtype">void</span> setClassTable(<span class="keyword">const</span> QStringList &labels);</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     <span class="keywordtype">void</span> setDefaults();</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span> </div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     <a class="code" href="classUi_1_1MainWindow.html">Ui::MainWindow</a> *ui;</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span> };</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span> </div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span> <span class="preprocessor">#endif // MAINWINDOW_H</span></div>
-<div class="ttc" id="classUi_1_1MainWindow_html"><div class="ttname"><a href="classUi_1_1MainWindow.html">Ui::MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="build-pkcomposite__gui-gcc-Debug_2ui__mainwindow_8h_source.html#l00702">ui_mainwindow.h:702</a></div></div>
-<div class="ttc" id="classMainWindow_html"><div class="ttname"><a href="classMainWindow.html">MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite__gui_2mainwindow_8h_source.html#l00031">mainwindow.h:31</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkdsm2shadow.html b/doc/html/pkdsm2shadow.html
deleted file mode 100644
index e10fd31..0000000
--- a/doc/html/pkdsm2shadow.html
+++ /dev/null
@@ -1,106 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: pkdsm2shadow</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkdsm2shadow </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><p>program to calculate sun shadow based on digital surface model and sun angles </p>
-<h2>SYNOPSIS</h2>
-<p><code> Usage: pkdsm2shadow -i input.txt -o output [-sza angle] [-saa angle] </code></p>
-<p><code></code></p>
-<p><code> Options: [-f value] [-ot type] [-of GDALformat] [-ct filename] [-co option]*</code></p>
-<p><code> Advanced options: [–scale value] [–offset value] </code></p>
-<h1><a class="anchor" id="pkdsm2shadow_description"></a>
-Description</h1>
-<p>Utility to create a binary shadow mask from a digital surface model, based on Sun zenith (-sza) and azimuth angles (-saa).</p>
-<h1><a class="anchor" id="pkdsm2shadow_options"></a>
-Options</h1>
-<ul>
-<li>use either <code>-short</code> or <code>--long</code> options (both <code>--long=value</code> and <code>--long value</code> are supported)</li>
-<li>short option <code>-h</code> shows basic options only, long option <code>--help</code> shows all options <table class="doxtable">
-<tr>
-<th>short</th><th>long</th><th>type</th><th>default</th><th>description  </th></tr>
-<tr>
-<td>i </td><td>input </td><td>std::string </td><td></td><td>input image file </td></tr>
-<tr>
-<td>o </td><td>output </td><td>std::string </td><td></td><td>Output image file </td></tr>
-<tr>
-<td>sza </td><td>sza </td><td>double </td><td></td><td>Sun zenith angle. </td></tr>
-<tr>
-<td>saa </td><td>saa </td><td>double </td><td></td><td>Sun azimuth angle (N=0 E=90 S=180 W=270). </td></tr>
-<tr>
-<td>f </td><td>flag </td><td>int </td><td>0 </td><td>Flag to put in image if pixel shadow </td></tr>
-<tr>
-<td>s </td><td>scale </td><td>double </td><td></td><td>scale used for input dsm: height=scale*input+offset </td></tr>
-<tr>
-<td>off </td><td>offset </td><td>double </td><td></td><td>offset used for input dsm: height=scale*input+offset </td></tr>
-<tr>
-<td>co </td><td>co </td><td>std::string </td><td></td><td>Creation option for output file. Multiple options can be specified. </td></tr>
-<tr>
-<td>ot </td><td>otype </td><td>std::string </td><td></td><td>Data type for output image ({Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/CInt16/CInt32/CFloat32/CFloat64}). Empty string: inherit type from input image </td></tr>
-<tr>
-<td>of </td><td>oformat </td><td>std::string </td><td>GTiff </td><td>Output image format (see also gdal_translate). </td></tr>
-<tr>
-<td>ct </td><td>ct </td><td>std::string </td><td></td><td>color table (file with 5 columns: id R G B ALFA (0: transparent, 255: solid) </td></tr>
-</table>
-Usage: pkdsm2shadow -i input.txt -o output [-sza angle] [-saa angle]</li>
-</ul>
-<h1>Examples </h1>
-<p>Some examples how to use pkdsm2shadow can be found <a class="el" href="md_examples_pkdsm2shadow.html#examples_pkdsm2shadow">here</a> </p>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkdsm2shadow_8cc_source.html b/doc/html/pkdsm2shadow_8cc_source.html
deleted file mode 100644
index c4a49b9..0000000
--- a/doc/html/pkdsm2shadow_8cc_source.html
+++ /dev/null
@@ -1,220 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/pkdsm2shadow.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkdsm2shadow.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pkdsm2shadow.cc: program to calculate sun shadow based on digital surface model and sun angles</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <assert.h></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <iostream></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <string></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <fstream></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <math.h></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include <sys/types.h></span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include <stdio.h></span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include "base/Vector2d.h"</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include "algorithms/Filter2d.h"</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include "imageclasses/ImgReaderGdal.h"</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="preprocessor">#include "imageclasses/ImgWriterGdal.h"</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> </div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="comment">/******************************************************************************/</span></div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span> </div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span> <span class="comment">/*------------------</span></div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span> <span class="comment">  Main procedure</span></div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span> <span class="comment">  ----------------*/</span></div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc,<span class="keywordtype">char</span> **argv) {</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> input_opt(<span class="stringliteral">"i"</span>,<span class="stringliteral">"input"</span>,<span class="stringliteral">"input image file"</span>);</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> output_opt(<span class="stringliteral">"o"</span>, <span class="stringliteral">"output"</span>, <span class="stringliteral">"Output image file"</span>);</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> sza_opt(<span class="stringliteral">"sza"</span>, <span class="stringliteral">"sza"</span>, <span class="stringliteral">"Sun zenith angle."</span>);</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> saa_opt(<span class="stringliteral">"saa"</span>, <span class="stringliteral">"saa"</span>, <span class="stringliteral">"Sun azimuth angle (N=0 E=90 S=180 W=270)."</span>);</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> flag_opt(<span class="stringliteral">"f"</span>, <span class="stringliteral">"flag"</span>, <span class="stringliteral">"Flag to put in image if pixel shadow"</span>, 0);</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a>  otype_opt(<span class="stringliteral">"ot"</span>, <span class="stringliteral">"otype"</span>, <span class="stringliteral">"Data type for output image ({Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/CInt16/CInt32/CFloat32/CFloat64}). Empty string: inherit type from input image"</span>, <span class="string [...]
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  oformat_opt(<span class="stringliteral">"of"</span>, <span class="stringliteral">"oformat"</span>, <span class="stringliteral">"Output image format (see also gdal_translate)."</span>,<span class="stringliteral">"GTiff"</span>);</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  colorTable_opt(<span class="stringliteral">"ct"</span>, <span class="stringliteral">"ct"</span>, <span class="stringliteral">"color table (file with 5 columns: id R G B ALFA (0: transparent, 255: solid)"</span>);</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> option_opt(<span class="stringliteral">"co"</span>, <span class="stringliteral">"co"</span>, <span class="stringliteral">"Creation option for output file. Multiple options can be specified."</span>);</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> scale_opt(<span class="stringliteral">"s"</span>, <span class="stringliteral">"scale"</span>, <span class="stringliteral">"scale used for input dsm: height=scale*input+offset"</span>);</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> offset_opt(<span class="stringliteral">"off"</span>, <span class="stringliteral">"offset"</span>, <span class="stringliteral">"offset used for input dsm: height=scale*input+offset"</span>);</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> verbose_opt(<span class="stringliteral">"v"</span>, <span class="stringliteral">"verbose"</span>, <span class="stringliteral">"verbose mode if > 0"</span>, 0,2);</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span> </div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>   scale_opt.setHide(1);</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>   offset_opt.setHide(1);</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span> </div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>   <span class="keywordtype">bool</span> doProcess;<span class="comment">//stop process when program was invoked with help option (-h --help)</span></div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     doProcess=input_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     output_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     sza_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     saa_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     flag_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     scale_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>     offset_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>     option_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>     otype_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>     oformat_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     colorTable_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     verbose_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>   }</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> predefinedString){</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     std::cout << predefinedString << std::endl;</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     exit(0);</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>   }</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>   <span class="keywordflow">if</span>(!doProcess){</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>     cout << endl;</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>     cout << <span class="stringliteral">"Usage: pkdsm2shadow -i input.txt -o output [-sza angle] [-saa angle]"</span> << endl;</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>     cout << endl;</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     std::cout << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << std::endl;</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>     exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>   }</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span> </div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>   <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> input;</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>   <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> output;</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>   assert(input_opt.size());</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>   assert(output_opt.size());</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>   input.open(input_opt[0]);</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>   <span class="keywordflow">if</span>(scale_opt.size())</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>     input.setScale(scale_opt[0]);</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>   <span class="keywordflow">if</span>(offset_opt.size())</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>     input.setOffset(offset_opt[0]);</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>   </div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>   <span class="comment">// output.open(output_opt[0],input);</span></div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>   GDALDataType theType=GDT_Unknown;</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>     cout << <span class="stringliteral">"possible output data types: "</span>;</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iType = 0; iType < GDT_TypeCount; ++iType){</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>       cout << <span class="stringliteral">" "</span> << GDALGetDataTypeName((GDALDataType)iType);</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>     <span class="keywordflow">if</span>( GDALGetDataTypeName((GDALDataType)iType) != NULL</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>         && EQUAL(GDALGetDataTypeName((GDALDataType)iType),</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>                  otype_opt[0].c_str()))</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>       theType=(GDALDataType) iType;</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>   }</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>   <span class="keywordflow">if</span>(theType==GDT_Unknown)</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>     theType=input.getDataType();</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span> </div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>     std::cout << std::endl << <span class="stringliteral">"Output pixel type:  "</span> << GDALGetDataTypeName(theType) << endl;</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span> </div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>   <span class="keywordtype">string</span> imageType;<span class="comment">//=input.getImageType();</span></div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>   <span class="keywordflow">if</span>(oformat_opt.size())</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>     imageType=oformat_opt[0];</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span> </div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>   <span class="keywordflow">if</span>(option_opt.findSubstring(<span class="stringliteral">"INTERLEAVE="</span>)==option_opt.end()){</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>     <span class="keywordtype">string</span> theInterleave=<span class="stringliteral">"INTERLEAVE="</span>;</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>     theInterleave+=input.getInterleave();</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>     option_opt.push_back(theInterleave);</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>   }</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>     output.open(output_opt[0],input.nrOfCol(),input.nrOfRow(),input.nrOfBand(),theType,imageType,option_opt);</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>   }</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>     cout << errorstring << endl;</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>     exit(4);</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>   }</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>   output.setProjection(input.getProjection());</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>   <span class="keywordtype">double</span> gt[6];</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>   input.getGeoTransform(gt);</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>   output.setGeoTransform(gt);</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span> </div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>   <span class="keywordflow">if</span>(input.getColorTable()!=NULL)</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>     output.setColorTable(input.getColorTable());</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span> </div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>   <a class="code" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a> filter2d;</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>     std::cout<< <span class="stringliteral">"class values: "</span>;</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>   <span class="keywordflow">if</span>(colorTable_opt.size())</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>     output.setColorTable(colorTable_opt[0]);</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>   filter2d.shadowDsm(input,output,sza_opt[0],saa_opt[0],input.getDeltaX(),flag_opt[0]);</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>   input.close();</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>   output.close();</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>   <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span> }</div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-<div class="ttc" id="classImgWriterGdal_html"><div class="ttname"><a href="classImgWriterGdal.html">ImgWriterGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgWriterGdal_8h_source.html#l00033">ImgWriterGdal.h:33</a></div></div>
-<div class="ttc" id="classfilter2d_1_1Filter2d_html"><div class="ttname"><a href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></div><div class="ttdef"><b>Definition:</b> <a href="Filter2d_8h_source.html#l00065">Filter2d.h:65</a></div></div>
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkdumpimg.html b/doc/html/pkdumpimg.html
deleted file mode 100644
index d62cdfc..0000000
--- a/doc/html/pkdumpimg.html
+++ /dev/null
@@ -1,113 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: pkdumpimg</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkdumpimg </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><p>program to dump image content to ascii or std out </p>
-<h2>SYNOPSIS</h2>
-<p><code> Usage: pkdumpimg -i input.txt [-o output] </code></p>
-<p><code></code></p>
-<p><code> Options: [-of matrix | line] [-b band] [-e vector | -ulx value -uly value -lrx value -lry value]</code></p>
-<p><code> Advanced options: [-dx value -dy value] [-r resampling] -srcnodata value -dstnodata value</code></p>
-<p><code></code></p>
-<h1><a class="anchor" id="pkdumpimg_description"></a>
-Description</h1>
-<p>The utility pkdumpimg dumps the content of a raster dataset to (standard) output (screen or filename). The default is to dump the output in matrix format. Use -of line to dump each pixel value on a separate line, preceded by its position (x and y value). You can specify a bounding box to dump with either the extent of an OGR vector dataset or via the options -ulx -uly -lrx and -lry.</p>
-<h1><a class="anchor" id="pkdumpimg_options"></a>
-Options</h1>
-<ul>
-<li>use either <code>-short</code> or <code>--long</code> options (both <code>--long=value</code> and <code>--long value</code> are supported)</li>
-<li>short option <code>-h</code> shows basic options only, long option <code>--help</code> shows all options <table class="doxtable">
-<tr>
-<th>short</th><th>long</th><th>type</th><th>default</th><th>description  </th></tr>
-<tr>
-<td>i </td><td>input </td><td>std::string </td><td></td><td>input image file </td></tr>
-<tr>
-<td>o </td><td>output </td><td>std::string </td><td></td><td>Output ascii file (Default is empty: use stdout </td></tr>
-<tr>
-<td>of </td><td>oformat </td><td>std::string </td><td>matrix </td><td>Output format (matrix form or list (x,y,z) form. Default is matrix form </td></tr>
-<tr>
-<td>b </td><td>band </td><td>int </td><td></td><td>band index to crop </td></tr>
-<tr>
-<td>e </td><td>extent </td><td>std::string </td><td></td><td>get boundary from extent from polygons in vector file </td></tr>
-<tr>
-<td>ulx </td><td>ulx </td><td>double </td><td>0 </td><td>Upper left x value bounding box (in geocoordinates if georef is true) </td></tr>
-<tr>
-<td>uly </td><td>uly </td><td>double </td><td>0 </td><td>Upper left y value bounding box (in geocoordinates if georef is true) </td></tr>
-<tr>
-<td>lrx </td><td>lrx </td><td>double </td><td>0 </td><td>Lower left x value bounding box (in geocoordinates if georef is true) </td></tr>
-<tr>
-<td>lry </td><td>lry </td><td>double </td><td>0 </td><td>Lower left y value bounding box (in geocoordinates if georef is true) </td></tr>
-<tr>
-<td>dx </td><td>dx </td><td>double </td><td>0 </td><td>Output resolution in x (in meter) (0.0: keep original resolution) </td></tr>
-<tr>
-<td>dy </td><td>dy </td><td>double </td><td>0 </td><td>Output resolution in y (in meter) (0.0: keep original resolution) </td></tr>
-<tr>
-<td>r </td><td>resampling-method </td><td>std::string </td><td>near </td><td>Resampling method (near: nearest neighbour, bilinear: bi-linear interpolation). </td></tr>
-<tr>
-<td>srcnodata </td><td>srcnodata </td><td>double </td><td></td><td>set no data value(s) for input image </td></tr>
-<tr>
-<td>dstnodata </td><td>dstnodata </td><td>short </td><td>0 </td><td>nodata value for output if out of bounds. </td></tr>
-</table>
-Usage: pkdumpimg -i input.txt [-o output]</li>
-</ul>
-<h1>Examples </h1>
-<p>Some examples how to use pkdumpimg can be found <a class="el" href="md_examples_pkdumpimg.html#examples_pkdumpimg">here</a> </p>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkdumpimg_8cc_source.html b/doc/html/pkdumpimg_8cc_source.html
deleted file mode 100644
index 8f73e4d..0000000
--- a/doc/html/pkdumpimg_8cc_source.html
+++ /dev/null
@@ -1,421 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/pkdumpimg.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkdumpimg.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pkdumpimg.cc: program to dump image content to ascii or std out</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <string></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <fstream></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <vector></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <iostream></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <assert.h></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "imageclasses/ImgReaderOgr.h"</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "imageclasses/ImgWriterGdal.h"</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="comment">// #include "imageclasses/ImgWriterOgr.h"</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> </div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#ifdef HAVE_CONFIG_H</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="preprocessor"></span><span class="preprocessor">#include <config.h></span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="comment">/******************************************************************************/</span></div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span> </div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span> {</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> input_opt(<span class="stringliteral">"i"</span>,<span class="stringliteral">"input"</span>,<span class="stringliteral">"input image file"</span>,<span class="stringliteral">""</span>);</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> output_opt(<span class="stringliteral">"o"</span>, <span class="stringliteral">"output"</span>, <span class="stringliteral">"Output ascii file (Default is empty: use stdout"</span>, <span class="stringliteral">""</span>);</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> oformat_opt(<span class="stringliteral">"of"</span>, <span class="stringliteral">"oformat"</span>, <span class="stringliteral">"Output format (matrix form or list (x,y,z) form. Default is matrix form"</span>, <span class="stringliteral">"matrix"</span>);</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> band_opt(<span class="stringliteral">"b"</span>, <span class="stringliteral">"band"</span>, <span class="stringliteral">"band index to crop"</span>);</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> extent_opt(<span class="stringliteral">"e"</span>, <span class="stringliteral">"extent"</span>, <span class="stringliteral">"get boundary from extent from polygons in vector file"</span>, <span class="stringliteral">""</span>);</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> ulx_opt(<span class="stringliteral">"ulx"</span>, <span class="stringliteral">"ulx"</span>, <span class="stringliteral">"Upper left x value bounding box (in geocoordinates if georef is true)"</span>,0.0);</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> uly_opt(<span class="stringliteral">"uly"</span>, <span class="stringliteral">"uly"</span>, <span class="stringliteral">"Upper left y value bounding box (in geocoordinates if georef is true)"</span>,0.0);</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> lrx_opt(<span class="stringliteral">"lrx"</span>, <span class="stringliteral">"lrx"</span>, <span class="stringliteral">"Lower left x value bounding box (in geocoordinates if georef is true)"</span>,0.0);</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> lry_opt(<span class="stringliteral">"lry"</span>, <span class="stringliteral">"lry"</span>, <span class="stringliteral">"Lower left y value bounding box (in geocoordinates if georef is true)"</span>,0.0);</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> dx_opt(<span class="stringliteral">"dx"</span>, <span class="stringliteral">"dx"</span>, <span class="stringliteral">"Output resolution in x (in meter) (0.0: keep original resolution)"</span>,0.0);</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> dy_opt(<span class="stringliteral">"dy"</span>, <span class="stringliteral">"dy"</span>, <span class="stringliteral">"Output resolution in y (in meter) (0.0: keep original resolution)"</span>,0.0);</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> resample_opt(<span class="stringliteral">"r"</span>, <span class="stringliteral">"resampling-method"</span>, <span class="stringliteral">"Resampling method (near: nearest neighbour, bilinear: bi-linear interpolation)."</span>, <span class="stringliteral">"near"</span>);</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> dstnodata_opt(<span class="stringliteral">"dstnodata"</span>, <span class="stringliteral">"dstnodata"</span>, <span class="stringliteral">"nodata value for output if out of bounds."</span>, 0);</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> srcnodata_opt(<span class="stringliteral">"srcnodata"</span>, <span class="stringliteral">"srcnodata"</span>, <span class="stringliteral">"set no data value(s) for input image"</span>);</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> verbose_opt(<span class="stringliteral">"v"</span>, <span class="stringliteral">"verbose"</span>, <span class="stringliteral">"verbose (Default: 0)"</span>, 0,2);</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span> </div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>   dx_opt.setHide(1);</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>   dy_opt.setHide(1);</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>   resample_opt.setHide(1);</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>   srcnodata_opt.setHide(1);</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>   dstnodata_opt.setHide(1);</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   </div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   <span class="keywordtype">bool</span> doProcess;<span class="comment">//stop process when program was invoked with help option (-h --help)</span></div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>     doProcess=input_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     output_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     oformat_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     band_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     extent_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     ulx_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     uly_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>     lrx_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>     lry_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>     dx_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>     dy_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>     resample_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     srcnodata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>     dstnodata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     verbose_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>   }</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> predefinedString){</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>     std::cout << predefinedString << std::endl;</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>     exit(0);</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>   }</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>   <span class="keywordflow">if</span>(!doProcess){</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>     cout << endl;</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>     cout << <span class="stringliteral">"Usage: pkdumpimg -i input.txt [-o output]"</span> << endl;</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>     cout << endl;</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>     std::cout << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << std::endl;</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>     exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>   }</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span> </div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>   ofstream outputStream;</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>   <span class="keywordflow">if</span>(!output_opt.empty())</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>     outputStream.open(output_opt[0].c_str());</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>   </div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>   RESAMPLE theResample;</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>   <span class="keywordflow">if</span>(resample_opt[0]==<span class="stringliteral">"near"</span>){</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>     theResample=NEAR;</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>       cout << <span class="stringliteral">"resampling: nearest neighbour"</span> << endl;</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>   }</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(resample_opt[0]==<span class="stringliteral">"bilinear"</span>){</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>     theResample=BILINEAR;</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>       cout << <span class="stringliteral">"resampling: bilinear interpolation"</span> << endl;</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>   }</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>     std::cout << <span class="stringliteral">"Error: resampling method "</span> << resample_opt[0] << <span class="stringliteral">" not supported"</span> << std::endl;</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>     exit(1);</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>   }</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span> </div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>   <span class="comment">// ImgWriterGdal imgWriter;</span></div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>   GDALDataType theType;</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span> </div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>   <span class="keywordflow">if</span>(input_opt.empty()){</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>     std::cerr << <span class="stringliteral">"No input file provided (use option -i). Use --help for help information"</span> << std::endl;</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>     exit(0);</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>   }</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span> </div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>   <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> imgReader(input_opt[0]);</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> inodata=0;inodata<srcnodata_opt.size();++inodata)</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>     imgReader.pushNoDataValue(srcnodata_opt[inodata]);</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span> </div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>   <span class="comment">// ImgWriterGdal virtualWriter;//only for coordinate conversion (no output file defined)</span></div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>   </div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>   <span class="keywordtype">int</span> nband=imgReader.nrOfBand();</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>   <span class="comment">//get number of lines</span></div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>   <span class="keywordtype">int</span> nrow=imgReader.nrOfRow();</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>   <span class="keywordtype">int</span> ncol=imgReader.nrOfCol();</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>   <span class="keywordtype">int</span> ncropcol=0;</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>   <span class="keywordtype">int</span> ncroprow=0;</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>   <span class="keywordtype">double</span> dx=dx_opt[0];</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>   <span class="keywordtype">double</span> dy=dy_opt[0];</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>   <span class="keywordflow">if</span>(!dx||!dy){</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>     dx=imgReader.getDeltaX();</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>     dy=imgReader.getDeltaY();</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>   }</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>   <span class="comment">//bounding box of cropped image</span></div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>   <span class="keywordtype">double</span> cropulx=ulx_opt[0];</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>   <span class="keywordtype">double</span> cropuly=uly_opt[0];</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>   <span class="keywordtype">double</span> croplrx=lrx_opt[0];</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>   <span class="keywordtype">double</span> croplry=lry_opt[0];</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>   <span class="comment">//get bounding box from extentReader if defined</span></div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>   <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a> extentReader;</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>   <span class="keywordflow">if</span>(extent_opt[0]!=<span class="stringliteral">""</span>){</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iextent=0;iextent<extent_opt.size();++iextent){</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>       extentReader.open(extent_opt[iextent]);</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>       <span class="keywordflow">if</span>(!(extentReader.getExtent(ulx_opt[0],uly_opt[0],lrx_opt[0],lry_opt[0]))){</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>         cerr << <span class="stringliteral">"Error: could not get extent from "</span> << extent_opt[0] << endl;</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>         exit(1);</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>       }</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>       <span class="keywordflow">if</span>(!iextent){</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>         cropulx=ulx_opt[0];</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>         cropuly=uly_opt[0];</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>         croplry=lry_opt[0];</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>         croplrx=lrx_opt[0];</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>       }</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>         <span class="keywordflow">if</span>(ulx_opt[0]<cropulx)</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>           cropulx=ulx_opt[0];</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>         <span class="keywordflow">if</span>(uly_opt[0]>cropuly)</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>           cropuly=uly_opt[0];</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>         <span class="keywordflow">if</span>(lry_opt[0]<croplry)</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>           croplry=lry_opt[0];</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>         <span class="keywordflow">if</span>(lrx_opt[0]>croplrx)</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>           croplrx=lrx_opt[0];</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>       }</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>       extentReader.close();</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>     }</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>   }</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>   <span class="keywordtype">double</span> uli,ulj,lri,lrj;<span class="comment">//image coordinates</span></div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>   <span class="keywordtype">double</span> magicX=1,magicY=1;</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>   <span class="keywordflow">if</span>(ulx_opt[0]>=lrx_opt[0]){<span class="comment">//default bounding box: no cropping</span></div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>     uli=0;</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>     lri=imgReader.nrOfCol()-1;</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>     ulj=0;</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>     lrj=imgReader.nrOfRow()-1;</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>     ncropcol=imgReader.nrOfCol();</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>     ncroprow=imgReader.nrOfRow();</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>     imgReader.getBoundingBox(cropulx,cropuly,croplrx,croplry);</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>     imgReader.geo2image(cropulx+(magicX-1.0)*imgReader.getDeltaX(),cropuly-(magicY-1.0)*imgReader.getDeltaY(),uli,ulj);</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>     imgReader.geo2image(croplrx+(magicX-2.0)*imgReader.getDeltaX(),croplry-(magicY-2.0)*imgReader.getDeltaY(),lri,lrj);</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>     ncropcol=abs(static_cast<int>(ceil((croplrx-cropulx)/dx)));</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>     ncroprow=abs(static_cast<int>(ceil((cropuly-croplry)/dy)));</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>   }</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>     imgReader.geo2image(cropulx+(magicX-1.0)*imgReader.getDeltaX(),cropuly-(magicY-1.0)*imgReader.getDeltaY(),uli,ulj);</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>     imgReader.geo2image(croplrx+(magicX-2.0)*imgReader.getDeltaX(),croplry-(magicY-2.0)*imgReader.getDeltaY(),lri,lrj);</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>     </div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>     ncropcol=abs(static_cast<int>(ceil((croplrx-cropulx)/dx)));</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>     ncroprow=abs(static_cast<int>(ceil((cropuly-croplry)/dy)));</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>     uli=floor(uli);</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>     ulj=floor(ulj);</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>     lri=floor(lri);</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>     lrj=floor(lrj);</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>   }</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>   <span class="keywordtype">double</span> startCol=uli;</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>   <span class="keywordtype">double</span> endCol=lri;</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>   <span class="keywordtype">double</span> dcropcol=0;</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>   <span class="keywordtype">double</span> dcroprow=0;</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>   <span class="keywordtype">double</span> deltaX=imgReader.getDeltaX();</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>   <span class="keywordtype">double</span> deltaY=imgReader.getDeltaY();</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>   dcropcol=(lri-uli+1)/(dx/deltaX);</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>   dcroprow=(lrj-ulj+1)/(dy/deltaY);</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>   <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>     cout << <span class="stringliteral">"cropulx: "</span> << cropulx << endl;</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>     cout << <span class="stringliteral">"cropuly: "</span> << cropuly << endl;</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>     cout << <span class="stringliteral">"croplrx: "</span> << croplrx << endl;</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>     cout << <span class="stringliteral">"croplry: "</span> << croplry << endl;</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>     cout << <span class="stringliteral">"ncropcol: "</span> << ncropcol << endl;</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>     cout << <span class="stringliteral">"ncroprow: "</span> << ncroprow << endl;</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>     cout << <span class="stringliteral">"cropulx+ncropcol*dx: "</span> << cropulx+ncropcol*dx << endl;</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>     cout << <span class="stringliteral">"cropuly-ncroprow*dy: "</span> << cropuly-ncroprow*dy << endl;</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>     cout << <span class="stringliteral">"selected upper left column in input image: "</span> << uli << endl;</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>     cout << <span class="stringliteral">"selected upper left row of input image: "</span> << ulj << endl;</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>     cout << <span class="stringliteral">"selected lower right column in input image: "</span> << lri << endl;</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>     cout << <span class="stringliteral">"selected lower right row in input image: "</span> << lrj << endl;</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>   }</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>   <span class="keywordtype">double</span> gt[6];</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>   imgReader.getGeoTransform(gt);</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>   <span class="comment">// imgWriter.setGeoTransform(gt);</span></div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>   <span class="comment">// imgWriter.setProjection(imgReader.getProjection());</span></div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span> </div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>   <span class="keywordtype">double</span> readRow=0;</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>   <span class="keywordtype">double</span> readCol=0;</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>   <span class="keywordtype">double</span> lowerCol=0;</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>   <span class="keywordtype">double</span> upperCol=0;</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>   <span class="keywordtype">int</span> readncol=endCol-startCol+1;</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>   <span class="comment">//test</span></div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>   <span class="comment">// vector<double> readBuffer(readncol);</span></div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>   vector<double> readBuffer(readncol+1);</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>   <span class="comment">// assert(imgWriter.isGeoRef());</span></div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>   <span class="keywordflow">if</span>(band_opt.empty()){</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<imgReader.nrOfBand();++iband)</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>       band_opt.push_back(iband);</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>   }</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<band_opt.size();++iband){</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>     assert(band_opt[iband]>=0);</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>     assert(band_opt[iband]<imgReader.nrOfBand());</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<ncroprow;++irow){</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>         std::cout << irow << std::endl;</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>       <span class="keywordtype">double</span> x=0;</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>       <span class="keywordtype">double</span> y=0;</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>       <span class="comment">//convert irow to geo</span></div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>       <span class="comment">// imgWriter.image2geo(0,irow,x,y);</span></div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>       imgReader.image2geo(0,irow,x,y);</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>       <span class="comment">//lookup corresponding row for irow in this file</span></div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>       imgReader.geo2image(x,y,readCol,readRow);</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>       <span class="keywordflow">if</span>(readRow<0||readRow>=imgReader.nrOfRow()){</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>         <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>           std::cout << <span class="stringliteral">"skipping row "</span> << readRow << std::endl;</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>         <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>       }</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>         <span class="comment">//test</span></div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>         <span class="comment">// imgReader.readData(readBuffer,GDT_Float64,startCol,endCol,readRow,band_opt[0],theResample);</span></div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>         <span class="keywordflow">if</span>(endCol<imgReader.nrOfCol()-1)</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>           imgReader.readData(readBuffer,GDT_Float64,startCol,endCol+1,readRow,band_opt[iband],theResample);</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>           imgReader.readData(readBuffer,GDT_Float64,startCol,endCol,readRow,band_opt[iband],theResample);</div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ib=0;ib<ncropcol;++ib){</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>           <span class="comment">// assert(imgWriter.image2geo(ib,irow,x,y));</span></div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>           assert(imgReader.image2geo(ib,irow,x,y));</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>           <span class="comment">//lookup corresponding row for irow in this file</span></div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>           imgReader.geo2image(x,y,readCol,readRow);</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>           <span class="keywordflow">if</span>(readCol<0||readCol>=imgReader.nrOfCol()){</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>             <span class="keywordflow">if</span>(oformat_opt[0]==<span class="stringliteral">"matrix"</span>){</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>               <span class="keywordflow">if</span>(output_opt[0].empty())</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>                 std::cout << dstnodata_opt[0] << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>               <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>                 outputStream << dstnodata_opt[0] << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>             }</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>             <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>               <span class="keywordflow">if</span>(output_opt[0].empty())</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>                 std::cout << x << <span class="stringliteral">" "</span> << y << <span class="stringliteral">" "</span> << dstnodata_opt[0] << endl;</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>               <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>                 outputStream << x << <span class="stringliteral">" "</span> << y << <span class="stringliteral">" "</span> << dstnodata_opt[0] << endl;</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>             }</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>           }</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>           <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>             <span class="keywordflow">switch</span>(theResample){</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>             <span class="keywordflow">case</span>(BILINEAR):</div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>               lowerCol=readCol-0.5;</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>               lowerCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(lowerCol);</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>               upperCol=readCol+0.5;</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>               upperCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(upperCol);</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>               <span class="keywordflow">if</span>(lowerCol<0)</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>                 lowerCol=0;</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>               <span class="keywordflow">if</span>(upperCol>=imgReader.nrOfCol())</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>                 upperCol=imgReader.nrOfCol()-1;</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>               <span class="keywordflow">if</span>(oformat_opt[0]==<span class="stringliteral">"matrix"</span>){</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>                 <span class="keywordflow">if</span>(output_opt[0].empty())</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>                   std::cout << (readCol-0.5-lowerCol)*readBuffer[upperCol-startCol]+(1-readCol+0.5+lowerCol)*readBuffer[lowerCol-startCol] << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>                 <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>                   outputStream << (readCol-0.5-lowerCol)*readBuffer[upperCol-startCol]+(1-readCol+0.5+lowerCol)*readBuffer[lowerCol-startCol] << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>               }</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>               <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!imgReader.isNoData(readBuffer[upperCol-startCol])&&!imgReader.isNoData(readBuffer[lowerCol-startCol])){</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>                 <span class="keywordflow">if</span>(output_opt[0].empty())</div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>                   std::cout << x << <span class="stringliteral">" "</span> << y << <span class="stringliteral">" "</span> << (readCol-0.5-lowerCol)*readBuffer[upperCol-startCol]+(1-readCol+0.5+lowerCol)*readBuffer[lowerCol-startCol] << <span class="stringliteral">" "</span> << endl;</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>                 <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>                   outputStream << x << <span class="stringliteral">" "</span> << y << <span class="stringliteral">" "</span> << (readCol-0.5-lowerCol)*readBuffer[upperCol-startCol]+(1-readCol+0.5+lowerCol)*readBuffer[lowerCol-startCol] << <span class="stringliteral">" "</span> << endl;</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>               }</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>             <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>               readCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(readCol);</div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>               readCol-=startCol;<span class="comment">//we only start reading from startCol</span></div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>               assert(readCol>=0);</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>               <span class="keywordflow">if</span>(readCol>=readBuffer.size())</div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>                 std::cout << <span class="stringliteral">"Error: "</span> << readCol << <span class="stringliteral">" >= "</span> << readBuffer.size() << std::endl;</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>               assert(readCol<readBuffer.size());</div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>               <span class="keywordflow">if</span>(oformat_opt[0]==<span class="stringliteral">"matrix"</span>){</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>                 <span class="keywordflow">if</span>(output_opt[0].empty())</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>                   std::cout << readBuffer[readCol] << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>                 <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>                   outputStream << readBuffer[readCol] << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>               }</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>               <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!imgReader.isNoData(readBuffer[readCol])){</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>                 <span class="keywordflow">if</span>(output_opt[0].empty())</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>                   std::cout << x << <span class="stringliteral">" "</span> << y << <span class="stringliteral">" "</span> << readBuffer[readCol] << std::endl;</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>                 <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>                   outputStream << x << <span class="stringliteral">" "</span> << y << <span class="stringliteral">" "</span> << readBuffer[readCol] << std::endl;</div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>               }</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>             }</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>           }</div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>         }</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>       }</div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>         cout << errorstring << endl;</div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>         exit(1);</div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>       }</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>       <span class="keywordflow">if</span>(oformat_opt[0]==<span class="stringliteral">"matrix"</span>){</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>         <span class="keywordflow">if</span>(output_opt[0].empty())</div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>           std::cout << std::endl;</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>           outputStream << std::endl;</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>       }</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>     }</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>   }</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>   <span class="keywordflow">if</span>(extent_opt[0]!=<span class="stringliteral">""</span>){</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>     extentReader.close();</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>   }</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>   imgReader.close();</div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>   <span class="keywordflow">if</span>(!output_opt[0].empty())</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>     outputStream.close();</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span> }</div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-<div class="ttc" id="classImgReaderOgr_html"><div class="ttname"><a href="classImgReaderOgr.html">ImgReaderOgr</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderOgr_8h_source.html#l00035">ImgReaderOgr.h:35</a></div></div>
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkdumpogr.html b/doc/html/pkdumpogr.html
deleted file mode 100644
index 6a7578b..0000000
--- a/doc/html/pkdumpogr.html
+++ /dev/null
@@ -1,99 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: pkdumpogr</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkdumpogr </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><p>dump ogr file to text file or standard output </p>
-<h2>SYNOPSIS</h2>
-<p><code> Usage: pkdumpogr -i input [-o output] </code></p>
-<p><code></code></p>
-<p><code> Options: [-ln layername] [-n attribute]* [-pos] [-transpose]</code></p>
-<p><code> Advanced options:</code></p>
-<p><code></code></p>
-<h1><a class="anchor" id="pkdumpogr_description"></a>
-Description</h1>
-<p>The utility pkdumpogr dumps the content of a vector dataset to (standard) output (screen or filename). The default is to dump all the attributes. Individual attributes can be selected with the option -n. The X and Y positions can be printed with the option -pos. Use the option -transpose to transpose the output (only in combination with the option -n attribute).</p>
-<h1><a class="anchor" id="pkdumpogr_options"></a>
-Options</h1>
-<ul>
-<li>use either <code>-short</code> or <code>--long</code> options (both <code>--long=value</code> and <code>--long value</code> are supported)</li>
-<li>short option <code>-h</code> shows basic options only, long option <code>--help</code> shows all options <table class="doxtable">
-<tr>
-<th>short</th><th>long</th><th>type</th><th>default</th><th>description  </th></tr>
-<tr>
-<td>i </td><td>input </td><td>std::string </td><td></td><td>Input shape file </td></tr>
-<tr>
-<td>ln </td><td>lname </td><td>std::string </td><td></td><td>Layer name(s) in sample (leave empty to select all) </td></tr>
-<tr>
-<td>o </td><td>output </td><td>std::string </td><td></td><td>Output ASCII file </td></tr>
-<tr>
-<td>n </td><td>name </td><td>std::string </td><td>ALL </td><td>names of the attributes to select. Each attribute is stored in a separate band. Default is ALL: write all attributes </td></tr>
-<tr>
-<td>pos </td><td>pos </td><td>bool </td><td>false </td><td>include position (x and y) </td></tr>
-<tr>
-<td>t </td><td>transpose </td><td>bool </td><td>false </td><td>transpose output (does not work for -n ALL </td></tr>
-<tr>
-<td>fs </td><td>fs </td><td>char </td><td></td><td>field separator. </td></tr>
-</table>
-Usage: pkdumpogr -i input. [-o output]</li>
-</ul>
-<h1>Examples </h1>
-<p>Some examples how to use pkdumpogr can be found <a class="el" href="md_examples_pkdumpogr.html#examples_pkdumpogr">here</a> </p>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkdumpogr_8cc_source.html b/doc/html/pkdumpogr_8cc_source.html
deleted file mode 100644
index 8c33995..0000000
--- a/doc/html/pkdumpogr_8cc_source.html
+++ /dev/null
@@ -1,307 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/pkdumpogr.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkdumpogr.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pkdumpogr.cc: dump ogr file to text file or standard output</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <math.h></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <string></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <fstream></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <assert.h></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "imageclasses/ImgReaderOgr.h"</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "pkdumpogr.h"</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> </div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="comment">/******************************************************************************/</span></div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span> </div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span> {</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> input_opt(<span class="stringliteral">"i"</span>, <span class="stringliteral">"input"</span>, <span class="stringliteral">"Input shape file"</span>);</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> layer_opt(<span class="stringliteral">"ln"</span>, <span class="stringliteral">"lname"</span>, <span class="stringliteral">"Layer name(s) in sample (leave empty to select all)"</span>);</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> output_opt(<span class="stringliteral">"o"</span>, <span class="stringliteral">"output"</span>, <span class="stringliteral">"Output ASCII file"</span>);</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> attribute_opt(<span class="stringliteral">"n"</span>, <span class="stringliteral">"name"</span>, <span class="stringliteral">"names of the attributes to select. Each attribute is stored in a separate band. Default is ALL: write all attributes"</span>, <span class="stringliteral">"ALL"</span>);</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> pos_opt(<span class="stringliteral">"pos"</span>,<span class="stringliteral">"pos"</span>,<span class="stringliteral">"include position (x and y)"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> transpose_opt(<span class="stringliteral">"t"</span>,<span class="stringliteral">"transpose"</span>,<span class="stringliteral">"transpose output (does not work for -n ALL "</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>   <a class="code" href="classOptionpk.html">Optionpk<char></a> fs_opt(<span class="stringliteral">"fs"</span>,<span class="stringliteral">"fs"</span>,<span class="stringliteral">"field separator."</span>,<span class="charliteral">' '</span>);</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> verbose_opt(<span class="stringliteral">"v"</span>, <span class="stringliteral">"verbose"</span>, <span class="stringliteral">"verbose (Default: 0)"</span>, 0,2);</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span> </div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   fs_opt.setHide(1);</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>   verbose_opt.setHide(2);</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span> </div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   <span class="keywordtype">bool</span> doProcess;<span class="comment">//stop process when program was invoked with help option (-h --help)</span></div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>     doProcess=input_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     layer_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     output_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     attribute_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     pos_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>     transpose_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>     fs_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>     verbose_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>   }</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> predefinedString){</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     std::cout << predefinedString << std::endl;</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     exit(0);</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>   }</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>   <span class="keywordflow">if</span>(!doProcess){</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     cout << endl;</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     cout << <span class="stringliteral">"Usage: pkdumpogr -i input [-o output]"</span> << endl;</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     cout << endl;</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     std::cout << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << std::endl;</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>   }</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span> </div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   <span class="keywordflow">if</span>(input_opt.empty()){</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>     std::cerr << <span class="stringliteral">"No input file provided (use option -i). Use --help for help information"</span> << std::endl;</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>     exit(0);</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>   }</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span> </div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a> inputReader;</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     inputReader.open(input_opt[0]);</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>   }</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>     cerr << errorstring << endl;</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>   }</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>   ofstream outputFile;</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   <span class="keywordflow">if</span>(output_opt.size())</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>     outputFile.open(output_opt[0].c_str(),ios::out);</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span> </div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>   inputReader.setFieldSeparator(fs_opt[0]);</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span> </div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>   <span class="comment">//support multiple layers</span></div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>   <span class="keywordtype">int</span> nlayerRead=inputReader.getDataSource()->GetLayerCount();</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>     cout << <span class="stringliteral">"number of layers: "</span> << nlayerRead << endl;</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>       </div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ilayer=0;ilayer<nlayerRead;++ilayer){</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>     OGRLayer *readLayer=inputReader.getLayer(ilayer);</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>     <span class="keywordtype">string</span> currentLayername=readLayer->GetName();</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>     <span class="keywordflow">if</span>(layer_opt.size())</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>       <span class="keywordflow">if</span>(find(layer_opt.begin(),layer_opt.end(),currentLayername)==layer_opt.end())</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>       cout << <span class="stringliteral">"processing layer "</span> << currentLayername << endl;</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>     <span class="comment">// if(layer_opt.size())</span></div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>     <span class="comment">//   cout << " --lname " << currentLayername << endl;</span></div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>       </div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>     <span class="keywordflow">if</span>(attribute_opt[0]==<span class="stringliteral">"ALL"</span>){</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>       attribute_opt.clear();</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>       OGRFeatureDefn *poFDefn = readLayer->GetLayerDefn();</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iField=0;iField<poFDefn->GetFieldCount();++iField){</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>     OGRFieldDefn *poFieldDefn = poFDefn->GetFieldDefn(iField);</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>     std::string fieldname=poFieldDefn->GetNameRef();</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>     attribute_opt.push_back(fieldname);</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>       }</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>     }</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>     <span class="comment">// if(attribute_opt[0]!="ALL"){</span></div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>       vector<double> xvector;</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>       vector<double> yvector;</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>       <span class="keywordflow">if</span>(inputReader.getGeometryType()==wkbPoint)</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>     inputReader.readXY(xvector,yvector);</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>       <a class="code" href="classVector2d.html">Vector2d<std::string></a> theData(attribute_opt.size());</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ifield=0;ifield<attribute_opt.size();++ifield){</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>       cout << <span class="stringliteral">"field: "</span> << ifield << endl;</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>     theData[ifield].clear();</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>     inputReader.readData(theData[ifield],OFTReal,attribute_opt[ifield],ilayer,verbose_opt[0]);</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>       }</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>       <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>     std::cout << <span class="stringliteral">"number of fields: "</span> << theData.size() << std::endl;</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>     std::cout << <span class="stringliteral">"number of samples: "</span> << theData[0].size() << std::endl;</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>       }</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>       <span class="keywordflow">if</span>(transpose_opt[0]){</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>     <span class="keywordflow">if</span>(pos_opt[0]&&(inputReader.getGeometryType()==wkbPoint)){</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>       <span class="keywordflow">if</span>(output_opt.size()){</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>         outputFile << <span class="stringliteral">"X"</span> << fs_opt[0];</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<xvector.size();++isample){</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>           outputFile << xvector[isample];</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>           <span class="keywordflow">if</span>(isample<xvector.size()-1)</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>         outputFile << fs_opt[0];</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>         outputFile << std::endl;</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>         }</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>         outputFile << <span class="stringliteral">"Y"</span> << fs_opt[0];</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<yvector.size();++isample){</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>           outputFile << yvector[isample];</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>           <span class="keywordflow">if</span>(isample<yvector.size()-1)</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>         outputFile << fs_opt[0];</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>         outputFile << std::endl;</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>         }</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>       }</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>         std::cout << <span class="stringliteral">"X"</span> << fs_opt[0];</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<xvector.size();++isample){</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>           std::cout << xvector[isample];</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>           <span class="keywordflow">if</span>(isample<xvector.size()-1)</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>         std::cout << fs_opt[0];</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>         std::cout << std::endl;</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>         }</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>         std::cout << <span class="stringliteral">"Y"</span> << fs_opt[0];</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<yvector.size();++isample){</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>           std::cout << yvector[isample];</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>           <span class="keywordflow">if</span>(isample<yvector.size()-1)</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>         std::cout << fs_opt[0];</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>         std::cout << std::endl;</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>         }</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>       }</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>     }</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ifield=0;ifield<theData.size();++ifield){</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>       <span class="keywordflow">if</span>(output_opt.size()){</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>         outputFile << ifield << fs_opt[0];</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<theData[0].size();++isample){</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>           outputFile << theData[ifield][isample];</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>           <span class="keywordflow">if</span>(isample<theData[0].size()-1)</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>         outputFile << fs_opt[0];</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>         outputFile << std::endl;</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>         }</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>       }</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>         std::cout << ifield << fs_opt[0];</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<theData[0].size();++isample){</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>           std::cout << theData[ifield][isample];</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>           <span class="keywordflow">if</span>(isample<theData[0].size()-1)</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>         std::cout << fs_opt[0];</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>         std::cout << std::endl;</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>         }</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>       }</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>     }</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>       }</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<theData[0].size();++isample){</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>       <span class="keywordflow">if</span>(output_opt.size()){</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>         outputFile << isample << fs_opt[0];</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>         <span class="keywordflow">if</span>(pos_opt[0])</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>           outputFile << xvector[isample] << fs_opt[0] << yvector[isample] << fs_opt[0];</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ifield=0;ifield<theData.size();++ifield){</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>           outputFile << theData[ifield][isample];</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>           <span class="keywordflow">if</span>(ifield<theData.size()-1)</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>         outputFile << fs_opt[0];</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>         outputFile << std::endl;</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>         }</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>       }</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>         std::cout << isample << fs_opt[0];</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>         <span class="keywordflow">if</span>(pos_opt[0])</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>           std::cout  << xvector[isample] << fs_opt[0] << yvector[isample] << fs_opt[0];</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ifield=0;ifield<theData.size();++ifield){</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>           std::cout << theData[ifield][isample];</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>           <span class="keywordflow">if</span>(ifield<theData.size()-1)</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>         std::cout << fs_opt[0];</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>         std::cout << std::endl;</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>         }</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>       }</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>     }</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>       }</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>       <span class="keywordflow">if</span>(output_opt.size())</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>     outputFile.close();</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>     <span class="comment">// }</span></div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>     <span class="comment">// else{</span></div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>     <span class="comment">//   if(output_opt.size()){</span></div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>     <span class="comment">//  ofstream outputFile(output_opt[0].c_str(),ios::out);</span></div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>     <span class="comment">//  outputFile << inputReader;</span></div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>     <span class="comment">//  outputFile.close();</span></div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>     <span class="comment">//   }</span></div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>     <span class="comment">//   else</span></div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>     <span class="comment">//  std::cout << inputReader;</span></div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>     <span class="comment">// }</span></div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>   }</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>   inputReader.close();</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span> }</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span> </div>
-<div class="ttc" id="classVector2d_html"><div class="ttname"><a href="classVector2d.html">Vector2d</a></div><div class="ttdef"><b>Definition:</b> <a href="Vector2d_8h_source.html#l00031">Vector2d.h:31</a></div></div>
-<div class="ttc" id="classImgReaderOgr_html"><div class="ttname"><a href="classImgReaderOgr.html">ImgReaderOgr</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderOgr_8h_source.html#l00035">ImgReaderOgr.h:35</a></div></div>
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkdumpogr_8h_source.html b/doc/html/pkdumpogr_8h_source.html
deleted file mode 100644
index bef67fc..0000000
--- a/doc/html/pkdumpogr_8h_source.html
+++ /dev/null
@@ -1,205 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/pkdumpogr.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkdumpogr.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pkdumpogr.h: dump ogr file to text file or standard output</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <map></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "base/Vector2d.h"</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "imageclasses/ImgReaderOgr.h"</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> </div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#ifndef _PKDUMPOGR_H_</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor"></span><span class="preprocessor">#define _PKDUMPOGR_H_</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> </div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> readDataImageShape(<span class="keyword">const</span> <span class="keywordtype">string</span> &filename,</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>                                                      map<<span class="keywordtype">int</span>,<a class="code" href="classVector2d.html">Vector2d<T></a> > &mapPixels, <span class="comment">//[classNr][pixelNr][bandNr],</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span>                                                      vector<string>& fields,</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>                                                      <span class="keywordtype">double</span> start,</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>                                                      <span class="keywordtype">double</span> end,</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>                                                      <span class="keyword">const</span> <span class="keywordtype">string</span>& label,</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>                                                      <span class="keyword">const</span> <span class="keywordtype">string</span>& query=<span class="stringliteral">""</span>,</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>                                                      <span class="keywordtype">int</span> verbose=<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> readDataImageShape(<span class="keyword">const</span> <span class="keywordtype">string</span> &filename,</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>                                                      map<<span class="keywordtype">int</span>,<a class="code" href="classVector2d.html">Vector2d<T></a> > &mapPixels, <span class="comment">//[classNr][pixelNr][bandNr],</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>                                                      vector<string>& fields,</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>                                                      <span class="keywordtype">double</span> start,</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>                                                      <span class="keywordtype">double</span> end,</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>                                                      <span class="keyword">const</span> <span class="keywordtype">string</span>& label,</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>                                                      <span class="keyword">const</span> <span class="keywordtype">string</span>& query,</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>                                                      <span class="keywordtype">int</span> verbose)</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span> {</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>   mapPixels.clear();</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>   <span class="keywordtype">int</span> nsample=0;</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>   <span class="keywordtype">int</span> totalSamples=0;  </div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>   <span class="keywordtype">int</span> nband=0;</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     cout << <span class="stringliteral">"reading shape file "</span> << filename  << endl;</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>   <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a> imgReaderShape;</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     imgReaderShape.open(filename);</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     <span class="keywordtype">bool</span> queryFound=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     <span class="comment">//only retain bands in fields</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     imgReaderShape.getFields(fields);</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     vector<string>::iterator fit=fields.begin();</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>       cout << <span class="stringliteral">"reading fields: "</span>;</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     <span class="keywordflow">while</span>(fit!=fields.end()){</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>       <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>         cout << *fit << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>       <span class="keywordtype">size_t</span> pos=(*fit).find_first_not_of(<span class="stringliteral">"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_ "</span>);</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>       <span class="keywordflow">if</span>(pos==string::npos){</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>         <span class="keywordflow">if</span>(query!=<span class="stringliteral">""</span>){</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>           <span class="keywordflow">if</span>((*fit).find(query)!=string::npos)</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>             queryFound=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>         }</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>         fields.erase(fit);</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>       }</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>         <span class="keywordtype">string</span> fieldname=(*fit).substr(pos);</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>           <span class="keywordtype">int</span> iband=atoi(fieldname.c_str());</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>           <span class="keywordflow">if</span>((start||end)&&(iband<start||iband>end))</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>             fields.erase(fit);</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>             ++fit;</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>       }</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     }</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>       cout << endl;</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>     <span class="keywordflow">if</span>(verbose){</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>       cout << <span class="stringliteral">"fields:"</span>;</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>       <span class="keywordflow">for</span>(vector<string>::iterator fit=fields.begin();fit!=fields.end();++fit)</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>         cout << <span class="stringliteral">" "</span> << *fit;</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>       cout << endl;</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     }</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     <span class="keywordflow">if</span>(!nband){</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>       <span class="keywordflow">if</span>(queryFound){</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>         ostringstream qs;</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>         qs << <span class="stringliteral">"select * from "</span> << imgReaderShape.getLayerName() << <span class="stringliteral">" where "</span> << query << <span class="stringliteral">"=1"</span>;</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>         <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>           cout << <span class="stringliteral">"reading with sql: "</span> << qs.str() << endl;</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>         nband=imgReaderShape.readSql(mapPixels,OFTReal,fields,label,qs.str(),NULL,0,<span class="keyword">true</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>       }</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>         <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>           cout << <span class="stringliteral">"reading data"</span> << endl;</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>         nband=imgReaderShape.readData(mapPixels,OFTReal,fields,label,0,<span class="keyword">true</span>,verbose==2);</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>       }</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     }</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>       <span class="keywordflow">if</span>(queryFound){</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>         ostringstream qs;</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>         qs << <span class="stringliteral">"select * from "</span> << imgReaderShape.getLayerName() << <span class="stringliteral">" where "</span> << query << <span class="stringliteral">"=1"</span>;</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>         <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>           cout << <span class="stringliteral">"reading with sql: "</span> << qs.str() << endl;</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>         assert(nband==imgReaderShape.readSql(mapPixels,OFTReal,fields,label,qs.str(),NULL,0,<span class="keyword">true</span>,<span class="keyword">false</span>));</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>       }</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>       <span class="keywordflow">else</span>        </div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>         assert(nband==imgReaderShape.readData(mapPixels,OFTReal,fields,label,0,<span class="keyword">true</span>,<span class="keyword">false</span>));</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     }</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>   }</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> e){</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     ostringstream estr;</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>     estr << e << <span class="stringliteral">" "</span> << filename;</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>     <span class="keywordflow">throw</span>(estr.str());</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>   }</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   nsample=imgReaderShape.getFeatureCount();</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>   totalSamples+=nsample;</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>     cout << <span class="stringliteral">": "</span> << nsample << <span class="stringliteral">" samples read with "</span> << nband << <span class="stringliteral">" bands"</span> << endl;</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>   imgReaderShape.close();</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>   <span class="keywordflow">if</span>(verbose)</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>     cout << <span class="stringliteral">"total number of samples read "</span> << totalSamples << endl;</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>   <span class="keywordflow">return</span> totalSamples;</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span> }</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span> <span class="preprocessor">#endif //_PKDUMPOGR_H_</span></div>
-<div class="ttc" id="classVector2d_html"><div class="ttname"><a href="classVector2d.html">Vector2d</a></div><div class="ttdef"><b>Definition:</b> <a href="Vector2d_8h_source.html#l00031">Vector2d.h:31</a></div></div>
-<div class="ttc" id="classImgReaderOgr_html"><div class="ttname"><a href="classImgReaderOgr.html">ImgReaderOgr</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderOgr_8h_source.html#l00035">ImgReaderOgr.h:35</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkeditogr_8cc_source.html b/doc/html/pkeditogr_8cc_source.html
deleted file mode 100644
index 6ce7c4b..0000000
--- a/doc/html/pkeditogr_8cc_source.html
+++ /dev/null
@@ -1,361 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/not_used/pkeditogr.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li><li class="navelem"><a class="el" href="dir_e28b2035b152bb51229fe7a0fca4e376.html">not_used</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkeditogr.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pkeditogr.cc: program to edit (rename fields) ogr fil</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <assert.h></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <map></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "imageclasses/ImgReaderOgr.h"</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "imageclasses/ImgWriterOgr.h"</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "imageclasses/ImgReaderGdal.h"</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "imageclasses/ImgWriterGdal.h"</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> </div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> </div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> {</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> input_opt(<span class="stringliteral">"i"</span>, <span class="stringliteral">"input"</span>, <span class="stringliteral">"Input vector file"</span>);</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> output_opt(<span class="stringliteral">"o"</span>, <span class="stringliteral">"output"</span>, <span class="stringliteral">"Output vector file"</span>);</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> ogrformat_opt(<span class="stringliteral">"f"</span>, <span class="stringliteral">"f"</span>, <span class="stringliteral">"Output OGR file format"</span>,<span class="stringliteral">"ESRI Shapefile"</span>);</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> selectField_opt(<span class="stringliteral">"select"</span>, <span class="stringliteral">"select"</span>, <span class="stringliteral">"select field (combined with like opt)"</span>);</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   <span class="comment">//selectField can also be done via ogr2ogr using the -select option</span></div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> like_opt(<span class="stringliteral">"like"</span>, <span class="stringliteral">"like"</span>, <span class="stringliteral">"substring(s) to be found in select field. If multiple substrings are provided, feature will be selected if one of them is found (stringent option must be false)"</span>);</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> stringent_opt(<span class="stringliteral">"st"</span>, <span class="stringliteral">"stringent"</span>, <span class="stringliteral">"string in like option must exactly match to select feature)"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>   <span class="comment">// Optionpk<string> field_opt("as_field", "_field", "output field names (number must exactly match input fields)");</span></div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   <span class="comment">//renaming fields can also be done via ogr2ogr using the -sql option:</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>   <span class="comment">//ogr2ogr outdataset indataset -sql "SELECT src_field1 AS dst_field1, src_field2 AS dst_field2 FROM sourcelayer"</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   <a class="code" href="classOptionpk.html">Optionpk<long int></a> setfeature_opt(<span class="stringliteral">"sf"</span>, <span class="stringliteral">"sf"</span>, <span class="stringliteral">"id of feature(s) to set (start from 0)"</span>);</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> setname_opt(<span class="stringliteral">"sn"</span>, <span class="stringliteral">"sn"</span>, <span class="stringliteral">"name(s) of field(s) to set"</span>);</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> setvalue_opt(<span class="stringliteral">"sv"</span>, <span class="stringliteral">"sv"</span>, <span class="stringliteral">"value(s) of field(s) to set"</span>);</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> addname_opt(<span class="stringliteral">"an"</span>, <span class="stringliteral">"an"</span>, <span class="stringliteral">"name(s) of field(s) to add (number must exactly match field types)"</span>);</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> addtype_opt(<span class="stringliteral">"at"</span>, <span class="stringliteral">"at"</span>, <span class="stringliteral">"type(s) of field(s) to add (number must exactly match fieldnames to add"</span>, <span class="stringliteral">"Real"</span>);</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> addvalue_opt(<span class="stringliteral">"av"</span>, <span class="stringliteral">"av"</span>, <span class="stringliteral">"value(s) of field(s) to add"</span>);</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> verbose_opt(<span class="stringliteral">"v"</span>, <span class="stringliteral">"verbose"</span>, <span class="stringliteral">"verbose"</span>, 0);</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span> </div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>   <span class="keywordtype">bool</span> doProcess;<span class="comment">//stop process when program was invoked with help option (-h --help)</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     doProcess=input_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     output_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     ogrformat_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     selectField_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     like_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     stringent_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     <span class="comment">// field_opt.retrieveOption(argc,argv);</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     addname_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     addtype_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     addvalue_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     setfeature_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     setname_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     setvalue_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     verbose_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>   }</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> predefinedString){</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     std::cout << predefinedString << std::endl;</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     exit(0);</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>   }</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>   <span class="keywordflow">if</span>(!doProcess){</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>     std::cout << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << std::endl;</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>     exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>   }</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>   <span class="keywordflow">if</span>(input_opt.empty()){</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>     std::cerr << <span class="stringliteral">"No input file provided (use option -i). Use --help for help information"</span>;</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>       exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>   }</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>   <span class="keywordflow">if</span>(output_opt.empty()){</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>     std::cerr << <span class="stringliteral">"No output file provided (use option -o). Use --help for help information"</span>;</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>       exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>   }</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     cout << <span class="stringliteral">"opening "</span> << input_opt[0] << <span class="stringliteral">" for reading "</span> << endl;</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>   <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a> ogrReader(input_opt[0]);</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>     cout << <span class="stringliteral">"opening "</span> << output_opt[0] << <span class="stringliteral">" for writing "</span> << endl;</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span> </div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>   OGRFieldType fieldType[addtype_opt.size()];</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>   <span class="keywordtype">int</span> ogr_typecount=11;<span class="comment">//hard coded for now!</span></div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> it=0;it<addtype_opt.size();++it){</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iType = 0; iType < ogr_typecount; ++iType){</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>       <span class="keywordflow">if</span>( OGRFieldDefn::GetFieldTypeName((OGRFieldType)iType) != NULL</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>           && EQUAL(OGRFieldDefn::GetFieldTypeName((OGRFieldType)iType),</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>                    addtype_opt[it].c_str()))</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>         fieldType[it]=(OGRFieldType) iType;</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     }</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>       std::cout << std::endl << <span class="stringliteral">"field type is: "</span> << OGRFieldDefn::GetFieldTypeName(fieldType[it]) << std::endl;</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>   }</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span> </div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>   <span class="comment">//start reading features from the layer</span></div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>   <span class="comment">// if(field_opt.size())</span></div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>   <span class="comment">//   assert(field_opt.size()==ogrReader.getFieldCount());</span></div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> ifeature=0;</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     cout << <span class="stringliteral">"going through features"</span> << endl << flush;</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span> </div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   <a class="code" href="classImgWriterOgr.html">ImgWriterOgr</a> ogrWriter(output_opt[0],ogrformat_opt[0]);</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span> </div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>   <span class="comment">//support multiple layers</span></div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>   <span class="keywordtype">int</span> nlayer=ogrReader.getLayerCount();</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     std::cout << <span class="stringliteral">"number of layers: "</span> << nlayer << endl;</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>       </div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ilayer=0;ilayer<nlayer;++ilayer){</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     OGRLayer *readLayer=ogrReader.getLayer(ilayer);</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>       cout << <span class="stringliteral">"reset reading"</span> << endl;</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>     readLayer->ResetReading();</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span> </div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>     OGRLayer *writeLayer=ogrWriter.createLayer(output_opt[0],ogrReader.getProjection(),ogrReader.getGeometryType(ilayer),NULL);</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>     std::vector<OGRFieldDefn*> readFields;</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     std::vector<OGRFieldDefn*> writeFields;</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>     ogrReader.getFields(readFields,ilayer);</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     writeFields=readFields;</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ifield=0;ifield<readFields.size();++ifield){</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>     <span class="comment">// if(field_opt.size()>ifield)</span></div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>     <span class="comment">//   writeFields[ifield]->SetName(field_opt[ifield].c_str());</span></div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>       std::cout << readFields[ifield]->GetNameRef() << <span class="stringliteral">" -> "</span> << writeFields[ifield]->GetNameRef() << std::endl;</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>     <span class="keywordflow">if</span>(writeLayer->CreateField(writeFields[ifield]) != OGRERR_NONE ){</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>       ostringstream es;</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>       <span class="comment">// if(field_opt.size()>ifield)</span></div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>       <span class="comment">//   es << "Creating field " << field_opt[ifield] << " failed";</span></div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>       <span class="comment">// else</span></div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>       es << <span class="stringliteral">"Creating field "</span> << readFields[ifield] << <span class="stringliteral">" failed"</span>;</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>       <span class="keywordtype">string</span> errorString=es.str();</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>       <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>     }</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>       }</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>     }</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>     <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorString){</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>       std::cerr << errorString << std::endl;</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>       exit(1);</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>     }</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>       std::cout << <span class="stringliteral">"add "</span> << addname_opt.size() << <span class="stringliteral">" fields"</span> << std::endl;</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>     <span class="keywordflow">if</span>(addname_opt.size()){</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>       assert(addname_opt.size()==addtype_opt.size());</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>       <span class="keywordflow">while</span>(addvalue_opt.size()<addname_opt.size())</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>     addvalue_opt.push_back(addvalue_opt.back());</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>     }</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iname=0;iname<addname_opt.size();++iname){</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>     std::cout << addname_opt[iname] << <span class="stringliteral">" "</span> << std::endl;</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>       ogrWriter.createField(addname_opt[iname],fieldType[iname]);</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>     }</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>     <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>       std::cout << std::endl;</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>       std::cout << addname_opt.size() << <span class="stringliteral">" fields created"</span> << std::endl;</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>     }</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>     <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>     <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>     GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>     <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>     OGRFeature *poFeature;</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>     <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> nfeature=ogrReader.getFeatureCount(ilayer);</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>     <span class="keywordflow">while</span>((poFeature = ogrReader.getLayer(ilayer)->GetNextFeature()) != NULL ){</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>     std::cout << <span class="stringliteral">"feature "</span> << ifeature << std::endl;</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>       ++ifeature;</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>       <span class="keywordtype">bool</span> doSelect;</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>       <span class="keywordflow">if</span>(like_opt.empty())</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>     doSelect=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>     assert(selectField_opt.size());</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>     <span class="keywordtype">int</span> fieldIndex=poFeature->GetFieldIndex(selectField_opt[0].c_str());</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>     <span class="keywordtype">string</span> fieldValue=poFeature->GetFieldAsString(fieldIndex);</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>     <span class="keywordflow">if</span>(stringent_opt[0]){</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>       <span class="keywordflow">if</span>(fieldValue==like_opt[0])</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>         doSelect=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>         doSelect=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>     }</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>       doSelect=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ilike=0;ilike<like_opt.size();++ilike){</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>         <span class="keywordflow">if</span>(fieldValue.find(like_opt[ilike])!=std::string::npos){</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>           <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>         std::cout << <span class="stringliteral">"found "</span> << like_opt[ilike] << <span class="stringliteral">" in "</span> << fieldValue << std::endl;</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>           doSelect=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>         }</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>       }</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>     }</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>       }</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>       <span class="keywordflow">if</span>(!doSelect){</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>       std::cout << <span class="stringliteral">"string not found in feature "</span> << ifeature << std::endl;</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>       }</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>       OGRFeature *poDstFeature = NULL;</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>       poDstFeature=ogrWriter.createFeature(ilayer);</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>       <span class="keywordflow">if</span>( poDstFeature->SetFrom( poFeature, TRUE ) != OGRERR_NONE ){</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>     <span class="keyword">const</span> <span class="keywordtype">char</span>* fmt;</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>     <span class="keywordtype">string</span> errorString=<span class="stringliteral">"Unable to translate feature %d from layer %s.\n"</span>;</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>     fmt=errorString.c_str();</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>     CPLError( CE_Failure, CPLE_AppDefined,</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>           fmt,</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>           poFeature->GetFID(), ogrWriter.getLayerName().c_str() );</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>     OGRFeature::DestroyFeature( poFeature );</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>     OGRFeature::DestroyFeature( poDstFeature );</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>       }</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>       <span class="keywordtype">long</span> <span class="keywordtype">int</span> fid=poFeature->GetFID();</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>       poDstFeature->SetFID( poFeature->GetFID() );</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ifeature=0;ifeature<setfeature_opt.size();++ifeature){</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>     <span class="keywordflow">if</span>(fid==setfeature_opt[ifeature]){</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>       <span class="keywordflow">switch</span>(poDstFeature->GetFieldDefnRef(fid)->GetType()){</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>       <span class="keywordflow">case</span>(OFTReal):</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>         poDstFeature->SetField(setname_opt[ifeature].c_str(),string2type<float>(setvalue_opt[ifeature]));</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>       <span class="keywordflow">case</span>(OFTInteger):</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>         poDstFeature->SetField(setname_opt[ifeature].c_str(),string2type<int>(setvalue_opt[ifeature]));</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>       <span class="keywordflow">case</span>(OFTString):</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>         poDstFeature->SetField(setname_opt[ifeature].c_str(),setvalue_opt[ifeature].c_str());</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>       <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>         std::cerr << <span class="stringliteral">"Error: field type not supported"</span> << std::endl;</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>         exit(1);</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>       }</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>     }</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>       }</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span> </div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>       <span class="comment">//set default values for new fields</span></div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>     std::cout << <span class="stringliteral">"set default values for new fields in feature "</span> << ifeature << std::endl;</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iname=0;iname<addname_opt.size();++iname){</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>     <span class="keywordflow">switch</span>(fieldType[iname]){</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>     <span class="keywordflow">case</span>(OFTReal):</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>         std::cout << <span class="stringliteral">"set field "</span> << addname_opt[iname] << <span class="stringliteral">" to default "</span> << string2type<float>(addvalue_opt[iname]) << std::endl;</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>       poDstFeature->SetField(addname_opt[iname].c_str(),string2type<float>(addvalue_opt[iname]));</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>     <span class="keywordflow">case</span>(OFTInteger):</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>         std::cout << <span class="stringliteral">"set field "</span> << addname_opt[iname] << <span class="stringliteral">" to default "</span> << string2type<int>(addvalue_opt[iname]) << std::endl;</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>       poDstFeature->SetField(addname_opt[iname].c_str(),string2type<int>(addvalue_opt[iname]));</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>     <span class="keywordflow">case</span>(OFTString):</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>         std::cout << <span class="stringliteral">"set field "</span> << addname_opt[iname] << <span class="stringliteral">" to default "</span> << addvalue_opt[iname] << std::endl;</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>       poDstFeature->SetField(addname_opt[iname].c_str(),addvalue_opt[iname].c_str());</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>     <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>       std::cerr << <span class="stringliteral">"Error: field type not supported"</span> << std::endl;</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>       exit(1);</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>     }</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>       }</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>       CPLErrorReset();</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>     std::cout << <span class="stringliteral">"create feature"</span> << std::endl;</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>       <span class="keywordflow">if</span>(ogrWriter.createFeature( poDstFeature,ilayer ) != OGRERR_NONE){</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>     <span class="keyword">const</span> <span class="keywordtype">char</span>* fmt;</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>     <span class="keywordtype">string</span> errorString=<span class="stringliteral">"Unable to translate feature %d from layer %s.\n"</span>;</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>     fmt=errorString.c_str();</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>     CPLError( CE_Failure, CPLE_AppDefined,</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>           fmt,</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>           poFeature->GetFID(), ogrWriter.getLayerName().c_str() );</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>     OGRFeature::DestroyFeature( poDstFeature );</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>       }</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>       OGRFeature::DestroyFeature( poFeature );</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>       OGRFeature::DestroyFeature( poDstFeature );</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>       progress=<span class="keyword">static_cast<</span><span class="keywordtype">float</span><span class="keyword">></span>(ifeature+1)/nfeature;</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>       pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>     }</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>   }</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>     std::cout << <span class="stringliteral">"replaced "</span> << ifeature << <span class="stringliteral">" features"</span> << std::endl;</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>   ogrReader.close();</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>   ogrWriter.close();</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span> }</div>
-<div class="ttc" id="classImgReaderOgr_html"><div class="ttname"><a href="classImgReaderOgr.html">ImgReaderOgr</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderOgr_8h_source.html#l00035">ImgReaderOgr.h:35</a></div></div>
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-<div class="ttc" id="classImgWriterOgr_html"><div class="ttname"><a href="classImgWriterOgr.html">ImgWriterOgr</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgWriterOgr_8h_source.html#l00035">ImgWriterOgr.h:35</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkegcs.html b/doc/html/pkegcs.html
deleted file mode 100644
index a216d67..0000000
--- a/doc/html/pkegcs.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: pkegcs</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkegcs </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><p>Utility for raster files in European Grid Coordinate System </p>
-<h2>SYNOPSIS</h2>
-<p><code></code></p>
-<p><code></code></p>
-<h1><a class="anchor" id="pkegcs_options"></a>
-Options</h1>
-<ul>
-<li>use either <code>-short</code> or <code>--long</code> options (both <code>--long=value</code> and <code>--long value</code> are supported)</li>
-<li>short option <code>-h</code> shows basic options only, long option <code>--help</code> shows all options <table class="doxtable">
-<tr>
-<th>short</th><th>long</th><th>type</th><th>default</th><th>description  </th></tr>
-<tr>
-<td>i </td><td>image </td><td>std::string </td><td></td><td>input image to analyse </td></tr>
-<tr>
-<td>b </td><td>band </td><td>unsigned short </td><td>0 </td><td>Band specific information </td></tr>
-<tr>
-<td>c2b </td><td>cell2bb </td><td>std::string </td><td></td><td>convert cell code to geo coordinates of boundingbox (e.g. 32-AB) </td></tr>
-<tr>
-<td>c2m </td><td>cell2mid </td><td>std::string </td><td></td><td>convert cell code to centre in geo coordinates (e.g. 32-AB) </td></tr>
-<tr>
-<td>g2c </td><td>geo2cell </td><td>bool </td><td>false </td><td>get cell code for coordinates in x_opt and y_opt given the resolution in dx_opt </td></tr>
-<tr>
-<td>ref </td><td>ref </td><td>bool </td><td>false </td><td>get reference pixel (lower left corner of centre of gravity pixel) </td></tr>
-<tr>
-<td>m </td><td>mask </td><td>double </td><td>0 </td><td>mask value(s) for no data to calculate reference pixel in image </td></tr>
-<tr>
-<td>dx </td><td>dx </td><td>int </td><td>250 </td><td>resolution </td></tr>
-<tr>
-<td>x </td><td>x </td><td>double </td><td>0 </td><td>x coordinate in epsg:3035 </td></tr>
-<tr>
-<td>y </td><td>y </td><td>double </td><td>0 </td><td>y coordinate in epsg:3035 </td></tr>
-</table>
-</li>
-</ul>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkegcs_8cc_source.html b/doc/html/pkegcs_8cc_source.html
deleted file mode 100644
index 6865e92..0000000
--- a/doc/html/pkegcs_8cc_source.html
+++ /dev/null
@@ -1,176 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/pkegcs.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkegcs.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pkegcs.cc: Utility for raster files in European Grid Coordinate System</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "imageclasses/ImgReaderGdal.h"</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "algorithms/Egcs.h"</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> </div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="comment">/******************************************************************************/</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span> {</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> image_opt(<span class="stringliteral">"i"</span>,<span class="stringliteral">"image"</span>,<span class="stringliteral">"input image to analyse"</span>,<span class="stringliteral">""</span>);</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a>  band_opt(<span class="stringliteral">"b"</span>, <span class="stringliteral">"band"</span>, <span class="stringliteral">"Band specific information"</span>, 0);</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> cell2bb_opt(<span class="stringliteral">"c2b"</span>,<span class="stringliteral">"cell2bb"</span>,<span class="stringliteral">"convert cell code to geo coordinates of boundingbox (e.g. 32-AB)"</span>,<span class="stringliteral">""</span>);</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> cell2mid_opt(<span class="stringliteral">"c2m"</span>,<span class="stringliteral">"cell2mid"</span>,<span class="stringliteral">"convert cell code to centre in geo coordinates (e.g. 32-AB)"</span>,<span class="stringliteral">""</span>);</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> refpixel_opt(<span class="stringliteral">"ref"</span>, <span class="stringliteral">"ref"</span>, <span class="stringliteral">"get reference pixel (lower left corner of centre of gravity pixel)"</span>, <span class="keyword">false</span>);</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> maskValue_opt(<span class="stringliteral">"m"</span>, <span class="stringliteral">"mask"</span>, <span class="stringliteral">"mask value(s) for no data to calculate reference pixel in image"</span>,0);</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> dx_opt(<span class="stringliteral">"dx"</span>,<span class="stringliteral">"dx"</span>,<span class="stringliteral">"resolution"</span>,250);</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> geo2cell_opt(<span class="stringliteral">"g2c"</span>, <span class="stringliteral">"geo2cell"</span>, <span class="stringliteral">"get cell code for coordinates in x_opt and y_opt given the resolution in dx_opt"</span>, <span class="keyword">false</span>);</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> x_opt(<span class="stringliteral">"x"</span>,<span class="stringliteral">"x"</span>,<span class="stringliteral">"x coordinate in epsg:3035"</span>,0);</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> y_opt(<span class="stringliteral">"y"</span>,<span class="stringliteral">"y"</span>,<span class="stringliteral">"y coordinate in epsg:3035"</span>,0);</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span> </div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span> </div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>   <span class="keywordtype">bool</span> doProcess;<span class="comment">//stop process when program was invoked with help option (-h --help)</span></div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     doProcess=image_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     band_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     cell2bb_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     cell2mid_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>     geo2cell_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>     refpixel_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>     maskValue_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>     dx_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>     x_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>     y_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>   }</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>   <span class="keywordflow">catch</span>(std::string predefinedString){</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>     std::cout << predefinedString << std::endl;</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>     exit(0);</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>   }</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   <span class="keywordflow">if</span>(!doProcess){</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     std::cout << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << std::endl;</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>     exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   }</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>   </div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   <a class="code" href="classEgcs.html">Egcs</a> egcs;</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>   <span class="keywordflow">if</span>(cell2bb_opt[0]!=<span class="stringliteral">""</span>){</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     <span class="keywordtype">int</span> theULX, theULY, theLRX, theLRY;</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     egcs.setLevel(egcs.cell2level(cell2bb_opt[0]));</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     egcs.cell2bb(cell2bb_opt[0],theULX,theULY,theLRX,theLRY);</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>     std::cout << std::setprecision(12) << <span class="stringliteral">"--ulx="</span> << theULX << <span class="stringliteral">" --uly="</span> << theULY << <span class="stringliteral">" --lrx="</span> << theLRX << <span class="stringliteral">" --lry="</span> << theLRY << std::endl;</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   }</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   <span class="keywordflow">if</span>(cell2mid_opt[0]!=<span class="stringliteral">""</span>){</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     <span class="keywordtype">double</span> midX, midY;</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     egcs.setLevel(egcs.cell2level(cell2mid_opt[0]));</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     egcs.cell2mid(cell2mid_opt[0],midX,midY);</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     std::cout << std::setprecision(12) << <span class="stringliteral">"-x="</span> << midX << <span class="stringliteral">" -y="</span> << midY << std::endl;</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>   }</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>   <span class="keywordflow">if</span>(geo2cell_opt[0]){</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     egcs.setLevel(egcs.res2level(dx_opt[0]));</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     std::cout << egcs.geo2cell(x_opt[0],y_opt[0]) << std::endl;</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>   }</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>   <span class="keywordflow">if</span>(image_opt[0]!=<span class="stringliteral">""</span>){</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> imgReader;</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     imgReader.open(image_opt[0]);</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     <span class="keywordflow">if</span>(refpixel_opt[0]){</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>       assert(band_opt[0]<imgReader.nrOfBand());</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> inodata=0;inodata<maskValue_opt.size();++inodata)</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>         imgReader.pushNoDataValue(maskValue_opt[inodata]);</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>       <span class="comment">// if(verbose_opt[0]){</span></div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>       <span class="comment">//   vector<double> noData;</span></div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>       <span class="comment">//   imgReader.getNoDataValues(noData,band_opt[0]);</span></div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>       <span class="comment">//   std::cout << "number of no data values: " << noData.size() << std::endl;</span></div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>       <span class="comment">// }</span></div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>       <span class="keywordtype">double</span> refX,refY;</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>       <span class="comment">//get centre of reference (centre of gravity) pixel in image</span></div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>       imgReader.getRefPix(refX,refY,band_opt[0]);</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>       std::cout << std::setprecision(12) << <span class="stringliteral">"--x "</span> << refX << <span class="stringliteral">" --y "</span> << refY << std::endl;</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>       egcs.setLevel(egcs.res2level(imgReader.getDeltaX()));</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>       <span class="comment">// unsigned short theLevel=egcs.getLevel(imgReader.getDeltaX());</span></div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>       <span class="comment">// egcs.setLevel(theLevel);</span></div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>       std::cout << <span class="stringliteral">"cell code at level "</span> << egcs.getLevel() << <span class="stringliteral">" (resolution is "</span> << egcs.getResolution() << <span class="stringliteral">"): "</span> << egcs.geo2cell(refX,refY) << std::endl;</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>     }</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>   }</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span> }</div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-<div class="ttc" id="classEgcs_html"><div class="ttname"><a href="classEgcs.html">Egcs</a></div><div class="ttdef"><b>Definition:</b> <a href="Egcs_8h_source.html#l00026">Egcs.h:26</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkenhance_8cc_source.html b/doc/html/pkenhance_8cc_source.html
deleted file mode 100644
index 7b051f9..0000000
--- a/doc/html/pkenhance_8cc_source.html
+++ /dev/null
@@ -1,274 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/not_used/pkenhance.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li><li class="navelem"><a class="el" href="dir_e28b2035b152bb51229fe7a0fca4e376.html">not_used</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkenhance.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pkenhance.cc: program to enhance raster images: histogram matching</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <assert.h></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <iostream></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <string></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "imageclasses/ImgReaderGdal.h"</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "imageclasses/ImgWriterGdal.h"</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> </div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> </div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc,<span class="keywordtype">char</span> **argv) {</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> input_opt(<span class="stringliteral">"i"</span>,<span class="stringliteral">"input"</span>,<span class="stringliteral">"input image file"</span>);</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> reference_opt(<span class="stringliteral">"r"</span>, <span class="stringliteral">"reference"</span>, <span class="stringliteral">"Reference image file"</span>);</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> output_opt(<span class="stringliteral">"o"</span>, <span class="stringliteral">"output"</span>, <span class="stringliteral">"Output image file"</span>);</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> minRef_opt(<span class="stringliteral">"minref"</span>, <span class="stringliteral">"minref"</span>, <span class="stringliteral">"Sets minimum for histogram of reference image"</span>);</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> maxRef_opt(<span class="stringliteral">"maxref"</span>, <span class="stringliteral">"maxref"</span>, <span class="stringliteral">"Sets maximum for histogram of reference image"</span>);</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> minInput_opt(<span class="stringliteral">"mininput"</span>, <span class="stringliteral">"mininput"</span>, <span class="stringliteral">"Sets minimum for histogram of input image"</span>);</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> maxInput_opt(<span class="stringliteral">"maxinput"</span>, <span class="stringliteral">"maxinput"</span>, <span class="stringliteral">"Sets maximum for histogram of input image"</span>);</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> nodata_opt(<span class="stringliteral">"nodata"</span>, <span class="stringliteral">"nodata"</span>, <span class="stringliteral">"Sets no data value(s) for calculations (nodata values in input image)"</span>);</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> method_opt(<span class="stringliteral">"m"</span>, <span class="stringliteral">"method"</span>, <span class="stringliteral">"enhancement method (histmatch)"</span>, <span class="stringliteral">"histmatch"</span>);</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>   <span class="comment">// Optionpk<std::string> wavelet_type_opt("wt", "wavelet", "wavelet type: daubechies,daubechies_centered, haar, haar_centered, bspline, bspline_centered", "daubechies");</span></div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   <span class="comment">// Optionpk<int> family_opt("wf", "family", "wavelet family (vanishing moment, see also http://www.gnu.org/software/gsl/manual/html_node/DWT-Initialization.html)", 4);</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>   <span class="comment">// Optionpk<double> quantize_opt("q", "quantize", "Quantize threshold",0);</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a>  nbin_opt(<span class="stringliteral">"nbin"</span>, <span class="stringliteral">"nbin"</span>, <span class="stringliteral">"Number of bins used in histogram. Use 0 for all input values as integers"</span>,0);</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  otype_opt(<span class="stringliteral">"ot"</span>, <span class="stringliteral">"otype"</span>, <span class="stringliteral">"Data type for output image ({Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/CInt16/CInt32/CFloat32/CFloat64}). Empty string: inherit type from input image"</span>,<span class="stringlitera [...]
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  oformat_opt(<span class="stringliteral">"of"</span>, <span class="stringliteral">"oformat"</span>, <span class="stringliteral">"Output image format (see also gdal_translate). Empty string: inherit from input image"</span>);</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> option_opt(<span class="stringliteral">"co"</span>, <span class="stringliteral">"co"</span>, <span class="stringliteral">"Creation option for output file. Multiple options can be specified."</span>);</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> verbose_opt(<span class="stringliteral">"v"</span>, <span class="stringliteral">"verbose"</span>, <span class="stringliteral">"verbose mode if > 0"</span>, 0);</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span> </div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>   <span class="keywordtype">bool</span> doProcess;<span class="comment">//stop process when program was invoked with help option (-h --help)</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     doProcess=input_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     reference_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     output_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     minRef_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     maxRef_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     minInput_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     maxInput_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     nodata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     method_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     nbin_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     otype_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     oformat_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     option_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     verbose_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>   }</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> predefinedString){</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     std::cout << predefinedString << std::endl;</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>     exit(0);</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>   }</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>   <span class="keywordflow">if</span>(!doProcess){</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     std::cout << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << std::endl;</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>   }</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span> </div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>   <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> inputImg;</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>   <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> referenceImg;</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>   <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> outputImg;</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>   assert(input_opt.size());</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>   inputImg.open(input_opt[0]);</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> inodata=0;inodata<nodata_opt.size();++inodata){</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>     <span class="keywordflow">if</span>(!inodata)</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>       inputImg.GDALSetNoDataValue(nodata_opt[0],0);<span class="comment">//only single no data can be set in GDALRasterBand (used for ComputeStatistics)</span></div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     inputImg.pushNoDataValue(nodata_opt[inodata]);</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   }</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span> </div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>   <span class="keywordtype">int</span> nband=inputImg.nrOfBand();</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   GDALDataType theType=GDT_Unknown;</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>     cout << <span class="stringliteral">"possible output data types: "</span>;</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iType = 0; iType < GDT_TypeCount; ++iType){</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>       cout << <span class="stringliteral">" "</span> << GDALGetDataTypeName((GDALDataType)iType);</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     <span class="keywordflow">if</span>( GDALGetDataTypeName((GDALDataType)iType) != NULL</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>         && EQUAL(GDALGetDataTypeName((GDALDataType)iType),</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>                  otype_opt[0].c_str()))</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>       theType=(GDALDataType) iType;</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>   }</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>   <span class="keywordflow">if</span>(theType==GDT_Unknown)</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     theType=inputImg.getDataType();</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span> </div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     std::cout << std::endl << <span class="stringliteral">"Output pixel type:  "</span> << GDALGetDataTypeName(theType) << endl;</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span> </div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>   <span class="keywordtype">string</span> imageType=inputImg.getImageType();</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>   <span class="keywordflow">if</span>(oformat_opt.size())</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     imageType=oformat_opt[0];</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span> </div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>   <span class="keywordflow">if</span>(option_opt.findSubstring(<span class="stringliteral">"INTERLEAVE="</span>)==option_opt.end()){</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     <span class="keywordtype">string</span> theInterleave=<span class="stringliteral">"INTERLEAVE="</span>;</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>     theInterleave+=inputImg.getInterleave();</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>     option_opt.push_back(theInterleave);</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>   }</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     assert(output_opt.size());</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>       std::cout << <span class="stringliteral">"opening output image "</span> << output_opt[0] << std::endl;</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     outputImg.open(output_opt[0],inputImg.nrOfCol(),inputImg.nrOfRow(),inputImg.nrOfBand(),theType,imageType,option_opt);</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>   }</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>     cout << errorstring << endl;</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>     exit(1);</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>   }</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span> </div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>   <span class="keywordflow">if</span>(method_opt[0]==<span class="stringliteral">"histmatch"</span>){</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     assert(reference_opt.size());</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>     referenceImg.open(reference_opt[0]);</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     assert(nband==referenceImg.nrOfBand());</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> inodata=0;inodata<nodata_opt.size();++inodata){</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>       <span class="keywordflow">if</span>(!inodata)</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>         referenceImg.GDALSetNoDataValue(nodata_opt[0],0);<span class="comment">//only single no data can be set in GDALRasterBand (used for ComputeStatistics)</span></div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>       referenceImg.pushNoDataValue(nodata_opt[inodata]);</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>     }</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>     <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>     <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>     GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>     <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>       <span class="comment">//calculate histograms</span></div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nbinRef=nbin_opt[0];</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nbinInput=nbin_opt[0];</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>       std::vector<double> histRef(nbinRef);</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>       std::vector<double> histInput(nbinInput);</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>       <span class="keywordtype">double</span> minValueRef=0;</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>       <span class="keywordtype">double</span> maxValueRef=0;</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>       <span class="keywordtype">double</span> minValueInput=0;</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>       <span class="keywordtype">double</span> maxValueInput=0;</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>       <span class="keywordflow">if</span>(minRef_opt.size())</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>         minValueRef=minRef_opt[0];</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>       <span class="keywordflow">if</span>(maxRef_opt.size())</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>         maxValueRef=maxRef_opt[0];</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>       <span class="keywordflow">if</span>(minInput_opt.size())</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>         minValueInput=minInput_opt[0];</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>       <span class="keywordflow">if</span>(maxInput_opt.size())</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>         maxValueInput=maxInput_opt[0];</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>       <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> nsampleRef=referenceImg.getHistogram(histRef,minValueRef,maxValueRef,nbinRef,iband);</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>       <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> nsampleInput=inputImg.getHistogram(histInput,minValueInput,maxValueInput,nbinInput,iband);</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>       <span class="comment">//create cumulative historgrams</span></div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>       <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bin=0;bin<nbinRef;++bin){</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>         histRef[bin]+=100.0*<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(histRef[bin])/static_cast<double>(nsampleRef);</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>       }</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>       <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bin=0;bin<nbinInput;++bin)</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>         histInput[bin]+=100.0*static_cast<double>(histInput[bin])/<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(nsampleInput);</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>       <span class="comment">//match histograms</span></div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>       vector<double> lineBuffer(inputImg.nrOfCol());</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<inputImg.nrOfRow();++irow){</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>         inputImg.readData(lineBuffer,GDT_Float64, irow, iband);</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<inputImg.nrOfCol();++icol){</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>           <span class="comment">//find bin in input image histogram</span></div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>           <span class="keywordtype">int</span> inputBin=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(lineBuffer[icol]-minValueInput)/(maxValueInput-minValueInput)*(histInput.size()-1));</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>           <span class="comment">//find corresponding bin in reference image histogram</span></div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>           <span class="comment">//todo: optimize with lower_bound?</span></div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>           <span class="comment">// std::vector<unsigned long int>::const_iterator hit=histRef.begin();</span></div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>           <span class="keywordtype">int</span> ibin=0;</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>           <span class="keywordflow">for</span>(ibin=0;ibin<histRef.size();++ibin){</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>             <span class="keywordflow">if</span>(histRef[ibin]>histInput[inputBin])</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>           }</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>           <span class="keywordflow">if</span>(ibin)</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>             --ibin;</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>           lineBuffer[icol]=(maxValueRef-minValueRef)/(histRef.size()-1)*(ibin)+minValueRef;</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>           <span class="comment">// std::vector<unsigned long int>::const_iterator it=std::lower_bound(histRef.begin(),histRef.end(),culInput);</span></div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>         }</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>         outputImg.writeData(lineBuffer,GDT_Float64,irow,iband);</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>         progress=(1.0+irow);</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>         progress+=(outputImg.nrOfRow()*iband);</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>         progress/=outputImg.nrOfBand()*outputImg.nrOfRow();</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>         assert(progress>=0);</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>         assert(progress<=1);</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>         pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>       }</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>     }</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>   }</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span> </div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>   inputImg.close();</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>   <span class="keywordflow">if</span>(method_opt[0]==<span class="stringliteral">"histmatch"</span>)</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>     referenceImg.close();</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>   outputImg.close();</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>   <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span> }</div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-<div class="ttc" id="classImgWriterGdal_html"><div class="ttname"><a href="classImgWriterGdal.html">ImgWriterGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgWriterGdal_8h_source.html#l00033">ImgWriterGdal.h:33</a></div></div>
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkextract.html b/doc/html/pkextract.html
deleted file mode 100644
index e3af281..0000000
--- a/doc/html/pkextract.html
+++ /dev/null
@@ -1,170 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: pkextract</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkextract </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><p>extract pixel values from raster image from a (vector or raster) sample </p>
-<h2>SYNOPSIS</h2>
-<p><code> Usage: pkextract -i input [-s sample | -rand number | -grid size] -o output </code></p>
-<p><code></code></p>
-<p><code> Options: [-ln layer]* [-c class]* [-t threshold]* [-f format] [-ft fieldType] [-lt labelType] [-polygon] [-b band]* [-r rule]</code></p>
-<p><code> Advanced options: [-sband band -eband band]* [-bndnodata band -srcnodata value]* [-tp threshold] [-test testSample] [-bn attribute] [-cn attribute] [-geo value] [-down value] [-buf value [-circ]] </code></p>
-<h1><a class="anchor" id="pkextract_description"></a>
-Description</h1>
-<p>The utility pkextract extracts pixel values from an input raster dataset, based on the locations you provide via a sample file. Alternatively, a random sample or systematic grid of points can also be extracted. The sample can be a vector file with points or polygons. In the case of polygons, you can either extract the values for all raster pixels that are covered by the polygons, or extract a single value for each polygon such as the centroid, mean, median, etc. As output, a new copy  [...]
-<p>Instead of a vector dataset, the sample can also be a raster dataset with categorical values. The typical use case is a land cover map that overlaps the input raster dataset. The utility then extracts pixels from the input raster for the respective land cover classes. To select a random subset of the sample raster dataset you can set the threshold option -t with a percentage value.</p>
-<p>A typical usage of pkextract is to prepare a training sample for one of the classifiers implemented in pktools.</p>
-<p><a class="anchor" id="pkextract_rules"></a></p>
-<p>Overview of the possible extraction rules:</p>
-<table class="doxtable">
-<tr>
-<th>extraction rule </th><th>output features  </th></tr>
-<tr>
-<td>point </td><td>Extract all pixel values covered by the polygon (option -polygon not set) or extract a pixel on the surface option (-polygon set). </td></tr>
-<tr>
-<td>centroid </td><td>Extract pixel value at the centroid of the polygon. </td></tr>
-<tr>
-<td>mean </td><td>Extract average of all pixel values within the polygon. </td></tr>
-<tr>
-<td>stdev </td><td>Extract standard deviation of all pixel values within the polygon. </td></tr>
-<tr>
-<td>median </td><td>Extract median of all pixel values within the polygon. </td></tr>
-<tr>
-<td>min </td><td>Extract minimum value of all pixels within the polygon. </td></tr>
-<tr>
-<td>max </td><td>Extract maximum value of all pixels within the polygon. </td></tr>
-<tr>
-<td>sum </td><td>Extract sum of the values of all pixels within the polygon. </td></tr>
-<tr>
-<td>mode </td><td>Extract the mode of classes within the polygon (classes must be set with the option class). </td></tr>
-<tr>
-<td>proportion </td><td>Extract proportion of class(es) within the polygon (classes must be set with the option class). </td></tr>
-<tr>
-<td>count </td><td>Extract count of class(es) within the polygon (classes must be set with the option class). </td></tr>
-<tr>
-<td>percentile </td><td>Extract percentile as defined by option perc (e.g, 95th percentile of values covered by polygon). </td></tr>
-</table>
-<h1><a class="anchor" id="pkextract_options"></a>
-Options</h1>
-<ul>
-<li>use either <code>-short</code> or <code>--long</code> options (both <code>--long=value</code> and <code>--long value</code> are supported)</li>
-<li>short option <code>-h</code> shows basic options only, long option <code>--help</code> shows all options <table class="doxtable">
-<tr>
-<th>short</th><th>long</th><th>type</th><th>default</th><th>description  </th></tr>
-<tr>
-<td>i </td><td>input </td><td>std::string </td><td></td><td>Raster input dataset containing band information </td></tr>
-<tr>
-<td>s </td><td>sample </td><td>std::string </td><td></td><td>OGR vector dataset with features to be extracted from input data. Output will contain features with input band information included. Sample image can also be GDAL raster dataset. </td></tr>
-<tr>
-<td>ln </td><td>ln </td><td>std::string </td><td></td><td>Layer name(s) in sample (leave empty to select all) </td></tr>
-<tr>
-<td>rand </td><td>random </td><td>unsigned int </td><td></td><td>Create simple random sample of points. Provide number of points to generate </td></tr>
-<tr>
-<td>grid </td><td>grid </td><td>double </td><td></td><td>Create systematic grid of points. Provide cell grid size (in projected units, e.g,. m) </td></tr>
-<tr>
-<td>o </td><td>output </td><td>std::string </td><td></td><td>Output sample dataset </td></tr>
-<tr>
-<td>c </td><td>class </td><td>int </td><td></td><td>Class(es) to extract from input sample image. Leave empty to extract all valid data pixels from sample dataset. Make sure to set classes if rule is set to mode, proportion or count </td></tr>
-<tr>
-<td>t </td><td>threshold </td><td>float </td><td>100 </td><td>Probability threshold for selecting samples (randomly). Provide probability in percentage (>0) or absolute (<0). Use a single threshold for vector sample datasets. If using raster land cover maps as a sample dataset, you can provide a threshold value for each class (e.g. -t 80 -t 60). Use value 100 to select all pixels for selected class(es) </td></tr>
-<tr>
-<td>perc </td><td>perc </td><td>double </td><td>95 </td><td>Percentile value used for rule percentile </td></tr>
-<tr>
-<td>f </td><td>f </td><td>std::string </td><td>SQLite </td><td>Output sample dataset format </td></tr>
-<tr>
-<td>ft </td><td>ftype </td><td>std::string </td><td>Real </td><td>Field type (only Real or Integer) </td></tr>
-<tr>
-<td>lt </td><td>ltype </td><td>std::string </td><td>Integer </td><td>Label type: In16 or String </td></tr>
-<tr>
-<td>polygon </td><td>polygon </td><td>bool </td><td>false </td><td>Create OGRPolygon as geometry instead of OGRPoint. </td></tr>
-<tr>
-<td>b </td><td>band </td><td>int </td><td></td><td>Band index(es) to extract (0 based). Leave empty to use all bands </td></tr>
-<tr>
-<td>sband </td><td>startband </td><td>unsigned short </td><td></td><td>Start band sequence number </td></tr>
-<tr>
-<td>eband </td><td>endband </td><td>unsigned short </td><td></td><td>End band sequence number </td></tr>
-<tr>
-<td>r </td><td>rule </td><td>std::string </td><td>centroid </td><td>Rule how to report image information per feature (only for vector sample). point (value at each point or at centroid if polygon), centroid, mean, stdev, median, proportion, count, min, max, mode, sum, percentile. </td></tr>
-<tr>
-<td>bndnodata </td><td>bndnodata </td><td>int </td><td>0 </td><td>Band(s) in input image to check if pixel is valid (used for srcnodata) </td></tr>
-<tr>
-<td>srcnodata </td><td>srcnodata </td><td>double </td><td></td><td>Invalid value(s) for input image </td></tr>
-<tr>
-<td>tp </td><td>thresholdPolygon </td><td>float </td><td></td><td>(absolute) threshold for selecting samples in each polygon </td></tr>
-<tr>
-<td>test </td><td>test </td><td>std::string </td><td></td><td>Test sample dataset (use this option in combination with threshold<100 to create a training (output) and test set </td></tr>
-<tr>
-<td>bn </td><td>bname </td><td>std::string </td><td>b </td><td>For single band input data, this extra attribute name will correspond to the raster values. For multi-band input data, multiple attributes with this prefix will be added (e.g. b0, b1, b2, etc.) </td></tr>
-<tr>
-<td>cn </td><td>cname </td><td>std::string </td><td>label </td><td>Name of the class label in the output vector dataset </td></tr>
-<tr>
-<td>geo </td><td>geo </td><td>short </td><td>1 </td><td>Use geo coordinates (set to 0 to use image coordinates) </td></tr>
-<tr>
-<td>down </td><td>down </td><td>short </td><td>1 </td><td>Down sampling factor (for raster sample datasets only). Can be used to create grid points </td></tr>
-<tr>
-<td>buf </td><td>buffer </td><td>short </td><td></td><td>Buffer for calculating statistics for point features </td></tr>
-<tr>
-<td>circ </td><td>circular </td><td>bool </td><td>false </td><td>Use a circular disc kernel buffer (for vector point sample datasets only, use in combination with buffer option) </td></tr>
-</table>
-Usage: pkextract -i input [-s sample | -rand number | -grid size] -o output</li>
-</ul>
-<h1>Examples </h1>
-<p>Some examples how to use pkextract can be found <a class="el" href="md_examples_pkextract.html#examples_pkextract">here</a> </p>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkextract_8cc_source.html b/doc/html/pkextract_8cc_source.html
deleted file mode 100644
index b67d25b..0000000
--- a/doc/html/pkextract_8cc_source.html
+++ /dev/null
@@ -1,2534 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/pkextract.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkextract.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pkextract.cc: extract pixel values from raster image from a (vector or raster) sample</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <assert.h></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <math.h></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <stdlib.h></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <sstream></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <string></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include <algorithm></span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include <ctime></span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include <vector></span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include "imageclasses/ImgReaderGdal.h"</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include "imageclasses/ImgWriterOgr.h"</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="preprocessor">#include "algorithms/StatFactory.h"</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> </div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="preprocessor">#ifndef PI</span></div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="preprocessor"></span><span class="preprocessor">#define PI 3.1415926535897932384626433832795</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="comment">/******************************************************************************/</span></div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span> <span class="keyword">namespace </span>rule{</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>   <span class="keyword">enum</span> RULE_TYPE {point=0, mean=1, proportion=2, custom=3, min=4, max=5, mode=6, centroid=7, sum=8, median=9, stdev=10, percentile=11, count=12};</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span> }</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span> </div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span> </div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span> {</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> image_opt(<span class="stringliteral">"i"</span>, <span class="stringliteral">"input"</span>, <span class="stringliteral">"Raster input dataset containing band information"</span>);</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> sample_opt(<span class="stringliteral">"s"</span>, <span class="stringliteral">"sample"</span>, <span class="stringliteral">"OGR vector dataset with features to be extracted from input data. Output will contain features with input band information included. Sample image can also be GDAL raster dataset."</span>);</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> layer_opt(<span class="stringliteral">"ln"</span>, <span class="stringliteral">"ln"</span>, <span class="stringliteral">"Layer name(s) in sample (leave empty to select all)"</span>);</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned int></a> random_opt(<span class="stringliteral">"rand"</span>, <span class="stringliteral">"random"</span>, <span class="stringliteral">"Create simple random sample of points. Provide number of points to generate"</span>);</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> grid_opt(<span class="stringliteral">"grid"</span>, <span class="stringliteral">"grid"</span>, <span class="stringliteral">"Create systematic grid of points. Provide cell grid size (in projected units, e.g,. m)"</span>);</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> output_opt(<span class="stringliteral">"o"</span>, <span class="stringliteral">"output"</span>, <span class="stringliteral">"Output sample dataset"</span>);</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> class_opt(<span class="stringliteral">"c"</span>, <span class="stringliteral">"class"</span>, <span class="stringliteral">"Class(es) to extract from input sample image. Leave empty to extract all valid data pixels from sample dataset. Make sure to set classes if rule is set to mode, proportion or count"</span>);</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>   <a class="code" href="classOptionpk.html">Optionpk<float></a> threshold_opt(<span class="stringliteral">"t"</span>, <span class="stringliteral">"threshold"</span>, <span class="stringliteral">"Probability threshold for selecting samples (randomly). Provide probability in percentage (>0) or absolute (<0). Use a single threshold for vector sample datasets. If using raster la [...]
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> percentile_opt(<span class="stringliteral">"perc"</span>,<span class="stringliteral">"perc"</span>,<span class="stringliteral">"Percentile value used for rule percentile"</span>,95);</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> ogrformat_opt(<span class="stringliteral">"f"</span>, <span class="stringliteral">"f"</span>, <span class="stringliteral">"Output sample dataset format"</span>,<span class="stringliteral">"SQLite"</span>);</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> ftype_opt(<span class="stringliteral">"ft"</span>, <span class="stringliteral">"ftype"</span>, <span class="stringliteral">"Field type (only Real or Integer)"</span>, <span class="stringliteral">"Real"</span>);</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> ltype_opt(<span class="stringliteral">"lt"</span>, <span class="stringliteral">"ltype"</span>, <span class="stringliteral">"Label type: In16 or String"</span>, <span class="stringliteral">"Integer"</span>);</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> polygon_opt(<span class="stringliteral">"polygon"</span>, <span class="stringliteral">"polygon"</span>, <span class="stringliteral">"Create OGRPolygon as geometry instead of OGRPoint."</span>, <span class="keyword">false</span>);</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> band_opt(<span class="stringliteral">"b"</span>, <span class="stringliteral">"band"</span>, <span class="stringliteral">"Band index(es) to extract (0 based). Leave empty to use all bands"</span>);</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> bstart_opt(<span class="stringliteral">"sband"</span>, <span class="stringliteral">"startband"</span>, <span class="stringliteral">"Start band sequence number"</span>); </div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> bend_opt(<span class="stringliteral">"eband"</span>, <span class="stringliteral">"endband"</span>, <span class="stringliteral">"End band sequence number"</span>); </div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> rule_opt(<span class="stringliteral">"r"</span>, <span class="stringliteral">"rule"</span>, <span class="stringliteral">"Rule how to report image information per feature (only for vector sample). point (value at each point or at centroid if polygon), centroid, mean, stdev, median, proportion, count, min, max, mode, s [...]
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> srcnodata_opt(<span class="stringliteral">"srcnodata"</span>, <span class="stringliteral">"srcnodata"</span>, <span class="stringliteral">"Invalid value(s) for input image"</span>);</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> bndnodata_opt(<span class="stringliteral">"bndnodata"</span>, <span class="stringliteral">"bndnodata"</span>, <span class="stringliteral">"Band(s) in input image to check if pixel is valid (used for srcnodata)"</span>, 0);</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>   <a class="code" href="classOptionpk.html">Optionpk<float></a> polythreshold_opt(<span class="stringliteral">"tp"</span>, <span class="stringliteral">"thresholdPolygon"</span>, <span class="stringliteral">"(absolute) threshold for selecting samples in each polygon"</span>);</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> test_opt(<span class="stringliteral">"test"</span>, <span class="stringliteral">"test"</span>, <span class="stringliteral">"Test sample dataset (use this option in combination with threshold<100 to create a training (output) and test set"</span>);</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> fieldname_opt(<span class="stringliteral">"bn"</span>, <span class="stringliteral">"bname"</span>, <span class="stringliteral">"For single band input data, this extra attribute name will correspond to the raster values. For multi-band input data, multiple attributes with this prefix will be added (e.g. b0, b1, b2, et [...]
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> label_opt(<span class="stringliteral">"cn"</span>, <span class="stringliteral">"cname"</span>, <span class="stringliteral">"Name of the class label in the output vector dataset"</span>, <span class="stringliteral">"label"</span>);</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> geo_opt(<span class="stringliteral">"geo"</span>, <span class="stringliteral">"geo"</span>, <span class="stringliteral">"Use geo coordinates (set to 0 to use image coordinates)"</span>, 1);</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> down_opt(<span class="stringliteral">"down"</span>, <span class="stringliteral">"down"</span>, <span class="stringliteral">"Down sampling factor (for raster sample datasets only). Can be used to create grid points"</span>, 1);</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> buffer_opt(<span class="stringliteral">"buf"</span>, <span class="stringliteral">"buffer"</span>, <span class="stringliteral">"Buffer for calculating statistics for point features "</span>);</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> disc_opt(<span class="stringliteral">"circ"</span>, <span class="stringliteral">"circular"</span>, <span class="stringliteral">"Use a circular disc kernel buffer (for vector point sample datasets only, use in combination with buffer option)"</span>, <span class="keyword">false</span>);</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> verbose_opt(<span class="stringliteral">"v"</span>, <span class="stringliteral">"verbose"</span>, <span class="stringliteral">"Verbose mode if > 0"</span>, 0,2);</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span> </div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   bstart_opt.setHide(1);</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>   bend_opt.setHide(1);</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>   bndnodata_opt.setHide(1);</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>   srcnodata_opt.setHide(1);</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>   polythreshold_opt.setHide(1);</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>   percentile_opt.setHide(1);</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>   test_opt.setHide(1);</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>   fieldname_opt.setHide(1);</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>   label_opt.setHide(1);</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>   geo_opt.setHide(1);</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>   down_opt.setHide(1);</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>   buffer_opt.setHide(1);</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>   disc_opt.setHide(1);</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span> </div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>   <span class="keywordtype">bool</span> doProcess;<span class="comment">//stop process when program was invoked with help option (-h --help)</span></div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>     doProcess=image_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>     sample_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>     layer_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>     random_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>     grid_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>     output_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>     class_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>     threshold_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>     percentile_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>     ogrformat_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>     ftype_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>     ltype_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>     polygon_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>     band_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>     bstart_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>     bend_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>     rule_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>     bndnodata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>     srcnodata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>     polythreshold_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>     test_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>     fieldname_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>     label_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>     geo_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>     down_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>     buffer_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>     disc_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>     <span class="comment">// rbox_opt.retrieveOption(argc,argv);</span></div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>     <span class="comment">// cbox_opt.retrieveOption(argc,argv);</span></div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>     verbose_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>   }</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> predefinedString){</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>     std::cout << predefinedString << std::endl;</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>     exit(0);</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>   }</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>   <span class="keywordflow">if</span>(!doProcess){</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>     cout << endl;</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>     cout << <span class="stringliteral">"Usage: pkextract -i input [-s sample | -rand number | -grid size] -o output"</span> << endl;</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>     cout << endl;</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>     std::cout << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << std::endl;</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>     exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>   }</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span> </div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>   std::map<std::string, rule::RULE_TYPE> ruleMap;</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>   <span class="comment">//initialize ruleMap</span></div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>   ruleMap[<span class="stringliteral">"point"</span>]=rule::point;</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>   ruleMap[<span class="stringliteral">"centroid"</span>]=rule::centroid;</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>   ruleMap[<span class="stringliteral">"mean"</span>]=rule::mean;</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>   ruleMap[<span class="stringliteral">"stdev"</span>]=rule::stdev;</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>   ruleMap[<span class="stringliteral">"median"</span>]=rule::median;</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>   ruleMap[<span class="stringliteral">"proportion"</span>]=rule::proportion;</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>   ruleMap[<span class="stringliteral">"count"</span>]=rule::count;</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>   ruleMap[<span class="stringliteral">"min"</span>]=rule::min;</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>   ruleMap[<span class="stringliteral">"max"</span>]=rule::max;</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>   ruleMap[<span class="stringliteral">"custom"</span>]=rule::custom;</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>   ruleMap[<span class="stringliteral">"mode"</span>]=rule::mode;</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>   ruleMap[<span class="stringliteral">"sum"</span>]=rule::sum;</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>   ruleMap[<span class="stringliteral">"percentile"</span>]=rule::percentile;</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span> </div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>   <span class="keywordflow">if</span>(srcnodata_opt.size()){</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>     <span class="keywordflow">while</span>(srcnodata_opt.size()<bndnodata_opt.size())</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>       srcnodata_opt.push_back(srcnodata_opt[0]);</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>     <span class="keywordflow">while</span>(bndnodata_opt.size()<srcnodata_opt.size())</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>       bndnodata_opt.push_back(bndnodata_opt[0]);</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>   }</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span> </div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>     std::cout << class_opt << std::endl;</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>   <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>   stat.setNoDataValues(srcnodata_opt);</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>   <a class="code" href="classVector2d.html">Vector2d<unsigned int></a> posdata;</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> nsample=0;</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> ntotalvalid=0;</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> ntotalinvalid=0;</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>   vector<unsigned long int> nvalid(class_opt.size());</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>   vector<unsigned long int> ninvalid(class_opt.size());</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> it=0;it<nvalid.size();++it){</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>     nvalid[it]=0;</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>     ninvalid[it]=0;</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>   }</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span> </div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>   <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> imgReader;</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>   <span class="keywordflow">if</span>(image_opt.empty()){</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>     std::cerr << <span class="stringliteral">"No image dataset provided (use option -i). Use --help for help information"</span>;</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>       exit(0);</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>   }</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>   <span class="keywordflow">if</span>(output_opt.empty()){</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>     std::cerr << <span class="stringliteral">"No output dataset provided (use option -o). Use --help for help information"</span>;</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>       exit(0);</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>   }</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>     imgReader.open(image_opt[0]);</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>   }</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>   <span class="keywordflow">catch</span>(std::string errorstring){</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>     std::cout << errorstring << std::endl;</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>     exit(0);</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>   }</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span> </div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>   <span class="comment">//convert start and end band options to vector of band indexes</span></div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>     <span class="keywordflow">if</span>(bstart_opt.size()){</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>       <span class="keywordflow">if</span>(bend_opt.size()!=bstart_opt.size()){</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>     <span class="keywordtype">string</span> errorstring=<span class="stringliteral">"Error: options for start and end band indexes must be provided as pairs, missing end band"</span>;</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>     <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>       }</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>       band_opt.clear();</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ipair=0;ipair<bstart_opt.size();++ipair){</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>     <span class="keywordflow">if</span>(bend_opt[ipair]<=bstart_opt[ipair]){</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>       <span class="keywordtype">string</span> errorstring=<span class="stringliteral">"Error: index for end band must be smaller then start band"</span>;</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>       <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>     }</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=bstart_opt[ipair];iband<=bend_opt[ipair];++iband)</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>       band_opt.push_back(iband);</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>       }</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>     }</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>   }</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> error){</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>     cerr << error << std::endl;</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>     exit(1);</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>   }</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>   </div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>   <span class="keywordtype">int</span> nband=(band_opt.size()) ? band_opt.size() : imgReader.nrOfBand();</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span> </div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>   <span class="keywordflow">if</span>(fieldname_opt.size()<nband){</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>     std::string bandString=fieldname_opt[0];</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>     fieldname_opt.clear();</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>     fieldname_opt.resize(nband);</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>       <span class="keywordtype">int</span> theBand=(band_opt.size()) ? band_opt[iband] : iband;</div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>       ostringstream fs;</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>       fs << bandString << theBand;</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>       fieldname_opt[iband]=fs.str();</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>     }</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>   }</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span> </div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>     std::cout << fieldname_opt << std::endl;</div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>   </div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>   <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>     std::cout << <span class="stringliteral">"Number of bands in input image: "</span> << imgReader.nrOfBand() << std::endl;</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span> </div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>   OGRFieldType fieldType;</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>   OGRFieldType labelType;</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>   <span class="keywordtype">int</span> ogr_typecount=11;<span class="comment">//hard coded for now!</span></div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>   <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>     std::cout << <span class="stringliteral">"field and label types can be: "</span>;</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iType = 0; iType < ogr_typecount; ++iType){</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>     <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>       std::cout << <span class="stringliteral">" "</span> << OGRFieldDefn::GetFieldTypeName((OGRFieldType)iType);</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>     <span class="keywordflow">if</span>( OGRFieldDefn::GetFieldTypeName((OGRFieldType)iType) != NULL</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>         && EQUAL(OGRFieldDefn::GetFieldTypeName((OGRFieldType)iType),</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>                  ftype_opt[0].c_str()))</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>       fieldType=(OGRFieldType) iType;</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>     <span class="keywordflow">if</span>( OGRFieldDefn::GetFieldTypeName((OGRFieldType)iType) != NULL</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>         && EQUAL(OGRFieldDefn::GetFieldTypeName((OGRFieldType)iType),</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>                  ltype_opt[0].c_str()))</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>       labelType=(OGRFieldType) iType;</div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>   }</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>   <span class="keywordflow">switch</span>( fieldType ){</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>   <span class="keywordflow">case</span> OFTInteger:</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>   <span class="keywordflow">case</span> OFTReal:</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>   <span class="keywordflow">case</span> OFTRealList:</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>   <span class="keywordflow">case</span> OFTString:</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>     <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>       std::cout << std::endl << <span class="stringliteral">"field type is: "</span> << OGRFieldDefn::GetFieldTypeName(fieldType) << std::endl;</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>   <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>     cerr << <span class="stringliteral">"field type "</span> << OGRFieldDefn::GetFieldTypeName(fieldType) << <span class="stringliteral">" not supported"</span> << std::endl;</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>     exit(0);</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>   }</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>   <span class="keywordflow">switch</span>( labelType ){</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>   <span class="keywordflow">case</span> OFTInteger:</div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>   <span class="keywordflow">case</span> OFTReal:</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>   <span class="keywordflow">case</span> OFTRealList:</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>   <span class="keywordflow">case</span> OFTString:</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>     <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>       std::cout << std::endl << <span class="stringliteral">"label type is: "</span> << OGRFieldDefn::GetFieldTypeName(labelType) << std::endl;</div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>   <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>     cerr << <span class="stringliteral">"label type "</span> << OGRFieldDefn::GetFieldTypeName(labelType) << <span class="stringliteral">" not supported"</span> << std::endl;</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>     exit(0);</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>   }</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>   </div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>   <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>   srand(time(NULL));</div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span> </div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>   <span class="keywordtype">bool</span> sampleIsRaster=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>   <span class="keywordtype">bool</span> sampleIsVirtual=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span> </div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>   <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a> sampleReaderOgr;</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>   <a class="code" href="classImgWriterOgr.html">ImgWriterOgr</a> sampleWriterOgr;</div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span> </div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>   <span class="keywordflow">if</span>(sample_opt.size()){</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>       sampleReaderOgr.open(sample_opt[0]);</div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>     }</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>     <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorString){</div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>       sampleIsRaster=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>     }</div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>   }</div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>       sampleWriterOgr.open(<span class="stringliteral">"/vsimem/virtual"</span>,ogrformat_opt[0]);</div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>     }</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>     <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorString){</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>       cerr << errorString << endl;</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>     }</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>     <span class="keywordtype">char</span>     **papszOptions=NULL;</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>     sampleWriterOgr.createLayer(<span class="stringliteral">"points"</span>, imgReader.getProjection(), wkbPoint, papszOptions);</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>     sampleIsVirtual=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span> </div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>     <span class="comment">// string fieldName="label";</span></div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>     <span class="comment">// string fieldValue="class";</span></div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>     <span class="comment">// sampleWriterOgr.createField(fieldName,OFTString);</span></div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>     <span class="keywordflow">if</span>(random_opt.size()){</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>       <span class="comment">//create simple random sampling within boundary</span></div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>       OGRPoint pt;</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>       <span class="keywordtype">double</span> ulx,uly,lrx,lry;</div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>       imgReader.getBoundingBox(ulx,uly,lrx,lry);</div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>       <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ipoint=1;ipoint<=random_opt[0];++ipoint){</div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>     OGRFeature *pointFeature;</div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>     pointFeature=sampleWriterOgr.createFeature();</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>     <span class="comment">// pointFeature->SetField(fieldName.c_str(),fieldValue.c_str());</span></div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span>     <span class="keywordtype">double</span> theX=ulx+<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(rand())/(RAND_MAX)*(lrx-ulx);</div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>     <span class="keywordtype">double</span> theY=uly-<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(rand())/(RAND_MAX)*(uly-lry);</div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>     pt.setX(theX);</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>     pt.setY(theY);</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span>     pointFeature->SetGeometry( &pt ); </div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>     <span class="keywordflow">if</span>(sampleWriterOgr.createFeature(pointFeature) != OGRERR_NONE ){</div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span>       cerr << <span class="stringliteral">"Failed to create feature in shapefile"</span> << endl;</div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>       exit( 1 );</div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>     }</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>     OGRFeature::DestroyFeature(pointFeature);</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>       }</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span>     }</div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(grid_opt.size()){</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>       <span class="comment">//create systematic grid of points </span></div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>       OGRPoint pt;</div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>       <span class="keywordtype">double</span> ulx,uly,lrx,lry;</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span>       imgReader.getBoundingBox(ulx,uly,lrx,lry);</div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ipoint=0;</div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>       <span class="keywordflow">for</span>(<span class="keywordtype">double</span> theY=uly-grid_opt[0]/2;theY>lry;theY-=grid_opt[0]){</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span>     <span class="keywordflow">for</span>(<span class="keywordtype">double</span> theX=ulx+grid_opt[0]/2;theX<lrx;theX+=grid_opt[0]){</div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>       <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span>         cout << <span class="stringliteral">"position: "</span> << theX << <span class="stringliteral">" "</span> << theY << endl;</div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span>       OGRFeature *pointFeature;</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>       pointFeature=sampleWriterOgr.createFeature();</div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span>       <span class="comment">// pointFeature->SetField(fieldName.c_str(),fieldValue.c_str());</span></div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span>       pt.setX(theX);</div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span>       pt.setY(theY);</div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span>       pointFeature->SetGeometry( &pt ); </div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span>       <span class="keywordflow">if</span>(sampleWriterOgr.createFeature(pointFeature) != OGRERR_NONE ){</div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span>         cerr << <span class="stringliteral">"Failed to create feature in shapefile"</span> << endl;</div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span>         exit( 1 );</div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span>       }</div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>       OGRFeature::DestroyFeature(pointFeature);</div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>     }</div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span>       }</div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span>     }</div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span>       std::cerr << <span class="stringliteral">"No sample dataset provided (use option -s). Use --help for help information"</span>;</div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span>       exit(0);</div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span>     }</div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span>       sampleWriterOgr.close();</div>
-<div class="line"><a name="l00445"></a><span class="lineno">  445</span>       sampleReaderOgr.open(<span class="stringliteral">"/vsimem/virtual"</span>);</div>
-<div class="line"><a name="l00446"></a><span class="lineno">  446</span>     }</div>
-<div class="line"><a name="l00447"></a><span class="lineno">  447</span>     <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorString){</div>
-<div class="line"><a name="l00448"></a><span class="lineno">  448</span>       cerr << errorString << endl;</div>
-<div class="line"><a name="l00449"></a><span class="lineno">  449</span>     }</div>
-<div class="line"><a name="l00450"></a><span class="lineno">  450</span>   }</div>
-<div class="line"><a name="l00451"></a><span class="lineno">  451</span> </div>
-<div class="line"><a name="l00452"></a><span class="lineno">  452</span>   <span class="keywordflow">if</span>(sampleIsRaster){</div>
-<div class="line"><a name="l00453"></a><span class="lineno">  453</span>     <span class="keywordflow">if</span>(class_opt.empty()){</div>
-<div class="line"><a name="l00454"></a><span class="lineno">  454</span>       <span class="comment">// std::cout << "Warning: no classes selected, if a classes must be extracted, set to -1 for all classes using option -c -1" << std::endl;</span></div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span>       <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> classReader;</div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</span>       <a class="code" href="classImgWriterOgr.html">ImgWriterOgr</a> ogrWriter;</div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span>       assert(sample_opt.size());</div>
-<div class="line"><a name="l00458"></a><span class="lineno">  458</span>       classReader.open(sample_opt[0]);</div>
-<div class="line"><a name="l00459"></a><span class="lineno">  459</span>       <span class="comment">// vector<int> classBuffer(classReader.nrOfCol());</span></div>
-<div class="line"><a name="l00460"></a><span class="lineno">  460</span>       vector<double> classBuffer(classReader.nrOfCol());</div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span>       <a class="code" href="classVector2d.html">Vector2d<double></a> imgBuffer(nband);<span class="comment">//[band][col]</span></div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span>       vector<double> sample(2+nband);<span class="comment">//x,y,band values</span></div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span>       <a class="code" href="classVector2d.html">Vector2d<double></a> writeBuffer;</div>
-<div class="line"><a name="l00464"></a><span class="lineno">  464</span>       <span class="comment">// vector<int> writeBufferClass;</span></div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span>       vector<double> writeBufferClass;</div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>       vector<int> selectedClass;</div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span>       <a class="code" href="classVector2d.html">Vector2d<double></a> selectedBuffer;</div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span>       <span class="keywordtype">double</span> oldimgrow=-1;</div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span>       <span class="keywordtype">int</span> irow=0;</div>
-<div class="line"><a name="l00470"></a><span class="lineno">  470</span>       <span class="keywordtype">int</span> icol=0;</div>
-<div class="line"><a name="l00471"></a><span class="lineno">  471</span>       <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00472"></a><span class="lineno">  472</span>         std::cout << <span class="stringliteral">"extracting sample from image..."</span> << std::endl;</div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span>       progress=0;</div>
-<div class="line"><a name="l00474"></a><span class="lineno">  474</span>       pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span>       <span class="keywordflow">for</span>(irow=0;irow<classReader.nrOfRow();++irow){</div>
-<div class="line"><a name="l00476"></a><span class="lineno">  476</span>         <span class="keywordflow">if</span>(irow%down_opt[0])</div>
-<div class="line"><a name="l00477"></a><span class="lineno">  477</span>           <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00478"></a><span class="lineno">  478</span>         <span class="comment">// classReader.readData(classBuffer,GDT_Int32,irow);</span></div>
-<div class="line"><a name="l00479"></a><span class="lineno">  479</span>         classReader.readData(classBuffer,GDT_Float64,irow);</div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span>         <span class="keywordtype">double</span> x,y;<span class="comment">//geo coordinates</span></div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span>         <span class="keywordtype">double</span> iimg,jimg;<span class="comment">//image coordinates in img image</span></div>
-<div class="line"><a name="l00482"></a><span class="lineno">  482</span>         <span class="keywordflow">for</span>(icol=0;icol<classReader.nrOfCol();++icol){</div>
-<div class="line"><a name="l00483"></a><span class="lineno">  483</span>           <span class="keywordflow">if</span>(icol%down_opt[0])</div>
-<div class="line"><a name="l00484"></a><span class="lineno">  484</span>             <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00485"></a><span class="lineno">  485</span>           <span class="comment">// int theClass=0;</span></div>
-<div class="line"><a name="l00486"></a><span class="lineno">  486</span>           <span class="keywordtype">double</span> theClass=classBuffer[icol];</div>
-<div class="line"><a name="l00487"></a><span class="lineno">  487</span>           <span class="comment">// int processClass=-1;</span></div>
-<div class="line"><a name="l00488"></a><span class="lineno">  488</span>           <span class="keywordtype">int</span> processClass=0;</div>
-<div class="line"><a name="l00489"></a><span class="lineno">  489</span>           <span class="comment">// if(class_opt[0]<0){//process every class except 0</span></div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span>           <span class="comment">//   if(classBuffer[icol]){</span></div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span>           <span class="comment">//     processClass=0;</span></div>
-<div class="line"><a name="l00492"></a><span class="lineno">  492</span>           <span class="comment">//     theClass=classBuffer[icol];</span></div>
-<div class="line"><a name="l00493"></a><span class="lineno">  493</span>           <span class="comment">//   }</span></div>
-<div class="line"><a name="l00494"></a><span class="lineno">  494</span>           <span class="comment">// }</span></div>
-<div class="line"><a name="l00495"></a><span class="lineno">  495</span>           <span class="comment">// else{</span></div>
-<div class="line"><a name="l00496"></a><span class="lineno">  496</span>           <span class="comment">//   for(int iclass=0;iclass<class_opt.size();++iclass){</span></div>
-<div class="line"><a name="l00497"></a><span class="lineno">  497</span>           <span class="comment">//     if(classBuffer[icol]==class_opt[iclass]){</span></div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span>           <span class="comment">//       processClass=iclass;</span></div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span>           <span class="comment">//       theClass=class_opt[iclass];</span></div>
-<div class="line"><a name="l00500"></a><span class="lineno">  500</span>           <span class="comment">//     }</span></div>
-<div class="line"><a name="l00501"></a><span class="lineno">  501</span>           <span class="comment">//   }</span></div>
-<div class="line"><a name="l00502"></a><span class="lineno">  502</span>           <span class="comment">// }</span></div>
-<div class="line"><a name="l00503"></a><span class="lineno">  503</span>           <span class="comment">// if(processClass>=0){</span></div>
-<div class="line"><a name="l00504"></a><span class="lineno">  504</span>           <span class="keywordtype">bool</span> valid=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00505"></a><span class="lineno">  505</span>           <span class="keywordflow">if</span>(valid){</div>
-<div class="line"><a name="l00506"></a><span class="lineno">  506</span>             <span class="keywordflow">if</span>(geo_opt[0]){</div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span>               classReader.image2geo(icol,irow,x,y);</div>
-<div class="line"><a name="l00508"></a><span class="lineno">  508</span>               sample[0]=x;</div>
-<div class="line"><a name="l00509"></a><span class="lineno">  509</span>               sample[1]=y;</div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span>               <span class="keywordflow">if</span>(verbose_opt[0]>1){</div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span>                 std::cout.precision(12);</div>
-<div class="line"><a name="l00512"></a><span class="lineno">  512</span>                 std::cout << theClass << <span class="stringliteral">" "</span> << x << <span class="stringliteral">" "</span> << y << std::endl;</div>
-<div class="line"><a name="l00513"></a><span class="lineno">  513</span>               }</div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span>               <span class="comment">//find col in img</span></div>
-<div class="line"><a name="l00515"></a><span class="lineno">  515</span>               imgReader.geo2image(x,y,iimg,jimg);</div>
-<div class="line"><a name="l00516"></a><span class="lineno">  516</span>               <span class="comment">//nearest neighbour</span></div>
-<div class="line"><a name="l00517"></a><span class="lineno">  517</span>               jimg=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(jimg);</div>
-<div class="line"><a name="l00518"></a><span class="lineno">  518</span>               iimg=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(iimg);</div>
-<div class="line"><a name="l00519"></a><span class="lineno">  519</span>               <span class="keywordflow">if</span>(static_cast<int>(iimg)<0||<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(iimg)>=imgReader.nrOfCol())</div>
-<div class="line"><a name="l00520"></a><span class="lineno">  520</span>                 <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00521"></a><span class="lineno">  521</span>             }</div>
-<div class="line"><a name="l00522"></a><span class="lineno">  522</span>             <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00523"></a><span class="lineno">  523</span>               iimg=icol;</div>
-<div class="line"><a name="l00524"></a><span class="lineno">  524</span>               jimg=irow;</div>
-<div class="line"><a name="l00525"></a><span class="lineno">  525</span>               sample[0]=iimg;</div>
-<div class="line"><a name="l00526"></a><span class="lineno">  526</span>               sample[1]=jimg;</div>
-<div class="line"><a name="l00527"></a><span class="lineno">  527</span>             }</div>
-<div class="line"><a name="l00528"></a><span class="lineno">  528</span>             <span class="keywordflow">if</span>(static_cast<int>(jimg)<0||<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(jimg)>=imgReader.nrOfRow())</div>
-<div class="line"><a name="l00529"></a><span class="lineno">  529</span>               <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00530"></a><span class="lineno">  530</span> </div>
-<div class="line"><a name="l00531"></a><span class="lineno">  531</span>             <span class="keywordtype">bool</span> valid=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00532"></a><span class="lineno">  532</span> </div>
-<div class="line"><a name="l00533"></a><span class="lineno">  533</span>             <span class="keywordflow">if</span>(static_cast<int>(jimg)!=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(oldimgrow)){</div>
-<div class="line"><a name="l00534"></a><span class="lineno">  534</span>               assert(imgBuffer.size()==nband);</div>
-<div class="line"><a name="l00535"></a><span class="lineno">  535</span>               <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l00536"></a><span class="lineno">  536</span>         <span class="keywordtype">int</span> theBand=(band_opt.size()) ? band_opt[iband] : iband;</div>
-<div class="line"><a name="l00537"></a><span class="lineno">  537</span>                 imgReader.readData(imgBuffer[iband],GDT_Float64,static_cast<int>(jimg),theBand);</div>
-<div class="line"><a name="l00538"></a><span class="lineno">  538</span>                 assert(imgBuffer[iband].size()==imgReader.nrOfCol());</div>
-<div class="line"><a name="l00539"></a><span class="lineno">  539</span>         <span class="keywordflow">if</span>(srcnodata_opt.size()){</div>
-<div class="line"><a name="l00540"></a><span class="lineno">  540</span>           vector<int>::const_iterator bndit=bndnodata_opt.begin();</div>
-<div class="line"><a name="l00541"></a><span class="lineno">  541</span>           vector<double>::const_iterator srcit=srcnodata_opt.begin();</div>
-<div class="line"><a name="l00542"></a><span class="lineno">  542</span>           <span class="keywordflow">while</span>(bndit!=bndnodata_opt.end()&&srcit!=srcnodata_opt.end()){</div>
-<div class="line"><a name="l00543"></a><span class="lineno">  543</span>             <span class="keywordflow">if</span>((*bndit==theBand)&&(*srcit==imgBuffer[iband][<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(iimg)])){</div>
-<div class="line"><a name="l00544"></a><span class="lineno">  544</span>               valid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00545"></a><span class="lineno">  545</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00546"></a><span class="lineno">  546</span>             }</div>
-<div class="line"><a name="l00547"></a><span class="lineno">  547</span>             <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00548"></a><span class="lineno">  548</span>               ++bndit;</div>
-<div class="line"><a name="l00549"></a><span class="lineno">  549</span>               ++srcit;</div>
-<div class="line"><a name="l00550"></a><span class="lineno">  550</span>             }</div>
-<div class="line"><a name="l00551"></a><span class="lineno">  551</span>           }</div>
-<div class="line"><a name="l00552"></a><span class="lineno">  552</span>         }</div>
-<div class="line"><a name="l00553"></a><span class="lineno">  553</span>           }</div>
-<div class="line"><a name="l00554"></a><span class="lineno">  554</span>               oldimgrow=jimg;</div>
-<div class="line"><a name="l00555"></a><span class="lineno">  555</span>         }</div>
-<div class="line"><a name="l00556"></a><span class="lineno">  556</span> </div>
-<div class="line"><a name="l00557"></a><span class="lineno">  557</span>             <span class="keywordflow">if</span>(valid){</div>
-<div class="line"><a name="l00558"></a><span class="lineno">  558</span>               <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<imgBuffer.size();++iband){</div>
-<div class="line"><a name="l00559"></a><span class="lineno">  559</span>                 <span class="keywordflow">if</span>(imgBuffer[iband].size()!=imgReader.nrOfCol()){</div>
-<div class="line"><a name="l00560"></a><span class="lineno">  560</span>                   std::cout << <span class="stringliteral">"Error in band "</span> << iband << <span class="stringliteral">": "</span> << imgBuffer[iband].size() << <span class="stringliteral">"!="</span> << imgReader.nrOfCol() << std::endl;</div>
-<div class="line"><a name="l00561"></a><span class="lineno">  561</span>                   assert(imgBuffer[iband].size()==imgReader.nrOfCol());</div>
-<div class="line"><a name="l00562"></a><span class="lineno">  562</span>                 }</div>
-<div class="line"><a name="l00563"></a><span class="lineno">  563</span>                 sample[iband+2]=imgBuffer[iband][<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(iimg)];</div>
-<div class="line"><a name="l00564"></a><span class="lineno">  564</span>               }</div>
-<div class="line"><a name="l00565"></a><span class="lineno">  565</span>               <span class="keywordtype">float</span> theThreshold=(threshold_opt.size()>1)?threshold_opt[processClass]:threshold_opt[0];</div>
-<div class="line"><a name="l00566"></a><span class="lineno">  566</span>               <span class="keywordflow">if</span>(theThreshold>0){<span class="comment">//percentual value</span></div>
-<div class="line"><a name="l00567"></a><span class="lineno">  567</span>                 <span class="keywordtype">double</span> p=<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(rand())/(RAND_MAX);</div>
-<div class="line"><a name="l00568"></a><span class="lineno">  568</span>                 p*=100.0;</div>
-<div class="line"><a name="l00569"></a><span class="lineno">  569</span>                 <span class="keywordflow">if</span>(p>theThreshold)</div>
-<div class="line"><a name="l00570"></a><span class="lineno">  570</span>           <span class="keywordflow">continue</span>;<span class="comment">//do not select for now, go to next column</span></div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span>               }</div>
-<div class="line"><a name="l00572"></a><span class="lineno">  572</span>               <span class="keywordflow">else</span> <span class="keywordflow">if</span>(nvalid.size()>processClass){<span class="comment">//absolute value</span></div>
-<div class="line"><a name="l00573"></a><span class="lineno">  573</span>                 <span class="keywordflow">if</span>(nvalid[processClass]>=-theThreshold)</div>
-<div class="line"><a name="l00574"></a><span class="lineno">  574</span>                   <span class="keywordflow">continue</span>;<span class="comment">//do not select any more pixels for this class, go to next column to search for other classes</span></div>
-<div class="line"><a name="l00575"></a><span class="lineno">  575</span>               }</div>
-<div class="line"><a name="l00576"></a><span class="lineno">  576</span>           writeBuffer.push_back(sample);</div>
-<div class="line"><a name="l00577"></a><span class="lineno">  577</span>           writeBufferClass.push_back(theClass);</div>
-<div class="line"><a name="l00578"></a><span class="lineno">  578</span>           ++ntotalvalid;</div>
-<div class="line"><a name="l00579"></a><span class="lineno">  579</span>               <span class="keywordflow">if</span>(nvalid.size()>processClass)</div>
-<div class="line"><a name="l00580"></a><span class="lineno">  580</span>                 ++(nvalid[processClass]);</div>
-<div class="line"><a name="l00581"></a><span class="lineno">  581</span>         }</div>
-<div class="line"><a name="l00582"></a><span class="lineno">  582</span>             <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00583"></a><span class="lineno">  583</span>               ++ntotalinvalid;</div>
-<div class="line"><a name="l00584"></a><span class="lineno">  584</span>               <span class="keywordflow">if</span>(ninvalid.size()>processClass)</div>
-<div class="line"><a name="l00585"></a><span class="lineno">  585</span>                 ++(ninvalid[processClass]);</div>
-<div class="line"><a name="l00586"></a><span class="lineno">  586</span>             }</div>
-<div class="line"><a name="l00587"></a><span class="lineno">  587</span>           }<span class="comment">//processClass</span></div>
-<div class="line"><a name="l00588"></a><span class="lineno">  588</span>         }<span class="comment">//icol</span></div>
-<div class="line"><a name="l00589"></a><span class="lineno">  589</span>         progress=<span class="keyword">static_cast<</span><span class="keywordtype">float</span><span class="keyword">></span>(irow+1.0)/classReader.nrOfRow();</div>
-<div class="line"><a name="l00590"></a><span class="lineno">  590</span>         pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00591"></a><span class="lineno">  591</span>       }<span class="comment">//irow</span></div>
-<div class="line"><a name="l00592"></a><span class="lineno">  592</span>       progress=100;</div>
-<div class="line"><a name="l00593"></a><span class="lineno">  593</span>       pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00594"></a><span class="lineno">  594</span>       <span class="keywordflow">if</span>(writeBuffer.size()>0){</div>
-<div class="line"><a name="l00595"></a><span class="lineno">  595</span>         assert(ntotalvalid==writeBuffer.size());</div>
-<div class="line"><a name="l00596"></a><span class="lineno">  596</span>         <span class="keywordflow">if</span>(verbose_opt[0]>0)</div>
-<div class="line"><a name="l00597"></a><span class="lineno">  597</span>           std::cout << <span class="stringliteral">"creating image sample writer "</span> << output_opt[0] << <span class="stringliteral">" with "</span> << writeBuffer.size() << <span class="stringliteral">" samples ("</span> << ntotalinvalid << <span class="stringliteral">" invalid)"</span> << std::endl;</div>
-<div class="line"><a name="l00598"></a><span class="lineno">  598</span>         ogrWriter.open(output_opt[0],ogrformat_opt[0]);</div>
-<div class="line"><a name="l00599"></a><span class="lineno">  599</span>         <span class="keywordtype">char</span>     **papszOptions=NULL;</div>
-<div class="line"><a name="l00600"></a><span class="lineno">  600</span>         ostringstream slayer;</div>
-<div class="line"><a name="l00601"></a><span class="lineno">  601</span>         slayer << <span class="stringliteral">"training data"</span>;</div>
-<div class="line"><a name="l00602"></a><span class="lineno">  602</span>         std::string layername=slayer.str();</div>
-<div class="line"><a name="l00603"></a><span class="lineno">  603</span>         ogrWriter.createLayer(layername, imgReader.getProjection(), wkbPoint, papszOptions);</div>
-<div class="line"><a name="l00604"></a><span class="lineno">  604</span>         std::string fieldname=<span class="stringliteral">"fid"</span>;<span class="comment">//number of the point</span></div>
-<div class="line"><a name="l00605"></a><span class="lineno">  605</span>         ogrWriter.createField(fieldname,OFTInteger);</div>
-<div class="line"><a name="l00606"></a><span class="lineno">  606</span>         map<std::string,double> pointAttributes;</div>
-<div class="line"><a name="l00607"></a><span class="lineno">  607</span>         ogrWriter.createField(label_opt[0],labelType);</div>
-<div class="line"><a name="l00608"></a><span class="lineno">  608</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l00609"></a><span class="lineno">  609</span>       <span class="keywordtype">int</span> theBand=(band_opt.size()) ? band_opt[iband] : iband;</div>
-<div class="line"><a name="l00610"></a><span class="lineno">  610</span>           ogrWriter.createField(fieldname_opt[iband],fieldType);</div>
-<div class="line"><a name="l00611"></a><span class="lineno">  611</span>         }</div>
-<div class="line"><a name="l00612"></a><span class="lineno">  612</span>         std::cout << <span class="stringliteral">"writing sample to "</span> << output_opt[0] << <span class="stringliteral">"..."</span> << std::endl;</div>
-<div class="line"><a name="l00613"></a><span class="lineno">  613</span>         progress=0;</div>
-<div class="line"><a name="l00614"></a><span class="lineno">  614</span>         pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00615"></a><span class="lineno">  615</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<writeBuffer.size();++isample){</div>
-<div class="line"><a name="l00616"></a><span class="lineno">  616</span>           <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00617"></a><span class="lineno">  617</span>             std::cout << <span class="stringliteral">"writing sample "</span> << isample << std::endl;</div>
-<div class="line"><a name="l00618"></a><span class="lineno">  618</span>           pointAttributes[label_opt[0]]=writeBufferClass[isample];</div>
-<div class="line"><a name="l00619"></a><span class="lineno">  619</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<writeBuffer[0].size()-2;++iband){</div>
-<div class="line"><a name="l00620"></a><span class="lineno">  620</span>         <span class="keywordtype">int</span> theBand=(band_opt.size()) ? band_opt[iband] : iband;</div>
-<div class="line"><a name="l00621"></a><span class="lineno">  621</span>             <span class="comment">// ostringstream fs;</span></div>
-<div class="line"><a name="l00622"></a><span class="lineno">  622</span>             <span class="comment">// if(nband==1)</span></div>
-<div class="line"><a name="l00623"></a><span class="lineno">  623</span>             <span class="comment">//   fs << fieldname_opt[0];</span></div>
-<div class="line"><a name="l00624"></a><span class="lineno">  624</span>             <span class="comment">// else</span></div>
-<div class="line"><a name="l00625"></a><span class="lineno">  625</span>             <span class="comment">//   fs << fieldname_opt[0] << theBand;</span></div>
-<div class="line"><a name="l00626"></a><span class="lineno">  626</span>             <span class="comment">// pointAttributes[fs.str()]=writeBuffer[isample][iband+2];</span></div>
-<div class="line"><a name="l00627"></a><span class="lineno">  627</span>             pointAttributes[fieldname_opt[iband]]=writeBuffer[isample][iband+2];</div>
-<div class="line"><a name="l00628"></a><span class="lineno">  628</span>           }</div>
-<div class="line"><a name="l00629"></a><span class="lineno">  629</span>           <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00630"></a><span class="lineno">  630</span>             std::cout << <span class="stringliteral">"all bands written"</span> << std::endl;</div>
-<div class="line"><a name="l00631"></a><span class="lineno">  631</span>           ogrWriter.addPoint(writeBuffer[isample][0],writeBuffer[isample][1],pointAttributes,fieldname,isample);</div>
-<div class="line"><a name="l00632"></a><span class="lineno">  632</span>           progress=<span class="keyword">static_cast<</span><span class="keywordtype">float</span><span class="keyword">></span>(isample+1.0)/writeBuffer.size();</div>
-<div class="line"><a name="l00633"></a><span class="lineno">  633</span>           pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00634"></a><span class="lineno">  634</span>         }</div>
-<div class="line"><a name="l00635"></a><span class="lineno">  635</span>         ogrWriter.close();</div>
-<div class="line"><a name="l00636"></a><span class="lineno">  636</span>       }</div>
-<div class="line"><a name="l00637"></a><span class="lineno">  637</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00638"></a><span class="lineno">  638</span>         std::cout << <span class="stringliteral">"No data found for any class "</span> << std::endl;</div>
-<div class="line"><a name="l00639"></a><span class="lineno">  639</span>       }</div>
-<div class="line"><a name="l00640"></a><span class="lineno">  640</span>       classReader.close();</div>
-<div class="line"><a name="l00641"></a><span class="lineno">  641</span>       nsample=writeBuffer.size();</div>
-<div class="line"><a name="l00642"></a><span class="lineno">  642</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00643"></a><span class="lineno">  643</span>         std::cout << <span class="stringliteral">"total number of samples written: "</span> << nsample << std::endl;</div>
-<div class="line"><a name="l00644"></a><span class="lineno">  644</span>     }</div>
-<div class="line"><a name="l00645"></a><span class="lineno">  645</span>     <span class="keywordflow">else</span>{<span class="comment">//class_opt.size()!=0</span></div>
-<div class="line"><a name="l00646"></a><span class="lineno">  646</span>       assert(class_opt[0]);</div>
-<div class="line"><a name="l00647"></a><span class="lineno">  647</span>       <span class="comment">//   if(class_opt[0]){</span></div>
-<div class="line"><a name="l00648"></a><span class="lineno">  648</span>       assert(threshold_opt.size()==1||threshold_opt.size()==class_opt.size());</div>
-<div class="line"><a name="l00649"></a><span class="lineno">  649</span>       <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> classReader;</div>
-<div class="line"><a name="l00650"></a><span class="lineno">  650</span>       <a class="code" href="classImgWriterOgr.html">ImgWriterOgr</a> ogrWriter;</div>
-<div class="line"><a name="l00651"></a><span class="lineno">  651</span>       <span class="keywordflow">if</span>(verbose_opt[0]>1){</div>
-<div class="line"><a name="l00652"></a><span class="lineno">  652</span>         std::cout << <span class="stringliteral">"reading position from sample dataset "</span> << std::endl;</div>
-<div class="line"><a name="l00653"></a><span class="lineno">  653</span>         std::cout << <span class="stringliteral">"class thresholds: "</span> << std::endl;</div>
-<div class="line"><a name="l00654"></a><span class="lineno">  654</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<class_opt.size();++iclass){</div>
-<div class="line"><a name="l00655"></a><span class="lineno">  655</span>           <span class="keywordflow">if</span>(threshold_opt.size()>1)</div>
-<div class="line"><a name="l00656"></a><span class="lineno">  656</span>             std::cout << class_opt[iclass] << <span class="stringliteral">": "</span> << threshold_opt[iclass] << std::endl;</div>
-<div class="line"><a name="l00657"></a><span class="lineno">  657</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00658"></a><span class="lineno">  658</span>             std::cout << class_opt[iclass] << <span class="stringliteral">": "</span> << threshold_opt[0] << std::endl;</div>
-<div class="line"><a name="l00659"></a><span class="lineno">  659</span>         }</div>
-<div class="line"><a name="l00660"></a><span class="lineno">  660</span>       }</div>
-<div class="line"><a name="l00661"></a><span class="lineno">  661</span>       classReader.open(sample_opt[0]);</div>
-<div class="line"><a name="l00662"></a><span class="lineno">  662</span>       vector<int> classBuffer(classReader.nrOfCol());</div>
-<div class="line"><a name="l00663"></a><span class="lineno">  663</span>       <span class="comment">// vector<double> classBuffer(classReader.nrOfCol());</span></div>
-<div class="line"><a name="l00664"></a><span class="lineno">  664</span>       <a class="code" href="classVector2d.html">Vector2d<double></a> imgBuffer(nband);<span class="comment">//[band][col]</span></div>
-<div class="line"><a name="l00665"></a><span class="lineno">  665</span>       vector<double> sample(2+nband);<span class="comment">//x,y,band values</span></div>
-<div class="line"><a name="l00666"></a><span class="lineno">  666</span>       <a class="code" href="classVector2d.html">Vector2d<double></a> writeBuffer;</div>
-<div class="line"><a name="l00667"></a><span class="lineno">  667</span>       vector<int> writeBufferClass;</div>
-<div class="line"><a name="l00668"></a><span class="lineno">  668</span>       <span class="comment">// vector<double> writeBufferClass;</span></div>
-<div class="line"><a name="l00669"></a><span class="lineno">  669</span>       vector<int> selectedClass;</div>
-<div class="line"><a name="l00670"></a><span class="lineno">  670</span>       <a class="code" href="classVector2d.html">Vector2d<double></a> selectedBuffer;</div>
-<div class="line"><a name="l00671"></a><span class="lineno">  671</span>       <span class="keywordtype">double</span> oldimgrow=-1;</div>
-<div class="line"><a name="l00672"></a><span class="lineno">  672</span>       <span class="keywordtype">int</span> irow=0;</div>
-<div class="line"><a name="l00673"></a><span class="lineno">  673</span>       <span class="keywordtype">int</span> icol=0;</div>
-<div class="line"><a name="l00674"></a><span class="lineno">  674</span>       <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00675"></a><span class="lineno">  675</span>         std::cout << <span class="stringliteral">"extracting sample from image..."</span> << std::endl;</div>
-<div class="line"><a name="l00676"></a><span class="lineno">  676</span>       progress=0;</div>
-<div class="line"><a name="l00677"></a><span class="lineno">  677</span>       pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00678"></a><span class="lineno">  678</span>       <span class="keywordflow">for</span>(irow=0;irow<classReader.nrOfRow();++irow){</div>
-<div class="line"><a name="l00679"></a><span class="lineno">  679</span>         <span class="keywordflow">if</span>(irow%down_opt[0])</div>
-<div class="line"><a name="l00680"></a><span class="lineno">  680</span>           <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00681"></a><span class="lineno">  681</span>         classReader.readData(classBuffer,GDT_Int32,irow);</div>
-<div class="line"><a name="l00682"></a><span class="lineno">  682</span>         <span class="comment">// classReader.readData(classBuffer,GDT_Float64,irow);</span></div>
-<div class="line"><a name="l00683"></a><span class="lineno">  683</span>         <span class="keywordtype">double</span> x,y;<span class="comment">//geo coordinates</span></div>
-<div class="line"><a name="l00684"></a><span class="lineno">  684</span>         <span class="keywordtype">double</span> iimg,jimg;<span class="comment">//image coordinates in img image</span></div>
-<div class="line"><a name="l00685"></a><span class="lineno">  685</span>         <span class="keywordflow">for</span>(icol=0;icol<classReader.nrOfCol();++icol){</div>
-<div class="line"><a name="l00686"></a><span class="lineno">  686</span>           <span class="keywordflow">if</span>(icol%down_opt[0])</div>
-<div class="line"><a name="l00687"></a><span class="lineno">  687</span>             <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00688"></a><span class="lineno">  688</span>           <span class="keywordtype">int</span> theClass=0;</div>
-<div class="line"><a name="l00689"></a><span class="lineno">  689</span>           <span class="comment">// double theClass=0;</span></div>
-<div class="line"><a name="l00690"></a><span class="lineno">  690</span>           <span class="keywordtype">int</span> processClass=-1;</div>
-<div class="line"><a name="l00691"></a><span class="lineno">  691</span>           <span class="keywordflow">if</span>(class_opt.empty()){<span class="comment">//process every class</span></div>
-<div class="line"><a name="l00692"></a><span class="lineno">  692</span>             <span class="keywordflow">if</span>(classBuffer[icol]){</div>
-<div class="line"><a name="l00693"></a><span class="lineno">  693</span>               processClass=0;</div>
-<div class="line"><a name="l00694"></a><span class="lineno">  694</span>               theClass=classBuffer[icol];</div>
-<div class="line"><a name="l00695"></a><span class="lineno">  695</span>             }</div>
-<div class="line"><a name="l00696"></a><span class="lineno">  696</span>           }</div>
-<div class="line"><a name="l00697"></a><span class="lineno">  697</span>           <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00698"></a><span class="lineno">  698</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<class_opt.size();++iclass){</div>
-<div class="line"><a name="l00699"></a><span class="lineno">  699</span>               <span class="keywordflow">if</span>(classBuffer[icol]==class_opt[iclass]){</div>
-<div class="line"><a name="l00700"></a><span class="lineno">  700</span>                 processClass=iclass;</div>
-<div class="line"><a name="l00701"></a><span class="lineno">  701</span>                 theClass=class_opt[iclass];</div>
-<div class="line"><a name="l00702"></a><span class="lineno">  702</span>               }</div>
-<div class="line"><a name="l00703"></a><span class="lineno">  703</span>             }</div>
-<div class="line"><a name="l00704"></a><span class="lineno">  704</span>           }</div>
-<div class="line"><a name="l00705"></a><span class="lineno">  705</span>           <span class="keywordflow">if</span>(processClass>=0){</div>
-<div class="line"><a name="l00706"></a><span class="lineno">  706</span>             <span class="comment">//         if(classBuffer[icol]==class_opt[0]){</span></div>
-<div class="line"><a name="l00707"></a><span class="lineno">  707</span>             <span class="keywordflow">if</span>(geo_opt[0]){</div>
-<div class="line"><a name="l00708"></a><span class="lineno">  708</span>               classReader.image2geo(icol,irow,x,y);</div>
-<div class="line"><a name="l00709"></a><span class="lineno">  709</span>               sample[0]=x;</div>
-<div class="line"><a name="l00710"></a><span class="lineno">  710</span>               sample[1]=y;</div>
-<div class="line"><a name="l00711"></a><span class="lineno">  711</span>               <span class="keywordflow">if</span>(verbose_opt[0]>1){</div>
-<div class="line"><a name="l00712"></a><span class="lineno">  712</span>                 std::cout.precision(12);</div>
-<div class="line"><a name="l00713"></a><span class="lineno">  713</span>                 std::cout << theClass << <span class="stringliteral">" "</span> << x << <span class="stringliteral">" "</span> << y << std::endl;</div>
-<div class="line"><a name="l00714"></a><span class="lineno">  714</span>               }</div>
-<div class="line"><a name="l00715"></a><span class="lineno">  715</span>               <span class="comment">//find col in img</span></div>
-<div class="line"><a name="l00716"></a><span class="lineno">  716</span>               imgReader.geo2image(x,y,iimg,jimg);</div>
-<div class="line"><a name="l00717"></a><span class="lineno">  717</span>               <span class="comment">//nearest neighbour</span></div>
-<div class="line"><a name="l00718"></a><span class="lineno">  718</span>               jimg=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(jimg);</div>
-<div class="line"><a name="l00719"></a><span class="lineno">  719</span>               iimg=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(iimg);</div>
-<div class="line"><a name="l00720"></a><span class="lineno">  720</span>               <span class="keywordflow">if</span>(static_cast<int>(iimg)<0||<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(iimg)>=imgReader.nrOfCol())</div>
-<div class="line"><a name="l00721"></a><span class="lineno">  721</span>                 <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00722"></a><span class="lineno">  722</span>             }</div>
-<div class="line"><a name="l00723"></a><span class="lineno">  723</span>             <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00724"></a><span class="lineno">  724</span>               iimg=icol;</div>
-<div class="line"><a name="l00725"></a><span class="lineno">  725</span>               jimg=irow;</div>
-<div class="line"><a name="l00726"></a><span class="lineno">  726</span>               sample[0]=iimg;</div>
-<div class="line"><a name="l00727"></a><span class="lineno">  727</span>               sample[1]=jimg;</div>
-<div class="line"><a name="l00728"></a><span class="lineno">  728</span>             }</div>
-<div class="line"><a name="l00729"></a><span class="lineno">  729</span>             <span class="keywordflow">if</span>(static_cast<int>(jimg)<0||<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(jimg)>=imgReader.nrOfRow())</div>
-<div class="line"><a name="l00730"></a><span class="lineno">  730</span>               <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00731"></a><span class="lineno">  731</span> </div>
-<div class="line"><a name="l00732"></a><span class="lineno">  732</span>             <span class="keywordtype">bool</span> valid=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00733"></a><span class="lineno">  733</span> </div>
-<div class="line"><a name="l00734"></a><span class="lineno">  734</span>             <span class="keywordflow">if</span>(static_cast<int>(jimg)!=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(oldimgrow)){</div>
-<div class="line"><a name="l00735"></a><span class="lineno">  735</span>               assert(imgBuffer.size()==nband);</div>
-<div class="line"><a name="l00736"></a><span class="lineno">  736</span>               <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l00737"></a><span class="lineno">  737</span>         <span class="keywordtype">int</span> theBand=(band_opt.size()) ? band_opt[iband] : iband;</div>
-<div class="line"><a name="l00738"></a><span class="lineno">  738</span>                 imgReader.readData(imgBuffer[iband],GDT_Float64,static_cast<int>(jimg),theBand);</div>
-<div class="line"><a name="l00739"></a><span class="lineno">  739</span>                 assert(imgBuffer[iband].size()==imgReader.nrOfCol());</div>
-<div class="line"><a name="l00740"></a><span class="lineno">  740</span> </div>
-<div class="line"><a name="l00741"></a><span class="lineno">  741</span>         <span class="keywordflow">if</span>(srcnodata_opt.size()){</div>
-<div class="line"><a name="l00742"></a><span class="lineno">  742</span>           vector<int>::const_iterator bndit=bndnodata_opt.begin();</div>
-<div class="line"><a name="l00743"></a><span class="lineno">  743</span>           vector<double>::const_iterator srcit=srcnodata_opt.begin();</div>
-<div class="line"><a name="l00744"></a><span class="lineno">  744</span>           <span class="keywordflow">while</span>(bndit!=bndnodata_opt.end()&&srcit!=srcnodata_opt.end()){</div>
-<div class="line"><a name="l00745"></a><span class="lineno">  745</span>             <span class="keywordflow">if</span>((*bndit==theBand)&&(*srcit==imgBuffer[iband][<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(iimg)])){</div>
-<div class="line"><a name="l00746"></a><span class="lineno">  746</span>               valid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00747"></a><span class="lineno">  747</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00748"></a><span class="lineno">  748</span>             }</div>
-<div class="line"><a name="l00749"></a><span class="lineno">  749</span>             <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00750"></a><span class="lineno">  750</span>               ++bndit;</div>
-<div class="line"><a name="l00751"></a><span class="lineno">  751</span>               ++srcit;</div>
-<div class="line"><a name="l00752"></a><span class="lineno">  752</span>             }</div>
-<div class="line"><a name="l00753"></a><span class="lineno">  753</span>           }</div>
-<div class="line"><a name="l00754"></a><span class="lineno">  754</span>         }</div>
-<div class="line"><a name="l00755"></a><span class="lineno">  755</span>               }</div>
-<div class="line"><a name="l00756"></a><span class="lineno">  756</span>               oldimgrow=jimg;</div>
-<div class="line"><a name="l00757"></a><span class="lineno">  757</span>             }</div>
-<div class="line"><a name="l00758"></a><span class="lineno">  758</span>             <span class="keywordflow">if</span>(valid){</div>
-<div class="line"><a name="l00759"></a><span class="lineno">  759</span>               <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<imgBuffer.size();++iband){</div>
-<div class="line"><a name="l00760"></a><span class="lineno">  760</span>                 <span class="keywordflow">if</span>(imgBuffer[iband].size()!=imgReader.nrOfCol()){</div>
-<div class="line"><a name="l00761"></a><span class="lineno">  761</span>                   std::cout << <span class="stringliteral">"Error in band "</span> << iband << <span class="stringliteral">": "</span> << imgBuffer[iband].size() << <span class="stringliteral">"!="</span> << imgReader.nrOfCol() << std::endl;</div>
-<div class="line"><a name="l00762"></a><span class="lineno">  762</span>                   assert(imgBuffer[iband].size()==imgReader.nrOfCol());</div>
-<div class="line"><a name="l00763"></a><span class="lineno">  763</span>                 }</div>
-<div class="line"><a name="l00764"></a><span class="lineno">  764</span>                 sample[iband+2]=imgBuffer[iband][<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(iimg)];</div>
-<div class="line"><a name="l00765"></a><span class="lineno">  765</span>               }</div>
-<div class="line"><a name="l00766"></a><span class="lineno">  766</span>               <span class="keywordtype">float</span> theThreshold=(threshold_opt.size()>1)?threshold_opt[processClass]:threshold_opt[0];</div>
-<div class="line"><a name="l00767"></a><span class="lineno">  767</span>               <span class="keywordflow">if</span>(theThreshold>0){<span class="comment">//percentual value</span></div>
-<div class="line"><a name="l00768"></a><span class="lineno">  768</span>                 <span class="keywordtype">double</span> p=<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(rand())/(RAND_MAX);</div>
-<div class="line"><a name="l00769"></a><span class="lineno">  769</span>                 p*=100.0;</div>
-<div class="line"><a name="l00770"></a><span class="lineno">  770</span>                 <span class="keywordflow">if</span>(p>theThreshold)</div>
-<div class="line"><a name="l00771"></a><span class="lineno">  771</span>                   <span class="keywordflow">continue</span>;<span class="comment">//do not select for now, go to next column</span></div>
-<div class="line"><a name="l00772"></a><span class="lineno">  772</span>               }</div>
-<div class="line"><a name="l00773"></a><span class="lineno">  773</span>               <span class="keywordflow">else</span> <span class="keywordflow">if</span>(nvalid.size()>processClass){<span class="comment">//absolute value</span></div>
-<div class="line"><a name="l00774"></a><span class="lineno">  774</span>                 <span class="keywordflow">if</span>(nvalid[processClass]>=-theThreshold)</div>
-<div class="line"><a name="l00775"></a><span class="lineno">  775</span>                   <span class="keywordflow">continue</span>;<span class="comment">//do not select any more pixels for this class, go to next column to search for other classes</span></div>
-<div class="line"><a name="l00776"></a><span class="lineno">  776</span>               }</div>
-<div class="line"><a name="l00777"></a><span class="lineno">  777</span>               writeBuffer.push_back(sample);</div>
-<div class="line"><a name="l00778"></a><span class="lineno">  778</span>               <span class="comment">//             writeBufferClass.push_back(class_opt[processClass]);</span></div>
-<div class="line"><a name="l00779"></a><span class="lineno">  779</span>               writeBufferClass.push_back(theClass);</div>
-<div class="line"><a name="l00780"></a><span class="lineno">  780</span>               ++ntotalvalid;</div>
-<div class="line"><a name="l00781"></a><span class="lineno">  781</span>               <span class="keywordflow">if</span>(nvalid.size()>processClass)</div>
-<div class="line"><a name="l00782"></a><span class="lineno">  782</span>                 ++(nvalid[processClass]);</div>
-<div class="line"><a name="l00783"></a><span class="lineno">  783</span>             }</div>
-<div class="line"><a name="l00784"></a><span class="lineno">  784</span>             <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00785"></a><span class="lineno">  785</span>               ++ntotalinvalid;</div>
-<div class="line"><a name="l00786"></a><span class="lineno">  786</span>               <span class="keywordflow">if</span>(ninvalid.size()>processClass)</div>
-<div class="line"><a name="l00787"></a><span class="lineno">  787</span>                 ++(ninvalid[processClass]);</div>
-<div class="line"><a name="l00788"></a><span class="lineno">  788</span>             }</div>
-<div class="line"><a name="l00789"></a><span class="lineno">  789</span>           }<span class="comment">//processClass</span></div>
-<div class="line"><a name="l00790"></a><span class="lineno">  790</span>         }<span class="comment">//icol</span></div>
-<div class="line"><a name="l00791"></a><span class="lineno">  791</span>         progress=<span class="keyword">static_cast<</span><span class="keywordtype">float</span><span class="keyword">></span>(irow+1.0)/classReader.nrOfRow();</div>
-<div class="line"><a name="l00792"></a><span class="lineno">  792</span>         pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00793"></a><span class="lineno">  793</span>       }<span class="comment">//irow</span></div>
-<div class="line"><a name="l00794"></a><span class="lineno">  794</span>       <span class="keywordflow">if</span>(writeBuffer.size()>0){</div>
-<div class="line"><a name="l00795"></a><span class="lineno">  795</span>         assert(ntotalvalid==writeBuffer.size());</div>
-<div class="line"><a name="l00796"></a><span class="lineno">  796</span>         <span class="keywordflow">if</span>(verbose_opt[0]>0)</div>
-<div class="line"><a name="l00797"></a><span class="lineno">  797</span>           std::cout << <span class="stringliteral">"creating image sample writer "</span> << output_opt[0] << <span class="stringliteral">" with "</span> << writeBuffer.size() << <span class="stringliteral">" samples ("</span> << ntotalinvalid << <span class="stringliteral">" invalid)"</span> << std::endl;</div>
-<div class="line"><a name="l00798"></a><span class="lineno">  798</span>         ogrWriter.open(output_opt[0],ogrformat_opt[0]);</div>
-<div class="line"><a name="l00799"></a><span class="lineno">  799</span>         <span class="keywordtype">char</span>     **papszOptions=NULL;</div>
-<div class="line"><a name="l00800"></a><span class="lineno">  800</span>         ostringstream slayer;</div>
-<div class="line"><a name="l00801"></a><span class="lineno">  801</span>         slayer << <span class="stringliteral">"training data"</span>;</div>
-<div class="line"><a name="l00802"></a><span class="lineno">  802</span>         std::string layername=slayer.str();</div>
-<div class="line"><a name="l00803"></a><span class="lineno">  803</span>         ogrWriter.createLayer(layername, imgReader.getProjection(), wkbPoint, papszOptions);</div>
-<div class="line"><a name="l00804"></a><span class="lineno">  804</span>         std::string fieldname=<span class="stringliteral">"fid"</span>;<span class="comment">//number of the point</span></div>
-<div class="line"><a name="l00805"></a><span class="lineno">  805</span>         ogrWriter.createField(fieldname,OFTInteger);</div>
-<div class="line"><a name="l00806"></a><span class="lineno">  806</span>         map<std::string,double> pointAttributes;</div>
-<div class="line"><a name="l00807"></a><span class="lineno">  807</span>         <span class="comment">//         ogrWriter.createField(label_opt[0],OFTInteger);</span></div>
-<div class="line"><a name="l00808"></a><span class="lineno">  808</span>         ogrWriter.createField(label_opt[0],labelType);</div>
-<div class="line"><a name="l00809"></a><span class="lineno">  809</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l00810"></a><span class="lineno">  810</span>       <span class="keywordtype">int</span> theBand=(band_opt.size()) ? band_opt[iband] : iband;</div>
-<div class="line"><a name="l00811"></a><span class="lineno">  811</span>           <span class="comment">// ostringstream fs;</span></div>
-<div class="line"><a name="l00812"></a><span class="lineno">  812</span>           <span class="comment">// if(nband==1)</span></div>
-<div class="line"><a name="l00813"></a><span class="lineno">  813</span>           <span class="comment">//   fs << fieldname_opt[0];</span></div>
-<div class="line"><a name="l00814"></a><span class="lineno">  814</span>           <span class="comment">// else</span></div>
-<div class="line"><a name="l00815"></a><span class="lineno">  815</span>           <span class="comment">//   fs << fieldname_opt[0] << theBand;</span></div>
-<div class="line"><a name="l00816"></a><span class="lineno">  816</span>           <span class="comment">// ogrWriter.createField(fs.str(),fieldType);</span></div>
-<div class="line"><a name="l00817"></a><span class="lineno">  817</span>           ogrWriter.createField(fieldname_opt[iband],fieldType);</div>
-<div class="line"><a name="l00818"></a><span class="lineno">  818</span>         }</div>
-<div class="line"><a name="l00819"></a><span class="lineno">  819</span>         pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00820"></a><span class="lineno">  820</span>         std::cout << <span class="stringliteral">"writing sample to "</span> << output_opt[0] << <span class="stringliteral">"..."</span> << std::endl;</div>
-<div class="line"><a name="l00821"></a><span class="lineno">  821</span>         progress=0;</div>
-<div class="line"><a name="l00822"></a><span class="lineno">  822</span>         pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00823"></a><span class="lineno">  823</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<writeBuffer.size();++isample){</div>
-<div class="line"><a name="l00824"></a><span class="lineno">  824</span>           pointAttributes[label_opt[0]]=writeBufferClass[isample];</div>
-<div class="line"><a name="l00825"></a><span class="lineno">  825</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<writeBuffer[0].size()-2;++iband){</div>
-<div class="line"><a name="l00826"></a><span class="lineno">  826</span>         <span class="keywordtype">int</span> theBand=(band_opt.size()) ? band_opt[iband] : iband;</div>
-<div class="line"><a name="l00827"></a><span class="lineno">  827</span>             <span class="comment">// ostringstream fs;</span></div>
-<div class="line"><a name="l00828"></a><span class="lineno">  828</span>             <span class="comment">// if(nband==1)</span></div>
-<div class="line"><a name="l00829"></a><span class="lineno">  829</span>             <span class="comment">//   fs << fieldname_opt[0];</span></div>
-<div class="line"><a name="l00830"></a><span class="lineno">  830</span>             <span class="comment">// else</span></div>
-<div class="line"><a name="l00831"></a><span class="lineno">  831</span>             <span class="comment">//   fs << fieldname_opt[0] << theBand;</span></div>
-<div class="line"><a name="l00832"></a><span class="lineno">  832</span>             <span class="comment">// pointAttributes[fs.str()]=writeBuffer[isample][iband+2];</span></div>
-<div class="line"><a name="l00833"></a><span class="lineno">  833</span>             pointAttributes[fieldname_opt[iband]]=writeBuffer[isample][iband+2];</div>
-<div class="line"><a name="l00834"></a><span class="lineno">  834</span>           }</div>
-<div class="line"><a name="l00835"></a><span class="lineno">  835</span>           ogrWriter.addPoint(writeBuffer[isample][0],writeBuffer[isample][1],pointAttributes,fieldname,isample);</div>
-<div class="line"><a name="l00836"></a><span class="lineno">  836</span>           progress=<span class="keyword">static_cast<</span><span class="keywordtype">float</span><span class="keyword">></span>(isample+1.0)/writeBuffer.size();</div>
-<div class="line"><a name="l00837"></a><span class="lineno">  837</span>           pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00838"></a><span class="lineno">  838</span>         }</div>
-<div class="line"><a name="l00839"></a><span class="lineno">  839</span>         ogrWriter.close();</div>
-<div class="line"><a name="l00840"></a><span class="lineno">  840</span>       }</div>
-<div class="line"><a name="l00841"></a><span class="lineno">  841</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00842"></a><span class="lineno">  842</span>         std::cout << <span class="stringliteral">"No data found for any class "</span> << std::endl;</div>
-<div class="line"><a name="l00843"></a><span class="lineno">  843</span>       }</div>
-<div class="line"><a name="l00844"></a><span class="lineno">  844</span>       classReader.close();</div>
-<div class="line"><a name="l00845"></a><span class="lineno">  845</span>       nsample=writeBuffer.size();</div>
-<div class="line"><a name="l00846"></a><span class="lineno">  846</span>       <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00847"></a><span class="lineno">  847</span>         std::cout << <span class="stringliteral">"total number of samples written: "</span> << nsample << std::endl;</div>
-<div class="line"><a name="l00848"></a><span class="lineno">  848</span>         <span class="keywordflow">if</span>(nvalid.size()==class_opt.size()){</div>
-<div class="line"><a name="l00849"></a><span class="lineno">  849</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<class_opt.size();++iclass)</div>
-<div class="line"><a name="l00850"></a><span class="lineno">  850</span>             std::cout << <span class="stringliteral">"class "</span> << class_opt[iclass] << <span class="stringliteral">" has "</span> << nvalid[iclass] << <span class="stringliteral">" samples"</span> << std::endl;</div>
-<div class="line"><a name="l00851"></a><span class="lineno">  851</span>         }</div>
-<div class="line"><a name="l00852"></a><span class="lineno">  852</span>       }</div>
-<div class="line"><a name="l00853"></a><span class="lineno">  853</span>     }</div>
-<div class="line"><a name="l00854"></a><span class="lineno">  854</span>   }</div>
-<div class="line"><a name="l00855"></a><span class="lineno">  855</span>   <span class="keywordflow">else</span>{<span class="comment">//vector dataset</span></div>
-<div class="line"><a name="l00856"></a><span class="lineno">  856</span>     <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00857"></a><span class="lineno">  857</span>       std::cout << <span class="stringliteral">"creating image sample writer "</span> << output_opt[0] << std::endl;</div>
-<div class="line"><a name="l00858"></a><span class="lineno">  858</span>     <a class="code" href="classImgWriterOgr.html">ImgWriterOgr</a> ogrWriter;</div>
-<div class="line"><a name="l00859"></a><span class="lineno">  859</span>     <a class="code" href="classImgWriterOgr.html">ImgWriterOgr</a> ogrTestWriter;</div>
-<div class="line"><a name="l00860"></a><span class="lineno">  860</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00861"></a><span class="lineno">  861</span>       ogrWriter.open(output_opt[0],ogrformat_opt[0]);</div>
-<div class="line"><a name="l00862"></a><span class="lineno">  862</span>       <span class="keywordflow">if</span>(test_opt.size()){</div>
-<div class="line"><a name="l00863"></a><span class="lineno">  863</span>     <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00864"></a><span class="lineno">  864</span>       std::cout << <span class="stringliteral">"creating image test writer "</span> << test_opt[0] << std::endl;</div>
-<div class="line"><a name="l00865"></a><span class="lineno">  865</span>     ogrTestWriter.open(test_opt[0],ogrformat_opt[0]);</div>
-<div class="line"><a name="l00866"></a><span class="lineno">  866</span>       }</div>
-<div class="line"><a name="l00867"></a><span class="lineno">  867</span> </div>
-<div class="line"><a name="l00868"></a><span class="lineno">  868</span>       <span class="comment">//if class_opt not set, get number of classes from input image for these rules</span></div>
-<div class="line"><a name="l00869"></a><span class="lineno">  869</span>       <span class="keywordflow">switch</span>(ruleMap[rule_opt[0]]){</div>
-<div class="line"><a name="l00870"></a><span class="lineno">  870</span>       <span class="keywordflow">case</span>(rule::proportion):</div>
-<div class="line"><a name="l00871"></a><span class="lineno">  871</span>       <span class="keywordflow">case</span>(rule::count):</div>
-<div class="line"><a name="l00872"></a><span class="lineno">  872</span>       <span class="keywordflow">case</span>(rule::custom):</div>
-<div class="line"><a name="l00873"></a><span class="lineno">  873</span>       <span class="keywordflow">case</span>(rule::mode):{</div>
-<div class="line"><a name="l00874"></a><span class="lineno">  874</span>     <span class="keywordflow">if</span>(class_opt.empty()){</div>
-<div class="line"><a name="l00875"></a><span class="lineno">  875</span>       <span class="keywordtype">int</span> theBand=0;</div>
-<div class="line"><a name="l00876"></a><span class="lineno">  876</span>       <span class="keywordtype">double</span> minValue=0;</div>
-<div class="line"><a name="l00877"></a><span class="lineno">  877</span>       <span class="keywordtype">double</span> maxValue=0;</div>
-<div class="line"><a name="l00878"></a><span class="lineno">  878</span>       <span class="keywordflow">if</span>(band_opt.size())</div>
-<div class="line"><a name="l00879"></a><span class="lineno">  879</span>         theBand=band_opt[0];</div>
-<div class="line"><a name="l00880"></a><span class="lineno">  880</span>       imgReader.getMinMax(minValue,maxValue,theBand);</div>
-<div class="line"><a name="l00881"></a><span class="lineno">  881</span>       <span class="keywordtype">int</span> nclass=maxValue-minValue+1;</div>
-<div class="line"><a name="l00882"></a><span class="lineno">  882</span>       <span class="keywordflow">if</span>(nclass<0&&nclass<256){</div>
-<div class="line"><a name="l00883"></a><span class="lineno">  883</span>         <span class="keywordtype">string</span> errorString=<span class="stringliteral">"Could not automatically define classes, please set class option"</span>;</div>
-<div class="line"><a name="l00884"></a><span class="lineno">  884</span>         <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00885"></a><span class="lineno">  885</span>       }</div>
-<div class="line"><a name="l00886"></a><span class="lineno">  886</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=minValue;iclass<=maxValue;++iclass)</div>
-<div class="line"><a name="l00887"></a><span class="lineno">  887</span>         class_opt.push_back(iclass);</div>
-<div class="line"><a name="l00888"></a><span class="lineno">  888</span>     }</div>
-<div class="line"><a name="l00889"></a><span class="lineno">  889</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00890"></a><span class="lineno">  890</span>       }</div>
-<div class="line"><a name="l00891"></a><span class="lineno">  891</span>       }</div>
-<div class="line"><a name="l00892"></a><span class="lineno">  892</span>     }</div>
-<div class="line"><a name="l00893"></a><span class="lineno">  893</span>     <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorString){</div>
-<div class="line"><a name="l00894"></a><span class="lineno">  894</span>       cerr << errorString << endl;</div>
-<div class="line"><a name="l00895"></a><span class="lineno">  895</span>       exit(1);</div>
-<div class="line"><a name="l00896"></a><span class="lineno">  896</span>     }</div>
-<div class="line"><a name="l00897"></a><span class="lineno">  897</span>     </div>
-<div class="line"><a name="l00898"></a><span class="lineno">  898</span>     <span class="comment">//support multiple layers</span></div>
-<div class="line"><a name="l00899"></a><span class="lineno">  899</span>     <span class="keywordtype">int</span> nlayerRead=sampleReaderOgr.getDataSource()->GetLayerCount();</div>
-<div class="line"><a name="l00900"></a><span class="lineno">  900</span>     <span class="keywordtype">int</span> ilayerWrite=0;</div>
-<div class="line"><a name="l00901"></a><span class="lineno">  901</span>     <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> ntotalvalid=0;</div>
-<div class="line"><a name="l00902"></a><span class="lineno">  902</span> </div>
-<div class="line"><a name="l00903"></a><span class="lineno">  903</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00904"></a><span class="lineno">  904</span>       std::cout << <span class="stringliteral">"number of layers: "</span> << nlayerRead << endl;</div>
-<div class="line"><a name="l00905"></a><span class="lineno">  905</span>       </div>
-<div class="line"><a name="l00906"></a><span class="lineno">  906</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ilayer=0;ilayer<nlayerRead;++ilayer){</div>
-<div class="line"><a name="l00907"></a><span class="lineno">  907</span>       OGRLayer *readLayer=sampleReaderOgr.getLayer(ilayer);</div>
-<div class="line"><a name="l00908"></a><span class="lineno">  908</span>       <span class="keywordtype">string</span> currentLayername=readLayer->GetName();</div>
-<div class="line"><a name="l00909"></a><span class="lineno">  909</span>       <span class="keywordtype">int</span> layerIndex=ilayer;</div>
-<div class="line"><a name="l00910"></a><span class="lineno">  910</span>       <span class="keywordflow">if</span>(layer_opt.size()){</div>
-<div class="line"><a name="l00911"></a><span class="lineno">  911</span>     vector<string>::const_iterator it=find(layer_opt.begin(),layer_opt.end(),currentLayername);</div>
-<div class="line"><a name="l00912"></a><span class="lineno">  912</span>     <span class="keywordflow">if</span>(it==layer_opt.end())</div>
-<div class="line"><a name="l00913"></a><span class="lineno">  913</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00914"></a><span class="lineno">  914</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00915"></a><span class="lineno">  915</span>       layerIndex=it-layer_opt.begin();</div>
-<div class="line"><a name="l00916"></a><span class="lineno">  916</span>       }</div>
-<div class="line"><a name="l00917"></a><span class="lineno">  917</span>       <span class="keywordtype">float</span> theThreshold=(threshold_opt.size()==layer_opt.size())? threshold_opt[layerIndex]: threshold_opt[0];</div>
-<div class="line"><a name="l00918"></a><span class="lineno">  918</span>       cout << <span class="stringliteral">"processing layer "</span> << currentLayername << endl;</div>
-<div class="line"><a name="l00919"></a><span class="lineno">  919</span>       </div>
-<div class="line"><a name="l00920"></a><span class="lineno">  920</span>       readLayer->ResetReading();</div>
-<div class="line"><a name="l00921"></a><span class="lineno">  921</span>       OGRLayer *writeLayer;</div>
-<div class="line"><a name="l00922"></a><span class="lineno">  922</span>       OGRLayer *writeTestLayer;</div>
-<div class="line"><a name="l00923"></a><span class="lineno">  923</span> </div>
-<div class="line"><a name="l00924"></a><span class="lineno">  924</span>       <span class="keywordflow">if</span>(polygon_opt[0]){</div>
-<div class="line"><a name="l00925"></a><span class="lineno">  925</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00926"></a><span class="lineno">  926</span>       std::cout << <span class="stringliteral">"create polygons"</span> << std::endl;</div>
-<div class="line"><a name="l00927"></a><span class="lineno">  927</span>     <span class="keywordtype">char</span> **papszOptions=NULL;</div>
-<div class="line"><a name="l00928"></a><span class="lineno">  928</span>     writeLayer=ogrWriter.createLayer(readLayer->GetName(), imgReader.getProjection(), wkbPolygon, papszOptions);</div>
-<div class="line"><a name="l00929"></a><span class="lineno">  929</span>     <span class="keywordflow">if</span>(test_opt.size())</div>
-<div class="line"><a name="l00930"></a><span class="lineno">  930</span>       writeTestLayer=ogrTestWriter.createLayer(readLayer->GetName(), imgReader.getProjection(), wkbPolygon, papszOptions);</div>
-<div class="line"><a name="l00931"></a><span class="lineno">  931</span>       }</div>
-<div class="line"><a name="l00932"></a><span class="lineno">  932</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00933"></a><span class="lineno">  933</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00934"></a><span class="lineno">  934</span>       std::cout << <span class="stringliteral">"create points in layer "</span> << readLayer->GetName() << std::endl;</div>
-<div class="line"><a name="l00935"></a><span class="lineno">  935</span>     <span class="keywordtype">char</span> **papszOptions=NULL;</div>
-<div class="line"><a name="l00936"></a><span class="lineno">  936</span> </div>
-<div class="line"><a name="l00937"></a><span class="lineno">  937</span>     writeLayer=ogrWriter.createLayer(readLayer->GetName(), imgReader.getProjection(), wkbPoint, papszOptions);</div>
-<div class="line"><a name="l00938"></a><span class="lineno">  938</span>     <span class="keywordflow">if</span>(test_opt.size()){</div>
-<div class="line"><a name="l00939"></a><span class="lineno">  939</span>       <span class="keywordtype">char</span> **papszOptions=NULL;</div>
-<div class="line"><a name="l00940"></a><span class="lineno">  940</span>       writeTestLayer=ogrTestWriter.createLayer(readLayer->GetName(), imgReader.getProjection(), wkbPoint, papszOptions);</div>
-<div class="line"><a name="l00941"></a><span class="lineno">  941</span>     }</div>
-<div class="line"><a name="l00942"></a><span class="lineno">  942</span>       }</div>
-<div class="line"><a name="l00943"></a><span class="lineno">  943</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00944"></a><span class="lineno">  944</span>     std::cout << <span class="stringliteral">"copy fields from layer "</span> << ilayer << std::flush << std::endl;</div>
-<div class="line"><a name="l00945"></a><span class="lineno">  945</span>       ogrWriter.copyFields(sampleReaderOgr,ilayer,ilayerWrite);</div>
-<div class="line"><a name="l00946"></a><span class="lineno">  946</span> </div>
-<div class="line"><a name="l00947"></a><span class="lineno">  947</span>       <span class="keywordflow">if</span>(test_opt.size()){</div>
-<div class="line"><a name="l00948"></a><span class="lineno">  948</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00949"></a><span class="lineno">  949</span>       std::cout << <span class="stringliteral">"copy fields test writer"</span> << std::flush << std::endl;</div>
-<div class="line"><a name="l00950"></a><span class="lineno">  950</span>     ogrTestWriter.copyFields(sampleReaderOgr,ilayer,ilayerWrite);</div>
-<div class="line"><a name="l00951"></a><span class="lineno">  951</span>       }</div>
-<div class="line"><a name="l00952"></a><span class="lineno">  952</span>       <span class="comment">// vector<std::string> fieldnames;</span></div>
-<div class="line"><a name="l00953"></a><span class="lineno">  953</span>       <span class="comment">// if(verbose_opt[0])</span></div>
-<div class="line"><a name="l00954"></a><span class="lineno">  954</span>       <span class="comment">//    std::cout << "get fields" << std::flush << std::endl;</span></div>
-<div class="line"><a name="l00955"></a><span class="lineno">  955</span>       <span class="comment">// sampleReaderOgr.getFields(fieldnames);</span></div>
-<div class="line"><a name="l00956"></a><span class="lineno">  956</span>       <span class="comment">// assert(fieldnames.size()==ogrWriter.getFieldCount(ilayerWrite));</span></div>
-<div class="line"><a name="l00957"></a><span class="lineno">  957</span>       <span class="comment">// map<std::string,double> pointAttributes;</span></div>
-<div class="line"><a name="l00958"></a><span class="lineno">  958</span> </div>
-<div class="line"><a name="l00959"></a><span class="lineno">  959</span>       <span class="keywordflow">if</span>(class_opt.size()){</div>
-<div class="line"><a name="l00960"></a><span class="lineno">  960</span>     <span class="keywordflow">switch</span>(ruleMap[rule_opt[0]]){</div>
-<div class="line"><a name="l00961"></a><span class="lineno">  961</span>     <span class="keywordflow">case</span>(rule::proportion):<span class="comment">//proportion for each class</span></div>
-<div class="line"><a name="l00962"></a><span class="lineno">  962</span>     <span class="keywordflow">case</span>(rule::count):{<span class="comment">//count for each class</span></div>
-<div class="line"><a name="l00963"></a><span class="lineno">  963</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<class_opt.size();++iclass){</div>
-<div class="line"><a name="l00964"></a><span class="lineno">  964</span>         ostringstream cs;</div>
-<div class="line"><a name="l00965"></a><span class="lineno">  965</span>         cs << class_opt[iclass];</div>
-<div class="line"><a name="l00966"></a><span class="lineno">  966</span>         ogrWriter.createField(cs.str(),fieldType,ilayerWrite);</div>
-<div class="line"><a name="l00967"></a><span class="lineno">  967</span>       }</div>
-<div class="line"><a name="l00968"></a><span class="lineno">  968</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00969"></a><span class="lineno">  969</span>     }</div>
-<div class="line"><a name="l00970"></a><span class="lineno">  970</span>     <span class="keywordflow">case</span>(rule::custom):</div>
-<div class="line"><a name="l00971"></a><span class="lineno">  971</span>     <span class="keywordflow">case</span>(rule::mode):</div>
-<div class="line"><a name="l00972"></a><span class="lineno">  972</span>       ogrWriter.createField(label_opt[0],fieldType,ilayerWrite);</div>
-<div class="line"><a name="l00973"></a><span class="lineno">  973</span>     <span class="keywordflow">if</span>(test_opt.size())</div>
-<div class="line"><a name="l00974"></a><span class="lineno">  974</span>       ogrTestWriter.createField(label_opt[0],fieldType,ilayerWrite);</div>
-<div class="line"><a name="l00975"></a><span class="lineno">  975</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00976"></a><span class="lineno">  976</span>     }</div>
-<div class="line"><a name="l00977"></a><span class="lineno">  977</span>       }</div>
-<div class="line"><a name="l00978"></a><span class="lineno">  978</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00979"></a><span class="lineno">  979</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l00980"></a><span class="lineno">  980</span>       <span class="keywordtype">int</span> theBand=(band_opt.size()) ? band_opt[iband] : iband;</div>
-<div class="line"><a name="l00981"></a><span class="lineno">  981</span>       ostringstream fs;</div>
-<div class="line"><a name="l00982"></a><span class="lineno">  982</span>       fs << fieldname_opt[iband];</div>
-<div class="line"><a name="l00983"></a><span class="lineno">  983</span>       <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00984"></a><span class="lineno">  984</span>         std::cout << <span class="stringliteral">"creating field "</span> << fs.str() << std::endl;</div>
-<div class="line"><a name="l00985"></a><span class="lineno">  985</span> </div>
-<div class="line"><a name="l00986"></a><span class="lineno">  986</span>       ogrWriter.createField(fs.str(),fieldType,ilayerWrite);</div>
-<div class="line"><a name="l00987"></a><span class="lineno">  987</span>       <span class="keywordflow">if</span>(test_opt.size())</div>
-<div class="line"><a name="l00988"></a><span class="lineno">  988</span>         ogrTestWriter.createField(fs.str(),fieldType,ilayerWrite);</div>
-<div class="line"><a name="l00989"></a><span class="lineno">  989</span>     }</div>
-<div class="line"><a name="l00990"></a><span class="lineno">  990</span>       }</div>
-<div class="line"><a name="l00991"></a><span class="lineno">  991</span>       OGRFeature *readFeature;</div>
-<div class="line"><a name="l00992"></a><span class="lineno">  992</span>       <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> ifeature=0;</div>
-<div class="line"><a name="l00993"></a><span class="lineno">  993</span>       <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> nfeatureLayer=sampleReaderOgr.getFeatureCount(ilayer);</div>
-<div class="line"><a name="l00994"></a><span class="lineno">  994</span>       <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> ntotalvalidLayer=0;</div>
-<div class="line"><a name="l00995"></a><span class="lineno">  995</span>       progress=0;</div>
-<div class="line"><a name="l00996"></a><span class="lineno">  996</span>       pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00997"></a><span class="lineno">  997</span>       <span class="keywordflow">while</span>( (readFeature = readLayer->GetNextFeature()) != NULL ){</div>
-<div class="line"><a name="l00998"></a><span class="lineno">  998</span>     <span class="keywordtype">bool</span> validFeature=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00999"></a><span class="lineno">  999</span>     <span class="keywordtype">bool</span> writeTest=<span class="keyword">false</span>;<span class="comment">//write this feature to test_opt[0] instead of output_opt</span></div>
-<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>     <span class="keywordflow">if</span>(verbose_opt[0]>0)</div>
-<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>       std::cout << <span class="stringliteral">"reading feature "</span> << readFeature->GetFID() << std::endl;</div>
-<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>     <span class="keywordflow">if</span>(theThreshold>0){<span class="comment">//percentual value</span></div>
-<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>       <span class="comment">// if(!test_opt.size()&&ntotalvalid>threshold_opt[0]/100.0*nfeature)</span></div>
-<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>       <span class="comment">//   break;</span></div>
-<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>       <span class="keywordtype">double</span> p=<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(rand())/(RAND_MAX);</div>
-<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>       p*=100.0;</div>
-<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>       <span class="keywordflow">if</span>(p>theThreshold){</div>
-<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>         <span class="keywordflow">if</span>(test_opt.size())</div>
-<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>           writeTest=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>           <span class="keywordflow">continue</span>;<span class="comment">//do not select for now, go to next feature</span></div>
-<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>       }</div>
-<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>     }</div>
-<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>     <span class="keywordflow">else</span>{<span class="comment">//absolute value</span></div>
-<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>       <span class="keywordflow">if</span>(threshold_opt.size()==layer_opt.size()){</div>
-<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>         <span class="keywordflow">if</span>(ntotalvalidLayer>=-theThreshold){</div>
-<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>           <span class="keywordflow">if</span>(test_opt.size())</div>
-<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>         writeTest=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>         <span class="keywordflow">continue</span>;<span class="comment">//do not select any more pixels, go to next column feature</span></div>
-<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>         }</div>
-<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>       }</div>
-<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>         <span class="keywordflow">if</span>(ntotalvalid>=-theThreshold){</div>
-<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>           <span class="keywordflow">if</span>(test_opt.size())</div>
-<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>         writeTest=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>         <span class="keywordflow">continue</span>;<span class="comment">//do not select any more pixels, go to next column feature</span></div>
-<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>         }</div>
-<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>       }</div>
-<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>     }</div>
-<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>     <span class="keywordflow">if</span>(verbose_opt[0]>0)</div>
-<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>       std::cout << <span class="stringliteral">"processing feature "</span> << readFeature->GetFID() << std::endl;</div>
-<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>     <span class="comment">//get x and y from readFeature</span></div>
-<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>     <span class="keywordtype">double</span> x,y;</div>
-<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>     OGRGeometry *poGeometry;</div>
-<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>     poGeometry = readFeature->GetGeometryRef();</div>
-<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>     assert(poGeometry!=NULL);</div>
-<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>       <span class="keywordflow">if</span>(wkbFlatten(poGeometry->getGeometryType()) == wkbPoint ){</div>
-<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span> </div>
-<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>         <span class="keywordflow">if</span>(!buffer_opt.size()){</div>
-<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>           <span class="keywordflow">switch</span>(ruleMap[rule_opt[0]]){</div>
-<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>           <span class="keywordflow">case</span>(rule::point):</div>
-<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>           <span class="keywordflow">case</span>(rule::centroid):</div>
-<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>         buffer_opt.push_back(1);<span class="comment">//default</span></div>
-<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>           <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>         buffer_opt.push_back(3);<span class="comment">//default</span></div>
-<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>           }</div>
-<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>         }</div>
-<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span> </div>
-<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>         <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>           std::cout << <span class="stringliteral">"boundary: "</span> << buffer_opt[0] << std::endl;</div>
-<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span> </div>
-<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>         OGRPolygon writePolygon;</div>
-<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>         OGRLinearRing writeRing;</div>
-<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>         OGRPoint writeCentroidPoint;</div>
-<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>         OGRFeature *writePolygonFeature;</div>
-<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>         OGRFeature *writeCentroidFeature;</div>
-<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span> </div>
-<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>         OGRPoint *poPoint = (OGRPoint *) poGeometry;</div>
-<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>         writeCentroidPoint=*poPoint;</div>
-<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span> </div>
-<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>         x=poPoint->getX();</div>
-<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>         y=poPoint->getY();</div>
-<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span> </div>
-<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>         <span class="keywordtype">double</span> i_centre,j_centre;</div>
-<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>         <span class="keywordflow">if</span>(geo_opt[0])</div>
-<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>           imgReader.geo2image(x,y,i_centre,j_centre);</div>
-<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>           i_centre=x;</div>
-<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>           j_centre=y;</div>
-<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>         }</div>
-<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>         <span class="comment">//nearest neighbour</span></div>
-<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>         j_centre=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(j_centre);</div>
-<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>         i_centre=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(i_centre);</div>
-<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span> </div>
-<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>         <span class="keywordtype">double</span> uli=i_centre-buffer_opt[0]/2;</div>
-<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>         <span class="keywordtype">double</span> ulj=j_centre-buffer_opt[0]/2;</div>
-<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>         <span class="keywordtype">double</span> lri=i_centre+buffer_opt[0]/2;</div>
-<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>         <span class="keywordtype">double</span> lrj=j_centre+buffer_opt[0]/2;</div>
-<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span> </div>
-<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>         <span class="comment">//nearest neighbour</span></div>
-<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>         ulj=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(ulj);</div>
-<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>         uli=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(uli);</div>
-<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>         lrj=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(lrj);</div>
-<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>         lri=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(lri);</div>
-<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span> </div>
-<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>         <span class="comment">// if((polygon_opt[0]&&ruleMap[rule_opt[0]]==rule::point)||(ruleMap[rule_opt[0]]==rule::centroid)){</span></div>
-<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>         <span class="comment">//   uli=i_centre;</span></div>
-<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>         <span class="comment">//   ulj=j_centre;</span></div>
-<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>         <span class="comment">//   lri=i_centre;</span></div>
-<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>         <span class="comment">//   lrj=j_centre;</span></div>
-<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>         <span class="comment">// }</span></div>
-<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span> </div>
-<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>         <span class="comment">//check if j is out of bounds</span></div>
-<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>         <span class="keywordflow">if</span>(static_cast<int>(ulj)<0||<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(ulj)>=imgReader.nrOfRow())</div>
-<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>           <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>         <span class="comment">//check if j is out of bounds</span></div>
-<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>         <span class="keywordflow">if</span>(static_cast<int>(uli)<0||<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(lri)>=imgReader.nrOfCol())</div>
-<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>           <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span> </div>
-<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>         OGRPoint ulPoint,urPoint,llPoint,lrPoint;</div>
-<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>         <span class="keywordtype">double</span> ulx,uly;</div>
-<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>         <span class="keywordtype">double</span> urx,ury;</div>
-<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span> </div>
-<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>         <span class="keywordflow">if</span>(polygon_opt[0]){</div>
-<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>           <span class="keywordflow">if</span>(disc_opt[0]){</div>
-<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>         <span class="keywordtype">double</span> gt[6];<span class="comment">// { 444720, 30, 0, 3751320, 0, -30 };</span></div>
-<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>         <span class="keywordtype">double</span> radius=buffer_opt[0]/2.0*sqrt(imgReader.getDeltaX()*imgReader.getDeltaY());</div>
-<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>         <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> nstep = 25;</div>
-<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<nstep;++i){</div>
-<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>           OGRPoint aPoint;</div>
-<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>           aPoint.setX(x+imgReader.getDeltaX()/2.0+radius*cos(2*PI*i/nstep));</div>
-<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>           aPoint.setY(y-imgReader.getDeltaY()/2.0+radius*sin(2*PI*i/nstep));</div>
-<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>           writeRing.addPoint(&aPoint);</div>
-<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>         }</div>
-<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>         writePolygon.addRing(&writeRing);</div>
-<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>         writePolygon.closeRings();</div>
-<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>           }</div>
-<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>           <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>         <span class="keywordtype">double</span> llx,lly;</div>
-<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>         <span class="keywordtype">double</span> lrx,lry;</div>
-<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>         imgReader.image2geo(uli,ulj,ulx,uly);</div>
-<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>         imgReader.image2geo(lri,lrj,lrx,lry);</div>
-<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>         ulPoint.setX(ulx-imgReader.getDeltaX()/2.0);</div>
-<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>         ulPoint.setY(uly+imgReader.getDeltaY()/2.0);</div>
-<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>         lrPoint.setX(lrx+imgReader.getDeltaX()/2.0);</div>
-<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>         lrPoint.setY(lry-imgReader.getDeltaY()/2.0);</div>
-<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>         urPoint.setX(lrx+imgReader.getDeltaX()/2.0);</div>
-<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>         urPoint.setY(uly+imgReader.getDeltaY()/2.0);</div>
-<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>         llPoint.setX(ulx-imgReader.getDeltaX()/2.0);</div>
-<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>         llPoint.setY(lry-imgReader.getDeltaY()/2.0);</div>
-<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span> </div>
-<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>         writeRing.addPoint(&ulPoint);</div>
-<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>         writeRing.addPoint(&urPoint);</div>
-<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>         writeRing.addPoint(&lrPoint);</div>
-<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>         writeRing.addPoint(&llPoint);</div>
-<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>         writePolygon.addRing(&writeRing);</div>
-<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>         writePolygon.closeRings();</div>
-<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>           }</div>
-<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>         }</div>
-<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span> </div>
-<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>         <span class="keywordflow">if</span>((polygon_opt[0]&&ruleMap[rule_opt[0]]==rule::point)||(ruleMap[rule_opt[0]]==rule::centroid)){</div>
-<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>           uli=i_centre;</div>
-<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>           ulj=j_centre;</div>
-<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>           lri=i_centre;</div>
-<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>           lrj=j_centre;</div>
-<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>         }</div>
-<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span> </div>
-<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>         <span class="keywordtype">int</span> nPointWindow=0;<span class="comment">//similar to nPointPolygon for polygons</span></div>
-<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>         <span class="keywordflow">if</span>(polygon_opt[0]){</div>
-<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>           <span class="keywordflow">if</span>(writeTest)</div>
-<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>         writePolygonFeature = OGRFeature::CreateFeature(writeTestLayer->GetLayerDefn());</div>
-<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>         writePolygonFeature = OGRFeature::CreateFeature(writeLayer->GetLayerDefn());</div>
-<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>         }</div>
-<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]!=rule::point){</div>
-<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>           <span class="keywordflow">if</span>(writeTest)</div>
-<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>         writeCentroidFeature = OGRFeature::CreateFeature(writeTestLayer->GetLayerDefn());</div>
-<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>         writeCentroidFeature = OGRFeature::CreateFeature(writeLayer->GetLayerDefn());</div>
-<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>         }</div>
-<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>         <a class="code" href="classVector2d.html">Vector2d<double></a> windowValues;</div>
-<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>         vector<double> windowClassValues;</div>
-<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span> </div>
-<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>         <span class="keywordflow">if</span>(class_opt.size()){</div>
-<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>           windowClassValues.resize(class_opt.size());</div>
-<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>           <span class="comment">//initialize</span></div>
-<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<class_opt.size();++iclass)</div>
-<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>         windowClassValues[iclass]=0;</div>
-<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>         }</div>
-<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>           windowValues.resize(nband);</div>
-<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>         vector< Vector2d<double> > readValues(nband);</div>
-<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>           <span class="keywordtype">int</span> theBand=(band_opt.size()) ? band_opt[iband] : iband;</div>
-<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>           imgReader.readDataBlock(readValues[iband],GDT_Float64,uli,lri,ulj,lrj,theBand);</div>
-<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>         }</div>
-<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span> </div>
-<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>         OGRPoint thePoint;</div>
-<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=ulj;j<=lrj;++j){</div>
-<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=uli;i<=lri;++i){</div>
-<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>         <span class="comment">//check if within raster image</span></div>
-<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>         <span class="keywordflow">if</span>(i<0||i>=imgReader.nrOfCol())</div>
-<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>           <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>         <span class="keywordflow">if</span>(j<0||j>=imgReader.nrOfRow())</div>
-<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>           <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>         <span class="comment">//no need to check if point is on surface</span></div>
-<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>         <span class="keywordtype">double</span> theX=0;</div>
-<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>         <span class="keywordtype">double</span> theY=0;</div>
-<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>         imgReader.image2geo(i,j,theX,theY);</div>
-<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>         thePoint.setX(theX);</div>
-<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>         thePoint.setY(theY);</div>
-<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span> </div>
-<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>         <span class="keywordflow">if</span>(disc_opt[0]&&buffer_opt[0]>1){</div>
-<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>           <span class="keywordtype">double</span> radius=buffer_opt[0]/2.0*sqrt(imgReader.getDeltaX()*imgReader.getDeltaY());</div>
-<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>           <span class="keywordflow">if</span>((theX-x)*(theX-x)+(theY-y)*(theY-y)>radius*radius)</div>
-<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>             <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>         }</div>
-<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>         <span class="keywordtype">bool</span> valid=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span> </div>
-<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>         <span class="keywordflow">if</span>(srcnodata_opt.size()){</div>
-<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> vband=0;vband<bndnodata_opt.size();++vband){</div>
-<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>             <span class="keywordtype">double</span> value=((readValues[bndnodata_opt[vband]])[j-ulj])[i-uli];</div>
-<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>             <span class="keywordflow">if</span>(value==srcnodata_opt[vband]){</div>
-<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>               valid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>             }</div>
-<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>           }</div>
-<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>         }</div>
-<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span> </div>
-<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>         <span class="keywordflow">if</span>(!valid)</div>
-<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>           <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>           validFeature=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span> </div>
-<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>         <span class="comment">// writeRing.addPoint(&thePoint);//already done</span></div>
-<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span> </div>
-<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>         ++nPointWindow;</div>
-<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>         OGRFeature *writePointFeature;</div>
-<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>         <span class="keywordflow">if</span>(!polygon_opt[0]){</div>
-<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>           <span class="comment">//create feature</span></div>
-<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>           <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::point){<span class="comment">//do not create in case of mean, stdev, median, sum or centroid (only create point at centroid)</span></div>
-<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>             <span class="keywordflow">if</span>(writeTest)</div>
-<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>               writePointFeature = OGRFeature::CreateFeature(writeTestLayer->GetLayerDefn());</div>
-<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>               writePointFeature = OGRFeature::CreateFeature(writeLayer->GetLayerDefn());</div>
-<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>             <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>               std::cout << <span class="stringliteral">"copying fields from polygons "</span> << std::endl;</div>
-<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>             <span class="comment">//Geometry of readFeature and writePointFeature are both wkbPoint</span></div>
-<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>             <span class="comment">//attributes AND geometry are copied with SetFrom</span></div>
-<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>             <span class="comment">//test</span></div>
-<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>             <span class="comment">// writePointFeature->SetGeometry(&thePoint);</span></div>
-<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>             <span class="keywordflow">if</span>(writePointFeature->SetFrom(readFeature)!= OGRERR_NONE)</div>
-<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>               cerr << <span class="stringliteral">"writing feature failed"</span> << std::endl;</div>
-<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span> </div>
-<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>             assert(wkbFlatten(writePointFeature->GetGeometryRef()->getGeometryType()) == wkbPoint);</div>
-<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>             <span class="comment">// OGRGeometry *updateGeometry;</span></div>
-<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>             <span class="comment">// updateGeometry = writePointFeature->GetGeometryRef();</span></div>
-<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>             <span class="comment">// OGRPoint *poPoint = (OGRPoint *) updateGeometry;</span></div>
-<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>             <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>               std::cout << <span class="stringliteral">"write feature has "</span> << writePointFeature->GetFieldCount() << <span class="stringliteral">" fields"</span> << std::endl;</div>
-<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>           }</div>
-<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>         }</div>
-<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>         <span class="keywordflow">if</span>(class_opt.size()){</div>
-<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>           <span class="keywordtype">short</span> value=((readValues[0])[j-ulj])[i-uli];</div>
-<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<class_opt.size();++iclass){</div>
-<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>             <span class="keywordflow">if</span>(value==class_opt[iclass])</div>
-<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>               windowClassValues[iclass]+=1;</div>
-<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>           }</div>
-<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>         }</div>
-<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>             <span class="keywordtype">int</span> theBand=(band_opt.size()) ? band_opt[iband] : iband;</div>
-<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>             assert(j-ulj>=0);</div>
-<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>             assert(j-ulj<readValues[iband].size());</div>
-<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>             assert(i-uli>=0);</div>
-<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>             assert(i-uli<((readValues[iband])[j-ulj]).size());</div>
-<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>             <span class="keywordtype">double</span> value=((readValues[iband])[j-ulj])[i-uli];</div>
-<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>             <span class="comment">// imgReader.readData(value,GDT_Float64,i,j,theBand);</span></div>
-<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>             <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>               std::cout << <span class="stringliteral">": "</span> << value << std::endl;</div>
-<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>             <span class="keywordflow">if</span>(polygon_opt[0]||ruleMap[rule_opt[0]]!=rule::point){</div>
-<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>               windowValues[iband].push_back(value);</div>
-<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>             }</div>
-<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>             <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>               <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>             <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>               std::cout << <span class="stringliteral">"set field "</span> << fieldname_opt[iband] << <span class="stringliteral">" to "</span> << value << std::endl;</div>
-<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>             <span class="keywordflow">switch</span>( fieldType ){</div>
-<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>             <span class="keywordflow">case</span> OFTInteger:</div>
-<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>             <span class="keywordflow">case</span> OFTReal:</div>
-<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>               writePointFeature->SetField(fieldname_opt[iband].c_str(),value);</div>
-<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>             <span class="keywordflow">case</span> OFTString:</div>
-<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>               writePointFeature->SetField(fieldname_opt[iband].c_str(),type2string<double>(value).c_str());</div>
-<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>             <span class="keywordflow">default</span>:<span class="comment">//not supported</span></div>
-<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>               std::string errorString=<span class="stringliteral">"field type not supported"</span>;</div>
-<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>               <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>             }</div>
-<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>               }</div>
-<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>               <span class="keywordflow">catch</span>(std::string e){</div>
-<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>             std::cout << e << std::endl;</div>
-<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>             exit(1);</div>
-<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>               }</div>
-<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>             }<span class="comment">//else</span></div>
-<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>           }<span class="comment">//iband</span></div>
-<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>         }<span class="comment">//else (class_opt.size())</span></div>
-<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>         <span class="keywordflow">if</span>(!polygon_opt[0]){</div>
-<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>           <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::point){<span class="comment">//do not create in case of mean or median value (only at centroid)</span></div>
-<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>             <span class="comment">//write feature</span></div>
-<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>             <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>               std::cout << <span class="stringliteral">"creating point feature"</span> << std::endl;</div>
-<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>             <span class="keywordflow">if</span>(writeTest){</div>
-<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>               <span class="keywordflow">if</span>(writeTestLayer->CreateFeature( writePointFeature ) != OGRERR_NONE ){</div>
-<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>             std::string errorString=<span class="stringliteral">"Failed to create feature in test ogr vector dataset"</span>;</div>
-<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>             <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>               }</div>
-<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>             }</div>
-<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>             <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>               <span class="keywordflow">if</span>(writeLayer->CreateFeature( writePointFeature ) != OGRERR_NONE ){</div>
-<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>             std::string errorString=<span class="stringliteral">"Failed to create feature in ogr vector dataset"</span>;</div>
-<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>             <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>               }</div>
-<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>             }</div>
-<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>             <span class="comment">//destroy feature</span></div>
-<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>             OGRFeature::DestroyFeature( writePointFeature );</div>
-<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>             ++ntotalvalid;</div>
-<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>             ++ntotalvalidLayer;</div>
-<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>           }</div>
-<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>         }</div>
-<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>           }</div>
-<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>         }</div>
-<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>         <span class="keywordflow">if</span>(polygon_opt[0]||ruleMap[rule_opt[0]]!=rule::point){</div>
-<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>           <span class="comment">//do not create if no points found within polygon</span></div>
-<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>           <span class="keywordflow">if</span>(!nPointWindow){</div>
-<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>         <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>           cout << <span class="stringliteral">"no points found in window, continuing"</span> << endl;</div>
-<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>         <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>           }</div>
-<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>           <span class="comment">//add ring to polygon</span></div>
-<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>           <span class="keywordflow">if</span>(polygon_opt[0]){</div>
-<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>         <span class="comment">// writePolygon.addRing(&writeRing);//already done</span></div>
-<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>         <span class="comment">// writePolygon.closeRings();//already done</span></div>
-<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>         <span class="comment">//write geometry of writePolygon</span></div>
-<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>         <span class="comment">//test</span></div>
-<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>         <span class="comment">// writePolygonFeature->SetGeometry(&writePolygon);</span></div>
-<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>         <span class="keywordflow">if</span>(writePolygonFeature->SetFrom(readFeature)!= OGRERR_NONE)</div>
-<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>           cerr << <span class="stringliteral">"writing feature failed"</span> << std::endl;</div>
-<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>         <span class="comment">//test</span></div>
-<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>         writePolygonFeature->SetGeometry(&writePolygon);</div>
-<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>         assert(wkbFlatten(writePolygonFeature->GetGeometryRef()->getGeometryType()) == wkbPolygon);</div>
-<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span> </div>
-<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>         <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>           std::cout << <span class="stringliteral">"copying new fields write polygon "</span> << std::endl;</div>
-<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>         <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>           std::cout << <span class="stringliteral">"write feature has "</span> << writePolygonFeature->GetFieldCount() << <span class="stringliteral">" fields"</span> << std::endl;</div>
-<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>         <span class="comment">//write polygon feature</span></div>
-<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>           }</div>
-<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>           <span class="keywordflow">else</span>{<span class="comment">//write value of polygon to centroid point</span></div>
-<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>         <span class="comment">//create feature</span></div>
-<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>         <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>           std::cout << <span class="stringliteral">"copying fields from polygons "</span> << std::endl;</div>
-<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>         <span class="comment">//test</span></div>
-<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>         <span class="comment">//Geometry of readFeature and writeCentroidFeature are both wkbPoint</span></div>
-<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>         <span class="comment">//attributes AND geometry are copied with SetFrom</span></div>
-<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>         <span class="comment">// writeCentroidFeature->SetGeometry(&writeCentroidPoint);</span></div>
-<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>         <span class="keywordflow">if</span>(writeCentroidFeature->SetFrom(readFeature)!= OGRERR_NONE)</div>
-<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>           cerr << <span class="stringliteral">"writing feature failed"</span> << std::endl;</div>
-<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>         assert(wkbFlatten(writeCentroidFeature->GetGeometryRef()->getGeometryType()) == wkbPoint);</div>
-<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>         <span class="comment">//test</span></div>
-<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>         <span class="comment">// OGRGeometry *updateGeometry;</span></div>
-<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>         <span class="comment">// updateGeometry = writeCentroidFeature->GetGeometryRef();</span></div>
-<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>         <span class="comment">// assert(wkbFlatten(updateGeometry->getGeometryType()) == wkbPoint );</span></div>
-<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>         <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>           std::cout << <span class="stringliteral">"write feature has "</span> << writeCentroidFeature->GetFieldCount() << <span class="stringliteral">" fields"</span> << std::endl;</div>
-<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>           }</div>
-<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>           <span class="keywordflow">if</span>(class_opt.empty()){</div>
-<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>         <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::point){<span class="comment">//value at centroid of polygon</span></div>
-<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>           <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>             std::cout << <span class="stringliteral">"number of points in window: "</span> << nPointWindow << std::endl;</div>
-<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> index=0;index<windowValues.size();++index){</div>
-<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>             <span class="comment">//test</span></div>
-<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>             <span class="keywordflow">if</span>(windowValues[index].size()!=1){</div>
-<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>               cerr << <span class="stringliteral">"Error: windowValues[index].size()="</span> << windowValues[index].size() << endl;</div>
-<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>               assert(windowValues[index].size()==1);</div>
-<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>             }</div>
-<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>             <span class="keywordtype">double</span> theValue=windowValues[index].back();</div>
-<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span> </div>
-<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>             <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>               std::cout << <span class="stringliteral">"number of points in window: "</span> << nPointWindow << std::endl;</div>
-<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>             <span class="keywordtype">int</span> theBand=(band_opt.size()) ? band_opt[index] : index;</div>
-<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span> </div>
-<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>             <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>               <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>             std::cout << <span class="stringliteral">"set field "</span> << fieldname_opt[index] << <span class="stringliteral">" to "</span> << theValue << std::endl;</div>
-<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>               <span class="keywordflow">switch</span>( fieldType ){</div>
-<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>               <span class="keywordflow">case</span> OFTInteger:</div>
-<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>               <span class="keywordflow">case</span> OFTReal:</div>
-<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>             <span class="keywordflow">if</span>(polygon_opt[0])</div>
-<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>               writePolygonFeature->SetField(fieldname_opt[index].c_str(),theValue);</div>
-<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>               writeCentroidFeature->SetField(fieldname_opt[index].c_str(),theValue);</div>
-<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>               <span class="keywordflow">case</span> OFTString:</div>
-<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>             <span class="keywordflow">if</span>(polygon_opt[0])</div>
-<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>               writePolygonFeature->SetField(fieldname_opt[index].c_str(),type2string<double>(theValue).c_str());</div>
-<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>               writeCentroidFeature->SetField(fieldname_opt[index].c_str(),type2string<double>(theValue).c_str());</div>
-<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>               <span class="keywordflow">default</span>:<span class="comment">//not supported</span></div>
-<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>             std::string errorString=<span class="stringliteral">"field type not supported"</span>;</div>
-<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>             <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>               }</div>
-<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>             }</div>
-<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>             <span class="keywordflow">catch</span>(std::string e){</div>
-<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>               std::cout << e << std::endl;</div>
-<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>               exit(1);</div>
-<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>             }</div>
-<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>           }</div>
-<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>         }</div>
-<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>         <span class="keywordflow">else</span>{<span class="comment">//ruleMap[rule_opt[0]] is not rule::point</span></div>
-<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>           <span class="keywordtype">double</span> theValue=0;</div>
-<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> index=0;index<windowValues.size();++index){</div>
-<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>             <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>               <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::mean)</div>
-<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>             theValue=stat.mean(windowValues[index]);</div>
-<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>               <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::stdev)</div>
-<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>             theValue=sqrt(stat.var(windowValues[index]));</div>
-<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>               <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::median)</div>
-<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>             theValue=stat.median(windowValues[index]);</div>
-<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>               <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::percentile)</div>
-<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>             theValue=stat.percentile(windowValues[index],windowValues[index].begin(),windowValues[index].end(),percentile_opt[0]);</div>
-<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>               <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::sum)</div>
-<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>             theValue=stat.sum(windowValues[index]);</div>
-<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>               <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::max)</div>
-<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>             theValue=stat.mymax(windowValues[index]);</div>
-<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>               <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::min)</div>
-<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>             theValue=stat.mymin(windowValues[index]);</div>
-<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>               <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::centroid){</div>
-<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>             <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>               std::cout << <span class="stringliteral">"number of points in polygon: "</span> << nPointWindow << std::endl;</div>
-<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>             assert(nPointWindow<=1);</div>
-<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>             assert(nPointWindow==windowValues[index].size());</div>
-<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>             theValue=windowValues[index].back();</div>
-<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>               }</div>
-<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>               <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>             std::string errorString=<span class="stringliteral">"rule not supported"</span>;</div>
-<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>             <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>               }</div>
-<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>               <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>             std::cout << <span class="stringliteral">"set field "</span> << fieldname_opt[index] << <span class="stringliteral">" to "</span> << theValue << std::endl;</div>
-<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>               <span class="keywordflow">switch</span>( fieldType ){</div>
-<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>               <span class="keywordflow">case</span> OFTInteger:</div>
-<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>               <span class="keywordflow">case</span> OFTReal:</div>
-<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>             <span class="keywordflow">if</span>(polygon_opt[0])</div>
-<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>               writePolygonFeature->SetField(fieldname_opt[index].c_str(),theValue);</div>
-<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>               writeCentroidFeature->SetField(fieldname_opt[index].c_str(),theValue);</div>
-<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>               <span class="keywordflow">case</span> OFTString:</div>
-<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>             <span class="keywordflow">if</span>(polygon_opt[0])</div>
-<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>               writePolygonFeature->SetField(fieldname_opt[index].c_str(),type2string<double>(theValue).c_str());</div>
-<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>               writeCentroidFeature->SetField(fieldname_opt[index].c_str(),type2string<double>(theValue).c_str());</div>
-<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>               <span class="keywordflow">default</span>:<span class="comment">//not supported</span></div>
-<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>             std::string errorString=<span class="stringliteral">"field type not supported"</span>;</div>
-<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>             <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>               }</div>
-<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>             }</div>
-<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>             <span class="keywordflow">catch</span>(std::string e){</div>
-<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>               std::cout << e << std::endl;</div>
-<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>               exit(1);</div>
-<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>             }</div>
-<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>           }</div>
-<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>         }</div>
-<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>           }</div>
-<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>           <span class="keywordflow">else</span>{<span class="comment">//class_opt is set</span></div>
-<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>         <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::proportion||ruleMap[rule_opt[0]]==rule::count){</div>
-<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>           <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>             std::cout << <span class="stringliteral">"number of points in polygon: "</span> << nPointWindow << std::endl;</div>
-<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>           <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::proportion)</div>
-<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>             stat.normalize_pct(windowClassValues);</div>
-<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> index=0;index<windowClassValues.size();++index){</div>
-<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>             <span class="keywordtype">double</span> theValue=windowClassValues[index];</div>
-<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>             ostringstream fs;</div>
-<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>             fs << class_opt[index];</div>
-<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>             <span class="keywordflow">if</span>(polygon_opt[0])</div>
-<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>               writePolygonFeature->SetField(fs.str().c_str(),<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(theValue));</div>
-<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>               writeCentroidFeature->SetField(fs.str().c_str(),<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(theValue));</div>
-<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>           }</div>
-<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>         }</div>
-<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::custom){</div>
-<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>           assert(polygon_opt[0]);<span class="comment">//not implemented for points</span></div>
-<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>           <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>             std::cout << <span class="stringliteral">"number of points in polygon: "</span> << nPointWindow << std::endl;</div>
-<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>           stat.normalize_pct(windowClassValues);</div>
-<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>           assert(windowClassValues.size()==2);<span class="comment">//11:broadleaved, 12:coniferous</span></div>
-<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>           <span class="keywordflow">if</span>(windowClassValues[0]>=75)<span class="comment">//broadleaved</span></div>
-<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>             writePolygonFeature->SetField(label_opt[0].c_str(),static_cast<int>(11));</div>
-<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>           <span class="keywordflow">else</span> <span class="keywordflow">if</span>(windowClassValues[1]>=75)<span class="comment">//coniferous</span></div>
-<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>             writePolygonFeature->SetField(label_opt[0].c_str(),static_cast<int>(12));</div>
-<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>           <span class="keywordflow">else</span> <span class="keywordflow">if</span>(windowClassValues[0]>25&&windowClassValues[1]>25)<span class="comment">//mixed</span></div>
-<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>             writePolygonFeature->SetField(label_opt[0].c_str(),static_cast<int>(13));</div>
-<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>           <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>             <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>               std::cout << <span class="stringliteral">"No valid value in windowClassValues..."</span> << std::endl;</div>
-<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>               <span class="keywordflow">for</span>(<span class="keywordtype">int</span> index=0;index<windowClassValues.size();++index){</div>
-<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>             <span class="keywordtype">double</span> theValue=windowClassValues[index];</div>
-<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>             std::cout << theValue << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>               }</div>
-<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>               std::cout << std::endl;</div>
-<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>             }</div>
-<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>             writePolygonFeature->SetField(label_opt[0].c_str(),static_cast<int>(20));</div>
-<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>           }</div>
-<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>         }</div>
-<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::mode){</div>
-<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>           <span class="comment">//maximum votes in polygon</span></div>
-<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>           <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>             std::cout << <span class="stringliteral">"number of points in window: "</span> << nPointWindow << std::endl;</div>
-<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>           <span class="comment">//search for class with maximum votes</span></div>
-<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>           <span class="keywordtype">int</span> maxClass=stat.mymin(class_opt);</div>
-<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>           vector<double>::iterator maxit;</div>
-<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>           maxit=stat.mymax(windowClassValues,windowClassValues.begin(),windowClassValues.end());</div>
-<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>           <span class="keywordtype">int</span> maxIndex=distance(windowClassValues.begin(),maxit);</div>
-<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>           maxClass=class_opt[maxIndex];</div>
-<div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>           <span class="keywordflow">if</span>(verbose_opt[0]>0)</div>
-<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>             std::cout << <span class="stringliteral">"maxClass: "</span> << maxClass << std::endl;</div>
-<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>           <span class="keywordflow">if</span>(polygon_opt[0])</div>
-<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>             writePolygonFeature->SetField(label_opt[0].c_str(),maxClass);</div>
-<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>             writeCentroidFeature->SetField(label_opt[0].c_str(),maxClass);</div>
-<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>         }</div>
-<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>           }</div>
-<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>           <span class="keywordflow">if</span>(polygon_opt[0]){</div>
-<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>         <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>           std::cout << <span class="stringliteral">"creating polygon feature"</span> << std::endl;</div>
-<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>         <span class="keywordflow">if</span>(writeTest){</div>
-<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>           <span class="keywordflow">if</span>(writeTestLayer->CreateFeature( writePolygonFeature ) != OGRERR_NONE ){</div>
-<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>             std::string errorString=<span class="stringliteral">"Failed to create polygon feature in ogr vector dataset"</span>;</div>
-<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>             <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>           }</div>
-<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>         }</div>
-<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>           <span class="keywordflow">if</span>(writeLayer->CreateFeature( writePolygonFeature ) != OGRERR_NONE ){</div>
-<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>             std::string errorString=<span class="stringliteral">"Failed to create polygon feature in ogr vector dataset"</span>;</div>
-<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>             <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>           }</div>
-<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>         }</div>
-<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>         OGRFeature::DestroyFeature( writePolygonFeature );</div>
-<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>         ++ntotalvalid;</div>
-<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>         ++ntotalvalidLayer;</div>
-<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>           }</div>
-<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>           <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>         <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>           std::cout << <span class="stringliteral">"creating point feature in centroid"</span> << std::endl;</div>
-<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>         <span class="keywordflow">if</span>(writeTest){</div>
-<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>           <span class="keywordflow">if</span>(writeTestLayer->CreateFeature( writeCentroidFeature ) != OGRERR_NONE ){</div>
-<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>             std::string errorString=<span class="stringliteral">"Failed to create point feature in ogr vector dataset"</span>;</div>
-<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>             <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>           }</div>
-<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>         }</div>
-<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>           <span class="comment">//test</span></div>
-<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>           assert(validFeature);</div>
-<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>           <span class="keywordflow">if</span>(writeLayer->CreateFeature( writeCentroidFeature ) != OGRERR_NONE ){</div>
-<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>             std::string errorString=<span class="stringliteral">"Failed to create point feature in ogr vector dataset"</span>;</div>
-<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>             <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>           }</div>
-<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>         }</div>
-<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>         OGRFeature::DestroyFeature( writeCentroidFeature );</div>
-<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>         ++ntotalvalid;</div>
-<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>         ++ntotalvalidLayer;</div>
-<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>           }</div>
-<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>         }</div>
-<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>       }<span class="comment">//if wkbPoint</span></div>
-<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(wkbFlatten(poGeometry->getGeometryType()) == wkbPolygon){</div>
-<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>             </div>
-<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>         OGRPolygon readPolygon = *((OGRPolygon *) poGeometry);</div>
-<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>         OGRPolygon writePolygon;</div>
-<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>         OGRLinearRing writeRing;</div>
-<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>         OGRPoint writeCentroidPoint;</div>
-<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>         OGRFeature *writePolygonFeature;</div>
-<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>         OGRFeature *writeCentroidFeature;</div>
-<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span> </div>
-<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>         readPolygon.closeRings();</div>
-<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span> </div>
-<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>         <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>           std::cout << <span class="stringliteral">"get point on polygon"</span> << std::endl;</div>
-<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>         <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::centroid)</div>
-<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>           readPolygon.Centroid(&writeCentroidPoint);</div>
-<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(readPolygon.PointOnSurface(&writeCentroidPoint)!=OGRERR_NONE){</div>
-<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>           <span class="comment">// cerr << "function PointOnSurface failed, trying centroid instead" << endl;</span></div>
-<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>           readPolygon.Centroid(&writeCentroidPoint);</div>
-<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>         }</div>
-<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>         <span class="keywordtype">double</span> ulx,uly,lrx,lry;</div>
-<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>         <span class="keywordtype">double</span> uli,ulj,lri,lrj;</div>
-<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>         <span class="keywordflow">if</span>((polygon_opt[0]&&ruleMap[rule_opt[0]]==rule::point)||(ruleMap[rule_opt[0]]==rule::centroid)){</div>
-<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>           ulx=writeCentroidPoint.getX();</div>
-<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>           uly=writeCentroidPoint.getY();</div>
-<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>           lrx=ulx;</div>
-<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>           lry=uly;</div>
-<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>         }</div>
-<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>           <span class="comment">//get envelope</span></div>
-<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>           <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>         std::cout << <span class="stringliteral">"reading envelope for polygon "</span> << ifeature << std::endl;</div>
-<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>           OGREnvelope* psEnvelope=<span class="keyword">new</span> OGREnvelope();</div>
-<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>           readPolygon.getEnvelope(psEnvelope);</div>
-<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>           ulx=psEnvelope->MinX;</div>
-<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>           uly=psEnvelope->MaxY;</div>
-<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>           lrx=psEnvelope->MaxX;</div>
-<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>           lry=psEnvelope->MinY;</div>
-<div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>           <span class="keyword">delete</span> psEnvelope;</div>
-<div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>         }</div>
-<div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>         <span class="keywordflow">if</span>(geo_opt[0]){</div>
-<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>           imgReader.geo2image(ulx,uly,uli,ulj);</div>
-<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>           imgReader.geo2image(lrx,lry,lri,lrj);</div>
-<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>         }</div>
-<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>           uli=ulx;</div>
-<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>           ulj=uly;</div>
-<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>           lri=lrx;</div>
-<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>           lrj=lry;</div>
-<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>         }</div>
-<div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>         <span class="comment">//nearest neighbour</span></div>
-<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>         ulj=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(ulj);</div>
-<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>         uli=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(uli);</div>
-<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>         lrj=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(lrj);</div>
-<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>         lri=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(lri);</div>
-<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>         <span class="comment">//iterate through all pixels</span></div>
-<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>         <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>           std::cout << <span class="stringliteral">"bounding box for polygon feature "</span> << ifeature << <span class="stringliteral">": "</span> << uli << <span class="stringliteral">" "</span> << ulj << <span class="stringliteral">" "</span> << lri << <span class="stringliteral">" "</span> << lrj & [...]
-<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span> </div>
-<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>         <span class="keywordflow">if</span>(uli<0)</div>
-<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>           uli=0;</div>
-<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>         <span class="keywordflow">if</span>(lri<0)</div>
-<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>           lri=0;</div>
-<div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>         <span class="keywordflow">if</span>(uli>=imgReader.nrOfCol())</div>
-<div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>           uli=imgReader.nrOfCol()-1;</div>
-<div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>         <span class="keywordflow">if</span>(lri>=imgReader.nrOfCol())</div>
-<div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>           lri=imgReader.nrOfCol()-1;</div>
-<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>         <span class="keywordflow">if</span>(ulj<0)</div>
-<div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>           ulj=0;</div>
-<div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>         <span class="keywordflow">if</span>(lrj<0)</div>
-<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>           lrj=0;</div>
-<div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>         <span class="keywordflow">if</span>(ulj>=imgReader.nrOfRow())</div>
-<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>           ulj=imgReader.nrOfRow()-1;</div>
-<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>         <span class="keywordflow">if</span>(lrj>=imgReader.nrOfRow())</div>
-<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>           lrj=imgReader.nrOfRow()-1;</div>
-<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>         <span class="comment">// if(uli<0||lri>=imgReader.nrOfCol()||ulj<0||lrj>=imgReader.nrOfRow())</span></div>
-<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>         <span class="comment">//   continue;</span></div>
-<div class="line"><a name="l01641"></a><span class="lineno"> 1641</span> </div>
-<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>         <span class="keywordtype">int</span> nPointPolygon=0;</div>
-<div class="line"><a name="l01643"></a><span class="lineno"> 1643</span> </div>
-<div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>         <span class="keywordflow">if</span>(polygon_opt[0]){</div>
-<div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>           <span class="keywordflow">if</span>(writeTest)</div>
-<div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>         writePolygonFeature = OGRFeature::CreateFeature(writeTestLayer->GetLayerDefn());</div>
-<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>         writePolygonFeature = OGRFeature::CreateFeature(writeLayer->GetLayerDefn());</div>
-<div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>         }</div>
-<div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]!=rule::point){</div>
-<div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>           <span class="keywordflow">if</span>(writeTest)</div>
-<div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>         writeCentroidFeature = OGRFeature::CreateFeature(writeTestLayer->GetLayerDefn());</div>
-<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>         writeCentroidFeature = OGRFeature::CreateFeature(writeLayer->GetLayerDefn());</div>
-<div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>         }</div>
-<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>         <span class="comment">// vector<double> polyValues;</span></div>
-<div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>         <a class="code" href="classVector2d.html">Vector2d<double></a> polyValues;</div>
-<div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>         vector<double> polyClassValues;</div>
-<div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>         </div>
-<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>         <span class="keywordflow">if</span>(class_opt.size()){</div>
-<div class="line"><a name="l01661"></a><span class="lineno"> 1661</span> </div>
-<div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>           polyClassValues.resize(class_opt.size());</div>
-<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>           <span class="comment">//initialize</span></div>
-<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<class_opt.size();++iclass)</div>
-<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>         polyClassValues[iclass]=0;</div>
-<div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>         }</div>
-<div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>           polyValues.resize(nband);</div>
-<div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>         vector< Vector2d<double> > readValues(nband);</div>
-<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>           <span class="keywordtype">int</span> theBand=(band_opt.size()) ? band_opt[iband] : iband;</div>
-<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>           imgReader.readDataBlock(readValues[iband],GDT_Float64,uli,lri,ulj,lrj,theBand);</div>
-<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>         }</div>
-<div class="line"><a name="l01674"></a><span class="lineno"> 1674</span> </div>
-<div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>         OGRPoint thePoint;</div>
-<div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=ulj;j<=lrj;++j){</div>
-<div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=uli;i<=lri;++i){</div>
-<div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>         <span class="comment">//check if within raster image</span></div>
-<div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>         <span class="keywordflow">if</span>(i<0||i>=imgReader.nrOfCol())</div>
-<div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>           <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>         <span class="keywordflow">if</span>(j<0||j>=imgReader.nrOfRow())</div>
-<div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>           <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>         <span class="comment">//check if point is on surface</span></div>
-<div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>         <span class="keywordtype">double</span> theX=0;</div>
-<div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>         <span class="keywordtype">double</span> theY=0;</div>
-<div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>         imgReader.image2geo(i,j,theX,theY);</div>
-<div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>         thePoint.setX(theX);</div>
-<div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>         thePoint.setY(theY);</div>
-<div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>         <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]!=rule::centroid&&!readPolygon.Contains(&thePoint))</div>
-<div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>           <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l01691"></a><span class="lineno"> 1691</span> </div>
-<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>         <span class="keywordtype">bool</span> valid=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l01693"></a><span class="lineno"> 1693</span> </div>
-<div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>         <span class="keywordflow">if</span>(srcnodata_opt.size()){</div>
-<div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> vband=0;vband<bndnodata_opt.size();++vband){</div>
-<div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>             <span class="keywordtype">double</span> value=((readValues[bndnodata_opt[vband]])[j-ulj])[i-uli];</div>
-<div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>             <span class="keywordflow">if</span>(value==srcnodata_opt[vband]){</div>
-<div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>               valid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>             }</div>
-<div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>           }</div>
-<div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>         }</div>
-<div class="line"><a name="l01703"></a><span class="lineno"> 1703</span> </div>
-<div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>         <span class="keywordflow">if</span>(!valid)</div>
-<div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>           <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>           validFeature=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l01708"></a><span class="lineno"> 1708</span> </div>
-<div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>         writeRing.addPoint(&thePoint);<span class="comment">//todo: check if I need to add all interior points to ring or do I need to check if point is on ring first?</span></div>
-<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>         <span class="comment">// if(writeRing.isPointOnRingBoundary(&thePoint))</span></div>
-<div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>         <span class="comment">//    writeRing.addPoint(&thePoint);</span></div>
-<div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>         <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>           std::cout << <span class="stringliteral">"point is on surface:"</span> << thePoint.getX() << <span class="stringliteral">","</span> << thePoint.getY() << std::endl;</div>
-<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>         ++nPointPolygon;</div>
-<div class="line"><a name="l01715"></a><span class="lineno"> 1715</span> </div>
-<div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>         <span class="keywordflow">if</span>(polythreshold_opt.size())</div>
-<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>           <span class="keywordflow">if</span>(nPointPolygon>polythreshold_opt[0])</div>
-<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>             <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>         <span class="comment">// throw(nPointPolygon);</span></div>
-<div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>         OGRFeature *writePointFeature;</div>
-<div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>         <span class="keywordflow">if</span>(!polygon_opt[0]){</div>
-<div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>           <span class="comment">//create feature</span></div>
-<div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>           <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::point){<span class="comment">//do not create in case of mean, stdev, median, sum or centroid (only create point at centroid)</span></div>
-<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>             <span class="keywordflow">if</span>(writeTest)</div>
-<div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>               writePointFeature = OGRFeature::CreateFeature(writeTestLayer->GetLayerDefn());</div>
-<div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>               writePointFeature = OGRFeature::CreateFeature(writeLayer->GetLayerDefn());</div>
-<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>             <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>               std::cout << <span class="stringliteral">"copying fields from polygons "</span> << std::endl;</div>
-<div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>             <span class="keywordflow">if</span>(writePointFeature->SetFrom(readFeature)!= OGRERR_NONE)</div>
-<div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>               cerr << <span class="stringliteral">"writing feature failed"</span> << std::endl;</div>
-<div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>             <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>               std::cout << <span class="stringliteral">"set geometry as point "</span> << std::endl;</div>
-<div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>             <span class="comment">//test</span></div>
-<div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>             writePointFeature->SetGeometry(&thePoint);</div>
-<div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>             assert(wkbFlatten(writePointFeature->GetGeometryRef()->getGeometryType()) == wkbPoint);</div>
-<div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>             <span class="comment">// OGRGeometry *updateGeometry;</span></div>
-<div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>             <span class="comment">// updateGeometry = writePointFeature->GetGeometryRef();</span></div>
-<div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>             <span class="comment">// OGRPoint *poPoint = (OGRPoint *) updateGeometry;</span></div>
-<div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>             <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>               std::cout << <span class="stringliteral">"write feature has "</span> << writePointFeature->GetFieldCount() << <span class="stringliteral">" fields"</span> << std::endl;</div>
-<div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>           }</div>
-<div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>         }</div>
-<div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>         <span class="keywordflow">if</span>(class_opt.size()){</div>
-<div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>           <span class="keywordtype">short</span> value=((readValues[0])[j-ulj])[i-uli];</div>
-<div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<class_opt.size();++iclass){</div>
-<div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>             <span class="keywordflow">if</span>(value==class_opt[iclass])</div>
-<div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>               polyClassValues[iclass]+=1;</div>
-<div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>           }</div>
-<div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>         }</div>
-<div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>             <span class="keywordtype">double</span> value=((readValues[iband])[j-ulj])[i-uli];</div>
-<div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>             <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>               std::cout << <span class="stringliteral">": "</span> << value << std::endl;</div>
-<div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>             <span class="keywordflow">if</span>(polygon_opt[0]||ruleMap[rule_opt[0]]!=rule::point)</div>
-<div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>               polyValues[iband].push_back(value);</div>
-<div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>             <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>               <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>             std::cout << <span class="stringliteral">"set field "</span> << fieldname_opt[iband] << <span class="stringliteral">" to "</span> << value << std::endl;</div>
-<div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>               <span class="keywordflow">switch</span>( fieldType ){</div>
-<div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>               <span class="keywordflow">case</span> OFTInteger:</div>
-<div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>               <span class="keywordflow">case</span> OFTReal:</div>
-<div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>             writePointFeature->SetField(fieldname_opt[iband].c_str(),value);</div>
-<div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>               <span class="keywordflow">case</span> OFTString:</div>
-<div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>             writePointFeature->SetField(fieldname_opt[iband].c_str(),type2string<double>(value).c_str());</div>
-<div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>               <span class="keywordflow">default</span>:<span class="comment">//not supported</span></div>
-<div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>             assert(0);</div>
-<div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>               }</div>
-<div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>             }<span class="comment">//else</span></div>
-<div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>           }<span class="comment">//iband</span></div>
-<div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>         }<span class="comment">//else (class_opt.size())</span></div>
-<div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>         <span class="keywordflow">if</span>(!polygon_opt[0]){</div>
-<div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>           <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::point){<span class="comment">//do not create in case of mean or median value (only at centroid)</span></div>
-<div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>             <span class="comment">//write feature</span></div>
-<div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>             <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>               std::cout << <span class="stringliteral">"creating point feature"</span> << std::endl;</div>
-<div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>             <span class="keywordflow">if</span>(writeTest){</div>
-<div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>               <span class="keywordflow">if</span>(writeTestLayer->CreateFeature( writePointFeature ) != OGRERR_NONE ){</div>
-<div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>             std::string errorString=<span class="stringliteral">"Failed to create feature in test ogr vector dataset"</span>;</div>
-<div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>             <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>               }</div>
-<div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>             }</div>
-<div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>             <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>               <span class="keywordflow">if</span>(writeLayer->CreateFeature( writePointFeature ) != OGRERR_NONE ){</div>
-<div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>             std::string errorString=<span class="stringliteral">"Failed to create feature in ogr vector dataset"</span>;</div>
-<div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>             <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>               }</div>
-<div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>             }</div>
-<div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>             <span class="comment">//destroy feature</span></div>
-<div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>             OGRFeature::DestroyFeature( writePointFeature );</div>
-<div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>             ++ntotalvalid;</div>
-<div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>             ++ntotalvalidLayer;</div>
-<div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>           }</div>
-<div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>         }</div>
-<div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>           }</div>
-<div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>         }</div>
-<div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>         <span class="keywordflow">if</span>(polygon_opt[0]||ruleMap[rule_opt[0]]!=rule::point){</div>
-<div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>           <span class="comment">//do not create if no points found within polygon</span></div>
-<div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>           <span class="keywordflow">if</span>(!nPointPolygon){</div>
-<div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>         <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>           cout << <span class="stringliteral">"no points found in polygon, continuing"</span> << endl;</div>
-<div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>         <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>           }</div>
-<div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>           <span class="comment">//add ring to polygon</span></div>
-<div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>           <span class="keywordflow">if</span>(polygon_opt[0]){</div>
-<div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>         writePolygon.addRing(&writeRing);</div>
-<div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>         writePolygon.closeRings();</div>
-<div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>         <span class="comment">//write geometry of writePolygon</span></div>
-<div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>         <span class="comment">//test</span></div>
-<div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>         <span class="comment">//writePolygonFeature and readFeature are both of type wkbPolygon</span></div>
-<div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>         <span class="comment">// writePolygonFeature->SetGeometry(&writePolygon);</span></div>
-<div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>         <span class="keywordflow">if</span>(writePolygonFeature->SetFrom(readFeature)!= OGRERR_NONE)</div>
-<div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>           cerr << <span class="stringliteral">"writing feature failed"</span> << std::endl;</div>
-<div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>         <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>           std::cout << <span class="stringliteral">"copying new fields write polygon "</span> << std::endl;</div>
-<div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>         <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>           std::cout << <span class="stringliteral">"write feature has "</span> << writePolygonFeature->GetFieldCount() << <span class="stringliteral">" fields"</span> << std::endl;</div>
-<div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>         <span class="comment">//write polygon feature</span></div>
-<div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>           }</div>
-<div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>           <span class="keywordflow">else</span>{<span class="comment">//write value of polygon to centroid point</span></div>
-<div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>         <span class="comment">//create feature</span></div>
-<div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>         <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>           std::cout << <span class="stringliteral">"copying fields from polygons "</span> << std::endl;</div>
-<div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>         <span class="keywordflow">if</span>(writeCentroidFeature->SetFrom(readFeature)!= OGRERR_NONE)</div>
-<div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>           cerr << <span class="stringliteral">"writing feature failed"</span> << std::endl;</div>
-<div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>         writeCentroidFeature->SetGeometry(&writeCentroidPoint);</div>
-<div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>         assert(wkbFlatten(writeCentroidFeature->GetGeometryRef()->getGeometryType()) == wkbPoint );</div>
-<div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>         <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>           std::cout << <span class="stringliteral">"write feature has "</span> << writeCentroidFeature->GetFieldCount() << <span class="stringliteral">" fields"</span> << std::endl;</div>
-<div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>           }</div>
-<div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>           <span class="keywordflow">if</span>(class_opt.empty()){</div>
-<div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>         <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::point){<span class="comment">//value at centroid of polygon</span></div>
-<div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>           <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>             std::cout << <span class="stringliteral">"number of points in polygon: "</span> << nPointPolygon << std::endl;</div>
-<div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> index=0;index<polyValues.size();++index){</div>
-<div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>             assert(polyValues[index].size()==1);</div>
-<div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>             <span class="keywordtype">double</span> theValue=polyValues[index].back();</div>
-<div class="line"><a name="l01842"></a><span class="lineno"> 1842</span> </div>
-<div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>             <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>               std::cout << <span class="stringliteral">"number of points in polygon: "</span> << nPointPolygon << std::endl;</div>
-<div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>             <span class="keywordtype">int</span> theBand=(band_opt.size()) ? band_opt[index] : index;</div>
-<div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>             <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>               <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>             std::cout << <span class="stringliteral">"set field "</span> << fieldname_opt[index] << <span class="stringliteral">" to "</span> << theValue << std::endl;</div>
-<div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>               <span class="keywordflow">switch</span>( fieldType ){</div>
-<div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>               <span class="keywordflow">case</span> OFTInteger:</div>
-<div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>               <span class="keywordflow">case</span> OFTReal:</div>
-<div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>             <span class="keywordflow">if</span>(polygon_opt[0])</div>
-<div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>               writePolygonFeature->SetField(fieldname_opt[index].c_str(),theValue);</div>
-<div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>               writeCentroidFeature->SetField(fieldname_opt[index].c_str(),theValue);</div>
-<div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>               <span class="keywordflow">case</span> OFTString:</div>
-<div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>             <span class="keywordflow">if</span>(polygon_opt[0])</div>
-<div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>               writePolygonFeature->SetField(fieldname_opt[index].c_str(),type2string<double>(theValue).c_str());</div>
-<div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>               writeCentroidFeature->SetField(fieldname_opt[index].c_str(),type2string<double>(theValue).c_str());</div>
-<div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>               <span class="keywordflow">default</span>:<span class="comment">//not supported</span></div>
-<div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>             std::string errorString=<span class="stringliteral">"field type not supported"</span>;</div>
-<div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>             <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>               }</div>
-<div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>             }</div>
-<div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>             <span class="keywordflow">catch</span>(std::string e){</div>
-<div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>               std::cout << e << std::endl;</div>
-<div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>               exit(1);</div>
-<div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>             }</div>
-<div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>           }</div>
-<div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>         }</div>
-<div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>         <span class="keywordflow">else</span>{<span class="comment">//ruleMap[rule_opt[0]] is not rule::point</span></div>
-<div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>           <span class="keywordtype">double</span> theValue=0;</div>
-<div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> index=0;index<polyValues.size();++index){</div>
-<div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>             <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>               <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::mean)</div>
-<div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>             theValue=stat.mean(polyValues[index]);</div>
-<div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>               <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::stdev)</div>
-<div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>             theValue=sqrt(stat.var(polyValues[index]));</div>
-<div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>               <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::median)</div>
-<div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>             theValue=stat.median(polyValues[index]);</div>
-<div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>               <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::percentile)</div>
-<div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>             theValue=stat.percentile(polyValues[index],polyValues[index].begin(),polyValues[index].end(),percentile_opt[0]);</div>
-<div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>               <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::sum)</div>
-<div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>             theValue=stat.sum(polyValues[index]);</div>
-<div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>               <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::max)</div>
-<div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>             theValue=stat.mymax(polyValues[index]);</div>
-<div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>               <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::min)</div>
-<div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>             theValue=stat.mymin(polyValues[index]);</div>
-<div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>               <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::centroid){</div>
-<div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>             <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>               std::cout << <span class="stringliteral">"number of points in polygon: "</span> << nPointPolygon << std::endl;</div>
-<div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>             assert(nPointPolygon<=1);</div>
-<div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>             assert(nPointPolygon==polyValues[index].size());</div>
-<div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>             theValue=polyValues[index].back();</div>
-<div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>               }</div>
-<div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>               <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>             std::string errorString=<span class="stringliteral">"rule not supported"</span>;</div>
-<div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>             <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>               }</div>
-<div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>               <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>             std::cout << <span class="stringliteral">"set field "</span> << fieldname_opt[index] << <span class="stringliteral">" to "</span> << theValue << std::endl;</div>
-<div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>               <span class="keywordflow">switch</span>( fieldType ){</div>
-<div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>               <span class="keywordflow">case</span> OFTInteger:</div>
-<div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>               <span class="keywordflow">case</span> OFTReal:</div>
-<div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>             <span class="keywordflow">if</span>(polygon_opt[0])</div>
-<div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>               writePolygonFeature->SetField(fieldname_opt[index].c_str(),theValue);</div>
-<div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>               writeCentroidFeature->SetField(fieldname_opt[index].c_str(),theValue);</div>
-<div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>               <span class="keywordflow">case</span> OFTString:</div>
-<div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>             <span class="keywordflow">if</span>(polygon_opt[0])</div>
-<div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>               writePolygonFeature->SetField(fieldname_opt[index].c_str(),type2string<double>(theValue).c_str());</div>
-<div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>               writeCentroidFeature->SetField(fieldname_opt[index].c_str(),type2string<double>(theValue).c_str());</div>
-<div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>               <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>             std::string errorString=<span class="stringliteral">"field type not supported"</span>;</div>
-<div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>             <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>               }</div>
-<div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>             }</div>
-<div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>             <span class="keywordflow">catch</span>(std::string e){</div>
-<div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>               std::cout << e << std::endl;</div>
-<div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>               exit(1);</div>
-<div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>             }</div>
-<div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>           }</div>
-<div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>         }</div>
-<div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>           }</div>
-<div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>           <span class="keywordflow">else</span>{<span class="comment">//class_opt is set</span></div>
-<div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>         <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::proportion||ruleMap[rule_opt[0]]==rule::count){</div>
-<div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>           <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>             std::cout << <span class="stringliteral">"number of points in polygon: "</span> << nPointPolygon << std::endl;</div>
-<div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>           <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::proportion)</div>
-<div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>             stat.normalize_pct(polyClassValues);</div>
-<div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> index=0;index<polyClassValues.size();++index){</div>
-<div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>             <span class="keywordtype">double</span> theValue=polyClassValues[index];</div>
-<div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>             ostringstream fs;</div>
-<div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>             fs << class_opt[index];</div>
-<div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>             <span class="keywordflow">if</span>(polygon_opt[0])</div>
-<div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>               writePolygonFeature->SetField(fs.str().c_str(),<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(theValue));</div>
-<div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>               writeCentroidFeature->SetField(fs.str().c_str(),<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(theValue));</div>
-<div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>           }</div>
-<div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>         }</div>
-<div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::custom){</div>
-<div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>           assert(polygon_opt[0]);<span class="comment">//not implemented for points</span></div>
-<div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>           <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>             std::cout << <span class="stringliteral">"number of points in polygon: "</span> << nPointPolygon << std::endl;</div>
-<div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>           stat.normalize_pct(polyClassValues);</div>
-<div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>           assert(polyClassValues.size()==2);<span class="comment">//11:broadleaved, 12:coniferous</span></div>
-<div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>           <span class="keywordflow">if</span>(polyClassValues[0]>=75)<span class="comment">//broadleaved</span></div>
-<div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>             writePolygonFeature->SetField(label_opt[0].c_str(),static_cast<int>(11));</div>
-<div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>           <span class="keywordflow">else</span> <span class="keywordflow">if</span>(polyClassValues[1]>=75)<span class="comment">//coniferous</span></div>
-<div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>             writePolygonFeature->SetField(label_opt[0].c_str(),static_cast<int>(12));</div>
-<div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>           <span class="keywordflow">else</span> <span class="keywordflow">if</span>(polyClassValues[0]>25&&polyClassValues[1]>25)<span class="comment">//mixed</span></div>
-<div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>             writePolygonFeature->SetField(label_opt[0].c_str(),static_cast<int>(13));</div>
-<div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>           <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>             <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>               std::cout << <span class="stringliteral">"No valid value in polyClassValues..."</span> << std::endl;</div>
-<div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>               <span class="keywordflow">for</span>(<span class="keywordtype">int</span> index=0;index<polyClassValues.size();++index){</div>
-<div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>             <span class="keywordtype">double</span> theValue=polyClassValues[index];</div>
-<div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>             std::cout << theValue << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>               }</div>
-<div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>               std::cout << std::endl;</div>
-<div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>             }</div>
-<div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>             writePolygonFeature->SetField(label_opt[0].c_str(),static_cast<int>(20));</div>
-<div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>           }</div>
-<div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>         }</div>
-<div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::mode){</div>
-<div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>           <span class="comment">//maximum votes in polygon</span></div>
-<div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>           <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>             std::cout << <span class="stringliteral">"number of points in polygon: "</span> << nPointPolygon << std::endl;</div>
-<div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>           <span class="comment">//search for class with maximum votes</span></div>
-<div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>           <span class="keywordtype">int</span> maxClass=stat.mymin(class_opt);</div>
-<div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>           vector<double>::iterator maxit;</div>
-<div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>           maxit=stat.mymax(polyClassValues,polyClassValues.begin(),polyClassValues.end());</div>
-<div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>           <span class="keywordtype">int</span> maxIndex=distance(polyClassValues.begin(),maxit);</div>
-<div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>           maxClass=class_opt[maxIndex];</div>
-<div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>           <span class="keywordflow">if</span>(verbose_opt[0]>0)</div>
-<div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>             std::cout << <span class="stringliteral">"maxClass: "</span> << maxClass << std::endl;</div>
-<div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>           <span class="keywordflow">if</span>(polygon_opt[0])</div>
-<div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>             writePolygonFeature->SetField(label_opt[0].c_str(),maxClass);</div>
-<div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>             writeCentroidFeature->SetField(label_opt[0].c_str(),maxClass);</div>
-<div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>         }</div>
-<div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>           }</div>
-<div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>           <span class="keywordflow">if</span>(polygon_opt[0]){</div>
-<div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>         <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>           std::cout << <span class="stringliteral">"creating polygon feature"</span> << std::endl;</div>
-<div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>         <span class="keywordflow">if</span>(writeTest){</div>
-<div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>           <span class="keywordflow">if</span>(writeTestLayer->CreateFeature( writePolygonFeature ) != OGRERR_NONE ){</div>
-<div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>             std::string errorString=<span class="stringliteral">"Failed to create polygon feature in ogr vector dataset"</span>;</div>
-<div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>             <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>           }</div>
-<div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>         }</div>
-<div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>           <span class="keywordflow">if</span>(writeLayer->CreateFeature( writePolygonFeature ) != OGRERR_NONE ){</div>
-<div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>             std::string errorString=<span class="stringliteral">"Failed to create polygon feature in ogr vector dataset"</span>;</div>
-<div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>             <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>           }</div>
-<div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>         }</div>
-<div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>         OGRFeature::DestroyFeature( writePolygonFeature );</div>
-<div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>         ++ntotalvalid;</div>
-<div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>         ++ntotalvalidLayer;</div>
-<div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>           }</div>
-<div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>           <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>         <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>           std::cout << <span class="stringliteral">"creating point feature in centroid"</span> << std::endl;</div>
-<div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>         <span class="keywordflow">if</span>(writeTest){</div>
-<div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>           <span class="keywordflow">if</span>(writeTestLayer->CreateFeature( writeCentroidFeature ) != OGRERR_NONE ){</div>
-<div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>             std::string errorString=<span class="stringliteral">"Failed to create point feature in ogr vector dataset"</span>;</div>
-<div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>             <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>           }</div>
-<div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>         }</div>
-<div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>           <span class="comment">//test</span></div>
-<div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>           assert(validFeature);</div>
-<div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>           <span class="keywordflow">if</span>(writeLayer->CreateFeature( writeCentroidFeature ) != OGRERR_NONE ){</div>
-<div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>             std::string errorString=<span class="stringliteral">"Failed to create point feature in ogr vector dataset"</span>;</div>
-<div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>             <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>           }</div>
-<div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>         }</div>
-<div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>         OGRFeature::DestroyFeature( writeCentroidFeature );</div>
-<div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>         ++ntotalvalid;</div>
-<div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>         ++ntotalvalidLayer;</div>
-<div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>           }</div>
-<div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>         }</div>
-<div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>       }</div>
-<div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(wkbFlatten(poGeometry->getGeometryType()) == wkbMultiPolygon){<span class="comment">//todo: try to use virtual OGRGeometry instead of OGRMultiPolygon and OGRPolygon</span></div>
-<div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>         OGRMultiPolygon readPolygon = *((OGRMultiPolygon *) poGeometry);</div>
-<div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>         OGRPolygon writePolygon;</div>
-<div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>         OGRLinearRing writeRing;</div>
-<div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>         OGRPoint writeCentroidPoint;</div>
-<div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>         OGRFeature *writePolygonFeature;</div>
-<div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>         OGRFeature *writeCentroidFeature;</div>
-<div class="line"><a name="l02040"></a><span class="lineno"> 2040</span> </div>
-<div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>         readPolygon.closeRings();</div>
-<div class="line"><a name="l02042"></a><span class="lineno"> 2042</span> </div>
-<div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>         <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>           std::cout << <span class="stringliteral">"get centroid point from polygon"</span> << std::endl;</div>
-<div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>         readPolygon.Centroid(&writeCentroidPoint);</div>
-<div class="line"><a name="l02046"></a><span class="lineno"> 2046</span> </div>
-<div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>         <span class="keywordtype">double</span> ulx,uly,lrx,lry;</div>
-<div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>         <span class="keywordtype">double</span> uli,ulj,lri,lrj;</div>
-<div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>         <span class="keywordflow">if</span>((polygon_opt[0]&&ruleMap[rule_opt[0]]==rule::point)||(ruleMap[rule_opt[0]]==rule::centroid)){</div>
-<div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>           ulx=writeCentroidPoint.getX();</div>
-<div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>           uly=writeCentroidPoint.getY();</div>
-<div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>           lrx=ulx;</div>
-<div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>           lry=uly;</div>
-<div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>         }</div>
-<div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>           <span class="comment">//get envelope</span></div>
-<div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>           <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>         std::cout << <span class="stringliteral">"reading envelope for polygon "</span> << ifeature << std::endl;</div>
-<div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>           OGREnvelope* psEnvelope=<span class="keyword">new</span> OGREnvelope();</div>
-<div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>           readPolygon.getEnvelope(psEnvelope);</div>
-<div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>           ulx=psEnvelope->MinX;</div>
-<div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>           uly=psEnvelope->MaxY;</div>
-<div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>           lrx=psEnvelope->MaxX;</div>
-<div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>           lry=psEnvelope->MinY;</div>
-<div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>           <span class="keyword">delete</span> psEnvelope;</div>
-<div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>         }</div>
-<div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>         <span class="comment">// if(geo_opt[0]){</span></div>
-<div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>           imgReader.geo2image(ulx,uly,uli,ulj);</div>
-<div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>           imgReader.geo2image(lrx,lry,lri,lrj);</div>
-<div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>         <span class="comment">// }</span></div>
-<div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>         <span class="comment">// else{</span></div>
-<div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>         <span class="comment">//   uli=ulx;</span></div>
-<div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>         <span class="comment">//   ulj=uly;</span></div>
-<div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>         <span class="comment">//   lri=lrx;</span></div>
-<div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>         <span class="comment">//   lrj=lry;</span></div>
-<div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>         <span class="comment">// }</span></div>
-<div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>         <span class="comment">//nearest neighbour</span></div>
-<div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>         ulj=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(ulj);</div>
-<div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>         uli=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(uli);</div>
-<div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>         lrj=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(lrj);</div>
-<div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>         lri=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(lri);</div>
-<div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>         <span class="comment">//iterate through all pixels</span></div>
-<div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>         <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>           std::cout << <span class="stringliteral">"bounding box for multipologon feature "</span> << ifeature << <span class="stringliteral">": "</span> << uli << <span class="stringliteral">" "</span> << ulj << <span class="stringliteral">" "</span> << lri << <span class="stringliteral">" "</span> <<  [...]
-<div class="line"><a name="l02085"></a><span class="lineno"> 2085</span> </div>
-<div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>         <span class="keywordflow">if</span>(uli<0)</div>
-<div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>           uli=0;</div>
-<div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>         <span class="keywordflow">if</span>(lri<0)</div>
-<div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>           lri=0;</div>
-<div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>         <span class="keywordflow">if</span>(uli>=imgReader.nrOfCol())</div>
-<div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>           uli=imgReader.nrOfCol()-1;</div>
-<div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>         <span class="keywordflow">if</span>(lri>=imgReader.nrOfCol())</div>
-<div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>           lri=imgReader.nrOfCol()-1;</div>
-<div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>         <span class="keywordflow">if</span>(ulj<0)</div>
-<div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>           ulj=0;</div>
-<div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>         <span class="keywordflow">if</span>(lrj<0)</div>
-<div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>           lrj=0;</div>
-<div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>         <span class="keywordflow">if</span>(ulj>=imgReader.nrOfRow())</div>
-<div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>           ulj=imgReader.nrOfRow()-1;</div>
-<div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>         <span class="keywordflow">if</span>(lrj>=imgReader.nrOfRow())</div>
-<div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>           lrj=imgReader.nrOfRow()-1;</div>
-<div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>         <span class="comment">// if(uli<0||lri>=imgReader.nrOfCol()||ulj<0||lrj>=imgReader.nrOfRow())</span></div>
-<div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>         <span class="comment">//   continue;</span></div>
-<div class="line"><a name="l02104"></a><span class="lineno"> 2104</span> </div>
-<div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>         <span class="keywordtype">int</span> nPointPolygon=0;</div>
-<div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>         <span class="keywordflow">if</span>(polygon_opt[0]){</div>
-<div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>           <span class="keywordflow">if</span>(writeTest)</div>
-<div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>         writePolygonFeature = OGRFeature::CreateFeature(writeTestLayer->GetLayerDefn());</div>
-<div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>         writePolygonFeature = OGRFeature::CreateFeature(writeLayer->GetLayerDefn());</div>
-<div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>         }</div>
-<div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]!=rule::point){</div>
-<div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>           <span class="keywordflow">if</span>(writeTest)</div>
-<div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>         writeCentroidFeature = OGRFeature::CreateFeature(writeTestLayer->GetLayerDefn());</div>
-<div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>         writeCentroidFeature = OGRFeature::CreateFeature(writeLayer->GetLayerDefn());</div>
-<div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>         }</div>
-<div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>         <span class="comment">// vector<double> polyValues;</span></div>
-<div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>         <a class="code" href="classVector2d.html">Vector2d<double></a> polyValues;</div>
-<div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>         vector<double> polyClassValues;</div>
-<div class="line"><a name="l02121"></a><span class="lineno"> 2121</span> </div>
-<div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>         <span class="keywordflow">if</span>(class_opt.size()){</div>
-<div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>           polyClassValues.resize(class_opt.size());</div>
-<div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>           <span class="comment">//initialize</span></div>
-<div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<class_opt.size();++iclass)</div>
-<div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>         polyClassValues[iclass]=0;</div>
-<div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>         }</div>
-<div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>           polyValues.resize(nband);</div>
-<div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>         vector< Vector2d<double> > readValues(nband);</div>
-<div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>           <span class="keywordtype">int</span> theBand=(band_opt.size()) ? band_opt[iband] : iband;</div>
-<div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>           imgReader.readDataBlock(readValues[iband],GDT_Float64,uli,lri,ulj,lrj,theBand);</div>
-<div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>         }</div>
-<div class="line"><a name="l02135"></a><span class="lineno"> 2135</span> </div>
-<div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>         OGRPoint thePoint;</div>
-<div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=ulj;j<=lrj;++j){</div>
-<div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=uli;i<=lri;++i){</div>
-<div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>         <span class="comment">//check if within raster image</span></div>
-<div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>         <span class="keywordflow">if</span>(i<0||i>=imgReader.nrOfCol())</div>
-<div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>           <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>         <span class="keywordflow">if</span>(j<0||j>=imgReader.nrOfRow())</div>
-<div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>           <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>         <span class="comment">//check if point is on surface</span></div>
-<div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>         <span class="keywordtype">double</span> theX=0;</div>
-<div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>         <span class="keywordtype">double</span> theY=0;</div>
-<div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>         imgReader.image2geo(i,j,theX,theY);</div>
-<div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>         thePoint.setX(theX);</div>
-<div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>         thePoint.setY(theY);</div>
-<div class="line"><a name="l02150"></a><span class="lineno"> 2150</span> </div>
-<div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>         <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]!=rule::centroid&&!readPolygon.Contains(&thePoint))</div>
-<div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>           <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l02153"></a><span class="lineno"> 2153</span> </div>
-<div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>         <span class="keywordtype">bool</span> valid=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l02155"></a><span class="lineno"> 2155</span> </div>
-<div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>         <span class="keywordflow">if</span>(srcnodata_opt.size()){</div>
-<div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> vband=0;vband<bndnodata_opt.size();++vband){</div>
-<div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>             <span class="keywordtype">double</span> value=((readValues[bndnodata_opt[vband]])[j-ulj])[i-uli];</div>
-<div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>             <span class="keywordflow">if</span>(value==srcnodata_opt[vband]){</div>
-<div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>               valid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>             }</div>
-<div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>           }</div>
-<div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>         }</div>
-<div class="line"><a name="l02165"></a><span class="lineno"> 2165</span> </div>
-<div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>         <span class="keywordflow">if</span>(!valid)</div>
-<div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>           <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>           validFeature=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>         </div>
-<div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>         writeRing.addPoint(&thePoint);</div>
-<div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>         <span class="comment">// if(writeRing.isPointOnRingBoundary(&thePoint))</span></div>
-<div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>         <span class="comment">//    writeRing.addPoint(&thePoint);</span></div>
-<div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>         <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>             std::cout << <span class="stringliteral">"point is on surface:"</span> << thePoint.getX() << <span class="stringliteral">","</span> << thePoint.getY() << std::endl;</div>
-<div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>           ++nPointPolygon;</div>
-<div class="line"><a name="l02177"></a><span class="lineno"> 2177</span> </div>
-<div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>           <span class="keywordflow">if</span>(polythreshold_opt.size())</div>
-<div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>             <span class="keywordflow">if</span>(nPointPolygon>polythreshold_opt[0])</div>
-<div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>               <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>           <span class="comment">// throw(nPointPolygon);</span></div>
-<div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>           OGRFeature *writePointFeature;</div>
-<div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>           <span class="keywordflow">if</span>(!polygon_opt[0]){</div>
-<div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>             <span class="comment">//create feature</span></div>
-<div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>             <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::point){<span class="comment">//do not create in case of mean, stdev, median or sum (only create point at centroid)</span></div>
-<div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>               <span class="keywordflow">if</span>(writeTest)</div>
-<div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>             writePointFeature = OGRFeature::CreateFeature(writeTestLayer->GetLayerDefn());</div>
-<div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>               <span class="keywordflow">else</span></div>
-<div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>             writePointFeature = OGRFeature::CreateFeature(writeLayer->GetLayerDefn());</div>
-<div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>               <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l02191"></a><span class="lineno"> 2191</span>             std::cout << <span class="stringliteral">"copying fields from polygons "</span> << std::endl;</div>
-<div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>               <span class="keywordflow">if</span>(writePointFeature->SetFrom(readFeature)!= OGRERR_NONE)</div>
-<div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>             cerr << <span class="stringliteral">"writing feature failed"</span> << std::endl;</div>
-<div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>               <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>             std::cout << <span class="stringliteral">"set geometry as point "</span> << std::endl;</div>
-<div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>               <span class="comment">//test</span></div>
-<div class="line"><a name="l02197"></a><span class="lineno"> 2197</span>               writePointFeature->SetGeometry(&thePoint);</div>
-<div class="line"><a name="l02198"></a><span class="lineno"> 2198</span>               assert(wkbFlatten(writePointFeature->GetGeometryRef()->getGeometryType()) == wkbPoint);</div>
-<div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>               <span class="comment">// OGRGeometry *updateGeometry;</span></div>
-<div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>               <span class="comment">// updateGeometry = writePointFeature->GetGeometryRef();</span></div>
-<div class="line"><a name="l02201"></a><span class="lineno"> 2201</span>               <span class="comment">// OGRPoint *poPoint = (OGRPoint *) updateGeometry;</span></div>
-<div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>               <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>             std::cout << <span class="stringliteral">"write feature has "</span> << writePointFeature->GetFieldCount() << <span class="stringliteral">" fields"</span> << std::endl;</div>
-<div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>             }</div>
-<div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>           }</div>
-<div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>           <span class="keywordflow">if</span>(class_opt.size()){</div>
-<div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>             <span class="keywordtype">short</span> value=((readValues[0])[j-ulj])[i-uli];</div>
-<div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<class_opt.size();++iclass){</div>
-<div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>               <span class="keywordflow">if</span>(value==class_opt[iclass])</div>
-<div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>             polyClassValues[iclass]+=1;</div>
-<div class="line"><a name="l02211"></a><span class="lineno"> 2211</span>             }</div>
-<div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>           }</div>
-<div class="line"><a name="l02213"></a><span class="lineno"> 2213</span>           <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l02215"></a><span class="lineno"> 2215</span>               <span class="keywordtype">double</span> value=((readValues[iband])[j-ulj])[i-uli];</div>
-<div class="line"><a name="l02216"></a><span class="lineno"> 2216</span>               <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>             std::cout << <span class="stringliteral">": "</span> << value << std::endl;</div>
-<div class="line"><a name="l02218"></a><span class="lineno"> 2218</span>               <span class="keywordflow">if</span>(polygon_opt[0]||ruleMap[rule_opt[0]]!=rule::point)</div>
-<div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>             polyValues[iband].push_back(value);</div>
-<div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>               <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l02221"></a><span class="lineno"> 2221</span>             <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l02222"></a><span class="lineno"> 2222</span>               std::cout << <span class="stringliteral">"set field "</span> << fieldname_opt[iband] << <span class="stringliteral">" to "</span> << value << std::endl;</div>
-<div class="line"><a name="l02223"></a><span class="lineno"> 2223</span>             <span class="keywordflow">switch</span>( fieldType ){</div>
-<div class="line"><a name="l02224"></a><span class="lineno"> 2224</span>             <span class="keywordflow">case</span> OFTInteger:</div>
-<div class="line"><a name="l02225"></a><span class="lineno"> 2225</span>             <span class="keywordflow">case</span> OFTReal:</div>
-<div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>               writePointFeature->SetField(fieldname_opt[iband].c_str(),value);</div>
-<div class="line"><a name="l02227"></a><span class="lineno"> 2227</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l02228"></a><span class="lineno"> 2228</span>             <span class="keywordflow">case</span> OFTString:</div>
-<div class="line"><a name="l02229"></a><span class="lineno"> 2229</span>               writePointFeature->SetField(fieldname_opt[iband].c_str(),type2string<double>(value).c_str());</div>
-<div class="line"><a name="l02230"></a><span class="lineno"> 2230</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l02231"></a><span class="lineno"> 2231</span>             <span class="keywordflow">default</span>:<span class="comment">//not supported</span></div>
-<div class="line"><a name="l02232"></a><span class="lineno"> 2232</span>               assert(0);</div>
-<div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>             }</div>
-<div class="line"><a name="l02235"></a><span class="lineno"> 2235</span>               }<span class="comment">//else</span></div>
-<div class="line"><a name="l02236"></a><span class="lineno"> 2236</span>             }<span class="comment">//iband</span></div>
-<div class="line"><a name="l02237"></a><span class="lineno"> 2237</span>           }<span class="comment">//else (class_opt.size())</span></div>
-<div class="line"><a name="l02238"></a><span class="lineno"> 2238</span>           <span class="keywordflow">if</span>(!polygon_opt[0]){</div>
-<div class="line"><a name="l02239"></a><span class="lineno"> 2239</span>             <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::point){<span class="comment">//do not create in case of mean, stdev or median value (only at centroid)</span></div>
-<div class="line"><a name="l02240"></a><span class="lineno"> 2240</span>               <span class="comment">//write feature</span></div>
-<div class="line"><a name="l02241"></a><span class="lineno"> 2241</span>               <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l02242"></a><span class="lineno"> 2242</span>             std::cout << <span class="stringliteral">"creating point feature"</span> << std::endl;</div>
-<div class="line"><a name="l02243"></a><span class="lineno"> 2243</span>               <span class="keywordflow">if</span>(writeTest){</div>
-<div class="line"><a name="l02244"></a><span class="lineno"> 2244</span>             <span class="keywordflow">if</span>(writeTestLayer->CreateFeature( writePointFeature ) != OGRERR_NONE ){</div>
-<div class="line"><a name="l02245"></a><span class="lineno"> 2245</span>               std::string errorString=<span class="stringliteral">"Failed to create feature in ogr vector dataset"</span>;</div>
-<div class="line"><a name="l02246"></a><span class="lineno"> 2246</span>               <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>             }</div>
-<div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>               }</div>
-<div class="line"><a name="l02249"></a><span class="lineno"> 2249</span>               <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l02250"></a><span class="lineno"> 2250</span>             <span class="keywordflow">if</span>(writeLayer->CreateFeature( writePointFeature ) != OGRERR_NONE ){</div>
-<div class="line"><a name="l02251"></a><span class="lineno"> 2251</span>               std::string errorString=<span class="stringliteral">"Failed to create feature in ogr vector dataset"</span>;</div>
-<div class="line"><a name="l02252"></a><span class="lineno"> 2252</span>               <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l02253"></a><span class="lineno"> 2253</span>             }</div>
-<div class="line"><a name="l02254"></a><span class="lineno"> 2254</span>               }</div>
-<div class="line"><a name="l02255"></a><span class="lineno"> 2255</span>               <span class="comment">//destroy feature</span></div>
-<div class="line"><a name="l02256"></a><span class="lineno"> 2256</span>               OGRFeature::DestroyFeature( writePointFeature );</div>
-<div class="line"><a name="l02257"></a><span class="lineno"> 2257</span>             }</div>
-<div class="line"><a name="l02258"></a><span class="lineno"> 2258</span>           }</div>
-<div class="line"><a name="l02259"></a><span class="lineno"> 2259</span>           <span class="comment">// ++isample;</span></div>
-<div class="line"><a name="l02260"></a><span class="lineno"> 2260</span>           ++ntotalvalid;</div>
-<div class="line"><a name="l02261"></a><span class="lineno"> 2261</span>           ++ntotalvalidLayer;</div>
-<div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>           }</div>
-<div class="line"><a name="l02263"></a><span class="lineno"> 2263</span>         }</div>
-<div class="line"><a name="l02264"></a><span class="lineno"> 2264</span>         <span class="keywordflow">if</span>(!validFeature)</div>
-<div class="line"><a name="l02265"></a><span class="lineno"> 2265</span>           <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l02266"></a><span class="lineno"> 2266</span>         <span class="keywordflow">if</span>(polygon_opt[0]||ruleMap[rule_opt[0]]!=rule::point){</div>
-<div class="line"><a name="l02267"></a><span class="lineno"> 2267</span>           <span class="comment">//do not create if no points found within polygon</span></div>
-<div class="line"><a name="l02268"></a><span class="lineno"> 2268</span>           <span class="keywordflow">if</span>(!nPointPolygon)</div>
-<div class="line"><a name="l02269"></a><span class="lineno"> 2269</span>         <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l02270"></a><span class="lineno"> 2270</span>           <span class="comment">//add ring to polygon</span></div>
-<div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>           <span class="keywordflow">if</span>(polygon_opt[0]){</div>
-<div class="line"><a name="l02272"></a><span class="lineno"> 2272</span>         writePolygon.addRing(&writeRing);</div>
-<div class="line"><a name="l02273"></a><span class="lineno"> 2273</span>         writePolygon.closeRings();</div>
-<div class="line"><a name="l02274"></a><span class="lineno"> 2274</span>         <span class="comment">//write geometry of writePolygon</span></div>
-<div class="line"><a name="l02275"></a><span class="lineno"> 2275</span>         <span class="comment">//test</span></div>
-<div class="line"><a name="l02276"></a><span class="lineno"> 2276</span>         <span class="comment">//writePolygon and readFeature are from geometry type wkbMultiPolygon</span></div>
-<div class="line"><a name="l02277"></a><span class="lineno"> 2277</span>         <span class="comment">// writePolygonFeature->SetGeometry(&writePolygon);</span></div>
-<div class="line"><a name="l02278"></a><span class="lineno"> 2278</span>         <span class="keywordflow">if</span>(writePolygonFeature->SetFrom(readFeature)!= OGRERR_NONE)</div>
-<div class="line"><a name="l02279"></a><span class="lineno"> 2279</span>           cerr << <span class="stringliteral">"writing feature failed"</span> << std::endl;</div>
-<div class="line"><a name="l02280"></a><span class="lineno"> 2280</span>         assert(writePolygonFeature->GetGeometryRef()->getGeometryType()==wkbMultiPolygon);</div>
-<div class="line"><a name="l02281"></a><span class="lineno"> 2281</span>         <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l02282"></a><span class="lineno"> 2282</span>           std::cout << <span class="stringliteral">"copying new fields write polygon "</span> << std::endl;</div>
-<div class="line"><a name="l02283"></a><span class="lineno"> 2283</span>         <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>           std::cout << <span class="stringliteral">"write feature has "</span> << writePolygonFeature->GetFieldCount() << <span class="stringliteral">" fields"</span> << std::endl;</div>
-<div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>         <span class="comment">//write polygon feature</span></div>
-<div class="line"><a name="l02286"></a><span class="lineno"> 2286</span>           }</div>
-<div class="line"><a name="l02287"></a><span class="lineno"> 2287</span>           <span class="keywordflow">else</span>{<span class="comment">//write band information of polygon to centroid point</span></div>
-<div class="line"><a name="l02288"></a><span class="lineno"> 2288</span>         <span class="comment">//create feature</span></div>
-<div class="line"><a name="l02289"></a><span class="lineno"> 2289</span>         <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l02290"></a><span class="lineno"> 2290</span>           std::cout << <span class="stringliteral">"copying fields from polygons "</span> << std::endl;</div>
-<div class="line"><a name="l02291"></a><span class="lineno"> 2291</span>         <span class="keywordflow">if</span>(writeCentroidFeature->SetFrom(readFeature)!= OGRERR_NONE)</div>
-<div class="line"><a name="l02292"></a><span class="lineno"> 2292</span>           cerr << <span class="stringliteral">"writing feature failed"</span> << std::endl;</div>
-<div class="line"><a name="l02293"></a><span class="lineno"> 2293</span>         writeCentroidFeature->SetGeometry(&writeCentroidPoint);</div>
-<div class="line"><a name="l02294"></a><span class="lineno"> 2294</span>         assert(wkbFlatten(writeCentroidFeature->GetGeometryRef()->getGeometryType()) == wkbPoint);</div>
-<div class="line"><a name="l02295"></a><span class="lineno"> 2295</span>         <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l02296"></a><span class="lineno"> 2296</span>           std::cout << <span class="stringliteral">"write feature has "</span> << writeCentroidFeature->GetFieldCount() << <span class="stringliteral">" fields"</span> << std::endl;</div>
-<div class="line"><a name="l02297"></a><span class="lineno"> 2297</span>           }</div>
-<div class="line"><a name="l02298"></a><span class="lineno"> 2298</span>           <span class="keywordflow">if</span>(class_opt.empty()){</div>
-<div class="line"><a name="l02299"></a><span class="lineno"> 2299</span>         <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::point){<span class="comment">//value at centroid of polygon</span></div>
-<div class="line"><a name="l02300"></a><span class="lineno"> 2300</span>           <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l02301"></a><span class="lineno"> 2301</span>             std::cout << <span class="stringliteral">"number of points in polygon: "</span> << nPointPolygon << std::endl;</div>
-<div class="line"><a name="l02302"></a><span class="lineno"> 2302</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> index=0;index<polyValues.size();++index){</div>
-<div class="line"><a name="l02303"></a><span class="lineno"> 2303</span>             <span class="comment">//test</span></div>
-<div class="line"><a name="l02304"></a><span class="lineno"> 2304</span>             assert(polyValues[index].size()==1);</div>
-<div class="line"><a name="l02305"></a><span class="lineno"> 2305</span>             <span class="keywordtype">double</span> theValue=polyValues[index].back();</div>
-<div class="line"><a name="l02306"></a><span class="lineno"> 2306</span>             <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l02307"></a><span class="lineno"> 2307</span>               std::cout << <span class="stringliteral">"number of points in polygon: "</span> << nPointPolygon << std::endl;</div>
-<div class="line"><a name="l02308"></a><span class="lineno"> 2308</span>             <span class="keywordtype">int</span> theBand=(band_opt.size()) ? band_opt[index] : index;</div>
-<div class="line"><a name="l02309"></a><span class="lineno"> 2309</span>             <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>               <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l02311"></a><span class="lineno"> 2311</span>             std::cout << <span class="stringliteral">"set field "</span> << fieldname_opt[index] << <span class="stringliteral">" to "</span> << theValue << std::endl;</div>
-<div class="line"><a name="l02312"></a><span class="lineno"> 2312</span>               <span class="keywordflow">switch</span>( fieldType ){</div>
-<div class="line"><a name="l02313"></a><span class="lineno"> 2313</span>               <span class="keywordflow">case</span> OFTInteger:</div>
-<div class="line"><a name="l02314"></a><span class="lineno"> 2314</span>               <span class="keywordflow">case</span> OFTReal:</div>
-<div class="line"><a name="l02315"></a><span class="lineno"> 2315</span>             <span class="keywordflow">if</span>(polygon_opt[0])</div>
-<div class="line"><a name="l02316"></a><span class="lineno"> 2316</span>               writePolygonFeature->SetField(fieldname_opt[index].c_str(),theValue);</div>
-<div class="line"><a name="l02317"></a><span class="lineno"> 2317</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>               writeCentroidFeature->SetField(fieldname_opt[index].c_str(),theValue);</div>
-<div class="line"><a name="l02319"></a><span class="lineno"> 2319</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l02320"></a><span class="lineno"> 2320</span>               <span class="keywordflow">case</span> OFTString:</div>
-<div class="line"><a name="l02321"></a><span class="lineno"> 2321</span>             <span class="keywordflow">if</span>(polygon_opt[0])</div>
-<div class="line"><a name="l02322"></a><span class="lineno"> 2322</span>               writePolygonFeature->SetField(fieldname_opt[index].c_str(),type2string<double>(theValue).c_str());</div>
-<div class="line"><a name="l02323"></a><span class="lineno"> 2323</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l02324"></a><span class="lineno"> 2324</span>               writeCentroidFeature->SetField(fieldname_opt[index].c_str(),type2string<double>(theValue).c_str());</div>
-<div class="line"><a name="l02325"></a><span class="lineno"> 2325</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l02326"></a><span class="lineno"> 2326</span>               <span class="keywordflow">default</span>:<span class="comment">//not supported</span></div>
-<div class="line"><a name="l02327"></a><span class="lineno"> 2327</span>             std::string errorString=<span class="stringliteral">"field type not supported"</span>;</div>
-<div class="line"><a name="l02328"></a><span class="lineno"> 2328</span>             <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l02329"></a><span class="lineno"> 2329</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l02330"></a><span class="lineno"> 2330</span>               }</div>
-<div class="line"><a name="l02331"></a><span class="lineno"> 2331</span>             }</div>
-<div class="line"><a name="l02332"></a><span class="lineno"> 2332</span>             <span class="keywordflow">catch</span>(std::string e){</div>
-<div class="line"><a name="l02333"></a><span class="lineno"> 2333</span>               std::cout << e << std::endl;</div>
-<div class="line"><a name="l02334"></a><span class="lineno"> 2334</span>               exit(1);</div>
-<div class="line"><a name="l02335"></a><span class="lineno"> 2335</span>             }</div>
-<div class="line"><a name="l02336"></a><span class="lineno"> 2336</span>           }</div>
-<div class="line"><a name="l02337"></a><span class="lineno"> 2337</span>         }</div>
-<div class="line"><a name="l02338"></a><span class="lineno"> 2338</span>         <span class="keywordflow">else</span>{<span class="comment">//ruleMap[rule_opt[0]] is not rule::point</span></div>
-<div class="line"><a name="l02339"></a><span class="lineno"> 2339</span>           <span class="keywordtype">double</span> theValue=0;</div>
-<div class="line"><a name="l02340"></a><span class="lineno"> 2340</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> index=0;index<polyValues.size();++index){</div>
-<div class="line"><a name="l02341"></a><span class="lineno"> 2341</span>             <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l02342"></a><span class="lineno"> 2342</span>               <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::mean)</div>
-<div class="line"><a name="l02343"></a><span class="lineno"> 2343</span>             theValue=stat.mean(polyValues[index]);</div>
-<div class="line"><a name="l02344"></a><span class="lineno"> 2344</span>               <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::stdev)</div>
-<div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>             theValue=sqrt(stat.var(polyValues[index]));</div>
-<div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>               <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::median)</div>
-<div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>             theValue=stat.median(polyValues[index]);</div>
-<div class="line"><a name="l02348"></a><span class="lineno"> 2348</span>               <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::percentile)</div>
-<div class="line"><a name="l02349"></a><span class="lineno"> 2349</span>             theValue=stat.percentile(polyValues[index],polyValues[index].begin(),polyValues[index].end(),percentile_opt[0]);</div>
-<div class="line"><a name="l02350"></a><span class="lineno"> 2350</span>               <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::sum)</div>
-<div class="line"><a name="l02351"></a><span class="lineno"> 2351</span>             theValue=stat.sum(polyValues[index]);</div>
-<div class="line"><a name="l02352"></a><span class="lineno"> 2352</span>               <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::max)</div>
-<div class="line"><a name="l02353"></a><span class="lineno"> 2353</span>             theValue=stat.mymax(polyValues[index]);</div>
-<div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>               <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::min)</div>
-<div class="line"><a name="l02355"></a><span class="lineno"> 2355</span>             theValue=stat.mymin(polyValues[index]);</div>
-<div class="line"><a name="l02356"></a><span class="lineno"> 2356</span>               <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::centroid){</div>
-<div class="line"><a name="l02357"></a><span class="lineno"> 2357</span>             <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>               std::cout << <span class="stringliteral">"number of points in polygon: "</span> << nPointPolygon << std::endl;</div>
-<div class="line"><a name="l02359"></a><span class="lineno"> 2359</span>             assert(nPointPolygon<=1);</div>
-<div class="line"><a name="l02360"></a><span class="lineno"> 2360</span>             assert(nPointPolygon==polyValues[index].size());</div>
-<div class="line"><a name="l02361"></a><span class="lineno"> 2361</span>             theValue=polyValues[index].back();</div>
-<div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>               }</div>
-<div class="line"><a name="l02363"></a><span class="lineno"> 2363</span>               <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>             std::string errorString=<span class="stringliteral">"rule not supported"</span>;</div>
-<div class="line"><a name="l02365"></a><span class="lineno"> 2365</span>             <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l02366"></a><span class="lineno"> 2366</span>               }</div>
-<div class="line"><a name="l02367"></a><span class="lineno"> 2367</span>               <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l02368"></a><span class="lineno"> 2368</span>             std::cout << <span class="stringliteral">"set field "</span> << fieldname_opt[index] << <span class="stringliteral">" to "</span> << theValue << std::endl;</div>
-<div class="line"><a name="l02369"></a><span class="lineno"> 2369</span>               <span class="keywordflow">switch</span>( fieldType ){</div>
-<div class="line"><a name="l02370"></a><span class="lineno"> 2370</span>               <span class="keywordflow">case</span> OFTInteger:</div>
-<div class="line"><a name="l02371"></a><span class="lineno"> 2371</span>               <span class="keywordflow">case</span> OFTReal:</div>
-<div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>             <span class="keywordflow">if</span>(polygon_opt[0])</div>
-<div class="line"><a name="l02373"></a><span class="lineno"> 2373</span>               writePolygonFeature->SetField(fieldname_opt[index].c_str(),theValue);</div>
-<div class="line"><a name="l02374"></a><span class="lineno"> 2374</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l02375"></a><span class="lineno"> 2375</span>               writeCentroidFeature->SetField(fieldname_opt[index].c_str(),theValue);</div>
-<div class="line"><a name="l02376"></a><span class="lineno"> 2376</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l02377"></a><span class="lineno"> 2377</span>               <span class="keywordflow">case</span> OFTString:</div>
-<div class="line"><a name="l02378"></a><span class="lineno"> 2378</span>             <span class="keywordflow">if</span>(polygon_opt[0])</div>
-<div class="line"><a name="l02379"></a><span class="lineno"> 2379</span>               writePolygonFeature->SetField(fieldname_opt[index].c_str(),type2string<double>(theValue).c_str());</div>
-<div class="line"><a name="l02380"></a><span class="lineno"> 2380</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l02381"></a><span class="lineno"> 2381</span>               writeCentroidFeature->SetField(fieldname_opt[index].c_str(),type2string<double>(theValue).c_str());</div>
-<div class="line"><a name="l02382"></a><span class="lineno"> 2382</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l02383"></a><span class="lineno"> 2383</span>               <span class="keywordflow">default</span>:<span class="comment">//not supported</span></div>
-<div class="line"><a name="l02384"></a><span class="lineno"> 2384</span>             std::string errorString=<span class="stringliteral">"field type not supported"</span>;</div>
-<div class="line"><a name="l02385"></a><span class="lineno"> 2385</span>             <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l02386"></a><span class="lineno"> 2386</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l02387"></a><span class="lineno"> 2387</span>               }</div>
-<div class="line"><a name="l02388"></a><span class="lineno"> 2388</span>             }</div>
-<div class="line"><a name="l02389"></a><span class="lineno"> 2389</span>             <span class="keywordflow">catch</span>(std::string e){</div>
-<div class="line"><a name="l02390"></a><span class="lineno"> 2390</span>               std::cout << e << std::endl;</div>
-<div class="line"><a name="l02391"></a><span class="lineno"> 2391</span>               exit(1);</div>
-<div class="line"><a name="l02392"></a><span class="lineno"> 2392</span>             }</div>
-<div class="line"><a name="l02393"></a><span class="lineno"> 2393</span>           }</div>
-<div class="line"><a name="l02394"></a><span class="lineno"> 2394</span>         }</div>
-<div class="line"><a name="l02395"></a><span class="lineno"> 2395</span>           }</div>
-<div class="line"><a name="l02396"></a><span class="lineno"> 2396</span>           <span class="keywordflow">else</span>{<span class="comment">//class_opt is set</span></div>
-<div class="line"><a name="l02397"></a><span class="lineno"> 2397</span>         <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::proportion||ruleMap[rule_opt[0]]==rule::count){</div>
-<div class="line"><a name="l02398"></a><span class="lineno"> 2398</span>           <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>             std::cout << <span class="stringliteral">"number of points in polygon: "</span> << nPointPolygon << std::endl;</div>
-<div class="line"><a name="l02400"></a><span class="lineno"> 2400</span>           <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::proportion)</div>
-<div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>             stat.normalize_pct(polyClassValues);</div>
-<div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> index=0;index<polyClassValues.size();++index){</div>
-<div class="line"><a name="l02403"></a><span class="lineno"> 2403</span>             <span class="keywordtype">double</span> theValue=polyClassValues[index];</div>
-<div class="line"><a name="l02404"></a><span class="lineno"> 2404</span>             ostringstream fs;</div>
-<div class="line"><a name="l02405"></a><span class="lineno"> 2405</span>             fs << class_opt[index];</div>
-<div class="line"><a name="l02406"></a><span class="lineno"> 2406</span>             <span class="keywordflow">if</span>(polygon_opt[0])</div>
-<div class="line"><a name="l02407"></a><span class="lineno"> 2407</span>               writePolygonFeature->SetField(fs.str().c_str(),<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(theValue));</div>
-<div class="line"><a name="l02408"></a><span class="lineno"> 2408</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l02409"></a><span class="lineno"> 2409</span>               writeCentroidFeature->SetField(fs.str().c_str(),<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(theValue));</div>
-<div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>           }</div>
-<div class="line"><a name="l02411"></a><span class="lineno"> 2411</span>         }</div>
-<div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::custom){</div>
-<div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>           assert(polygon_opt[0]);<span class="comment">//not implemented for points</span></div>
-<div class="line"><a name="l02414"></a><span class="lineno"> 2414</span>           <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l02415"></a><span class="lineno"> 2415</span>             std::cout << <span class="stringliteral">"number of points in polygon: "</span> << nPointPolygon << std::endl;</div>
-<div class="line"><a name="l02416"></a><span class="lineno"> 2416</span>           stat.normalize_pct(polyClassValues);</div>
-<div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>           assert(polyClassValues.size()==2);<span class="comment">//11:broadleaved, 12:coniferous</span></div>
-<div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>           <span class="keywordflow">if</span>(polyClassValues[0]>=75)<span class="comment">//broadleaved</span></div>
-<div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>             writePolygonFeature->SetField(label_opt[0].c_str(),static_cast<int>(11));</div>
-<div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>           <span class="keywordflow">else</span> <span class="keywordflow">if</span>(polyClassValues[1]>=75)<span class="comment">//coniferous</span></div>
-<div class="line"><a name="l02421"></a><span class="lineno"> 2421</span>             writePolygonFeature->SetField(label_opt[0].c_str(),static_cast<int>(12));</div>
-<div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>           <span class="keywordflow">else</span> <span class="keywordflow">if</span>(polyClassValues[0]>25&&polyClassValues[1]>25)<span class="comment">//mixed</span></div>
-<div class="line"><a name="l02423"></a><span class="lineno"> 2423</span>             writePolygonFeature->SetField(label_opt[0].c_str(),static_cast<int>(13));</div>
-<div class="line"><a name="l02424"></a><span class="lineno"> 2424</span>           <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l02425"></a><span class="lineno"> 2425</span>             <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>               std::cout << <span class="stringliteral">"No valid value in polyClassValues..."</span> << std::endl;</div>
-<div class="line"><a name="l02427"></a><span class="lineno"> 2427</span>               <span class="keywordflow">for</span>(<span class="keywordtype">int</span> index=0;index<polyClassValues.size();++index){</div>
-<div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>             <span class="keywordtype">double</span> theValue=polyClassValues[index];</div>
-<div class="line"><a name="l02429"></a><span class="lineno"> 2429</span>             std::cout << theValue << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>               }</div>
-<div class="line"><a name="l02431"></a><span class="lineno"> 2431</span>               std::cout << std::endl;</div>
-<div class="line"><a name="l02432"></a><span class="lineno"> 2432</span>             }</div>
-<div class="line"><a name="l02433"></a><span class="lineno"> 2433</span>             writePolygonFeature->SetField(label_opt[0].c_str(),static_cast<int>(20));</div>
-<div class="line"><a name="l02434"></a><span class="lineno"> 2434</span>           }</div>
-<div class="line"><a name="l02435"></a><span class="lineno"> 2435</span>         }</div>
-<div class="line"><a name="l02436"></a><span class="lineno"> 2436</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ruleMap[rule_opt[0]]==rule::mode){</div>
-<div class="line"><a name="l02437"></a><span class="lineno"> 2437</span>           <span class="comment">//maximum votes in polygon</span></div>
-<div class="line"><a name="l02438"></a><span class="lineno"> 2438</span>           <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l02439"></a><span class="lineno"> 2439</span>             std::cout << <span class="stringliteral">"number of points in polygon: "</span> << nPointPolygon << std::endl;</div>
-<div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>           <span class="comment">//search for class with maximum votes</span></div>
-<div class="line"><a name="l02441"></a><span class="lineno"> 2441</span>           <span class="keywordtype">int</span> maxClass=stat.mymin(class_opt);</div>
-<div class="line"><a name="l02442"></a><span class="lineno"> 2442</span>           vector<double>::iterator maxit;</div>
-<div class="line"><a name="l02443"></a><span class="lineno"> 2443</span>           maxit=stat.mymax(polyClassValues,polyClassValues.begin(),polyClassValues.end());</div>
-<div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>           <span class="keywordtype">int</span> maxIndex=distance(polyClassValues.begin(),maxit);</div>
-<div class="line"><a name="l02445"></a><span class="lineno"> 2445</span>           maxClass=class_opt[maxIndex];</div>
-<div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>           <span class="keywordflow">if</span>(verbose_opt[0]>0)</div>
-<div class="line"><a name="l02447"></a><span class="lineno"> 2447</span>             std::cout << <span class="stringliteral">"maxClass: "</span> << maxClass << std::endl;</div>
-<div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>           <span class="keywordflow">if</span>(polygon_opt[0])</div>
-<div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>             writePolygonFeature->SetField(label_opt[0].c_str(),maxClass);</div>
-<div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l02451"></a><span class="lineno"> 2451</span>             writeCentroidFeature->SetField(label_opt[0].c_str(),maxClass);</div>
-<div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>         }</div>
-<div class="line"><a name="l02453"></a><span class="lineno"> 2453</span>           }</div>
-<div class="line"><a name="l02454"></a><span class="lineno"> 2454</span> </div>
-<div class="line"><a name="l02455"></a><span class="lineno"> 2455</span>           <span class="keywordflow">if</span>(polygon_opt[0]){</div>
-<div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>         <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l02457"></a><span class="lineno"> 2457</span>           std::cout << <span class="stringliteral">"creating polygon feature"</span> << std::endl;</div>
-<div class="line"><a name="l02458"></a><span class="lineno"> 2458</span>         <span class="keywordflow">if</span>(writeTest){</div>
-<div class="line"><a name="l02459"></a><span class="lineno"> 2459</span>           <span class="keywordflow">if</span>(writeTestLayer->CreateFeature( writePolygonFeature ) != OGRERR_NONE ){</div>
-<div class="line"><a name="l02460"></a><span class="lineno"> 2460</span>             std::string errorString=<span class="stringliteral">"Failed to create polygon feature in ogr vector dataset"</span>;</div>
-<div class="line"><a name="l02461"></a><span class="lineno"> 2461</span>             <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l02462"></a><span class="lineno"> 2462</span>           }</div>
-<div class="line"><a name="l02463"></a><span class="lineno"> 2463</span>         }</div>
-<div class="line"><a name="l02464"></a><span class="lineno"> 2464</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>           <span class="keywordflow">if</span>(writeLayer->CreateFeature( writePolygonFeature ) != OGRERR_NONE ){</div>
-<div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>             std::string errorString=<span class="stringliteral">"Failed to create polygon feature in ogr vector dataset"</span>;</div>
-<div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>             <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l02468"></a><span class="lineno"> 2468</span>           }</div>
-<div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>         }</div>
-<div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>         OGRFeature::DestroyFeature( writePolygonFeature );</div>
-<div class="line"><a name="l02471"></a><span class="lineno"> 2471</span>         ++ntotalvalid;</div>
-<div class="line"><a name="l02472"></a><span class="lineno"> 2472</span>         ++ntotalvalidLayer;</div>
-<div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>           }</div>
-<div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>           <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l02475"></a><span class="lineno"> 2475</span>         <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l02476"></a><span class="lineno"> 2476</span>           std::cout << <span class="stringliteral">"creating point feature in centroid"</span> << std::endl;</div>
-<div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>         <span class="keywordflow">if</span>(writeTest){</div>
-<div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>           <span class="keywordflow">if</span>(writeTestLayer->CreateFeature( writeCentroidFeature ) != OGRERR_NONE ){</div>
-<div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>             std::string errorString=<span class="stringliteral">"Failed to create point feature in ogr vector dataset"</span>;</div>
-<div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>             <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>           }</div>
-<div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>         }</div>
-<div class="line"><a name="l02483"></a><span class="lineno"> 2483</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>           <span class="comment">//test</span></div>
-<div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>           assert(validFeature);</div>
-<div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>           <span class="keywordflow">if</span>(writeLayer->CreateFeature( writeCentroidFeature ) != OGRERR_NONE ){</div>
-<div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>             std::string errorString=<span class="stringliteral">"Failed to create point feature in ogr vector dataset"</span>;</div>
-<div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>             <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>           }</div>
-<div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>         }</div>
-<div class="line"><a name="l02491"></a><span class="lineno"> 2491</span>         OGRFeature::DestroyFeature( writeCentroidFeature );</div>
-<div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>         ++ntotalvalid;</div>
-<div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>         ++ntotalvalidLayer;</div>
-<div class="line"><a name="l02494"></a><span class="lineno"> 2494</span>           }</div>
-<div class="line"><a name="l02495"></a><span class="lineno"> 2495</span>         }</div>
-<div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>       }</div>
-<div class="line"><a name="l02497"></a><span class="lineno"> 2497</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l02498"></a><span class="lineno"> 2498</span>         std::string test;</div>
-<div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>         test=poGeometry->getGeometryName();</div>
-<div class="line"><a name="l02500"></a><span class="lineno"> 2500</span>         ostringstream oss;</div>
-<div class="line"><a name="l02501"></a><span class="lineno"> 2501</span>         oss << <span class="stringliteral">"geometry "</span> << test << <span class="stringliteral">" not supported"</span>;</div>
-<div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>         <span class="keywordflow">throw</span>(oss.str());</div>
-<div class="line"><a name="l02503"></a><span class="lineno"> 2503</span>       }</div>
-<div class="line"><a name="l02504"></a><span class="lineno"> 2504</span>       ++ifeature;</div>
-<div class="line"><a name="l02505"></a><span class="lineno"> 2505</span>       <span class="keywordflow">if</span>(theThreshold>0){</div>
-<div class="line"><a name="l02506"></a><span class="lineno"> 2506</span>         <span class="keywordflow">if</span>(threshold_opt.size()==layer_opt.size())</div>
-<div class="line"><a name="l02507"></a><span class="lineno"> 2507</span>           progress=(100.0/theThreshold)*<span class="keyword">static_cast<</span><span class="keywordtype">float</span><span class="keyword">></span>(ntotalvalidLayer)/nfeatureLayer;</div>
-<div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l02509"></a><span class="lineno"> 2509</span>           progress=<span class="keyword">static_cast<</span><span class="keywordtype">float</span><span class="keyword">></span>(ntotalvalidLayer)/nfeatureLayer;</div>
-<div class="line"><a name="l02510"></a><span class="lineno"> 2510</span>       }</div>
-<div class="line"><a name="l02511"></a><span class="lineno"> 2511</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l02512"></a><span class="lineno"> 2512</span>         progress=<span class="keyword">static_cast<</span><span class="keywordtype">float</span><span class="keyword">></span>(ifeature+1)/(-theThreshold);</div>
-<div class="line"><a name="l02513"></a><span class="lineno"> 2513</span>       pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l02514"></a><span class="lineno"> 2514</span>     }</div>
-<div class="line"><a name="l02515"></a><span class="lineno"> 2515</span>     <span class="keywordflow">catch</span>(std::string e){</div>
-<div class="line"><a name="l02516"></a><span class="lineno"> 2516</span>       std::cout << e << std::endl;</div>
-<div class="line"><a name="l02517"></a><span class="lineno"> 2517</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l02518"></a><span class="lineno"> 2518</span>     }</div>
-<div class="line"><a name="l02519"></a><span class="lineno"> 2519</span>     <span class="keywordflow">catch</span>(<span class="keywordtype">int</span> npoint){</div>
-<div class="line"><a name="l02520"></a><span class="lineno"> 2520</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>         std::cout << <span class="stringliteral">"number of points read in polygon: "</span> << npoint << std::endl;</div>
-<div class="line"><a name="l02522"></a><span class="lineno"> 2522</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l02523"></a><span class="lineno"> 2523</span>     }</div>
-<div class="line"><a name="l02524"></a><span class="lineno"> 2524</span>       }<span class="comment">//end of getNextFeature</span></div>
-<div class="line"><a name="l02525"></a><span class="lineno"> 2525</span>       <span class="comment">// if(rbox_opt[0]>0||cbox_opt[0]>0)</span></div>
-<div class="line"><a name="l02526"></a><span class="lineno"> 2526</span>       <span class="comment">//   boxWriter.close();</span></div>
-<div class="line"><a name="l02527"></a><span class="lineno"> 2527</span>       progress=1.0;</div>
-<div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>       pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l02529"></a><span class="lineno"> 2529</span>       ++ilayerWrite;</div>
-<div class="line"><a name="l02530"></a><span class="lineno"> 2530</span>     }<span class="comment">//for ilayer</span></div>
-<div class="line"><a name="l02531"></a><span class="lineno"> 2531</span>     sampleReaderOgr.close();</div>
-<div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>     ogrWriter.close();</div>
-<div class="line"><a name="l02533"></a><span class="lineno"> 2533</span>     <span class="keywordflow">if</span>(test_opt.size())</div>
-<div class="line"><a name="l02534"></a><span class="lineno"> 2534</span>       ogrTestWriter.close();</div>
-<div class="line"><a name="l02535"></a><span class="lineno"> 2535</span>   }<span class="comment">//else (vector)</span></div>
-<div class="line"><a name="l02536"></a><span class="lineno"> 2536</span>   progress=1.0;</div>
-<div class="line"><a name="l02537"></a><span class="lineno"> 2537</span>   pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l02538"></a><span class="lineno"> 2538</span>   imgReader.close();</div>
-<div class="line"><a name="l02539"></a><span class="lineno"> 2539</span> }</div>
-<div class="line"><a name="l02540"></a><span class="lineno"> 2540</span>   </div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-<div class="ttc" id="classVector2d_html"><div class="ttname"><a href="classVector2d.html">Vector2d</a></div><div class="ttdef"><b>Definition:</b> <a href="Vector2d_8h_source.html#l00031">Vector2d.h:31</a></div></div>
-<div class="ttc" id="classImgReaderOgr_html"><div class="ttname"><a href="classImgReaderOgr.html">ImgReaderOgr</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderOgr_8h_source.html#l00035">ImgReaderOgr.h:35</a></div></div>
-<div class="ttc" id="classstatfactory_1_1StatFactory_html"><div class="ttname"><a href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></div><div class="ttdef"><b>Definition:</b> <a href="StatFactory_8h_source.html#l00043">StatFactory.h:43</a></div></div>
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-<div class="ttc" id="classImgWriterOgr_html"><div class="ttname"><a href="classImgWriterOgr.html">ImgWriterOgr</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgWriterOgr_8h_source.html#l00035">ImgWriterOgr.h:35</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkextract_8py_source.html b/doc/html/pkextract_8py_source.html
deleted file mode 100644
index 370f837..0000000
--- a/doc/html/pkextract_8py_source.html
+++ /dev/null
@@ -1,276 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/pkextract.py Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkextract.py</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment"># -*- coding: utf-8 -*-</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> </div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="stringliteral">    pkextract.py</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="stringliteral">    ---------------------</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="stringliteral">    Date                 : April 2015</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="stringliteral">    Copyright            : (C) 2015 by Pieter Kempeneers</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="stringliteral">    Email                : kempenep at gmail dot com</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="stringliteral">*   This program is free software; you can redistribute it and/or modify  *</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="stringliteral">*   it under the terms of the GNU General Public License as published by  *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="stringliteral">*   the Free Software Foundation; either version 2 of the License, or     *</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="stringliteral">*   (at your option) any later version.                                   *</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> __author__ = <span class="stringliteral">'Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> __date__ = <span class="stringliteral">'April 2015'</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> __copyright__ = <span class="stringliteral">'(C) 2015, Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"># This will get replaced with a git SHA1 when you do a git archive</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> __revision__ = <span class="stringliteral">'$Format:%H$'</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">import</span> os</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">from</span> pktoolsUtils <span class="keyword">import</span> pktoolsUtils</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">from</span> pktoolsAlgorithm <span class="keyword">import</span> pktoolsAlgorithm</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterRaster</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterVector</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">from</span> processing.core.outputs <span class="keyword">import</span> OutputVector</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterSelection</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterNumber</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterString</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterBoolean</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterExtent</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> FORMATS = [</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>     <span class="stringliteral">'ESRI Shapefile'</span>,</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     <span class="stringliteral">'GeoJSON'</span>,</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     <span class="stringliteral">'GeoRSS'</span>,</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     <span class="stringliteral">'SQLite'</span>,</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     <span class="stringliteral">'GMT'</span>,</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     <span class="stringliteral">'MapInfo File'</span>,</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     <span class="stringliteral">'INTERLIS 1'</span>,</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     <span class="stringliteral">'INTERLIS 2'</span>,</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     <span class="stringliteral">'GML'</span>,</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     <span class="stringliteral">'Geoconcept'</span>,</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     <span class="stringliteral">'DXF'</span>,</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     <span class="stringliteral">'DGN'</span>,</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     <span class="stringliteral">'CSV'</span>,</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     <span class="stringliteral">'BNA'</span>,</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     <span class="stringliteral">'S57'</span>,</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     <span class="stringliteral">'KML'</span>,</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     <span class="stringliteral">'GPX'</span>,</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <span class="stringliteral">'PGDump'</span>,</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     <span class="stringliteral">'GPSTrackMaker'</span>,</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     <span class="stringliteral">'ODS'</span>,</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     <span class="stringliteral">'XLSX'</span>,</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     <span class="stringliteral">'PDF'</span>,</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span> ]</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span> EXTS = [</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     <span class="stringliteral">'.shp'</span>,</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     <span class="stringliteral">'.geojson'</span>,</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     <span class="stringliteral">'.xml'</span>,</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     <span class="stringliteral">'.sqlite'</span>,</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>     <span class="stringliteral">'.gmt'</span>,</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     <span class="stringliteral">'.tab'</span>,</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     <span class="stringliteral">'.ili'</span>,</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     <span class="stringliteral">'.ili'</span>,</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     <span class="stringliteral">'.gml'</span>,</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>     <span class="stringliteral">'.txt'</span>,</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>     <span class="stringliteral">'.dxf'</span>,</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>     <span class="stringliteral">'.dgn'</span>,</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>     <span class="stringliteral">'.csv'</span>,</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>     <span class="stringliteral">'.bna'</span>,</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>     <span class="stringliteral">'.000'</span>,</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>     <span class="stringliteral">'.kml'</span>,</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>     <span class="stringliteral">'.gpx'</span>,</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>     <span class="stringliteral">'.pgdump'</span>,</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>     <span class="stringliteral">'.gtm'</span>,</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     <span class="stringliteral">'.ods'</span>,</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     <span class="stringliteral">'.xlsx'</span>,</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     <span class="stringliteral">'.pdf'</span>,</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span> ]</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span> </div>
-<div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classqgis_1_1pkextract_1_1pkextract.html">   87</a></span> <span class="keyword">class </span><a class="code" href="classqgis_1_1pkextract_1_1pkextract.html">pkextract</a>(pktoolsAlgorithm):</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span> </div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     INPUT = <span class="stringliteral">"INPUT"</span></div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     SAMPLE = <span class="stringliteral">"SAMPLE"</span></div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     ITERATE = <span class="stringliteral">"ITERATE"</span></div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     OUTPUT = <span class="stringliteral">"OUTPUT"</span></div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>     </div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>     RULE_OPTIONS = [<span class="stringliteral">'centroid'</span>, <span class="stringliteral">'point'</span>, <span class="stringliteral">'mean'</span>, <span class="stringliteral">'proportion'</span>, <span class="stringliteral">'count'</span>, <span class="stringliteral">'min'</span>, <span class="stringliteral">'max'</span>, <span class="stringliteral" [...]
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span> </div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     RULE = <span class="stringliteral">"RULE"</span></div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     POLYGON = <span class="stringliteral">"POLYGON"</span></div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     BUFFER = <span class="stringliteral">"BUFFER"</span></div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     SRCNODATA = <span class="stringliteral">"SRCNODATA"</span></div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     BNDNODATA = <span class="stringliteral">"BNDNODATA"</span></div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span> </div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     EXTRA = <span class="stringliteral">'EXTRA'</span></div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     </div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     FORMAT = <span class="stringliteral">"FORMAT"</span></div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span> </div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     <span class="keyword">def </span>cliName(self):</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>         <span class="keywordflow">return</span> <span class="stringliteral">"pkextract"</span></div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span> </div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>     <span class="keyword">def </span>defineCharacteristics(self):</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>         self.<a class="code" href="classqgis_1_1pkextract_1_1pkextract.html#a682fac32a3bbc98fe364fc9d2a46a9ed">name</a> = <span class="stringliteral">"extract vector sample from raster"</span></div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>         self.<a class="code" href="classqgis_1_1pkextract_1_1pkextract.html#ab9995a84ad157685b2d27025cdad22b0">group</a> = <span class="stringliteral">"[pktools] raster/vector"</span></div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>         self.addParameter(ParameterRaster(self.<a class="code" href="classqgis_1_1pkextract_1_1pkextract.html#a95e1c0317ddcaeda681980e70494a638">INPUT</a>, <span class="stringliteral">'Input raster data set'</span>))</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>         self.addParameter(ParameterVector(self.<a class="code" href="classqgis_1_1pkextract_1_1pkextract.html#a152b797f760ae98e27adbad95c3a8729">SAMPLE</a>, <span class="stringliteral">'Sample vector data set'</span>))</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>         self.addParameter(ParameterBoolean(self.<a class="code" href="classqgis_1_1pkextract_1_1pkextract.html#a7a00b2c269b8968376d90b0bf893df9f">ITERATE</a>, <span class="stringliteral">"Iterate over all layers"</span>,<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pkextract_1_1pkextract.html#af877cda3a19feb1f37d368d54680fd59">RULE</a>,<span class="stringliteral">"extraction rule"</span>,self.<a class="code" href="classqgis_1_1pkextract_1_1pkextract.html#a78b93513da9f4173cd4218204a77d20a">RULE_OPTIONS</a>, 0))</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span> </div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>         self.addOutput(OutputVector(self.<a class="code" href="classqgis_1_1pkextract_1_1pkextract.html#aebb093e7f23d360f6657f8833f5c73f3">OUTPUT</a>, <span class="stringliteral">'Output vector data set'</span>))</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pkextract_1_1pkextract.html#aec905ae5cbf25bc9d1a4a592bff30311">FORMAT</a>,</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>                           <span class="stringliteral">'Destination Format'</span>, FORMATS))</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span> </div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>         self.addParameter(ParameterBoolean(self.<a class="code" href="classqgis_1_1pkextract_1_1pkextract.html#ac120a3debadb9cbd38552fcdefba2fb0">POLYGON</a>, <span class="stringliteral">"Create OGRPolygon as geometry instead of OGRPoint"</span>,<span class="keyword">False</span>))</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>         self.addParameter(ParameterNumber(self.<a class="code" href="classqgis_1_1pkextract_1_1pkextract.html#a0052109b006ae33bb2014a05ffd9226f">BUFFER</a>, <span class="stringliteral">"Buffer for calculating statistics for point features"</span>,0,19,0))</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkextract_1_1pkextract.html#ab4431ebf4ce448655fcc25366f15abd3">SRCNODATA</a>, <span class="stringliteral">"invalid value(s) for input raster dataset (e.g., 0;255)"</span>,<span class="stringliteral">"none"</span>))</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkextract_1_1pkextract.html#a1cb12c6b9a06225999395afa50b17987">BNDNODATA</a>, <span class="stringliteral">"Band(s) in input image to check if pixel is valid (e.g., 0;1)"</span>,<span class="stringliteral">"0"</span>))</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span> </div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkextract_1_1pkextract.html#a741cc5d777e44ecde629f16a2499ae6c">EXTRA</a>,</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>                           <span class="stringliteral">'Additional parameters'</span>, <span class="stringliteral">''</span>, optional=<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span> </div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>     <span class="keyword">def </span>processAlgorithm(self, progress):</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>         cliPath = <span class="stringliteral">'"'</span> + os.path.join(pktoolsUtils.pktoolsPath(), self.<a class="code" href="classqgis_1_1pkextract_1_1pkextract.html#af5bc2523851ece32499990c6b9bd64f7">cliName</a>()) + <span class="stringliteral">'"'</span></div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>         commands = [cliPath]</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span> </div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>         input=self.getParameterValue(self.<a class="code" href="classqgis_1_1pkextract_1_1pkextract.html#a95e1c0317ddcaeda681980e70494a638">INPUT</a>)</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>         commands.append(<span class="stringliteral">'-i'</span>)</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>         commands.append(<span class="stringliteral">'"'</span> + input + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span> </div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>         sample=self.getParameterValue(self.<a class="code" href="classqgis_1_1pkextract_1_1pkextract.html#a152b797f760ae98e27adbad95c3a8729">SAMPLE</a>)</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>         <span class="keywordflow">if</span> self.getParameterValue(self.<a class="code" href="classqgis_1_1pkextract_1_1pkextract.html#a7a00b2c269b8968376d90b0bf893df9f">ITERATE</a>):</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>             <span class="keywordflow">if</span> str(sample).find(<span class="stringliteral">'|'</span>)>0:</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>                 samplename=str(sample)[:str(sample).find(<span class="stringliteral">'|'</span>)]</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>             <span class="keywordflow">else</span>:</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>                 samplename=str(sample)</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>         <span class="keywordflow">else</span>:</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>             samplename=str(sample).replace(<span class="stringliteral">"|layername"</span>,<span class="stringliteral">" -ln"</span>)</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>         commands.append(<span class="stringliteral">'-s'</span>)</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>         commands.append(samplename)</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span> </div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>         <span class="keywordflow">if</span> self.getParameterValue(self.<a class="code" href="classqgis_1_1pkextract_1_1pkextract.html#ac120a3debadb9cbd38552fcdefba2fb0">POLYGON</a>):</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>             commands.append(<span class="stringliteral">"-polygon"</span>)</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span> </div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>         commands.append(<span class="stringliteral">"-r"</span>)</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>         commands.append(self.<a class="code" href="classqgis_1_1pkextract_1_1pkextract.html#a78b93513da9f4173cd4218204a77d20a">RULE_OPTIONS</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pkextract_1_1pkextract.html#af877cda3a19feb1f37d368d54680fd59">RULE</a>)])</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span> </div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>         output = self.getOutputFromName(self.<a class="code" href="classqgis_1_1pkextract_1_1pkextract.html#aebb093e7f23d360f6657f8833f5c73f3">OUTPUT</a>)</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>         outFile = output.value</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>         formatIdx = self.getParameterValue(self.<a class="code" href="classqgis_1_1pkextract_1_1pkextract.html#aec905ae5cbf25bc9d1a4a592bff30311">FORMAT</a>)</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>         outFormat = <span class="stringliteral">'"'</span> + FORMATS[formatIdx] + <span class="stringliteral">'"'</span></div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>         commands.append(<span class="stringliteral">'-f'</span>)</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>         commands.append(outFormat)</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>         ext = EXTS[formatIdx]</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>         <span class="keywordflow">if</span> <span class="keywordflow">not</span> outFile.endswith(ext):</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>             outFile += ext</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>             output.value = outFile</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>         commands.append(<span class="stringliteral">'-o'</span>)</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>         commands.append(<span class="stringliteral">'"'</span> + outFile + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span> </div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>         buffer=self.getParameterValue(self.<a class="code" href="classqgis_1_1pkextract_1_1pkextract.html#a0052109b006ae33bb2014a05ffd9226f">BUFFER</a>)</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>         <span class="keywordflow">if</span> buffer > 1:</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>             commands.append(<span class="stringliteral">"-buf"</span>)</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>             commands.append(str(buffer))</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span> </div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>         srcnodata=self.getParameterValue(self.<a class="code" href="classqgis_1_1pkextract_1_1pkextract.html#ab4431ebf4ce448655fcc25366f15abd3">SRCNODATA</a>)</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>         <span class="keywordflow">if</span> srcnodata != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>             srcnodataValues = srcnodata.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>             <span class="keywordflow">for</span> srcnodataValue <span class="keywordflow">in</span> srcnodataValues:</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>                 commands.append(<span class="stringliteral">'-srcnodata'</span>)</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>                 commands.append(srcnodataValue)</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>         bndnodata=self.getParameterValue(self.<a class="code" href="classqgis_1_1pkextract_1_1pkextract.html#a1cb12c6b9a06225999395afa50b17987">BNDNODATA</a>)</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>         bndnodataValues = bndnodata.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>         <span class="keywordflow">for</span> bndnodataValue <span class="keywordflow">in</span> bndnodataValues:</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>             commands.append(<span class="stringliteral">'-bndnodata'</span>)</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>             commands.append(bndnodataValue)</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span> </div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>         extra = str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pkextract_1_1pkextract.html#a741cc5d777e44ecde629f16a2499ae6c">EXTRA</a>))</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>         <span class="keywordflow">if</span> len(extra) > 0:</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>             commands.append(extra)</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span> </div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>         pktoolsUtils.runpktools(commands, progress)</div>
-<div class="ttc" id="classqgis_1_1pkextract_1_1pkextract_html_ac120a3debadb9cbd38552fcdefba2fb0"><div class="ttname"><a href="classqgis_1_1pkextract_1_1pkextract.html#ac120a3debadb9cbd38552fcdefba2fb0">qgis.pkextract.pkextract.POLYGON</a></div><div class="ttdeci">string POLYGON</div><div class="ttdef"><b>Definition:</b> <a href="pkextract_8py_source.html#l00097">pkextract.py:97</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract_1_1pkextract_html_a95e1c0317ddcaeda681980e70494a638"><div class="ttname"><a href="classqgis_1_1pkextract_1_1pkextract.html#a95e1c0317ddcaeda681980e70494a638">qgis.pkextract.pkextract.INPUT</a></div><div class="ttdeci">string INPUT</div><div class="ttdef"><b>Definition:</b> <a href="pkextract_8py_source.html#l00089">pkextract.py:89</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract_1_1pkextract_html_af5bc2523851ece32499990c6b9bd64f7"><div class="ttname"><a href="classqgis_1_1pkextract_1_1pkextract.html#af5bc2523851ece32499990c6b9bd64f7">qgis.pkextract.pkextract.cliName</a></div><div class="ttdeci">def cliName</div><div class="ttdef"><b>Definition:</b> <a href="pkextract_8py_source.html#l00106">pkextract.py:106</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract_1_1pkextract_html"><div class="ttname"><a href="classqgis_1_1pkextract_1_1pkextract.html">qgis.pkextract.pkextract</a></div><div class="ttdef"><b>Definition:</b> <a href="pkextract_8py_source.html#l00087">pkextract.py:87</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract_1_1pkextract_html_a682fac32a3bbc98fe364fc9d2a46a9ed"><div class="ttname"><a href="classqgis_1_1pkextract_1_1pkextract.html#a682fac32a3bbc98fe364fc9d2a46a9ed">qgis.pkextract.pkextract.name</a></div><div class="ttdeci">name</div><div class="ttdef"><b>Definition:</b> <a href="pkextract_8py_source.html#l00110">pkextract.py:110</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract_1_1pkextract_html_a78b93513da9f4173cd4218204a77d20a"><div class="ttname"><a href="classqgis_1_1pkextract_1_1pkextract.html#a78b93513da9f4173cd4218204a77d20a">qgis.pkextract.pkextract.RULE_OPTIONS</a></div><div class="ttdeci">list RULE_OPTIONS</div><div class="ttdef"><b>Definition:</b> <a href="pkextract_8py_source.html#l00094">pkextract.py:94</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract_1_1pkextract_html_a741cc5d777e44ecde629f16a2499ae6c"><div class="ttname"><a href="classqgis_1_1pkextract_1_1pkextract.html#a741cc5d777e44ecde629f16a2499ae6c">qgis.pkextract.pkextract.EXTRA</a></div><div class="ttdeci">string EXTRA</div><div class="ttdef"><b>Definition:</b> <a href="pkextract_8py_source.html#l00102">pkextract.py:102</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract_1_1pkextract_html_a152b797f760ae98e27adbad95c3a8729"><div class="ttname"><a href="classqgis_1_1pkextract_1_1pkextract.html#a152b797f760ae98e27adbad95c3a8729">qgis.pkextract.pkextract.SAMPLE</a></div><div class="ttdeci">string SAMPLE</div><div class="ttdef"><b>Definition:</b> <a href="pkextract_8py_source.html#l00090">pkextract.py:90</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract_1_1pkextract_html_ab4431ebf4ce448655fcc25366f15abd3"><div class="ttname"><a href="classqgis_1_1pkextract_1_1pkextract.html#ab4431ebf4ce448655fcc25366f15abd3">qgis.pkextract.pkextract.SRCNODATA</a></div><div class="ttdeci">string SRCNODATA</div><div class="ttdef"><b>Definition:</b> <a href="pkextract_8py_source.html#l00099">pkextract.py:99</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract_1_1pkextract_html_a1cb12c6b9a06225999395afa50b17987"><div class="ttname"><a href="classqgis_1_1pkextract_1_1pkextract.html#a1cb12c6b9a06225999395afa50b17987">qgis.pkextract.pkextract.BNDNODATA</a></div><div class="ttdeci">string BNDNODATA</div><div class="ttdef"><b>Definition:</b> <a href="pkextract_8py_source.html#l00100">pkextract.py:100</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract_1_1pkextract_html_a0052109b006ae33bb2014a05ffd9226f"><div class="ttname"><a href="classqgis_1_1pkextract_1_1pkextract.html#a0052109b006ae33bb2014a05ffd9226f">qgis.pkextract.pkextract.BUFFER</a></div><div class="ttdeci">string BUFFER</div><div class="ttdef"><b>Definition:</b> <a href="pkextract_8py_source.html#l00098">pkextract.py:98</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract_1_1pkextract_html_ab9995a84ad157685b2d27025cdad22b0"><div class="ttname"><a href="classqgis_1_1pkextract_1_1pkextract.html#ab9995a84ad157685b2d27025cdad22b0">qgis.pkextract.pkextract.group</a></div><div class="ttdeci">group</div><div class="ttdef"><b>Definition:</b> <a href="pkextract_8py_source.html#l00111">pkextract.py:111</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract_1_1pkextract_html_aec905ae5cbf25bc9d1a4a592bff30311"><div class="ttname"><a href="classqgis_1_1pkextract_1_1pkextract.html#aec905ae5cbf25bc9d1a4a592bff30311">qgis.pkextract.pkextract.FORMAT</a></div><div class="ttdeci">string FORMAT</div><div class="ttdef"><b>Definition:</b> <a href="pkextract_8py_source.html#l00104">pkextract.py:104</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract_1_1pkextract_html_a7a00b2c269b8968376d90b0bf893df9f"><div class="ttname"><a href="classqgis_1_1pkextract_1_1pkextract.html#a7a00b2c269b8968376d90b0bf893df9f">qgis.pkextract.pkextract.ITERATE</a></div><div class="ttdeci">string ITERATE</div><div class="ttdef"><b>Definition:</b> <a href="pkextract_8py_source.html#l00091">pkextract.py:91</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract_1_1pkextract_html_af877cda3a19feb1f37d368d54680fd59"><div class="ttname"><a href="classqgis_1_1pkextract_1_1pkextract.html#af877cda3a19feb1f37d368d54680fd59">qgis.pkextract.pkextract.RULE</a></div><div class="ttdeci">string RULE</div><div class="ttdef"><b>Definition:</b> <a href="pkextract_8py_source.html#l00096">pkextract.py:96</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract_1_1pkextract_html_aebb093e7f23d360f6657f8833f5c73f3"><div class="ttname"><a href="classqgis_1_1pkextract_1_1pkextract.html#aebb093e7f23d360f6657f8833f5c73f3">qgis.pkextract.pkextract.OUTPUT</a></div><div class="ttdeci">string OUTPUT</div><div class="ttdef"><b>Definition:</b> <a href="pkextract_8py_source.html#l00092">pkextract.py:92</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkextract__grid_8py_source.html b/doc/html/pkextract__grid_8py_source.html
deleted file mode 100644
index 6bd9794..0000000
--- a/doc/html/pkextract__grid_8py_source.html
+++ /dev/null
@@ -1,262 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/pkextract_grid.py Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkextract_grid.py</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment"># -*- coding: utf-8 -*-</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> </div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="stringliteral">    pkextract_grid.py</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="stringliteral">    ---------------------</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="stringliteral">    Date                 : April 2015</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="stringliteral">    Copyright            : (C) 2015 by Pieter Kempeneers</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="stringliteral">    Email                : kempenep at gmail dot com</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="stringliteral">*   This program is free software; you can redistribute it and/or modify  *</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="stringliteral">*   it under the terms of the GNU General Public License as published by  *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="stringliteral">*   the Free Software Foundation; either version 2 of the License, or     *</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="stringliteral">*   (at your option) any later version.                                   *</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> __author__ = <span class="stringliteral">'Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> __date__ = <span class="stringliteral">'April 2015'</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> __copyright__ = <span class="stringliteral">'(C) 2015, Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"># This will get replaced with a git SHA1 when you do a git archive</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> __revision__ = <span class="stringliteral">'$Format:%H$'</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">import</span> os</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">from</span> pktoolsUtils <span class="keyword">import</span> pktoolsUtils</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">from</span> pktoolsAlgorithm <span class="keyword">import</span> pktoolsAlgorithm</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterRaster</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterVector</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">from</span> processing.core.outputs <span class="keyword">import</span> OutputVector</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterSelection</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterNumber</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterString</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterBoolean</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterExtent</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> FORMATS = [</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>     <span class="stringliteral">'ESRI Shapefile'</span>,</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     <span class="stringliteral">'GeoJSON'</span>,</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     <span class="stringliteral">'GeoRSS'</span>,</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     <span class="stringliteral">'SQLite'</span>,</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     <span class="stringliteral">'GMT'</span>,</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     <span class="stringliteral">'MapInfo File'</span>,</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     <span class="stringliteral">'INTERLIS 1'</span>,</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     <span class="stringliteral">'INTERLIS 2'</span>,</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     <span class="stringliteral">'GML'</span>,</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     <span class="stringliteral">'Geoconcept'</span>,</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     <span class="stringliteral">'DXF'</span>,</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     <span class="stringliteral">'DGN'</span>,</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     <span class="stringliteral">'CSV'</span>,</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     <span class="stringliteral">'BNA'</span>,</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     <span class="stringliteral">'S57'</span>,</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     <span class="stringliteral">'KML'</span>,</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     <span class="stringliteral">'GPX'</span>,</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <span class="stringliteral">'PGDump'</span>,</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     <span class="stringliteral">'GPSTrackMaker'</span>,</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     <span class="stringliteral">'ODS'</span>,</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     <span class="stringliteral">'XLSX'</span>,</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     <span class="stringliteral">'PDF'</span>,</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span> ]</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span> EXTS = [</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     <span class="stringliteral">'.shp'</span>,</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     <span class="stringliteral">'.geojson'</span>,</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     <span class="stringliteral">'.xml'</span>,</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     <span class="stringliteral">'.sqlite'</span>,</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>     <span class="stringliteral">'.gmt'</span>,</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     <span class="stringliteral">'.tab'</span>,</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     <span class="stringliteral">'.ili'</span>,</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     <span class="stringliteral">'.ili'</span>,</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     <span class="stringliteral">'.gml'</span>,</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>     <span class="stringliteral">'.txt'</span>,</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>     <span class="stringliteral">'.dxf'</span>,</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>     <span class="stringliteral">'.dgn'</span>,</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>     <span class="stringliteral">'.csv'</span>,</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>     <span class="stringliteral">'.bna'</span>,</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>     <span class="stringliteral">'.000'</span>,</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>     <span class="stringliteral">'.kml'</span>,</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>     <span class="stringliteral">'.gpx'</span>,</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>     <span class="stringliteral">'.pgdump'</span>,</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>     <span class="stringliteral">'.gtm'</span>,</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     <span class="stringliteral">'.ods'</span>,</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     <span class="stringliteral">'.xlsx'</span>,</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     <span class="stringliteral">'.pdf'</span>,</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span> ]</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span> </div>
-<div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">   87</a></span> <span class="keyword">class </span><a class="code" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">pkextract_grid</a>(pktoolsAlgorithm):</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span> </div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     INPUT = <span class="stringliteral">"INPUT"</span></div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     OUTPUT = <span class="stringliteral">"OUTPUT"</span></div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     </div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     RULE_OPTIONS = [<span class="stringliteral">'centroid'</span>, <span class="stringliteral">'point'</span>, <span class="stringliteral">'mean'</span>, <span class="stringliteral">'proportion'</span>, <span class="stringliteral">'custom'</span>, <span class="stringliteral">'min'</span>, <span class="stringliteral">'max'</span>, <span class="stringliteral [...]
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span> </div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>     RULE = <span class="stringliteral">"RULE"</span></div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>     POLYGON = <span class="stringliteral">"POLYGON"</span></div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     BUFFER = <span class="stringliteral">"BUFFER"</span></div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     GRID = <span class="stringliteral">"GRID"</span></div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     SRCNODATA = <span class="stringliteral">"SRCNODATA"</span></div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     BNDNODATA = <span class="stringliteral">"BNDNODATA"</span></div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     EXTRA = <span class="stringliteral">'EXTRA'</span></div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     </div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     FORMAT = <span class="stringliteral">"FORMAT"</span></div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span> </div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     <span class="keyword">def </span>cliName(self):</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>         <span class="keywordflow">return</span> <span class="stringliteral">"pkextract"</span></div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span> </div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     <span class="keyword">def </span>defineCharacteristics(self):</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>         self.<a class="code" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#aa9a3742d6a3703e840c7bc463740fb46">name</a> = <span class="stringliteral">"extract regular grid"</span></div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>         self.<a class="code" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#a481d147d56925a1ab75e18b1c8f145fc">group</a> = <span class="stringliteral">"[pktools] raster/vector"</span></div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>         self.addParameter(ParameterRaster(self.<a class="code" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#ad359b649a15e3dbd0795278b984c6b23">INPUT</a>, <span class="stringliteral">'Input raster data set'</span>))</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#a8b1c35d0229515eb8a9a4f74fbb27df2">RULE</a>,<span class="stringliteral">"extraction rule"</span>,self.<a class="code" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#aff9ec53af87f8f28b82ea13707ed31a3">RULE_OPTIONS</a>, 0))</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span> </div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>         self.addOutput(OutputVector(self.<a class="code" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#a59fa1c64049fbed2cc81548cf5d0e3a8">OUTPUT</a>, <span class="stringliteral">'Output vector data set'</span>))</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#a4f170fcdea30859ad29048d61e90ce8b">FORMAT</a>,</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>                           <span class="stringliteral">'Destination Format'</span>, FORMATS))</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>         self.addParameter(ParameterBoolean(self.<a class="code" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#adaea5d0be7bd0435fdd3f6a42dc4c80f">POLYGON</a>, <span class="stringliteral">"Create OGRPolygon as geometry instead of OGRPoint"</span>,<span class="keyword">False</span>))</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>         self.addParameter(ParameterNumber(self.<a class="code" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#a1c07170b9f1999083d925f16c78e5ab1">BUFFER</a>, <span class="stringliteral">"Buffer for calculating statistics for point features"</span>,1,25,1))</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>         self.addParameter(ParameterNumber(self.<a class="code" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#a914f319e7a3734966056b0e396e4b0a1">GRID</a>, <span class="stringliteral">"Cell grid size (in projected units, e.g,. m)"</span>,0,1000000,1))</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span> </div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#a2b5e358b248cb62615584a90d651fea1">SRCNODATA</a>, <span class="stringliteral">"invalid value(s) for input raster dataset (e.g., 0;255)"</span>,<span class="stringliteral">"none"</span>))</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#a458c8ea888792f63f8000afe8b6a5c6e">BNDNODATA</a>, <span class="stringliteral">"Band(s) in input image to check if pixel is valid (e.g., 0;1)"</span>,<span class="stringliteral">"0"</span>))</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#a058e183281127755bd1d851b3788138c">EXTRA</a>, <span class="stringliteral">'Additional parameters'</span>, <span class="stringliteral">''</span>, optional=<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span> </div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     <span class="keyword">def </span>processAlgorithm(self, progress):</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>         cliPath = <span class="stringliteral">'"'</span> + os.path.join(pktoolsUtils.pktoolsPath(), self.<a class="code" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#aa939f27236fbd7a0919bcb66b214b8c9">cliName</a>()) + <span class="stringliteral">'"'</span></div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>         commands = [cliPath]</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span> </div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>         input=self.getParameterValue(self.<a class="code" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#ad359b649a15e3dbd0795278b984c6b23">INPUT</a>)</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>         commands.append(<span class="stringliteral">'-i'</span>)</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>         commands.append(<span class="stringliteral">'"'</span> + input + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span> </div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>         commands.append(<span class="stringliteral">"-r"</span>)</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>         commands.append(self.<a class="code" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#aff9ec53af87f8f28b82ea13707ed31a3">RULE_OPTIONS</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#a8b1c35d0229515eb8a9a4f74fbb27df2">RULE</a>)])</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span> </div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>         output = self.getOutputFromName(self.<a class="code" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#a59fa1c64049fbed2cc81548cf5d0e3a8">OUTPUT</a>)</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>         outFile = output.value</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>         formatIdx = self.getParameterValue(self.<a class="code" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#a4f170fcdea30859ad29048d61e90ce8b">FORMAT</a>)</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>         outFormat = <span class="stringliteral">'"'</span> + FORMATS[formatIdx] + <span class="stringliteral">'"'</span></div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>         commands.append(<span class="stringliteral">'-f'</span>)</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>         commands.append(outFormat)</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>         ext = EXTS[formatIdx]</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>         <span class="keywordflow">if</span> <span class="keywordflow">not</span> outFile.endswith(ext):</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>             outFile += ext</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>             output.value = outFile</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>         commands.append(<span class="stringliteral">'-o'</span>)</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>         commands.append(<span class="stringliteral">'"'</span> + outFile + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span> </div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>         <span class="keywordflow">if</span> self.getParameterValue(self.<a class="code" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#adaea5d0be7bd0435fdd3f6a42dc4c80f">POLYGON</a>):</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>             commands.append(<span class="stringliteral">"-polygon"</span>)</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>         buffer=self.getParameterValue(self.<a class="code" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#a1c07170b9f1999083d925f16c78e5ab1">BUFFER</a>)</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>         <span class="keywordflow">if</span> buffer > 1:</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>             commands.append(<span class="stringliteral">"-buf"</span>)</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>             commands.append(str(buffer))</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span> </div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>         <span class="keywordflow">if</span> self.getParameterValue(self.<a class="code" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#a914f319e7a3734966056b0e396e4b0a1">GRID</a>) > 0:</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>             commands.append(<span class="stringliteral">"-grid"</span>)</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>             commands.append(str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#a914f319e7a3734966056b0e396e4b0a1">GRID</a>)))</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span> </div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>         srcnodata=self.getParameterValue(self.<a class="code" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#a2b5e358b248cb62615584a90d651fea1">SRCNODATA</a>)</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>         <span class="keywordflow">if</span> srcnodata != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>             srcnodataValues = srcnodata.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>             <span class="keywordflow">for</span> srcnodataValue <span class="keywordflow">in</span> srcnodataValues:</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>                 commands.append(<span class="stringliteral">'-srcnodata'</span>)</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>                 commands.append(srcnodataValue)</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>         bndnodata=self.getParameterValue(self.<a class="code" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#a458c8ea888792f63f8000afe8b6a5c6e">BNDNODATA</a>)</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>         bndnodataValues = bndnodata.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>         <span class="keywordflow">for</span> bndnodataValue <span class="keywordflow">in</span> bndnodataValues:</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>             commands.append(<span class="stringliteral">'-bndnodata'</span>)</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>             commands.append(bndnodataValue)</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span> </div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>         extra = str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#a058e183281127755bd1d851b3788138c">EXTRA</a>))</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>         <span class="keywordflow">if</span> len(extra) > 0:</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>             commands.append(extra)</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span> </div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>         pktoolsUtils.runpktools(commands, progress)</div>
-<div class="ttc" id="classqgis_1_1pkextract__grid_1_1pkextract__grid_html_a458c8ea888792f63f8000afe8b6a5c6e"><div class="ttname"><a href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#a458c8ea888792f63f8000afe8b6a5c6e">qgis.pkextract_grid.pkextract_grid.BNDNODATA</a></div><div class="ttdeci">string BNDNODATA</div><div class="ttdef"><b>Definition:</b> <a href="pkextract__grid_8py_source.html#l00099">pkextract_grid.py:99</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract__grid_1_1pkextract__grid_html_a8b1c35d0229515eb8a9a4f74fbb27df2"><div class="ttname"><a href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#a8b1c35d0229515eb8a9a4f74fbb27df2">qgis.pkextract_grid.pkextract_grid.RULE</a></div><div class="ttdeci">string RULE</div><div class="ttdef"><b>Definition:</b> <a href="pkextract__grid_8py_source.html#l00094">pkextract_grid.py:94</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract__grid_1_1pkextract__grid_html_a4f170fcdea30859ad29048d61e90ce8b"><div class="ttname"><a href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#a4f170fcdea30859ad29048d61e90ce8b">qgis.pkextract_grid.pkextract_grid.FORMAT</a></div><div class="ttdeci">string FORMAT</div><div class="ttdef"><b>Definition:</b> <a href="pkextract__grid_8py_source.html#l00102">pkextract_grid.py:102</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract__grid_1_1pkextract__grid_html"><div class="ttname"><a href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pkextract_grid.pkextract_grid</a></div><div class="ttdef"><b>Definition:</b> <a href="pkextract__grid_8py_source.html#l00087">pkextract_grid.py:87</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract__grid_1_1pkextract__grid_html_a058e183281127755bd1d851b3788138c"><div class="ttname"><a href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#a058e183281127755bd1d851b3788138c">qgis.pkextract_grid.pkextract_grid.EXTRA</a></div><div class="ttdeci">string EXTRA</div><div class="ttdef"><b>Definition:</b> <a href="pkextract__grid_8py_source.html#l00100">pkextract_grid.py:100</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract__grid_1_1pkextract__grid_html_aff9ec53af87f8f28b82ea13707ed31a3"><div class="ttname"><a href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#aff9ec53af87f8f28b82ea13707ed31a3">qgis.pkextract_grid.pkextract_grid.RULE_OPTIONS</a></div><div class="ttdeci">list RULE_OPTIONS</div><div class="ttdef"><b>Definition:</b> <a href="pkextract__grid_8py_source.html#l00092">pkextract_grid.py:92</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract__grid_1_1pkextract__grid_html_a59fa1c64049fbed2cc81548cf5d0e3a8"><div class="ttname"><a href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#a59fa1c64049fbed2cc81548cf5d0e3a8">qgis.pkextract_grid.pkextract_grid.OUTPUT</a></div><div class="ttdeci">string OUTPUT</div><div class="ttdef"><b>Definition:</b> <a href="pkextract__grid_8py_source.html#l00090">pkextract_grid.py:90</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract__grid_1_1pkextract__grid_html_aa939f27236fbd7a0919bcb66b214b8c9"><div class="ttname"><a href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#aa939f27236fbd7a0919bcb66b214b8c9">qgis.pkextract_grid.pkextract_grid.cliName</a></div><div class="ttdeci">def cliName</div><div class="ttdef"><b>Definition:</b> <a href="pkextract__grid_8py_source.html#l00104">pkextract_grid.py:104</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract__grid_1_1pkextract__grid_html_a2b5e358b248cb62615584a90d651fea1"><div class="ttname"><a href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#a2b5e358b248cb62615584a90d651fea1">qgis.pkextract_grid.pkextract_grid.SRCNODATA</a></div><div class="ttdeci">string SRCNODATA</div><div class="ttdef"><b>Definition:</b> <a href="pkextract__grid_8py_source.html#l00098">pkextract_grid.py:98</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract__grid_1_1pkextract__grid_html_a1c07170b9f1999083d925f16c78e5ab1"><div class="ttname"><a href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#a1c07170b9f1999083d925f16c78e5ab1">qgis.pkextract_grid.pkextract_grid.BUFFER</a></div><div class="ttdeci">string BUFFER</div><div class="ttdef"><b>Definition:</b> <a href="pkextract__grid_8py_source.html#l00096">pkextract_grid.py:96</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract__grid_1_1pkextract__grid_html_a914f319e7a3734966056b0e396e4b0a1"><div class="ttname"><a href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#a914f319e7a3734966056b0e396e4b0a1">qgis.pkextract_grid.pkextract_grid.GRID</a></div><div class="ttdeci">string GRID</div><div class="ttdef"><b>Definition:</b> <a href="pkextract__grid_8py_source.html#l00097">pkextract_grid.py:97</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract__grid_1_1pkextract__grid_html_a481d147d56925a1ab75e18b1c8f145fc"><div class="ttname"><a href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#a481d147d56925a1ab75e18b1c8f145fc">qgis.pkextract_grid.pkextract_grid.group</a></div><div class="ttdeci">group</div><div class="ttdef"><b>Definition:</b> <a href="pkextract__grid_8py_source.html#l00109">pkextract_grid.py:109</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract__grid_1_1pkextract__grid_html_ad359b649a15e3dbd0795278b984c6b23"><div class="ttname"><a href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#ad359b649a15e3dbd0795278b984c6b23">qgis.pkextract_grid.pkextract_grid.INPUT</a></div><div class="ttdeci">string INPUT</div><div class="ttdef"><b>Definition:</b> <a href="pkextract__grid_8py_source.html#l00089">pkextract_grid.py:89</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract__grid_1_1pkextract__grid_html_aa9a3742d6a3703e840c7bc463740fb46"><div class="ttname"><a href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#aa9a3742d6a3703e840c7bc463740fb46">qgis.pkextract_grid.pkextract_grid.name</a></div><div class="ttdeci">name</div><div class="ttdef"><b>Definition:</b> <a href="pkextract__grid_8py_source.html#l00108">pkextract_grid.py:108</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract__grid_1_1pkextract__grid_html_adaea5d0be7bd0435fdd3f6a42dc4c80f"><div class="ttname"><a href="classqgis_1_1pkextract__grid_1_1pkextract__grid.html#adaea5d0be7bd0435fdd3f6a42dc4c80f">qgis.pkextract_grid.pkextract_grid.POLYGON</a></div><div class="ttdeci">string POLYGON</div><div class="ttdef"><b>Definition:</b> <a href="pkextract__grid_8py_source.html#l00095">pkextract_grid.py:95</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkextract__gui_2main_8cpp_source.html b/doc/html/pkextract__gui_2main_8cpp_source.html
deleted file mode 100644
index 4aa9fe8..0000000
--- a/doc/html/pkextract__gui_2main_8cpp_source.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/pkextract_gui/main.cpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_2676862852e3d558e3597542a81ecc63.html">pkextract_gui</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">main.cpp</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="preprocessor">#include "mainwindow.h"</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="preprocessor">#include <QApplication></span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> </div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])</div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> {</div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span>     QApplication a(argc, argv);</div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span>     <a class="code" href="classMainWindow.html">MainWindow</a> w;</div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span>     w.show();</div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> </div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span>     <span class="keywordflow">return</span> a.exec();</div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> }</div>
-<div class="ttc" id="classMainWindow_html"><div class="ttname"><a href="classMainWindow.html">MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite__gui_2mainwindow_8h_source.html#l00031">mainwindow.h:31</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkextract__gui_2mainwindow_8cpp_source.html b/doc/html/pkextract__gui_2mainwindow_8cpp_source.html
deleted file mode 100644
index 8eff472..0000000
--- a/doc/html/pkextract__gui_2mainwindow_8cpp_source.html
+++ /dev/null
@@ -1,278 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/pkextract_gui/mainwindow.cpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_2676862852e3d558e3597542a81ecc63.html">pkextract_gui</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">mainwindow.cpp</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="preprocessor">#include "mainwindow.h"</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="preprocessor">#include "ui_mainwindow.h"</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="preprocessor">#include <QFileDialog></span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="preprocessor">#include <QStandardItemModel></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="preprocessor">#include <QMessageBox></span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="preprocessor">#include <QProcess></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> </div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> MainWindow::MainWindow(QWidget *parent) :</div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span>     QMainWindow(parent),</div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span>     ui(new Ui::<a class="code" href="classMainWindow.html">MainWindow</a>)</div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> {</div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span>     ui->setupUi(<span class="keyword">this</span>);</div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span>     QStringList rulelist;</div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span>     rulelist << <span class="stringliteral">"point"</span> << <span class="stringliteral">"pointOnSurface"</span> << <span class="stringliteral">"centroid"</span> << <span class="stringliteral">"mean"</span> << <span class="stringliteral">"stdev"</span> << <span class="stringliteral">"median"</span> << <span cl [...]
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span>     ui->rule->addItems(rulelist);</div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span>     QStringList formatlist;</div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span>     formatlist << <span class="stringliteral">"SQLite"</span> << <span class="stringliteral">"ESRI Shapefile"</span>;</div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span>     ui->f->addItems(formatlist);</div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span>     setDefaults();</div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> }</div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> </div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> MainWindow::~MainWindow()</div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> {</div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span>     <span class="keyword">delete</span> ui;</div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> }</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> </div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keywordtype">void</span> MainWindow::setDefaults()</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> {</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>     <span class="comment">//tab input/output</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span>     ui->input->clear();</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>     ui->sample->clear();</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>     ui->bndnodata->clear();</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>     ui->srcnodata->clear();</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>     ui->polygon->setChecked(<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>     ui->f->setCurrentIndex(0);</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>     ui->output->clear();</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>     <span class="comment">//tab extract</span></div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>     ui->bname->setText(<span class="stringliteral">"b"</span>);</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     ui->cname->setText(<span class="stringliteral">"label"</span>);</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     ui->rule->setCurrentIndex(0);</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     ui->nclass->clear();</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     QStringList labels;</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     setClassTable(labels);</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     ui->threshold->clear();</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span> }</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span> </div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span> <span class="keywordtype">void</span> MainWindow::on_actionInput_triggered()</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span> {</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     QString qsinput = QFileDialog::getOpenFileName(<span class="keyword">this</span>, <span class="stringliteral">"Input"</span>);</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     ui->input->setText(qsinput);</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span> }</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span> </div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span> <span class="keywordtype">void</span> MainWindow::on_actionSample_triggered()</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span> {</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     QString qssample = QFileDialog::getOpenFileName(<span class="keyword">this</span>, <span class="stringliteral">"Sample"</span>);</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     ui->sample->setText(qssample);</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span> }</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span> </div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span> <span class="keywordtype">void</span> MainWindow::on_actionOutput_triggered()</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span> {</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     QString qsoutput = QFileDialog::getSaveFileName(<span class="keyword">this</span>,<span class="stringliteral">"Output image"</span>,<span class="stringliteral">""</span>,<span class="stringliteral">"*.*"</span>);</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     ui->output->setText(qsoutput);</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span> }</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span> </div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span> <span class="keywordtype">void</span> MainWindow::on_toolButton_input_clicked()</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span> {</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     on_actionInput_triggered();</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span> }</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span> </div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span> <span class="keywordtype">void</span> MainWindow::on_toolButton_sample_clicked()</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span> {</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>     on_actionSample_triggered();</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span> }</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span> </div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span> <span class="keywordtype">void</span> MainWindow::on_toolButton_output_clicked()</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span> {</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>     on_actionOutput_triggered();</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span> }</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span> </div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span> <span class="keywordtype">void</span> MainWindow::setClassTable(<span class="keyword">const</span> QStringList &labels)</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span> {</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     QStandardItemModel *model = <span class="keyword">new</span> QStandardItemModel(labels.size(),2,<span class="keyword">this</span>); <span class="comment">//2 Rows and 3 Columns</span></div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     model->setHorizontalHeaderItem(0, <span class="keyword">new</span> QStandardItem(QString(<span class="stringliteral">"label name"</span>)));</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>     model->setHorizontalHeaderItem(1, <span class="keyword">new</span> QStandardItem(QString(<span class="stringliteral">"select(%)"</span>)));</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ilabel=0;ilabel<labels.size();++ilabel){</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>         QStandardItem *firstCol = <span class="keyword">new</span> QStandardItem(QString(labels[ilabel]));</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>         model->setItem(ilabel,0,firstCol);</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>         QStandardItem *secondCol = <span class="keyword">new</span> QStandardItem(QString::number(100));</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>         model->setItem(ilabel,1,secondCol);</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     }</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     ui->tableView_labels->setModel(model);</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span> }</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span> </div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span> <span class="keywordtype">void</span> MainWindow::on_pushButton_run_clicked()</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span> {</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>         ui->commandLineEdit->clear();</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>         ui->consoleEdit->clear();</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span> </div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>         QString program = <span class="stringliteral">"pkextract"</span>;</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>         <span class="keywordflow">if</span>(ui->sample->text().isEmpty())</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>             MainWindow::on_actionSample_triggered();</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>         <span class="keywordflow">if</span>(ui->sample->text().isEmpty()){</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>             QString qsError=<span class="stringliteral">"No sample image file selected"</span>;</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>             <span class="keywordflow">throw</span>(qsError);</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>         }</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span> </div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>         <span class="keywordflow">if</span>(ui->input->text().isEmpty())</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>             MainWindow::on_actionInput_triggered();</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>         <span class="keywordflow">if</span>(ui->input->text().isEmpty()){</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>             QString qsError=<span class="stringliteral">"No input image file selected"</span>;</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>             <span class="keywordflow">throw</span>(qsError);</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>         }</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span> </div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>         <span class="keywordflow">if</span>(ui->output->text().isEmpty())</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>             MainWindow::on_actionOutput_triggered();</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>         <span class="keywordflow">if</span>(ui->output->text().isEmpty()){</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>             QString qsError=<span class="stringliteral">"No output image file selected"</span>;</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>             <span class="keywordflow">throw</span>(qsError);</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>         }</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span> </div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>         program+=<span class="stringliteral">" --f "</span>+ui->f->currentText();</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span> </div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>         <span class="keywordflow">if</span>(ui->polygon->isChecked())</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>             program+=<span class="stringliteral">" --polygon"</span>;</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span> </div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>         program+=<span class="stringliteral">" --rule "</span>+ui->rule->currentText();</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span> <span class="comment">//        QList<QComboBox*> qcomboBoxList = this->findChildren<QComboBox *>();</span></div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span> </div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span> <span class="comment">//        for(QList<QComboBox*>::ConstIterator qcbit=qcomboBoxList.begin();qcbit!=qcomboBoxList.end();++qcbit){</span></div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span> <span class="comment">//            QString qsOption;</span></div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span> <span class="comment">//            qsOption+=" --";</span></div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span> <span class="comment">//            qsOption+=(*qcbit)->objectName();</span></div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span> <span class="comment">//            program+=qsOption;</span></div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span> <span class="comment">//            program+=" ";</span></div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span> <span class="comment">//            program+=QString::number((*qcbit)->currentIndex());</span></div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span> <span class="comment">//        }</span></div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span> </div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>         QList<QLineEdit*> qlineEditList = this->findChildren<QLineEdit *>();</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span> </div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>         <span class="keywordflow">for</span>(QList<QLineEdit*>::ConstIterator qlbit=qlineEditList.begin();qlbit!=qlineEditList.end();++qlbit){</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>             <span class="keywordflow">if</span>(!((*qlbit)->text().isEmpty())){</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>                 QString qsOption;</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>                 qsOption+=<span class="stringliteral">" --"</span>;</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>                 qsOption+=(*qlbit)->objectName();</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>                 qsOption+=<span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>                 qsOption+=(*qlbit)->text();</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>                 program+=qsOption;</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>             }</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>         }</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span> </div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>         <span class="comment">//class table</span></div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<ui->tableView_labels->model()->rowCount();++irow){</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>             QString qsOption;</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>             qsOption+=<span class="stringliteral">" --class "</span>;</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>             qsOption+=ui->tableView_labels->model()->data(ui->tableView_labels->model()->index(irow,0)).toString();</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>             qsOption+=<span class="stringliteral">" --threshold "</span>;</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>             qsOption+=ui->tableView_labels->model()->data(ui->tableView_labels->model()->index(irow,1)).toString();</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>             program+=qsOption;</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>         }</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span> </div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>         ui->commandLineEdit->insert(program);</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span> </div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span> <span class="comment">//        QProcess *myProcess = new QProcess(parent);</span></div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>         QProcess *myProcess = <span class="keyword">new</span> QProcess(<span class="keyword">this</span>);</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>         myProcess->start(program);</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>         myProcess->setProcessChannelMode(QProcess::MergedChannels);</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>         this->setCursor(Qt::WaitCursor);</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>         myProcess->waitForFinished(-1);</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>         this->setCursor(Qt::ArrowCursor);</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span> <span class="comment">//        QString p_stderr = myProcess->readyReadStandardError();</span></div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span> <span class="comment">//        if(!p_stderr.isEmpty()){</span></div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span> <span class="comment">//            QMessageBox msgBox;</span></div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span> <span class="comment">//            msgBox.setText(p_stderr);</span></div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span> <span class="comment">//            msgBox.exec();</span></div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span> <span class="comment">//        }</span></div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>         QString p_stdout = myProcess->readAll();</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>         ui->consoleEdit->insertPlainText(p_stdout);</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>         <span class="keyword">delete</span> myProcess;</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>     }</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>     <span class="keywordflow">catch</span>(QString qsError){</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>         QMessageBox msgBox;</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>         msgBox.setText(qsError);</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>         msgBox.exec();</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>     }</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span> }</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span> </div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span> <span class="keywordtype">void</span> MainWindow::on_toolButton_createTable_clicked()</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span> {</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>     <span class="keywordtype">int</span> nclass=ui->nclass->text().toInt();</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>     QStringList labels;</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=1;iclass<=nclass;++iclass){</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>         QString lstring=<span class="stringliteral">"label"</span>;</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>         lstring+=QString::number(iclass);</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>         labels << lstring;</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>     }</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>     setClassTable(labels);</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span> }</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span> </div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span> <span class="keywordtype">void</span> MainWindow::on_pushButton_restore_clicked()</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span> {</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>     setDefaults();</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span> }</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span> </div>
-<div class="ttc" id="classMainWindow_html"><div class="ttname"><a href="classMainWindow.html">MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite__gui_2mainwindow_8h_source.html#l00031">mainwindow.h:31</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkextract__gui_2mainwindow_8h_source.html b/doc/html/pkextract__gui_2mainwindow_8h_source.html
deleted file mode 100644
index 19a6c02..0000000
--- a/doc/html/pkextract__gui_2mainwindow_8h_source.html
+++ /dev/null
@@ -1,119 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/pkextract_gui/mainwindow.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_2676862852e3d558e3597542a81ecc63.html">pkextract_gui</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">mainwindow.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="preprocessor">#ifndef MAINWINDOW_H</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="preprocessor"></span><span class="preprocessor">#define MAINWINDOW_H</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="preprocessor">#include <QMainWindow></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> </div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="keyword">namespace </span>Ui {</div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="keyword">class </span><a class="code" href="classMainWindow.html">MainWindow</a>;</div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> }</div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> </div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="keyword">class </span><a class="code" href="classMainWindow.html">MainWindow</a> : <span class="keyword">public</span> QMainWindow</div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> {</div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span>     Q_OBJECT</div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> </div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span>     <span class="keyword">explicit</span> <a class="code" href="classMainWindow.html">MainWindow</a>(QWidget *parent = 0);</div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span>     ~<a class="code" href="classMainWindow.html">MainWindow</a>();</div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> </div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="keyword">private</span> slots:</div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span>     <span class="keywordtype">void</span> on_actionInput_triggered();</div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> </div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span>     <span class="keywordtype">void</span> on_actionSample_triggered();</div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> </div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span>     <span class="keywordtype">void</span> on_actionOutput_triggered();</div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> </div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span>     <span class="keywordtype">void</span> on_toolButton_input_clicked();</div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> </div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span>     <span class="keywordtype">void</span> on_toolButton_output_clicked();</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> </div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span>     <span class="keywordtype">void</span> on_toolButton_sample_clicked();</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> </div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span>     <span class="keywordtype">void</span> on_pushButton_run_clicked();</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> </div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>     <span class="keywordtype">void</span> on_toolButton_createTable_clicked();</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> </div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>     <span class="keywordtype">void</span> on_pushButton_restore_clicked();</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> </div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="keyword">private</span>:</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>     <span class="keywordtype">void</span> setClassTable(<span class="keyword">const</span> QStringList &labels);</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     <span class="keywordtype">void</span> setDefaults();</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> </div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     <a class="code" href="classUi_1_1MainWindow.html">Ui::MainWindow</a> *ui;</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span> };</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span> </div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span> <span class="preprocessor">#endif // MAINWINDOW_H</span></div>
-<div class="ttc" id="classUi_1_1MainWindow_html"><div class="ttname"><a href="classUi_1_1MainWindow.html">Ui::MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="build-pkcomposite__gui-gcc-Debug_2ui__mainwindow_8h_source.html#l00702">ui_mainwindow.h:702</a></div></div>
-<div class="ttc" id="classMainWindow_html"><div class="ttname"><a href="classMainWindow.html">MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite__gui_2mainwindow_8h_source.html#l00031">mainwindow.h:31</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkextract__random_8py_source.html b/doc/html/pkextract__random_8py_source.html
deleted file mode 100644
index 41c1eab..0000000
--- a/doc/html/pkextract__random_8py_source.html
+++ /dev/null
@@ -1,265 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/pkextract_random.py Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkextract_random.py</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment"># -*- coding: utf-8 -*-</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> </div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="stringliteral">    pkextract_random.py</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="stringliteral">    ---------------------</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="stringliteral">    Date                 : April 2015</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="stringliteral">    Copyright            : (C) 2015 by Pieter Kempeneers</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="stringliteral">    Email                : kempenep at gmail dot com</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="stringliteral">*   This program is free software; you can redistribute it and/or modify  *</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="stringliteral">*   it under the terms of the GNU General Public License as published by  *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="stringliteral">*   the Free Software Foundation; either version 2 of the License, or     *</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="stringliteral">*   (at your option) any later version.                                   *</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> __author__ = <span class="stringliteral">'Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> __date__ = <span class="stringliteral">'April 2015'</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> __copyright__ = <span class="stringliteral">'(C) 2015, Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"># This will get replaced with a git SHA1 when you do a git archive</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> __revision__ = <span class="stringliteral">'$Format:%H$'</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">import</span> os</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">from</span> pktoolsUtils <span class="keyword">import</span> pktoolsUtils</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">from</span> pktoolsAlgorithm <span class="keyword">import</span> pktoolsAlgorithm</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterRaster</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterVector</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">from</span> processing.core.outputs <span class="keyword">import</span> OutputVector</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterSelection</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterNumber</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterString</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterBoolean</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterExtent</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> FORMATS = [</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>     <span class="stringliteral">'ESRI Shapefile'</span>,</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     <span class="stringliteral">'GeoJSON'</span>,</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     <span class="stringliteral">'GeoRSS'</span>,</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     <span class="stringliteral">'SQLite'</span>,</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     <span class="stringliteral">'GMT'</span>,</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     <span class="stringliteral">'MapInfo File'</span>,</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     <span class="stringliteral">'INTERLIS 1'</span>,</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     <span class="stringliteral">'INTERLIS 2'</span>,</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     <span class="stringliteral">'GML'</span>,</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     <span class="stringliteral">'Geoconcept'</span>,</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     <span class="stringliteral">'DXF'</span>,</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     <span class="stringliteral">'DGN'</span>,</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     <span class="stringliteral">'CSV'</span>,</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     <span class="stringliteral">'BNA'</span>,</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     <span class="stringliteral">'S57'</span>,</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     <span class="stringliteral">'KML'</span>,</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     <span class="stringliteral">'GPX'</span>,</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <span class="stringliteral">'PGDump'</span>,</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     <span class="stringliteral">'GPSTrackMaker'</span>,</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     <span class="stringliteral">'ODS'</span>,</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     <span class="stringliteral">'XLSX'</span>,</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     <span class="stringliteral">'PDF'</span>,</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span> ]</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span> EXTS = [</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     <span class="stringliteral">'.shp'</span>,</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     <span class="stringliteral">'.geojson'</span>,</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     <span class="stringliteral">'.xml'</span>,</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     <span class="stringliteral">'.sqlite'</span>,</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>     <span class="stringliteral">'.gmt'</span>,</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     <span class="stringliteral">'.tab'</span>,</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     <span class="stringliteral">'.ili'</span>,</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     <span class="stringliteral">'.ili'</span>,</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     <span class="stringliteral">'.gml'</span>,</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>     <span class="stringliteral">'.txt'</span>,</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>     <span class="stringliteral">'.dxf'</span>,</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>     <span class="stringliteral">'.dgn'</span>,</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>     <span class="stringliteral">'.csv'</span>,</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>     <span class="stringliteral">'.bna'</span>,</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>     <span class="stringliteral">'.000'</span>,</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>     <span class="stringliteral">'.kml'</span>,</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>     <span class="stringliteral">'.gpx'</span>,</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>     <span class="stringliteral">'.pgdump'</span>,</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>     <span class="stringliteral">'.gtm'</span>,</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     <span class="stringliteral">'.ods'</span>,</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     <span class="stringliteral">'.xlsx'</span>,</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     <span class="stringliteral">'.pdf'</span>,</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span> ]</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span> </div>
-<div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classqgis_1_1pkextract__random_1_1pkextract__random.html">   87</a></span> <span class="keyword">class </span><a class="code" href="classqgis_1_1pkextract__random_1_1pkextract__random.html">pkextract_random</a>(pktoolsAlgorithm):</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span> </div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     INPUT = <span class="stringliteral">"INPUT"</span></div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     OUTPUT = <span class="stringliteral">"OUTPUT"</span></div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     </div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     RULE_OPTIONS = [<span class="stringliteral">'centroid'</span>, <span class="stringliteral">'point'</span>, <span class="stringliteral">'mean'</span>, <span class="stringliteral">'proportion'</span>, <span class="stringliteral">'custom'</span>, <span class="stringliteral">'min'</span>, <span class="stringliteral">'max'</span>, <span class="stringliteral [...]
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span> </div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>     RULE = <span class="stringliteral">"RULE"</span></div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>     POLYGON = <span class="stringliteral">"POLYGON"</span></div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     BUFFER = <span class="stringliteral">"BUFFER"</span></div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     RANDOM = <span class="stringliteral">"RANDOM"</span></div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     SRCNODATA = <span class="stringliteral">"SRCNODATA"</span></div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     BNDNODATA = <span class="stringliteral">"BNDNODATA"</span></div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     EXTRA = <span class="stringliteral">'EXTRA'</span></div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     </div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     FORMAT = <span class="stringliteral">"FORMAT"</span></div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span> </div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     <span class="keyword">def </span>cliName(self):</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>         <span class="keywordflow">return</span> <span class="stringliteral">"pkextract"</span></div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span> </div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     <span class="keyword">def </span>defineCharacteristics(self):</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>         self.<a class="code" href="classqgis_1_1pkextract__random_1_1pkextract__random.html#a82b3377677efcc9221be352e4048cafd">name</a> = <span class="stringliteral">"extract random points"</span></div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>         self.<a class="code" href="classqgis_1_1pkextract__random_1_1pkextract__random.html#aca5c7763815ce8ed031311ba3a789ca1">group</a> = <span class="stringliteral">"[pktools] raster/vector"</span></div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>         self.addParameter(ParameterRaster(self.<a class="code" href="classqgis_1_1pkextract__random_1_1pkextract__random.html#aa12d40db6d4c1db34cb7c9f577f7c005">INPUT</a>, <span class="stringliteral">'Input raster data set'</span>))</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pkextract__random_1_1pkextract__random.html#afedf8577b67d791e03897075d8aa27ac">RULE</a>,<span class="stringliteral">"extraction rule"</span>,self.<a class="code" href="classqgis_1_1pkextract__random_1_1pkextract__random.html#a85a1e7cb635dcbd857a527768834e990">RULE_OPTIONS</a>, 0))</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span> </div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>         self.addOutput(OutputVector(self.<a class="code" href="classqgis_1_1pkextract__random_1_1pkextract__random.html#a085ee08ae2a482d8cbaff595892c54a8">OUTPUT</a>, <span class="stringliteral">'Output vector data set'</span>))</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pkextract__random_1_1pkextract__random.html#aa9917fab3df26d469766bfa0ba603ee4">FORMAT</a>,</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>                           <span class="stringliteral">'Destination Format'</span>, FORMATS))</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span> </div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>         self.addParameter(ParameterBoolean(self.<a class="code" href="classqgis_1_1pkextract__random_1_1pkextract__random.html#a36283f7921c233717d3f14c8db5c1f0b">POLYGON</a>, <span class="stringliteral">"Create OGRPolygon as geometry instead of OGRPoint"</span>,<span class="keyword">False</span>))</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>         self.addParameter(ParameterNumber(self.<a class="code" href="classqgis_1_1pkextract__random_1_1pkextract__random.html#acd4d3fcc09b1d4e24614be0afaefbf3e">BUFFER</a>, <span class="stringliteral">"Buffer for calculating statistics for point features"</span>,1,25,1))</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>         self.addParameter(ParameterNumber(self.<a class="code" href="classqgis_1_1pkextract__random_1_1pkextract__random.html#adcaa31fc02c279d8bbdb849104d939e1">RANDOM</a>, <span class="stringliteral">"Number of random points to generate"</span>,0,1000000,100))</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span> </div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkextract__random_1_1pkextract__random.html#a13dc6553f4a7a228ae4b94e810694889">SRCNODATA</a>, <span class="stringliteral">"invalid value(s) for input raster dataset (e.g., 0;255)"</span>,<span class="stringliteral">"none"</span>))</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkextract__random_1_1pkextract__random.html#aa443b2341e1b83d1c1cf56f95cdb36a0">BNDNODATA</a>, <span class="stringliteral">"Band(s) in input image to check if pixel is valid (e.g., 0;1)"</span>,<span class="stringliteral">"0"</span>))</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkextract__random_1_1pkextract__random.html#acfa85cb06c31b3bf3a7b543e3185368e">EXTRA</a>,</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>                           <span class="stringliteral">'Additional parameters'</span>, <span class="stringliteral">''</span>, optional=<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span> </div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     <span class="keyword">def </span>processAlgorithm(self, progress):</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>         cliPath = <span class="stringliteral">'"'</span> + os.path.join(pktoolsUtils.pktoolsPath(), self.<a class="code" href="classqgis_1_1pkextract__random_1_1pkextract__random.html#a12d5f2e69fb4d44ceaa3446295ae8c99">cliName</a>()) + <span class="stringliteral">'"'</span></div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>         commands = [cliPath]</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span> </div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>         input=self.getParameterValue(self.<a class="code" href="classqgis_1_1pkextract__random_1_1pkextract__random.html#aa12d40db6d4c1db34cb7c9f577f7c005">INPUT</a>)</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>         commands.append(<span class="stringliteral">'-i'</span>)</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>         commands.append(<span class="stringliteral">'"'</span> + input + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span> </div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>         commands.append(<span class="stringliteral">"-r"</span>)</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>         commands.append(self.<a class="code" href="classqgis_1_1pkextract__random_1_1pkextract__random.html#a85a1e7cb635dcbd857a527768834e990">RULE_OPTIONS</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pkextract__random_1_1pkextract__random.html#afedf8577b67d791e03897075d8aa27ac">RULE</a>)])</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span> </div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>         output = self.getOutputFromName(self.<a class="code" href="classqgis_1_1pkextract__random_1_1pkextract__random.html#a085ee08ae2a482d8cbaff595892c54a8">OUTPUT</a>)</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>         outFile = output.value</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>         formatIdx = self.getParameterValue(self.<a class="code" href="classqgis_1_1pkextract__random_1_1pkextract__random.html#aa9917fab3df26d469766bfa0ba603ee4">FORMAT</a>)</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>         outFormat = <span class="stringliteral">'"'</span> + FORMATS[formatIdx] + <span class="stringliteral">'"'</span></div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>         commands.append(<span class="stringliteral">'-f'</span>)</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>         commands.append(outFormat)</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>         ext = EXTS[formatIdx]</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>         <span class="keywordflow">if</span> <span class="keywordflow">not</span> outFile.endswith(ext):</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>             outFile += ext</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>             output.value = outFile</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>         commands.append(<span class="stringliteral">'-o'</span>)</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>         commands.append(<span class="stringliteral">'"'</span> + outFile + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span> </div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>         <span class="keywordflow">if</span> self.getParameterValue(self.<a class="code" href="classqgis_1_1pkextract__random_1_1pkextract__random.html#a36283f7921c233717d3f14c8db5c1f0b">POLYGON</a>):</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>             commands.append(<span class="stringliteral">"-polygon"</span>)</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>         buffer=self.getParameterValue(self.<a class="code" href="classqgis_1_1pkextract__random_1_1pkextract__random.html#acd4d3fcc09b1d4e24614be0afaefbf3e">BUFFER</a>)</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>         <span class="keywordflow">if</span> buffer > 1:</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>             commands.append(<span class="stringliteral">"-buf"</span>)</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>             commands.append(str(buffer))</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span> </div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>         <span class="keywordflow">if</span> self.getParameterValue(self.<a class="code" href="classqgis_1_1pkextract__random_1_1pkextract__random.html#adcaa31fc02c279d8bbdb849104d939e1">RANDOM</a>) > 0:</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>             commands.append(<span class="stringliteral">"-rand"</span>)</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>             commands.append(str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pkextract__random_1_1pkextract__random.html#adcaa31fc02c279d8bbdb849104d939e1">RANDOM</a>)))</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span> </div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>         srcnodata=self.getParameterValue(self.<a class="code" href="classqgis_1_1pkextract__random_1_1pkextract__random.html#a13dc6553f4a7a228ae4b94e810694889">SRCNODATA</a>)</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>         <span class="keywordflow">if</span> srcnodata != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>             srcnodataValues = srcnodata.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>             <span class="keywordflow">for</span> srcnodataValue <span class="keywordflow">in</span> srcnodataValues:</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>                 commands.append(<span class="stringliteral">'-srcnodata'</span>)</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>                 commands.append(srcnodataValue)</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>         bndnodata=self.getParameterValue(self.<a class="code" href="classqgis_1_1pkextract__random_1_1pkextract__random.html#aa443b2341e1b83d1c1cf56f95cdb36a0">BNDNODATA</a>)</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>         bndnodataValues = bndnodata.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>         <span class="keywordflow">for</span> bndnodataValue <span class="keywordflow">in</span> bndnodataValues:</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>             commands.append(<span class="stringliteral">'-bndnodata'</span>)</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>             commands.append(bndnodataValue)</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span> </div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>         extra = str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pkextract__random_1_1pkextract__random.html#acfa85cb06c31b3bf3a7b543e3185368e">EXTRA</a>))</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>         <span class="keywordflow">if</span> len(extra) > 0:</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>             commands.append(extra)</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span> </div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span> </div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>         pktoolsUtils.runpktools(commands, progress)</div>
-<div class="ttc" id="classqgis_1_1pkextract__random_1_1pkextract__random_html_aca5c7763815ce8ed031311ba3a789ca1"><div class="ttname"><a href="classqgis_1_1pkextract__random_1_1pkextract__random.html#aca5c7763815ce8ed031311ba3a789ca1">qgis.pkextract_random.pkextract_random.group</a></div><div class="ttdeci">group</div><div class="ttdef"><b>Definition:</b> <a href="pkextract__random_8py_source.html#l00109">pkextract_random.py:109</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract__random_1_1pkextract__random_html_adcaa31fc02c279d8bbdb849104d939e1"><div class="ttname"><a href="classqgis_1_1pkextract__random_1_1pkextract__random.html#adcaa31fc02c279d8bbdb849104d939e1">qgis.pkextract_random.pkextract_random.RANDOM</a></div><div class="ttdeci">string RANDOM</div><div class="ttdef"><b>Definition:</b> <a href="pkextract__random_8py_source.html#l00097">pkextract_random.py:97</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract__random_1_1pkextract__random_html_afedf8577b67d791e03897075d8aa27ac"><div class="ttname"><a href="classqgis_1_1pkextract__random_1_1pkextract__random.html#afedf8577b67d791e03897075d8aa27ac">qgis.pkextract_random.pkextract_random.RULE</a></div><div class="ttdeci">string RULE</div><div class="ttdef"><b>Definition:</b> <a href="pkextract__random_8py_source.html#l00094">pkextract_random.py:94</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract__random_1_1pkextract__random_html"><div class="ttname"><a href="classqgis_1_1pkextract__random_1_1pkextract__random.html">qgis.pkextract_random.pkextract_random</a></div><div class="ttdef"><b>Definition:</b> <a href="pkextract__random_8py_source.html#l00087">pkextract_random.py:87</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract__random_1_1pkextract__random_html_a82b3377677efcc9221be352e4048cafd"><div class="ttname"><a href="classqgis_1_1pkextract__random_1_1pkextract__random.html#a82b3377677efcc9221be352e4048cafd">qgis.pkextract_random.pkextract_random.name</a></div><div class="ttdeci">name</div><div class="ttdef"><b>Definition:</b> <a href="pkextract__random_8py_source.html#l00108">pkextract_random.py:108</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract__random_1_1pkextract__random_html_a36283f7921c233717d3f14c8db5c1f0b"><div class="ttname"><a href="classqgis_1_1pkextract__random_1_1pkextract__random.html#a36283f7921c233717d3f14c8db5c1f0b">qgis.pkextract_random.pkextract_random.POLYGON</a></div><div class="ttdeci">string POLYGON</div><div class="ttdef"><b>Definition:</b> <a href="pkextract__random_8py_source.html#l00095">pkextract_random.py:95</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract__random_1_1pkextract__random_html_aa9917fab3df26d469766bfa0ba603ee4"><div class="ttname"><a href="classqgis_1_1pkextract__random_1_1pkextract__random.html#aa9917fab3df26d469766bfa0ba603ee4">qgis.pkextract_random.pkextract_random.FORMAT</a></div><div class="ttdeci">string FORMAT</div><div class="ttdef"><b>Definition:</b> <a href="pkextract__random_8py_source.html#l00102">pkextract_random.py:102</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract__random_1_1pkextract__random_html_aa443b2341e1b83d1c1cf56f95cdb36a0"><div class="ttname"><a href="classqgis_1_1pkextract__random_1_1pkextract__random.html#aa443b2341e1b83d1c1cf56f95cdb36a0">qgis.pkextract_random.pkextract_random.BNDNODATA</a></div><div class="ttdeci">string BNDNODATA</div><div class="ttdef"><b>Definition:</b> <a href="pkextract__random_8py_source.html#l00099">pkextract_random.py:99</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract__random_1_1pkextract__random_html_acd4d3fcc09b1d4e24614be0afaefbf3e"><div class="ttname"><a href="classqgis_1_1pkextract__random_1_1pkextract__random.html#acd4d3fcc09b1d4e24614be0afaefbf3e">qgis.pkextract_random.pkextract_random.BUFFER</a></div><div class="ttdeci">string BUFFER</div><div class="ttdef"><b>Definition:</b> <a href="pkextract__random_8py_source.html#l00096">pkextract_random.py:96</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract__random_1_1pkextract__random_html_acfa85cb06c31b3bf3a7b543e3185368e"><div class="ttname"><a href="classqgis_1_1pkextract__random_1_1pkextract__random.html#acfa85cb06c31b3bf3a7b543e3185368e">qgis.pkextract_random.pkextract_random.EXTRA</a></div><div class="ttdeci">string EXTRA</div><div class="ttdef"><b>Definition:</b> <a href="pkextract__random_8py_source.html#l00100">pkextract_random.py:100</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract__random_1_1pkextract__random_html_a13dc6553f4a7a228ae4b94e810694889"><div class="ttname"><a href="classqgis_1_1pkextract__random_1_1pkextract__random.html#a13dc6553f4a7a228ae4b94e810694889">qgis.pkextract_random.pkextract_random.SRCNODATA</a></div><div class="ttdeci">string SRCNODATA</div><div class="ttdef"><b>Definition:</b> <a href="pkextract__random_8py_source.html#l00098">pkextract_random.py:98</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract__random_1_1pkextract__random_html_a12d5f2e69fb4d44ceaa3446295ae8c99"><div class="ttname"><a href="classqgis_1_1pkextract__random_1_1pkextract__random.html#a12d5f2e69fb4d44ceaa3446295ae8c99">qgis.pkextract_random.pkextract_random.cliName</a></div><div class="ttdeci">def cliName</div><div class="ttdef"><b>Definition:</b> <a href="pkextract__random_8py_source.html#l00104">pkextract_random.py:104</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract__random_1_1pkextract__random_html_a085ee08ae2a482d8cbaff595892c54a8"><div class="ttname"><a href="classqgis_1_1pkextract__random_1_1pkextract__random.html#a085ee08ae2a482d8cbaff595892c54a8">qgis.pkextract_random.pkextract_random.OUTPUT</a></div><div class="ttdeci">string OUTPUT</div><div class="ttdef"><b>Definition:</b> <a href="pkextract__random_8py_source.html#l00090">pkextract_random.py:90</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract__random_1_1pkextract__random_html_aa12d40db6d4c1db34cb7c9f577f7c005"><div class="ttname"><a href="classqgis_1_1pkextract__random_1_1pkextract__random.html#aa12d40db6d4c1db34cb7c9f577f7c005">qgis.pkextract_random.pkextract_random.INPUT</a></div><div class="ttdeci">string INPUT</div><div class="ttdef"><b>Definition:</b> <a href="pkextract__random_8py_source.html#l00089">pkextract_random.py:89</a></div></div>
-<div class="ttc" id="classqgis_1_1pkextract__random_1_1pkextract__random_html_a85a1e7cb635dcbd857a527768834e990"><div class="ttname"><a href="classqgis_1_1pkextract__random_1_1pkextract__random.html#a85a1e7cb635dcbd857a527768834e990">qgis.pkextract_random.pkextract_random.RULE_OPTIONS</a></div><div class="ttdeci">list RULE_OPTIONS</div><div class="ttdef"><b>Definition:</b> <a href="pkextract__random_8py_source.html#l00092">pkextract_random.py:92</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkfillnodata.html b/doc/html/pkfillnodata.html
deleted file mode 100644
index 0dfb4f3..0000000
--- a/doc/html/pkfillnodata.html
+++ /dev/null
@@ -1,95 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: pkfillnodata</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkfillnodata </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><p>program to fill holes in raster image </p>
-<h2>SYNOPSIS</h2>
-<p><code> Usage: pkfillnodata -i input.txt -m mask -o output </code></p>
-<p><code></code></p>
-<p><code> Options: [-b band]*</code></p>
-<p><code> Advanced options: [-d distance] [-it iterations]</code></p>
-<p><code></code></p>
-<h1><a class="anchor" id="pkfillnodata_description"></a>
-Description</h1>
-<p>The utility pkfillnodata fills nodata values in a raster dataset. Nodata values are defined as 0 values in the mask raster dataset. You can use the input file as the mask image if 0 values in the input raster have to be filled. Per default, all bands are filled. Use the option -b to fill individual band(s) in a multiband raster input image. </p>
-<h1><a class="anchor" id="pkfillnodata_options"></a>
-Options</h1>
-<ul>
-<li>use either <code>-short</code> or <code>--long</code> options (both <code>--long=value</code> and <code>--long value</code> are supported)</li>
-<li>short option <code>-h</code> shows basic options only, long option <code>--help</code> shows all options <table class="doxtable">
-<tr>
-<th>short</th><th>long</th><th>type</th><th>default</th><th>description  </th></tr>
-<tr>
-<td>i </td><td>input </td><td>std::string </td><td></td><td>Input raster dataset </td></tr>
-<tr>
-<td>b </td><td>band </td><td>int </td><td></td><td>band(s) to process (Default is -1: process all bands) </td></tr>
-<tr>
-<td>o </td><td>output </td><td>std::string </td><td></td><td>Output image file </td></tr>
-<tr>
-<td>m </td><td>mask </td><td>std::string </td><td></td><td>Mask raster dataset indicating pixels to be interpolated (zero valued) </td></tr>
-<tr>
-<td>d </td><td>distance </td><td>double </td><td>0 </td><td>Maximum number of pixels to search in all directions to find values to interpolate from </td></tr>
-<tr>
-<td>it </td><td>iteration </td><td>int </td><td>0 </td><td>Number of 3x3 smoothing filter passes to run (default 0) </td></tr>
-</table>
-Usage: pkfillnodata -i input.txt -m mask -o output </li>
-</ul>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkfillnodata_8cc_source.html b/doc/html/pkfillnodata_8cc_source.html
deleted file mode 100644
index 5ec617c..0000000
--- a/doc/html/pkfillnodata_8cc_source.html
+++ /dev/null
@@ -1,224 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/pkfillnodata.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkfillnodata.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pkfillnodata.cc: program to fill holes in raster image</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "cpl_string.h"</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "gdal_priv.h"</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "gdal.h"</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span> {</div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "gdal_alg.h"</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> }</div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include <string></span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> </div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="comment">/******************************************************************************/</span></div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span> </div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc,<span class="keywordtype">char</span> **argv) {</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> input_opt(<span class="stringliteral">"i"</span>, <span class="stringliteral">"input"</span>, <span class="stringliteral">"Input raster dataset"</span>);</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> band_opt(<span class="stringliteral">"b"</span>, <span class="stringliteral">"band"</span>, <span class="stringliteral">"band(s) to process (Default is -1: process all bands)"</span>);</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> mask_opt(<span class="stringliteral">"m"</span>, <span class="stringliteral">"mask"</span>, <span class="stringliteral">"Mask raster dataset indicating pixels to be interpolated (zero valued) "</span>);</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> output_opt(<span class="stringliteral">"o"</span>, <span class="stringliteral">"output"</span>, <span class="stringliteral">"Output image file"</span>);</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> distance_opt(<span class="stringliteral">"d"</span>, <span class="stringliteral">"distance"</span>, <span class="stringliteral">"Maximum number of pixels to search in all directions to find values to interpolate from"</span>, 0);</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> iteration_opt(<span class="stringliteral">"it"</span>, <span class="stringliteral">"iteration"</span>, <span class="stringliteral">"Number of 3x3 smoothing filter passes to run (default 0)"</span>, 0);</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> verbose_opt(<span class="stringliteral">"v"</span>, <span class="stringliteral">"verbose"</span>, <span class="stringliteral">"verbose"</span>, 0,2);</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span> </div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>   distance_opt.setHide(1);</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>   iteration_opt.setHide(1);</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span> </div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>   <span class="keywordtype">bool</span> doProcess;<span class="comment">//stop process when program was invoked with help option (-h --help)</span></div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     doProcess=input_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     band_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     output_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>     mask_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>     distance_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>     iteration_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>     verbose_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>   }</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>   <span class="keywordflow">catch</span>(std::string predefinedString){</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     std::cout << predefinedString << std::endl;</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     exit(0);</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>   }</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   <span class="keywordflow">if</span>(!doProcess){</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>     cout << endl;</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     cout << <span class="stringliteral">"Usage: pkfillnodata -i input.txt -m mask -o output"</span> << endl;</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     cout << endl;</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     std::cout << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << std::endl;</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>   }</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span> </div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>   assert(input_opt.size());</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>   assert(mask_opt.size());</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>   assert(output_opt.size());</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>   GDALAllRegister();</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>   GDALDataset *gds_input;</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     std::cout << <span class="stringliteral">"opening input file "</span> << input_opt[0] << std::endl;</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   gds_input = (GDALDataset *) GDALOpen(input_opt[0].c_str(), GA_ReadOnly);</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   <span class="keywordflow">if</span>(gds_input == NULL){</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>     std::string errorString=<span class="stringliteral">"FileOpenError"</span>;</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>   }</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span> </div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>   GDALDataset *gds_mask;</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     std::cout << <span class="stringliteral">"opening mask file "</span> << mask_opt[0] << std::endl;</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>   gds_mask = (GDALDataset *) GDALOpen(mask_opt[0].c_str(), GA_ReadOnly );</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>   <span class="keywordflow">if</span>(gds_mask == NULL){</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>     std::string errorString=<span class="stringliteral">"FileOpenError"</span>;</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   }</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>   GDALRasterBand *maskBand;</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>     std::cout << <span class="stringliteral">"get mask raster band"</span> << std::endl;</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>   maskBand=gds_mask->GetRasterBand(1);</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>   </div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span> </div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>   GDALDriver *poDriver;</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>   poDriver = GetGDALDriverManager()->GetDriverByName(gds_input->GetDriver()->GetDescription());</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>   <span class="keywordflow">if</span>( poDriver == NULL ){</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>     std::string errorString=<span class="stringliteral">"FileOpenError"</span>;</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>     <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>   }</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>     std::cout << <span class="stringliteral">"copying input file to "</span> << output_opt[0] << std::endl;</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>   poDriver->CopyFiles(output_opt[0].c_str(),input_opt[0].c_str());</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>   GDALDataset *gds_out;</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>   gds_out=(GDALDataset *) GDALOpen(output_opt[0].c_str(), GA_Update);</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span> </div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>   <span class="keywordflow">if</span>(band_opt.empty()){</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>     band_opt.clear();</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<gds_input->GetRasterCount();++iband)</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>       band_opt.push_back(iband);</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>   }</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>   GDALRasterBand *targetBand;</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>   <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> iband=0;iband<band_opt.size();++iband){</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>     targetBand=gds_out->GetRasterBand(band_opt[iband]+1);</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>       std::cout << <span class="stringliteral">"copying input file to "</span> << output_opt[0] << std::endl;</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>     <span class="keywordtype">double</span> dfComplete=0.0;</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>     <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>     <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>     GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>     pfnProgress(dfComplete,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>     <span class="keywordflow">if</span>(GDALFillNodata(targetBand,maskBand,distance_opt[0],0,iteration_opt[0],NULL,pfnProgress,pProgressArg)!=CE_None){</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>       std::cerr << CPLGetLastErrorMsg() << std::endl;</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>       exit(1);</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>     }</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>       dfComplete=1.0;</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>       pfnProgress(dfComplete,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>     }</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span> </div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>     <span class="comment">//   gds_out=poDriver->CreateCopy(output_opt[0].c_str(),gds_input, FALSE,NULL,NULL,NULL);</span></div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>     <span class="comment">//   char **papszParmList=NULL;</span></div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>     <span class="comment">//   gds_out=poDriver->Create(output_opt[0].c_str(),targetBand->GetXSize(),targetBand->GetYSize(),1,targetBand->GetRasterDataType(),papszParmList);</span></div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>     <span class="comment">//   char **papszMetadata;</span></div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>     <span class="comment">//   papszMetadata = poDriver->GetMetadata();</span></div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>     <span class="comment">//   assert( CSLFetchBoolean( papszMetadata, GDAL_DCAP_CREATE, FALSE ));</span></div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>     <span class="comment">//   ostringstream compressList;</span></div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>     <span class="comment">//   gds_out->SetMetadataItem("INTERLEAVE",gds_input->GetMetadataItem( "INTERLEAVE", "IMAGE_STRUCTURE"),"IMAGE_STRUCTURE");</span></div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>     <span class="comment">//   gds_out->SetMetadataItem("COMPRESSION",gds_input->GetMetadataItem( "COMPRESSION", "IMAGE_STRUCTURE"),"IMAGE_STRUCTURE");</span></div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>     <span class="comment">//   if(gds_input->GetProjectionRef()!=NULL){</span></div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>     <span class="comment">//     gds_out->SetProjection(gds_input->GetProjectionRef());</span></div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>     <span class="comment">//     double adfGeoTransform[6];</span></div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>     <span class="comment">//     gds_input->GetGeoTransform(adfGeoTransform);</span></div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>     <span class="comment">//     gds_out->SetGeoTransform(adfGeoTransform);</span></div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>     <span class="comment">//   }</span></div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>   }</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>   GDALClose(gds_input);</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>   GDALClose(gds_mask);</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>   GDALClose(gds_out);</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>   GDALDumpOpenDatasets(stderr);</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>   GDALDestroyDriverManager();</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span> }</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span> </div>
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkfilter.html b/doc/html/pkfilter.html
deleted file mode 100644
index 154e053..0000000
--- a/doc/html/pkfilter.html
+++ /dev/null
@@ -1,271 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: pkfilter</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkfilter </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><p>program to filter raster images </p>
-<h2>SYNOPSIS</h2>
-<p><code> Usage: pkfilter -i input -o ouptut [-f filter | -perc value | -srf file [-srf file]* -win wavelength [-win wavelength]* | -wout wavelength -fwhm value [-wout wavelength -fwhm value]* -win wavelength [-win wavelength]*] </code></p>
-<p><code> Options: [-dx value [-dy value] | -dz value] [-nodata value]</code></p>
-<p><code> Advanced options: check table </code></p>
-<h1><a class="anchor" id="pkfilter_description"></a>
-Description</h1>
-<p>This utility implements spatial and spectral filtering for raster data. In the spatial domain (X, Y), the filter typically involves a rectangular convolution kernel (moving window). To avoid image shifting, the size of the window should be odd (3, 5, 7, ...). You can set the window sizes in X and Y directions separately with the options -dx and -dy. A circular kernel (disc) is applied if option -circ is set. An overview of the supported filters (option -f|–filter) is given below [...]
-<p><a class="anchor" id="pkfilter_functions"></a> </p>
-<h2><a class="anchor" id="pkfilter_functions_1"></a>
-Filters in spatial (dx, dy) and spectral/temporal (dz) domain</h2>
-<h3><a class="anchor" id="pkfilter_functions_1_1"></a>
-Implemented as moving window: choose dx, dy or dz > 1 and odd (3, 5, 7, etc.)</h3>
-<p>The number of output bands equals number of input bands</p>
-<table class="doxtable">
-<tr>
-<th>filter</th><th>description  </th></tr>
-<tr>
-<td>dilate</td><td>morphological dilation </td></tr>
-<tr>
-<td>erode</td><td>morphological erosion </td></tr>
-<tr>
-<td>close</td><td>morpholigical closing (dilate+erode) </td></tr>
-<tr>
-<td>open</td><td>morpholigical opening (erode+dilate) </td></tr>
-<tr>
-<td>smoothnodata values</td><td>smooth nodata values (set nodata option!) </td></tr>
-</table>
-<p>Example: "Smooth" (interpolate) nodata in spectral/temporal domain (-dz 1), using a linear interpolation </p>
-<div class="fragment"><div class="line">pkfilter -i input.tif -o smoothed.tif -dz 1 -f smoothnodata -interp linear</div>
-</div><!-- fragment --><p>Example: Filter input.tif in spatial domain with morphological dilation filter with kernel size 3x3.</p>
-<div class="fragment"><div class="line">pkfilter -i input.tif -o dilated.tif -dx 3 -dy 3 -f dilate</div>
-</div><!-- fragment --><h3><a class="anchor" id="pkfilter_functions_1_2"></a>
-Implemented as either moving window or statistical function in spectral/temporal domain (choose dz=1).</h3>
-<p>In case of moving window, the number of output bands equals number of input bands. In case dz=1, the single output band is calculated as the result of the statistical function applied to all bands.</p>
-<table class="doxtable">
-<tr>
-<th>filter </th><th>description  </th></tr>
-<tr>
-<td>nvalid </td><td>report number of valid (not nodata) values in window </td></tr>
-<tr>
-<td>median </td><td>perform a median filter in spatial (dx, dy) or spectral/temporal (dz) domain </td></tr>
-<tr>
-<td>var </td><td>calculate variance in window </td></tr>
-<tr>
-<td>min </td><td>calculate minimum in window </td></tr>
-<tr>
-<td>max </td><td>calculate maximum in window </td></tr>
-<tr>
-<td>sum </td><td>calculate sum in window </td></tr>
-<tr>
-<td>mean </td><td>calculate mean in window </td></tr>
-<tr>
-<td>stdev </td><td>calculate standard deviation in window </td></tr>
-<tr>
-<td>savgolay </td><td>Savitzky-Golay filter (check examples page!) </td></tr>
-<tr>
-<td>percentile </td><td>calculate percentile value in window </td></tr>
-<tr>
-<td>proportion </td><td>calculate proportion in windoww </td></tr>
-</table>
-<p>Example: Median filter in spatial domain</p>
-<div class="fragment"><div class="line">pkfilter -i input.tif -o median.tif -dx 3 -dy 3 -f median</div>
-</div><!-- fragment --><p>Example: Calculate statistical variance in spectral/temporal domain (single output band)</p>
-<div class="fragment"><div class="line">pkfilter -i input.tif -o var.tif -dz 1 -f var</div>
-</div><!-- fragment --><h2><a class="anchor" id="pkfilter_functions_2"></a>
-Wavelet filters</h2>
-<h3><a class="anchor" id="pkfilter_functions_2_1"></a>
-Wavelet filter in in spatial or spectral/temporal (set dz = 1) domain.</h3>
-<p>The number of output bands equals number of input bands</p>
-<table class="doxtable">
-<tr>
-<th>filter </th><th>description  </th></tr>
-<tr>
-<td>dwt </td><td>discrete wavelet transform </td></tr>
-<tr>
-<td>dwti </td><td>discrete inverse wavelet transform </td></tr>
-<tr>
-<td>dwt_cut </td><td>discrete wavelet + inverse transform, using threshold option to cut percentile of coefficients </td></tr>
-</table>
-<p>Example: Calculate discrete wavelet in spatial domain</p>
-<div class="fragment"><div class="line">pkfilter -i lena.tif -o lena_dwt.tif -f dwt</div>
-</div><!-- fragment --><p>Example: Calculate discrete wavelet in spectral/temporal domain</p>
-<div class="fragment"><div class="line">pkfilter -i timeseries.tif -o dwt.tif -f dwt -dz 1</div>
-</div><!-- fragment --><h3><a class="anchor" id="pkfilter_functions_2_2"></a>
-Wavelet filter implemented in spectral/temporal domain only.</h3>
-<p>The number of output bands equals number of input bands</p>
-<table class="doxtable">
-<tr>
-<th>filter </th><th>description  </th></tr>
-<tr>
-<td>dwt_cut_from </td><td>discrete wavelet + inverse transform, setting all high frequence coefficients to zero (scale >= threshold) </td></tr>
-</table>
-<p>Example: Calculate low frequency time series based on discrete wavelet + inverse transform in spectral/temporal domain, retaining only coefficients until scale 3</p>
-<div class="fragment"><div class="line">pkfilter -i timeseries.tif -o lowfrequency.tif -f dwt_cut_from -dz 1 -t 4</div>
-</div><!-- fragment --><h2><a class="anchor" id="pkfilter_functions_3"></a>
-Filters in spatial domain only (dx, dy > 1 and odd).</h2>
-<p>The number of output bands equals number of input bands.</p>
-<table class="doxtable">
-<tr>
-<th>filter </th><th>description  </th></tr>
-<tr>
-<td>mrf </td><td>Markov random field </td></tr>
-<tr>
-<td>ismin </td><td>pixel is minimum? </td></tr>
-<tr>
-<td>ismax </td><td>pixel is maximum? </td></tr>
-<tr>
-<td>shift </td><td>perform a pixel shift in spatial window </td></tr>
-<tr>
-<td>scramble </td><td>scramble pixels in a spatial window </td></tr>
-<tr>
-<td>mode (majority voting </td><td>perform a majority voring (set class option) </td></tr>
-<tr>
-<td>sobelx </td><td>horizontal edge detection </td></tr>
-<tr>
-<td>sobely </td><td>vertical edge detection </td></tr>
-<tr>
-<td>sobelxy </td><td>diagonal edge detection (NE-SW) </td></tr>
-<tr>
-<td>sobelyx </td><td>diagonal edge detection (NW-SE) </td></tr>
-<tr>
-<td>countid </td><td>count digital numbers in window </td></tr>
-<tr>
-<td>order </td><td>rank pixels in order </td></tr>
-<tr>
-<td>density </td><td>calculated the density </td></tr>
-<tr>
-<td>homog </td><td>central pixel must be identical to all other pixels within window </td></tr>
-<tr>
-<td>heterog </td><td>central pixel must be different than all other pixels within window </td></tr>
-</table>
-<p>Example: Sobel edge detection in horizontal direction</p>
-<div class="fragment"><div class="line">pkfilter -i lena.tif -o sobelx.tif -f sobelx -dx 5 -dy 5</div>
-</div><!-- fragment --><h1><a class="anchor" id="pkfilter_options"></a>
-Options</h1>
-<ul>
-<li>use either <code>-short</code> or <code>--long</code> options (both <code>--long=value</code> and <code>--long value</code> are supported)</li>
-<li>short option <code>-h</code> shows basic options only, long option <code>--help</code> shows all options <table class="doxtable">
-<tr>
-<th>short</th><th>long</th><th>type</th><th>default</th><th>description  </th></tr>
-<tr>
-<td>i </td><td>input </td><td>std::string </td><td></td><td>input image file </td></tr>
-<tr>
-<td>o </td><td>output </td><td>std::string </td><td></td><td>Output image file </td></tr>
-<tr>
-<td>f </td><td>filter </td><td>std::string </td><td></td><td>filter function (nvalid, median, var, min, max, sum, mean, dilate, erode, close, open, homog (central pixel must be identical to all other pixels within window), heterog (central pixel must be different than all other pixels within window), sobelx (horizontal edge detection), sobely (vertical edge detection), sobelxy (diagonal edge detection NE-SW),sobelyx (diagonal edge detection NW-SE), density, countid, mode (majority voting [...]
-<tr>
-<td>srf </td><td>srf </td><td>std::string </td><td></td><td>list of ASCII files containing spectral response functions (two columns: wavelength response) </td></tr>
-<tr>
-<td>fwhm </td><td>fwhm </td><td>double </td><td></td><td>list of full width half to apply spectral filtering (-fwhm band1 -fwhm band2 ...) </td></tr>
-<tr>
-<td>dx </td><td>dx </td><td>double </td><td>3 </td><td>filter kernel size in x, use odd values only </td></tr>
-<tr>
-<td>dy </td><td>dy </td><td>double </td><td>3 </td><td>filter kernel size in y, use odd values only </td></tr>
-<tr>
-<td>dz </td><td>dz </td><td>int </td><td></td><td>filter kernel size in z (spectral/temporal dimension), must be odd (example: 3).. Set dz>0 if 1-D filter must be used in band domain </td></tr>
-<tr>
-<td>nodata </td><td>nodata </td><td>double </td><td></td><td>nodata value(s) (used for smoothnodata filter) </td></tr>
-<tr>
-<td>r </td><td>resampling-method </td><td>std::string </td><td>near </td><td>Resampling method for shifting operation (near: nearest neighbour, bilinear: bi-linear interpolation). </td></tr>
-<tr>
-<td>co </td><td>co </td><td>std::string </td><td></td><td>Creation option for output file. Multiple options can be specified. </td></tr>
-<tr>
-<td>wt </td><td>wavelet </td><td>std::string </td><td>daubechies </td><td>wavelet type: daubechies,daubechies_centered, haar, haar_centered, bspline, bspline_centered </td></tr>
-<tr>
-<td>wf </td><td>family </td><td>int </td><td>4 </td><td>wavelet family (vanishing moment, see also <a href="http://www.gnu.org/software/gsl/manual/html_node/DWT-Initialization.html">http://www.gnu.org/software/gsl/manual/html_node/DWT-Initialization.html</a>) </td></tr>
-<tr>
-<td>nl </td><td>nl </td><td>int </td><td>2 </td><td>Number of leftward (past) data points used in Savitzky-Golay filter) </td></tr>
-<tr>
-<td>nr </td><td>nr </td><td>int </td><td>2 </td><td>Number of rightward (future) data points used in Savitzky-Golay filter) </td></tr>
-<tr>
-<td>ld </td><td>ld </td><td>int </td><td>0 </td><td>order of the derivative desired in Savitzky-Golay filter (e.g., ld=0 for smoothed function) </td></tr>
-<tr>
-<td>m </td><td>m </td><td>int </td><td>2 </td><td>order of the smoothing polynomial in Savitzky-Golay filter, also equal to the highest conserved moment; usual values are m = 2 or m = 4) </td></tr>
-<tr>
-<td>class </td><td>class </td><td>short </td><td></td><td>class value(s) to use for density, erosion, dilation, openening and closing, thresholding </td></tr>
-<tr>
-<td>t </td><td>threshold </td><td>double </td><td>0 </td><td>threshold value(s) to use for threshold filter (one for each class), or threshold to cut for dwt_cut (use 0 to keep all) or dwt_cut_from, or sigma for shift </td></tr>
-<tr>
-<td>tap </td><td>tap </td><td>std::string </td><td></td><td>text file containing taps used for spatial filtering (from ul to lr). Use dimX and dimY to specify tap dimensions in x and y. Leave empty for not using taps </td></tr>
-<tr>
-<td>tapz </td><td>tapz </td><td>double </td><td></td><td>taps used for spectral filtering </td></tr>
-<tr>
-<td>pad </td><td>pad </td><td>std::string </td><td>symmetric </td><td>Padding method for filtering (how to handle edge effects). Choose between: symmetric, replicate, circular, zero (pad with 0). </td></tr>
-<tr>
-<td>win </td><td>wavelengthIn </td><td>double </td><td></td><td>list of wavelengths in input spectrum (-win band1 -win band2 ...) </td></tr>
-<tr>
-<td>wout </td><td>wavelengthOut </td><td>double </td><td></td><td>list of wavelengths in output spectrum (-wout band1 -wout band2 ...) </td></tr>
-<tr>
-<td>d </td><td>down </td><td>short </td><td>1 </td><td>down sampling factor. Use value 1 for no downsampling). Use value n>1 for downsampling (aggregation) </td></tr>
-<tr>
-<td>beta </td><td>beta </td><td>std::string </td><td></td><td>ASCII file with beta for each class transition in Markov Random Field </td></tr>
-<tr>
-<td>interp </td><td>interp </td><td>std::string </td><td>akima </td><td>type of interpolation for spectral filtering (see <a href="http://www.gnu.org/software/gsl/manual/html_node/Interpolation-Types.html">http://www.gnu.org/software/gsl/manual/html_node/Interpolation-Types.html</a>) </td></tr>
-<tr>
-<td>ot </td><td>otype </td><td>std::string </td><td></td><td>Data type for output image ({Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/CInt16/CInt32/CFloat32/CFloat64}). Empty string: inherit type from input image </td></tr>
-<tr>
-<td>of </td><td>oformat </td><td>std::string </td><td>GTiff </td><td>Output image format (see also gdal_translate). </td></tr>
-<tr>
-<td>ct </td><td>ct </td><td>std::string </td><td></td><td>color table (file with 5 columns: id R G B ALFA (0: transparent, 255: solid). Use none to ommit color table </td></tr>
-<tr>
-<td>circ </td><td>circular </td><td>bool </td><td>false </td><td>circular disc kernel for dilation and erosion </td></tr>
-</table>
-Usage: pkfilter -i input -o ouptut [-f filter | -perc value | -srf file [-srf file]* -win wavelength [-win wavelength]* | -wout wavelength -fwhm value [-wout wavelength -fwhm value]* -win wavelength [-win wavelength]*]</li>
-</ul>
-<h1>Examples </h1>
-<p>Some examples how to use pkfilter can be found <a class="el" href="md_examples_pkfilter.html#examples_pkfilter">here</a> </p>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkfilter_8cc_source.html b/doc/html/pkfilter_8cc_source.html
deleted file mode 100644
index 7ad3d5a..0000000
--- a/doc/html/pkfilter_8cc_source.html
+++ /dev/null
@@ -1,1046 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/pkfilter.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkfilter.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pkfilter.cc: program to filter raster images: median, min/max, morphological, filtering</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <assert.h></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <iostream></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <string></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <fstream></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <math.h></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include <sys/types.h></span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include <stdio.h></span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include "base/Vector2d.h"</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include "algorithms/Filter2d.h"</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include "algorithms/Filter.h"</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="preprocessor">#include "fileclasses/FileReaderAscii.h"</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="preprocessor">#include "imageclasses/ImgReaderGdal.h"</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="preprocessor">#include "imageclasses/ImgWriterGdal.h"</span></div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="comment">//test</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="preprocessor">#include "algorithms/StatFactory.h"</span></div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> </div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="comment">/******************************************************************************/</span></div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span> <span class="comment">/*------------------</span></div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span> <span class="comment">  Main procedure</span></div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span> <span class="comment">  ----------------*/</span></div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc,<span class="keywordtype">char</span> **argv) {</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> input_opt(<span class="stringliteral">"i"</span>,<span class="stringliteral">"input"</span>,<span class="stringliteral">"input image file"</span>);</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> output_opt(<span class="stringliteral">"o"</span>, <span class="stringliteral">"output"</span>, <span class="stringliteral">"Output image file"</span>);</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>   <span class="comment">// Optionpk<std::string> tmpdir_opt("tmp", "tmp", "Temporary directory","/tmp",2);</span></div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> disc_opt(<span class="stringliteral">"circ"</span>, <span class="stringliteral">"circular"</span>, <span class="stringliteral">"circular disc kernel for dilation and erosion"</span>, <span class="keyword">false</span>);</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>   <span class="comment">// Optionpk<double> angle_opt("a", "angle", "angle used for directional filtering in dilation (North=0, East=90, South=180, West=270).");</span></div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> method_opt(<span class="stringliteral">"f"</span>, <span class="stringliteral">"filter"</span>, <span class="stringliteral">"filter function (nvalid, median, var, min, max, sum, mean, dilate, erode, close, open, homog (central pixel must be identical to all other pixels within window), heterog (central pixel mus [...]
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> resample_opt(<span class="stringliteral">"r"</span>, <span class="stringliteral">"resampling-method"</span>, <span class="stringliteral">"Resampling method for shifting operation (near: nearest neighbour, bilinear: bi-linear interpolation)."</span>, <span class="stringliteral">"near"</span>);</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> dimX_opt(<span class="stringliteral">"dx"</span>, <span class="stringliteral">"dx"</span>, <span class="stringliteral">"filter kernel size in x, use odd values only"</span>, 3);</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> dimY_opt(<span class="stringliteral">"dy"</span>, <span class="stringliteral">"dy"</span>, <span class="stringliteral">"filter kernel size in y, use odd values only"</span>, 3);</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> dimZ_opt(<span class="stringliteral">"dz"</span>, <span class="stringliteral">"dz"</span>, <span class="stringliteral">"filter kernel size in z (spectral/temporal dimension), must be odd (example: 3).. Set dz>0 if 1-D filter must be used in band domain"</span>);</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> wavelet_type_opt(<span class="stringliteral">"wt"</span>, <span class="stringliteral">"wavelet"</span>, <span class="stringliteral">"wavelet type: daubechies,daubechies_centered, haar, haar_centered, bspline, bspline_centered"</span>, <span class="stringliteral">"daubechies"</span>);</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> family_opt(<span class="stringliteral">"wf"</span>, <span class="stringliteral">"family"</span>, <span class="stringliteral">"wavelet family (vanishing moment, see also http://www.gnu.org/software/gsl/manual/html_node/DWT-Initialization.html)"</span>, 4);</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> savgolay_nl_opt(<span class="stringliteral">"nl"</span>, <span class="stringliteral">"nl"</span>, <span class="stringliteral">"Number of leftward (past) data points used in Savitzky-Golay filter)"</span>, 2);</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> savgolay_nr_opt(<span class="stringliteral">"nr"</span>, <span class="stringliteral">"nr"</span>, <span class="stringliteral">"Number of rightward (future) data points used in Savitzky-Golay filter)"</span>, 2);</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> savgolay_ld_opt(<span class="stringliteral">"ld"</span>, <span class="stringliteral">"ld"</span>, <span class="stringliteral">"order of the derivative desired in Savitzky-Golay filter (e.g., ld=0 for smoothed function)"</span>, 0);</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> savgolay_m_opt(<span class="stringliteral">"m"</span>, <span class="stringliteral">"m"</span>, <span class="stringliteral">"order of the smoothing polynomial in Savitzky-Golay filter, also equal to the highest conserved moment; usual values are m = 2 or m = 4)"</span>, 2);</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> class_opt(<span class="stringliteral">"class"</span>, <span class="stringliteral">"class"</span>, <span class="stringliteral">"class value(s) to use for density, erosion, dilation, openening and closing, thresholding"</span>);</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> threshold_opt(<span class="stringliteral">"t"</span>, <span class="stringliteral">"threshold"</span>, <span class="stringliteral">"threshold value(s) to use for threshold filter (one for each class), or threshold to cut for dwt_cut (use 0 to keep all) or dwt_cut_from, or sigma for shift"</span>, 0);</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> nodata_opt(<span class="stringliteral">"nodata"</span>, <span class="stringliteral">"nodata"</span>, <span class="stringliteral">"nodata value(s) (used for smoothnodata filter)"</span>);</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> tap_opt(<span class="stringliteral">"tap"</span>, <span class="stringliteral">"tap"</span>, <span class="stringliteral">"text file containing taps used for spatial filtering (from ul to lr). Use dimX and dimY to specify tap dimensions in x and y. Leave empty for not using taps"</span>);</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> tapz_opt(<span class="stringliteral">"tapz"</span>, <span class="stringliteral">"tapz"</span>, <span class="stringliteral">"taps used for spectral filtering"</span>);</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> padding_opt(<span class="stringliteral">"pad"</span>,<span class="stringliteral">"pad"</span>, <span class="stringliteral">"Padding method for filtering (how to handle edge effects). Choose between: symmetric, replicate, circular, zero (pad with 0)."</span>, <span class="stringliteral">"symmetric"</spa [...]
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> fwhm_opt(<span class="stringliteral">"fwhm"</span>, <span class="stringliteral">"fwhm"</span>, <span class="stringliteral">"list of full width half to apply spectral filtering (-fwhm band1 -fwhm band2 ...)"</span>);</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> srf_opt(<span class="stringliteral">"srf"</span>, <span class="stringliteral">"srf"</span>, <span class="stringliteral">"list of ASCII files containing spectral response functions (two columns: wavelength response)"</span>);</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> wavelengthIn_opt(<span class="stringliteral">"win"</span>, <span class="stringliteral">"wavelengthIn"</span>, <span class="stringliteral">"list of wavelengths in input spectrum (-win band1 -win band2 ...)"</span>);</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> wavelengthOut_opt(<span class="stringliteral">"wout"</span>, <span class="stringliteral">"wavelengthOut"</span>, <span class="stringliteral">"list of wavelengths in output spectrum (-wout band1 -wout band2 ...)"</span>);</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> interpolationType_opt(<span class="stringliteral">"interp"</span>, <span class="stringliteral">"interp"</span>, <span class="stringliteral">"type of interpolation for spectral filtering (see http://www.gnu.org/software/gsl/manual/html_node/Interpolation-Types.html)"</span>,<span class="stringliteral">" [...]
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a>  otype_opt(<span class="stringliteral">"ot"</span>, <span class="stringliteral">"otype"</span>, <span class="stringliteral">"Data type for output image ({Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/CInt16/CInt32/CFloat32/CFloat64}). Empty string: inherit type from input image"</span>,<span class="stringl [...]
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  oformat_opt(<span class="stringliteral">"of"</span>, <span class="stringliteral">"oformat"</span>, <span class="stringliteral">"Output image format (see also gdal_translate)."</span>,<span class="stringliteral">"GTiff"</span>);</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  colorTable_opt(<span class="stringliteral">"ct"</span>, <span class="stringliteral">"ct"</span>, <span class="stringliteral">"color table (file with 5 columns: id R G B ALFA (0: transparent, 255: solid). Use none to ommit color table"</span>);</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> option_opt(<span class="stringliteral">"co"</span>, <span class="stringliteral">"co"</span>, <span class="stringliteral">"Creation option for output file. Multiple options can be specified."</span>);</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> down_opt(<span class="stringliteral">"d"</span>, <span class="stringliteral">"down"</span>, <span class="stringliteral">"down sampling factor. Use value 1 for no downsampling). Use value n>1 for downsampling (aggregation)"</span>, 1);</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> beta_opt(<span class="stringliteral">"beta"</span>, <span class="stringliteral">"beta"</span>, <span class="stringliteral">"ASCII file with beta for each class transition in Markov Random Field"</span>);</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>   <span class="comment">// Optionpk<double> eps_opt("eps","eps", "error marging for linear feature",0);</span></div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>   <span class="comment">// Optionpk<bool> l1_opt("l1","l1", "obtain longest object length for linear feature",false);</span></div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>   <span class="comment">// Optionpk<bool> l2_opt("l2","l2", "obtain shortest object length for linear feature",false,2);</span></div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>   <span class="comment">// Optionpk<bool> a1_opt("a1","a1", "obtain angle found for longest object length for linear feature",false);</span></div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>   <span class="comment">// Optionpk<bool> a2_opt("a2","a2", "obtain angle found for shortest object length for linear feature",false);</span></div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> verbose_opt(<span class="stringliteral">"v"</span>, <span class="stringliteral">"verbose"</span>, <span class="stringliteral">"verbose mode if > 0"</span>, 0,2);</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span> </div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>   resample_opt.setHide(1);</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>   option_opt.setHide(1);</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>   wavelet_type_opt.setHide(1);</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>   family_opt.setHide(1);</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>   savgolay_nl_opt.setHide(1);</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>   savgolay_nr_opt.setHide(1);</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>   savgolay_ld_opt.setHide(1);</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>   savgolay_m_opt.setHide(1);</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>   class_opt.setHide(1);</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>   threshold_opt.setHide(1);</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>   tap_opt.setHide(1);</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>   tapz_opt.setHide(1);</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>   padding_opt.setHide(1);</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>   wavelengthIn_opt.setHide(1);</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>   wavelengthOut_opt.setHide(1);</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>   down_opt.setHide(1);</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>   beta_opt.setHide(1);</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>   <span class="comment">// eps_opt.setHide(1);</span></div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>   <span class="comment">// l1_opt.setHide(1);</span></div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>   <span class="comment">// l2_opt.setHide(1);</span></div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>   <span class="comment">// a1_opt.setHide(1);</span></div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>   <span class="comment">// a2_opt.setHide(1);</span></div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>   interpolationType_opt.setHide(1);</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>   otype_opt.setHide(1);</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>   oformat_opt.setHide(1);</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>   colorTable_opt.setHide(1);</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>   disc_opt.setHide(1);</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span> </div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>   <span class="keywordtype">bool</span> doProcess;<span class="comment">//stop process when program was invoked with help option (-h --help)</span></div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>     doProcess=input_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>     output_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>     <span class="comment">// tmpdir_opt.retrieveOption(argc,argv);</span></div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>     <span class="comment">// angle_opt.retrieveOption(argc,argv);</span></div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>     method_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>     srf_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>     fwhm_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>     dimX_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>     dimY_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>     dimZ_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>     nodata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>     resample_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>     option_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>     wavelet_type_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>     family_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>     savgolay_nl_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>     savgolay_nr_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>     savgolay_ld_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>     savgolay_m_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>     class_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>     threshold_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>     tap_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>     tapz_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>     padding_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>     wavelengthIn_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>     wavelengthOut_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>     down_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>     beta_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>     <span class="comment">// eps_opt.retrieveOption(argc,argv);</span></div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>     <span class="comment">// l1_opt.retrieveOption(argc,argv);</span></div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>     <span class="comment">// l2_opt.retrieveOption(argc,argv);</span></div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>     <span class="comment">// a1_opt.retrieveOption(argc,argv);</span></div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>     <span class="comment">// a2_opt.retrieveOption(argc,argv);</span></div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>     interpolationType_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>     otype_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>     oformat_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>     colorTable_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>     disc_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>     verbose_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>   }</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> predefinedString){</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>     std::cout << predefinedString << std::endl;</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>     exit(0);</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>   }</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>   <span class="keywordflow">if</span>(!doProcess){</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>     cout << endl;</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>     cout << <span class="stringliteral">"Usage: pkfilter -i input -o ouptut [-f filter | -perc value | -srf file [-srf file]* -win wavelength [-win wavelength]* | -wout wavelength -fwhm value [-wout wavelength -fwhm value]* -win wavelength [-win wavelength]*]"</span> << endl;</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>     cout << endl;</div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>     std::cout << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << std::endl;</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>     exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>   }</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span> </div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>   <span class="comment">//not implemented yet, must debug first...</span></div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>   vector<double> angle_opt;</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span> </div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>   <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> input;</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>   <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> output;</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>   <span class="keywordflow">if</span>(input_opt.empty()){</div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>     cerr << <span class="stringliteral">"Error: no input file selected, use option -i"</span> << endl;</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>     exit(1);</div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>   }</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>   <span class="keywordflow">if</span>(output_opt.empty()){</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>     cerr << <span class="stringliteral">"Error: no output file selected, use option -o"</span> << endl;</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>     exit(1);</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>   }</div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>   input.open(input_opt[0]);</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>   GDALDataType theType=GDT_Unknown;</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>     cout << <span class="stringliteral">"possible output data types: "</span>;</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iType = 0; iType < GDT_TypeCount; ++iType){</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>       cout << <span class="stringliteral">" "</span> << GDALGetDataTypeName((GDALDataType)iType);</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>     <span class="keywordflow">if</span>( GDALGetDataTypeName((GDALDataType)iType) != NULL</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>         && EQUAL(GDALGetDataTypeName((GDALDataType)iType),</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>                  otype_opt[0].c_str()))</div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>       theType=(GDALDataType) iType;</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>   }</div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>   <span class="keywordflow">if</span>(theType==GDT_Unknown)</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>     theType=input.getDataType();</div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span> </div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>     std::cout << std::endl << <span class="stringliteral">"Output pixel type:  "</span> << GDALGetDataTypeName(theType) << endl;</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span> </div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>   <span class="keywordtype">string</span> imageType;<span class="comment">//=input.getImageType();</span></div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>   <span class="keywordflow">if</span>(oformat_opt.size())</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>     imageType=oformat_opt[0];</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span> </div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>   <span class="keywordflow">if</span>(option_opt.findSubstring(<span class="stringliteral">"INTERLEAVE="</span>)==option_opt.end()){</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>     <span class="keywordtype">string</span> theInterleave=<span class="stringliteral">"INTERLEAVE="</span>;</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>     theInterleave+=input.getInterleave();</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>     option_opt.push_back(theInterleave);</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>   }</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>     <span class="keywordtype">int</span> nband=input.nrOfBand();</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span> </div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>     <span class="keywordflow">if</span>(fwhm_opt.size())</div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>       nband=fwhm_opt.size();</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(srf_opt.size())</div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>       nband=srf_opt.size();</div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(tap_opt.size()||tapz_opt.size())</div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>       nband=input.nrOfBand();</div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>       <span class="keywordflow">if</span>(method_opt.empty()){</div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span>     cerr << <span class="stringliteral">"Error: no filter selected, use option -f"</span> << endl;</div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>     exit(1);</div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>       }</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>       <span class="keywordflow">switch</span>(filter2d::Filter2d::getFilterType(method_opt[0])){</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span>       <span class="keywordflow">case</span>(filter2d::dilate):</div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>       <span class="keywordflow">case</span>(filter2d::erode):</div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span>       <span class="keywordflow">case</span>(filter2d::close):</div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>       <span class="keywordflow">case</span>(filter2d::open):</div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>       <span class="keywordflow">case</span>(filter2d::smooth):</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>     <span class="comment">//implemented in spectral/temporal domain (dimZ>1) and spatial domain</span></div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>     <span class="keywordflow">if</span>(dimZ_opt.size())</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span>       assert(dimZ_opt[0]>1);</div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>       nband=input.nrOfBand();</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>       <span class="keywordflow">case</span>(filter2d::dwt):</div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>       <span class="keywordflow">case</span>(filter2d::dwti):</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span>       <span class="keywordflow">case</span>(filter2d::dwt_cut):</div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>       <span class="keywordflow">case</span>(filter2d::smoothnodata):</div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>     <span class="comment">//implemented in spectral/temporal/spatial domain and nband always input.nrOfBand()</span></div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span>     nband=input.nrOfBand();</div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span>       <span class="keywordflow">case</span>(filter2d::savgolay):</div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span>     nband=input.nrOfBand();</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>     <span class="keywordflow">if</span>(dimZ_opt.empty())</div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span>       dimZ_opt.push_back(1);</div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span>       <span class="keywordflow">case</span>(filter2d::dwt_cut_from):</div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span>     <span class="comment">//only implemented in spectral/temporal domain</span></div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span>     <span class="keywordflow">if</span>(dimZ_opt.size()){</div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span>       nband=input.nrOfBand();</div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span>       assert(threshold_opt.size());</div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span>     }</div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>       cerr << <span class="stringliteral">"filter not implemented in spatial domain"</span> << endl;</div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>       exit(1);</div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span>     }</div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span>       <span class="keywordflow">case</span>(filter2d::mrf):<span class="comment">//deliberate fall through</span></div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span>     assert(class_opt.size()>1);</div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span>       std::cout << <span class="stringliteral">"opening output image "</span> << output_opt[0] << std::endl;</div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span>     nband=class_opt.size();</div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span>       <span class="keywordflow">case</span>(filter2d::ismin):</div>
-<div class="line"><a name="l00445"></a><span class="lineno">  445</span>       <span class="keywordflow">case</span>(filter2d::ismax):</div>
-<div class="line"><a name="l00446"></a><span class="lineno">  446</span>       <span class="keywordflow">case</span>(filter2d::shift):</div>
-<div class="line"><a name="l00447"></a><span class="lineno">  447</span>       <span class="keywordflow">case</span>(filter2d::scramble):</div>
-<div class="line"><a name="l00448"></a><span class="lineno">  448</span>       <span class="keywordflow">case</span>(filter2d::mode):</div>
-<div class="line"><a name="l00449"></a><span class="lineno">  449</span>       <span class="keywordflow">case</span>(filter2d::sobelx):</div>
-<div class="line"><a name="l00450"></a><span class="lineno">  450</span>       <span class="keywordflow">case</span>(filter2d::sobely):</div>
-<div class="line"><a name="l00451"></a><span class="lineno">  451</span>       <span class="keywordflow">case</span>(filter2d::sobelxy):</div>
-<div class="line"><a name="l00452"></a><span class="lineno">  452</span>       <span class="keywordflow">case</span>(filter2d::countid):</div>
-<div class="line"><a name="l00453"></a><span class="lineno">  453</span>       <span class="keywordflow">case</span>(filter2d::order):</div>
-<div class="line"><a name="l00454"></a><span class="lineno">  454</span>       <span class="keywordflow">case</span>(filter2d::density):</div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span>       <span class="keywordflow">case</span>(filter2d::homog):</div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</span>       <span class="keywordflow">case</span>(filter2d::heterog):</div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span>     <span class="comment">//only implemented in spatial domain</span></div>
-<div class="line"><a name="l00458"></a><span class="lineno">  458</span>     <span class="keywordflow">if</span>(dimZ_opt.size()){</div>
-<div class="line"><a name="l00459"></a><span class="lineno">  459</span>       cerr << <span class="stringliteral">"filter not implemented in spectral/temporal domain"</span> << endl;</div>
-<div class="line"><a name="l00460"></a><span class="lineno">  460</span>       exit(1);</div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span>     }</div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span>       <span class="comment">// case(filter2d::percentile):</span></div>
-<div class="line"><a name="l00464"></a><span class="lineno">  464</span>       <span class="comment">//    //implemented in spectral/temporal/spatial domain and nband 1 if dimZ>0</span></div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span>       <span class="comment">//    if(dimZ_opt.size()){</span></div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>       <span class="comment">//      dimZ_opt[0]=1;</span></div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span>       <span class="comment">//      nband=1;</span></div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span>       <span class="comment">//    }</span></div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span>       <span class="comment">//    else</span></div>
-<div class="line"><a name="l00470"></a><span class="lineno">  470</span>       <span class="comment">//      nband=input.nrOfBand();</span></div>
-<div class="line"><a name="l00471"></a><span class="lineno">  471</span>       <span class="comment">//    break;</span></div>
-<div class="line"><a name="l00472"></a><span class="lineno">  472</span>       <span class="keywordflow">case</span>(filter2d::sum):</div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span>       <span class="keywordflow">case</span>(filter2d::mean):</div>
-<div class="line"><a name="l00474"></a><span class="lineno">  474</span>       <span class="keywordflow">case</span>(filter2d::min):</div>
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span>       <span class="keywordflow">case</span>(filter2d::max):</div>
-<div class="line"><a name="l00476"></a><span class="lineno">  476</span>       <span class="keywordflow">case</span>(filter2d::var):</div>
-<div class="line"><a name="l00477"></a><span class="lineno">  477</span>       <span class="keywordflow">case</span>(filter2d::stdev):</div>
-<div class="line"><a name="l00478"></a><span class="lineno">  478</span>       <span class="keywordflow">case</span>(filter2d::nvalid):</div>
-<div class="line"><a name="l00479"></a><span class="lineno">  479</span>       <span class="keywordflow">case</span>(filter2d::median):</div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span>       <span class="keywordflow">case</span>(filter2d::percentile):</div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span>       <span class="keywordflow">case</span>(filter2d::proportion):</div>
-<div class="line"><a name="l00482"></a><span class="lineno">  482</span>     <span class="comment">//implemented in spectral/temporal/spatial domain and nband 1 if dimZ==1</span></div>
-<div class="line"><a name="l00483"></a><span class="lineno">  483</span>     <span class="keywordflow">if</span>(dimZ_opt.size()==1)</div>
-<div class="line"><a name="l00484"></a><span class="lineno">  484</span>       <span class="keywordflow">if</span>(dimZ_opt[0]==1)</div>
-<div class="line"><a name="l00485"></a><span class="lineno">  485</span>         nband=1;</div>
-<div class="line"><a name="l00486"></a><span class="lineno">  486</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00487"></a><span class="lineno">  487</span>       nband=input.nrOfBand();</div>
-<div class="line"><a name="l00488"></a><span class="lineno">  488</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00489"></a><span class="lineno">  489</span>       <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span>     cerr << <span class="stringliteral">"filter not implemented"</span> << endl;</div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span>     exit(1);</div>
-<div class="line"><a name="l00492"></a><span class="lineno">  492</span>     <span class="comment">// if(dimZ_opt.size())</span></div>
-<div class="line"><a name="l00493"></a><span class="lineno">  493</span>     <span class="comment">//   nband=dimZ_opt[0];</span></div>
-<div class="line"><a name="l00494"></a><span class="lineno">  494</span>     <span class="comment">// else</span></div>
-<div class="line"><a name="l00495"></a><span class="lineno">  495</span>     <span class="comment">//   nband=input.nrOfBand();</span></div>
-<div class="line"><a name="l00496"></a><span class="lineno">  496</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00497"></a><span class="lineno">  497</span>       }</div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span>     }</div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span>     std::cout << <span class="stringliteral">"opening output image "</span> << output_opt[0] << <span class="stringliteral">" with "</span> << nband << <span class="stringliteral">" bands"</span> << std::endl;</div>
-<div class="line"><a name="l00500"></a><span class="lineno">  500</span>     output.open(output_opt[0],(input.nrOfCol()+down_opt[0]-1)/down_opt[0],(input.nrOfRow()+down_opt[0]-1)/down_opt[0],nband,theType,imageType,option_opt);</div>
-<div class="line"><a name="l00501"></a><span class="lineno">  501</span>   }</div>
-<div class="line"><a name="l00502"></a><span class="lineno">  502</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00503"></a><span class="lineno">  503</span>     cout << errorstring << endl;</div>
-<div class="line"><a name="l00504"></a><span class="lineno">  504</span>     exit(4);</div>
-<div class="line"><a name="l00505"></a><span class="lineno">  505</span>   }</div>
-<div class="line"><a name="l00506"></a><span class="lineno">  506</span>   output.setProjection(input.getProjection());</div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span>   <span class="keywordtype">double</span> gt[6];</div>
-<div class="line"><a name="l00508"></a><span class="lineno">  508</span>   input.getGeoTransform(gt);</div>
-<div class="line"><a name="l00509"></a><span class="lineno">  509</span>   gt[1]*=down_opt[0];<span class="comment">//dx</span></div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span>   gt[5]*=down_opt[0];<span class="comment">//dy</span></div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span>   output.setGeoTransform(gt);</div>
-<div class="line"><a name="l00512"></a><span class="lineno">  512</span>   </div>
-<div class="line"><a name="l00513"></a><span class="lineno">  513</span>   <span class="keywordflow">if</span>(colorTable_opt.size()){</div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span>     <span class="keywordflow">if</span>(colorTable_opt[0]!=<span class="stringliteral">"none"</span>){</div>
-<div class="line"><a name="l00515"></a><span class="lineno">  515</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00516"></a><span class="lineno">  516</span>     cout << <span class="stringliteral">"set colortable "</span> << colorTable_opt[0] << endl;</div>
-<div class="line"><a name="l00517"></a><span class="lineno">  517</span>       assert(output.getDataType()==GDT_Byte);</div>
-<div class="line"><a name="l00518"></a><span class="lineno">  518</span>       output.setColorTable(colorTable_opt[0]);</div>
-<div class="line"><a name="l00519"></a><span class="lineno">  519</span>     }</div>
-<div class="line"><a name="l00520"></a><span class="lineno">  520</span>   }</div>
-<div class="line"><a name="l00521"></a><span class="lineno">  521</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(input.getColorTable()!=NULL)</div>
-<div class="line"><a name="l00522"></a><span class="lineno">  522</span>     output.setColorTable(input.getColorTable());</div>
-<div class="line"><a name="l00523"></a><span class="lineno">  523</span>   </div>
-<div class="line"><a name="l00524"></a><span class="lineno">  524</span>   <span class="keywordflow">if</span>(nodata_opt.size()){</div>
-<div class="line"><a name="l00525"></a><span class="lineno">  525</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<output.nrOfBand();++iband)</div>
-<div class="line"><a name="l00526"></a><span class="lineno">  526</span>     output.GDALSetNoDataValue(nodata_opt[0],iband);</div>
-<div class="line"><a name="l00527"></a><span class="lineno">  527</span>   }</div>
-<div class="line"><a name="l00528"></a><span class="lineno">  528</span> </div>
-<div class="line"><a name="l00529"></a><span class="lineno">  529</span>   <a class="code" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a> filter2d;</div>
-<div class="line"><a name="l00530"></a><span class="lineno">  530</span>   <a class="code" href="classfilter_1_1Filter.html">filter::Filter</a> filter1d;</div>
-<div class="line"><a name="l00531"></a><span class="lineno">  531</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00532"></a><span class="lineno">  532</span>     cout << <span class="stringliteral">"Set padding to "</span> << padding_opt[0] << endl;</div>
-<div class="line"><a name="l00533"></a><span class="lineno">  533</span>   filter1d.setPadding(padding_opt[0]);</div>
-<div class="line"><a name="l00534"></a><span class="lineno">  534</span>   <span class="keywordflow">if</span>(class_opt.size()){</div>
-<div class="line"><a name="l00535"></a><span class="lineno">  535</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00536"></a><span class="lineno">  536</span>       std::cout<< <span class="stringliteral">"class values: "</span>;</div>
-<div class="line"><a name="l00537"></a><span class="lineno">  537</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<class_opt.size();++iclass){</div>
-<div class="line"><a name="l00538"></a><span class="lineno">  538</span>       <span class="keywordflow">if</span>(!dimZ_opt.size())</div>
-<div class="line"><a name="l00539"></a><span class="lineno">  539</span>         filter2d.pushClass(class_opt[iclass]);</div>
-<div class="line"><a name="l00540"></a><span class="lineno">  540</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00541"></a><span class="lineno">  541</span>         filter1d.pushClass(class_opt[iclass]);</div>
-<div class="line"><a name="l00542"></a><span class="lineno">  542</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00543"></a><span class="lineno">  543</span>         std::cout<< class_opt[iclass] << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00544"></a><span class="lineno">  544</span>     }</div>
-<div class="line"><a name="l00545"></a><span class="lineno">  545</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00546"></a><span class="lineno">  546</span>       std::cout<< std::endl;</div>
-<div class="line"><a name="l00547"></a><span class="lineno">  547</span>   }</div>
-<div class="line"><a name="l00548"></a><span class="lineno">  548</span> </div>
-<div class="line"><a name="l00549"></a><span class="lineno">  549</span>   <span class="keywordflow">if</span>(nodata_opt.size()){</div>
-<div class="line"><a name="l00550"></a><span class="lineno">  550</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00551"></a><span class="lineno">  551</span>       std::cout<< <span class="stringliteral">"mask values: "</span>;</div>
-<div class="line"><a name="l00552"></a><span class="lineno">  552</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> imask=0;imask<nodata_opt.size();++imask){</div>
-<div class="line"><a name="l00553"></a><span class="lineno">  553</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00554"></a><span class="lineno">  554</span>         std::cout<< nodata_opt[imask] << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00555"></a><span class="lineno">  555</span>       filter1d.pushNoDataValue(nodata_opt[imask]);</div>
-<div class="line"><a name="l00556"></a><span class="lineno">  556</span>       filter2d.pushNoDataValue(nodata_opt[imask]);</div>
-<div class="line"><a name="l00557"></a><span class="lineno">  557</span>     }</div>
-<div class="line"><a name="l00558"></a><span class="lineno">  558</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00559"></a><span class="lineno">  559</span>       std::cout<< std::endl;</div>
-<div class="line"><a name="l00560"></a><span class="lineno">  560</span>   }</div>
-<div class="line"><a name="l00561"></a><span class="lineno">  561</span>   <span class="keywordflow">if</span>(tap_opt.size()){</div>
-<div class="line"><a name="l00562"></a><span class="lineno">  562</span>     ifstream tapfile(tap_opt[0].c_str());</div>
-<div class="line"><a name="l00563"></a><span class="lineno">  563</span>     assert(tapfile);</div>
-<div class="line"><a name="l00564"></a><span class="lineno">  564</span>     <a class="code" href="classVector2d.html">Vector2d<double></a> taps(dimY_opt[0],dimX_opt[0]);</div>
-<div class="line"><a name="l00565"></a><span class="lineno">  565</span> </div>
-<div class="line"><a name="l00566"></a><span class="lineno">  566</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=0;j<dimY_opt[0];++j){</div>
-<div class="line"><a name="l00567"></a><span class="lineno">  567</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<dimX_opt[0];++i){</div>
-<div class="line"><a name="l00568"></a><span class="lineno">  568</span>         tapfile >> taps[j][i];</div>
-<div class="line"><a name="l00569"></a><span class="lineno">  569</span>       }</div>
-<div class="line"><a name="l00570"></a><span class="lineno">  570</span>     }</div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span>     <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00572"></a><span class="lineno">  572</span>       std::cout << <span class="stringliteral">"taps: "</span>;</div>
-<div class="line"><a name="l00573"></a><span class="lineno">  573</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=0;j<dimY_opt[0];++j){</div>
-<div class="line"><a name="l00574"></a><span class="lineno">  574</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<dimX_opt[0];++i){</div>
-<div class="line"><a name="l00575"></a><span class="lineno">  575</span>           std::cout<< taps[j][i] << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00576"></a><span class="lineno">  576</span>         }</div>
-<div class="line"><a name="l00577"></a><span class="lineno">  577</span>         std::cout<< std::endl;</div>
-<div class="line"><a name="l00578"></a><span class="lineno">  578</span>       }</div>
-<div class="line"><a name="l00579"></a><span class="lineno">  579</span>     }</div>
-<div class="line"><a name="l00580"></a><span class="lineno">  580</span>     filter2d.setTaps(taps);</div>
-<div class="line"><a name="l00581"></a><span class="lineno">  581</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00582"></a><span class="lineno">  582</span>       filter2d.filter(input,output);</div>
-<div class="line"><a name="l00583"></a><span class="lineno">  583</span>     }</div>
-<div class="line"><a name="l00584"></a><span class="lineno">  584</span>     <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00585"></a><span class="lineno">  585</span>       cerr << errorstring << endl;</div>
-<div class="line"><a name="l00586"></a><span class="lineno">  586</span>     }</div>
-<div class="line"><a name="l00587"></a><span class="lineno">  587</span>     tapfile.close();</div>
-<div class="line"><a name="l00588"></a><span class="lineno">  588</span>   }</div>
-<div class="line"><a name="l00589"></a><span class="lineno">  589</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(tapz_opt.size()){</div>
-<div class="line"><a name="l00590"></a><span class="lineno">  590</span>     <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00591"></a><span class="lineno">  591</span>       std::cout << <span class="stringliteral">"taps: "</span>;</div>
-<div class="line"><a name="l00592"></a><span class="lineno">  592</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> itap=0;itap<tapz_opt.size();++itap)</div>
-<div class="line"><a name="l00593"></a><span class="lineno">  593</span>     std::cout<< tapz_opt[itap] << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00594"></a><span class="lineno">  594</span>       std::cout<< std::endl;</div>
-<div class="line"><a name="l00595"></a><span class="lineno">  595</span>     }</div>
-<div class="line"><a name="l00596"></a><span class="lineno">  596</span>     filter1d.setTaps(tapz_opt);</div>
-<div class="line"><a name="l00597"></a><span class="lineno">  597</span>     filter1d.filter(input,output);</div>
-<div class="line"><a name="l00598"></a><span class="lineno">  598</span>   }</div>
-<div class="line"><a name="l00599"></a><span class="lineno">  599</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(fwhm_opt.size()){</div>
-<div class="line"><a name="l00600"></a><span class="lineno">  600</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00601"></a><span class="lineno">  601</span>       std::cout << <span class="stringliteral">"spectral filtering to "</span> << fwhm_opt.size() << <span class="stringliteral">" bands with provided fwhm "</span> << std::endl;</div>
-<div class="line"><a name="l00602"></a><span class="lineno">  602</span>     assert(wavelengthOut_opt.size()==fwhm_opt.size());</div>
-<div class="line"><a name="l00603"></a><span class="lineno">  603</span>     assert(wavelengthIn_opt.size());</div>
-<div class="line"><a name="l00604"></a><span class="lineno">  604</span> </div>
-<div class="line"><a name="l00605"></a><span class="lineno">  605</span>     <a class="code" href="classVector2d.html">Vector2d<double></a> lineInput(input.nrOfBand(),input.nrOfCol());</div>
-<div class="line"><a name="l00606"></a><span class="lineno">  606</span>     <a class="code" href="classVector2d.html">Vector2d<double></a> lineOutput(wavelengthOut_opt.size(),input.nrOfCol());</div>
-<div class="line"><a name="l00607"></a><span class="lineno">  607</span>     <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00608"></a><span class="lineno">  608</span>     <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00609"></a><span class="lineno">  609</span>     GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00610"></a><span class="lineno">  610</span>     <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l00611"></a><span class="lineno">  611</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00612"></a><span class="lineno">  612</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y=0;y<input.nrOfRow();++y){</div>
-<div class="line"><a name="l00613"></a><span class="lineno">  613</span>       <span class="keywordflow">if</span>((y+1+down_opt[0]/2)%down_opt[0])</div>
-<div class="line"><a name="l00614"></a><span class="lineno">  614</span>         <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00615"></a><span class="lineno">  615</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input.nrOfBand();++iband)</div>
-<div class="line"><a name="l00616"></a><span class="lineno">  616</span>         input.readData(lineInput[iband],GDT_Float64,y,iband);</div>
-<div class="line"><a name="l00617"></a><span class="lineno">  617</span>       filter1d.applyFwhm<<span class="keywordtype">double</span>>(wavelengthIn_opt,lineInput,wavelengthOut_opt,fwhm_opt, interpolationType_opt[0], lineOutput, down_opt[0], verbose_opt[0]);</div>
-<div class="line"><a name="l00618"></a><span class="lineno">  618</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<output.nrOfBand();++iband){</div>
-<div class="line"><a name="l00619"></a><span class="lineno">  619</span>         <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00620"></a><span class="lineno">  620</span>           output.writeData(lineOutput[iband],GDT_Float64,y/down_opt[0],iband);</div>
-<div class="line"><a name="l00621"></a><span class="lineno">  621</span>         }</div>
-<div class="line"><a name="l00622"></a><span class="lineno">  622</span>         <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00623"></a><span class="lineno">  623</span>           cerr << errorstring << <span class="stringliteral">"in band "</span> << iband << <span class="stringliteral">", line "</span> << y << endl;</div>
-<div class="line"><a name="l00624"></a><span class="lineno">  624</span>         }</div>
-<div class="line"><a name="l00625"></a><span class="lineno">  625</span>       }</div>
-<div class="line"><a name="l00626"></a><span class="lineno">  626</span>       progress=(1.0+y)/output.nrOfRow();</div>
-<div class="line"><a name="l00627"></a><span class="lineno">  627</span>       pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00628"></a><span class="lineno">  628</span>     }</div>
-<div class="line"><a name="l00629"></a><span class="lineno">  629</span>   }</div>
-<div class="line"><a name="l00630"></a><span class="lineno">  630</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(srf_opt.size()){</div>
-<div class="line"><a name="l00631"></a><span class="lineno">  631</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00632"></a><span class="lineno">  632</span>       std::cout << <span class="stringliteral">"spectral filtering to "</span> << srf_opt.size() << <span class="stringliteral">" bands with provided SRF "</span> << std::endl;</div>
-<div class="line"><a name="l00633"></a><span class="lineno">  633</span>     assert(wavelengthIn_opt.size());</div>
-<div class="line"><a name="l00634"></a><span class="lineno">  634</span>     vector< Vector2d<double> > srf(srf_opt.size());<span class="comment">//[0] srf_nr, [1]: wavelength, [2]: response</span></div>
-<div class="line"><a name="l00635"></a><span class="lineno">  635</span>     ifstream srfFile;</div>
-<div class="line"><a name="l00636"></a><span class="lineno">  636</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isrf=0;isrf<srf_opt.size();++isrf){</div>
-<div class="line"><a name="l00637"></a><span class="lineno">  637</span>       srf[isrf].resize(2);</div>
-<div class="line"><a name="l00638"></a><span class="lineno">  638</span>       srfFile.open(srf_opt[isrf].c_str());</div>
-<div class="line"><a name="l00639"></a><span class="lineno">  639</span>       <span class="keywordtype">double</span> v;</div>
-<div class="line"><a name="l00640"></a><span class="lineno">  640</span>       <span class="comment">//add 0 to make sure srf is 0 at boundaries after interpolation step</span></div>
-<div class="line"><a name="l00641"></a><span class="lineno">  641</span>       srf[isrf][0].push_back(0);</div>
-<div class="line"><a name="l00642"></a><span class="lineno">  642</span>       srf[isrf][1].push_back(0);</div>
-<div class="line"><a name="l00643"></a><span class="lineno">  643</span>       srf[isrf][0].push_back(1);</div>
-<div class="line"><a name="l00644"></a><span class="lineno">  644</span>       srf[isrf][1].push_back(0);</div>
-<div class="line"><a name="l00645"></a><span class="lineno">  645</span>       <span class="keywordflow">while</span>(srfFile >> v){</div>
-<div class="line"><a name="l00646"></a><span class="lineno">  646</span>         srf[isrf][0].push_back(v);</div>
-<div class="line"><a name="l00647"></a><span class="lineno">  647</span>         srfFile >> v;</div>
-<div class="line"><a name="l00648"></a><span class="lineno">  648</span>         srf[isrf][1].push_back(v);</div>
-<div class="line"><a name="l00649"></a><span class="lineno">  649</span>       }</div>
-<div class="line"><a name="l00650"></a><span class="lineno">  650</span>       srfFile.close();</div>
-<div class="line"><a name="l00651"></a><span class="lineno">  651</span>       <span class="comment">//add 0 to make sure srf[isrf] is 0 at boundaries after interpolation step</span></div>
-<div class="line"><a name="l00652"></a><span class="lineno">  652</span>       srf[isrf][0].push_back(srf[isrf][0].back()+1);</div>
-<div class="line"><a name="l00653"></a><span class="lineno">  653</span>       srf[isrf][1].push_back(0);    </div>
-<div class="line"><a name="l00654"></a><span class="lineno">  654</span>       srf[isrf][0].push_back(srf[isrf][0].back()+1);</div>
-<div class="line"><a name="l00655"></a><span class="lineno">  655</span>       srf[isrf][1].push_back(0);</div>
-<div class="line"><a name="l00656"></a><span class="lineno">  656</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00657"></a><span class="lineno">  657</span>         cout << <span class="stringliteral">"srf file details: "</span> << srf[isrf][0].size() << <span class="stringliteral">" wavelengths defined"</span> << endl;    </div>
-<div class="line"><a name="l00658"></a><span class="lineno">  658</span>     }</div>
-<div class="line"><a name="l00659"></a><span class="lineno">  659</span>     assert(output.nrOfBand()==srf.size());</div>
-<div class="line"><a name="l00660"></a><span class="lineno">  660</span>     <span class="keywordtype">double</span> centreWavelength=0;</div>
-<div class="line"><a name="l00661"></a><span class="lineno">  661</span>     <a class="code" href="classVector2d.html">Vector2d<double></a> lineInput(input.nrOfBand(),input.nrOfCol());</div>
-<div class="line"><a name="l00662"></a><span class="lineno">  662</span>     <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00663"></a><span class="lineno">  663</span>     <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00664"></a><span class="lineno">  664</span>     GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00665"></a><span class="lineno">  665</span>     <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l00666"></a><span class="lineno">  666</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00667"></a><span class="lineno">  667</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> y=0;y<input.nrOfRow();++y){</div>
-<div class="line"><a name="l00668"></a><span class="lineno">  668</span>       <span class="keywordflow">if</span>((y+1+down_opt[0]/2)%down_opt[0])</div>
-<div class="line"><a name="l00669"></a><span class="lineno">  669</span>         <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00670"></a><span class="lineno">  670</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<input.nrOfBand();++iband)</div>
-<div class="line"><a name="l00671"></a><span class="lineno">  671</span>         input.readData(lineInput[iband],GDT_Float64,y,iband);</div>
-<div class="line"><a name="l00672"></a><span class="lineno">  672</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isrf=0;isrf<srf.size();++isrf){</div>
-<div class="line"><a name="l00673"></a><span class="lineno">  673</span>         vector<double> lineOutput(output.nrOfCol());</div>
-<div class="line"><a name="l00674"></a><span class="lineno">  674</span>         <span class="keywordtype">double</span> delta=1.0;</div>
-<div class="line"><a name="l00675"></a><span class="lineno">  675</span>         <span class="keywordtype">bool</span> normalize=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00676"></a><span class="lineno">  676</span>     centreWavelength=filter1d.applySrf<<span class="keywordtype">double</span>>(wavelengthIn_opt,lineInput,srf[isrf], interpolationType_opt[0], lineOutput, delta, normalize);</div>
-<div class="line"><a name="l00677"></a><span class="lineno">  677</span>         <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00678"></a><span class="lineno">  678</span>           std::cout << <span class="stringliteral">"centre wavelength srf "</span> << isrf << <span class="stringliteral">": "</span> << centreWavelength << std::endl;</div>
-<div class="line"><a name="l00679"></a><span class="lineno">  679</span>         <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00680"></a><span class="lineno">  680</span>           output.writeData(lineOutput,GDT_Float64,y/down_opt[0],isrf);</div>
-<div class="line"><a name="l00681"></a><span class="lineno">  681</span>         }</div>
-<div class="line"><a name="l00682"></a><span class="lineno">  682</span>         <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00683"></a><span class="lineno">  683</span>           cerr << errorstring << <span class="stringliteral">"in srf "</span> << srf_opt[isrf] << <span class="stringliteral">", line "</span> << y << endl;</div>
-<div class="line"><a name="l00684"></a><span class="lineno">  684</span>         }</div>
-<div class="line"><a name="l00685"></a><span class="lineno">  685</span> </div>
-<div class="line"><a name="l00686"></a><span class="lineno">  686</span>       }</div>
-<div class="line"><a name="l00687"></a><span class="lineno">  687</span>       progress=(1.0+y)/output.nrOfRow();</div>
-<div class="line"><a name="l00688"></a><span class="lineno">  688</span>       pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00689"></a><span class="lineno">  689</span>     }</div>
-<div class="line"><a name="l00690"></a><span class="lineno">  690</span> </div>
-<div class="line"><a name="l00691"></a><span class="lineno">  691</span>   }</div>
-<div class="line"><a name="l00692"></a><span class="lineno">  692</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00693"></a><span class="lineno">  693</span>     <span class="keywordflow">switch</span>(filter2d::Filter2d::getFilterType(method_opt[0])){</div>
-<div class="line"><a name="l00694"></a><span class="lineno">  694</span>     <span class="keywordflow">case</span>(filter2d::dilate):</div>
-<div class="line"><a name="l00695"></a><span class="lineno">  695</span>       <span class="keywordflow">if</span>(down_opt[0]!=1){</div>
-<div class="line"><a name="l00696"></a><span class="lineno">  696</span>     std::cerr << <span class="stringliteral">"Error: down option not supported for morphological operator"</span> << std::endl;</div>
-<div class="line"><a name="l00697"></a><span class="lineno">  697</span>     exit(1);</div>
-<div class="line"><a name="l00698"></a><span class="lineno">  698</span>       }</div>
-<div class="line"><a name="l00699"></a><span class="lineno">  699</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00700"></a><span class="lineno">  700</span>     <span class="keywordflow">if</span>(dimZ_opt.size()){</div>
-<div class="line"><a name="l00701"></a><span class="lineno">  701</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00702"></a><span class="lineno">  702</span>           std::cout<< <span class="stringliteral">"1-D filtering: dilate"</span> << std::endl;</div>
-<div class="line"><a name="l00703"></a><span class="lineno">  703</span>       filter1d.morphology(input,output,<span class="stringliteral">"dilate"</span>,dimZ_opt[0],verbose_opt[0]);</div>
-<div class="line"><a name="l00704"></a><span class="lineno">  704</span>     }</div>
-<div class="line"><a name="l00705"></a><span class="lineno">  705</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00706"></a><span class="lineno">  706</span>       filter2d.morphology(input,output,<span class="stringliteral">"dilate"</span>,dimX_opt[0],dimY_opt[0],angle_opt,disc_opt[0]);</div>
-<div class="line"><a name="l00707"></a><span class="lineno">  707</span>       }</div>
-<div class="line"><a name="l00708"></a><span class="lineno">  708</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00709"></a><span class="lineno">  709</span>     cerr << errorstring << endl;</div>
-<div class="line"><a name="l00710"></a><span class="lineno">  710</span>       }</div>
-<div class="line"><a name="l00711"></a><span class="lineno">  711</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00712"></a><span class="lineno">  712</span>     <span class="keywordflow">case</span>(filter2d::erode):</div>
-<div class="line"><a name="l00713"></a><span class="lineno">  713</span>       <span class="keywordflow">if</span>(down_opt[0]!=1){</div>
-<div class="line"><a name="l00714"></a><span class="lineno">  714</span>     std::cerr << <span class="stringliteral">"Error: down option not supported for morphological operator"</span> << std::endl;</div>
-<div class="line"><a name="l00715"></a><span class="lineno">  715</span>     exit(1);</div>
-<div class="line"><a name="l00716"></a><span class="lineno">  716</span>       }</div>
-<div class="line"><a name="l00717"></a><span class="lineno">  717</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00718"></a><span class="lineno">  718</span>     <span class="keywordflow">if</span>(dimZ_opt.size()>0){</div>
-<div class="line"><a name="l00719"></a><span class="lineno">  719</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00720"></a><span class="lineno">  720</span>         std::cout<< <span class="stringliteral">"1-D filtering: dilate"</span> << std::endl;</div>
-<div class="line"><a name="l00721"></a><span class="lineno">  721</span>       filter1d.morphology(input,output,<span class="stringliteral">"erode"</span>,dimZ_opt[0]);</div>
-<div class="line"><a name="l00722"></a><span class="lineno">  722</span>     }</div>
-<div class="line"><a name="l00723"></a><span class="lineno">  723</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00724"></a><span class="lineno">  724</span>       filter2d.morphology(input,output,<span class="stringliteral">"erode"</span>,dimX_opt[0],dimY_opt[0],angle_opt,disc_opt[0]);</div>
-<div class="line"><a name="l00725"></a><span class="lineno">  725</span>     }</div>
-<div class="line"><a name="l00726"></a><span class="lineno">  726</span>       }</div>
-<div class="line"><a name="l00727"></a><span class="lineno">  727</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00728"></a><span class="lineno">  728</span>     cerr << errorstring << endl;</div>
-<div class="line"><a name="l00729"></a><span class="lineno">  729</span>       }</div>
-<div class="line"><a name="l00730"></a><span class="lineno">  730</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00731"></a><span class="lineno">  731</span>     <span class="keywordflow">case</span>(filter2d::close):{<span class="comment">//closing</span></div>
-<div class="line"><a name="l00732"></a><span class="lineno">  732</span>       <span class="keywordflow">if</span>(down_opt[0]!=1){</div>
-<div class="line"><a name="l00733"></a><span class="lineno">  733</span>     std::cerr << <span class="stringliteral">"Error: down option not supported for morphological operator"</span> << std::endl;</div>
-<div class="line"><a name="l00734"></a><span class="lineno">  734</span>     exit(1);</div>
-<div class="line"><a name="l00735"></a><span class="lineno">  735</span>       }</div>
-<div class="line"><a name="l00736"></a><span class="lineno">  736</span> </div>
-<div class="line"><a name="l00737"></a><span class="lineno">  737</span>       <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> tmpout;</div>
-<div class="line"><a name="l00738"></a><span class="lineno">  738</span>       tmpout.open(<span class="stringliteral">"/vsimem/dilation.tif"</span>,input.nrOfCol(),input.nrOfRow(),input.nrOfBand(),input.getDataType(),input.getImageType());</div>
-<div class="line"><a name="l00739"></a><span class="lineno">  739</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00740"></a><span class="lineno">  740</span>         <span class="keywordflow">if</span>(dimZ_opt.size()){</div>
-<div class="line"><a name="l00741"></a><span class="lineno">  741</span>           filter1d.morphology(input,tmpout,<span class="stringliteral">"dilate"</span>,dimZ_opt[0]);</div>
-<div class="line"><a name="l00742"></a><span class="lineno">  742</span>         }</div>
-<div class="line"><a name="l00743"></a><span class="lineno">  743</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00744"></a><span class="lineno">  744</span>       filter2d.morphology(input,tmpout,<span class="stringliteral">"dilate"</span>,dimX_opt[0],dimY_opt[0],angle_opt,disc_opt[0]);</div>
-<div class="line"><a name="l00745"></a><span class="lineno">  745</span>         }</div>
-<div class="line"><a name="l00746"></a><span class="lineno">  746</span>       }</div>
-<div class="line"><a name="l00747"></a><span class="lineno">  747</span>       <span class="keywordflow">catch</span>(std::string errorString){</div>
-<div class="line"><a name="l00748"></a><span class="lineno">  748</span>     std::cout<< errorString;</div>
-<div class="line"><a name="l00749"></a><span class="lineno">  749</span>     exit(1);</div>
-<div class="line"><a name="l00750"></a><span class="lineno">  750</span>       }</div>
-<div class="line"><a name="l00751"></a><span class="lineno">  751</span>       tmpout.close();</div>
-<div class="line"><a name="l00752"></a><span class="lineno">  752</span>       <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> tmpin;</div>
-<div class="line"><a name="l00753"></a><span class="lineno">  753</span>       tmpin.open(<span class="stringliteral">"/vsimem/dilation.tif"</span>);</div>
-<div class="line"><a name="l00754"></a><span class="lineno">  754</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00755"></a><span class="lineno">  755</span>     <span class="keywordflow">if</span>(dimZ_opt.size()){</div>
-<div class="line"><a name="l00756"></a><span class="lineno">  756</span>       filter1d.morphology(tmpin,output,<span class="stringliteral">"erode"</span>,dimZ_opt[0]);</div>
-<div class="line"><a name="l00757"></a><span class="lineno">  757</span>     }</div>
-<div class="line"><a name="l00758"></a><span class="lineno">  758</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00759"></a><span class="lineno">  759</span>       filter2d.morphology(tmpin,output,<span class="stringliteral">"erode"</span>,dimX_opt[0],dimY_opt[0],angle_opt,disc_opt[0]);</div>
-<div class="line"><a name="l00760"></a><span class="lineno">  760</span>     }</div>
-<div class="line"><a name="l00761"></a><span class="lineno">  761</span>       }</div>
-<div class="line"><a name="l00762"></a><span class="lineno">  762</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00763"></a><span class="lineno">  763</span>     cerr << errorstring << endl;</div>
-<div class="line"><a name="l00764"></a><span class="lineno">  764</span>       }</div>
-<div class="line"><a name="l00765"></a><span class="lineno">  765</span>       tmpin.close();</div>
-<div class="line"><a name="l00766"></a><span class="lineno">  766</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00767"></a><span class="lineno">  767</span>     }</div>
-<div class="line"><a name="l00768"></a><span class="lineno">  768</span>     <span class="keywordflow">case</span>(filter2d::open):{<span class="comment">//opening</span></div>
-<div class="line"><a name="l00769"></a><span class="lineno">  769</span>       <span class="keywordflow">if</span>(down_opt[0]!=1){</div>
-<div class="line"><a name="l00770"></a><span class="lineno">  770</span>     std::cerr << <span class="stringliteral">"Error: down option not supported for morphological operator"</span> << std::endl;</div>
-<div class="line"><a name="l00771"></a><span class="lineno">  771</span>     exit(1);</div>
-<div class="line"><a name="l00772"></a><span class="lineno">  772</span>       }</div>
-<div class="line"><a name="l00773"></a><span class="lineno">  773</span>       <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> tmpout;</div>
-<div class="line"><a name="l00774"></a><span class="lineno">  774</span>       tmpout.open(<span class="stringliteral">"/vsimem/erosion.tif"</span>,input.nrOfCol(),input.nrOfRow(),input.nrOfBand(),input.getDataType(),input.getImageType());</div>
-<div class="line"><a name="l00775"></a><span class="lineno">  775</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00776"></a><span class="lineno">  776</span>     <span class="keywordflow">if</span>(dimZ_opt.size()){</div>
-<div class="line"><a name="l00777"></a><span class="lineno">  777</span>       filter1d.morphology(input,tmpout,<span class="stringliteral">"erode"</span>,dimZ_opt[0]);</div>
-<div class="line"><a name="l00778"></a><span class="lineno">  778</span>     }</div>
-<div class="line"><a name="l00779"></a><span class="lineno">  779</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00780"></a><span class="lineno">  780</span>       filter2d.morphology(input,tmpout,<span class="stringliteral">"erode"</span>,dimX_opt[0],dimY_opt[0],angle_opt,disc_opt[0]);</div>
-<div class="line"><a name="l00781"></a><span class="lineno">  781</span>     }</div>
-<div class="line"><a name="l00782"></a><span class="lineno">  782</span>       }</div>
-<div class="line"><a name="l00783"></a><span class="lineno">  783</span>       <span class="keywordflow">catch</span>(std::string errorString){</div>
-<div class="line"><a name="l00784"></a><span class="lineno">  784</span>     std::cout<< errorString;</div>
-<div class="line"><a name="l00785"></a><span class="lineno">  785</span>     exit(1);</div>
-<div class="line"><a name="l00786"></a><span class="lineno">  786</span>       }</div>
-<div class="line"><a name="l00787"></a><span class="lineno">  787</span>       tmpout.close();</div>
-<div class="line"><a name="l00788"></a><span class="lineno">  788</span>       <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> tmpin;</div>
-<div class="line"><a name="l00789"></a><span class="lineno">  789</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00790"></a><span class="lineno">  790</span>     tmpin.open(<span class="stringliteral">"/vsimem/erosion.tif"</span>);</div>
-<div class="line"><a name="l00791"></a><span class="lineno">  791</span>     <span class="keywordflow">if</span>(dimZ_opt.size()){</div>
-<div class="line"><a name="l00792"></a><span class="lineno">  792</span>       filter1d.morphology(tmpin,output,<span class="stringliteral">"dilate"</span>,dimZ_opt[0]);</div>
-<div class="line"><a name="l00793"></a><span class="lineno">  793</span>     }</div>
-<div class="line"><a name="l00794"></a><span class="lineno">  794</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00795"></a><span class="lineno">  795</span>       filter2d.morphology(tmpin,output,<span class="stringliteral">"dilate"</span>,dimX_opt[0],dimY_opt[0],angle_opt,disc_opt[0]);</div>
-<div class="line"><a name="l00796"></a><span class="lineno">  796</span>     }</div>
-<div class="line"><a name="l00797"></a><span class="lineno">  797</span>     tmpin.close();</div>
-<div class="line"><a name="l00798"></a><span class="lineno">  798</span>     tmpout.close();</div>
-<div class="line"><a name="l00799"></a><span class="lineno">  799</span>       }</div>
-<div class="line"><a name="l00800"></a><span class="lineno">  800</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00801"></a><span class="lineno">  801</span>     cerr << errorstring << endl;</div>
-<div class="line"><a name="l00802"></a><span class="lineno">  802</span>       }</div>
-<div class="line"><a name="l00803"></a><span class="lineno">  803</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00804"></a><span class="lineno">  804</span>     }</div>
-<div class="line"><a name="l00805"></a><span class="lineno">  805</span>     <span class="keywordflow">case</span>(filter2d::homog):{<span class="comment">//spatially homogeneous</span></div>
-<div class="line"><a name="l00806"></a><span class="lineno">  806</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00807"></a><span class="lineno">  807</span>     filter2d.doit(input,output,<span class="stringliteral">"homog"</span>,dimX_opt[0],dimY_opt[0],down_opt[0],disc_opt[0]);</div>
-<div class="line"><a name="l00808"></a><span class="lineno">  808</span>       }</div>
-<div class="line"><a name="l00809"></a><span class="lineno">  809</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00810"></a><span class="lineno">  810</span>     cerr << errorstring << endl;</div>
-<div class="line"><a name="l00811"></a><span class="lineno">  811</span>       }</div>
-<div class="line"><a name="l00812"></a><span class="lineno">  812</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00813"></a><span class="lineno">  813</span>     }</div>
-<div class="line"><a name="l00814"></a><span class="lineno">  814</span>     <span class="keywordflow">case</span>(filter2d::heterog):{<span class="comment">//spatially heterogeneous</span></div>
-<div class="line"><a name="l00815"></a><span class="lineno">  815</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00816"></a><span class="lineno">  816</span>     filter2d.doit(input,output,<span class="stringliteral">"heterog"</span>,dimX_opt[0],dimY_opt[0],down_opt[0],disc_opt[0]);</div>
-<div class="line"><a name="l00817"></a><span class="lineno">  817</span>       }</div>
-<div class="line"><a name="l00818"></a><span class="lineno">  818</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00819"></a><span class="lineno">  819</span>     cerr << errorstring << endl;</div>
-<div class="line"><a name="l00820"></a><span class="lineno">  820</span>       }</div>
-<div class="line"><a name="l00821"></a><span class="lineno">  821</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00822"></a><span class="lineno">  822</span>     }</div>
-<div class="line"><a name="l00823"></a><span class="lineno">  823</span>     <span class="keywordflow">case</span>(filter2d::shift):{<span class="comment">//shift</span></div>
-<div class="line"><a name="l00824"></a><span class="lineno">  824</span>       <span class="keywordflow">if</span>(down_opt[0]!=1){</div>
-<div class="line"><a name="l00825"></a><span class="lineno">  825</span>     std::cerr << <span class="stringliteral">"Error: down option not supported for shift operator"</span> << std::endl;</div>
-<div class="line"><a name="l00826"></a><span class="lineno">  826</span>     exit(1);</div>
-<div class="line"><a name="l00827"></a><span class="lineno">  827</span>       }</div>
-<div class="line"><a name="l00828"></a><span class="lineno">  828</span>       assert(input.nrOfBand());</div>
-<div class="line"><a name="l00829"></a><span class="lineno">  829</span>       assert(input.nrOfCol());</div>
-<div class="line"><a name="l00830"></a><span class="lineno">  830</span>       assert(input.nrOfRow());</div>
-<div class="line"><a name="l00831"></a><span class="lineno">  831</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00832"></a><span class="lineno">  832</span>         filter2d.shift(input,output,dimX_opt[0],dimY_opt[0],threshold_opt[0],filter2d::Filter2d::getResampleType(resample_opt[0]));</div>
-<div class="line"><a name="l00833"></a><span class="lineno">  833</span>       }</div>
-<div class="line"><a name="l00834"></a><span class="lineno">  834</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00835"></a><span class="lineno">  835</span>         cerr << errorstring << endl;</div>
-<div class="line"><a name="l00836"></a><span class="lineno">  836</span>       }</div>
-<div class="line"><a name="l00837"></a><span class="lineno">  837</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00838"></a><span class="lineno">  838</span>     }</div>
-<div class="line"><a name="l00839"></a><span class="lineno">  839</span>     <span class="comment">// case(filter2d::linearfeature):{</span></div>
-<div class="line"><a name="l00840"></a><span class="lineno">  840</span>     <span class="comment">//   if(down_opt[0]!=1){</span></div>
-<div class="line"><a name="l00841"></a><span class="lineno">  841</span>     <span class="comment">//  std::cerr << "Error: down option not supported for linear feature" << std::endl;</span></div>
-<div class="line"><a name="l00842"></a><span class="lineno">  842</span>     <span class="comment">//  exit(1);</span></div>
-<div class="line"><a name="l00843"></a><span class="lineno">  843</span>     <span class="comment">//   }</span></div>
-<div class="line"><a name="l00844"></a><span class="lineno">  844</span>     <span class="comment">//   assert(input.nrOfBand());</span></div>
-<div class="line"><a name="l00845"></a><span class="lineno">  845</span>     <span class="comment">//   assert(input.nrOfCol());</span></div>
-<div class="line"><a name="l00846"></a><span class="lineno">  846</span>     <span class="comment">//   assert(input.nrOfRow());</span></div>
-<div class="line"><a name="l00847"></a><span class="lineno">  847</span>     <span class="comment">//   float theAngle=361;</span></div>
-<div class="line"><a name="l00848"></a><span class="lineno">  848</span>     <span class="comment">//   if(angle_opt.size())</span></div>
-<div class="line"><a name="l00849"></a><span class="lineno">  849</span>     <span class="comment">//  theAngle=angle_opt[0];</span></div>
-<div class="line"><a name="l00850"></a><span class="lineno">  850</span>     <span class="comment">//   if(verbose_opt[0])</span></div>
-<div class="line"><a name="l00851"></a><span class="lineno">  851</span>     <span class="comment">//  std::cout << "using angle " << theAngle << std::endl;</span></div>
-<div class="line"><a name="l00852"></a><span class="lineno">  852</span>     <span class="comment">//   try{</span></div>
-<div class="line"><a name="l00853"></a><span class="lineno">  853</span>     <span class="comment">//  //using an angle step of 5 degrees and no maximum distance</span></div>
-<div class="line"><a name="l00854"></a><span class="lineno">  854</span>     <span class="comment">//     filter2d.linearFeature(input,output,theAngle,5,0,eps_opt[0],l1_opt[0],a1_opt[0],l2_opt[0],a2_opt[0],0,verbose_opt[0]);</span></div>
-<div class="line"><a name="l00855"></a><span class="lineno">  855</span>     <span class="comment">//   }</span></div>
-<div class="line"><a name="l00856"></a><span class="lineno">  856</span>     <span class="comment">//   catch(string errorstring){</span></div>
-<div class="line"><a name="l00857"></a><span class="lineno">  857</span>     <span class="comment">//     cerr << errorstring << endl;</span></div>
-<div class="line"><a name="l00858"></a><span class="lineno">  858</span>     <span class="comment">//   }</span></div>
-<div class="line"><a name="l00859"></a><span class="lineno">  859</span>     <span class="comment">//   break;</span></div>
-<div class="line"><a name="l00860"></a><span class="lineno">  860</span>     <span class="comment">// }</span></div>
-<div class="line"><a name="l00861"></a><span class="lineno">  861</span>     <span class="keywordflow">case</span>(filter2d::mrf):{<span class="comment">//Markov Random Field</span></div>
-<div class="line"><a name="l00862"></a><span class="lineno">  862</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00863"></a><span class="lineno">  863</span>     std::cout << <span class="stringliteral">"Markov Random Field filtering"</span> << std::endl;</div>
-<div class="line"><a name="l00864"></a><span class="lineno">  864</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00865"></a><span class="lineno">  865</span>     <span class="keywordflow">if</span>(beta_opt.size()){</div>
-<div class="line"><a name="l00866"></a><span class="lineno">  866</span>       <span class="comment">//in file: classFrom classTo</span></div>
-<div class="line"><a name="l00867"></a><span class="lineno">  867</span>       <span class="comment">//in variable: beta[classTo][classFrom]</span></div>
-<div class="line"><a name="l00868"></a><span class="lineno">  868</span>       <a class="code" href="classFileReaderAscii.html">FileReaderAscii</a> betaReader(beta_opt[0]);</div>
-<div class="line"><a name="l00869"></a><span class="lineno">  869</span>       <a class="code" href="classVector2d.html">Vector2d<double></a> beta(class_opt.size(),class_opt.size());</div>
-<div class="line"><a name="l00870"></a><span class="lineno">  870</span>       vector<int> cols(class_opt.size());</div>
-<div class="line"><a name="l00871"></a><span class="lineno">  871</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<class_opt.size();++iclass)</div>
-<div class="line"><a name="l00872"></a><span class="lineno">  872</span>         cols[iclass]=iclass;</div>
-<div class="line"><a name="l00873"></a><span class="lineno">  873</span>       betaReader.readData(beta,cols);</div>
-<div class="line"><a name="l00874"></a><span class="lineno">  874</span>       <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00875"></a><span class="lineno">  875</span>         std::cout << <span class="stringliteral">"using values for beta:"</span> << std::endl;</div>
-<div class="line"><a name="l00876"></a><span class="lineno">  876</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass1=0;iclass1<class_opt.size();++iclass1)</div>
-<div class="line"><a name="l00877"></a><span class="lineno">  877</span>           std::cout << <span class="stringliteral">"      "</span> << iclass1 << <span class="stringliteral">" ("</span> << class_opt[iclass1] << <span class="stringliteral">")"</span>;</div>
-<div class="line"><a name="l00878"></a><span class="lineno">  878</span>         std::cout << std::endl;</div>
-<div class="line"><a name="l00879"></a><span class="lineno">  879</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass1=0;iclass1<class_opt.size();++iclass1){</div>
-<div class="line"><a name="l00880"></a><span class="lineno">  880</span>           std::cout << iclass1 << <span class="stringliteral">" ("</span> << class_opt[iclass1] << <span class="stringliteral">")"</span>;</div>
-<div class="line"><a name="l00881"></a><span class="lineno">  881</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass2=0;iclass2<class_opt.size();++iclass2)</div>
-<div class="line"><a name="l00882"></a><span class="lineno">  882</span>         std::cout << <span class="stringliteral">" "</span> << beta[iclass2][iclass1] << <span class="stringliteral">" ("</span> << class_opt[iclass2] << <span class="stringliteral">")"</span>;</div>
-<div class="line"><a name="l00883"></a><span class="lineno">  883</span>           std::cout << std::endl;</div>
-<div class="line"><a name="l00884"></a><span class="lineno">  884</span>         }</div>
-<div class="line"><a name="l00885"></a><span class="lineno">  885</span>       }</div>
-<div class="line"><a name="l00886"></a><span class="lineno">  886</span>       filter2d.mrf(input, output, dimX_opt[0], dimY_opt[0], beta, <span class="keyword">true</span>, down_opt[0], verbose_opt[0]);</div>
-<div class="line"><a name="l00887"></a><span class="lineno">  887</span>     }</div>
-<div class="line"><a name="l00888"></a><span class="lineno">  888</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00889"></a><span class="lineno">  889</span>       filter2d.mrf(input, output, dimX_opt[0], dimY_opt[0], 1, <span class="keyword">true</span>, down_opt[0], verbose_opt[0]);</div>
-<div class="line"><a name="l00890"></a><span class="lineno">  890</span>       }</div>
-<div class="line"><a name="l00891"></a><span class="lineno">  891</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00892"></a><span class="lineno">  892</span>     cerr << errorstring << endl;</div>
-<div class="line"><a name="l00893"></a><span class="lineno">  893</span>       }</div>
-<div class="line"><a name="l00894"></a><span class="lineno">  894</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00895"></a><span class="lineno">  895</span>     }</div>
-<div class="line"><a name="l00896"></a><span class="lineno">  896</span>     <span class="keywordflow">case</span>(filter2d::sobelx):{<span class="comment">//Sobel edge detection in X</span></div>
-<div class="line"><a name="l00897"></a><span class="lineno">  897</span>       <span class="keywordflow">if</span>(down_opt[0]!=1){</div>
-<div class="line"><a name="l00898"></a><span class="lineno">  898</span>     std::cerr << <span class="stringliteral">"Error: down option not supported for sobel edge detection"</span> << std::endl;</div>
-<div class="line"><a name="l00899"></a><span class="lineno">  899</span>     exit(1);</div>
-<div class="line"><a name="l00900"></a><span class="lineno">  900</span>       }</div>
-<div class="line"><a name="l00901"></a><span class="lineno">  901</span>       <a class="code" href="classVector2d.html">Vector2d<double></a> theTaps(3,3);</div>
-<div class="line"><a name="l00902"></a><span class="lineno">  902</span>       theTaps[0][0]=-1.0;</div>
-<div class="line"><a name="l00903"></a><span class="lineno">  903</span>       theTaps[0][1]=0.0;</div>
-<div class="line"><a name="l00904"></a><span class="lineno">  904</span>       theTaps[0][2]=1.0;</div>
-<div class="line"><a name="l00905"></a><span class="lineno">  905</span>       theTaps[1][0]=-2.0;</div>
-<div class="line"><a name="l00906"></a><span class="lineno">  906</span>       theTaps[1][1]=0.0;</div>
-<div class="line"><a name="l00907"></a><span class="lineno">  907</span>       theTaps[1][2]=2.0;</div>
-<div class="line"><a name="l00908"></a><span class="lineno">  908</span>       theTaps[2][0]=-1.0;</div>
-<div class="line"><a name="l00909"></a><span class="lineno">  909</span>       theTaps[2][1]=0.0;</div>
-<div class="line"><a name="l00910"></a><span class="lineno">  910</span>       theTaps[2][2]=1.0;</div>
-<div class="line"><a name="l00911"></a><span class="lineno">  911</span>       filter2d.setTaps(theTaps);</div>
-<div class="line"><a name="l00912"></a><span class="lineno">  912</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00913"></a><span class="lineno">  913</span>     filter2d.filter(input,output,<span class="keyword">true</span>,<span class="keyword">true</span>);<span class="comment">//absolute and normalize</span></div>
-<div class="line"><a name="l00914"></a><span class="lineno">  914</span>       }</div>
-<div class="line"><a name="l00915"></a><span class="lineno">  915</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00916"></a><span class="lineno">  916</span>     cerr << errorstring << endl;</div>
-<div class="line"><a name="l00917"></a><span class="lineno">  917</span>       }</div>
-<div class="line"><a name="l00918"></a><span class="lineno">  918</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00919"></a><span class="lineno">  919</span>     }</div>
-<div class="line"><a name="l00920"></a><span class="lineno">  920</span>     <span class="keywordflow">case</span>(filter2d::sobely):{<span class="comment">//Sobel edge detection in Y</span></div>
-<div class="line"><a name="l00921"></a><span class="lineno">  921</span>       <span class="keywordflow">if</span>(down_opt[0]!=1){</div>
-<div class="line"><a name="l00922"></a><span class="lineno">  922</span>     std::cerr << <span class="stringliteral">"Error: down option not supported for sobel edge detection"</span> << std::endl;</div>
-<div class="line"><a name="l00923"></a><span class="lineno">  923</span>     exit(1);</div>
-<div class="line"><a name="l00924"></a><span class="lineno">  924</span>       }</div>
-<div class="line"><a name="l00925"></a><span class="lineno">  925</span>       <a class="code" href="classVector2d.html">Vector2d<double></a> theTaps(3,3);</div>
-<div class="line"><a name="l00926"></a><span class="lineno">  926</span>       theTaps[0][0]=1.0;</div>
-<div class="line"><a name="l00927"></a><span class="lineno">  927</span>       theTaps[0][1]=2.0;</div>
-<div class="line"><a name="l00928"></a><span class="lineno">  928</span>       theTaps[0][2]=1.0;</div>
-<div class="line"><a name="l00929"></a><span class="lineno">  929</span>       theTaps[1][0]=0.0;</div>
-<div class="line"><a name="l00930"></a><span class="lineno">  930</span>       theTaps[1][1]=0.0;</div>
-<div class="line"><a name="l00931"></a><span class="lineno">  931</span>       theTaps[1][2]=0.0;</div>
-<div class="line"><a name="l00932"></a><span class="lineno">  932</span>       theTaps[2][0]=-1.0;</div>
-<div class="line"><a name="l00933"></a><span class="lineno">  933</span>       theTaps[2][1]=-2.0;</div>
-<div class="line"><a name="l00934"></a><span class="lineno">  934</span>       theTaps[2][2]=-1.0;</div>
-<div class="line"><a name="l00935"></a><span class="lineno">  935</span>       filter2d.setTaps(theTaps);</div>
-<div class="line"><a name="l00936"></a><span class="lineno">  936</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00937"></a><span class="lineno">  937</span>     filter2d.filter(input,output,<span class="keyword">true</span>,<span class="keyword">true</span>);<span class="comment">//absolute and normalize</span></div>
-<div class="line"><a name="l00938"></a><span class="lineno">  938</span>       }</div>
-<div class="line"><a name="l00939"></a><span class="lineno">  939</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00940"></a><span class="lineno">  940</span>     cerr << errorstring << endl;</div>
-<div class="line"><a name="l00941"></a><span class="lineno">  941</span>       }</div>
-<div class="line"><a name="l00942"></a><span class="lineno">  942</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00943"></a><span class="lineno">  943</span>     }</div>
-<div class="line"><a name="l00944"></a><span class="lineno">  944</span>     <span class="keywordflow">case</span>(filter2d::sobelxy):{<span class="comment">//Sobel edge detection in XY</span></div>
-<div class="line"><a name="l00945"></a><span class="lineno">  945</span>       <span class="keywordflow">if</span>(down_opt[0]!=1){</div>
-<div class="line"><a name="l00946"></a><span class="lineno">  946</span>     std::cerr << <span class="stringliteral">"Error: down option not supported for sobel edge detection"</span> << std::endl;</div>
-<div class="line"><a name="l00947"></a><span class="lineno">  947</span>     exit(1);</div>
-<div class="line"><a name="l00948"></a><span class="lineno">  948</span>       }</div>
-<div class="line"><a name="l00949"></a><span class="lineno">  949</span>       <a class="code" href="classVector2d.html">Vector2d<double></a> theTaps(3,3);</div>
-<div class="line"><a name="l00950"></a><span class="lineno">  950</span>       theTaps[0][0]=0.0;</div>
-<div class="line"><a name="l00951"></a><span class="lineno">  951</span>       theTaps[0][1]=1.0;</div>
-<div class="line"><a name="l00952"></a><span class="lineno">  952</span>       theTaps[0][2]=2.0;</div>
-<div class="line"><a name="l00953"></a><span class="lineno">  953</span>       theTaps[1][0]=-1.0;</div>
-<div class="line"><a name="l00954"></a><span class="lineno">  954</span>       theTaps[1][1]=0.0;</div>
-<div class="line"><a name="l00955"></a><span class="lineno">  955</span>       theTaps[1][2]=1.0;</div>
-<div class="line"><a name="l00956"></a><span class="lineno">  956</span>       theTaps[2][0]=-2.0;</div>
-<div class="line"><a name="l00957"></a><span class="lineno">  957</span>       theTaps[2][1]=-1.0;</div>
-<div class="line"><a name="l00958"></a><span class="lineno">  958</span>       theTaps[2][2]=0.0;</div>
-<div class="line"><a name="l00959"></a><span class="lineno">  959</span>       filter2d.setTaps(theTaps);</div>
-<div class="line"><a name="l00960"></a><span class="lineno">  960</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00961"></a><span class="lineno">  961</span>     filter2d.filter(input,output,<span class="keyword">true</span>,<span class="keyword">true</span>);<span class="comment">//absolute and normalize</span></div>
-<div class="line"><a name="l00962"></a><span class="lineno">  962</span>       }</div>
-<div class="line"><a name="l00963"></a><span class="lineno">  963</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00964"></a><span class="lineno">  964</span>     cerr << errorstring << endl;</div>
-<div class="line"><a name="l00965"></a><span class="lineno">  965</span>       }</div>
-<div class="line"><a name="l00966"></a><span class="lineno">  966</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00967"></a><span class="lineno">  967</span>     }</div>
-<div class="line"><a name="l00968"></a><span class="lineno">  968</span>     <span class="keywordflow">case</span>(filter2d::sobelyx):{<span class="comment">//Sobel edge detection in XY</span></div>
-<div class="line"><a name="l00969"></a><span class="lineno">  969</span>       <span class="keywordflow">if</span>(down_opt[0]!=1){</div>
-<div class="line"><a name="l00970"></a><span class="lineno">  970</span>     std::cerr << <span class="stringliteral">"Error: down option not supported for sobel edge detection"</span> << std::endl;</div>
-<div class="line"><a name="l00971"></a><span class="lineno">  971</span>     exit(1);</div>
-<div class="line"><a name="l00972"></a><span class="lineno">  972</span>       }</div>
-<div class="line"><a name="l00973"></a><span class="lineno">  973</span>       <a class="code" href="classVector2d.html">Vector2d<double></a> theTaps(3,3);</div>
-<div class="line"><a name="l00974"></a><span class="lineno">  974</span>       theTaps[0][0]=2.0;</div>
-<div class="line"><a name="l00975"></a><span class="lineno">  975</span>       theTaps[0][1]=1.0;</div>
-<div class="line"><a name="l00976"></a><span class="lineno">  976</span>       theTaps[0][2]=0.0;</div>
-<div class="line"><a name="l00977"></a><span class="lineno">  977</span>       theTaps[1][0]=1.0;</div>
-<div class="line"><a name="l00978"></a><span class="lineno">  978</span>       theTaps[1][1]=0.0;</div>
-<div class="line"><a name="l00979"></a><span class="lineno">  979</span>       theTaps[1][2]=-1.0;</div>
-<div class="line"><a name="l00980"></a><span class="lineno">  980</span>       theTaps[2][0]=0.0;</div>
-<div class="line"><a name="l00981"></a><span class="lineno">  981</span>       theTaps[2][1]=-1.0;</div>
-<div class="line"><a name="l00982"></a><span class="lineno">  982</span>       theTaps[2][2]=-2.0;</div>
-<div class="line"><a name="l00983"></a><span class="lineno">  983</span>       filter2d.setTaps(theTaps);</div>
-<div class="line"><a name="l00984"></a><span class="lineno">  984</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00985"></a><span class="lineno">  985</span>     filter2d.filter(input,output,<span class="keyword">true</span>,<span class="keyword">true</span>);<span class="comment">//absolute and normalize</span></div>
-<div class="line"><a name="l00986"></a><span class="lineno">  986</span>       }</div>
-<div class="line"><a name="l00987"></a><span class="lineno">  987</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00988"></a><span class="lineno">  988</span>     cerr << errorstring << endl;</div>
-<div class="line"><a name="l00989"></a><span class="lineno">  989</span>       }</div>
-<div class="line"><a name="l00990"></a><span class="lineno">  990</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00991"></a><span class="lineno">  991</span>     }</div>
-<div class="line"><a name="l00992"></a><span class="lineno">  992</span>     <span class="keywordflow">case</span>(filter2d::smooth):{<span class="comment">//Smoothing filter</span></div>
-<div class="line"><a name="l00993"></a><span class="lineno">  993</span>       <span class="keywordflow">if</span>(down_opt[0]!=1){</div>
-<div class="line"><a name="l00994"></a><span class="lineno">  994</span>     std::cerr << <span class="stringliteral">"Error: down option not supported for this filter"</span> << std::endl;</div>
-<div class="line"><a name="l00995"></a><span class="lineno">  995</span>     exit(1);</div>
-<div class="line"><a name="l00996"></a><span class="lineno">  996</span>       }</div>
-<div class="line"><a name="l00997"></a><span class="lineno">  997</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00998"></a><span class="lineno">  998</span>     <span class="keywordflow">if</span>(dimZ_opt.size()){</div>
-<div class="line"><a name="l00999"></a><span class="lineno">  999</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>         std::cout<< <span class="stringliteral">"1-D filtering: smooth"</span> << std::endl;</div>
-<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>       filter1d.smooth(input,output,dimZ_opt[0]);</div>
-<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>     }</div>
-<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>       filter2d.smooth(input,output,dimX_opt[0],dimY_opt[0]);</div>
-<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>     }</div>
-<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>       }</div>
-<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>     cerr << errorstring << endl;</div>
-<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>       }</div>
-<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>     }</div>
-<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>     <span class="keywordflow">case</span>(filter2d::smoothnodata):{<span class="comment">//Smoothing filter</span></div>
-<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>       <span class="keywordflow">if</span>(down_opt[0]!=1){</div>
-<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>     std::cerr << <span class="stringliteral">"Error: down option not supported for this filter"</span> << std::endl;</div>
-<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>     exit(1);</div>
-<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>       }</div>
-<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>     <span class="keywordflow">if</span>(dimZ_opt.size()){</div>
-<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>         std::cout<< <span class="stringliteral">"1-D filtering: smooth"</span> << std::endl;</div>
-<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>       filter1d.smoothNoData(input,interpolationType_opt[0],output);</div>
-<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>     }</div>
-<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>         std::cout<< <span class="stringliteral">"2-D filtering: smooth"</span> << std::endl;</div>
-<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>       filter2d.smoothNoData(input,output,dimX_opt[0],dimY_opt[0]);</div>
-<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>     }</div>
-<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>       }</div>
-<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>     cerr << errorstring << endl;</div>
-<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>       }</div>
-<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>     }</div>
-<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>     <span class="keywordflow">case</span>(filter2d::dwt):</div>
-<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>       <span class="keywordflow">if</span>(down_opt[0]!=1){</div>
-<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>     std::cerr << <span class="stringliteral">"Error: down option not supported for this filter"</span> << std::endl;</div>
-<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>     exit(1);</div>
-<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>       }</div>
-<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>     <span class="keywordflow">if</span>(dimZ_opt.size()){</div>
-<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>         std::cout<< <span class="stringliteral">"DWT in spectral domain"</span> << std::endl;</div>
-<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>       filter1d.dwtForward(input, output, wavelet_type_opt[0], family_opt[0]);</div>
-<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>     }</div>
-<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>       filter2d.dwtForward(input, output, wavelet_type_opt[0], family_opt[0]);</div>
-<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>       }</div>
-<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>     cerr << errorstring << endl;</div>
-<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>       }</div>
-<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>     <span class="keywordflow">case</span>(filter2d::dwti):</div>
-<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>       <span class="keywordflow">if</span>(down_opt[0]!=1){</div>
-<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>     std::cerr << <span class="stringliteral">"Error: down option not supported for this filter"</span> << std::endl;</div>
-<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>     exit(1);</div>
-<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>       }</div>
-<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>     <span class="keywordflow">if</span>(dimZ_opt.size()){</div>
-<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>         std::cout<< <span class="stringliteral">"inverse DWT in spectral domain"</span> << std::endl;</div>
-<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>       filter1d.dwtInverse(input, output, wavelet_type_opt[0], family_opt[0]);</div>
-<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>     }</div>
-<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>       filter2d.dwtInverse(input, output, wavelet_type_opt[0], family_opt[0]);</div>
-<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>       }</div>
-<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>     cerr << errorstring << endl;</div>
-<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>       }</div>
-<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>     <span class="keywordflow">case</span>(filter2d::dwt_cut):</div>
-<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>       <span class="keywordflow">if</span>(down_opt[0]!=1){</div>
-<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>     std::cerr << <span class="stringliteral">"Error: down option not supported for this filter"</span> << std::endl;</div>
-<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>     exit(1);</div>
-<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>       }</div>
-<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>       <span class="keywordflow">if</span>(dimZ_opt.size()){</div>
-<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>         <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>           std::cout<< <span class="stringliteral">"DWT approximation in spectral domain"</span> << std::endl;</div>
-<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>     filter1d.dwtCut(input, output, wavelet_type_opt[0], family_opt[0], threshold_opt[0]);</div>
-<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>       }</div>
-<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>     filter2d.dwtCut(input, output, wavelet_type_opt[0], family_opt[0], threshold_opt[0]);</div>
-<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>     <span class="keywordflow">case</span>(filter2d::dwt_cut_from):</div>
-<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>       <span class="keywordflow">if</span>(down_opt[0]!=1){</div>
-<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>     std::cerr << <span class="stringliteral">"Error: down option not supported for this filter"</span> << std::endl;</div>
-<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>     exit(1);</div>
-<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>       }</div>
-<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>     <span class="keywordflow">if</span>(dimZ_opt.size()){</div>
-<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>         std::cout<< <span class="stringliteral">"DWT approximation in spectral domain"</span> << std::endl;</div>
-<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>       filter1d.dwtCutFrom(input, output, wavelet_type_opt[0], family_opt[0], static_cast<int>(threshold_opt[0]));</div>
-<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>     }</div>
-<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>       <span class="keywordtype">string</span> errorString=<span class="stringliteral">"Error: this filter is not supported in 2D"</span>;</div>
-<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>       <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>     }</div>
-<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>       }</div>
-<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>     cerr << errorstring << endl;</div>
-<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>       }</div>
-<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>     <span class="keywordflow">case</span>(filter2d::savgolay):{</div>
-<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>       assert(savgolay_nl_opt.size());</div>
-<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>       assert(savgolay_nr_opt.size());</div>
-<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>       assert(savgolay_ld_opt.size());</div>
-<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>       assert(savgolay_m_opt.size());</div>
-<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>         std::cout << <span class="stringliteral">"Calculating Savitzky-Golay coefficients: "</span> << endl;</div>
-<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>       filter1d.getSavGolayCoefficients(tapz_opt, input.nrOfBand(), savgolay_nl_opt[0], savgolay_nr_opt[0], savgolay_ld_opt[0], savgolay_m_opt[0]);</div>
-<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>       <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>         std::cout << <span class="stringliteral">"taps (size is "</span> << tapz_opt.size() << <span class="stringliteral">"): "</span>;</div>
-<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> itap=0;itap<tapz_opt.size();++itap)</div>
-<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>           std::cout<< tapz_opt[itap] << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>         std::cout<< std::endl;</div>
-<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>       }</div>
-<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>       filter1d.setTaps(tapz_opt);</div>
-<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>       filter1d.filter(input,output);</div>
-<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>     }</div>
-<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>     <span class="keywordflow">case</span>(filter2d::percentile):<span class="comment">//deliberate fall through</span></div>
-<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>     <span class="keywordflow">case</span>(filter2d::threshold):<span class="comment">//deliberate fall through</span></div>
-<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>       assert(threshold_opt.size());</div>
-<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>       <span class="keywordflow">if</span>(dimZ_opt.size())</div>
-<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>     filter1d.setThresholds(threshold_opt);</div>
-<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>     filter2d.setThresholds(threshold_opt);</div>
-<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>     <span class="keywordflow">case</span>(filter2d::density):<span class="comment">//deliberate fall through</span></div>
-<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>       filter2d.setClasses(class_opt);</div>
-<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>     std::cout << <span class="stringliteral">"classes set"</span> << std::endl;</div>
-<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>     <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>     <span class="keywordflow">if</span>(dimZ_opt.size()){</div>
-<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>       <span class="keywordflow">if</span>(dimZ_opt[0]==1)</div>
-<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>         filter1d.stat(input,output,method_opt[0]);</div>
-<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>         assert(down_opt[0]==1);<span class="comment">//not implemented yet...</span></div>
-<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>         filter1d.filter(input,output,method_opt[0],dimZ_opt[0]);</div>
-<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>       }</div>
-<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>     }</div>
-<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>       filter2d.doit(input,output,method_opt[0],dimX_opt[0],dimY_opt[0],down_opt[0],disc_opt[0]);</div>
-<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>       }</div>
-<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>     cerr << errorstring << endl;</div>
-<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>       }</div>
-<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>     }</div>
-<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>   }</div>
-<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>   input.close();</div>
-<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>   output.close();</div>
-<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>   <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span> }</div>
-<div class="ttc" id="classFileReaderAscii_html"><div class="ttname"><a href="classFileReaderAscii.html">FileReaderAscii</a></div><div class="ttdef"><b>Definition:</b> <a href="FileReaderAscii_8h_source.html#l00030">FileReaderAscii.h:30</a></div></div>
-<div class="ttc" id="classfilter_1_1Filter_html"><div class="ttname"><a href="classfilter_1_1Filter.html">filter::Filter</a></div><div class="ttdef"><b>Definition:</b> <a href="Filter_8h_source.html#l00040">Filter.h:40</a></div></div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-<div class="ttc" id="classImgWriterGdal_html"><div class="ttname"><a href="classImgWriterGdal.html">ImgWriterGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgWriterGdal_8h_source.html#l00033">ImgWriterGdal.h:33</a></div></div>
-<div class="ttc" id="classfilter2d_1_1Filter2d_html"><div class="ttname"><a href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></div><div class="ttdef"><b>Definition:</b> <a href="Filter2d_8h_source.html#l00065">Filter2d.h:65</a></div></div>
-<div class="ttc" id="classVector2d_html"><div class="ttname"><a href="classVector2d.html">Vector2d< double ></a></div></div>
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkfilter__spatial_8py_source.html b/doc/html/pkfilter__spatial_8py_source.html
deleted file mode 100644
index 9a7850c..0000000
--- a/doc/html/pkfilter__spatial_8py_source.html
+++ /dev/null
@@ -1,199 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/pkfilter_spatial.py Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkfilter_spatial.py</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment"># -*- coding: utf-8 -*-</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> </div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="stringliteral">    pkfilter_spatial.py</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="stringliteral">    ---------------------</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="stringliteral">    Date                 : April 2015</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="stringliteral">    Copyright            : (C) 2015 by Pieter Kempeneers</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="stringliteral">    Email                : kempenep at gmail dot com</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="stringliteral">*   This program is free software; you can redistribute it and/or modify  *</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="stringliteral">*   it under the terms of the GNU General Public License as published by  *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="stringliteral">*   the Free Software Foundation; either version 2 of the License, or     *</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="stringliteral">*   (at your option) any later version.                                   *</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> __author__ = <span class="stringliteral">'Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> __date__ = <span class="stringliteral">'April 2015'</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> __copyright__ = <span class="stringliteral">'(C) 2015, Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"># This will get replaced with a git SHA1 when you do a git archive</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> __revision__ = <span class="stringliteral">'$Format:%H$'</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">import</span> os</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">from</span> pktoolsUtils <span class="keyword">import</span> pktoolsUtils</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">from</span> pktoolsAlgorithm <span class="keyword">import</span> pktoolsAlgorithm</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterMultipleInput</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterRaster</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">from</span> processing.core.outputs <span class="keyword">import</span> OutputRaster</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterSelection</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterNumber</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterString</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterBoolean</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterExtent</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
-<div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">   38</a></span> <span class="keyword">class </span><a class="code" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">pkfilter_spatial</a>(pktoolsAlgorithm):</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> </div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     INPUT = <span class="stringliteral">"INPUT"</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     OUTPUT = <span class="stringliteral">"OUTPUT"</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     METHOD_OPTIONS = [<span class="stringliteral">"none"</span>, <span class="stringliteral">"median"</span>, <span class="stringliteral">"var"</span>, <span class="stringliteral">"min"</span>, <span class="stringliteral">"max"</span>, <span class="stringliteral">"sum"</span>, <span class="stringliteral">"mean"</span>, <span class="stringlite [...]
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     METHOD = <span class="stringliteral">"METHOD"</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span> <span class="comment">#    RESAMPLE_OPTIONS = ['near', 'bilinear']</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span> <span class="comment">#    RESAMPLE = "RESAMPLE"</span></div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     DIM = <span class="stringliteral">"DIM"</span></div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     NODATA = <span class="stringliteral">"NODATA"</span></div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     PADDING_OPTIONS = [<span class="stringliteral">"symmetric"</span>, <span class="stringliteral">"replicate"</span>, <span class="stringliteral">"circular"</span>, <span class="stringliteral">"zero"</span>]</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     PADDING = <span class="stringliteral">"PADDING"</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     RTYPE = <span class="stringliteral">'RTYPE'</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     TYPE = [<span class="stringliteral">'none'</span>, <span class="stringliteral">'Byte'</span>,<span class="stringliteral">'Int16'</span>,<span class="stringliteral">'UInt16'</span>,<span class="stringliteral">'UInt32'</span>,<span class="stringliteral">'Int32'</span>,<span class="stringliteral">'Float32'</span>,<span class="stringliteral">'Float64&# [...]
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     EXTRA = <span class="stringliteral">'EXTRA'</span></div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span> </div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     <span class="keyword">def </span>cliName(self):</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>         <span class="keywordflow">return</span> <span class="stringliteral">"pkfilter"</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span> </div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     <span class="keyword">def </span>defineCharacteristics(self):</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>         self.<a class="code" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#abb1b57dd0e00851665ec24a1df526ab6">name</a> = <span class="stringliteral">"spatial filter"</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>         self.<a class="code" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#ab468aa6da0990f5884debd8bfbe27e21">group</a> = <span class="stringliteral">"[pktools] filter"</span></div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span> </div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>         self.addParameter(ParameterRaster(self.<a class="code" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#aab43173cb62c16cccd2311cc2351ea72">INPUT</a>, <span class="stringliteral">'Input layer raster data set'</span>,ParameterRaster))</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a17c23d864a0778596b436f6fdb864de5">METHOD</a>,<span class="stringliteral">"filter rule"</span>,self.<a class="code" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#af2ee51651a6a19a6922db57a4d72d549">METHOD_OPTIONS</a>, 0))</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>         self.addOutput(OutputRaster(self.<a class="code" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a17420bcb37a89c2b89f4531ab6180de0">OUTPUT</a>, <span class="stringliteral">"Output raster data set"</span>))</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a556dd033f6fbe62238ea73f26f142752">RTYPE</a>, <span class="stringliteral">'Output raster type (leave as none to keep original type)'</span>, self.<a class="code" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#ac9bc83f6c62747fafd30efecb13c5d62">TYPE</a>, 0))</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>         self.addParameter(ParameterNumber(self.<a class="code" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#ac31abd8117f135e1e7f43bcbdd8456c9">DIM</a>, <span class="stringliteral">"Filter kernel size (odd value)"</span>,0.0,<span class="keywordtype">None</span>,3.0))</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>         <span class="comment">#for smooth nodata:</span></div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a241b1a8c1933b44e84da25c708a93e61">NODATA</a>, <span class="stringliteral">"invalid value(s) for input raster dataset (e.g., 0;255)"</span>,<span class="stringliteral">"none"</span>))</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a359fadbd1e77c36bfa229b1708b364a0">PADDING</a>,<span class="stringliteral">"Padding (edge effects)"</span>,self.<a class="code" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a199b3a2d3018c67ea5046c7c38a9e974">PADDING_OPTIONS</a>, 0))</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span> <span class="comment">#        self.addParameter(ParameterSelection(self.RESAMPLE,"resampling method",self.RESAMPLE_OPTIONS, 0))</span></div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a1a3a4d8cc8523b66376f621feed86909">EXTRA</a>,</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>                           <span class="stringliteral">'Additional parameters'</span>, <span class="stringliteral">'-of GTiff'</span>, optional=<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span> </div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>     <span class="keyword">def </span>processAlgorithm(self, progress):</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>         cliPath = <span class="stringliteral">'"'</span> + os.path.join(pktoolsUtils.pktoolsPath(), self.<a class="code" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a8517fc04fd5f13c52e174efc16736f83">cliName</a>()) + <span class="stringliteral">'"'</span></div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>         commands = [cliPath]</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span> </div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>         input=self.getParameterValue(self.<a class="code" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#aab43173cb62c16cccd2311cc2351ea72">INPUT</a>)</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>         <span class="keywordflow">if</span> input != <span class="stringliteral">""</span>:</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>             commands.append(<span class="stringliteral">'-i'</span>)</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>             commands.append(<span class="stringliteral">'"'</span> + input + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span> </div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>         method=self.<a class="code" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#af2ee51651a6a19a6922db57a4d72d549">METHOD_OPTIONS</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a17c23d864a0778596b436f6fdb864de5">METHOD</a>)]</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>         <span class="keywordflow">if</span> method != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>             commands.append(<span class="stringliteral">"-f"</span>)</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>             commands.append(method)</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>         commands.append(<span class="stringliteral">"-pad"</span>)</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>         commands.append(self.<a class="code" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a199b3a2d3018c67ea5046c7c38a9e974">PADDING_OPTIONS</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a359fadbd1e77c36bfa229b1708b364a0">PADDING</a>)])</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span> </div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>         <span class="keywordflow">if</span> self.<a class="code" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#ac9bc83f6c62747fafd30efecb13c5d62">TYPE</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a556dd033f6fbe62238ea73f26f142752">RTYPE</a>)] != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>             commands.append(<span class="stringliteral">'-ot'</span>)</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>             commands.append(self.<a class="code" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#ac9bc83f6c62747fafd30efecb13c5d62">TYPE</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a556dd033f6fbe62238ea73f26f142752">RTYPE</a>)])</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>         output=self.getOutputValue(self.<a class="code" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a17420bcb37a89c2b89f4531ab6180de0">OUTPUT</a>)</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>         <span class="keywordflow">if</span> output != <span class="stringliteral">""</span>:</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>             commands.append(<span class="stringliteral">"-o"</span>)</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>             commands.append(<span class="stringliteral">'"'</span> + output + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span> </div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>         <span class="keywordflow">if</span> self.getParameterValue(self.<a class="code" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#ac31abd8117f135e1e7f43bcbdd8456c9">DIM</a>) != 0:</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>             commands.append(<span class="stringliteral">"-dx"</span>)</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>             commands.append(str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#ac31abd8117f135e1e7f43bcbdd8456c9">DIM</a>)))</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>             commands.append(<span class="stringliteral">"-dy"</span>)</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>             commands.append(str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#ac31abd8117f135e1e7f43bcbdd8456c9">DIM</a>)))</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>         nodata=self.getParameterValue(self.<a class="code" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a241b1a8c1933b44e84da25c708a93e61">NODATA</a>)</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>         <span class="keywordflow">if</span> nodata != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>             nodataValues = nodata.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>             <span class="keywordflow">for</span> nodataValue <span class="keywordflow">in</span> nodataValues:</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>                 commands.append(<span class="stringliteral">'-nodata'</span>)</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>                 commands.append(nodataValue)</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>         extra = str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a1a3a4d8cc8523b66376f621feed86909">EXTRA</a>))</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>         <span class="keywordflow">if</span> len(extra) > 0:</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>             commands.append(extra)</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span> </div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>         pktoolsUtils.runpktools(commands, progress)</div>
-<div class="ttc" id="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial_html_af2ee51651a6a19a6922db57a4d72d549"><div class="ttname"><a href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#af2ee51651a6a19a6922db57a4d72d549">qgis.pkfilter_spatial.pkfilter_spatial.METHOD_OPTIONS</a></div><div class="ttdeci">list METHOD_OPTIONS</div><div class="ttdef"><b>Definition:</b> <a href="pkfilter__spatial_8py_source.html#l00042">pkfilter_spatial.py:42</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial_html_ac31abd8117f135e1e7f43bcbdd8456c9"><div class="ttname"><a href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#ac31abd8117f135e1e7f43bcbdd8456c9">qgis.pkfilter_spatial.pkfilter_spatial.DIM</a></div><div class="ttdeci">string DIM</div><div class="ttdef"><b>Definition:</b> <a href="pkfilter__spatial_8py_source.html#l00046">pkfilter_spatial.py:46</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial_html_a359fadbd1e77c36bfa229b1708b364a0"><div class="ttname"><a href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a359fadbd1e77c36bfa229b1708b364a0">qgis.pkfilter_spatial.pkfilter_spatial.PADDING</a></div><div class="ttdeci">string PADDING</div><div class="ttdef"><b>Definition:</b> <a href="pkfilter__spatial_8py_source.html#l00049">pkfilter_spatial.py:49</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial_html_a1a3a4d8cc8523b66376f621feed86909"><div class="ttname"><a href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a1a3a4d8cc8523b66376f621feed86909">qgis.pkfilter_spatial.pkfilter_spatial.EXTRA</a></div><div class="ttdeci">string EXTRA</div><div class="ttdef"><b>Definition:</b> <a href="pkfilter__spatial_8py_source.html#l00052">pkfilter_spatial.py:52</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial_html_aab43173cb62c16cccd2311cc2351ea72"><div class="ttname"><a href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#aab43173cb62c16cccd2311cc2351ea72">qgis.pkfilter_spatial.pkfilter_spatial.INPUT</a></div><div class="ttdeci">string INPUT</div><div class="ttdef"><b>Definition:</b> <a href="pkfilter__spatial_8py_source.html#l00040">pkfilter_spatial.py:40</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial_html_a199b3a2d3018c67ea5046c7c38a9e974"><div class="ttname"><a href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a199b3a2d3018c67ea5046c7c38a9e974">qgis.pkfilter_spatial.pkfilter_spatial.PADDING_OPTIONS</a></div><div class="ttdeci">list PADDING_OPTIONS</div><div class="ttdef"><b>Definition:</b> <a href="pkfilter__spatial_8py_source.html#l00048">pkfilter_spatial.py:48</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial_html_a17c23d864a0778596b436f6fdb864de5"><div class="ttname"><a href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a17c23d864a0778596b436f6fdb864de5">qgis.pkfilter_spatial.pkfilter_spatial.METHOD</a></div><div class="ttdeci">string METHOD</div><div class="ttdef"><b>Definition:</b> <a href="pkfilter__spatial_8py_source.html#l00043">pkfilter_spatial.py:43</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial_html_a556dd033f6fbe62238ea73f26f142752"><div class="ttname"><a href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a556dd033f6fbe62238ea73f26f142752">qgis.pkfilter_spatial.pkfilter_spatial.RTYPE</a></div><div class="ttdeci">string RTYPE</div><div class="ttdef"><b>Definition:</b> <a href="pkfilter__spatial_8py_source.html#l00050">pkfilter_spatial.py:50</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial_html"><div class="ttname"><a href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pkfilter_spatial.pkfilter_spatial</a></div><div class="ttdef"><b>Definition:</b> <a href="pkfilter__spatial_8py_source.html#l00038">pkfilter_spatial.py:38</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial_html_a17420bcb37a89c2b89f4531ab6180de0"><div class="ttname"><a href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a17420bcb37a89c2b89f4531ab6180de0">qgis.pkfilter_spatial.pkfilter_spatial.OUTPUT</a></div><div class="ttdeci">string OUTPUT</div><div class="ttdef"><b>Definition:</b> <a href="pkfilter__spatial_8py_source.html#l00041">pkfilter_spatial.py:41</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial_html_a241b1a8c1933b44e84da25c708a93e61"><div class="ttname"><a href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a241b1a8c1933b44e84da25c708a93e61">qgis.pkfilter_spatial.pkfilter_spatial.NODATA</a></div><div class="ttdeci">string NODATA</div><div class="ttdef"><b>Definition:</b> <a href="pkfilter__spatial_8py_source.html#l00047">pkfilter_spatial.py:47</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial_html_abb1b57dd0e00851665ec24a1df526ab6"><div class="ttname"><a href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#abb1b57dd0e00851665ec24a1df526ab6">qgis.pkfilter_spatial.pkfilter_spatial.name</a></div><div class="ttdeci">name</div><div class="ttdef"><b>Definition:</b> <a href="pkfilter__spatial_8py_source.html#l00058">pkfilter_spatial.py:58</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial_html_a8517fc04fd5f13c52e174efc16736f83"><div class="ttname"><a href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a8517fc04fd5f13c52e174efc16736f83">qgis.pkfilter_spatial.pkfilter_spatial.cliName</a></div><div class="ttdeci">def cliName</div><div class="ttdef"><b>Definition:</b> <a href="pkfilter__spatial_8py_source.html#l00054">pkfilter_spatial.py:54</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial_html_ab468aa6da0990f5884debd8bfbe27e21"><div class="ttname"><a href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#ab468aa6da0990f5884debd8bfbe27e21">qgis.pkfilter_spatial.pkfilter_spatial.group</a></div><div class="ttdeci">group</div><div class="ttdef"><b>Definition:</b> <a href="pkfilter__spatial_8py_source.html#l00059">pkfilter_spatial.py:59</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial_html_ac9bc83f6c62747fafd30efecb13c5d62"><div class="ttname"><a href="classqgis_1_1pkfilter__spatial_1_1pkfilter__spatial.html#ac9bc83f6c62747fafd30efecb13c5d62">qgis.pkfilter_spatial.pkfilter_spatial.TYPE</a></div><div class="ttdeci">list TYPE</div><div class="ttdef"><b>Definition:</b> <a href="pkfilter__spatial_8py_source.html#l00051">pkfilter_spatial.py:51</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkfilter__spectral_8py_source.html b/doc/html/pkfilter__spectral_8py_source.html
deleted file mode 100644
index e22d9ba..0000000
--- a/doc/html/pkfilter__spectral_8py_source.html
+++ /dev/null
@@ -1,193 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/pkfilter_spectral.py Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkfilter_spectral.py</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment"># -*- coding: utf-8 -*-</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> </div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="stringliteral">    pkfilter_spectral.py</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="stringliteral">    ---------------------</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="stringliteral">    Date                 : April 2015</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="stringliteral">    Copyright            : (C) 2015 by Pieter Kempeneers</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="stringliteral">    Email                : kempenep at gmail dot com</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="stringliteral">*   This program is free software; you can redistribute it and/or modify  *</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="stringliteral">*   it under the terms of the GNU General Public License as published by  *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="stringliteral">*   the Free Software Foundation; either version 2 of the License, or     *</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="stringliteral">*   (at your option) any later version.                                   *</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> __author__ = <span class="stringliteral">'Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> __date__ = <span class="stringliteral">'April 2015'</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> __copyright__ = <span class="stringliteral">'(C) 2015, Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"># This will get replaced with a git SHA1 when you do a git archive</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> __revision__ = <span class="stringliteral">'$Format:%H$'</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">import</span> os</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">from</span> pktoolsUtils <span class="keyword">import</span> pktoolsUtils</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">from</span> pktoolsAlgorithm <span class="keyword">import</span> pktoolsAlgorithm</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterMultipleInput</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterRaster</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">from</span> processing.core.outputs <span class="keyword">import</span> OutputRaster</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterSelection</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterNumber</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterString</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterBoolean</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterExtent</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
-<div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">   38</a></span> <span class="keyword">class </span><a class="code" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">pkfilter_spectral</a>(pktoolsAlgorithm):</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> </div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     INPUT = <span class="stringliteral">"INPUT"</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     OUTPUT = <span class="stringliteral">"OUTPUT"</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     METHOD_OPTIONS = [<span class="stringliteral">"none"</span>, <span class="stringliteral">"median"</span>, <span class="stringliteral">"var"</span>, <span class="stringliteral">"min"</span>, <span class="stringliteral">"max"</span>, <span class="stringliteral">"sum"</span>, <span class="stringliteral">"mean"</span>, <span class="stringlite [...]
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     METHOD = <span class="stringliteral">"METHOD"</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     DZ = <span class="stringliteral">"DZ"</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     NODATA = <span class="stringliteral">"NODATA"</span></div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     PADDING_OPTIONS = [<span class="stringliteral">"symmetric"</span>, <span class="stringliteral">"replicate"</span>, <span class="stringliteral">"circular"</span>, <span class="stringliteral">"zero"</span>]</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     PADDING = <span class="stringliteral">"PADDING"</span></div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     RTYPE = <span class="stringliteral">'RTYPE'</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     TYPE = [<span class="stringliteral">'none'</span>, <span class="stringliteral">'Byte'</span>,<span class="stringliteral">'Int16'</span>,<span class="stringliteral">'UInt16'</span>,<span class="stringliteral">'UInt32'</span>,<span class="stringliteral">'Int32'</span>,<span class="stringliteral">'Float32'</span>,<span class="stringliteral">'Float64&# [...]
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     EXTRA = <span class="stringliteral">'EXTRA'</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span> </div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     <span class="keyword">def </span>cliName(self):</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>         <span class="keywordflow">return</span> <span class="stringliteral">"pkfilter"</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span> </div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     <span class="keyword">def </span>defineCharacteristics(self):</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>         self.<a class="code" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a85b2c92f62e8260f9f51d8d8f10ff44a">name</a> = <span class="stringliteral">"spectral/temporal filter"</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>         self.<a class="code" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#ad21f52f89d4b6cbe06e4bf830a8f5678">group</a> = <span class="stringliteral">"[pktools] filter"</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>         self.addParameter(ParameterRaster(self.<a class="code" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a20a6cee11be7abd9325358a564819d26">INPUT</a>, <span class="stringliteral">'Input layer raster data set'</span>,ParameterRaster))</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a15c6950b12c57ff838be9ba415e28c8e">METHOD</a>,<span class="stringliteral">"filter rule"</span>,self.<a class="code" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a88267ee3b205fbfc5e6823c693eb4e14">METHOD_OPTIONS</a>, 0))</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>         self.addOutput(OutputRaster(self.<a class="code" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a0be5ed45033cae15184219a6485a396b">OUTPUT</a>, <span class="stringliteral">"Output raster data set"</span>))</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#ab8240d9589b85c133897e73224e6bcb2">RTYPE</a>, <span class="stringliteral">'Output raster type (leave as none to keep original type)'</span>, self.<a class="code" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a43e8b1dc19ef86bee9a3c933f9f83529">TYPE</a>, 0))</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>         self.addParameter(ParameterNumber(self.<a class="code" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#aeff20f41be397170c8e351d0aa74bc79">DZ</a>, <span class="stringliteral">"Filter kernel size"</span>,0.0,<span class="keywordtype">None</span>,1.0))</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>         <span class="comment">#for smooth nodata:</span></div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a68d3c2ee722166fa9d8ddf3151fd8e55">NODATA</a>, <span class="stringliteral">"nodata value to smooth(e.g., 0;255)"</span>,<span class="stringliteral">"none"</span>))</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#ae9fcf789fcc3b4871f5419bbce84511a">PADDING</a>,<span class="stringliteral">"Padding (edge effects)"</span>,self.<a class="code" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a706e766bf47d4fab85e95879c6d657a4">PADDING_OPTIONS</a>, 0))</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a916a5975c9e4fc03fdf55a8a02dcb91e">EXTRA</a>,</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>                           <span class="stringliteral">'Additional parameters'</span>, <span class="stringliteral">'-of GTiff'</span>, optional=<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span> </div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     <span class="keyword">def </span>processAlgorithm(self, progress):</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>         cliPath = <span class="stringliteral">'"'</span> + os.path.join(pktoolsUtils.pktoolsPath(), self.<a class="code" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a67ee5ff2f1cb29dd15291e3ac0e5331c">cliName</a>()) + <span class="stringliteral">'"'</span></div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>         commands = [cliPath]</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span> </div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>         input=self.getParameterValue(self.<a class="code" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a20a6cee11be7abd9325358a564819d26">INPUT</a>)</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>         <span class="keywordflow">if</span> input != <span class="stringliteral">""</span>:</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>             commands.append(<span class="stringliteral">'-i'</span>)</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>             commands.append(<span class="stringliteral">'"'</span> + input + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span> </div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>         method=self.<a class="code" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a88267ee3b205fbfc5e6823c693eb4e14">METHOD_OPTIONS</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a15c6950b12c57ff838be9ba415e28c8e">METHOD</a>)]</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>         <span class="keywordflow">if</span> method != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>             commands.append(<span class="stringliteral">"-f"</span>)</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>             commands.append(method)</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>         commands.append(<span class="stringliteral">"-pad"</span>)</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>         commands.append(self.<a class="code" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a706e766bf47d4fab85e95879c6d657a4">PADDING_OPTIONS</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#ae9fcf789fcc3b4871f5419bbce84511a">PADDING</a>)])</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span> </div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>         <span class="keywordflow">if</span> self.<a class="code" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a43e8b1dc19ef86bee9a3c933f9f83529">TYPE</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#ab8240d9589b85c133897e73224e6bcb2">RTYPE</a>)] != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>             commands.append(<span class="stringliteral">'-ot'</span>)</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>             commands.append(self.<a class="code" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a43e8b1dc19ef86bee9a3c933f9f83529">TYPE</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#ab8240d9589b85c133897e73224e6bcb2">RTYPE</a>)])</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>         output=self.getOutputValue(self.<a class="code" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a0be5ed45033cae15184219a6485a396b">OUTPUT</a>)</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>         <span class="keywordflow">if</span> output != <span class="stringliteral">""</span>:</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>             commands.append(<span class="stringliteral">"-o"</span>)</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>             commands.append(<span class="stringliteral">'"'</span> + output + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span> </div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>         <span class="keywordflow">if</span> self.getParameterValue(self.<a class="code" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#aeff20f41be397170c8e351d0aa74bc79">DZ</a>) != 0:</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>             commands.append(<span class="stringliteral">"-dz"</span>)</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>             commands.append(str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#aeff20f41be397170c8e351d0aa74bc79">DZ</a>)))</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>         nodata=self.getParameterValue(self.<a class="code" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a68d3c2ee722166fa9d8ddf3151fd8e55">NODATA</a>)</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>         <span class="keywordflow">if</span> nodata != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>             nodataValues = nodata.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>             <span class="keywordflow">for</span> nodataValue <span class="keywordflow">in</span> nodataValues:</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>                 commands.append(<span class="stringliteral">'-nodata'</span>)</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>                 commands.append(nodataValue)</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>         extra = str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a916a5975c9e4fc03fdf55a8a02dcb91e">EXTRA</a>))</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>         <span class="keywordflow">if</span> len(extra) > 0:</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>             commands.append(extra)</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span> </div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>         pktoolsUtils.runpktools(commands, progress)</div>
-<div class="ttc" id="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral_html"><div class="ttname"><a href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pkfilter_spectral.pkfilter_spectral</a></div><div class="ttdef"><b>Definition:</b> <a href="pkfilter__spectral_8py_source.html#l00038">pkfilter_spectral.py:38</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral_html_a15c6950b12c57ff838be9ba415e28c8e"><div class="ttname"><a href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a15c6950b12c57ff838be9ba415e28c8e">qgis.pkfilter_spectral.pkfilter_spectral.METHOD</a></div><div class="ttdeci">string METHOD</div><div class="ttdef"><b>Definition:</b> <a href="pkfilter__spectral_8py_source.html#l00043">pkfilter_spectral.py:43</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral_html_ad21f52f89d4b6cbe06e4bf830a8f5678"><div class="ttname"><a href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#ad21f52f89d4b6cbe06e4bf830a8f5678">qgis.pkfilter_spectral.pkfilter_spectral.group</a></div><div class="ttdeci">group</div><div class="ttdef"><b>Definition:</b> <a href="pkfilter__spectral_8py_source.html#l00057">pkfilter_spectral.py:57</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral_html_a88267ee3b205fbfc5e6823c693eb4e14"><div class="ttname"><a href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a88267ee3b205fbfc5e6823c693eb4e14">qgis.pkfilter_spectral.pkfilter_spectral.METHOD_OPTIONS</a></div><div class="ttdeci">list METHOD_OPTIONS</div><div class="ttdef"><b>Definition:</b> <a href="pkfilter__spectral_8py_source.html#l00042">pkfilter_spectral.py:42</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral_html_a0be5ed45033cae15184219a6485a396b"><div class="ttname"><a href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a0be5ed45033cae15184219a6485a396b">qgis.pkfilter_spectral.pkfilter_spectral.OUTPUT</a></div><div class="ttdeci">string OUTPUT</div><div class="ttdef"><b>Definition:</b> <a href="pkfilter__spectral_8py_source.html#l00041">pkfilter_spectral.py:41</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral_html_ab8240d9589b85c133897e73224e6bcb2"><div class="ttname"><a href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#ab8240d9589b85c133897e73224e6bcb2">qgis.pkfilter_spectral.pkfilter_spectral.RTYPE</a></div><div class="ttdeci">string RTYPE</div><div class="ttdef"><b>Definition:</b> <a href="pkfilter__spectral_8py_source.html#l00048">pkfilter_spectral.py:48</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral_html_ae9fcf789fcc3b4871f5419bbce84511a"><div class="ttname"><a href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#ae9fcf789fcc3b4871f5419bbce84511a">qgis.pkfilter_spectral.pkfilter_spectral.PADDING</a></div><div class="ttdeci">string PADDING</div><div class="ttdef"><b>Definition:</b> <a href="pkfilter__spectral_8py_source.html#l00047">pkfilter_spectral.py:47</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral_html_a67ee5ff2f1cb29dd15291e3ac0e5331c"><div class="ttname"><a href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a67ee5ff2f1cb29dd15291e3ac0e5331c">qgis.pkfilter_spectral.pkfilter_spectral.cliName</a></div><div class="ttdeci">def cliName</div><div class="ttdef"><b>Definition:</b> <a href="pkfilter__spectral_8py_source.html#l00052">pkfilter_spectral.py:52</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral_html_a68d3c2ee722166fa9d8ddf3151fd8e55"><div class="ttname"><a href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a68d3c2ee722166fa9d8ddf3151fd8e55">qgis.pkfilter_spectral.pkfilter_spectral.NODATA</a></div><div class="ttdeci">string NODATA</div><div class="ttdef"><b>Definition:</b> <a href="pkfilter__spectral_8py_source.html#l00045">pkfilter_spectral.py:45</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral_html_a706e766bf47d4fab85e95879c6d657a4"><div class="ttname"><a href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a706e766bf47d4fab85e95879c6d657a4">qgis.pkfilter_spectral.pkfilter_spectral.PADDING_OPTIONS</a></div><div class="ttdeci">list PADDING_OPTIONS</div><div class="ttdef"><b>Definition:</b> <a href="pkfilter__spectral_8py_source.html#l00046">pkfilter_spectral.py:46</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral_html_a20a6cee11be7abd9325358a564819d26"><div class="ttname"><a href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a20a6cee11be7abd9325358a564819d26">qgis.pkfilter_spectral.pkfilter_spectral.INPUT</a></div><div class="ttdeci">string INPUT</div><div class="ttdef"><b>Definition:</b> <a href="pkfilter__spectral_8py_source.html#l00040">pkfilter_spectral.py:40</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral_html_a916a5975c9e4fc03fdf55a8a02dcb91e"><div class="ttname"><a href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a916a5975c9e4fc03fdf55a8a02dcb91e">qgis.pkfilter_spectral.pkfilter_spectral.EXTRA</a></div><div class="ttdeci">string EXTRA</div><div class="ttdef"><b>Definition:</b> <a href="pkfilter__spectral_8py_source.html#l00050">pkfilter_spectral.py:50</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral_html_a43e8b1dc19ef86bee9a3c933f9f83529"><div class="ttname"><a href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a43e8b1dc19ef86bee9a3c933f9f83529">qgis.pkfilter_spectral.pkfilter_spectral.TYPE</a></div><div class="ttdeci">list TYPE</div><div class="ttdef"><b>Definition:</b> <a href="pkfilter__spectral_8py_source.html#l00049">pkfilter_spectral.py:49</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral_html_aeff20f41be397170c8e351d0aa74bc79"><div class="ttname"><a href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#aeff20f41be397170c8e351d0aa74bc79">qgis.pkfilter_spectral.pkfilter_spectral.DZ</a></div><div class="ttdeci">string DZ</div><div class="ttdef"><b>Definition:</b> <a href="pkfilter__spectral_8py_source.html#l00044">pkfilter_spectral.py:44</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral_html_a85b2c92f62e8260f9f51d8d8f10ff44a"><div class="ttname"><a href="classqgis_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a85b2c92f62e8260f9f51d8d8f10ff44a">qgis.pkfilter_spectral.pkfilter_spectral.name</a></div><div class="ttdeci">name</div><div class="ttdef"><b>Definition:</b> <a href="pkfilter__spectral_8py_source.html#l00056">pkfilter_spectral.py:56</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkfilterascii.html b/doc/html/pkfilterascii.html
deleted file mode 100644
index c04e1b6..0000000
--- a/doc/html/pkfilterascii.html
+++ /dev/null
@@ -1,113 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: pkfilterascii</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkfilterascii </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><p>program to filter data in an ASCII file </p>
-<h2>SYNOPSIS</h2>
-<p><code> Usage: pkfilterascii -i input.txt [-ic column]* </code></p>
-<p><code></code></p>
-<p><code> Options: [-f filter] [-dz value] [-t]</code></p>
-<p><code> Advanced options: [-tapz value]* [-fwhm value]* [-srf filename]* [-win col] [-wout value]* [-interp type] [-wt type] [-wf family] [-cut threshold]</code></p>
-<p><code></code></p>
-<h1><a class="anchor" id="pkfilterascii_description"></a>
-Description</h1>
-<p>The utility pkfilterascii filters the columns defined by the option -ic. A varietey of filters can be selected from with the option -f. The kernel size is defined with the option -dz. Alternatively, you can define your own filter tap values (use the option -tapz for each tap). In case of spectral filtering, define the full width half max values (-fwhm value) or spectral response functions in ASCII files (-srf filename).</p>
-<h1><a class="anchor" id="pkfilterascii_options"></a>
-Options</h1>
-<ul>
-<li>use either <code>-short</code> or <code>--long</code> options (both <code>--long=value</code> and <code>--long value</code> are supported)</li>
-<li>short option <code>-h</code> shows basic options only, long option <code>--help</code> shows all options <table class="doxtable">
-<tr>
-<th>short</th><th>long</th><th>type</th><th>default</th><th>description  </th></tr>
-<tr>
-<td>i </td><td>input </td><td>std::string </td><td></td><td>input ASCII file </td></tr>
-<tr>
-<td>o </td><td>output </td><td>std::string </td><td></td><td>Output ASCII file </td></tr>
-<tr>
-<td>ic </td><td>inputCols </td><td>int </td><td></td><td>input columns (e.g., for three dimensional input data in first three columns use: -ic 0 -ic 1 -ic 2 </td></tr>
-<tr>
-<td>f </td><td>filter </td><td>std::string </td><td></td><td>filter function (to be implemented: dwt, dwti,dwt_cut) </td></tr>
-<tr>
-<td>dz </td><td>dz </td><td>int </td><td></td><td>filter kernel size in z (band or spectral dimension), must be odd (example: 3).. Set dz>0 if 1-D filter must be used in band domain </td></tr>
-<tr>
-<td>tapz </td><td>tapz </td><td>double </td><td></td><td>taps used for spectral filtering </td></tr>
-<tr>
-<td>fwhm </td><td>fwhm </td><td>double </td><td></td><td>list of full width half to apply spectral filtering (-fwhm band1 -fwhm band2 ...) </td></tr>
-<tr>
-<td>srf </td><td>srf </td><td>std::string </td><td></td><td>list of ASCII files containing spectral response functions (two columns: wavelength response) </td></tr>
-<tr>
-<td>win </td><td>wavelengthIn </td><td>int </td><td></td><td>column number of input ASCII file containing wavelengths </td></tr>
-<tr>
-<td>wout </td><td>wavelengthOut </td><td>double </td><td></td><td>list of wavelengths in output spectrum (-wout band1 -wout band2 ...) </td></tr>
-<tr>
-<td>interp </td><td>interp </td><td>std::string </td><td>akima </td><td>type of interpolation for spectral filtering (see <a href="http://www.gnu.org/software/gsl/manual/html_node/Interpolation-Types.html">http://www.gnu.org/software/gsl/manual/html_node/Interpolation-Types.html</a>) </td></tr>
-<tr>
-<td>t </td><td>transpose </td><td>bool </td><td>false </td><td>transpose output with samples in rows and wavelengths in cols </td></tr>
-<tr>
-<td>wt </td><td>wavelet </td><td>std::string </td><td>daubechies </td><td>wavelet type: daubechies,daubechies_centered, haar, haar_centered, bspline, bspline_centered </td></tr>
-<tr>
-<td>wf </td><td>family </td><td>int </td><td>4 </td><td>wavelet family (vanishing moment, see also <a href="http://www.gnu.org/software/gsl/manual/html_node/DWT-Initialization.html">http://www.gnu.org/software/gsl/manual/html_node/DWT-Initialization.html</a>) </td></tr>
-<tr>
-<td>cut </td><td>cut </td><td>double </td><td>0 </td><td>threshold to cut dwt coefficients. Use 0 to keep all. </td></tr>
-</table>
-Usage: pkfilterascii -i input.txt [-ic column]* </li>
-</ul>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkfilterascii_8cc_source.html b/doc/html/pkfilterascii_8cc_source.html
deleted file mode 100644
index 24291cd..0000000
--- a/doc/html/pkfilterascii_8cc_source.html
+++ /dev/null
@@ -1,385 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/pkfilterascii.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkfilterascii.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pkfilterascii.cc: program to filter data in an ASCII file</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <assert.h></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <iostream></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <string></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <fstream></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <math.h></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include <sys/types.h></span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include <stdio.h></span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include "base/Vector2d.h"</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include "algorithms/Filter.h"</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include "fileclasses/FileReaderAscii.h"</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> </div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span> {</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="preprocessor">#include <gsl/gsl_sort.h></span></div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> }</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> </div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="comment">/******************************************************************************/</span></div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span> </div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span> <span class="comment">/*------------------</span></div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span> <span class="comment">  Main procedure</span></div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span> <span class="comment">  ----------------*/</span></div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc,<span class="keywordtype">char</span> **argv) {</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> input_opt(<span class="stringliteral">"i"</span>,<span class="stringliteral">"input"</span>,<span class="stringliteral">"input ASCII file"</span>);</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> output_opt(<span class="stringliteral">"o"</span>, <span class="stringliteral">"output"</span>, <span class="stringliteral">"Output ASCII file"</span>);</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> inputCols_opt(<span class="stringliteral">"ic"</span>, <span class="stringliteral">"inputCols"</span>, <span class="stringliteral">"input columns (e.g., for three dimensional input data in first three columns use: -ic 0 -ic 1 -ic 2"</span>); </div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> method_opt(<span class="stringliteral">"f"</span>, <span class="stringliteral">"filter"</span>, <span class="stringliteral">"filter function (to be implemented: dwt, dwti,dwt_cut)"</span>);</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> wavelet_type_opt(<span class="stringliteral">"wt"</span>, <span class="stringliteral">"wavelet"</span>, <span class="stringliteral">"wavelet type: daubechies,daubechies_centered, haar, haar_centered, bspline, bspline_centered"</span>, <span class="stringliteral">"daubechies"</span>);</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> family_opt(<span class="stringliteral">"wf"</span>, <span class="stringliteral">"family"</span>, <span class="stringliteral">"wavelet family (vanishing moment, see also http://www.gnu.org/software/gsl/manual/html_node/DWT-Initialization.html)"</span>, 4);</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> threshold_opt(<span class="stringliteral">"cut"</span>, <span class="stringliteral">"cut"</span>, <span class="stringliteral">"threshold to cut dwt coefficients. Use 0 to keep all."</span>, 0);</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> dimZ_opt(<span class="stringliteral">"dz"</span>, <span class="stringliteral">"dz"</span>, <span class="stringliteral">"filter kernel size in z (band or spectral dimension), must be odd (example: 3).. Set dz>0 if 1-D filter must be used in band domain"</span>);</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> tapZ_opt(<span class="stringliteral">"tapz"</span>, <span class="stringliteral">"tapz"</span>, <span class="stringliteral">"taps used for spectral filtering"</span>);</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> fwhm_opt(<span class="stringliteral">"fwhm"</span>, <span class="stringliteral">"fwhm"</span>, <span class="stringliteral">"list of full width half to apply spectral filtering (-fwhm band1 -fwhm band2 ...)"</span>);</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> srf_opt(<span class="stringliteral">"srf"</span>, <span class="stringliteral">"srf"</span>, <span class="stringliteral">"list of ASCII files containing spectral response functions (two columns: wavelength response)"</span>);</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> wavelengthIn_opt(<span class="stringliteral">"win"</span>, <span class="stringliteral">"wavelengthIn"</span>, <span class="stringliteral">"column number of input ASCII file containing wavelengths"</span>);</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> wavelengthOut_opt(<span class="stringliteral">"wout"</span>, <span class="stringliteral">"wavelengthOut"</span>, <span class="stringliteral">"list of wavelengths in output spectrum (-wout band1 -wout band2 ...)"</span>);</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> interpolationType_opt(<span class="stringliteral">"interp"</span>, <span class="stringliteral">"interp"</span>, <span class="stringliteral">"type of interpolation for spectral filtering (see http://www.gnu.org/software/gsl/manual/html_node/Interpolation-Types.html)"</span>,<span class="stringliteral">" [...]
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> transpose_opt(<span class="stringliteral">"t"</span>, <span class="stringliteral">"transpose"</span>, <span class="stringliteral">"transpose output with samples in rows and wavelengths in cols"</span>, <span class="keyword">false</span>);</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> verbose_opt(<span class="stringliteral">"v"</span>, <span class="stringliteral">"verbose"</span>, <span class="stringliteral">"verbose mode if > 0"</span>, 0,2);</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span> </div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>   tapZ_opt.setHide(1);</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>   fwhm_opt.setHide(1);</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>   srf_opt.setHide(1);</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>   wavelengthIn_opt.setHide(1);</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>   wavelengthOut_opt.setHide(1);</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   interpolationType_opt.setHide(1);</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   transpose_opt.setHide(1);</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>   wavelet_type_opt.setHide(1);</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>   family_opt.setHide(1);</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>   threshold_opt.setHide(1);</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span> </div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>   <span class="keywordtype">bool</span> doProcess;<span class="comment">//stop process when program was invoked with help option (-h --help)</span></div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     doProcess=input_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     output_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>     inputCols_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>     method_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>     dimZ_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>     tapZ_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>     fwhm_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     srf_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>     wavelengthIn_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     wavelengthOut_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>     interpolationType_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>     transpose_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>     wavelet_type_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>     family_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>     threshold_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>     verbose_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>   }</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> predefinedString){</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>     std::cout << predefinedString << std::endl;</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>     exit(0);</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>   }</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>   <span class="keywordflow">if</span>(!doProcess){</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>     cout << endl;</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>     cout << <span class="stringliteral">"Usage: pkfilterascii -i input.txt [-ic column]*"</span> << endl;</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>     cout << endl;</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>     std::cout << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << std::endl;</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>     exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>   }</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span> </div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> inputData(inputCols_opt.size());</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> filteredData(inputCols_opt.size());</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>   std::vector<double> wavelengthIn;</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>   std::vector<double> wavelengthOut;</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>   assert(input_opt.size());</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>   <a class="code" href="classFileReaderAscii.html">FileReaderAscii</a> asciiReader(input_opt[0]);</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>   <span class="keywordflow">if</span>(wavelengthIn_opt.size())</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>     asciiReader.readData(wavelengthIn,wavelengthIn_opt[0]);</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>   assert(inputCols_opt.size());</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>   asciiReader.readData(inputData,inputCols_opt);</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>   <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>     std::cout << <span class="stringliteral">"wavelengthIn.size(): "</span> << wavelengthIn.size() << std::endl;</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>     std::cout << <span class="stringliteral">"inputData[0].size(): "</span> << inputData[0].size() << std::endl;</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   }</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>   <span class="keywordflow">if</span>(wavelengthIn.size())</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>     assert(wavelengthIn.size()==inputData[0].size());</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>   asciiReader.close();</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>   <a class="code" href="classfilter_1_1Filter.html">filter::Filter</a> filter1d;</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>   <span class="keywordflow">if</span>(fwhm_opt.size()){</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>     filteredData.resize(inputCols_opt.size(),wavelengthOut_opt.size());</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>     assert(wavelengthIn_opt.size());</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>       std::cout << <span class="stringliteral">"spectral filtering to "</span> << fwhm_opt.size() << <span class="stringliteral">" bands with provided fwhm "</span> << std::endl;</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>     assert(wavelengthOut_opt.size()==fwhm_opt.size());</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>     std::vector<double> fwhmData(wavelengthOut_opt.size());</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<inputCols_opt.size();++icol)</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>       filter1d.applyFwhm<<span class="keywordtype">double</span>>(wavelengthIn,inputData[icol], wavelengthOut_opt,fwhm_opt, interpolationType_opt[0], filteredData[icol],verbose_opt[0]);</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>       std::cout << <span class="stringliteral">"spectra filtered to "</span> << wavelengthOut_opt.size() << <span class="stringliteral">" bands"</span> << std::endl;</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>     wavelengthOut=wavelengthOut_opt;</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>   }</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(srf_opt.size()){</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>     wavelengthOut.resize(srf_opt.size());</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>     filteredData.resize(inputCols_opt.size(),srf_opt.size());</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>     <a class="code" href="classVector2d.html">Vector2d<double></a> srfData(srf_opt.size(),inputCols_opt.size());<span class="comment">//transposed output</span></div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>       std::cout << <span class="stringliteral">"spectral filtering to "</span> << srf_opt.size() << <span class="stringliteral">" bands with provided SRF "</span> << std::endl;</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>     std::vector< Vector2d<double> > srf(srf_opt.size());<span class="comment">//[0] srf_nr, [1]: wavelength, [2]: response</span></div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>     ifstream srfFile;</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isrf=0;isrf<srf_opt.size();++isrf){</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>       srf[isrf].resize(2);</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>       srfFile.open(srf_opt[isrf].c_str());</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>       <span class="keywordtype">double</span> v;</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>       <span class="comment">//add 0 to make sure srf is 0 at boundaries after interpolation step</span></div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>       srf[isrf][0].push_back(0);</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>       srf[isrf][1].push_back(0);</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>       srf[isrf][0].push_back(1);</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>       srf[isrf][1].push_back(0);</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>       <span class="keywordflow">while</span>(srfFile >> v){</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>         srf[isrf][0].push_back(v);</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>         srfFile >> v;</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>         srf[isrf][1].push_back(v);</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>       }</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>       srfFile.close();</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>       <span class="comment">//add 0 to make sure srf[isrf] is 0 at boundaries after interpolation step</span></div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>       srf[isrf][0].push_back(srf[isrf][0].back()+1);</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>       srf[isrf][1].push_back(0);    </div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>       srf[isrf][0].push_back(srf[isrf][0].back()+1);</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>       srf[isrf][1].push_back(0);</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>         cout << <span class="stringliteral">"srf file details: "</span> << srf[isrf][0].size() << <span class="stringliteral">" wavelengths defined"</span> << endl;</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>       <span class="keywordflow">if</span>(verbose_opt[0]>1){</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iw=0;iw<srf[isrf][0].size();++iw)</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>           std::cout << srf[isrf][0][iw] << <span class="stringliteral">" "</span> << srf[isrf][1][iw] << std::endl;</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>       }</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>     }</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>     <span class="keywordtype">double</span> centreWavelength=0;</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<inputCols_opt.size();++icol)</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>       filteredData[icol].resize(srf.size());</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span> </div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isrf=0;isrf<srf.size();++isrf){</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>       <span class="keywordtype">double</span> delta=1.0;</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>       <span class="keywordtype">bool</span> normalize=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>       centreWavelength=filter1d.applySrf<<span class="keywordtype">double</span>>(wavelengthIn,inputData,srf[isrf], interpolationType_opt[0], srfData[isrf], delta, normalize,1,<span class="keyword">true</span>, verbose_opt[0]);</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>         std::cout << <span class="stringliteral">"centre wavelength srf "</span> << isrf << <span class="stringliteral">": "</span> << centreWavelength << std::endl;</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>       wavelengthOut[isrf]=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(centreWavelength+0.5);</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>     }</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>     srfData.transpose(filteredData);</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>       std::cout << <span class="stringliteral">"spectra filtered to "</span> << srf.size() << <span class="stringliteral">" bands"</span> << std::endl;</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>   }</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>   <span class="keywordflow">else</span>{<span class="comment">//no filtering</span></div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>       std::cout << <span class="stringliteral">"no filtering selected"</span> << std::endl;</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<inputCols_opt.size();++icol)</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>       filteredData[icol]=inputData[icol];</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>   }</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>   </div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>   <span class="keywordflow">if</span>(method_opt.size()){</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>     wavelengthOut=wavelengthIn;</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<inputCols_opt.size();++icol){</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>       <span class="keywordflow">switch</span>(filter::Filter::getFilterType(method_opt[0])){</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>       <span class="keywordflow">case</span>(filter::dwt):</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>         filter1d.dwtForward(filteredData[icol],wavelet_type_opt[0],family_opt[0]);</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>       <span class="keywordflow">case</span>(filter::dwti):</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>         filter1d.dwtInverse(filteredData[icol],wavelet_type_opt[0],family_opt[0]);</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>       <span class="keywordflow">case</span>(filter::dwt_cut):</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>     filter1d.dwtCut(filteredData[icol],wavelet_type_opt[0],family_opt[0],threshold_opt[0]);</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>       <span class="keywordflow">case</span>(filter::smooth):</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>     <span class="keywordflow">if</span>(tapZ_opt.size()){</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>       filter1d.setTaps(tapZ_opt);</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>       filter1d.filter(inputData[icol],filteredData[icol]);</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>     }</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>       assert(dimZ_opt.size());</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>       filter1d.smooth(inputData[icol],filteredData[icol],dimZ_opt[0]);</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>     }</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>       <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>     assert(tapZ_opt.size());</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>         filter1d.filter(inputData[icol],filteredData[icol]);</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>         <span class="comment">// if(verbose_opt[0])</span></div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>         <span class="comment">//   std::cout << "method to be implemented" << std::endl;</span></div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>     <span class="comment">// exit(1);</span></div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>       }</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>     }</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>   }</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>   ofstream outputStream;</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>   <span class="keywordflow">if</span>(!output_opt.empty())</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>     outputStream.open(output_opt[0].c_str(),ios::out);</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span> </div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>     std::cout << <span class="stringliteral">"stream to output"</span> << std::endl;</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>   <span class="keywordflow">if</span>(transpose_opt[0]){</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<inputCols_opt.size();++icol){</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<filteredData[icol].size();++iband){</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>         <span class="keywordflow">if</span>(!output_opt.empty()){</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>           outputStream << filteredData[icol][iband];</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>           <span class="keywordflow">if</span>(iband<filteredData[icol].size()-1)</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>             outputStream << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>             outputStream << std::endl;</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>         }</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>           std::cout << filteredData[icol][iband];</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>           <span class="keywordflow">if</span>(iband<filteredData[icol].size()-1)</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>             std::cout << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>             std::cout << std::endl;</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>         }</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>       }</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>     }    </div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>   }</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>     <span class="comment">// int nband=wavelengthOut.size()? wavelengthOut.size() : filteredData[0].size();</span></div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>     <span class="keywordtype">int</span> nband=0;</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>     <span class="keywordflow">if</span>(method_opt.size()){</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>       <span class="keywordflow">switch</span>(filter::Filter::getFilterType(method_opt[0])){</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>       <span class="keywordflow">case</span>(filter::dwt):</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>         nband=filteredData[0].size();</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>       <span class="keywordflow">case</span>(filter::dwti):</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>         nband=filteredData[0].size();</div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>       <span class="keywordflow">case</span>(filter::dwt_cut):</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>         nband=filteredData[0].size();</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>       <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>         nband=wavelengthOut.size();</div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>       }</div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>     }</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>       nband=wavelengthOut.size();</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>     <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>       std::cout << <span class="stringliteral">"number of bands: "</span> << nband << std::endl;</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>       std::cout << <span class="stringliteral">"wavelengthOut.size(): "</span> << wavelengthOut.size() << std::endl;</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>     }</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>       <span class="keywordflow">if</span>(!output_opt.empty()){</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>         <span class="keywordflow">if</span>(wavelengthOut.size())</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>           outputStream << wavelengthOut[iband] << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(wavelengthIn_opt.size())</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>           outputStream << iband << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>       }</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>         <span class="keywordflow">if</span>(wavelengthOut.size())</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>           std::cout << wavelengthOut[iband] << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(wavelengthIn_opt.size())</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>           std::cout << iband << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>       }</div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<inputCols_opt.size();++icol){</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>         <span class="keywordflow">if</span>(!output_opt.empty()){</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>           outputStream << filteredData[icol][iband];</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>           <span class="keywordflow">if</span>(icol<inputCols_opt.size()-1)</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>             outputStream << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>             outputStream << std::endl;</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>         }</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>           std::cout << filteredData[icol][iband];</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>           <span class="keywordflow">if</span>(icol<inputCols_opt.size()-1)</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>             std::cout << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>             std::cout << std::endl;</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>         }</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>       }</div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>     }    </div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>   }</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>   <span class="keywordflow">if</span>(!output_opt.empty())</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>     outputStream.close();</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>   <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span> }</div>
-<div class="ttc" id="classFileReaderAscii_html"><div class="ttname"><a href="classFileReaderAscii.html">FileReaderAscii</a></div><div class="ttdef"><b>Definition:</b> <a href="FileReaderAscii_8h_source.html#l00030">FileReaderAscii.h:30</a></div></div>
-<div class="ttc" id="classfilter_1_1Filter_html"><div class="ttname"><a href="classfilter_1_1Filter.html">filter::Filter</a></div><div class="ttdef"><b>Definition:</b> <a href="Filter_8h_source.html#l00040">Filter.h:40</a></div></div>
-<div class="ttc" id="classVector2d_html"><div class="ttname"><a href="classVector2d.html">Vector2d< double ></a></div></div>
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkfilterdem.html b/doc/html/pkfilterdem.html
deleted file mode 100644
index 9246f6b..0000000
--- a/doc/html/pkfilterdem.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: pkfilterdem</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkfilterdem </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><p>Filter digital elevation model raster datasets </p>
-<h2>SYNOPSIS</h2>
-<p><code> Usage: pkfilterdem -i input.txt -o output </code></p>
-<p><code></code></p>
-<p><code> Options: [-f filter] [-dim maxsize]</code></p>
-<p><code> Advanced options: [-ot type] [-of format] [-ct colortable] [-nodata value] [-circ] [-st threshold] [-ht threshold] [-minchange value]</code></p>
-<p><code></code></p>
-<h1><a class="anchor" id="pkfilterdem_description"></a>
-Description</h1>
-<p>The utility pkfilterdem can be used to filter digital elevation models. It is typically used after the utility <a class="el" href="pklas2img.html">pklas2img</a> to create a digital terrain model. The default filter operation is the <a href="http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=1202973&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D1202973">progressive morphological filter</a>. </p>
-<h1><a class="anchor" id="pkfilterdem_options"></a>
-Options</h1>
-<ul>
-<li>use either <code>-short</code> or <code>--long</code> options (both <code>--long=value</code> and <code>--long value</code> are supported)</li>
-<li>short option <code>-h</code> shows basic options only, long option <code>--help</code> shows all options <table class="doxtable">
-<tr>
-<th>short</th><th>long</th><th>type</th><th>default</th><th>description  </th></tr>
-<tr>
-<td>i </td><td>input </td><td>std::string </td><td></td><td>input image file </td></tr>
-<tr>
-<td>o </td><td>output </td><td>std::string </td><td></td><td>Output image file </td></tr>
-<tr>
-<td>f </td><td>filter </td><td>std::string </td><td></td><td>post processing filter: vito, etew_min, promorph (progressive morphological filter),open,close). </td></tr>
-<tr>
-<td>dim </td><td>dim </td><td>double </td><td>17 </td><td>maximum filter kernel size </td></tr>
-<tr>
-<td>circ </td><td>circular </td><td>bool </td><td>false </td><td>circular disc kernel for dilation and erosion </td></tr>
-<tr>
-<td>st </td><td>st </td><td>double </td><td>0 </td><td>slope threshold used for morphological filtering. Use a low values to remove more height objects in flat terrains </td></tr>
-<tr>
-<td>ht </td><td>ht </td><td>double </td><td>0.2 </td><td>initial height threshold for progressive morphological filtering. Use low values to remove more height objects. Optionally, a maximum height threshold can be set via a second argument (e.g., -ht 0.2 -ht 2.5 sets an initial threshold at 0.2 m and caps the threshold at 2.5 m). </td></tr>
-<tr>
-<td>minchange </td><td>minchange </td><td>short </td><td>0 </td><td>Stop iterations when no more pixels are changed than this threshold. </td></tr>
-<tr>
-<td>ot </td><td>otype </td><td>std::string </td><td></td><td>Data type for output image ({Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/CInt16/CInt32/CFloat32/CFloat64}). Empty string: inherit type from input image </td></tr>
-<tr>
-<td>of </td><td>oformat </td><td>std::string </td><td>GTiff </td><td>Output image format (see also gdal_translate). </td></tr>
-<tr>
-<td>ct </td><td>ct </td><td>std::string </td><td></td><td>color table (file with 5 columns: id R G B ALFA (0: transparent, 255: solid). Use none to ommit color table </td></tr>
-<tr>
-<td>nodata </td><td>nodata </td><td>short </td><td></td><td>nodata value </td></tr>
-</table>
-Usage: pkfilterdem -i input.txt -o output </li>
-</ul>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkfilterdem_8cc_source.html b/doc/html/pkfilterdem_8cc_source.html
deleted file mode 100644
index da952a3..0000000
--- a/doc/html/pkfilterdem_8cc_source.html
+++ /dev/null
@@ -1,462 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/pkfilterdem.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkfilterdem.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pkfilterdem.cc: Filter digital elevation model raster datasets</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <assert.h></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <iostream></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <string></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "base/Vector2d.h"</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "algorithms/Filter2d.h"</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "imageclasses/ImgReaderGdal.h"</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "imageclasses/ImgWriterGdal.h"</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> </div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="comment">/******************************************************************************/</span></div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span> <span class="comment">/*------------------</span></div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span> <span class="comment">  Main procedure</span></div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span> <span class="comment">  ----------------*/</span></div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc,<span class="keywordtype">char</span> **argv) {</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> input_opt(<span class="stringliteral">"i"</span>,<span class="stringliteral">"input"</span>,<span class="stringliteral">"input image file"</span>);</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> output_opt(<span class="stringliteral">"o"</span>, <span class="stringliteral">"output"</span>, <span class="stringliteral">"Output image file"</span>);</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>   <span class="comment">// Optionpk<std::string> tmpdir_opt("tmp", "tmp", "Temporary directory","/tmp",2);</span></div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> disc_opt(<span class="stringliteral">"circ"</span>, <span class="stringliteral">"circular"</span>, <span class="stringliteral">"circular disc kernel for dilation and erosion"</span>, <span class="keyword">false</span>);</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> postFilter_opt(<span class="stringliteral">"f"</span>, <span class="stringliteral">"filter"</span>, <span class="stringliteral">"post processing filter: vito, etew_min, promorph (progressive morphological filter),open,close)."</span>);</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> dim_opt(<span class="stringliteral">"dim"</span>, <span class="stringliteral">"dim"</span>, <span class="stringliteral">"maximum filter kernel size"</span>, 17);</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> maxSlope_opt(<span class="stringliteral">"st"</span>, <span class="stringliteral">"st"</span>, <span class="stringliteral">"slope threshold used for morphological filtering. Use a low values to remove more height objects in flat terrains"</span>, 0.0);</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> hThreshold_opt(<span class="stringliteral">"ht"</span>, <span class="stringliteral">"ht"</span>, <span class="stringliteral">"initial height threshold for progressive morphological filtering. Use low values to remove more height objects. Optionally, a maximum height threshold can be set via a second argument (e.g., - [...]
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> minChange_opt(<span class="stringliteral">"minchange"</span>, <span class="stringliteral">"minchange"</span>, <span class="stringliteral">"Stop iterations when no more pixels are changed than this threshold."</span>, 0);</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a>  otype_opt(<span class="stringliteral">"ot"</span>, <span class="stringliteral">"otype"</span>, <span class="stringliteral">"Data type for output image ({Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/CInt16/CInt32/CFloat32/CFloat64}). Empty string: inherit type from input image"</span>,<span class="stringl [...]
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  oformat_opt(<span class="stringliteral">"of"</span>, <span class="stringliteral">"oformat"</span>, <span class="stringliteral">"Output image format (see also gdal_translate)."</span>,<span class="stringliteral">"GTiff"</span>);</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  colorTable_opt(<span class="stringliteral">"ct"</span>, <span class="stringliteral">"ct"</span>, <span class="stringliteral">"color table (file with 5 columns: id R G B ALFA (0: transparent, 255: solid). Use none to ommit color table"</span>);</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> option_opt(<span class="stringliteral">"co"</span>, <span class="stringliteral">"co"</span>, <span class="stringliteral">"Creation option for output file. Multiple options can be specified."</span>);</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> nodata_opt(<span class="stringliteral">"nodata"</span>, <span class="stringliteral">"nodata"</span>, <span class="stringliteral">"nodata value"</span>);</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> verbose_opt(<span class="stringliteral">"v"</span>, <span class="stringliteral">"verbose"</span>, <span class="stringliteral">"verbose mode if > 0"</span>, 0,2);</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span> </div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>   disc_opt.setHide(1);</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   maxSlope_opt.setHide(1);</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   hThreshold_opt.setHide(1);</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>   minChange_opt.setHide(1);</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>   otype_opt.setHide(1);</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>   oformat_opt.setHide(1);</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>   colorTable_opt.setHide(1);</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>   nodata_opt.setHide(1);</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span> </div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>   <span class="keywordtype">bool</span> doProcess;<span class="comment">//stop process when program was invoked with help option (-h --help)</span></div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     doProcess=input_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     output_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     <span class="comment">// tmpdir_opt.retrieveOption(argc,argv);</span></div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     postFilter_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     dim_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>     disc_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>     maxSlope_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>     hThreshold_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>     minChange_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     otype_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     oformat_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     colorTable_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     nodata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     verbose_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>   }</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> predefinedString){</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>     std::cout << predefinedString << std::endl;</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>     exit(0);</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   }</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>   <span class="keywordflow">if</span>(!doProcess){</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     cout << endl;</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>     cout << <span class="stringliteral">"Usage: pkfilterdem -i input.txt -o output"</span> << endl;</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     cout << endl;</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>     std::cout << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << std::endl;</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>     exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>   }</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span> </div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>   <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> input;</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>   <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> outputWriter;</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>   <span class="keywordflow">if</span>(input_opt.empty()){</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>     cerr << <span class="stringliteral">"Error: no input file selected, use option -i"</span> << endl;</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>     exit(1);</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>   }</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>   <span class="keywordflow">if</span>(output_opt.empty()){</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>     cerr << <span class="stringliteral">"Error: no outputWriter file selected, use option -o"</span> << endl;</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>     exit(1);</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>   }</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>   <span class="keywordflow">if</span>(postFilter_opt.empty()){</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>     cerr << <span class="stringliteral">"Error: no filter selected, use option -f"</span> << endl;</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>     exit(1);</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>   }</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>   input.open(input_opt[0]);</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>   GDALDataType theType=GDT_Unknown;</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>     cout << <span class="stringliteral">"possible output data types: "</span>;</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iType = 0; iType < GDT_TypeCount; ++iType){</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>       cout << <span class="stringliteral">" "</span> << GDALGetDataTypeName((GDALDataType)iType);</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>     <span class="keywordflow">if</span>( GDALGetDataTypeName((GDALDataType)iType) != NULL</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>         && EQUAL(GDALGetDataTypeName((GDALDataType)iType),</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>                  otype_opt[0].c_str()))</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>       theType=(GDALDataType) iType;</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>   }</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>   <span class="keywordflow">if</span>(theType==GDT_Unknown)</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>     theType=input.getDataType();</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span> </div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>     std::cout << std::endl << <span class="stringliteral">"Output pixel type:  "</span> << GDALGetDataTypeName(theType) << endl;</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span> </div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>   <span class="keywordtype">string</span> imageType;<span class="comment">//=input.getImageType();</span></div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>   <span class="keywordflow">if</span>(oformat_opt.size())</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>     imageType=oformat_opt[0];</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span> </div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>   <span class="keywordflow">if</span>(option_opt.findSubstring(<span class="stringliteral">"INTERLEAVE="</span>)==option_opt.end()){</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>     <span class="keywordtype">string</span> theInterleave=<span class="stringliteral">"INTERLEAVE="</span>;</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>     theInterleave+=input.getInterleave();</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>     option_opt.push_back(theInterleave);</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>   }</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span> </div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>     cout << <span class="stringliteral">"opening output file "</span> << output_opt[0] << endl;</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>   outputWriter.open(output_opt[0],input.nrOfCol(),input.nrOfRow(),1,theType,imageType,option_opt);</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>   <span class="comment">//set projection</span></div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>   outputWriter.setProjection(input.getProjection());</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>   outputWriter.copyGeoTransform(input);</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>   <span class="keywordflow">if</span>(colorTable_opt.size())</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>     outputWriter.setColorTable(colorTable_opt[0]);   </div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span> </div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>   <span class="comment">//set nodata value</span></div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>   <span class="keywordflow">if</span>(nodata_opt.size()){</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<outputWriter.nrOfBand();++iband)</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>     outputWriter.GDALSetNoDataValue(nodata_opt[0],iband);</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>   }</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span> </div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> inputData(input.nrOfRow(),input.nrOfCol());</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> outputData(outputWriter.nrOfRow(),outputWriter.nrOfCol());</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> tmpData(outputWriter.nrOfRow(),outputWriter.nrOfCol());</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>   input.readDataBlock(inputData,GDT_Float64,0,inputData.nCols()-1,0,inputData.nRows()-1);</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span> </div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>   <span class="comment">//apply post filter</span></div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>   std::cout << <span class="stringliteral">"Applying post processing filter: "</span> << postFilter_opt[0] << std::endl;</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span> </div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>   <span class="comment">// const char* pszMessage;</span></div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>   <span class="comment">// void* pProgressArg=NULL;</span></div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>   <span class="comment">// GDALProgressFunc pfnProgress=GDALTermProgress;</span></div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>   <span class="comment">// double progress=0;</span></div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>   <span class="comment">// pfnProgress(progress,pszMessage,pProgressArg);</span></div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span> </div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>   <span class="comment">//make sure dim_opt contains initial [0] and maximum [1] kernel sizes in this order</span></div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>   <span class="keywordflow">if</span>(dim_opt.size()<2)</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>     dim_opt.insert(dim_opt.begin(),3);</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>   <span class="keywordflow">if</span>(dim_opt[0]>dim_opt[1]){</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>     dim_opt.insert(dim_opt.begin(),dim_opt[1]);</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>     dim_opt.erase(dim_opt.begin()+2);</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>   }</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span> </div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>   <a class="code" href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a> theFilter;</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>   <span class="keywordflow">if</span>(nodata_opt.size()){</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> inodata=0;inodata<nodata_opt.size();++inodata)</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>       theFilter.pushNoDataValue(nodata_opt[inodata]);</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>   }</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span> </div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> nchange=1;</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>   <span class="keywordflow">if</span>(postFilter_opt[0]==<span class="stringliteral">"vito"</span>){</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>     <span class="comment">//todo: fill empty pixels</span></div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>     <span class="comment">// hThreshold_opt.resize(4);</span></div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>     <span class="comment">// hThreshold_opt[0]=0.7;</span></div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>     <span class="comment">// hThreshold_opt[1]=0.3;</span></div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>     <span class="comment">// hThreshold_opt[2]=0.1;</span></div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>     <span class="comment">// hThreshold_opt[2]=-0.2;</span></div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>     vector<int> nlimit(4);</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>     nlimit[0]=2;</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>     nlimit[1]=3;</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>     nlimit[2]=4;</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>     nlimit[2]=2;</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>     <span class="comment">//init finalMask</span></div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<tmpData.nRows();++irow)</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<tmpData.nCols();++icol)</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>     tmpData[irow][icol]=1;</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iheight=0;iheight<hThreshold_opt.size();++iheight){</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>     cout << <span class="stringliteral">"height: "</span> << hThreshold_opt[iheight] << endl;</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>       <span class="comment">//todo:replace with binary mask (or short) -> adapt template with T1,T2 in Filter2d</span></div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>       <a class="code" href="classVector2d.html">Vector2d<double></a> tmpMask(input.nrOfRow(),input.nrOfCol());</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<tmpMask.nRows();++irow)</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<tmpMask.nCols();++icol)</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>       tmpMask[irow][icol]=1;<span class="comment">//1=surface, 0=terrain</span></div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>     cout << <span class="stringliteral">"filtering NWSE"</span> << endl;</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>       <span class="comment">//from here</span></div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>       <span class="comment">// Vector2d<double> tmpDSM(inputData);</span></div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>       <span class="comment">// int dimX=dim_opt[0];</span></div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>       <span class="comment">// int dimY=dim_opt[0];</span></div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>       <span class="comment">// assert(dimX);</span></div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>       <span class="comment">// assert(dimY);</span></div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>       <span class="comment">// statfactory::StatFactory stat;</span></div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>       <span class="comment">// Vector2d<double> inBuffer(dimY,inputData.nCols());</span></div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>       <span class="comment">// if(tmpData.size()!=inputData.nRows())</span></div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>       <span class="comment">//    tmpData.resize(inputData.nRows());</span></div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>       <span class="comment">// int indexI=0;</span></div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>       <span class="comment">// int indexJ=inputData.nRows()-1;</span></div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>       <span class="comment">// // int indexJ=0;</span></div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>       <span class="comment">// //initialize last half of inBuffer</span></div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>       <span class="comment">// for(int j=-(dimY-1)/2;j<=dimY/2;++j){</span></div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>       <span class="comment">//    for(int i=0;i<inputData.nCols();++i)</span></div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>       <span class="comment">//      inBuffer[indexJ][i]=tmpDSM[abs(j)][i];</span></div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>       <span class="comment">//    --indexJ;</span></div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>       <span class="comment">//    // ++indexJ;</span></div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>       <span class="comment">// }</span></div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>       <span class="comment">// for(int y=tmpDSM.nRows()-1;y>=0;--y){</span></div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>       <span class="comment">//    if(y){//inBuffer already initialized for y=0</span></div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>       <span class="comment">//      //erase first line from inBuffer</span></div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>       <span class="comment">//      inBuffer.erase(inBuffer.end()-1);</span></div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>       <span class="comment">//      // inBuffer.erase(inBuffer.begin());</span></div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>       <span class="comment">//      //read extra line and push back to inBuffer if not out of bounds</span></div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>       <span class="comment">//      if(y+dimY/2<tmpDSM.nRows()){</span></div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>       <span class="comment">//        //allocate buffer</span></div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>       <span class="comment">//        // inBuffer.push_back(inBuffer.back());</span></div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>       <span class="comment">//        inBuffer.insert(inBuffer.begin(),*(inBuffer.begin()));</span></div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>       <span class="comment">//        for(int i=0;i<tmpDSM.nCols();++i) </span></div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>       <span class="comment">//          inBuffer[0][i]=tmpDSM[y-dimY/2][i];</span></div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>       <span class="comment">//          // inBuffer[inBuffer.size()-1][i]=tmpDSM[y+dimY/2][i];</span></div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>       <span class="comment">//      }</span></div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>       <span class="comment">//      else{</span></div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>       <span class="comment">//        int over=y+dimY/2-tmpDSM.nRows();</span></div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>       <span class="comment">//        int index=(inBuffer.size()-1)-over;</span></div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>       <span class="comment">//        assert(index>=0);</span></div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>       <span class="comment">//        assert(index<inBuffer.size());</span></div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>       <span class="comment">//        inBuffer.push_back(inBuffer[index]);</span></div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>       <span class="comment">//      }</span></div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>       <span class="comment">//    }</span></div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>       <span class="comment">//    for(int x=tmpDSM.nCols()-1;x>=0;--x){</span></div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>       <span class="comment">//      double centerValue=inBuffer[(dimY-1)/2][x];</span></div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>       <span class="comment">//      //test</span></div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>       <span class="comment">//      cout << "pixel ("  << x << "," << y << "): " << centerValue << endl;</span></div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>       <span class="comment">//      short nmasked=0;</span></div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>       <span class="comment">//      std::vector<double> neighbors;</span></div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>       <span class="comment">//      for(int j=-(dimY-1)/2;j<=dimY/2;++j){</span></div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>       <span class="comment">//        for(int i=-(dimX-1)/2;i<=dimX/2;++i){</span></div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>       <span class="comment">//          indexI=x+i;</span></div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>       <span class="comment">//          //check if out of bounds</span></div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>       <span class="comment">//          if(indexI<0)</span></div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>       <span class="comment">//        indexI=-indexI;</span></div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>       <span class="comment">//          else if(indexI>=tmpDSM.nCols())</span></div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>       <span class="comment">//        indexI=tmpDSM.nCols()-i;</span></div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>       <span class="comment">//          if(y+j<0)</span></div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>       <span class="comment">//        indexJ=-j;</span></div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>       <span class="comment">//          else if(y+j>=tmpDSM.nRows())</span></div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>       <span class="comment">//        indexJ=(dimY>2) ? (dimY-1)/2-j : 0;</span></div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>       <span class="comment">//          else</span></div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>       <span class="comment">//        indexJ=(dimY-1)/2+j;</span></div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>       <span class="comment">//          double difference=(centerValue-inBuffer[indexJ][indexI]);</span></div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>       <span class="comment">//          //test</span></div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>       <span class="comment">//          cout << "centerValue-inBuffer[" << indexJ << "][" << indexI << "]=" << centerValue << " - " << inBuffer[indexJ][indexI] << " = " << difference << endl;</span></div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>       <span class="comment">//          if(i||j)//skip centerValue</span></div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>       <span class="comment">//        neighbors.push_back(inBuffer[indexJ][indexI]);</span></div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>       <span class="comment">//          if(difference>hThreshold_opt[iheight])</span></div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>       <span class="comment">//        ++nmasked;</span></div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>       <span class="comment">//        }</span></div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>       <span class="comment">//      }</span></div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>       <span class="comment">//      //test</span></div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>       <span class="comment">//      cout << "pixel " << x << ", " << y << ": nmasked is " << nmasked << endl;</span></div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>       <span class="comment">//      if(nmasked<=nlimit[iheight]){</span></div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>       <span class="comment">//        ++nchange;</span></div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>       <span class="comment">//        //reset pixel in outputMask</span></div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>       <span class="comment">//        tmpData[y][x]=0;</span></div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>       <span class="comment">//        //test</span></div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>       <span class="comment">//        cout << "pixel " << x << ", " << y << " is ground" << endl;</span></div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>       <span class="comment">//      }</span></div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>       <span class="comment">//      else{</span></div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>       <span class="comment">//        //reset pixel height in tmpDSM</span></div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>       <span class="comment">//        sort(neighbors.begin(),neighbors.end());</span></div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>       <span class="comment">//        assert(neighbors.size()>1);</span></div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>       <span class="comment">//        inBuffer[(dimY-1)/2][x]=neighbors[1];</span></div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>       <span class="comment">//        //test</span></div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>       <span class="comment">//        cout << "pixel " << x << ", " << y << " is surface, reset DSM to " << neighbors[1] << endl;</span></div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>       <span class="comment">//        /* inBuffer[(dimY-1)/2][x]=stat.mymin(neighbors); */</span></div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>       <span class="comment">//      }</span></div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>       <span class="comment">//    }</span></div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>       <span class="comment">// }</span></div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>       <span class="comment">//to here</span></div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span> </div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>       theFilter.dsm2dtm_nwse(inputData,tmpData,hThreshold_opt[iheight],nlimit[iheight],dim_opt[0]);</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>         cout << <span class="stringliteral">"filtering NESW"</span> << endl;</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>       theFilter.dsm2dtm_nesw(inputData,tmpData,hThreshold_opt[iheight],nlimit[iheight],dim_opt[0]);</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>         cout << <span class="stringliteral">"filtering SENW"</span> << endl;</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>       theFilter.dsm2dtm_senw(inputData,tmpData,hThreshold_opt[iheight],nlimit[iheight],dim_opt[0]);</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>         cout << <span class="stringliteral">"filtering SWNE"</span> << endl;</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>       theFilter.dsm2dtm_swne(inputData,tmpData,hThreshold_opt[iheight],nlimit[iheight],dim_opt[0]);</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>     }</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>     outputData=tmpData;</div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>     <span class="comment">//todo: interpolate</span></div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>     <span class="comment">//outputData.setMask(tmpData,1,0);</span></div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>   }    </div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(postFilter_opt[0]==<span class="stringliteral">"etew_min"</span>){</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>     <span class="comment">//Elevation Threshold with Expand Window (ETEW) Filter (p.73 from Airborne LIDAR Data Processing and Analysis Tools ALDPAT 1.0)</span></div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>     <span class="comment">//first iteration is performed assuming only minima are selected using options -fir all -comp min</span></div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>     <span class="comment">//increase cells and thresholds until no points from the previous iteration are discarded.</span></div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>     <span class="keywordtype">int</span> dim=dim_opt[0];</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>     <span class="comment">// theFilter.setNoValue(0);</span></div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>     <span class="keywordtype">int</span> iteration=1;</div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>     <span class="keywordflow">while</span>(nchange>minChange_opt[0]&&dim<=dim_opt[1]){</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>       <span class="keywordtype">double</span> hThreshold=maxSlope_opt[0]*dim;</div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>       nchange=theFilter.morphology(inputData,outputData,<span class="stringliteral">"erode"</span>,dim,dim,disc_opt[0],hThreshold);</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>       inputData=outputData;</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>       dim+=2;<span class="comment">//change from theory: originally double cellCize</span></div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>       std::cout << <span class="stringliteral">"iteration "</span> << iteration << <span class="stringliteral">": "</span> << nchange << <span class="stringliteral">" pixels changed"</span> << std::endl;</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>       ++iteration;</div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>     }</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>   }    </div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(postFilter_opt[0]==<span class="stringliteral">"promorph"</span>){</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>     <span class="comment">//Progressive morphological filter tgrs2003_zhang vol41 pp 872-882</span></div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>     <span class="comment">//first iteration is performed assuming only minima are selected using options -fir all -comp min</span></div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>     <span class="comment">//increase cells and thresholds until no points from the previous iteration are discarded.</span></div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>     <span class="keywordtype">int</span> dim=dim_opt[0];</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>     <span class="keywordtype">double</span> hThreshold=hThreshold_opt[0];</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>     <span class="keywordtype">int</span> iteration=1;</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>     <span class="keywordflow">while</span>(nchange>minChange_opt[0]&&dim<=dim_opt[1]){</div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>       std::cout << <span class="stringliteral">"iteration "</span> << iteration << <span class="stringliteral">" with window size "</span> << dim << <span class="stringliteral">" and dh_max: "</span> << hThreshold << std::endl;</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>         nchange=theFilter.morphology(inputData,outputData,<span class="stringliteral">"erode"</span>,dim,dim,disc_opt[0],hThreshold);</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>         theFilter.morphology(outputData,inputData,<span class="stringliteral">"dilate"</span>,dim,dim,disc_opt[0],hThreshold);</div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>     theFilter.doit(inputData,outputData,<span class="stringliteral">"median"</span>,dim,dim,1,disc_opt[0]);</div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>     inputData=outputData;</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>       }</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>       <span class="keywordflow">catch</span>(std::string errorString){</div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>         cout << errorString << endl;</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>         exit(1);</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>       }</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>       <span class="keywordtype">int</span> newdim=(dim==1)? 3: 2*(dim-1)+1;</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>       hThreshold=hThreshold_opt[0]+maxSlope_opt[0]*(newdim-dim)*input.getDeltaX();</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>       dim=newdim;</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>       <span class="keywordflow">if</span>(hThreshold_opt.size()>1){</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>     <span class="keywordflow">if</span>(hThreshold>hThreshold_opt[1]){</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>       hThreshold=hThreshold_opt[1];</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>     }</div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>       }</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>       std::cout << <span class="stringliteral">"iteration "</span> << iteration << <span class="stringliteral">": "</span> << nchange << <span class="stringliteral">" pixels changed"</span> << std::endl;</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>       ++iteration;</div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>     }</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>   }    </div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(postFilter_opt[0]==<span class="stringliteral">"open"</span>){</div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>       theFilter.morphology(inputData,tmpData,<span class="stringliteral">"erode"</span>,dim_opt[0],dim_opt[0],disc_opt[0],hThreshold_opt[0]);</div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>       theFilter.morphology(tmpData,outputData,<span class="stringliteral">"dilate"</span>,dim_opt[0],dim_opt[0],disc_opt[0],hThreshold_opt[0]);</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>       outputData=inputData;</div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span>     }</div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>     <span class="keywordflow">catch</span>(std::string errorString){</div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>       cout << errorString << endl;</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>       exit(1);</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span>     }</div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>   }</div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(postFilter_opt[0]==<span class="stringliteral">"close"</span>){</div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>       theFilter.morphology(inputData,tmpData,<span class="stringliteral">"dilate"</span>,dim_opt[0],dim_opt[0],disc_opt[0],hThreshold_opt[0]);</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>       theFilter.morphology(tmpData,outputData,<span class="stringliteral">"erode"</span>,dim_opt[0],dim_opt[0],disc_opt[0],hThreshold_opt[0]);</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>     }</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span>     <span class="keywordflow">catch</span>(std::string errorString){</div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>       cout << errorString << endl;</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>       exit(1);</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>     }</div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>   }</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span>   <span class="comment">//write outputData to outputWriter</span></div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>   outputWriter.writeDataBlock(outputData,GDT_Float64,0,outputData.nCols()-1,0,outputData.nRows()-1);</div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span> </div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span>   <span class="comment">// progress=1;</span></div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>   <span class="comment">// pfnProgress(progress,pszMessage,pProgressArg);</span></div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span>   input.close();</div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span>   outputWriter.close();</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>   <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span> }</div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-<div class="ttc" id="classImgWriterGdal_html"><div class="ttname"><a href="classImgWriterGdal.html">ImgWriterGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgWriterGdal_8h_source.html#l00033">ImgWriterGdal.h:33</a></div></div>
-<div class="ttc" id="classfilter2d_1_1Filter2d_html"><div class="ttname"><a href="classfilter2d_1_1Filter2d.html">filter2d::Filter2d</a></div><div class="ttdef"><b>Definition:</b> <a href="Filter2d_8h_source.html#l00065">Filter2d.h:65</a></div></div>
-<div class="ttc" id="classVector2d_html"><div class="ttname"><a href="classVector2d.html">Vector2d< double ></a></div></div>
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkfilterdem_8py_source.html b/doc/html/pkfilterdem_8py_source.html
deleted file mode 100644
index 3767370..0000000
--- a/doc/html/pkfilterdem_8py_source.html
+++ /dev/null
@@ -1,179 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/pkfilterdem.py Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkfilterdem.py</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment"># -*- coding: utf-8 -*-</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> </div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="stringliteral">    pkfilterdem.py</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="stringliteral">    ---------------------</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="stringliteral">    Date                 : April 2015</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="stringliteral">    Copyright            : (C) 2015 by Pieter Kempeneers</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="stringliteral">    Email                : kempenep at gmail dot com</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="stringliteral">*   This program is free software; you can redistribute it and/or modify  *</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="stringliteral">*   it under the terms of the GNU General Public License as published by  *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="stringliteral">*   the Free Software Foundation; either version 2 of the License, or     *</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="stringliteral">*   (at your option) any later version.                                   *</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> __author__ = <span class="stringliteral">'Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> __date__ = <span class="stringliteral">'April 2015'</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> __copyright__ = <span class="stringliteral">'(C) 2015, Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"># This will get replaced with a git SHA1 when you do a git archive</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> __revision__ = <span class="stringliteral">'$Format:%H$'</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">import</span> os</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">from</span> pktoolsUtils <span class="keyword">import</span> pktoolsUtils</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">from</span> pktoolsAlgorithm <span class="keyword">import</span> pktoolsAlgorithm</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterMultipleInput</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterRaster</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterFile</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">from</span> processing.core.outputs <span class="keyword">import</span> OutputRaster</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterSelection</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterNumber</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterString</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterBoolean</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterExtent</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
-<div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html">   39</a></span> <span class="keyword">class </span><a class="code" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html">pkfilterdem</a>(pktoolsAlgorithm):</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> </div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     INPUT = <span class="stringliteral">"INPUT"</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     OUTPUT = <span class="stringliteral">"OUTPUT"</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     DIM = <span class="stringliteral">"DIM"</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     RTYPE = <span class="stringliteral">'RTYPE'</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     TYPE = [<span class="stringliteral">'Float32'</span>,<span class="stringliteral">'Byte'</span>,<span class="stringliteral">'Int16'</span>,<span class="stringliteral">'UInt16'</span>,<span class="stringliteral">'UInt32'</span>,<span class="stringliteral">'Int32'</span>,<span class="stringliteral">'Float64'</span>,<span class="stringliteral">'CInt16& [...]
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     FILTER_OPTIONS = [<span class="stringliteral">"promorph"</span>]</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     FILTER = <span class="stringliteral">"FILTER"</span></div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     EXTRA = <span class="stringliteral">'EXTRA'</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span> </div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     <span class="keyword">def </span>cliName(self):</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>         <span class="keywordflow">return</span> <span class="stringliteral">"pkfilterdem"</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span> </div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     <span class="keyword">def </span>defineCharacteristics(self):</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>         self.<a class="code" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html#a6cda59e12b5d35384148d3a9e50a380c">name</a> = <span class="stringliteral">"Create DTM from DEM raster dataset)"</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>         self.<a class="code" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html#a362a12d7bac87e1ef6bd3b0921893e4b">group</a> = <span class="stringliteral">"[pktools] LiDAR"</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span> </div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>         self.addParameter(ParameterRaster(self.<a class="code" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html#ac63e9625819c3df9a3f210a44577de8d">INPUT</a>, <span class="stringliteral">'Input layer raster data set'</span>,ParameterRaster))</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html#a231a73cc70938e1e8c0fbfe2ad354666">FILTER</a>,<span class="stringliteral">"filter"</span>,self.<a class="code" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html#aa684f5dff3236fff634fd644507ead3f">FILTER_OPTIONS</a>, 0))</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>         self.addParameter(ParameterNumber(self.<a class="code" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html#a36f24e3cf45c53076e40bf050690c9e4">DIM</a>, <span class="stringliteral">"maximum filter kernel size"</span>,3,<span class="keywordtype">None</span>,17))</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span> </div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>         self.addOutput(OutputRaster(self.<a class="code" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html#af1b0b8b6543976e0436e35269673d135">OUTPUT</a>, <span class="stringliteral">"Output raster data set"</span>))</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html#a93d222282debe7b1e835fe457e42668e">RTYPE</a>, <span class="stringliteral">'Output raster type'</span>, self.<a class="code" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html#a609a8357c611c1b7291714359d293205">TYPE</a>, 0))</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html#a8d539783f415aef729ad8eec26d1befc">EXTRA</a>,</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>                           <span class="stringliteral">'Additional parameters'</span>, <span class="stringliteral">'-of GTiff'</span>, optional=<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span> </div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     <span class="keyword">def </span>processAlgorithm(self, progress):</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>         cliPath = <span class="stringliteral">'"'</span> + os.path.join(pktoolsUtils.pktoolsPath(), self.<a class="code" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html#a0f4ab9a21d0270b9215bdeadd24be172">cliName</a>()) + <span class="stringliteral">'"'</span></div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>         commands = [cliPath]</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span> </div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>         input=self.getParameterValue(self.<a class="code" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html#ac63e9625819c3df9a3f210a44577de8d">INPUT</a>)</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>         <span class="keywordflow">if</span> input != <span class="stringliteral">""</span>:</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>             commands.append(<span class="stringliteral">'-i'</span>)</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>             commands.append(<span class="stringliteral">'"'</span> + input + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span> </div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>         filter=self.<a class="code" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html#aa684f5dff3236fff634fd644507ead3f">FILTER_OPTIONS</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html#a231a73cc70938e1e8c0fbfe2ad354666">FILTER</a>)]</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>         <span class="keywordflow">if</span> filter != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>             commands.append(<span class="stringliteral">"-f"</span>)</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>             commands.append(filter)</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>         <span class="keywordflow">if</span> self.getParameterValue(self.<a class="code" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html#a36f24e3cf45c53076e40bf050690c9e4">DIM</a>) != 0:</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>             commands.append(<span class="stringliteral">"-dim"</span>)</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>             commands.append(str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html#a36f24e3cf45c53076e40bf050690c9e4">DIM</a>)))</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span> </div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>         <span class="keywordflow">if</span> self.<a class="code" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html#a609a8357c611c1b7291714359d293205">TYPE</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html#a93d222282debe7b1e835fe457e42668e">RTYPE</a>)] != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>             commands.append(<span class="stringliteral">'-ot'</span>)</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>             commands.append(self.<a class="code" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html#a609a8357c611c1b7291714359d293205">TYPE</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html#a93d222282debe7b1e835fe457e42668e">RTYPE</a>)])</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>         output=self.getOutputValue(self.<a class="code" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html#af1b0b8b6543976e0436e35269673d135">OUTPUT</a>)</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>         <span class="keywordflow">if</span> output != <span class="stringliteral">""</span>:</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>             commands.append(<span class="stringliteral">"-o"</span>)</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>             commands.append(<span class="stringliteral">'"'</span> + output + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span> </div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>         extra = str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html#a8d539783f415aef729ad8eec26d1befc">EXTRA</a>))</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>         <span class="keywordflow">if</span> len(extra) > 0:</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>             commands.append(extra)</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span> </div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>         pktoolsUtils.runpktools(commands, progress)</div>
-<div class="ttc" id="classqgis_1_1pkfilterdem_1_1pkfilterdem_html_af1b0b8b6543976e0436e35269673d135"><div class="ttname"><a href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html#af1b0b8b6543976e0436e35269673d135">qgis.pkfilterdem.pkfilterdem.OUTPUT</a></div><div class="ttdeci">string OUTPUT</div><div class="ttdef"><b>Definition:</b> <a href="pkfilterdem_8py_source.html#l00042">pkfilterdem.py:42</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilterdem_1_1pkfilterdem_html_a609a8357c611c1b7291714359d293205"><div class="ttname"><a href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html#a609a8357c611c1b7291714359d293205">qgis.pkfilterdem.pkfilterdem.TYPE</a></div><div class="ttdeci">list TYPE</div><div class="ttdef"><b>Definition:</b> <a href="pkfilterdem_8py_source.html#l00045">pkfilterdem.py:45</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilterdem_1_1pkfilterdem_html_a93d222282debe7b1e835fe457e42668e"><div class="ttname"><a href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html#a93d222282debe7b1e835fe457e42668e">qgis.pkfilterdem.pkfilterdem.RTYPE</a></div><div class="ttdeci">string RTYPE</div><div class="ttdef"><b>Definition:</b> <a href="pkfilterdem_8py_source.html#l00044">pkfilterdem.py:44</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilterdem_1_1pkfilterdem_html_a231a73cc70938e1e8c0fbfe2ad354666"><div class="ttname"><a href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html#a231a73cc70938e1e8c0fbfe2ad354666">qgis.pkfilterdem.pkfilterdem.FILTER</a></div><div class="ttdeci">string FILTER</div><div class="ttdef"><b>Definition:</b> <a href="pkfilterdem_8py_source.html#l00047">pkfilterdem.py:47</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilterdem_1_1pkfilterdem_html_aa684f5dff3236fff634fd644507ead3f"><div class="ttname"><a href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html#aa684f5dff3236fff634fd644507ead3f">qgis.pkfilterdem.pkfilterdem.FILTER_OPTIONS</a></div><div class="ttdeci">list FILTER_OPTIONS</div><div class="ttdef"><b>Definition:</b> <a href="pkfilterdem_8py_source.html#l00046">pkfilterdem.py:46</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilterdem_1_1pkfilterdem_html_a8d539783f415aef729ad8eec26d1befc"><div class="ttname"><a href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html#a8d539783f415aef729ad8eec26d1befc">qgis.pkfilterdem.pkfilterdem.EXTRA</a></div><div class="ttdeci">string EXTRA</div><div class="ttdef"><b>Definition:</b> <a href="pkfilterdem_8py_source.html#l00048">pkfilterdem.py:48</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilterdem_1_1pkfilterdem_html_ac63e9625819c3df9a3f210a44577de8d"><div class="ttname"><a href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html#ac63e9625819c3df9a3f210a44577de8d">qgis.pkfilterdem.pkfilterdem.INPUT</a></div><div class="ttdeci">string INPUT</div><div class="ttdef"><b>Definition:</b> <a href="pkfilterdem_8py_source.html#l00041">pkfilterdem.py:41</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilterdem_1_1pkfilterdem_html"><div class="ttname"><a href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pkfilterdem.pkfilterdem</a></div><div class="ttdef"><b>Definition:</b> <a href="pkfilterdem_8py_source.html#l00039">pkfilterdem.py:39</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilterdem_1_1pkfilterdem_html_a6cda59e12b5d35384148d3a9e50a380c"><div class="ttname"><a href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html#a6cda59e12b5d35384148d3a9e50a380c">qgis.pkfilterdem.pkfilterdem.name</a></div><div class="ttdeci">name</div><div class="ttdef"><b>Definition:</b> <a href="pkfilterdem_8py_source.html#l00054">pkfilterdem.py:54</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilterdem_1_1pkfilterdem_html_a362a12d7bac87e1ef6bd3b0921893e4b"><div class="ttname"><a href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html#a362a12d7bac87e1ef6bd3b0921893e4b">qgis.pkfilterdem.pkfilterdem.group</a></div><div class="ttdeci">group</div><div class="ttdef"><b>Definition:</b> <a href="pkfilterdem_8py_source.html#l00055">pkfilterdem.py:55</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilterdem_1_1pkfilterdem_html_a36f24e3cf45c53076e40bf050690c9e4"><div class="ttname"><a href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html#a36f24e3cf45c53076e40bf050690c9e4">qgis.pkfilterdem.pkfilterdem.DIM</a></div><div class="ttdeci">string DIM</div><div class="ttdef"><b>Definition:</b> <a href="pkfilterdem_8py_source.html#l00043">pkfilterdem.py:43</a></div></div>
-<div class="ttc" id="classqgis_1_1pkfilterdem_1_1pkfilterdem_html_a0f4ab9a21d0270b9215bdeadd24be172"><div class="ttname"><a href="classqgis_1_1pkfilterdem_1_1pkfilterdem.html#a0f4ab9a21d0270b9215bdeadd24be172">qgis.pkfilterdem.pkfilterdem.cliName</a></div><div class="ttdeci">def cliName</div><div class="ttdef"><b>Definition:</b> <a href="pkfilterdem_8py_source.html#l00050">pkfilterdem.py:50</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkfsann.html b/doc/html/pkfsann.html
deleted file mode 100644
index 8b15de5..0000000
--- a/doc/html/pkfsann.html
+++ /dev/null
@@ -1,131 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: pkfsann</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkfsann </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><p>feature selection for artificial neural network classifier pkann </p>
-<h2>SYNOPSIS</h2>
-<p><code> Usage: pkfsann -t training -n number </code></p>
-<p><code></code></p>
-<p><code> Options:</code></p>
-<p><code> Advanced options: </code></p>
-<h1><a class="anchor" id="pkfsann_description"></a>
-Description</h1>
-<p>Classification problems dealing with high dimensional input data can be challenging due to the Hughes phenomenon. Hyperspectral data, for instance, can have hundreds of spectral bands and require special attention when being classified. In particular when limited training data are available, the classification of such data can be problematic without reducing the dimension.</p>
-<p>The utility pkfsann implements a number of feature selection techniques, among which a sequential floating forward search (SFFS). Also consider the SVM classifier implemented in pksvm, which has been shown to be more robust to this type of problem than others. </p>
-<h1><a class="anchor" id="pkfsann_options"></a>
-Options</h1>
-<ul>
-<li>use either <code>-short</code> or <code>--long</code> options (both <code>--long=value</code> and <code>--long value</code> are supported)</li>
-<li>short option <code>-h</code> shows basic options only, long option <code>--help</code> shows all options <table class="doxtable">
-<tr>
-<th>short</th><th>long</th><th>type</th><th>default</th><th>description  </th></tr>
-<tr>
-<td>i </td><td>input </td><td>std::string </td><td></td><td>input test set (leave empty to perform a cross validation based on training only) </td></tr>
-<tr>
-<td>t </td><td>training </td><td>std::string </td><td></td><td>training vector file. A single vector file contains all training features (must be set as: B0, B1, B2,...) for all classes (class numbers identified by label option). Use multiple training files for bootstrap aggregation (alternative to the bag and bsize options, where a random subset is taken from a single training file) </td></tr>
-<tr>
-<td>n </td><td>nf </td><td>unsigned short </td><td>0 </td><td>number of features to select (0 to select optimal number, see also ecost option) </td></tr>
-<tr>
-<td>tln </td><td>tln </td><td>std::string </td><td></td><td>training layer name(s) </td></tr>
-<tr>
-<td>label </td><td>label </td><td>std::string </td><td>label </td><td>identifier for class label in training vector file. </td></tr>
-<tr>
-<td></td><td>balance </td><td>unsigned int </td><td>0 </td><td>balance the input data to this number of samples for each class </td></tr>
-<tr>
-<td>random </td><td>random </td><td>bool </td><td>true </td><td>in case of balance, randomize input data </td></tr>
-<tr>
-<td>min </td><td>min </td><td>int </td><td>0 </td><td>if number of training pixels is less then min, do not take this class into account </td></tr>
-<tr>
-<td>b </td><td>band </td><td>unsigned short </td><td></td><td>band index (starting from 0, either use band option or use start to end) </td></tr>
-<tr>
-<td>sband </td><td>startband </td><td>unsigned short </td><td></td><td>Start band sequence number </td></tr>
-<tr>
-<td>eband </td><td>endband </td><td>unsigned short </td><td></td><td>End band sequence number </td></tr>
-<tr>
-<td>offset </td><td>offset </td><td>double </td><td>0 </td><td>offset value for each spectral band input features: refl[band]=(DN[band]-offset[band])/scale[band] </td></tr>
-<tr>
-<td>scale </td><td>scale </td><td>double </td><td>0 </td><td>scale value for each spectral band input features: refl=(DN[band]-offset[band])/scale<a href="use 0 if scale min and max in each band to -1.0 and 1.0">band</a> </td></tr>
-<tr>
-<td>a </td><td>aggreg </td><td>unsigned short </td><td>0 </td><td>how to combine aggregated classifiers, see also rc option (0: no aggregation, 1: sum rule, 2: max rule). </td></tr>
-<tr>
-<td>sm </td><td>sm </td><td>std::string </td><td>sffs </td><td>feature selection method (sffs=sequential floating forward search,sfs=sequential forward search, sbs, sequential backward search ,bfs=brute force search) </td></tr>
-<tr>
-<td>ecost </td><td>ecost </td><td>float </td><td>0.001 </td><td>epsilon for stopping criterion in cost function to determine optimal number of features </td></tr>
-<tr>
-<td>cv </td><td>cv </td><td>unsigned short </td><td>2 </td><td>n-fold cross validation mode </td></tr>
-<tr>
-<td>c </td><td>class </td><td>std::string </td><td></td><td>list of class names. </td></tr>
-<tr>
-<td>r </td><td>reclass </td><td>short </td><td></td><td>list of class values (use same order as in classname opt. </td></tr>
-<tr>
-<td>n </td><td>nneuron </td><td>unsigned int </td><td>5 </td><td>number of neurons in hidden layers in neural network (multiple hidden layers are set by defining multiple number of neurons: -n 15 -n 1, default is one hidden layer with 5 neurons) </td></tr>
-<tr>
-<td></td><td>connection </td><td>float </td><td>1 </td><td>connection reate (default: 1.0 for a fully connected network) </td></tr>
-<tr>
-<td>w </td><td>weights </td><td>float </td><td>0 </td><td>weights for neural network. Apply to fully connected network only, starting from first input neuron to last output neuron, including the bias neurons (last neuron in each but last layer) </td></tr>
-<tr>
-<td>l </td><td>learning </td><td>float </td><td>0.7 </td><td>learning rate (default: 0.7) </td></tr>
-<tr>
-<td></td><td>maxit </td><td>unsigned int </td><td>500 </td><td>number of maximum iterations (epoch) (default: 500) </td></tr>
-</table>
-Usage: pkfsann -t training -n number </li>
-</ul>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkfsann_8cc_source.html b/doc/html/pkfsann_8cc_source.html
deleted file mode 100644
index 5c64117..0000000
--- a/doc/html/pkfsann_8cc_source.html
+++ /dev/null
@@ -1,746 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/pkfsann.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkfsann.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pkfsann.cc: feature selection for artificial neural network classifier pkann</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <stdlib.h></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <vector></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <string></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <map></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <algorithm></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "imageclasses/ImgReaderOgr.h"</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "algorithms/ConfusionMatrix.h"</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include "algorithms/CostFactory.h"</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include "algorithms/FeatureSelector.h"</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include "floatfann.h"</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="preprocessor">#include "algorithms/myfann_cpp.h"</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="preprocessor">#include "pkfsann.h"</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> </div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="preprocessor">#ifdef HAVE_CONFIG_H</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="preprocessor"></span><span class="preprocessor">#include <config.h></span></div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="comment">/******************************************************************************/</span></div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span> </div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span> <span class="preprocessor">#define Malloc(type,n) (type *)malloc((n)*sizeof(type))</span></div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span> CostFactoryANN::CostFactoryANN(<span class="keyword">const</span> vector<unsigned int>& nneuron, <span class="keywordtype">float</span> connection, <span class="keyword">const</span> std::vector<float> weights, <span class="keywordtype">float</span> learning, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> maxit, <span class="keywordtype">unsigned</span> <span clas [...]
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>   : <a class="code" href="classCostFactory.html">CostFactory</a>(cv,verbose), m_nneuron(nneuron), m_connection(connection), m_weights(weights), m_learning(learning), m_maxit(maxit){};</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span> </div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span> CostFactoryANN::~CostFactoryANN(){</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span> }</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span> </div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span> <span class="keywordtype">double</span> CostFactoryANN::getCost(<span class="keyword">const</span> vector<<a class="code" href="classVector2d.html">Vector2d<float></a> > &trainingFeatures)</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span> {</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> nclass=trainingFeatures.size();</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ntraining=0;</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ntest=0;</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>     ntraining+=m_nctraining[iclass];</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>     ntest+=m_nctest[iclass];</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>   }</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>   <span class="keywordflow">if</span>(ntest)</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     assert(!m_cv);</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>   <span class="keywordflow">if</span>(!m_cv)</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     assert(ntest);</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> nFeatures=trainingFeatures[0][0].size();</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span> </div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>   <a class="code" href="classFANN_1_1neural__net.html">FANN::neural_net</a> net;<span class="comment">//the neural network</span></div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>   <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_layers = m_nneuron.size()+2;</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>   <span class="keyword">const</span> <span class="keywordtype">float</span> desired_error = 0.0003;</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iterations_between_reports = (m_verbose) ? m_maxit+1:0;</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>   <span class="keywordflow">if</span>(m_verbose>1){</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     cout << <span class="stringliteral">"creating artificial neural network with "</span> << m_nneuron.size() << <span class="stringliteral">" hidden layer, having "</span> << endl;</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ilayer=0;ilayer<m_nneuron.size();++ilayer)</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>       cout << m_nneuron[ilayer] << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>     cout << <span class="stringliteral">"neurons"</span> << endl;</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>   }</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>   <span class="keywordflow">switch</span>(num_layers){</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>   <span class="keywordflow">case</span>(3):{</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> layers[3];</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>     layers[0]=nFeatures;</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>     layers[1]=m_nneuron[0];</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>     layers[2]=nclass;</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>     net.create_sparse_array(m_connection,num_layers,layers);</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>   }</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>   <span class="keywordflow">case</span>(4):{</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> layers[4];</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>     layers[0]=nFeatures;</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>     layers[1]=m_nneuron[0];</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>     layers[2]=m_nneuron[1];</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>     layers[3]=nclass;</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>     net.create_sparse_array(m_connection,num_layers,layers);</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>   }</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>   <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>     cerr << <span class="stringliteral">"Only 1 or 2 hidden layers are supported!"</span> << endl;</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>     exit(1);</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>   }</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span> </div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>   net.set_learning_rate(m_learning);</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>     </div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>   net.set_activation_function_hidden(FANN::SIGMOID_SYMMETRIC_STEPWISE);</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>   net.set_activation_function_output(FANN::SIGMOID_SYMMETRIC_STEPWISE);</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span> </div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>   vector<unsigned short> referenceVector;</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   vector<unsigned short> outputVector;</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>   <span class="keywordtype">float</span> rmse=0;</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>   vector<Vector2d<float> > tmpFeatures(nclass);</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>     tmpFeatures[iclass].resize(trainingFeatures[iclass].size(),nFeatures);</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>     <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> isample=0;isample<m_nctraining[iclass];++isample){</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ifeature=0;ifeature<nFeatures;++ifeature){</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>           tmpFeatures[iclass][isample][ifeature]=trainingFeatures[iclass][isample][ifeature];</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>       }</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>     }</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>   }</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>   m_cm.clearResults();</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>   <span class="keywordflow">if</span>(m_cv>0){</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>     rmse=net.cross_validation(tmpFeatures,</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>                               ntraining,</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>                               m_cv,</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>                               m_maxit,</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>                               desired_error,</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>                               referenceVector,</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>                               outputVector,</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>                               m_verbose);</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<referenceVector.size();++isample){</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>       <span class="keywordtype">string</span> refClassName=m_nameVector[referenceVector[isample]];</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>       <span class="keywordtype">string</span> className=m_nameVector[outputVector[isample]];</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>       <span class="keywordflow">if</span>(m_classValueMap.size())</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>     m_cm.incrementResult(type2string<short>(m_classValueMap[refClassName]),type2string<short>(m_classValueMap[className]),1.0);</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>     m_cm.incrementResult(m_cm.getClass(referenceVector[isample]),m_cm.getClass(outputVector[isample]),1.0);</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>     }</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>   }</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>   <span class="keywordflow">else</span>{<span class="comment">//not working yet. please repair...</span></div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>     assert(m_cv>0);</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>     <span class="keywordtype">bool</span> initWeights=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>     net.train_on_data(tmpFeatures,ntraining,initWeights, m_maxit,</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>                       iterations_between_reports, desired_error);</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>     vector<Vector2d<float> > testFeatures(nclass);</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>     vector<float> result(nclass);</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>     <span class="keywordtype">int</span> maxClass=-1;</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>       testFeatures.resize(m_nctest[iclass],nFeatures);</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>       <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> isample=0;isample<m_nctraining[iclass];++isample){</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ifeature=0;ifeature<nFeatures;++ifeature){</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>           testFeatures[iclass][isample][ifeature]=trainingFeatures[iclass][m_nctraining[iclass]+isample][ifeature];</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>         }</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>         result=net.run(testFeatures[iclass][isample]);</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>         <span class="keywordtype">string</span> refClassName=m_nameVector[iclass];</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>         <span class="keywordtype">float</span> maxP=-1;</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ic=0;ic<nclass;++ic){</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>           <span class="keywordtype">float</span> pv=(result[ic]+1.0)/2.0;<span class="comment">//bring back to scale [0,1]</span></div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>           <span class="keywordflow">if</span>(pv>maxP){</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>             maxP=pv;</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>             maxClass=ic;</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>           }</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>         }</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>         <span class="keywordtype">string</span> className=m_nameVector[maxClass];</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>         <span class="keywordflow">if</span>(m_classValueMap.size())</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>           m_cm.incrementResult(type2string<short>(m_classValueMap[refClassName]),type2string<short>(m_classValueMap[className]),1.0);</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>           m_cm.incrementResult(m_cm.getClass(referenceVector[isample]),m_cm.getClass(outputVector[isample]),1.0);</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>       }</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>     }</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>   }</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>   assert(m_cm.nReference());</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>   <span class="keywordflow">return</span>(m_cm.kappa());</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span> }</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span> </div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span> {</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>   <span class="comment">// vector<double> priors;</span></div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>   </div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>   <span class="comment">//--------------------------- command line options ------------------------------------</span></div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> input_opt(<span class="stringliteral">"i"</span>, <span class="stringliteral">"input"</span>, <span class="stringliteral">"input test set (leave empty to perform a cross validation based on training only)"</span>); </div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> training_opt(<span class="stringliteral">"t"</span>, <span class="stringliteral">"training"</span>, <span class="stringliteral">"training vector file. A single vector file contains all training features (must be set as: B0, B1, B2,...) for all classes (class numbers identified by label option). Use multiple training  [...]
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> tlayer_opt(<span class="stringliteral">"tln"</span>, <span class="stringliteral">"tln"</span>, <span class="stringliteral">"training layer name(s)"</span>);</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> label_opt(<span class="stringliteral">"label"</span>, <span class="stringliteral">"label"</span>, <span class="stringliteral">"identifier for class label in training vector file."</span>,<span class="stringliteral">"label"</span>); </div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> maxFeatures_opt(<span class="stringliteral">"n"</span>, <span class="stringliteral">"nf"</span>, <span class="stringliteral">"number of features to select (0 to select optimal number, see also ecost option)"</span>, 0);</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned int></a> balance_opt(<span class="stringliteral">"\0"</span>, <span class="stringliteral">"balance"</span>, <span class="stringliteral">"balance the input data to this number of samples for each class"</span>, 0);</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> random_opt(<span class="stringliteral">"random"</span>,<span class="stringliteral">"random"</span>, <span class="stringliteral">"in case of balance, randomize input data"</span>, <span class="keyword">true</span>);</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> minSize_opt(<span class="stringliteral">"min"</span>, <span class="stringliteral">"min"</span>, <span class="stringliteral">"if number of training pixels is less then min, do not take this class into account"</span>, 0);</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> band_opt(<span class="stringliteral">"b"</span>, <span class="stringliteral">"band"</span>, <span class="stringliteral">"band index (starting from 0, either use band option or use start to end)"</span>);</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> bstart_opt(<span class="stringliteral">"sband"</span>, <span class="stringliteral">"startband"</span>, <span class="stringliteral">"Start band sequence number"</span>); </div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> bend_opt(<span class="stringliteral">"eband"</span>, <span class="stringliteral">"endband"</span>, <span class="stringliteral">"End band sequence number"</span>); </div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> offset_opt(<span class="stringliteral">"\0"</span>, <span class="stringliteral">"offset"</span>, <span class="stringliteral">"offset value for each spectral band input features: refl[band]=(DN[band]-offset[band])/scale[band]"</span>, 0.0);</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> scale_opt(<span class="stringliteral">"\0"</span>, <span class="stringliteral">"scale"</span>, <span class="stringliteral">"scale value for each spectral band input features: refl=(DN[band]-offset[band])/scale[band] (use 0 if scale min and max in each band to -1.0 and 1.0)"</span>, 0.0);</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> aggreg_opt(<span class="stringliteral">"a"</span>, <span class="stringliteral">"aggreg"</span>, <span class="stringliteral">"how to combine aggregated classifiers, see also rc option (0: no aggregation, 1: sum rule, 2: max rule)."</span>,0);</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>   <span class="comment">// Optionpk<double> priors_opt("p", "prior", "prior probabilities for each class (e.g., -p 0.3 -p 0.3 -p 0.2 )", 0.0);</span></div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> selector_opt(<span class="stringliteral">"sm"</span>, <span class="stringliteral">"sm"</span>, <span class="stringliteral">"feature selection method (sffs=sequential floating forward search,sfs=sequential forward search, sbs, sequential backward search ,bfs=brute force search)"</span>,<span class="stringliteral" [...]
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>   <a class="code" href="classOptionpk.html">Optionpk<float></a> epsilon_cost_opt(<span class="stringliteral">"ecost"</span>, <span class="stringliteral">"ecost"</span>, <span class="stringliteral">"epsilon for stopping criterion in cost function to determine optimal number of features"</span>,0.001);</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> cv_opt(<span class="stringliteral">"cv"</span>, <span class="stringliteral">"cv"</span>, <span class="stringliteral">"n-fold cross validation mode"</span>,2);</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> classname_opt(<span class="stringliteral">"c"</span>, <span class="stringliteral">"class"</span>, <span class="stringliteral">"list of class names."</span>); </div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> classvalue_opt(<span class="stringliteral">"r"</span>, <span class="stringliteral">"reclass"</span>, <span class="stringliteral">"list of class values (use same order as in classname opt."</span>); </div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned int></a> nneuron_opt(<span class="stringliteral">"n"</span>, <span class="stringliteral">"nneuron"</span>, <span class="stringliteral">"number of neurons in hidden layers in neural network (multiple hidden layers are set by defining multiple number of neurons: -n 15 -n 1, default is one hidden layer with 5 neurons)&quot [...]
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>   <a class="code" href="classOptionpk.html">Optionpk<float></a> connection_opt(<span class="stringliteral">"\0"</span>, <span class="stringliteral">"connection"</span>, <span class="stringliteral">"connection reate (default: 1.0 for a fully connected network)"</span>, 1.0); </div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>   <a class="code" href="classOptionpk.html">Optionpk<float></a> weights_opt(<span class="stringliteral">"w"</span>, <span class="stringliteral">"weights"</span>, <span class="stringliteral">"weights for neural network. Apply to fully connected network only, starting from first input neuron to last output neuron, including the bias neurons (last neuron in each but last layer)" [...]
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>   <a class="code" href="classOptionpk.html">Optionpk<float></a> learning_opt(<span class="stringliteral">"l"</span>, <span class="stringliteral">"learning"</span>, <span class="stringliteral">"learning rate (default: 0.7)"</span>, 0.7); </div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned int></a> maxit_opt(<span class="stringliteral">"\0"</span>, <span class="stringliteral">"maxit"</span>, <span class="stringliteral">"number of maximum iterations (epoch) (default: 500)"</span>, 500); </div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> verbose_opt(<span class="stringliteral">"v"</span>, <span class="stringliteral">"verbose"</span>, <span class="stringliteral">"set to: 0 (results only), 1 (confusion matrix), 2 (debug)"</span>,0,2);</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span> </div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>   tlayer_opt.setHide(1);</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>   label_opt.setHide(1);</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>   balance_opt.setHide(1);</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>   random_opt.setHide(1);</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>   minSize_opt.setHide(1);</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>   band_opt.setHide(1);</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>   bstart_opt.setHide(1);</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>   bend_opt.setHide(1);</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>   offset_opt.setHide(1);</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>   scale_opt.setHide(1);</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>   aggreg_opt.setHide(1);</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>     <span class="comment">// priors_opt.setHide(1);</span></div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>   selector_opt.setHide(1);</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>   epsilon_cost_opt.setHide(1);</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>   cv_opt.setHide(1);</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>   classname_opt.setHide(1);</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>   classvalue_opt.setHide(1);</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>   nneuron_opt.setHide(1);</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>   connection_opt.setHide(1);</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>   weights_opt.setHide(1);</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>   learning_opt.setHide(1);</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>   maxit_opt.setHide(1);</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span> </div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>   <span class="keywordtype">bool</span> doProcess;<span class="comment">//stop process when program was invoked with help option (-h --help)</span></div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>     doProcess=input_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>     training_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>     maxFeatures_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>     tlayer_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>     label_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>     balance_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>     random_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>     minSize_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>     band_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>     bstart_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>     bend_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>     offset_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>     scale_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>     aggreg_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>     <span class="comment">// priors_opt.retrieveOption(argc,argv);</span></div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>     selector_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>     epsilon_cost_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>     cv_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>     classname_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>     classvalue_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>     nneuron_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>     connection_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>     weights_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>     learning_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>     maxit_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>     verbose_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>   }</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> predefinedString){</div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>     std::cout << predefinedString << std::endl;</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>     exit(0);</div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>   }</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>   <span class="keywordflow">if</span>(!doProcess){</div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>     cout << endl;</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>     cout << <span class="stringliteral">"Usage: pkfsann -t training -n number"</span> << endl;</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>     cout << endl;</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>     std::cout << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << std::endl;</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>     exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>   }</div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>   </div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>   <a class="code" href="classCostFactoryANN.html">CostFactoryANN</a> costfactory(nneuron_opt, connection_opt[0], weights_opt, learning_opt[0], maxit_opt[0], cv_opt[0], verbose_opt[0]);</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span> </div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>   assert(training_opt.size());</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>   <span class="keywordflow">if</span>(input_opt.size())</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>     costfactory.setCv(0);</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>   <span class="keywordflow">if</span>(verbose_opt[0]>=1){</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>     <span class="keywordflow">if</span>(input_opt.size())</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>       std::cout << <span class="stringliteral">"input filename: "</span> << input_opt[0] << std::endl;</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>     std::cout << <span class="stringliteral">"training vector file: "</span> << std::endl;</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ifile=0;ifile<training_opt.size();++ifile)</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>       std::cout << training_opt[ifile] << std::endl;</div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>     std::cout << <span class="stringliteral">"verbose: "</span> << verbose_opt[0] << std::endl;</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>   }</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span> </div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>   <span class="keyword">static</span> std::map<std::string, SelectorValue> selMap;</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>   <span class="comment">//initialize selMap</span></div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>   selMap[<span class="stringliteral">"sffs"</span>]=SFFS;</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>   selMap[<span class="stringliteral">"sfs"</span>]=SFS;</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>   selMap[<span class="stringliteral">"sbs"</span>]=SBS;</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>   selMap[<span class="stringliteral">"bfs"</span>]=BFS;</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span> </div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>   assert(training_opt.size());</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>   <span class="keywordflow">if</span>(input_opt.size())</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>     cv_opt[0]=0;</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>   <span class="keywordflow">if</span>(verbose_opt[0]>=1)</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>     std::cout << <span class="stringliteral">"training vector file: "</span> << training_opt[0] << std::endl;</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span> </div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> totalSamples=0;</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> totalTestSamples=0;</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span> </div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> nclass=0;</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>   <span class="keywordtype">int</span> nband=0;</div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>   <span class="keywordtype">int</span> startBand=2;<span class="comment">//first two bands represent X and Y pos</span></div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span> </div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>   <span class="comment">// if(priors_opt.size()>1){//priors from argument list</span></div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>   <span class="comment">//   priors.resize(priors_opt.size());</span></div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>   <span class="comment">//   double normPrior=0;</span></div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>   <span class="comment">//   for(int iclass=0;iclass<priors_opt.size();++iclass){</span></div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>   <span class="comment">//     priors[iclass]=priors_opt[iclass];</span></div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>   <span class="comment">//     normPrior+=priors[iclass];</span></div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>   <span class="comment">//   }</span></div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>   <span class="comment">//   //normalize</span></div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>   <span class="comment">//   for(int iclass=0;iclass<priors_opt.size();++iclass)</span></div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>   <span class="comment">//     priors[iclass]/=normPrior;</span></div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>   <span class="comment">// }</span></div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span> </div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>   <span class="comment">//convert start and end band options to vector of band indexes</span></div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>     <span class="keywordflow">if</span>(bstart_opt.size()){</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>       <span class="keywordflow">if</span>(bend_opt.size()!=bstart_opt.size()){</div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>     <span class="keywordtype">string</span> errorstring=<span class="stringliteral">"Error: options for start and end band indexes must be provided as pairs, missing end band"</span>;</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>     <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>       }</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>       band_opt.clear();</div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ipair=0;ipair<bstart_opt.size();++ipair){</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>     <span class="keywordflow">if</span>(bend_opt[ipair]<=bstart_opt[ipair]){</div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>       <span class="keywordtype">string</span> errorstring=<span class="stringliteral">"Error: index for end band must be smaller then start band"</span>;</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>       <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>     }</div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=bstart_opt[ipair];iband<=bend_opt[ipair];++iband)</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>       band_opt.push_back(iband);</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>       }</div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>     }</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>   }</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> error){</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>     cerr << error << std::endl;</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>     exit(1);</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>   }</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>   <span class="comment">//sort bands</span></div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>   <span class="keywordflow">if</span>(band_opt.size())</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>     std::sort(band_opt.begin(),band_opt.end());</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span> </div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>   <span class="comment">// map<string,short> classValueMap;//global variable for now (due to getCost)</span></div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>   <span class="keywordflow">if</span>(classname_opt.size()){</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>     assert(classname_opt.size()==classvalue_opt.size());</div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<classname_opt.size();++iclass)</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>       costfactory.setClassValueMap(classname_opt[iclass],classvalue_opt[iclass]);</div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>   }</div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>   <span class="comment">//----------------------------------- Training -------------------------------</span></div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>   vector<double> offset;</div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>   vector<double> scale;</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>   vector< Vector2d<float> > trainingPixels;<span class="comment">//[class][sample][band]</span></div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span>   vector< Vector2d<float> > testPixels;<span class="comment">//[class][sample][band]</span></div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>   map<string,Vector2d<float> > trainingMap;</div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>   map<string,Vector2d<float> > testMap;</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>   vector<string> fields;</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span> </div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>   <span class="comment">//organize training data</span></div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span>   trainingPixels.clear();</div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>   <span class="keywordflow">if</span>(verbose_opt[0]>=1)</div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>     std::cout << <span class="stringliteral">"reading imageVector file "</span> << training_opt[0] << std::endl;</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>     <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a> trainingReader(training_opt[0]);</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span>     <span class="keywordflow">if</span>(band_opt.size()){</div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>       totalSamples=trainingReader.readDataImageOgr(trainingMap,fields,band_opt,label_opt[0],tlayer_opt,verbose_opt[0]);</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>       <span class="keywordflow">if</span>(input_opt.size()){</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>     <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a> inputReader(input_opt[0]);</div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>     totalTestSamples=trainingReader.readDataImageOgr(testMap,fields,band_opt,label_opt[0],tlayer_opt,verbose_opt[0]);</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span>     inputReader.close();</div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>       }</div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>     }</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>       totalSamples=trainingReader.readDataImageOgr(trainingMap,fields,0,0,label_opt[0],tlayer_opt,verbose_opt[0]);</div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span>       <span class="keywordflow">if</span>(input_opt.size()){</div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span>     <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a> inputReader(input_opt[0]);</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>     totalTestSamples=trainingReader.readDataImageOgr(testMap,fields,0,0,label_opt[0],tlayer_opt,verbose_opt[0]);</div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span>     inputReader.close();</div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span>       }</div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span>     }</div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span>     <span class="keywordflow">if</span>(trainingMap.size()<2){</div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span>       <span class="keywordtype">string</span> errorstring=<span class="stringliteral">"Error: could not read at least two classes from training file"</span>;</div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span>       <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span>     }</div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span>     <span class="keywordflow">if</span>(input_opt.size()&&testMap.size()<2){</div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>       <span class="keywordtype">string</span> errorstring=<span class="stringliteral">"Error: could not read at least two classes from test input file"</span>;</div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>       <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span>     }</div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span>     trainingReader.close();</div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span>   }</div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> error){</div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span>     cerr << error << std::endl;</div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span>     exit(1);</div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span>   }</div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span>   <span class="keywordflow">catch</span>(std::exception& e){</div>
-<div class="line"><a name="l00445"></a><span class="lineno">  445</span>     std::cerr << <span class="stringliteral">"Error: "</span>;</div>
-<div class="line"><a name="l00446"></a><span class="lineno">  446</span>     std::cerr << e.what() << std::endl;</div>
-<div class="line"><a name="l00447"></a><span class="lineno">  447</span>     std::cerr << CPLGetLastErrorMsg() << std::endl; </div>
-<div class="line"><a name="l00448"></a><span class="lineno">  448</span>     exit(1);</div>
-<div class="line"><a name="l00449"></a><span class="lineno">  449</span>   }</div>
-<div class="line"><a name="l00450"></a><span class="lineno">  450</span>   <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l00451"></a><span class="lineno">  451</span>     cerr << <span class="stringliteral">"error caught"</span> << std::endl;</div>
-<div class="line"><a name="l00452"></a><span class="lineno">  452</span>     exit(1);</div>
-<div class="line"><a name="l00453"></a><span class="lineno">  453</span>   }</div>
-<div class="line"><a name="l00454"></a><span class="lineno">  454</span>   <span class="comment">//delete class 0 ?</span></div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span>   <span class="comment">// if(verbose_opt[0]>=1)</span></div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</span>   <span class="comment">//   std::cout << "erasing class 0 from training set (" << trainingMap[0].size() << " from " << totalSamples << ") samples" << std::endl;</span></div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span>   <span class="comment">// totalSamples-=trainingMap[0].size();</span></div>
-<div class="line"><a name="l00458"></a><span class="lineno">  458</span>   <span class="comment">// trainingMap.erase(0);</span></div>
-<div class="line"><a name="l00459"></a><span class="lineno">  459</span>   <span class="comment">//convert map to vector</span></div>
-<div class="line"><a name="l00460"></a><span class="lineno">  460</span> </div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span>   <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span>     std::cout << <span class="stringliteral">"training pixels: "</span> << std::endl;</div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span>   map<string,Vector2d<float> >::iterator mapit=trainingMap.begin();</div>
-<div class="line"><a name="l00464"></a><span class="lineno">  464</span>   <span class="keywordflow">while</span>(mapit!=trainingMap.end()){</div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span>     <span class="comment">// if(classValueMap.size()){</span></div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>     <span class="comment">//   //check if name in training is covered by classname_opt (values can not be 0)</span></div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span>     <span class="comment">//   if(classValueMap[mapit->first]>0){</span></div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span>     <span class="comment">//  if(verbose_opt[0])</span></div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span>     <span class="comment">//    std::cout << mapit->first << " -> " << classValueMap[mapit->first] << std::endl;</span></div>
-<div class="line"><a name="l00470"></a><span class="lineno">  470</span>     <span class="comment">//   }</span></div>
-<div class="line"><a name="l00471"></a><span class="lineno">  471</span>     <span class="comment">//   else{</span></div>
-<div class="line"><a name="l00472"></a><span class="lineno">  472</span>     <span class="comment">//  std::cerr << "Error: names in classname option are not complete, please check names in training vector and make sure classvalue is > 0" << std::endl;</span></div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span>     <span class="comment">//  exit(1);</span></div>
-<div class="line"><a name="l00474"></a><span class="lineno">  474</span>     <span class="comment">//   }</span></div>
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span>     <span class="comment">// }    </span></div>
-<div class="line"><a name="l00476"></a><span class="lineno">  476</span>     <span class="comment">//delete small classes</span></div>
-<div class="line"><a name="l00477"></a><span class="lineno">  477</span>     <span class="keywordflow">if</span>((mapit->second).size()<minSize_opt[0]){</div>
-<div class="line"><a name="l00478"></a><span class="lineno">  478</span>       trainingMap.erase(mapit);</div>
-<div class="line"><a name="l00479"></a><span class="lineno">  479</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span>     }</div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span>     trainingPixels.push_back(mapit->second);</div>
-<div class="line"><a name="l00482"></a><span class="lineno">  482</span>     <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00483"></a><span class="lineno">  483</span>       std::cout << mapit->first << <span class="stringliteral">": "</span> << (mapit->second).size() << <span class="stringliteral">" samples"</span> << std::endl;</div>
-<div class="line"><a name="l00484"></a><span class="lineno">  484</span>     ++mapit;</div>
-<div class="line"><a name="l00485"></a><span class="lineno">  485</span>   }</div>
-<div class="line"><a name="l00486"></a><span class="lineno">  486</span>   nclass=trainingPixels.size();</div>
-<div class="line"><a name="l00487"></a><span class="lineno">  487</span>   <span class="keywordflow">if</span>(classname_opt.size())</div>
-<div class="line"><a name="l00488"></a><span class="lineno">  488</span>     assert(nclass==classname_opt.size());</div>
-<div class="line"><a name="l00489"></a><span class="lineno">  489</span>   nband=trainingPixels[0][0].size()-2;<span class="comment">//X and Y//trainingPixels[0][0].size();</span></div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span> </div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span>   mapit=testMap.begin();</div>
-<div class="line"><a name="l00492"></a><span class="lineno">  492</span>   <span class="keywordflow">while</span>(mapit!=testMap.end()){</div>
-<div class="line"><a name="l00493"></a><span class="lineno">  493</span>     <span class="comment">//no need to delete small classes for test sample</span></div>
-<div class="line"><a name="l00494"></a><span class="lineno">  494</span>     testPixels.push_back(mapit->second);</div>
-<div class="line"><a name="l00495"></a><span class="lineno">  495</span>     <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00496"></a><span class="lineno">  496</span>       std::cout << mapit->first << <span class="stringliteral">": "</span> << (mapit->second).size() << <span class="stringliteral">" samples"</span> << std::endl;</div>
-<div class="line"><a name="l00497"></a><span class="lineno">  497</span>     ++mapit;</div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span>   }</div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span>   <span class="keywordflow">if</span>(input_opt.size()){</div>
-<div class="line"><a name="l00500"></a><span class="lineno">  500</span>     assert(nclass==testPixels.size());</div>
-<div class="line"><a name="l00501"></a><span class="lineno">  501</span>     assert(nband=testPixels[0][0].size()-2);<span class="comment">//X and Y//testPixels[0][0].size();</span></div>
-<div class="line"><a name="l00502"></a><span class="lineno">  502</span>     assert(!cv_opt[0]);</div>
-<div class="line"><a name="l00503"></a><span class="lineno">  503</span>   }</div>
-<div class="line"><a name="l00504"></a><span class="lineno">  504</span> </div>
-<div class="line"><a name="l00505"></a><span class="lineno">  505</span>   <span class="comment">//do not remove outliers here: could easily be obtained through ogr2ogr -where 'B2<110' output.shp input.shp</span></div>
-<div class="line"><a name="l00506"></a><span class="lineno">  506</span>   <span class="comment">//balance training data</span></div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span>   <span class="keywordflow">if</span>(balance_opt[0]>0){</div>
-<div class="line"><a name="l00508"></a><span class="lineno">  508</span>     <span class="keywordflow">if</span>(random_opt[0])</div>
-<div class="line"><a name="l00509"></a><span class="lineno">  509</span>       srand(time(NULL));</div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span>     totalSamples=0;</div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l00512"></a><span class="lineno">  512</span>       <span class="keywordflow">if</span>(trainingPixels[iclass].size()>balance_opt[0]){</div>
-<div class="line"><a name="l00513"></a><span class="lineno">  513</span>         <span class="keywordflow">while</span>(trainingPixels[iclass].size()>balance_opt[0]){</div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span>           <span class="keywordtype">int</span> index=rand()%trainingPixels[iclass].size();</div>
-<div class="line"><a name="l00515"></a><span class="lineno">  515</span>           trainingPixels[iclass].erase(trainingPixels[iclass].begin()+index);</div>
-<div class="line"><a name="l00516"></a><span class="lineno">  516</span>         }</div>
-<div class="line"><a name="l00517"></a><span class="lineno">  517</span>       }</div>
-<div class="line"><a name="l00518"></a><span class="lineno">  518</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00519"></a><span class="lineno">  519</span>         <span class="keywordtype">int</span> oldsize=trainingPixels[iclass].size();</div>
-<div class="line"><a name="l00520"></a><span class="lineno">  520</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=trainingPixels[iclass].size();isample<balance_opt[0];++isample){</div>
-<div class="line"><a name="l00521"></a><span class="lineno">  521</span>           <span class="keywordtype">int</span> index = rand()%oldsize;</div>
-<div class="line"><a name="l00522"></a><span class="lineno">  522</span>           trainingPixels[iclass].push_back(trainingPixels[iclass][index]);</div>
-<div class="line"><a name="l00523"></a><span class="lineno">  523</span>         }</div>
-<div class="line"><a name="l00524"></a><span class="lineno">  524</span>       }</div>
-<div class="line"><a name="l00525"></a><span class="lineno">  525</span>       totalSamples+=trainingPixels[iclass].size();</div>
-<div class="line"><a name="l00526"></a><span class="lineno">  526</span>     }</div>
-<div class="line"><a name="l00527"></a><span class="lineno">  527</span>     assert(totalSamples==nclass*balance_opt[0]);</div>
-<div class="line"><a name="l00528"></a><span class="lineno">  528</span>   }</div>
-<div class="line"><a name="l00529"></a><span class="lineno">  529</span>     </div>
-<div class="line"><a name="l00530"></a><span class="lineno">  530</span>   <span class="comment">//set scale and offset</span></div>
-<div class="line"><a name="l00531"></a><span class="lineno">  531</span>   offset.resize(nband);</div>
-<div class="line"><a name="l00532"></a><span class="lineno">  532</span>   scale.resize(nband);</div>
-<div class="line"><a name="l00533"></a><span class="lineno">  533</span>   <span class="keywordflow">if</span>(offset_opt.size()>1)</div>
-<div class="line"><a name="l00534"></a><span class="lineno">  534</span>     assert(offset_opt.size()==nband);</div>
-<div class="line"><a name="l00535"></a><span class="lineno">  535</span>   <span class="keywordflow">if</span>(scale_opt.size()>1)</div>
-<div class="line"><a name="l00536"></a><span class="lineno">  536</span>     assert(scale_opt.size()==nband);</div>
-<div class="line"><a name="l00537"></a><span class="lineno">  537</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l00538"></a><span class="lineno">  538</span>     <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00539"></a><span class="lineno">  539</span>       std::cout << <span class="stringliteral">"scaling for band"</span> << iband << std::endl;</div>
-<div class="line"><a name="l00540"></a><span class="lineno">  540</span>     offset[iband]=(offset_opt.size()==1)?offset_opt[0]:offset_opt[iband];</div>
-<div class="line"><a name="l00541"></a><span class="lineno">  541</span>     scale[iband]=(scale_opt.size()==1)?scale_opt[0]:scale_opt[iband];</div>
-<div class="line"><a name="l00542"></a><span class="lineno">  542</span>     <span class="comment">//search for min and maximum</span></div>
-<div class="line"><a name="l00543"></a><span class="lineno">  543</span>     <span class="keywordflow">if</span>(scale[iband]<=0){</div>
-<div class="line"><a name="l00544"></a><span class="lineno">  544</span>       <span class="keywordtype">float</span> theMin=trainingPixels[0][0][iband+startBand];</div>
-<div class="line"><a name="l00545"></a><span class="lineno">  545</span>       <span class="keywordtype">float</span> theMax=trainingPixels[0][0][iband+startBand];</div>
-<div class="line"><a name="l00546"></a><span class="lineno">  546</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l00547"></a><span class="lineno">  547</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<trainingPixels[iclass].size();++isample){</div>
-<div class="line"><a name="l00548"></a><span class="lineno">  548</span>           <span class="keywordflow">if</span>(theMin>trainingPixels[iclass][isample][iband+startBand])</div>
-<div class="line"><a name="l00549"></a><span class="lineno">  549</span>             theMin=trainingPixels[iclass][isample][iband+startBand];</div>
-<div class="line"><a name="l00550"></a><span class="lineno">  550</span>           <span class="keywordflow">if</span>(theMax<trainingPixels[iclass][isample][iband+startBand])</div>
-<div class="line"><a name="l00551"></a><span class="lineno">  551</span>             theMax=trainingPixels[iclass][isample][iband+startBand];</div>
-<div class="line"><a name="l00552"></a><span class="lineno">  552</span>         }</div>
-<div class="line"><a name="l00553"></a><span class="lineno">  553</span>       }</div>
-<div class="line"><a name="l00554"></a><span class="lineno">  554</span>       offset[iband]=theMin+(theMax-theMin)/2.0;</div>
-<div class="line"><a name="l00555"></a><span class="lineno">  555</span>       scale[iband]=(theMax-theMin)/2.0;</div>
-<div class="line"><a name="l00556"></a><span class="lineno">  556</span>       <span class="keywordflow">if</span>(verbose_opt[0]>1){</div>
-<div class="line"><a name="l00557"></a><span class="lineno">  557</span>         std::cout << <span class="stringliteral">"Extreme image values for band "</span> << iband << <span class="stringliteral">": ["</span> << theMin << <span class="stringliteral">","</span> << theMax << <span class="stringliteral">"]"</span> << std::endl;</div>
-<div class="line"><a name="l00558"></a><span class="lineno">  558</span>         std::cout << <span class="stringliteral">"Using offset, scale: "</span> << offset[iband] << <span class="stringliteral">", "</span> << scale[iband] << std::endl;</div>
-<div class="line"><a name="l00559"></a><span class="lineno">  559</span>         std::cout << <span class="stringliteral">"scaled values for band "</span> << iband << <span class="stringliteral">": ["</span> << (theMin-offset[iband])/scale[iband] << <span class="stringliteral">","</span> << (theMax-offset[iband])/scale[iband] << <span class="stringliteral">"]"</span> << std::endl;</div>
-<div class="line"><a name="l00560"></a><span class="lineno">  560</span>       }</div>
-<div class="line"><a name="l00561"></a><span class="lineno">  561</span>     }</div>
-<div class="line"><a name="l00562"></a><span class="lineno">  562</span>   }</div>
-<div class="line"><a name="l00563"></a><span class="lineno">  563</span> </div>
-<div class="line"><a name="l00564"></a><span class="lineno">  564</span>   <span class="comment">// if(priors_opt.size()==1){//default: equal priors for each class</span></div>
-<div class="line"><a name="l00565"></a><span class="lineno">  565</span>   <span class="comment">//   priors.resize(nclass);</span></div>
-<div class="line"><a name="l00566"></a><span class="lineno">  566</span>   <span class="comment">//   for(int iclass=0;iclass<nclass;++iclass)</span></div>
-<div class="line"><a name="l00567"></a><span class="lineno">  567</span>   <span class="comment">//     priors[iclass]=1.0/nclass;</span></div>
-<div class="line"><a name="l00568"></a><span class="lineno">  568</span>   <span class="comment">// }</span></div>
-<div class="line"><a name="l00569"></a><span class="lineno">  569</span>   <span class="comment">// assert(priors_opt.size()==1||priors_opt.size()==nclass);</span></div>
-<div class="line"><a name="l00570"></a><span class="lineno">  570</span>     </div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span>   <span class="keywordflow">if</span>(verbose_opt[0]>=1){</div>
-<div class="line"><a name="l00572"></a><span class="lineno">  572</span>     std::cout << <span class="stringliteral">"number of bands: "</span> << nband << std::endl;</div>
-<div class="line"><a name="l00573"></a><span class="lineno">  573</span>     std::cout << <span class="stringliteral">"number of classes: "</span> << nclass << std::endl;</div>
-<div class="line"><a name="l00574"></a><span class="lineno">  574</span>     <span class="comment">// std::cout << "priors:";</span></div>
-<div class="line"><a name="l00575"></a><span class="lineno">  575</span>     <span class="comment">// for(int iclass=0;iclass<nclass;++iclass)</span></div>
-<div class="line"><a name="l00576"></a><span class="lineno">  576</span>     <span class="comment">//   std::cout << " " << priors[iclass];</span></div>
-<div class="line"><a name="l00577"></a><span class="lineno">  577</span>     <span class="comment">// std::cout << std::endl;</span></div>
-<div class="line"><a name="l00578"></a><span class="lineno">  578</span>   }</div>
-<div class="line"><a name="l00579"></a><span class="lineno">  579</span> </div>
-<div class="line"><a name="l00580"></a><span class="lineno">  580</span>   <span class="comment">//set names in confusion matrix using nameVector</span></div>
-<div class="line"><a name="l00581"></a><span class="lineno">  581</span>   vector<string> nameVector=costfactory.getNameVector();</div>
-<div class="line"><a name="l00582"></a><span class="lineno">  582</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iname=0;iname<nameVector.size();++iname){</div>
-<div class="line"><a name="l00583"></a><span class="lineno">  583</span>     <span class="keywordflow">if</span>(costfactory.getClassValueMap().empty())</div>
-<div class="line"><a name="l00584"></a><span class="lineno">  584</span>       costfactory.pushBackClassName(nameVector[iname]);</div>
-<div class="line"><a name="l00585"></a><span class="lineno">  585</span>       <span class="comment">// cm.pushBackClassName(nameVector[iname]);</span></div>
-<div class="line"><a name="l00586"></a><span class="lineno">  586</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(costfactory.getClassIndex(type2string<short>((costfactory.getClassValueMap())[nameVector[iname]]))<0)</div>
-<div class="line"><a name="l00587"></a><span class="lineno">  587</span>       costfactory.pushBackClassName(type2string<short>((costfactory.getClassValueMap())[nameVector[iname]]));</div>
-<div class="line"><a name="l00588"></a><span class="lineno">  588</span>   }</div>
-<div class="line"><a name="l00589"></a><span class="lineno">  589</span> </div>
-<div class="line"><a name="l00590"></a><span class="lineno">  590</span>   <span class="comment">// if(classname_opt.empty()){</span></div>
-<div class="line"><a name="l00591"></a><span class="lineno">  591</span>   <span class="comment">//   for(int iclass=0;iclass<nclass;++iclass){</span></div>
-<div class="line"><a name="l00592"></a><span class="lineno">  592</span>   <span class="comment">//     if(verbose_opt[0])</span></div>
-<div class="line"><a name="l00593"></a><span class="lineno">  593</span>   <span class="comment">//    std::cout << iclass << " " << cm.getClass(iclass) << " -> " << string2type<short>(cm.getClass(iclass)) << std::endl;</span></div>
-<div class="line"><a name="l00594"></a><span class="lineno">  594</span>   <span class="comment">//     classValueMap[cm.getClass(iclass)]=string2type<short>(cm.getClass(iclass));</span></div>
-<div class="line"><a name="l00595"></a><span class="lineno">  595</span>   <span class="comment">//   }</span></div>
-<div class="line"><a name="l00596"></a><span class="lineno">  596</span>   <span class="comment">// }</span></div>
-<div class="line"><a name="l00597"></a><span class="lineno">  597</span> </div>
-<div class="line"><a name="l00598"></a><span class="lineno">  598</span>   <span class="comment">//Calculate features of trainig set</span></div>
-<div class="line"><a name="l00599"></a><span class="lineno">  599</span> </div>
-<div class="line"><a name="l00600"></a><span class="lineno">  600</span>   vector<unsigned int> nctraining;</div>
-<div class="line"><a name="l00601"></a><span class="lineno">  601</span>   vector<unsigned int> nctest;</div>
-<div class="line"><a name="l00602"></a><span class="lineno">  602</span>   nctraining.resize(nclass);</div>
-<div class="line"><a name="l00603"></a><span class="lineno">  603</span>   nctest.resize(nclass);</div>
-<div class="line"><a name="l00604"></a><span class="lineno">  604</span>   vector< Vector2d<float> > trainingFeatures(nclass);</div>
-<div class="line"><a name="l00605"></a><span class="lineno">  605</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l00606"></a><span class="lineno">  606</span>     <span class="keywordflow">if</span>(verbose_opt[0]>=1)</div>
-<div class="line"><a name="l00607"></a><span class="lineno">  607</span>       std::cout << <span class="stringliteral">"calculating features for class "</span> << iclass << std::endl;</div>
-<div class="line"><a name="l00608"></a><span class="lineno">  608</span>     nctraining[iclass]=trainingPixels[iclass].size();</div>
-<div class="line"><a name="l00609"></a><span class="lineno">  609</span>     <span class="keywordflow">if</span>(verbose_opt[0]>=1)</div>
-<div class="line"><a name="l00610"></a><span class="lineno">  610</span>       std::cout << <span class="stringliteral">"nctraining["</span> << iclass << <span class="stringliteral">"]: "</span> << nctraining[iclass] << std::endl;</div>
-<div class="line"><a name="l00611"></a><span class="lineno">  611</span>     <span class="keywordflow">if</span>(testPixels.size()>iclass){</div>
-<div class="line"><a name="l00612"></a><span class="lineno">  612</span>       nctest[iclass]=testPixels[iclass].size();</div>
-<div class="line"><a name="l00613"></a><span class="lineno">  613</span>       <span class="keywordflow">if</span>(verbose_opt[0]>=1){</div>
-<div class="line"><a name="l00614"></a><span class="lineno">  614</span>     std::cout << <span class="stringliteral">"nctest["</span> << iclass << <span class="stringliteral">"]: "</span> << nctest[iclass] << std::endl;</div>
-<div class="line"><a name="l00615"></a><span class="lineno">  615</span>       }</div>
-<div class="line"><a name="l00616"></a><span class="lineno">  616</span>     }</div>
-<div class="line"><a name="l00617"></a><span class="lineno">  617</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00618"></a><span class="lineno">  618</span>       nctest[iclass]=0;</div>
-<div class="line"><a name="l00619"></a><span class="lineno">  619</span>       </div>
-<div class="line"><a name="l00620"></a><span class="lineno">  620</span>     trainingFeatures[iclass].resize(nctraining[iclass]+nctest[iclass]);</div>
-<div class="line"><a name="l00621"></a><span class="lineno">  621</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<nctraining[iclass];++isample){</div>
-<div class="line"><a name="l00622"></a><span class="lineno">  622</span>       <span class="comment">//scale pixel values according to scale and offset!!!</span></div>
-<div class="line"><a name="l00623"></a><span class="lineno">  623</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l00624"></a><span class="lineno">  624</span>         assert(trainingPixels[iclass].size()>isample);</div>
-<div class="line"><a name="l00625"></a><span class="lineno">  625</span>         assert(trainingPixels[iclass][isample].size()>iband+startBand);</div>
-<div class="line"><a name="l00626"></a><span class="lineno">  626</span>         assert(offset.size()>iband);</div>
-<div class="line"><a name="l00627"></a><span class="lineno">  627</span>         assert(scale.size()>iband);</div>
-<div class="line"><a name="l00628"></a><span class="lineno">  628</span>         <span class="keywordtype">float</span> value=trainingPixels[iclass][isample][iband+startBand];</div>
-<div class="line"><a name="l00629"></a><span class="lineno">  629</span>         trainingFeatures[iclass][isample].push_back((value-offset[iband])/scale[iband]);</div>
-<div class="line"><a name="l00630"></a><span class="lineno">  630</span>       }</div>
-<div class="line"><a name="l00631"></a><span class="lineno">  631</span>     }</div>
-<div class="line"><a name="l00632"></a><span class="lineno">  632</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<nctest[iclass];++isample){</div>
-<div class="line"><a name="l00633"></a><span class="lineno">  633</span>       <span class="comment">//scale pixel values according to scale and offset!!!</span></div>
-<div class="line"><a name="l00634"></a><span class="lineno">  634</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l00635"></a><span class="lineno">  635</span>         assert(testPixels[iclass].size()>isample);</div>
-<div class="line"><a name="l00636"></a><span class="lineno">  636</span>         assert(testPixels[iclass][isample].size()>iband+startBand);</div>
-<div class="line"><a name="l00637"></a><span class="lineno">  637</span>         assert(offset.size()>iband);</div>
-<div class="line"><a name="l00638"></a><span class="lineno">  638</span>         assert(scale.size()>iband);</div>
-<div class="line"><a name="l00639"></a><span class="lineno">  639</span>         <span class="keywordtype">float</span> value=testPixels[iclass][isample][iband+startBand];</div>
-<div class="line"><a name="l00640"></a><span class="lineno">  640</span>         <span class="comment">// testFeatures[iclass][isample].push_back((value-offset[iband])/scale[iband]);</span></div>
-<div class="line"><a name="l00641"></a><span class="lineno">  641</span>         trainingFeatures[iclass][nctraining[iclass]+isample].push_back((value-offset[iband])/scale[iband]);</div>
-<div class="line"><a name="l00642"></a><span class="lineno">  642</span>       }</div>
-<div class="line"><a name="l00643"></a><span class="lineno">  643</span>     }</div>
-<div class="line"><a name="l00644"></a><span class="lineno">  644</span>     assert(trainingFeatures[iclass].size()==nctraining[iclass]+nctest[iclass]);</div>
-<div class="line"><a name="l00645"></a><span class="lineno">  645</span>   }</div>
-<div class="line"><a name="l00646"></a><span class="lineno">  646</span>     </div>
-<div class="line"><a name="l00647"></a><span class="lineno">  647</span>   costfactory.setNcTraining(nctraining);</div>
-<div class="line"><a name="l00648"></a><span class="lineno">  648</span>   costfactory.setNcTest(nctest);</div>
-<div class="line"><a name="l00649"></a><span class="lineno">  649</span>   <span class="keywordtype">int</span> nFeatures=trainingFeatures[0][0].size();</div>
-<div class="line"><a name="l00650"></a><span class="lineno">  650</span>   <span class="keywordtype">int</span> maxFeatures=(maxFeatures_opt[0])? maxFeatures_opt[0] : 1;</div>
-<div class="line"><a name="l00651"></a><span class="lineno">  651</span>   <span class="keywordtype">double</span> previousCost=-1;</div>
-<div class="line"><a name="l00652"></a><span class="lineno">  652</span>   <span class="keywordtype">double</span> cost=0;</div>
-<div class="line"><a name="l00653"></a><span class="lineno">  653</span>   list<int> subset;<span class="comment">//set of selected features (levels) for each class combination</span></div>
-<div class="line"><a name="l00654"></a><span class="lineno">  654</span>   <a class="code" href="classFeatureSelector.html">FeatureSelector</a> selector;</div>
-<div class="line"><a name="l00655"></a><span class="lineno">  655</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00656"></a><span class="lineno">  656</span>     <span class="keywordflow">if</span>(maxFeatures>=nFeatures){</div>
-<div class="line"><a name="l00657"></a><span class="lineno">  657</span>       subset.clear();</div>
-<div class="line"><a name="l00658"></a><span class="lineno">  658</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ifeature=0;ifeature<nFeatures;++ifeature)</div>
-<div class="line"><a name="l00659"></a><span class="lineno">  659</span>         subset.push_back(ifeature);</div>
-<div class="line"><a name="l00660"></a><span class="lineno">  660</span>       cost=costfactory.getCost(trainingFeatures);</div>
-<div class="line"><a name="l00661"></a><span class="lineno">  661</span>     }</div>
-<div class="line"><a name="l00662"></a><span class="lineno">  662</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00663"></a><span class="lineno">  663</span>       <span class="keywordflow">while</span>(fabs(cost-previousCost)>=epsilon_cost_opt[0]){</div>
-<div class="line"><a name="l00664"></a><span class="lineno">  664</span>         previousCost=cost;</div>
-<div class="line"><a name="l00665"></a><span class="lineno">  665</span>         <span class="keywordflow">switch</span>(selMap[selector_opt[0]]){</div>
-<div class="line"><a name="l00666"></a><span class="lineno">  666</span>         <span class="keywordflow">case</span>(SFFS):</div>
-<div class="line"><a name="l00667"></a><span class="lineno">  667</span>           subset.clear();<span class="comment">//needed to clear in case of floating and brute force search</span></div>
-<div class="line"><a name="l00668"></a><span class="lineno">  668</span>           cost=selector.floating(trainingFeatures,costfactory,subset,maxFeatures,epsilon_cost_opt[0],verbose_opt[0]);</div>
-<div class="line"><a name="l00669"></a><span class="lineno">  669</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00670"></a><span class="lineno">  670</span>         <span class="keywordflow">case</span>(SFS):</div>
-<div class="line"><a name="l00671"></a><span class="lineno">  671</span>           cost=selector.forward(trainingFeatures,costfactory,subset,maxFeatures,verbose_opt[0]);</div>
-<div class="line"><a name="l00672"></a><span class="lineno">  672</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00673"></a><span class="lineno">  673</span>         <span class="keywordflow">case</span>(SBS):</div>
-<div class="line"><a name="l00674"></a><span class="lineno">  674</span>           cost=selector.backward(trainingFeatures,costfactory,subset,maxFeatures,verbose_opt[0]);</div>
-<div class="line"><a name="l00675"></a><span class="lineno">  675</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00676"></a><span class="lineno">  676</span>         <span class="keywordflow">case</span>(BFS):</div>
-<div class="line"><a name="l00677"></a><span class="lineno">  677</span>           subset.clear();<span class="comment">//needed to clear in case of floating and brute force search</span></div>
-<div class="line"><a name="l00678"></a><span class="lineno">  678</span>           cost=selector.bruteForce(trainingFeatures,costfactory,subset,maxFeatures,verbose_opt[0]);</div>
-<div class="line"><a name="l00679"></a><span class="lineno">  679</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00680"></a><span class="lineno">  680</span>         <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00681"></a><span class="lineno">  681</span>           std::cout << <span class="stringliteral">"Error: selector not supported, please use sffs, sfs, sbs or bfs"</span> << std::endl;</div>
-<div class="line"><a name="l00682"></a><span class="lineno">  682</span>           exit(1);</div>
-<div class="line"><a name="l00683"></a><span class="lineno">  683</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00684"></a><span class="lineno">  684</span>         }</div>
-<div class="line"><a name="l00685"></a><span class="lineno">  685</span>         <span class="keywordflow">if</span>(verbose_opt[0]>1){</div>
-<div class="line"><a name="l00686"></a><span class="lineno">  686</span>           std::cout << <span class="stringliteral">"cost: "</span> << cost << std::endl;</div>
-<div class="line"><a name="l00687"></a><span class="lineno">  687</span>           std::cout << <span class="stringliteral">"previousCost: "</span> << previousCost << std::endl;</div>
-<div class="line"><a name="l00688"></a><span class="lineno">  688</span>           std::cout << std::setprecision(12) << <span class="stringliteral">"cost-previousCost: "</span> << cost - previousCost << <span class="stringliteral">" ( "</span> << epsilon_cost_opt[0] << <span class="stringliteral">")"</span> << std::endl;</div>
-<div class="line"><a name="l00689"></a><span class="lineno">  689</span>         }</div>
-<div class="line"><a name="l00690"></a><span class="lineno">  690</span>         <span class="keywordflow">if</span>(!maxFeatures_opt[0])</div>
-<div class="line"><a name="l00691"></a><span class="lineno">  691</span>           ++maxFeatures;</div>
-<div class="line"><a name="l00692"></a><span class="lineno">  692</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00693"></a><span class="lineno">  693</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00694"></a><span class="lineno">  694</span>       }</div>
-<div class="line"><a name="l00695"></a><span class="lineno">  695</span>     }</div>
-<div class="line"><a name="l00696"></a><span class="lineno">  696</span>   }</div>
-<div class="line"><a name="l00697"></a><span class="lineno">  697</span>   <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l00698"></a><span class="lineno">  698</span>     std::cout << <span class="stringliteral">"caught feature selection"</span> << std::endl;</div>
-<div class="line"><a name="l00699"></a><span class="lineno">  699</span>     exit(1);</div>
-<div class="line"><a name="l00700"></a><span class="lineno">  700</span>   }</div>
-<div class="line"><a name="l00701"></a><span class="lineno">  701</span> </div>
-<div class="line"><a name="l00702"></a><span class="lineno">  702</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00703"></a><span class="lineno">  703</span>     cout <<<span class="stringliteral">"cost: "</span> << cost << endl;</div>
-<div class="line"><a name="l00704"></a><span class="lineno">  704</span>   subset.sort();</div>
-<div class="line"><a name="l00705"></a><span class="lineno">  705</span>   <span class="keywordflow">for</span>(list<int>::const_iterator lit=subset.begin();lit!=subset.end();++lit)</div>
-<div class="line"><a name="l00706"></a><span class="lineno">  706</span>     std::cout << <span class="stringliteral">" -b "</span> << *lit;</div>
-<div class="line"><a name="l00707"></a><span class="lineno">  707</span>   std::cout << std::endl;</div>
-<div class="line"><a name="l00708"></a><span class="lineno">  708</span>     <span class="comment">// if((*(lit))!=subset.back())</span></div>
-<div class="line"><a name="l00709"></a><span class="lineno">  709</span>     <span class="comment">// else</span></div>
-<div class="line"><a name="l00710"></a><span class="lineno">  710</span>     <span class="comment">//   cout << endl;</span></div>
-<div class="line"><a name="l00711"></a><span class="lineno">  711</span> </div>
-<div class="line"><a name="l00712"></a><span class="lineno">  712</span>   <span class="comment">// *NOTE* Because svm_model contains pointers to svm_problem, you can</span></div>
-<div class="line"><a name="l00713"></a><span class="lineno">  713</span>   <span class="comment">// not free the memory used by svm_problem if you are still using the</span></div>
-<div class="line"><a name="l00714"></a><span class="lineno">  714</span>   <span class="comment">// svm_model produced by svm_train(). </span></div>
-<div class="line"><a name="l00715"></a><span class="lineno">  715</span> </div>
-<div class="line"><a name="l00716"></a><span class="lineno">  716</span>   <span class="comment">// free(prob.y);</span></div>
-<div class="line"><a name="l00717"></a><span class="lineno">  717</span>   <span class="comment">// free(prob.x);</span></div>
-<div class="line"><a name="l00718"></a><span class="lineno">  718</span>   <span class="comment">// free(x_space);</span></div>
-<div class="line"><a name="l00719"></a><span class="lineno">  719</span>   <span class="comment">// svm_destroy_param(&param);</span></div>
-<div class="line"><a name="l00720"></a><span class="lineno">  720</span>   <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l00721"></a><span class="lineno">  721</span> }</div>
-<div class="line"><a name="l00722"></a><span class="lineno">  722</span>                             </div>
-<div class="ttc" id="classVector2d_html"><div class="ttname"><a href="classVector2d.html">Vector2d</a></div><div class="ttdef"><b>Definition:</b> <a href="Vector2d_8h_source.html#l00031">Vector2d.h:31</a></div></div>
-<div class="ttc" id="classCostFactoryANN_html"><div class="ttname"><a href="classCostFactoryANN.html">CostFactoryANN</a></div><div class="ttdef"><b>Definition:</b> <a href="pkfsann_8h_source.html#l00029">pkfsann.h:29</a></div></div>
-<div class="ttc" id="classImgReaderOgr_html"><div class="ttname"><a href="classImgReaderOgr.html">ImgReaderOgr</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderOgr_8h_source.html#l00035">ImgReaderOgr.h:35</a></div></div>
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-<div class="ttc" id="classFeatureSelector_html"><div class="ttname"><a href="classFeatureSelector.html">FeatureSelector</a></div><div class="ttdef"><b>Definition:</b> <a href="FeatureSelector_8h_source.html#l00035">FeatureSelector.h:35</a></div></div>
-<div class="ttc" id="classCostFactory_html"><div class="ttname"><a href="classCostFactory.html">CostFactory</a></div><div class="ttdef"><b>Definition:</b> <a href="CostFactory_8h_source.html#l00030">CostFactory.h:30</a></div></div>
-<div class="ttc" id="classFANN_1_1neural__net_html"><div class="ttname"><a href="classFANN_1_1neural__net.html">FANN::neural_net</a></div><div class="ttdef"><b>Definition:</b> <a href="myfann__cpp_8h_source.html#l00978">myfann_cpp.h:978</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkfsann_8h_source.html b/doc/html/pkfsann_8h_source.html
deleted file mode 100644
index cfd1f89..0000000
--- a/doc/html/pkfsann_8h_source.html
+++ /dev/null
@@ -1,121 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/pkfsann.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkfsann.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pkfsann.h: feature selection for ann classifier</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <string></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <vector></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "base/Vector2d.h"</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> </div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#ifndef _PKFSANNH_H_</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor"></span><span class="preprocessor">#define _PKFSANNH_H_</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">enum</span> SelectorValue  { NA=0, SFFS=1, SFS=2, SBS=3, BFS=4};</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> </div>
-<div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="classCostFactoryANN.html">   29</a></span> <span class="keyword">class </span><a class="code" href="classCostFactoryANN.html">CostFactoryANN</a> : <span class="keyword">public</span> <a class="code" href="classCostFactory.html">CostFactory</a></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> {</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span>  <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>   <a class="code" href="classCostFactoryANN.html">CostFactoryANN</a>();</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>   <a class="code" href="classCostFactoryANN.html">CostFactoryANN</a>(<span class="keyword">const</span> std::vector<unsigned int>& nneuron, <span class="keywordtype">float</span> connection, <span class="keyword">const</span> std::vector<float> weights, <span class="keywordtype">float</span> learning, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> maxit, <span cla [...]
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>   ~<a class="code" href="classCostFactoryANN.html">CostFactoryANN</a>();</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>   <span class="keywordtype">double</span> getCost(<span class="keyword">const</span> std::vector<<a class="code" href="classVector2d.html">Vector2d<float></a> > &trainingFeatures);</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   </div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>  <span class="keyword">private</span>:</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>   std::vector<unsigned int> m_nneuron;</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>   <span class="keywordtype">float</span> m_connection;</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   <span class="keyword">const</span> std::vector<float> m_weights;</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>   <span class="keywordtype">float</span> m_learning;</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m_maxit;</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span> };</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span> </div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span> </div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span> <span class="preprocessor">#endif</span></div>
-<div class="ttc" id="classVector2d_html"><div class="ttname"><a href="classVector2d.html">Vector2d</a></div><div class="ttdef"><b>Definition:</b> <a href="Vector2d_8h_source.html#l00031">Vector2d.h:31</a></div></div>
-<div class="ttc" id="classCostFactoryANN_html"><div class="ttname"><a href="classCostFactoryANN.html">CostFactoryANN</a></div><div class="ttdef"><b>Definition:</b> <a href="pkfsann_8h_source.html#l00029">pkfsann.h:29</a></div></div>
-<div class="ttc" id="classCostFactory_html"><div class="ttname"><a href="classCostFactory.html">CostFactory</a></div><div class="ttdef"><b>Definition:</b> <a href="CostFactory_8h_source.html#l00030">CostFactory.h:30</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkfssvm.html b/doc/html/pkfssvm.html
deleted file mode 100644
index 974b17b..0000000
--- a/doc/html/pkfssvm.html
+++ /dev/null
@@ -1,143 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: pkfssvm</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkfssvm </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><p>feature selection for support vector machine classifier pksvm </p>
-<h2>SYNOPSIS</h2>
-<p><code> Usage: pkfssvm -t training -n number </code></p>
-<p><code></code></p>
-<p><code> Options:</code></p>
-<p><code> Advanced options: </code></p>
-<h1><a class="anchor" id="pkfssvm_description"></a>
-Description</h1>
-<p>Classification problems dealing with high dimensional input data can be challenging due to the Hughes phenomenon. Hyperspectral data, for instance, can have hundreds of spectral bands and require special attention when being classified. In particular when limited training data are available, the classification of such data can be problematic without reducing the dimension.</p>
-<p>The SVM classifier has been shown to be more robust to this type of problem than others. Nevertheless, classification accuracy can often be improved with feature selection methods. The utility pkfssvm implements a number of feature selection techniques, among which a sequential floating forward search (SFFS). </p>
-<h1><a class="anchor" id="pkfssvm_options"></a>
-Options</h1>
-<ul>
-<li>use either <code>-short</code> or <code>--long</code> options (both <code>--long=value</code> and <code>--long value</code> are supported)</li>
-<li>short option <code>-h</code> shows basic options only, long option <code>--help</code> shows all options <table class="doxtable">
-<tr>
-<th>short</th><th>long</th><th>type</th><th>default</th><th>description  </th></tr>
-<tr>
-<td>i </td><td>input </td><td>std::string </td><td></td><td>input test set (leave empty to perform a cross validation based on training only) </td></tr>
-<tr>
-<td>t </td><td>training </td><td>std::string </td><td></td><td>training vector file. A single vector file contains all training features (must be set as: B0, B1, B2,...) for all classes (class numbers identified by label option). </td></tr>
-<tr>
-<td>n </td><td>nf </td><td>unsigned short </td><td>0 </td><td>number of features to select (0 to select optimal number, see also ecost option) </td></tr>
-<tr>
-<td>tln </td><td>tln </td><td>std::string </td><td></td><td>training layer name(s) </td></tr>
-<tr>
-<td>label </td><td>label </td><td>std::string </td><td>label </td><td>identifier for class label in training vector file. </td></tr>
-<tr>
-<td>bal </td><td>balance </td><td>unsigned int </td><td>0 </td><td>balance the input data to this number of samples for each class </td></tr>
-<tr>
-<td>random </td><td>random </td><td>bool </td><td>true </td><td>in case of balance, randomize input data </td></tr>
-<tr>
-<td>min </td><td>min </td><td>int </td><td>0 </td><td>if number of training pixels is less then min, do not take this class into account </td></tr>
-<tr>
-<td>b </td><td>band </td><td>unsigned short </td><td></td><td>band index (starting from 0, either use band option or use start to end) </td></tr>
-<tr>
-<td>sband </td><td>startband </td><td>unsigned short </td><td></td><td>Start band sequence number </td></tr>
-<tr>
-<td>eband </td><td>endband </td><td>unsigned short </td><td></td><td>End band sequence number </td></tr>
-<tr>
-<td>offset </td><td>offset </td><td>double </td><td>0 </td><td>offset value for each spectral band input features: refl[band]=(DN[band]-offset[band])/scale[band] </td></tr>
-<tr>
-<td>scale </td><td>scale </td><td>double </td><td>0 </td><td>scale value for each spectral band input features: refl=(DN[band]-offset[band])/scale<a href="use 0 if scale min and max in each band to -1.0 and 1.0">band</a> </td></tr>
-<tr>
-<td>svmt </td><td>svmtype </td><td>std::string </td><td>C_SVC </td><td>type of SVM (C_SVC, nu_SVC,one_class, epsilon_SVR, nu_SVR) </td></tr>
-<tr>
-<td>kt </td><td>kerneltype </td><td>std::string </td><td>radial </td><td>type of kernel function (linear,polynomial,radial,sigmoid) </td></tr>
-<tr>
-<td>kd </td><td>kd </td><td>unsigned short </td><td>3 </td><td>degree in kernel function </td></tr>
-<tr>
-<td>g </td><td>gamma </td><td>float </td><td>1 </td><td>gamma in kernel function </td></tr>
-<tr>
-<td>c0 </td><td>coef0 </td><td>float </td><td>0 </td><td>coef0 in kernel function </td></tr>
-<tr>
-<td>cc </td><td>ccost </td><td>float </td><td>1000 </td><td>the parameter C of C-SVC, epsilon-SVR, and nu-SVR </td></tr>
-<tr>
-<td>nu </td><td>nu </td><td>float </td><td>0.5 </td><td>the parameter nu of nu-SVC, one-class SVM, and nu-SVR </td></tr>
-<tr>
-<td>eloss </td><td>eloss </td><td>float </td><td>0.1 </td><td>the epsilon in loss function of epsilon-SVR </td></tr>
-<tr>
-<td>cache </td><td>cache </td><td>int </td><td>100 </td><td>cache memory size in MB </td></tr>
-<tr>
-<td>etol </td><td>etol </td><td>float </td><td>0.001 </td><td>the tolerance of termination criterion </td></tr>
-<tr>
-<td>shrink </td><td>shrink </td><td>bool </td><td>false </td><td>whether to use the shrinking heuristics </td></tr>
-<tr>
-<td>pe </td><td>probest </td><td>bool </td><td>true </td><td>whether to train a SVC or SVR model for probability estimates </td></tr>
-<tr>
-<td>sm </td><td>sm </td><td>std::string </td><td>sffs </td><td>feature selection method (sffs=sequential floating forward search,sfs=sequential forward search, sbs, sequential backward search ,bfs=brute force search) </td></tr>
-<tr>
-<td>ecost </td><td>ecost </td><td>float </td><td>0.001 </td><td>epsilon for stopping criterion in cost function to determine optimal number of features </td></tr>
-<tr>
-<td>cv </td><td>cv </td><td>unsigned short </td><td>2 </td><td>n-fold cross validation mode </td></tr>
-<tr>
-<td>c </td><td>class </td><td>std::string </td><td></td><td>list of class names. </td></tr>
-<tr>
-<td>r </td><td>reclass </td><td>short </td><td></td><td>list of class values (use same order as in classname opt. </td></tr>
-</table>
-Usage: pkfssvm -t training -n number </li>
-</ul>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkfssvm_8cc_source.html b/doc/html/pkfssvm_8cc_source.html
deleted file mode 100644
index ced46cf..0000000
--- a/doc/html/pkfssvm_8cc_source.html
+++ /dev/null
@@ -1,776 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/pkfssvm.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkfssvm.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pkfssvm.cc: feature selection for support vector machine classifier pksvm</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <stdlib.h></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <vector></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <string></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <map></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <algorithm></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "algorithms/ConfusionMatrix.h"</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "algorithms/CostFactorySVM.h"</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include "algorithms/FeatureSelector.h"</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include "algorithms/svm.h"</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include "imageclasses/ImgReaderOgr.h"</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> </div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="preprocessor">#ifdef HAVE_CONFIG_H</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="preprocessor"></span><span class="preprocessor">#include <config.h></span></div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="comment">/******************************************************************************/</span></div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span> </div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span> <span class="keyword">enum</span> SelectorValue  { NA=0, SFFS=1, SFS=2, SBS=3, BFS=4};</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span> </div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span> <span class="comment">// CostFactorySVM::CostFactorySVM()</span></div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span> <span class="comment">//     : CostFactory(2,0), m_svm_type("C_SVC"), m_kernel_type("radial"), m_kernel_degree(3), m_gamma(1.0), m_coef0(0), m_ccost(1000), m_nu(0.5),  m_epsilon_loss(100), m_cache(100), m_epsilon_tol(0.001), m_shrinking(false), m_prob_est(true){</span></div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span> <span class="comment">// }</span></div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span> </div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span> <span class="comment">// CostFactorySVM::~CostFactorySVM(){</span></div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span> <span class="comment">// }</span></div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span> </div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span> <span class="comment">// CostFactorySVM::CostFactorySVM(std::string svm_type, std::string kernel_type, unsigned short kernel_degree, float gamma, float coef0, float ccost, float nu,  float epsilon_loss, int cache, float epsilon_tol, bool shrinking, bool prob_est, unsigned short cv, bool verbose)</span></div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span> <span class="comment">//     : CostFactory(cv,verbose), m_svm_type(svm_type), m_kernel_type(kernel_type), m_kernel_degree(kernel_degree), m_gamma(gamma), m_coef0(coef0), m_ccost(ccost), m_nu(nu),  m_epsilon_loss(epsilon_loss), m_cache(cache), m_epsilon_tol(epsilon_tol), m_shrinking(shrinking), m_prob_est(prob_est){};</span></div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span> </div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span> <span class="comment">// double CostFactorySVM::getCost(const vector<Vector2d<float> > &trainingFeatures){</span></div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span> <span class="comment">//   std::map<std::string, svm::SVM_TYPE> svmMap;</span></div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span> </div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span> <span class="comment">//   svmMap["C_SVC"]=svm::C_SVC;</span></div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span> <span class="comment">//   svmMap["nu_SVC"]=svm::nu_SVC;</span></div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span> <span class="comment">//   svmMap["one_class"]=svm::one_class;</span></div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span> <span class="comment">//   svmMap["epsilon_SVR"]=svm::epsilon_SVR;</span></div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span> <span class="comment">//   svmMap["nu_SVR"]=svm::nu_SVR;</span></div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span> </div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span> <span class="comment">//   std::map<std::string, svm::KERNEL_TYPE> kernelMap;</span></div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span> </div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span> <span class="comment">//   kernelMap["linear"]=svm::linear;</span></div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span> <span class="comment">//   kernelMap["polynomial"]=svm::polynomial;</span></div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span> <span class="comment">//   kernelMap["radial"]=svm::radial;</span></div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span> <span class="comment">//   kernelMap["sigmoid;"]=svm::sigmoid;</span></div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span> </div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span> <span class="comment">//   unsigned short nclass=trainingFeatures.size();</span></div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span> <span class="comment">//   unsigned int ntraining=0;</span></div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span> <span class="comment">//   unsigned int ntest=0;</span></div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span> <span class="comment">//   for(int iclass=0;iclass<nclass;++iclass){</span></div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span> <span class="comment">//     ntraining+=m_nctraining[iclass];</span></div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span> <span class="comment">//     ntest+=m_nctest[iclass];</span></div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span> <span class="comment">//   }</span></div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span> <span class="comment">//   if(ntest)</span></div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span> <span class="comment">//     assert(!m_cv);</span></div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span> <span class="comment">//   if(!m_cv)</span></div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span> <span class="comment">//     assert(ntest);</span></div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span> <span class="comment">//   unsigned short nFeatures=trainingFeatures[0][0].size();</span></div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span> </div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span> <span class="comment">//   struct svm_parameter param;</span></div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span> <span class="comment">//   param.svm_type = svmMap[m_svm_type];</span></div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span> <span class="comment">//   param.kernel_type = kernelMap[m_kernel_type];</span></div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span> <span class="comment">//   param.degree = m_kernel_degree;</span></div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span> <span class="comment">//   param.gamma = (m_gamma>0)? m_gamma : 1.0/nFeatures;</span></div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span> <span class="comment">//   param.coef0 = m_coef0;</span></div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span> <span class="comment">//   param.nu = m_nu;</span></div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span> <span class="comment">//   param.cache_size = m_cache;</span></div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span> <span class="comment">//   param.C = m_ccost;</span></div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span> <span class="comment">//   param.eps = m_epsilon_tol;</span></div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span> <span class="comment">//   param.p = m_epsilon_loss;</span></div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span> <span class="comment">//   param.shrinking = (m_shrinking)? 1 : 0;</span></div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span> <span class="comment">//   param.probability = (m_prob_est)? 1 : 0;</span></div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span> <span class="comment">//   param.nr_weight = 0;//not used: I use priors and balancing</span></div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span> <span class="comment">//   param.weight_label = NULL;</span></div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span> <span class="comment">//   param.weight = NULL;</span></div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span> <span class="comment">//   param.verbose=(m_verbose>1)? true:false;</span></div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span> <span class="comment">//   struct svm_model* svm;</span></div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span> <span class="comment">//   struct svm_problem prob;</span></div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span> <span class="comment">//   struct svm_node* x_space;</span></div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span> </div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span> <span class="comment">//   prob.l=ntraining;</span></div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span> <span class="comment">//   prob.y = Malloc(double,prob.l);</span></div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span> <span class="comment">//   prob.x = Malloc(struct svm_node *,prob.l);</span></div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span> <span class="comment">//   x_space = Malloc(struct svm_node,(nFeatures+1)*ntraining);</span></div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span> <span class="comment">//   unsigned long int spaceIndex=0;</span></div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span> <span class="comment">//   int lIndex=0;</span></div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span> <span class="comment">//   for(int iclass=0;iclass<nclass;++iclass){</span></div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span> <span class="comment">//     // for(int isample=0;isample<trainingFeatures[iclass].size();++isample){</span></div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span> <span class="comment">//     for(int isample=0;isample<m_nctraining[iclass];++isample){</span></div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span> <span class="comment">//       prob.x[lIndex]=&(x_space[spaceIndex]);</span></div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span> <span class="comment">//       for(int ifeature=0;ifeature<nFeatures;++ifeature){</span></div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span> <span class="comment">//         x_space[spaceIndex].index=ifeature+1;</span></div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span> <span class="comment">//         x_space[spaceIndex].value=trainingFeatures[iclass][isample][ifeature];</span></div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span> <span class="comment">//         ++spaceIndex;</span></div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span> <span class="comment">//       }</span></div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span> <span class="comment">//       x_space[spaceIndex++].index=-1;</span></div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span> <span class="comment">//       prob.y[lIndex]=iclass;</span></div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span> <span class="comment">//       ++lIndex;</span></div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span> <span class="comment">//     }</span></div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span> <span class="comment">//   }</span></div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span> </div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span> <span class="comment">//   assert(lIndex==prob.l);</span></div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span> <span class="comment">//   if(m_verbose>2)</span></div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span> <span class="comment">//     std::cout << "checking parameters" << std::endl;</span></div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span> <span class="comment">//   svm_check_parameter(&prob,&param);</span></div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span> <span class="comment">//   if(m_verbose>2)</span></div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span> <span class="comment">//     std::cout << "parameters ok, training" << std::endl;</span></div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span> <span class="comment">//   svm=svm_train(&prob,&param);</span></div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span> <span class="comment">//   if(m_verbose>2)</span></div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span> <span class="comment">//     std::cout << "SVM is now trained" << std::endl;</span></div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span> </div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span> <span class="comment">//   m_cm.clearResults();</span></div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span> <span class="comment">//   if(m_cv>1){</span></div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span> <span class="comment">//     double *target = Malloc(double,prob.l);</span></div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span> <span class="comment">//     svm_cross_validation(&prob,&param,m_cv,target);</span></div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span> <span class="comment">//     assert(param.svm_type != EPSILON_SVR&&param.svm_type != NU_SVR);//only for regression</span></div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span> <span class="comment">//     for(int i=0;i<prob.l;i++){</span></div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span> <span class="comment">//       string refClassName=m_nameVector[prob.y[i]];</span></div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span> <span class="comment">//       string className=m_nameVector[target[i]];</span></div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span> <span class="comment">//       if(m_classValueMap.size())</span></div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span> <span class="comment">//  m_cm.incrementResult(type2string<short>(m_classValueMap[refClassName]),type2string<short>(m_classValueMap[className]),1.0);</span></div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span> <span class="comment">//       else</span></div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span> <span class="comment">//  m_cm.incrementResult(m_cm.getClass(prob.y[i]),m_cm.getClass(target[i]),1.0);</span></div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span> <span class="comment">//     }</span></div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span> <span class="comment">//     free(target);</span></div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span> <span class="comment">//   }</span></div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span> <span class="comment">//   else{</span></div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span> <span class="comment">//     struct svm_node *x_test;</span></div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span> <span class="comment">//     vector<double> result(nclass);</span></div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span> <span class="comment">//     x_test = Malloc(struct svm_node,(nFeatures+1));</span></div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span> <span class="comment">//     for(int iclass=0;iclass<nclass;++iclass){</span></div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span> <span class="comment">//       for(int isample=0;isample<m_nctest[iclass];++isample){</span></div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span> <span class="comment">//  for(int ifeature=0;ifeature<nFeatures;++ifeature){</span></div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span> <span class="comment">//    x_test[ifeature].index=ifeature+1;</span></div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span> <span class="comment">//    x_test[ifeature].value=trainingFeatures[iclass][m_nctraining[iclass]+isample][ifeature];</span></div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span> <span class="comment">//  }</span></div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span> <span class="comment">//  x_test[nFeatures].index=-1;</span></div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span> <span class="comment">//  double predict_label=0;</span></div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span> <span class="comment">//  assert(svm_check_probability_model(svm));</span></div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span> <span class="comment">//  predict_label = svm_predict_probability(svm,x_test,&(result[0]));</span></div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span> <span class="comment">//  // predict_label = svm_predict(svm,x_test);</span></div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span> <span class="comment">//  string refClassName=m_nameVector[iclass];</span></div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span> <span class="comment">//  string className=m_nameVector[static_cast<short>(predict_label)];</span></div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span> <span class="comment">//  if(m_classValueMap.size())</span></div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span> <span class="comment">//    m_cm.incrementResult(type2string<short>(m_classValueMap[refClassName]),type2string<short>(m_classValueMap[className]),1.0);</span></div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span> <span class="comment">//  else</span></div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span> <span class="comment">//    m_cm.incrementResult(refClassName,className,1.0);</span></div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span> <span class="comment">//       }</span></div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span> <span class="comment">//     }</span></div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span> <span class="comment">//     free(x_test);</span></div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span> <span class="comment">//   }</span></div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span> <span class="comment">//   if(m_verbose>1)</span></div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span> <span class="comment">//     std::cout << m_cm << std::endl;</span></div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span> <span class="comment">//   assert(m_cm.nReference());</span></div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span> <span class="comment">//   // if(m_verbose)</span></div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span> </div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span> <span class="comment">//   // std::cout << m_cm << std::endl;</span></div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span> <span class="comment">//   // std::cout << "Kappa: " << m_cm.kappa() << std::endl;</span></div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span> <span class="comment">//   // double se95_oa=0;</span></div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span> <span class="comment">//   // double doa=0;</span></div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span> <span class="comment">//   // doa=m_cm.oa_pct(&se95_oa);</span></div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span> <span class="comment">//   // std::cout << "Overall Accuracy: " << doa << " (" << se95_oa << ")"  << std::endl;</span></div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span> </div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span> <span class="comment">//   // *NOTE* Because svm_model contains pointers to svm_problem, you can</span></div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span> <span class="comment">//   // not free the memory used by svm_problem if you are still using the</span></div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span> <span class="comment">//   // svm_model produced by svm_train(). </span></div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span> <span class="comment">//   // however, we will re-train the svm later on after the feature selection</span></div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span> <span class="comment">//   free(prob.y);</span></div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span> <span class="comment">//   free(prob.x);</span></div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span> <span class="comment">//   free(x_space);</span></div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span> <span class="comment">//   svm_free_and_destroy_model(&(svm));</span></div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span> </div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span> <span class="comment">//   return(m_cm.kappa());</span></div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span> <span class="comment">// }</span></div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span> </div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span> {</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>   <span class="comment">// vector<double> priors;</span></div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>   </div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>   <span class="comment">//--------------------------- command line options ------------------------------------</span></div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> input_opt(<span class="stringliteral">"i"</span>, <span class="stringliteral">"input"</span>, <span class="stringliteral">"input test set (leave empty to perform a cross validation based on training only)"</span>); </div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> training_opt(<span class="stringliteral">"t"</span>, <span class="stringliteral">"training"</span>, <span class="stringliteral">"training vector file. A single vector file contains all training features (must be set as: B0, B1, B2,...) for all classes (class numbers identified by label option)."</span>); </div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> tlayer_opt(<span class="stringliteral">"tln"</span>, <span class="stringliteral">"tln"</span>, <span class="stringliteral">"training layer name(s)"</span>);</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> label_opt(<span class="stringliteral">"label"</span>, <span class="stringliteral">"label"</span>, <span class="stringliteral">"identifier for class label in training vector file."</span>,<span class="stringliteral">"label"</span>); </div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> maxFeatures_opt(<span class="stringliteral">"n"</span>, <span class="stringliteral">"nf"</span>, <span class="stringliteral">"number of features to select (0 to select optimal number, see also ecost option)"</span>, 0);</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned int></a> balance_opt(<span class="stringliteral">"bal"</span>, <span class="stringliteral">"balance"</span>, <span class="stringliteral">"balance the input data to this number of samples for each class"</span>, 0);</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> random_opt(<span class="stringliteral">"random"</span>,<span class="stringliteral">"random"</span>, <span class="stringliteral">"in case of balance, randomize input data"</span>, <span class="keyword">true</span>);</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> minSize_opt(<span class="stringliteral">"min"</span>, <span class="stringliteral">"min"</span>, <span class="stringliteral">"if number of training pixels is less then min, do not take this class into account"</span>, 0);</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> band_opt(<span class="stringliteral">"b"</span>, <span class="stringliteral">"band"</span>, <span class="stringliteral">"band index (starting from 0, either use band option or use start to end)"</span>);</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> bstart_opt(<span class="stringliteral">"sband"</span>, <span class="stringliteral">"startband"</span>, <span class="stringliteral">"Start band sequence number"</span>); </div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> bend_opt(<span class="stringliteral">"eband"</span>, <span class="stringliteral">"endband"</span>, <span class="stringliteral">"End band sequence number"</span>); </div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> offset_opt(<span class="stringliteral">"offset"</span>, <span class="stringliteral">"offset"</span>, <span class="stringliteral">"offset value for each spectral band input features: refl[band]=(DN[band]-offset[band])/scale[band]"</span>, 0.0);</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> scale_opt(<span class="stringliteral">"scale"</span>, <span class="stringliteral">"scale"</span>, <span class="stringliteral">"scale value for each spectral band input features: refl=(DN[band]-offset[band])/scale[band] (use 0 if scale min and max in each band to -1.0 and 1.0)"</span>, 0.0);</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> selector_opt(<span class="stringliteral">"sm"</span>, <span class="stringliteral">"sm"</span>, <span class="stringliteral">"feature selection method (sffs=sequential floating forward search,sfs=sequential forward search, sbs, sequential backward search ,bfs=brute force search)"</span>,<span class="stringliteral" [...]
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>   <a class="code" href="classOptionpk.html">Optionpk<float></a> epsilon_cost_opt(<span class="stringliteral">"ecost"</span>, <span class="stringliteral">"ecost"</span>, <span class="stringliteral">"epsilon for stopping criterion in cost function to determine optimal number of features"</span>,0.001);</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span> </div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> svm_type_opt(<span class="stringliteral">"svmt"</span>, <span class="stringliteral">"svmtype"</span>, <span class="stringliteral">"type of SVM (C_SVC, nu_SVC,one_class, epsilon_SVR, nu_SVR)"</span>,<span class="stringliteral">"C_SVC"</span>);</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> kernel_type_opt(<span class="stringliteral">"kt"</span>, <span class="stringliteral">"kerneltype"</span>, <span class="stringliteral">"type of kernel function (linear,polynomial,radial,sigmoid) "</span>,<span class="stringliteral">"radial"</span>);</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> kernel_degree_opt(<span class="stringliteral">"kd"</span>, <span class="stringliteral">"kd"</span>, <span class="stringliteral">"degree in kernel function"</span>,3);</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>   <a class="code" href="classOptionpk.html">Optionpk<float></a> gamma_opt(<span class="stringliteral">"g"</span>, <span class="stringliteral">"gamma"</span>, <span class="stringliteral">"gamma in kernel function"</span>,1.0);</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>   <a class="code" href="classOptionpk.html">Optionpk<float></a> coef0_opt(<span class="stringliteral">"c0"</span>, <span class="stringliteral">"coef0"</span>, <span class="stringliteral">"coef0 in kernel function"</span>,0);</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>   <a class="code" href="classOptionpk.html">Optionpk<float></a> ccost_opt(<span class="stringliteral">"cc"</span>, <span class="stringliteral">"ccost"</span>, <span class="stringliteral">"the parameter C of C-SVC, epsilon-SVR, and nu-SVR"</span>,1000);</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>   <a class="code" href="classOptionpk.html">Optionpk<float></a> nu_opt(<span class="stringliteral">"nu"</span>, <span class="stringliteral">"nu"</span>, <span class="stringliteral">"the parameter nu of nu-SVC, one-class SVM, and nu-SVR"</span>,0.5);</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>   <a class="code" href="classOptionpk.html">Optionpk<float></a> epsilon_loss_opt(<span class="stringliteral">"eloss"</span>, <span class="stringliteral">"eloss"</span>, <span class="stringliteral">"the epsilon in loss function of epsilon-SVR"</span>,0.1);</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> cache_opt(<span class="stringliteral">"cache"</span>, <span class="stringliteral">"cache"</span>, <span class="stringliteral">"cache memory size in MB"</span>,100);</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>   <a class="code" href="classOptionpk.html">Optionpk<float></a> epsilon_tol_opt(<span class="stringliteral">"etol"</span>, <span class="stringliteral">"etol"</span>, <span class="stringliteral">"the tolerance of termination criterion"</span>,0.001);</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> shrinking_opt(<span class="stringliteral">"shrink"</span>, <span class="stringliteral">"shrink"</span>, <span class="stringliteral">"whether to use the shrinking heuristics"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> prob_est_opt(<span class="stringliteral">"pe"</span>, <span class="stringliteral">"probest"</span>, <span class="stringliteral">"whether to train a SVC or SVR model for probability estimates"</span>,<span class="keyword">true</span>,2);</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> cv_opt(<span class="stringliteral">"cv"</span>, <span class="stringliteral">"cv"</span>, <span class="stringliteral">"n-fold cross validation mode"</span>,2);</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> classname_opt(<span class="stringliteral">"c"</span>, <span class="stringliteral">"class"</span>, <span class="stringliteral">"list of class names."</span>); </div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> classvalue_opt(<span class="stringliteral">"r"</span>, <span class="stringliteral">"reclass"</span>, <span class="stringliteral">"list of class values (use same order as in classname opt."</span>); </div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> verbose_opt(<span class="stringliteral">"v"</span>, <span class="stringliteral">"verbose"</span>, <span class="stringliteral">"set to: 0 (results only), 1 (confusion matrix), 2 (debug)"</span>,0,2);</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span> </div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>   tlayer_opt.setHide(1);</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>   label_opt.setHide(1);</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>   balance_opt.setHide(1);</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>   random_opt.setHide(1);</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>   minSize_opt.setHide(1);</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>   band_opt.setHide(1);</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>   bstart_opt.setHide(1);</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>   bend_opt.setHide(1);</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>   offset_opt.setHide(1);</div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>   scale_opt.setHide(1);</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>   svm_type_opt.setHide(1);</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>   kernel_type_opt.setHide(1);</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>   kernel_degree_opt.setHide(1);</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>   gamma_opt.setHide(1);</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>   coef0_opt.setHide(1);</div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>   ccost_opt.setHide(1);</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>   nu_opt.setHide(1);</div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>   epsilon_loss_opt.setHide(1);</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>   cache_opt.setHide(1);</div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>   epsilon_tol_opt.setHide(1);</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>   shrinking_opt.setHide(1);</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>   prob_est_opt.setHide(1);</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>   selector_opt.setHide(1);</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>   epsilon_cost_opt.setHide(1);</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>   cv_opt.setHide(1);</div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>   classname_opt.setHide(1);</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>   classvalue_opt.setHide(1);</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span> </div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>   <span class="keywordtype">bool</span> doProcess;<span class="comment">//stop process when program was invoked with help option (-h --help)</span></div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>     doProcess=input_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>     training_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>     maxFeatures_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>     tlayer_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>     label_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>     balance_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>     random_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>     minSize_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>     band_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>     bstart_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>     bend_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>     offset_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>     scale_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>     svm_type_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>     kernel_type_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>     kernel_degree_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>     gamma_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>     coef0_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>     ccost_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>     nu_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>     epsilon_loss_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>     cache_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>     epsilon_tol_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>     shrinking_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>     prob_est_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>     selector_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>     epsilon_cost_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>     cv_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>     classname_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>     classvalue_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>     verbose_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>   }</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> predefinedString){</div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>     std::cout << predefinedString << std::endl;</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>     exit(0);</div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>   }</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>   <span class="keywordflow">if</span>(!doProcess){</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>     cout << endl;</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>     cout << <span class="stringliteral">"Usage: pkfssvm -t training -n number"</span> << endl;</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>     cout << endl;</div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>     std::cout << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << std::endl;</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>     exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>   }</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span> </div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>   <a class="code" href="classCostFactorySVM.html">CostFactorySVM</a> costfactory(svm_type_opt[0], kernel_type_opt[0], kernel_degree_opt[0], gamma_opt[0], coef0_opt[0], ccost_opt[0], nu_opt[0],  epsilon_loss_opt[0], cache_opt[0], epsilon_tol_opt[0], shrinking_opt[0], prob_est_opt[0], cv_opt[0], verbose_opt[0]);</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span> </div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>   assert(training_opt.size());</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>   <span class="keywordflow">if</span>(input_opt.size())</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>     costfactory.setCv(0);</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>   <span class="keywordflow">if</span>(verbose_opt[0]>=1){</div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>     <span class="keywordflow">if</span>(input_opt.size())</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>       std::cout << <span class="stringliteral">"input filename: "</span> << input_opt[0] << std::endl;</div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>     std::cout << <span class="stringliteral">"training vector file: "</span> << std::endl;</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ifile=0;ifile<training_opt.size();++ifile)</div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>       std::cout << training_opt[ifile] << std::endl;</div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>     std::cout << <span class="stringliteral">"verbose: "</span> << verbose_opt[0] << std::endl;</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>   }</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span> </div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>   <span class="keyword">static</span> std::map<std::string, SelectorValue> selMap;</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>   <span class="comment">//initialize selMap</span></div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>   selMap[<span class="stringliteral">"sffs"</span>]=SFFS;</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>   selMap[<span class="stringliteral">"sfs"</span>]=SFS;</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>   selMap[<span class="stringliteral">"sbs"</span>]=SBS;</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>   selMap[<span class="stringliteral">"bfs"</span>]=BFS;</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span> </div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> totalSamples=0;</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> totalTestSamples=0;</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span> </div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> nclass=0;</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>   <span class="keywordtype">int</span> nband=0;</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>   <span class="keywordtype">int</span> startBand=2;<span class="comment">//first two bands represent X and Y pos</span></div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span> </div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>   <span class="comment">// if(priors_opt.size()>1){//priors from argument list</span></div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>   <span class="comment">//   priors.resize(priors_opt.size());</span></div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>   <span class="comment">//   double normPrior=0;</span></div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>   <span class="comment">//   for(int iclass=0;iclass<priors_opt.size();++iclass){</span></div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>   <span class="comment">//     priors[iclass]=priors_opt[iclass];</span></div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>   <span class="comment">//     normPrior+=priors[iclass];</span></div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span>   <span class="comment">//   }</span></div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>   <span class="comment">//   //normalize</span></div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>   <span class="comment">//   for(int iclass=0;iclass<priors_opt.size();++iclass)</span></div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>   <span class="comment">//     priors[iclass]/=normPrior;</span></div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span>   <span class="comment">// }</span></div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span> </div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span>   <span class="comment">//convert start and end band options to vector of band indexes</span></div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>     <span class="keywordflow">if</span>(bstart_opt.size()){</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>       <span class="keywordflow">if</span>(bend_opt.size()!=bstart_opt.size()){</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>     <span class="keywordtype">string</span> errorstring=<span class="stringliteral">"Error: options for start and end band indexes must be provided as pairs, missing end band"</span>;</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span>     <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>       }</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>       band_opt.clear();</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ipair=0;ipair<bstart_opt.size();++ipair){</div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>     <span class="keywordflow">if</span>(bend_opt[ipair]<=bstart_opt[ipair]){</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span>       <span class="keywordtype">string</span> errorstring=<span class="stringliteral">"Error: index for end band must be smaller then start band"</span>;</div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>       <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>     }</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=bstart_opt[ipair];iband<=bend_opt[ipair];++iband)</div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>       band_opt.push_back(iband);</div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span>       }</div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span>     }</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>   }</div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> error){</div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span>     cerr << error << std::endl;</div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span>     exit(1);</div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span>   }</div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span>   <span class="comment">//sort bands</span></div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span>   <span class="keywordflow">if</span>(band_opt.size())</div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span>     std::sort(band_opt.begin(),band_opt.end());</div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span> </div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>   <span class="keywordflow">if</span>(classname_opt.size()){</div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>     assert(classname_opt.size()==classvalue_opt.size());</div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<classname_opt.size();++iclass)</div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span>       costfactory.setClassValueMap(classname_opt[iclass],classvalue_opt[iclass]);</div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span>   }</div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span> </div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span>   <span class="comment">//----------------------------------- Training -------------------------------</span></div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span>   vector<double> offset;</div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span>   vector<double> scale;</div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span>   vector< Vector2d<float> > trainingPixels;<span class="comment">//[class][sample][band]</span></div>
-<div class="line"><a name="l00445"></a><span class="lineno">  445</span>   vector< Vector2d<float> > testPixels;<span class="comment">//[class][sample][band]</span></div>
-<div class="line"><a name="l00446"></a><span class="lineno">  446</span>   map<string,Vector2d<float> > trainingMap;</div>
-<div class="line"><a name="l00447"></a><span class="lineno">  447</span>   map<string,Vector2d<float> > testMap;</div>
-<div class="line"><a name="l00448"></a><span class="lineno">  448</span>   vector<string> fields;</div>
-<div class="line"><a name="l00449"></a><span class="lineno">  449</span> </div>
-<div class="line"><a name="l00450"></a><span class="lineno">  450</span>   <span class="keyword">struct </span><a class="code" href="structsvm__problem.html">svm_problem</a> prob;</div>
-<div class="line"><a name="l00451"></a><span class="lineno">  451</span>   <span class="comment">//organize training data</span></div>
-<div class="line"><a name="l00452"></a><span class="lineno">  452</span>   trainingPixels.clear();</div>
-<div class="line"><a name="l00453"></a><span class="lineno">  453</span>   testPixels.clear();</div>
-<div class="line"><a name="l00454"></a><span class="lineno">  454</span>   <span class="keywordflow">if</span>(verbose_opt[0]>=1)</div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span>     std::cout << <span class="stringliteral">"reading training file "</span> << training_opt[0] << std::endl;</div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span>     <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a> trainingReader(training_opt[0]);</div>
-<div class="line"><a name="l00458"></a><span class="lineno">  458</span>     <span class="keywordflow">if</span>(band_opt.size()){</div>
-<div class="line"><a name="l00459"></a><span class="lineno">  459</span>       totalSamples=trainingReader.readDataImageOgr(trainingMap,fields,band_opt,label_opt[0],tlayer_opt,verbose_opt[0]);</div>
-<div class="line"><a name="l00460"></a><span class="lineno">  460</span>       <span class="keywordflow">if</span>(input_opt.size()){</div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span>     <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a> inputReader(input_opt[0]);</div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span>     totalTestSamples=inputReader.readDataImageOgr(testMap,fields,band_opt,label_opt[0],tlayer_opt,verbose_opt[0]);</div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span>     inputReader.close();</div>
-<div class="line"><a name="l00464"></a><span class="lineno">  464</span>       }</div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span>     }</div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span>       totalSamples=trainingReader.readDataImageOgr(trainingMap,fields,0,0,label_opt[0],tlayer_opt,verbose_opt[0]);</div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span>       <span class="keywordflow">if</span>(input_opt.size()){</div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span>     <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a> inputReader(input_opt[0]);</div>
-<div class="line"><a name="l00470"></a><span class="lineno">  470</span>     totalTestSamples=inputReader.readDataImageOgr(testMap,fields,0,0,label_opt[0],tlayer_opt,verbose_opt[0]);</div>
-<div class="line"><a name="l00471"></a><span class="lineno">  471</span>     inputReader.close();</div>
-<div class="line"><a name="l00472"></a><span class="lineno">  472</span>       }</div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span>     }</div>
-<div class="line"><a name="l00474"></a><span class="lineno">  474</span>     <span class="keywordflow">if</span>(trainingMap.size()<2){</div>
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span>       <span class="keywordtype">string</span> errorstring=<span class="stringliteral">"Error: could not read at least two classes from training input file"</span>;</div>
-<div class="line"><a name="l00476"></a><span class="lineno">  476</span>       <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00477"></a><span class="lineno">  477</span>     }</div>
-<div class="line"><a name="l00478"></a><span class="lineno">  478</span>     <span class="keywordflow">if</span>(input_opt.size()&&testMap.size()<2){</div>
-<div class="line"><a name="l00479"></a><span class="lineno">  479</span>       <span class="keywordtype">string</span> errorstring=<span class="stringliteral">"Error: could not read at least two classes from test input file"</span>;</div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span>       <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span>     }</div>
-<div class="line"><a name="l00482"></a><span class="lineno">  482</span>     trainingReader.close();</div>
-<div class="line"><a name="l00483"></a><span class="lineno">  483</span>   }</div>
-<div class="line"><a name="l00484"></a><span class="lineno">  484</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> error){</div>
-<div class="line"><a name="l00485"></a><span class="lineno">  485</span>     cerr << error << std::endl;</div>
-<div class="line"><a name="l00486"></a><span class="lineno">  486</span>     exit(1);</div>
-<div class="line"><a name="l00487"></a><span class="lineno">  487</span>   }</div>
-<div class="line"><a name="l00488"></a><span class="lineno">  488</span>   <span class="keywordflow">catch</span>(std::exception& e){</div>
-<div class="line"><a name="l00489"></a><span class="lineno">  489</span>     std::cerr << <span class="stringliteral">"Error: "</span>;</div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span>     std::cerr << e.what() << std::endl;</div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span>     std::cerr << CPLGetLastErrorMsg() << std::endl; </div>
-<div class="line"><a name="l00492"></a><span class="lineno">  492</span>     exit(1);</div>
-<div class="line"><a name="l00493"></a><span class="lineno">  493</span>   }</div>
-<div class="line"><a name="l00494"></a><span class="lineno">  494</span>   <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l00495"></a><span class="lineno">  495</span>     cerr << <span class="stringliteral">"error caught"</span> << std::endl;</div>
-<div class="line"><a name="l00496"></a><span class="lineno">  496</span>     exit(1);</div>
-<div class="line"><a name="l00497"></a><span class="lineno">  497</span>   }</div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span>   <span class="comment">//todo: delete class 0 ?</span></div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span>   <span class="comment">// if(verbose_opt[0]>=1)</span></div>
-<div class="line"><a name="l00500"></a><span class="lineno">  500</span>   <span class="comment">//   std::cout << "erasing class 0 from training set (" << trainingMap[0].size() << " from " << totalSamples << ") samples" << std::endl;</span></div>
-<div class="line"><a name="l00501"></a><span class="lineno">  501</span>   <span class="comment">// totalSamples-=trainingMap[0].size();</span></div>
-<div class="line"><a name="l00502"></a><span class="lineno">  502</span>   <span class="comment">// trainingMap.erase(0);</span></div>
-<div class="line"><a name="l00503"></a><span class="lineno">  503</span> </div>
-<div class="line"><a name="l00504"></a><span class="lineno">  504</span>   <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00505"></a><span class="lineno">  505</span>     std::cout << <span class="stringliteral">"training pixels: "</span> << std::endl;</div>
-<div class="line"><a name="l00506"></a><span class="lineno">  506</span>   map<string,Vector2d<float> >::iterator mapit=trainingMap.begin();</div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span>   <span class="keywordflow">while</span>(mapit!=trainingMap.end()){</div>
-<div class="line"><a name="l00508"></a><span class="lineno">  508</span>     <span class="comment">//delete small classes</span></div>
-<div class="line"><a name="l00509"></a><span class="lineno">  509</span>     <span class="keywordflow">if</span>((mapit->second).size()<minSize_opt[0]){</div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span>       trainingMap.erase(mapit);</div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00512"></a><span class="lineno">  512</span>     }</div>
-<div class="line"><a name="l00513"></a><span class="lineno">  513</span>     costfactory.pushBackName(mapit->first);</div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span>     trainingPixels.push_back(mapit->second);</div>
-<div class="line"><a name="l00515"></a><span class="lineno">  515</span>     <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00516"></a><span class="lineno">  516</span>       std::cout << mapit->first << <span class="stringliteral">": "</span> << (mapit->second).size() << <span class="stringliteral">" samples"</span> << std::endl;</div>
-<div class="line"><a name="l00517"></a><span class="lineno">  517</span>     ++mapit;</div>
-<div class="line"><a name="l00518"></a><span class="lineno">  518</span>   }</div>
-<div class="line"><a name="l00519"></a><span class="lineno">  519</span>   nclass=trainingPixels.size();</div>
-<div class="line"><a name="l00520"></a><span class="lineno">  520</span>   <span class="keywordflow">if</span>(classname_opt.size())</div>
-<div class="line"><a name="l00521"></a><span class="lineno">  521</span>     assert(nclass==classname_opt.size());</div>
-<div class="line"><a name="l00522"></a><span class="lineno">  522</span>   nband=trainingPixels[0][0].size()-2;<span class="comment">//X and Y//trainingPixels[0][0].size();</span></div>
-<div class="line"><a name="l00523"></a><span class="lineno">  523</span> </div>
-<div class="line"><a name="l00524"></a><span class="lineno">  524</span>   mapit=testMap.begin();</div>
-<div class="line"><a name="l00525"></a><span class="lineno">  525</span>   <span class="keywordflow">while</span>(mapit!=testMap.end()){</div>
-<div class="line"><a name="l00526"></a><span class="lineno">  526</span>     <span class="keywordflow">if</span>(costfactory.getClassValueMap().size()){</div>
-<div class="line"><a name="l00527"></a><span class="lineno">  527</span>     <span class="comment">// if(classValueMap.size()){</span></div>
-<div class="line"><a name="l00528"></a><span class="lineno">  528</span>       <span class="comment">//check if name in test is covered by classname_opt (values can not be 0)</span></div>
-<div class="line"><a name="l00529"></a><span class="lineno">  529</span>       <span class="keywordflow">if</span>((costfactory.getClassValueMap())[mapit->first]>0){</div>
-<div class="line"><a name="l00530"></a><span class="lineno">  530</span>         ;<span class="comment">//ok, no need to print to std::cout </span></div>
-<div class="line"><a name="l00531"></a><span class="lineno">  531</span>       }</div>
-<div class="line"><a name="l00532"></a><span class="lineno">  532</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00533"></a><span class="lineno">  533</span>         std::cerr << <span class="stringliteral">"Error: names in classname option are not complete, please check names in test vector and make sure classvalue is > 0"</span> << std::endl;</div>
-<div class="line"><a name="l00534"></a><span class="lineno">  534</span>         exit(1);</div>
-<div class="line"><a name="l00535"></a><span class="lineno">  535</span>       }</div>
-<div class="line"><a name="l00536"></a><span class="lineno">  536</span>     }    </div>
-<div class="line"><a name="l00537"></a><span class="lineno">  537</span>     <span class="comment">//no need to delete small classes for test sample</span></div>
-<div class="line"><a name="l00538"></a><span class="lineno">  538</span>     testPixels.push_back(mapit->second);</div>
-<div class="line"><a name="l00539"></a><span class="lineno">  539</span>     <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00540"></a><span class="lineno">  540</span>       std::cout << mapit->first << <span class="stringliteral">": "</span> << (mapit->second).size() << <span class="stringliteral">" samples"</span> << std::endl;</div>
-<div class="line"><a name="l00541"></a><span class="lineno">  541</span>     ++mapit;</div>
-<div class="line"><a name="l00542"></a><span class="lineno">  542</span>   }</div>
-<div class="line"><a name="l00543"></a><span class="lineno">  543</span>   <span class="keywordflow">if</span>(input_opt.size()){</div>
-<div class="line"><a name="l00544"></a><span class="lineno">  544</span>     assert(nclass==testPixels.size());</div>
-<div class="line"><a name="l00545"></a><span class="lineno">  545</span>     assert(nband=testPixels[0][0].size()-2);<span class="comment">//X and Y//testPixels[0][0].size();</span></div>
-<div class="line"><a name="l00546"></a><span class="lineno">  546</span>     assert(!cv_opt[0]);</div>
-<div class="line"><a name="l00547"></a><span class="lineno">  547</span>   }</div>
-<div class="line"><a name="l00548"></a><span class="lineno">  548</span> </div>
-<div class="line"><a name="l00549"></a><span class="lineno">  549</span>   <span class="comment">//do not remove outliers here: could easily be obtained through ogr2ogr -where 'B2<110' output.shp input.shp</span></div>
-<div class="line"><a name="l00550"></a><span class="lineno">  550</span>   <span class="comment">//balance training data</span></div>
-<div class="line"><a name="l00551"></a><span class="lineno">  551</span>   <span class="comment">//todo: do I mean to use random_opt?</span></div>
-<div class="line"><a name="l00552"></a><span class="lineno">  552</span>   <span class="keywordflow">if</span>(balance_opt[0]>0){</div>
-<div class="line"><a name="l00553"></a><span class="lineno">  553</span>     <span class="keywordflow">if</span>(random_opt[0])</div>
-<div class="line"><a name="l00554"></a><span class="lineno">  554</span>       srand(time(NULL));</div>
-<div class="line"><a name="l00555"></a><span class="lineno">  555</span>     totalSamples=0;</div>
-<div class="line"><a name="l00556"></a><span class="lineno">  556</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l00557"></a><span class="lineno">  557</span>       <span class="keywordflow">if</span>(trainingPixels[iclass].size()>balance_opt[0]){</div>
-<div class="line"><a name="l00558"></a><span class="lineno">  558</span>         <span class="keywordflow">while</span>(trainingPixels[iclass].size()>balance_opt[0]){</div>
-<div class="line"><a name="l00559"></a><span class="lineno">  559</span>           <span class="keywordtype">int</span> index=rand()%trainingPixels[iclass].size();</div>
-<div class="line"><a name="l00560"></a><span class="lineno">  560</span>           trainingPixels[iclass].erase(trainingPixels[iclass].begin()+index);</div>
-<div class="line"><a name="l00561"></a><span class="lineno">  561</span>         }</div>
-<div class="line"><a name="l00562"></a><span class="lineno">  562</span>       }</div>
-<div class="line"><a name="l00563"></a><span class="lineno">  563</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00564"></a><span class="lineno">  564</span>         <span class="keywordtype">int</span> oldsize=trainingPixels[iclass].size();</div>
-<div class="line"><a name="l00565"></a><span class="lineno">  565</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=trainingPixels[iclass].size();isample<balance_opt[0];++isample){</div>
-<div class="line"><a name="l00566"></a><span class="lineno">  566</span>           <span class="keywordtype">int</span> index = rand()%oldsize;</div>
-<div class="line"><a name="l00567"></a><span class="lineno">  567</span>           trainingPixels[iclass].push_back(trainingPixels[iclass][index]);</div>
-<div class="line"><a name="l00568"></a><span class="lineno">  568</span>         }</div>
-<div class="line"><a name="l00569"></a><span class="lineno">  569</span>       }</div>
-<div class="line"><a name="l00570"></a><span class="lineno">  570</span>       totalSamples+=trainingPixels[iclass].size();</div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span>     }</div>
-<div class="line"><a name="l00572"></a><span class="lineno">  572</span>     assert(totalSamples==nclass*balance_opt[0]);</div>
-<div class="line"><a name="l00573"></a><span class="lineno">  573</span>   }</div>
-<div class="line"><a name="l00574"></a><span class="lineno">  574</span>     </div>
-<div class="line"><a name="l00575"></a><span class="lineno">  575</span>   <span class="comment">//set scale and offset</span></div>
-<div class="line"><a name="l00576"></a><span class="lineno">  576</span>   offset.resize(nband);</div>
-<div class="line"><a name="l00577"></a><span class="lineno">  577</span>   scale.resize(nband);</div>
-<div class="line"><a name="l00578"></a><span class="lineno">  578</span>   <span class="keywordflow">if</span>(offset_opt.size()>1)</div>
-<div class="line"><a name="l00579"></a><span class="lineno">  579</span>     assert(offset_opt.size()==nband);</div>
-<div class="line"><a name="l00580"></a><span class="lineno">  580</span>   <span class="keywordflow">if</span>(scale_opt.size()>1)</div>
-<div class="line"><a name="l00581"></a><span class="lineno">  581</span>     assert(scale_opt.size()==nband);</div>
-<div class="line"><a name="l00582"></a><span class="lineno">  582</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l00583"></a><span class="lineno">  583</span>     <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00584"></a><span class="lineno">  584</span>       std::cout << <span class="stringliteral">"scaling for band"</span> << iband << std::endl;</div>
-<div class="line"><a name="l00585"></a><span class="lineno">  585</span>     offset[iband]=(offset_opt.size()==1)?offset_opt[0]:offset_opt[iband];</div>
-<div class="line"><a name="l00586"></a><span class="lineno">  586</span>     scale[iband]=(scale_opt.size()==1)?scale_opt[0]:scale_opt[iband];</div>
-<div class="line"><a name="l00587"></a><span class="lineno">  587</span>     <span class="comment">//search for min and maximum</span></div>
-<div class="line"><a name="l00588"></a><span class="lineno">  588</span>     <span class="keywordflow">if</span>(scale[iband]<=0){</div>
-<div class="line"><a name="l00589"></a><span class="lineno">  589</span>       <span class="keywordtype">float</span> theMin=trainingPixels[0][0][iband+startBand];</div>
-<div class="line"><a name="l00590"></a><span class="lineno">  590</span>       <span class="keywordtype">float</span> theMax=trainingPixels[0][0][iband+startBand];</div>
-<div class="line"><a name="l00591"></a><span class="lineno">  591</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l00592"></a><span class="lineno">  592</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<trainingPixels[iclass].size();++isample){</div>
-<div class="line"><a name="l00593"></a><span class="lineno">  593</span>           <span class="keywordflow">if</span>(theMin>trainingPixels[iclass][isample][iband+startBand])</div>
-<div class="line"><a name="l00594"></a><span class="lineno">  594</span>             theMin=trainingPixels[iclass][isample][iband+startBand];</div>
-<div class="line"><a name="l00595"></a><span class="lineno">  595</span>           <span class="keywordflow">if</span>(theMax<trainingPixels[iclass][isample][iband+startBand])</div>
-<div class="line"><a name="l00596"></a><span class="lineno">  596</span>             theMax=trainingPixels[iclass][isample][iband+startBand];</div>
-<div class="line"><a name="l00597"></a><span class="lineno">  597</span>         }</div>
-<div class="line"><a name="l00598"></a><span class="lineno">  598</span>       }</div>
-<div class="line"><a name="l00599"></a><span class="lineno">  599</span>       offset[iband]=theMin+(theMax-theMin)/2.0;</div>
-<div class="line"><a name="l00600"></a><span class="lineno">  600</span>       scale[iband]=(theMax-theMin)/2.0;</div>
-<div class="line"><a name="l00601"></a><span class="lineno">  601</span>       <span class="keywordflow">if</span>(verbose_opt[0]>1){</div>
-<div class="line"><a name="l00602"></a><span class="lineno">  602</span>         std::cout << <span class="stringliteral">"Extreme image values for band "</span> << iband << <span class="stringliteral">": ["</span> << theMin << <span class="stringliteral">","</span> << theMax << <span class="stringliteral">"]"</span> << std::endl;</div>
-<div class="line"><a name="l00603"></a><span class="lineno">  603</span>         std::cout << <span class="stringliteral">"Using offset, scale: "</span> << offset[iband] << <span class="stringliteral">", "</span> << scale[iband] << std::endl;</div>
-<div class="line"><a name="l00604"></a><span class="lineno">  604</span>         std::cout << <span class="stringliteral">"scaled values for band "</span> << iband << <span class="stringliteral">": ["</span> << (theMin-offset[iband])/scale[iband] << <span class="stringliteral">","</span> << (theMax-offset[iband])/scale[iband] << <span class="stringliteral">"]"</span> << std::endl;</div>
-<div class="line"><a name="l00605"></a><span class="lineno">  605</span>       }</div>
-<div class="line"><a name="l00606"></a><span class="lineno">  606</span>     }</div>
-<div class="line"><a name="l00607"></a><span class="lineno">  607</span>   }</div>
-<div class="line"><a name="l00608"></a><span class="lineno">  608</span> </div>
-<div class="line"><a name="l00609"></a><span class="lineno">  609</span>   <span class="comment">// if(priors_opt.size()==1){//default: equal priors for each class</span></div>
-<div class="line"><a name="l00610"></a><span class="lineno">  610</span>   <span class="comment">//   priors.resize(nclass);</span></div>
-<div class="line"><a name="l00611"></a><span class="lineno">  611</span>   <span class="comment">//   for(int iclass=0;iclass<nclass;++iclass)</span></div>
-<div class="line"><a name="l00612"></a><span class="lineno">  612</span>   <span class="comment">//     priors[iclass]=1.0/nclass;</span></div>
-<div class="line"><a name="l00613"></a><span class="lineno">  613</span>   <span class="comment">// }</span></div>
-<div class="line"><a name="l00614"></a><span class="lineno">  614</span>   <span class="comment">// assert(priors_opt.size()==1||priors_opt.size()==nclass);</span></div>
-<div class="line"><a name="l00615"></a><span class="lineno">  615</span>     </div>
-<div class="line"><a name="l00616"></a><span class="lineno">  616</span>   <span class="keywordflow">if</span>(verbose_opt[0]>=1){</div>
-<div class="line"><a name="l00617"></a><span class="lineno">  617</span>     std::cout << <span class="stringliteral">"number of bands: "</span> << nband << std::endl;</div>
-<div class="line"><a name="l00618"></a><span class="lineno">  618</span>     std::cout << <span class="stringliteral">"number of classes: "</span> << nclass << std::endl;</div>
-<div class="line"><a name="l00619"></a><span class="lineno">  619</span>     <span class="comment">// std::cout << "priors:";</span></div>
-<div class="line"><a name="l00620"></a><span class="lineno">  620</span>     <span class="comment">// for(int iclass=0;iclass<nclass;++iclass)</span></div>
-<div class="line"><a name="l00621"></a><span class="lineno">  621</span>     <span class="comment">//   std::cout << " " << priors[iclass];</span></div>
-<div class="line"><a name="l00622"></a><span class="lineno">  622</span>     <span class="comment">// std::cout << std::endl;</span></div>
-<div class="line"><a name="l00623"></a><span class="lineno">  623</span>   }</div>
-<div class="line"><a name="l00624"></a><span class="lineno">  624</span> </div>
-<div class="line"><a name="l00625"></a><span class="lineno">  625</span>   <span class="comment">//set names in confusion matrix using nameVector</span></div>
-<div class="line"><a name="l00626"></a><span class="lineno">  626</span>   vector<string> nameVector=costfactory.getNameVector();</div>
-<div class="line"><a name="l00627"></a><span class="lineno">  627</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iname=0;iname<nameVector.size();++iname){</div>
-<div class="line"><a name="l00628"></a><span class="lineno">  628</span>     <span class="keywordflow">if</span>(costfactory.getClassValueMap().empty())</div>
-<div class="line"><a name="l00629"></a><span class="lineno">  629</span>       costfactory.pushBackClassName(nameVector[iname]);</div>
-<div class="line"><a name="l00630"></a><span class="lineno">  630</span>       <span class="comment">// cm.pushBackClassName(nameVector[iname]);</span></div>
-<div class="line"><a name="l00631"></a><span class="lineno">  631</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(costfactory.getClassIndex(type2string<short>((costfactory.getClassValueMap())[nameVector[iname]]))<0)</div>
-<div class="line"><a name="l00632"></a><span class="lineno">  632</span>       costfactory.pushBackClassName(type2string<short>((costfactory.getClassValueMap())[nameVector[iname]]));</div>
-<div class="line"><a name="l00633"></a><span class="lineno">  633</span>   }</div>
-<div class="line"><a name="l00634"></a><span class="lineno">  634</span> </div>
-<div class="line"><a name="l00635"></a><span class="lineno">  635</span> </div>
-<div class="line"><a name="l00636"></a><span class="lineno">  636</span>   <span class="comment">//Calculate features of training (and test) set</span></div>
-<div class="line"><a name="l00637"></a><span class="lineno">  637</span> </div>
-<div class="line"><a name="l00638"></a><span class="lineno">  638</span>   vector<unsigned int> nctraining;</div>
-<div class="line"><a name="l00639"></a><span class="lineno">  639</span>   vector<unsigned int> nctest;</div>
-<div class="line"><a name="l00640"></a><span class="lineno">  640</span>   nctraining.resize(nclass);</div>
-<div class="line"><a name="l00641"></a><span class="lineno">  641</span>   nctest.resize(nclass);</div>
-<div class="line"><a name="l00642"></a><span class="lineno">  642</span>   vector< Vector2d<float> > trainingFeatures(nclass);</div>
-<div class="line"><a name="l00643"></a><span class="lineno">  643</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l00644"></a><span class="lineno">  644</span>     <span class="keywordflow">if</span>(verbose_opt[0]>=1)</div>
-<div class="line"><a name="l00645"></a><span class="lineno">  645</span>       std::cout << <span class="stringliteral">"calculating features for class "</span> << iclass << std::endl;</div>
-<div class="line"><a name="l00646"></a><span class="lineno">  646</span>     nctraining[iclass]=trainingPixels[iclass].size();</div>
-<div class="line"><a name="l00647"></a><span class="lineno">  647</span>     <span class="keywordflow">if</span>(verbose_opt[0]>=1)</div>
-<div class="line"><a name="l00648"></a><span class="lineno">  648</span>       std::cout << <span class="stringliteral">"nctraining["</span> << iclass << <span class="stringliteral">"]: "</span> << nctraining[iclass] << std::endl;</div>
-<div class="line"><a name="l00649"></a><span class="lineno">  649</span>     <span class="keywordflow">if</span>(testPixels.size()>iclass){</div>
-<div class="line"><a name="l00650"></a><span class="lineno">  650</span>       nctest[iclass]=testPixels[iclass].size();</div>
-<div class="line"><a name="l00651"></a><span class="lineno">  651</span>       <span class="keywordflow">if</span>(verbose_opt[0]>=1){</div>
-<div class="line"><a name="l00652"></a><span class="lineno">  652</span>     std::cout << <span class="stringliteral">"nctest["</span> << iclass << <span class="stringliteral">"]: "</span> << nctest[iclass] << std::endl;</div>
-<div class="line"><a name="l00653"></a><span class="lineno">  653</span>       }</div>
-<div class="line"><a name="l00654"></a><span class="lineno">  654</span>     }</div>
-<div class="line"><a name="l00655"></a><span class="lineno">  655</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00656"></a><span class="lineno">  656</span>       nctest[iclass]=0;</div>
-<div class="line"><a name="l00657"></a><span class="lineno">  657</span> </div>
-<div class="line"><a name="l00658"></a><span class="lineno">  658</span>     trainingFeatures[iclass].resize(nctraining[iclass]+nctest[iclass]);</div>
-<div class="line"><a name="l00659"></a><span class="lineno">  659</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<nctraining[iclass];++isample){</div>
-<div class="line"><a name="l00660"></a><span class="lineno">  660</span>       <span class="comment">//scale pixel values according to scale and offset!!!</span></div>
-<div class="line"><a name="l00661"></a><span class="lineno">  661</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l00662"></a><span class="lineno">  662</span>         assert(trainingPixels[iclass].size()>isample);</div>
-<div class="line"><a name="l00663"></a><span class="lineno">  663</span>         assert(trainingPixels[iclass][isample].size()>iband+startBand);</div>
-<div class="line"><a name="l00664"></a><span class="lineno">  664</span>         assert(offset.size()>iband);</div>
-<div class="line"><a name="l00665"></a><span class="lineno">  665</span>         assert(scale.size()>iband);</div>
-<div class="line"><a name="l00666"></a><span class="lineno">  666</span>         <span class="keywordtype">float</span> value=trainingPixels[iclass][isample][iband+startBand];</div>
-<div class="line"><a name="l00667"></a><span class="lineno">  667</span>         trainingFeatures[iclass][isample].push_back((value-offset[iband])/scale[iband]);</div>
-<div class="line"><a name="l00668"></a><span class="lineno">  668</span>       }</div>
-<div class="line"><a name="l00669"></a><span class="lineno">  669</span>     }</div>
-<div class="line"><a name="l00670"></a><span class="lineno">  670</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<nctest[iclass];++isample){</div>
-<div class="line"><a name="l00671"></a><span class="lineno">  671</span>       <span class="comment">//scale pixel values according to scale and offset!!!</span></div>
-<div class="line"><a name="l00672"></a><span class="lineno">  672</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l00673"></a><span class="lineno">  673</span>         assert(testPixels[iclass].size()>isample);</div>
-<div class="line"><a name="l00674"></a><span class="lineno">  674</span>         assert(testPixels[iclass][isample].size()>iband+startBand);</div>
-<div class="line"><a name="l00675"></a><span class="lineno">  675</span>         assert(offset.size()>iband);</div>
-<div class="line"><a name="l00676"></a><span class="lineno">  676</span>         assert(scale.size()>iband);</div>
-<div class="line"><a name="l00677"></a><span class="lineno">  677</span>         <span class="keywordtype">float</span> value=testPixels[iclass][isample][iband+startBand];</div>
-<div class="line"><a name="l00678"></a><span class="lineno">  678</span>         <span class="comment">// testFeatures[iclass][isample].push_back((value-offset[iband])/scale[iband]);</span></div>
-<div class="line"><a name="l00679"></a><span class="lineno">  679</span>         trainingFeatures[iclass][nctraining[iclass]+isample].push_back((value-offset[iband])/scale[iband]);</div>
-<div class="line"><a name="l00680"></a><span class="lineno">  680</span>       }</div>
-<div class="line"><a name="l00681"></a><span class="lineno">  681</span>     }</div>
-<div class="line"><a name="l00682"></a><span class="lineno">  682</span>     assert(trainingFeatures[iclass].size()==nctraining[iclass]+nctest[iclass]);</div>
-<div class="line"><a name="l00683"></a><span class="lineno">  683</span>   }</div>
-<div class="line"><a name="l00684"></a><span class="lineno">  684</span> </div>
-<div class="line"><a name="l00685"></a><span class="lineno">  685</span>   costfactory.setNcTraining(nctraining);</div>
-<div class="line"><a name="l00686"></a><span class="lineno">  686</span>   costfactory.setNcTest(nctest);</div>
-<div class="line"><a name="l00687"></a><span class="lineno">  687</span>   <span class="keywordtype">int</span> nFeatures=trainingFeatures[0][0].size();</div>
-<div class="line"><a name="l00688"></a><span class="lineno">  688</span>   <span class="keywordtype">int</span> maxFeatures=(maxFeatures_opt[0])? maxFeatures_opt[0] : 1;</div>
-<div class="line"><a name="l00689"></a><span class="lineno">  689</span>   <span class="keywordtype">double</span> previousCost=-1;</div>
-<div class="line"><a name="l00690"></a><span class="lineno">  690</span>   <span class="keywordtype">double</span> cost=0;</div>
-<div class="line"><a name="l00691"></a><span class="lineno">  691</span>   list<int> subset;<span class="comment">//set of selected features (levels) for each class combination</span></div>
-<div class="line"><a name="l00692"></a><span class="lineno">  692</span>   <a class="code" href="classFeatureSelector.html">FeatureSelector</a> selector;</div>
-<div class="line"><a name="l00693"></a><span class="lineno">  693</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00694"></a><span class="lineno">  694</span>     <span class="keywordflow">if</span>(maxFeatures>=nFeatures){</div>
-<div class="line"><a name="l00695"></a><span class="lineno">  695</span>       subset.clear();</div>
-<div class="line"><a name="l00696"></a><span class="lineno">  696</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ifeature=0;ifeature<nFeatures;++ifeature)</div>
-<div class="line"><a name="l00697"></a><span class="lineno">  697</span>         subset.push_back(ifeature);</div>
-<div class="line"><a name="l00698"></a><span class="lineno">  698</span>       cost=costfactory.getCost(trainingFeatures);</div>
-<div class="line"><a name="l00699"></a><span class="lineno">  699</span>     }</div>
-<div class="line"><a name="l00700"></a><span class="lineno">  700</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00701"></a><span class="lineno">  701</span>       <span class="keywordflow">while</span>(fabs(cost-previousCost)>=epsilon_cost_opt[0]){</div>
-<div class="line"><a name="l00702"></a><span class="lineno">  702</span>         previousCost=cost;</div>
-<div class="line"><a name="l00703"></a><span class="lineno">  703</span>         <span class="keywordflow">switch</span>(selMap[selector_opt[0]]){</div>
-<div class="line"><a name="l00704"></a><span class="lineno">  704</span>         <span class="keywordflow">case</span>(SFFS):</div>
-<div class="line"><a name="l00705"></a><span class="lineno">  705</span>           subset.clear();<span class="comment">//needed to clear in case of floating and brute force search</span></div>
-<div class="line"><a name="l00706"></a><span class="lineno">  706</span>           cost=selector.floating(trainingFeatures,costfactory,subset,maxFeatures,epsilon_cost_opt[0],verbose_opt[0]);</div>
-<div class="line"><a name="l00707"></a><span class="lineno">  707</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00708"></a><span class="lineno">  708</span>         <span class="keywordflow">case</span>(SFS):</div>
-<div class="line"><a name="l00709"></a><span class="lineno">  709</span>           cost=selector.forward(trainingFeatures,costfactory,subset,maxFeatures,verbose_opt[0]);</div>
-<div class="line"><a name="l00710"></a><span class="lineno">  710</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00711"></a><span class="lineno">  711</span>         <span class="keywordflow">case</span>(SBS):</div>
-<div class="line"><a name="l00712"></a><span class="lineno">  712</span>           cost=selector.backward(trainingFeatures,costfactory,subset,maxFeatures,verbose_opt[0]);</div>
-<div class="line"><a name="l00713"></a><span class="lineno">  713</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00714"></a><span class="lineno">  714</span>         <span class="keywordflow">case</span>(BFS):</div>
-<div class="line"><a name="l00715"></a><span class="lineno">  715</span>           subset.clear();<span class="comment">//needed to clear in case of floating and brute force search</span></div>
-<div class="line"><a name="l00716"></a><span class="lineno">  716</span>           cost=selector.bruteForce(trainingFeatures,costfactory,subset,maxFeatures,verbose_opt[0]);</div>
-<div class="line"><a name="l00717"></a><span class="lineno">  717</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00718"></a><span class="lineno">  718</span>         <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00719"></a><span class="lineno">  719</span>           std::cout << <span class="stringliteral">"Error: selector not supported, please use sffs, sfs, sbs or bfs"</span> << std::endl;</div>
-<div class="line"><a name="l00720"></a><span class="lineno">  720</span>           exit(1);</div>
-<div class="line"><a name="l00721"></a><span class="lineno">  721</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00722"></a><span class="lineno">  722</span>         }</div>
-<div class="line"><a name="l00723"></a><span class="lineno">  723</span>         <span class="keywordflow">if</span>(verbose_opt[0]>1){</div>
-<div class="line"><a name="l00724"></a><span class="lineno">  724</span>           std::cout << <span class="stringliteral">"cost: "</span> << cost << std::endl;</div>
-<div class="line"><a name="l00725"></a><span class="lineno">  725</span>           std::cout << <span class="stringliteral">"previousCost: "</span> << previousCost << std::endl;</div>
-<div class="line"><a name="l00726"></a><span class="lineno">  726</span>           std::cout << std::setprecision(12) << <span class="stringliteral">"cost-previousCost: "</span> << cost - previousCost << <span class="stringliteral">" ( "</span> << epsilon_cost_opt[0] << <span class="stringliteral">")"</span> << std::endl;</div>
-<div class="line"><a name="l00727"></a><span class="lineno">  727</span>         }</div>
-<div class="line"><a name="l00728"></a><span class="lineno">  728</span>         <span class="keywordflow">if</span>(!maxFeatures_opt[0])</div>
-<div class="line"><a name="l00729"></a><span class="lineno">  729</span>           ++maxFeatures;</div>
-<div class="line"><a name="l00730"></a><span class="lineno">  730</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00731"></a><span class="lineno">  731</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00732"></a><span class="lineno">  732</span>       }</div>
-<div class="line"><a name="l00733"></a><span class="lineno">  733</span>     }</div>
-<div class="line"><a name="l00734"></a><span class="lineno">  734</span>   }</div>
-<div class="line"><a name="l00735"></a><span class="lineno">  735</span>   <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l00736"></a><span class="lineno">  736</span>     std::cout << <span class="stringliteral">"caught feature selection"</span> << std::endl;</div>
-<div class="line"><a name="l00737"></a><span class="lineno">  737</span>     exit(1);</div>
-<div class="line"><a name="l00738"></a><span class="lineno">  738</span>   }</div>
-<div class="line"><a name="l00739"></a><span class="lineno">  739</span> </div>
-<div class="line"><a name="l00740"></a><span class="lineno">  740</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00741"></a><span class="lineno">  741</span>     cout <<<span class="stringliteral">"cost: "</span> << cost << endl;</div>
-<div class="line"><a name="l00742"></a><span class="lineno">  742</span>   subset.sort();</div>
-<div class="line"><a name="l00743"></a><span class="lineno">  743</span>   <span class="keywordflow">for</span>(list<int>::const_iterator lit=subset.begin();lit!=subset.end();++lit)</div>
-<div class="line"><a name="l00744"></a><span class="lineno">  744</span>     std::cout << <span class="stringliteral">" -b "</span> << *lit;</div>
-<div class="line"><a name="l00745"></a><span class="lineno">  745</span>   std::cout << std::endl;</div>
-<div class="line"><a name="l00746"></a><span class="lineno">  746</span>     <span class="comment">// if((*(lit))!=subset.back())</span></div>
-<div class="line"><a name="l00747"></a><span class="lineno">  747</span>     <span class="comment">// else</span></div>
-<div class="line"><a name="l00748"></a><span class="lineno">  748</span>     <span class="comment">//   cout << endl;</span></div>
-<div class="line"><a name="l00749"></a><span class="lineno">  749</span> </div>
-<div class="line"><a name="l00750"></a><span class="lineno">  750</span>   <span class="comment">// *NOTE* Because svm_model contains pointers to svm_problem, you can</span></div>
-<div class="line"><a name="l00751"></a><span class="lineno">  751</span>   <span class="comment">// not free the memory used by svm_problem if you are still using the</span></div>
-<div class="line"><a name="l00752"></a><span class="lineno">  752</span>   <span class="comment">// svm_model produced by svm_train(). </span></div>
-<div class="line"><a name="l00753"></a><span class="lineno">  753</span> </div>
-<div class="line"><a name="l00754"></a><span class="lineno">  754</span>   <span class="comment">// free(prob.y);</span></div>
-<div class="line"><a name="l00755"></a><span class="lineno">  755</span>   <span class="comment">// free(prob.x);</span></div>
-<div class="line"><a name="l00756"></a><span class="lineno">  756</span>   <span class="comment">// free(x_space);</span></div>
-<div class="line"><a name="l00757"></a><span class="lineno">  757</span>   <span class="comment">// svm_destroy_param(&param);</span></div>
-<div class="line"><a name="l00758"></a><span class="lineno">  758</span>   <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l00759"></a><span class="lineno">  759</span> }</div>
-<div class="line"><a name="l00760"></a><span class="lineno">  760</span>                             </div>
-<div class="ttc" id="classImgReaderOgr_html"><div class="ttname"><a href="classImgReaderOgr.html">ImgReaderOgr</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderOgr_8h_source.html#l00035">ImgReaderOgr.h:35</a></div></div>
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-<div class="ttc" id="classFeatureSelector_html"><div class="ttname"><a href="classFeatureSelector.html">FeatureSelector</a></div><div class="ttdef"><b>Definition:</b> <a href="FeatureSelector_8h_source.html#l00035">FeatureSelector.h:35</a></div></div>
-<div class="ttc" id="classCostFactorySVM_html"><div class="ttname"><a href="classCostFactorySVM.html">CostFactorySVM</a></div><div class="ttdef"><b>Definition:</b> <a href="CostFactorySVM_8h_source.html#l00034">CostFactorySVM.h:34</a></div></div>
-<div class="ttc" id="structsvm__problem_html"><div class="ttname"><a href="structsvm__problem.html">svm_problem</a></div><div class="ttdef"><b>Definition:</b> <a href="svm_8h_source.html#l00018">svm.h:18</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkgetmask.html b/doc/html/pkgetmask.html
deleted file mode 100644
index 3010172..0000000
--- a/doc/html/pkgetmask.html
+++ /dev/null
@@ -1,109 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: pkgetmask</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkgetmask </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><p>program to create mask image based on values in input raster image </p>
-<h2>SYNOPSIS</h2>
-<p><code> Usage: pkgetmask -i input -o output </code></p>
-<p><code></code></p>
-<p><code> Options: [-min value]* [-max value]* [-data value]* [-nodata value]*</code></p>
-<p><code> Advanced options: [-b band]* [–operator AND|OR] [-ot type] [-of format] [-co option]* [-ct table]</code></p>
-<p><code></code></p>
-<h1><a class="anchor" id="pkgetmask_description"></a>
-Description</h1>
-<p>The utility pkgetmask creates a mask raster dataset from an input raster dataset. Values smaller than the minimum value (-min) or larger than the maximum value (-max) will result in a -nodata value in the mask.</p>
-<h1><a class="anchor" id="pkgetmask_options"></a>
-Options</h1>
-<ul>
-<li>use either <code>-short</code> or <code>--long</code> options (both <code>--long=value</code> and <code>--long value</code> are supported)</li>
-<li>short option <code>-h</code> shows basic options only, long option <code>--help</code> shows all options <table class="doxtable">
-<tr>
-<th>short</th><th>long</th><th>type</th><th>default</th><th>description  </th></tr>
-<tr>
-<td>i </td><td>input </td><td>std::string </td><td></td><td>Input image file </td></tr>
-<tr>
-<td>o </td><td>output </td><td>std::string </td><td></td><td>Output mask file </td></tr>
-<tr>
-<td>min </td><td>min </td><td>double </td><td></td><td>Values smaller than min threshold(s) are masked as invalid. Use one threshold for each band </td></tr>
-<tr>
-<td>max </td><td>max </td><td>double </td><td></td><td>Values greater than max threshold(s) are masked as invalid. Use one threshold for each band </td></tr>
-<tr>
-<td>data </td><td>data </td><td>unsigned short </td><td>1 </td><td>value(s) for valid pixels: between min and max </td></tr>
-<tr>
-<td>nodata </td><td>nodata </td><td>unsigned short </td><td>0 </td><td>value(s) for invalid pixels: not between min and max </td></tr>
-<tr>
-<td>b </td><td>band </td><td>short </td><td>0 </td><td>band(s) used for mask </td></tr>
-<tr>
-<td>p </td><td>operator </td><td>std::string </td><td>OR </td><td>Operator: [AND,OR]. </td></tr>
-<tr>
-<td>ot </td><td>otype </td><td>std::string </td><td>Byte </td><td>Data type for output image ({Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/CInt16/CInt32/CFloat32/CFloat64}). Empty string: inherit type from input image </td></tr>
-<tr>
-<td>of </td><td>oformat </td><td>std::string </td><td>GTiff </td><td>Output image format (see also gdal_translate). </td></tr>
-<tr>
-<td>co </td><td>co </td><td>std::string </td><td></td><td>Creation option for output file. Multiple options can be specified. </td></tr>
-<tr>
-<td>ct </td><td>ct </td><td>std::string </td><td></td><td>color table (file with 5 columns: id R G B ALFA (0: transparent, 255: solid) </td></tr>
-</table>
-Usage: pkgetmask -i input -o output</li>
-</ul>
-<h1>Examples </h1>
-<p>Some examples how to use pkgetmask can be found <a class="el" href="md_examples_pkgetmask.html#examples_pkgetmask">here</a> </p>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkgetmask_8cc_source.html b/doc/html/pkgetmask_8cc_source.html
deleted file mode 100644
index b626f45..0000000
--- a/doc/html/pkgetmask_8cc_source.html
+++ /dev/null
@@ -1,302 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/pkgetmask.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkgetmask.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pkgetmask.cc: program to create mask image based on values in input raster image</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <assert.h></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <vector></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "imageclasses/ImgReaderGdal.h"</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "imageclasses/ImgWriterGdal.h"</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="comment">/******************************************************************************/</span></div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc,<span class="keywordtype">char</span> **argv) {</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> input_opt(<span class="stringliteral">"i"</span>, <span class="stringliteral">"input"</span>, <span class="stringliteral">"Input image file"</span>);</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> band_opt(<span class="stringliteral">"b"</span>, <span class="stringliteral">"band"</span>, <span class="stringliteral">"band(s) used for mask"</span>, 0);</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> min_opt(<span class="stringliteral">"min"</span>, <span class="stringliteral">"min"</span>, <span class="stringliteral">"Values smaller than min threshold(s) are masked as invalid. Use one threshold for each band"</span>);</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> max_opt(<span class="stringliteral">"max"</span>, <span class="stringliteral">"max"</span>, <span class="stringliteral">"Values greater than max threshold(s) are masked as invalid. Use one threshold for each band"</span>);</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> operator_opt(<span class="stringliteral">"p"</span>, <span class="stringliteral">"operator"</span>, <span class="stringliteral">"Operator: [AND,OR]."</span>, <span class="stringliteral">"OR"</span>);</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> data_opt(<span class="stringliteral">"data"</span>, <span class="stringliteral">"data"</span>, <span class="stringliteral">"value(s) for valid pixels: between min and max"</span>, 1);</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> nodata_opt(<span class="stringliteral">"nodata"</span>, <span class="stringliteral">"nodata"</span>, <span class="stringliteral">"value(s) for invalid pixels: not between min and max"</span>, 0);</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> output_opt(<span class="stringliteral">"o"</span>, <span class="stringliteral">"output"</span>, <span class="stringliteral">"Output mask file"</span>);</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> otype_opt(<span class="stringliteral">"ot"</span>, <span class="stringliteral">"otype"</span>, <span class="stringliteral">"Data type for output image ({Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/CInt16/CInt32/CFloat32/CFloat64}). Empty string: inherit type from input image"</span>, <span class="stringlitera [...]
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> oformat_opt(<span class="stringliteral">"of"</span>, <span class="stringliteral">"oformat"</span>, <span class="stringliteral">"Output image format (see also gdal_translate)."</span>,<span class="stringliteral">"GTiff"</span>);</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> option_opt(<span class="stringliteral">"co"</span>, <span class="stringliteral">"co"</span>, <span class="stringliteral">"Creation option for output file. Multiple options can be specified."</span>);</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> colorTable_opt(<span class="stringliteral">"ct"</span>, <span class="stringliteral">"ct"</span>, <span class="stringliteral">"color table (file with 5 columns: id R G B ALFA (0: transparent, 255: solid)"</span>);</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> verbose_opt(<span class="stringliteral">"v"</span>, <span class="stringliteral">"verbose"</span>, <span class="stringliteral">"verbose"</span>, 0,2);</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span> </div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>   band_opt.setHide(1);</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   operator_opt.setHide(1);</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>   otype_opt.setHide(1);</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>   oformat_opt.setHide(1);</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>   option_opt.setHide(1);</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   colorTable_opt.setHide(1);</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span> </div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   <span class="keywordtype">bool</span> doProcess;<span class="comment">//stop process when program was invoked with help option (-h --help)</span></div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     doProcess=input_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     output_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     min_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     max_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     data_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     nodata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     band_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     operator_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     otype_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     oformat_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     option_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     colorTable_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     verbose_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   }</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> predefinedString){</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>     std::cout << predefinedString << std::endl;</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>     exit(0);</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>   }</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   <span class="keywordflow">if</span>(!doProcess){</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     cout << endl;</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     cout << <span class="stringliteral">"Usage: pkgetmask -i input -o output"</span> << endl;</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     cout << endl;</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     std::cout << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << std::endl;</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>     exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>   }</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span> </div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>   <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>   pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>   GDALDataType theType=GDT_Unknown;</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>     cout << <span class="stringliteral">"possible output data types: "</span>;</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iType = 0; iType < GDT_TypeCount; ++iType){</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>       cout << <span class="stringliteral">" "</span> << GDALGetDataTypeName((GDALDataType)iType);</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>     <span class="keywordflow">if</span>( GDALGetDataTypeName((GDALDataType)iType) != NULL</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>         && EQUAL(GDALGetDataTypeName((GDALDataType)iType),</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>                  otype_opt[0].c_str()))</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>       theType=(GDALDataType) iType;</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>   }</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>   <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>     cout << endl;</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>     <span class="keywordflow">if</span>(theType==GDT_Unknown)</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>       cout << <span class="stringliteral">"Unknown output pixel type: "</span> << otype_opt[0] << endl;</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>       cout << <span class="stringliteral">"Output pixel type:  "</span> << GDALGetDataTypeName(theType) << endl;</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>   }</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span> </div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>   assert(input_opt.size());</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>   <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> imgReader(input_opt[0]);</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>   assert(band_opt.size()>=0);</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>   assert(band_opt.size()<=imgReader.nrOfBand());</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span> </div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>   <span class="keywordflow">if</span>(min_opt.size()&&max_opt.size()){</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>     <span class="keywordflow">if</span>(min_opt.size()!=max_opt.size())</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>       cerr << <span class="stringliteral">"Error: number of min and max options must correspond if both min and max options are provide"</span> << endl;</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>     assert(min_opt.size()==max_opt.size());</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>   }</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>   <span class="keywordflow">if</span>(min_opt.size()){</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>     <span class="keywordflow">while</span>(band_opt.size()>min_opt.size())</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>       min_opt.push_back(min_opt[0]);</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>     <span class="keywordflow">while</span>(min_opt.size()>data_opt.size())</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>       data_opt.push_back(data_opt[0]);</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>   }</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>   <span class="keywordflow">if</span>(max_opt.size()){</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>     <span class="keywordflow">while</span>(band_opt.size()>max_opt.size())</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>       max_opt.push_back(max_opt[0]);</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>     <span class="keywordflow">while</span>(max_opt.size()>data_opt.size())</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>       data_opt.push_back(data_opt[0]);</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>   }</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>   <span class="comment">// assert(min_opt.size()==max_opt.size());</span></div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>   <span class="comment">// if(verbose_opt[0]){</span></div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>   <span class="comment">//   cout << "min,max values: ";</span></div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>   <span class="comment">//   for(int imin=0;imin<min_opt.size();++imin){</span></div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>   <span class="comment">//     cout << min_opt[imin] << "," << max_opt[imin];</span></div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>   <span class="comment">//     if(imin<min_opt.size()-1)</span></div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>   <span class="comment">//    cout << " ";</span></div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>   <span class="comment">//     else</span></div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>   <span class="comment">//    cout << endl;</span></div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>   <span class="comment">//   }</span></div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>   <span class="comment">// }</span></div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>   </div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>   vector< vector<float> > lineBuffer(band_opt.size());</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<band_opt.size();++iband)</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>     lineBuffer.resize(imgReader.nrOfCol());</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>   <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> imgWriter;</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>   <span class="comment">//if output type not set, get type from input image</span></div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>   <span class="keywordflow">if</span>(theType==GDT_Unknown){</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>     theType=imgReader.getDataType();</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>       cout << <span class="stringliteral">"Using data type from input image: "</span> << GDALGetDataTypeName(theType) << endl;</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>   }</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>   <span class="keywordtype">string</span> imageType;<span class="comment">//=imgReader.getImageType();</span></div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>   <span class="keywordflow">if</span>(oformat_opt.size())<span class="comment">//default</span></div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>     imageType=oformat_opt[0];</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>   <span class="keywordflow">if</span>(option_opt.findSubstring(<span class="stringliteral">"INTERLEAVE="</span>)==option_opt.end()){</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>     <span class="keywordtype">string</span> theInterleave=<span class="stringliteral">"INTERLEAVE="</span>;</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>     theInterleave+=imgReader.getInterleave();</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>     option_opt.push_back(theInterleave);</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>   }</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>   assert(output_opt.size());</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>   imgWriter.open(output_opt[0],imgReader.nrOfCol(),imgReader.nrOfRow(),1,theType,imageType,option_opt);</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>   <span class="keywordflow">if</span>(colorTable_opt.size()){</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>     <span class="keywordflow">if</span>(colorTable_opt[0]!=<span class="stringliteral">"none"</span>)</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>       imgWriter.setColorTable(colorTable_opt[0]);</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>   }</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (imgReader.getColorTable()!=NULL)<span class="comment">//copy colorTable from input image</span></div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>     imgWriter.setColorTable(imgReader.getColorTable());</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span> </div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>   imgWriter.setProjection(imgReader.getProjection());</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>   <span class="keywordtype">double</span> gt[6];</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>   imgReader.getGeoTransform(gt);</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>   imgWriter.setGeoTransform(gt);<span class="comment">//ulx,uly,imgReader.getDeltaX(),imgReader.getDeltaY(),0,0);</span></div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>   </div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>   <span class="keywordflow">if</span>(nodata_opt.size())</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>       imgWriter.GDALSetNoDataValue(nodata_opt[0]);</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span> </div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>   vector<char> writeBuffer(imgWriter.nrOfCol());</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<imgReader.nrOfRow();++irow){</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<band_opt.size();++iband)</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>       imgReader.readData(lineBuffer[iband],GDT_Float32,irow,band_opt[iband]);</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<imgReader.nrOfCol();++icol){</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>       <span class="keywordtype">bool</span> valid=(operator_opt[0]==<span class="stringliteral">"OR"</span>)?<span class="keyword">false</span>:<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>       <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> validValue=data_opt[0];</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>       <span class="keywordflow">if</span>(min_opt.size()&&max_opt.size()){</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>     assert(max_opt.size()==min_opt.size());</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ivalid=0;ivalid<min_opt.size();++ivalid){</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>       <span class="keywordtype">bool</span> validBand=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>       <span class="comment">// for(int iband=0;iband<band_opt.size();++iband){</span></div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>       <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> theBand=(band_opt.size()==min_opt.size())? ivalid:0;</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>       <span class="keywordflow">if</span>(lineBuffer[theBand][icol]>=min_opt[ivalid]&&lineBuffer[theBand][icol]<=max_opt[ivalid]){</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>         validValue=data_opt[ivalid];</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>         validBand=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>       }</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>       valid=(operator_opt[0]==<span class="stringliteral">"OR"</span>)?valid||validBand : valid&&validBand;</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>     }</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>       }</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(min_opt.size()){</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ivalid=0;ivalid<min_opt.size();++ivalid){</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>       <span class="keywordtype">bool</span> validBand=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>       <span class="comment">// for(int iband=0;iband<band_opt.size();++iband){</span></div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>       <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> theBand=(band_opt.size()==min_opt.size())? ivalid:0;</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>       <span class="keywordflow">if</span>(lineBuffer[theBand][icol]>=min_opt[ivalid]){</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>         validValue=data_opt[ivalid];</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>         validBand=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>       }</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>       valid=(operator_opt[0]==<span class="stringliteral">"OR"</span>)?valid||validBand : valid&&validBand;</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>     }</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>       }</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(max_opt.size()){</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ivalid=0;ivalid<max_opt.size();++ivalid){</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>       <span class="keywordtype">bool</span> validBand=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>       <span class="comment">// for(int iband=0;iband<band_opt.size();++iband){</span></div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>       <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> theBand=(band_opt.size()==max_opt.size())? ivalid:0;</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>       <span class="keywordflow">if</span>(lineBuffer[theBand][icol]<=max_opt[ivalid]){</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>         validValue=data_opt[ivalid];</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>         validBand=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>       }</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>       valid=(operator_opt[0]==<span class="stringliteral">"OR"</span>)?valid||validBand : valid&&validBand;</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>     }</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>       }</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>       <span class="keywordflow">if</span>(valid)</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>     writeBuffer[icol]=validValue;</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>     writeBuffer[icol]=nodata_opt[0];</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>     }</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>     imgWriter.writeData(writeBuffer,GDT_Byte,irow);</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>     progress=(1.0+irow)/imgWriter.nrOfRow();</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>   }</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span> </div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>   imgReader.close();</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>   imgWriter.close();</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span> }</div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-<div class="ttc" id="classImgWriterGdal_html"><div class="ttname"><a href="classImgWriterGdal.html">ImgWriterGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgWriterGdal_8h_source.html#l00033">ImgWriterGdal.h:33</a></div></div>
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkgetmask_8py_source.html b/doc/html/pkgetmask_8py_source.html
deleted file mode 100644
index d7f2f10..0000000
--- a/doc/html/pkgetmask_8py_source.html
+++ /dev/null
@@ -1,212 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/pkgetmask.py Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkgetmask.py</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment"># -*- coding: utf-8 -*-</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> </div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="stringliteral">    pkgetmask.py</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="stringliteral">    ---------------------</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="stringliteral">    Date                 : April 2015</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="stringliteral">    Copyright            : (C) 2015 by Pieter Kempeneers</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="stringliteral">    Email                : kempenep at gmail dot com</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="stringliteral">*   This program is free software; you can redistribute it and/or modify  *</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="stringliteral">*   it under the terms of the GNU General Public License as published by  *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="stringliteral">*   the Free Software Foundation; either version 2 of the License, or     *</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="stringliteral">*   (at your option) any later version.                                   *</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> __author__ = <span class="stringliteral">'Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> __date__ = <span class="stringliteral">'April 2015'</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> __copyright__ = <span class="stringliteral">'(C) 2015, Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"># This will get replaced with a git SHA1 when you do a git archive</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> __revision__ = <span class="stringliteral">'$Format:%H$'</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">import</span> os</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">from</span> pktoolsUtils <span class="keyword">import</span> pktoolsUtils</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">from</span> pktoolsAlgorithm <span class="keyword">import</span> pktoolsAlgorithm</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterMultipleInput</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterRaster</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">from</span> processing.core.outputs <span class="keyword">import</span> OutputRaster</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterSelection</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterNumber</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterString</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterBoolean</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterExtent</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
-<div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">   38</a></span> <span class="keyword">class </span><a class="code" href="classqgis_1_1pkgetmask_1_1pkgetmask.html">pkgetmask</a>(pktoolsAlgorithm):</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> </div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     INPUT = <span class="stringliteral">"INPUT"</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     BAND = <span class="stringliteral">"BAND"</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     MIN = <span class="stringliteral">"MIN"</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     MAX = <span class="stringliteral">"MAX"</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     OPERATOR_OPTIONS = [<span class="stringliteral">"OR"</span>, <span class="stringliteral">"AND"</span>]</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     OPERATOR = <span class="stringliteral">"OPERATOR"</span></div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     DATA = <span class="stringliteral">"DATA"</span></div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     NODATA = <span class="stringliteral">"NODATA"</span></div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     OUTPUT = <span class="stringliteral">"OUTPUT"</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     RTYPE = <span class="stringliteral">'RTYPE'</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     TYPE = [<span class="stringliteral">'none'</span>, <span class="stringliteral">'Byte'</span>,<span class="stringliteral">'Int16'</span>,<span class="stringliteral">'UInt16'</span>,<span class="stringliteral">'UInt32'</span>,<span class="stringliteral">'Int32'</span>,<span class="stringliteral">'Float32'</span>,<span class="stringliteral">'Float64&# [...]
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     EXTRA = <span class="stringliteral">'EXTRA'</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span> </div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     <span class="keyword">def </span>cliName(self):</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>         <span class="keywordflow">return</span> <span class="stringliteral">"pkgetmask"</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span> </div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <span class="keyword">def </span>defineCharacteristics(self):</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>         self.<a class="code" href="classqgis_1_1pkgetmask_1_1pkgetmask.html#ab9a736f64545f8ac36bbf1eae8576cd5">name</a> = <span class="stringliteral">"create mask from raster dataset"</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>         self.<a class="code" href="classqgis_1_1pkgetmask_1_1pkgetmask.html#aa0e0d197447b16bee323b2e9fdaa876b">group</a> = <span class="stringliteral">"[pktools] raster"</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>         self.addParameter(ParameterRaster(self.<a class="code" href="classqgis_1_1pkgetmask_1_1pkgetmask.html#a1990e1aab12f8a84394b7c44c9c78efd">INPUT</a>, <span class="stringliteral">'Input layer raster data set'</span>,ParameterRaster))</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkgetmask_1_1pkgetmask.html#ad45ff2519baa645c8bf75e063fc2939d">BAND</a>, <span class="stringliteral">"Band(s) used for mask (e.g., 0;1)"</span>,<span class="stringliteral">"0"</span>))</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkgetmask_1_1pkgetmask.html#a86f16ca18fe18083446f0a2fdab1c989">MIN</a>, <span class="stringliteral">"Minimum valid value (one value per band)"</span>,<span class="stringliteral">"none"</span>))</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkgetmask_1_1pkgetmask.html#a74d4d91d62405ae1cb788e0fc52b64c6">MAX</a>, <span class="stringliteral">"Maximum valid value (one value per band)"</span>,<span class="stringliteral">"none"</span>))</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pkgetmask_1_1pkgetmask.html#a2a1d0302fefa56238c42d3ea6f747941">OPERATOR</a>,<span class="stringliteral">"getmask rule"</span>,self.<a class="code" href="classqgis_1_1pkgetmask_1_1pkgetmask.html#a418e9d844d597fb600d16afc0b7e70cd">OPERATOR_OPTIONS</a>, 0))</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkgetmask_1_1pkgetmask.html#a579e059d072a57554c9a61180a9fd08c">DATA</a>, <span class="stringliteral">"write value(s) for valid pixels (e.g., 0;255)"</span>,<span class="stringliteral">"1"</span>))</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkgetmask_1_1pkgetmask.html#ab851d0b2d6acf47df89a9d89373f804b">NODATA</a>, <span class="stringliteral">"write value(s) for invalid pixels"</span>,<span class="stringliteral">"0"</span>))</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>         self.addOutput(OutputRaster(self.<a class="code" href="classqgis_1_1pkgetmask_1_1pkgetmask.html#a5eedd82f4dda4923e8560ff43b657f73">OUTPUT</a>, <span class="stringliteral">"Output raster data set"</span>))</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pkgetmask_1_1pkgetmask.html#a091f5ee5165bde746ed9841909d06d5c">RTYPE</a>, <span class="stringliteral">'Output raster type (leave as none to keep original type)'</span>, self.<a class="code" href="classqgis_1_1pkgetmask_1_1pkgetmask.html#a7f1272eeb8cf07f429440cdf387c2d17">TYPE</a>, 0))</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkgetmask_1_1pkgetmask.html#a7c46da38f871a5211efe90216afff4ef">EXTRA</a>,</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>                           <span class="stringliteral">'Additional parameters'</span>, <span class="stringliteral">'-of GTiff'</span>, optional=<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span> </div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     <span class="keyword">def </span>processAlgorithm(self, progress):</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>         cliPath = <span class="stringliteral">'"'</span> + os.path.join(pktoolsUtils.pktoolsPath(), self.<a class="code" href="classqgis_1_1pkgetmask_1_1pkgetmask.html#ae9c628f2f53021c654f6cf1a597b3c54">cliName</a>()) + <span class="stringliteral">'"'</span></div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>         commands = [cliPath]</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span> </div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>         input=self.getParameterValue(self.<a class="code" href="classqgis_1_1pkgetmask_1_1pkgetmask.html#a1990e1aab12f8a84394b7c44c9c78efd">INPUT</a>)</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>         commands.append(<span class="stringliteral">'-i'</span>)</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>         commands.append(<span class="stringliteral">'"'</span> + input + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span> </div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>         band=self.getParameterValue(self.<a class="code" href="classqgis_1_1pkgetmask_1_1pkgetmask.html#ad45ff2519baa645c8bf75e063fc2939d">BAND</a>)</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>         bandValues = band.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>         <span class="keywordflow">for</span> bandValue <span class="keywordflow">in</span> bandValues:</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>             commands.append(<span class="stringliteral">'-band'</span>)</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>             commands.append(bandValue)</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>         min=self.getParameterValue(self.<a class="code" href="classqgis_1_1pkgetmask_1_1pkgetmask.html#a86f16ca18fe18083446f0a2fdab1c989">MIN</a>)</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>         <span class="keywordflow">if</span> min != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>             minValues = min.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>             <span class="keywordflow">for</span> minValue <span class="keywordflow">in</span> minValues:</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>                 commands.append(<span class="stringliteral">'-min'</span>)</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>                 commands.append(minValue)</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>         max=self.getParameterValue(self.<a class="code" href="classqgis_1_1pkgetmask_1_1pkgetmask.html#a74d4d91d62405ae1cb788e0fc52b64c6">MAX</a>)</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>         <span class="keywordflow">if</span> max != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>             maxValues = max.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>             <span class="keywordflow">for</span> maxValue <span class="keywordflow">in</span> maxValues:</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>                 commands.append(<span class="stringliteral">'-max'</span>)</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>                 commands.append(maxValue)</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>         commands.append(<span class="stringliteral">"-p"</span>)</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>         commands.append(self.<a class="code" href="classqgis_1_1pkgetmask_1_1pkgetmask.html#a418e9d844d597fb600d16afc0b7e70cd">OPERATOR_OPTIONS</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pkgetmask_1_1pkgetmask.html#a2a1d0302fefa56238c42d3ea6f747941">OPERATOR</a>)])</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>         data=self.getParameterValue(self.<a class="code" href="classqgis_1_1pkgetmask_1_1pkgetmask.html#a579e059d072a57554c9a61180a9fd08c">DATA</a>)</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>         <span class="keywordflow">if</span> data != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>             dataValues = data.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>             <span class="keywordflow">for</span> dataValue <span class="keywordflow">in</span> dataValues:</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>                 commands.append(<span class="stringliteral">'-data'</span>)</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>                 commands.append(dataValue)</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>         nodata=self.getParameterValue(self.<a class="code" href="classqgis_1_1pkgetmask_1_1pkgetmask.html#ab851d0b2d6acf47df89a9d89373f804b">NODATA</a>)</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>         <span class="keywordflow">if</span> nodata != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>             nodataValues = nodata.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>             <span class="keywordflow">for</span> nodataValue <span class="keywordflow">in</span> nodataValues:</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>                 commands.append(<span class="stringliteral">'-nodata'</span>)</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>                 commands.append(nodataValue)</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>         <span class="keywordflow">if</span> self.<a class="code" href="classqgis_1_1pkgetmask_1_1pkgetmask.html#a7f1272eeb8cf07f429440cdf387c2d17">TYPE</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pkgetmask_1_1pkgetmask.html#a091f5ee5165bde746ed9841909d06d5c">RTYPE</a>)] != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>             commands.append(<span class="stringliteral">'-ot'</span>)</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>             commands.append(self.<a class="code" href="classqgis_1_1pkgetmask_1_1pkgetmask.html#a7f1272eeb8cf07f429440cdf387c2d17">TYPE</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pkgetmask_1_1pkgetmask.html#a091f5ee5165bde746ed9841909d06d5c">RTYPE</a>)])</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>         output=self.getOutputValue(self.<a class="code" href="classqgis_1_1pkgetmask_1_1pkgetmask.html#a5eedd82f4dda4923e8560ff43b657f73">OUTPUT</a>)</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>         <span class="keywordflow">if</span> output != <span class="stringliteral">""</span>:</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>             commands.append(<span class="stringliteral">"-o"</span>)</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>             commands.append(<span class="stringliteral">'"'</span> + output + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span> </div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>         data=self.getParameterValue(self.<a class="code" href="classqgis_1_1pkgetmask_1_1pkgetmask.html#a579e059d072a57554c9a61180a9fd08c">DATA</a>)</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span> </div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>         extra = str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pkgetmask_1_1pkgetmask.html#a7c46da38f871a5211efe90216afff4ef">EXTRA</a>))</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>         <span class="keywordflow">if</span> len(extra) > 0:</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>             commands.append(extra)</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span> </div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>         pktoolsUtils.runpktools(commands, progress)</div>
-<div class="ttc" id="classqgis_1_1pkgetmask_1_1pkgetmask_html_a418e9d844d597fb600d16afc0b7e70cd"><div class="ttname"><a href="classqgis_1_1pkgetmask_1_1pkgetmask.html#a418e9d844d597fb600d16afc0b7e70cd">qgis.pkgetmask.pkgetmask.OPERATOR_OPTIONS</a></div><div class="ttdeci">list OPERATOR_OPTIONS</div><div class="ttdef"><b>Definition:</b> <a href="pkgetmask_8py_source.html#l00044">pkgetmask.py:44</a></div></div>
-<div class="ttc" id="classqgis_1_1pkgetmask_1_1pkgetmask_html_a091f5ee5165bde746ed9841909d06d5c"><div class="ttname"><a href="classqgis_1_1pkgetmask_1_1pkgetmask.html#a091f5ee5165bde746ed9841909d06d5c">qgis.pkgetmask.pkgetmask.RTYPE</a></div><div class="ttdeci">string RTYPE</div><div class="ttdef"><b>Definition:</b> <a href="pkgetmask_8py_source.html#l00049">pkgetmask.py:49</a></div></div>
-<div class="ttc" id="classqgis_1_1pkgetmask_1_1pkgetmask_html_a7f1272eeb8cf07f429440cdf387c2d17"><div class="ttname"><a href="classqgis_1_1pkgetmask_1_1pkgetmask.html#a7f1272eeb8cf07f429440cdf387c2d17">qgis.pkgetmask.pkgetmask.TYPE</a></div><div class="ttdeci">list TYPE</div><div class="ttdef"><b>Definition:</b> <a href="pkgetmask_8py_source.html#l00050">pkgetmask.py:50</a></div></div>
-<div class="ttc" id="classqgis_1_1pkgetmask_1_1pkgetmask_html_ae9c628f2f53021c654f6cf1a597b3c54"><div class="ttname"><a href="classqgis_1_1pkgetmask_1_1pkgetmask.html#ae9c628f2f53021c654f6cf1a597b3c54">qgis.pkgetmask.pkgetmask.cliName</a></div><div class="ttdeci">def cliName</div><div class="ttdef"><b>Definition:</b> <a href="pkgetmask_8py_source.html#l00053">pkgetmask.py:53</a></div></div>
-<div class="ttc" id="classqgis_1_1pkgetmask_1_1pkgetmask_html_ad45ff2519baa645c8bf75e063fc2939d"><div class="ttname"><a href="classqgis_1_1pkgetmask_1_1pkgetmask.html#ad45ff2519baa645c8bf75e063fc2939d">qgis.pkgetmask.pkgetmask.BAND</a></div><div class="ttdeci">string BAND</div><div class="ttdef"><b>Definition:</b> <a href="pkgetmask_8py_source.html#l00041">pkgetmask.py:41</a></div></div>
-<div class="ttc" id="classqgis_1_1pkgetmask_1_1pkgetmask_html_ab9a736f64545f8ac36bbf1eae8576cd5"><div class="ttname"><a href="classqgis_1_1pkgetmask_1_1pkgetmask.html#ab9a736f64545f8ac36bbf1eae8576cd5">qgis.pkgetmask.pkgetmask.name</a></div><div class="ttdeci">name</div><div class="ttdef"><b>Definition:</b> <a href="pkgetmask_8py_source.html#l00057">pkgetmask.py:57</a></div></div>
-<div class="ttc" id="classqgis_1_1pkgetmask_1_1pkgetmask_html_a74d4d91d62405ae1cb788e0fc52b64c6"><div class="ttname"><a href="classqgis_1_1pkgetmask_1_1pkgetmask.html#a74d4d91d62405ae1cb788e0fc52b64c6">qgis.pkgetmask.pkgetmask.MAX</a></div><div class="ttdeci">string MAX</div><div class="ttdef"><b>Definition:</b> <a href="pkgetmask_8py_source.html#l00043">pkgetmask.py:43</a></div></div>
-<div class="ttc" id="classqgis_1_1pkgetmask_1_1pkgetmask_html_a5eedd82f4dda4923e8560ff43b657f73"><div class="ttname"><a href="classqgis_1_1pkgetmask_1_1pkgetmask.html#a5eedd82f4dda4923e8560ff43b657f73">qgis.pkgetmask.pkgetmask.OUTPUT</a></div><div class="ttdeci">string OUTPUT</div><div class="ttdef"><b>Definition:</b> <a href="pkgetmask_8py_source.html#l00048">pkgetmask.py:48</a></div></div>
-<div class="ttc" id="classqgis_1_1pkgetmask_1_1pkgetmask_html_a2a1d0302fefa56238c42d3ea6f747941"><div class="ttname"><a href="classqgis_1_1pkgetmask_1_1pkgetmask.html#a2a1d0302fefa56238c42d3ea6f747941">qgis.pkgetmask.pkgetmask.OPERATOR</a></div><div class="ttdeci">string OPERATOR</div><div class="ttdef"><b>Definition:</b> <a href="pkgetmask_8py_source.html#l00045">pkgetmask.py:45</a></div></div>
-<div class="ttc" id="classqgis_1_1pkgetmask_1_1pkgetmask_html_ab851d0b2d6acf47df89a9d89373f804b"><div class="ttname"><a href="classqgis_1_1pkgetmask_1_1pkgetmask.html#ab851d0b2d6acf47df89a9d89373f804b">qgis.pkgetmask.pkgetmask.NODATA</a></div><div class="ttdeci">string NODATA</div><div class="ttdef"><b>Definition:</b> <a href="pkgetmask_8py_source.html#l00047">pkgetmask.py:47</a></div></div>
-<div class="ttc" id="classqgis_1_1pkgetmask_1_1pkgetmask_html_aa0e0d197447b16bee323b2e9fdaa876b"><div class="ttname"><a href="classqgis_1_1pkgetmask_1_1pkgetmask.html#aa0e0d197447b16bee323b2e9fdaa876b">qgis.pkgetmask.pkgetmask.group</a></div><div class="ttdeci">group</div><div class="ttdef"><b>Definition:</b> <a href="pkgetmask_8py_source.html#l00058">pkgetmask.py:58</a></div></div>
-<div class="ttc" id="classqgis_1_1pkgetmask_1_1pkgetmask_html_a7c46da38f871a5211efe90216afff4ef"><div class="ttname"><a href="classqgis_1_1pkgetmask_1_1pkgetmask.html#a7c46da38f871a5211efe90216afff4ef">qgis.pkgetmask.pkgetmask.EXTRA</a></div><div class="ttdeci">string EXTRA</div><div class="ttdef"><b>Definition:</b> <a href="pkgetmask_8py_source.html#l00051">pkgetmask.py:51</a></div></div>
-<div class="ttc" id="classqgis_1_1pkgetmask_1_1pkgetmask_html"><div class="ttname"><a href="classqgis_1_1pkgetmask_1_1pkgetmask.html">qgis.pkgetmask.pkgetmask</a></div><div class="ttdef"><b>Definition:</b> <a href="pkgetmask_8py_source.html#l00038">pkgetmask.py:38</a></div></div>
-<div class="ttc" id="classqgis_1_1pkgetmask_1_1pkgetmask_html_a1990e1aab12f8a84394b7c44c9c78efd"><div class="ttname"><a href="classqgis_1_1pkgetmask_1_1pkgetmask.html#a1990e1aab12f8a84394b7c44c9c78efd">qgis.pkgetmask.pkgetmask.INPUT</a></div><div class="ttdeci">string INPUT</div><div class="ttdef"><b>Definition:</b> <a href="pkgetmask_8py_source.html#l00040">pkgetmask.py:40</a></div></div>
-<div class="ttc" id="classqgis_1_1pkgetmask_1_1pkgetmask_html_a579e059d072a57554c9a61180a9fd08c"><div class="ttname"><a href="classqgis_1_1pkgetmask_1_1pkgetmask.html#a579e059d072a57554c9a61180a9fd08c">qgis.pkgetmask.pkgetmask.DATA</a></div><div class="ttdeci">string DATA</div><div class="ttdef"><b>Definition:</b> <a href="pkgetmask_8py_source.html#l00046">pkgetmask.py:46</a></div></div>
-<div class="ttc" id="classqgis_1_1pkgetmask_1_1pkgetmask_html_a86f16ca18fe18083446f0a2fdab1c989"><div class="ttname"><a href="classqgis_1_1pkgetmask_1_1pkgetmask.html#a86f16ca18fe18083446f0a2fdab1c989">qgis.pkgetmask.pkgetmask.MIN</a></div><div class="ttdeci">string MIN</div><div class="ttdef"><b>Definition:</b> <a href="pkgetmask_8py_source.html#l00042">pkgetmask.py:42</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkinfo.html b/doc/html/pkinfo.html
deleted file mode 100644
index cb20c23..0000000
--- a/doc/html/pkinfo.html
+++ /dev/null
@@ -1,151 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: pkinfo</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkinfo </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><p>Report basic information from raster datasets (similar to gdalinfo) </p>
-<h2>SYNOPSIS</h2>
-<p><code> Usage: pkinfo -i input [options] </code></p>
-<p><code></code></p>
-<p><code></code></p>
-<h1><a class="anchor" id="pkinfo_description"></a>
-Description</h1>
-<p>The utility pkinfo retrieves basic information about a raster data set. An important difference with gdalinfo is that pkinfo only reports the information that is requested via the corresponding command line option, whereas gdalinfo provides all basic information at once. The reported information is in a format that can be used as input for other pktools utilities. This mechanism facilitates command substitution in the bash scripting language. Some examples are given in later in this s [...]
-<h1><a class="anchor" id="pkinfo_options"></a>
-Options</h1>
-<ul>
-<li>use either <code>-short</code> or <code>--long</code> options (both <code>--long=value</code> and <code>--long value</code> are supported)</li>
-<li>short option <code>-h</code> shows basic options only, long option <code>--help</code> shows all options <table class="doxtable">
-<tr>
-<th>short</th><th>long</th><th>type</th><th>default</th><th>description  </th></tr>
-<tr>
-<td>i </td><td>input </td><td>std::string </td><td></td><td>Input image file </td></tr>
-<tr>
-<td>bb </td><td>bbox </td><td>bool </td><td>false </td><td>Shows bounding box </td></tr>
-<tr>
-<td>te </td><td>te </td><td>bool </td><td>false </td><td>Shows bounding box in GDAL format: xmin ymin xmax ymax </td></tr>
-<tr>
-<td>c </td><td>center </td><td>bool </td><td>false </td><td>Image center in projected X,Y coordinates </td></tr>
-<tr>
-<td>ct </td><td>colortable </td><td>bool </td><td>false </td><td>Shows colour table </td></tr>
-<tr>
-<td>ns </td><td>nsample </td><td>bool </td><td>false </td><td>Number of samples in image </td></tr>
-<tr>
-<td>nl </td><td>nline </td><td>bool </td><td>false </td><td>Number of lines in image </td></tr>
-<tr>
-<td>nb </td><td>nband </td><td>bool </td><td>false </td><td>Show number of bands in image </td></tr>
-<tr>
-<td>b </td><td>band </td><td>short </td><td>0 </td><td>Band specific information </td></tr>
-<tr>
-<td>dx </td><td>dx </td><td>bool </td><td>false </td><td>Gets resolution in x (in m) </td></tr>
-<tr>
-<td>dy </td><td>dy </td><td>bool </td><td>false </td><td>Gets resolution in y (in m) </td></tr>
-<tr>
-<td>mm </td><td>minmax </td><td>bool </td><td>false </td><td>Shows min and max value of the image </td></tr>
-<tr>
-<td>min </td><td>minimum </td><td>bool </td><td>false </td><td>Shows min value of the image </td></tr>
-<tr>
-<td>max </td><td>maximum </td><td>bool </td><td>false </td><td>Shows max value of the image </td></tr>
-<tr>
-<td>stats </td><td>statistics </td><td>bool </td><td>false </td><td>Shows statistics (min,max, mean and stdDev of the image) </td></tr>
-<tr>
-<td>a_srs </td><td>a_srs </td><td>bool </td><td>false </td><td>Shows projection of the image </td></tr>
-<tr>
-<td>geo </td><td>geo </td><td>bool </td><td>false </td><td>Gets geotransform </td></tr>
-<tr>
-<td>il </td><td>interleave </td><td>bool </td><td>false </td><td>Shows interleave </td></tr>
-<tr>
-<td>f </td><td>filename </td><td>bool </td><td>false </td><td>Shows image filename </td></tr>
-<tr>
-<td>cover </td><td>cover </td><td>bool </td><td>false </td><td>Print filename to stdout if current image covers the provided coordinates via bounding box, (x y) coordinates or extent of vector file </td></tr>
-<tr>
-<td>x </td><td>xpos </td><td>double </td><td></td><td>x pos </td></tr>
-<tr>
-<td>y </td><td>ypos </td><td>double </td><td></td><td>y pos </td></tr>
-<tr>
-<td>r </td><td>read </td><td>bool </td><td>false </td><td>Reads row y (in projected coordinates if geo option is set, otherwise in image coordinates, 0 based) </td></tr>
-<tr>
-<td>ref </td><td>reference </td><td>bool </td><td>false </td><td>Gets reference pixel (lower left corner of center of gravity pixel) </td></tr>
-<tr>
-<td>of </td><td>oformat </td><td>bool </td><td>false </td><td>Gets driver description </td></tr>
-<tr>
-<td>e </td><td>extent </td><td>std::string </td><td></td><td>Gets boundary from vector file </td></tr>
-<tr>
-<td>ulx </td><td>ulx </td><td>double </td><td></td><td>Upper left x value bounding box </td></tr>
-<tr>
-<td>uly </td><td>uly </td><td>double </td><td></td><td>Upper left y value bounding box </td></tr>
-<tr>
-<td>lrx </td><td>lrx </td><td>double </td><td></td><td>Lower right x value bounding box </td></tr>
-<tr>
-<td>lry </td><td>lry </td><td>double </td><td></td><td>Lower right y value bounding box </td></tr>
-<tr>
-<td>ot </td><td>otype </td><td>bool </td><td>false </td><td>Returns data type </td></tr>
-<tr>
-<td>d </td><td>description </td><td>bool </td><td>false </td><td>Returns image description </td></tr>
-<tr>
-<td>meta </td><td>meta </td><td>bool </td><td>false </td><td>Shows meta data </td></tr>
-<tr>
-<td>nodata </td><td>nodata </td><td>double </td><td></td><td>Sets no data value(s) for calculations (nodata values in input image) </td></tr>
-</table>
-Usage: pkinfo -i input [options]</li>
-</ul>
-<h1>Examples </h1>
-<p>Some examples how to use pkinfo can be found <a class="el" href="md_examples_pkinfo.html#examples_pkinfo">here</a> </p>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkinfo_8cc_source.html b/doc/html/pkinfo_8cc_source.html
deleted file mode 100644
index d6e095e..0000000
--- a/doc/html/pkinfo_8cc_source.html
+++ /dev/null
@@ -1,460 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/pkinfo.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkinfo.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pkinfo.cc: Report basic information from raster datasets (similar to gdalinfo)</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <sstream></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <list></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "algorithms/Egcs.h"</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "imageclasses/ImgReaderGdal.h"</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "imageclasses/ImgReaderOgr.h"</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> </div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="comment">/******************************************************************************/</span></div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span> </div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span> {</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> input_opt(<span class="stringliteral">"i"</span>,<span class="stringliteral">"input"</span>,<span class="stringliteral">"Input image file"</span>);</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a>  bbox_opt(<span class="stringliteral">"bb"</span>, <span class="stringliteral">"bbox"</span>, <span class="stringliteral">"Shows bounding box "</span>, <span class="keyword">false</span>,0);</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a>  bbox_te_opt(<span class="stringliteral">"te"</span>, <span class="stringliteral">"te"</span>, <span class="stringliteral">"Shows bounding box in GDAL format: xmin ymin xmax ymax "</span>, <span class="keyword">false</span>,0);</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a>  center_opt(<span class="stringliteral">"c"</span>, <span class="stringliteral">"center"</span>, <span class="stringliteral">"Image center in projected X,Y coordinates "</span>, <span class="keyword">false</span>,0);</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a>  colorTable_opt(<span class="stringliteral">"ct"</span>, <span class="stringliteral">"colortable"</span>, <span class="stringliteral">"Shows colour table "</span>, <span class="keyword">false</span>,0);</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a>  samples_opt(<span class="stringliteral">"ns"</span>, <span class="stringliteral">"nsample"</span>, <span class="stringliteral">"Number of samples in image "</span>, <span class="keyword">false</span>,0);</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a>  lines_opt(<span class="stringliteral">"nl"</span>, <span class="stringliteral">"nline"</span>, <span class="stringliteral">"Number of lines in image "</span>, <span class="keyword">false</span>,0);</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a>  nband_opt(<span class="stringliteral">"nb"</span>, <span class="stringliteral">"nband"</span>, <span class="stringliteral">"Show number of bands in image"</span>, <span class="keyword">false</span>,0);</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a>  band_opt(<span class="stringliteral">"b"</span>, <span class="stringliteral">"band"</span>, <span class="stringliteral">"Band specific information"</span>, 0,0);</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a>  dx_opt(<span class="stringliteral">"dx"</span>, <span class="stringliteral">"dx"</span>, <span class="stringliteral">"Gets resolution in x (in m)"</span>, <span class="keyword">false</span>,0);</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a>  dy_opt(<span class="stringliteral">"dy"</span>, <span class="stringliteral">"dy"</span>, <span class="stringliteral">"Gets resolution in y (in m)"</span>, <span class="keyword">false</span>,0);</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a>  minmax_opt(<span class="stringliteral">"mm"</span>, <span class="stringliteral">"minmax"</span>, <span class="stringliteral">"Shows min and max value of the image "</span>, <span class="keyword">false</span>,0);</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a>  min_opt(<span class="stringliteral">"min"</span>, <span class="stringliteral">"minimum"</span>, <span class="stringliteral">"Shows min value of the image "</span>, <span class="keyword">false</span>,0);</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a>  max_opt(<span class="stringliteral">"max"</span>, <span class="stringliteral">"maximum"</span>, <span class="stringliteral">"Shows max value of the image "</span>, <span class="keyword">false</span>,0);</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a>  stat_opt(<span class="stringliteral">"stats"</span>, <span class="stringliteral">"statistics"</span>, <span class="stringliteral">"Shows statistics (min,max, mean and stdDev of the image)"</span>, <span class="keyword">false</span>,0);</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a>  projection_opt(<span class="stringliteral">"a_srs"</span>, <span class="stringliteral">"a_srs"</span>, <span class="stringliteral">"Shows projection of the image "</span>, <span class="keyword">false</span>,0);</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a>  geo_opt(<span class="stringliteral">"geo"</span>, <span class="stringliteral">"geo"</span>, <span class="stringliteral">"Gets geotransform  "</span>, <span class="keyword">false</span>,0);</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a>  interleave_opt(<span class="stringliteral">"il"</span>, <span class="stringliteral">"interleave"</span>, <span class="stringliteral">"Shows interleave "</span>, <span class="keyword">false</span>,0);</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a>  filename_opt(<span class="stringliteral">"f"</span>, <span class="stringliteral">"filename"</span>, <span class="stringliteral">"Shows image filename "</span>, <span class="keyword">false</span>,0);</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a>  cover_opt(<span class="stringliteral">"cover"</span>, <span class="stringliteral">"cover"</span>, <span class="stringliteral">"Print filename to stdout if current image covers the provided coordinates via bounding box, (x y) coordinates or extent of vector file"</span>, <span class="keyword">false</span>,0);</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a>  x_opt(<span class="stringliteral">"x"</span>, <span class="stringliteral">"xpos"</span>, <span class="stringliteral">"x pos"</span>);</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a>  y_opt(<span class="stringliteral">"y"</span>, <span class="stringliteral">"ypos"</span>, <span class="stringliteral">"y pos"</span>);</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a>  read_opt(<span class="stringliteral">"r"</span>, <span class="stringliteral">"read"</span>, <span class="stringliteral">"Reads row y (in projected coordinates if geo option is set, otherwise in image coordinates, 0 based)"</span>,<span class="keyword">false</span>,0);</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a>  refpixel_opt(<span class="stringliteral">"ref"</span>, <span class="stringliteral">"reference"</span>, <span class="stringliteral">"Gets reference pixel (lower left corner of center of gravity pixel)"</span>, <span class="keyword">false</span>,0);</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a>  driver_opt(<span class="stringliteral">"of"</span>, <span class="stringliteral">"oformat"</span>, <span class="stringliteral">"Gets driver description "</span>, <span class="keyword">false</span>,0);</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a>  extent_opt(<span class="stringliteral">"e"</span>, <span class="stringliteral">"extent"</span>, <span class="stringliteral">"Gets boundary from vector file"</span>);</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a>  ulx_opt(<span class="stringliteral">"ulx"</span>, <span class="stringliteral">"ulx"</span>, <span class="stringliteral">"Upper left x value bounding box"</span>);</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a>  uly_opt(<span class="stringliteral">"uly"</span>, <span class="stringliteral">"uly"</span>, <span class="stringliteral">"Upper left y value bounding box"</span>);</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a>  lrx_opt(<span class="stringliteral">"lrx"</span>, <span class="stringliteral">"lrx"</span>, <span class="stringliteral">"Lower right x value bounding box"</span>);</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a>  lry_opt(<span class="stringliteral">"lry"</span>, <span class="stringliteral">"lry"</span>, <span class="stringliteral">"Lower right y value bounding box"</span>);</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a>  type_opt(<span class="stringliteral">"ot"</span>, <span class="stringliteral">"otype"</span>, <span class="stringliteral">"Returns data type"</span>, <span class="keyword">false</span>,0);</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a>  description_opt(<span class="stringliteral">"d"</span>, <span class="stringliteral">"description"</span>, <span class="stringliteral">"Returns image description"</span>, <span class="keyword">false</span>,0);</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a>  metadata_opt(<span class="stringliteral">"meta"</span>, <span class="stringliteral">"meta"</span>, <span class="stringliteral">"Shows meta data "</span>, <span class="keyword">false</span>,0);</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> nodata_opt(<span class="stringliteral">"nodata"</span>, <span class="stringliteral">"nodata"</span>, <span class="stringliteral">"Sets no data value(s) for calculations (nodata values in input image)"</span>);</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span> </div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>   <span class="keywordtype">bool</span> doProcess;<span class="comment">//stop process when program was invoked with help option (-h --help)</span></div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>     doProcess=input_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>     bbox_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>     bbox_te_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>     center_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>     colorTable_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>     samples_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>     lines_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>     nband_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>     band_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>     dx_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>     dy_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>     minmax_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>     min_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>     max_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>     stat_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>     projection_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>     geo_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>     interleave_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>     filename_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>     cover_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>     x_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>     y_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>     read_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>     refpixel_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>     driver_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>     extent_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>     ulx_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>     uly_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>     lrx_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>     lry_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>     type_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>     description_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>     metadata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>     nodata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>   }</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>   <span class="keywordflow">catch</span>(std::string predefinedString){</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>     std::cout << predefinedString << std::endl;</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>     exit(0);</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>   }</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>   <span class="keywordflow">if</span>(!doProcess){</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>     cout << endl;</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>     cout << <span class="stringliteral">"Usage: pkinfo -i input [options]"</span> << endl;</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>     cout << endl;</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>     std::cout << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << std::endl;</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>     exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>   }</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>   <span class="comment">//for union</span></div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>   <span class="keywordtype">double</span> maxLRX=0;</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>   <span class="keywordtype">double</span> maxULY=0;</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>   <span class="keywordtype">double</span> minULX=0;</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>   <span class="keywordtype">double</span> minLRY=0;</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span> </div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>   <span class="comment">//for intersect</span></div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>   <span class="keywordtype">double</span> minLRX=0;</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>   <span class="keywordtype">double</span> minULY=0;</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>   <span class="keywordtype">double</span> maxULX=0;</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>   <span class="keywordtype">double</span> maxLRY=0;</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>   </div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>   <span class="keywordtype">double</span> theULX, theULY, theLRX, theLRY;</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>   <span class="comment">//get bounding box from extentReader if defined</span></div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>   <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a> extentReader;</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>   <span class="keywordflow">if</span>(extent_opt.size()){</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>     extentReader.open(extent_opt[0]);</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>     <span class="keywordflow">if</span>(!(extentReader.getExtent(theULX,theULY, theLRX, theLRY))){</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>       std::cerr << <span class="stringliteral">"Error: could not get extent from "</span> << extent_opt[0] << std::endl;</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>       exit(1);</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>     }</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>     ulx_opt.push_back(theULX);</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>     uly_opt.push_back(theULY);</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>     lrx_opt.push_back(theLRX);</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>     lry_opt.push_back(theLRY);</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>     <span class="keywordflow">if</span>(input_opt.empty()){<span class="comment">//report bounding box from extent file instead</span></div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>       <span class="keywordflow">if</span>(bbox_te_opt[0])</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>     std::cout << std::setprecision(12) << <span class="stringliteral">"-te "</span> << theULX << <span class="stringliteral">" "</span> << theLRY << <span class="stringliteral">" "</span> << theLRX << <span class="stringliteral">" "</span> << theULY;</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>     std::cout << std::setprecision(12) << <span class="stringliteral">"--ulx="</span> << theULX << <span class="stringliteral">" --uly="</span> << theULY << <span class="stringliteral">" --lrx="</span> << theLRX << <span class="stringliteral">" --lry="</span> << theLRY << <span class="stringliteral">" " [...]
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>     }</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>   }</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span> </div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>   <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> imgReader;</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ifile=0;ifile<input_opt.size();++ifile){</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>     imgReader.open(input_opt[ifile]);</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> inodata=0;inodata<nodata_opt.size();++inodata){</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>       <span class="keywordflow">if</span>(!inodata)</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>         imgReader.GDALSetNoDataValue(nodata_opt[0],band_opt[0]);<span class="comment">//only single no data can be set in GDALRasterBand (used for ComputeStatistics)</span></div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>       imgReader.pushNoDataValue(nodata_opt[inodata]);</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>     }</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>     <span class="keywordflow">if</span>(filename_opt[0])</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>       std::cout << <span class="stringliteral">" --input "</span> << input_opt[ifile] << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>     <span class="keywordflow">if</span>(center_opt[0]){</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>       <span class="keywordtype">double</span> theX, theY;</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>       imgReader.getCenterPos(theX,theY);</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>       std::cout << std::setprecision(12) << <span class="stringliteral">" -x "</span> << theX << <span class="stringliteral">" -y "</span> << theY << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>     }</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>     <span class="keywordflow">if</span>(refpixel_opt[0]){</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>       assert(band_opt[0]<imgReader.nrOfBand());</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>       <a class="code" href="classEgcs.html">Egcs</a> egcs;</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>       <span class="keywordtype">double</span> refX,refY;</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>       <span class="comment">//get center of reference (center of gravity) pixel in image</span></div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>       imgReader.getRefPix(refX,refY,band_opt[0]);</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>       std::cout << std::setprecision(12) << <span class="stringliteral">"-x "</span> << refX << <span class="stringliteral">" -y "</span> << refY << std::endl;</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>       egcs.setLevel(egcs.res2level(imgReader.getDeltaX()));</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>       <span class="comment">// unsigned short theLevel=egcs.getLevel(imgReader.getDeltaX());</span></div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>       <span class="comment">// egcs.setLevel(theLevel);</span></div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>       <span class="comment">//cout << "cell code at level " << egcs.getLevel() << " (resolution is " << egcs.getResolution() << "): " << egcs.geo2cell(refX,refY) << endl;</span></div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>     }</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>     <span class="keywordflow">if</span>(bbox_opt[0]||bbox_te_opt[0]){</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>       imgReader.getBoundingBox(theULX,theULY,theLRX,theLRY);</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>       <span class="keywordflow">if</span>(bbox_te_opt[0])</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>         std::cout << std::setprecision(12) << <span class="stringliteral">"-te "</span> << theULX << <span class="stringliteral">" "</span> << theLRY << <span class="stringliteral">" "</span> << theLRX << <span class="stringliteral">" "</span> << theULY;</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>         std::cout << std::setprecision(12) << <span class="stringliteral">"--ulx="</span> << theULX << <span class="stringliteral">" --uly="</span> << theULY << <span class="stringliteral">" --lrx="</span> << theLRX << <span class="stringliteral">" --lry="</span> << theLRY << <span class="stringliteral">" &q [...]
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>       <span class="keywordflow">if</span>(!ifile){</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>     maxLRX=theLRX;</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>     maxULY=theULY;</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>     minULX=theULX;</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>     minLRY=theLRY;</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span> </div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>     minLRX=theLRX;</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>     minULY=theULY;</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>     maxULX=theULX;</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>     maxLRY=theLRY;</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>       }</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>     maxLRX=(theLRX>maxLRX)?theLRX:maxLRX;</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>     maxULY=(theULY>maxULY)?theULY:maxULY;</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>     minULX=(theULX<minULX)?theULX:minULX;</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>     minLRY=(theLRY<minLRY)?theLRY:minLRY;</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span> </div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>     minLRX=(theLRX<minLRX)?theLRX:minLRX;</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>     minULY=(theULY<minULY)?theULY:minULY;</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>     maxULX=(theULX>maxULX)?theULX:maxULX;</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>     maxLRY=(theLRY>maxLRY)?theLRY:maxLRY;</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>       }</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>     }</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>     <span class="keywordflow">if</span>(dx_opt[0])</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>       std::cout << <span class="stringliteral">"--dx "</span> << imgReader.getDeltaX() << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>     <span class="keywordflow">if</span>(dy_opt[0])</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>       std::cout << <span class="stringliteral">"--dy "</span> << imgReader.getDeltaY() << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>     <span class="keywordflow">if</span>(cover_opt[0]){</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>       <span class="keywordflow">if</span>(ulx_opt.size()&&uly_opt.size()&&lrx_opt.size()&&lry_opt.size()){</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>     <span class="keywordflow">if</span>(imgReader.covers(ulx_opt[0],uly_opt[0],lrx_opt[0],lry_opt[0]))</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>       std::cout << <span class="stringliteral">" -i "</span> << input_opt[ifile] << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>       }</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(x_opt.size()&&y_opt.size()){</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>     <span class="keywordflow">if</span>(imgReader.covers(x_opt[0],y_opt[0]))</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>       std::cout << <span class="stringliteral">" -i "</span> << input_opt[ifile] << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>       }</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>     std::cerr << <span class="stringliteral">"Error: failing extent (-e), bounding box or x and y position to define coverage"</span> << std::endl;</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>     exit(1);</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>       }</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>     }</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ulx_opt.size()||uly_opt.size()||lrx_opt.size()||lry_opt.size()){</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>       <span class="keywordtype">double</span> ulx,uly,lrx,lry;</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>       imgReader.getBoundingBox(ulx,uly,lrx,lry);</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>       <span class="keywordflow">if</span>(ulx_opt.size())</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>         std::cout << <span class="stringliteral">" --ulx="</span> << std::fixed << ulx << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>       <span class="keywordflow">if</span>(uly_opt.size())</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>         std::cout << <span class="stringliteral">" --uly="</span> << std::fixed << uly << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>       <span class="keywordflow">if</span>(lrx_opt.size())</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>         std::cout << <span class="stringliteral">" --lrx="</span> << std::fixed << lrx << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>       <span class="keywordflow">if</span>(lry_opt.size())</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>         std::cout << <span class="stringliteral">" --lry="</span> << std::fixed << lry << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>     }</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>     <span class="keywordflow">if</span>(colorTable_opt[0]){</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>       GDALColorTable* colorTable=imgReader.getColorTable();</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>       <span class="keywordflow">if</span>(colorTable!=NULL){</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> index=0;index<colorTable->GetColorEntryCount();++index){</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>           GDALColorEntry sEntry=*(colorTable->GetColorEntry(index));</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>           std::cout << index << <span class="stringliteral">" "</span> << sEntry.c1 << <span class="stringliteral">" "</span> << sEntry.c2 << <span class="stringliteral">" "</span> << sEntry.c3 << <span class="stringliteral">" "</span> << sEntry.c4 << std::endl;</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>         }</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>       }</div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>         std::cout << <span class="stringliteral">"-ct none "</span>;</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>     }</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>     <span class="keywordflow">if</span>(samples_opt[0])</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>       std::cout << <span class="stringliteral">"--nsample "</span> << imgReader.nrOfCol() << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>     <span class="keywordflow">if</span>(lines_opt[0])</div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>       std::cout << <span class="stringliteral">"--nline "</span> << imgReader.nrOfRow() << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>     <span class="keywordflow">if</span>(nband_opt[0])</div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>       std::cout << <span class="stringliteral">"--nband "</span> << imgReader.nrOfBand() << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>     <span class="keywordtype">double</span> minValue=0;</div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>     <span class="keywordtype">double</span> maxValue=0;</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>     <span class="keywordtype">double</span> meanValue=0;</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>     <span class="keywordtype">double</span> stdDev=0;</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>     <span class="keywordtype">int</span> nband=band_opt.size();</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>     <span class="keywordflow">if</span>(band_opt[0]<0)</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>       nband=imgReader.nrOfBand();</div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>       <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> theBand=(band_opt[0]<0)? iband : band_opt[iband];</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>       <span class="keywordflow">if</span>(stat_opt[0]){</div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>     assert(theBand<imgReader.nrOfBand());</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>     GDALProgressFunc pfnProgress;</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>     <span class="keywordtype">void</span>* pProgressData;</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>     GDALRasterBand* rasterBand;</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>     rasterBand=imgReader.getRasterBand(theBand);</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>     rasterBand->ComputeStatistics(0,&minValue,&maxValue,&meanValue,&stdDev,pfnProgress,pProgressData);</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>     std::cout << <span class="stringliteral">"-min "</span> << minValue << <span class="stringliteral">" -max "</span> << maxValue << <span class="stringliteral">" --mean "</span> << meanValue << <span class="stringliteral">" --stdDev "</span> << stdDev << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>       }</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span> </div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>       <span class="keywordflow">if</span>(minmax_opt[0]||min_opt[0]||max_opt[0]){</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>     assert(theBand<imgReader.nrOfBand());</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>     <span class="keywordflow">if</span>((ulx_opt.size()||uly_opt.size()||lrx_opt.size()||lry_opt.size())&&(imgReader.covers(ulx_opt[0],uly_opt[0],lrx_opt[0],lry_opt[0]))){</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>       <span class="keywordtype">double</span> uli,ulj,lri,lrj;</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>       imgReader.geo2image(ulx_opt[0],uly_opt[0],uli,ulj);</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>       imgReader.geo2image(lrx_opt[0],lry_opt[0],lri,lrj);</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>       imgReader.getMinMax(static_cast<int>(uli),static_cast<int>(lri),static_cast<int>(ulj),static_cast<int>(lrj),theBand,minValue,maxValue);</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>     }</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>       imgReader.getMinMax(minValue,maxValue,theBand);</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>     <span class="keywordflow">if</span>(minmax_opt[0])</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>       std::cout << <span class="stringliteral">"-min "</span> << minValue << <span class="stringliteral">" -max "</span> << maxValue << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>       <span class="keywordflow">if</span>(min_opt[0])</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>         std::cout << <span class="stringliteral">"-min "</span> << minValue << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>       <span class="keywordflow">if</span>(max_opt[0])</div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>         std::cout << <span class="stringliteral">"-max "</span> << maxValue << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>     }</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>       }</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>     }</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>     <span class="keywordflow">if</span>(projection_opt[0]){</div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>       <span class="keywordflow">if</span>(imgReader.isGeoRef())</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>         std::cout << <span class="stringliteral">" -a_srs "</span> << imgReader.getProjection() << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>         std::cout << <span class="stringliteral">" -a_srs none"</span> << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>     }</div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>     <span class="keywordflow">if</span>(geo_opt[0]&&!read_opt[0]){</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>       std::cout << <span class="stringliteral">" -geo "</span> << std::setprecision(12) << imgReader.getGeoTransform();</div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>     }</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>     <span class="keywordflow">if</span>(interleave_opt[0]){</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>       std::cout << <span class="stringliteral">" --interleave "</span> << imgReader.getInterleave() << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>     }</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>     <span class="keywordflow">if</span>(type_opt[0]){</div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>       std::cout << <span class="stringliteral">"--otype "</span> << GDALGetDataTypeName(imgReader.getDataType(band_opt[0])) << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>       <span class="comment">// std::cout << " -ot " << GDALGetDataTypeName(imgReader.getDataType(band_opt[0])) << " (" << static_cast<short>(imgReader.getDataType(band_opt[0])) << ")" << std::endl;</span></div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>     }</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>     <span class="keywordflow">if</span>(description_opt[0]){</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>       <span class="comment">// try{</span></div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>       <span class="comment">//    std::cout << "image description: " << imgReader.getImageDescription() << std::endl;</span></div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>       <span class="comment">// }</span></div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>       <span class="comment">// catch(...){</span></div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>       <span class="comment">//    std::cout << "caught" << std::endl;</span></div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>       <span class="comment">// }</span></div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>       std::list<std::string> metaData;</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>       imgReader.getMetadata(metaData);</div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>       std::list<std::string>::const_iterator lit=metaData.begin();</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>       std::cout << <span class="stringliteral">" --description "</span>;</div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>       <span class="keywordflow">while</span>(lit!=metaData.end())</div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>         std::cout << *(lit++) << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>     }</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>     <span class="keywordflow">if</span>(metadata_opt[0]){</div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>       std::cout << <span class="stringliteral">"Metadata: "</span> << std::endl;</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>       std::list<std::string> lmeta;</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>       imgReader.getMetadata(lmeta);</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>       std::list<std::string>::const_iterator lit=lmeta.begin();</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>       <span class="keywordflow">while</span>(lit!=lmeta.end()){</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>         std::cout << *lit << std::endl;</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>         ++lit;</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>       }</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span> <span class="comment">//       char** cmetadata=imgReader.getMetadata();</span></div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span> <span class="comment">//       while(*cmetadata!=NULL){</span></div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span> <span class="comment">//         std::cout << *(cmetadata) << std::endl;</span></div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span> <span class="comment">//         ++cmetadata;</span></div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span> <span class="comment">//       }</span></div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>     }</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>     <span class="keywordflow">if</span>(read_opt[0]){</div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>       <span class="comment">// int nband=band_opt.size();</span></div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>       <span class="comment">// if(band_opt[0]<0)</span></div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>       <span class="comment">//   nband=imgReader.nrOfBand();</span></div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>       std::cout.precision(12);</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span>         <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> theBand=(band_opt[0]<0)? iband : band_opt[iband];</div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>         std::vector<float> rowBuffer;<span class="comment">//buffer will be resized in readdata</span></div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iy=0;iy<y_opt.size();++iy){</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>       <span class="keywordtype">double</span> theRow=y_opt[iy];</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span>       <span class="keywordtype">int</span> ncol=(x_opt.size())? x_opt.size() : imgReader.nrOfCol();</div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ix=0;ix<ncol;++ix){</div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span>         <span class="keywordtype">double</span> theCol=ix;</div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>         <span class="keywordflow">if</span>(x_opt.size()){</div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>           <span class="keywordflow">if</span>(geo_opt[0])</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>         imgReader.geo2image(x_opt[ix],y_opt[iy],theCol,theRow);</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span>         theCol=x_opt[ix];</div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>         }</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>             assert(theRow>=0);</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>             assert(theRow<imgReader.nrOfRow());</div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>             imgReader.readData(rowBuffer,GDT_Float32, static_cast<int>(theRow), theBand);</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span>         assert(theCol<rowBuffer.size());</div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>         std::cout << rowBuffer[static_cast<int>(theCol)] << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>       }</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span>           std::cout << std::endl;</div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>         }</div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span>       }</div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span>     }</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>     <span class="keywordflow">if</span>(driver_opt[0])</div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span>       std::cout << <span class="stringliteral">" --oformat "</span> << imgReader.getDriverDescription() << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span>     imgReader.close();</div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span>   }</div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span>   <span class="keywordflow">if</span>((bbox_opt[0]||bbox_te_opt[0])&&input_opt.size()>1){</div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span>     <span class="keywordflow">if</span>(bbox_te_opt[0])</div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span>       std::cout << std::setprecision(12) << <span class="stringliteral">"-te "</span> << minULX << <span class="stringliteral">" "</span> << minLRY << <span class="stringliteral">" "</span> << maxLRX << <span class="stringliteral">" "</span> << maxULY;</div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span>       std::cout << <span class="stringliteral">"union bounding box: "</span> << std::setprecision(12) << <span class="stringliteral">"--ulx="</span> << minULX << <span class="stringliteral">" --uly="</span> << maxULY << <span class="stringliteral">" --lrx="</span> << maxLRX << <span class="stringliteral">" --lry=& [...]
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>     <span class="keywordflow">if</span>(maxULX<minLRX&&minULY>maxLRY){</div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>       <span class="keywordflow">if</span>(bbox_te_opt[0])</div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span>         std::cout << <span class="stringliteral">"intersect bounding box: "</span> << std::setprecision(12) << <span class="stringliteral">"-te "</span> << maxULX << <span class="stringliteral">" "</span> << maxLRY << <span class="stringliteral">" "</span> << minLRX << <span class="stringliteral">" --lry="</s [...]
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span>         std::cout << <span class="stringliteral">"intersect bounding box: "</span> << std::setprecision(12) << <span class="stringliteral">"--ulx="</span> << maxULX << <span class="stringliteral">" --uly="</span> << minULY << <span class="stringliteral">" --lrx="</span> << minLRX << <span class="stringliteral">" - [...]
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span>     }</div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span>       std::cout << <span class="stringliteral">"no intersect"</span> << std::endl;</div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span>   }</div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span>   <span class="keywordflow">if</span>(!read_opt[0])</div>
-<div class="line"><a name="l00445"></a><span class="lineno">  445</span>     std::cout << std::endl;</div>
-<div class="line"><a name="l00446"></a><span class="lineno">  446</span> }</div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-<div class="ttc" id="classImgReaderOgr_html"><div class="ttname"><a href="classImgReaderOgr.html">ImgReaderOgr</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderOgr_8h_source.html#l00035">ImgReaderOgr.h:35</a></div></div>
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-<div class="ttc" id="classEgcs_html"><div class="ttname"><a href="classEgcs.html">Egcs</a></div><div class="ttdef"><b>Definition:</b> <a href="Egcs_8h_source.html#l00026">Egcs.h:26</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkkalman.html b/doc/html/pkkalman.html
deleted file mode 100644
index a0b50ed..0000000
--- a/doc/html/pkkalman.html
+++ /dev/null
@@ -1,144 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: pkkalman</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkkalman </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><p>produce kalman filtered raster time series </p>
-<h2>SYNOPSIS</h2>
-<p><code> Usage: pkkalman -mod modelinput.tif -obs obsinput.tif [-direction [forward|backward|smooth]]* -ofw output_fc.tif -obw output_bw.tif -ofb output_fb.tif </code></p>
-<p><code></code></p>
-<p><code> Options[-tmod time]* [-tobs time]* [-modnodata value]* [-obsnodata value]* [-modmask mask.tif] [-obsmask mask.tif] [-msknodata value]* [-mskband] [-u_ofw uncert_fw.tif] [-u_obw uncert_bw.tif] [-u_ofb uncert_fb.tif]</code></p>
-<p><code> Advanced options (see table) </code></p>
-<h1><a class="anchor" id="pkkalman_description"></a>
-Description</h1>
-<p>The utilty pkkalman will complement a time series of observations (option -obs) at fine spatial resolution. A data assimilation technique based on a Kalman filter is hereby used. The data at fine spatial resolution are assimilated with coarse spatial resolution time series at a finer temporal resolution, referred to as a model (option -mod). The time series for both observation and model can either be provided as multi-band raster datasets or as multiple single band datasets. Missing  [...]
-<h1><a class="anchor" id="pkcrop_options"></a>
-Options</h1>
-<ul>
-<li>use either <code>-short</code> or <code>--long</code> options (both <code>--long=value</code> and <code>--long value</code> are supported)</li>
-<li>short option <code>-h</code> shows basic options only, long option <code>--help</code> shows all options <table class="doxtable">
-<tr>
-<th>short</th><th>long</th><th>type</th><th>default</th><th>description  </th></tr>
-<tr>
-<td>dir </td><td>direction </td><td>std::string </td><td>forward </td><td>direction to run model (forward|backward|smooth) </td></tr>
-<tr>
-<td>mod </td><td>model </td><td>std::string </td><td></td><td>coarse spatial resolution input datasets(s) used as model. Use either multi-band input (-model multiband_model.tif) or multiple single-band inputs (-mod model1 -mod model2 etc.) </td></tr>
-<tr>
-<td>modmask</td><td>modmask </td><td>std::string </td><td></td><td>model mask datasets(s). Must have same dimension as model input. Use either multi-band input or multiple single-band inputs </td></tr>
-<tr>
-<td>obs </td><td>observation </td><td>std::string </td><td></td><td>fine spatial resolution input dataset(s) used as observation. Use either multi-band input (-obs multiband_obs.tif) or multiple single-band inputs (-obs obs1 -obs obs2 etc.) </td></tr>
-<tr>
-<td>obsmask</td><td>obsmask </td><td>std::string </td><td></td><td>observation mask dataset(s). Must have same dimension as observation input (use multi-band input or multiple single-band inputs </td></tr>
-<tr>
-<td>tmod </td><td>tmodel </td><td>int </td><td></td><td>time sequence of model input. Sequence must have exact same length as model input. Leave empty to have default sequence 0,1,2,etc. </td></tr>
-<tr>
-<td>tobs </td><td>tobservation </td><td>int </td><td></td><td>time sequence of observation input. Sequence must have exact same length as observation input </td></tr>
-<tr>
-<td>a_srs </td><td>a_srs </td><td>std::string </td><td></td><td>Override the projection for the output file (leave blank to copy from input file, use epsg:3035 to use European projection and force to European grid </td></tr>
-<tr>
-<td>ofw </td><td>outputfw </td><td>std::string </td><td></td><td>Output raster dataset for forward model </td></tr>
-<tr>
-<td>u_ofw </td><td>u_outputfw </td><td>std::string </td><td></td><td>Uncertainty output raster dataset for forward model </td></tr>
-<tr>
-<td>obw </td><td>outputbw </td><td>std::string </td><td></td><td>Output raster dataset for backward model </td></tr>
-<tr>
-<td>u_obw </td><td>u_outputbw </td><td>std::string </td><td></td><td>Uncertainty output raster dataset for backward model </td></tr>
-<tr>
-<td>ofb </td><td>outputfb </td><td>std::string </td><td></td><td>Output raster dataset for smooth model </td></tr>
-<tr>
-<td>u_ofb </td><td>u_outputfb </td><td>std::string </td><td></td><td>Uncertainty output raster dataset for smooth model </td></tr>
-<tr>
-<td>modnodata </td><td>modnodata </td><td>double </td><td>0 </td><td>invalid value for model input </td></tr>
-<tr>
-<td>obsnodata </td><td>obsnodata </td><td>double </td><td>0 </td><td>invalid value for observation input </td></tr>
-<tr>
-<td>msknodata </td><td>msknodata </td><td>float </td><td>0 </td><td>Mask value not to consider </td></tr>
-<tr>
-<td>mskband </td><td>mskband </td><td>short </td><td>0 </td><td>Mask band to read (0 indexed) </td></tr>
-<tr>
-<td>obsmin </td><td>obsmin </td><td>double </td><td></td><td>Minimum value for observation data </td></tr>
-<tr>
-<td>obsmax </td><td>obsmax </td><td>double </td><td></td><td>Maximum value for observation data </td></tr>
-<tr>
-<td>eps </td><td>eps </td><td>double </td><td>1e-05 </td><td>epsilon for non zero division </td></tr>
-<tr>
-<td>um </td><td>uncertmodel </td><td>double </td><td>1 </td><td>Uncertainty of the model </td></tr>
-<tr>
-<td>uo </td><td>uncertobs </td><td>double </td><td>1 </td><td>Uncertainty of valid observations </td></tr>
-<tr>
-<td>unodata </td><td>uncertnodata </td><td>double </td><td>100 </td><td>Uncertainty in case of no-data values in observation </td></tr>
-<tr>
-<td>q </td><td>q </td><td>double </td><td>1 </td><td>Process noise: expresses instability (variance) of proportions of fine res pixels within a moderate resolution pixel </td></tr>
-<tr>
-<td>down </td><td>down </td><td>int </td><td></td><td>Downsampling factor for reading model data to calculate regression (default is ratio between coarse (model) and fine (obs) resolution raster datasets) </td></tr>
-<tr>
-<td>ot </td><td>otype </td><td>std::string </td><td></td><td>Data type for output image ({Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/CInt16/CInt32/CFloat32/CFloat64}). Empty string: inherit type from input image </td></tr>
-<tr>
-<td>of </td><td>oformat </td><td>std::string </td><td>GTiff </td><td>Output image format (see also gdal_translate). </td></tr>
-<tr>
-<td>co </td><td>co </td><td>std::string </td><td></td><td>Creation option for output file. Multiple options can be specified. </td></tr>
-<tr>
-<td>v </td><td>verbose </td><td>short </td><td>0 </td><td>verbose mode when positive </td></tr>
-</table>
-<h1>Examples </h1>
-</li>
-</ul>
-<p>Some examples how to use pkcrop can be found <a class="el" href="md_examples_pkkalman.html#examples_pkkalman">here</a> </p>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkkalman1_8cc_source.html b/doc/html/pkkalman1_8cc_source.html
deleted file mode 100644
index 21f87e0..0000000
--- a/doc/html/pkkalman1_8cc_source.html
+++ /dev/null
@@ -1,1959 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/pkkalman1.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkkalman1.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pkkalman.cc: produce kalman filtered raster time series</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <sstream></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <vector></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <algorithm></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "base/Vector2d.h"</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "imageclasses/ImgReaderGdal.h"</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "imageclasses/ImgWriterGdal.h"</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "algorithms/StatFactory.h"</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include "algorithms/ImgRegression.h"</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> </div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="comment">/******************************************************************************/</span></div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span> <span class="comment">/*------------------</span></div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span> <span class="comment">  Main procedure</span></div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span> <span class="comment">  ----------------*/</span></div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc,<span class="keywordtype">char</span> **argv) {</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> direction_opt(<span class="stringliteral">"dir"</span>,<span class="stringliteral">"direction"</span>,<span class="stringliteral">"direction to run model (forward|backward|smooth)"</span>,<span class="stringliteral">"forward"</span>);</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> model_opt(<span class="stringliteral">"mod"</span>,<span class="stringliteral">"model"</span>,<span class="stringliteral">"model input datasets, e.g., MODIS (use: -mod model1 -mod model2 etc.)"</span>);</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> observation_opt(<span class="stringliteral">"obs"</span>,<span class="stringliteral">"observation"</span>,<span class="stringliteral">"observation input datasets, e.g., landsat (use: -obs obs1 -obs obs2 etc.)"</span>);</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> tmodel_opt(<span class="stringliteral">"tmod"</span>,<span class="stringliteral">"tmodel"</span>,<span class="stringliteral">"time sequence of model input. Sequence must have exact same length as model input. Leave empty to have default sequence 0,1,2,etc."</span>); </div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> tobservation_opt(<span class="stringliteral">"tobs"</span>,<span class="stringliteral">"tobservation"</span>,<span class="stringliteral">"time sequence of observation input. Sequence must have exact same length as observation input)"</span>); </div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  projection_opt(<span class="stringliteral">"a_srs"</span>, <span class="stringliteral">"a_srs"</span>, <span class="stringliteral">"Override the projection for the output file (leave blank to copy from input file, use epsg:3035 to use European projection and force to European grid"</span>);</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> outputfw_opt(<span class="stringliteral">"ofw"</span>, <span class="stringliteral">"outputfw"</span>, <span class="stringliteral">"Output raster dataset for forward model"</span>);</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> outputbw_opt(<span class="stringliteral">"obw"</span>, <span class="stringliteral">"outputbw"</span>, <span class="stringliteral">"Output raster dataset for backward model"</span>);</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> outputfb_opt(<span class="stringliteral">"ofb"</span>, <span class="stringliteral">"outputfb"</span>, <span class="stringliteral">"Output raster dataset for smooth model"</span>);</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> gain_opt(<span class="stringliteral">"gain"</span>, <span class="stringliteral">"gain"</span>, <span class="stringliteral">"Output raster dataset for gain"</span>);</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>   </div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> modnodata_opt(<span class="stringliteral">"modnodata"</span>, <span class="stringliteral">"modnodata"</span>, <span class="stringliteral">"invalid value for model input"</span>, 0);</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> obsnodata_opt(<span class="stringliteral">"obsnodata"</span>, <span class="stringliteral">"obsnodata"</span>, <span class="stringliteral">"invalid value for observation input"</span>, 0);</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> obsmin_opt(<span class="stringliteral">"obsmin"</span>, <span class="stringliteral">"obsmin"</span>, <span class="stringliteral">"Minimum value for observation data"</span>);</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> obsmax_opt(<span class="stringliteral">"obsmax"</span>, <span class="stringliteral">"obsmax"</span>, <span class="stringliteral">"Maximum value for observation data"</span>);</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> modoffset_opt(<span class="stringliteral">"modoffset"</span>, <span class="stringliteral">"modoffset"</span>, <span class="stringliteral">"offset used to read model input dataset (value=offset+scale*readValue)"</span>);</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> obsoffset_opt(<span class="stringliteral">"obsoffset"</span>, <span class="stringliteral">"obsoffset"</span>, <span class="stringliteral">"offset used to read observation input dataset (value=offset+scale*readValue)"</span>);</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> modscale_opt(<span class="stringliteral">"modscale"</span>, <span class="stringliteral">"modscale"</span>, <span class="stringliteral">"scale used to read model input dataset (value=offset+scale*readValue)"</span>);</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> obsscale_opt(<span class="stringliteral">"obsscale"</span>, <span class="stringliteral">"obsscale"</span>, <span class="stringliteral">"scale used to read observation input dataset (value=offset+scale*readValue)"</span>);</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> eps_opt(<span class="stringliteral">"eps"</span>, <span class="stringliteral">"eps"</span>, <span class="stringliteral">"epsilon for non zero division"</span>, 0.00001);</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> uncertModel_opt(<span class="stringliteral">"um"</span>, <span class="stringliteral">"uncertmodel"</span>, <span class="stringliteral">"Multiply this value with std dev of first model image to obtain uncertainty of model"</span>,2);</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> uncertObs_opt(<span class="stringliteral">"uo"</span>, <span class="stringliteral">"uncertobs"</span>, <span class="stringliteral">"Uncertainty of valid observations"</span>,0);</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> weight_opt(<span class="stringliteral">"w"</span>, <span class="stringliteral">"weight"</span>, <span class="stringliteral">"Penalize outliers in measurement via weights. Use first weight to penalize small measurements wrt model and second weight to penalize large measurements wrt model"</span>);</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> deltaObs_opt(<span class="stringliteral">"dobs"</span>, <span class="stringliteral">"deltaobs"</span>, <span class="stringliteral">"Lower and upper thresholds for relative pixel differences (in percentage): (observation-model)/model. For instance to force the observation within a +/- 10 % interval, use: -dobs -10 -do [...]
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> uncertNodata_opt(<span class="stringliteral">"unodata"</span>, <span class="stringliteral">"uncertnodata"</span>, <span class="stringliteral">"Uncertainty in case of no-data values in observation"</span>, 10000);</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> regTime_opt(<span class="stringliteral">"rt"</span>, <span class="stringliteral">"regtime"</span>, <span class="stringliteral">"Weight for regression in time series"</span>, 1.0);</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> regSensor_opt(<span class="stringliteral">"rs"</span>, <span class="stringliteral">"regsensor"</span>, <span class="stringliteral">"Weight for regression model - measurement (model - observation)."</span>);</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> down_opt(<span class="stringliteral">"down"</span>, <span class="stringliteral">"down"</span>, <span class="stringliteral">"Downsampling factor for reading model data to calculate regression"</span>);</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   <a class="code" href="classOptionpk.html">Optionpk<float></a> threshold_opt(<span class="stringliteral">"th"</span>, <span class="stringliteral">"threshold"</span>, <span class="stringliteral">"threshold for selecting samples (randomly). Provide probability in percentage (>0) or absolute (<0)."</span>, 0);</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> minreg_opt(<span class="stringliteral">"minreg"</span>, <span class="stringliteral">"minreg"</span>, <span class="stringliteral">"Minimum number of pixels to take into account for regression"</span>, 5, 2);</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>   <a class="code" href="classOptionpk.html">Optionpk<float></a> c0modGlobalMin_opt(<span class="stringliteral">"c0modmin"</span>, <span class="stringliteral">"c0modmin"</span>, <span class="stringliteral">"Minimum value for c0 in model regression"</span>, -65, 2);</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>   <a class="code" href="classOptionpk.html">Optionpk<float></a> c0modGlobalMax_opt(<span class="stringliteral">"c0modmax"</span>, <span class="stringliteral">"c0modmax"</span>, <span class="stringliteral">"Maximum value for c0 in model regression"</span>, 65, 2);</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>   <a class="code" href="classOptionpk.html">Optionpk<float></a> c1modGlobalMin_opt(<span class="stringliteral">"c1modmin"</span>, <span class="stringliteral">"c1modmin"</span>, <span class="stringliteral">"Minimum value for c1 in model regression"</span>, 0.7, 2);</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   <a class="code" href="classOptionpk.html">Optionpk<float></a> c1modGlobalMax_opt(<span class="stringliteral">"c1modmax"</span>, <span class="stringliteral">"c1modmax"</span>, <span class="stringliteral">"Maximum value for c1 in model regression"</span>, 1.3, 2);</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>   <span class="comment">// Optionpk<bool> regObs_opt("regobs", "regobs", "Perform regression between modeled and observed value",false);</span></div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>   <span class="comment">// Optionpk<double> checkDiff_opt("diff", "diff", "Flag observation as invalid if difference with model is above uncertainty",false);</span></div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> window_opt(<span class="stringliteral">"win"</span>, <span class="stringliteral">"window"</span>, <span class="stringliteral">"window size for calculating regression (use 0 for global)"</span>, 0);</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>   <span class="comment">// Optionpk<string> mask_opt("m", "mask", "Use the first band of the specified file as a validity mask. Nodata values can be set with the option msknodata.");</span></div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>   <span class="comment">// Optionpk<double> msknodata_opt("msknodata", "msknodata", "Mask value(s) not to consider for filtering. First value will be set in output image.", 0);</span></div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span> </div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  oformat_opt(<span class="stringliteral">"of"</span>, <span class="stringliteral">"oformat"</span>, <span class="stringliteral">"Output image format (see also gdal_translate). Empty string: inherit from input image"</span>,<span class="stringliteral">"GTiff"</span>,2);</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> option_opt(<span class="stringliteral">"co"</span>, <span class="stringliteral">"co"</span>, <span class="stringliteral">"Creation option for output file. Multiple options can be specified."</span>);</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> verbose_opt(<span class="stringliteral">"v"</span>, <span class="stringliteral">"verbose"</span>, <span class="stringliteral">"verbose mode when positive"</span>, 0);</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span> </div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>   <span class="keywordtype">bool</span> doProcess;<span class="comment">//stop process when program was invoked with help option (-h --help)</span></div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>     doProcess=direction_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>     model_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>     observation_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>     tmodel_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>     tobservation_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>     projection_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>     outputfw_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>     outputbw_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>     outputfb_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>     gain_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>     modnodata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>     obsnodata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>     obsmin_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>     obsmax_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>     modoffset_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>     modscale_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>     obsoffset_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>     obsscale_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>     eps_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>     uncertModel_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>     uncertObs_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>     weight_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>     deltaObs_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>     uncertNodata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>     regTime_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>     regSensor_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>     down_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>     threshold_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>     minreg_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>     c0modGlobalMin_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>     c0modGlobalMax_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>     c1modGlobalMin_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>     c1modGlobalMax_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>     <span class="comment">// regObs_opt.retrieveOption(argc,argv);</span></div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>     <span class="comment">// checkDiff_opt.retrieveOption(argc,argv);</span></div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>     window_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>     <span class="comment">// mask_opt.retrieveOption(argc,argv);</span></div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>     <span class="comment">// msknodata_opt.retrieveOption(argc,argv);</span></div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>     oformat_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>     option_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>     verbose_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>   }</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> predefinedString){</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>     std::cout << predefinedString << std::endl;</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>     exit(0);</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>   }</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>   <span class="keywordflow">if</span>(!doProcess){</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>     std::cerr << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << std::endl;</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>     exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>   }</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span> </div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>   <span class="keywordflow">if</span>(deltaObs_opt.size()==1){</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>     <span class="keywordflow">if</span>(deltaObs_opt[0]<=0)</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>       deltaObs_opt.push_back(-deltaObs_opt[0]);</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>       deltaObs_opt.insert(deltaObs_opt.begin(),-deltaObs_opt[0]);</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>   }</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>   <span class="keywordflow">if</span>(weight_opt.size()==1){</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>     weight_opt.push_back(weight_opt[0]);</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>   }</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span> </div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>   <span class="keywordflow">if</span>(down_opt.empty()){</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>     std::cerr << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << std::endl;</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>     exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>   }</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>     ostringstream errorStream;</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>     <span class="keywordflow">if</span>(model_opt.size()<2){</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>       errorStream << <span class="stringliteral">"Error: no model dataset selected, use option -mod"</span> << endl;</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>       <span class="keywordflow">throw</span>(errorStream.str());</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>     }</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>     <span class="keywordflow">if</span>(observation_opt.size()<1){</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>       errorStream << <span class="stringliteral">"Error: no observation dataset selected, use option -obs"</span> << endl;</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>       <span class="keywordflow">throw</span>(errorStream.str());</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>     }</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>     <span class="keywordflow">if</span>(direction_opt[0]==<span class="stringliteral">"smooth"</span>){</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>       <span class="keywordflow">if</span>(outputfw_opt.empty()){</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>     errorStream << <span class="stringliteral">"Error: output forward datasets is not provided, use option -ofw"</span> << endl;</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>     <span class="keywordflow">throw</span>(errorStream.str());</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>       }</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>       <span class="keywordflow">if</span>(outputbw_opt.empty()){</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>     errorStream << <span class="stringliteral">"Error: output backward datasets is not provided, use option -obw"</span> << endl;</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>     <span class="keywordflow">throw</span>(errorStream.str());</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>       }</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>       <span class="keywordflow">if</span>(outputfb_opt.empty()){</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>     errorStream << <span class="stringliteral">"Error: output smooth datasets is not provided, use option -ofb"</span> << endl;</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>     <span class="keywordflow">throw</span>(errorStream.str());</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>       }</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>     }</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>       <span class="keywordflow">if</span>(direction_opt[0]==<span class="stringliteral">"forward"</span>&&outputfw_opt.empty()){</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>     errorStream << <span class="stringliteral">"Error: output forward datasets is not provided, use option -ofw"</span> << endl;</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>     <span class="keywordflow">throw</span>(errorStream.str());</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>       }</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(direction_opt[0]==<span class="stringliteral">"backward"</span>&&outputbw_opt.empty()){</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>     errorStream << <span class="stringliteral">"Error: output backward datasets is not provided, use option -obw"</span> << endl;</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>     <span class="keywordflow">throw</span>(errorStream.str());</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>       }</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span> </div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>       <span class="keywordflow">if</span>(model_opt.size()<observation_opt.size()){</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>     errorStream << <span class="stringliteral">"Error: sequence of models should be larger than observations"</span> << endl;</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>     <span class="keywordflow">throw</span>(errorStream.str());</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>       }</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>       <span class="keywordflow">if</span>(tmodel_opt.size()!=model_opt.size()){</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>     <span class="keywordflow">if</span>(tmodel_opt.empty())</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>       cout << <span class="stringliteral">"Warning: time sequence is not provided, self generating time sequence from 0 to "</span> << model_opt.size() << endl;</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>       cout << <span class="stringliteral">"Warning: time sequence provided ("</span> << tmodel_opt.size() << <span class="stringliteral">") does not match number of model raster datasets ("</span> << model_opt.size() << <span class="stringliteral">")"</span> << endl;</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>     tmodel_opt.clear();</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> tindex=0;tindex<model_opt.size();++tindex)</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>       tmodel_opt.push_back(tindex);</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>       }</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>       <span class="keywordflow">if</span>(tobservation_opt.size()!=observation_opt.size()){</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>     errorStream << <span class="stringliteral">"Error: time sequence for observation must match size of observation dataset"</span> << endl;</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>     <span class="keywordflow">throw</span>(errorStream.str());</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>       }</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>     }</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>   }</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorString){</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>     std::cout << errorString << std::endl;</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>     exit(1);</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>   }</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span> </div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>   <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>   stat.setNoDataValues(modnodata_opt);</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>   <a class="code" href="classimgregression_1_1ImgRegression.html">imgregression::ImgRegression</a> imgreg;</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>   <span class="comment">// vector<ImgReaderGdal> imgReaderModel(model_opt.size());</span></div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>   <span class="comment">// vector<ImgReaderGdal> imgReaderObs(observation_opt.size());</span></div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>   <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> imgReaderModel1;</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>   <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> imgReaderModel2;</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>   <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> imgReaderObs;</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>   <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> imgWriterEst;</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>   <span class="comment">//test</span></div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>   <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> imgWriterGain;</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span> </div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>   imgReaderObs.open(observation_opt[0]);</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span> </div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>   <span class="keywordtype">int</span> ncol=imgReaderObs.nrOfCol();</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>   <span class="keywordtype">int</span> nrow=imgReaderObs.nrOfRow();</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>   <span class="keywordflow">if</span>(projection_opt.empty())</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>     projection_opt.push_back(imgReaderObs.getProjection());</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>   <span class="keywordtype">double</span> geotransform[6];</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>   imgReaderObs.getGeoTransform(geotransform);</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span> </div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>   <span class="keywordtype">string</span> imageType=imgReaderObs.getImageType();</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>   <span class="keywordflow">if</span>(oformat_opt.size())<span class="comment">//default</span></div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>     imageType=oformat_opt[0];</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>   <span class="keywordflow">if</span>(option_opt.findSubstring(<span class="stringliteral">"INTERLEAVE="</span>)==option_opt.end()){</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>     <span class="keywordtype">string</span> theInterleave=<span class="stringliteral">"INTERLEAVE="</span>;</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>     theInterleave+=imgReaderObs.getInterleave();</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>     option_opt.push_back(theInterleave);</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>   }</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span> </div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>   <span class="keywordflow">if</span>(down_opt.empty()){</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>     imgReaderModel1.open(model_opt[0]);</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>     <span class="keywordtype">double</span> resModel=imgReaderModel1.getDeltaX();</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>     <span class="keywordtype">double</span> resObs=imgReaderObs.getDeltaX();</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>     <span class="keywordtype">int</span> down=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(ceil(resModel/resObs));</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>     <span class="keywordflow">if</span>(!(down%2))</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>       down+=1;</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>     down_opt.push_back(down);</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>     imgReaderModel1.close();</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>   }</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>   imgReaderObs.close();</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span> </div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>   <span class="keywordflow">if</span>(regSensor_opt.empty())</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>     regSensor_opt.push_back(1.0/down_opt[0]);</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>   <span class="comment">//hiero</span></div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>   <span class="comment">// ImgReaderGdal maskReader;</span></div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>   <span class="comment">// double colMask=0;</span></div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>   <span class="comment">// double rowMask=0;</span></div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span> </div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>   <span class="comment">// if(mask_opt.size()){</span></div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>   <span class="comment">//   try{</span></div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>   <span class="comment">//     if(verbose_opt[0]>=1)</span></div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>   <span class="comment">//    std::cout << "opening mask image file " << mask_opt[0] << std::endl;</span></div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>   <span class="comment">//     maskReader.open(mask_opt[0]);</span></div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>   <span class="comment">//     maskReader.setNoData(msknodata_opt);</span></div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>   <span class="comment">//   }</span></div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>   <span class="comment">//   catch(string error){</span></div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>   <span class="comment">//     cerr << error << std::endl;</span></div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>   <span class="comment">//     exit(2);</span></div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>   <span class="comment">//   }</span></div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>   <span class="comment">//   catch(...){</span></div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>   <span class="comment">//     cerr << "error catched" << std::endl;</span></div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>   <span class="comment">//     exit(1);</span></div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>   <span class="comment">//   }</span></div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>   <span class="comment">// }</span></div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span> </div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>   <span class="keywordtype">int</span> obsindex=0;</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span> </div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>   <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span> </div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>   imgreg.setDown(down_opt[0]);</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>   imgreg.setThreshold(threshold_opt[0]);</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span> </div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>   <span class="keywordtype">double</span> c0modGlobal=0;<span class="comment">//time regression coefficient c0 (offset) calculated on entire image </span></div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>   <span class="keywordtype">double</span> c1modGlobal=1;<span class="comment">//time regression coefficient c1 (scale) calculated on entire image </span></div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>   <span class="keywordtype">double</span> c0modGlobal_prev=0;<span class="comment">//previous time regression coefficient c0 (offset) calculated on entire image to fall back</span></div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>   <span class="keywordtype">double</span> c1modGlobal_prev=1;<span class="comment">//previous time regression coefficient c1 (scale) calculated on entire image to fall back</span></div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>   <span class="keywordtype">double</span> c0mod=0;<span class="comment">//time regression coefficient c0 (offset) calculated on local window</span></div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>   <span class="keywordtype">double</span> c1mod=1;<span class="comment">//time regression coefficient c1 (scale) calculated on local window</span></div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span> </div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>   <span class="keywordtype">double</span> c0obs=0;<span class="comment">//offset</span></div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>   <span class="keywordtype">double</span> c1obs=1;<span class="comment">//scale</span></div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>   <span class="keywordtype">double</span> c0obs_prev=0;<span class="comment">//previous offset to fall back</span></div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>   <span class="keywordtype">double</span> c1obs_prev=1;<span class="comment">//previous scale to fall back</span></div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>   <span class="keywordtype">double</span> errObs=uncertNodata_opt[0];<span class="comment">//start with high initial value in case we do not have first observation at time 0</span></div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span> </div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>   vector<int> relobsindex;</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>   <span class="comment">// cout << tmodel_opt << endl;</span></div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>   <span class="comment">// cout << tobservation_opt << endl;</span></div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span> </div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> tindex=0;tindex<tobservation_opt.size();++tindex){</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>     vector<int>::iterator modit;</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>     modit=upper_bound(tmodel_opt.begin(),tmodel_opt.end(),tobservation_opt[tindex]);</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>     <span class="keywordtype">int</span> relpos=modit-tmodel_opt.begin()-1;</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>     assert(relpos>=0);<span class="comment">//todo: for now, we assume model is available at time before first measurement</span></div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>     relobsindex.push_back(relpos);</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>       cout << <span class="stringliteral">"observation "</span> << tindex << <span class="stringliteral">": "</span> << <span class="stringliteral">"relative position in model time series is "</span> << relpos << <span class="stringliteral">", date of observation is (tobservation_opt[tindex]): "</span> << tobservation_opt[tindex]  [...]
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>     <span class="comment">// if(verbose_opt[0])</span></div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>     <span class="comment">//   cout << "tobservation_opt[tindex] " << tobservation_opt[tindex] << " " << relobsindex.back() << endl;</span></div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>   }</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span> </div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>   <span class="keywordtype">int</span> ndigit=log(1.0*tmodel_opt.back())/log(10.0)+1;</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span> </div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>   <span class="keywordtype">double</span> geox=0;</div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>   <span class="keywordtype">double</span> geoy=0;</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span> </div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>   <span class="keywordflow">if</span>(find(direction_opt.begin(),direction_opt.end(),<span class="stringliteral">"forward"</span>)!=direction_opt.end()){</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>     cout << <span class="stringliteral">"Running forward model"</span> << endl;</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>     obsindex=0;</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>     <span class="comment">//initialization</span></div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>     <span class="keywordtype">string</span> output;</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>     <span class="keywordflow">if</span>(outputfw_opt.size()==model_opt.size()){</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>       output=outputfw_opt[0];</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>     }</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>       ostringstream outputstream;</div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>       outputstream << outputfw_opt[0] << <span class="stringliteral">"_"</span>;</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>       outputstream << setfill(<span class="charliteral">'0'</span>) << setw(ndigit) << tmodel_opt[0];</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>       outputstream << <span class="stringliteral">".tif"</span>;</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>       <span class="comment">//test</span></div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>       <span class="comment">// outputstream << outputfw_opt[0] << "_" << tmodel_opt[0] << ".tif";</span></div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>       output=outputstream.str();</div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>     }</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>       cout << <span class="stringliteral">"Opening image "</span> << output << <span class="stringliteral">" for writing "</span> << endl;</div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span> </div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>     imgWriterEst.open(output,ncol,nrow,2,GDT_Float64,imageType,option_opt);</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>     imgWriterEst.setProjectionProj4(projection_opt[0]);</div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>     imgWriterEst.setGeoTransform(geotransform);</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>     imgWriterEst.GDALSetNoDataValue(obsnodata_opt[0]);</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span> </div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>     <span class="comment">//test</span></div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>     <span class="keywordflow">if</span>(gain_opt.size()){</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>       imgWriterGain.open(gain_opt[0],ncol,nrow,model_opt.size(),GDT_Float64,imageType,option_opt);</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>       imgWriterGain.setProjectionProj4(projection_opt[0]);</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>       imgWriterGain.setGeoTransform(geotransform);</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>       imgWriterGain.GDALSetNoDataValue(obsnodata_opt[0]);</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>     }</div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span> </div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>     <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>       cout << <span class="stringliteral">"processing time "</span> << tmodel_opt[0] << endl;</div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>       <span class="keywordflow">if</span>(obsindex<relobsindex.size())</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>     cout << <span class="stringliteral">"next observation "</span> << tmodel_opt[relobsindex[obsindex]] << endl;</div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>     cout << <span class="stringliteral">"There is no next observation"</span> << endl;</div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>     }</div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span> </div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span>       imgReaderModel1.open(model_opt[0]);</div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> inodata=0;inodata<modnodata_opt.size();++inodata)</div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>     imgReaderModel1.pushNoDataValue(modnodata_opt[inodata]);</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>       <span class="comment">// imgReaderModel1.setNoData(modnodata_opt);</span></div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span>       <span class="keywordflow">if</span>(modoffset_opt.size())</div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>     imgReaderModel1.setOffset(modoffset_opt[0]);</div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span>       <span class="keywordflow">if</span>(modscale_opt.size())</div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>     imgReaderModel1.setScale(modscale_opt[0]);</div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>     }</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>     <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorString){</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>       cerr << errorString << endl;</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span>     }</div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>     <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>       cerr << <span class="stringliteral">"Error opening file "</span> << model_opt[0] << endl;</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>     }</div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>       </div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span>     <span class="comment">//calculate standard deviation of image to serve as model uncertainty</span></div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>     GDALRasterBand* rasterBand;</div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>     rasterBand=imgReaderModel1.getRasterBand(0);</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span>     <span class="keywordtype">double</span> minValue, maxValue, meanValue, stdDev;</div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>     <span class="keywordtype">void</span>* pProgressData;</div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span>     rasterBand->ComputeStatistics(0,&minValue,&maxValue,&meanValue,&stdDev,pfnProgress,pProgressData);</div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span>     <span class="keywordtype">double</span> modRow=0;</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>     <span class="keywordtype">double</span> modCol=0;</div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span>     <span class="keywordflow">if</span>(relobsindex[0]>0){<span class="comment">//initialize output_opt[0] as model[0]</span></div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span>       <span class="comment">//write first model as output</span></div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span>     cout << <span class="stringliteral">"write first model as output"</span> << endl;</div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<nrow;++irow){</div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span>     vector<double> estReadBuffer;</div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span>     vector<double> estWriteBuffer(ncol);</div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span>     vector<double> uncertWriteBuffer(ncol);</div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>     <span class="comment">//test</span></div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>     vector<double> gainWriteBuffer(ncol);</div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span>     <span class="comment">// vector<double> lineMask;</span></div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span>     imgWriterEst.image2geo(0,irow,geox,geoy);</div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span>     imgReaderModel1.geo2image(geox,geoy,modCol,modRow);</div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span>     <span class="keywordflow">if</span>(modRow<0||modRow>=imgReaderModel1.nrOfRow()){</div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span>       cerr << <span class="stringliteral">"Error: geo coordinates ("</span> << geox << <span class="stringliteral">","</span> << geoy << <span class="stringliteral">") not covered in model image "</span> << imgReaderModel1.getFileName() << endl;</div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span>       assert(modRow>=0&&modRow<imgReaderModel1.nrOfRow());</div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span>     }</div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00445"></a><span class="lineno">  445</span>       imgReaderModel1.readData(estReadBuffer,GDT_Float64,modRow);</div>
-<div class="line"><a name="l00446"></a><span class="lineno">  446</span>       <span class="comment">//simple nearest neighbor</span></div>
-<div class="line"><a name="l00447"></a><span class="lineno">  447</span>       <span class="comment">//stat.nearUp(estReadBuffer,estWriteBuffer);</span></div>
-<div class="line"><a name="l00448"></a><span class="lineno">  448</span> </div>
-<div class="line"><a name="l00449"></a><span class="lineno">  449</span>       <span class="comment">// double oldRowMask=-1;//keep track of row mask to optimize number of line readings</span></div>
-<div class="line"><a name="l00450"></a><span class="lineno">  450</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<ncol;++icol){</div>
-<div class="line"><a name="l00451"></a><span class="lineno">  451</span>         imgWriterEst.image2geo(icol,irow,geox,geoy);</div>
-<div class="line"><a name="l00452"></a><span class="lineno">  452</span>         imgReaderModel1.geo2image(geox,geoy,modCol,modRow);</div>
-<div class="line"><a name="l00453"></a><span class="lineno">  453</span>         <span class="keywordtype">double</span> modValue=estReadBuffer[modCol];</div>
-<div class="line"><a name="l00454"></a><span class="lineno">  454</span>         <span class="keywordflow">if</span>(imgReaderModel1.isNoData(modValue)){</div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span>           estWriteBuffer[icol]=obsnodata_opt[0];</div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</span>           uncertWriteBuffer[icol]=uncertNodata_opt[0];</div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span>           gainWriteBuffer[icol]=obsnodata_opt[0];</div>
-<div class="line"><a name="l00458"></a><span class="lineno">  458</span>         }</div>
-<div class="line"><a name="l00459"></a><span class="lineno">  459</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00460"></a><span class="lineno">  460</span>           <span class="comment">//todo: should take into account regression model-obs...</span></div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span>           estWriteBuffer[icol]=modValue;</div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span>           uncertWriteBuffer[icol]=uncertModel_opt[0]*stdDev;</div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span>           gainWriteBuffer[icol]=0;</div>
-<div class="line"><a name="l00464"></a><span class="lineno">  464</span>         }</div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span>       }</div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>       imgWriterEst.writeData(estWriteBuffer,GDT_Float64,irow,0);</div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span>       imgWriterEst.writeData(uncertWriteBuffer,GDT_Float64,irow,1);</div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span>       <span class="keywordflow">if</span>(gain_opt.size())</div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span>          imgWriterGain.writeData(gainWriteBuffer,GDT_Float64,irow,0);</div>
-<div class="line"><a name="l00470"></a><span class="lineno">  470</span>     }</div>
-<div class="line"><a name="l00471"></a><span class="lineno">  471</span>     <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorString){</div>
-<div class="line"><a name="l00472"></a><span class="lineno">  472</span>       cerr << errorString << endl;</div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span>     }</div>
-<div class="line"><a name="l00474"></a><span class="lineno">  474</span>     <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span>       cerr << <span class="stringliteral">"Error writing file "</span> << imgWriterEst.getFileName() << endl;</div>
-<div class="line"><a name="l00476"></a><span class="lineno">  476</span>     }</div>
-<div class="line"><a name="l00477"></a><span class="lineno">  477</span>       }</div>
-<div class="line"><a name="l00478"></a><span class="lineno">  478</span>     }</div>
-<div class="line"><a name="l00479"></a><span class="lineno">  479</span>     <span class="keywordflow">else</span>{<span class="comment">//we have a measurement</span></div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span>     cout << <span class="stringliteral">"we have a measurement at initial time"</span> << endl;</div>
-<div class="line"><a name="l00482"></a><span class="lineno">  482</span>       imgReaderObs.open(observation_opt[0]);</div>
-<div class="line"><a name="l00483"></a><span class="lineno">  483</span>       imgReaderObs.getGeoTransform(geotransform);</div>
-<div class="line"><a name="l00484"></a><span class="lineno">  484</span>       imgReaderObs.setNoData(obsnodata_opt);</div>
-<div class="line"><a name="l00485"></a><span class="lineno">  485</span>       <span class="keywordflow">if</span>(obsoffset_opt.size())</div>
-<div class="line"><a name="l00486"></a><span class="lineno">  486</span>     imgReaderObs.setOffset(obsoffset_opt[0]);</div>
-<div class="line"><a name="l00487"></a><span class="lineno">  487</span>       <span class="keywordflow">if</span>(obsscale_opt.size())</div>
-<div class="line"><a name="l00488"></a><span class="lineno">  488</span>     imgReaderObs.setScale(obsscale_opt[0]);</div>
-<div class="line"><a name="l00489"></a><span class="lineno">  489</span> </div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span>       <span class="keywordflow">if</span>(regSensor_opt[0]>0){</div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span>     errObs=regSensor_opt[0]*imgreg.getRMSE(imgReaderModel1,imgReaderObs,c0obs,c1obs,0,0,verbose_opt[0]);</div>
-<div class="line"><a name="l00492"></a><span class="lineno">  492</span>     <span class="keywordflow">if</span>(errObs<0){</div>
-<div class="line"><a name="l00493"></a><span class="lineno">  493</span>       <span class="comment">// c0obs=0;</span></div>
-<div class="line"><a name="l00494"></a><span class="lineno">  494</span>       <span class="comment">// c1obs=1;</span></div>
-<div class="line"><a name="l00495"></a><span class="lineno">  495</span>       c0obs=c0obs_prev;</div>
-<div class="line"><a name="l00496"></a><span class="lineno">  496</span>       c1obs=c1obs_prev;</div>
-<div class="line"><a name="l00497"></a><span class="lineno">  497</span>     }</div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span>       c0obs_prev=c0obs;</div>
-<div class="line"><a name="l00500"></a><span class="lineno">  500</span>       c1obs_prev=c1obs;</div>
-<div class="line"><a name="l00501"></a><span class="lineno">  501</span>     }</div>
-<div class="line"><a name="l00502"></a><span class="lineno">  502</span>       }</div>
-<div class="line"><a name="l00503"></a><span class="lineno">  503</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00504"></a><span class="lineno">  504</span>     c0obs=0;</div>
-<div class="line"><a name="l00505"></a><span class="lineno">  505</span>     c1obs=1;</div>
-<div class="line"><a name="l00506"></a><span class="lineno">  506</span>     errObs=0;</div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span>       }</div>
-<div class="line"><a name="l00508"></a><span class="lineno">  508</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00509"></a><span class="lineno">  509</span>     cout << <span class="stringliteral">"c0obs, c1obs: "</span> << c0obs << <span class="stringliteral">", "</span> << c1obs << endl;</div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span> </div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<nrow;++irow){</div>
-<div class="line"><a name="l00512"></a><span class="lineno">  512</span>     vector<double> estReadBuffer;</div>
-<div class="line"><a name="l00513"></a><span class="lineno">  513</span>     imgWriterEst.image2geo(0,irow,geox,geoy);</div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span>     imgReaderModel1.geo2image(geox,geoy,modCol,modRow);</div>
-<div class="line"><a name="l00515"></a><span class="lineno">  515</span>     assert(modRow>=0&&modRow<imgReaderModel1.nrOfRow());</div>
-<div class="line"><a name="l00516"></a><span class="lineno">  516</span>     imgReaderModel1.readData(estReadBuffer,GDT_Float64,modRow);</div>
-<div class="line"><a name="l00517"></a><span class="lineno">  517</span>     vector<double> obsLineBuffer;</div>
-<div class="line"><a name="l00518"></a><span class="lineno">  518</span>     vector<double> estWriteBuffer(ncol);</div>
-<div class="line"><a name="l00519"></a><span class="lineno">  519</span>     vector<double> uncertWriteBuffer(ncol);</div>
-<div class="line"><a name="l00520"></a><span class="lineno">  520</span>     vector<double> uncertObsLineBuffer;</div>
-<div class="line"><a name="l00521"></a><span class="lineno">  521</span>     <span class="comment">//test</span></div>
-<div class="line"><a name="l00522"></a><span class="lineno">  522</span>     vector<double> gainWriteBuffer(ncol);</div>
-<div class="line"><a name="l00523"></a><span class="lineno">  523</span>     <span class="comment">// vector<double> lineMask;</span></div>
-<div class="line"><a name="l00524"></a><span class="lineno">  524</span>     <span class="comment">// imgReaderObs.readData(estWriteBuffer,GDT_Float64,irow,0);</span></div>
-<div class="line"><a name="l00525"></a><span class="lineno">  525</span>     imgReaderObs.readData(obsLineBuffer,GDT_Float64,irow,0);</div>
-<div class="line"><a name="l00526"></a><span class="lineno">  526</span>     </div>
-<div class="line"><a name="l00527"></a><span class="lineno">  527</span>     <span class="keywordflow">if</span>(imgReaderObs.nrOfBand()>1)</div>
-<div class="line"><a name="l00528"></a><span class="lineno">  528</span>       imgReaderObs.readData(uncertObsLineBuffer,GDT_Float64,irow,1);</div>
-<div class="line"><a name="l00529"></a><span class="lineno">  529</span>     <span class="comment">// double oldRowMask=-1;//keep track of row mask to optimize number of line readings</span></div>
-<div class="line"><a name="l00530"></a><span class="lineno">  530</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<ncol;++icol){</div>
-<div class="line"><a name="l00531"></a><span class="lineno">  531</span>       imgWriterEst.image2geo(icol,irow,geox,geoy);</div>
-<div class="line"><a name="l00532"></a><span class="lineno">  532</span>       imgReaderModel1.geo2image(geox,geoy,modCol,modRow);</div>
-<div class="line"><a name="l00533"></a><span class="lineno">  533</span>       assert(modRow>=0&&modRow<imgReaderModel1.nrOfRow());</div>
-<div class="line"><a name="l00534"></a><span class="lineno">  534</span>       <span class="keywordtype">double</span> modValue=estReadBuffer[modCol];</div>
-<div class="line"><a name="l00535"></a><span class="lineno">  535</span>       <span class="keywordflow">if</span>(imgReaderModel1.isNoData(modValue)){<span class="comment">//model is nodata: retain observation </span></div>
-<div class="line"><a name="l00536"></a><span class="lineno">  536</span>         estWriteBuffer[icol]=obsLineBuffer[icol];</div>
-<div class="line"><a name="l00537"></a><span class="lineno">  537</span>         <span class="keywordflow">if</span>(imgReaderObs.isNoData(obsLineBuffer[icol])){</div>
-<div class="line"><a name="l00538"></a><span class="lineno">  538</span>           estWriteBuffer[icol]=obsnodata_opt[0];</div>
-<div class="line"><a name="l00539"></a><span class="lineno">  539</span>           uncertWriteBuffer[icol]=uncertNodata_opt[0];</div>
-<div class="line"><a name="l00540"></a><span class="lineno">  540</span>           gainWriteBuffer[icol]=obsnodata_opt[0];</div>
-<div class="line"><a name="l00541"></a><span class="lineno">  541</span>         }</div>
-<div class="line"><a name="l00542"></a><span class="lineno">  542</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(uncertObsLineBuffer.size()>icol)</div>
-<div class="line"><a name="l00543"></a><span class="lineno">  543</span>           uncertWriteBuffer[icol]=uncertObsLineBuffer[icol];</div>
-<div class="line"><a name="l00544"></a><span class="lineno">  544</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00545"></a><span class="lineno">  545</span>           uncertWriteBuffer[icol]=uncertObs_opt[0];</div>
-<div class="line"><a name="l00546"></a><span class="lineno">  546</span>         <span class="comment">//test</span></div>
-<div class="line"><a name="l00547"></a><span class="lineno">  547</span>         <span class="keywordflow">if</span>(!imgReaderObs.isNoData(estWriteBuffer[icol])){</div>
-<div class="line"><a name="l00548"></a><span class="lineno">  548</span>           <span class="keywordflow">if</span>(obsmin_opt.size())</div>
-<div class="line"><a name="l00549"></a><span class="lineno">  549</span>         assert(estWriteBuffer[icol]>=obsmin_opt[0]);</div>
-<div class="line"><a name="l00550"></a><span class="lineno">  550</span>           <span class="keywordflow">if</span>(obsmax_opt.size()){</div>
-<div class="line"><a name="l00551"></a><span class="lineno">  551</span>         <span class="keywordflow">if</span>(estWriteBuffer[icol]>obsmax_opt[0]){</div>
-<div class="line"><a name="l00552"></a><span class="lineno">  552</span>           cout << <span class="stringliteral">"estWriteBuffer[icol], obsLineBuffer[icol], irow, icol: "</span> << estWriteBuffer[icol] << <span class="stringliteral">", "</span> << obsLineBuffer[icol] << <span class="stringliteral">", "</span> << irow << <span class="stringliteral">", "</span> << icol << endl;</div>
-<div class="line"><a name="l00553"></a><span class="lineno">  553</span>           assert(estWriteBuffer[icol]<=obsmax_opt[0]);</div>
-<div class="line"><a name="l00554"></a><span class="lineno">  554</span>         }</div>
-<div class="line"><a name="l00555"></a><span class="lineno">  555</span>           }</div>
-<div class="line"><a name="l00556"></a><span class="lineno">  556</span>         }</div>
-<div class="line"><a name="l00557"></a><span class="lineno">  557</span>       }</div>
-<div class="line"><a name="l00558"></a><span class="lineno">  558</span>       <span class="keywordflow">else</span>{<span class="comment">//model is valid: calculate estimate from model</span></div>
-<div class="line"><a name="l00559"></a><span class="lineno">  559</span>         <span class="keywordtype">double</span> errMod=uncertModel_opt[0]*stdDev;</div>
-<div class="line"><a name="l00560"></a><span class="lineno">  560</span>         errMod*=regTime_opt[0];</div>
-<div class="line"><a name="l00561"></a><span class="lineno">  561</span>         <span class="comment">// double certNorm=(errMod*errMod+errObs*errObs);</span></div>
-<div class="line"><a name="l00562"></a><span class="lineno">  562</span>         <span class="comment">// double certMod=errObs*errObs/certNorm;</span></div>
-<div class="line"><a name="l00563"></a><span class="lineno">  563</span>         <span class="comment">// double certObs=errMod*errMod/certNorm;</span></div>
-<div class="line"><a name="l00564"></a><span class="lineno">  564</span>         <span class="comment">// double regTime=0;</span></div>
-<div class="line"><a name="l00565"></a><span class="lineno">  565</span>         <span class="comment">// double regSensor=(c0obs+c1obs*modValue)*certMod;</span></div>
-<div class="line"><a name="l00566"></a><span class="lineno">  566</span>         <span class="comment">// estWriteBuffer[icol]=regTime+regSensor;</span></div>
-<div class="line"><a name="l00567"></a><span class="lineno">  567</span>         estWriteBuffer[icol]=modValue;</div>
-<div class="line"><a name="l00568"></a><span class="lineno">  568</span>         <span class="keywordtype">double</span> totalUncertainty=errMod;</div>
-<div class="line"><a name="l00569"></a><span class="lineno">  569</span>         <span class="comment">// if(errMod<eps_opt[0])</span></div>
-<div class="line"><a name="l00570"></a><span class="lineno">  570</span>         <span class="comment">//   totalUncertainty=errObs;</span></div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span>         <span class="comment">// else if(errObs<eps_opt[0])</span></div>
-<div class="line"><a name="l00572"></a><span class="lineno">  572</span>         <span class="comment">//   totalUncertainty=errMod;</span></div>
-<div class="line"><a name="l00573"></a><span class="lineno">  573</span>         <span class="comment">// else{</span></div>
-<div class="line"><a name="l00574"></a><span class="lineno">  574</span>         <span class="comment">//   totalUncertainty=1.0/errMod/errMod+1/errObs/errObs;</span></div>
-<div class="line"><a name="l00575"></a><span class="lineno">  575</span>         <span class="comment">//   totalUncertainty=sqrt(1.0/totalUncertainty);</span></div>
-<div class="line"><a name="l00576"></a><span class="lineno">  576</span>         <span class="comment">// }</span></div>
-<div class="line"><a name="l00577"></a><span class="lineno">  577</span>         uncertWriteBuffer[icol]=totalUncertainty;<span class="comment">//in case observation is not valid</span></div>
-<div class="line"><a name="l00578"></a><span class="lineno">  578</span>         gainWriteBuffer[icol]=0;</div>
-<div class="line"><a name="l00579"></a><span class="lineno">  579</span>         <span class="comment">//test</span></div>
-<div class="line"><a name="l00580"></a><span class="lineno">  580</span>         <span class="keywordflow">if</span>(!imgReaderObs.isNoData(estWriteBuffer[icol])){</div>
-<div class="line"><a name="l00581"></a><span class="lineno">  581</span>           <span class="keywordflow">if</span>(obsmin_opt.size())</div>
-<div class="line"><a name="l00582"></a><span class="lineno">  582</span>         assert(estWriteBuffer[icol]>=obsmin_opt[0]);</div>
-<div class="line"><a name="l00583"></a><span class="lineno">  583</span>           <span class="keywordflow">if</span>(obsmax_opt.size()){</div>
-<div class="line"><a name="l00584"></a><span class="lineno">  584</span>         <span class="keywordflow">if</span>(estWriteBuffer[icol]>obsmax_opt[0]){</div>
-<div class="line"><a name="l00585"></a><span class="lineno">  585</span>           cout << <span class="stringliteral">"estWriteBuffer[icol], irow, icol: "</span> << estWriteBuffer[icol] << <span class="stringliteral">", "</span> << irow << <span class="stringliteral">", "</span> << icol << endl;</div>
-<div class="line"><a name="l00586"></a><span class="lineno">  586</span>           assert(estWriteBuffer[icol]<=obsmax_opt[0]);</div>
-<div class="line"><a name="l00587"></a><span class="lineno">  587</span>         }</div>
-<div class="line"><a name="l00588"></a><span class="lineno">  588</span>           }</div>
-<div class="line"><a name="l00589"></a><span class="lineno">  589</span>         }</div>
-<div class="line"><a name="l00590"></a><span class="lineno">  590</span>       }</div>
-<div class="line"><a name="l00591"></a><span class="lineno">  591</span>       <span class="comment">// uncertWriteBuffer[icol]+=uncertReadBuffer[icol];</span></div>
-<div class="line"><a name="l00592"></a><span class="lineno">  592</span>       <span class="comment">//measurement update</span></div>
-<div class="line"><a name="l00593"></a><span class="lineno">  593</span>       <span class="keywordflow">if</span>(!imgReaderObs.isNoData(obsLineBuffer[icol])){</div>
-<div class="line"><a name="l00594"></a><span class="lineno">  594</span>         <span class="keywordtype">double</span> kalmanGain=1;</div>
-<div class="line"><a name="l00595"></a><span class="lineno">  595</span>         <span class="keywordtype">double</span> uncertObs=uncertObs_opt[0];</div>
-<div class="line"><a name="l00596"></a><span class="lineno">  596</span>         <span class="keywordflow">if</span>(uncertObsLineBuffer.size()>icol)</div>
-<div class="line"><a name="l00597"></a><span class="lineno">  597</span>           uncertObs=uncertObsLineBuffer[icol];</div>
-<div class="line"><a name="l00598"></a><span class="lineno">  598</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(weight_opt.size()||deltaObs_opt.size()){</div>
-<div class="line"><a name="l00599"></a><span class="lineno">  599</span>           vector<double> obsWindowBuffer;<span class="comment">//buffer for observation to calculate average corresponding to model pixel</span></div>
-<div class="line"><a name="l00600"></a><span class="lineno">  600</span>           <span class="keywordtype">int</span> minCol=(icol>down_opt[0]/2) ? icol-down_opt[0]/2 : 0;</div>
-<div class="line"><a name="l00601"></a><span class="lineno">  601</span>           <span class="keywordtype">int</span> maxCol=(icol+down_opt[0]/2<imgReaderObs.nrOfCol()) ? icol+down_opt[0]/2 : imgReaderObs.nrOfCol()-1;</div>
-<div class="line"><a name="l00602"></a><span class="lineno">  602</span>           <span class="keywordtype">int</span> minRow=(irow>down_opt[0]/2) ? irow-down_opt[0]/2 : 0;</div>
-<div class="line"><a name="l00603"></a><span class="lineno">  603</span>           <span class="keywordtype">int</span> maxRow=(irow+down_opt[0]/2<imgReaderObs.nrOfRow()) ? irow+down_opt[0]/2 : imgReaderObs.nrOfRow()-1;</div>
-<div class="line"><a name="l00604"></a><span class="lineno">  604</span>         </div>
-<div class="line"><a name="l00605"></a><span class="lineno">  605</span>           imgReaderObs.readDataBlock(obsWindowBuffer,GDT_Float64,minCol,maxCol,minRow,maxRow,0);</div>
-<div class="line"><a name="l00606"></a><span class="lineno">  606</span>           <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> statobs;</div>
-<div class="line"><a name="l00607"></a><span class="lineno">  607</span>           statobs.setNoDataValues(obsnodata_opt);</div>
-<div class="line"><a name="l00608"></a><span class="lineno">  608</span>           <span class="keywordtype">double</span> obsMeanValue=(statobs.mean(obsWindowBuffer)-c0obs)/c1obs;</div>
-<div class="line"><a name="l00609"></a><span class="lineno">  609</span>           <span class="keywordtype">double</span> difference=obsMeanValue-modValue;</div>
-<div class="line"><a name="l00610"></a><span class="lineno">  610</span>           <span class="keywordflow">if</span>(modValue){</div>
-<div class="line"><a name="l00611"></a><span class="lineno">  611</span>         <span class="keywordtype">double</span> relativeDifference=difference/modValue;</div>
-<div class="line"><a name="l00612"></a><span class="lineno">  612</span>         <span class="keywordflow">if</span>(deltaObs_opt.size()){</div>
-<div class="line"><a name="l00613"></a><span class="lineno">  613</span>           assert(deltaObs_opt.size()>1);</div>
-<div class="line"><a name="l00614"></a><span class="lineno">  614</span>           <span class="keywordflow">if</span>(100*relativeDifference<deltaObs_opt[0])<span class="comment">//lower bound</span></div>
-<div class="line"><a name="l00615"></a><span class="lineno">  615</span>             kalmanGain=0;</div>
-<div class="line"><a name="l00616"></a><span class="lineno">  616</span>           <span class="keywordflow">else</span> <span class="keywordflow">if</span>(100*relativeDifference>deltaObs_opt[1])<span class="comment">//upper bound</span></div>
-<div class="line"><a name="l00617"></a><span class="lineno">  617</span>             kalmanGain=0;</div>
-<div class="line"><a name="l00618"></a><span class="lineno">  618</span>         }</div>
-<div class="line"><a name="l00619"></a><span class="lineno">  619</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(weight_opt.size()){</div>
-<div class="line"><a name="l00620"></a><span class="lineno">  620</span>           assert(weight_opt.size()>1);</div>
-<div class="line"><a name="l00621"></a><span class="lineno">  621</span>           <span class="keywordflow">if</span>(obsMeanValue<modValue)</div>
-<div class="line"><a name="l00622"></a><span class="lineno">  622</span>             uncertObs=-weight_opt[0]*relativeDifference;</div>
-<div class="line"><a name="l00623"></a><span class="lineno">  623</span>           <span class="keywordflow">else</span> <span class="keywordflow">if</span>(obsMeanValue>modValue)</div>
-<div class="line"><a name="l00624"></a><span class="lineno">  624</span>             uncertObs=weight_opt[1]*relativeDifference;</div>
-<div class="line"><a name="l00625"></a><span class="lineno">  625</span>         }</div>
-<div class="line"><a name="l00626"></a><span class="lineno">  626</span>           }</div>
-<div class="line"><a name="l00627"></a><span class="lineno">  627</span>           <span class="keywordflow">if</span>(uncertObs<=0)</div>
-<div class="line"><a name="l00628"></a><span class="lineno">  628</span>         uncertObs=0;</div>
-<div class="line"><a name="l00629"></a><span class="lineno">  629</span>           <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00630"></a><span class="lineno">  630</span>         cout << <span class="stringliteral">"obsMeanValue:"</span> << obsMeanValue << <span class="stringliteral">", modValue: "</span> << modValue << endl;</div>
-<div class="line"><a name="l00631"></a><span class="lineno">  631</span>         }</div>
-<div class="line"><a name="l00632"></a><span class="lineno">  632</span>         <span class="keywordflow">if</span>(kalmanGain>0){</div>
-<div class="line"><a name="l00633"></a><span class="lineno">  633</span>           <span class="keywordflow">if</span>((uncertWriteBuffer[icol]+uncertObs)>eps_opt[0])</div>
-<div class="line"><a name="l00634"></a><span class="lineno">  634</span>         kalmanGain=uncertWriteBuffer[icol]/(uncertWriteBuffer[icol]+uncertObs);</div>
-<div class="line"><a name="l00635"></a><span class="lineno">  635</span>         }</div>
-<div class="line"><a name="l00636"></a><span class="lineno">  636</span>         assert(kalmanGain<=1);</div>
-<div class="line"><a name="l00637"></a><span class="lineno">  637</span>         estWriteBuffer[icol]+=kalmanGain*(obsLineBuffer[icol]-estWriteBuffer[icol]);</div>
-<div class="line"><a name="l00638"></a><span class="lineno">  638</span>         <span class="keywordflow">if</span>(obsmin_opt.size()){</div>
-<div class="line"><a name="l00639"></a><span class="lineno">  639</span>           <span class="keywordflow">if</span>(estWriteBuffer[icol]<obsmin_opt[0])</div>
-<div class="line"><a name="l00640"></a><span class="lineno">  640</span>         estWriteBuffer[icol]=obsnodata_opt[0];</div>
-<div class="line"><a name="l00641"></a><span class="lineno">  641</span>         }</div>
-<div class="line"><a name="l00642"></a><span class="lineno">  642</span>         <span class="keywordflow">if</span>(obsmax_opt.size()){</div>
-<div class="line"><a name="l00643"></a><span class="lineno">  643</span>           <span class="keywordflow">if</span>(estWriteBuffer[icol]>obsmax_opt[0])</div>
-<div class="line"><a name="l00644"></a><span class="lineno">  644</span>         estWriteBuffer[icol]=obsnodata_opt[0];</div>
-<div class="line"><a name="l00645"></a><span class="lineno">  645</span>         }</div>
-<div class="line"><a name="l00646"></a><span class="lineno">  646</span>         uncertWriteBuffer[icol]*=(1-kalmanGain);</div>
-<div class="line"><a name="l00647"></a><span class="lineno">  647</span>         <span class="comment">//test</span></div>
-<div class="line"><a name="l00648"></a><span class="lineno">  648</span>         gainWriteBuffer[icol]=kalmanGain;</div>
-<div class="line"><a name="l00649"></a><span class="lineno">  649</span>         <span class="comment">//test</span></div>
-<div class="line"><a name="l00650"></a><span class="lineno">  650</span>         <span class="keywordflow">if</span>(!imgReaderObs.isNoData(estWriteBuffer[icol])){</div>
-<div class="line"><a name="l00651"></a><span class="lineno">  651</span>           <span class="keywordflow">if</span>(obsmin_opt.size())</div>
-<div class="line"><a name="l00652"></a><span class="lineno">  652</span>         assert(estWriteBuffer[icol]>=obsmin_opt[0]);</div>
-<div class="line"><a name="l00653"></a><span class="lineno">  653</span>           <span class="keywordflow">if</span>(obsmax_opt.size()){</div>
-<div class="line"><a name="l00654"></a><span class="lineno">  654</span>         <span class="keywordflow">if</span>(estWriteBuffer[icol]>obsmax_opt[0]){</div>
-<div class="line"><a name="l00655"></a><span class="lineno">  655</span>           cout << <span class="stringliteral">"estWriteBuffer[icol], irow, icol: "</span> << estWriteBuffer[icol] << <span class="stringliteral">", "</span> << irow << <span class="stringliteral">", "</span> << icol << endl;</div>
-<div class="line"><a name="l00656"></a><span class="lineno">  656</span>           assert(estWriteBuffer[icol]<=obsmax_opt[0]);</div>
-<div class="line"><a name="l00657"></a><span class="lineno">  657</span>         }</div>
-<div class="line"><a name="l00658"></a><span class="lineno">  658</span>           }</div>
-<div class="line"><a name="l00659"></a><span class="lineno">  659</span>         }</div>
-<div class="line"><a name="l00660"></a><span class="lineno">  660</span>       }</div>
-<div class="line"><a name="l00661"></a><span class="lineno">  661</span>       <span class="comment">//test</span></div>
-<div class="line"><a name="l00662"></a><span class="lineno">  662</span>       <span class="keywordflow">if</span>(!imgReaderObs.isNoData(estWriteBuffer[icol])){</div>
-<div class="line"><a name="l00663"></a><span class="lineno">  663</span>         <span class="keywordflow">if</span>(obsmin_opt.size())</div>
-<div class="line"><a name="l00664"></a><span class="lineno">  664</span>           assert(estWriteBuffer[icol]>=obsmin_opt[0]);</div>
-<div class="line"><a name="l00665"></a><span class="lineno">  665</span>         <span class="keywordflow">if</span>(obsmax_opt.size()){</div>
-<div class="line"><a name="l00666"></a><span class="lineno">  666</span>           <span class="keywordflow">if</span>(estWriteBuffer[icol]>obsmax_opt[0]){</div>
-<div class="line"><a name="l00667"></a><span class="lineno">  667</span>         cout << <span class="stringliteral">"estWriteBuffer[icol], irow, icol: "</span> << estWriteBuffer[icol] << <span class="stringliteral">", "</span> << irow << <span class="stringliteral">", "</span> << icol << endl;</div>
-<div class="line"><a name="l00668"></a><span class="lineno">  668</span>           assert(estWriteBuffer[icol]<=obsmax_opt[0]);</div>
-<div class="line"><a name="l00669"></a><span class="lineno">  669</span>           }</div>
-<div class="line"><a name="l00670"></a><span class="lineno">  670</span>         }</div>
-<div class="line"><a name="l00671"></a><span class="lineno">  671</span>       }</div>
-<div class="line"><a name="l00672"></a><span class="lineno">  672</span>     }</div>
-<div class="line"><a name="l00673"></a><span class="lineno">  673</span>     imgWriterEst.writeData(estWriteBuffer,GDT_Float64,irow,0);</div>
-<div class="line"><a name="l00674"></a><span class="lineno">  674</span>     imgWriterEst.writeData(uncertWriteBuffer,GDT_Float64,irow,1);</div>
-<div class="line"><a name="l00675"></a><span class="lineno">  675</span>     <span class="keywordflow">if</span>(gain_opt.size())</div>
-<div class="line"><a name="l00676"></a><span class="lineno">  676</span>       imgWriterGain.writeData(gainWriteBuffer,GDT_Float64,irow,0);</div>
-<div class="line"><a name="l00677"></a><span class="lineno">  677</span>       }</div>
-<div class="line"><a name="l00678"></a><span class="lineno">  678</span>       imgReaderObs.close();</div>
-<div class="line"><a name="l00679"></a><span class="lineno">  679</span>       ++obsindex;</div>
-<div class="line"><a name="l00680"></a><span class="lineno">  680</span>     }</div>
-<div class="line"><a name="l00681"></a><span class="lineno">  681</span>     imgReaderModel1.close();</div>
-<div class="line"><a name="l00682"></a><span class="lineno">  682</span>     imgWriterEst.close();</div>
-<div class="line"><a name="l00683"></a><span class="lineno">  683</span> </div>
-<div class="line"><a name="l00684"></a><span class="lineno">  684</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> modindex=1;modindex<model_opt.size();++modindex){</div>
-<div class="line"><a name="l00685"></a><span class="lineno">  685</span>       <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00686"></a><span class="lineno">  686</span>     cout << <span class="stringliteral">"processing time "</span> << tmodel_opt[modindex] << endl;</div>
-<div class="line"><a name="l00687"></a><span class="lineno">  687</span>     <span class="keywordflow">if</span>(obsindex<relobsindex.size())</div>
-<div class="line"><a name="l00688"></a><span class="lineno">  688</span>       cout << <span class="stringliteral">"next observation "</span> << tmodel_opt[relobsindex[obsindex]] << endl;</div>
-<div class="line"><a name="l00689"></a><span class="lineno">  689</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00690"></a><span class="lineno">  690</span>       cout << <span class="stringliteral">"There is no next observation"</span> << endl;</div>
-<div class="line"><a name="l00691"></a><span class="lineno">  691</span>       }</div>
-<div class="line"><a name="l00692"></a><span class="lineno">  692</span>       <span class="keywordtype">string</span> output;</div>
-<div class="line"><a name="l00693"></a><span class="lineno">  693</span>       <span class="keywordflow">if</span>(outputfw_opt.size()==model_opt.size())</div>
-<div class="line"><a name="l00694"></a><span class="lineno">  694</span>     output=outputfw_opt[modindex];</div>
-<div class="line"><a name="l00695"></a><span class="lineno">  695</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00696"></a><span class="lineno">  696</span>     ostringstream outputstream;</div>
-<div class="line"><a name="l00697"></a><span class="lineno">  697</span>     outputstream << outputfw_opt[0] << <span class="stringliteral">"_"</span>;</div>
-<div class="line"><a name="l00698"></a><span class="lineno">  698</span>     outputstream << setfill(<span class="charliteral">'0'</span>) << setw(ndigit) << tmodel_opt[modindex];</div>
-<div class="line"><a name="l00699"></a><span class="lineno">  699</span>     outputstream << <span class="stringliteral">".tif"</span>;</div>
-<div class="line"><a name="l00700"></a><span class="lineno">  700</span>     <span class="comment">// outputstream << outputfw_opt[0] << "_" << tmodel_opt[modindex] << ".tif";</span></div>
-<div class="line"><a name="l00701"></a><span class="lineno">  701</span>     output=outputstream.str();</div>
-<div class="line"><a name="l00702"></a><span class="lineno">  702</span>       }</div>
-<div class="line"><a name="l00703"></a><span class="lineno">  703</span>     </div>
-<div class="line"><a name="l00704"></a><span class="lineno">  704</span>       <span class="comment">//two band output band0=estimation, band1=uncertainty</span></div>
-<div class="line"><a name="l00705"></a><span class="lineno">  705</span>       imgWriterEst.open(output,ncol,nrow,2,GDT_Float64,imageType,option_opt);</div>
-<div class="line"><a name="l00706"></a><span class="lineno">  706</span>       imgWriterEst.setProjectionProj4(projection_opt[0]);</div>
-<div class="line"><a name="l00707"></a><span class="lineno">  707</span>       imgWriterEst.setGeoTransform(geotransform);</div>
-<div class="line"><a name="l00708"></a><span class="lineno">  708</span>       imgWriterEst.GDALSetNoDataValue(obsnodata_opt[0]);</div>
-<div class="line"><a name="l00709"></a><span class="lineno">  709</span> </div>
-<div class="line"><a name="l00710"></a><span class="lineno">  710</span>       <span class="comment">//calculate regression between two subsequence model inputs</span></div>
-<div class="line"><a name="l00711"></a><span class="lineno">  711</span>       imgReaderModel1.open(model_opt[modindex-1]);</div>
-<div class="line"><a name="l00712"></a><span class="lineno">  712</span>       imgReaderModel1.setNoData(modnodata_opt);</div>
-<div class="line"><a name="l00713"></a><span class="lineno">  713</span>       <span class="keywordflow">if</span>(modoffset_opt.size())</div>
-<div class="line"><a name="l00714"></a><span class="lineno">  714</span>     imgReaderModel1.setOffset(modoffset_opt[0]);</div>
-<div class="line"><a name="l00715"></a><span class="lineno">  715</span>       <span class="keywordflow">if</span>(modscale_opt.size())</div>
-<div class="line"><a name="l00716"></a><span class="lineno">  716</span>     imgReaderModel1.setScale(modscale_opt[0]);</div>
-<div class="line"><a name="l00717"></a><span class="lineno">  717</span>       imgReaderModel2.open(model_opt[modindex]);</div>
-<div class="line"><a name="l00718"></a><span class="lineno">  718</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> inodata=0;inodata<modnodata_opt.size();++inodata)</div>
-<div class="line"><a name="l00719"></a><span class="lineno">  719</span>     imgReaderModel2.pushNoDataValue(modnodata_opt[inodata]);</div>
-<div class="line"><a name="l00720"></a><span class="lineno">  720</span>       <span class="comment">// imgReaderModel2.setNoData(modnodata_opt);</span></div>
-<div class="line"><a name="l00721"></a><span class="lineno">  721</span>       <span class="keywordflow">if</span>(modoffset_opt.size())</div>
-<div class="line"><a name="l00722"></a><span class="lineno">  722</span>     imgReaderModel2.setOffset(modoffset_opt[0]);</div>
-<div class="line"><a name="l00723"></a><span class="lineno">  723</span>       <span class="keywordflow">if</span>(modscale_opt.size())</div>
-<div class="line"><a name="l00724"></a><span class="lineno">  724</span>     imgReaderModel2.setScale(modscale_opt[0]);</div>
-<div class="line"><a name="l00725"></a><span class="lineno">  725</span>       <span class="comment">//calculate regression</span></div>
-<div class="line"><a name="l00726"></a><span class="lineno">  726</span>       <span class="comment">//we could re-use the points from second image from last run, but</span></div>
-<div class="line"><a name="l00727"></a><span class="lineno">  727</span>       <span class="comment">//to keep it general, we must redo it (overlap might have changed)</span></div>
-<div class="line"><a name="l00728"></a><span class="lineno">  728</span>     </div>
-<div class="line"><a name="l00729"></a><span class="lineno">  729</span>       pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00730"></a><span class="lineno">  730</span> </div>
-<div class="line"><a name="l00731"></a><span class="lineno">  731</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00732"></a><span class="lineno">  732</span>     cout << <span class="stringliteral">"Calculating regression for "</span> << imgReaderModel1.getFileName() << <span class="stringliteral">" "</span> << imgReaderModel2.getFileName() << endl;</div>
-<div class="line"><a name="l00733"></a><span class="lineno">  733</span>       </div>
-<div class="line"><a name="l00734"></a><span class="lineno">  734</span>       <span class="keywordtype">double</span> errMod=imgreg.getRMSE(imgReaderModel1,imgReaderModel2,c0modGlobal,c1modGlobal,0,0);</div>
-<div class="line"><a name="l00735"></a><span class="lineno">  735</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00736"></a><span class="lineno">  736</span>     cout << <span class="stringliteral">"c0modGlobal, c1modGlobal, errMod: "</span> << c0modGlobal << <span class="stringliteral">", "</span> << c1modGlobal << <span class="stringliteral">", "</span> << errMod << endl;</div>
-<div class="line"><a name="l00737"></a><span class="lineno">  737</span>       <span class="keywordflow">if</span>(c0modGlobal>c0modGlobalMax_opt[0]||c0modGlobal<c0modGlobalMin_opt[0]||c1modGlobal>c1modGlobalMax_opt[0]||c1modGlobal<c1modGlobalMin_opt[0]||errMod!=errMod){</div>
-<div class="line"><a name="l00738"></a><span class="lineno">  738</span>     c0modGlobal=c0modGlobal_prev;</div>
-<div class="line"><a name="l00739"></a><span class="lineno">  739</span>     c1modGlobal=c1modGlobal_prev;</div>
-<div class="line"><a name="l00740"></a><span class="lineno">  740</span>     errMod=uncertModel_opt[0]*stdDev;</div>
-<div class="line"><a name="l00741"></a><span class="lineno">  741</span>       }</div>
-<div class="line"><a name="l00742"></a><span class="lineno">  742</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00743"></a><span class="lineno">  743</span>     c0modGlobal_prev=c0modGlobal;</div>
-<div class="line"><a name="l00744"></a><span class="lineno">  744</span>     c1modGlobal_prev=c1modGlobal;</div>
-<div class="line"><a name="l00745"></a><span class="lineno">  745</span>     errMod*=regTime_opt[0];</div>
-<div class="line"><a name="l00746"></a><span class="lineno">  746</span>       }</div>
-<div class="line"><a name="l00747"></a><span class="lineno">  747</span> </div>
-<div class="line"><a name="l00748"></a><span class="lineno">  748</span>       <span class="comment">// double errMod=imgreg.getRMSE(imgReaderModel1,imgReaderModel2,c0modGlobal,c1modGlobal,verbose_opt[0]);</span></div>
-<div class="line"><a name="l00749"></a><span class="lineno">  749</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00750"></a><span class="lineno">  750</span>     cout << <span class="stringliteral">"c0modGlobal, c1modGlobal, errMod: "</span> << c0modGlobal << <span class="stringliteral">", "</span> << c1modGlobal << <span class="stringliteral">", "</span> << errMod << endl;</div>
-<div class="line"><a name="l00751"></a><span class="lineno">  751</span> </div>
-<div class="line"><a name="l00752"></a><span class="lineno">  752</span>       <span class="keywordtype">bool</span> update=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00753"></a><span class="lineno">  753</span>       <span class="keywordflow">if</span>(obsindex<relobsindex.size()){</div>
-<div class="line"><a name="l00754"></a><span class="lineno">  754</span>     update=(relobsindex[obsindex]==modindex);</div>
-<div class="line"><a name="l00755"></a><span class="lineno">  755</span>       }</div>
-<div class="line"><a name="l00756"></a><span class="lineno">  756</span>       <span class="keywordflow">if</span>(update){</div>
-<div class="line"><a name="l00757"></a><span class="lineno">  757</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00758"></a><span class="lineno">  758</span>       cout << <span class="stringliteral">"***update "</span> << relobsindex[obsindex] << <span class="stringliteral">" = "</span> << modindex << <span class="stringliteral">" "</span> << observation_opt[obsindex] << <span class="stringliteral">" ***"</span> << endl;</div>
-<div class="line"><a name="l00759"></a><span class="lineno">  759</span> </div>
-<div class="line"><a name="l00760"></a><span class="lineno">  760</span>     imgReaderObs.open(observation_opt[obsindex]);</div>
-<div class="line"><a name="l00761"></a><span class="lineno">  761</span>     imgReaderObs.getGeoTransform(geotransform);</div>
-<div class="line"><a name="l00762"></a><span class="lineno">  762</span>     imgReaderObs.setNoData(obsnodata_opt);</div>
-<div class="line"><a name="l00763"></a><span class="lineno">  763</span>     <span class="keywordflow">if</span>(obsoffset_opt.size())</div>
-<div class="line"><a name="l00764"></a><span class="lineno">  764</span>       imgReaderObs.setOffset(obsoffset_opt[0]);</div>
-<div class="line"><a name="l00765"></a><span class="lineno">  765</span>     <span class="keywordflow">if</span>(obsscale_opt.size())</div>
-<div class="line"><a name="l00766"></a><span class="lineno">  766</span>       imgReaderObs.setScale(obsscale_opt[0]);</div>
-<div class="line"><a name="l00767"></a><span class="lineno">  767</span>     <span class="comment">//calculate regression between model and observation</span></div>
-<div class="line"><a name="l00768"></a><span class="lineno">  768</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00769"></a><span class="lineno">  769</span>       cout << <span class="stringliteral">"Calculating regression for "</span> << imgReaderModel2.getFileName() << <span class="stringliteral">" "</span> << imgReaderObs.getFileName() << endl;</div>
-<div class="line"><a name="l00770"></a><span class="lineno">  770</span>     <span class="keywordflow">if</span>(regSensor_opt[0]>0){</div>
-<div class="line"><a name="l00771"></a><span class="lineno">  771</span>       errObs=regSensor_opt[0]*imgreg.getRMSE(imgReaderModel2,imgReaderObs,c0obs,c1obs,0,0,verbose_opt[0]);</div>
-<div class="line"><a name="l00772"></a><span class="lineno">  772</span>       <span class="keywordflow">if</span>(errObs<0||errObs!=errObs){</div>
-<div class="line"><a name="l00773"></a><span class="lineno">  773</span>         <span class="comment">// c0obs=0;</span></div>
-<div class="line"><a name="l00774"></a><span class="lineno">  774</span>         <span class="comment">// c1obs=1;</span></div>
-<div class="line"><a name="l00775"></a><span class="lineno">  775</span>         c0obs=c0obs_prev;</div>
-<div class="line"><a name="l00776"></a><span class="lineno">  776</span>         c1obs=c1obs_prev;</div>
-<div class="line"><a name="l00777"></a><span class="lineno">  777</span>       }</div>
-<div class="line"><a name="l00778"></a><span class="lineno">  778</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00779"></a><span class="lineno">  779</span>         c0obs_prev=c0obs;</div>
-<div class="line"><a name="l00780"></a><span class="lineno">  780</span>         c1obs_prev=c1obs;</div>
-<div class="line"><a name="l00781"></a><span class="lineno">  781</span>       }</div>
-<div class="line"><a name="l00782"></a><span class="lineno">  782</span>     }</div>
-<div class="line"><a name="l00783"></a><span class="lineno">  783</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00784"></a><span class="lineno">  784</span>       c0obs=0;</div>
-<div class="line"><a name="l00785"></a><span class="lineno">  785</span>       c1obs=1;</div>
-<div class="line"><a name="l00786"></a><span class="lineno">  786</span>       errObs=0;</div>
-<div class="line"><a name="l00787"></a><span class="lineno">  787</span>     }</div>
-<div class="line"><a name="l00788"></a><span class="lineno">  788</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00789"></a><span class="lineno">  789</span>       cout << <span class="stringliteral">"c0obs, c1obs, errObs: "</span> << c0obs << <span class="stringliteral">", "</span> << c1obs << <span class="stringliteral">", "</span> << errObs << endl;</div>
-<div class="line"><a name="l00790"></a><span class="lineno">  790</span>       }</div>
-<div class="line"><a name="l00791"></a><span class="lineno">  791</span>       <span class="comment">//prediction (also to fill cloudy pixels in update mode)</span></div>
-<div class="line"><a name="l00792"></a><span class="lineno">  792</span>       <span class="keywordtype">string</span> input;</div>
-<div class="line"><a name="l00793"></a><span class="lineno">  793</span>       <span class="keywordflow">if</span>(outputfw_opt.size()==model_opt.size())</div>
-<div class="line"><a name="l00794"></a><span class="lineno">  794</span>     input=outputfw_opt[modindex-1];</div>
-<div class="line"><a name="l00795"></a><span class="lineno">  795</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00796"></a><span class="lineno">  796</span>     ostringstream outputstream;</div>
-<div class="line"><a name="l00797"></a><span class="lineno">  797</span>     outputstream << outputfw_opt[0] << <span class="stringliteral">"_"</span>;</div>
-<div class="line"><a name="l00798"></a><span class="lineno">  798</span>     outputstream << setfill(<span class="charliteral">'0'</span>) << setw(ndigit) << tmodel_opt[modindex-1];</div>
-<div class="line"><a name="l00799"></a><span class="lineno">  799</span>     outputstream << <span class="stringliteral">".tif"</span>;</div>
-<div class="line"><a name="l00800"></a><span class="lineno">  800</span>     <span class="comment">// outputstream << outputfw_opt[0] << "_" << tmodel_opt[modindex-1] << ".tif";</span></div>
-<div class="line"><a name="l00801"></a><span class="lineno">  801</span>     input=outputstream.str();</div>
-<div class="line"><a name="l00802"></a><span class="lineno">  802</span>       }</div>
-<div class="line"><a name="l00803"></a><span class="lineno">  803</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00804"></a><span class="lineno">  804</span>     cout << <span class="stringliteral">"opening "</span> << input << endl;</div>
-<div class="line"><a name="l00805"></a><span class="lineno">  805</span>       <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> imgReaderEst(input);</div>
-<div class="line"><a name="l00806"></a><span class="lineno">  806</span>       imgReaderEst.setNoData(obsnodata_opt);</div>
-<div class="line"><a name="l00807"></a><span class="lineno">  807</span>       <span class="keywordflow">if</span>(obsoffset_opt.size())</div>
-<div class="line"><a name="l00808"></a><span class="lineno">  808</span>     imgReaderEst.setOffset(obsoffset_opt[0]);</div>
-<div class="line"><a name="l00809"></a><span class="lineno">  809</span>       <span class="keywordflow">if</span>(obsscale_opt.size())</div>
-<div class="line"><a name="l00810"></a><span class="lineno">  810</span>     imgReaderEst.setScale(obsscale_opt[0]);</div>
-<div class="line"><a name="l00811"></a><span class="lineno">  811</span>       </div>
-<div class="line"><a name="l00812"></a><span class="lineno">  812</span>       vector< vector<double> > obsLineVector(down_opt[0]);</div>
-<div class="line"><a name="l00813"></a><span class="lineno">  813</span>       vector<double> obsLineBuffer;</div>
-<div class="line"><a name="l00814"></a><span class="lineno">  814</span>       vector<double> obsWindowBuffer;<span class="comment">//buffer for observation to calculate average corresponding to model pixel</span></div>
-<div class="line"><a name="l00815"></a><span class="lineno">  815</span>       vector<double> model1LineBuffer;</div>
-<div class="line"><a name="l00816"></a><span class="lineno">  816</span>       vector<double> model2LineBuffer;</div>
-<div class="line"><a name="l00817"></a><span class="lineno">  817</span>       vector<double> model1buffer;<span class="comment">//buffer for model 1 to calculate time regression based on window</span></div>
-<div class="line"><a name="l00818"></a><span class="lineno">  818</span>       vector<double> model2buffer;<span class="comment">//buffer for model 2 to calculate time regression based on window</span></div>
-<div class="line"><a name="l00819"></a><span class="lineno">  819</span>       vector<double> uncertObsLineBuffer;</div>
-<div class="line"><a name="l00820"></a><span class="lineno">  820</span>       vector<double> estReadBuffer;</div>
-<div class="line"><a name="l00821"></a><span class="lineno">  821</span>       <span class="comment">// vector<double> estWindowBuffer;//buffer for estimate to calculate average corresponding to model pixel</span></div>
-<div class="line"><a name="l00822"></a><span class="lineno">  822</span>       vector<double> uncertReadBuffer;</div>
-<div class="line"><a name="l00823"></a><span class="lineno">  823</span>       vector<double> estWriteBuffer(ncol);</div>
-<div class="line"><a name="l00824"></a><span class="lineno">  824</span>       vector<double> uncertWriteBuffer(ncol);</div>
-<div class="line"><a name="l00825"></a><span class="lineno">  825</span>       vector<double> gainWriteBuffer(ncol);</div>
-<div class="line"><a name="l00826"></a><span class="lineno">  826</span>       <span class="comment">// vector<double> lineMask;</span></div>
-<div class="line"><a name="l00827"></a><span class="lineno">  827</span> </div>
-<div class="line"><a name="l00828"></a><span class="lineno">  828</span>       <span class="comment">//initialize obsLineVector if update</span></div>
-<div class="line"><a name="l00829"></a><span class="lineno">  829</span>       <span class="keywordflow">if</span>(update){</div>
-<div class="line"><a name="l00830"></a><span class="lineno">  830</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00831"></a><span class="lineno">  831</span>       cout << <span class="stringliteral">"initialize obsLineVector"</span> << endl;</div>
-<div class="line"><a name="l00832"></a><span class="lineno">  832</span>     assert(down_opt[0]%2);<span class="comment">//window size must be odd </span></div>
-<div class="line"><a name="l00833"></a><span class="lineno">  833</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iline=-down_opt[0]/2;iline<down_opt[0]/2+1;++iline){</div>
-<div class="line"><a name="l00834"></a><span class="lineno">  834</span>       <span class="keywordflow">if</span>(iline<0)<span class="comment">//replicate line 0</span></div>
-<div class="line"><a name="l00835"></a><span class="lineno">  835</span>         imgReaderObs.readData(obsLineVector[iline+down_opt[0]/2],GDT_Float64,0,0);</div>
-<div class="line"><a name="l00836"></a><span class="lineno">  836</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00837"></a><span class="lineno">  837</span>         imgReaderObs.readData(obsLineVector[iline+down_opt[0]/2],GDT_Float64,iline,0);</div>
-<div class="line"><a name="l00838"></a><span class="lineno">  838</span>     }</div>
-<div class="line"><a name="l00839"></a><span class="lineno">  839</span>       }</div>
-<div class="line"><a name="l00840"></a><span class="lineno">  840</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<imgWriterEst.nrOfRow();++irow){</div>
-<div class="line"><a name="l00841"></a><span class="lineno">  841</span>     <span class="comment">//do not read from imgReaderObs, because we read entire window for each pixel...</span></div>
-<div class="line"><a name="l00842"></a><span class="lineno">  842</span>     imgReaderEst.readData(estReadBuffer,GDT_Float64,irow,0);</div>
-<div class="line"><a name="l00843"></a><span class="lineno">  843</span>     imgReaderEst.readData(uncertReadBuffer,GDT_Float64,irow,1);</div>
-<div class="line"><a name="l00844"></a><span class="lineno">  844</span>     <span class="comment">//read model2 in case current estimate is nodata</span></div>
-<div class="line"><a name="l00845"></a><span class="lineno">  845</span>     imgReaderEst.image2geo(0,irow,geox,geoy);</div>
-<div class="line"><a name="l00846"></a><span class="lineno">  846</span>     imgReaderModel2.geo2image(geox,geoy,modCol,modRow);</div>
-<div class="line"><a name="l00847"></a><span class="lineno">  847</span>     assert(modRow>=0&&modRow<imgReaderModel2.nrOfRow());</div>
-<div class="line"><a name="l00848"></a><span class="lineno">  848</span>     imgReaderModel2.readData(model2LineBuffer,GDT_Float64,modRow,0);</div>
-<div class="line"><a name="l00849"></a><span class="lineno">  849</span> </div>
-<div class="line"><a name="l00850"></a><span class="lineno">  850</span>     imgReaderModel1.geo2image(geox,geoy,modCol,modRow);</div>
-<div class="line"><a name="l00851"></a><span class="lineno">  851</span>     assert(modRow>=0&&modRow<imgReaderModel1.nrOfRow());</div>
-<div class="line"><a name="l00852"></a><span class="lineno">  852</span>     imgReaderModel1.readData(model1LineBuffer,GDT_Float64,modRow,0);</div>
-<div class="line"><a name="l00853"></a><span class="lineno">  853</span> </div>
-<div class="line"><a name="l00854"></a><span class="lineno">  854</span>     <span class="keywordflow">if</span>(update){</div>
-<div class="line"><a name="l00855"></a><span class="lineno">  855</span>       <span class="keywordtype">int</span> maxRow=(irow+down_opt[0]/2<imgReaderEst.nrOfRow()) ? irow+down_opt[0]/2 : imgReaderEst.nrOfRow()-1;</div>
-<div class="line"><a name="l00856"></a><span class="lineno">  856</span>       obsLineVector.erase(obsLineVector.begin());</div>
-<div class="line"><a name="l00857"></a><span class="lineno">  857</span>       imgReaderObs.readData(obsLineBuffer,GDT_Float64,maxRow,0);</div>
-<div class="line"><a name="l00858"></a><span class="lineno">  858</span>       obsLineVector.push_back(obsLineBuffer);</div>
-<div class="line"><a name="l00859"></a><span class="lineno">  859</span>       obsLineBuffer=obsLineVector[down_opt[0]/2];</div>
-<div class="line"><a name="l00860"></a><span class="lineno">  860</span>       <span class="comment">// imgReaderObs.readData(obsLineBuffer,GDT_Float64,irow,0);</span></div>
-<div class="line"><a name="l00861"></a><span class="lineno">  861</span>       <span class="keywordflow">if</span>(imgReaderObs.nrOfBand()>1)</div>
-<div class="line"><a name="l00862"></a><span class="lineno">  862</span>         imgReaderObs.readData(uncertObsLineBuffer,GDT_Float64,irow,1);</div>
-<div class="line"><a name="l00863"></a><span class="lineno">  863</span>     }</div>
-<div class="line"><a name="l00864"></a><span class="lineno">  864</span>     <span class="comment">// double oldRowMask=-1;//keep track of row mask to optimize number of line readings</span></div>
-<div class="line"><a name="l00865"></a><span class="lineno">  865</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<imgWriterEst.nrOfCol();++icol){</div>
-<div class="line"><a name="l00866"></a><span class="lineno">  866</span>       imgReaderEst.image2geo(icol,irow,geox,geoy);</div>
-<div class="line"><a name="l00867"></a><span class="lineno">  867</span>       <span class="keywordtype">int</span> minCol=(icol>down_opt[0]/2) ? icol-down_opt[0]/2 : 0;</div>
-<div class="line"><a name="l00868"></a><span class="lineno">  868</span>       <span class="keywordtype">int</span> maxCol=(icol+down_opt[0]/2<imgReaderEst.nrOfCol()) ? icol+down_opt[0]/2 : imgReaderEst.nrOfCol()-1;</div>
-<div class="line"><a name="l00869"></a><span class="lineno">  869</span>       <span class="keywordtype">int</span> minRow=(irow>down_opt[0]/2) ? irow-down_opt[0]/2 : 0;</div>
-<div class="line"><a name="l00870"></a><span class="lineno">  870</span>       <span class="keywordtype">int</span> maxRow=(irow+down_opt[0]/2<imgReaderEst.nrOfRow()) ? irow+down_opt[0]/2 : imgReaderEst.nrOfRow()-1;</div>
-<div class="line"><a name="l00871"></a><span class="lineno">  871</span>       <span class="keywordflow">if</span>(update){</div>
-<div class="line"><a name="l00872"></a><span class="lineno">  872</span>         obsWindowBuffer.clear();</div>
-<div class="line"><a name="l00873"></a><span class="lineno">  873</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iline=0;iline<obsLineVector.size();++iline){</div>
-<div class="line"><a name="l00874"></a><span class="lineno">  874</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=minCol;isample<=maxCol;++isample){</div>
-<div class="line"><a name="l00875"></a><span class="lineno">  875</span>         assert(isample<obsLineVector[iline].size());</div>
-<div class="line"><a name="l00876"></a><span class="lineno">  876</span>         obsWindowBuffer.push_back(obsLineVector[iline][isample]);</div>
-<div class="line"><a name="l00877"></a><span class="lineno">  877</span>           }</div>
-<div class="line"><a name="l00878"></a><span class="lineno">  878</span>         }</div>
-<div class="line"><a name="l00879"></a><span class="lineno">  879</span>         <span class="comment">// imgReaderObs.readDataBlock(obsWindowBuffer,GDT_Float64,minCol,maxCol,minRow,maxRow,0);</span></div>
-<div class="line"><a name="l00880"></a><span class="lineno">  880</span>       }</div>
-<div class="line"><a name="l00881"></a><span class="lineno">  881</span>       <span class="keywordtype">double</span> estValue=estReadBuffer[icol];</div>
-<div class="line"><a name="l00882"></a><span class="lineno">  882</span>       <span class="keywordtype">double</span> estMeanValue=0;<span class="comment">//stat.mean(estWindowBuffer);</span></div>
-<div class="line"><a name="l00883"></a><span class="lineno">  883</span>       <span class="keywordtype">double</span> nvalid=0;</div>
-<div class="line"><a name="l00884"></a><span class="lineno">  884</span>       <span class="comment">//time update</span></div>
-<div class="line"><a name="l00885"></a><span class="lineno">  885</span>       imgReaderModel2.geo2image(geox,geoy,modCol,modRow);</div>
-<div class="line"><a name="l00886"></a><span class="lineno">  886</span>       assert(modRow>=0&&modRow<imgReaderModel2.nrOfRow());</div>
-<div class="line"><a name="l00887"></a><span class="lineno">  887</span>       <span class="keywordtype">double</span> modValue=model2LineBuffer[modCol];</div>
-<div class="line"><a name="l00888"></a><span class="lineno">  888</span>       <span class="keywordtype">bool</span> estNodata=imgReaderEst.isNoData(estValue);<span class="comment">//validity of current estimate</span></div>
-<div class="line"><a name="l00889"></a><span class="lineno">  889</span>       <span class="keywordflow">if</span>(estNodata){</div>
-<div class="line"><a name="l00890"></a><span class="lineno">  890</span>         <span class="comment">//we have not found any valid data yet, better here to take the current model value if valid</span></div>
-<div class="line"><a name="l00891"></a><span class="lineno">  891</span>         <span class="keywordflow">if</span>(imgReaderModel2.isNoData(modValue)){<span class="comment">//if both estimate and model are no-data, set obs to nodata</span></div>
-<div class="line"><a name="l00892"></a><span class="lineno">  892</span>           estWriteBuffer[icol]=obsnodata_opt[0];</div>
-<div class="line"><a name="l00893"></a><span class="lineno">  893</span>           uncertWriteBuffer[icol]=uncertNodata_opt[0];</div>
-<div class="line"><a name="l00894"></a><span class="lineno">  894</span>           gainWriteBuffer[icol]=0;</div>
-<div class="line"><a name="l00895"></a><span class="lineno">  895</span>         }</div>
-<div class="line"><a name="l00896"></a><span class="lineno">  896</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00897"></a><span class="lineno">  897</span>           estWriteBuffer[icol]=modValue;</div>
-<div class="line"><a name="l00898"></a><span class="lineno">  898</span>           uncertWriteBuffer[icol]=uncertModel_opt[0]*stdDev;</div>
-<div class="line"><a name="l00899"></a><span class="lineno">  899</span>           gainWriteBuffer[icol]=0;</div>
-<div class="line"><a name="l00900"></a><span class="lineno">  900</span>         }</div>
-<div class="line"><a name="l00901"></a><span class="lineno">  901</span>         <span class="comment">//test</span></div>
-<div class="line"><a name="l00902"></a><span class="lineno">  902</span>         <span class="keywordflow">if</span>(!imgReaderObs.isNoData(estWriteBuffer[icol])){</div>
-<div class="line"><a name="l00903"></a><span class="lineno">  903</span>           <span class="keywordflow">if</span>(obsmin_opt.size()){</div>
-<div class="line"><a name="l00904"></a><span class="lineno">  904</span>         <span class="keywordflow">if</span>(estWriteBuffer[icol]<obsmin_opt[0])</div>
-<div class="line"><a name="l00905"></a><span class="lineno">  905</span>           cout << <span class="stringliteral">"estWriteBuffer[icol], icol, irow"</span> << estWriteBuffer[icol] << <span class="stringliteral">", "</span> << icol << <span class="stringliteral">", "</span> << irow << endl;</div>
-<div class="line"><a name="l00906"></a><span class="lineno">  906</span>         assert(estWriteBuffer[icol]>=obsmin_opt[0]);</div>
-<div class="line"><a name="l00907"></a><span class="lineno">  907</span>           }</div>
-<div class="line"><a name="l00908"></a><span class="lineno">  908</span>           <span class="keywordflow">if</span>(obsmax_opt.size()){</div>
-<div class="line"><a name="l00909"></a><span class="lineno">  909</span>         assert(estWriteBuffer[icol]<=obsmax_opt[0]);</div>
-<div class="line"><a name="l00910"></a><span class="lineno">  910</span>         <span class="keywordflow">if</span>(estWriteBuffer[icol]<obsmin_opt[0])</div>
-<div class="line"><a name="l00911"></a><span class="lineno">  911</span>           cout << <span class="stringliteral">"estWriteBuffer[icol], modValue, icol, irow"</span> << estWriteBuffer[icol] << <span class="stringliteral">", "</span> << modValue << <span class="stringliteral">", "</span> << icol << <span class="stringliteral">", "</span> << irow << endl;</div>
-<div class="line"><a name="l00912"></a><span class="lineno">  912</span>           }</div>
-<div class="line"><a name="l00913"></a><span class="lineno">  913</span>         }</div>
-<div class="line"><a name="l00914"></a><span class="lineno">  914</span>       }</div>
-<div class="line"><a name="l00915"></a><span class="lineno">  915</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00916"></a><span class="lineno">  916</span>         <span class="keywordflow">if</span>(window_opt[0]>0){</div>
-<div class="line"><a name="l00917"></a><span class="lineno">  917</span>           <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00918"></a><span class="lineno">  918</span>         <span class="comment">// imgReaderModel2.geo2image(geox,geoy,modCol,modRow);//did that already</span></div>
-<div class="line"><a name="l00919"></a><span class="lineno">  919</span>         minCol=(modCol>window_opt[0]/2) ? modCol-window_opt[0]/2 : 0;</div>
-<div class="line"><a name="l00920"></a><span class="lineno">  920</span>         maxCol=(modCol+window_opt[0]/2<imgReaderModel2.nrOfCol()) ? modCol+window_opt[0]/2 : imgReaderModel2.nrOfCol()-1;</div>
-<div class="line"><a name="l00921"></a><span class="lineno">  921</span>         minRow=(modRow>window_opt[0]/2) ? modRow-window_opt[0]/2 : 0;</div>
-<div class="line"><a name="l00922"></a><span class="lineno">  922</span>         maxRow=(modRow+window_opt[0]/2<imgReaderModel2.nrOfRow()) ? modRow+window_opt[0]/2 : imgReaderModel2.nrOfRow()-1;</div>
-<div class="line"><a name="l00923"></a><span class="lineno">  923</span>         imgReaderModel2.readDataBlock(model2buffer,GDT_Float64,minCol,maxCol,minRow,maxRow,0);</div>
-<div class="line"><a name="l00924"></a><span class="lineno">  924</span> </div>
-<div class="line"><a name="l00925"></a><span class="lineno">  925</span>         imgReaderModel1.geo2image(geox,geoy,modCol,modRow);</div>
-<div class="line"><a name="l00926"></a><span class="lineno">  926</span>         assert(modRow>=0&&modRow<imgReaderModel1.nrOfRow());</div>
-<div class="line"><a name="l00927"></a><span class="lineno">  927</span>         minCol=(modCol>window_opt[0]/2) ? modCol-window_opt[0]/2 : 0;</div>
-<div class="line"><a name="l00928"></a><span class="lineno">  928</span>         maxCol=(modCol+window_opt[0]/2<imgReaderModel1.nrOfCol()) ? modCol+window_opt[0]/2 : imgReaderModel1.nrOfCol()-1;</div>
-<div class="line"><a name="l00929"></a><span class="lineno">  929</span>         minRow=(modRow>window_opt[0]/2) ? modRow-window_opt[0]/2 : 0;</div>
-<div class="line"><a name="l00930"></a><span class="lineno">  930</span>         maxRow=(modRow+window_opt[0]/2<imgReaderModel1.nrOfRow()) ? modRow+window_opt[0]/2 : imgReaderModel1.nrOfRow()-1;</div>
-<div class="line"><a name="l00931"></a><span class="lineno">  931</span>         imgReaderModel1.readDataBlock(model1buffer,GDT_Float64,minCol,maxCol,minRow,maxRow,0);</div>
-<div class="line"><a name="l00932"></a><span class="lineno">  932</span>         <span class="comment">// imgReaderEst.image2geo(icol,irow,geox,geoy);</span></div>
-<div class="line"><a name="l00933"></a><span class="lineno">  933</span>           }</div>
-<div class="line"><a name="l00934"></a><span class="lineno">  934</span>           <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorString){</div>
-<div class="line"><a name="l00935"></a><span class="lineno">  935</span>         cerr << <span class="stringliteral">"Error reading data block for "</span> << minCol << <span class="stringliteral">"-"</span> << maxCol << <span class="stringliteral">", "</span> << minRow << <span class="stringliteral">"-"</span> << maxRow << endl;</div>
-<div class="line"><a name="l00936"></a><span class="lineno">  936</span>           }</div>
-<div class="line"><a name="l00937"></a><span class="lineno">  937</span>           <span class="comment">//erase no-data from buffer</span></div>
-<div class="line"><a name="l00938"></a><span class="lineno">  938</span>           vector<double>::iterator it1=model1buffer.begin();</div>
-<div class="line"><a name="l00939"></a><span class="lineno">  939</span>           vector<double>::iterator it2=model2buffer.begin();</div>
-<div class="line"><a name="l00940"></a><span class="lineno">  940</span>           <span class="keywordflow">while</span>(it1!=model1buffer.end()&&it2!=model2buffer.end()){</div>
-<div class="line"><a name="l00941"></a><span class="lineno">  941</span>         <span class="comment">//erase nodata</span></div>
-<div class="line"><a name="l00942"></a><span class="lineno">  942</span>         <span class="keywordtype">bool</span> modNodata=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00943"></a><span class="lineno">  943</span>         modNodata=modNodata||imgReaderModel1.isNoData(*it1);</div>
-<div class="line"><a name="l00944"></a><span class="lineno">  944</span>         modNodata=modNodata||imgReaderModel2.isNoData(*it2);</div>
-<div class="line"><a name="l00945"></a><span class="lineno">  945</span>         <span class="keywordflow">if</span>(modNodata){</div>
-<div class="line"><a name="l00946"></a><span class="lineno">  946</span>           model1buffer.erase(it1);</div>
-<div class="line"><a name="l00947"></a><span class="lineno">  947</span>           model2buffer.erase(it2);</div>
-<div class="line"><a name="l00948"></a><span class="lineno">  948</span>         }</div>
-<div class="line"><a name="l00949"></a><span class="lineno">  949</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00950"></a><span class="lineno">  950</span>           ++it1;</div>
-<div class="line"><a name="l00951"></a><span class="lineno">  951</span>           ++it2;</div>
-<div class="line"><a name="l00952"></a><span class="lineno">  952</span>         }</div>
-<div class="line"><a name="l00953"></a><span class="lineno">  953</span>           }</div>
-<div class="line"><a name="l00954"></a><span class="lineno">  954</span>           <span class="keywordflow">if</span>(model1buffer.size()>minreg_opt[0]&&model2buffer.size()>minreg_opt[0]){</div>
-<div class="line"><a name="l00955"></a><span class="lineno">  955</span>         errMod=stat.linear_regression_err(model1buffer,model2buffer,c0mod,c1mod);</div>
-<div class="line"><a name="l00956"></a><span class="lineno">  956</span>         errMod*=regTime_opt[0];</div>
-<div class="line"><a name="l00957"></a><span class="lineno">  957</span>           }</div>
-<div class="line"><a name="l00958"></a><span class="lineno">  958</span>           <span class="keywordflow">else</span>{<span class="comment">//use global regression...</span></div>
-<div class="line"><a name="l00959"></a><span class="lineno">  959</span>         c0mod=c0modGlobal;</div>
-<div class="line"><a name="l00960"></a><span class="lineno">  960</span>         c1mod=c1modGlobal;</div>
-<div class="line"><a name="l00961"></a><span class="lineno">  961</span>           }</div>
-<div class="line"><a name="l00962"></a><span class="lineno">  962</span>         }</div>
-<div class="line"><a name="l00963"></a><span class="lineno">  963</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00964"></a><span class="lineno">  964</span>           c0mod=c0modGlobal;</div>
-<div class="line"><a name="l00965"></a><span class="lineno">  965</span>           c1mod=c1modGlobal;</div>
-<div class="line"><a name="l00966"></a><span class="lineno">  966</span>         }</div>
-<div class="line"><a name="l00967"></a><span class="lineno">  967</span>         <span class="keywordtype">double</span> regTime=c0mod+c1mod*estValue;</div>
-<div class="line"><a name="l00968"></a><span class="lineno">  968</span>         <span class="keywordtype">double</span> regSensor=c0obs+c1obs*modValue;</div>
-<div class="line"><a name="l00969"></a><span class="lineno">  969</span> </div>
-<div class="line"><a name="l00970"></a><span class="lineno">  970</span>         <span class="keywordflow">if</span>(regSensor_opt[0]<=0)</div>
-<div class="line"><a name="l00971"></a><span class="lineno">  971</span>           estWriteBuffer[icol]=regTime;</div>
-<div class="line"><a name="l00972"></a><span class="lineno">  972</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00973"></a><span class="lineno">  973</span>           <span class="keywordtype">double</span> certMod=1;</div>
-<div class="line"><a name="l00974"></a><span class="lineno">  974</span>           <span class="keywordtype">double</span> certObs=1;</div>
-<div class="line"><a name="l00975"></a><span class="lineno">  975</span>           <span class="keywordtype">double</span> certNorm=(errMod*errMod+errObs*errObs);</div>
-<div class="line"><a name="l00976"></a><span class="lineno">  976</span>           <span class="keywordflow">if</span>(certNorm>eps_opt[0]){</div>
-<div class="line"><a name="l00977"></a><span class="lineno">  977</span>         certMod=errObs*errObs/certNorm;</div>
-<div class="line"><a name="l00978"></a><span class="lineno">  978</span>         certObs=errMod*errMod/certNorm;</div>
-<div class="line"><a name="l00979"></a><span class="lineno">  979</span>           }</div>
-<div class="line"><a name="l00980"></a><span class="lineno">  980</span>           <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00981"></a><span class="lineno">  981</span>         certMod=0.5;</div>
-<div class="line"><a name="l00982"></a><span class="lineno">  982</span>         certObs=0.5;</div>
-<div class="line"><a name="l00983"></a><span class="lineno">  983</span>           }</div>
-<div class="line"><a name="l00984"></a><span class="lineno">  984</span>           estWriteBuffer[icol]=regTime*certObs+regSensor*certMod;</div>
-<div class="line"><a name="l00985"></a><span class="lineno">  985</span>         }         </div>
-<div class="line"><a name="l00986"></a><span class="lineno">  986</span>         <span class="comment">//test</span></div>
-<div class="line"><a name="l00987"></a><span class="lineno">  987</span>         <span class="comment">// if(regTime<regSensor){</span></div>
-<div class="line"><a name="l00988"></a><span class="lineno">  988</span>         <span class="comment">//   cout << "regTime = (" << c0mod << "+" << c1mod << "*" << estValue << ")*" << certObs << " = " << regTime << endl;</span></div>
-<div class="line"><a name="l00989"></a><span class="lineno">  989</span>         <span class="comment">//   cout << "regSensor = (" << c0obs << "+" << c1obs << "*" << modValue << ")*" << certMod << " = " << regSensor << endl;</span></div>
-<div class="line"><a name="l00990"></a><span class="lineno">  990</span>         <span class="comment">//   assert(regTime+regSensor>0);</span></div>
-<div class="line"><a name="l00991"></a><span class="lineno">  991</span>         <span class="comment">//   assert(regTime+regSensor<=1);</span></div>
-<div class="line"><a name="l00992"></a><span class="lineno">  992</span>         <span class="comment">// }</span></div>
-<div class="line"><a name="l00993"></a><span class="lineno">  993</span> </div>
-<div class="line"><a name="l00994"></a><span class="lineno">  994</span>         <span class="keywordflow">if</span>(obsmin_opt.size()){</div>
-<div class="line"><a name="l00995"></a><span class="lineno">  995</span>           <span class="keywordflow">if</span>(estWriteBuffer[icol]<obsmin_opt[0])</div>
-<div class="line"><a name="l00996"></a><span class="lineno">  996</span>         estWriteBuffer[icol]=obsnodata_opt[0];</div>
-<div class="line"><a name="l00997"></a><span class="lineno">  997</span>         }</div>
-<div class="line"><a name="l00998"></a><span class="lineno">  998</span>         <span class="keywordflow">if</span>(obsmax_opt.size()){</div>
-<div class="line"><a name="l00999"></a><span class="lineno">  999</span>           <span class="keywordflow">if</span>(estWriteBuffer[icol]>obsmax_opt[0])</div>
-<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>         estWriteBuffer[icol]=obsnodata_opt[0];</div>
-<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>         }</div>
-<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>         </div>
-<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>         <span class="keywordtype">double</span> totalUncertainty=0;</div>
-<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>         <span class="keywordflow">if</span>(errMod<eps_opt[0])</div>
-<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>           totalUncertainty=errObs;</div>
-<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(errObs<eps_opt[0])</div>
-<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>           totalUncertainty=errMod;</div>
-<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>           totalUncertainty=1.0/errMod/errMod+1/errObs/errObs;</div>
-<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>           totalUncertainty=sqrt(1.0/totalUncertainty);</div>
-<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>         }</div>
-<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>         uncertWriteBuffer[icol]=totalUncertainty+uncertReadBuffer[icol];</div>
-<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>         <span class="comment">//test</span></div>
-<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>         gainWriteBuffer[icol]=0;</div>
-<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>       }</div>
-<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>       <span class="comment">//measurement update</span></div>
-<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>       <span class="keywordflow">if</span>(update&&!imgReaderObs.isNoData(obsLineBuffer[icol])){</div>
-<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>         <span class="keywordtype">double</span> kalmanGain=1;</div>
-<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>         <span class="keywordtype">double</span> uncertObs=uncertObs_opt[0];</div>
-<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>         <span class="keywordflow">if</span>(uncertObsLineBuffer.size()>icol)</div>
-<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>           uncertObs=uncertObsLineBuffer[icol];</div>
-<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(weight_opt.size()>1||deltaObs_opt.size()){</div>
-<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>           <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> statobs;</div>
-<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>           statobs.setNoDataValues(obsnodata_opt);</div>
-<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>           <span class="keywordtype">double</span> obsMeanValue=(statobs.mean(obsWindowBuffer)-c0obs)/c1obs;</div>
-<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>           <span class="keywordtype">double</span> difference=obsMeanValue-modValue;</div>
-<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>           <span class="keywordflow">if</span>(modValue){</div>
-<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>         <span class="keywordtype">double</span> relativeDifference=difference/modValue;</div>
-<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>         <span class="keywordflow">if</span>(deltaObs_opt.size()){</div>
-<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>           assert(deltaObs_opt.size()>1);</div>
-<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>           <span class="keywordflow">if</span>(100*relativeDifference<deltaObs_opt[0])<span class="comment">//lower bound</span></div>
-<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>             kalmanGain=0;</div>
-<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>           <span class="keywordflow">else</span> <span class="keywordflow">if</span>(100*relativeDifference>deltaObs_opt[1])<span class="comment">//upper bound</span></div>
-<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>             kalmanGain=0;</div>
-<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>         }</div>
-<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(weight_opt.size()){</div>
-<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>           assert(weight_opt.size()>1);</div>
-<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>           <span class="keywordflow">if</span>(obsMeanValue<modValue)</div>
-<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>             uncertObs=-weight_opt[0]*relativeDifference;</div>
-<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>           <span class="keywordflow">else</span> <span class="keywordflow">if</span>(obsMeanValue>modValue)</div>
-<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>             uncertObs=weight_opt[1]*relativeDifference;</div>
-<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>         }</div>
-<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>           }</div>
-<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>           <span class="keywordflow">if</span>(uncertObs<=0)</div>
-<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>         uncertObs=0;</div>
-<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>           <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>         cout << <span class="stringliteral">"obsMeanValue:"</span> << obsMeanValue << <span class="stringliteral">", modValue: "</span> << modValue << endl;</div>
-<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>         }</div>
-<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>         <span class="keywordflow">if</span>(kalmanGain>0){</div>
-<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>           <span class="keywordflow">if</span>((uncertWriteBuffer[icol]+uncertObs)>eps_opt[0])</div>
-<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>           kalmanGain=uncertWriteBuffer[icol]/(uncertWriteBuffer[icol]+uncertObs);</div>
-<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>         }</div>
-<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>         assert(kalmanGain<=1);</div>
-<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>         estWriteBuffer[icol]+=kalmanGain*(obsLineBuffer[icol]-estWriteBuffer[icol]);</div>
-<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>         <span class="keywordflow">if</span>(obsmin_opt.size()){</div>
-<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>           <span class="keywordflow">if</span>(estWriteBuffer[icol]<obsmin_opt[0])</div>
-<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>         estWriteBuffer[icol]=obsnodata_opt[0];</div>
-<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>         }</div>
-<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>         <span class="keywordflow">if</span>(obsmax_opt.size()){</div>
-<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>           <span class="keywordflow">if</span>(estWriteBuffer[icol]>obsmax_opt[0])</div>
-<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>         estWriteBuffer[icol]=obsnodata_opt[0];</div>
-<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>         }</div>
-<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>         uncertWriteBuffer[icol]*=(1-kalmanGain);</div>
-<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>         <span class="comment">//test</span></div>
-<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>         gainWriteBuffer[icol]=kalmanGain;</div>
-<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>       }</div>
-<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>       <span class="comment">//test</span></div>
-<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>       <span class="keywordflow">if</span>(!imgReaderObs.isNoData(estWriteBuffer[icol])){</div>
-<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>         <span class="keywordflow">if</span>(obsmin_opt.size())</div>
-<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>           assert(estWriteBuffer[icol]>=obsmin_opt[0]);</div>
-<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>         <span class="keywordflow">if</span>(obsmax_opt.size())</div>
-<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>           assert(estWriteBuffer[icol]<=obsmax_opt[0]);</div>
-<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>       }</div>
-<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>     }</div>
-<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>     <span class="comment">//test</span></div>
-<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>     <span class="keywordflow">if</span>(gain_opt.size()){</div>
-<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>       imgWriterGain.writeData(gainWriteBuffer,GDT_Float64,irow,modindex);</div>
-<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>     }</div>
-<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>     imgWriterEst.writeData(estWriteBuffer,GDT_Float64,irow,0);</div>
-<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>     imgWriterEst.writeData(uncertWriteBuffer,GDT_Float64,irow,1);</div>
-<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>     progress=<span class="keyword">static_cast<</span><span class="keywordtype">float</span><span class="keyword">></span>((irow+1.0)/imgWriterEst.nrOfRow());</div>
-<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>       }</div>
-<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span> </div>
-<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>       imgWriterEst.close();</div>
-<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>       imgReaderEst.close();</div>
-<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span> </div>
-<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>       <span class="keywordflow">if</span>(update){</div>
-<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>     imgReaderObs.close();</div>
-<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>     ++obsindex;</div>
-<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>       }</div>
-<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>       imgReaderModel1.close();</div>
-<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>       imgReaderModel2.close();</div>
-<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>     }</div>
-<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>     <span class="keywordflow">if</span>(gain_opt.size())</div>
-<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>       imgWriterGain.close();</div>
-<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>   }</div>
-<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>   <span class="keywordflow">if</span>(find(direction_opt.begin(),direction_opt.end(),<span class="stringliteral">"backward"</span>)!=direction_opt.end()){</div>
-<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>     cout << <span class="stringliteral">"Running backward model"</span> << endl;</div>
-<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>     obsindex=relobsindex.size()-1;</div>
-<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>     <span class="comment">//initialization</span></div>
-<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>     <span class="keywordtype">string</span> output;</div>
-<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>     <span class="keywordflow">if</span>(outputbw_opt.size()==model_opt.size())</div>
-<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>       output=outputbw_opt.back();</div>
-<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>       ostringstream outputstream;</div>
-<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>       outputstream << outputbw_opt[0] << <span class="stringliteral">"_"</span>;</div>
-<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>       outputstream << setfill(<span class="charliteral">'0'</span>) << setw(ndigit) << tmodel_opt.back();</div>
-<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>       outputstream << <span class="stringliteral">".tif"</span>;</div>
-<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>       <span class="comment">// outputstream << outputbw_opt[0] << "_" << tmodel_opt.back() << ".tif";</span></div>
-<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>       output=outputstream.str();</div>
-<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>     }</div>
-<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>       cout << <span class="stringliteral">"Opening image "</span> << output << <span class="stringliteral">" for writing "</span> << endl;</div>
-<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>     imgWriterEst.open(output,ncol,nrow,2,GDT_Float64,imageType,option_opt);</div>
-<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>     imgWriterEst.setProjectionProj4(projection_opt[0]);</div>
-<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>     imgWriterEst.setGeoTransform(geotransform);</div>
-<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>     imgWriterEst.GDALSetNoDataValue(obsnodata_opt[0]);</div>
-<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span> </div>
-<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>     <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>       cout << <span class="stringliteral">"processing time "</span> << tmodel_opt.back() << endl;</div>
-<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>       <span class="keywordflow">if</span>(obsindex<relobsindex.size())</div>
-<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>     cout << <span class="stringliteral">"next observation "</span> << tmodel_opt[relobsindex[obsindex]] << endl;</div>
-<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>     cout << <span class="stringliteral">"There is no next observation"</span> << endl;</div>
-<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>     }</div>
-<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span> </div>
-<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>       imgReaderModel1.open(model_opt.back());</div>
-<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>       imgReaderModel1.setNoData(modnodata_opt);</div>
-<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>       <span class="keywordflow">if</span>(modoffset_opt.size())</div>
-<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>     imgReaderModel1.setOffset(modoffset_opt[0]);</div>
-<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>       <span class="keywordflow">if</span>(modscale_opt.size())</div>
-<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>     imgReaderModel1.setScale(modscale_opt[0]);</div>
-<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>     }</div>
-<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>     <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorString){</div>
-<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>       cerr << errorString << endl;</div>
-<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>     }</div>
-<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>     <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>       cerr << <span class="stringliteral">"Error opening file "</span> << model_opt[0] << endl;</div>
-<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>     }</div>
-<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span> </div>
-<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>     <span class="comment">//calculate standard deviation of image to serve as model uncertainty</span></div>
-<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>     GDALRasterBand* rasterBand;</div>
-<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>     rasterBand=imgReaderModel1.getRasterBand(0);</div>
-<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>     <span class="keywordtype">double</span> minValue, maxValue, meanValue, stdDev;</div>
-<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>     <span class="keywordtype">void</span>* pProgressData;</div>
-<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>     rasterBand->ComputeStatistics(0,&minValue,&maxValue,&meanValue,&stdDev,pfnProgress,pProgressData);</div>
-<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>     <span class="keywordtype">double</span> modRow=0;</div>
-<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>     <span class="keywordtype">double</span> modCol=0;</div>
-<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>     <span class="keywordflow">if</span>(relobsindex.back()<model_opt.size()-1){<span class="comment">//initialize output_opt.back() as model[0]</span></div>
-<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>       <span class="comment">//write last model as output</span></div>
-<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>     cout << <span class="stringliteral">"write last model as output"</span> << endl;</div>
-<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<nrow;++irow){</div>
-<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>     vector<double> estReadBuffer;</div>
-<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>     vector<double> estWriteBuffer(ncol);</div>
-<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>     vector<double> uncertWriteBuffer(ncol);</div>
-<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>     <span class="comment">// vector<double> lineMask;</span></div>
-<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>     imgWriterEst.image2geo(0,irow,geox,geoy);</div>
-<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>     imgReaderModel1.geo2image(geox,geoy,modCol,modRow);</div>
-<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>     assert(modRow>=0&&modRow<imgReaderModel1.nrOfRow());</div>
-<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>       imgReaderModel1.readData(estReadBuffer,GDT_Float64,modRow);</div>
-<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>       <span class="comment">//simple nearest neighbor</span></div>
-<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>       <span class="comment">//stat.nearUp(estReadBuffer,estWriteBuffer);</span></div>
-<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span> </div>
-<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>       <span class="comment">// double oldRowMask=-1;//keep track of row mask to optimize number of line readings</span></div>
-<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<imgWriterEst.nrOfCol();++icol){</div>
-<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>         imgWriterEst.image2geo(icol,irow,geox,geoy);        </div>
-<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>         imgReaderModel1.geo2image(geox,geoy,modCol,modRow);</div>
-<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>         <span class="keywordtype">double</span> modValue=estReadBuffer[modCol];</div>
-<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>         <span class="keywordflow">if</span>(imgReaderModel1.isNoData(modValue)){</div>
-<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>           estWriteBuffer[icol]=obsnodata_opt[0];</div>
-<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>           uncertWriteBuffer[icol]=uncertNodata_opt[0];</div>
-<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>         }</div>
-<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>           estWriteBuffer[icol]=modValue;</div>
-<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>           uncertWriteBuffer[icol]=uncertModel_opt[0]*stdDev;</div>
-<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>         }</div>
-<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>         <span class="comment">//test</span></div>
-<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>         <span class="keywordflow">if</span>(!imgReaderObs.isNoData(estWriteBuffer[icol])){</div>
-<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>           <span class="keywordflow">if</span>(obsmin_opt.size())</div>
-<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>         assert(estWriteBuffer[icol]>=obsmin_opt[0]);</div>
-<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>           <span class="keywordflow">if</span>(obsmax_opt.size())</div>
-<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>         assert(estWriteBuffer[icol]<=obsmax_opt[0]);</div>
-<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>         }</div>
-<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>       }</div>
-<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>       imgWriterEst.writeData(estWriteBuffer,GDT_Float64,irow,0);</div>
-<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>       imgWriterEst.writeData(uncertWriteBuffer,GDT_Float64,irow,1);</div>
-<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>     }</div>
-<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>     <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorString){</div>
-<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>       cerr << errorString << endl;</div>
-<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>     }</div>
-<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>     <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>       cerr << <span class="stringliteral">"Error writing file "</span> << imgWriterEst.getFileName() << endl;</div>
-<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>     }</div>
-<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>       }</div>
-<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>     }</div>
-<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>     <span class="keywordflow">else</span>{<span class="comment">//we have an measurement at end time</span></div>
-<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>     cout << <span class="stringliteral">"we have an measurement at end time"</span> << endl;</div>
-<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>       imgReaderObs.open(observation_opt.back());</div>
-<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>       imgReaderObs.getGeoTransform(geotransform);</div>
-<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>       imgReaderObs.setNoData(obsnodata_opt);</div>
-<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>       <span class="keywordflow">if</span>(obsoffset_opt.size())</div>
-<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>     imgReaderObs.setOffset(obsoffset_opt[0]);</div>
-<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>       <span class="keywordflow">if</span>(obsscale_opt.size())</div>
-<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>     imgReaderObs.setScale(obsscale_opt[0]);</div>
-<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>       </div>
-<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>       <span class="keywordflow">if</span>(regSensor_opt[0]>0){</div>
-<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>     errObs=regSensor_opt[0]*imgreg.getRMSE(imgReaderModel1,imgReaderObs,c0obs,c1obs,0,0,verbose_opt[0]);</div>
-<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>     <span class="keywordflow">if</span>(errObs<0||errObs!=errObs){</div>
-<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>       <span class="comment">// c0obs=0;</span></div>
-<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>       <span class="comment">// c1obs=1;</span></div>
-<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>       c0obs=c0obs_prev;</div>
-<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>       c1obs=c1obs_prev;</div>
-<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>     }</div>
-<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>       c0obs_prev=c0obs;</div>
-<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>       c1obs_prev=c1obs;</div>
-<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>     }</div>
-<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>       }</div>
-<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>     c0obs=0;</div>
-<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>     c1obs=1;</div>
-<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>     errObs=0;</div>
-<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>       }</div>
-<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>     cout << <span class="stringliteral">"c0obs, c1obs: "</span> << c0obs << <span class="stringliteral">", "</span> << c1obs << endl;</div>
-<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span> </div>
-<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<nrow;++irow){</div>
-<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>     vector<double> estReadBuffer;</div>
-<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>     imgWriterEst.image2geo(0,irow,geox,geoy);</div>
-<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>     imgReaderModel1.geo2image(geox,geoy,modCol,modRow);</div>
-<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>     assert(modRow>=0&&modRow<imgReaderModel1.nrOfRow());</div>
-<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>     imgReaderModel1.readData(estReadBuffer,GDT_Float64,modRow);</div>
-<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>     vector<double> obsLineBuffer;</div>
-<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>     vector<double> estWriteBuffer(ncol);</div>
-<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>     vector<double> uncertWriteBuffer(ncol);</div>
-<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>     vector<double> uncertObsLineBuffer;</div>
-<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>     <span class="comment">// vector<double> lineMask;</span></div>
-<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>     <span class="comment">// imgReaderObs.readData(estWriteBuffer,GDT_Float64,irow,0);</span></div>
-<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>     imgReaderObs.readData(obsLineBuffer,GDT_Float64,irow,0);</div>
-<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span> </div>
-<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>     <span class="keywordflow">if</span>(imgReaderObs.nrOfBand()>1)</div>
-<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>       imgReaderObs.readData(uncertObsLineBuffer,GDT_Float64,irow,1);</div>
-<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>     <span class="comment">// double oldRowMask=-1;//keep track of row mask to optimize number of line readings</span></div>
-<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<imgWriterEst.nrOfCol();++icol){</div>
-<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>       imgWriterEst.image2geo(icol,irow,geox,geoy);</div>
-<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>       imgReaderModel1.geo2image(geox,geoy,modCol,modRow);</div>
-<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>       assert(modRow>=0&&modRow<imgReaderModel1.nrOfRow());</div>
-<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>       <span class="keywordtype">double</span> modValue=estReadBuffer[modCol];</div>
-<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>       <span class="keywordflow">if</span>(imgReaderModel1.isNoData(modValue)){<span class="comment">//model is nodata: retain observation </span></div>
-<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>         estWriteBuffer[icol]=obsLineBuffer[icol];</div>
-<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>         <span class="keywordflow">if</span>(imgReaderObs.isNoData(obsLineBuffer[icol])){</div>
-<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>           estWriteBuffer[icol]=obsnodata_opt[0];</div>
-<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>           uncertWriteBuffer[icol]=uncertNodata_opt[0];</div>
-<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>         }</div>
-<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(uncertObsLineBuffer.size()>icol)</div>
-<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>           uncertWriteBuffer[icol]=uncertObsLineBuffer[icol];</div>
-<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>           uncertWriteBuffer[icol]=uncertObs_opt[0];</div>
-<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>       }</div>
-<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>       <span class="keywordflow">else</span>{<span class="comment">//model is valid: calculate estimate from model</span></div>
-<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>         <span class="keywordtype">double</span> errMod=uncertModel_opt[0]*stdDev;</div>
-<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>         errMod*=regTime_opt[0];</div>
-<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>         <span class="comment">// double certNorm=(errMod*errMod+errObs*errObs);</span></div>
-<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>         <span class="comment">// double certMod=errObs*errObs/certNorm;</span></div>
-<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>         <span class="comment">// double certObs=errMod*errMod/certNorm;</span></div>
-<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>         <span class="comment">// double regTime=0;</span></div>
-<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>         <span class="comment">// double regSensor=(c0obs+c1obs*modValue)*certMod;</span></div>
-<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>         <span class="comment">// estWriteBuffer[icol]=regTime+regSensor;</span></div>
-<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>         estWriteBuffer[icol]=modValue;</div>
-<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>         <span class="keywordtype">double</span> totalUncertainty=errMod;</div>
-<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>         <span class="comment">// if(errMod<eps_opt[0])</span></div>
-<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>         <span class="comment">//   totalUncertainty=errObs;</span></div>
-<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>         <span class="comment">// else if(errObs<eps_opt[0])</span></div>
-<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>         <span class="comment">//   totalUncertainty=errMod;</span></div>
-<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>         <span class="comment">// else{</span></div>
-<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>         <span class="comment">//   totalUncertainty=1.0/errMod/errMod+1/errObs/errObs;</span></div>
-<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>         <span class="comment">//   totalUncertainty=sqrt(1.0/totalUncertainty);</span></div>
-<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>         <span class="comment">// }</span></div>
-<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>         uncertWriteBuffer[icol]=totalUncertainty;<span class="comment">//in case observation is not valid</span></div>
-<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>       }</div>
-<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>       <span class="comment">//measurement update</span></div>
-<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>       <span class="keywordflow">if</span>(!imgReaderObs.isNoData(obsLineBuffer[icol])){</div>
-<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>         <span class="keywordtype">double</span> kalmanGain=1;</div>
-<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>         <span class="keywordtype">double</span> uncertObs=uncertObs_opt[0];</div>
-<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>         <span class="keywordflow">if</span>(uncertObsLineBuffer.size()>icol)</div>
-<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>           uncertObs=uncertObsLineBuffer[icol];</div>
-<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(weight_opt.size()>1||deltaObs_opt.size()){</div>
-<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>           vector<double> obsWindowBuffer;<span class="comment">//buffer for observation to calculate average corresponding to model pixel</span></div>
-<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>           <span class="keywordtype">int</span> minCol=(icol>down_opt[0]/2) ? icol-down_opt[0]/2 : 0;</div>
-<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>           <span class="keywordtype">int</span> maxCol=(icol+down_opt[0]/2<imgReaderObs.nrOfCol()) ? icol+down_opt[0]/2 : imgReaderObs.nrOfCol()-1;</div>
-<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>           <span class="keywordtype">int</span> minRow=(irow>down_opt[0]/2) ? irow-down_opt[0]/2 : 0;</div>
-<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>           <span class="keywordtype">int</span> maxRow=(irow+down_opt[0]/2<imgReaderObs.nrOfRow()) ? irow+down_opt[0]/2 : imgReaderObs.nrOfRow()-1;</div>
-<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>         </div>
-<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>           imgReaderObs.readDataBlock(obsWindowBuffer,GDT_Float64,minCol,maxCol,minRow,maxRow,0);</div>
-<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>           <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> statobs;</div>
-<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>           statobs.setNoDataValues(obsnodata_opt);</div>
-<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>           <span class="keywordtype">double</span> obsMeanValue=(statobs.mean(obsWindowBuffer)-c0obs)/c1obs;</div>
-<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>           <span class="keywordtype">double</span> difference=obsMeanValue-modValue;</div>
-<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>           <span class="keywordflow">if</span>(modValue){</div>
-<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>         <span class="keywordtype">double</span> relativeDifference=difference/modValue;</div>
-<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>         <span class="keywordflow">if</span>(deltaObs_opt.size()){</div>
-<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>           assert(deltaObs_opt.size()>1);</div>
-<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>           <span class="keywordflow">if</span>(100*relativeDifference<deltaObs_opt[0])<span class="comment">//lower bound</span></div>
-<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>             kalmanGain=0;</div>
-<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>           <span class="keywordflow">else</span> <span class="keywordflow">if</span>(100*relativeDifference>deltaObs_opt[1])<span class="comment">//upper bound</span></div>
-<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>             kalmanGain=0;</div>
-<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>         }</div>
-<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(weight_opt.size()){</div>
-<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>           assert(weight_opt.size()>1);</div>
-<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>           <span class="keywordflow">if</span>(obsMeanValue<modValue)</div>
-<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>             uncertObs=-weight_opt[0]*relativeDifference;</div>
-<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>           <span class="keywordflow">else</span> <span class="keywordflow">if</span>(obsMeanValue>modValue)</div>
-<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>             uncertObs=weight_opt[1]*relativeDifference;</div>
-<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>         }</div>
-<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>           }</div>
-<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>           <span class="keywordflow">if</span>(uncertObs<=0)</div>
-<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>         uncertObs=0;</div>
-<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>           <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>         cout << <span class="stringliteral">"obsMeanValue:"</span> << obsMeanValue << <span class="stringliteral">", modValue: "</span> << modValue << endl;</div>
-<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>         }</div>
-<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>         <span class="keywordflow">if</span>(kalmanGain>0){</div>
-<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>           <span class="keywordflow">if</span>((uncertWriteBuffer[icol]+uncertObs)>eps_opt[0])</div>
-<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>         kalmanGain=uncertWriteBuffer[icol]/(uncertWriteBuffer[icol]+uncertObs);</div>
-<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>         }</div>
-<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>         assert(kalmanGain<=1);</div>
-<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>         estWriteBuffer[icol]+=kalmanGain*(obsLineBuffer[icol]-estWriteBuffer[icol]);</div>
-<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>         <span class="keywordflow">if</span>(obsmin_opt.size()){</div>
-<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>           <span class="keywordflow">if</span>(estWriteBuffer[icol]<obsmin_opt[0])</div>
-<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>         estWriteBuffer[icol]=obsnodata_opt[0];</div>
-<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>         }</div>
-<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>         <span class="keywordflow">if</span>(obsmax_opt.size()){</div>
-<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>           <span class="keywordflow">if</span>(estWriteBuffer[icol]>obsmax_opt[0])</div>
-<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>         estWriteBuffer[icol]=obsnodata_opt[0];</div>
-<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>         }</div>
-<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>         uncertWriteBuffer[icol]*=(1-kalmanGain);</div>
-<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>       }</div>
-<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>       <span class="comment">//test</span></div>
-<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>       <span class="keywordflow">if</span>(!imgReaderObs.isNoData(estWriteBuffer[icol])){</div>
-<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>         <span class="keywordflow">if</span>(obsmin_opt.size())</div>
-<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>           assert(estWriteBuffer[icol]>=obsmin_opt[0]);</div>
-<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>         <span class="keywordflow">if</span>(obsmax_opt.size())</div>
-<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>           assert(estWriteBuffer[icol]<=obsmax_opt[0]);</div>
-<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>       }</div>
-<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>     }</div>
-<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>     imgWriterEst.writeData(estWriteBuffer,GDT_Float64,irow,0);</div>
-<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>     imgWriterEst.writeData(uncertWriteBuffer,GDT_Float64,irow,1);</div>
-<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>       }</div>
-<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>       imgReaderObs.close();</div>
-<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>       --obsindex;</div>
-<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>     }</div>
-<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>     imgReaderModel1.close();</div>
-<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>     imgWriterEst.close();</div>
-<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span> </div>
-<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> modindex=model_opt.size()-2;modindex>=0;--modindex){</div>
-<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>       <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>     cout << <span class="stringliteral">"processing time "</span> << tmodel_opt[modindex] << endl;</div>
-<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>     <span class="keywordflow">if</span>(obsindex<relobsindex.size())</div>
-<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>       cout << <span class="stringliteral">"next observation "</span> << tmodel_opt[relobsindex[obsindex]] << endl;</div>
-<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>       cout << <span class="stringliteral">"There is no next observation"</span> << endl;</div>
-<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>       }</div>
-<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>       <span class="keywordtype">string</span> output;</div>
-<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>       <span class="keywordflow">if</span>(outputbw_opt.size()==model_opt.size())</div>
-<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>     output=outputbw_opt[modindex];</div>
-<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>     ostringstream outputstream;</div>
-<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>     outputstream << outputbw_opt[0] << <span class="stringliteral">"_"</span>;</div>
-<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>     outputstream << setfill(<span class="charliteral">'0'</span>) << setw(ndigit) << tmodel_opt[modindex];</div>
-<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>     outputstream << <span class="stringliteral">".tif"</span>;</div>
-<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>     <span class="comment">// outputstream << outputbw_opt[0] << "_" << tmodel_opt[modindex] << ".tif";</span></div>
-<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>     output=outputstream.str();</div>
-<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>       }</div>
-<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span> </div>
-<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>       <span class="comment">//two band output band0=estimation, band1=uncertainty</span></div>
-<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>       imgWriterEst.open(output,ncol,nrow,2,GDT_Float64,imageType,option_opt);</div>
-<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>       imgWriterEst.setProjectionProj4(projection_opt[0]);</div>
-<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>       imgWriterEst.setGeoTransform(geotransform);</div>
-<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>       imgWriterEst.GDALSetNoDataValue(obsnodata_opt[0]);</div>
-<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span> </div>
-<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>       <span class="comment">//calculate regression between two subsequence model inputs</span></div>
-<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>       imgReaderModel1.open(model_opt[modindex+1]);</div>
-<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>       imgReaderModel1.setNoData(modnodata_opt);</div>
-<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>       <span class="keywordflow">if</span>(modoffset_opt.size())</div>
-<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>     imgReaderModel1.setOffset(modoffset_opt[0]);</div>
-<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>       <span class="keywordflow">if</span>(modscale_opt.size())</div>
-<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>     imgReaderModel1.setScale(modscale_opt[0]);</div>
-<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>       imgReaderModel2.open(model_opt[modindex]);</div>
-<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>       imgReaderModel2.setNoData(modnodata_opt);</div>
-<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>       <span class="keywordflow">if</span>(modoffset_opt.size())</div>
-<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>     imgReaderModel2.setOffset(modoffset_opt[0]);</div>
-<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>       <span class="keywordflow">if</span>(modscale_opt.size())</div>
-<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>     imgReaderModel2.setScale(modscale_opt[0]);</div>
-<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>       <span class="comment">//calculate regression</span></div>
-<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>       <span class="comment">//we could re-use the points from second image from last run, but</span></div>
-<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>       <span class="comment">//to keep it general, we must redo it (overlap might have changed)</span></div>
-<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>     </div>
-<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>       pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span> </div>
-<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>     cout << <span class="stringliteral">"Calculating regression for "</span> << imgReaderModel1.getFileName() << <span class="stringliteral">" "</span> << imgReaderModel2.getFileName() << endl;</div>
-<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span> </div>
-<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>       <span class="keywordtype">double</span> errMod=imgreg.getRMSE(imgReaderModel1,imgReaderModel2,c0modGlobal,c1modGlobal,0,0);</div>
-<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>       <span class="keywordflow">if</span>(c0modGlobal>c0modGlobalMax_opt[0]||c0modGlobal<c0modGlobalMin_opt[0]||c1modGlobal>c1modGlobalMax_opt[0]||c1modGlobal<c1modGlobalMin_opt[0]||errMod!=errMod){</div>
-<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>     c0modGlobal=c0modGlobal_prev;</div>
-<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>     c1modGlobal=c1modGlobal_prev;</div>
-<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>     errMod=uncertModel_opt[0]*stdDev;</div>
-<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>       }</div>
-<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>     c0modGlobal_prev=c0modGlobal;</div>
-<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>     c1modGlobal_prev=c1modGlobal;</div>
-<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>     errMod*=regTime_opt[0];</div>
-<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>       }</div>
-<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>       <span class="comment">// double errMod=imgreg.getRMSE(imgReaderModel1,imgReaderModel2,c0modGlobal,c1modGlobal,verbose_opt[0]);</span></div>
-<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>     cout << <span class="stringliteral">"c0modGlobal, c1modGlobal: "</span> << c0modGlobal << <span class="stringliteral">", "</span> << c1modGlobal << endl;</div>
-<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span> </div>
-<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>       <span class="keywordtype">bool</span> update=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>       <span class="keywordflow">if</span>(obsindex<relobsindex.size()){</div>
-<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>     update=(relobsindex[obsindex]==modindex);</div>
-<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>       }</div>
-<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>       <span class="keywordflow">if</span>(update){</div>
-<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>       cout << <span class="stringliteral">"***update "</span> << relobsindex[obsindex] << <span class="stringliteral">" = "</span> << modindex << <span class="stringliteral">" "</span> << observation_opt[obsindex] << <span class="stringliteral">" ***"</span> << endl;</div>
-<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span> </div>
-<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>     imgReaderObs.open(observation_opt[obsindex]);</div>
-<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>     imgReaderObs.getGeoTransform(geotransform);</div>
-<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>     imgReaderObs.setNoData(obsnodata_opt);</div>
-<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>     <span class="keywordflow">if</span>(obsoffset_opt.size())</div>
-<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>       imgReaderObs.setOffset(obsoffset_opt[0]);</div>
-<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>     <span class="keywordflow">if</span>(obsscale_opt.size())</div>
-<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>       imgReaderObs.setScale(obsscale_opt[0]);</div>
-<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>     <span class="comment">//calculate regression between model and observation</span></div>
-<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>       cout << <span class="stringliteral">"Calculating regression for "</span> << imgReaderModel2.getFileName() << <span class="stringliteral">" "</span> << imgReaderObs.getFileName() << endl;</div>
-<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>     <span class="keywordflow">if</span>(regSensor_opt[0]>0){</div>
-<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>       errObs=regSensor_opt[0]*imgreg.getRMSE(imgReaderModel2,imgReaderObs,c0obs,c1obs,0,0,verbose_opt[0]);</div>
-<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>       <span class="keywordflow">if</span>(errObs<0||errObs!=errObs){</div>
-<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>         <span class="comment">// c0obs=0;</span></div>
-<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>         <span class="comment">// c1obs=1;</span></div>
-<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>         c0obs=c0obs_prev;</div>
-<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>         c1obs=c1obs_prev;</div>
-<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>       }</div>
-<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>         c0obs_prev=c0obs;</div>
-<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>         c1obs_prev=c1obs;</div>
-<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>       }</div>
-<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>     }</div>
-<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>       c0obs=0;</div>
-<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>       c1obs=1;</div>
-<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>       errObs=0;</div>
-<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>     }</div>
-<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>       cout << <span class="stringliteral">"c0obs, c1obs: "</span> << c0obs << <span class="stringliteral">", "</span> << c1obs << endl;</div>
-<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>       }</div>
-<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>       <span class="comment">//prediction (also to fill cloudy pixels in update mode)</span></div>
-<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>       <span class="keywordtype">string</span> input;</div>
-<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>       <span class="keywordflow">if</span>(outputbw_opt.size()==model_opt.size())</div>
-<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>     input=outputbw_opt[modindex+1];</div>
-<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>     ostringstream outputstream;</div>
-<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>     outputstream << outputbw_opt[0] << <span class="stringliteral">"_"</span>;</div>
-<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>     outputstream << setfill(<span class="charliteral">'0'</span>) << setw(ndigit) << tmodel_opt[modindex+1];</div>
-<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>     outputstream << <span class="stringliteral">".tif"</span>;</div>
-<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>     <span class="comment">// outputstream << outputbw_opt[0] << "_" << tmodel_opt[modindex+1] << ".tif";</span></div>
-<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>     input=outputstream.str();</div>
-<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>       }</div>
-<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>       <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> imgReaderEst(input);</div>
-<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>       imgReaderEst.setNoData(obsnodata_opt);</div>
-<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>       <span class="keywordflow">if</span>(obsoffset_opt.size())</div>
-<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>     imgReaderEst.setOffset(obsoffset_opt[0]);</div>
-<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>       <span class="keywordflow">if</span>(obsscale_opt.size())</div>
-<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>     imgReaderEst.setScale(obsscale_opt[0]);</div>
-<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>       </div>
-<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>       vector< vector<double> > obsLineVector(down_opt[0]);</div>
-<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>       vector<double> obsLineBuffer;</div>
-<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>       vector<double> obsWindowBuffer;<span class="comment">//buffer for observation to calculate average corresponding to model pixel</span></div>
-<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>       vector<double> model1LineBuffer;</div>
-<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>       vector<double> model2LineBuffer;</div>
-<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>       vector<double> model1buffer;<span class="comment">//buffer for model 1 to calculate time regression based on window</span></div>
-<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>       vector<double> model2buffer;<span class="comment">//buffer for model 2 to calculate time regression based on window</span></div>
-<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>       vector<double> uncertObsLineBuffer;</div>
-<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>       vector<double> estReadBuffer;</div>
-<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>       <span class="comment">// vector<double> estWindowBuffer;//buffer for estimate to calculate average corresponding to model pixel</span></div>
-<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>       vector<double> uncertReadBuffer;</div>
-<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>       vector<double> estWriteBuffer(ncol);</div>
-<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>       vector<double> uncertWriteBuffer(ncol);</div>
-<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>       <span class="comment">// vector<double> lineMask;</span></div>
-<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span> </div>
-<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>       <span class="comment">//initialize obsLineVector</span></div>
-<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>       <span class="keywordflow">if</span>(update){</div>
-<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>     assert(down_opt[0]%2);<span class="comment">//window size must be odd </span></div>
-<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iline=-down_opt[0]/2;iline<down_opt[0]/2+1;++iline){</div>
-<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>       <span class="keywordflow">if</span>(iline<0)<span class="comment">//replicate line 0</span></div>
-<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>         imgReaderObs.readData(obsLineVector[iline+down_opt[0]/2],GDT_Float64,0,0);</div>
-<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>         imgReaderObs.readData(obsLineVector[iline+down_opt[0]/2],GDT_Float64,iline,0);</div>
-<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>     }</div>
-<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>       }</div>
-<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<imgWriterEst.nrOfRow();++irow){</div>
-<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>     assert(irow<imgReaderEst.nrOfRow());</div>
-<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>     <span class="comment">//do not read from imgReaderObs, because we read entire window for each pixel...</span></div>
-<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>     imgReaderEst.readData(estReadBuffer,GDT_Float64,irow,0);</div>
-<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>     imgReaderEst.readData(uncertReadBuffer,GDT_Float64,irow,1);</div>
-<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>     <span class="comment">//read model2 in case current estimate is nodata</span></div>
-<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>     imgReaderEst.image2geo(0,irow,geox,geoy);</div>
-<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>     imgReaderModel2.geo2image(geox,geoy,modCol,modRow);</div>
-<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>     assert(modRow>=0&&modRow<imgReaderModel2.nrOfRow());</div>
-<div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>     imgReaderModel2.readData(model2LineBuffer,GDT_Float64,modRow,0);</div>
-<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span> </div>
-<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>     imgReaderModel1.geo2image(geox,geoy,modCol,modRow);</div>
-<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>     assert(modRow>=0&&modRow<imgReaderModel1.nrOfRow());</div>
-<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>     imgReaderModel1.readData(model1LineBuffer,GDT_Float64,modRow,0);</div>
-<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span> </div>
-<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>     <span class="keywordflow">if</span>(update){</div>
-<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>       <span class="keywordtype">int</span> maxRow=(irow+down_opt[0]/2<imgReaderEst.nrOfRow()) ? irow+down_opt[0]/2 : imgReaderEst.nrOfRow()-1;</div>
-<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>       obsLineVector.erase(obsLineVector.begin());</div>
-<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>       imgReaderObs.readData(obsLineBuffer,GDT_Float64,maxRow,0);</div>
-<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>       obsLineVector.push_back(obsLineBuffer);</div>
-<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>       obsLineBuffer=obsLineVector[down_opt[0]/2];</div>
-<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>       <span class="comment">// imgReaderObs.readData(obsLineBuffer,GDT_Float64,irow,0);</span></div>
-<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>       <span class="keywordflow">if</span>(imgReaderObs.nrOfBand()>1)</div>
-<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>         imgReaderObs.readData(uncertObsLineBuffer,GDT_Float64,irow,1);</div>
-<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>     }</div>
-<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>     <span class="comment">// double oldRowMask=-1;//keep track of row mask to optimize number of line readings</span></div>
-<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<imgWriterEst.nrOfCol();++icol){</div>
-<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>       imgReaderEst.image2geo(icol,irow,geox,geoy);</div>
-<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>       <span class="keywordtype">int</span> minCol=(icol>down_opt[0]/2) ? icol-down_opt[0]/2 : 0;</div>
-<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>       <span class="keywordtype">int</span> maxCol=(icol+down_opt[0]/2<imgReaderEst.nrOfCol()) ? icol+down_opt[0]/2 : imgReaderEst.nrOfCol()-1;</div>
-<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>       <span class="keywordtype">int</span> minRow=(irow>down_opt[0]/2) ? irow-down_opt[0]/2 : 0;</div>
-<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>       <span class="keywordtype">int</span> maxRow=(irow+down_opt[0]/2<imgReaderEst.nrOfRow()) ? irow+down_opt[0]/2 : imgReaderEst.nrOfRow()-1;</div>
-<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>       <span class="keywordflow">if</span>(update){</div>
-<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>         obsWindowBuffer.clear();</div>
-<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iline=0;iline<obsLineVector.size();++iline){</div>
-<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=minCol;isample<=maxCol;++isample){</div>
-<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>         assert(isample<obsLineVector[iline].size());</div>
-<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>         obsWindowBuffer.push_back(obsLineVector[iline][isample]);</div>
-<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>           }</div>
-<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>         }</div>
-<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>         <span class="comment">// imgReaderObs.readDataBlock(obsWindowBuffer,GDT_Float64,minCol,maxCol,minRow,maxRow,0);</span></div>
-<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>       }</div>
-<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>       <span class="keywordtype">double</span> estValue=estReadBuffer[icol];</div>
-<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>       <span class="keywordtype">double</span> estMeanValue=0;<span class="comment">//stat.mean(estWindowBuffer);</span></div>
-<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>       <span class="keywordtype">double</span> nvalid=0;</div>
-<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>       <span class="comment">//time update</span></div>
-<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>       imgReaderModel2.geo2image(geox,geoy,modCol,modRow);</div>
-<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>       assert(modRow>=0&&modRow<imgReaderModel2.nrOfRow());</div>
-<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>       <span class="keywordtype">double</span> modValue=model2LineBuffer[modCol];</div>
-<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>       <span class="keywordtype">bool</span> estNodata=imgReaderEst.isNoData(estValue);</div>
-<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>       <span class="keywordflow">if</span>(estNodata){</div>
-<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>         <span class="comment">//we have not found any valid data yet, better here to take the current model value if valid</span></div>
-<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>         <span class="keywordflow">if</span>(imgReaderModel2.isNoData(modValue)){<span class="comment">//if both estimate and model are no-data, set obs to nodata</span></div>
-<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>           estWriteBuffer[icol]=obsnodata_opt[0];</div>
-<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>           uncertWriteBuffer[icol]=uncertNodata_opt[0];</div>
-<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>         }</div>
-<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>           estWriteBuffer[icol]=modValue;</div>
-<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>           uncertWriteBuffer[icol]=uncertModel_opt[0]*stdDev;</div>
-<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>         }</div>
-<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>       }   </div>
-<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>         <span class="keywordflow">if</span>(window_opt[0]>0){</div>
-<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>           <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>         <span class="comment">// imgReaderModel2.geo2image(geox,geoy,modCol,modRow);//did that already</span></div>
-<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>         minCol=(modCol>window_opt[0]/2) ? modCol-window_opt[0]/2 : 0;</div>
-<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>         maxCol=(modCol+window_opt[0]/2<imgReaderModel2.nrOfCol()) ? modCol+window_opt[0]/2 : imgReaderModel2.nrOfCol()-1;</div>
-<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>         minRow=(modRow>window_opt[0]/2) ? modRow-window_opt[0]/2 : 0;</div>
-<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>         maxRow=(modRow+window_opt[0]/2<imgReaderModel2.nrOfRow()) ? modRow+window_opt[0]/2 : imgReaderModel2.nrOfRow()-1;</div>
-<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>         imgReaderModel2.readDataBlock(model2buffer,GDT_Float64,minCol,maxCol,minRow,maxRow,0);</div>
-<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span> </div>
-<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>         imgReaderModel1.geo2image(geox,geoy,modCol,modRow);</div>
-<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>         assert(modRow>=0&&modRow<imgReaderModel1.nrOfRow());</div>
-<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>         minCol=(modCol>window_opt[0]/2) ? modCol-window_opt[0]/2 : 0;</div>
-<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>         maxCol=(modCol+window_opt[0]/2<imgReaderModel1.nrOfCol()) ? modCol+window_opt[0]/2 : imgReaderModel1.nrOfCol()-1;</div>
-<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>         minRow=(modRow>window_opt[0]/2) ? modRow-window_opt[0]/2 : 0;</div>
-<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>         maxRow=(modRow+window_opt[0]/2<imgReaderModel1.nrOfRow()) ? modRow+window_opt[0]/2 : imgReaderModel1.nrOfRow()-1;</div>
-<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>         imgReaderModel1.readDataBlock(model1buffer,GDT_Float64,minCol,maxCol,minRow,maxRow,0);</div>
-<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>         <span class="comment">// imgReaderEst.image2geo(icol,irow,geox,geoy);</span></div>
-<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>           }</div>
-<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>           <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorString){</div>
-<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>         cerr << <span class="stringliteral">"Error reading data block for "</span> << minCol << <span class="stringliteral">"-"</span> << maxCol << <span class="stringliteral">", "</span> << minRow << <span class="stringliteral">"-"</span> << maxRow << endl;</div>
-<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>           }</div>
-<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>           <span class="comment">//erase no-data from buffer</span></div>
-<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>           vector<double>::iterator it1=model1buffer.begin();</div>
-<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>           vector<double>::iterator it2=model2buffer.begin();</div>
-<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>           <span class="keywordflow">while</span>(it1!=model1buffer.end()&&it2!=model2buffer.end()){</div>
-<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>         <span class="comment">//erase nodata</span></div>
-<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>         <span class="keywordtype">bool</span> modNodata=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>         modNodata=modNodata||imgReaderModel1.isNoData(*it1);</div>
-<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>         modNodata=modNodata||imgReaderModel2.isNoData(*it2);</div>
-<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>         <span class="keywordflow">if</span>(modNodata){</div>
-<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>           model1buffer.erase(it1);</div>
-<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>           model2buffer.erase(it2);</div>
-<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>         }</div>
-<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>           ++it1;</div>
-<div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>           ++it2;</div>
-<div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>         }</div>
-<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>           }</div>
-<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>           <span class="keywordflow">if</span>(model1buffer.size()>minreg_opt[0]&&model2buffer.size()>minreg_opt[0]){</div>
-<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>         errMod=stat.linear_regression_err(model1buffer,model2buffer,c0mod,c1mod);</div>
-<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>         errMod*=regTime_opt[0];</div>
-<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>           }</div>
-<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>           <span class="keywordflow">else</span>{<span class="comment">//use global regression...</span></div>
-<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>         c0mod=c0modGlobal;</div>
-<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>         c1mod=c1modGlobal;</div>
-<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>           }</div>
-<div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>         }</div>
-<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>           c0mod=c0modGlobal;</div>
-<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>           c1mod=c1modGlobal;</div>
-<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>         }</div>
-<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>         <span class="keywordtype">double</span> regTime=c0mod+c1mod*estValue;</div>
-<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>         <span class="keywordtype">double</span> regSensor=c0obs+c1obs*modValue;</div>
-<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span> </div>
-<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>         <span class="keywordflow">if</span>(regSensor_opt[0]<=0)</div>
-<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>           estWriteBuffer[icol]=regTime;</div>
-<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>           <span class="keywordtype">double</span> certMod=1;</div>
-<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>           <span class="keywordtype">double</span> certObs=1;</div>
-<div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>           <span class="keywordtype">double</span> certNorm=(errMod*errMod+errObs*errObs);</div>
-<div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>           <span class="keywordflow">if</span>(certNorm>eps_opt[0]){</div>
-<div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>         certMod=errObs*errObs/certNorm;</div>
-<div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>         certObs=errMod*errMod/certNorm;</div>
-<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>           }</div>
-<div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>           <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>         certMod=0.5;</div>
-<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>         certObs=0.5;</div>
-<div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>           }</div>
-<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>           estWriteBuffer[icol]=regTime*certObs+regSensor*certMod;</div>
-<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>         }         </div>
-<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span> </div>
-<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>         <span class="keywordflow">if</span>(obsmin_opt.size()){</div>
-<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>           <span class="keywordflow">if</span>(estWriteBuffer[icol]<obsmin_opt[0])</div>
-<div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>         estWriteBuffer[icol]=obsnodata_opt[0];</div>
-<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>         }</div>
-<div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>         <span class="keywordflow">if</span>(obsmax_opt.size()){</div>
-<div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>           <span class="keywordflow">if</span>(estWriteBuffer[icol]>obsmax_opt[0])</div>
-<div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>         estWriteBuffer[icol]=obsnodata_opt[0];</div>
-<div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>         }</div>
-<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span> </div>
-<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>         <span class="keywordtype">double</span> totalUncertainty=0;</div>
-<div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>         <span class="keywordflow">if</span>(errMod<eps_opt[0])</div>
-<div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>           totalUncertainty=errObs;</div>
-<div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(errObs<eps_opt[0])</div>
-<div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>           totalUncertainty=errMod;</div>
-<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>           totalUncertainty=1.0/errMod/errMod+1/errObs/errObs;</div>
-<div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>           totalUncertainty=sqrt(1.0/totalUncertainty);</div>
-<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>         }</div>
-<div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>         uncertWriteBuffer[icol]=totalUncertainty+uncertReadBuffer[icol];</div>
-<div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>       }</div>
-<div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>       <span class="comment">//measurement update</span></div>
-<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>       <span class="keywordflow">if</span>(update&&!imgReaderObs.isNoData(obsLineBuffer[icol])){</div>
-<div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>         <span class="keywordtype">double</span> kalmanGain=1;</div>
-<div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>         <span class="keywordtype">double</span> uncertObs=uncertObs_opt[0];</div>
-<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>         <span class="keywordflow">if</span>(uncertObsLineBuffer.size()>icol)</div>
-<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>           uncertObs=uncertObsLineBuffer[icol];</div>
-<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(weight_opt.size()>1||deltaObs_opt.size()){</div>
-<div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>           <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> statobs;</div>
-<div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>           statobs.setNoDataValues(obsnodata_opt);</div>
-<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>           <span class="keywordtype">double</span> obsMeanValue=(statobs.mean(obsWindowBuffer)-c0obs)/c1obs;</div>
-<div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>           <span class="keywordtype">double</span> difference=obsMeanValue-modValue;</div>
-<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>           <span class="keywordflow">if</span>(modValue){</div>
-<div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>         <span class="keywordtype">double</span> relativeDifference=difference/modValue;</div>
-<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>         <span class="keywordflow">if</span>(deltaObs_opt.size()){</div>
-<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>           assert(deltaObs_opt.size()>1);</div>
-<div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>           <span class="keywordflow">if</span>(100*relativeDifference<deltaObs_opt[0])<span class="comment">//lower bound</span></div>
-<div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>             kalmanGain=0;</div>
-<div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>           <span class="keywordflow">else</span> <span class="keywordflow">if</span>(100*relativeDifference>deltaObs_opt[1])<span class="comment">//upper bound</span></div>
-<div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>             kalmanGain=0;</div>
-<div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>         }</div>
-<div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(weight_opt.size()){</div>
-<div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>           assert(weight_opt.size()>1);</div>
-<div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>           <span class="keywordflow">if</span>(obsMeanValue<modValue)</div>
-<div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>             uncertObs=-weight_opt[0]*relativeDifference;</div>
-<div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>           <span class="keywordflow">else</span> <span class="keywordflow">if</span>(obsMeanValue>modValue)</div>
-<div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>             uncertObs=weight_opt[1]*relativeDifference;</div>
-<div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>         }</div>
-<div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>           }</div>
-<div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>           <span class="keywordflow">if</span>(uncertObs<=0)</div>
-<div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>         uncertObs=0;</div>
-<div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>           <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>         cout << <span class="stringliteral">"obsMeanValue:"</span> << obsMeanValue << <span class="stringliteral">", modValue: "</span> << modValue << endl;</div>
-<div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>         }</div>
-<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>         <span class="keywordflow">if</span>(kalmanGain>0){</div>
-<div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>           <span class="keywordflow">if</span>((uncertWriteBuffer[icol]+uncertObs)>eps_opt[0])</div>
-<div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>         kalmanGain=uncertWriteBuffer[icol]/(uncertWriteBuffer[icol]+uncertObs);</div>
-<div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>         }</div>
-<div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>         assert(kalmanGain<=1);</div>
-<div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>         estWriteBuffer[icol]+=kalmanGain*(obsLineBuffer[icol]-estWriteBuffer[icol]);</div>
-<div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>         <span class="keywordflow">if</span>(obsmin_opt.size()){</div>
-<div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>           <span class="keywordflow">if</span>(estWriteBuffer[icol]<obsmin_opt[0])</div>
-<div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>         estWriteBuffer[icol]=obsnodata_opt[0];</div>
-<div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>         }</div>
-<div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>         <span class="keywordflow">if</span>(obsmax_opt.size()){</div>
-<div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>           <span class="keywordflow">if</span>(estWriteBuffer[icol]>obsmax_opt[0])</div>
-<div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>         estWriteBuffer[icol]=obsnodata_opt[0];</div>
-<div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>         }</div>
-<div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>         uncertWriteBuffer[icol]*=(1-kalmanGain);</div>
-<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>       }</div>
-<div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>       <span class="comment">//test</span></div>
-<div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>       <span class="keywordflow">if</span>(!imgReaderObs.isNoData(estWriteBuffer[icol])){</div>
-<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>         <span class="keywordflow">if</span>(obsmin_opt.size())</div>
-<div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>           assert(estWriteBuffer[icol]>=obsmin_opt[0]);</div>
-<div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>         <span class="keywordflow">if</span>(obsmax_opt.size())</div>
-<div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>           assert(estWriteBuffer[icol]<=obsmax_opt[0]);</div>
-<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>       }</div>
-<div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>     }</div>
-<div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>     imgWriterEst.writeData(estWriteBuffer,GDT_Float64,irow,0);</div>
-<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>     imgWriterEst.writeData(uncertWriteBuffer,GDT_Float64,irow,1);</div>
-<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>     progress=<span class="keyword">static_cast<</span><span class="keywordtype">float</span><span class="keyword">></span>((irow+1.0)/imgWriterEst.nrOfRow());</div>
-<div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>       }</div>
-<div class="line"><a name="l01721"></a><span class="lineno"> 1721</span> </div>
-<div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>       imgWriterEst.close();</div>
-<div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>       imgReaderEst.close();</div>
-<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span> </div>
-<div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>       <span class="keywordflow">if</span>(update){</div>
-<div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>     imgReaderObs.close();</div>
-<div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>     --obsindex;</div>
-<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>       }</div>
-<div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>       imgReaderModel1.close();</div>
-<div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>       imgReaderModel2.close();</div>
-<div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>     }</div>
-<div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>   }</div>
-<div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>   <span class="keywordflow">if</span>(find(direction_opt.begin(),direction_opt.end(),<span class="stringliteral">"smooth"</span>)!=direction_opt.end()){</div>
-<div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>     cout << <span class="stringliteral">"Running smooth model"</span> << endl;</div>
-<div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>     obsindex=0;</div>
-<div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> modindex=0;modindex<model_opt.size();++modindex){</div>
-<div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>       <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>     cout << <span class="stringliteral">"processing time "</span> << tmodel_opt[modindex] << endl;</div>
-<div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>     <span class="keywordflow">if</span>(obsindex<relobsindex.size())</div>
-<div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>       cout << <span class="stringliteral">"next observation "</span> << tmodel_opt[relobsindex[obsindex]] << endl;</div>
-<div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>       cout << <span class="stringliteral">"There is no next observation"</span> << endl;</div>
-<div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>       }</div>
-<div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>       <span class="keywordtype">string</span> output;</div>
-<div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>       <span class="keywordflow">if</span>(outputfb_opt.size()==model_opt.size())</div>
-<div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>     output=outputfb_opt[modindex];</div>
-<div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>     ostringstream outputstream;</div>
-<div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>     outputstream << outputfb_opt[0] << <span class="stringliteral">"_"</span>;</div>
-<div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>     outputstream << setfill(<span class="charliteral">'0'</span>) << setw(ndigit) << tmodel_opt[modindex];</div>
-<div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>     outputstream << <span class="stringliteral">".tif"</span>;</div>
-<div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>     <span class="comment">// outputstream << outputfb_opt[0] << "_" << tmodel_opt[modindex] << ".tif";</span></div>
-<div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>     output=outputstream.str();</div>
-<div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>       }</div>
-<div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>     </div>
-<div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>       <span class="comment">//two band output band0=estimation, band1=uncertainty</span></div>
-<div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>       imgWriterEst.open(output,ncol,nrow,2,GDT_Float64,imageType,option_opt);</div>
-<div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>       imgWriterEst.setProjectionProj4(projection_opt[0]);</div>
-<div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>       imgWriterEst.setGeoTransform(geotransform);</div>
-<div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>       imgWriterEst.GDALSetNoDataValue(obsnodata_opt[0]);</div>
-<div class="line"><a name="l01762"></a><span class="lineno"> 1762</span> </div>
-<div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>       <span class="comment">//open forward and backward estimates</span></div>
-<div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>       <span class="comment">//we assume forward in model and backward in observation...</span></div>
-<div class="line"><a name="l01765"></a><span class="lineno"> 1765</span> </div>
-<div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>       <span class="keywordtype">string</span> inputfw;</div>
-<div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>       <span class="keywordtype">string</span> inputbw;</div>
-<div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>       <span class="keywordflow">if</span>(outputfw_opt.size()==model_opt.size())</div>
-<div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>     inputfw=outputfw_opt[modindex];</div>
-<div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>     ostringstream outputstream;</div>
-<div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>     outputstream << outputfw_opt[0] << <span class="stringliteral">"_"</span>;</div>
-<div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>     outputstream << setfill(<span class="charliteral">'0'</span>) << setw(ndigit) << tmodel_opt[modindex];</div>
-<div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>     outputstream << <span class="stringliteral">".tif"</span>;</div>
-<div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>     <span class="comment">// outputstream << outputfw_opt[0] << "_" << tmodel_opt[modindex] << ".tif";</span></div>
-<div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>     inputfw=outputstream.str();</div>
-<div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>       }</div>
-<div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>       <span class="keywordflow">if</span>(outputbw_opt.size()==model_opt.size())</div>
-<div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>     inputbw=outputbw_opt[modindex];</div>
-<div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>     ostringstream outputstream;</div>
-<div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>     outputstream << outputbw_opt[0] << <span class="stringliteral">"_"</span>;</div>
-<div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>     outputstream << setfill(<span class="charliteral">'0'</span>) << setw(ndigit) << tmodel_opt[modindex];</div>
-<div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>     outputstream << <span class="stringliteral">".tif"</span>;</div>
-<div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>     <span class="comment">// outputstream << outputbw_opt[0] << "_" << tmodel_opt[modindex] << ".tif";</span></div>
-<div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>     inputbw=outputstream.str();</div>
-<div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>       }</div>
-<div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>       <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> imgReaderForward(inputfw);</div>
-<div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>       <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> imgReaderBackward(inputbw);</div>
-<div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>       imgReaderForward.setNoData(obsnodata_opt);</div>
-<div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>       <span class="keywordflow">if</span>(obsoffset_opt.size())</div>
-<div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>     imgReaderForward.setOffset(obsoffset_opt[0]);</div>
-<div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>       <span class="keywordflow">if</span>(obsscale_opt.size())</div>
-<div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>     imgReaderForward.setScale(obsscale_opt[0]);</div>
-<div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>       imgReaderBackward.setNoData(obsnodata_opt);</div>
-<div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>       <span class="keywordflow">if</span>(obsoffset_opt.size())</div>
-<div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>     imgReaderBackward.setOffset(obsoffset_opt[0]);</div>
-<div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>       <span class="keywordflow">if</span>(obsscale_opt.size())</div>
-<div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>     imgReaderBackward.setScale(obsscale_opt[0]);</div>
-<div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>       </div>
-<div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>       vector<double> estForwardBuffer;</div>
-<div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>       vector<double> estBackwardBuffer;</div>
-<div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>       vector<double> uncertObsLineBuffer;</div>
-<div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>       vector<double> uncertForwardBuffer;</div>
-<div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>       vector<double> uncertBackwardBuffer;</div>
-<div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>       vector<double> uncertReadBuffer;</div>
-<div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>       vector<double> estWriteBuffer(ncol);</div>
-<div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>       vector<double> uncertWriteBuffer(ncol);</div>
-<div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>       <span class="comment">// vector<double> lineMask;</span></div>
-<div class="line"><a name="l01810"></a><span class="lineno"> 1810</span> </div>
-<div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>       <span class="keywordtype">bool</span> update=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>       <span class="keywordflow">if</span>(obsindex<relobsindex.size()){</div>
-<div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>     update=(relobsindex[obsindex]==modindex);</div>
-<div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>       }</div>
-<div class="line"><a name="l01815"></a><span class="lineno"> 1815</span> </div>
-<div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>       <span class="keywordflow">if</span>(update){</div>
-<div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>       cout << <span class="stringliteral">"***update "</span> << relobsindex[obsindex] << <span class="stringliteral">" = "</span> << modindex << <span class="stringliteral">" "</span> << observation_opt[obsindex] << <span class="stringliteral">" ***"</span> << endl;</div>
-<div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>     imgReaderObs.open(observation_opt[obsindex]);</div>
-<div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>     imgReaderObs.getGeoTransform(geotransform);</div>
-<div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>     imgReaderObs.setNoData(obsnodata_opt);</div>
-<div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>     <span class="keywordflow">if</span>(obsoffset_opt.size())</div>
-<div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>       imgReaderObs.setOffset(obsoffset_opt[0]);</div>
-<div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>     <span class="keywordflow">if</span>(obsscale_opt.size())</div>
-<div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>       imgReaderObs.setScale(obsscale_opt[0]);</div>
-<div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>     <span class="comment">//calculate regression between model and observation</span></div>
-<div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>       }</div>
-<div class="line"><a name="l01828"></a><span class="lineno"> 1828</span> </div>
-<div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>       pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l01830"></a><span class="lineno"> 1830</span> </div>
-<div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<imgWriterEst.nrOfRow();++irow){</div>
-<div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>     assert(irow<imgReaderForward.nrOfRow());</div>
-<div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>     assert(irow<imgReaderBackward.nrOfRow());</div>
-<div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>     imgReaderForward.readData(estForwardBuffer,GDT_Float64,irow,0);</div>
-<div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>     imgReaderBackward.readData(estBackwardBuffer,GDT_Float64,irow,0);</div>
-<div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>     imgReaderForward.readData(uncertForwardBuffer,GDT_Float64,irow,1);</div>
-<div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>     imgReaderBackward.readData(uncertBackwardBuffer,GDT_Float64,irow,1);</div>
-<div class="line"><a name="l01838"></a><span class="lineno"> 1838</span> </div>
-<div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>     <span class="keywordflow">if</span>(update){</div>
-<div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>       imgReaderObs.readData(estWriteBuffer,GDT_Float64,irow,0);</div>
-<div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>       <span class="keywordflow">if</span>(imgReaderObs.nrOfBand()>1)</div>
-<div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>         imgReaderObs.readData(uncertObsLineBuffer,GDT_Float64,irow,1);</div>
-<div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>     }</div>
-<div class="line"><a name="l01844"></a><span class="lineno"> 1844</span> </div>
-<div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>     <span class="comment">// double oldRowMask=-1;//keep track of row mask to optimize number of line readings</span></div>
-<div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<imgWriterEst.nrOfCol();++icol){</div>
-<div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>       imgWriterEst.image2geo(icol,irow,geox,geoy);</div>
-<div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>       <span class="keywordtype">double</span> A=estForwardBuffer[icol];</div>
-<div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>       <span class="keywordtype">double</span> B=estBackwardBuffer[icol];</div>
-<div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>       <span class="keywordtype">double</span> C=uncertForwardBuffer[icol]*uncertForwardBuffer[icol];</div>
-<div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>       <span class="keywordtype">double</span> D=uncertBackwardBuffer[icol]*uncertBackwardBuffer[icol];</div>
-<div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>       <span class="keywordtype">double</span> uncertObs=uncertObs_opt[0];</div>
-<div class="line"><a name="l01853"></a><span class="lineno"> 1853</span> </div>
-<div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>       <span class="comment">// if(update){//check for nodata in observation</span></div>
-<div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>       <span class="comment">//   if(imgReaderObs.isNoData(estWriteBuffer[icol]))</span></div>
-<div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>       <span class="comment">//     uncertObs=uncertNodata_opt[0];</span></div>
-<div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>       <span class="comment">//   else if(uncertObsLineBuffer.size()>icol)</span></div>
-<div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>       <span class="comment">//     uncertObs=uncertObsLineBuffer[icol];</span></div>
-<div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>       <span class="comment">// }</span></div>
-<div class="line"><a name="l01860"></a><span class="lineno"> 1860</span> </div>
-<div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>       <span class="keywordtype">double</span> noemer=(C+D);</div>
-<div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>       <span class="comment">//todo: consistently check for division by zero...</span></div>
-<div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>       <span class="keywordflow">if</span>(imgReaderForward.isNoData(A)&&imgReaderBackward.isNoData(B)){</div>
-<div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>         estWriteBuffer[icol]=obsnodata_opt[0];</div>
-<div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>         uncertWriteBuffer[icol]=uncertNodata_opt[0];</div>
-<div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>       }</div>
-<div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(imgReaderForward.isNoData(A)){</div>
-<div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>         estWriteBuffer[icol]=B;</div>
-<div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>         uncertWriteBuffer[icol]=uncertBackwardBuffer[icol];</div>
-<div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>       }</div>
-<div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(imgReaderForward.isNoData(B)){</div>
-<div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>         estWriteBuffer[icol]=A;</div>
-<div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>         uncertWriteBuffer[icol]=uncertForwardBuffer[icol];</div>
-<div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>       }</div>
-<div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>         <span class="keywordflow">if</span>(noemer<eps_opt[0]){<span class="comment">//simple average if both uncertainties are ~>0</span></div>
-<div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>           estWriteBuffer[icol]=0.5*(A+B);</div>
-<div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>           uncertWriteBuffer[icol]=uncertObs;</div>
-<div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>         }</div>
-<div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>           estWriteBuffer[icol]=(A*D+B*C)/noemer;</div>
-<div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>           <span class="keywordflow">if</span>(obsmin_opt.size()){</div>
-<div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>         <span class="keywordflow">if</span>(estWriteBuffer[icol]<obsmin_opt[0])</div>
-<div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>         estWriteBuffer[icol]=obsnodata_opt[0];</div>
-<div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>           }</div>
-<div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>           <span class="keywordflow">if</span>(obsmax_opt.size()){</div>
-<div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>         <span class="keywordflow">if</span>(estWriteBuffer[icol]>obsmax_opt[0])</div>
-<div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>         estWriteBuffer[icol]=obsnodata_opt[0];</div>
-<div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>           }</div>
-<div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>           <span class="keywordtype">double</span> P=0;</div>
-<div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>           <span class="keywordflow">if</span>(C>eps_opt[0])</div>
-<div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>         P+=1.0/C;</div>
-<div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>           <span class="keywordflow">if</span>(D>eps_opt[0])</div>
-<div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>         P+=1.0/D;</div>
-<div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>           <span class="keywordflow">if</span>(uncertObs*uncertObs>eps_opt[0])</div>
-<div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>         P-=1.0/uncertObs/uncertObs;</div>
-<div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>           <span class="keywordflow">if</span>(P>eps_opt[0])</div>
-<div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>         P=sqrt(1.0/P);</div>
-<div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>         P=0;</div>
-<div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>           uncertWriteBuffer[icol]=P;</div>
-<div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>         }</div>
-<div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>       }</div>
-<div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>       <span class="comment">//test</span></div>
-<div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>       <span class="keywordflow">if</span>(!imgReaderObs.isNoData(estWriteBuffer[icol])){</div>
-<div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>         <span class="keywordflow">if</span>(obsmin_opt.size())</div>
-<div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>           assert(estWriteBuffer[icol]>=obsmin_opt[0]);</div>
-<div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>         <span class="keywordflow">if</span>(obsmax_opt.size())</div>
-<div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>           assert(estWriteBuffer[icol]<=obsmax_opt[0]);</div>
-<div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>       }</div>
-<div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>     }</div>
-<div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>     imgWriterEst.writeData(estWriteBuffer,GDT_Float64,irow,0);</div>
-<div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>     imgWriterEst.writeData(uncertWriteBuffer,GDT_Float64,irow,1);</div>
-<div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>     progress=<span class="keyword">static_cast<</span><span class="keywordtype">float</span><span class="keyword">></span>((irow+1.0)/imgWriterEst.nrOfRow());</div>
-<div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>       }</div>
-<div class="line"><a name="l01917"></a><span class="lineno"> 1917</span> </div>
-<div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>       imgWriterEst.close();</div>
-<div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>       imgReaderForward.close();</div>
-<div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>       imgReaderBackward.close();</div>
-<div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>       <span class="keywordflow">if</span>(update){</div>
-<div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>     imgReaderObs.close();</div>
-<div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>     ++obsindex;</div>
-<div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>       }</div>
-<div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>     }</div>
-<div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>   }</div>
-<div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>   <span class="comment">// if(mask_opt.size())</span></div>
-<div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>   <span class="comment">//   maskReader.close();</span></div>
-<div class="line"><a name="l01929"></a><span class="lineno"> 1929</span> }</div>
-<div class="line"><a name="l01930"></a><span class="lineno"> 1930</span> </div>
-<div class="ttc" id="classimgregression_1_1ImgRegression_html"><div class="ttname"><a href="classimgregression_1_1ImgRegression.html">imgregression::ImgRegression</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgRegression_8h_source.html#l00030">ImgRegression.h:30</a></div></div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-<div class="ttc" id="classImgWriterGdal_html"><div class="ttname"><a href="classImgWriterGdal.html">ImgWriterGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgWriterGdal_8h_source.html#l00033">ImgWriterGdal.h:33</a></div></div>
-<div class="ttc" id="classstatfactory_1_1StatFactory_html"><div class="ttname"><a href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></div><div class="ttdef"><b>Definition:</b> <a href="StatFactory_8h_source.html#l00043">StatFactory.h:43</a></div></div>
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Tue Jan 19 2016 16:07:01 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkkalman_8cc_source.html b/doc/html/pkkalman_8cc_source.html
deleted file mode 100644
index 135fe06..0000000
--- a/doc/html/pkkalman_8cc_source.html
+++ /dev/null
@@ -1,1956 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/pkkalman.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkkalman.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pkkalman.cc: produce kalman filtered raster time series</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <sstream></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <vector></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <algorithm></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "base/Vector2d.h"</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "imageclasses/ImgReaderGdal.h"</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "imageclasses/ImgWriterGdal.h"</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "imageclasses/ImgUpdaterGdal.h"</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include "algorithms/StatFactory.h"</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> </div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="comment">/******************************************************************************/</span></div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span> <span class="comment">/*------------------</span></div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span> <span class="comment">  Main procedure</span></div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span> <span class="comment">  ----------------*/</span></div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc,<span class="keywordtype">char</span> **argv) {</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> direction_opt(<span class="stringliteral">"dir"</span>,<span class="stringliteral">"direction"</span>,<span class="stringliteral">"direction to run model (forward|backward|smooth)"</span>,<span class="stringliteral">"forward"</span>);</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> model_opt(<span class="stringliteral">"mod"</span>,<span class="stringliteral">"model"</span>,<span class="stringliteral">"coarse spatial resolution input datasets(s) used as model. Use either multi-band input (-model multiband_model.tif) or multiple single-band inputs (-mod model1 -mod model2 etc.)"</span>);</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> modelmask_opt(<span class="stringliteral">"modmask"</span>,<span class="stringliteral">"modmask"</span>,<span class="stringliteral">"model mask datasets(s). Must have same dimension as model input. Use either multi-band input or multiple single-band inputs"</span>);</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> observation_opt(<span class="stringliteral">"obs"</span>,<span class="stringliteral">"observation"</span>,<span class="stringliteral">"fine spatial resolution input dataset(s) used as observation. Use either multi-band input (-obs multiband_obs.tif) or multiple single-band inputs (-obs obs1 -obs obs2 etc.)"</spa [...]
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> observationmask_opt(<span class="stringliteral">"obsmask"</span>,<span class="stringliteral">"obsmask"</span>,<span class="stringliteral">"observation mask dataset(s). Must have same dimension as observation input (use multi-band input or multiple single-band inputs"</span>);</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> tmodel_opt(<span class="stringliteral">"tmod"</span>,<span class="stringliteral">"tmodel"</span>,<span class="stringliteral">"time sequence of model input. Sequence must have exact same length as model input. Leave empty to have default sequence 0,1,2,etc."</span>); </div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> tobservation_opt(<span class="stringliteral">"tobs"</span>,<span class="stringliteral">"tobservation"</span>,<span class="stringliteral">"time sequence of observation input. Sequence must have exact same length as observation input)"</span>); </div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  projection_opt(<span class="stringliteral">"a_srs"</span>, <span class="stringliteral">"a_srs"</span>, <span class="stringliteral">"Override the projection for the output file (leave blank to copy from input file, use epsg:3035 to use European projection and force to European grid"</span>);</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> outputfw_opt(<span class="stringliteral">"ofw"</span>, <span class="stringliteral">"outputfw"</span>, <span class="stringliteral">"Output raster dataset for forward model"</span>);</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> uncertfw_opt(<span class="stringliteral">"u_ofw"</span>, <span class="stringliteral">"u_outputfw"</span>, <span class="stringliteral">"Uncertainty output raster dataset for forward model"</span>);</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> outputbw_opt(<span class="stringliteral">"obw"</span>, <span class="stringliteral">"outputbw"</span>, <span class="stringliteral">"Output raster dataset for backward model"</span>);</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> uncertbw_opt(<span class="stringliteral">"u_obw"</span>, <span class="stringliteral">"u_outputbw"</span>, <span class="stringliteral">"Uncertainty output raster dataset for backward model"</span>);</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> outputfb_opt(<span class="stringliteral">"ofb"</span>, <span class="stringliteral">"outputfb"</span>, <span class="stringliteral">"Output raster dataset for smooth model"</span>);</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> uncertfb_opt(<span class="stringliteral">"u_ofb"</span>, <span class="stringliteral">"u_outputfb"</span>, <span class="stringliteral">"Uncertainty output raster dataset for smooth model"</span>);</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> gain_opt(<span class="stringliteral">"gain"</span>, <span class="stringliteral">"gain"</span>, <span class="stringliteral">"Output raster dataset for gain"</span>);</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> modnodata_opt(<span class="stringliteral">"modnodata"</span>, <span class="stringliteral">"modnodata"</span>, <span class="stringliteral">"invalid value for model input"</span>, 0);</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> obsnodata_opt(<span class="stringliteral">"obsnodata"</span>, <span class="stringliteral">"obsnodata"</span>, <span class="stringliteral">"invalid value for observation input"</span>, 0);</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> obsmin_opt(<span class="stringliteral">"obsmin"</span>, <span class="stringliteral">"obsmin"</span>, <span class="stringliteral">"Minimum value for observation data"</span>);</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> obsmax_opt(<span class="stringliteral">"obsmax"</span>, <span class="stringliteral">"obsmax"</span>, <span class="stringliteral">"Maximum value for observation data"</span>);</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> msknodata_opt(<span class="stringliteral">"msknodata"</span>, <span class="stringliteral">"msknodata"</span>, <span class="stringliteral">"Mask value not to consider"</span>, 0);</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> mskband_opt(<span class="stringliteral">"mskband"</span>, <span class="stringliteral">"mskband"</span>, <span class="stringliteral">"Mask band to read (0 indexed)"</span>, 0);</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> eps_opt(<span class="stringliteral">"eps"</span>, <span class="stringliteral">"eps"</span>, <span class="stringliteral">"epsilon for non zero division"</span>, 0.00001);</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> uncertModel_opt(<span class="stringliteral">"um"</span>, <span class="stringliteral">"uncertmodel"</span>, <span class="stringliteral">"Uncertainty of model"</span>,1);</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> uncertObs_opt(<span class="stringliteral">"uo"</span>, <span class="stringliteral">"uncertobs"</span>, <span class="stringliteral">"Uncertainty of valid observations"</span>,1);</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> processNoise_opt(<span class="stringliteral">"q"</span>, <span class="stringliteral">"q"</span>, <span class="stringliteral">"Process noise: expresses instability (variance) of proportions of fine res pixels within a moderate resolution pixel"</span>,1);</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> uncertNodata_opt(<span class="stringliteral">"unodata"</span>, <span class="stringliteral">"uncertnodata"</span>, <span class="stringliteral">"Uncertainty in case of no-data values in observation"</span>, 100);</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> down_opt(<span class="stringliteral">"down"</span>, <span class="stringliteral">"down"</span>, <span class="stringliteral">"Downsampling factor for reading model data to calculate regression"</span>);</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  otype_opt(<span class="stringliteral">"ot"</span>, <span class="stringliteral">"otype"</span>, <span class="stringliteral">"Data type for output image ({Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/CInt16/CInt32/CFloat32/CFloat64}). Empty string: inherit type from input image"</span>,<span class="stringlitera [...]
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  oformat_opt(<span class="stringliteral">"of"</span>, <span class="stringliteral">"oformat"</span>, <span class="stringliteral">"Output image format (see also gdal_translate)."</span>,<span class="stringliteral">"GTiff"</span>,2);</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> option_opt(<span class="stringliteral">"co"</span>, <span class="stringliteral">"co"</span>, <span class="stringliteral">"Creation option for output file. Multiple options can be specified."</span>);</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> verbose_opt(<span class="stringliteral">"v"</span>, <span class="stringliteral">"verbose"</span>, <span class="stringliteral">"verbose mode when positive"</span>, 0);</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span> </div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>   observationmask_opt.setHide(1);</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>   modelmask_opt.setHide(1);</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>   tmodel_opt.setHide(1);</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>   tobservation_opt.setHide(1);</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>   projection_opt.setHide(1);</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>   uncertfw_opt.setHide(1);</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>   uncertbw_opt.setHide(1);</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>   uncertfb_opt.setHide(1);</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>   obsmin_opt.setHide(1);</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>   obsmax_opt.setHide(1);</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>   msknodata_opt.setHide(1);</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>   mskband_opt.setHide(1);</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>   eps_opt.setHide(1);</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>   uncertNodata_opt.setHide(1);</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>   down_opt.setHide(1);</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>   otype_opt.setHide(1);</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>   oformat_opt.setHide(1);</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>   option_opt.setHide(1);</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>   verbose_opt.setHide(1);</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>   gain_opt.setHide(2);</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span> </div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>   <span class="keywordtype">bool</span> doProcess;<span class="comment">//stop process when program was invoked with help option (-h --help)</span></div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>     doProcess=direction_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>     model_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>     modelmask_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>     observation_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>     observationmask_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>     tmodel_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>     tobservation_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>     projection_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>     outputfw_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>     uncertfw_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>     outputbw_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>     uncertbw_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>     outputfb_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>     uncertfb_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>     gain_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>     modnodata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>     obsnodata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>     obsmin_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>     obsmax_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>     msknodata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>     mskband_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>     eps_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>     uncertModel_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>     uncertObs_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>     processNoise_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>     uncertNodata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>     down_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>     otype_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>     oformat_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>     option_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>     verbose_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>   }</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> predefinedString){</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>     std::cout << predefinedString << std::endl;</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>     exit(0);</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>   }</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>   <span class="keywordflow">if</span>(!doProcess){</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>     std::cerr << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << std::endl;</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>     exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>   }</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span> </div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>     ostringstream errorStream;</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>     <span class="keywordflow">if</span>(model_opt.size()<1){</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>       errorStream << <span class="stringliteral">"Error: no model dataset selected, use option -mod"</span> << endl;</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>       <span class="keywordflow">throw</span>(errorStream.str());</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>     }</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>     <span class="keywordflow">if</span>(observation_opt.size()<1){</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>       errorStream << <span class="stringliteral">"Error: no observation dataset selected, use option -obs"</span> << endl;</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>       <span class="keywordflow">throw</span>(errorStream.str());</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>     }</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>     <span class="keywordflow">if</span>(find(direction_opt.begin(),direction_opt.end(),<span class="stringliteral">"forward"</span>)!=direction_opt.end()){</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>       <span class="keywordflow">if</span>(outputfw_opt.empty()){</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>     errorStream << <span class="stringliteral">"Error: output forward datasets is not provided, use option -ofw"</span> << endl;</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>     <span class="keywordflow">throw</span>(errorStream.str());</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>       }</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>       <span class="keywordflow">if</span>(uncertfw_opt.empty()){</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>     ostringstream uncertStream;</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>     uncertStream << outputfw_opt[0] << <span class="stringliteral">"_uncert"</span>;</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>     uncertfw_opt.push_back(uncertStream.str());</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>       }</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>     }</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>     <span class="keywordflow">if</span>(find(direction_opt.begin(),direction_opt.end(),<span class="stringliteral">"backward"</span>)!=direction_opt.end()){</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>       <span class="keywordflow">if</span>(outputbw_opt.empty()){</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>     errorStream << <span class="stringliteral">"Error: output backward datasets is not provided, use option -obw"</span> << endl;</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>     <span class="keywordflow">throw</span>(errorStream.str());</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>       }</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>       <span class="keywordflow">if</span>(uncertbw_opt.empty()){</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>     ostringstream uncertStream;</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>     uncertStream << outputbw_opt[0] << <span class="stringliteral">"_uncert"</span>;</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>     uncertbw_opt.push_back(uncertStream.str());</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>       }</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>     }</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>     <span class="comment">// if(model_opt.size()<observation_opt.size()){</span></div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>     <span class="comment">//  errorStream << "Error: sequence of models should be larger than observations" << endl;</span></div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>     <span class="comment">//  throw(errorStream.str());</span></div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>     <span class="comment">// }</span></div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>     <span class="keywordflow">if</span>(tmodel_opt.empty()){</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>       cout << <span class="stringliteral">"Warning: model time sequence is not provided, self generating time sequence from model input"</span>  << endl;</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>     }</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>     <span class="keywordflow">if</span>(tobservation_opt.empty()){</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>       cout << <span class="stringliteral">"Warning: observation time sequence is not provided, self generating time sequence from observation input"</span> << endl;</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>     }</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>     <span class="keywordflow">if</span>(find(direction_opt.begin(),direction_opt.end(),<span class="stringliteral">"smooth"</span>)!=direction_opt.end()){</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>       <span class="keywordflow">if</span>(outputfw_opt.empty()){</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>     errorStream << <span class="stringliteral">"Error: output forward dataset is not provided, use option -ofw"</span> << endl;</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>     <span class="keywordflow">throw</span>(errorStream.str());</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>       }</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>       <span class="keywordflow">if</span>(outputbw_opt.empty()){</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>     errorStream << <span class="stringliteral">"Error: output backward datasets is not provided, use option -obw"</span> << endl;</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>     <span class="keywordflow">throw</span>(errorStream.str());</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>       }</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>       <span class="keywordflow">if</span>(outputfb_opt.empty()){</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>     errorStream << <span class="stringliteral">"Error: output smooth datasets is not provided, use option -ofb"</span> << endl;</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>     <span class="keywordflow">throw</span>(errorStream.str());</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>       }</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>       <span class="keywordflow">if</span>(uncertfb_opt.empty()){</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>     ostringstream uncertStream;</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>     uncertStream << outputfb_opt[0] << <span class="stringliteral">"_uncert"</span>;</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>     uncertfb_opt.push_back(uncertStream.str());</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>       }</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>     }</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>   }</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorString){</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>     std::cout << errorString << std::endl;</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>     exit(1);</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>   }</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span> </div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>   <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>   stat.setNoDataValues(modnodata_opt);</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>   <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> imgReaderModel1;</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>   <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> imgReaderModel2;</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>   <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> imgReaderModel1Mask;</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>   <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> imgReaderModel2Mask;</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>   <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> imgReaderObs;</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>   <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> imgReaderObsMask;</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>   <span class="comment">//test</span></div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>   <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> imgWriterGain;</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span> </div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>   imgReaderModel1.open(model_opt[0]);</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>   imgReaderModel1.setNoData(modnodata_opt);</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>   imgReaderObs.open(observation_opt[0]);</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>   imgReaderObs.setNoData(obsnodata_opt);</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>   <span class="comment">// if(observationmask_opt.empty())</span></div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>   <span class="comment">//   observationmask_opt=observation_opt;</span></div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>   <span class="keywordflow">if</span>(modelmask_opt.size()){</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>     imgReaderModel1Mask.open(modelmask_opt[0]);</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>     imgReaderModel1Mask.setNoData(msknodata_opt);</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>   }</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>   <span class="keywordflow">if</span>(observationmask_opt.size()){</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>     imgReaderObsMask.open(observationmask_opt[0]);</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>     imgReaderObsMask.setNoData(msknodata_opt);</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>   }</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span> </div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nobs=(observation_opt.size()>1)? observation_opt.size() : imgReaderObs.nrOfBand();</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nmodel=(model_opt.size()>1)? model_opt.size() : imgReaderModel1.nrOfBand();</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span> </div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>   <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>     cout << <span class="stringliteral">"number of observations: "</span> << nobs << endl;</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>     cout << <span class="stringliteral">"number of models: "</span> << nmodel << endl;</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>   }</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span> </div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>   <span class="keywordtype">int</span> ncol=imgReaderObs.nrOfCol();</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>   <span class="keywordtype">int</span> nrow=imgReaderObs.nrOfRow();</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>   <span class="keywordflow">if</span>(projection_opt.empty())</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>     projection_opt.push_back(imgReaderObs.getProjection());</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>   <span class="keywordtype">double</span> geotransform[6];</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>   imgReaderObs.getGeoTransform(geotransform);</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span> </div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>   GDALDataType theType=GDT_Unknown;</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>     cout << <span class="stringliteral">"possible output data types: "</span>;</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iType = 0; iType < GDT_TypeCount; ++iType){</div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>       cout << <span class="stringliteral">" "</span> << GDALGetDataTypeName((GDALDataType)iType);</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>     <span class="keywordflow">if</span>( GDALGetDataTypeName((GDALDataType)iType) != NULL</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>         && EQUAL(GDALGetDataTypeName((GDALDataType)iType),</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>                  otype_opt[0].c_str()))</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>       theType=(GDALDataType) iType;</div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>   }</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>   <span class="keywordflow">if</span>(theType==GDT_Unknown)</div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>     theType=imgReaderObs.getDataType();</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span> </div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>   <span class="keywordtype">string</span> imageType;<span class="comment">//=imgReaderObs.getImageType();</span></div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>   <span class="keywordflow">if</span>(oformat_opt.size())<span class="comment">//default</span></div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>     imageType=oformat_opt[0];</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>   <span class="keywordflow">if</span>(option_opt.findSubstring(<span class="stringliteral">"INTERLEAVE="</span>)==option_opt.end()){</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>     <span class="keywordtype">string</span> theInterleave=<span class="stringliteral">"INTERLEAVE="</span>;</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>     theInterleave+=imgReaderObs.getInterleave();</div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>     option_opt.push_back(theInterleave);</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>   }</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span> </div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>   <span class="keywordflow">if</span>(down_opt.empty()){</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>     <span class="keywordtype">double</span> resModel=imgReaderModel1.getDeltaX();</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>     <span class="keywordtype">double</span> resObs=imgReaderObs.getDeltaX();</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>     <span class="keywordtype">int</span> down=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(ceil(resModel/resObs));</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>     <span class="keywordflow">if</span>(!(down%2))</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>       down+=1;</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>     down_opt.push_back(down);</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>   }</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span> </div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>   <span class="keywordtype">int</span> obsindex=0;</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span> </div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>   <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span> </div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>   <span class="keywordtype">double</span> errObs=uncertNodata_opt[0];<span class="comment">//start with high initial value in case we do not have first observation at time 0</span></div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span> </div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>   <span class="keywordflow">while</span>(tmodel_opt.size()<nmodel)</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>     tmodel_opt.push_back(tmodel_opt.size());</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>     <span class="keywordflow">if</span>(tobservation_opt.size()<nobs){</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>       <span class="keywordflow">if</span>(nobs==nmodel){</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>     <span class="keywordflow">while</span>(tobservation_opt.size()<nobs)</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>       tobservation_opt.push_back(tobservation_opt.size());</div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>       }</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>     ostringstream errorStream;</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>     errorStream << <span class="stringliteral">"Error: please provide time sequence for observation using option tobs"</span> << endl;</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>     <span class="keywordflow">throw</span>(errorStream.str());</div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>       }</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>     }</div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>   }</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorString){</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>     std::cout << errorString << std::endl;</div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>     exit(1);</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>   }</div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>   </div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>   vector<int> relobsindex;</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span> </div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> tindex=0;tindex<tobservation_opt.size();++tindex){</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>     vector<int>::iterator modit;</div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>     modit=upper_bound(tmodel_opt.begin(),tmodel_opt.end(),tobservation_opt[tindex]);</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>     <span class="keywordtype">int</span> relpos=modit-tmodel_opt.begin()-1;</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>     assert(relpos>=0);<span class="comment">//todo: for now, we assume model is available at time before first measurement</span></div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>     relobsindex.push_back(relpos);</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>     <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>       cout << <span class="stringliteral">"observation "</span> << tindex << <span class="stringliteral">": "</span> << <span class="stringliteral">"relative position in model time series is "</span> << relpos << <span class="stringliteral">", date of observation is (tobservation_opt[tindex]): "</span> << tobservation_opt[tindex]  [...]
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>       <span class="keywordflow">if</span>(observation_opt.size()>tindex)</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>     cout << <span class="stringliteral">", filename observation: "</span> << observation_opt[tindex];</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>     cout << <span class="stringliteral">", observation band index: "</span> << tindex;</div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>       <span class="keywordflow">if</span>(model_opt.size()>relpos)</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>     cout << <span class="stringliteral">", filename of corresponding model: "</span> << model_opt[relpos] << endl;</div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>     cout << <span class="stringliteral">", band index of corresponding model: "</span> << relpos;</div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>     }</div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>   }</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span> </div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>   <span class="keywordtype">int</span> ndigit=log(1.0*tmodel_opt.back())/log(10.0)+1;</div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span> </div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>   <span class="keywordtype">double</span> geox=0;</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>   <span class="keywordtype">double</span> geoy=0;</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span> </div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>   <span class="keywordflow">if</span>(model_opt.size()==nmodel)</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>     imgReaderModel1.close();</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>   <span class="keywordflow">if</span>(modelmask_opt.size()==nmodel)</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>     imgReaderModel1Mask.close();</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>   <span class="keywordflow">if</span>(observation_opt.size()==nobs)</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>     imgReaderObs.close();</div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>   <span class="keywordflow">if</span>(observationmask_opt.size()==nobs)</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>     imgReaderObsMask.close();</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span> </div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>     <span class="keywordflow">if</span>(find(direction_opt.begin(),direction_opt.end(),<span class="stringliteral">"forward"</span>)!=direction_opt.end()){</div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>       cout << <span class="stringliteral">"Running forward model"</span> << endl;</div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>       obsindex=0;</div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>     cout << <span class="stringliteral">"Opening image "</span> << outputfw_opt[0] << <span class="stringliteral">" for writing "</span> << endl << flush;</div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span>     </div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>       <span class="comment">// imgWriterEst.open(theOutput,ncol,nrow,2,theType,imageType,option_opt);</span></div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>       <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> imgWriterEst;</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>       <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> imgWriterUncert;</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span>       imgWriterEst.open(outputfw_opt[0],ncol,nrow,nmodel,theType,imageType,option_opt);</div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>       imgWriterEst.setProjectionProj4(projection_opt[0]);</div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span>       imgWriterEst.setGeoTransform(geotransform);</div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>       imgWriterEst.GDALSetNoDataValue(obsnodata_opt[0]);</div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>       imgWriterUncert.open(uncertfw_opt[0],ncol,nrow,nmodel,theType,imageType,option_opt);</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>       imgWriterUncert.setProjectionProj4(projection_opt[0]);</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>       imgWriterUncert.setGeoTransform(geotransform);</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span> </div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>     <span class="comment">//test</span></div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>     <span class="keywordflow">if</span>(gain_opt.size()){</div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>       imgWriterGain.open(gain_opt[0],ncol,nrow,nmodel,GDT_Float64,imageType,option_opt);</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span>       imgWriterGain.setProjectionProj4(projection_opt[0]);</div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>       imgWriterGain.setGeoTransform(geotransform);</div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>       imgWriterGain.GDALSetNoDataValue(obsnodata_opt[0]);</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span>     }</div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span> </div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span>     <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span>       cout << <span class="stringliteral">"processing time "</span> << tmodel_opt[0] << endl;</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>       <span class="keywordflow">if</span>(obsindex<relobsindex.size()){</div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span>         assert(tmodel_opt.size()>relobsindex[obsindex]);</div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span>         cout << <span class="stringliteral">"next observation "</span> << tmodel_opt[relobsindex[obsindex]] << endl;</div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span>       }</div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span>         cout << <span class="stringliteral">"There is no next observation"</span> << endl;</div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span>     }</div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span>     <span class="keywordflow">if</span>(model_opt.size()==nmodel){</div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span>       imgReaderModel1.open(model_opt[0]);</div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>       imgReaderModel1.setNoData(modnodata_opt);</div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>     }</div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span>     <span class="keywordflow">if</span>(modelmask_opt.size()==nmodel){</div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span>       imgReaderModel1Mask.open(modelmask_opt[0]);</div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span>       imgReaderModel1Mask.setNoData(msknodata_opt);</div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span>     }</div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span>       }</div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorString){</div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span>     cerr << errorString << endl;</div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span>       }</div>
-<div class="line"><a name="l00445"></a><span class="lineno">  445</span>       <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l00446"></a><span class="lineno">  446</span>     cerr << <span class="stringliteral">"Error opening file "</span> << model_opt[0] << endl;</div>
-<div class="line"><a name="l00447"></a><span class="lineno">  447</span>       }</div>
-<div class="line"><a name="l00448"></a><span class="lineno">  448</span>       </div>
-<div class="line"><a name="l00449"></a><span class="lineno">  449</span>       <span class="keywordtype">double</span> modRow=0;</div>
-<div class="line"><a name="l00450"></a><span class="lineno">  450</span>       <span class="keywordtype">double</span> modCol=0;</div>
-<div class="line"><a name="l00451"></a><span class="lineno">  451</span>       <span class="keywordtype">double</span> lowerCol=0;</div>
-<div class="line"><a name="l00452"></a><span class="lineno">  452</span>       <span class="keywordtype">double</span> upperCol=0;</div>
-<div class="line"><a name="l00453"></a><span class="lineno">  453</span>       RESAMPLE theResample=BILINEAR;</div>
-<div class="line"><a name="l00454"></a><span class="lineno">  454</span> </div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span>       <span class="keywordflow">if</span>(relobsindex[0]>0){<span class="comment">//initialize output_opt[0] as model[0]</span></div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</span>     <span class="comment">//write first model as output</span></div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00458"></a><span class="lineno">  458</span>       cout << <span class="stringliteral">"write first model as output"</span> << endl;</div>
-<div class="line"><a name="l00459"></a><span class="lineno">  459</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> jrow=0;jrow<nrow;jrow+=down_opt[0]){</div>
-<div class="line"><a name="l00460"></a><span class="lineno">  460</span>       vector<double> estReadBuffer;</div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span>       vector<double> lineModelMask;</div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span>       vector<double> estWriteBuffer(ncol);</div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span>       vector<double> uncertWriteBuffer(ncol);</div>
-<div class="line"><a name="l00464"></a><span class="lineno">  464</span>       <span class="comment">//test</span></div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span>       vector<double> gainWriteBuffer(ncol);</div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=jrow;irow<jrow+down_opt[0]&&irow<nrow;++irow){</div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span>           imgWriterEst.image2geo(0,irow,geox,geoy);</div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span>           imgReaderModel1.geo2image(geox,geoy,modCol,modRow);</div>
-<div class="line"><a name="l00470"></a><span class="lineno">  470</span>           <span class="keywordflow">if</span>(modRow<0||modRow>=imgReaderModel1.nrOfRow()){</div>
-<div class="line"><a name="l00471"></a><span class="lineno">  471</span>         cerr << <span class="stringliteral">"Error: geo coordinates ("</span> << geox << <span class="stringliteral">","</span> << geoy << <span class="stringliteral">") not covered in model image "</span> << imgReaderModel1.getFileName() << endl;</div>
-<div class="line"><a name="l00472"></a><span class="lineno">  472</span>         assert(modRow>=0&&modRow<imgReaderModel1.nrOfRow());</div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span>           }</div>
-<div class="line"><a name="l00474"></a><span class="lineno">  474</span>           <span class="comment">// imgReaderModel1.readData(estReadBuffer,GDT_Float64,modRow,0,theResample);</span></div>
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span> </div>
-<div class="line"><a name="l00476"></a><span class="lineno">  476</span>           <span class="keywordtype">int</span> readModelBand=(model_opt.size()==nmodel)? 0:0;</div>
-<div class="line"><a name="l00477"></a><span class="lineno">  477</span>           <span class="keywordtype">int</span> readModelMaskBand=(modelmask_opt.size()==nmodel)? mskband_opt[0]:0;</div>
-<div class="line"><a name="l00478"></a><span class="lineno">  478</span>           imgReaderModel1.readData(estReadBuffer,GDT_Float64,modRow,readModelBand,theResample);</div>
-<div class="line"><a name="l00479"></a><span class="lineno">  479</span>           <span class="keywordflow">if</span>(modelmask_opt.size())</div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span>         imgReaderModel1Mask.readData(lineModelMask,GDT_Float64,modRow,readModelMaskBand,theResample);</div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> jcol=0;jcol<ncol;jcol+=down_opt[0]){</div>
-<div class="line"><a name="l00482"></a><span class="lineno">  482</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=jcol;icol<jcol+down_opt[0]&&icol<ncol;++icol){</div>
-<div class="line"><a name="l00483"></a><span class="lineno">  483</span>           imgWriterEst.image2geo(icol,irow,geox,geoy);</div>
-<div class="line"><a name="l00484"></a><span class="lineno">  484</span>           imgReaderModel1.geo2image(geox,geoy,modCol,modRow);</div>
-<div class="line"><a name="l00485"></a><span class="lineno">  485</span>           <span class="keywordflow">if</span>(modelmask_opt.size()){</div>
-<div class="line"><a name="l00486"></a><span class="lineno">  486</span>             <span class="keywordflow">if</span>(imgReaderModel1Mask.isNoData(lineModelMask[modCol])){</div>
-<div class="line"><a name="l00487"></a><span class="lineno">  487</span>               estWriteBuffer[icol]=obsnodata_opt[0];</div>
-<div class="line"><a name="l00488"></a><span class="lineno">  488</span>               uncertWriteBuffer[icol]=uncertNodata_opt[0];</div>
-<div class="line"><a name="l00489"></a><span class="lineno">  489</span>               <span class="comment">//test</span></div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span>               gainWriteBuffer[icol]=obsnodata_opt[0];</div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span>               <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00492"></a><span class="lineno">  492</span>             }</div>
-<div class="line"><a name="l00493"></a><span class="lineno">  493</span>           }</div>
-<div class="line"><a name="l00494"></a><span class="lineno">  494</span>           lowerCol=modCol-0.5;</div>
-<div class="line"><a name="l00495"></a><span class="lineno">  495</span>           lowerCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(lowerCol);</div>
-<div class="line"><a name="l00496"></a><span class="lineno">  496</span>           upperCol=modCol+0.5;</div>
-<div class="line"><a name="l00497"></a><span class="lineno">  497</span>           upperCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(upperCol);</div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span>           <span class="keywordflow">if</span>(lowerCol<0)</div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span>             lowerCol=0;</div>
-<div class="line"><a name="l00500"></a><span class="lineno">  500</span>           <span class="keywordflow">if</span>(upperCol>=imgReaderModel1.nrOfCol())</div>
-<div class="line"><a name="l00501"></a><span class="lineno">  501</span>             upperCol=imgReaderModel1.nrOfCol()-1;</div>
-<div class="line"><a name="l00502"></a><span class="lineno">  502</span>           <span class="keywordtype">double</span> modValue=(modCol-0.5-lowerCol)*estReadBuffer[upperCol]+(1-modCol+0.5+lowerCol)*estReadBuffer[lowerCol];</div>
-<div class="line"><a name="l00503"></a><span class="lineno">  503</span>           <span class="comment">// double modValue=estReadBuffer[modCol];</span></div>
-<div class="line"><a name="l00504"></a><span class="lineno">  504</span>           <span class="keywordflow">if</span>(imgReaderModel1.isNoData(modValue)){</div>
-<div class="line"><a name="l00505"></a><span class="lineno">  505</span>             estWriteBuffer[icol]=obsnodata_opt[0];</div>
-<div class="line"><a name="l00506"></a><span class="lineno">  506</span>             uncertWriteBuffer[icol]=uncertNodata_opt[0];</div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span>             <span class="comment">//test</span></div>
-<div class="line"><a name="l00508"></a><span class="lineno">  508</span>             gainWriteBuffer[icol]=obsnodata_opt[0];</div>
-<div class="line"><a name="l00509"></a><span class="lineno">  509</span>             <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span>           }</div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span>           estWriteBuffer[icol]=modValue;</div>
-<div class="line"><a name="l00512"></a><span class="lineno">  512</span>           <span class="keywordflow">if</span>(obsmin_opt.size()){</div>
-<div class="line"><a name="l00513"></a><span class="lineno">  513</span>             <span class="keywordflow">if</span>(estWriteBuffer[icol]<obsmin_opt[0])</div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span>               estWriteBuffer[icol]=obsmin_opt[0];</div>
-<div class="line"><a name="l00515"></a><span class="lineno">  515</span>           }</div>
-<div class="line"><a name="l00516"></a><span class="lineno">  516</span>           <span class="keywordflow">if</span>(obsmax_opt.size()){</div>
-<div class="line"><a name="l00517"></a><span class="lineno">  517</span>             <span class="keywordflow">if</span>(estWriteBuffer[icol]>obsmax_opt[0])</div>
-<div class="line"><a name="l00518"></a><span class="lineno">  518</span>               estWriteBuffer[icol]=obsmax_opt[0];</div>
-<div class="line"><a name="l00519"></a><span class="lineno">  519</span>           }</div>
-<div class="line"><a name="l00520"></a><span class="lineno">  520</span>           uncertWriteBuffer[icol]=uncertModel_opt[0];</div>
-<div class="line"><a name="l00521"></a><span class="lineno">  521</span>           <span class="comment">//test</span></div>
-<div class="line"><a name="l00522"></a><span class="lineno">  522</span>           gainWriteBuffer[icol]=0;</div>
-<div class="line"><a name="l00523"></a><span class="lineno">  523</span>         }</div>
-<div class="line"><a name="l00524"></a><span class="lineno">  524</span>           }</div>
-<div class="line"><a name="l00525"></a><span class="lineno">  525</span>           imgWriterEst.writeData(estWriteBuffer,GDT_Float64,irow,0);</div>
-<div class="line"><a name="l00526"></a><span class="lineno">  526</span>           imgWriterUncert.writeData(uncertWriteBuffer,GDT_Float64,irow,0);</div>
-<div class="line"><a name="l00527"></a><span class="lineno">  527</span>           <span class="comment">//test</span></div>
-<div class="line"><a name="l00528"></a><span class="lineno">  528</span>           <span class="keywordflow">if</span>(gain_opt.size())</div>
-<div class="line"><a name="l00529"></a><span class="lineno">  529</span>         imgWriterGain.writeData(gainWriteBuffer,GDT_Float64,irow,0);</div>
-<div class="line"><a name="l00530"></a><span class="lineno">  530</span>         }</div>
-<div class="line"><a name="l00531"></a><span class="lineno">  531</span>       }</div>
-<div class="line"><a name="l00532"></a><span class="lineno">  532</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorString){</div>
-<div class="line"><a name="l00533"></a><span class="lineno">  533</span>         cerr << errorString << endl;</div>
-<div class="line"><a name="l00534"></a><span class="lineno">  534</span>       }</div>
-<div class="line"><a name="l00535"></a><span class="lineno">  535</span>       <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l00536"></a><span class="lineno">  536</span>         cerr << <span class="stringliteral">"Error writing file "</span> << imgWriterEst.getFileName() << endl;</div>
-<div class="line"><a name="l00537"></a><span class="lineno">  537</span>       }</div>
-<div class="line"><a name="l00538"></a><span class="lineno">  538</span>     }</div>
-<div class="line"><a name="l00539"></a><span class="lineno">  539</span>       }</div>
-<div class="line"><a name="l00540"></a><span class="lineno">  540</span>       <span class="keywordflow">else</span>{<span class="comment">//we have a measurement</span></div>
-<div class="line"><a name="l00541"></a><span class="lineno">  541</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00542"></a><span class="lineno">  542</span>       cout << <span class="stringliteral">"we have a measurement at initial time"</span> << endl;</div>
-<div class="line"><a name="l00543"></a><span class="lineno">  543</span>     <span class="keywordflow">if</span>(observation_opt.size()==nobs){</div>
-<div class="line"><a name="l00544"></a><span class="lineno">  544</span>       imgReaderObs.open(observation_opt[0]);</div>
-<div class="line"><a name="l00545"></a><span class="lineno">  545</span>       imgReaderObs.setNoData(obsnodata_opt);</div>
-<div class="line"><a name="l00546"></a><span class="lineno">  546</span>     }</div>
-<div class="line"><a name="l00547"></a><span class="lineno">  547</span>     <span class="keywordflow">if</span>(observationmask_opt.size()==nobs){</div>
-<div class="line"><a name="l00548"></a><span class="lineno">  548</span>       imgReaderObsMask.open(observationmask_opt[0]);</div>
-<div class="line"><a name="l00549"></a><span class="lineno">  549</span>       imgReaderObsMask.setNoData(msknodata_opt);</div>
-<div class="line"><a name="l00550"></a><span class="lineno">  550</span>     }</div>
-<div class="line"><a name="l00551"></a><span class="lineno">  551</span>     imgReaderObs.getGeoTransform(geotransform);</div>
-<div class="line"><a name="l00552"></a><span class="lineno">  552</span> </div>
-<div class="line"><a name="l00553"></a><span class="lineno">  553</span>     vector< vector<double> > obsLineVector(down_opt[0]);</div>
-<div class="line"><a name="l00554"></a><span class="lineno">  554</span>     vector<double> obsLineBuffer;</div>
-<div class="line"><a name="l00555"></a><span class="lineno">  555</span>     vector<double> obsMaskLineBuffer;</div>
-<div class="line"><a name="l00556"></a><span class="lineno">  556</span>     vector<double> modelMaskLineBuffer;</div>
-<div class="line"><a name="l00557"></a><span class="lineno">  557</span>     vector<double> obsWindowBuffer;<span class="comment">//buffer for observation to calculate average corresponding to model pixel</span></div>
-<div class="line"><a name="l00558"></a><span class="lineno">  558</span>     vector<double> estReadBuffer;</div>
-<div class="line"><a name="l00559"></a><span class="lineno">  559</span>     vector<double> estWriteBuffer(ncol);</div>
-<div class="line"><a name="l00560"></a><span class="lineno">  560</span>     vector<double> uncertWriteBuffer(ncol);</div>
-<div class="line"><a name="l00561"></a><span class="lineno">  561</span>     vector<double> uncertObsLineBuffer;</div>
-<div class="line"><a name="l00562"></a><span class="lineno">  562</span>     <span class="comment">//test</span></div>
-<div class="line"><a name="l00563"></a><span class="lineno">  563</span>     vector<double> gainWriteBuffer(ncol);</div>
-<div class="line"><a name="l00564"></a><span class="lineno">  564</span> </div>
-<div class="line"><a name="l00565"></a><span class="lineno">  565</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00566"></a><span class="lineno">  566</span>       cout << <span class="stringliteral">"initialize obsLineVector"</span> << endl;</div>
-<div class="line"><a name="l00567"></a><span class="lineno">  567</span>     assert(down_opt[0]%2);<span class="comment">//window size must be odd </span></div>
-<div class="line"><a name="l00568"></a><span class="lineno">  568</span>     <span class="keywordtype">int</span> readObsBand=(observation_opt.size()==nobs)? 0:0;</div>
-<div class="line"><a name="l00569"></a><span class="lineno">  569</span>     <span class="keywordtype">int</span> readObsMaskBand=(observationmask_opt.size()==nobs)? mskband_opt[0]:0;</div>
-<div class="line"><a name="l00570"></a><span class="lineno">  570</span>     <span class="keywordtype">int</span> readModelBand=(model_opt.size()==nmodel)? 0:0;</div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span>     <span class="keywordtype">int</span> readModelMaskBand=(modelmask_opt.size()==nmodel)? mskband_opt[0]:0;</div>
-<div class="line"><a name="l00572"></a><span class="lineno">  572</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iline=-down_opt[0]/2;iline<down_opt[0]/2+1;++iline){</div>
-<div class="line"><a name="l00573"></a><span class="lineno">  573</span>       <span class="keywordflow">if</span>(iline<0)<span class="comment">//replicate line 0</span></div>
-<div class="line"><a name="l00574"></a><span class="lineno">  574</span>         imgReaderObs.readData(obsLineVector[iline+down_opt[0]/2],GDT_Float64,0,readObsBand);</div>
-<div class="line"><a name="l00575"></a><span class="lineno">  575</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00576"></a><span class="lineno">  576</span>         imgReaderObs.readData(obsLineVector[iline+down_opt[0]/2],GDT_Float64,iline,readObsBand);</div>
-<div class="line"><a name="l00577"></a><span class="lineno">  577</span>     }</div>
-<div class="line"><a name="l00578"></a><span class="lineno">  578</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> jrow=0;jrow<nrow;jrow+=down_opt[0]){</div>
-<div class="line"><a name="l00579"></a><span class="lineno">  579</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=jrow;irow<jrow+down_opt[0]&&irow<nrow;++irow){</div>
-<div class="line"><a name="l00580"></a><span class="lineno">  580</span>         imgWriterEst.image2geo(0,irow,geox,geoy);</div>
-<div class="line"><a name="l00581"></a><span class="lineno">  581</span>         imgReaderModel1.geo2image(geox,geoy,modCol,modRow);</div>
-<div class="line"><a name="l00582"></a><span class="lineno">  582</span>         assert(modRow>=0&&modRow<imgReaderModel1.nrOfRow());</div>
-<div class="line"><a name="l00583"></a><span class="lineno">  583</span>         imgReaderModel1.readData(estReadBuffer,GDT_Float64,modRow,readModelBand,theResample);</div>
-<div class="line"><a name="l00584"></a><span class="lineno">  584</span>         <span class="keywordflow">if</span>(modelmask_opt.size())</div>
-<div class="line"><a name="l00585"></a><span class="lineno">  585</span>           imgReaderModel1Mask.readData(modelMaskLineBuffer,GDT_Float64,modRow,readModelMaskBand);</div>
-<div class="line"><a name="l00586"></a><span class="lineno">  586</span>         <span class="keywordtype">int</span> maxRow=(irow+down_opt[0]/2<imgReaderObs.nrOfRow()) ? irow+down_opt[0]/2 : imgReaderObs.nrOfRow()-1;</div>
-<div class="line"><a name="l00587"></a><span class="lineno">  587</span>         obsLineVector.erase(obsLineVector.begin());</div>
-<div class="line"><a name="l00588"></a><span class="lineno">  588</span>         imgReaderObs.readData(obsLineBuffer,GDT_Float64,maxRow,readObsBand);</div>
-<div class="line"><a name="l00589"></a><span class="lineno">  589</span>         obsLineVector.push_back(obsLineBuffer);</div>
-<div class="line"><a name="l00590"></a><span class="lineno">  590</span> </div>
-<div class="line"><a name="l00591"></a><span class="lineno">  591</span>         <span class="keywordflow">if</span>(observationmask_opt.size())</div>
-<div class="line"><a name="l00592"></a><span class="lineno">  592</span>           imgReaderObsMask.readData(obsMaskLineBuffer,GDT_Float64,irow,readObsMaskBand);</div>
-<div class="line"><a name="l00593"></a><span class="lineno">  593</span> </div>
-<div class="line"><a name="l00594"></a><span class="lineno">  594</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> jcol=0;jcol<ncol;jcol+=down_opt[0]){</div>
-<div class="line"><a name="l00595"></a><span class="lineno">  595</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=jcol;icol<jcol+down_opt[0]&&icol<ncol;++icol){</div>
-<div class="line"><a name="l00596"></a><span class="lineno">  596</span>         imgWriterEst.image2geo(icol,irow,geox,geoy);</div>
-<div class="line"><a name="l00597"></a><span class="lineno">  597</span>         imgReaderModel1.geo2image(geox,geoy,modCol,modRow);</div>
-<div class="line"><a name="l00598"></a><span class="lineno">  598</span>         assert(modRow>=0&&modRow<imgReaderModel1.nrOfRow());</div>
-<div class="line"><a name="l00599"></a><span class="lineno">  599</span>         <span class="keywordtype">bool</span> modelIsNoData=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00600"></a><span class="lineno">  600</span>         <span class="keywordflow">if</span>(modelmask_opt.size())</div>
-<div class="line"><a name="l00601"></a><span class="lineno">  601</span>           modelIsNoData=imgReaderModel1Mask.isNoData(modelMaskLineBuffer[modCol]);</div>
-<div class="line"><a name="l00602"></a><span class="lineno">  602</span>         lowerCol=modCol-0.5;</div>
-<div class="line"><a name="l00603"></a><span class="lineno">  603</span>         lowerCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(lowerCol);</div>
-<div class="line"><a name="l00604"></a><span class="lineno">  604</span>         upperCol=modCol+0.5;</div>
-<div class="line"><a name="l00605"></a><span class="lineno">  605</span>         upperCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(upperCol);</div>
-<div class="line"><a name="l00606"></a><span class="lineno">  606</span>         <span class="keywordflow">if</span>(lowerCol<0)</div>
-<div class="line"><a name="l00607"></a><span class="lineno">  607</span>           lowerCol=0;</div>
-<div class="line"><a name="l00608"></a><span class="lineno">  608</span>         <span class="keywordflow">if</span>(upperCol>=imgReaderModel1.nrOfCol())</div>
-<div class="line"><a name="l00609"></a><span class="lineno">  609</span>           upperCol=imgReaderModel1.nrOfCol()-1;</div>
-<div class="line"><a name="l00610"></a><span class="lineno">  610</span>         <span class="keywordtype">double</span> modValue=(modCol-0.5-lowerCol)*estReadBuffer[upperCol]+(1-modCol+0.5+lowerCol)*estReadBuffer[lowerCol];</div>
-<div class="line"><a name="l00611"></a><span class="lineno">  611</span>         <span class="comment">// double modValue=estReadBuffer[modCol];</span></div>
-<div class="line"><a name="l00612"></a><span class="lineno">  612</span>         <span class="keywordtype">double</span> errMod=uncertModel_opt[0];<span class="comment">//*stdDev*stdDev;</span></div>
-<div class="line"><a name="l00613"></a><span class="lineno">  613</span>         modelIsNoData=modelIsNoData||imgReaderModel1.isNoData(modValue);</div>
-<div class="line"><a name="l00614"></a><span class="lineno">  614</span>         <span class="keywordtype">bool</span> obsIsNoData=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00615"></a><span class="lineno">  615</span>         <span class="keywordflow">if</span>(observationmask_opt.size())</div>
-<div class="line"><a name="l00616"></a><span class="lineno">  616</span>           obsIsNoData=imgReaderObsMask.isNoData(obsMaskLineBuffer[icol]);</div>
-<div class="line"><a name="l00617"></a><span class="lineno">  617</span>         obsIsNoData=obsIsNoData||imgReaderObs.isNoData(obsLineBuffer[icol]);</div>
-<div class="line"><a name="l00618"></a><span class="lineno">  618</span>         <span class="keywordflow">if</span>(modelIsNoData){<span class="comment">//model is nodata: retain observation </span></div>
-<div class="line"><a name="l00619"></a><span class="lineno">  619</span>           <span class="keywordflow">if</span>(obsIsNoData){<span class="comment">//both model and observation nodata</span></div>
-<div class="line"><a name="l00620"></a><span class="lineno">  620</span>             estWriteBuffer[icol]=obsnodata_opt[0];</div>
-<div class="line"><a name="l00621"></a><span class="lineno">  621</span>             uncertWriteBuffer[icol]=uncertNodata_opt[0];</div>
-<div class="line"><a name="l00622"></a><span class="lineno">  622</span>             <span class="comment">//test</span></div>
-<div class="line"><a name="l00623"></a><span class="lineno">  623</span>             gainWriteBuffer[icol]=obsnodata_opt[0];</div>
-<div class="line"><a name="l00624"></a><span class="lineno">  624</span>           }</div>
-<div class="line"><a name="l00625"></a><span class="lineno">  625</span>           <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00626"></a><span class="lineno">  626</span>             estWriteBuffer[icol]=obsLineBuffer[icol];</div>
-<div class="line"><a name="l00627"></a><span class="lineno">  627</span>             <span class="keywordflow">if</span>(obsmin_opt.size()){</div>
-<div class="line"><a name="l00628"></a><span class="lineno">  628</span>               <span class="keywordflow">if</span>(estWriteBuffer[icol]<obsmin_opt[0])</div>
-<div class="line"><a name="l00629"></a><span class="lineno">  629</span>             estWriteBuffer[icol]=obsmin_opt[0];</div>
-<div class="line"><a name="l00630"></a><span class="lineno">  630</span>             }</div>
-<div class="line"><a name="l00631"></a><span class="lineno">  631</span>             <span class="keywordflow">if</span>(obsmax_opt.size()){</div>
-<div class="line"><a name="l00632"></a><span class="lineno">  632</span>               <span class="keywordflow">if</span>(estWriteBuffer[icol]>obsmax_opt[0])</div>
-<div class="line"><a name="l00633"></a><span class="lineno">  633</span>             estWriteBuffer[icol]=obsmax_opt[0];</div>
-<div class="line"><a name="l00634"></a><span class="lineno">  634</span>             }</div>
-<div class="line"><a name="l00635"></a><span class="lineno">  635</span>             uncertWriteBuffer[icol]=uncertObs_opt[0];</div>
-<div class="line"><a name="l00636"></a><span class="lineno">  636</span>           }</div>
-<div class="line"><a name="l00637"></a><span class="lineno">  637</span>         }</div>
-<div class="line"><a name="l00638"></a><span class="lineno">  638</span>         <span class="keywordflow">else</span>{<span class="comment">//model is valid: calculate estimate from model</span></div>
-<div class="line"><a name="l00639"></a><span class="lineno">  639</span>           estWriteBuffer[icol]=modValue;</div>
-<div class="line"><a name="l00640"></a><span class="lineno">  640</span>           uncertWriteBuffer[icol]=errMod;<span class="comment">//in case observation is not valid</span></div>
-<div class="line"><a name="l00641"></a><span class="lineno">  641</span>           <span class="comment">//test</span></div>
-<div class="line"><a name="l00642"></a><span class="lineno">  642</span>           gainWriteBuffer[icol]=0;</div>
-<div class="line"><a name="l00643"></a><span class="lineno">  643</span>         }</div>
-<div class="line"><a name="l00644"></a><span class="lineno">  644</span>         <span class="comment">//measurement update</span></div>
-<div class="line"><a name="l00645"></a><span class="lineno">  645</span>         <span class="keywordflow">if</span>(!obsIsNoData){</div>
-<div class="line"><a name="l00646"></a><span class="lineno">  646</span>           <span class="comment">// estWriteBuffer[icol]=estReadBuffer[icol]*modValue1/modValue2</span></div>
-<div class="line"><a name="l00647"></a><span class="lineno">  647</span>           <span class="keywordtype">double</span> kalmanGain=1;</div>
-<div class="line"><a name="l00648"></a><span class="lineno">  648</span>           <span class="keywordtype">int</span> minCol=(icol>down_opt[0]/2) ? icol-down_opt[0]/2 : 0;</div>
-<div class="line"><a name="l00649"></a><span class="lineno">  649</span>           <span class="keywordtype">int</span> maxCol=(icol+down_opt[0]/2<imgReaderObs.nrOfCol()) ? icol+down_opt[0]/2 : imgReaderObs.nrOfCol()-1;</div>
-<div class="line"><a name="l00650"></a><span class="lineno">  650</span>           <span class="keywordtype">int</span> minRow=(irow>down_opt[0]/2) ? irow-down_opt[0]/2 : 0;</div>
-<div class="line"><a name="l00651"></a><span class="lineno">  651</span>           <span class="keywordtype">int</span> maxRow=(irow+down_opt[0]/2<imgReaderObs.nrOfRow()) ? irow+down_opt[0]/2 : imgReaderObs.nrOfRow()-1;</div>
-<div class="line"><a name="l00652"></a><span class="lineno">  652</span>           obsWindowBuffer.clear();</div>
-<div class="line"><a name="l00653"></a><span class="lineno">  653</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iline=0;iline<obsLineVector.size();++iline){</div>
-<div class="line"><a name="l00654"></a><span class="lineno">  654</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=minCol;isample<=maxCol;++isample){</div>
-<div class="line"><a name="l00655"></a><span class="lineno">  655</span>               assert(isample<obsLineVector[iline].size());</div>
-<div class="line"><a name="l00656"></a><span class="lineno">  656</span>               obsWindowBuffer.push_back(obsLineVector[iline][isample]);</div>
-<div class="line"><a name="l00657"></a><span class="lineno">  657</span>             }</div>
-<div class="line"><a name="l00658"></a><span class="lineno">  658</span>           }</div>
-<div class="line"><a name="l00659"></a><span class="lineno">  659</span>           <span class="keywordflow">if</span>(!modelIsNoData){<span class="comment">//model is valid</span></div>
-<div class="line"><a name="l00660"></a><span class="lineno">  660</span>             <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> statobs;</div>
-<div class="line"><a name="l00661"></a><span class="lineno">  661</span>             statobs.setNoDataValues(obsnodata_opt);</div>
-<div class="line"><a name="l00662"></a><span class="lineno">  662</span>             <span class="keywordtype">double</span> obsMeanValue=0;</div>
-<div class="line"><a name="l00663"></a><span class="lineno">  663</span>             <span class="keywordtype">double</span> obsVarValue=0;</div>
-<div class="line"><a name="l00664"></a><span class="lineno">  664</span>             statobs.meanVar(obsWindowBuffer,obsMeanValue,obsVarValue);</div>
-<div class="line"><a name="l00665"></a><span class="lineno">  665</span>             <span class="keywordtype">double</span> difference=0;</div>
-<div class="line"><a name="l00666"></a><span class="lineno">  666</span>             difference=obsMeanValue-modValue;</div>
-<div class="line"><a name="l00667"></a><span class="lineno">  667</span>             <span class="comment">// errObs=uncertObs_opt[0]*sqrt(difference*difference);</span></div>
-<div class="line"><a name="l00668"></a><span class="lineno">  668</span>             errObs=uncertObs_opt[0]*difference*difference;<span class="comment">//uncertainty of the observation (R in Kalman equations)</span></div>
-<div class="line"><a name="l00669"></a><span class="lineno">  669</span>             <span class="comment">// double errorCovariance=errMod;</span></div>
-<div class="line"><a name="l00670"></a><span class="lineno">  670</span>             <span class="keywordtype">double</span> errorCovariance=processNoise_opt[0]*obsVarValue;<span class="comment">//assumed initial errorCovariance (P in Kalman equations)</span></div>
-<div class="line"><a name="l00671"></a><span class="lineno">  671</span>             <span class="keywordflow">if</span>(errorCovariance+errObs>eps_opt[0])</div>
-<div class="line"><a name="l00672"></a><span class="lineno">  672</span>               kalmanGain=errorCovariance/(errorCovariance+errObs);</div>
-<div class="line"><a name="l00673"></a><span class="lineno">  673</span>             <span class="keywordflow">else</span> </div>
-<div class="line"><a name="l00674"></a><span class="lineno">  674</span>               kalmanGain=1;</div>
-<div class="line"><a name="l00675"></a><span class="lineno">  675</span>             estWriteBuffer[icol]+=kalmanGain*(obsLineBuffer[icol]-estWriteBuffer[icol]);</div>
-<div class="line"><a name="l00676"></a><span class="lineno">  676</span>             <span class="keywordflow">if</span>(obsmin_opt.size()){</div>
-<div class="line"><a name="l00677"></a><span class="lineno">  677</span>               <span class="keywordflow">if</span>(estWriteBuffer[icol]<obsmin_opt[0])</div>
-<div class="line"><a name="l00678"></a><span class="lineno">  678</span>             estWriteBuffer[icol]=obsmin_opt[0];</div>
-<div class="line"><a name="l00679"></a><span class="lineno">  679</span>             }</div>
-<div class="line"><a name="l00680"></a><span class="lineno">  680</span>             <span class="keywordflow">if</span>(obsmax_opt.size()){</div>
-<div class="line"><a name="l00681"></a><span class="lineno">  681</span>               <span class="keywordflow">if</span>(estWriteBuffer[icol]>obsmax_opt[0])</div>
-<div class="line"><a name="l00682"></a><span class="lineno">  682</span>             estWriteBuffer[icol]=obsmax_opt[0];</div>
-<div class="line"><a name="l00683"></a><span class="lineno">  683</span>               <span class="keywordflow">if</span>(uncertWriteBuffer[icol]>obsmax_opt[0])</div>
-<div class="line"><a name="l00684"></a><span class="lineno">  684</span>             uncertWriteBuffer[icol]=obsmax_opt[0];</div>
-<div class="line"><a name="l00685"></a><span class="lineno">  685</span>             }</div>
-<div class="line"><a name="l00686"></a><span class="lineno">  686</span>           }</div>
-<div class="line"><a name="l00687"></a><span class="lineno">  687</span>           assert(kalmanGain<=1);</div>
-<div class="line"><a name="l00688"></a><span class="lineno">  688</span>           <span class="comment">//test</span></div>
-<div class="line"><a name="l00689"></a><span class="lineno">  689</span>           gainWriteBuffer[icol]=kalmanGain;</div>
-<div class="line"><a name="l00690"></a><span class="lineno">  690</span>         }</div>
-<div class="line"><a name="l00691"></a><span class="lineno">  691</span>           }</div>
-<div class="line"><a name="l00692"></a><span class="lineno">  692</span>         }</div>
-<div class="line"><a name="l00693"></a><span class="lineno">  693</span>         imgWriterEst.writeData(estWriteBuffer,GDT_Float64,irow,0);</div>
-<div class="line"><a name="l00694"></a><span class="lineno">  694</span>         imgWriterUncert.writeData(uncertWriteBuffer,GDT_Float64,irow,0);</div>
-<div class="line"><a name="l00695"></a><span class="lineno">  695</span>         <span class="comment">//test</span></div>
-<div class="line"><a name="l00696"></a><span class="lineno">  696</span>         <span class="keywordflow">if</span>(gain_opt.size())</div>
-<div class="line"><a name="l00697"></a><span class="lineno">  697</span>           imgWriterGain.writeData(gainWriteBuffer,GDT_Float64,irow,0);</div>
-<div class="line"><a name="l00698"></a><span class="lineno">  698</span>       }</div>
-<div class="line"><a name="l00699"></a><span class="lineno">  699</span>     }</div>
-<div class="line"><a name="l00700"></a><span class="lineno">  700</span>     <span class="keywordflow">if</span>(observation_opt.size()==nobs)</div>
-<div class="line"><a name="l00701"></a><span class="lineno">  701</span>       imgReaderObs.close();</div>
-<div class="line"><a name="l00702"></a><span class="lineno">  702</span>     <span class="keywordflow">if</span>(observationmask_opt.size()==nobs)</div>
-<div class="line"><a name="l00703"></a><span class="lineno">  703</span>       imgReaderObsMask.close();</div>
-<div class="line"><a name="l00704"></a><span class="lineno">  704</span>     ++obsindex;</div>
-<div class="line"><a name="l00705"></a><span class="lineno">  705</span>       }</div>
-<div class="line"><a name="l00706"></a><span class="lineno">  706</span>       <span class="keywordflow">if</span>(model_opt.size()==nmodel)</div>
-<div class="line"><a name="l00707"></a><span class="lineno">  707</span>     imgReaderModel1.close();</div>
-<div class="line"><a name="l00708"></a><span class="lineno">  708</span>       <span class="keywordflow">if</span>(modelmask_opt.size()==nmodel)</div>
-<div class="line"><a name="l00709"></a><span class="lineno">  709</span>     imgReaderModel1Mask.close();</div>
-<div class="line"><a name="l00710"></a><span class="lineno">  710</span>       imgWriterEst.close();</div>
-<div class="line"><a name="l00711"></a><span class="lineno">  711</span>       imgWriterUncert.close();</div>
-<div class="line"><a name="l00712"></a><span class="lineno">  712</span> </div>
-<div class="line"><a name="l00713"></a><span class="lineno">  713</span>       <a class="code" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a> imgUpdaterEst;</div>
-<div class="line"><a name="l00714"></a><span class="lineno">  714</span>       <a class="code" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a> imgUpdaterUncert;</div>
-<div class="line"><a name="l00715"></a><span class="lineno">  715</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> modindex=1;modindex<nmodel;++modindex){</div>
-<div class="line"><a name="l00716"></a><span class="lineno">  716</span>     imgUpdaterEst.open(outputfw_opt[0]);</div>
-<div class="line"><a name="l00717"></a><span class="lineno">  717</span>     imgUpdaterEst.setNoData(obsnodata_opt);</div>
-<div class="line"><a name="l00718"></a><span class="lineno">  718</span>     imgUpdaterUncert.open(uncertfw_opt[0]);</div>
-<div class="line"><a name="l00719"></a><span class="lineno">  719</span>     <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00720"></a><span class="lineno">  720</span>       cout << <span class="stringliteral">"processing time "</span> << tmodel_opt[modindex] << endl;</div>
-<div class="line"><a name="l00721"></a><span class="lineno">  721</span>       <span class="keywordflow">if</span>(obsindex<relobsindex.size())</div>
-<div class="line"><a name="l00722"></a><span class="lineno">  722</span>         cout << <span class="stringliteral">"next observation "</span> << tmodel_opt[relobsindex[obsindex]] << endl;</div>
-<div class="line"><a name="l00723"></a><span class="lineno">  723</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00724"></a><span class="lineno">  724</span>         cout << <span class="stringliteral">"There is no next observation"</span> << endl;</div>
-<div class="line"><a name="l00725"></a><span class="lineno">  725</span>     }</div>
-<div class="line"><a name="l00726"></a><span class="lineno">  726</span> </div>
-<div class="line"><a name="l00727"></a><span class="lineno">  727</span>     <span class="comment">//calculate regression between two subsequence model inputs</span></div>
-<div class="line"><a name="l00728"></a><span class="lineno">  728</span>     <span class="keywordflow">if</span>(model_opt.size()==nmodel){</div>
-<div class="line"><a name="l00729"></a><span class="lineno">  729</span>       imgReaderModel1.open(model_opt[modindex-1]);</div>
-<div class="line"><a name="l00730"></a><span class="lineno">  730</span>       imgReaderModel1.setNoData(modnodata_opt);</div>
-<div class="line"><a name="l00731"></a><span class="lineno">  731</span>       imgReaderModel2.open(model_opt[modindex]);</div>
-<div class="line"><a name="l00732"></a><span class="lineno">  732</span>       imgReaderModel2.setNoData(modnodata_opt);</div>
-<div class="line"><a name="l00733"></a><span class="lineno">  733</span>     }</div>
-<div class="line"><a name="l00734"></a><span class="lineno">  734</span>     <span class="keywordflow">if</span>(modelmask_opt.size()==nmodel){</div>
-<div class="line"><a name="l00735"></a><span class="lineno">  735</span>       imgReaderModel1Mask.open(modelmask_opt[modindex-1]);</div>
-<div class="line"><a name="l00736"></a><span class="lineno">  736</span>       imgReaderModel1Mask.setNoData(msknodata_opt);</div>
-<div class="line"><a name="l00737"></a><span class="lineno">  737</span>       imgReaderModel2Mask.open(modelmask_opt[modindex]);</div>
-<div class="line"><a name="l00738"></a><span class="lineno">  738</span>       imgReaderModel2Mask.setNoData(msknodata_opt);</div>
-<div class="line"><a name="l00739"></a><span class="lineno">  739</span>     }</div>
-<div class="line"><a name="l00740"></a><span class="lineno">  740</span>     </div>
-<div class="line"><a name="l00741"></a><span class="lineno">  741</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00742"></a><span class="lineno">  742</span> </div>
-<div class="line"><a name="l00743"></a><span class="lineno">  743</span>     <span class="keywordtype">bool</span> update=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00744"></a><span class="lineno">  744</span>     <span class="keywordflow">if</span>(obsindex<relobsindex.size()){</div>
-<div class="line"><a name="l00745"></a><span class="lineno">  745</span>       update=(relobsindex[obsindex]==modindex);</div>
-<div class="line"><a name="l00746"></a><span class="lineno">  746</span>     }</div>
-<div class="line"><a name="l00747"></a><span class="lineno">  747</span>     <span class="keywordflow">if</span>(update){</div>
-<div class="line"><a name="l00748"></a><span class="lineno">  748</span>       <span class="keywordflow">if</span>(observation_opt.size()==nobs){</div>
-<div class="line"><a name="l00749"></a><span class="lineno">  749</span>         <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00750"></a><span class="lineno">  750</span>           cout << <span class="stringliteral">"***update "</span> << relobsindex[obsindex] << <span class="stringliteral">" = "</span> << modindex << <span class="stringliteral">" "</span> << observation_opt[obsindex] << <span class="stringliteral">" ***"</span> << endl;</div>
-<div class="line"><a name="l00751"></a><span class="lineno">  751</span>         imgReaderObs.open(observation_opt[obsindex]);</div>
-<div class="line"><a name="l00752"></a><span class="lineno">  752</span>         imgReaderObs.getGeoTransform(geotransform);</div>
-<div class="line"><a name="l00753"></a><span class="lineno">  753</span>         imgReaderObs.setNoData(obsnodata_opt);</div>
-<div class="line"><a name="l00754"></a><span class="lineno">  754</span>       }</div>
-<div class="line"><a name="l00755"></a><span class="lineno">  755</span>       <span class="keywordflow">if</span>(observationmask_opt.size()==nobs){</div>
-<div class="line"><a name="l00756"></a><span class="lineno">  756</span>         imgReaderObsMask.open(observationmask_opt[obsindex]);</div>
-<div class="line"><a name="l00757"></a><span class="lineno">  757</span>         imgReaderObsMask.setNoData(msknodata_opt);</div>
-<div class="line"><a name="l00758"></a><span class="lineno">  758</span>       }</div>
-<div class="line"><a name="l00759"></a><span class="lineno">  759</span>     }</div>
-<div class="line"><a name="l00760"></a><span class="lineno">  760</span>     <span class="comment">//prediction (also to fill cloudy pixels in measurement update mode)</span></div>
-<div class="line"><a name="l00761"></a><span class="lineno">  761</span>     <span class="keywordtype">string</span> input;</div>
-<div class="line"><a name="l00762"></a><span class="lineno">  762</span>     input=outputfw_opt[0];</div>
-<div class="line"><a name="l00763"></a><span class="lineno">  763</span> </div>
-<div class="line"><a name="l00764"></a><span class="lineno">  764</span>     vector< vector<double> > obsLineVector(down_opt[0]);</div>
-<div class="line"><a name="l00765"></a><span class="lineno">  765</span>     vector<double> obsLineBuffer;</div>
-<div class="line"><a name="l00766"></a><span class="lineno">  766</span>     vector<double> obsMaskLineBuffer;</div>
-<div class="line"><a name="l00767"></a><span class="lineno">  767</span>     vector<double> model1MaskLineBuffer;</div>
-<div class="line"><a name="l00768"></a><span class="lineno">  768</span>     vector<double> model2MaskLineBuffer;</div>
-<div class="line"><a name="l00769"></a><span class="lineno">  769</span>     vector<double> obsWindowBuffer;<span class="comment">//buffer for observation to calculate average corresponding to model pixel</span></div>
-<div class="line"><a name="l00770"></a><span class="lineno">  770</span>     vector<double> model1LineBuffer;</div>
-<div class="line"><a name="l00771"></a><span class="lineno">  771</span>     vector<double> model2LineBuffer;</div>
-<div class="line"><a name="l00772"></a><span class="lineno">  772</span>     vector<double> model1buffer;<span class="comment">//buffer for model 1 to calculate time regression based on window</span></div>
-<div class="line"><a name="l00773"></a><span class="lineno">  773</span>     vector<double> model2buffer;<span class="comment">//buffer for model 2 to calculate time regression based on window</span></div>
-<div class="line"><a name="l00774"></a><span class="lineno">  774</span>     vector<double> uncertObsLineBuffer;</div>
-<div class="line"><a name="l00775"></a><span class="lineno">  775</span>     vector< vector<double> > estLineVector(down_opt[0]);</div>
-<div class="line"><a name="l00776"></a><span class="lineno">  776</span>     vector<double> estLineBuffer;</div>
-<div class="line"><a name="l00777"></a><span class="lineno">  777</span>     vector<double> estWindowBuffer;<span class="comment">//buffer for estimate to calculate average corresponding to model pixel</span></div>
-<div class="line"><a name="l00778"></a><span class="lineno">  778</span>     vector<double> uncertReadBuffer;</div>
-<div class="line"><a name="l00779"></a><span class="lineno">  779</span>     vector<double> estWriteBuffer(ncol);</div>
-<div class="line"><a name="l00780"></a><span class="lineno">  780</span>     vector<double> uncertWriteBuffer(ncol);</div>
-<div class="line"><a name="l00781"></a><span class="lineno">  781</span>     <span class="comment">//test</span></div>
-<div class="line"><a name="l00782"></a><span class="lineno">  782</span>     vector<double> gainWriteBuffer(ncol);</div>
-<div class="line"><a name="l00783"></a><span class="lineno">  783</span> </div>
-<div class="line"><a name="l00784"></a><span class="lineno">  784</span>     <span class="keywordtype">int</span> readObsBand=(observation_opt.size()==nobs)? 0:obsindex;</div>
-<div class="line"><a name="l00785"></a><span class="lineno">  785</span>     <span class="keywordtype">int</span> readObsMaskBand=(observationmask_opt.size()==nobs)? mskband_opt[0]:obsindex;</div>
-<div class="line"><a name="l00786"></a><span class="lineno">  786</span>     <span class="keywordtype">int</span> readModel1Band=(model_opt.size()==nmodel)? 0:modindex-1;</div>
-<div class="line"><a name="l00787"></a><span class="lineno">  787</span>     <span class="keywordtype">int</span> readModel2Band=(model_opt.size()==nmodel)? 0:modindex;</div>
-<div class="line"><a name="l00788"></a><span class="lineno">  788</span>     <span class="keywordtype">int</span> readModel1MaskBand=(modelmask_opt.size()==nmodel)? mskband_opt[0]:modindex-1;</div>
-<div class="line"><a name="l00789"></a><span class="lineno">  789</span>     <span class="keywordtype">int</span> readModel2MaskBand=(modelmask_opt.size()==nmodel)? mskband_opt[0]:modindex;</div>
-<div class="line"><a name="l00790"></a><span class="lineno">  790</span> </div>
-<div class="line"><a name="l00791"></a><span class="lineno">  791</span>     <span class="comment">//initialize obsLineVector if update</span></div>
-<div class="line"><a name="l00792"></a><span class="lineno">  792</span>     <span class="keywordflow">if</span>(update){</div>
-<div class="line"><a name="l00793"></a><span class="lineno">  793</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00794"></a><span class="lineno">  794</span>         cout << <span class="stringliteral">"initialize obsLineVector"</span> << endl;</div>
-<div class="line"><a name="l00795"></a><span class="lineno">  795</span>       assert(down_opt[0]%2);<span class="comment">//window size must be odd </span></div>
-<div class="line"><a name="l00796"></a><span class="lineno">  796</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iline=-down_opt[0]/2;iline<down_opt[0]/2+1;++iline){</div>
-<div class="line"><a name="l00797"></a><span class="lineno">  797</span>         <span class="keywordflow">if</span>(iline<0)<span class="comment">//replicate line 0</span></div>
-<div class="line"><a name="l00798"></a><span class="lineno">  798</span>           imgReaderObs.readData(obsLineVector[iline+down_opt[0]/2],GDT_Float64,0,readObsBand);</div>
-<div class="line"><a name="l00799"></a><span class="lineno">  799</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00800"></a><span class="lineno">  800</span>           imgReaderObs.readData(obsLineVector[iline+down_opt[0]/2],GDT_Float64,iline,readObsBand);</div>
-<div class="line"><a name="l00801"></a><span class="lineno">  801</span>       }</div>
-<div class="line"><a name="l00802"></a><span class="lineno">  802</span>     }</div>
-<div class="line"><a name="l00803"></a><span class="lineno">  803</span>     <span class="comment">//initialize estLineVector</span></div>
-<div class="line"><a name="l00804"></a><span class="lineno">  804</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00805"></a><span class="lineno">  805</span>       cout << <span class="stringliteral">"initialize estLineVector"</span> << endl;</div>
-<div class="line"><a name="l00806"></a><span class="lineno">  806</span>     assert(down_opt[0]%2);<span class="comment">//window size must be odd </span></div>
-<div class="line"><a name="l00807"></a><span class="lineno">  807</span> </div>
-<div class="line"><a name="l00808"></a><span class="lineno">  808</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iline=-down_opt[0]/2;iline<down_opt[0]/2+1;++iline){</div>
-<div class="line"><a name="l00809"></a><span class="lineno">  809</span>       <span class="keywordflow">if</span>(iline<0)<span class="comment">//replicate line 0</span></div>
-<div class="line"><a name="l00810"></a><span class="lineno">  810</span>         imgUpdaterEst.readData(estLineVector[iline+down_opt[0]/2],GDT_Float64,0,modindex-1);</div>
-<div class="line"><a name="l00811"></a><span class="lineno">  811</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00812"></a><span class="lineno">  812</span>         imgUpdaterEst.readData(estLineVector[iline+down_opt[0]/2],GDT_Float64,iline,modindex-1);</div>
-<div class="line"><a name="l00813"></a><span class="lineno">  813</span>     }</div>
-<div class="line"><a name="l00814"></a><span class="lineno">  814</span>     <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> statobs;</div>
-<div class="line"><a name="l00815"></a><span class="lineno">  815</span>     statobs.setNoDataValues(obsnodata_opt);</div>
-<div class="line"><a name="l00816"></a><span class="lineno">  816</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> jrow=0;jrow<nrow;jrow+=down_opt[0]){</div>
-<div class="line"><a name="l00817"></a><span class="lineno">  817</span>       <span class="comment">//todo: read entire window for uncertReadBuffer...</span></div>
-<div class="line"><a name="l00818"></a><span class="lineno">  818</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=jrow;irow<jrow+down_opt[0]&&irow<nrow;++irow){</div>
-<div class="line"><a name="l00819"></a><span class="lineno">  819</span>         imgUpdaterUncert.readData(uncertReadBuffer,GDT_Float64,irow,modindex-1);</div>
-<div class="line"><a name="l00820"></a><span class="lineno">  820</span>         imgUpdaterUncert.image2geo(0,irow,geox,geoy);</div>
-<div class="line"><a name="l00821"></a><span class="lineno">  821</span>         <span class="keywordflow">if</span>(model_opt.size()==nmodel){</div>
-<div class="line"><a name="l00822"></a><span class="lineno">  822</span>           imgReaderModel2.geo2image(geox,geoy,modCol,modRow);</div>
-<div class="line"><a name="l00823"></a><span class="lineno">  823</span>           assert(modRow>=0&&modRow<imgReaderModel2.nrOfRow());</div>
-<div class="line"><a name="l00824"></a><span class="lineno">  824</span>           imgReaderModel2.readData(model2LineBuffer,GDT_Float64,modRow,readModel2Band,theResample);</div>
-<div class="line"><a name="l00825"></a><span class="lineno">  825</span>           imgReaderModel1.geo2image(geox,geoy,modCol,modRow);</div>
-<div class="line"><a name="l00826"></a><span class="lineno">  826</span>         }</div>
-<div class="line"><a name="l00827"></a><span class="lineno">  827</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00828"></a><span class="lineno">  828</span>           imgReaderModel1.geo2image(geox,geoy,modCol,modRow);</div>
-<div class="line"><a name="l00829"></a><span class="lineno">  829</span>           imgReaderModel1.readData(model2LineBuffer,GDT_Float64,modRow,readModel2Band,theResample);</div>
-<div class="line"><a name="l00830"></a><span class="lineno">  830</span>         }</div>
-<div class="line"><a name="l00831"></a><span class="lineno">  831</span>         assert(modRow>=0&&modRow<imgReaderModel1.nrOfRow());</div>
-<div class="line"><a name="l00832"></a><span class="lineno">  832</span>         imgReaderModel1.readData(model1LineBuffer,GDT_Float64,modRow,readModel1Band,theResample);</div>
-<div class="line"><a name="l00833"></a><span class="lineno">  833</span> </div>
-<div class="line"><a name="l00834"></a><span class="lineno">  834</span>         <span class="keywordflow">if</span>(modelmask_opt.size()){</div>
-<div class="line"><a name="l00835"></a><span class="lineno">  835</span>           imgReaderModel1Mask.readData(model1MaskLineBuffer,GDT_Float64,modRow,readModel1MaskBand);</div>
-<div class="line"><a name="l00836"></a><span class="lineno">  836</span>           <span class="keywordflow">if</span>(modelmask_opt.size()==nmodel)</div>
-<div class="line"><a name="l00837"></a><span class="lineno">  837</span>         imgReaderModel2Mask.readData(model2MaskLineBuffer,GDT_Float64,modRow,readModel2MaskBand);</div>
-<div class="line"><a name="l00838"></a><span class="lineno">  838</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00839"></a><span class="lineno">  839</span>         imgReaderModel1Mask.readData(model2MaskLineBuffer,GDT_Float64,modRow,readModel2MaskBand);</div>
-<div class="line"><a name="l00840"></a><span class="lineno">  840</span>         }</div>
-<div class="line"><a name="l00841"></a><span class="lineno">  841</span> </div>
-<div class="line"><a name="l00842"></a><span class="lineno">  842</span>         <span class="keywordtype">int</span> maxRow=(irow+down_opt[0]/2<imgUpdaterEst.nrOfRow()) ? irow+down_opt[0]/2 : imgUpdaterEst.nrOfRow()-1;</div>
-<div class="line"><a name="l00843"></a><span class="lineno">  843</span>         estLineVector.erase(estLineVector.begin());</div>
-<div class="line"><a name="l00844"></a><span class="lineno">  844</span>         imgUpdaterEst.readData(estLineBuffer,GDT_Float64,maxRow,modindex-1);</div>
-<div class="line"><a name="l00845"></a><span class="lineno">  845</span>         estLineVector.push_back(estLineBuffer);</div>
-<div class="line"><a name="l00846"></a><span class="lineno">  846</span>         estLineBuffer=estLineVector[down_opt[0]/2];</div>
-<div class="line"><a name="l00847"></a><span class="lineno">  847</span> </div>
-<div class="line"><a name="l00848"></a><span class="lineno">  848</span>         <span class="keywordflow">if</span>(update){</div>
-<div class="line"><a name="l00849"></a><span class="lineno">  849</span>           <span class="keywordtype">int</span> maxRow=(irow+down_opt[0]/2<imgReaderObs.nrOfRow()) ? irow+down_opt[0]/2 : imgReaderObs.nrOfRow()-1;</div>
-<div class="line"><a name="l00850"></a><span class="lineno">  850</span>           obsLineVector.erase(obsLineVector.begin());</div>
-<div class="line"><a name="l00851"></a><span class="lineno">  851</span>           imgReaderObs.readData(obsLineBuffer,GDT_Float64,maxRow,readObsBand);</div>
-<div class="line"><a name="l00852"></a><span class="lineno">  852</span>           obsLineVector.push_back(obsLineBuffer);</div>
-<div class="line"><a name="l00853"></a><span class="lineno">  853</span>           obsLineBuffer=obsLineVector[down_opt[0]/2];</div>
-<div class="line"><a name="l00854"></a><span class="lineno">  854</span> </div>
-<div class="line"><a name="l00855"></a><span class="lineno">  855</span>           <span class="keywordflow">if</span>(observationmask_opt.size())</div>
-<div class="line"><a name="l00856"></a><span class="lineno">  856</span>         imgReaderObsMask.readData(obsMaskLineBuffer,GDT_Float64,irow,readObsMaskBand);</div>
-<div class="line"><a name="l00857"></a><span class="lineno">  857</span>         }</div>
-<div class="line"><a name="l00858"></a><span class="lineno">  858</span> </div>
-<div class="line"><a name="l00859"></a><span class="lineno">  859</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> jcol=0;jcol<ncol;jcol+=down_opt[0]){</div>
-<div class="line"><a name="l00860"></a><span class="lineno">  860</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=jcol;icol<jcol+down_opt[0]&&icol<ncol;++icol){</div>
-<div class="line"><a name="l00861"></a><span class="lineno">  861</span>         imgUpdaterEst.image2geo(icol,irow,geox,geoy);</div>
-<div class="line"><a name="l00862"></a><span class="lineno">  862</span>         <span class="keywordtype">int</span> minCol=(icol>down_opt[0]/2) ? icol-down_opt[0]/2 : 0;</div>
-<div class="line"><a name="l00863"></a><span class="lineno">  863</span>         <span class="keywordtype">int</span> maxCol=(icol+down_opt[0]/2<imgUpdaterEst.nrOfCol()) ? icol+down_opt[0]/2 : imgUpdaterEst.nrOfCol()-1;</div>
-<div class="line"><a name="l00864"></a><span class="lineno">  864</span>         <span class="keywordtype">int</span> minRow=(irow>down_opt[0]/2) ? irow-down_opt[0]/2 : 0;</div>
-<div class="line"><a name="l00865"></a><span class="lineno">  865</span>         <span class="keywordtype">int</span> maxRow=(irow+down_opt[0]/2<imgUpdaterEst.nrOfRow()) ? irow+down_opt[0]/2 : imgUpdaterEst.nrOfRow()-1;</div>
-<div class="line"><a name="l00866"></a><span class="lineno">  866</span>         estWindowBuffer.clear();</div>
-<div class="line"><a name="l00867"></a><span class="lineno">  867</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iline=0;iline<estLineVector.size();++iline){</div>
-<div class="line"><a name="l00868"></a><span class="lineno">  868</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=minCol;isample<=maxCol;++isample){</div>
-<div class="line"><a name="l00869"></a><span class="lineno">  869</span>             assert(isample<estLineVector[iline].size());</div>
-<div class="line"><a name="l00870"></a><span class="lineno">  870</span>             estWindowBuffer.push_back(estLineVector[iline][isample]);</div>
-<div class="line"><a name="l00871"></a><span class="lineno">  871</span>           }</div>
-<div class="line"><a name="l00872"></a><span class="lineno">  872</span>         }</div>
-<div class="line"><a name="l00873"></a><span class="lineno">  873</span>         <span class="keywordflow">if</span>(update){</div>
-<div class="line"><a name="l00874"></a><span class="lineno">  874</span>           obsWindowBuffer.clear();</div>
-<div class="line"><a name="l00875"></a><span class="lineno">  875</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iline=0;iline<obsLineVector.size();++iline){</div>
-<div class="line"><a name="l00876"></a><span class="lineno">  876</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=minCol;isample<=maxCol;++isample){</div>
-<div class="line"><a name="l00877"></a><span class="lineno">  877</span>               assert(isample<obsLineVector[iline].size());</div>
-<div class="line"><a name="l00878"></a><span class="lineno">  878</span>               obsWindowBuffer.push_back(obsLineVector[iline][isample]);</div>
-<div class="line"><a name="l00879"></a><span class="lineno">  879</span>             }</div>
-<div class="line"><a name="l00880"></a><span class="lineno">  880</span>           }</div>
-<div class="line"><a name="l00881"></a><span class="lineno">  881</span>         }</div>
-<div class="line"><a name="l00882"></a><span class="lineno">  882</span>         <span class="keywordtype">double</span> estValue=estLineBuffer[icol];</div>
-<div class="line"><a name="l00883"></a><span class="lineno">  883</span>         imgReaderModel1.geo2image(geox,geoy,modCol,modRow);</div>
-<div class="line"><a name="l00884"></a><span class="lineno">  884</span>         <span class="keywordtype">bool</span> model1IsNoData=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00885"></a><span class="lineno">  885</span>         <span class="keywordflow">if</span>(modelmask_opt.size())</div>
-<div class="line"><a name="l00886"></a><span class="lineno">  886</span>           model1IsNoData=imgReaderModel1Mask.isNoData(model1MaskLineBuffer[modCol]);</div>
-<div class="line"><a name="l00887"></a><span class="lineno">  887</span>         lowerCol=modCol-0.5;</div>
-<div class="line"><a name="l00888"></a><span class="lineno">  888</span>         lowerCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(lowerCol);</div>
-<div class="line"><a name="l00889"></a><span class="lineno">  889</span>         upperCol=modCol+0.5;</div>
-<div class="line"><a name="l00890"></a><span class="lineno">  890</span>         upperCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(upperCol);</div>
-<div class="line"><a name="l00891"></a><span class="lineno">  891</span>         <span class="keywordflow">if</span>(lowerCol<0)</div>
-<div class="line"><a name="l00892"></a><span class="lineno">  892</span>           lowerCol=0;</div>
-<div class="line"><a name="l00893"></a><span class="lineno">  893</span>         <span class="keywordflow">if</span>(upperCol>=imgReaderModel1.nrOfCol())</div>
-<div class="line"><a name="l00894"></a><span class="lineno">  894</span>           upperCol=imgReaderModel1.nrOfCol()-1;</div>
-<div class="line"><a name="l00895"></a><span class="lineno">  895</span>         <span class="keywordtype">double</span> modValue1=(modCol-0.5-lowerCol)*model1LineBuffer[upperCol]+(1-modCol+0.5+lowerCol)*model1LineBuffer[lowerCol];</div>
-<div class="line"><a name="l00896"></a><span class="lineno">  896</span>         model1IsNoData=model1IsNoData||imgReaderModel1.isNoData(modValue1);</div>
-<div class="line"><a name="l00897"></a><span class="lineno">  897</span>         <span class="keywordflow">if</span>(model_opt.size()==nmodel)</div>
-<div class="line"><a name="l00898"></a><span class="lineno">  898</span>           imgReaderModel2.geo2image(geox,geoy,modCol,modRow);</div>
-<div class="line"><a name="l00899"></a><span class="lineno">  899</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00900"></a><span class="lineno">  900</span>           imgReaderModel1.geo2image(geox,geoy,modCol,modRow);</div>
-<div class="line"><a name="l00901"></a><span class="lineno">  901</span>         <span class="keywordtype">bool</span> model2IsNoData=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00902"></a><span class="lineno">  902</span>         <span class="keywordflow">if</span>(modelmask_opt.size())</div>
-<div class="line"><a name="l00903"></a><span class="lineno">  903</span>           model2IsNoData=imgReaderModel1Mask.isNoData(model2MaskLineBuffer[modCol]);</div>
-<div class="line"><a name="l00904"></a><span class="lineno">  904</span>         lowerCol=modCol-0.5;</div>
-<div class="line"><a name="l00905"></a><span class="lineno">  905</span>         lowerCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(lowerCol);</div>
-<div class="line"><a name="l00906"></a><span class="lineno">  906</span>         upperCol=modCol+0.5;</div>
-<div class="line"><a name="l00907"></a><span class="lineno">  907</span>         upperCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(upperCol);</div>
-<div class="line"><a name="l00908"></a><span class="lineno">  908</span>         <span class="keywordflow">if</span>(lowerCol<0)</div>
-<div class="line"><a name="l00909"></a><span class="lineno">  909</span>           lowerCol=0;</div>
-<div class="line"><a name="l00910"></a><span class="lineno">  910</span>         <span class="keywordflow">if</span>(upperCol>=imgReaderModel1.nrOfCol())</div>
-<div class="line"><a name="l00911"></a><span class="lineno">  911</span>           upperCol=imgReaderModel1.nrOfCol()-1;</div>
-<div class="line"><a name="l00912"></a><span class="lineno">  912</span>         <span class="keywordtype">double</span> modValue2=(modCol-0.5-lowerCol)*model2LineBuffer[upperCol]+(1-modCol+0.5+lowerCol)*model2LineBuffer[lowerCol];</div>
-<div class="line"><a name="l00913"></a><span class="lineno">  913</span>         model2IsNoData=model2IsNoData||imgReaderModel1.isNoData(modValue2);</div>
-<div class="line"><a name="l00914"></a><span class="lineno">  914</span>         <span class="keywordtype">bool</span> obsIsNoData=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00915"></a><span class="lineno">  915</span>         <span class="keywordflow">if</span>(observationmask_opt.size())</div>
-<div class="line"><a name="l00916"></a><span class="lineno">  916</span>           obsIsNoData=imgReaderObsMask.isNoData(obsMaskLineBuffer[icol]);</div>
-<div class="line"><a name="l00917"></a><span class="lineno">  917</span>         obsIsNoData=obsIsNoData||imgReaderObs.isNoData(obsLineBuffer[icol]);</div>
-<div class="line"><a name="l00918"></a><span class="lineno">  918</span> </div>
-<div class="line"><a name="l00919"></a><span class="lineno">  919</span>         <span class="keywordflow">if</span>(imgUpdaterEst.isNoData(estValue)){</div>
-<div class="line"><a name="l00920"></a><span class="lineno">  920</span>           <span class="comment">//we have not found any valid data yet, better here to take the current model value if valid</span></div>
-<div class="line"><a name="l00921"></a><span class="lineno">  921</span>           <span class="keywordflow">if</span>(model2IsNoData){<span class="comment">//if both estimate and model are no-data, set obs to nodata</span></div>
-<div class="line"><a name="l00922"></a><span class="lineno">  922</span>             estWriteBuffer[icol]=obsnodata_opt[0];</div>
-<div class="line"><a name="l00923"></a><span class="lineno">  923</span>             uncertWriteBuffer[icol]=uncertNodata_opt[0];</div>
-<div class="line"><a name="l00924"></a><span class="lineno">  924</span>             <span class="comment">//test</span></div>
-<div class="line"><a name="l00925"></a><span class="lineno">  925</span>             gainWriteBuffer[icol]=0;</div>
-<div class="line"><a name="l00926"></a><span class="lineno">  926</span>           }</div>
-<div class="line"><a name="l00927"></a><span class="lineno">  927</span>           <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00928"></a><span class="lineno">  928</span>             estWriteBuffer[icol]=modValue2;</div>
-<div class="line"><a name="l00929"></a><span class="lineno">  929</span>             uncertWriteBuffer[icol]=uncertModel_opt[0];<span class="comment">//*stdDev*stdDev;</span></div>
-<div class="line"><a name="l00930"></a><span class="lineno">  930</span>             <span class="keywordflow">if</span>(obsmin_opt.size()){</div>
-<div class="line"><a name="l00931"></a><span class="lineno">  931</span>               <span class="keywordflow">if</span>(estWriteBuffer[icol]<obsmin_opt[0])</div>
-<div class="line"><a name="l00932"></a><span class="lineno">  932</span>             estWriteBuffer[icol]=obsmin_opt[0];</div>
-<div class="line"><a name="l00933"></a><span class="lineno">  933</span>             }</div>
-<div class="line"><a name="l00934"></a><span class="lineno">  934</span>             <span class="keywordflow">if</span>(obsmax_opt.size()){</div>
-<div class="line"><a name="l00935"></a><span class="lineno">  935</span>               <span class="keywordflow">if</span>(estWriteBuffer[icol]>obsmax_opt[0])</div>
-<div class="line"><a name="l00936"></a><span class="lineno">  936</span>             estWriteBuffer[icol]=obsmax_opt[0];</div>
-<div class="line"><a name="l00937"></a><span class="lineno">  937</span>               <span class="keywordflow">if</span>(uncertWriteBuffer[icol]>obsmax_opt[0])</div>
-<div class="line"><a name="l00938"></a><span class="lineno">  938</span>             uncertWriteBuffer[icol]=obsmax_opt[0];</div>
-<div class="line"><a name="l00939"></a><span class="lineno">  939</span>             }</div>
-<div class="line"><a name="l00940"></a><span class="lineno">  940</span>             <span class="comment">//test</span></div>
-<div class="line"><a name="l00941"></a><span class="lineno">  941</span>             gainWriteBuffer[icol]=0;</div>
-<div class="line"><a name="l00942"></a><span class="lineno">  942</span>           }</div>
-<div class="line"><a name="l00943"></a><span class="lineno">  943</span>         }</div>
-<div class="line"><a name="l00944"></a><span class="lineno">  944</span>         <span class="keywordflow">else</span>{<span class="comment">//previous estimate is valid</span></div>
-<div class="line"><a name="l00945"></a><span class="lineno">  945</span>           <span class="keywordtype">double</span> estMeanValue=0;</div>
-<div class="line"><a name="l00946"></a><span class="lineno">  946</span>           <span class="keywordtype">double</span> estVarValue=0;</div>
-<div class="line"><a name="l00947"></a><span class="lineno">  947</span>           statobs.meanVar(estWindowBuffer,estMeanValue,estVarValue);</div>
-<div class="line"><a name="l00948"></a><span class="lineno">  948</span>           <span class="keywordtype">double</span> nvalid=0;</div>
-<div class="line"><a name="l00949"></a><span class="lineno">  949</span>           <span class="comment">//time update</span></div>
-<div class="line"><a name="l00950"></a><span class="lineno">  950</span>           <span class="keywordtype">double</span> processNoiseVariance=processNoise_opt[0]*estVarValue;</div>
-<div class="line"><a name="l00951"></a><span class="lineno">  951</span>           <span class="comment">//estimate stability of weight distribution from model (low resolution) data in a window mod1 -> mod2 and assume distribution holds at fine spatial resolution. </span></div>
-<div class="line"><a name="l00952"></a><span class="lineno">  952</span> </div>
-<div class="line"><a name="l00953"></a><span class="lineno">  953</span>           <span class="keywordflow">if</span>(model1IsNoData||model2IsNoData){</div>
-<div class="line"><a name="l00954"></a><span class="lineno">  954</span>             estWriteBuffer[icol]=estValue;</div>
-<div class="line"><a name="l00955"></a><span class="lineno">  955</span>             <span class="comment">// uncertWriteBuffer[icol]=uncertReadBuffer[icol]+processNoiseVariance;</span></div>
-<div class="line"><a name="l00956"></a><span class="lineno">  956</span>             <span class="comment">//todo: check following line if makes sense</span></div>
-<div class="line"><a name="l00957"></a><span class="lineno">  957</span>             uncertWriteBuffer[icol]=uncertReadBuffer[icol]+uncertObs_opt[0];</div>
-<div class="line"><a name="l00958"></a><span class="lineno">  958</span>           }</div>
-<div class="line"><a name="l00959"></a><span class="lineno">  959</span>           <span class="keywordflow">else</span>{<span class="comment">//model is good</span></div>
-<div class="line"><a name="l00960"></a><span class="lineno">  960</span>             <span class="keywordtype">double</span> modRatio=modValue2/modValue1;<span class="comment">//transition matrix A in Kalman equations</span></div>
-<div class="line"><a name="l00961"></a><span class="lineno">  961</span>             estWriteBuffer[icol]=estValue*modRatio;</div>
-<div class="line"><a name="l00962"></a><span class="lineno">  962</span>             uncertWriteBuffer[icol]=uncertReadBuffer[icol]*modRatio*modRatio+processNoiseVariance;</div>
-<div class="line"><a name="l00963"></a><span class="lineno">  963</span>           }</div>
-<div class="line"><a name="l00964"></a><span class="lineno">  964</span>           <span class="keywordflow">if</span>(obsmin_opt.size()){</div>
-<div class="line"><a name="l00965"></a><span class="lineno">  965</span>             <span class="keywordflow">if</span>(estWriteBuffer[icol]<obsmin_opt[0])</div>
-<div class="line"><a name="l00966"></a><span class="lineno">  966</span>               estWriteBuffer[icol]=obsmin_opt[0];</div>
-<div class="line"><a name="l00967"></a><span class="lineno">  967</span>           }</div>
-<div class="line"><a name="l00968"></a><span class="lineno">  968</span>           <span class="keywordflow">if</span>(obsmax_opt.size()){</div>
-<div class="line"><a name="l00969"></a><span class="lineno">  969</span>             <span class="keywordflow">if</span>(estWriteBuffer[icol]>obsmax_opt[0])</div>
-<div class="line"><a name="l00970"></a><span class="lineno">  970</span>               estWriteBuffer[icol]=obsmax_opt[0];</div>
-<div class="line"><a name="l00971"></a><span class="lineno">  971</span>             <span class="keywordflow">if</span>(uncertWriteBuffer[icol]>obsmax_opt[0])</div>
-<div class="line"><a name="l00972"></a><span class="lineno">  972</span>               uncertWriteBuffer[icol]=obsmax_opt[0];</div>
-<div class="line"><a name="l00973"></a><span class="lineno">  973</span>           }</div>
-<div class="line"><a name="l00974"></a><span class="lineno">  974</span>         }</div>
-<div class="line"><a name="l00975"></a><span class="lineno">  975</span>         <span class="comment">//measurement update</span></div>
-<div class="line"><a name="l00976"></a><span class="lineno">  976</span>         <span class="keywordflow">if</span>(update&&!obsIsNoData){</div>
-<div class="line"><a name="l00977"></a><span class="lineno">  977</span>           <span class="keywordtype">double</span> kalmanGain=1;</div>
-<div class="line"><a name="l00978"></a><span class="lineno">  978</span>           <span class="keywordflow">if</span>(!model2IsNoData){<span class="comment">//model is valid</span></div>
-<div class="line"><a name="l00979"></a><span class="lineno">  979</span>             <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> statobs;</div>
-<div class="line"><a name="l00980"></a><span class="lineno">  980</span>             statobs.setNoDataValues(obsnodata_opt);</div>
-<div class="line"><a name="l00981"></a><span class="lineno">  981</span>             <span class="keywordtype">double</span> obsMeanValue=0;</div>
-<div class="line"><a name="l00982"></a><span class="lineno">  982</span>             <span class="keywordtype">double</span> obsVarValue=0;</div>
-<div class="line"><a name="l00983"></a><span class="lineno">  983</span>             <span class="keywordtype">double</span> difference=0;</div>
-<div class="line"><a name="l00984"></a><span class="lineno">  984</span>             statobs.meanVar(obsWindowBuffer,obsMeanValue,obsVarValue);</div>
-<div class="line"><a name="l00985"></a><span class="lineno">  985</span>             difference=obsMeanValue-modValue2;</div>
-<div class="line"><a name="l00986"></a><span class="lineno">  986</span>             <span class="comment">// errObs=uncertObs_opt[0]*sqrt(difference*difference);</span></div>
-<div class="line"><a name="l00987"></a><span class="lineno">  987</span>             errObs=uncertObs_opt[0]*difference*difference;<span class="comment">//uncertainty of the observation (R in Kalman equations)</span></div>
-<div class="line"><a name="l00988"></a><span class="lineno">  988</span> </div>
-<div class="line"><a name="l00989"></a><span class="lineno">  989</span>             <span class="keywordflow">if</span>(errObs<eps_opt[0])</div>
-<div class="line"><a name="l00990"></a><span class="lineno">  990</span>               errObs=eps_opt[0];</div>
-<div class="line"><a name="l00991"></a><span class="lineno">  991</span>             <span class="keywordtype">double</span> errorCovariance=uncertWriteBuffer[icol];<span class="comment">//P in Kalman equations</span></div>
-<div class="line"><a name="l00992"></a><span class="lineno">  992</span> </div>
-<div class="line"><a name="l00993"></a><span class="lineno">  993</span>             <span class="keywordflow">if</span>(errorCovariance+errObs>eps_opt[0])</div>
-<div class="line"><a name="l00994"></a><span class="lineno">  994</span>               kalmanGain=errorCovariance/(errorCovariance+errObs);</div>
-<div class="line"><a name="l00995"></a><span class="lineno">  995</span>             <span class="keywordflow">else</span> </div>
-<div class="line"><a name="l00996"></a><span class="lineno">  996</span>               kalmanGain=1;</div>
-<div class="line"><a name="l00997"></a><span class="lineno">  997</span>             estWriteBuffer[icol]+=kalmanGain*(obsLineBuffer[icol]-estWriteBuffer[icol]);</div>
-<div class="line"><a name="l00998"></a><span class="lineno">  998</span>             uncertWriteBuffer[icol]*=(1-kalmanGain);</div>
-<div class="line"><a name="l00999"></a><span class="lineno">  999</span>             <span class="keywordflow">if</span>(obsmin_opt.size()){</div>
-<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>               <span class="keywordflow">if</span>(estWriteBuffer[icol]<obsmin_opt[0])</div>
-<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>             estWriteBuffer[icol]=obsmin_opt[0];</div>
-<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>             }</div>
-<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>             <span class="keywordflow">if</span>(obsmax_opt.size()){</div>
-<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>               <span class="keywordflow">if</span>(estWriteBuffer[icol]>obsmax_opt[0])</div>
-<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>             estWriteBuffer[icol]=obsmax_opt[0];</div>
-<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>               <span class="keywordflow">if</span>(uncertWriteBuffer[icol]>obsmax_opt[0])</div>
-<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>             uncertWriteBuffer[icol]=obsmax_opt[0];</div>
-<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>             }</div>
-<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>           }</div>
-<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>           assert(kalmanGain<=1);</div>
-<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>           <span class="comment">//test</span></div>
-<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>           gainWriteBuffer[icol]=kalmanGain;</div>
-<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>         }</div>
-<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>           }</div>
-<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>         }</div>
-<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span> </div>
-<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>         <span class="comment">//test</span></div>
-<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>         <span class="keywordflow">if</span>(gain_opt.size())</div>
-<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>           imgWriterGain.writeData(gainWriteBuffer,GDT_Float64,irow,modindex);</div>
-<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>         imgUpdaterEst.writeData(estWriteBuffer,GDT_Float64,irow,modindex);</div>
-<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>         imgUpdaterUncert.writeData(uncertWriteBuffer,GDT_Float64,irow,modindex);</div>
-<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>         progress=<span class="keyword">static_cast<</span><span class="keywordtype">float</span><span class="keyword">></span>((irow+1.0)/imgUpdaterEst.nrOfRow());</div>
-<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>         pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>       }</div>
-<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>     }</div>
-<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span> </div>
-<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>     <span class="comment">//must close writers to ensure flush</span></div>
-<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>     imgUpdaterEst.close();</div>
-<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>     imgUpdaterUncert.close();</div>
-<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>     <span class="comment">// imgWriterEst.close();</span></div>
-<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>     <span class="comment">// imgReaderEst.close();</span></div>
-<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span> </div>
-<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>     <span class="keywordflow">if</span>(update){</div>
-<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>       <span class="keywordflow">if</span>(observation_opt.size()==nobs)</div>
-<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>         imgReaderObs.close();</div>
-<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>       <span class="keywordflow">if</span>(observationmask_opt.size()==nobs)</div>
-<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>         imgReaderObsMask.close();</div>
-<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>       ++obsindex;</div>
-<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>     }</div>
-<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>     <span class="keywordflow">if</span>(model_opt.size()==nmodel){</div>
-<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>       imgReaderModel1.close();</div>
-<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>       imgReaderModel2.close();</div>
-<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>     }</div>
-<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>     <span class="keywordflow">if</span>(modelmask_opt.size()==nmodel){</div>
-<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>       imgReaderModel1Mask.close();</div>
-<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>       imgReaderModel2Mask.close();</div>
-<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>     }</div>
-<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>       }</div>
-<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>       <span class="comment">//test</span></div>
-<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>       <span class="keywordflow">if</span>(gain_opt.size())</div>
-<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>     imgWriterGain.close();</div>
-<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>     }</div>
-<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>   }</div>
-<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorString){</div>
-<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>     cerr << errorString << endl;</div>
-<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>     exit(1);</div>
-<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>   }</div>
-<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>   <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>     cerr << <span class="stringliteral">"Error in forward direction "</span> << endl;</div>
-<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>     exit(2);</div>
-<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>   }</div>
-<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>     <span class="keywordflow">if</span>(find(direction_opt.begin(),direction_opt.end(),<span class="stringliteral">"backward"</span>)!=direction_opt.end()){</div>
-<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>       cout << <span class="stringliteral">"Running backward model"</span> << endl;</div>
-<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>       obsindex=relobsindex.size()-1;</div>
-<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>     cout << <span class="stringliteral">"Opening image "</span> << outputbw_opt[0] << <span class="stringliteral">" for writing "</span> << endl;</div>
-<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span> </div>
-<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>       <span class="comment">// imgWriterEst.open(theOutput,ncol,nrow,2,theType,imageType,option_opt);</span></div>
-<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>       <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> imgWriterEst;</div>
-<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>       <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> imgWriterUncert;</div>
-<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>       imgWriterEst.open(outputbw_opt[0],ncol,nrow,nmodel,theType,imageType,option_opt);</div>
-<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>       imgWriterEst.setProjectionProj4(projection_opt[0]);</div>
-<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>       imgWriterEst.setGeoTransform(geotransform);</div>
-<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>       imgWriterEst.GDALSetNoDataValue(obsnodata_opt[0]);</div>
-<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>       imgWriterUncert.open(uncertbw_opt[0],ncol,nrow,nmodel,theType,imageType,option_opt);</div>
-<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>       imgWriterUncert.setProjectionProj4(projection_opt[0]);</div>
-<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>       imgWriterUncert.setGeoTransform(geotransform);</div>
-<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span> </div>
-<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>     <span class="comment">// //test</span></div>
-<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>     <span class="comment">// if(gain_opt.size()){</span></div>
-<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>     <span class="comment">//   imgWriterGain.open(gain_opt[0],ncol,nrow,nmodel,GDT_Float64,imageType,option_opt);</span></div>
-<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>     <span class="comment">//   imgWriterGain.setProjectionProj4(projection_opt[0]);</span></div>
-<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>     <span class="comment">//   imgWriterGain.setGeoTransform(geotransform);</span></div>
-<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>     <span class="comment">//   imgWriterGain.GDALSetNoDataValue(obsnodata_opt[0]);</span></div>
-<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>     <span class="comment">// }</span></div>
-<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span> </div>
-<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>     <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>       cout << <span class="stringliteral">"processing time "</span> << tmodel_opt.back() << endl;</div>
-<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>       <span class="keywordflow">if</span>(obsindex<relobsindex.size()){</div>
-<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>         assert(tmodel_opt.size()>relobsindex[obsindex]);</div>
-<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>         cout << <span class="stringliteral">"next observation "</span> << tmodel_opt[relobsindex[obsindex]] << endl;</div>
-<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>       }</div>
-<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>         cout << <span class="stringliteral">"There is no next observation"</span> << endl;</div>
-<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>     }</div>
-<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>     <span class="keywordflow">if</span>(model_opt.size()==nmodel){</div>
-<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>       imgReaderModel1.open(model_opt.back());</div>
-<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>       imgReaderModel1.setNoData(modnodata_opt);</div>
-<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>     }</div>
-<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>     <span class="keywordflow">if</span>(modelmask_opt.size()==nmodel){</div>
-<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>       imgReaderModel1Mask.open(modelmask_opt[0]);</div>
-<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>       imgReaderModel1Mask.setNoData(msknodata_opt);</div>
-<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>     }</div>
-<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>       }</div>
-<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorString){</div>
-<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>     cerr << errorString << endl;</div>
-<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>       }</div>
-<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>       <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>     cerr << <span class="stringliteral">"Error opening file "</span> << model_opt[0] << endl;</div>
-<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>       }</div>
-<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span> </div>
-<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>       <span class="keywordtype">double</span> modRow=0;</div>
-<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>       <span class="keywordtype">double</span> modCol=0;</div>
-<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>       <span class="keywordtype">double</span> lowerCol=0;</div>
-<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>       <span class="keywordtype">double</span> upperCol=0;</div>
-<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>       RESAMPLE theResample=BILINEAR;</div>
-<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span> </div>
-<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>       <span class="keywordflow">if</span>(relobsindex.back()<nmodel-1){<span class="comment">//initialize output_opt.back() as last model</span></div>
-<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>     <span class="comment">//write last model as output</span></div>
-<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>       cout << <span class="stringliteral">"write last model as output"</span> << endl;</div>
-<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> jrow=0;jrow<nrow;jrow+=down_opt[0]){</div>
-<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>       vector<double> estReadBuffer;</div>
-<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>       vector<double> lineModelMask;</div>
-<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>       vector<double> estWriteBuffer(ncol);</div>
-<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>       vector<double> uncertWriteBuffer(ncol);</div>
-<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>       <span class="comment">// //test</span></div>
-<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>       <span class="comment">// vector<double> gainWriteBuffer(ncol);</span></div>
-<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=jrow;irow<jrow+down_opt[0]&&irow<nrow;++irow){</div>
-<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>           imgWriterEst.image2geo(0,irow,geox,geoy);</div>
-<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>           imgReaderModel1.geo2image(geox,geoy,modCol,modRow);</div>
-<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>           <span class="keywordflow">if</span>(modRow<0||modRow>=imgReaderModel1.nrOfRow()){</div>
-<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>         cerr << <span class="stringliteral">"Error: geo coordinates ("</span> << geox << <span class="stringliteral">","</span> << geoy << <span class="stringliteral">") not covered in model image "</span> << imgReaderModel1.getFileName() << endl;</div>
-<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>         assert(modRow>=0&&modRow<imgReaderModel1.nrOfRow());</div>
-<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>           }</div>
-<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>           <span class="comment">// imgReaderModel1.readData(estReadBuffer,GDT_Float64,modRow,0,theResample);</span></div>
-<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>           <span class="keywordtype">int</span> readModelBand=(model_opt.size()==nmodel)? 0:nmodel-1;</div>
-<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>           <span class="keywordtype">int</span> readModelMaskBand=(modelmask_opt.size()==nmodel)? mskband_opt[0]:0;</div>
-<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>           imgReaderModel1.readData(estReadBuffer,GDT_Float64,modRow,readModelBand,theResample);</div>
-<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>           <span class="keywordflow">if</span>(modelmask_opt.size())</div>
-<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>         imgReaderModel1Mask.readData(lineModelMask,GDT_Float64,modRow,readModelMaskBand,theResample);</div>
-<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> jcol=0;jcol<ncol;jcol+=down_opt[0]){</div>
-<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=jcol;icol<jcol+down_opt[0]&&icol<ncol;++icol){</div>
-<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>           imgWriterEst.image2geo(icol,irow,geox,geoy);</div>
-<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>           imgReaderModel1.geo2image(geox,geoy,modCol,modRow);</div>
-<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>           <span class="keywordflow">if</span>(lineModelMask.size()>modCol){</div>
-<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>             <span class="keywordflow">if</span>(imgReaderModel1Mask.isNoData(lineModelMask[modCol])){</div>
-<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>               estWriteBuffer[icol]=obsnodata_opt[0];</div>
-<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>               uncertWriteBuffer[icol]=uncertNodata_opt[0];</div>
-<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>               <span class="comment">//test</span></div>
-<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>               <span class="comment">// gainWriteBuffer[icol]=obsnodata_opt[0];</span></div>
-<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>               <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>             }</div>
-<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>           }</div>
-<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>           lowerCol=modCol-0.5;</div>
-<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>           lowerCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(lowerCol);</div>
-<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>           upperCol=modCol+0.5;</div>
-<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>           upperCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(upperCol);</div>
-<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>           <span class="keywordflow">if</span>(lowerCol<0)</div>
-<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>             lowerCol=0;</div>
-<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>           <span class="keywordflow">if</span>(upperCol>=imgReaderModel1.nrOfCol())</div>
-<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>             upperCol=imgReaderModel1.nrOfCol()-1;</div>
-<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>           <span class="keywordtype">double</span> modValue=(modCol-0.5-lowerCol)*estReadBuffer[upperCol]+(1-modCol+0.5+lowerCol)*estReadBuffer[lowerCol];</div>
-<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>           <span class="comment">// double modValue=estReadBuffer[modCol];</span></div>
-<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>           <span class="keywordflow">if</span>(imgReaderModel1.isNoData(modValue)){</div>
-<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>             estWriteBuffer[icol]=obsnodata_opt[0];</div>
-<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>             uncertWriteBuffer[icol]=uncertNodata_opt[0];</div>
-<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>             <span class="comment">//test</span></div>
-<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>             <span class="comment">// gainWriteBuffer[icol]=obsnodata_opt[0];</span></div>
-<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>             <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>           }</div>
-<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>           estWriteBuffer[icol]=modValue;</div>
-<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>           <span class="keywordflow">if</span>(obsmin_opt.size()){</div>
-<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>             <span class="keywordflow">if</span>(estWriteBuffer[icol]<obsmin_opt[0])</div>
-<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>               estWriteBuffer[icol]=obsmin_opt[0];</div>
-<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>           }</div>
-<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>           <span class="keywordflow">if</span>(obsmax_opt.size()){</div>
-<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>             <span class="keywordflow">if</span>(estWriteBuffer[icol]>obsmax_opt[0])</div>
-<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>               estWriteBuffer[icol]=obsmax_opt[0];</div>
-<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>           }</div>
-<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>           uncertWriteBuffer[icol]=uncertModel_opt[0];<span class="comment">//*stdDev*stdDev;</span></div>
-<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>           <span class="comment">//test</span></div>
-<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>           <span class="comment">// gainWriteBuffer[icol]=0;</span></div>
-<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>         }</div>
-<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>           }</div>
-<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>           imgWriterEst.writeData(estWriteBuffer,GDT_Float64,irow,nmodel-1);</div>
-<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>           imgWriterUncert.writeData(uncertWriteBuffer,GDT_Float64,irow,nmodel-1);</div>
-<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>           <span class="comment">// //test</span></div>
-<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>           <span class="comment">// if(gain_opt.size())</span></div>
-<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>           <span class="comment">//   imgWriterGain.writeData(gainWriteBuffer,GDT_Float64,irow,0);</span></div>
-<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>         }</div>
-<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>       }</div>
-<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorString){</div>
-<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>         cerr << errorString << endl;</div>
-<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>       }</div>
-<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>       <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>         cerr << <span class="stringliteral">"Error writing file "</span> << imgWriterEst.getFileName() << endl;</div>
-<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>       }</div>
-<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>     }</div>
-<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>       }</div>
-<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>       <span class="keywordflow">else</span>{<span class="comment">//we have a measurement at end time</span></div>
-<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>       cout << <span class="stringliteral">"we have a measurement at end time"</span> << endl;</div>
-<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>     <span class="keywordflow">if</span>(observation_opt.size()==nobs){</div>
-<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>       imgReaderObs.open(observation_opt.back());</div>
-<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>       imgReaderObs.setNoData(obsnodata_opt);</div>
-<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>     }</div>
-<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>     <span class="keywordflow">if</span>(observationmask_opt.size()==nobs){</div>
-<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>       imgReaderObsMask.open(observationmask_opt.back());</div>
-<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>       imgReaderObsMask.setNoData(msknodata_opt);</div>
-<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>     }</div>
-<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>     imgReaderObs.getGeoTransform(geotransform);</div>
-<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>       </div>
-<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>     vector< vector<double> > obsLineVector(down_opt[0]);</div>
-<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>     vector<double> obsLineBuffer;</div>
-<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>     vector<double> obsMaskLineBuffer;</div>
-<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>     vector<double> modelMaskLineBuffer;</div>
-<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>     vector<double> obsWindowBuffer;<span class="comment">//buffer for observation to calculate average corresponding to model pixel</span></div>
-<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>     vector<double> estReadBuffer;</div>
-<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>     vector<double> estWriteBuffer(ncol);</div>
-<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>     vector<double> uncertWriteBuffer(ncol);</div>
-<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>     vector<double> uncertObsLineBuffer;</div>
-<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>     <span class="comment">// //test</span></div>
-<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>     <span class="comment">// vector<double> gainWriteBuffer(ncol);</span></div>
-<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span> </div>
-<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>       cout << <span class="stringliteral">"initialize obsLineVector"</span> << endl;</div>
-<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>     assert(down_opt[0]%2);<span class="comment">//window size must be odd </span></div>
-<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>     <span class="keywordtype">int</span> readObsBand=(observation_opt.size()==nobs)? 0:nobs-1;</div>
-<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>     <span class="keywordtype">int</span> readObsMaskBand=(observationmask_opt.size()==nobs)? mskband_opt[0]:nobs-1;</div>
-<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>     <span class="keywordtype">int</span> readModelBand=(model_opt.size()==nmodel)? 0:nmodel-1;</div>
-<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>     <span class="keywordtype">int</span> readModelMaskBand=(modelmask_opt.size()==nmodel)? mskband_opt[0]:nmodel-1;</div>
-<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iline=-down_opt[0]/2;iline<down_opt[0]/2+1;++iline){</div>
-<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>       <span class="keywordflow">if</span>(iline<0)<span class="comment">//replicate line 0</span></div>
-<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>         imgReaderObs.readData(obsLineVector[iline+down_opt[0]/2],GDT_Float64,0,readObsBand);</div>
-<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>         imgReaderObs.readData(obsLineVector[iline+down_opt[0]/2],GDT_Float64,iline,readObsBand);</div>
-<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>     }</div>
-<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> jrow=0;jrow<nrow;jrow+=down_opt[0]){</div>
-<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=jrow;irow<jrow+down_opt[0]&&irow<nrow;++irow){</div>
-<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>         imgWriterEst.image2geo(0,irow,geox,geoy);</div>
-<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>         imgReaderModel1.geo2image(geox,geoy,modCol,modRow);</div>
-<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>         assert(modRow>=0&&modRow<imgReaderModel1.nrOfRow());</div>
-<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>         imgReaderModel1.readData(estReadBuffer,GDT_Float64,modRow,readModelBand,theResample);</div>
-<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>         <span class="keywordflow">if</span>(modelmask_opt.size())</div>
-<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>           imgReaderModel1Mask.readData(modelMaskLineBuffer,GDT_Float64,modRow,readModelMaskBand);</div>
-<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>         <span class="keywordtype">int</span> maxRow=(irow+down_opt[0]/2<imgReaderObs.nrOfRow()) ? irow+down_opt[0]/2 : imgReaderObs.nrOfRow()-1;</div>
-<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>         obsLineVector.erase(obsLineVector.begin());</div>
-<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>         imgReaderObs.readData(obsLineBuffer,GDT_Float64,maxRow,readObsBand);</div>
-<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>         obsLineVector.push_back(obsLineBuffer);</div>
-<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span> </div>
-<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>         <span class="keywordflow">if</span>(observationmask_opt.size())</div>
-<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>           imgReaderObsMask.readData(obsMaskLineBuffer,GDT_Float64,irow,readObsMaskBand);</div>
-<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span> </div>
-<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> jcol=0;jcol<ncol;jcol+=down_opt[0]){</div>
-<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=jcol;icol<jcol+down_opt[0]&&icol<ncol;++icol){</div>
-<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>         imgWriterEst.image2geo(icol,irow,geox,geoy);</div>
-<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>         imgReaderModel1.geo2image(geox,geoy,modCol,modRow);</div>
-<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>         assert(modRow>=0&&modRow<imgReaderModel1.nrOfRow());</div>
-<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>         <span class="keywordtype">bool</span> modelIsNoData=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>         <span class="keywordflow">if</span>(modelmask_opt.size())</div>
-<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>           modelIsNoData=imgReaderModel1Mask.isNoData(modelMaskLineBuffer[modCol]);</div>
-<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>         lowerCol=modCol-0.5;</div>
-<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>         lowerCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(lowerCol);</div>
-<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>         upperCol=modCol+0.5;</div>
-<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>         upperCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(upperCol);</div>
-<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>         <span class="keywordflow">if</span>(lowerCol<0)</div>
-<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>           lowerCol=0;</div>
-<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>         <span class="keywordflow">if</span>(upperCol>=imgReaderModel1.nrOfCol())</div>
-<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>           upperCol=imgReaderModel1.nrOfCol()-1;</div>
-<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>         <span class="keywordtype">double</span> modValue=(modCol-0.5-lowerCol)*estReadBuffer[upperCol]+(1-modCol+0.5+lowerCol)*estReadBuffer[lowerCol];</div>
-<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>         <span class="comment">// double modValue=estReadBuffer[modCol];</span></div>
-<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>         <span class="keywordtype">double</span> errMod=uncertModel_opt[0];<span class="comment">//*stdDev*stdDev;</span></div>
-<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>         modelIsNoData=modelIsNoData||imgReaderModel1.isNoData(modValue);</div>
-<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>         <span class="keywordtype">bool</span> obsIsNoData=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>         <span class="keywordflow">if</span>(observationmask_opt.size())</div>
-<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>           obsIsNoData=imgReaderObsMask.isNoData(obsMaskLineBuffer[icol]);</div>
-<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>         obsIsNoData=obsIsNoData||imgReaderObs.isNoData(obsLineBuffer[icol]);</div>
-<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>         <span class="keywordflow">if</span>(modelIsNoData){<span class="comment">//model is nodata: retain observation </span></div>
-<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>           <span class="keywordflow">if</span>(obsIsNoData){<span class="comment">//both model and observation nodata</span></div>
-<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>             estWriteBuffer[icol]=obsnodata_opt[0];</div>
-<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>             uncertWriteBuffer[icol]=uncertNodata_opt[0];</div>
-<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>             <span class="comment">//test</span></div>
-<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>             <span class="comment">// gainWriteBuffer[icol]=obsnodata_opt[0];</span></div>
-<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>           }</div>
-<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>           <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>             estWriteBuffer[icol]=obsLineBuffer[icol];</div>
-<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>             <span class="keywordflow">if</span>(obsmin_opt.size()){</div>
-<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>               <span class="keywordflow">if</span>(estWriteBuffer[icol]<obsmin_opt[0])</div>
-<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>             estWriteBuffer[icol]=obsmin_opt[0];</div>
-<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>             }</div>
-<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>             <span class="keywordflow">if</span>(obsmax_opt.size()){</div>
-<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>               <span class="keywordflow">if</span>(estWriteBuffer[icol]>obsmax_opt[0])</div>
-<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>             estWriteBuffer[icol]=obsmax_opt[0];</div>
-<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>             }</div>
-<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>             uncertWriteBuffer[icol]=uncertObs_opt[0];</div>
-<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>           }</div>
-<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>         }</div>
-<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>         <span class="keywordflow">else</span>{<span class="comment">//model is valid: calculate estimate from model</span></div>
-<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>           estWriteBuffer[icol]=modValue;</div>
-<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>           uncertWriteBuffer[icol]=errMod;<span class="comment">//in case observation is not valid</span></div>
-<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>           <span class="comment">//test</span></div>
-<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>           <span class="comment">// gainWriteBuffer[icol]=0;</span></div>
-<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>         }</div>
-<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>         <span class="comment">//measurement update</span></div>
-<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>         <span class="keywordflow">if</span>(!obsIsNoData){</div>
-<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>           <span class="comment">// estWriteBuffer[icol]=estReadBuffer[icol]*modValue1/modValue2</span></div>
-<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>           <span class="keywordtype">double</span> kalmanGain=1;</div>
-<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>           <span class="keywordtype">int</span> minCol=(icol>down_opt[0]/2) ? icol-down_opt[0]/2 : 0;</div>
-<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>           <span class="keywordtype">int</span> maxCol=(icol+down_opt[0]/2<imgReaderObs.nrOfCol()) ? icol+down_opt[0]/2 : imgReaderObs.nrOfCol()-1;</div>
-<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>           <span class="keywordtype">int</span> minRow=(irow>down_opt[0]/2) ? irow-down_opt[0]/2 : 0;</div>
-<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>           <span class="keywordtype">int</span> maxRow=(irow+down_opt[0]/2<imgReaderObs.nrOfRow()) ? irow+down_opt[0]/2 : imgReaderObs.nrOfRow()-1;</div>
-<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>           obsWindowBuffer.clear();</div>
-<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iline=0;iline<obsLineVector.size();++iline){</div>
-<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=minCol;isample<=maxCol;++isample){</div>
-<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>               assert(isample<obsLineVector[iline].size());</div>
-<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>               obsWindowBuffer.push_back(obsLineVector[iline][isample]);</div>
-<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>             }</div>
-<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>           }</div>
-<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>           <span class="keywordflow">if</span>(!modelIsNoData){<span class="comment">//model is valid</span></div>
-<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>             <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> statobs;</div>
-<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>             statobs.setNoDataValues(obsnodata_opt);</div>
-<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>             <span class="keywordtype">double</span> obsMeanValue=0;</div>
-<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>             <span class="keywordtype">double</span> obsVarValue=0;</div>
-<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>             statobs.meanVar(obsWindowBuffer,obsMeanValue,obsVarValue);</div>
-<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>             <span class="keywordtype">double</span> difference=0;</div>
-<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>             difference=obsMeanValue-modValue;</div>
-<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>             <span class="comment">// errObs=uncertObs_opt[0]*sqrt(difference*difference);</span></div>
-<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>             errObs=uncertObs_opt[0]*difference*difference;<span class="comment">//uncertainty of the observation (R in Kalman equations)</span></div>
-<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>             <span class="comment">// double errorCovariance=errMod;</span></div>
-<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>             <span class="keywordtype">double</span> errorCovariance=processNoise_opt[0]*obsVarValue;<span class="comment">//assumed initial errorCovariance (P in Kalman equations)</span></div>
-<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>             <span class="keywordflow">if</span>(errorCovariance+errObs>eps_opt[0])</div>
-<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>               kalmanGain=errorCovariance/(errorCovariance+errObs);</div>
-<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>             <span class="keywordflow">else</span> </div>
-<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>               kalmanGain=1;</div>
-<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>             estWriteBuffer[icol]+=kalmanGain*(obsLineBuffer[icol]-estWriteBuffer[icol]);</div>
-<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>             <span class="keywordflow">if</span>(obsmin_opt.size()){</div>
-<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>               <span class="keywordflow">if</span>(estWriteBuffer[icol]<obsmin_opt[0])</div>
-<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>             estWriteBuffer[icol]=obsmin_opt[0];</div>
-<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>             }</div>
-<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>             <span class="keywordflow">if</span>(obsmax_opt.size()){</div>
-<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>               <span class="keywordflow">if</span>(estWriteBuffer[icol]>obsmax_opt[0])</div>
-<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>             estWriteBuffer[icol]=obsmax_opt[0];</div>
-<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>               <span class="keywordflow">if</span>(uncertWriteBuffer[icol]>obsmax_opt[0])</div>
-<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>             uncertWriteBuffer[icol]=obsmax_opt[0];</div>
-<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>             }</div>
-<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>           }</div>
-<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>           assert(kalmanGain<=1);</div>
-<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>           <span class="comment">//test</span></div>
-<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>           <span class="comment">// gainWriteBuffer[icol]=kalmanGain;</span></div>
-<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>         }</div>
-<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>           }</div>
-<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>         }</div>
-<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>         imgWriterEst.writeData(estWriteBuffer,GDT_Float64,irow,nmodel-1);</div>
-<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>         imgWriterUncert.writeData(uncertWriteBuffer,GDT_Float64,irow,nmodel-1);</div>
-<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>         <span class="comment">// //test</span></div>
-<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>         <span class="comment">// if(gain_opt.size())</span></div>
-<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>         <span class="comment">//   imgWriterGain.writeData(gainWriteBuffer,GDT_Float64,irow,0);</span></div>
-<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>       }</div>
-<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>     }</div>
-<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>     <span class="keywordflow">if</span>(observation_opt.size()==nobs)</div>
-<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>       imgReaderObs.close();</div>
-<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>     <span class="keywordflow">if</span>(observationmask_opt.size()==nobs)</div>
-<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>       imgReaderObsMask.close();</div>
-<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>     --obsindex;</div>
-<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>       }</div>
-<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span> </div>
-<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>       <span class="keywordflow">if</span>(model_opt.size()==nmodel)</div>
-<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>     imgReaderModel1.close();</div>
-<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>       <span class="keywordflow">if</span>(modelmask_opt.size()==nmodel)</div>
-<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>     imgReaderModel1Mask.close();</div>
-<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>       imgWriterEst.close();</div>
-<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>       imgWriterUncert.close();</div>
-<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span> </div>
-<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>       <a class="code" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a> imgUpdaterEst;</div>
-<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>       <a class="code" href="classImgUpdaterGdal.html">ImgUpdaterGdal</a> imgUpdaterUncert;</div>
-<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> modindex=nmodel-2;modindex>=0;--modindex){</div>
-<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>     imgUpdaterEst.open(outputbw_opt[0]);</div>
-<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>     imgUpdaterEst.setNoData(obsnodata_opt);</div>
-<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>     imgUpdaterUncert.open(uncertbw_opt[0]);</div>
-<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>     <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>       cout << <span class="stringliteral">"processing time "</span> << tmodel_opt[modindex] << endl;</div>
-<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>       <span class="keywordflow">if</span>(obsindex<relobsindex.size())</div>
-<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>         cout << <span class="stringliteral">"next observation "</span> << tmodel_opt[relobsindex[obsindex]] << endl;</div>
-<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>         cout << <span class="stringliteral">"There is no next observation"</span> << endl;</div>
-<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>     }</div>
-<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span> </div>
-<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>     <span class="comment">//calculate regression between two subsequence model inputs</span></div>
-<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>     <span class="keywordflow">if</span>(model_opt.size()==nmodel){</div>
-<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>       imgReaderModel1.open(model_opt[modindex+1]);</div>
-<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>       imgReaderModel1.setNoData(modnodata_opt);</div>
-<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>       imgReaderModel2.open(model_opt[modindex]);</div>
-<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>       imgReaderModel2.setNoData(modnodata_opt);</div>
-<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>     }</div>
-<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>     <span class="keywordflow">if</span>(modelmask_opt.size()==nmodel){</div>
-<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>       imgReaderModel1Mask.open(modelmask_opt[modindex-1]);</div>
-<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>       imgReaderModel1Mask.setNoData(msknodata_opt);</div>
-<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>       imgReaderModel2Mask.open(modelmask_opt[modindex]);</div>
-<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>       imgReaderModel2Mask.setNoData(msknodata_opt);</div>
-<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>     }</div>
-<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>     </div>
-<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span> </div>
-<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>     <span class="keywordtype">bool</span> update=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>     <span class="keywordflow">if</span>(obsindex<relobsindex.size()){</div>
-<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>       update=(relobsindex[obsindex]==modindex);</div>
-<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>     }</div>
-<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>     <span class="keywordflow">if</span>(update){</div>
-<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>       <span class="keywordflow">if</span>(observation_opt.size()==nobs){</div>
-<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>         <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>           cout << <span class="stringliteral">"***update "</span> << relobsindex[obsindex] << <span class="stringliteral">" = "</span> << modindex << <span class="stringliteral">" "</span> << observation_opt[obsindex] << <span class="stringliteral">" ***"</span> << endl;</div>
-<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>         imgReaderObs.open(observation_opt[obsindex]);</div>
-<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>         imgReaderObs.getGeoTransform(geotransform);</div>
-<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>         imgReaderObs.setNoData(obsnodata_opt);</div>
-<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>       }</div>
-<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>       <span class="keywordflow">if</span>(observationmask_opt.size()==nobs){</div>
-<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>         imgReaderObsMask.open(observationmask_opt[obsindex]);</div>
-<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>         imgReaderObsMask.setNoData(msknodata_opt);</div>
-<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>       }</div>
-<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>     }</div>
-<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>     <span class="comment">//prediction (also to fill cloudy pixels in update mode)</span></div>
-<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>     <span class="keywordtype">string</span> input;</div>
-<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>     input=outputbw_opt[0];</div>
-<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>       </div>
-<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>     vector< vector<double> > obsLineVector(down_opt[0]);</div>
-<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>     vector<double> obsLineBuffer;</div>
-<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>     vector<double> obsMaskLineBuffer;</div>
-<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>     vector<double> model1MaskLineBuffer;</div>
-<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>     vector<double> model2MaskLineBuffer;</div>
-<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>     vector<double> obsWindowBuffer;<span class="comment">//buffer for observation to calculate average corresponding to model pixel</span></div>
-<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>     vector<double> model1LineBuffer;</div>
-<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>     vector<double> model2LineBuffer;</div>
-<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>     vector<double> model1buffer;<span class="comment">//buffer for model 1 to calculate time regression based on window</span></div>
-<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>     vector<double> model2buffer;<span class="comment">//buffer for model 2 to calculate time regression based on window</span></div>
-<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>     vector<double> uncertObsLineBuffer;</div>
-<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>     vector< vector<double> > estLineVector(down_opt[0]);</div>
-<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>     vector<double> estLineBuffer;</div>
-<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>     vector<double> estWindowBuffer;<span class="comment">//buffer for estimate to calculate average corresponding to model pixel</span></div>
-<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>     vector<double> uncertReadBuffer;</div>
-<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>     vector<double> estWriteBuffer(ncol);</div>
-<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>     vector<double> uncertWriteBuffer(ncol);</div>
-<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>     <span class="comment">//test</span></div>
-<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>     <span class="comment">// vector<double> gainWriteBuffer(ncol);</span></div>
-<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span> </div>
-<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>     <span class="keywordtype">int</span> readObsBand=(observation_opt.size()==nobs)? 0:obsindex;</div>
-<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>     <span class="keywordtype">int</span> readObsMaskBand=(observationmask_opt.size()==nobs)? mskband_opt[0]:obsindex;</div>
-<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>     <span class="keywordtype">int</span> readModel1Band=(model_opt.size()==nmodel)? 0:modindex+1;</div>
-<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>     <span class="keywordtype">int</span> readModel2Band=(model_opt.size()==nmodel)? 0:modindex;</div>
-<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>     <span class="keywordtype">int</span> readModel1MaskBand=(modelmask_opt.size()==nmodel)? mskband_opt[0]:modindex+1;</div>
-<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>     <span class="keywordtype">int</span> readModel2MaskBand=(modelmask_opt.size()==nmodel)? mskband_opt[0]:modindex;</div>
-<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span> </div>
-<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>     <span class="comment">//initialize obsLineVector</span></div>
-<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>     <span class="keywordflow">if</span>(update){</div>
-<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>         cout << <span class="stringliteral">"initialize obsLineVector"</span> << endl;</div>
-<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>       assert(down_opt[0]%2);<span class="comment">//window size must be odd </span></div>
-<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iline=-down_opt[0]/2;iline<down_opt[0]/2+1;++iline){</div>
-<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>         <span class="keywordflow">if</span>(iline<0)<span class="comment">//replicate line 0</span></div>
-<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>           imgReaderObs.readData(obsLineVector[iline+down_opt[0]/2],GDT_Float64,0,readObsBand);</div>
-<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>           imgReaderObs.readData(obsLineVector[iline+down_opt[0]/2],GDT_Float64,iline,readObsBand);</div>
-<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>       }</div>
-<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>     }</div>
-<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>     <span class="comment">//initialize estLineVector</span></div>
-<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>       cout << <span class="stringliteral">"initialize estLineVector"</span> << endl;</div>
-<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>     assert(down_opt[0]%2);<span class="comment">//window size must be odd </span></div>
-<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span> </div>
-<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iline=-down_opt[0]/2;iline<down_opt[0]/2+1;++iline){</div>
-<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>       <span class="keywordflow">if</span>(iline<0)<span class="comment">//replicate line 0</span></div>
-<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>         imgUpdaterEst.readData(estLineVector[iline+down_opt[0]/2],GDT_Float64,0,modindex+1);</div>
-<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>         imgUpdaterEst.readData(estLineVector[iline+down_opt[0]/2],GDT_Float64,iline,modindex+1);</div>
-<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>     }</div>
-<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>     <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> statobs;</div>
-<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>     statobs.setNoDataValues(obsnodata_opt);</div>
-<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span> </div>
-<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> jrow=0;jrow<nrow;jrow+=down_opt[0]){</div>
-<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>       <span class="comment">//todo: read entire window for uncertReadBuffer...</span></div>
-<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=jrow;irow<jrow+down_opt[0]&&irow<nrow;++irow){</div>
-<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>         imgUpdaterUncert.readData(uncertReadBuffer,GDT_Float64,irow,modindex+1);</div>
-<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>         imgUpdaterUncert.image2geo(0,irow,geox,geoy);</div>
-<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>         <span class="keywordflow">if</span>(model_opt.size()==nmodel){</div>
-<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>           imgReaderModel2.geo2image(geox,geoy,modCol,modRow);</div>
-<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>           assert(modRow>=0&&modRow<imgReaderModel2.nrOfRow());</div>
-<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>           imgReaderModel2.readData(model2LineBuffer,GDT_Float64,modRow,readModel2Band,theResample);</div>
-<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>           imgReaderModel1.geo2image(geox,geoy,modCol,modRow);</div>
-<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>         }</div>
-<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>           imgReaderModel1.geo2image(geox,geoy,modCol,modRow);</div>
-<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>           imgReaderModel1.readData(model2LineBuffer,GDT_Float64,modRow,readModel2Band,theResample);</div>
-<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>         }</div>
-<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span> </div>
-<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>         assert(modRow>=0&&modRow<imgReaderModel1.nrOfRow());</div>
-<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>         imgReaderModel1.readData(model1LineBuffer,GDT_Float64,modRow,readModel1Band,theResample);</div>
-<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>         <span class="keywordflow">if</span>(modelmask_opt.size()){</div>
-<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>           imgReaderModel1Mask.readData(model1MaskLineBuffer,GDT_Float64,modRow,readModel1MaskBand);</div>
-<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>           <span class="keywordflow">if</span>(modelmask_opt.size()==nmodel)</div>
-<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>         imgReaderModel2Mask.readData(model2MaskLineBuffer,GDT_Float64,modRow,readModel2MaskBand);</div>
-<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>         imgReaderModel1Mask.readData(model2MaskLineBuffer,GDT_Float64,modRow,readModel2MaskBand);</div>
-<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>         }</div>
-<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>         <span class="keywordtype">int</span> maxRow=(irow+down_opt[0]/2<imgUpdaterEst.nrOfRow()) ? irow+down_opt[0]/2 : imgUpdaterEst.nrOfRow()-1;</div>
-<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>         estLineVector.erase(estLineVector.begin());</div>
-<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>         imgUpdaterEst.readData(estLineBuffer,GDT_Float64,maxRow,modindex+1);</div>
-<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>         estLineVector.push_back(estLineBuffer);</div>
-<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>         estLineBuffer=estLineVector[down_opt[0]/2];</div>
-<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span> </div>
-<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>         <span class="keywordflow">if</span>(update){</div>
-<div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>           <span class="keywordtype">int</span> maxRow=(irow+down_opt[0]/2<imgReaderObs.nrOfRow()) ? irow+down_opt[0]/2 : imgReaderObs.nrOfRow()-1;</div>
-<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>           obsLineVector.erase(obsLineVector.begin());</div>
-<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>           imgReaderObs.readData(obsLineBuffer,GDT_Float64,maxRow,readObsBand);</div>
-<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>           obsLineVector.push_back(obsLineBuffer);</div>
-<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>           obsLineBuffer=obsLineVector[down_opt[0]/2];</div>
-<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span> </div>
-<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>           <span class="keywordflow">if</span>(observationmask_opt.size())</div>
-<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>         imgReaderObsMask.readData(obsMaskLineBuffer,GDT_Float64,irow,readObsBand);</div>
-<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>         }</div>
-<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> jcol=0;jcol<ncol;jcol+=down_opt[0]){</div>
-<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=jcol;icol<jcol+down_opt[0]&&icol<ncol;++icol){</div>
-<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>         imgUpdaterEst.image2geo(icol,irow,geox,geoy);</div>
-<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>         <span class="keywordtype">int</span> minCol=(icol>down_opt[0]/2) ? icol-down_opt[0]/2 : 0;</div>
-<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>         <span class="keywordtype">int</span> maxCol=(icol+down_opt[0]/2<imgUpdaterEst.nrOfCol()) ? icol+down_opt[0]/2 : imgUpdaterEst.nrOfCol()-1;</div>
-<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>         <span class="keywordtype">int</span> minRow=(irow>down_opt[0]/2) ? irow-down_opt[0]/2 : 0;</div>
-<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>         <span class="keywordtype">int</span> maxRow=(irow+down_opt[0]/2<imgUpdaterEst.nrOfRow()) ? irow+down_opt[0]/2 : imgUpdaterEst.nrOfRow()-1;</div>
-<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>         estWindowBuffer.clear();</div>
-<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iline=0;iline<estLineVector.size();++iline){</div>
-<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=minCol;isample<=maxCol;++isample){</div>
-<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>             assert(isample<estLineVector[iline].size());</div>
-<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>             estWindowBuffer.push_back(estLineVector[iline][isample]);</div>
-<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>           }</div>
-<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>         }</div>
-<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>         <span class="keywordflow">if</span>(update){</div>
-<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>           obsWindowBuffer.clear();</div>
-<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iline=0;iline<obsLineVector.size();++iline){</div>
-<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=minCol;isample<=maxCol;++isample){</div>
-<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>               assert(isample<obsLineVector[iline].size());</div>
-<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>               obsWindowBuffer.push_back(obsLineVector[iline][isample]);</div>
-<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>             }</div>
-<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>           }</div>
-<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>         }</div>
-<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span> </div>
-<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>         <span class="keywordtype">double</span> estValue=estLineBuffer[icol];</div>
-<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>         imgReaderModel1.geo2image(geox,geoy,modCol,modRow);</div>
-<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>         <span class="keywordtype">bool</span> model1IsNoData=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span> </div>
-<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>         <span class="keywordflow">if</span>(modelmask_opt.size())</div>
-<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>           model1IsNoData=imgReaderModel1Mask.isNoData(model1MaskLineBuffer[modCol]);</div>
-<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span> </div>
-<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>         lowerCol=modCol-0.5;</div>
-<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>         lowerCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(lowerCol);</div>
-<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>         upperCol=modCol+0.5;</div>
-<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>         upperCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(upperCol);</div>
-<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>         <span class="keywordflow">if</span>(lowerCol<0)</div>
-<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>           lowerCol=0;</div>
-<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>         <span class="keywordflow">if</span>(upperCol>=imgReaderModel1.nrOfCol())</div>
-<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>           upperCol=imgReaderModel1.nrOfCol()-1;</div>
-<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>         <span class="keywordtype">double</span> modValue1=(modCol-0.5-lowerCol)*model1LineBuffer[upperCol]+(1-modCol+0.5+lowerCol)*model1LineBuffer[lowerCol];</div>
-<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>         model1IsNoData=model1IsNoData||imgReaderModel1.isNoData(modValue1);</div>
-<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>         <span class="keywordflow">if</span>(model_opt.size()==nmodel)</div>
-<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>           imgReaderModel2.geo2image(geox,geoy,modCol,modRow);</div>
-<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>           imgReaderModel1.geo2image(geox,geoy,modCol,modRow);</div>
-<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>         <span class="keywordtype">bool</span> model2IsNoData=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span> </div>
-<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>         <span class="keywordflow">if</span>(modelmask_opt.size())</div>
-<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>           model2IsNoData=imgReaderModel1Mask.isNoData(model2MaskLineBuffer[modCol]);</div>
-<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>         lowerCol=modCol-0.5;</div>
-<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>         lowerCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(lowerCol);</div>
-<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>         upperCol=modCol+0.5;</div>
-<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>         upperCol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(upperCol);</div>
-<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>         <span class="keywordflow">if</span>(lowerCol<0)</div>
-<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>           lowerCol=0;</div>
-<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>         <span class="keywordflow">if</span>(upperCol>=imgReaderModel1.nrOfCol())</div>
-<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>           upperCol=imgReaderModel1.nrOfCol()-1;</div>
-<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>         <span class="keywordtype">double</span> modValue2=(modCol-0.5-lowerCol)*model2LineBuffer[upperCol]+(1-modCol+0.5+lowerCol)*model2LineBuffer[lowerCol];</div>
-<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>         model2IsNoData=model2IsNoData||imgReaderModel1.isNoData(modValue2);</div>
-<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>         <span class="keywordtype">bool</span> obsIsNoData=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>         <span class="keywordflow">if</span>(observationmask_opt.size())</div>
-<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>           obsIsNoData=imgReaderObsMask.isNoData(obsMaskLineBuffer[icol]);</div>
-<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>         obsIsNoData=obsIsNoData||imgReaderObs.isNoData(obsLineBuffer[icol]);</div>
-<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span> </div>
-<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>         <span class="keywordflow">if</span>(imgUpdaterEst.isNoData(estValue)){</div>
-<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>           <span class="comment">//we have not found any valid data yet, better here to take the current model value if valid</span></div>
-<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>           <span class="keywordflow">if</span>(model2IsNoData){<span class="comment">//if both estimate and model are no-data, set obs to nodata</span></div>
-<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>             estWriteBuffer[icol]=obsnodata_opt[0];</div>
-<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>             uncertWriteBuffer[icol]=uncertNodata_opt[0];</div>
-<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>             <span class="comment">//test</span></div>
-<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>             <span class="comment">// gainWriteBuffer[icol]=0;</span></div>
-<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>           }</div>
-<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>           <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>             estWriteBuffer[icol]=modValue2;</div>
-<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>             uncertWriteBuffer[icol]=uncertModel_opt[0];<span class="comment">//*stdDev*stdDev;</span></div>
-<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>             <span class="keywordflow">if</span>(obsmin_opt.size()){</div>
-<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>               <span class="keywordflow">if</span>(estWriteBuffer[icol]<obsmin_opt[0])</div>
-<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>             estWriteBuffer[icol]=obsmin_opt[0];</div>
-<div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>             }</div>
-<div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>             <span class="keywordflow">if</span>(obsmax_opt.size()){</div>
-<div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>               <span class="keywordflow">if</span>(estWriteBuffer[icol]>obsmax_opt[0])</div>
-<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>             estWriteBuffer[icol]=obsmax_opt[0];</div>
-<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>               <span class="keywordflow">if</span>(uncertWriteBuffer[icol]>obsmax_opt[0])</div>
-<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>             uncertWriteBuffer[icol]=obsmax_opt[0];</div>
-<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>             }</div>
-<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>             <span class="comment">//test</span></div>
-<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>             <span class="comment">// gainWriteBuffer[icol]=0;</span></div>
-<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>           }</div>
-<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>         }</div>
-<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>         <span class="keywordflow">else</span>{<span class="comment">//previous estimate is valid</span></div>
-<div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>           <span class="keywordtype">double</span> estMeanValue=0;</div>
-<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>           <span class="keywordtype">double</span> estVarValue=0;</div>
-<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>           statobs.meanVar(estWindowBuffer,estMeanValue,estVarValue);</div>
-<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>           <span class="keywordtype">double</span> nvalid=0;</div>
-<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>           <span class="comment">//time update</span></div>
-<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>           <span class="keywordtype">double</span> processNoiseVariance=processNoise_opt[0]*estVarValue;</div>
-<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>           <span class="comment">//estimate stability of weight distribution from model (low resolution) data in a window mod1 -> mod2 and assume distribution holds at fine spatial resolution. </span></div>
-<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span> </div>
-<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>           <span class="keywordflow">if</span>(model1IsNoData||model2IsNoData){</div>
-<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>             estWriteBuffer[icol]=estValue;</div>
-<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>             <span class="comment">// uncertWriteBuffer[icol]=uncertReadBuffer[icol]+processNoiseVariance;</span></div>
-<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>             <span class="comment">//todo: check following line if makes sense</span></div>
-<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>             uncertWriteBuffer[icol]=uncertReadBuffer[icol]+uncertObs_opt[0];</div>
-<div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>           }</div>
-<div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>           <span class="keywordflow">else</span>{<span class="comment">//model is good</span></div>
-<div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>             <span class="keywordtype">double</span> modRatio=modValue2/modValue1;<span class="comment">//transition matrix A in Kalman equations</span></div>
-<div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>             estWriteBuffer[icol]=estValue*modRatio;</div>
-<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>             uncertWriteBuffer[icol]=uncertReadBuffer[icol]*modRatio*modRatio+processNoiseVariance;</div>
-<div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>           }</div>
-<div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>           <span class="keywordflow">if</span>(obsmin_opt.size()){</div>
-<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>             <span class="keywordflow">if</span>(estWriteBuffer[icol]<obsmin_opt[0])</div>
-<div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>               estWriteBuffer[icol]=obsmin_opt[0];</div>
-<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>           }</div>
-<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>           <span class="keywordflow">if</span>(obsmax_opt.size()){</div>
-<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>             <span class="keywordflow">if</span>(estWriteBuffer[icol]>obsmax_opt[0])</div>
-<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>               estWriteBuffer[icol]=obsmax_opt[0];</div>
-<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>             <span class="keywordflow">if</span>(uncertWriteBuffer[icol]>obsmax_opt[0])</div>
-<div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>               uncertWriteBuffer[icol]=obsmax_opt[0];</div>
-<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>           }</div>
-<div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>         }</div>
-<div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>         <span class="comment">//measurement update</span></div>
-<div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>         <span class="keywordflow">if</span>(update&&!imgReaderObs.isNoData(obsLineBuffer[icol])){</div>
-<div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>           <span class="keywordtype">double</span> kalmanGain=1;</div>
-<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>           <span class="keywordflow">if</span>(!imgReaderModel1.isNoData(modValue2)){<span class="comment">//model is valid</span></div>
-<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>             <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> statobs;</div>
-<div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>             statobs.setNoDataValues(obsnodata_opt);</div>
-<div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>             <span class="keywordtype">double</span> obsMeanValue=0;</div>
-<div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>             <span class="keywordtype">double</span> obsVarValue=0;</div>
-<div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>             <span class="keywordtype">double</span> difference=0;</div>
-<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>             statobs.meanVar(obsWindowBuffer,obsMeanValue,obsVarValue);</div>
-<div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>             difference=obsMeanValue-modValue2;</div>
-<div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>             <span class="comment">// errObs=uncertObs_opt[0]*sqrt(difference*difference);</span></div>
-<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>             errObs=uncertObs_opt[0]*difference*difference;<span class="comment">//uncertainty of the observation (R in Kalman equations)</span></div>
-<div class="line"><a name="l01657"></a><span class="lineno"> 1657</span> </div>
-<div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>             <span class="keywordflow">if</span>(errObs<eps_opt[0])</div>
-<div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>               errObs=eps_opt[0];</div>
-<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>             <span class="keywordtype">double</span> errorCovariance=uncertWriteBuffer[icol];<span class="comment">//P in Kalman equations</span></div>
-<div class="line"><a name="l01661"></a><span class="lineno"> 1661</span> </div>
-<div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>             <span class="keywordflow">if</span>(errorCovariance+errObs>eps_opt[0])</div>
-<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>               kalmanGain=errorCovariance/(errorCovariance+errObs);</div>
-<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>             <span class="keywordflow">else</span> </div>
-<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>               kalmanGain=1;</div>
-<div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>             estWriteBuffer[icol]+=kalmanGain*(obsLineBuffer[icol]-estWriteBuffer[icol]);</div>
-<div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>             uncertWriteBuffer[icol]*=(1-kalmanGain);</div>
-<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>             <span class="keywordflow">if</span>(obsmin_opt.size()){</div>
-<div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>               <span class="keywordflow">if</span>(estWriteBuffer[icol]<obsmin_opt[0])</div>
-<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>             estWriteBuffer[icol]=obsmin_opt[0];</div>
-<div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>             }</div>
-<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>             <span class="keywordflow">if</span>(obsmax_opt.size()){</div>
-<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>               <span class="keywordflow">if</span>(estWriteBuffer[icol]>obsmax_opt[0])</div>
-<div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>             estWriteBuffer[icol]=obsmax_opt[0];</div>
-<div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>               <span class="keywordflow">if</span>(uncertWriteBuffer[icol]>obsmax_opt[0])</div>
-<div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>             uncertWriteBuffer[icol]=obsmax_opt[0];</div>
-<div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>             }</div>
-<div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>           }</div>
-<div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>           assert(kalmanGain<=1);</div>
-<div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>           <span class="comment">//test</span></div>
-<div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>           <span class="comment">// gainWriteBuffer[icol]=kalmanGain;</span></div>
-<div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>         }</div>
-<div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>           }</div>
-<div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>         }</div>
-<div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>         <span class="comment">// //test</span></div>
-<div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>         <span class="comment">// if(gain_opt.size())</span></div>
-<div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>         <span class="comment">//   imgWriterGain.writeData(gainWriteBuffer,GDT_Float64,irow,modindex);</span></div>
-<div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>         imgUpdaterEst.writeData(estWriteBuffer,GDT_Float64,irow,modindex);</div>
-<div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>         imgUpdaterUncert.writeData(uncertWriteBuffer,GDT_Float64,irow,modindex);</div>
-<div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>         progress=<span class="keyword">static_cast<</span><span class="keywordtype">float</span><span class="keyword">></span>((irow+1.0)/imgUpdaterEst.nrOfRow());</div>
-<div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>         pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>       }</div>
-<div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>     }</div>
-<div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>     <span class="comment">//must close writers to ensure flush</span></div>
-<div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>     imgUpdaterEst.close();</div>
-<div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>     imgUpdaterUncert.close();</div>
-<div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>     <span class="comment">// imgWriterEst.close();</span></div>
-<div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>     <span class="comment">// imgReaderEst.close();</span></div>
-<div class="line"><a name="l01699"></a><span class="lineno"> 1699</span> </div>
-<div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>     <span class="keywordflow">if</span>(update){</div>
-<div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>       <span class="keywordflow">if</span>(observation_opt.size()==nobs)</div>
-<div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>         imgReaderObs.close();</div>
-<div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>       <span class="keywordflow">if</span>(observationmask_opt.size()==nobs)</div>
-<div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>         imgReaderObsMask.close();</div>
-<div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>       --obsindex;</div>
-<div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>     }</div>
-<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>     <span class="keywordflow">if</span>(model_opt.size()==nmodel){</div>
-<div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>       imgReaderModel1.close();</div>
-<div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>       imgReaderModel2.close();</div>
-<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>     }</div>
-<div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>     <span class="keywordflow">if</span>(modelmask_opt.size()==nmodel){</div>
-<div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>       imgReaderModel1Mask.close();</div>
-<div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>       imgReaderModel2Mask.close();</div>
-<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>     }</div>
-<div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>       }</div>
-<div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>       <span class="comment">// //test</span></div>
-<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>       <span class="comment">// if(gain_opt.size())</span></div>
-<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>       <span class="comment">//    imgWriterGain.close();</span></div>
-<div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>     }</div>
-<div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>   }</div>
-<div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorString){</div>
-<div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>     cerr << errorString << endl;</div>
-<div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>     exit(1);</div>
-<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>   }</div>
-<div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>   <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>     cerr << <span class="stringliteral">"Error in backward direction "</span> << endl;</div>
-<div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>     exit(2);</div>
-<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>   }</div>
-<div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>   <span class="keywordflow">if</span>(find(direction_opt.begin(),direction_opt.end(),<span class="stringliteral">"smooth"</span>)!=direction_opt.end()){</div>
-<div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>     cout << <span class="stringliteral">"Running smooth model"</span> << endl;</div>
-<div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>     obsindex=0;</div>
-<div class="line"><a name="l01733"></a><span class="lineno"> 1733</span> </div>
-<div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>     <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> imgReaderForward(outputfw_opt[0]);</div>
-<div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>     <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> imgReaderBackward(outputbw_opt[0]);</div>
-<div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>     <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> imgReaderForwardUncert(uncertfw_opt[0]);</div>
-<div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>     <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> imgReaderBackwardUncert(uncertbw_opt[0]);</div>
-<div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>     imgReaderForward.setNoData(obsnodata_opt);</div>
-<div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>     imgReaderBackward.setNoData(obsnodata_opt);</div>
-<div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>       </div>
-<div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>     assert(imgReaderForward.nrOfBand()==nmodel);</div>
-<div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>     assert(imgReaderForwardUncert.nrOfBand()==nmodel);</div>
-<div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>     assert(imgReaderBackward.nrOfBand()==nmodel);</div>
-<div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>     assert(imgReaderBackwardUncert.nrOfBand()==nmodel);</div>
-<div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>     <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> imgWriterEst;</div>
-<div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>     imgWriterEst.setNoData(obsnodata_opt);</div>
-<div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>     <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> imgWriterUncert;</div>
-<div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>     imgWriterEst.open(outputfb_opt[0],ncol,nrow,nmodel,theType,imageType,option_opt);</div>
-<div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>     imgWriterEst.setProjectionProj4(projection_opt[0]);</div>
-<div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>     imgWriterEst.setGeoTransform(geotransform);</div>
-<div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>     imgWriterEst.GDALSetNoDataValue(obsnodata_opt[0]);</div>
-<div class="line"><a name="l01752"></a><span class="lineno"> 1752</span> </div>
-<div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>     imgWriterUncert.open(uncertfb_opt[0],ncol,nrow,nmodel,theType,imageType,option_opt);</div>
-<div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>     imgWriterUncert.setProjectionProj4(projection_opt[0]);</div>
-<div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>     imgWriterUncert.setGeoTransform(geotransform);</div>
-<div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> modindex=0;modindex<nmodel;++modindex){</div>
-<div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>       <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>     cout << <span class="stringliteral">"processing time "</span> << tmodel_opt[modindex] << endl;</div>
-<div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>     <span class="keywordflow">if</span>(obsindex<relobsindex.size())</div>
-<div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>       cout << <span class="stringliteral">"next observation "</span> << tmodel_opt[relobsindex[obsindex]] << endl;</div>
-<div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>       cout << <span class="stringliteral">"There is no next observation"</span> << endl;</div>
-<div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>       }</div>
-<div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>       <span class="comment">// if(outputfb_opt.size()==model_opt.size())</span></div>
-<div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>       <span class="comment">//    theOutput=outputfb_opt[modindex];</span></div>
-<div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>       <span class="comment">// else{</span></div>
-<div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>       <span class="comment">//    ostringstream outputstream;</span></div>
-<div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>       <span class="comment">//    outputstream << outputfb_opt[0] << "_";</span></div>
-<div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>       <span class="comment">//    outputstream << setfill('0') << setw(ndigit) << tmodel_opt[modindex];</span></div>
-<div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>       <span class="comment">//    outputstream << ".tif";</span></div>
-<div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>       <span class="comment">//    // outputstream << outputfb_opt[0] << "_" << tmodel_opt[modindex] << ".tif";</span></div>
-<div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>       <span class="comment">//    theOutput=outputstream.str();</span></div>
-<div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>       <span class="comment">// }</span></div>
-<div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>     </div>
-<div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>       <span class="comment">//two band output band0=estimation, band1=uncertainty</span></div>
-<div class="line"><a name="l01776"></a><span class="lineno"> 1776</span> </div>
-<div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>       <span class="comment">//open forward and backward estimates</span></div>
-<div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>       <span class="comment">//we assume forward in model and backward in observation...</span></div>
-<div class="line"><a name="l01779"></a><span class="lineno"> 1779</span> </div>
-<div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>       <span class="comment">// string inputfw;</span></div>
-<div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>       <span class="comment">// string inputbw;</span></div>
-<div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>       <span class="comment">// if(outputfw_opt.size()==model_opt.size())</span></div>
-<div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>       <span class="comment">//    inputfw=outputfw_opt[modindex];</span></div>
-<div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>       <span class="comment">// else{</span></div>
-<div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>       <span class="comment">//    ostringstream outputstream;</span></div>
-<div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>       <span class="comment">//    outputstream << outputfw_opt[0] << "_";</span></div>
-<div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>       <span class="comment">//    outputstream << setfill('0') << setw(ndigit) << tmodel_opt[modindex];</span></div>
-<div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>       <span class="comment">//    outputstream << ".tif";</span></div>
-<div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>       <span class="comment">//    // outputstream << outputfw_opt[0] << "_" << tmodel_opt[modindex] << ".tif";</span></div>
-<div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>       <span class="comment">//    inputfw=outputstream.str();</span></div>
-<div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>       <span class="comment">// }</span></div>
-<div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>       <span class="comment">// if(outputbw_opt.size()==model_opt.size())</span></div>
-<div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>       <span class="comment">//    inputbw=outputbw_opt[modindex];</span></div>
-<div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>       <span class="comment">// else{</span></div>
-<div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>       <span class="comment">//    ostringstream outputstream;</span></div>
-<div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>       <span class="comment">//    outputstream << outputbw_opt[0] << "_";</span></div>
-<div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>       <span class="comment">//    outputstream << setfill('0') << setw(ndigit) << tmodel_opt[modindex];</span></div>
-<div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>       <span class="comment">//    outputstream << ".tif";</span></div>
-<div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>       <span class="comment">//    // outputstream << outputbw_opt[0] << "_" << tmodel_opt[modindex] << ".tif";</span></div>
-<div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>       <span class="comment">//    inputbw=outputstream.str();</span></div>
-<div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>       <span class="comment">// }</span></div>
-<div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>       vector<double> estForwardBuffer;</div>
-<div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>       vector<double> estBackwardBuffer;</div>
-<div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>       vector<double> uncertObsLineBuffer;</div>
-<div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>       vector<double> uncertForwardBuffer;</div>
-<div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>       vector<double> uncertBackwardBuffer;</div>
-<div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>       vector<double> uncertReadBuffer;</div>
-<div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>       vector<double> estWriteBuffer(ncol);</div>
-<div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>       vector<double> uncertWriteBuffer(ncol);</div>
-<div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>       <span class="comment">// vector<double> lineMask;</span></div>
-<div class="line"><a name="l01811"></a><span class="lineno"> 1811</span> </div>
-<div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>       <span class="keywordtype">bool</span> update=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>       <span class="keywordflow">if</span>(obsindex<relobsindex.size()){</div>
-<div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>     update=(relobsindex[obsindex]==modindex);</div>
-<div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>       }</div>
-<div class="line"><a name="l01816"></a><span class="lineno"> 1816</span> </div>
-<div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>       <span class="keywordtype">int</span> readObsBand=(observation_opt.size()==nobs)? 0:obsindex;</div>
-<div class="line"><a name="l01818"></a><span class="lineno"> 1818</span> </div>
-<div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>       <span class="keywordflow">if</span>(update){</div>
-<div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>     <span class="keywordflow">if</span>(observation_opt.size()==nobs){</div>
-<div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>         cout << <span class="stringliteral">"***update "</span> << relobsindex[obsindex] << <span class="stringliteral">" = "</span> << modindex << <span class="stringliteral">" "</span> << observation_opt[obsindex] << <span class="stringliteral">" ***"</span> << endl;</div>
-<div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>       imgReaderObs.open(observation_opt[obsindex]);</div>
-<div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>       imgReaderObs.setNoData(obsnodata_opt);</div>
-<div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>       imgReaderObs.getGeoTransform(geotransform);</div>
-<div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>     }</div>
-<div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>     <span class="keywordflow">if</span>(observationmask_opt.size()==nobs){</div>
-<div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>       imgReaderObsMask.open(observationmask_opt[obsindex]);</div>
-<div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>       imgReaderObsMask.setNoData(msknodata_opt);</div>
-<div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>     }</div>
-<div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>     <span class="comment">// imgReaderObs.open(observation_opt[obsindex]);</span></div>
-<div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>     <span class="comment">// imgReaderObs.getGeoTransform(geotransform);</span></div>
-<div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>     <span class="comment">// imgReaderObs.setNoData(obsnodata_opt);</span></div>
-<div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>     <span class="comment">//calculate regression between model and observation</span></div>
-<div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>       }</div>
-<div class="line"><a name="l01836"></a><span class="lineno"> 1836</span> </div>
-<div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>       pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l01838"></a><span class="lineno"> 1838</span> </div>
-<div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<imgWriterEst.nrOfRow();++irow){</div>
-<div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>     assert(irow<imgReaderForward.nrOfRow());</div>
-<div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>     assert(irow<imgReaderBackward.nrOfRow());</div>
-<div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>     imgReaderForward.readData(estForwardBuffer,GDT_Float64,irow,modindex);</div>
-<div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>     imgReaderBackward.readData(estBackwardBuffer,GDT_Float64,irow,modindex);</div>
-<div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>     imgReaderForwardUncert.readData(uncertForwardBuffer,GDT_Float64,irow,modindex);</div>
-<div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>     imgReaderBackwardUncert.readData(uncertBackwardBuffer,GDT_Float64,irow,modindex);</div>
-<div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>     <span class="comment">// imgReaderForward.readData(estForwardBuffer,GDT_Float64,irow,0);</span></div>
-<div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>     <span class="comment">// imgReaderBackward.readData(estBackwardBuffer,GDT_Float64,irow,0);</span></div>
-<div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>     <span class="comment">// imgReaderForward.readData(uncertForwardBuffer,GDT_Float64,irow,1);</span></div>
-<div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>     <span class="comment">// imgReaderBackward.readData(uncertBackwardBuffer,GDT_Float64,irow,1);</span></div>
-<div class="line"><a name="l01850"></a><span class="lineno"> 1850</span> </div>
-<div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>     <span class="keywordflow">if</span>(update){</div>
-<div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>       <span class="keywordflow">if</span>(observation_opt.size()==nobs)</div>
-<div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>         imgReaderObs.readData(estWriteBuffer,GDT_Float64,irow,readObsBand);</div>
-<div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>       <span class="keywordflow">if</span>(observationmask_opt.size())</div>
-<div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>         imgReaderObsMask.readData(uncertObsLineBuffer,GDT_Float64,irow,readObsBand);</div>
-<div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>     }</div>
-<div class="line"><a name="l01857"></a><span class="lineno"> 1857</span> </div>
-<div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>     <span class="comment">// double oldRowMask=-1;//keep track of row mask to optimize number of line readings</span></div>
-<div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<imgWriterEst.nrOfCol();++icol){</div>
-<div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>       imgWriterEst.image2geo(icol,irow,geox,geoy);</div>
-<div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>       <span class="keywordtype">double</span> A=estForwardBuffer[icol];</div>
-<div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>       <span class="keywordtype">double</span> B=estBackwardBuffer[icol];</div>
-<div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>       <span class="keywordtype">double</span> C=uncertForwardBuffer[icol];</div>
-<div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>       <span class="keywordtype">double</span> D=uncertBackwardBuffer[icol];</div>
-<div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>       <span class="keywordtype">double</span> uncertObs=uncertObs_opt[0];</div>
-<div class="line"><a name="l01866"></a><span class="lineno"> 1866</span> </div>
-<div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>       <span class="comment">// if(update){//check for nodata in observation</span></div>
-<div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>       <span class="comment">//   if(imgReaderObs.isNoData(estWriteBuffer[icol]))</span></div>
-<div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>       <span class="comment">//     uncertObs=uncertNodata_opt[0];</span></div>
-<div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>       <span class="comment">//   else if(uncertObsLineBuffer.size()>icol)</span></div>
-<div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>       <span class="comment">//     uncertObs=uncertObsLineBuffer[icol];</span></div>
-<div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>       <span class="comment">// }</span></div>
-<div class="line"><a name="l01873"></a><span class="lineno"> 1873</span> </div>
-<div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>       <span class="keywordtype">double</span> noemer=(C+D);</div>
-<div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>       <span class="comment">//todo: consistently check for division by zero...</span></div>
-<div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>       <span class="keywordflow">if</span>(imgReaderForward.isNoData(A)&&imgReaderBackward.isNoData(B)){</div>
-<div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>         estWriteBuffer[icol]=obsnodata_opt[0];</div>
-<div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>         uncertWriteBuffer[icol]=uncertNodata_opt[0];</div>
-<div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>       }</div>
-<div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(imgReaderForward.isNoData(A)){</div>
-<div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>         estWriteBuffer[icol]=B;</div>
-<div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>         uncertWriteBuffer[icol]=uncertBackwardBuffer[icol];</div>
-<div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>       }</div>
-<div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(imgReaderForward.isNoData(B)){</div>
-<div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>         estWriteBuffer[icol]=A;</div>
-<div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>         uncertWriteBuffer[icol]=uncertForwardBuffer[icol];</div>
-<div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>       }</div>
-<div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>         <span class="keywordflow">if</span>(noemer<eps_opt[0]){<span class="comment">//simple average if both uncertainties are ~>0</span></div>
-<div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>           estWriteBuffer[icol]=0.5*(A+B);</div>
-<div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>           uncertWriteBuffer[icol]=eps_opt[0];</div>
-<div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>         }</div>
-<div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>           estWriteBuffer[icol]=(A*D+B*C)/noemer;</div>
-<div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>           uncertWriteBuffer[icol]=C*D/noemer;</div>
-<div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>           <span class="keywordflow">if</span>(obsmin_opt.size()){</div>
-<div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>         <span class="keywordflow">if</span>(estWriteBuffer[icol]<obsmin_opt[0])</div>
-<div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>         estWriteBuffer[icol]=obsmin_opt[0];</div>
-<div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>           }</div>
-<div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>           <span class="keywordflow">if</span>(obsmax_opt.size()){</div>
-<div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>         <span class="keywordflow">if</span>(estWriteBuffer[icol]>obsmax_opt[0])</div>
-<div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>           estWriteBuffer[icol]=obsmax_opt[0];</div>
-<div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>         <span class="keywordflow">if</span>(uncertWriteBuffer[icol]>obsmax_opt[0])</div>
-<div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>           uncertWriteBuffer[icol]=obsmax_opt[0];</div>
-<div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>           }</div>
-<div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>           <span class="comment">// double P=0;</span></div>
-<div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>           <span class="comment">// if(C>eps_opt[0])</span></div>
-<div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>           <span class="comment">//    P+=1.0/C;</span></div>
-<div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>           <span class="comment">// if(D>eps_opt[0])</span></div>
-<div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>           <span class="comment">//    P+=1.0/D;</span></div>
-<div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>           <span class="comment">// if(P>eps_opt[0])</span></div>
-<div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>           <span class="comment">//    P=1.0/P;</span></div>
-<div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>           <span class="comment">// else</span></div>
-<div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>           <span class="comment">//    P=0;</span></div>
-<div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>           <span class="comment">// uncertWriteBuffer[icol]=P;</span></div>
-<div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>         }</div>
-<div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>       }</div>
-<div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>     }</div>
-<div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>     imgWriterEst.writeData(estWriteBuffer,GDT_Float64,irow,modindex);</div>
-<div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>     imgWriterUncert.writeData(uncertWriteBuffer,GDT_Float64,irow,modindex);</div>
-<div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>     progress=<span class="keyword">static_cast<</span><span class="keywordtype">float</span><span class="keyword">></span>((irow+1.0)/imgWriterEst.nrOfRow());</div>
-<div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>       }</div>
-<div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>       <span class="keywordflow">if</span>(update){</div>
-<div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>     <span class="keywordflow">if</span>(observation_opt.size()==nobs)</div>
-<div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>       imgReaderObs.close();</div>
-<div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>     ++obsindex;</div>
-<div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>       }</div>
-<div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>     }</div>
-<div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>     imgReaderForward.close();</div>
-<div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>     imgReaderBackward.close();</div>
-<div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>     imgWriterEst.close();</div>
-<div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>     imgWriterUncert.close();</div>
-<div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>   }</div>
-<div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>   <span class="keywordflow">if</span>(observation_opt.size()<nobs)</div>
-<div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>     imgReaderObs.close();</div>
-<div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>   <span class="keywordflow">if</span>(model_opt.size()<nmodel)</div>
-<div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>     imgReaderModel1.close();</div>
-<div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>   <span class="comment">// if(mask_opt.size())</span></div>
-<div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>   <span class="comment">//   maskReader.close();</span></div>
-<div class="line"><a name="l01941"></a><span class="lineno"> 1941</span> }</div>
-<div class="line"><a name="l01942"></a><span class="lineno"> 1942</span> </div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-<div class="ttc" id="classImgWriterGdal_html"><div class="ttname"><a href="classImgWriterGdal.html">ImgWriterGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgWriterGdal_8h_source.html#l00033">ImgWriterGdal.h:33</a></div></div>
-<div class="ttc" id="classImgUpdaterGdal_html"><div class="ttname"><a href="classImgUpdaterGdal.html">ImgUpdaterGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgGdal_8h_source.html#l00027">ImgGdal.h:27</a></div></div>
-<div class="ttc" id="classstatfactory_1_1StatFactory_html"><div class="ttname"><a href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></div><div class="ttdef"><b>Definition:</b> <a href="StatFactory_8h_source.html#l00043">StatFactory.h:43</a></div></div>
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pklas2img.html b/doc/html/pklas2img.html
deleted file mode 100644
index 75fc63f..0000000
--- a/doc/html/pklas2img.html
+++ /dev/null
@@ -1,130 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: pklas2img</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pklas2img </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><p>Rasterize LAS/LAZ point clouds with filtering/compositing options </p>
-<h2>SYNOPSIS</h2>
-<p><code></code></p>
-<p><code></code></p>
-<p><code></code></p>
-<p><code> Options: [-n attribute] [-comp method] [-fir type] [-a_srs] [-ulx value -uly value -lrx value -lry value] [-dx value -dy value] [-ot type] [-of format] [-ret value]* [-class number]*</code></p>
-<p><code> Advanced options: [-nbin value] [-nodata value] [-co option]* [-ct colortable]</code></p>
-<p><code></code></p>
-<h1><a class="anchor" id="pklas2img_description"></a>
-Description</h1>
-<p>The utility pklas2img converts a las/laz point cloud into a gridded raster dataset. The implementation is based on <a href="www.liblas.org">liblas</a> API. You can define the bounding box, grid cell size and spatial reference set. The composite rule for multiple returns within a single grid cell can be set with the option -comp. The default attribute is z (heiht), but can also be intensity (if available), scan angle rank (-n angle), the return number (-n return) or the total number of [...]
-<h1><a class="anchor" id="pklas2img_options"></a>
-Options</h1>
-<ul>
-<li>use either <code>-short</code> or <code>--long</code> options (both <code>--long=value</code> and <code>--long value</code> are supported)</li>
-<li>short option <code>-h</code> shows basic options only, long option <code>--help</code> shows all options <table class="doxtable">
-<tr>
-<th>short</th><th>long</th><th>type</th><th>default</th><th>description  </th></tr>
-<tr>
-<td>i </td><td>input </td><td>std::string </td><td></td><td>Input las file </td></tr>
-<tr>
-<td>n </td><td>name </td><td>std::string </td><td>z </td><td>names of the attribute to select: intensity, angle, return, nreturn, z </td></tr>
-<tr>
-<td>ret </td><td>ret </td><td>unsigned short </td><td></td><td>number(s) of returns to include </td></tr>
-<tr>
-<td>class </td><td>class </td><td>unsigned short </td><td></td><td>classes to keep: 0 (created, never classified), 1 (unclassified), 2 (ground), 3 (low vegetation), 4 (medium vegetation), 5 (high vegetation), 6 (building), 7 (low point, noise), 8 (model key-point), 9 (water), 10 (reserved), 11 (reserved), 12 (overlap) </td></tr>
-<tr>
-<td>comp </td><td>comp </td><td>std::string </td><td>last </td><td>composite for multiple points in cell (min, max, median, mean, sum, first, last, profile (percentile height values), percentile, number (point density)). Last: overwrite cells with latest point </td></tr>
-<tr>
-<td>fir </td><td>filter </td><td>std::string </td><td>all </td><td>filter las points (first,last,single,multiple,all). </td></tr>
-<tr>
-<td>angle_min </td><td>angle_min </td><td>unsigned short </td><td></td><td>minimum scan angle to read points. </td></tr>
-<tr>
-<td>angle_max </td><td>angle_max </td><td>unsigned short </td><td></td><td>maximum scan angle to read points. </td></tr>
-<tr>
-<td>o </td><td>output </td><td>std::string </td><td></td><td>Output image file </td></tr>
-<tr>
-<td>a_srs </td><td>a_srs </td><td>std::string </td><td></td><td>assign the projection for the output file in epsg code, e.g., epsg:3035 for European LAEA projection </td></tr>
-<tr>
-<td>ulx </td><td>ulx </td><td>double </td><td>0 </td><td>Upper left x value bounding box (in geocoordinates if georef is true). 0 is read from input file </td></tr>
-<tr>
-<td>uly </td><td>uly </td><td>double </td><td>0 </td><td>Upper left y value bounding box (in geocoordinates if georef is true). 0 is read from input file </td></tr>
-<tr>
-<td>lrx </td><td>lrx </td><td>double </td><td>0 </td><td>Lower right x value bounding box (in geocoordinates if georef is true). 0 is read from input file </td></tr>
-<tr>
-<td>lry </td><td>lry </td><td>double </td><td>0 </td><td>Lower right y value bounding box (in geocoordinates if georef is true). 0 is read from input file </td></tr>
-<tr>
-<td>ot </td><td>otype </td><td>std::string </td><td>Byte </td><td>Data type for output image ({Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/CInt16/CInt32/CFloat32/CFloat64}). Empty string: inherit type from input image </td></tr>
-<tr>
-<td>of </td><td>oformat </td><td>std::string </td><td>GTiff </td><td>Output image format (see also gdal_translate). </td></tr>
-<tr>
-<td>dx </td><td>dx </td><td>double </td><td>1 </td><td>Output resolution in x (in meter) </td></tr>
-<tr>
-<td>dy </td><td>dy </td><td>double </td><td>1 </td><td>Output resolution in y (in meter) </td></tr>
-<tr>
-<td>nbin </td><td>nbin </td><td>short </td><td>10 </td><td>Number of percentile bins for calculating percentile height value profile (=number of output bands) </td></tr>
-<tr>
-<td>perc </td><td>perc </td><td>double </td><td>95 </td><td>Percentile value used for rule percentile </td></tr>
-<tr>
-<td>nodata </td><td>nodata </td><td>short </td><td>0 </td><td>nodata value to put in image </td></tr>
-<tr>
-<td>co </td><td>co </td><td>std::string </td><td></td><td>Creation option for output file. Multiple options can be specified. </td></tr>
-<tr>
-<td>ct </td><td>ct </td><td>std::string </td><td></td><td>color table (file with 5 columns: id R G B ALFA (0: transparent, 255: solid) </td></tr>
-</table>
-pklas2img -i lasfile -o output </li>
-</ul>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pklas2img_8cc_source.html b/doc/html/pklas2img_8cc_source.html
deleted file mode 100644
index ac70997..0000000
--- a/doc/html/pklas2img_8cc_source.html
+++ /dev/null
@@ -1,652 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/pklas2img.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pklas2img.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pklas2img.cc: Rasterize LAS/LAZ point clouds with filtering/compositing options</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <iostream></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "imageclasses/ImgReaderGdal.h"</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "imageclasses/ImgWriterGdal.h"</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "imageclasses/ImgReaderOgr.h"</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "lasclasses/FileReaderLas.h"</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "algorithms/StatFactory.h"</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "algorithms/Filter2d.h"</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> </div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="comment">/******************************************************************************/</span></div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span> </div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc,<span class="keywordtype">char</span> **argv) {</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> input_opt(<span class="stringliteral">"i"</span>, <span class="stringliteral">"input"</span>, <span class="stringliteral">"Input las file"</span>);</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> attribute_opt(<span class="stringliteral">"n"</span>, <span class="stringliteral">"name"</span>, <span class="stringliteral">"names of the point attribute to select: intensity, angle, return, nreturn, angle, z"</span>, <span class="stringliteral">"z"</span>);</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   <span class="comment">// Optionpk<bool> disc_opt("circ", "circular", "circular disc kernel for dilation and erosion", false);</span></div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>   <span class="comment">// Optionpk<double> maxSlope_opt("s", "maxSlope", "Maximum slope used for morphological filtering", 0.0);</span></div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>   <span class="comment">// Optionpk<double> hThreshold_opt("ht", "maxHeight", "initial and maximum height threshold for progressive morphological filtering (e.g., -ht 0.2 -ht 2.5)", 0.2);</span></div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>   <span class="comment">// Optionpk<short> maxIter_opt("maxit", "maxit", "Maximum number of iterations in post filter", 5);</span></div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> returns_opt(<span class="stringliteral">"ret"</span>, <span class="stringliteral">"ret"</span>, <span class="stringliteral">"number(s) of returns to include"</span>);</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> classes_opt(<span class="stringliteral">"class"</span>, <span class="stringliteral">"class"</span>, <span class="stringliteral">"classes to keep: 0 (created, never classified), 1 (unclassified), 2 (ground), 3 (low vegetation), 4 (medium vegetation), 5 (high vegetation), 6 (building), 7 (low point, noise), 8 ( [...]
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> composite_opt(<span class="stringliteral">"comp"</span>, <span class="stringliteral">"comp"</span>, <span class="stringliteral">"composite for multiple points in cell (min, max, median, mean, sum, first, last, profile (percentile height values), percentile, number (point density)). Last: overwrite cells with latest p [...]
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> filter_opt(<span class="stringliteral">"fir"</span>, <span class="stringliteral">"filter"</span>, <span class="stringliteral">"filter las points (first,last,single,multiple,all)."</span>, <span class="stringliteral">"all"</span>);</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> angle_min_opt(<span class="stringliteral">"angle_min"</span>, <span class="stringliteral">"angle_min"</span>, <span class="stringliteral">"Minimum scan angle to read points."</span>);</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> angle_max_opt(<span class="stringliteral">"angle_max"</span>, <span class="stringliteral">"angle_max"</span>, <span class="stringliteral">"Maximum scan angle to read points."</span>);</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>   <span class="comment">// Optionpk<string> postFilter_opt("pf", "pfilter", "post processing filter (etew_min,promorph (progressive morphological filter),bunting (adapted promorph),open,close,none).", "none");</span></div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>   <span class="comment">// Optionpk<short> dimx_opt("dimx", "dimx", "Dimension X of postFilter", 3);</span></div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>   <span class="comment">// Optionpk<short> dimy_opt("dimy", "dimy", "Dimension Y of postFilter", 3);</span></div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> output_opt(<span class="stringliteral">"o"</span>, <span class="stringliteral">"output"</span>, <span class="stringliteral">"Output image file"</span>);</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> projection_opt(<span class="stringliteral">"a_srs"</span>, <span class="stringliteral">"a_srs"</span>, <span class="stringliteral">"assign the projection for the output file in epsg code, e.g., epsg:3035 for European LAEA projection"</span>);</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> ulx_opt(<span class="stringliteral">"ulx"</span>, <span class="stringliteral">"ulx"</span>, <span class="stringliteral">"Upper left x value bounding box (in geocoordinates if georef is true). 0 is read from input file"</span>, 0.0);</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> uly_opt(<span class="stringliteral">"uly"</span>, <span class="stringliteral">"uly"</span>, <span class="stringliteral">"Upper left y value bounding box (in geocoordinates if georef is true). 0 is read from input file"</span>, 0.0);</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> lrx_opt(<span class="stringliteral">"lrx"</span>, <span class="stringliteral">"lrx"</span>, <span class="stringliteral">"Lower right x value bounding box (in geocoordinates if georef is true). 0 is read from input file"</span>, 0.0);</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> lry_opt(<span class="stringliteral">"lry"</span>, <span class="stringliteral">"lry"</span>, <span class="stringliteral">"Lower right y value bounding box (in geocoordinates if georef is true). 0 is read from input file"</span>, 0.0);</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> otype_opt(<span class="stringliteral">"ot"</span>, <span class="stringliteral">"otype"</span>, <span class="stringliteral">"Data type for output image ({Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/CInt16/CInt32/CFloat32/CFloat64}). Empty string: inherit type from input image"</span>, <span class="stringlitera [...]
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> oformat_opt(<span class="stringliteral">"of"</span>, <span class="stringliteral">"oformat"</span>, <span class="stringliteral">"Output image format (see also gdal_translate)."</span>, <span class="stringliteral">"GTiff"</span>);</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> dx_opt(<span class="stringliteral">"dx"</span>, <span class="stringliteral">"dx"</span>, <span class="stringliteral">"Output resolution in x (in meter)"</span>, 1.0);</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> dy_opt(<span class="stringliteral">"dy"</span>, <span class="stringliteral">"dy"</span>, <span class="stringliteral">"Output resolution in y (in meter)"</span>, 1.0);</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> nbin_opt(<span class="stringliteral">"nbin"</span>, <span class="stringliteral">"nbin"</span>, <span class="stringliteral">"Number of percentile bins for calculating percentile height value profile (=number of output bands)"</span>, 10.0);</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> percentile_opt(<span class="stringliteral">"perc"</span>,<span class="stringliteral">"percentile"</span>,<span class="stringliteral">"Percentile value used for rule percentile"</span>,95);</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> nodata_opt(<span class="stringliteral">"nodata"</span>, <span class="stringliteral">"nodata"</span>, <span class="stringliteral">"nodata value to put in image"</span>, 0);</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> option_opt(<span class="stringliteral">"co"</span>, <span class="stringliteral">"co"</span>, <span class="stringliteral">"Creation option for output file. Multiple options can be specified."</span>);</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> colorTable_opt(<span class="stringliteral">"ct"</span>, <span class="stringliteral">"ct"</span>, <span class="stringliteral">"color table (file with 5 columns: id R G B ALFA (0: transparent, 255: solid)"</span>);</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> verbose_opt(<span class="stringliteral">"v"</span>, <span class="stringliteral">"verbose"</span>, <span class="stringliteral">"verbose mode"</span>, 0,2);</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span> </div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>   nbin_opt.setHide(1);</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>   percentile_opt.setHide(1);</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>   nodata_opt.setHide(1);</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>   option_opt.setHide(1);</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   colorTable_opt.setHide(1);</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span> </div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>   <span class="keywordtype">bool</span> doProcess;<span class="comment">//stop process when program was invoked with help option (-h --help)</span></div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     doProcess=input_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>     attribute_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>     returns_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>     classes_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>     composite_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>     filter_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>     angle_min_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>     angle_max_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>     output_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>     projection_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>     ulx_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>     uly_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>     lrx_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>     lry_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>     otype_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>     oformat_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>     dx_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>     dy_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>     nbin_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>     percentile_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>     nodata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>     option_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>     colorTable_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>     verbose_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>   }</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> predefinedString){</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>     std::cout << predefinedString << std::endl;</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>     exit(0);</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>   }</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span> </div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>   <span class="keywordflow">if</span>(!doProcess){</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>     cout << endl;</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>     cout << <span class="stringliteral">"pklas2img -i lasfile -o output"</span> << endl;</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>     cout << endl;</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>     std::cout << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << std::endl;</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>     exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>   }</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>   <span class="comment">//todo: is this needed?</span></div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>   GDALAllRegister();</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span> </div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>   <span class="keywordtype">double</span> dfComplete=0.0;</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>   <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span> </div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>   <a class="code" href="classVector2d.html">Vector2d<vector<double></a> > inputData;<span class="comment">//row,col,point</span></div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span> </div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>    </div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>   <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> maskReader;</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>   <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> outputWriter;</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>   GDALDataType theType=GDT_Unknown;</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>     cout << <span class="stringliteral">"possible output data types: "</span>;</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iType = 0; iType < GDT_TypeCount; ++iType){</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>       cout << <span class="stringliteral">" "</span> << GDALGetDataTypeName((GDALDataType)iType);</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>     <span class="keywordflow">if</span>( GDALGetDataTypeName((GDALDataType)iType) != NULL</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>         && EQUAL(GDALGetDataTypeName((GDALDataType)iType),</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>                  otype_opt[0].c_str()))</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>       theType=(GDALDataType) iType;</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>   }</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>   <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>     <span class="keywordflow">if</span>(theType==GDT_Unknown)</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>       cout << <span class="stringliteral">"Unknown output pixel type: "</span> << otype_opt[0] << endl;</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>       cout << <span class="stringliteral">"Output pixel type:  "</span> << GDALGetDataTypeName(theType) << endl;</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>   }</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span> </div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>   <span class="keywordtype">double</span> maxLRX=0;</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>   <span class="keywordtype">double</span> maxULY=0;</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>   <span class="keywordtype">double</span> minULX=0;</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>   <span class="keywordtype">double</span> minLRY=0;</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span> </div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> totalPoints=0;</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> nPoints=0;</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> ipoint=0;</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iinput=0;iinput<input_opt.size();++iinput){</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>     <span class="comment">// assert(input_opt[iinput].find(".las")!=string::npos);</span></div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>     <a class="code" href="classFileReaderLas.html">FileReaderLas</a> lasReader;</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>       lasReader.open(input_opt[iinput]);</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>     }</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>     <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorString){</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>       cerr << errorString << endl;</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>       exit(1);</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>     }</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>     <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>       cerr << <span class="stringliteral">"Error opening input "</span> << input_opt[iinput] << endl;</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>       exit(2);</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>     }</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>     nPoints=lasReader.getPointCount();</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>     totalPoints+=nPoints;</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span> </div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>     <span class="keywordflow">if</span>(ulx_opt[0]>=lrx_opt[0]||uly_opt[0]<=lry_opt[0]){</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>       <span class="keywordtype">double</span> ulx,uly,lrx,lry;</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>       lasReader.getExtent(ulx,uly,lrx,lry);</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>       lrx+=dx_opt[0];<span class="comment">//pixel coordinates are referenced to upper left corner (las coordinates are centres)</span></div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>       lry-=dy_opt[0];<span class="comment">//pixel coordinates are referenced to upper left corner (las coordinates are centres)</span></div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>       <span class="keywordflow">if</span>(ulx>=lrx){</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>         ulx=ulx-dx_opt[0]/2.0;</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>         lrx=ulx+dx_opt[0]/2.0;</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>       }</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>       <span class="keywordflow">if</span>(uly<=lry){</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>         uly=lry+dy_opt[0]/2.0;</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>         lry=lry-dy_opt[0]/2.0;</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>       }</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>       <span class="keywordflow">if</span>(maxLRX>minULX){</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>         maxLRX=(lrx>maxLRX)?lrx:maxLRX;</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>         maxULY=(uly>maxULY)?uly:maxULY;</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>         minULX=(ulx<minULX)?ulx:minULX;</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>         minLRY=(lry<minLRY)?lry:minLRY;</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>       }</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>       <span class="keywordflow">else</span>{<span class="comment">//initialize</span></div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>         maxLRX=lrx;</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>         maxULY=uly;</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>         minULX=ulx;</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>         minLRY=lry;</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>       }        </div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>     }</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>       maxLRX=lrx_opt[0];</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>       maxULY=uly_opt[0];</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>       minULX=ulx_opt[0];</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>       minLRY=lry_opt[0];</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>     }</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>     lasReader.close();</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>   }</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>   <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>     std::cout << setprecision(12) << <span class="stringliteral">"--ulx="</span> << minULX << <span class="stringliteral">" --uly="</span> << maxULY << <span class="stringliteral">" --lrx="</span> << maxLRX << <span class="stringliteral">" --lry="</span> << minLRY << std::endl;</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>     std::cout << <span class="stringliteral">"total number of points before filtering: "</span> << totalPoints << std::endl;</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>     std::cout << <span class="stringliteral">"filter set to "</span> << filter_opt[0] << std::endl;</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>     <span class="keywordflow">if</span>(angle_min_opt.size())</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>       std::cout << <span class="stringliteral">"minimum scan angle: "</span> << angle_min_opt[0] << std::endl;</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>     <span class="keywordflow">if</span>(angle_max_opt.size())</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>       std::cout << <span class="stringliteral">"maximum scan angle: "</span> << angle_max_opt[0] << std::endl;</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>     <span class="comment">// std::cout << "postFilter set to " << postFilter_opt[0] << std::endl;</span></div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>   }</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>   <span class="keywordtype">int</span> ncol=ceil(maxLRX-minULX)/dx_opt[0];<span class="comment">//number of columns in outputGrid</span></div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>   <span class="keywordtype">int</span> nrow=ceil(maxULY-minLRY)/dy_opt[0];<span class="comment">//number of rows in outputGrid</span></div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>   <span class="comment">//todo: multiple bands</span></div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>   <span class="keywordtype">int</span> nband=(composite_opt[0]==<span class="stringliteral">"profile"</span>)? nbin_opt[0] : 1;</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>   <span class="keywordflow">if</span>(!output_opt.size()){</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>     cerr << <span class="stringliteral">"Error: no output file defined"</span> << endl;</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>     exit(1);</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>   }</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>     cout << <span class="stringliteral">"opening output file "</span> << output_opt[0] << endl;</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>   outputWriter.open(output_opt[0],ncol,nrow,nband,theType,oformat_opt[0],option_opt);</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>   outputWriter.GDALSetNoDataValue(nodata_opt[0]);</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>   <span class="comment">//set projection</span></div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>   <span class="keywordtype">double</span> gt[6];</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>   gt[0]=minULX;</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>   gt[1]=dx_opt[0];</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>   gt[2]=0;</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>   gt[3]=maxULY;</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>   gt[4]=0;</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>   gt[5]=-dy_opt[0];</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>   outputWriter.setGeoTransform(gt);</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>   <span class="keywordflow">if</span>(projection_opt.size()){</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>     <span class="keywordtype">string</span> projectionString=outputWriter.setProjectionProj4(projection_opt[0]);</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>       cout << <span class="stringliteral">"projection: "</span> << projectionString << endl;</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>   }</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>   <span class="keywordflow">if</span>(!outputWriter.isGeoRef())</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>     cout << <span class="stringliteral">"Warning: output image "</span> << output_opt[0] << <span class="stringliteral">" is not georeferenced!"</span> << endl;</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>   <span class="keywordflow">if</span>(colorTable_opt.size())</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>     outputWriter.setColorTable(colorTable_opt[0]);</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span> </div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>   inputData.clear();</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>   inputData.resize(nrow,ncol);</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> outputData(nrow,ncol);</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<nrow;++irow)</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<ncol;++icol)</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>       outputData[irow][icol]=0;</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span> </div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>   cout << <span class="stringliteral">"Reading "</span> << input_opt.size() << <span class="stringliteral">" point cloud files"</span> << endl;</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>   pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iinput=0;iinput<input_opt.size();++iinput){</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>     <a class="code" href="classFileReaderLas.html">FileReaderLas</a> lasReader;</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>       lasReader.open(input_opt[iinput]);</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>     }</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>     <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorString){</div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>       cout << errorString << endl;</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>       exit(1);</div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>     }</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>     <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>       <span class="keywordflow">if</span>(lasReader.isCompressed())</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>     cout << <span class="stringliteral">"Reading compressed point cloud "</span> << input_opt[iinput]<< endl;</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>     cout << <span class="stringliteral">"Reading uncompressed point cloud "</span> << input_opt[iinput] << endl;</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>     }</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>     <span class="comment">//set bounding filter</span></div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>     <span class="comment">// lasReader.addBoundsFilter(minULX,maxULY,maxLRX,minLRY);</span></div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>     <span class="comment">//set returns filter</span></div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>     <span class="keywordflow">if</span>(returns_opt.size())</div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>       lasReader.addReturnsFilter(returns_opt);</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>     <span class="keywordflow">if</span>(classes_opt.size())</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>       lasReader.addClassFilter(classes_opt);</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>     lasReader.setFilters();</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span> </div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>     <span class="keywordflow">if</span>(attribute_opt[0]!=<span class="stringliteral">"z"</span>){</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>       vector<boost::uint16_t> returnsVector;</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>       vector<string>::iterator ait=attribute_opt.begin();</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>       <span class="keywordflow">while</span>(ait!=attribute_opt.end()){</div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>         <span class="keywordflow">if</span>(*ait==<span class="stringliteral">"intensity"</span>){</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>           <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>             std::cout << <span class="stringliteral">"writing intensity"</span> << std::endl;</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>           ++ait;</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>         }</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>         <span class="keywordflow">if</span>(*ait==<span class="stringliteral">"angle"</span>){</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>           <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>             std::cout << <span class="stringliteral">"writing angle"</span> << std::endl;</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>           ++ait;</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>         }</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(*ait==<span class="stringliteral">"return"</span>){</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>           <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>             std::cout << <span class="stringliteral">"writing return number"</span> << std::endl;</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>           ++ait;</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>         }</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(*ait==<span class="stringliteral">"nreturn"</span>){</div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>           <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>             std::cout << <span class="stringliteral">"writing number of returns"</span> << std::endl;</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>           ++ait;</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>         }</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>           attribute_opt.erase(ait);</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>       }</div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>     }</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>     liblas::Point thePoint(&(lasReader.getHeader()));</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>     <span class="keywordflow">while</span>(lasReader.readNextPoint(thePoint)){</div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>       progress=<span class="keyword">static_cast<</span><span class="keywordtype">float</span><span class="keyword">></span>(ipoint)/totalPoints;</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>       pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>       <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>         cout << <span class="stringliteral">"reading point "</span> << ipoint << endl;</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>       <span class="keywordflow">if</span>(thePoint.GetX()<minULX||thePoint.GetX()>=maxLRX||thePoint.GetY()>=maxULY||thePoint.GetY()<minLRY)</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>         <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>       <span class="keywordflow">if</span>((filter_opt[0]==<span class="stringliteral">"single"</span>)&&(thePoint.GetNumberOfReturns()!=1))</div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>         <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>       <span class="keywordflow">if</span>((filter_opt[0]==<span class="stringliteral">"multiple"</span>)&&(thePoint.GetNumberOfReturns()<2))</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>         <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>       <span class="keywordflow">if</span>((filter_opt[0]==<span class="stringliteral">"last"</span>)&&(thePoint.GetReturnNumber()!=thePoint.GetNumberOfReturns()))</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>       <span class="keywordflow">if</span>((filter_opt[0]==<span class="stringliteral">"first"</span>)&&(thePoint.GetReturnNumber()!=1))</div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>       <span class="keywordflow">if</span>(angle_min_opt.size()){</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>     <span class="keywordflow">if</span>(angle_min_opt[0]>thePoint.GetScanAngleRank())</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>       }</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>       <span class="keywordflow">if</span>(angle_max_opt.size()){</div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>     <span class="keywordflow">if</span>(angle_max_opt[0]<thePoint.GetScanAngleRank())</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>       }</div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>       <span class="keywordtype">double</span> dcol,drow;</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>       outputWriter.geo2image(thePoint.GetX(),thePoint.GetY(),dcol,drow);</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>       <span class="keywordtype">int</span> icol=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(dcol);</div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>       <span class="keywordtype">int</span> irow=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(drow);</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>       <span class="keywordflow">if</span>(irow<0||irow>=nrow){</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>     <span class="comment">// //test</span></div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>     <span class="comment">// cout << "Error: thePoint.GetX(),thePoint.GetY(),dcol,drow" << thePoint.GetX() << ", " << thePoint.GetY() << ", " << dcol << ", " << drow << endl;</span></div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>       }</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>       <span class="keywordflow">if</span>(icol<0||icol>=ncol){</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>     <span class="comment">// //test</span></div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>     <span class="comment">// cout << "Error: thePoint.GetX(),thePoint.GetY(),dcol,drow" << thePoint.GetX() << ", " << thePoint.GetY() << ", " << dcol << ", " << drow << endl;</span></div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>       }</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>       assert(irow>=0);</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>       assert(irow<nrow);</div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>       assert(icol>=0);</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>       assert(icol<ncol);</div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>       <span class="keywordflow">if</span>(composite_opt[0]==<span class="stringliteral">"number"</span>)</div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>         outputData[irow][icol]+=1;</div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(attribute_opt[0]==<span class="stringliteral">"z"</span>)</div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>         inputData[irow][icol].push_back(thePoint.GetZ());</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(attribute_opt[0]==<span class="stringliteral">"intensity"</span>)</div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span>         inputData[irow][icol].push_back(thePoint.GetIntensity());</div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(attribute_opt[0]==<span class="stringliteral">"angle"</span>)</div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>         inputData[irow][icol].push_back(thePoint.GetScanAngleRank());</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(attribute_opt[0]==<span class="stringliteral">"return"</span>)</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span>         inputData[irow][icol].push_back(thePoint.GetReturnNumber());</div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(attribute_opt[0]==<span class="stringliteral">"nreturn"</span>)</div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span>         inputData[irow][icol].push_back(thePoint.GetNumberOfReturns());</div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>         std::string errorString=<span class="stringliteral">"attribute not supported"</span>;</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>         <span class="keywordflow">throw</span>(errorString);</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>       }</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span>       ++ipoint;</div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>     }</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>       std::cout << <span class="stringliteral">"number of points: "</span> << ipoint << std::endl;</div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>     lasReader.close();</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span>   }</div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>   progress=1;</div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>   pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span> </div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>   std::cout << <span class="stringliteral">"processing LiDAR points"</span> << std::endl;</div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span>   progress=0;</div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span>   pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>   <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span>   <span class="comment">//fill inputData in outputData</span></div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span>   <span class="comment">// if(composite_opt[0]=="profile"){</span></div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span>     <span class="comment">// assert(postFilter_opt[0]=="none");</span></div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span>     <span class="comment">// for(int iband=0;iband<nband;++iband)</span></div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span>       <span class="comment">// outputProfile[iband].resize(nrow,ncol);</span></div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span>   <span class="comment">// }</span></div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<nrow;++irow){</div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span>     <span class="keywordflow">if</span>(composite_opt[0]==<span class="stringliteral">"number"</span>)</div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>       <span class="keywordflow">continue</span>;<span class="comment">//outputData already set</span></div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>     <a class="code" href="classVector2d.html">Vector2d<double></a> outputProfile(nband,ncol);</div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<ncol;++icol){</div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span>       std::vector<double> profile;</div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span>       <span class="keywordflow">if</span>(!inputData[irow][icol].size())</div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span>         outputData[irow][icol]=(<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>((nodata_opt[0])));</div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span>         <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span>         <span class="keywordflow">if</span>(composite_opt[0]==<span class="stringliteral">"min"</span>)</div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span>           outputData[irow][icol]=stat.mymin(inputData[irow][icol]);</div>
-<div class="line"><a name="l00445"></a><span class="lineno">  445</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(composite_opt[0]==<span class="stringliteral">"max"</span>)</div>
-<div class="line"><a name="l00446"></a><span class="lineno">  446</span>           outputData[irow][icol]=stat.mymax(inputData[irow][icol]);</div>
-<div class="line"><a name="l00447"></a><span class="lineno">  447</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(composite_opt[0]==<span class="stringliteral">"median"</span>)</div>
-<div class="line"><a name="l00448"></a><span class="lineno">  448</span>           outputData[irow][icol]=stat.median(inputData[irow][icol]);</div>
-<div class="line"><a name="l00449"></a><span class="lineno">  449</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(composite_opt[0]==<span class="stringliteral">"percentile"</span>)</div>
-<div class="line"><a name="l00450"></a><span class="lineno">  450</span>           outputData[irow][icol]=stat.percentile(inputData[irow][icol],inputData[irow][icol].begin(),inputData[irow][icol].end(),percentile_opt[0]);</div>
-<div class="line"><a name="l00451"></a><span class="lineno">  451</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(composite_opt[0]==<span class="stringliteral">"mean"</span>)</div>
-<div class="line"><a name="l00452"></a><span class="lineno">  452</span>           outputData[irow][icol]=stat.mean(inputData[irow][icol]);</div>
-<div class="line"><a name="l00453"></a><span class="lineno">  453</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(composite_opt[0]==<span class="stringliteral">"sum"</span>)</div>
-<div class="line"><a name="l00454"></a><span class="lineno">  454</span>           outputData[irow][icol]=stat.sum(inputData[irow][icol]);</div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(composite_opt[0]==<span class="stringliteral">"first"</span>)</div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</span>           outputData[irow][icol]=inputData[irow][icol][0];</div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(composite_opt[0]==<span class="stringliteral">"last"</span>)</div>
-<div class="line"><a name="l00458"></a><span class="lineno">  458</span>           outputData[irow][icol]=inputData[irow][icol].back();</div>
-<div class="line"><a name="l00459"></a><span class="lineno">  459</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(composite_opt[0]==<span class="stringliteral">"profile"</span>){</div>
-<div class="line"><a name="l00460"></a><span class="lineno">  460</span>           <span class="keywordflow">if</span>(inputData[irow][icol].size()<2){</div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband)</div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span>               outputProfile[iband][icol]=static_cast<double>(nodata_opt[0]);</div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span>             <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00464"></a><span class="lineno">  464</span>           }</div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span>           <span class="keywordtype">double</span> min=0;</div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>           <span class="keywordtype">double</span> max=0;</div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span>           stat.minmax(inputData[irow][icol],inputData[irow][icol].begin(),inputData[irow][icol].end(),min,max);</div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span>           <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span>             std::cout << <span class="stringliteral">"min,max: "</span> << min << <span class="stringliteral">","</span> << max << std::endl;</div>
-<div class="line"><a name="l00470"></a><span class="lineno">  470</span>           <span class="keywordflow">if</span>(max>min){</div>
-<div class="line"><a name="l00471"></a><span class="lineno">  471</span>             stat.percentiles(inputData[irow][icol],inputData[irow][icol].begin(),inputData[irow][icol].end(),profile,nband,min,max);</div>
-<div class="line"><a name="l00472"></a><span class="lineno">  472</span>             assert(profile.size()==nband);</div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband)</div>
-<div class="line"><a name="l00474"></a><span class="lineno">  474</span>               outputProfile[iband][icol]=profile[iband];</div>
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span>           }</div>
-<div class="line"><a name="l00476"></a><span class="lineno">  476</span>           <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00477"></a><span class="lineno">  477</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband)</div>
-<div class="line"><a name="l00478"></a><span class="lineno">  478</span>               outputProfile[iband][icol]=max;</div>
-<div class="line"><a name="l00479"></a><span class="lineno">  479</span>           }</div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span>         }</div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00482"></a><span class="lineno">  482</span>           std::cout << <span class="stringliteral">"Error: composite_opt "</span> << composite_opt[0] << <span class="stringliteral">" not supported"</span> << std::endl;</div>
-<div class="line"><a name="l00483"></a><span class="lineno">  483</span>           exit(2);</div>
-<div class="line"><a name="l00484"></a><span class="lineno">  484</span>         }</div>
-<div class="line"><a name="l00485"></a><span class="lineno">  485</span>       }</div>
-<div class="line"><a name="l00486"></a><span class="lineno">  486</span>     }</div>
-<div class="line"><a name="l00487"></a><span class="lineno">  487</span>     <span class="keywordflow">if</span>(composite_opt[0]==<span class="stringliteral">"profile"</span>){</div>
-<div class="line"><a name="l00488"></a><span class="lineno">  488</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l00489"></a><span class="lineno">  489</span>         <span class="comment">// assert(outputProfile[iband].size()==outputWriter.nrOfRow());</span></div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span>         assert(outputProfile[iband].size()==outputWriter.nrOfCol());</div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span>         <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00492"></a><span class="lineno">  492</span>           outputWriter.writeData(outputProfile[iband],GDT_Float64,irow,iband);</div>
-<div class="line"><a name="l00493"></a><span class="lineno">  493</span>         }</div>
-<div class="line"><a name="l00494"></a><span class="lineno">  494</span>         <span class="keywordflow">catch</span>(std::string errorString){</div>
-<div class="line"><a name="l00495"></a><span class="lineno">  495</span>           cout << errorString << endl;</div>
-<div class="line"><a name="l00496"></a><span class="lineno">  496</span>           exit(1);</div>
-<div class="line"><a name="l00497"></a><span class="lineno">  497</span>         }</div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span>       }</div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span>     }</div>
-<div class="line"><a name="l00500"></a><span class="lineno">  500</span>     progress=<span class="keyword">static_cast<</span><span class="keywordtype">float</span><span class="keyword">></span>(irow)/outputWriter.nrOfRow();</div>
-<div class="line"><a name="l00501"></a><span class="lineno">  501</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00502"></a><span class="lineno">  502</span>   }</div>
-<div class="line"><a name="l00503"></a><span class="lineno">  503</span>   progress=1;</div>
-<div class="line"><a name="l00504"></a><span class="lineno">  504</span>   pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00505"></a><span class="lineno">  505</span>   inputData.clear();<span class="comment">//clean up memory</span></div>
-<div class="line"><a name="l00506"></a><span class="lineno">  506</span>   <span class="comment">//apply post filter</span></div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span>   <span class="comment">// std::cout << "Applying post processing filter: " << postFilter_opt[0] << std::endl;</span></div>
-<div class="line"><a name="l00508"></a><span class="lineno">  508</span>   <span class="comment">// if(postFilter_opt[0]=="etew_min"){</span></div>
-<div class="line"><a name="l00509"></a><span class="lineno">  509</span>   <span class="comment">//   if(composite_opt[0]!="min")</span></div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span>   <span class="comment">//     std::cout << "Warning: composite option is not set to min!" << std::endl;</span></div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span>   <span class="comment">//   //Elevation Threshold with Expand Window (ETEW) Filter (p.73 frmo Airborne LIDAR Data Processing and Analysis Tools ALDPAT 1.0)</span></div>
-<div class="line"><a name="l00512"></a><span class="lineno">  512</span>   <span class="comment">//   //first iteration is performed assuming only minima are selected using options -fir all -comp min</span></div>
-<div class="line"><a name="l00513"></a><span class="lineno">  513</span>   <span class="comment">//   unsigned long int nchange=1;</span></div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span>   <span class="comment">//   //increase cells and thresholds until no points from the previous iteration are discarded.</span></div>
-<div class="line"><a name="l00515"></a><span class="lineno">  515</span>   <span class="comment">//   int dimx=dimx_opt[0];</span></div>
-<div class="line"><a name="l00516"></a><span class="lineno">  516</span>   <span class="comment">//   int dimy=dimy_opt[0];</span></div>
-<div class="line"><a name="l00517"></a><span class="lineno">  517</span>   <span class="comment">//   filter2d::Filter2d morphFilter;</span></div>
-<div class="line"><a name="l00518"></a><span class="lineno">  518</span>   <span class="comment">//   // morphFilter.setNoValue(0);</span></div>
-<div class="line"><a name="l00519"></a><span class="lineno">  519</span>   <span class="comment">//   Vector2d<float> currentOutput=outputData;</span></div>
-<div class="line"><a name="l00520"></a><span class="lineno">  520</span>   <span class="comment">//   int iteration=1;</span></div>
-<div class="line"><a name="l00521"></a><span class="lineno">  521</span>   <span class="comment">//   while(nchange&&iteration<=maxIter_opt[0]){</span></div>
-<div class="line"><a name="l00522"></a><span class="lineno">  522</span>   <span class="comment">//     double hThreshold=maxSlope_opt[0]*dimx;</span></div>
-<div class="line"><a name="l00523"></a><span class="lineno">  523</span>   <span class="comment">//     Vector2d<float> newOutput;</span></div>
-<div class="line"><a name="l00524"></a><span class="lineno">  524</span>   <span class="comment">//     nchange=morphFilter.morphology(currentOutput,newOutput,"erode",dimx,dimy,disc_opt[0],hThreshold);</span></div>
-<div class="line"><a name="l00525"></a><span class="lineno">  525</span>   <span class="comment">//     currentOutput=newOutput;</span></div>
-<div class="line"><a name="l00526"></a><span class="lineno">  526</span>   <span class="comment">//     dimx+=2;//change from theory: originally double cellCize</span></div>
-<div class="line"><a name="l00527"></a><span class="lineno">  527</span>   <span class="comment">//     dimy+=2;//change from theory: originally double cellCize</span></div>
-<div class="line"><a name="l00528"></a><span class="lineno">  528</span>   <span class="comment">//     std::cout << "iteration " << iteration << ": " << nchange << " pixels changed" << std::endl;</span></div>
-<div class="line"><a name="l00529"></a><span class="lineno">  529</span>   <span class="comment">//     ++iteration;</span></div>
-<div class="line"><a name="l00530"></a><span class="lineno">  530</span>   <span class="comment">//   }</span></div>
-<div class="line"><a name="l00531"></a><span class="lineno">  531</span>   <span class="comment">//   outputData=currentOutput;</span></div>
-<div class="line"><a name="l00532"></a><span class="lineno">  532</span>   <span class="comment">// }    </span></div>
-<div class="line"><a name="l00533"></a><span class="lineno">  533</span>   <span class="comment">// else if(postFilter_opt[0]=="promorph"||postFilter_opt[0]=="bunting"){</span></div>
-<div class="line"><a name="l00534"></a><span class="lineno">  534</span>   <span class="comment">//   if(composite_opt[0]!="min")</span></div>
-<div class="line"><a name="l00535"></a><span class="lineno">  535</span>   <span class="comment">//     std::cout << "Warning: composite option is not set to min!" << std::endl;</span></div>
-<div class="line"><a name="l00536"></a><span class="lineno">  536</span>   <span class="comment">//   assert(hThreshold_opt.size()>1);</span></div>
-<div class="line"><a name="l00537"></a><span class="lineno">  537</span>   <span class="comment">//   //Progressive morphological filter tgrs2003_zhang vol41 pp 872-882</span></div>
-<div class="line"><a name="l00538"></a><span class="lineno">  538</span>   <span class="comment">//   //first iteration is performed assuming only minima are selected using options -fir all -comp min</span></div>
-<div class="line"><a name="l00539"></a><span class="lineno">  539</span>   <span class="comment">//   //increase cells and thresholds until no points from the previous iteration are discarded.</span></div>
-<div class="line"><a name="l00540"></a><span class="lineno">  540</span>   <span class="comment">//   int dimx=dimx_opt[0];</span></div>
-<div class="line"><a name="l00541"></a><span class="lineno">  541</span>   <span class="comment">//   int dimy=dimy_opt[0];</span></div>
-<div class="line"><a name="l00542"></a><span class="lineno">  542</span>   <span class="comment">//   filter2d::Filter2d theFilter;</span></div>
-<div class="line"><a name="l00543"></a><span class="lineno">  543</span>   <span class="comment">//   // theFilter.setNoValue(0);</span></div>
-<div class="line"><a name="l00544"></a><span class="lineno">  544</span>   <span class="comment">//   Vector2d<float> currentOutput=outputData;</span></div>
-<div class="line"><a name="l00545"></a><span class="lineno">  545</span>   <span class="comment">//   double hThreshold=hThreshold_opt[0];</span></div>
-<div class="line"><a name="l00546"></a><span class="lineno">  546</span>   <span class="comment">//   int iteration=1;</span></div>
-<div class="line"><a name="l00547"></a><span class="lineno">  547</span>   <span class="comment">//   while(iteration<=maxIter_opt[0]){</span></div>
-<div class="line"><a name="l00548"></a><span class="lineno">  548</span>   <span class="comment">//     std::cout << "iteration " << iteration << " with window size " << dimx << " and dh_max: " << hThreshold << std::endl;</span></div>
-<div class="line"><a name="l00549"></a><span class="lineno">  549</span>   <span class="comment">//     Vector2d<float> newOutput;</span></div>
-<div class="line"><a name="l00550"></a><span class="lineno">  550</span>   <span class="comment">//     try{</span></div>
-<div class="line"><a name="l00551"></a><span class="lineno">  551</span>   <span class="comment">//       theFilter.morphology(outputData,currentOutput,"erode",dimx,dimy,disc_opt[0],hThreshold);</span></div>
-<div class="line"><a name="l00552"></a><span class="lineno">  552</span>   <span class="comment">//       theFilter.morphology(currentOutput,outputData,"dilate",dimx,dimy,disc_opt[0],hThreshold);</span></div>
-<div class="line"><a name="l00553"></a><span class="lineno">  553</span>   <span class="comment">//       if(postFilter_opt[0]=="bunting"){</span></div>
-<div class="line"><a name="l00554"></a><span class="lineno">  554</span>   <span class="comment">//         theFilter.doit(outputData,currentOutput,"median",dimx,dimy,1,disc_opt[0]);</span></div>
-<div class="line"><a name="l00555"></a><span class="lineno">  555</span>   <span class="comment">//         outputData=currentOutput;</span></div>
-<div class="line"><a name="l00556"></a><span class="lineno">  556</span>   <span class="comment">//       }</span></div>
-<div class="line"><a name="l00557"></a><span class="lineno">  557</span>   <span class="comment">//     }</span></div>
-<div class="line"><a name="l00558"></a><span class="lineno">  558</span>   <span class="comment">//     catch(std::string errorString){</span></div>
-<div class="line"><a name="l00559"></a><span class="lineno">  559</span>   <span class="comment">//       cout << errorString << endl;</span></div>
-<div class="line"><a name="l00560"></a><span class="lineno">  560</span>   <span class="comment">//       exit(1);</span></div>
-<div class="line"><a name="l00561"></a><span class="lineno">  561</span>   <span class="comment">//     }</span></div>
-<div class="line"><a name="l00562"></a><span class="lineno">  562</span>   <span class="comment">//     int newdimx=(dimx==1)? 3: 2*(dimx-1)+1;</span></div>
-<div class="line"><a name="l00563"></a><span class="lineno">  563</span>   <span class="comment">//     int newdimy=(dimx==1)? 3: 2*(dimy-1)+1;//from PE&RS vol 71 pp313-324</span></div>
-<div class="line"><a name="l00564"></a><span class="lineno">  564</span>   <span class="comment">//     hThreshold=hThreshold_opt[0]+maxSlope_opt[0]*(newdimx-dimx)*dx_opt[0];</span></div>
-<div class="line"><a name="l00565"></a><span class="lineno">  565</span>   <span class="comment">//     dimx=newdimx;</span></div>
-<div class="line"><a name="l00566"></a><span class="lineno">  566</span>   <span class="comment">//     dimy=newdimy;</span></div>
-<div class="line"><a name="l00567"></a><span class="lineno">  567</span>   <span class="comment">//     if(hThreshold>hThreshold_opt[1])</span></div>
-<div class="line"><a name="l00568"></a><span class="lineno">  568</span>   <span class="comment">//       hThreshold=hThreshold_opt[1];</span></div>
-<div class="line"><a name="l00569"></a><span class="lineno">  569</span>   <span class="comment">//     ++iteration;</span></div>
-<div class="line"><a name="l00570"></a><span class="lineno">  570</span>   <span class="comment">//   }</span></div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span>   <span class="comment">//   outputData=currentOutput;</span></div>
-<div class="line"><a name="l00572"></a><span class="lineno">  572</span>   <span class="comment">// }    </span></div>
-<div class="line"><a name="l00573"></a><span class="lineno">  573</span>   <span class="comment">// else if(postFilter_opt[0]=="open"){</span></div>
-<div class="line"><a name="l00574"></a><span class="lineno">  574</span>   <span class="comment">//   if(composite_opt[0]!="min")</span></div>
-<div class="line"><a name="l00575"></a><span class="lineno">  575</span>   <span class="comment">//     std::cout << "Warning: composite option is not set to min!" << std::endl;</span></div>
-<div class="line"><a name="l00576"></a><span class="lineno">  576</span>   <span class="comment">//   filter2d::Filter2d morphFilter;</span></div>
-<div class="line"><a name="l00577"></a><span class="lineno">  577</span>   <span class="comment">//   // morphFilter.setNoValue(0);</span></div>
-<div class="line"><a name="l00578"></a><span class="lineno">  578</span>   <span class="comment">//   Vector2d<float> filterInput=outputData;</span></div>
-<div class="line"><a name="l00579"></a><span class="lineno">  579</span>   <span class="comment">//   try{</span></div>
-<div class="line"><a name="l00580"></a><span class="lineno">  580</span>   <span class="comment">//     morphFilter.morphology(outputData,filterInput,"erode",dimx_opt[0],dimy_opt[0],disc_opt[0],maxSlope_opt[0]);</span></div>
-<div class="line"><a name="l00581"></a><span class="lineno">  581</span>   <span class="comment">//     morphFilter.morphology(filterInput,outputData,"dilate",dimx_opt[0],dimy_opt[0],disc_opt[0],maxSlope_opt[0]);</span></div>
-<div class="line"><a name="l00582"></a><span class="lineno">  582</span>   <span class="comment">//   }</span></div>
-<div class="line"><a name="l00583"></a><span class="lineno">  583</span>   <span class="comment">//   catch(std::string errorString){</span></div>
-<div class="line"><a name="l00584"></a><span class="lineno">  584</span>   <span class="comment">//     cout << errorString << endl;</span></div>
-<div class="line"><a name="l00585"></a><span class="lineno">  585</span>   <span class="comment">//     exit(1);</span></div>
-<div class="line"><a name="l00586"></a><span class="lineno">  586</span>   <span class="comment">//   }</span></div>
-<div class="line"><a name="l00587"></a><span class="lineno">  587</span>   <span class="comment">// }</span></div>
-<div class="line"><a name="l00588"></a><span class="lineno">  588</span>   <span class="comment">// else if(postFilter_opt[0]=="close"){</span></div>
-<div class="line"><a name="l00589"></a><span class="lineno">  589</span>   <span class="comment">//   if(composite_opt[0]!="max")</span></div>
-<div class="line"><a name="l00590"></a><span class="lineno">  590</span>   <span class="comment">//     std::cout << "Warning: composite option is not set to max!" << std::endl;</span></div>
-<div class="line"><a name="l00591"></a><span class="lineno">  591</span>   <span class="comment">//   filter2d::Filter2d morphFilter;</span></div>
-<div class="line"><a name="l00592"></a><span class="lineno">  592</span>   <span class="comment">//   // morphFilter.setNoValue(0);</span></div>
-<div class="line"><a name="l00593"></a><span class="lineno">  593</span>   <span class="comment">//   Vector2d<float> filterInput=outputData;</span></div>
-<div class="line"><a name="l00594"></a><span class="lineno">  594</span>   <span class="comment">//   try{</span></div>
-<div class="line"><a name="l00595"></a><span class="lineno">  595</span>   <span class="comment">//     morphFilter.morphology(outputData,filterInput,"dilate",dimx_opt[0],dimy_opt[0],disc_opt[0],maxSlope_opt[0]);</span></div>
-<div class="line"><a name="l00596"></a><span class="lineno">  596</span>   <span class="comment">//     morphFilter.morphology(filterInput,outputData,"erode",dimx_opt[0],dimy_opt[0],disc_opt[0],maxSlope_opt[0]);</span></div>
-<div class="line"><a name="l00597"></a><span class="lineno">  597</span>   <span class="comment">//   }</span></div>
-<div class="line"><a name="l00598"></a><span class="lineno">  598</span>   <span class="comment">//   catch(std::string errorString){</span></div>
-<div class="line"><a name="l00599"></a><span class="lineno">  599</span>   <span class="comment">//     cout << errorString << endl;</span></div>
-<div class="line"><a name="l00600"></a><span class="lineno">  600</span>   <span class="comment">//     exit(1);</span></div>
-<div class="line"><a name="l00601"></a><span class="lineno">  601</span>   <span class="comment">//   }</span></div>
-<div class="line"><a name="l00602"></a><span class="lineno">  602</span>   <span class="comment">// }</span></div>
-<div class="line"><a name="l00603"></a><span class="lineno">  603</span>   <span class="keywordflow">if</span>(composite_opt[0]!=<span class="stringliteral">"profile"</span>){</div>
-<div class="line"><a name="l00604"></a><span class="lineno">  604</span>     <span class="comment">//write output file</span></div>
-<div class="line"><a name="l00605"></a><span class="lineno">  605</span>     std::cout << <span class="stringliteral">"writing output raster file"</span> << std::endl;</div>
-<div class="line"><a name="l00606"></a><span class="lineno">  606</span>     progress=0;</div>
-<div class="line"><a name="l00607"></a><span class="lineno">  607</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00608"></a><span class="lineno">  608</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<nrow;++irow){</div>
-<div class="line"><a name="l00609"></a><span class="lineno">  609</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00610"></a><span class="lineno">  610</span>         assert(outputData.size()==outputWriter.nrOfRow());</div>
-<div class="line"><a name="l00611"></a><span class="lineno">  611</span>         assert(outputData[0].size()==outputWriter.nrOfCol());</div>
-<div class="line"><a name="l00612"></a><span class="lineno">  612</span>         outputWriter.writeData(outputData[irow],GDT_Float64,irow,0);</div>
-<div class="line"><a name="l00613"></a><span class="lineno">  613</span>       }</div>
-<div class="line"><a name="l00614"></a><span class="lineno">  614</span>       <span class="keywordflow">catch</span>(std::string errorString){</div>
-<div class="line"><a name="l00615"></a><span class="lineno">  615</span>         cout << errorString << endl;</div>
-<div class="line"><a name="l00616"></a><span class="lineno">  616</span>         exit(1);</div>
-<div class="line"><a name="l00617"></a><span class="lineno">  617</span>       }</div>
-<div class="line"><a name="l00618"></a><span class="lineno">  618</span>       progress=<span class="keyword">static_cast<</span><span class="keywordtype">float</span><span class="keyword">></span>(irow)/outputWriter.nrOfRow();</div>
-<div class="line"><a name="l00619"></a><span class="lineno">  619</span>       pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00620"></a><span class="lineno">  620</span>     }</div>
-<div class="line"><a name="l00621"></a><span class="lineno">  621</span>   }</div>
-<div class="line"><a name="l00622"></a><span class="lineno">  622</span>   progress=1;</div>
-<div class="line"><a name="l00623"></a><span class="lineno">  623</span>   pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00624"></a><span class="lineno">  624</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00625"></a><span class="lineno">  625</span>     std::cout << <span class="stringliteral">"closing lasReader"</span> << std::endl;</div>
-<div class="line"><a name="l00626"></a><span class="lineno">  626</span>   outputWriter.close();</div>
-<div class="line"><a name="l00627"></a><span class="lineno">  627</span> }</div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-<div class="ttc" id="classImgWriterGdal_html"><div class="ttname"><a href="classImgWriterGdal.html">ImgWriterGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgWriterGdal_8h_source.html#l00033">ImgWriterGdal.h:33</a></div></div>
-<div class="ttc" id="classVector2d_html"><div class="ttname"><a href="classVector2d.html">Vector2d</a></div><div class="ttdef"><b>Definition:</b> <a href="Vector2d_8h_source.html#l00031">Vector2d.h:31</a></div></div>
-<div class="ttc" id="classstatfactory_1_1StatFactory_html"><div class="ttname"><a href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></div><div class="ttdef"><b>Definition:</b> <a href="StatFactory_8h_source.html#l00043">StatFactory.h:43</a></div></div>
-<div class="ttc" id="classFileReaderLas_html"><div class="ttname"><a href="classFileReaderLas.html">FileReaderLas</a></div><div class="ttdef"><b>Definition:</b> <a href="FileReaderLas_8h_source.html#l00039">FileReaderLas.h:39</a></div></div>
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pklas2img_8py_source.html b/doc/html/pklas2img_8py_source.html
deleted file mode 100644
index f209fa7..0000000
--- a/doc/html/pklas2img_8py_source.html
+++ /dev/null
@@ -1,222 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/pklas2img.py Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pklas2img.py</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment"># -*- coding: utf-8 -*-</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> </div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="stringliteral">    pklas2img.py</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="stringliteral">    ---------------------</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="stringliteral">    Date                 : April 2015</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="stringliteral">    Copyright            : (C) 2015 by Pieter Kempeneers</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="stringliteral">    Email                : kempenep at gmail dot com</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="stringliteral">*   This program is free software; you can redistribute it and/or modify  *</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="stringliteral">*   it under the terms of the GNU General Public License as published by  *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="stringliteral">*   the Free Software Foundation; either version 2 of the License, or     *</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="stringliteral">*   (at your option) any later version.                                   *</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> __author__ = <span class="stringliteral">'Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> __date__ = <span class="stringliteral">'April 2015'</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> __copyright__ = <span class="stringliteral">'(C) 2015, Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"># This will get replaced with a git SHA1 when you do a git archive</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> __revision__ = <span class="stringliteral">'$Format:%H$'</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">import</span> os</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">from</span> pktoolsUtils <span class="keyword">import</span> pktoolsUtils</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">from</span> pktoolsAlgorithm <span class="keyword">import</span> pktoolsAlgorithm</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterMultipleInput</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterRaster</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterFile</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">from</span> processing.core.outputs <span class="keyword">import</span> OutputRaster</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterSelection</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterNumber</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterString</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterBoolean</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterExtent</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
-<div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="classqgis_1_1pklas2img_1_1pklas2img.html">   39</a></span> <span class="keyword">class </span><a class="code" href="classqgis_1_1pklas2img_1_1pklas2img.html">pklas2img</a>(pktoolsAlgorithm):</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> </div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     INPUT = <span class="stringliteral">"INPUT"</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     OUTPUT = <span class="stringliteral">"OUTPUT"</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     ATTRIBUTE_OPTIONS = [<span class="stringliteral">"z"</span>,<span class="stringliteral">"intensity"</span>, <span class="stringliteral">"return"</span>, <span class="stringliteral">"nreturn"</span>]</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     COMPOSITE_OPTIONS = [<span class="stringliteral">"last"</span>, <span class="stringliteral">"min"</span>, <span class="stringliteral">"max"</span>, <span class="stringliteral">"median"</span>, <span class="stringliteral">"mean"</span>, <span class="stringliteral">"sum"</span>, <span class="stringliteral">"first"</span>, <span class="strin [...]
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     FILTER_OPTIONS = [<span class="stringliteral">"all"</span>,<span class="stringliteral">"first"</span>,<span class="stringliteral">"last"</span>,<span class="stringliteral">"single"</span>,<span class="stringliteral">"multiple"</span>]</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span> </div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     ATTRIBUTE = <span class="stringliteral">"ATTRIBUTE"</span></div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     COMPOSITE = <span class="stringliteral">"COMPOSITE"</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     FILTER = <span class="stringliteral">"FILTER"</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span> </div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     PERCENTILE = <span class="stringliteral">"PERCENTILE"</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     DX = <span class="stringliteral">"DX"</span></div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     DY = <span class="stringliteral">"DY"</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span> <span class="comment">#    PROJWIN = 'PROJWIN'</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     NODATA = <span class="stringliteral">"NODATA"</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     RTYPE = <span class="stringliteral">'RTYPE'</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     TYPE = [<span class="stringliteral">'Float32'</span>,<span class="stringliteral">'Byte'</span>,<span class="stringliteral">'Int16'</span>,<span class="stringliteral">'UInt16'</span>,<span class="stringliteral">'UInt32'</span>,<span class="stringliteral">'Int32'</span>,<span class="stringliteral">'Float64'</span>,<span class="stringliteral">'CInt16& [...]
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     EXTRA = <span class="stringliteral">'EXTRA'</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span> </div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     <span class="keyword">def </span>cliName(self):</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>         <span class="keywordflow">return</span> <span class="stringliteral">"pklas2img"</span></div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span> </div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     <span class="keyword">def </span>defineCharacteristics(self):</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>         self.<a class="code" href="classqgis_1_1pklas2img_1_1pklas2img.html#aa41f6aa59efd28521fd49a8f2740917d">name</a> = <span class="stringliteral">"Create raster dataset from LAS(Z) data point cloud(s)"</span></div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>         self.<a class="code" href="classqgis_1_1pklas2img_1_1pklas2img.html#a5504eac2d342bdae408e9ce3d51a6a6a">group</a> = <span class="stringliteral">"[pktools] LiDAR"</span></div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span> </div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>         self.addParameter(ParameterFile(self.<a class="code" href="classqgis_1_1pklas2img_1_1pklas2img.html#a7b57ce9958d387ac60e2564b468c9121">INPUT</a>, <span class="stringliteral">"Input LAS(Z) data set(s)"</span>, <span class="keyword">False</span>, <span class="keyword">False</span>))</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span> </div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pklas2img_1_1pklas2img.html#a130c1acc3e9b615079634fd9685b8dec">ATTRIBUTE</a>,<span class="stringliteral">"name of the point attribute to select"</span>,self.<a class="code" href="classqgis_1_1pklas2img_1_1pklas2img.html#a0409e973a7b8cdf6057c607a998354a5">ATTRIBUTE_OPTIONS</a>, 0))</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pklas2img_1_1pklas2img.html#ae0c885711f536f96a5c63d535f1bb878">COMPOSITE</a>,<span class="stringliteral">"composite for multiple points in cell"</span>,self.<a class="code" href="classqgis_1_1pklas2img_1_1pklas2img.html#ad00b69bd446875f229cadeb69ac6a8f7">COMPOSITE_OPTIONS</a>, 0))</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pklas2img_1_1pklas2img.html#a63d7f043f1912491e2e34857ac4b498a">FILTER</a>,<span class="stringliteral">"filter las points"</span>,self.<a class="code" href="classqgis_1_1pklas2img_1_1pklas2img.html#ac7ef9219de8e84423760309190deb56e">FILTER_OPTIONS</a>, 0))</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>         self.addOutput(OutputRaster(self.<a class="code" href="classqgis_1_1pklas2img_1_1pklas2img.html#a6b94eb994fa787dc2a90c4df618b7192">OUTPUT</a>, <span class="stringliteral">"Output raster data set"</span>))</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pklas2img_1_1pklas2img.html#a60a126c8d52d3911d75f9e67231e3730">RTYPE</a>, <span class="stringliteral">'Output raster type'</span>, self.<a class="code" href="classqgis_1_1pklas2img_1_1pklas2img.html#ab2c9b209aebe166c5202551470dcf7f0">TYPE</a>, 0))</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>         self.addParameter(ParameterNumber(self.<a class="code" href="classqgis_1_1pklas2img_1_1pklas2img.html#a320a11359d403b61b67cdf113770723e">PERCENTILE</a>, <span class="stringliteral">"Percentile value used for rule percentile"</span>,0.0,100.0,95))</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>         self.addParameter(ParameterNumber(self.<a class="code" href="classqgis_1_1pklas2img_1_1pklas2img.html#a6aa0d7c47f3a6c8b9eb4375049e69824">DX</a>, <span class="stringliteral">"Output resolution in x"</span>,0.0,<span class="keywordtype">None</span>,1.0))</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>         self.addParameter(ParameterNumber(self.<a class="code" href="classqgis_1_1pklas2img_1_1pklas2img.html#a165ee10778d2f0bdbe5abfae21f36d8f">DY</a>, <span class="stringliteral">"Output resolution in y"</span>,0.0,<span class="keywordtype">None</span>,1.0))</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>         <span class="comment"># self.addParameter(ParameterExtent(self.PROJWIN,</span></div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>         <span class="comment">#                   'Georeferenced boundingbox'))</span></div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>         self.addParameter(ParameterNumber(self.<a class="code" href="classqgis_1_1pklas2img_1_1pklas2img.html#a9cbf569ff7b068dade13fb6dc0ede553">NODATA</a>, <span class="stringliteral">"nodata value to put in image"</span>,0,<span class="keywordtype">None</span>,0))</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pklas2img_1_1pklas2img.html#a8cf9933f7aca1f1ace4957cbde0f958e">EXTRA</a>,</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>                           <span class="stringliteral">'Additional parameters'</span>, <span class="stringliteral">'-of GTiff'</span>, optional=<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span> </div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     <span class="keyword">def </span>processAlgorithm(self, progress):</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>         cliPath = <span class="stringliteral">'"'</span> + os.path.join(pktoolsUtils.pktoolsPath(), self.<a class="code" href="classqgis_1_1pklas2img_1_1pklas2img.html#a32b88cd9bfc7602df94418d953cc44a7">cliName</a>()) + <span class="stringliteral">'"'</span></div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>         commands = [cliPath]</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span> </div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>         input=self.getParameterValue(self.<a class="code" href="classqgis_1_1pklas2img_1_1pklas2img.html#a7b57ce9958d387ac60e2564b468c9121">INPUT</a>)</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>         inputFiles = input.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>         <span class="keywordflow">for</span> inputFile <span class="keywordflow">in</span> inputFiles:</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>             commands.append(<span class="stringliteral">'-i'</span>)</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>             commands.append(<span class="stringliteral">'"'</span> + inputFile + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span> </div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>         <span class="keywordflow">if</span> self.<a class="code" href="classqgis_1_1pklas2img_1_1pklas2img.html#ab2c9b209aebe166c5202551470dcf7f0">TYPE</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pklas2img_1_1pklas2img.html#a60a126c8d52d3911d75f9e67231e3730">RTYPE</a>)] != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>             commands.append(<span class="stringliteral">'-ot'</span>)</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>             commands.append(self.<a class="code" href="classqgis_1_1pklas2img_1_1pklas2img.html#ab2c9b209aebe166c5202551470dcf7f0">TYPE</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pklas2img_1_1pklas2img.html#a60a126c8d52d3911d75f9e67231e3730">RTYPE</a>)])</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span> </div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>         output=self.getOutputValue(self.<a class="code" href="classqgis_1_1pklas2img_1_1pklas2img.html#a6b94eb994fa787dc2a90c4df618b7192">OUTPUT</a>)</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>         <span class="keywordflow">if</span> output != <span class="stringliteral">""</span>:</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>             commands.append(<span class="stringliteral">"-o"</span>)</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>             commands.append(<span class="stringliteral">'"'</span> + output + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span> </div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>         commands.append(<span class="stringliteral">"-n"</span>)</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>         commands.append(self.<a class="code" href="classqgis_1_1pklas2img_1_1pklas2img.html#a0409e973a7b8cdf6057c607a998354a5">ATTRIBUTE_OPTIONS</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pklas2img_1_1pklas2img.html#a130c1acc3e9b615079634fd9685b8dec">ATTRIBUTE</a>)])</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>         commands.append(<span class="stringliteral">"-comp"</span>)</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>         commands.append(self.<a class="code" href="classqgis_1_1pklas2img_1_1pklas2img.html#ad00b69bd446875f229cadeb69ac6a8f7">COMPOSITE_OPTIONS</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pklas2img_1_1pklas2img.html#ae0c885711f536f96a5c63d535f1bb878">COMPOSITE</a>)])</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>         commands.append(<span class="stringliteral">"-fir"</span>)</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>         commands.append(self.<a class="code" href="classqgis_1_1pklas2img_1_1pklas2img.html#ac7ef9219de8e84423760309190deb56e">FILTER_OPTIONS</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pklas2img_1_1pklas2img.html#a63d7f043f1912491e2e34857ac4b498a">FILTER</a>)])</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>         <span class="keywordflow">if</span> self.getParameterValue(self.<a class="code" href="classqgis_1_1pklas2img_1_1pklas2img.html#a6aa0d7c47f3a6c8b9eb4375049e69824">DX</a>) != 0:</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>             commands.append(<span class="stringliteral">"-dx"</span>)</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>             commands.append(str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pklas2img_1_1pklas2img.html#a6aa0d7c47f3a6c8b9eb4375049e69824">DX</a>)))</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>         <span class="keywordflow">if</span> self.getParameterValue(self.<a class="code" href="classqgis_1_1pklas2img_1_1pklas2img.html#a165ee10778d2f0bdbe5abfae21f36d8f">DY</a>) != 0:</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>             commands.append(<span class="stringliteral">"-dy"</span>)</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>             commands.append(str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pklas2img_1_1pklas2img.html#a165ee10778d2f0bdbe5abfae21f36d8f">DY</a>)))</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>         <span class="comment">#projwin = str(self.getParameterValue(self.PROJWIN))</span></div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>         <span class="comment"># regionCoords = projwin.split(',')</span></div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>         <span class="comment"># commands.append('-ulx')</span></div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>         <span class="comment"># commands.append(regionCoords[0])</span></div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>         <span class="comment"># commands.append('-uly')</span></div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>         <span class="comment"># commands.append(regionCoords[3])</span></div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>         <span class="comment"># commands.append('-lrx')</span></div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>         <span class="comment"># commands.append(regionCoords[1])</span></div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>         <span class="comment"># commands.append('-lry')</span></div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>         <span class="comment"># commands.append(regionCoords[2])</span></div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>         commands.append(<span class="stringliteral">'-nodata'</span>)</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>         commands.append(str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pklas2img_1_1pklas2img.html#a9cbf569ff7b068dade13fb6dc0ede553">NODATA</a>)))</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span> </div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>         extra = str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pklas2img_1_1pklas2img.html#a8cf9933f7aca1f1ace4957cbde0f958e">EXTRA</a>))</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>         <span class="keywordflow">if</span> len(extra) > 0:</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>             commands.append(extra)</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span> </div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>         pktoolsUtils.runpktools(commands, progress)</div>
-<div class="ttc" id="classqgis_1_1pklas2img_1_1pklas2img_html_a6aa0d7c47f3a6c8b9eb4375049e69824"><div class="ttname"><a href="classqgis_1_1pklas2img_1_1pklas2img.html#a6aa0d7c47f3a6c8b9eb4375049e69824">qgis.pklas2img.pklas2img.DX</a></div><div class="ttdeci">string DX</div><div class="ttdef"><b>Definition:</b> <a href="pklas2img_8py_source.html#l00052">pklas2img.py:52</a></div></div>
-<div class="ttc" id="classqgis_1_1pklas2img_1_1pklas2img_html_a63d7f043f1912491e2e34857ac4b498a"><div class="ttname"><a href="classqgis_1_1pklas2img_1_1pklas2img.html#a63d7f043f1912491e2e34857ac4b498a">qgis.pklas2img.pklas2img.FILTER</a></div><div class="ttdeci">string FILTER</div><div class="ttdef"><b>Definition:</b> <a href="pklas2img_8py_source.html#l00049">pklas2img.py:49</a></div></div>
-<div class="ttc" id="classqgis_1_1pklas2img_1_1pklas2img_html_a60a126c8d52d3911d75f9e67231e3730"><div class="ttname"><a href="classqgis_1_1pklas2img_1_1pklas2img.html#a60a126c8d52d3911d75f9e67231e3730">qgis.pklas2img.pklas2img.RTYPE</a></div><div class="ttdeci">string RTYPE</div><div class="ttdef"><b>Definition:</b> <a href="pklas2img_8py_source.html#l00056">pklas2img.py:56</a></div></div>
-<div class="ttc" id="classqgis_1_1pklas2img_1_1pklas2img_html_a7b57ce9958d387ac60e2564b468c9121"><div class="ttname"><a href="classqgis_1_1pklas2img_1_1pklas2img.html#a7b57ce9958d387ac60e2564b468c9121">qgis.pklas2img.pklas2img.INPUT</a></div><div class="ttdeci">string INPUT</div><div class="ttdef"><b>Definition:</b> <a href="pklas2img_8py_source.html#l00041">pklas2img.py:41</a></div></div>
-<div class="ttc" id="classqgis_1_1pklas2img_1_1pklas2img_html_ad00b69bd446875f229cadeb69ac6a8f7"><div class="ttname"><a href="classqgis_1_1pklas2img_1_1pklas2img.html#ad00b69bd446875f229cadeb69ac6a8f7">qgis.pklas2img.pklas2img.COMPOSITE_OPTIONS</a></div><div class="ttdeci">list COMPOSITE_OPTIONS</div><div class="ttdef"><b>Definition:</b> <a href="pklas2img_8py_source.html#l00044">pklas2img.py:44</a></div></div>
-<div class="ttc" id="classqgis_1_1pklas2img_1_1pklas2img_html"><div class="ttname"><a href="classqgis_1_1pklas2img_1_1pklas2img.html">qgis.pklas2img.pklas2img</a></div><div class="ttdef"><b>Definition:</b> <a href="pklas2img_8py_source.html#l00039">pklas2img.py:39</a></div></div>
-<div class="ttc" id="classqgis_1_1pklas2img_1_1pklas2img_html_a320a11359d403b61b67cdf113770723e"><div class="ttname"><a href="classqgis_1_1pklas2img_1_1pklas2img.html#a320a11359d403b61b67cdf113770723e">qgis.pklas2img.pklas2img.PERCENTILE</a></div><div class="ttdeci">string PERCENTILE</div><div class="ttdef"><b>Definition:</b> <a href="pklas2img_8py_source.html#l00051">pklas2img.py:51</a></div></div>
-<div class="ttc" id="classqgis_1_1pklas2img_1_1pklas2img_html_a5504eac2d342bdae408e9ce3d51a6a6a"><div class="ttname"><a href="classqgis_1_1pklas2img_1_1pklas2img.html#a5504eac2d342bdae408e9ce3d51a6a6a">qgis.pklas2img.pklas2img.group</a></div><div class="ttdeci">group</div><div class="ttdef"><b>Definition:</b> <a href="pklas2img_8py_source.html#l00065">pklas2img.py:65</a></div></div>
-<div class="ttc" id="classqgis_1_1pklas2img_1_1pklas2img_html_aa41f6aa59efd28521fd49a8f2740917d"><div class="ttname"><a href="classqgis_1_1pklas2img_1_1pklas2img.html#aa41f6aa59efd28521fd49a8f2740917d">qgis.pklas2img.pklas2img.name</a></div><div class="ttdeci">name</div><div class="ttdef"><b>Definition:</b> <a href="pklas2img_8py_source.html#l00064">pklas2img.py:64</a></div></div>
-<div class="ttc" id="classqgis_1_1pklas2img_1_1pklas2img_html_a32b88cd9bfc7602df94418d953cc44a7"><div class="ttname"><a href="classqgis_1_1pklas2img_1_1pklas2img.html#a32b88cd9bfc7602df94418d953cc44a7">qgis.pklas2img.pklas2img.cliName</a></div><div class="ttdeci">def cliName</div><div class="ttdef"><b>Definition:</b> <a href="pklas2img_8py_source.html#l00060">pklas2img.py:60</a></div></div>
-<div class="ttc" id="classqgis_1_1pklas2img_1_1pklas2img_html_a165ee10778d2f0bdbe5abfae21f36d8f"><div class="ttname"><a href="classqgis_1_1pklas2img_1_1pklas2img.html#a165ee10778d2f0bdbe5abfae21f36d8f">qgis.pklas2img.pklas2img.DY</a></div><div class="ttdeci">string DY</div><div class="ttdef"><b>Definition:</b> <a href="pklas2img_8py_source.html#l00053">pklas2img.py:53</a></div></div>
-<div class="ttc" id="classqgis_1_1pklas2img_1_1pklas2img_html_a130c1acc3e9b615079634fd9685b8dec"><div class="ttname"><a href="classqgis_1_1pklas2img_1_1pklas2img.html#a130c1acc3e9b615079634fd9685b8dec">qgis.pklas2img.pklas2img.ATTRIBUTE</a></div><div class="ttdeci">string ATTRIBUTE</div><div class="ttdef"><b>Definition:</b> <a href="pklas2img_8py_source.html#l00047">pklas2img.py:47</a></div></div>
-<div class="ttc" id="classqgis_1_1pklas2img_1_1pklas2img_html_a8cf9933f7aca1f1ace4957cbde0f958e"><div class="ttname"><a href="classqgis_1_1pklas2img_1_1pklas2img.html#a8cf9933f7aca1f1ace4957cbde0f958e">qgis.pklas2img.pklas2img.EXTRA</a></div><div class="ttdeci">string EXTRA</div><div class="ttdef"><b>Definition:</b> <a href="pklas2img_8py_source.html#l00058">pklas2img.py:58</a></div></div>
-<div class="ttc" id="classqgis_1_1pklas2img_1_1pklas2img_html_a0409e973a7b8cdf6057c607a998354a5"><div class="ttname"><a href="classqgis_1_1pklas2img_1_1pklas2img.html#a0409e973a7b8cdf6057c607a998354a5">qgis.pklas2img.pklas2img.ATTRIBUTE_OPTIONS</a></div><div class="ttdeci">list ATTRIBUTE_OPTIONS</div><div class="ttdef"><b>Definition:</b> <a href="pklas2img_8py_source.html#l00043">pklas2img.py:43</a></div></div>
-<div class="ttc" id="classqgis_1_1pklas2img_1_1pklas2img_html_ae0c885711f536f96a5c63d535f1bb878"><div class="ttname"><a href="classqgis_1_1pklas2img_1_1pklas2img.html#ae0c885711f536f96a5c63d535f1bb878">qgis.pklas2img.pklas2img.COMPOSITE</a></div><div class="ttdeci">string COMPOSITE</div><div class="ttdef"><b>Definition:</b> <a href="pklas2img_8py_source.html#l00048">pklas2img.py:48</a></div></div>
-<div class="ttc" id="classqgis_1_1pklas2img_1_1pklas2img_html_ab2c9b209aebe166c5202551470dcf7f0"><div class="ttname"><a href="classqgis_1_1pklas2img_1_1pklas2img.html#ab2c9b209aebe166c5202551470dcf7f0">qgis.pklas2img.pklas2img.TYPE</a></div><div class="ttdeci">list TYPE</div><div class="ttdef"><b>Definition:</b> <a href="pklas2img_8py_source.html#l00057">pklas2img.py:57</a></div></div>
-<div class="ttc" id="classqgis_1_1pklas2img_1_1pklas2img_html_a6b94eb994fa787dc2a90c4df618b7192"><div class="ttname"><a href="classqgis_1_1pklas2img_1_1pklas2img.html#a6b94eb994fa787dc2a90c4df618b7192">qgis.pklas2img.pklas2img.OUTPUT</a></div><div class="ttdeci">string OUTPUT</div><div class="ttdef"><b>Definition:</b> <a href="pklas2img_8py_source.html#l00042">pklas2img.py:42</a></div></div>
-<div class="ttc" id="classqgis_1_1pklas2img_1_1pklas2img_html_ac7ef9219de8e84423760309190deb56e"><div class="ttname"><a href="classqgis_1_1pklas2img_1_1pklas2img.html#ac7ef9219de8e84423760309190deb56e">qgis.pklas2img.pklas2img.FILTER_OPTIONS</a></div><div class="ttdeci">list FILTER_OPTIONS</div><div class="ttdef"><b>Definition:</b> <a href="pklas2img_8py_source.html#l00045">pklas2img.py:45</a></div></div>
-<div class="ttc" id="classqgis_1_1pklas2img_1_1pklas2img_html_a9cbf569ff7b068dade13fb6dc0ede553"><div class="ttname"><a href="classqgis_1_1pklas2img_1_1pklas2img.html#a9cbf569ff7b068dade13fb6dc0ede553">qgis.pklas2img.pklas2img.NODATA</a></div><div class="ttdeci">string NODATA</div><div class="ttdef"><b>Definition:</b> <a href="pklas2img_8py_source.html#l00055">pklas2img.py:55</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkndvi_8cc_source.html b/doc/html/pkndvi_8cc_source.html
deleted file mode 100644
index 8647320..0000000
--- a/doc/html/pkndvi_8cc_source.html
+++ /dev/null
@@ -1,404 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/not_used/pkndvi.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li><li class="navelem"><a class="el" href="dir_e28b2035b152bb51229fe7a0fca4e376.html">not_used</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkndvi.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pkndvi.cc: program to calculate vegetation index image</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment"> ***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <assert.h></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <vector></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "imageclasses/ImgReaderGdal.h"</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "imageclasses/ImgWriterGdal.h"</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> </div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> {</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>   <span class="comment">//command line options</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> input_opt(<span class="stringliteral">"i"</span>,<span class="stringliteral">"input"</span>,<span class="stringliteral">"input image file"</span>);</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> output_opt(<span class="stringliteral">"o"</span>,<span class="stringliteral">"output"</span>,<span class="stringliteral">"output image file containing ndvi"</span>);</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> band_opt(<span class="stringliteral">"b"</span>, <span class="stringliteral">"band"</span>, <span class="stringliteral">"Bands to be used for vegetation index (see rule option)"</span>, 0);</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> rule_opt(<span class="stringliteral">"r"</span>, <span class="stringliteral">"rule"</span>, <span class="stringliteral">"Rule for index. ndvi (b1-b0)/(b1+b0), ndvi2 (b1-b0)/(b2+b3), gvmi (b0+0.1)-(b1+0.02))/((b0+0.1)+(b1+0.02))), vari (b1-b2)/(b1+b2-b0), osavi, mcari, tcari, diff (b1-b0), scale, ratio."</span>,  [...]
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> invalid_opt(<span class="stringliteral">"t"</span>, <span class="stringliteral">"invalid"</span>, <span class="stringliteral">"Mask value where image is invalid."</span>, 0);</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> nodata_opt(<span class="stringliteral">"nodata"</span>, <span class="stringliteral">"nodata"</span>, <span class="stringliteral">"Flag value to put in image if not valid (0)"</span>, 0);</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> colorTable_opt(<span class="stringliteral">"ct"</span>, <span class="stringliteral">"ct"</span>, <span class="stringliteral">"color table (file with 5 columns: id R G B ALFA (0: transparent, 255: solid)"</span>);</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> description_opt(<span class="stringliteral">"d"</span>, <span class="stringliteral">"description"</span>, <span class="stringliteral">"Set image description"</span>);</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> min_opt(<span class="stringliteral">"min"</span>, <span class="stringliteral">"min"</span>, <span class="stringliteral">"minimum value for ndvi after scaling (set all values smaller than min to min)"</span>, 0);</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> max_opt(<span class="stringliteral">"max"</span>, <span class="stringliteral">"max"</span>, <span class="stringliteral">"maximum value for ndvi after scaling (limit all values to max)"</span>);</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> eps_opt(<span class="stringliteral">"e"</span>, <span class="stringliteral">"eps"</span>, <span class="stringliteral">"epsilon, contraint division by zero"</span>, 0);</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> src_scale_opt(<span class="stringliteral">"src_s"</span>, <span class="stringliteral">"src_scale"</span>, <span class="stringliteral">"scale used for input, scale[1] is used for output: DN=scale[1]*ndvi+offset[1]"</span>, 1);</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> dst_scale_opt(<span class="stringliteral">"dst_s"</span>, <span class="stringliteral">"src_scale"</span>, <span class="stringliteral">"scale used for output: DN=dst_s*ndvi+dst_offset"</span>, 1);</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> src_offset_opt(<span class="stringliteral">"src_o"</span>, <span class="stringliteral">"src_offset"</span>, <span class="stringliteral">"offset used for input"</span>, 0);</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> dst_offset_opt(<span class="stringliteral">"dst_o"</span>, <span class="stringliteral">"dst_offset"</span>, <span class="stringliteral">"offset is used for output: DN=dst_s*ndvi+dst_offset"</span>, 0);</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> otype_opt(<span class="stringliteral">"ot"</span>, <span class="stringliteral">"otype"</span>, <span class="stringliteral">"Data type for output image ({Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/CInt16/CInt32/CFloat32/CFloat64}). Empty string: inherit type from input image"</span>, <span class="stringlitera [...]
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> oformat_opt(<span class="stringliteral">"of"</span>, <span class="stringliteral">"oformat"</span>, <span class="stringliteral">"Output image format (see also gdal_translate). Empty string: inherit from input image"</span>, <span class="stringliteral">"GTiff"</span>);</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> option_opt(<span class="stringliteral">"co"</span>, <span class="stringliteral">"co"</span>, <span class="stringliteral">"Creation option for output file. Multiple options can be specified."</span>);</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> verbose_opt(<span class="stringliteral">"v"</span>, <span class="stringliteral">"verbose"</span>, <span class="stringliteral">"verbose mode if > 0"</span>, 0);</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span> </div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>   <span class="keywordtype">bool</span> doProcess;<span class="comment">//stop process when program was invoked with help option (-h --help)</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     doProcess=input_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     output_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     band_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     rule_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     invalid_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     nodata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     colorTable_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     description_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     min_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     max_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     eps_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     src_scale_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     src_offset_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     dst_scale_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>     dst_offset_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     otype_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     oformat_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     option_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     verbose_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>   }</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> predefinedString){</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>     std::cout << predefinedString << std::endl;</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>     exit(0);</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>   }</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>   <span class="keywordflow">if</span>(!doProcess){</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>     std::cout << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << std::endl;</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>     exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>   }</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span> </div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>   <span class="keywordflow">if</span>(input_opt.empty()){</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     std::cerr << <span class="stringliteral">"No input file provided (use option -i). Use --help for help information"</span> << std::endl;</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     exit(0);</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>   }</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   <span class="keywordflow">if</span>(output_opt.empty()){</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>     std::cerr << <span class="stringliteral">"No output file provided (use option -o). Use --help for help information"</span> << std::endl;</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>     exit(0);</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>   }</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span> </div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>   <span class="keywordtype">int</span> reqBand=0;</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   <span class="keywordflow">if</span>(rule_opt[0]==<span class="stringliteral">"scale"</span>)</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>     reqBand=1;</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(rule_opt[0]==<span class="stringliteral">"vari"</span>||rule_opt[0]==<span class="stringliteral">"mcari"</span>||rule_opt[0]==<span class="stringliteral">"tcari"</span>)</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>     reqBand=3;</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(rule_opt[0]==<span class="stringliteral">"ndvi2"</span>)</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     reqBand=4;</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>   <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     reqBand=2;</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>   <span class="keywordflow">while</span>(band_opt.size()<reqBand)<span class="comment">//bands can be explicitly provided by user or</span></div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     band_opt.push_back(band_opt[0]);<span class="comment">//default is to use band 0 for each input</span></div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     std::cout << band_opt;</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span> </div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>   <span class="comment">//todo: a bit stupid to duplicate input reader, but it works</span></div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>   <span class="keywordflow">while</span>(input_opt.size()<reqBand)</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     input_opt.push_back(input_opt[0]);</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>     std::cout << input_opt;</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span> </div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>   vector<ImgReaderGdal> inputReader(reqBand);</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ifile=0;ifile<reqBand;++ifile){</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     inputReader[ifile].open(input_opt[ifile]);</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     assert(inputReader[ifile].nrOfBand()>band_opt[ifile]);</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>   }</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span> </div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>   <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     cout << <span class="stringliteral">"opening output image file "</span> << output_opt[0] << endl;</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>     cout << <span class="stringliteral">"data type: "</span> << otype_opt[0] << endl;</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>   }</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>   <span class="comment">//create output image with user defined data type </span></div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   GDALDataType theType=GDT_Unknown;</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     cout << <span class="stringliteral">"possible output data types: "</span>;</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iType = 0; iType < GDT_TypeCount; ++iType){</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>       cout << <span class="stringliteral">" "</span> << GDALGetDataTypeName((GDALDataType)iType);</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>     <span class="keywordflow">if</span>( GDALGetDataTypeName((GDALDataType)iType) != NULL</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>     && EQUAL(GDALGetDataTypeName((GDALDataType)iType),</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>          otype_opt[0].c_str()))</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>       theType=(GDALDataType) iType;</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>   }</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>   <span class="keywordflow">if</span>(theType==GDT_Unknown)</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>     theType=inputReader[0].getDataType();</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>     cout << endl << <span class="stringliteral">"Output pixel type:  "</span> << GDALGetDataTypeName(theType) << endl;</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span> </div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>   <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> outputWriter;</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>     cout << <span class="stringliteral">"opening output image file "</span> << output_opt[0] << endl;</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span> </div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>   <span class="keywordflow">if</span>(option_opt.findSubstring(<span class="stringliteral">"INTERLEAVE="</span>)==option_opt.end()){</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>     <span class="keywordtype">string</span> theInterleave=<span class="stringliteral">"INTERLEAVE="</span>;</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>     theInterleave+=inputReader[0].getInterleave();</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>     option_opt.push_back(theInterleave);</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>   }</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>   outputWriter.open(output_opt[0],inputReader[0].nrOfCol(),inputReader[0].nrOfRow(),1,theType,oformat_opt[0],option_opt);</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>   outputWriter.GDALSetNoDataValue(nodata_opt[0]);</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span> </div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>   <span class="keywordflow">if</span>(description_opt.size())</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>       outputWriter.setImageDescription(description_opt[0]);</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>   <span class="comment">//if input image is georeferenced, copy projection info to output image</span></div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span> </div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>   outputWriter.setProjection(inputReader[0].getProjection());</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>   <span class="keywordtype">double</span> ulx,uly,lrx,lry;</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>   inputReader[0].getBoundingBox(ulx,uly,lrx,lry);</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>   outputWriter.copyGeoTransform(inputReader[0]);</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span> </div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   <span class="keywordflow">if</span>(colorTable_opt.size()){</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>     <span class="keywordflow">if</span>(colorTable_opt[0]!=<span class="stringliteral">"none"</span>)</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>       outputWriter.setColorTable(colorTable_opt[0]);</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>   }</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (inputReader[0].getColorTable()!=NULL)<span class="comment">//copy colorTable from first input image</span></div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>     outputWriter.setColorTable(inputReader[0].getColorTable());</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>   </div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> lineInput(reqBand,inputReader[0].nrOfCol());</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>   vector<double> lineOutput(outputWriter.nrOfCol());</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span> </div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>   <span class="keywordtype">int</span> irow=0;</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>   <span class="keywordtype">int</span> icol=0;</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>   <span class="keywordtype">float</span> progress=0;</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>   pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>   <span class="keywordflow">for</span>(irow=0;irow<inputReader[0].nrOfRow();++irow){</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>     <span class="comment">//read line in lineInput buffer</span></div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>       <span class="keywordflow">if</span>(rule_opt[0]==<span class="stringliteral">"scale"</span>)</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>         inputReader[0].readData(lineInput[0],GDT_Float64,irow,band_opt[0]);</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(rule_opt[0]==<span class="stringliteral">"vari"</span>||rule_opt[0]==<span class="stringliteral">"tcari"</span>){</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>         inputReader[0].readData(lineInput[0],GDT_Float64,irow,band_opt[0]);</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>         inputReader[1].readData(lineInput[1],GDT_Float64,irow,band_opt[1]);</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>         inputReader[2].readData(lineInput[2],GDT_Float64,irow,band_opt[2]);</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>       }</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(rule_opt[0]==<span class="stringliteral">"ndvi2"</span>){</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>         inputReader[0].readData(lineInput[0],GDT_Float64,irow,band_opt[0]);</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>         inputReader[1].readData(lineInput[1],GDT_Float64,irow,band_opt[1]);</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>         inputReader[2].readData(lineInput[2],GDT_Float64,irow,band_opt[2]);</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>         inputReader[3].readData(lineInput[3],GDT_Float64,irow,band_opt[3]);</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>       }</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>         inputReader[0].readData(lineInput[0],GDT_Float64,irow,band_opt[0]);</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>         inputReader[1].readData(lineInput[1],GDT_Float64,irow,band_opt[1]);</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>       }</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>     }</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>     <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>       cerr << errorstring << endl;</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>       exit(1);</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>     }</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>     assert(invalid_opt.size()==nodata_opt.size());</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>     <span class="keywordflow">for</span>(icol=0;icol<inputReader[0].nrOfCol();++icol){</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>       <span class="keywordtype">double</span> ndvi=min_opt[0];</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>       <span class="keywordtype">double</span> flagValue=nodata_opt[0];</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>       <span class="keywordtype">bool</span> valid=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iflag=0;valid&&iflag<invalid_opt.size();++iflag){</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<lineInput.size();++iband){</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>           <span class="keywordflow">if</span>(lineInput[iband][icol]==invalid_opt[iflag]){</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>             flagValue=nodata_opt[iflag];</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>             valid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>           }</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>         }</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>       }</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>       <span class="keywordtype">double</span> denom;</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>       <span class="keywordtype">double</span> nom;</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>       <span class="keywordflow">if</span>(valid){</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>         <span class="keywordflow">if</span>(rule_opt[0]==<span class="stringliteral">"ndvi"</span>){</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>           <span class="comment">//Example of indices addressed by ndvi:</span></div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>           <span class="comment">//structural indices</span></div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>           <span class="comment">//NDVI (Rouse1974): b0=b_680, b1=b_800</span></div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>           <span class="comment">//Chlorophyll indices:</span></div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>           <span class="comment">//Normalized Phaeophytinization index (NPQI Barnes1992): b0=R_435, b1=R_415</span></div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>           <span class="comment">//Photochemical Reflectance index (PRI1 Gamon1992): b0=R_567, b1=R_528</span></div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>           <span class="comment">//Photochemical Reflectance index (PRI2 Gamon1992): b0=R_570, b1=R_531</span></div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>           <span class="comment">//Normalized Phaeophytinization index (NPQI Barnes1992): b0=R_435, b1=R_415</span></div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>           <span class="comment">//Normalized Pigment Chlorophyll index (NPCI Penuelas1994): b0=R_430, b1=R_680</span></div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>           <span class="comment">//Structure Intensive Pigment index (SIPI Penuelas 1995): b0=R_450, b1=R_800</span></div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>           <span class="comment">//Lichtenthaler index 1 (Lic1 Lichtenthaler1996): b0=R_680, b2=R_800</span></div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>           denom=(lineInput[1][icol]-src_offset_opt[0])/src_scale_opt[0]-(lineInput[0][icol]-src_offset_opt[0])/src_scale_opt[0];</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>           nom=(lineInput[1][icol]-src_offset_opt[0])/src_scale_opt[0]+(lineInput[0][icol]-src_offset_opt[0])/src_scale_opt[0];</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>         }</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(rule_opt[0]==<span class="stringliteral">"ndvi2"</span>){<span class="comment">//normalized difference with different wavelengths used in denom and nom</span></div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>           <span class="comment">//Example of indices addressed by ndvi2</span></div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>           <span class="comment">//Structure Intensive Pigment index (SIPI Penuelas 1995): b0=R_450, b1=R_800, b2=R_650, b=R_800</span></div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>           <span class="comment">//Vogelmann index 2 (Vog2 Vogelmann1993): b0=R_747, b1=R_735, b2=R_715, b3=R_726</span></div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>           <span class="comment">//Vogelmann index 3 (Vog3 Vogelmann1993): b0=R_747, b1=R_734, b2=R_715, b3=R_720</span></div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>           denom=(lineInput[1][icol]-src_offset_opt[0])/src_scale_opt[0]-(lineInput[0][icol]-src_offset_opt[0])/src_scale_opt[0];</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>           nom=(lineInput[2][icol]-src_offset_opt[0])/src_scale_opt[0]+(lineInput[3][icol]-src_offset_opt[0])/src_scale_opt[0];</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>         }</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(rule_opt[0]==<span class="stringliteral">"gvmi"</span>){</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>           denom=((lineInput[0][icol]-src_offset_opt[0])/src_scale_opt[0]+0.1)-((lineInput[1][icol]-src_offset_opt[0])/src_scale_opt[0]+0.02);</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>           nom=((lineInput[0][icol]-src_offset_opt[0])/src_scale_opt[0]+0.1)+((lineInput[1][icol]-src_offset_opt[0])/src_scale_opt[0]+0.02);</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>         }</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(rule_opt[0]==<span class="stringliteral">"vari"</span>){</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>           denom=(lineInput[1][icol]-src_offset_opt[0])/src_scale_opt[0]-(lineInput[2][icol]-src_offset_opt[0])/src_scale_opt[0];</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>           nom=(lineInput[1][icol]-src_offset_opt[0])/src_scale_opt[0]+(lineInput[2][icol]-src_offset_opt[0])/src_scale_opt[0]-(lineInput[0][icol]-src_offset_opt[0])/src_scale_opt[0];</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>         }</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(rule_opt[0]==<span class="stringliteral">"osavi"</span>){<span class="comment">//structural index (Rondeaux1996): //b0=R_670, b1=R_800</span></div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>           denom=(1.0+0.16)*(lineInput[1][icol]-src_offset_opt[0])/src_scale_opt[0]-(lineInput[0][icol]-src_offset_opt[0])/src_scale_opt[0];</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>           nom=(lineInput[1][icol]-src_offset_opt[0])/src_scale_opt[0]+(lineInput[0][icol]-src_offset_opt[0])/src_scale_opt[0]+0.16;</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>         }</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(rule_opt[0]==<span class="stringliteral">"mcari"</span>){<span class="comment">//chlorophyll index (Daughtry2000): b0=R_550, b1=R_670, b2=R_700</span></div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>           denom=((lineInput[2][icol]-src_offset_opt[0])/src_scale_opt[0]-(lineInput[1][icol]-src_offset_opt[0])/src_scale_opt[0]-0.2*((lineInput[2][icol]-src_offset_opt[0])/src_scale_opt[0]-(lineInput[0][icol]-src_offset_opt[0])/src_scale_opt[0]))*(lineInput[2][icol]-src_offset_opt[0])/src_scale_opt[0];</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>           nom=(lineInput[1][icol]-src_offset_opt[0])/src_scale_opt[0];</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>         }</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(rule_opt[0]==<span class="stringliteral">"tcari"</span>){<span class="comment">//chlorophyll index (Haboudane2002): b0=R_550, b1=R_670, B2=R_700</span></div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>           denom=3*((lineInput[1][icol]-src_offset_opt[0])/src_scale_opt[0]*(lineInput[2][icol]-src_offset_opt[0])/src_scale_opt[0]-(lineInput[1][icol]-src_offset_opt[0])/src_scale_opt[0]-0.2*((lineInput[2][icol]-src_offset_opt[0])/src_scale_opt[0]-(lineInput[0][icol]-src_offset_opt[0])/src_scale_opt[0])*(lineInput[2][icol]-src_offset_opt[0])/src_scale_opt[0]);</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>           nom=(lineInput[1][icol]-src_offset_opt[0])/src_scale_opt[0];</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>         }</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(rule_opt[0]==<span class="stringliteral">"diff"</span>){</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>           denom=(lineInput[1][icol]-src_offset_opt[0])/src_scale_opt[0]-(lineInput[0][icol]-src_offset_opt[0])/src_scale_opt[0];</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>           nom=1.0;</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>         }</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(rule_opt[0]==<span class="stringliteral">"scale"</span>){</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>           denom=(lineInput[0][icol]-src_offset_opt[0])/src_scale_opt[0];</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>           nom=1.0;</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>         }</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(rule_opt[0]==<span class="stringliteral">"ratio"</span>){</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>           <span class="comment">//Examples of indices addressed by ratio:</span></div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>           <span class="comment">//structural indices:</span></div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>           <span class="comment">//Simple Ratio Index (SR Jordan1969, Rouse1974): b0=R_NIR/R_RED</span></div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>           <span class="comment">//chlorophyll indices:</span></div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>           <span class="comment">//Greenness Index: b0=R_554, b1=R_677; </span></div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>           <span class="comment">//Zarco-Tejada&Miller (Zarco2001): b0=R_750,b1=R_710</span></div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>           <span class="comment">//Simple Red Pigment Index (SRPI Penuelas1995): b0=R_430, b1=R_680</span></div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>           <span class="comment">//Carter index 1 (Ctr1 Carter1994): b0=R_695, b1=R_420</span></div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>           <span class="comment">//Carter index 2 (Ctr2 Carter1994): b0=R_695, b1=R_760</span></div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>           <span class="comment">//Lichtenthaler index 2 (Lic2 Lichtenthaler1996): b0=R_440, b2=R_690</span></div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>           <span class="comment">//Vogelmann index 1 (Vog1 Vogelmann1993): b0=R_740, b1=R_720</span></div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>           <span class="comment">//Gitelson and Merzlyak 1 (GM1 Gitelson1997): b0=R_750 b1=R_550</span></div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>           <span class="comment">//Gitelson and Merzlyak (GM2 Gitelson1997) b0=R_750 b1=R_700</span></div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>           denom=(lineInput[0][icol]-src_offset_opt[0])/src_scale_opt[0];</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>           nom=(lineInput[1][icol]-src_offset_opt[0])/src_scale_opt[0];</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>         }</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>           std::cout << <span class="stringliteral">"Error: rule "</span> << rule_opt[0] << <span class="stringliteral">" not supported"</span> << std::endl;</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>           exit(1);</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>         }</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>         <span class="keywordflow">if</span>(nom>eps_opt[0]||nom<-eps_opt[0])</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>         ndvi=denom/nom;</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>         <span class="keywordflow">switch</span>(theType){</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>         <span class="keywordflow">case</span>(GDT_Byte):</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>         <span class="keywordflow">case</span>(GDT_Int16):</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>         <span class="keywordflow">case</span>(GDT_UInt16):</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>         <span class="keywordflow">case</span>(GDT_UInt32):</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>         <span class="keywordflow">case</span>(GDT_Int32):</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>           lineOutput[icol]=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(0.5+ndvi*dst_scale_opt[0]+dst_offset_opt[0]);</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>         <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>           lineOutput[icol]=ndvi*dst_scale_opt[0]+dst_offset_opt[0];</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>         }</div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>         <span class="keywordflow">if</span>(lineOutput[icol]<min_opt[0])</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>           lineOutput[icol]=min_opt[0];</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(max_opt.size()){</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>           <span class="keywordflow">if</span>(lineOutput[icol]>max_opt[0])</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>             lineOutput[icol]=max_opt[0];</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>         }</div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>       }</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>         lineOutput[icol]=flagValue;</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>     }</div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>     <span class="comment">//write buffer lineOutput to output file</span></div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>       outputWriter.writeData(lineOutput,GDT_Float64,irow);</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>     }</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>     <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>       cerr << errorstring << endl;</div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>       exit(1);</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>     }</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>     <span class="comment">//progress bar</span></div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>     progress=<span class="keyword">static_cast<</span><span class="keywordtype">float</span><span class="keyword">></span>(irow+1.0)/outputWriter.nrOfRow();</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>   }</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ifile=0;ifile<inputReader.size();++ifile)</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>     inputReader[ifile].close();</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>   outputWriter.close();</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span> }</div>
-<div class="ttc" id="classImgWriterGdal_html"><div class="ttname"><a href="classImgWriterGdal.html">ImgWriterGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgWriterGdal_8h_source.html#l00033">ImgWriterGdal.h:33</a></div></div>
-<div class="ttc" id="classVector2d_html"><div class="ttname"><a href="classVector2d.html">Vector2d< double ></a></div></div>
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkoptsvm.html b/doc/html/pkoptsvm.html
deleted file mode 100644
index e140d1c..0000000
--- a/doc/html/pkoptsvm.html
+++ /dev/null
@@ -1,147 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: pkoptsvm</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkoptsvm </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><p>program to optimize parameters for support vector machine classifier pksvm </p>
-<h2>SYNOPSIS</h2>
-<p><code> Usage: pkoptsvm -t training </code></p>
-<p><code></code></p>
-<p><code> Options: [-cc startvalue -cc endvalue] [-g startvalue -g endvalue] [-stepcc stepsize] [-stepg stepsize]</code></p>
-<p><code> Advanced options: </code></p>
-<h1><a class="anchor" id="pkoptsvm_description"></a>
-Description</h1>
-<p>The support vector machine depends on several parameters. Ideally, these parameters should be optimized for each classification problem. In case of a radial basis kernel function, two important parameters are <em></em>{cost} and <em></em>{gamma}. The utility pkoptsvm can optimize these two parameters, based on an accuracy assessment (the Kappa value). If an input test set (-i) is provided, it is used for the accuracy assessment. If not, the accuracy assessment is based on a cross vali [...]
-<p>The optimization routine uses a grid search. The initial and final values of the parameters can be set with -cc startvalue -cc endvalue and -g startvalue -g endvalue for cost and gamma respectively. The search uses a multiplicative step for iterating the parameters (set with the options -stepcc and -stepg). An often used approach is to define a relatively large multiplicative step first (e.g 10) to obtain an initial estimate for both parameters. The estimate can then be optimized by d [...]
-<h1><a class="anchor" id="pkoptsvm_options"></a>
-Options</h1>
-<ul>
-<li>use either <code>-short</code> or <code>--long</code> options (both <code>--long=value</code> and <code>--long value</code> are supported)</li>
-<li>short option <code>-h</code> shows basic options only, long option <code>--help</code> shows all options <table class="doxtable">
-<tr>
-<th>short</th><th>long</th><th>type</th><th>default</th><th>description  </th></tr>
-<tr>
-<td>t </td><td>training </td><td>std::string </td><td></td><td>training vector file. A single vector file contains all training features (must be set as: b0, b1, b2,...) for all classes (class numbers identified by label option). </td></tr>
-<tr>
-<td>cc </td><td>ccost </td><td>float </td><td>1 </td><td>min and max boundaries the parameter C of C-SVC, epsilon-SVR, and nu-SVR (optional: initial value) </td></tr>
-<tr>
-<td>g </td><td>gamma </td><td>float </td><td>0 </td><td>min max boundaries for gamma in kernel function (optional: initial value) </td></tr>
-<tr>
-<td>stepcc </td><td>stepcc </td><td>double </td><td>2 </td><td>multiplicative step for ccost in GRID search </td></tr>
-<tr>
-<td>stepg </td><td>stepg </td><td>double </td><td>2 </td><td>multiplicative step for gamma in GRID search </td></tr>
-<tr>
-<td>i </td><td>input </td><td>std::string </td><td></td><td>input test vector file </td></tr>
-<tr>
-<td>tln </td><td>tln </td><td>std::string </td><td></td><td>training layer name(s) </td></tr>
-<tr>
-<td>label </td><td>label </td><td>std::string </td><td>label </td><td>identifier for class label in training vector file. </td></tr>
-<tr>
-<td>bal </td><td>balance </td><td>unsigned int </td><td>0 </td><td>balance the input data to this number of samples for each class </td></tr>
-<tr>
-<td>random </td><td>random </td><td>bool </td><td>true </td><td>in case of balance, randomize input data </td></tr>
-<tr>
-<td>min </td><td>min </td><td>int </td><td>0 </td><td>if number of training pixels is less then min, do not take this class into account </td></tr>
-<tr>
-<td>b </td><td>band </td><td>unsigned short </td><td></td><td>band index (starting from 0, either use band option or use start to end) </td></tr>
-<tr>
-<td>sband </td><td>startband </td><td>unsigned short </td><td></td><td>Start band sequence number </td></tr>
-<tr>
-<td>eband </td><td>endband </td><td>unsigned short </td><td></td><td>End band sequence number </td></tr>
-<tr>
-<td>offset </td><td>offset </td><td>double </td><td>0 </td><td>offset value for each spectral band input features: refl[band]=(DN[band]-offset[band])/scale[band] </td></tr>
-<tr>
-<td>scale </td><td>scale </td><td>double </td><td>0 </td><td>scale value for each spectral band input features: refl=(DN[band]-offset[band])/scale<a href="use 0 if scale min and max in each band to -1.0 and 1.0">band</a> </td></tr>
-<tr>
-<td>svmt </td><td>svmtype </td><td>std::string </td><td>C_SVC </td><td>type of SVM (C_SVC, nu_SVC,one_class, epsilon_SVR, nu_SVR) </td></tr>
-<tr>
-<td>kt </td><td>kerneltype </td><td>std::string </td><td>radial </td><td>type of kernel function (linear,polynomial,radial,sigmoid) </td></tr>
-<tr>
-<td>kd </td><td>kd </td><td>unsigned short </td><td>3 </td><td>degree in kernel function </td></tr>
-<tr>
-<td>c0 </td><td>coef0 </td><td>float </td><td>0 </td><td>coef0 in kernel function </td></tr>
-<tr>
-<td>nu </td><td>nu </td><td>float </td><td>0.5 </td><td>the parameter nu of nu-SVC, one-class SVM, and nu-SVR </td></tr>
-<tr>
-<td>eloss </td><td>eloss </td><td>float </td><td>0.1 </td><td>the epsilon in loss function of epsilon-SVR </td></tr>
-<tr>
-<td>cache </td><td>cache </td><td>int </td><td>100 </td><td>cache memory size in MB </td></tr>
-<tr>
-<td>etol </td><td>etol </td><td>float </td><td>0.001 </td><td>the tolerance of termination criterion </td></tr>
-<tr>
-<td>shrink </td><td>shrink </td><td>bool </td><td>false </td><td>whether to use the shrinking heuristics </td></tr>
-<tr>
-<td>pe </td><td>probest </td><td>bool </td><td>true </td><td>whether to train a SVC or SVR model for probability estimates </td></tr>
-<tr>
-<td>cv </td><td>cv </td><td>unsigned short </td><td>2 </td><td>n-fold cross validation mode </td></tr>
-<tr>
-<td>cf </td><td>cf </td><td>bool </td><td>false </td><td>use Overall Accuracy instead of kappa </td></tr>
-<tr>
-<td>maxit </td><td>maxit </td><td>unsigned int </td><td>500 </td><td>maximum number of iterations </td></tr>
-<tr>
-<td>tol </td><td>tolerance </td><td>double </td><td>0.0001 </td><td>relative tolerance for stopping criterion </td></tr>
-<tr>
-<td>c </td><td>class </td><td>std::string </td><td></td><td>list of class names. </td></tr>
-<tr>
-<td>r </td><td>reclass </td><td>short </td><td></td><td>list of class values (use same order as in class opt). </td></tr>
-</table>
-Usage: pkoptsvm -t training </li>
-</ul>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkoptsvm_8cc_source.html b/doc/html/pkoptsvm_8cc_source.html
deleted file mode 100644
index add2e8b..0000000
--- a/doc/html/pkoptsvm_8cc_source.html
+++ /dev/null
@@ -1,701 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/pkoptsvm.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkoptsvm.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pkoptsvm.cc: program to optimize parameters for support vector machine classifier pksvm</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <iostream></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <sstream></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <fstream></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <vector></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <math.h></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include <nlopt.hpp></span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "algorithms/ConfusionMatrix.h"</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include "algorithms/FeatureSelector.h"</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include "algorithms/OptFactory.h"</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include "algorithms/CostFactorySVM.h"</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="preprocessor">#include "algorithms/svm.h"</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="preprocessor">#include "imageclasses/ImgReaderOgr.h"</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> </div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="preprocessor">#ifdef HAVE_CONFIG_H</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="preprocessor"></span><span class="preprocessor">#include <config.h></span></div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="comment">/******************************************************************************/</span></div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span> </div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span> <span class="preprocessor">#define Malloc(type,n) (type *)malloc((n)*sizeof(type))</span></div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span> <span class="preprocessor"></span>                                    <span class="comment">//declare objective function</span></div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span> <span class="keywordtype">double</span> objFunction(<span class="keyword">const</span> std::vector<double> &x, std::vector<double> &grad, <span class="keywordtype">void</span> *my_func_data);</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span> </div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span> <span class="comment">//global parameters used in objective function</span></div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span> map<string,short> classValueMap;</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span> vector<std::string> nameVector;</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span> vector<unsigned int> nctraining;</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span> vector<unsigned int> nctest;</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span> <a class="code" href="classOptionpk.html">Optionpk<std::string></a> svm_type_opt(<span class="stringliteral">"svmt"</span>, <span class="stringliteral">"svmtype"</span>, <span class="stringliteral">"type of SVM (C_SVC, nu_SVC,one_class, epsilon_SVR, nu_SVR)"</span>,<span class="stringliteral">"C_SVC"</span>);</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span> <a class="code" href="classOptionpk.html">Optionpk<std::string></a> kernel_type_opt(<span class="stringliteral">"kt"</span>, <span class="stringliteral">"kerneltype"</span>, <span class="stringliteral">"type of kernel function (linear,polynomial,radial,sigmoid) "</span>,<span class="stringliteral">"radial"</span>);</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span> <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> kernel_degree_opt(<span class="stringliteral">"kd"</span>, <span class="stringliteral">"kd"</span>, <span class="stringliteral">"degree in kernel function"</span>,3);</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span> <a class="code" href="classOptionpk.html">Optionpk<float></a> coef0_opt(<span class="stringliteral">"c0"</span>, <span class="stringliteral">"coef0"</span>, <span class="stringliteral">"coef0 in kernel function"</span>,0);</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span> <a class="code" href="classOptionpk.html">Optionpk<float></a> nu_opt(<span class="stringliteral">"nu"</span>, <span class="stringliteral">"nu"</span>, <span class="stringliteral">"the parameter nu of nu-SVC, one-class SVM, and nu-SVR"</span>,0.5);</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span> <a class="code" href="classOptionpk.html">Optionpk<float></a> epsilon_loss_opt(<span class="stringliteral">"eloss"</span>, <span class="stringliteral">"eloss"</span>, <span class="stringliteral">"the epsilon in loss function of epsilon-SVR"</span>,0.1);</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span> <a class="code" href="classOptionpk.html">Optionpk<int></a> cache_opt(<span class="stringliteral">"cache"</span>, <span class="stringliteral">"cache"</span>, <span class="stringliteral">"cache memory size in MB"</span>,100);</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span> <a class="code" href="classOptionpk.html">Optionpk<float></a> epsilon_tol_opt(<span class="stringliteral">"etol"</span>, <span class="stringliteral">"etol"</span>, <span class="stringliteral">"the tolerance of termination criterion"</span>,0.001);</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span> <a class="code" href="classOptionpk.html">Optionpk<bool></a> shrinking_opt(<span class="stringliteral">"shrink"</span>, <span class="stringliteral">"shrink"</span>, <span class="stringliteral">"whether to use the shrinking heuristics"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span> <a class="code" href="classOptionpk.html">Optionpk<bool></a> prob_est_opt(<span class="stringliteral">"pe"</span>, <span class="stringliteral">"probest"</span>, <span class="stringliteral">"whether to train a SVC or SVR model for probability estimates"</span>,<span class="keyword">true</span>,2);</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span> <a class="code" href="classOptionpk.html">Optionpk<bool></a> costfunction_opt(<span class="stringliteral">"cf"</span>, <span class="stringliteral">"cf"</span>, <span class="stringliteral">"use Overall Accuracy instead of kappa"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span> <span class="comment">// Optionpk<bool> weight_opt("wi", "wi", "set the parameter C of class i to weight*C, for C-SVC",true);</span></div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span> <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> cv_opt(<span class="stringliteral">"cv"</span>, <span class="stringliteral">"cv"</span>, <span class="stringliteral">"n-fold cross validation mode"</span>,2);</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span> <a class="code" href="classOptionpk.html">Optionpk<string></a> classname_opt(<span class="stringliteral">"c"</span>, <span class="stringliteral">"class"</span>, <span class="stringliteral">"list of class names."</span>); </div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span> <a class="code" href="classOptionpk.html">Optionpk<short></a> classvalue_opt(<span class="stringliteral">"r"</span>, <span class="stringliteral">"reclass"</span>, <span class="stringliteral">"list of class values (use same order as in class opt)."</span>); </div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span> <a class="code" href="classOptionpk.html">Optionpk<short></a> verbose_opt(<span class="stringliteral">"v"</span>, <span class="stringliteral">"verbose"</span>, <span class="stringliteral">"use 1 to output intermediate results for plotting"</span>,0,2);</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span> </div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span> <span class="keywordtype">double</span> objFunction(<span class="keyword">const</span> std::vector<double> &x, std::vector<double> &grad, <span class="keywordtype">void</span> *my_func_data){</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span> </div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>   assert(grad.empty());</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>   vector<Vector2d<float> > *tf=<span class="keyword">reinterpret_cast<</span>vector<Vector2d<float> <span class="keyword">></span>*> (my_func_data);</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>   <span class="keywordtype">float</span> ccost=x[0];</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>   <span class="keywordtype">float</span> gamma=x[1];</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>   <span class="keywordtype">double</span> error=1.0/epsilon_tol_opt[0];</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>   <span class="keywordtype">double</span> kappa=1.0;</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>   <span class="keywordtype">double</span> oa=1.0;</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span> </div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>   <a class="code" href="classCostFactorySVM.html">CostFactorySVM</a> costfactory(svm_type_opt[0], kernel_type_opt[0], kernel_degree_opt[0], gamma, coef0_opt[0], ccost, nu_opt[0],  epsilon_loss_opt[0], cache_opt[0], epsilon_tol_opt[0], shrinking_opt[0], prob_est_opt[0], cv_opt[0], verbose_opt[0]);</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span> </div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>   assert(tf->size());</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>   <span class="comment">// if(nctest>0)</span></div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>   <span class="comment">//   costfactory.setCv(0);</span></div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span> </div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>   costfactory.setCv(cv_opt[0]);</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span> </div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>   <span class="keywordflow">if</span>(classname_opt.size()){</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>     assert(classname_opt.size()==classvalue_opt.size());</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<classname_opt.size();++iclass)</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>       costfactory.setClassValueMap(classname_opt[iclass],classvalue_opt[iclass]);</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>   }</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>   <span class="comment">//set names in confusion matrix using nameVector</span></div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>   costfactory.setNameVector(nameVector);</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>   <span class="comment">// vector<string> nameVector=costfactory.getNameVector();</span></div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iname=0;iname<nameVector.size();++iname){</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>     <span class="keywordflow">if</span>(costfactory.getClassValueMap().empty()){</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>       costfactory.pushBackClassName(nameVector[iname]);</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>       <span class="comment">// cm.pushBackClassName(nameVector[iname]);</span></div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>     }</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(costfactory.getClassIndex(type2string<short>((costfactory.getClassValueMap())[nameVector[iname]]))<0)</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>       costfactory.pushBackClassName(type2string<short>((costfactory.getClassValueMap())[nameVector[iname]]));</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>   }</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span> </div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>   costfactory.setNcTraining(nctraining);</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>   costfactory.setNcTest(nctest);</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span> </div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>   kappa=costfactory.getCost(*tf);</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>   <span class="keywordflow">return</span>(kappa);</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span> }</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span> </div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span> {</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>   map<short,int> reclassMap;</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>   vector<int> vreclass;</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> training_opt(<span class="stringliteral">"t"</span>, <span class="stringliteral">"training"</span>, <span class="stringliteral">"training vector file. A single vector file contains all training features (must be set as: b0, b1, b2,...) for all classes (class numbers identified by label option)."</span>); </div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>   <a class="code" href="classOptionpk.html">Optionpk<float></a> ccost_opt(<span class="stringliteral">"cc"</span>, <span class="stringliteral">"ccost"</span>, <span class="stringliteral">"min and max boundaries the parameter C of C-SVC, epsilon-SVR, and nu-SVR (optional: initial value)"</span>,1);</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>   <a class="code" href="classOptionpk.html">Optionpk<float></a> gamma_opt(<span class="stringliteral">"g"</span>, <span class="stringliteral">"gamma"</span>, <span class="stringliteral">"min max boundaries for gamma in kernel function (optional: initial value)"</span>,0);</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> stepcc_opt(<span class="stringliteral">"stepcc"</span>,<span class="stringliteral">"stepcc"</span>,<span class="stringliteral">"multiplicative step for ccost in GRID search"</span>,2);</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> stepg_opt(<span class="stringliteral">"stepg"</span>,<span class="stringliteral">"stepg"</span>,<span class="stringliteral">"multiplicative step for gamma in GRID search"</span>,2);</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> input_opt(<span class="stringliteral">"i"</span>, <span class="stringliteral">"input"</span>, <span class="stringliteral">"input test vector file"</span>); </div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> tlayer_opt(<span class="stringliteral">"tln"</span>, <span class="stringliteral">"tln"</span>, <span class="stringliteral">"training layer name(s)"</span>);</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> label_opt(<span class="stringliteral">"label"</span>, <span class="stringliteral">"label"</span>, <span class="stringliteral">"identifier for class label in training vector file."</span>,<span class="stringliteral">"label"</span>); </div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>   <span class="comment">// Optionpk<unsigned short> reclass_opt("\0", "rc", "reclass code (e.g. --rc=12 --rc=23 to reclass first two classes to 12 and 23 resp.).", 0);</span></div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned int></a> balance_opt(<span class="stringliteral">"bal"</span>, <span class="stringliteral">"balance"</span>, <span class="stringliteral">"balance the input data to this number of samples for each class"</span>, 0);</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> random_opt(<span class="stringliteral">"random"</span>,<span class="stringliteral">"random"</span>, <span class="stringliteral">"in case of balance, randomize input data"</span>, <span class="keyword">true</span>);</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> minSize_opt(<span class="stringliteral">"min"</span>, <span class="stringliteral">"min"</span>, <span class="stringliteral">"if number of training pixels is less then min, do not take this class into account"</span>, 0);</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> band_opt(<span class="stringliteral">"b"</span>, <span class="stringliteral">"band"</span>, <span class="stringliteral">"band index (starting from 0, either use band option or use start to end)"</span>);</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> bstart_opt(<span class="stringliteral">"sband"</span>, <span class="stringliteral">"startband"</span>, <span class="stringliteral">"Start band sequence number"</span>); </div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> bend_opt(<span class="stringliteral">"eband"</span>, <span class="stringliteral">"endband"</span>, <span class="stringliteral">"End band sequence number"</span>); </div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> offset_opt(<span class="stringliteral">"offset"</span>, <span class="stringliteral">"offset"</span>, <span class="stringliteral">"offset value for each spectral band input features: refl[band]=(DN[band]-offset[band])/scale[band]"</span>, 0.0);</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> scale_opt(<span class="stringliteral">"scale"</span>, <span class="stringliteral">"scale"</span>, <span class="stringliteral">"scale value for each spectral band input features: refl=(DN[band]-offset[band])/scale[band] (use 0 if scale min and max in each band to -1.0 and 1.0)"</span>, 0.0);</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned int></a> maxit_opt(<span class="stringliteral">"maxit"</span>,<span class="stringliteral">"maxit"</span>,<span class="stringliteral">"maximum number of iterations"</span>,500);</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span> <span class="comment">//Optionpk<string> algorithm_opt("a", "algorithm", "GRID, or any optimization algorithm from http://ab-initio.mit.edu/wiki/index.php/NLopt_Algorithms","GRID"); </span></div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> tolerance_opt(<span class="stringliteral">"tol"</span>,<span class="stringliteral">"tolerance"</span>,<span class="stringliteral">"relative tolerance for stopping criterion"</span>,0.0001);</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span> </div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>   input_opt.setHide(1);</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>   tlayer_opt.setHide(1);</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>   label_opt.setHide(1);</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>   balance_opt.setHide(1);</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>   random_opt.setHide(1);</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>   minSize_opt.setHide(1);</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>   band_opt.setHide(1);</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>   bstart_opt.setHide(1);</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>   bend_opt.setHide(1);</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>   offset_opt.setHide(1);</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>   scale_opt.setHide(1);</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>   svm_type_opt.setHide(1);</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>   kernel_type_opt.setHide(1);</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>   kernel_degree_opt.setHide(1);</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>   coef0_opt.setHide(1);</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>   nu_opt.setHide(1);</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>   epsilon_loss_opt.setHide(1);</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>   cache_opt.setHide(1);</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>   epsilon_tol_opt.setHide(1);</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>   shrinking_opt.setHide(1);</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>   prob_est_opt.setHide(1);</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>   cv_opt.setHide(1);</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>   costfunction_opt.setHide(1);</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>   maxit_opt.setHide(1);</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>   tolerance_opt.setHide(1);</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span> <span class="comment">//  algorithm_opt.setHide(1);</span></div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>   classname_opt.setHide(1);</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>   classvalue_opt.setHide(1);</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>   </div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>   <span class="keywordtype">bool</span> doProcess;<span class="comment">//stop process when program was invoked with help option (-h --help)</span></div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>     doProcess=training_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>     ccost_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>     gamma_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>     stepcc_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>     stepg_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>     input_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>     tlayer_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>     label_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>     balance_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>     random_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>     minSize_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>     band_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>     bstart_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>     bend_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>     offset_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>     scale_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>     svm_type_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>     kernel_type_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>     kernel_degree_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>     coef0_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>     nu_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>     epsilon_loss_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>     cache_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>     epsilon_tol_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>     shrinking_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>     prob_est_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>     cv_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>     costfunction_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>     maxit_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>     tolerance_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span> <span class="comment">//    algorithm_opt.retrieveOption(argc,argv);</span></div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>     classname_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>     classvalue_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>     verbose_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>   }</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> predefinedString){</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>     std::cout << predefinedString << std::endl;</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>     exit(0);</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>   }</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>   <span class="keywordflow">if</span>(!doProcess){</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>     cout << endl;</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>     cout << <span class="stringliteral">"Usage: pkoptsvm -t training"</span> << endl;</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>     cout << endl;</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>     std::cout << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << std::endl;</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>     exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>   }</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span> </div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>   assert(training_opt.size());</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>   <span class="keywordflow">if</span>(input_opt.size())</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>     cv_opt[0]=0;</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span> </div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>   <span class="keywordflow">if</span>(verbose_opt[0]>=1){</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>     <span class="keywordflow">if</span>(input_opt.size())</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>       std::cout << <span class="stringliteral">"input filename: "</span> << input_opt[0] << std::endl;</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>     std::cout << <span class="stringliteral">"training vector file: "</span> << std::endl;</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ifile=0;ifile<training_opt.size();++ifile)</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>       std::cout << training_opt[ifile] << std::endl;</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>     std::cout << <span class="stringliteral">"verbose: "</span> << verbose_opt[0] << std::endl;</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>   }</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span> </div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> totalSamples=0;</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> totalTestSamples=0;</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span> </div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> nclass=0;</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>   <span class="keywordtype">int</span> nband=0;</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>   <span class="keywordtype">int</span> startBand=2;<span class="comment">//first two bands represent X and Y pos</span></div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span> </div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>   vector<double> offset;</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>   vector<double> scale;</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>   vector< Vector2d<float> > trainingPixels;<span class="comment">//[class][sample][band]</span></div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>   vector< Vector2d<float> > testPixels;<span class="comment">//[class][sample][band]</span></div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span> </div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>   <span class="comment">// if(priors_opt.size()>1){//priors from argument list</span></div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>   <span class="comment">//   priors.resize(priors_opt.size());</span></div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>   <span class="comment">//   double normPrior=0;</span></div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>   <span class="comment">//   for(int iclass=0;iclass<priors_opt.size();++iclass){</span></div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>   <span class="comment">//     priors[iclass]=priors_opt[iclass];</span></div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>   <span class="comment">//     normPrior+=priors[iclass];</span></div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>   <span class="comment">//   }</span></div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>   <span class="comment">//   //normalize</span></div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>   <span class="comment">//   for(int iclass=0;iclass<priors_opt.size();++iclass)</span></div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>   <span class="comment">//     priors[iclass]/=normPrior;</span></div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>   <span class="comment">// }</span></div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span> </div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>   <span class="comment">//convert start and end band options to vector of band indexes</span></div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>     <span class="keywordflow">if</span>(bstart_opt.size()){</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>       <span class="keywordflow">if</span>(bend_opt.size()!=bstart_opt.size()){</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>     <span class="keywordtype">string</span> errorstring=<span class="stringliteral">"Error: options for start and end band indexes must be provided as pairs, missing end band"</span>;</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>     <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>       }</div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>       band_opt.clear();</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ipair=0;ipair<bstart_opt.size();++ipair){</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>     <span class="keywordflow">if</span>(bend_opt[ipair]<=bstart_opt[ipair]){</div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>       <span class="keywordtype">string</span> errorstring=<span class="stringliteral">"Error: index for end band must be smaller then start band"</span>;</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>       <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>     }</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=bstart_opt[ipair];iband<=bend_opt[ipair];++iband)</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>       band_opt.push_back(iband);</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>       }</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>     }</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>   }</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> error){</div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>     cerr << error << std::endl;</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>     exit(1);</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>   }</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>   <span class="comment">//sort bands</span></div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>   <span class="keywordflow">if</span>(band_opt.size())</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>     std::sort(band_opt.begin(),band_opt.end());</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span> </div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>   <span class="comment">// map<string,short> classValueMap;//global variable for now (due to getCost)</span></div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>   <span class="keywordflow">if</span>(classname_opt.size()){</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>     assert(classname_opt.size()==classvalue_opt.size());</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<classname_opt.size();++iclass)</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>       classValueMap[classname_opt[iclass]]=classvalue_opt[iclass];</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>   }</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span> </div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>   <span class="comment">//----------------------------------- Training -------------------------------</span></div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>   <span class="keyword">struct </span><a class="code" href="structsvm__problem.html">svm_problem</a> prob;</div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>   vector<string> fields;</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>   <span class="comment">//organize training data</span></div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>   trainingPixels.clear();</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>   testPixels.clear();</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>   map<string,Vector2d<float> > trainingMap;</div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>   map<string,Vector2d<float> > testMap;</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>   <span class="keywordflow">if</span>(verbose_opt[0]>=1)</div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>     std::cout << <span class="stringliteral">"reading training file "</span> << training_opt[0] << std::endl;</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>     <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a> trainingReader(training_opt[0]);</div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>     <span class="keywordflow">if</span>(band_opt.size()){</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>       totalSamples=trainingReader.readDataImageOgr(trainingMap,fields,band_opt,label_opt[0],tlayer_opt,verbose_opt[0]);</div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>       <span class="keywordflow">if</span>(input_opt.size()){</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>     <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a> inputReader(input_opt[0]);</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>     totalTestSamples=inputReader.readDataImageOgr(testMap,fields,band_opt,label_opt[0],tlayer_opt,verbose_opt[0]);</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>     inputReader.close();</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>       }</div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>     }</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>       totalSamples=trainingReader.readDataImageOgr(trainingMap,fields,0,0,label_opt[0],tlayer_opt,verbose_opt[0]);</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>       <span class="keywordflow">if</span>(input_opt.size()){</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>     <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a> inputReader(input_opt[0]);</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>     totalTestSamples=inputReader.readDataImageOgr(testMap,fields,0,0,label_opt[0],tlayer_opt,verbose_opt[0]);</div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>     inputReader.close();</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>       }</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>       trainingReader.close();</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>     }</div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>     <span class="keywordflow">if</span>(trainingMap.size()<2){</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>       <span class="comment">// map<string,Vector2d<float> >::iterator mapit=trainingMap.begin();</span></div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>       <span class="comment">// while(mapit!=trainingMap.end())</span></div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>       <span class="comment">//    cerr << mapit->first << " -> " << classValueMap[mapit->first] << std::endl;</span></div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>       <span class="keywordtype">string</span> errorstring=<span class="stringliteral">"Error: could not read at least two classes from training input file"</span>;</div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>       <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>     }</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>     <span class="keywordflow">if</span>(input_opt.size()&&testMap.size()<2){</div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>       <span class="keywordtype">string</span> errorstring=<span class="stringliteral">"Error: could not read at least two classes from test input file"</span>;</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>       <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>     }</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>   }</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> error){</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>     cerr << error << std::endl;</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>     exit(1);</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>   }</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>   <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>     cerr << <span class="stringliteral">"error caught"</span> << std::endl;</div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>     exit(1);</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>   }</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>   <span class="comment">//todo delete class 0 ?</span></div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>   <span class="comment">// if(verbose_opt[0]>=1)</span></div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>   <span class="comment">//   std::cout << "erasing class 0 from training set (" << trainingMap[0].size() << " from " << totalSamples << ") samples" << std::endl;</span></div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>   <span class="comment">// totalSamples-=trainingMap[0].size();</span></div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>   <span class="comment">// trainingMap.erase(0);</span></div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span> </div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>   <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>     std::cout << <span class="stringliteral">"training pixels: "</span> << std::endl;</div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span>   map<string,Vector2d<float> >::iterator mapit;</div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>   mapit=trainingMap.begin();</div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>   <span class="keywordflow">while</span>(mapit!=trainingMap.end()){</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>     <span class="keywordflow">if</span>(classValueMap.size()){</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span>       <span class="comment">//check if name in training is covered by classname_opt (values can not be 0)</span></div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>       <span class="keywordflow">if</span>(classValueMap[mapit->first]>0){</div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>       std::cout << mapit->first << <span class="stringliteral">" -> "</span> << classValueMap[mapit->first] << std::endl;</div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>       }</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>     std::cerr << <span class="stringliteral">"Error: names in classname option are not complete, please check names in training vector and make sure classvalue is > 0"</span> << std::endl;</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span>     exit(1);</div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>       }</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>     }    </div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>     <span class="comment">//delete small classes</span></div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>     <span class="keywordflow">if</span>((mapit->second).size()<minSize_opt[0]){</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span>       trainingMap.erase(mapit);</div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>     }</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span>     nameVector.push_back(mapit->first);</div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>     trainingPixels.push_back(mapit->second);</div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span>     <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span>       std::cout << mapit->first << <span class="stringliteral">": "</span> << (mapit->second).size() << <span class="stringliteral">" samples"</span> << std::endl;</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>     <span class="comment">// trainingPixels.push_back(mapit->second); ??</span></div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span>     <span class="comment">// ++iclass;</span></div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span>     ++mapit;</div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span>   }</div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span>   nclass=trainingPixels.size();</div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span>   <span class="keywordflow">if</span>(classname_opt.size())</div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span>     assert(nclass==classname_opt.size());</div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span>   nband=trainingPixels[0][0].size()-2;<span class="comment">//X and Y//trainingPixels[0][0].size();</span></div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span> </div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>   mapit=testMap.begin();</div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>   <span class="keywordflow">while</span>(mapit!=testMap.end()){</div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span>     <span class="keywordflow">if</span>(classValueMap.size()){</div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span>       <span class="comment">//check if name in test is covered by classname_opt (values can not be 0)</span></div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span>       <span class="keywordflow">if</span>(classValueMap[mapit->first]>0){</div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span>     ;<span class="comment">//ok, no need to print to std::cout </span></div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span>       }</div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span>     std::cerr << <span class="stringliteral">"Error: names in classname option are not complete, please check names in test vector and make sure classvalue is > 0"</span> << std::endl;</div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span>     exit(1);</div>
-<div class="line"><a name="l00445"></a><span class="lineno">  445</span>       }</div>
-<div class="line"><a name="l00446"></a><span class="lineno">  446</span>     }    </div>
-<div class="line"><a name="l00447"></a><span class="lineno">  447</span>     <span class="comment">//no need to delete small classes for test sample</span></div>
-<div class="line"><a name="l00448"></a><span class="lineno">  448</span>     testPixels.push_back(mapit->second);</div>
-<div class="line"><a name="l00449"></a><span class="lineno">  449</span>     <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00450"></a><span class="lineno">  450</span>       std::cout << mapit->first << <span class="stringliteral">": "</span> << (mapit->second).size() << <span class="stringliteral">" samples"</span> << std::endl;</div>
-<div class="line"><a name="l00451"></a><span class="lineno">  451</span>     ++mapit;</div>
-<div class="line"><a name="l00452"></a><span class="lineno">  452</span>   }</div>
-<div class="line"><a name="l00453"></a><span class="lineno">  453</span>   <span class="keywordflow">if</span>(input_opt.size()){</div>
-<div class="line"><a name="l00454"></a><span class="lineno">  454</span>     assert(nclass==testPixels.size());</div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span>     assert(nband=testPixels[0][0].size()-2);<span class="comment">//X and Y//testPixels[0][0].size();</span></div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</span>     assert(!cv_opt[0]);</div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span>   }</div>
-<div class="line"><a name="l00458"></a><span class="lineno">  458</span> </div>
-<div class="line"><a name="l00459"></a><span class="lineno">  459</span>   <span class="comment">//do not remove outliers here: could easily be obtained through ogr2ogr -where 'B2<110' output.shp input.shp</span></div>
-<div class="line"><a name="l00460"></a><span class="lineno">  460</span>   <span class="comment">//balance training data</span></div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span>   <span class="keywordflow">if</span>(balance_opt[0]>0){</div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span>     <span class="keywordflow">if</span>(random_opt[0])</div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span>       srand(time(NULL));</div>
-<div class="line"><a name="l00464"></a><span class="lineno">  464</span>     totalSamples=0;</div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>       <span class="keywordflow">if</span>(trainingPixels[iclass].size()>balance_opt[0]){</div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span>         <span class="keywordflow">while</span>(trainingPixels[iclass].size()>balance_opt[0]){</div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span>           <span class="keywordtype">int</span> index=rand()%trainingPixels[iclass].size();</div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span>           trainingPixels[iclass].erase(trainingPixels[iclass].begin()+index);</div>
-<div class="line"><a name="l00470"></a><span class="lineno">  470</span>         }</div>
-<div class="line"><a name="l00471"></a><span class="lineno">  471</span>       }</div>
-<div class="line"><a name="l00472"></a><span class="lineno">  472</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span>         <span class="keywordtype">int</span> oldsize=trainingPixels[iclass].size();</div>
-<div class="line"><a name="l00474"></a><span class="lineno">  474</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=trainingPixels[iclass].size();isample<balance_opt[0];++isample){</div>
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span>           <span class="keywordtype">int</span> index = rand()%oldsize;</div>
-<div class="line"><a name="l00476"></a><span class="lineno">  476</span>           trainingPixels[iclass].push_back(trainingPixels[iclass][index]);</div>
-<div class="line"><a name="l00477"></a><span class="lineno">  477</span>         }</div>
-<div class="line"><a name="l00478"></a><span class="lineno">  478</span>       }</div>
-<div class="line"><a name="l00479"></a><span class="lineno">  479</span>       totalSamples+=trainingPixels[iclass].size();</div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span>     }</div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span>     assert(totalSamples==nclass*balance_opt[0]);</div>
-<div class="line"><a name="l00482"></a><span class="lineno">  482</span>   }</div>
-<div class="line"><a name="l00483"></a><span class="lineno">  483</span> </div>
-<div class="line"><a name="l00484"></a><span class="lineno">  484</span>   <span class="comment">//no need to balance test sample    </span></div>
-<div class="line"><a name="l00485"></a><span class="lineno">  485</span>   <span class="comment">//set scale and offset</span></div>
-<div class="line"><a name="l00486"></a><span class="lineno">  486</span>   offset.resize(nband);</div>
-<div class="line"><a name="l00487"></a><span class="lineno">  487</span>   scale.resize(nband);</div>
-<div class="line"><a name="l00488"></a><span class="lineno">  488</span>   <span class="keywordflow">if</span>(offset_opt.size()>1)</div>
-<div class="line"><a name="l00489"></a><span class="lineno">  489</span>     assert(offset_opt.size()==nband);</div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span>   <span class="keywordflow">if</span>(scale_opt.size()>1)</div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span>     assert(scale_opt.size()==nband);</div>
-<div class="line"><a name="l00492"></a><span class="lineno">  492</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l00493"></a><span class="lineno">  493</span>     <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00494"></a><span class="lineno">  494</span>       std::cout << <span class="stringliteral">"scaling for band"</span> << iband << std::endl;</div>
-<div class="line"><a name="l00495"></a><span class="lineno">  495</span>     offset[iband]=(offset_opt.size()==1)?offset_opt[0]:offset_opt[iband];</div>
-<div class="line"><a name="l00496"></a><span class="lineno">  496</span>     scale[iband]=(scale_opt.size()==1)?scale_opt[0]:scale_opt[iband];</div>
-<div class="line"><a name="l00497"></a><span class="lineno">  497</span>     <span class="comment">//search for min and maximum</span></div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span>     <span class="keywordflow">if</span>(scale[iband]<=0){</div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span>       <span class="keywordtype">float</span> theMin=trainingPixels[0][0][iband+startBand];</div>
-<div class="line"><a name="l00500"></a><span class="lineno">  500</span>       <span class="keywordtype">float</span> theMax=trainingPixels[0][0][iband+startBand];</div>
-<div class="line"><a name="l00501"></a><span class="lineno">  501</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l00502"></a><span class="lineno">  502</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<trainingPixels[iclass].size();++isample){</div>
-<div class="line"><a name="l00503"></a><span class="lineno">  503</span>           <span class="keywordflow">if</span>(theMin>trainingPixels[iclass][isample][iband+startBand])</div>
-<div class="line"><a name="l00504"></a><span class="lineno">  504</span>             theMin=trainingPixels[iclass][isample][iband+startBand];</div>
-<div class="line"><a name="l00505"></a><span class="lineno">  505</span>           <span class="keywordflow">if</span>(theMax<trainingPixels[iclass][isample][iband+startBand])</div>
-<div class="line"><a name="l00506"></a><span class="lineno">  506</span>             theMax=trainingPixels[iclass][isample][iband+startBand];</div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span>         }</div>
-<div class="line"><a name="l00508"></a><span class="lineno">  508</span>       }</div>
-<div class="line"><a name="l00509"></a><span class="lineno">  509</span>       offset[iband]=theMin+(theMax-theMin)/2.0;</div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span>       scale[iband]=(theMax-theMin)/2.0;</div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span>       <span class="keywordflow">if</span>(verbose_opt[0]>1){</div>
-<div class="line"><a name="l00512"></a><span class="lineno">  512</span>         std::cout << <span class="stringliteral">"Extreme image values for band "</span> << iband << <span class="stringliteral">": ["</span> << theMin << <span class="stringliteral">","</span> << theMax << <span class="stringliteral">"]"</span> << std::endl;</div>
-<div class="line"><a name="l00513"></a><span class="lineno">  513</span>         std::cout << <span class="stringliteral">"Using offset, scale: "</span> << offset[iband] << <span class="stringliteral">", "</span> << scale[iband] << std::endl;</div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span>         std::cout << <span class="stringliteral">"scaled values for band "</span> << iband << <span class="stringliteral">": ["</span> << (theMin-offset[iband])/scale[iband] << <span class="stringliteral">","</span> << (theMax-offset[iband])/scale[iband] << <span class="stringliteral">"]"</span> << std::endl;</div>
-<div class="line"><a name="l00515"></a><span class="lineno">  515</span>       }</div>
-<div class="line"><a name="l00516"></a><span class="lineno">  516</span>     }</div>
-<div class="line"><a name="l00517"></a><span class="lineno">  517</span>   }</div>
-<div class="line"><a name="l00518"></a><span class="lineno">  518</span> </div>
-<div class="line"><a name="l00519"></a><span class="lineno">  519</span>   <span class="comment">// if(priors_opt.size()==1){//default: equal priors for each class</span></div>
-<div class="line"><a name="l00520"></a><span class="lineno">  520</span>   <span class="comment">//   priors.resize(nclass);</span></div>
-<div class="line"><a name="l00521"></a><span class="lineno">  521</span>   <span class="comment">//   for(int iclass=0;iclass<nclass;++iclass)</span></div>
-<div class="line"><a name="l00522"></a><span class="lineno">  522</span>   <span class="comment">//     priors[iclass]=1.0/nclass;</span></div>
-<div class="line"><a name="l00523"></a><span class="lineno">  523</span>   <span class="comment">// }</span></div>
-<div class="line"><a name="l00524"></a><span class="lineno">  524</span>   <span class="comment">// assert(priors_opt.size()==1||priors_opt.size()==nclass);</span></div>
-<div class="line"><a name="l00525"></a><span class="lineno">  525</span>     </div>
-<div class="line"><a name="l00526"></a><span class="lineno">  526</span>   <span class="keywordflow">if</span>(verbose_opt[0]>=1){</div>
-<div class="line"><a name="l00527"></a><span class="lineno">  527</span>     std::cout << <span class="stringliteral">"number of bands: "</span> << nband << std::endl;</div>
-<div class="line"><a name="l00528"></a><span class="lineno">  528</span>     std::cout << <span class="stringliteral">"number of classes: "</span> << nclass << std::endl;</div>
-<div class="line"><a name="l00529"></a><span class="lineno">  529</span>     <span class="comment">// std::cout << "priors:";</span></div>
-<div class="line"><a name="l00530"></a><span class="lineno">  530</span>     <span class="comment">// for(int iclass=0;iclass<nclass;++iclass)</span></div>
-<div class="line"><a name="l00531"></a><span class="lineno">  531</span>     <span class="comment">//   std::cout << " " << priors[iclass];</span></div>
-<div class="line"><a name="l00532"></a><span class="lineno">  532</span>     <span class="comment">// std::cout << std::endl;</span></div>
-<div class="line"><a name="l00533"></a><span class="lineno">  533</span>   }</div>
-<div class="line"><a name="l00534"></a><span class="lineno">  534</span> </div>
-<div class="line"><a name="l00535"></a><span class="lineno">  535</span>   <span class="comment">//Calculate features of training (and test) set</span></div>
-<div class="line"><a name="l00536"></a><span class="lineno">  536</span>   nctraining.resize(nclass);</div>
-<div class="line"><a name="l00537"></a><span class="lineno">  537</span>   nctest.resize(nclass);</div>
-<div class="line"><a name="l00538"></a><span class="lineno">  538</span>   vector< Vector2d<float> > trainingFeatures(nclass);</div>
-<div class="line"><a name="l00539"></a><span class="lineno">  539</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l00540"></a><span class="lineno">  540</span>     <span class="keywordflow">if</span>(verbose_opt[0]>=1)</div>
-<div class="line"><a name="l00541"></a><span class="lineno">  541</span>       std::cout << <span class="stringliteral">"calculating features for class "</span> << iclass << std::endl;</div>
-<div class="line"><a name="l00542"></a><span class="lineno">  542</span>     nctraining[iclass]=trainingPixels[iclass].size();</div>
-<div class="line"><a name="l00543"></a><span class="lineno">  543</span>     <span class="keywordflow">if</span>(verbose_opt[0]>=1)</div>
-<div class="line"><a name="l00544"></a><span class="lineno">  544</span>       std::cout << <span class="stringliteral">"nctraining["</span> << iclass << <span class="stringliteral">"]: "</span> << nctraining[iclass] << std::endl;</div>
-<div class="line"><a name="l00545"></a><span class="lineno">  545</span>     <span class="keywordflow">if</span>(testPixels.size()>iclass){</div>
-<div class="line"><a name="l00546"></a><span class="lineno">  546</span>       nctest[iclass]=testPixels[iclass].size();</div>
-<div class="line"><a name="l00547"></a><span class="lineno">  547</span>       <span class="keywordflow">if</span>(verbose_opt[0]>=1){</div>
-<div class="line"><a name="l00548"></a><span class="lineno">  548</span>     std::cout << <span class="stringliteral">"nctest["</span> << iclass << <span class="stringliteral">"]: "</span> << nctest[iclass] << std::endl;</div>
-<div class="line"><a name="l00549"></a><span class="lineno">  549</span>       }</div>
-<div class="line"><a name="l00550"></a><span class="lineno">  550</span>     }</div>
-<div class="line"><a name="l00551"></a><span class="lineno">  551</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00552"></a><span class="lineno">  552</span>       nctest[iclass]=0;</div>
-<div class="line"><a name="l00553"></a><span class="lineno">  553</span>     <span class="comment">// trainingFeatures[iclass].resize(nctraining[iclass]);</span></div>
-<div class="line"><a name="l00554"></a><span class="lineno">  554</span>     trainingFeatures[iclass].resize(nctraining[iclass]+nctest[iclass]);</div>
-<div class="line"><a name="l00555"></a><span class="lineno">  555</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<nctraining[iclass];++isample){</div>
-<div class="line"><a name="l00556"></a><span class="lineno">  556</span>       <span class="comment">//scale pixel values according to scale and offset!!!</span></div>
-<div class="line"><a name="l00557"></a><span class="lineno">  557</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l00558"></a><span class="lineno">  558</span>         assert(trainingPixels[iclass].size()>isample);</div>
-<div class="line"><a name="l00559"></a><span class="lineno">  559</span>         assert(trainingPixels[iclass][isample].size()>iband+startBand);</div>
-<div class="line"><a name="l00560"></a><span class="lineno">  560</span>         assert(offset.size()>iband);</div>
-<div class="line"><a name="l00561"></a><span class="lineno">  561</span>         assert(scale.size()>iband);</div>
-<div class="line"><a name="l00562"></a><span class="lineno">  562</span>         <span class="keywordtype">float</span> value=trainingPixels[iclass][isample][iband+startBand];</div>
-<div class="line"><a name="l00563"></a><span class="lineno">  563</span>         trainingFeatures[iclass][isample].push_back((value-offset[iband])/scale[iband]);</div>
-<div class="line"><a name="l00564"></a><span class="lineno">  564</span>       }</div>
-<div class="line"><a name="l00565"></a><span class="lineno">  565</span>     }</div>
-<div class="line"><a name="l00566"></a><span class="lineno">  566</span>     <span class="comment">// assert(trainingFeatures[iclass].size()==nctraining[iclass]);</span></div>
-<div class="line"><a name="l00567"></a><span class="lineno">  567</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<nctest[iclass];++isample){</div>
-<div class="line"><a name="l00568"></a><span class="lineno">  568</span>       <span class="comment">//scale pixel values according to scale and offset!!!</span></div>
-<div class="line"><a name="l00569"></a><span class="lineno">  569</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l00570"></a><span class="lineno">  570</span>         assert(testPixels[iclass].size()>isample);</div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span>         assert(testPixels[iclass][isample].size()>iband+startBand);</div>
-<div class="line"><a name="l00572"></a><span class="lineno">  572</span>         assert(offset.size()>iband);</div>
-<div class="line"><a name="l00573"></a><span class="lineno">  573</span>         assert(scale.size()>iband);</div>
-<div class="line"><a name="l00574"></a><span class="lineno">  574</span>         <span class="keywordtype">float</span> value=testPixels[iclass][isample][iband+startBand];</div>
-<div class="line"><a name="l00575"></a><span class="lineno">  575</span>         <span class="comment">// testFeatures[iclass][isample].push_back((value-offset[iband])/scale[iband]);</span></div>
-<div class="line"><a name="l00576"></a><span class="lineno">  576</span>         trainingFeatures[iclass][nctraining[iclass]+isample].push_back((value-offset[iband])/scale[iband]);</div>
-<div class="line"><a name="l00577"></a><span class="lineno">  577</span>       }</div>
-<div class="line"><a name="l00578"></a><span class="lineno">  578</span>     }</div>
-<div class="line"><a name="l00579"></a><span class="lineno">  579</span>     assert(trainingFeatures[iclass].size()==nctraining[iclass]+nctest[iclass]);</div>
-<div class="line"><a name="l00580"></a><span class="lineno">  580</span>   }</div>
-<div class="line"><a name="l00581"></a><span class="lineno">  581</span> </div>
-<div class="line"><a name="l00582"></a><span class="lineno">  582</span>   assert(ccost_opt.size()>1);<span class="comment">//must have boundaries at least (initial value is optional)</span></div>
-<div class="line"><a name="l00583"></a><span class="lineno">  583</span>   <span class="keywordflow">if</span>(ccost_opt.size()<3)<span class="comment">//create initial value</span></div>
-<div class="line"><a name="l00584"></a><span class="lineno">  584</span>     ccost_opt.push_back(sqrt(ccost_opt[0]*ccost_opt[1]));</div>
-<div class="line"><a name="l00585"></a><span class="lineno">  585</span>   assert(gamma_opt.size()>1);<span class="comment">//must have boundaries at least (initial value is optional)</span></div>
-<div class="line"><a name="l00586"></a><span class="lineno">  586</span>   <span class="keywordflow">if</span>(gamma_opt.size()<3)<span class="comment">//create initial value</span></div>
-<div class="line"><a name="l00587"></a><span class="lineno">  587</span>     gamma_opt.push_back(sqrt(gamma_opt[0]*gamma_opt[1]));<span class="comment">//will be translated to 1.0/nFeatures</span></div>
-<div class="line"><a name="l00588"></a><span class="lineno">  588</span>   assert(ccost_opt.size()==3);<span class="comment">//min, init, max</span></div>
-<div class="line"><a name="l00589"></a><span class="lineno">  589</span>   assert(gamma_opt.size()==3);<span class="comment">//min, init, max</span></div>
-<div class="line"><a name="l00590"></a><span class="lineno">  590</span>   assert(gamma_opt[0]<gamma_opt[1]);</div>
-<div class="line"><a name="l00591"></a><span class="lineno">  591</span>   assert(gamma_opt[0]<gamma_opt[2]);</div>
-<div class="line"><a name="l00592"></a><span class="lineno">  592</span>   assert(gamma_opt[2]<gamma_opt[1]);</div>
-<div class="line"><a name="l00593"></a><span class="lineno">  593</span>   assert(ccost_opt[0]<ccost_opt[1]);</div>
-<div class="line"><a name="l00594"></a><span class="lineno">  594</span>   assert(ccost_opt[0]<ccost_opt[2]);</div>
-<div class="line"><a name="l00595"></a><span class="lineno">  595</span>   assert(ccost_opt[2]<ccost_opt[1]);</div>
-<div class="line"><a name="l00596"></a><span class="lineno">  596</span> </div>
-<div class="line"><a name="l00597"></a><span class="lineno">  597</span>   std::vector<double> x(2);</div>
-<div class="line"><a name="l00598"></a><span class="lineno">  598</span> <span class="comment">//  if(algorithm_opt[0]=="GRID"){</span></div>
-<div class="line"><a name="l00599"></a><span class="lineno">  599</span>   <span class="keywordflow">if</span> (1){</div>
-<div class="line"><a name="l00600"></a><span class="lineno">  600</span>     <span class="comment">// double minError=1000;</span></div>
-<div class="line"><a name="l00601"></a><span class="lineno">  601</span>     <span class="comment">// double minCost=0;</span></div>
-<div class="line"><a name="l00602"></a><span class="lineno">  602</span>     <span class="comment">// double minGamma=0;</span></div>
-<div class="line"><a name="l00603"></a><span class="lineno">  603</span>     <span class="keywordtype">double</span> maxKappa=0;</div>
-<div class="line"><a name="l00604"></a><span class="lineno">  604</span>     <span class="keywordtype">double</span> maxCost=0;</div>
-<div class="line"><a name="l00605"></a><span class="lineno">  605</span>     <span class="keywordtype">double</span> maxGamma=0;</div>
-<div class="line"><a name="l00606"></a><span class="lineno">  606</span>     <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00607"></a><span class="lineno">  607</span>     <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00608"></a><span class="lineno">  608</span>     GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00609"></a><span class="lineno">  609</span>     <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l00610"></a><span class="lineno">  610</span>     <span class="keywordflow">if</span>(!verbose_opt[0])</div>
-<div class="line"><a name="l00611"></a><span class="lineno">  611</span>       pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00612"></a><span class="lineno">  612</span>     <span class="keywordtype">double</span> ncost=log(ccost_opt[1])/log(stepcc_opt[0])-log(ccost_opt[0])/log(stepcc_opt[0]);</div>
-<div class="line"><a name="l00613"></a><span class="lineno">  613</span>     <span class="keywordtype">double</span> ngamma=log(gamma_opt[1])/log(stepg_opt[0])-log(gamma_opt[0])/log(stepg_opt[0]);</div>
-<div class="line"><a name="l00614"></a><span class="lineno">  614</span>     <span class="keywordflow">for</span>(<span class="keywordtype">double</span> ccost=ccost_opt[0];ccost<=ccost_opt[1];ccost*=stepcc_opt[0]){</div>
-<div class="line"><a name="l00615"></a><span class="lineno">  615</span>       <span class="keywordflow">for</span>(<span class="keywordtype">double</span> gamma=gamma_opt[0];gamma<=gamma_opt[1];gamma*=stepg_opt[0]){</div>
-<div class="line"><a name="l00616"></a><span class="lineno">  616</span>     x[0]=ccost;</div>
-<div class="line"><a name="l00617"></a><span class="lineno">  617</span>     x[1]=gamma;</div>
-<div class="line"><a name="l00618"></a><span class="lineno">  618</span>     std::vector<double> theGrad;</div>
-<div class="line"><a name="l00619"></a><span class="lineno">  619</span>     <span class="keywordtype">double</span> kappa=0;</div>
-<div class="line"><a name="l00620"></a><span class="lineno">  620</span>     kappa=objFunction(x,theGrad,&trainingFeatures);</div>
-<div class="line"><a name="l00621"></a><span class="lineno">  621</span>     <span class="keywordflow">if</span>(kappa>maxKappa){</div>
-<div class="line"><a name="l00622"></a><span class="lineno">  622</span>       maxKappa=kappa;</div>
-<div class="line"><a name="l00623"></a><span class="lineno">  623</span>       maxCost=ccost;</div>
-<div class="line"><a name="l00624"></a><span class="lineno">  624</span>       maxGamma=gamma;</div>
-<div class="line"><a name="l00625"></a><span class="lineno">  625</span>     }</div>
-<div class="line"><a name="l00626"></a><span class="lineno">  626</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00627"></a><span class="lineno">  627</span>       std::cout << ccost << <span class="stringliteral">" "</span> << gamma << <span class="stringliteral">" "</span> << kappa<< std::endl;</div>
-<div class="line"><a name="l00628"></a><span class="lineno">  628</span>     progress+=1.0/ncost/ngamma;</div>
-<div class="line"><a name="l00629"></a><span class="lineno">  629</span>     <span class="keywordflow">if</span>(!verbose_opt[0])</div>
-<div class="line"><a name="l00630"></a><span class="lineno">  630</span>       pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00631"></a><span class="lineno">  631</span>       }</div>
-<div class="line"><a name="l00632"></a><span class="lineno">  632</span>     }</div>
-<div class="line"><a name="l00633"></a><span class="lineno">  633</span>     progress=1.0;</div>
-<div class="line"><a name="l00634"></a><span class="lineno">  634</span>     <span class="keywordflow">if</span>(!verbose_opt[0])</div>
-<div class="line"><a name="l00635"></a><span class="lineno">  635</span>       pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00636"></a><span class="lineno">  636</span>     x[0]=maxCost;</div>
-<div class="line"><a name="l00637"></a><span class="lineno">  637</span>     x[1]=maxGamma;</div>
-<div class="line"><a name="l00638"></a><span class="lineno">  638</span>   }</div>
-<div class="line"><a name="l00639"></a><span class="lineno">  639</span>   <span class="comment">//else{</span></div>
-<div class="line"><a name="l00640"></a><span class="lineno">  640</span>   <span class="comment">//  nlopt::opt optimizer=OptFactory::getOptimizer(algorithm_opt[0],2);</span></div>
-<div class="line"><a name="l00641"></a><span class="lineno">  641</span>   <span class="comment">//  if(verbose_opt[0]>1)</span></div>
-<div class="line"><a name="l00642"></a><span class="lineno">  642</span>   <span class="comment">//    std::cout << "optimization algorithm: " << optimizer.get_algorithm_name() << "..." << std::endl;</span></div>
-<div class="line"><a name="l00643"></a><span class="lineno">  643</span>   <span class="comment">//  std::vector<double> lb(2);</span></div>
-<div class="line"><a name="l00644"></a><span class="lineno">  644</span>   <span class="comment">//  std::vector<double> init(2);</span></div>
-<div class="line"><a name="l00645"></a><span class="lineno">  645</span>   <span class="comment">//  std::vector<double> ub(2);</span></div>
-<div class="line"><a name="l00646"></a><span class="lineno">  646</span> </div>
-<div class="line"><a name="l00647"></a><span class="lineno">  647</span>   <span class="comment">//  lb[0]=ccost_opt[0];</span></div>
-<div class="line"><a name="l00648"></a><span class="lineno">  648</span>   <span class="comment">//  lb[1]=(gamma_opt[0]>0)? gamma_opt[0] : 1.0/trainingFeatures[0][0].size();</span></div>
-<div class="line"><a name="l00649"></a><span class="lineno">  649</span>   <span class="comment">//  init[0]=ccost_opt[2];</span></div>
-<div class="line"><a name="l00650"></a><span class="lineno">  650</span>   <span class="comment">//  init[1]=(gamma_opt[2]>0)? gamma_opt[1] : 1.0/trainingFeatures[0][0].size();</span></div>
-<div class="line"><a name="l00651"></a><span class="lineno">  651</span>   <span class="comment">//  ub[0]=ccost_opt[1];</span></div>
-<div class="line"><a name="l00652"></a><span class="lineno">  652</span>   <span class="comment">//  ub[1]=(gamma_opt[1]>0)? gamma_opt[1] : 1.0/trainingFeatures[0][0].size();</span></div>
-<div class="line"><a name="l00653"></a><span class="lineno">  653</span>   <span class="comment">//  // optimizer.set_min_objective(objFunction, &trainingFeatures);</span></div>
-<div class="line"><a name="l00654"></a><span class="lineno">  654</span>   <span class="comment">//  optimizer.set_max_objective(objFunction, &trainingFeatures);</span></div>
-<div class="line"><a name="l00655"></a><span class="lineno">  655</span>   <span class="comment">//  optimizer.set_lower_bounds(lb);</span></div>
-<div class="line"><a name="l00656"></a><span class="lineno">  656</span>   <span class="comment">//  optimizer.set_upper_bounds(ub);</span></div>
-<div class="line"><a name="l00657"></a><span class="lineno">  657</span>   <span class="comment">//  if(verbose_opt[0]>1)</span></div>
-<div class="line"><a name="l00658"></a><span class="lineno">  658</span>   <span class="comment">//    std::cout << "set stopping criteria" << std::endl;</span></div>
-<div class="line"><a name="l00659"></a><span class="lineno">  659</span>   <span class="comment">//  //set stopping criteria</span></div>
-<div class="line"><a name="l00660"></a><span class="lineno">  660</span>   <span class="comment">//  if(maxit_opt[0])</span></div>
-<div class="line"><a name="l00661"></a><span class="lineno">  661</span>   <span class="comment">//    optimizer.set_maxeval(maxit_opt[0]);</span></div>
-<div class="line"><a name="l00662"></a><span class="lineno">  662</span>   <span class="comment">//  else</span></div>
-<div class="line"><a name="l00663"></a><span class="lineno">  663</span>   <span class="comment">//    optimizer.set_xtol_rel(tolerance_opt[0]);</span></div>
-<div class="line"><a name="l00664"></a><span class="lineno">  664</span>   <span class="comment">//  double minf=0;</span></div>
-<div class="line"><a name="l00665"></a><span class="lineno">  665</span>   <span class="comment">//  x=init;</span></div>
-<div class="line"><a name="l00666"></a><span class="lineno">  666</span>   <span class="comment">//  try{</span></div>
-<div class="line"><a name="l00667"></a><span class="lineno">  667</span>   <span class="comment">//    optimizer.optimize(x, minf);</span></div>
-<div class="line"><a name="l00668"></a><span class="lineno">  668</span>   <span class="comment">//  }</span></div>
-<div class="line"><a name="l00669"></a><span class="lineno">  669</span>   <span class="comment">//  catch(string error){</span></div>
-<div class="line"><a name="l00670"></a><span class="lineno">  670</span>   <span class="comment">//    cerr << error << std::endl;</span></div>
-<div class="line"><a name="l00671"></a><span class="lineno">  671</span>   <span class="comment">//    exit(1);</span></div>
-<div class="line"><a name="l00672"></a><span class="lineno">  672</span>   <span class="comment">//  }</span></div>
-<div class="line"><a name="l00673"></a><span class="lineno">  673</span>   <span class="comment">//  catch (exception& e){</span></div>
-<div class="line"><a name="l00674"></a><span class="lineno">  674</span>   <span class="comment">//    cout << e.what() << endl;</span></div>
-<div class="line"><a name="l00675"></a><span class="lineno">  675</span>   <span class="comment">//  }</span></div>
-<div class="line"><a name="l00676"></a><span class="lineno">  676</span>   <span class="comment">//  catch(...){</span></div>
-<div class="line"><a name="l00677"></a><span class="lineno">  677</span>   <span class="comment">//    cerr << "error caught" << std::endl;</span></div>
-<div class="line"><a name="l00678"></a><span class="lineno">  678</span>   <span class="comment">//    exit(1);</span></div>
-<div class="line"><a name="l00679"></a><span class="lineno">  679</span>   <span class="comment">//  }</span></div>
-<div class="line"><a name="l00680"></a><span class="lineno">  680</span> </div>
-<div class="line"><a name="l00681"></a><span class="lineno">  681</span>   <span class="comment">//  double ccost=x[0];</span></div>
-<div class="line"><a name="l00682"></a><span class="lineno">  682</span>   <span class="comment">//  double gamma=x[1];</span></div>
-<div class="line"><a name="l00683"></a><span class="lineno">  683</span>   <span class="comment">//  if(verbose_opt[0])</span></div>
-<div class="line"><a name="l00684"></a><span class="lineno">  684</span>   <span class="comment">//    std::cout << "optimized with " << optimizer.get_algorithm_name() << "..." << std::endl;</span></div>
-<div class="line"><a name="l00685"></a><span class="lineno">  685</span>   <span class="comment">//}</span></div>
-<div class="line"><a name="l00686"></a><span class="lineno">  686</span>   std::cout << <span class="stringliteral">" --ccost "</span> << x[0];</div>
-<div class="line"><a name="l00687"></a><span class="lineno">  687</span>   std::cout << <span class="stringliteral">" --gamma "</span> << x[1];</div>
-<div class="line"><a name="l00688"></a><span class="lineno">  688</span>   std::cout << std::endl;</div>
-<div class="line"><a name="l00689"></a><span class="lineno">  689</span> }</div>
-<div class="ttc" id="classImgReaderOgr_html"><div class="ttname"><a href="classImgReaderOgr.html">ImgReaderOgr</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderOgr_8h_source.html#l00035">ImgReaderOgr.h:35</a></div></div>
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-<div class="ttc" id="classCostFactorySVM_html"><div class="ttname"><a href="classCostFactorySVM.html">CostFactorySVM</a></div><div class="ttdef"><b>Definition:</b> <a href="CostFactorySVM_8h_source.html#l00034">CostFactorySVM.h:34</a></div></div>
-<div class="ttc" id="structsvm__problem_html"><div class="ttname"><a href="structsvm__problem.html">svm_problem</a></div><div class="ttdef"><b>Definition:</b> <a href="svm_8h_source.html#l00018">svm.h:18</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkpolygonize.html b/doc/html/pkpolygonize.html
deleted file mode 100644
index 97fc8c5..0000000
--- a/doc/html/pkpolygonize.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: pkpolygonize</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkpolygonize </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><p>program to make vector file from raster image </p>
-<h2>SYNOPSIS</h2>
-<p><code> Usage: pkpolygonize -i input [-m mask] -o output </code></p>
-<p><code></code></p>
-<p><code> Options: [-f format] [-b band] [-n fieldname] [-nodata value]</code></p>
-<p><code></code></p>
-<h1><a class="anchor" id="pkpolygonize_description"></a>
-Description</h1>
-<p>The utility pkpolygonize converts a raster to a vector dataset. All pixels in the mask band with a value other than zero will be considered suitable for collection as polygons. Use the same input file as mask to remove the background polygon (recommended). </p>
-<h1><a class="anchor" id="pkpolygonize_options"></a>
-Options</h1>
-<ul>
-<li>use either <code>-short</code> or <code>--long</code> options (both <code>--long=value</code> and <code>--long value</code> are supported)</li>
-<li>short option <code>-h</code> shows basic options only, long option <code>--help</code> shows all options <table class="doxtable">
-<tr>
-<th>short</th><th>long</th><th>type</th><th>default</th><th>description  </th></tr>
-<tr>
-<td>i </td><td>input </td><td>std::string </td><td></td><td>Input image file </td></tr>
-<tr>
-<td>m </td><td>mask </td><td>std::string </td><td></td><td>All pixels in the mask band with a value other than zero will be considered suitable for collection as polygons. Use input file as mask to remove background polygon! </td></tr>
-<tr>
-<td>o </td><td>output </td><td>std::string </td><td></td><td>Output vector file </td></tr>
-<tr>
-<td>f </td><td>f </td><td>std::string </td><td>SQLite </td><td>Output OGR file format </td></tr>
-<tr>
-<td>b </td><td>band </td><td>int </td><td>0 </td><td>the band to be used from input file </td></tr>
-<tr>
-<td>nodata </td><td>nodata </td><td>double </td><td></td><td>Disgard this nodata value when creating polygons. </td></tr>
-<tr>
-<td>n </td><td>name </td><td>std::string </td><td>DN </td><td>the field name of the output layer </td></tr>
-</table>
-Usage: pkpolygonize -i input [-m mask] -o output</li>
-</ul>
-<h1>Examples </h1>
-<p>Some examples how to use pkpolygonize can be found <a class="el" href="md_examples_pkpolygonize.html#examples_pkpolygonize">here</a> </p>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkpolygonize_8cc_source.html b/doc/html/pkpolygonize_8cc_source.html
deleted file mode 100644
index fa21d87..0000000
--- a/doc/html/pkpolygonize_8cc_source.html
+++ /dev/null
@@ -1,203 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/pkpolygonize.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkpolygonize.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pkpolygonize.cc: program to make vector file from raster image</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "cpl_string.h"</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "gdal_priv.h"</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "gdal.h"</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "imageclasses/ImgReaderGdal.h"</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "imageclasses/ImgWriterGdal.h"</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "imageclasses/ImgWriterOgr.h"</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "ogrsf_frmts.h"</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span> {</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include "gdal_alg.h"</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include "ogr_api.h"</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> }</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> </div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="preprocessor">#ifdef HAVE_CONFIG_H</span></div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="preprocessor"></span><span class="preprocessor">#include <config.h></span></div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="comment">/******************************************************************************/</span></div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span> </div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc,<span class="keywordtype">char</span> **argv) {</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> input_opt(<span class="stringliteral">"i"</span>, <span class="stringliteral">"input"</span>, <span class="stringliteral">"Input image file"</span>);</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> mask_opt(<span class="stringliteral">"m"</span>, <span class="stringliteral">"mask"</span>, <span class="stringliteral">"All pixels in the mask band with a value other than zero will be considered suitable for collection as polygons. Use input file as mask to remove background polygon! "</span>);</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> output_opt(<span class="stringliteral">"o"</span>, <span class="stringliteral">"output"</span>, <span class="stringliteral">"Output vector file"</span>);</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> ogrformat_opt(<span class="stringliteral">"f"</span>, <span class="stringliteral">"f"</span>, <span class="stringliteral">"Output OGR file format"</span>,<span class="stringliteral">"SQLite"</span>);</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> band_opt(<span class="stringliteral">"b"</span>, <span class="stringliteral">"band"</span>, <span class="stringliteral">"the band to be used from input file"</span>, 0);</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> fname_opt(<span class="stringliteral">"n"</span>, <span class="stringliteral">"name"</span>, <span class="stringliteral">"the field name of the output layer"</span>, <span class="stringliteral">"DN"</span>);</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> nodata_opt(<span class="stringliteral">"nodata"</span>, <span class="stringliteral">"nodata"</span>, <span class="stringliteral">"Disgard this nodata value when creating polygons."</span>);</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> verbose_opt(<span class="stringliteral">"v"</span>, <span class="stringliteral">"verbose"</span>, <span class="stringliteral">"verbose mode if > 0"</span>, 0,2);</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span> </div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   <span class="keywordtype">bool</span> doProcess;<span class="comment">//stop process when program was invoked with help option (-h --help)</span></div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     doProcess=input_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     mask_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     output_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>     ogrformat_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>     band_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>     nodata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     fname_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     verbose_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>   }</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> predefinedString){</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     std::cout << predefinedString << std::endl;</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     exit(0);</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>   }</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>   <span class="keywordflow">if</span>(!doProcess){</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     cout << endl;</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     cout << <span class="stringliteral">"Usage: pkpolygonize -i input [-m mask] -o output"</span> << endl;</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     cout << endl;</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     std::cout << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << std::endl;</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   }</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   <span class="keywordflow">if</span>(input_opt.empty()){</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>     std::cerr << <span class="stringliteral">"No input file provided (use option -i). Use --help for help information"</span>;</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>       exit(0);</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>   }</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   <span class="keywordflow">if</span>(output_opt.empty()){</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     std::cerr << <span class="stringliteral">"No output file provided (use option -o). Use --help for help information"</span>;</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>       exit(0);</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>   }</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span> </div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>   GDALAllRegister();</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span> </div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>   <span class="keywordtype">double</span> dfComplete=0.0;</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>   pfnProgress(dfComplete,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>   </div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span> </div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>   <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> maskReader;</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>   GDALRasterBand *maskBand=NULL;</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>   <span class="keywordflow">if</span>(mask_opt.size()){</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>       cout << <span class="stringliteral">"opening mask file "</span> << mask_opt[0] << endl;</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>     maskReader.open(mask_opt[0]);</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>     maskBand = maskReader.getRasterBand(0);</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>   }</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span> </div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>   <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> inputReader(input_opt[0]);</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>   GDALRasterBand  *inputBand;</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>   inputBand=inputReader.getRasterBand(0);</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>   <span class="keywordflow">if</span>(nodata_opt.size())</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>     inputBand->SetNoDataValue(nodata_opt[0]);</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>   <a class="code" href="classImgWriterOgr.html">ImgWriterOgr</a> ogrWriter(output_opt[0],ogrformat_opt[0]);</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>   OGRLayer* theLayer=ogrWriter.createLayer(output_opt[0].substr(output_opt[0].rfind(<span class="charliteral">'/'</span>)+1), inputReader.getProjectionRef());</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>     cout << <span class="stringliteral">"projection: "</span> << inputReader.getProjection() << endl;</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>   ogrWriter.createField(fname_opt[0],OFTInteger);</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span> </div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>   OGRLayerH hOutLayer=(OGRLayerH)ogrWriter.getLayer();</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>     cout << <span class="stringliteral">"GDALPolygonize started..."</span> << endl;</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span> </div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>   <span class="keywordtype">int</span> index=theLayer->GetLayerDefn()->GetFieldIndex(fname_opt[0].c_str());</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>   <span class="keywordflow">if</span>(GDALPolygonize((GDALRasterBandH)inputBand, (GDALRasterBandH)maskBand, hOutLayer,index,NULL,pfnProgress,pProgressArg)!=CE_None)</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>     cerr << CPLGetLastErrorMsg() << endl;</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>   <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>     dfComplete=1.0;</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>     pfnProgress(dfComplete,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>   }</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   cout << <span class="stringliteral">"number of features: "</span> << OGR_L_GetFeatureCount(hOutLayer,TRUE) << endl;</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>   </div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>   inputReader.close();</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>   <span class="keywordflow">if</span>(mask_opt.size())</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>     maskReader.close();</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>   ogrWriter.close();</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span> }</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span> </div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-<div class="ttc" id="classImgWriterOgr_html"><div class="ttname"><a href="classImgWriterOgr.html">ImgWriterOgr</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgWriterOgr_8h_source.html#l00035">ImgWriterOgr.h:35</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkreclass.html b/doc/html/pkreclass.html
deleted file mode 100644
index 5cb488b..0000000
--- a/doc/html/pkreclass.html
+++ /dev/null
@@ -1,110 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: pkreclass</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkreclass </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><p>program to replace pixel values in raster image </p>
-<h2>SYNOPSIS</h2>
-<p><code> Usage: pkreclass -i input [-c from -r to]* -o output </code></p>
-<h1><a class="anchor" id="pkreclass_options"></a>
-Options</h1>
-<ul>
-<li>use either <code>-short</code> or <code>--long</code> options (both <code>--long=value</code> and <code>--long value</code> are supported)</li>
-<li>short option <code>-h</code> shows basic options only, long option <code>--help</code> shows all options <table class="doxtable">
-<tr>
-<th>short</th><th>long</th><th>type</th><th>default</th><th>description  </th></tr>
-<tr>
-<td>i </td><td>input </td><td>std::string </td><td></td><td>Input image </td></tr>
-<tr>
-<td>m </td><td>mask </td><td>std::string </td><td></td><td>Mask image(s) </td></tr>
-<tr>
-<td>msknodata </td><td>msknodata </td><td>unsigned short </td><td>1 </td><td>Mask value(s) where image has nodata. Use one value for each mask, or multiple values for a single mask. </td></tr>
-<tr>
-<td>nodata </td><td>nodata </td><td>int </td><td>0 </td><td>nodata value to put in image if not valid (0) </td></tr>
-<tr>
-<td>code </td><td>code </td><td>std::string </td><td></td><td>Recode text file (2 colums: from to) </td></tr>
-<tr>
-<td>c </td><td>class </td><td>std::string </td><td></td><td>list of classes to reclass (in combination with reclass option) </td></tr>
-<tr>
-<td>r </td><td>reclass </td><td>std::string </td><td></td><td>list of recoded classes (in combination with class option) </td></tr>
-<tr>
-<td>ct </td><td>ct </td><td>std::string </td><td></td><td>color table (file with 5 columns: id R G B ALFA (0: transparent, 255: solid) </td></tr>
-<tr>
-<td>o </td><td>output </td><td>std::string </td><td></td><td>Output mask file </td></tr>
-<tr>
-<td>ot </td><td>otype </td><td>std::string </td><td></td><td>Data type for output image ({Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/CInt16/CInt32/CFloat32/CFloat64}). Empty string: inherit type from input image </td></tr>
-<tr>
-<td>of </td><td>oformat </td><td>std::string </td><td>GTiff </td><td>Output image format (see also gdal_translate) </td></tr>
-<tr>
-<td>b </td><td>band </td><td>unsigned short </td><td>0 </td><td>band index(es) to replace (other bands are copied to output) </td></tr>
-<tr>
-<td>n </td><td>fname </td><td>std::string </td><td>label </td><td>field name of the shape file to be replaced </td></tr>
-<tr>
-<td>co </td><td>co </td><td>std::string </td><td></td><td>Creation option for output file. Multiple options can be specified. </td></tr>
-<tr>
-<td>d </td><td>description </td><td>std::string </td><td></td><td>Set image description </td></tr>
-<tr>
-<td>v </td><td>verbose </td><td>short </td><td>0 </td><td>verbose </td></tr>
-</table>
-Usage: pkreclass -i input [-c from -r to]* -o output</li>
-</ul>
-<h1>Examples </h1>
-<p>Some examples how to use pkreclass can be found <a class="el" href="md_examples_pkreclass.html#examples_pkreclass">here</a> </p>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkreclass_8cc_source.html b/doc/html/pkreclass_8cc_source.html
deleted file mode 100644
index 33b8e78..0000000
--- a/doc/html/pkreclass_8cc_source.html
+++ /dev/null
@@ -1,436 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/pkreclass.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkreclass.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pkreclass.cc: program to replace pixel values in raster image</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <assert.h></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <map></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "imageclasses/ImgReaderOgr.h"</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "imageclasses/ImgWriterOgr.h"</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "imageclasses/ImgReaderGdal.h"</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "imageclasses/ImgWriterGdal.h"</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> </div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="comment">/******************************************************************************/</span></div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span> </div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span> {</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> input_opt(<span class="stringliteral">"i"</span>, <span class="stringliteral">"input"</span>, <span class="stringliteral">"Input image"</span>);</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> mask_opt(<span class="stringliteral">"m"</span>, <span class="stringliteral">"mask"</span>, <span class="stringliteral">"Mask image(s)"</span>);</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> output_opt(<span class="stringliteral">"o"</span>, <span class="stringliteral">"output"</span>, <span class="stringliteral">"Output mask file"</span>);</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> masknodata_opt(<span class="stringliteral">"msknodata"</span>, <span class="stringliteral">"msknodata"</span>, <span class="stringliteral">"Mask value(s) where image has nodata. Use one value for each mask, or multiple values for a single mask."</span>, 1);</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> nodata_opt(<span class="stringliteral">"nodata"</span>, <span class="stringliteral">"nodata"</span>, <span class="stringliteral">"nodata value to put in image if not valid (0)"</span>, 0);</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> colorTable_opt(<span class="stringliteral">"ct"</span>, <span class="stringliteral">"ct"</span>, <span class="stringliteral">"color table (file with 5 columns: id R G B ALFA (0: transparent, 255: solid)"</span>);</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a>  band_opt(<span class="stringliteral">"b"</span>, <span class="stringliteral">"band"</span>, <span class="stringliteral">"band index(es) to replace (other bands are copied to output)"</span>, 0);</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> type_opt(<span class="stringliteral">"ot"</span>, <span class="stringliteral">"otype"</span>, <span class="stringliteral">"Data type for output image ({Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/CInt16/CInt32/CFloat32/CFloat64}). Empty string: inherit type from input image"</span>, <span class="stringliteral [...]
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  oformat_opt(<span class="stringliteral">"of"</span>, <span class="stringliteral">"oformat"</span>, <span class="stringliteral">"Output image format (see also gdal_translate)."</span>,<span class="stringliteral">"GTiff"</span>);</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> code_opt(<span class="stringliteral">"code"</span>, <span class="stringliteral">"code"</span>, <span class="stringliteral">"Recode text file (2 colums: from to)"</span>);</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> class_opt(<span class="stringliteral">"c"</span>, <span class="stringliteral">"class"</span>, <span class="stringliteral">"list of classes to reclass (in combination with reclass option)"</span>);</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> reclass_opt(<span class="stringliteral">"r"</span>, <span class="stringliteral">"reclass"</span>, <span class="stringliteral">"list of recoded classes (in combination with class option)"</span>);</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> fieldname_opt(<span class="stringliteral">"n"</span>, <span class="stringliteral">"fname"</span>, <span class="stringliteral">"field name of the shape file to be replaced"</span>, <span class="stringliteral">"label"</span>);</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> option_opt(<span class="stringliteral">"co"</span>, <span class="stringliteral">"co"</span>, <span class="stringliteral">"Creation option for output file. Multiple options can be specified."</span>);</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> description_opt(<span class="stringliteral">"d"</span>, <span class="stringliteral">"description"</span>, <span class="stringliteral">"Set image description"</span>);</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> verbose_opt(<span class="stringliteral">"v"</span>, <span class="stringliteral">"verbose"</span>, <span class="stringliteral">"verbose"</span>, 0);</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span> </div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   <span class="keywordtype">bool</span> doProcess;<span class="comment">//stop process when program was invoked with help option (-h --help)</span></div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     doProcess=input_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     mask_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     masknodata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>     nodata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>     code_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>     class_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     reclass_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     colorTable_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     output_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     type_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     oformat_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     band_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     fieldname_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     option_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     description_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     verbose_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>   }</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> predefinedString){</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     std::cout << predefinedString << std::endl;</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>     exit(0);</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   }</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>   <span class="keywordflow">if</span>(!doProcess){</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>     cout << endl;</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     cout << <span class="stringliteral">"Usage: pkreclass -i input [-c from -r to]* -o output"</span> << endl;</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     cout << endl;</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     std::cout << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << std::endl;</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>   }</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span> </div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>   <span class="keywordflow">if</span>(input_opt.empty()){</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>     std::cerr << <span class="stringliteral">"No input file provided (use option -i). Use --help for help information"</span> << std::endl;</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>     exit(0);</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   }</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>   <span class="keywordflow">if</span>(output_opt.empty()){</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     std::cerr << <span class="stringliteral">"No output file provided (use option -o). Use --help for help information"</span> << std::endl;</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>     exit(0);</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>   }</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>     </div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>   <span class="comment">// vector<short> bandVector;</span></div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>   <span class="comment">// for(int iband=0;iband<band_opt.size();++iband)</span></div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>   <span class="comment">//   bandVector.push_back(band_opt[iband]);</span></div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>   map<string,string> codemapString;<span class="comment">//map with codes: codemapString[theKey(from)]=theValue(to)</span></div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>   map<double,double> codemap;<span class="comment">//map with codes: codemap[theKey(from)]=theValue(to)</span></div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>   <span class="keywordflow">if</span>(code_opt.size()){</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>       cout << <span class="stringliteral">"opening code text file "</span> << code_opt[0] << endl;</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>     ifstream codefile;</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>     codefile.open(code_opt[0].c_str());</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>     <span class="keywordtype">string</span> theKey;</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>     <span class="keywordtype">string</span> theValue;</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>     <span class="keywordflow">while</span>(codefile>>theKey){</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>       codefile >> theValue;</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>       codemapString[theKey]=theValue;</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>       codemap[string2type<double>(theKey)]=string2type<double>(theValue);</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>     }</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>     codefile.close();</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>   }</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>   <span class="keywordflow">else</span>{<span class="comment">//use combination of class_opt and reclass_opt</span></div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>     assert(class_opt.size()==reclass_opt.size());</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<class_opt.size();++iclass){</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>       codemapString[class_opt[iclass]]=reclass_opt[iclass];</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>       codemap[string2type<double>(class_opt[iclass])]=string2type<double>(reclass_opt[iclass]);</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>     }</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>   }</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>   assert(codemapString.size());</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>   assert(codemap.size());</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>   <span class="comment">//if verbose true, print the codes to screen</span></div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>   <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>     map<string,string>::iterator mit;</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>     cout << codemapString.size() << <span class="stringliteral">" codes used: "</span> << endl;</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>     <span class="keywordflow">for</span>(mit=codemapString.begin();mit!=codemapString.end();++mit)</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>       cout << (*mit).first << <span class="stringliteral">" "</span> << (*mit).second << endl;</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>   }</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>   <span class="keywordtype">bool</span> refIsRaster=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>   <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a> ogrReader;</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>     ogrReader.open(input_opt[0]);</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>   }</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorString){</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>     refIsRaster=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>   }</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>   <span class="comment">// if(input_opt[0].find(".shp")!=string::npos){//shape file</span></div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>   <span class="keywordflow">if</span>(!refIsRaster){</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>       cout << <span class="stringliteral">"opening "</span> << input_opt[0] << <span class="stringliteral">" for reading "</span> << endl;</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>     <span class="comment">// ImgReaderOgr ogrReader(input_opt[0]);</span></div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>       cout << <span class="stringliteral">"opening "</span> << output_opt[0] << <span class="stringliteral">" for writing "</span> << endl;</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>     <a class="code" href="classImgWriterOgr.html">ImgWriterOgr</a> ogrWriter(output_opt[0],ogrReader);</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>       cout << <span class="stringliteral">"copied layer from "</span> << input_opt[0] << endl << flush;</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>     OGRFeatureDefn *poFDefn = ogrWriter.getLayer()->GetLayerDefn();</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>     <span class="comment">//start reading features from the layer</span></div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>       cout << <span class="stringliteral">"reset reading"</span> << endl;</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>     ogrReader.getLayer()->ResetReading();</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>     <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> ifeature=0;</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>       cout << <span class="stringliteral">"going through features"</span> << endl << flush;</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>     <span class="keywordflow">while</span>(<span class="keyword">true</span>){</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span> <span class="comment">//     while( (poFeature = ogrWriter.getLayer()->GetNextFeature()) != NULL ){</span></div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>       OGRFeature *poFeature;</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>       poFeature=ogrReader.getLayer()->GetNextFeature();</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>       <span class="keywordflow">if</span>(poFeature== NULL)</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>       OGRFeatureDefn *poFDefn = ogrWriter.getLayer()->GetLayerDefn();</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>       <span class="keywordtype">string</span> featurename;</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iField=0;iField<poFDefn->GetFieldCount();++iField){</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>         OGRFieldDefn *poFieldDefn = poFDefn->GetFieldDefn(iField);</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>         <span class="keywordtype">string</span> fieldname=poFieldDefn->GetNameRef();</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>         <span class="keywordflow">if</span>(fieldname==fieldname_opt[0]){</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>           <span class="keywordtype">string</span> fromClass=poFeature->GetFieldAsString(iField);</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>           <span class="keywordtype">string</span> toClass=fromClass;</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>           <span class="keywordflow">if</span>(codemapString.find(fromClass)!=codemapString.end())</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>             toClass=codemapString[fromClass];</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>           poFeature->SetField(iField,toClass.c_str());</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>           <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>             cout << <span class="stringliteral">"feature "</span> << ifeature << <span class="stringliteral">": "</span> << fromClass << <span class="stringliteral">"->"</span> << poFeature->GetFieldAsInteger(iField) << endl << flush;</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span> <span class="comment">//             cout << "feature " << ifeature << ": " << fromClass << "->" << toClass << endl << flush;</span></div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>         }</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>       }</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>       <span class="comment">//do not forget to actually write feature to file!!!</span></div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>       ogrWriter.createFeature(poFeature);</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>       OGRFeature::DestroyFeature( poFeature );</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>       ++ifeature;</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>     }</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>        cout << <span class="stringliteral">"replaced "</span> << ifeature << <span class="stringliteral">" features"</span> << endl;</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>     ogrReader.close();</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>     ogrWriter.close();</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>   }</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>   <span class="keywordflow">else</span>{<span class="comment">//image file</span></div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>     <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> inputReader;</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>     vector<ImgReaderGdal> maskReader(mask_opt.size()); </div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>     <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> outputWriter;</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>       cout << <span class="stringliteral">"opening input image file "</span> << input_opt[0] << endl;</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>     inputReader.open(input_opt[0]);</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> imask=0;imask<mask_opt.size();++imask){</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>         cout << <span class="stringliteral">"opening mask image file "</span> << mask_opt[imask] << endl;</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>       maskReader[imask].open(mask_opt[imask]);</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>     }</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>     <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>       cout << <span class="stringliteral">"opening output image file "</span> << output_opt[0] << endl;</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>       cout << <span class="stringliteral">"data type: "</span> << type_opt[0] << endl;</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>     }</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>     <span class="comment">//create output image with user defined data type </span></div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>     GDALDataType theType=GDT_Unknown;</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>       cout << <span class="stringliteral">"possible output data types: "</span>;</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iType = 0; iType < GDT_TypeCount; ++iType){</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>         cout << <span class="stringliteral">" "</span> << GDALGetDataTypeName((GDALDataType)iType);</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>       <span class="keywordflow">if</span>( GDALGetDataTypeName((GDALDataType)iType) != NULL</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>           && EQUAL(GDALGetDataTypeName((GDALDataType)iType),</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>                    type_opt[0].c_str()))</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>         theType=(GDALDataType) iType;</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>     }</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>     <span class="keywordflow">if</span>(theType==GDT_Unknown)</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>       theType=inputReader.getDataType();</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>       cout << endl << <span class="stringliteral">"Output pixel type:  "</span> << GDALGetDataTypeName(theType) << endl;</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>     <span class="keywordflow">if</span>(option_opt.findSubstring(<span class="stringliteral">"INTERLEAVE="</span>)==option_opt.end()){</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>       <span class="keywordtype">string</span> theInterleave=<span class="stringliteral">"INTERLEAVE="</span>;</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>       theInterleave+=inputReader.getInterleave();</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>       option_opt.push_back(theInterleave);</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>     }</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>     outputWriter.open(output_opt[0],inputReader.nrOfCol(),inputReader.nrOfRow(),inputReader.nrOfBand(),theType,oformat_opt[0],option_opt);</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<inputReader.nrOfBand();++iband)</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>       outputWriter.GDALSetNoDataValue(nodata_opt[0],iband);</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>     <span class="keywordflow">if</span>(description_opt.size())</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>       outputWriter.setImageDescription(description_opt[0]);</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span> </div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>     <span class="keywordflow">if</span>(colorTable_opt.size()){</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>       <span class="keywordflow">if</span>(colorTable_opt[0]!=<span class="stringliteral">"none"</span>)</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>         outputWriter.setColorTable(colorTable_opt[0]);</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>     }</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (inputReader.getColorTable()!=NULL)<span class="comment">//copy colorTable from input image</span></div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>       outputWriter.setColorTable(inputReader.getColorTable());</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>     </div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>     <span class="comment">//if input image is georeferenced, copy projection info to output image</span></div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>     <span class="keywordflow">if</span>(inputReader.isGeoRef()){</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> imask=0;imask<mask_opt.size();++imask)</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>         assert(maskReader[imask].isGeoRef());</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>     }</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>     outputWriter.copyGeoTransform(inputReader);</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>     outputWriter.setProjection(inputReader.getProjection());</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>     <span class="keywordtype">double</span> ulx,uly,lrx,lry;</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>     inputReader.getBoundingBox(ulx,uly,lrx,lry);</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>     outputWriter.copyGeoTransform(inputReader);</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>     assert(nodata_opt.size()==masknodata_opt.size());</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>     <span class="keywordflow">if</span>(verbose_opt[0]&&mask_opt.size()){</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iv=0;iv<masknodata_opt.size();++iv)</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>         cout << masknodata_opt[iv] << <span class="stringliteral">"->"</span> << nodata_opt[iv] << endl;</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>     }</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span> </div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>     assert(outputWriter.nrOfCol()==inputReader.nrOfCol());</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>     <span class="comment">// Vector2d<int> lineInput(inputReader.nrOfBand(),inputReader.nrOfCol());</span></div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>     <a class="code" href="classVector2d.html">Vector2d<double></a> lineInput(inputReader.nrOfBand(),inputReader.nrOfCol());</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>     <a class="code" href="classVector2d.html">Vector2d<short></a> lineMask(mask_opt.size());</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> imask=0;imask<mask_opt.size();++imask)</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>       lineMask[imask].resize(maskReader[imask].nrOfCol());</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>     <a class="code" href="classVector2d.html">Vector2d<double></a> lineOutput(outputWriter.nrOfBand(),outputWriter.nrOfCol());</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>     <span class="keywordtype">int</span> irow=0;</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>     <span class="keywordtype">int</span> icol=0;</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>     <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>     <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>     GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>     <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>     <span class="keywordtype">double</span> oldRowMask=-1;</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>     <span class="keywordflow">for</span>(irow=0;irow<inputReader.nrOfRow();++irow){</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>       <span class="comment">//read line in lineInput buffer</span></div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<inputReader.nrOfBand();++iband){</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>         <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>           <span class="comment">// inputReader.readData(lineInput[iband],GDT_Int32,irow,iband);</span></div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>           inputReader.readData(lineInput[iband],GDT_Float64,irow,iband);</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>         }</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>         <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>           cerr << errorstring << endl;</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>           exit(1);</div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>         }</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>       }</div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>       <span class="keywordtype">double</span> x,y;<span class="comment">//geo coordinates</span></div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>       <span class="keywordtype">double</span> colMask,rowMask;<span class="comment">//image coordinates in mask image</span></div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>       <span class="keywordflow">for</span>(icol=0;icol<inputReader.nrOfCol();++icol){</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>         <span class="keywordtype">bool</span> masked=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>         <span class="keywordflow">if</span>(mask_opt.size()>1){<span class="comment">//multiple masks</span></div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> imask=0;imask<mask_opt.size();++imask){</div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>         inputReader.image2geo(icol,irow,x,y);</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>         maskReader[imask].geo2image(x,y,colMask,rowMask);</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>             <span class="keywordflow">if</span>(static_cast<int>(rowMask)!=static_cast<int>(oldRowMask)){</div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>               assert(rowMask>=0&&rowMask<maskReader[imask].nrOfRow());</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>               <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>                 maskReader[imask].readData(lineMask[imask],GDT_Int16,static_cast<int>(rowMask));</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>               }</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>               <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>                 cerr << errorstring << endl;</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>                 exit(1);</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>               }</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>               oldRowMask=rowMask;</div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>             }</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>             <span class="keywordtype">short</span> ivalue=0;</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>             <span class="keywordflow">if</span>(mask_opt.size()==masknodata_opt.size())<span class="comment">//one invalid value for each mask</span></div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>               ivalue=masknodata_opt[imask];</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>             <span class="keywordflow">else</span><span class="comment">//use same invalid value for each mask</span></div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>               ivalue=masknodata_opt[0];</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>             <span class="keywordflow">if</span>(lineMask[imask][colMask]==ivalue){</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>               <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<inputReader.nrOfBand();++iband)</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>                 lineInput[iband][icol]=nodata_opt[imask];</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>               masked=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>             }</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>           }</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>         }</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(mask_opt.size()){<span class="comment">//potentially more invalid values for single mask</span></div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>       inputReader.image2geo(icol,irow,x,y);</div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>       maskReader[0].geo2image(x,y,colMask,rowMask);</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>           <span class="keywordflow">if</span>(static_cast<int>(rowMask)!=static_cast<int>(oldRowMask)){</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>             assert(rowMask>=0&&rowMask<maskReader[0].nrOfRow());</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>             <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>               maskReader[0].readData(lineMask[0],GDT_Int16,static_cast<int>(rowMask));</div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>             }</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>             <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>               cerr << errorstring << endl;</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>               exit(1);</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>             }</div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>             oldRowMask=rowMask;</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>           }</div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ivalue=0;ivalue<masknodata_opt.size();++ivalue){</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>             assert(masknodata_opt.size()==nodata_opt.size());</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>             <span class="keywordflow">if</span>(lineMask[0][colMask]==masknodata_opt[ivalue]){</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>               <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<inputReader.nrOfBand();++iband)</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>                 lineInput[iband][icol]=nodata_opt[ivalue];</div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>               masked=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>             }</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>           }</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>         }</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<lineOutput.size();++iband){</div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>           lineOutput[iband][icol]=lineInput[iband][icol];</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>           <span class="keywordflow">if</span>(find(band_opt.begin(),band_opt.end(),iband)!=band_opt.end()){</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>             <span class="keywordflow">if</span>(!masked && codemap.find(lineInput[iband][icol])!=codemap.end()){</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>               <span class="keywordtype">double</span> toValue=codemap[lineInput[iband][icol]];</div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>           lineOutput[iband][icol]=toValue;</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>         }</div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>       }</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>         }</div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>       }</div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>       <span class="comment">//write buffer lineOutput to output file</span></div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<outputWriter.nrOfBand();++iband)</div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>           outputWriter.writeData(lineOutput[iband],GDT_Float64,irow,iband);</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>       }</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>         cerr << errorstring << endl;</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>         exit(1);</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>       }</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>       <span class="comment">//progress bar</span></div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>       progress=<span class="keyword">static_cast<</span><span class="keywordtype">float</span><span class="keyword">></span>((irow+1.0)/outputWriter.nrOfRow());</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>       pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>     }</div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>     inputReader.close();</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>     outputWriter.close();</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>   }</div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span> }</div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-<div class="ttc" id="classImgWriterGdal_html"><div class="ttname"><a href="classImgWriterGdal.html">ImgWriterGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgWriterGdal_8h_source.html#l00033">ImgWriterGdal.h:33</a></div></div>
-<div class="ttc" id="classVector2d_html"><div class="ttname"><a href="classVector2d.html">Vector2d< double ></a></div></div>
-<div class="ttc" id="classImgReaderOgr_html"><div class="ttname"><a href="classImgReaderOgr.html">ImgReaderOgr</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderOgr_8h_source.html#l00035">ImgReaderOgr.h:35</a></div></div>
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-<div class="ttc" id="classImgWriterOgr_html"><div class="ttname"><a href="classImgWriterOgr.html">ImgWriterOgr</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgWriterOgr_8h_source.html#l00035">ImgWriterOgr.h:35</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkreclass_8py_source.html b/doc/html/pkreclass_8py_source.html
deleted file mode 100644
index 1ee19ca..0000000
--- a/doc/html/pkreclass_8py_source.html
+++ /dev/null
@@ -1,211 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/pkreclass.py Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkreclass.py</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment"># -*- coding: utf-8 -*-</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> </div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="stringliteral">    pkreclass.py</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="stringliteral">    ---------------------</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="stringliteral">    Date                 : April 2015</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="stringliteral">    Copyright            : (C) 2015 by Pieter Kempeneers</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="stringliteral">    Email                : kempenep at gmail dot com</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="stringliteral">*   This program is free software; you can redistribute it and/or modify  *</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="stringliteral">*   it under the terms of the GNU General Public License as published by  *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="stringliteral">*   the Free Software Foundation; either version 2 of the License, or     *</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="stringliteral">*   (at your option) any later version.                                   *</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> __author__ = <span class="stringliteral">'Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> __date__ = <span class="stringliteral">'April 2015'</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> __copyright__ = <span class="stringliteral">'(C) 2015, Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"># This will get replaced with a git SHA1 when you do a git archive</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> __revision__ = <span class="stringliteral">'$Format:%H$'</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">import</span> os</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">from</span> pktoolsUtils <span class="keyword">import</span> pktoolsUtils</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">from</span> pktoolsAlgorithm <span class="keyword">import</span> pktoolsAlgorithm</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterMultipleInput</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterRaster</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">from</span> processing.core.outputs <span class="keyword">import</span> OutputRaster</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterSelection</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterNumber</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterString</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterBoolean</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterExtent</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
-<div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classqgis_1_1pkreclass_1_1pkreclass.html">   38</a></span> <span class="keyword">class </span><a class="code" href="classqgis_1_1pkreclass_1_1pkreclass.html">pkreclass</a>(pktoolsAlgorithm):</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> </div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     INPUT = <span class="stringliteral">"INPUT"</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     OUTPUT = <span class="stringliteral">"OUTPUT"</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     CLASS = <span class="stringliteral">"CLASS"</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     BAND = <span class="stringliteral">"BAND"</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     RECLASS = <span class="stringliteral">"RECLASS"</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     MASK = <span class="stringliteral">"MASK"</span></div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     MSKNODATA = <span class="stringliteral">"MSKNODATA"</span></div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     NODATA = <span class="stringliteral">"NODATA"</span></div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     RTYPE = <span class="stringliteral">'RTYPE'</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     TYPE = [<span class="stringliteral">'none'</span>, <span class="stringliteral">'Byte'</span>,<span class="stringliteral">'Int16'</span>,<span class="stringliteral">'UInt16'</span>,<span class="stringliteral">'UInt32'</span>,<span class="stringliteral">'Int32'</span>,<span class="stringliteral">'Float32'</span>,<span class="stringliteral">'Float64&# [...]
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     EXTRA = <span class="stringliteral">'EXTRA'</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span> </div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     <span class="keyword">def </span>cliName(self):</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>         <span class="keywordflow">return</span> <span class="stringliteral">"pkreclass"</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span> </div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     <span class="keyword">def </span>defineCharacteristics(self):</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>         self.<a class="code" href="classqgis_1_1pkreclass_1_1pkreclass.html#a2d3e9d7948ff61e49ecaa646ace3b51c">name</a> = <span class="stringliteral">"reclass raster datasets"</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>         self.<a class="code" href="classqgis_1_1pkreclass_1_1pkreclass.html#a5474989e8a32b4f84da61b1030d928d4">group</a> = <span class="stringliteral">"[pktools] raster"</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>         self.addParameter(ParameterMultipleInput(self.<a class="code" href="classqgis_1_1pkreclass_1_1pkreclass.html#aac30b4b09ec8af2b365ffc60dd969fa4">INPUT</a>, <span class="stringliteral">'Input layer raster data set'</span>,ParameterMultipleInput.TYPE_RASTER))</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>         self.addOutput(OutputRaster(self.<a class="code" href="classqgis_1_1pkreclass_1_1pkreclass.html#ac06924e2f6d01acffb97d97f5ed30550">OUTPUT</a>, <span class="stringliteral">"Output raster data set"</span>))</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkreclass_1_1pkreclass.html#a670784309f5dde13aa8d7c8956b85501">BAND</a>, <span class="stringliteral">"Band index(es) to replace, e.g., 0;1;2 (other bands are copied to output)"</span>, <span class="stringliteral">'0'</span>))</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>         self.addParameter(ParameterRaster(self.<a class="code" href="classqgis_1_1pkreclass_1_1pkreclass.html#a8d00f95e83e048f830d3541e0006412a">MASK</a>, <span class="stringliteral">"Mask raster dataset"</span>,optional=<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkreclass_1_1pkreclass.html#ad9cb8a5b163ad79ff18263dac1c27ea9">MSKNODATA</a>, <span class="stringliteral">"Mask value(s) not to consider for classification (e.g., 0;255)"</span>,<span class="stringliteral">"0"</span>))</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkreclass_1_1pkreclass.html#a6eee06a836cf0cda3bb7d4e471dd0ff8">CLASS</a>, <span class="stringliteral">"list of classes to reclass, in combination with reclass option, e.g., 0;1;2;3"</span>,<span class="stringliteral">""</span>))</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkreclass_1_1pkreclass.html#ab677fcc1481ee0f4804a64ba5a9ccf41">RECLASS</a>, <span class="stringliteral">"list of recoded classes, in combination with class option e.g., 10;11;12;13"</span>,<span class="stringliteral">""</span>))</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>         self.addParameter(ParameterNumber(self.<a class="code" href="classqgis_1_1pkreclass_1_1pkreclass.html#a377d3003bdce66a2ef2083bcd439950f">NODATA</a>, <span class="stringliteral">"nodata value to put in image if not valid"</span>,0,<span class="keywordtype">None</span>,0))</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span> </div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pkreclass_1_1pkreclass.html#a7b77eea90f50504357742100c95ac454">RTYPE</a>, <span class="stringliteral">'Output raster type (leave as none to keep original type)'</span>, self.<a class="code" href="classqgis_1_1pkreclass_1_1pkreclass.html#af8727418e991db1564e423d9ebeb2c89">TYPE</a>, 0))</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pkreclass_1_1pkreclass.html#a10e1786759936dd074581841f73c2505">EXTRA</a>,</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>                           <span class="stringliteral">'Additional parameters'</span>, <span class="stringliteral">'-of GTiff'</span>, optional=<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span> </div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     <span class="keyword">def </span>processAlgorithm(self, progress):</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>         cliPath = <span class="stringliteral">'"'</span> + os.path.join(pktoolsUtils.pktoolsPath(), self.<a class="code" href="classqgis_1_1pkreclass_1_1pkreclass.html#a1e3b6410096d899e755b4c3b8ceb2b63">cliName</a>()) + <span class="stringliteral">'"'</span></div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>         commands = [cliPath]</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span> </div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>         input=self.getParameterValue(self.<a class="code" href="classqgis_1_1pkreclass_1_1pkreclass.html#aac30b4b09ec8af2b365ffc60dd969fa4">INPUT</a>)</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>         commands.append(<span class="stringliteral">'-i'</span>)</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>         commands.append(<span class="stringliteral">'"'</span> + input + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span> </div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>         <span class="keywordflow">if</span> self.<a class="code" href="classqgis_1_1pkreclass_1_1pkreclass.html#af8727418e991db1564e423d9ebeb2c89">TYPE</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pkreclass_1_1pkreclass.html#a7b77eea90f50504357742100c95ac454">RTYPE</a>)] != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>             commands.append(<span class="stringliteral">'-ot'</span>)</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>             commands.append(self.<a class="code" href="classqgis_1_1pkreclass_1_1pkreclass.html#af8727418e991db1564e423d9ebeb2c89">TYPE</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pkreclass_1_1pkreclass.html#a7b77eea90f50504357742100c95ac454">RTYPE</a>)])</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span> </div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>         output=self.getOutputValue(self.<a class="code" href="classqgis_1_1pkreclass_1_1pkreclass.html#ac06924e2f6d01acffb97d97f5ed30550">OUTPUT</a>)</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>         commands.append(<span class="stringliteral">"-o"</span>)</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>         commands.append(<span class="stringliteral">'"'</span> + output + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span> </div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>         commands.append(<span class="stringliteral">'-nodata'</span>)</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>         commands.append(str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pkreclass_1_1pkreclass.html#a377d3003bdce66a2ef2083bcd439950f">NODATA</a>)))</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>         </div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>         band=str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pkreclass_1_1pkreclass.html#a670784309f5dde13aa8d7c8956b85501">BAND</a>))</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>         <span class="keywordflow">if</span> band != <span class="stringliteral">''</span>:</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>             bandValues = band.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>             <span class="keywordflow">for</span> bandValue <span class="keywordflow">in</span> bandValues:</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>                 commands.append(<span class="stringliteral">'-b'</span>)</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>                 commands.append(bandValue)</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span> </div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>         theclass=str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pkreclass_1_1pkreclass.html#a6eee06a836cf0cda3bb7d4e471dd0ff8">CLASS</a>))</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>         <span class="keywordflow">if</span> theclass != <span class="stringliteral">''</span>:</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>             classValues = theclass.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>             <span class="keywordflow">for</span> classValue <span class="keywordflow">in</span> classValues:</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>                 commands.append(<span class="stringliteral">'-c'</span>)</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>                 commands.append(classValue)</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>         reclass=str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pkreclass_1_1pkreclass.html#ab677fcc1481ee0f4804a64ba5a9ccf41">RECLASS</a>))</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>         <span class="keywordflow">if</span> reclass != <span class="stringliteral">''</span>:</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>             reclassValues = reclass.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>             <span class="keywordflow">for</span> reclassValue <span class="keywordflow">in</span> reclassValues:</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>                 commands.append(<span class="stringliteral">'-r'</span>)</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>                 commands.append(reclassValue)</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span> </div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>         mask = str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pkreclass_1_1pkreclass.html#a8d00f95e83e048f830d3541e0006412a">MASK</a>))</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>         <span class="keywordflow">if</span> mask != <span class="stringliteral">"None"</span>:</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>             commands.append(<span class="stringliteral">'-m'</span>)</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>             commands.append(mask)</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>             msknodata=str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pkreclass_1_1pkreclass.html#ad9cb8a5b163ad79ff18263dac1c27ea9">MSKNODATA</a>))</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>             msknodataValues = msknodata.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>             <span class="keywordflow">for</span> msknodataValue <span class="keywordflow">in</span> msknodataValues:</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>                 commands.append(<span class="stringliteral">'-msknodata'</span>)</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>                 commands.append(msknodataValue)</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span> </div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>         extra = str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pkreclass_1_1pkreclass.html#a10e1786759936dd074581841f73c2505">EXTRA</a>))</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>         <span class="keywordflow">if</span> len(extra) > 0:</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>             commands.append(extra)</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span> </div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>         pktoolsUtils.runpktools(commands, progress)</div>
-<div class="ttc" id="classqgis_1_1pkreclass_1_1pkreclass_html_ad9cb8a5b163ad79ff18263dac1c27ea9"><div class="ttname"><a href="classqgis_1_1pkreclass_1_1pkreclass.html#ad9cb8a5b163ad79ff18263dac1c27ea9">qgis.pkreclass.pkreclass.MSKNODATA</a></div><div class="ttdeci">string MSKNODATA</div><div class="ttdef"><b>Definition:</b> <a href="pkreclass_8py_source.html#l00046">pkreclass.py:46</a></div></div>
-<div class="ttc" id="classqgis_1_1pkreclass_1_1pkreclass_html_aac30b4b09ec8af2b365ffc60dd969fa4"><div class="ttname"><a href="classqgis_1_1pkreclass_1_1pkreclass.html#aac30b4b09ec8af2b365ffc60dd969fa4">qgis.pkreclass.pkreclass.INPUT</a></div><div class="ttdeci">string INPUT</div><div class="ttdef"><b>Definition:</b> <a href="pkreclass_8py_source.html#l00040">pkreclass.py:40</a></div></div>
-<div class="ttc" id="classqgis_1_1pkreclass_1_1pkreclass_html_a1e3b6410096d899e755b4c3b8ceb2b63"><div class="ttname"><a href="classqgis_1_1pkreclass_1_1pkreclass.html#a1e3b6410096d899e755b4c3b8ceb2b63">qgis.pkreclass.pkreclass.cliName</a></div><div class="ttdeci">def cliName</div><div class="ttdef"><b>Definition:</b> <a href="pkreclass_8py_source.html#l00052">pkreclass.py:52</a></div></div>
-<div class="ttc" id="classqgis_1_1pkreclass_1_1pkreclass_html_a6eee06a836cf0cda3bb7d4e471dd0ff8"><div class="ttname"><a href="classqgis_1_1pkreclass_1_1pkreclass.html#a6eee06a836cf0cda3bb7d4e471dd0ff8">qgis.pkreclass.pkreclass.CLASS</a></div><div class="ttdeci">string CLASS</div><div class="ttdef"><b>Definition:</b> <a href="pkreclass_8py_source.html#l00042">pkreclass.py:42</a></div></div>
-<div class="ttc" id="classqgis_1_1pkreclass_1_1pkreclass_html_a670784309f5dde13aa8d7c8956b85501"><div class="ttname"><a href="classqgis_1_1pkreclass_1_1pkreclass.html#a670784309f5dde13aa8d7c8956b85501">qgis.pkreclass.pkreclass.BAND</a></div><div class="ttdeci">string BAND</div><div class="ttdef"><b>Definition:</b> <a href="pkreclass_8py_source.html#l00043">pkreclass.py:43</a></div></div>
-<div class="ttc" id="classqgis_1_1pkreclass_1_1pkreclass_html_ab677fcc1481ee0f4804a64ba5a9ccf41"><div class="ttname"><a href="classqgis_1_1pkreclass_1_1pkreclass.html#ab677fcc1481ee0f4804a64ba5a9ccf41">qgis.pkreclass.pkreclass.RECLASS</a></div><div class="ttdeci">string RECLASS</div><div class="ttdef"><b>Definition:</b> <a href="pkreclass_8py_source.html#l00044">pkreclass.py:44</a></div></div>
-<div class="ttc" id="classqgis_1_1pkreclass_1_1pkreclass_html_a7b77eea90f50504357742100c95ac454"><div class="ttname"><a href="classqgis_1_1pkreclass_1_1pkreclass.html#a7b77eea90f50504357742100c95ac454">qgis.pkreclass.pkreclass.RTYPE</a></div><div class="ttdeci">string RTYPE</div><div class="ttdef"><b>Definition:</b> <a href="pkreclass_8py_source.html#l00048">pkreclass.py:48</a></div></div>
-<div class="ttc" id="classqgis_1_1pkreclass_1_1pkreclass_html_a8d00f95e83e048f830d3541e0006412a"><div class="ttname"><a href="classqgis_1_1pkreclass_1_1pkreclass.html#a8d00f95e83e048f830d3541e0006412a">qgis.pkreclass.pkreclass.MASK</a></div><div class="ttdeci">string MASK</div><div class="ttdef"><b>Definition:</b> <a href="pkreclass_8py_source.html#l00045">pkreclass.py:45</a></div></div>
-<div class="ttc" id="classqgis_1_1pkreclass_1_1pkreclass_html_a10e1786759936dd074581841f73c2505"><div class="ttname"><a href="classqgis_1_1pkreclass_1_1pkreclass.html#a10e1786759936dd074581841f73c2505">qgis.pkreclass.pkreclass.EXTRA</a></div><div class="ttdeci">string EXTRA</div><div class="ttdef"><b>Definition:</b> <a href="pkreclass_8py_source.html#l00050">pkreclass.py:50</a></div></div>
-<div class="ttc" id="classqgis_1_1pkreclass_1_1pkreclass_html_a2d3e9d7948ff61e49ecaa646ace3b51c"><div class="ttname"><a href="classqgis_1_1pkreclass_1_1pkreclass.html#a2d3e9d7948ff61e49ecaa646ace3b51c">qgis.pkreclass.pkreclass.name</a></div><div class="ttdeci">name</div><div class="ttdef"><b>Definition:</b> <a href="pkreclass_8py_source.html#l00056">pkreclass.py:56</a></div></div>
-<div class="ttc" id="classqgis_1_1pkreclass_1_1pkreclass_html_ac06924e2f6d01acffb97d97f5ed30550"><div class="ttname"><a href="classqgis_1_1pkreclass_1_1pkreclass.html#ac06924e2f6d01acffb97d97f5ed30550">qgis.pkreclass.pkreclass.OUTPUT</a></div><div class="ttdeci">string OUTPUT</div><div class="ttdef"><b>Definition:</b> <a href="pkreclass_8py_source.html#l00041">pkreclass.py:41</a></div></div>
-<div class="ttc" id="classqgis_1_1pkreclass_1_1pkreclass_html_af8727418e991db1564e423d9ebeb2c89"><div class="ttname"><a href="classqgis_1_1pkreclass_1_1pkreclass.html#af8727418e991db1564e423d9ebeb2c89">qgis.pkreclass.pkreclass.TYPE</a></div><div class="ttdeci">list TYPE</div><div class="ttdef"><b>Definition:</b> <a href="pkreclass_8py_source.html#l00049">pkreclass.py:49</a></div></div>
-<div class="ttc" id="classqgis_1_1pkreclass_1_1pkreclass_html"><div class="ttname"><a href="classqgis_1_1pkreclass_1_1pkreclass.html">qgis.pkreclass.pkreclass</a></div><div class="ttdef"><b>Definition:</b> <a href="pkreclass_8py_source.html#l00038">pkreclass.py:38</a></div></div>
-<div class="ttc" id="classqgis_1_1pkreclass_1_1pkreclass_html_a5474989e8a32b4f84da61b1030d928d4"><div class="ttname"><a href="classqgis_1_1pkreclass_1_1pkreclass.html#a5474989e8a32b4f84da61b1030d928d4">qgis.pkreclass.pkreclass.group</a></div><div class="ttdeci">group</div><div class="ttdef"><b>Definition:</b> <a href="pkreclass_8py_source.html#l00057">pkreclass.py:57</a></div></div>
-<div class="ttc" id="classqgis_1_1pkreclass_1_1pkreclass_html_a377d3003bdce66a2ef2083bcd439950f"><div class="ttname"><a href="classqgis_1_1pkreclass_1_1pkreclass.html#a377d3003bdce66a2ef2083bcd439950f">qgis.pkreclass.pkreclass.NODATA</a></div><div class="ttdeci">string NODATA</div><div class="ttdef"><b>Definition:</b> <a href="pkreclass_8py_source.html#l00047">pkreclass.py:47</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkregann.html b/doc/html/pkregann.html
deleted file mode 100644
index d3d1e62..0000000
--- a/doc/html/pkregann.html
+++ /dev/null
@@ -1,110 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: pkregann</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkregann </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><p>regression with artificial neural network (multi-layer perceptron) </p>
-<h2>SYNOPSIS</h2>
-<p><code> Usage: pkregann -i input -t training [-ic col]* [-oc col]* -o output </code></p>
-<p><code></code></p>
-<p><code> Options: [-from row] [-to row] [-cv size] [-nn number]</code></p>
-<p><code> Advanced options: [–offset value] [–scale value] [–connection rate] [–learning rate] [–maxit number] </code></p>
-<h1><a class="anchor" id="pkregann_description"></a>
-Description</h1>
-<p>The utility pkregann performs a regression based on an artificial neural network. The regression is trained from the input (-ic) and output (-oc) columns in a training text file. Each row in the training file represents one sampling unit. Multi-dimensional input features can be defined with multiple input options (e.g., -ic 0 -ic 1 -ic 2 for three dimensional features). </p>
-<h1><a class="anchor" id="pkregann_options"></a>
-Options</h1>
-<ul>
-<li>use either <code>-short</code> or <code>--long</code> options (both <code>--long=value</code> and <code>--long value</code> are supported)</li>
-<li>short option <code>-h</code> shows basic options only, long option <code>--help</code> shows all options <table class="doxtable">
-<tr>
-<th>short</th><th>long</th><th>type</th><th>default</th><th>description  </th></tr>
-<tr>
-<td>i </td><td>input </td><td>std::string </td><td></td><td>input ASCII file </td></tr>
-<tr>
-<td>t </td><td>training </td><td>std::string </td><td></td><td>training ASCII file (each row represents one sampling unit. Input features should be provided as columns, followed by output) </td></tr>
-<tr>
-<td>ic </td><td>inputCols </td><td>int </td><td></td><td>input columns (e.g., for three dimensional input data in first three columns use: -ic 0 -ic 1 -ic 2 </td></tr>
-<tr>
-<td>oc </td><td>outputCols </td><td>int </td><td></td><td>output columns (e.g., for two dimensional output in columns 3 and 4 (starting from 0) use: -oc 3 -oc 4 </td></tr>
-<tr>
-<td>o </td><td>output </td><td>std::string </td><td></td><td>output ASCII file for result </td></tr>
-<tr>
-<td>from </td><td>from </td><td>double </td><td>0 </td><td>start from this row in training file (start from 0) </td></tr>
-<tr>
-<td>to </td><td>to </td><td>double </td><td>0 </td><td>read until this row in training file (start from 0 or set leave 0 as default to read until end of file) </td></tr>
-<tr>
-<td>cv </td><td>cv </td><td>unsigned short </td><td>0 </td><td>n-fold cross validation mode </td></tr>
-<tr>
-<td>nn </td><td>nneuron </td><td>unsigned int </td><td>5 </td><td>number of neurons in hidden layers in neural network (multiple hidden layers are set by defining multiple number of neurons: -n 15 -n 1, default is one hidden layer with 5 neurons) </td></tr>
-<tr>
-<td></td><td>offset </td><td>double </td><td>0 </td><td>offset value for each spectral band input features: refl[band]=(DN[band]-offset[band])/scale[band] </td></tr>
-<tr>
-<td></td><td>scale </td><td>double </td><td>0 </td><td>scale value for each spectral band input features: refl=(DN[band]-offset[band])/scale<a href="use 0 if scale min and max in each band to -1.0 and 1.0">band</a> </td></tr>
-<tr>
-<td></td><td>connection </td><td>float </td><td>1 </td><td>connection reate (default: 1.0 for a fully connected network) </td></tr>
-<tr>
-<td>l </td><td>learning </td><td>float </td><td>0.7 </td><td>learning rate (default: 0.7) </td></tr>
-<tr>
-<td></td><td>maxit </td><td>unsigned int </td><td>500 </td><td>number of maximum iterations (epoch) (default: 500) </td></tr>
-</table>
-Usage: pkregann -i input -t training [-ic col]* [-oc col]* -o output </li>
-</ul>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkregann_8cc_source.html b/doc/html/pkregann_8cc_source.html
deleted file mode 100644
index 67eb80d..0000000
--- a/doc/html/pkregann_8cc_source.html
+++ /dev/null
@@ -1,444 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/pkregann.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkregann.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pkregann.cc: regression with artificial neural network (multi-layer perceptron)</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <vector></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <fstream></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "fileclasses/FileReaderAscii.h"</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "floatfann.h"</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "algorithms/myfann_cpp.h"</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="comment">/******************************************************************************/</span></div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span> </div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span> {</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>   <span class="comment">//--------------------------- command line options ------------------------------------</span></div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> input_opt(<span class="stringliteral">"i"</span>, <span class="stringliteral">"input"</span>, <span class="stringliteral">"input ASCII file"</span>); </div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> output_opt(<span class="stringliteral">"o"</span>, <span class="stringliteral">"output"</span>, <span class="stringliteral">"output ASCII file for result"</span>); </div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> inputCols_opt(<span class="stringliteral">"ic"</span>, <span class="stringliteral">"inputCols"</span>, <span class="stringliteral">"input columns (e.g., for three dimensional input data in first three columns use: -ic 0 -ic 1 -ic 2"</span>); </div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> outputCols_opt(<span class="stringliteral">"oc"</span>, <span class="stringliteral">"outputCols"</span>, <span class="stringliteral">"output columns (e.g., for two dimensional output in columns 3 and 4 (starting from 0) use: -oc 3 -oc 4"</span>); </div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> training_opt(<span class="stringliteral">"t"</span>, <span class="stringliteral">"training"</span>, <span class="stringliteral">"training ASCII file (each row represents one sampling unit. Input features should be provided as columns, followed by output)"</span>); </div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> from_opt(<span class="stringliteral">"from"</span>, <span class="stringliteral">"from"</span>, <span class="stringliteral">"start from this row in training file (start from 0)"</span>,0); </div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> to_opt(<span class="stringliteral">"to"</span>, <span class="stringliteral">"to"</span>, <span class="stringliteral">"read until this row in training file (start from 0 or set leave 0 as default to read until end of file)"</span>, 0); </div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> offset_opt(<span class="stringliteral">"\0"</span>, <span class="stringliteral">"offset"</span>, <span class="stringliteral">"offset value for each spectral band input features: refl[band]=(DN[band]-offset[band])/scale[band]"</span>, 0.0);</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> scale_opt(<span class="stringliteral">"\0"</span>, <span class="stringliteral">"scale"</span>, <span class="stringliteral">"scale value for each spectral band input features: refl=(DN[band]-offset[band])/scale[band] (use 0 if scale min and max in each band to -1.0 and 1.0)"</span>, 0.0);</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> cv_opt(<span class="stringliteral">"cv"</span>, <span class="stringliteral">"cv"</span>, <span class="stringliteral">"n-fold cross validation mode"</span>,0);</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned int></a> nneuron_opt(<span class="stringliteral">"nn"</span>, <span class="stringliteral">"nneuron"</span>, <span class="stringliteral">"number of neurons in hidden layers in neural network (multiple hidden layers are set by defining multiple number of neurons: -n 15 -n 1, default is one hidden layer with 5 neurons)&quo [...]
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   <a class="code" href="classOptionpk.html">Optionpk<float></a> connection_opt(<span class="stringliteral">"\0"</span>, <span class="stringliteral">"connection"</span>, <span class="stringliteral">"connection reate (default: 1.0 for a fully connected network)"</span>, 1.0); </div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>   <span class="comment">// Optionpk<float> weights_opt("w", "weights", "weights for neural network. Apply to fully connected network only, starting from first input neuron to last output neuron, including the bias neurons (last neuron in each but last layer)", 0.0); </span></div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   <a class="code" href="classOptionpk.html">Optionpk<float></a> learning_opt(<span class="stringliteral">"l"</span>, <span class="stringliteral">"learning"</span>, <span class="stringliteral">"learning rate (default: 0.7)"</span>, 0.7); </div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned int></a> maxit_opt(<span class="stringliteral">"\0"</span>, <span class="stringliteral">"maxit"</span>, <span class="stringliteral">"number of maximum iterations (epoch) (default: 500)"</span>, 500); </div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> verbose_opt(<span class="stringliteral">"v"</span>, <span class="stringliteral">"verbose"</span>, <span class="stringliteral">"set to: 0 (results only), 1 (confusion matrix), 2 (debug)"</span>,0,2);</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span> </div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   offset_opt.setHide(1);</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>   scale_opt.setHide(1);</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   connection_opt.setHide(1);</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   learning_opt.setHide(1);</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>   maxit_opt.setHide(1);</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span> </div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>   <span class="keywordtype">bool</span> doProcess;<span class="comment">//stop process when program was invoked with help option (-h --help)</span></div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     doProcess=input_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     training_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     inputCols_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     outputCols_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     output_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     from_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     to_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     cv_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     nneuron_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>     offset_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>     scale_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>     connection_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>     <span class="comment">// weights_opt.retrieveOption(argc,argv);</span></div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     learning_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     maxit_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     verbose_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>   }</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> predefinedString){</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     std::cout << predefinedString << std::endl;</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>     exit(0);</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>   }</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>   <span class="keywordflow">if</span>(!doProcess){</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>     cout << endl;</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>     cout << <span class="stringliteral">"Usage: pkregann -i input -t training [-ic col]* [-oc col]* -o output"</span> << endl;</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     cout << endl;</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>     std::cout << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << std::endl;</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>   }</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span> </div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ninput=inputCols_opt.size();</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> noutput=outputCols_opt.size();</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>   assert(ninput);</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>   assert(noutput);</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>   vector< vector<float> > inputUnits;</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>   vector< vector<float> > trainingUnits;</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>   vector< vector<float> > trainingOutput;</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>   <a class="code" href="classFileReaderAscii.html">FileReaderAscii</a> inputFile;</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputSize=0;</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>   <span class="keywordflow">if</span>(input_opt.size()){</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>     inputFile.open(input_opt[0]);</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>     inputFile.setMinRow(from_opt[0]);</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>     inputFile.setMaxRow(to_opt[0]);</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>     inputFile.setComment(<span class="charliteral">'#'</span>);</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>     inputFile.readData(inputUnits,inputCols_opt,1,0,<span class="keyword">true</span>,verbose_opt[0]);</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>     inputFile.close();</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>     inputSize=inputUnits.size();</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>   }</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>   <a class="code" href="classFileReaderAscii.html">FileReaderAscii</a> trainingFile(training_opt[0]);</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleSize=0;</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>   trainingFile.setMinRow(from_opt[0]);</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>   trainingFile.setMaxRow(to_opt[0]);</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>   trainingFile.setComment(<span class="charliteral">'#'</span>);</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>   trainingFile.readData(trainingUnits,inputCols_opt,1,0,<span class="keyword">true</span>,verbose_opt[0]);</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>   trainingFile.readData(trainingOutput,outputCols_opt,1,0,<span class="keyword">true</span>,verbose_opt[0]);</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>   trainingFile.close();</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>   sampleSize=trainingUnits.size();</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span> </div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>   <span class="keywordflow">if</span>(verbose_opt[0]>1){</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>     std::cout << <span class="stringliteral">"sampleSize: "</span> << sampleSize << std::endl;</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>     std::cout << <span class="stringliteral">"ninput: "</span> << ninput << std::endl;</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>     std::cout << <span class="stringliteral">"noutput: "</span> << noutput << std::endl;</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>     std::cout << <span class="stringliteral">"trainingUnits[0].size(): "</span> << trainingUnits[0].size() << std::endl;</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>     std::cout << <span class="stringliteral">"trainingOutput[0].size(): "</span> << trainingOutput[0].size() << std::endl;</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>     std::cout << <span class="stringliteral">"trainingUnits.size(): "</span> << trainingUnits.size() << std::endl;</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>     std::cout << <span class="stringliteral">"trainingOutput.size(): "</span> << trainingOutput.size() << std::endl;</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>   }</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span> </div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>   assert(ninput==trainingUnits[0].size());</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>   assert(noutput==trainingOutput[0].size());</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>   assert(trainingUnits.size()==trainingOutput.size());</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span> </div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>   <span class="comment">//set scale and offset</span></div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>   <span class="keywordflow">if</span>(offset_opt.size()>1)</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>     assert(offset_opt.size()==ninput);</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>   <span class="keywordflow">if</span>(scale_opt.size()>1)</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>     assert(scale_opt.size()==ninput);</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span> </div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>   std::vector<float> offset_input(ninput);</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>   std::vector<float> scale_input(ninput);</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span> </div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>   std::vector<float> offset_output(noutput);</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>   std::vector<float> scale_output(noutput);</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span> </div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iinput=0;iinput<ninput;++iinput){</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>     <span class="keywordflow">if</span>(verbose_opt[0]>=1)</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>       cout << <span class="stringliteral">"scaling for input feature"</span> << iinput << endl;</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>     offset_input[iinput]=(offset_opt.size()==1)?offset_opt[0]:offset_opt[iinput];</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>     scale_input[iinput]=(scale_opt.size()==1)?scale_opt[0]:scale_opt[iinput];</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>     <span class="comment">//search for min and maximum</span></div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>     <span class="keywordflow">if</span>(scale_input[iinput]<=0){</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>       <span class="keywordtype">float</span> theMin=trainingUnits[0][iinput];</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>       <span class="keywordtype">float</span> theMax=trainingUnits[0][iinput];</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<trainingUnits.size();++isample){</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>         <span class="keywordflow">if</span>(theMin>trainingUnits[isample][iinput])</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>           theMin=trainingUnits[isample][iinput];</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>         <span class="keywordflow">if</span>(theMax<trainingUnits[isample][iinput])</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>           theMax=trainingUnits[isample][iinput];</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>       }</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>       offset_input[iinput]=theMin+(theMax-theMin)/2.0;</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>       scale_input[iinput]=(theMax-theMin)/2.0;</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>       <span class="keywordflow">if</span>(verbose_opt[0]>=1){</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>         std::cout << <span class="stringliteral">"Extreme image values for input feature "</span> << iinput << <span class="stringliteral">": ["</span> << theMin << <span class="stringliteral">","</span> << theMax << <span class="stringliteral">"]"</span> << std::endl;</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>         std::cout << <span class="stringliteral">"Using offset, scale: "</span> << offset_input[iinput] << <span class="stringliteral">", "</span> << scale_input[iinput] << std::endl;</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>         std::cout << <span class="stringliteral">"scaled values for input feature "</span> << iinput << <span class="stringliteral">": ["</span> << (theMin-offset_input[iinput])/scale_input[iinput] << <span class="stringliteral">","</span> << (theMax-offset_input[iinput])/scale_input[iinput] << <span class="stringliteral">"]"</spa [...]
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>       }</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>     }</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>   }</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span> </div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ioutput=0;ioutput<noutput;++ioutput){</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>     <span class="keywordflow">if</span>(verbose_opt[0]>=1)</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>       cout << <span class="stringliteral">"scaling for output feature"</span> << ioutput << endl;</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>     <span class="comment">//search for min and maximum</span></div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>     <span class="keywordtype">float</span> theMin=trainingOutput[0][ioutput];</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>     <span class="keywordtype">float</span> theMax=trainingOutput[0][ioutput];</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<trainingOutput.size();++isample){</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>       <span class="keywordflow">if</span>(theMin>trainingOutput[isample][ioutput])</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>         theMin=trainingOutput[isample][ioutput];</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>       <span class="keywordflow">if</span>(theMax<trainingOutput[isample][ioutput])</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>         theMax=trainingOutput[isample][ioutput];</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>     }</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>     offset_output[ioutput]=theMin+(theMax-theMin)/2.0;</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>     scale_output[ioutput]=(theMax-theMin)/2.0;</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>     <span class="keywordflow">if</span>(verbose_opt[0]>=1){</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>       std::cout << <span class="stringliteral">"Extreme image values for output feature "</span> << ioutput << <span class="stringliteral">": ["</span> << theMin << <span class="stringliteral">","</span> << theMax << <span class="stringliteral">"]"</span> << std::endl;</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>       std::cout << <span class="stringliteral">"Using offset, scale: "</span> << offset_output[ioutput] << <span class="stringliteral">", "</span> << scale_output[ioutput] << std::endl;</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>       std::cout << <span class="stringliteral">"scaled values for output feature "</span> << ioutput << <span class="stringliteral">": ["</span> << (theMin-offset_output[ioutput])/scale_output[ioutput] << <span class="stringliteral">","</span> << (theMax-offset_output[ioutput])/scale_output[ioutput] << <span class="stringliteral">"]&qu [...]
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>     }</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>   }</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span> </div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span> </div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span> </div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>   <a class="code" href="classFANN_1_1neural__net.html">FANN::neural_net</a> net;<span class="comment">//the neural network</span></div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span> </div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>   <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_layers = nneuron_opt.size()+2;</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>   <span class="keyword">const</span> <span class="keywordtype">float</span> desired_error = 0.0003;</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>   <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iterations_between_reports = (verbose_opt[0])? maxit_opt[0]+1:0;</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>   <span class="keywordflow">if</span>(verbose_opt[0]>=1){</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>     cout << <span class="stringliteral">"creating artificial neural network with "</span> << nneuron_opt.size() << <span class="stringliteral">" hidden layer, having "</span> << endl;</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ilayer=0;ilayer<nneuron_opt.size();++ilayer)</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>       cout << nneuron_opt[ilayer] << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>     cout << <span class="stringliteral">"neurons"</span> << endl;</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>   }</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span> </div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>   <span class="keywordflow">switch</span>(num_layers){</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>   <span class="keywordflow">case</span>(3):{</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> layers[3];</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>       layers[0]=ninput;</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>       layers[1]=nneuron_opt[0];</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>       layers[2]=noutput;</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>       net.create_sparse_array(connection_opt[0],num_layers,layers);</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>     <span class="comment">// net.create_sparse(connection_opt[0],num_layers, ninput, nneuron_opt[0], noutput);</span></div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>   }</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>   <span class="keywordflow">case</span>(4):{</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> layers[3];</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>       layers[0]=ninput;</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>       layers[1]=nneuron_opt[0];</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>       layers[2]=nneuron_opt[1];</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>       layers[3]=noutput;</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>       net.create_sparse_array(connection_opt[0],num_layers,layers);</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>     <span class="comment">// net.create_sparse(connection_opt[0],num_layers, ninput, nneuron_opt[0], nneuron_opt[1], noutput);</span></div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>   }</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>   <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>     cerr << <span class="stringliteral">"Only 1 or 2 hidden layers are supported!"</span> << endl;</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>     exit(1);</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>   }</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>   <span class="keywordflow">if</span>(verbose_opt[0]>=1)</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>     cout << <span class="stringliteral">"network created"</span> << endl;</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>   </div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>   net.set_learning_rate(learning_opt[0]);</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span> </div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>   <span class="comment">//   net.set_activation_steepness_hidden(1.0);</span></div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>   <span class="comment">//   net.set_activation_steepness_output(1.0);</span></div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>     </div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>   net.set_activation_function_hidden(FANN::SIGMOID_SYMMETRIC_STEPWISE);</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>   net.set_activation_function_output(FANN::SIGMOID_SYMMETRIC_STEPWISE);</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span> </div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>   <span class="comment">// Set additional properties such as the training algorithm</span></div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>   <span class="comment">//   net.set_training_algorithm(FANN::TRAIN_QUICKPROP);</span></div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span> </div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>   <span class="comment">// Output network type and parameters</span></div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>   <span class="keywordflow">if</span>(verbose_opt[0]>=1){</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>     cout << endl << <span class="stringliteral">"Network Type                         :  "</span>;</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>     <span class="keywordflow">switch</span> (net.get_network_type())</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>       {</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>       <span class="keywordflow">case</span> FANN::LAYER:</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>         cout << <span class="stringliteral">"LAYER"</span> << endl;</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>       <span class="keywordflow">case</span> FANN::SHORTCUT:</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>         cout << <span class="stringliteral">"SHORTCUT"</span> << endl;</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>       <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>         cout << <span class="stringliteral">"UNKNOWN"</span> << endl;</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>       }</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>     net.print_parameters();</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>   }</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>       </div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>   <span class="keywordflow">if</span>(verbose_opt[0]>=1){</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>     cout << <span class="stringliteral">"Max Epochs "</span> << setw(8) << maxit_opt[0] << <span class="stringliteral">". "</span></div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>          << <span class="stringliteral">"Desired Error: "</span> << left << desired_error << right << endl;</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>   }</div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>   <span class="keywordtype">bool</span> initWeights=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span> </div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>   <a class="code" href="classVector2d.html">Vector2d<float></a> trainingFeatures(sampleSize,ninput);</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>   <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> isample=0;isample<sampleSize;++isample){</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>     <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iinput=0;iinput<ninput;++iinput)</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>       trainingFeatures[isample][iinput]=(trainingUnits[isample][iinput]-offset_input[iinput])/scale_input[iinput];</div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>   }</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span> </div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>   <a class="code" href="classVector2d.html">Vector2d<float></a> scaledOutput(sampleSize,noutput);</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>   <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> isample=0;isample<sampleSize;++isample){</div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>     <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ioutput=0;ioutput<noutput;++ioutput)</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>       scaledOutput[isample][ioutput]=(trainingOutput[isample][ioutput]-offset_output[ioutput])/scale_output[ioutput];</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>   }</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span> </div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>   <span class="keywordflow">if</span>(cv_opt[0]){</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>       std::cout << <span class="stringliteral">"cross validation"</span> << std::endl;</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>     std::vector< std::vector<float> > referenceVector;</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>     std::vector< std::vector<float> > outputVector;</div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>     net.cross_validation(trainingFeatures,</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>                          scaledOutput,</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>                          cv_opt[0],</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>                          maxit_opt[0],</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>                          desired_error,</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>                          referenceVector,</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>                          outputVector);</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>     assert(referenceVector.size()==outputVector.size());</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>     vector<double> rmse(noutput);</div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<referenceVector.size();++isample){</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>       std::cout << isample << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ioutput=0;ioutput<noutput;++ioutput){</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>         <span class="keywordflow">if</span>(!isample)</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>           rmse[ioutput]=0;</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>         <span class="keywordtype">double</span> ref=scale_output[ioutput]*referenceVector[isample][ioutput]+offset_output[ioutput];</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>         <span class="keywordtype">double</span> val=scale_output[ioutput]*outputVector[isample][ioutput]+offset_output[ioutput];</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>         rmse[ioutput]+=(ref-val)*(ref-val);</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>         std::cout << ref << <span class="stringliteral">" "</span> << val;</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>         <span class="keywordflow">if</span>(ioutput<noutput-1)</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>           std::cout << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>           std::cout << std::endl;</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>       }</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>     }</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ioutput=0;ioutput<noutput;++ioutput)</div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>       std::cout << <span class="stringliteral">"rmse output variable "</span> << ioutput << <span class="stringliteral">": "</span> << sqrt(rmse[ioutput]/referenceVector.size()) << std::endl;</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>   }</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span> </div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span> </div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>   net.train_on_data(trainingFeatures,</div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>                     scaledOutput,</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>                     initWeights,</div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>                     maxit_opt[0],</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>                     iterations_between_reports,</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>                     desired_error);</div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span> </div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span> </div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>   <span class="keywordflow">if</span>(verbose_opt[0]>=2){</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>     net.print_connections();</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>     vector<fann_connection> convector;</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>     net.get_connection_array(convector);</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i_connection=0;i_connection<net.get_total_connections();++i_connection)</div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>       cout << <span class="stringliteral">"connection "</span> << i_connection << <span class="stringliteral">": "</span> << convector[i_connection].weight << endl;</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>   }</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>   <span class="comment">//end of training</span></div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span> </div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>   ofstream outputStream;</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>   <span class="keywordflow">if</span>(!output_opt.empty())</div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>     outputStream.open(output_opt[0].c_str(),ios::out);</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>   <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> isample=0;isample<inputUnits.size();++isample){</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>     std::vector<float> inputFeatures(ninput);</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>     <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iinput=0;iinput<ninput;++iinput)</div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>       inputFeatures[iinput]=(inputUnits[isample][iinput]-offset_input[iinput])/scale_input[iinput];</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>     vector<float> result(noutput);</div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>     result=net.run(inputFeatures);</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span> </div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>     <span class="keywordflow">if</span>(!output_opt.empty())</div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>       outputStream << isample << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>       std::cout << isample << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>     <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>       <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iinput=0;iinput<ninput;++iinput){</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>         <span class="keywordflow">if</span>(output_opt.size())</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>           outputStream << inputUnits[isample][iinput] << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>           std::cout << inputUnits[isample][iinput] << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>       }</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>     }</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>     <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ioutput=0;ioutput<noutput;++ioutput){</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>       result[ioutput]=scale_output[ioutput]*result[ioutput]+offset_output[ioutput];</div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>       <span class="keywordflow">if</span>(output_opt.size()){</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>         outputStream << result[ioutput];</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>         <span class="keywordflow">if</span>(ioutput<noutput-1)</div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>           outputStream << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>           outputStream << std::endl;</div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>       }</div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>         std::cout << result[ioutput];</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>         <span class="keywordflow">if</span>(ioutput<noutput-1)</div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span>           std::cout << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>           std::cout << std::endl;</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>       }</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span>     }</div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>   }</div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span>   <span class="keywordflow">if</span>(!output_opt.empty())</div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>     outputStream.close();</div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span> }</div>
-<div class="ttc" id="classFileReaderAscii_html"><div class="ttname"><a href="classFileReaderAscii.html">FileReaderAscii</a></div><div class="ttdef"><b>Definition:</b> <a href="FileReaderAscii_8h_source.html#l00030">FileReaderAscii.h:30</a></div></div>
-<div class="ttc" id="classVector2d_html"><div class="ttname"><a href="classVector2d.html">Vector2d</a></div><div class="ttdef"><b>Definition:</b> <a href="Vector2d_8h_source.html#l00031">Vector2d.h:31</a></div></div>
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-<div class="ttc" id="classFANN_1_1neural__net_html"><div class="ttname"><a href="classFANN_1_1neural__net.html">FANN::neural_net</a></div><div class="ttdef"><b>Definition:</b> <a href="myfann__cpp_8h_source.html#l00978">myfann_cpp.h:978</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pksensormodel_8h_source.html b/doc/html/pksensormodel_8h_source.html
deleted file mode 100644
index 9b837a2..0000000
--- a/doc/html/pksensormodel_8h_source.html
+++ /dev/null
@@ -1,155 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/pksensormodel.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pksensormodel.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pksensormodel.h: program to calculate geometric position based on row (sensor), col (sensor), roll, pitch, yaw and lens coordinates</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#ifndef _PKSENSORMODEL_H_</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor"></span><span class="preprocessor">#define _PKSENSORMODEL_H_</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor"></span><span class="preprocessor">#include <vector></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment">// #include <gslwrap/matrix_double.h></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <armadillo></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "models/SensorModel.h"</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> </div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keywordtype">double</span> objFunction(<span class="keyword">const</span> std::vector<double> &x, std::vector<double> &grad, <span class="keywordtype">void</span> *my_func_data);</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> </div>
-<div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="classDataModel.html">   29</a></span> <span class="keyword">class </span><a class="code" href="classDataModel.html">DataModel</a>{</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>    <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span>   <a class="code" href="classDataModel.html">DataModel</a>() : m_threshold(0){};</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>   <a class="code" href="classDataModel.html">DataModel</a>(<span class="keyword">const</span> SensorModel::SensorModel& theModel) : m_model(theModel), m_threshold(0){};</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>   ~<a class="code" href="classDataModel.html">DataModel</a>(){};</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>   <span class="keywordtype">void</span> setModel(<span class="keyword">const</span> SensorModel::SensorModel& theModel){m_model=theModel;};</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>   <span class="keyword">const</span> SensorModel::SensorModel& getModel()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_model;};</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   <span class="keywordtype">int</span> getSize()<span class="keyword"> const</span>{<span class="keywordflow">return</span> m_posGCP.size();};</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>   <span class="keywordtype">void</span> setThreshold(<span class="keywordtype">double</span> theThreshold){m_threshold=theThreshold;};</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>   <span class="keywordtype">double</span> getThreshold(){<span class="keywordflow">return</span> m_threshold;};</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>   <span class="keywordtype">int</span> erase(<span class="keywordtype">int</span> index){</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     m_attPlatform.erase(m_attPlatform.begin()+index);</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     m_posPlatform.erase(m_posPlatform.begin()+index);</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     m_posGCP.erase(m_posGCP.begin()+index);</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     m_row.erase(m_row.begin()+index);</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     m_col.erase(m_col.begin()+index);</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   };</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>   <span class="keywordtype">int</span> pushAttPlatform(<span class="keyword">const</span> arma::vec& atp){m_attPlatform.push_back(atp); <span class="keywordflow">return</span> m_attPlatform.size();};</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   <span class="keywordtype">int</span> pushPosPlatform(<span class="keyword">const</span> arma::vec& ppl){m_posPlatform.push_back(ppl); <span class="keywordflow">return</span> m_posPlatform.size();};</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>   <span class="keywordtype">int</span> pushPosGCP(<span class="keyword">const</span> arma::vec& pgcp){m_posGCP.push_back(pgcp); <span class="keywordflow">return</span> m_posGCP.size();};</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>   <span class="keywordtype">int</span> pushRow(<span class="keywordtype">int</span> r){m_row.push_back(r); <span class="keywordflow">return</span> m_row.size();};</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>   <span class="keywordtype">int</span> pushCol(<span class="keywordtype">int</span> c){m_col.push_back(c); <span class="keywordflow">return</span> m_col.size();};</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>   arma::vec getPosPlatform(<span class="keywordtype">int</span> index)<span class="keyword"> const</span>{assert(index>=0);assert(index<m_posPlatform.size());<span class="keywordflow">return</span>(m_posPlatform[index]);};</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>   arma::vec getAttPlatform(<span class="keywordtype">int</span> index)<span class="keyword"> const</span>{assert(index>=0);assert(index<m_attPlatform.size());<span class="keywordflow">return</span>(m_attPlatform[index]);};</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>   arma::vec getPosGCP(<span class="keywordtype">int</span> index)<span class="keyword"> const</span>{assert(index>=0);assert(index<m_posGCP.size());<span class="keywordflow">return</span>(m_posGCP[index]);};</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>   arma::vec getPos(<span class="keywordtype">int</span> index)<span class="keyword"> const</span>{</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     assert(index>=0);</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     assert(index<m_posPlatform.size());</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     assert(index<m_attPlatform.size());</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     assert(index<m_row.size());</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     assert(index<m_col.size());</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     assert(index<m_posGCP.size());</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     <span class="keywordflow">return</span>(m_model.getPos(m_posPlatform[index],m_attPlatform[index],m_row[index],m_col[index],m_posGCP[index][2]));</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>   };</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>   <span class="keywordtype">double</span> getDistGeo(<span class="keywordtype">int</span> index)<span class="keyword"> const</span>{assert(index>=0);assert(index<m_posGCP.size());<span class="keywordflow">return</span>(m_model.getDistGeo(m_posGCP[index],getPos(index)));};</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>   <span class="keywordtype">int</span> getRow(<span class="keywordtype">int</span> index)<span class="keyword"> const</span>{assert(index>=0);assert(index<m_row.size());<span class="keywordflow">return</span>(m_row[index]);};</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>   <span class="keywordtype">int</span> getCol(<span class="keywordtype">int</span> index)<span class="keyword"> const</span>{assert(index>=0);assert(index<m_col.size());<span class="keywordflow">return</span>(m_col[index]);};</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>   <span class="keywordtype">double</span> getHeight(<span class="keywordtype">int</span> index)<span class="keyword"> const</span>{assert(index>=0);assert(index<m_posGCP.size());<span class="keywordflow">return</span>(m_posGCP[index][2]);};</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>   <span class="keywordtype">void</span> setBoresightAtt(<span class="keyword">const</span> arma::vec& bc_att){</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     m_model.setBoresightAtt(bc_att);</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     <span class="comment">// for(int index=0;index<m_attPlatform.size();++index)</span></div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     <span class="comment">//   m_attPlatform[index]+=bc_att;</span></div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>   };</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>    <span class="keyword">private</span>:</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>   SensorModel::SensorModel m_model;</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>   vector<arma::vec> m_posPlatform;</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>   vector<arma::vec> m_posGCP;</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>   vector<arma::vec> m_attPlatform;</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>   vector<int> m_row;</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>   vector<int> m_col;</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>   <span class="keywordtype">double</span> m_threshold;</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span> };</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span> </div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span> <span class="preprocessor">#endif //_PKSENSORMODEL_H_</span></div>
-<div class="ttc" id="classDataModel_html"><div class="ttname"><a href="classDataModel.html">DataModel</a></div><div class="ttdef"><b>Definition:</b> <a href="pksensormodel_8h_source.html#l00029">pksensormodel.h:29</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pksetmask.html b/doc/html/pksetmask.html
deleted file mode 100644
index 77fdbd0..0000000
--- a/doc/html/pksetmask.html
+++ /dev/null
@@ -1,109 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: pksetmask</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pksetmask </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><p>program to apply mask image (set invalid values) to raster image </p>
-<h2>SYNOPSIS</h2>
-<p><code> Usage: pksetmask -i input -m mask [-m mask]* -o output </code></p>
-<p><code></code></p>
-<p><code> Options: [-mskband value]* [-msknodata value -nodata value]*</code></p>
-<p><code> Advanced options: [–operator '<'|'='|'<'] [-ot type] [-of format] [-co option]* [-ct table]</code></p>
-<p><code></code></p>
-<h1><a class="anchor" id="pksetmask_description"></a>
-Description</h1>
-<p>The utility pksetmask sets a mask provided with option -m to an input raster dataset. The default operator is '='. Values in the input raster data where the mask has a nodata value (set with the option -msknodata) will then be set to nodata (set with -nodata). Other operators are less than (–operator '<') and larger than (–operator '>').</p>
-<h1><a class="anchor" id="pksetmask_options"></a>
-Options</h1>
-<ul>
-<li>use either <code>-short</code> or <code>--long</code> options (both <code>--long=value</code> and <code>--long value</code> are supported)</li>
-<li>short option <code>-h</code> shows basic options only, long option <code>--help</code> shows all options <table class="doxtable">
-<tr>
-<th>short</th><th>long</th><th>type</th><th>default</th><th>description  </th></tr>
-<tr>
-<td>i </td><td>input </td><td>std::string </td><td></td><td>Input image </td></tr>
-<tr>
-<td>m </td><td>mask </td><td>std::string </td><td></td><td>Mask image(s) </td></tr>
-<tr>
-<td>msknodata </td><td>msknodata </td><td>int </td><td>1 </td><td>Mask value(s) where image has nodata. Use one value for each mask, or multiple values for a single mask. </td></tr>
-<tr>
-<td>mskband </td><td>mskband </td><td>short </td><td>0 </td><td>Mask band to read (0 indexed). Provide band for each mask. </td></tr>
-<tr>
-<td>o </td><td>output </td><td>std::string </td><td></td><td>Output mask file </td></tr>
-<tr>
-<td>nodata </td><td>nodata </td><td>int </td><td>0 </td><td>nodata value to put in image if not valid </td></tr>
-<tr>
-<td>p </td><td>operator </td><td>char </td><td>= </td><td>Operator: < = > !. Use operator for each msknodata option </td></tr>
-<tr>
-<td>ot </td><td>otype </td><td>std::string </td><td></td><td>Data type for output image ({Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/CInt16/CInt32/CFloat32/CFloat64}). Empty string: inherit type from input image </td></tr>
-<tr>
-<td>of </td><td>oformat </td><td>std::string </td><td>GTiff </td><td>Output image format (see also gdal_translate) </td></tr>
-<tr>
-<td>co </td><td>co </td><td>std::string </td><td></td><td>Creation option for output file. Multiple options can be specified. </td></tr>
-<tr>
-<td>ct </td><td>ct </td><td>std::string </td><td></td><td>color table (file with 5 columns: id R G B ALFA (0: transparent, 255: solid) </td></tr>
-</table>
-Usage: pksetmask -i input -m mask [-m mask]* [-msknodata value -nodata value]* -o output</li>
-</ul>
-<h1>Examples </h1>
-<p>Some examples how to use pksetmask can be found <a class="el" href="md_examples_pksetmask.html#examples_pksetmask">here</a> </p>
-<h1>FAQ </h1>
-<p>Frequently asked questions on pksetmask can be found <a class="el" href="md_faq_pksetmask.html#faq_pksetmask">here</a> </p>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pksetmask_8cc_source.html b/doc/html/pksetmask_8cc_source.html
deleted file mode 100644
index 3645add..0000000
--- a/doc/html/pksetmask_8cc_source.html
+++ /dev/null
@@ -1,405 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/pksetmask.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pksetmask.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pksetmask.cc: program to apply mask image (set invalid values) to raster image</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <assert.h></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> </div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "imageclasses/ImgReaderGdal.h"</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "imageclasses/ImgWriterGdal.h"</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="comment">/******************************************************************************/</span></div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span> </div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span> {</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>   <span class="comment">//command line options</span></div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> input_opt(<span class="stringliteral">"i"</span>, <span class="stringliteral">"input"</span>, <span class="stringliteral">"Input image"</span>);</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> mask_opt(<span class="stringliteral">"m"</span>, <span class="stringliteral">"mask"</span>, <span class="stringliteral">"Mask image(s)"</span>);</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> output_opt(<span class="stringliteral">"o"</span>, <span class="stringliteral">"output"</span>, <span class="stringliteral">"Output mask file"</span>);</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> otype_opt(<span class="stringliteral">"ot"</span>, <span class="stringliteral">"otype"</span>, <span class="stringliteral">"Data type for output image ({Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/CInt16/CInt32/CFloat32/CFloat64}). Empty string: inherit type from input image"</span>, <span class="stringlitera [...]
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> oformat_opt(<span class="stringliteral">"of"</span>, <span class="stringliteral">"oformat"</span>, <span class="stringliteral">"Output image format (see also gdal_translate)"</span>,<span class="stringliteral">"GTiff"</span>);</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> option_opt(<span class="stringliteral">"co"</span>, <span class="stringliteral">"co"</span>, <span class="stringliteral">"Creation option for output file. Multiple options can be specified."</span>);</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> msknodata_opt(<span class="stringliteral">"msknodata"</span>, <span class="stringliteral">"msknodata"</span>, <span class="stringliteral">"Mask value(s) where image has nodata. Use one value for each mask, or multiple values for a single mask."</span>, 1);</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> mskband_opt(<span class="stringliteral">"mskband"</span>, <span class="stringliteral">"mskband"</span>, <span class="stringliteral">"Mask band to read (0 indexed). Provide band for each mask."</span>, 0);</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>   <a class="code" href="classOptionpk.html">Optionpk<char></a> operator_opt(<span class="stringliteral">"p"</span>, <span class="stringliteral">"operator"</span>, <span class="stringliteral">"Operator: < = > !. Use operator for each msknodata option"</span>, <span class="charliteral">'='</span>);</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> nodata_opt(<span class="stringliteral">"nodata"</span>, <span class="stringliteral">"nodata"</span>, <span class="stringliteral">"nodata value to put in image if not valid"</span>, 0);</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> colorTable_opt(<span class="stringliteral">"ct"</span>, <span class="stringliteral">"ct"</span>, <span class="stringliteral">"color table (file with 5 columns: id R G B ALFA (0: transparent, 255: solid)"</span>);</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> verbose_opt(<span class="stringliteral">"v"</span>, <span class="stringliteral">"verbose"</span>, <span class="stringliteral">"verbose"</span>, 0,2);</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span> </div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>   otype_opt.setHide(1);</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>   oformat_opt.setHide(1);</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>   option_opt.setHide(1);</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   colorTable_opt.setHide(1);</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>   mskband_opt.setHide(1);</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   </div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   <span class="keywordtype">bool</span> doProcess;<span class="comment">//stop process when program was invoked with help option (-h --help)</span></div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     doProcess=input_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     mask_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     msknodata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     mskband_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     output_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     nodata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     operator_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     otype_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     oformat_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     option_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     colorTable_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     verbose_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   }</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> predefinedString){</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>     std::cout << predefinedString << std::endl;</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>     exit(0);</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>   }</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   <span class="keywordflow">if</span>(!doProcess){</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     cout << endl;</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     cout << <span class="stringliteral">"Usage: pksetmask -i input -m mask [-m mask]* [-msknodata value -nodata value]* -o output"</span> << endl;</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     cout << endl;</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     std::cout << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << std::endl;</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>     exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>   }</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span> </div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>      cout << <span class="stringliteral">"number of mask images: "</span> << mask_opt.size() << endl;</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span> </div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>   <span class="comment">//duplicate band used for mask if not explicitly provided</span></div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>   <span class="keywordflow">while</span>(mskband_opt.size()<mask_opt.size())</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>     mskband_opt.push_back(mskband_opt[0]);</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span> </div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>   vector<ImgReaderGdal> maskReader(mask_opt.size()); </div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> imask=0;imask<mask_opt.size();++imask){</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>       cout << <span class="stringliteral">"opening mask image file "</span> << mask_opt[imask] << endl;</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>     maskReader[imask].open(mask_opt[imask]);</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>   }</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>   assert(input_opt.size());</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>     cout << <span class="stringliteral">"opening input image file "</span> << input_opt[0] << endl;</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>   <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> inputReader;</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>   inputReader.open(input_opt[0]);</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>   <span class="keywordtype">string</span> imageType;<span class="comment">//=inputReader.getImageType();</span></div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>   <span class="keywordflow">if</span>(oformat_opt.size())<span class="comment">//default</span></div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>     imageType=oformat_opt[0];</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>   GDALDataType theType=GDT_Unknown;</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>   <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>     std::cout << <span class="stringliteral">"Image type: "</span> << imageType << std::endl;</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>     std::cout << <span class="stringliteral">"possible output data types: "</span>;</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>   }</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iType = 0; iType < GDT_TypeCount; ++iType){</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>       cout << <span class="stringliteral">" "</span> << GDALGetDataTypeName((GDALDataType)iType);</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>     <span class="keywordflow">if</span>( GDALGetDataTypeName((GDALDataType)iType) != NULL</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>         && EQUAL(GDALGetDataTypeName((GDALDataType)iType),</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>                  otype_opt[0].c_str()))</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>       theType=(GDALDataType) iType;</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>   }</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>   <span class="keywordflow">if</span>(theType==GDT_Unknown)</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>     theType=inputReader.getDataType();</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span> </div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   assert(output_opt.size());</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>   <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>     std::cout << std::endl << <span class="stringliteral">"Output data type:  "</span> << GDALGetDataTypeName(theType) << std::endl;</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>     std::cout << <span class="stringliteral">"opening output image for writing: "</span> << output_opt[0] << std::endl;</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>   }</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>   <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> outputWriter;</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>     <span class="keywordflow">if</span>(option_opt.findSubstring(<span class="stringliteral">"INTERLEAVE="</span>)==option_opt.end()){</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>       <span class="keywordtype">string</span> theInterleave=<span class="stringliteral">"INTERLEAVE="</span>;</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>       theInterleave+=inputReader.getInterleave();</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>       option_opt.push_back(theInterleave);</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>     }</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>     outputWriter.open(output_opt[0],inputReader.nrOfCol(),inputReader.nrOfRow(),inputReader.nrOfBand(),theType,imageType,option_opt);</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<inputReader.nrOfBand();++iband)</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>       outputWriter.GDALSetNoDataValue(nodata_opt[0],iband);</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>     outputWriter.setProjection(inputReader.getProjection());</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>     outputWriter.copyGeoTransform(inputReader);</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>   }</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>     cout << errorstring << endl;</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>     exit(1);</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>   }</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>   <span class="comment">// if(verbose_opt[0])</span></div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>   <span class="comment">//   cout << "opening output image file " << output_opt[0] << endl;</span></div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>   <span class="comment">// outputWriter.open(output_opt[0],inputReader);</span></div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>   <span class="keywordflow">if</span>(colorTable_opt.size()){</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>     <span class="keywordflow">if</span>(colorTable_opt[0]!=<span class="stringliteral">"none"</span>)</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>       outputWriter.setColorTable(colorTable_opt[0]);</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>   }</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (inputReader.getColorTable()!=NULL)<span class="comment">//copy colorTable from input image</span></div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>     outputWriter.setColorTable(inputReader.getColorTable());</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>   <span class="keywordflow">if</span>(inputReader.isGeoRef()){</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> imask=0;imask<mask_opt.size();++imask)</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>       assert(maskReader[imask].isGeoRef());</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>   }</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>   assert(nodata_opt.size()==msknodata_opt.size());</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>   assert(operator_opt.size()==msknodata_opt.size()||operator_opt.size()==1);</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>   <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>     cout << <span class="stringliteral">" mask files selected: "</span> << mask_opt.size() << endl;</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iv=0;iv<msknodata_opt.size();++iv){</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>       <span class="keywordtype">char</span> op=(operator_opt.size()==msknodata_opt.size())?operator_opt[iv]:operator_opt[0];</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>       cout << op << <span class="stringliteral">" "</span> << msknodata_opt[iv] << <span class="stringliteral">"->"</span> << nodata_opt[iv] << endl;</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>     }</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>   }</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>   </div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> lineInput(inputReader.nrOfBand(),inputReader.nrOfCol());</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> lineOutput(outputWriter.nrOfBand(),outputWriter.nrOfCol());</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>   assert(lineOutput.size()==lineInput.size());</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>   assert(inputReader.nrOfCol()==outputWriter.nrOfCol());</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>   <span class="comment">// Vector2d<int> lineMask(mask_opt.size());</span></div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>   <a class="code" href="classVector2d.html">Vector2d<double></a> lineMask(mask_opt.size());</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> imask=0;imask<mask_opt.size();++imask){</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>       cout << <span class="stringliteral">"mask "</span> << imask << <span class="stringliteral">" has "</span> << maskReader[imask].nrOfCol() << <span class="stringliteral">" columns and "</span> << maskReader[imask].nrOfRow() << <span class="stringliteral">" rows"</span> << endl;</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>     lineMask[imask].resize(maskReader[imask].nrOfCol());</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>   }</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>   <span class="keywordtype">int</span> irow=0;</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>   <span class="keywordtype">int</span> icol=0;</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>   <span class="keywordtype">float</span> progress=0;</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>   <span class="keywordflow">if</span>(!verbose_opt[0])</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>   <span class="comment">// double oldRowMask=-1;</span></div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>   vector<double> oldRowMask(mask_opt.size());</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> imask=0;imask<mask_opt.size();++imask)</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>     oldRowMask[imask]=-1;</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>   <span class="keywordflow">for</span>(irow=0;irow<inputReader.nrOfRow();++irow){</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>     <span class="comment">//read line in lineInput buffer</span></div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<inputReader.nrOfBand();++iband){</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>         inputReader.readData(lineInput[iband],GDT_Float64,irow,iband);</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>       }</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>         cerr << errorstring << endl;</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>         exit(1);</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>       }</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>     }</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>     <span class="keywordtype">double</span> x,y;<span class="comment">//geo coordinates</span></div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>     <span class="keywordtype">double</span> colMask,rowMask;<span class="comment">//image coordinates in mask image</span></div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>     <span class="keywordflow">for</span>(icol=0;icol<inputReader.nrOfCol();++icol){</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>       <span class="keywordflow">if</span>(mask_opt.size()>1){<span class="comment">//multiple masks</span></div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> imask=0;imask<mask_opt.size();++imask){</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>       inputReader.image2geo(icol,irow,x,y);</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>       maskReader[imask].geo2image(x,y,colMask,rowMask);</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>       colMask=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(colMask);</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>       rowMask=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(rowMask);</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>           <span class="keywordtype">bool</span> masked=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>           <span class="keywordflow">if</span>(rowMask>=0&&rowMask<maskReader[imask].nrOfRow()&&colMask>=0&&colMask<maskReader[imask].nrOfCol()){</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>         <span class="keywordflow">if</span>(static_cast<int>(rowMask)!=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(oldRowMask[imask])){</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>           assert(rowMask>=0&&rowMask<maskReader[imask].nrOfRow());</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>           <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>         <span class="comment">// maskReader[imask].readData(lineMask[imask],GDT_Int32,static_cast<int>(rowMask));</span></div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>         maskReader[imask].readData(lineMask[imask],GDT_Float64,static_cast<int>(rowMask),mskband_opt[imask]);</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>           }</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>           <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>         cerr << errorstring << endl;</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>         exit(1);</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>           }</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>           oldRowMask[imask]=rowMask;</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>         }</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>       }</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>             <span class="keywordflow">continue</span>;<span class="comment">//no coverage in this mask</span></div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>       <span class="keywordtype">int</span> ivalue=0;</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>       <span class="keywordflow">if</span>(mask_opt.size()==msknodata_opt.size())<span class="comment">//one invalid value for each mask</span></div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>         ivalue=msknodata_opt[imask];</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>       <span class="keywordflow">else</span><span class="comment">//use same invalid value for each mask</span></div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>         ivalue=msknodata_opt[0];</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>       <span class="keywordtype">char</span> op=(operator_opt.size()==mask_opt.size())?operator_opt[imask]:operator_opt[0];</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>       <span class="keywordflow">switch</span>(op){</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>       <span class="keywordflow">case</span>(<span class="charliteral">'='</span>):</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>       <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>         <span class="keywordflow">if</span>(lineMask[imask][colMask]==ivalue)</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>           masked=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>       <span class="keywordflow">case</span>(<span class="charliteral">'<'</span>):</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>         <span class="keywordflow">if</span>(lineMask[imask][colMask]<ivalue)</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>           masked=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>       <span class="keywordflow">case</span>(<span class="charliteral">'>'</span>):</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>         <span class="keywordflow">if</span>(lineMask[imask][colMask]>ivalue)</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>           masked=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>       <span class="keywordflow">case</span>(<span class="charliteral">'!'</span>):</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>         <span class="keywordflow">if</span>(lineMask[imask][colMask]!=ivalue)</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>           masked=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>       }</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>       <span class="keywordflow">if</span>(masked){</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>             <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>               cout << <span class="stringliteral">"image masked at (col="</span> << icol << <span class="stringliteral">",row="</span> << irow <<<span class="stringliteral">") with mask "</span> << mask_opt[imask] << <span class="stringliteral">" and value "</span> << ivalue << endl;</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<inputReader.nrOfBand();++iband){</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>               <span class="keywordflow">if</span>(mask_opt.size()==nodata_opt.size())<span class="comment">//one flag value for each mask</span></div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>                 lineInput[iband][icol]=nodata_opt[imask];</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>               <span class="keywordflow">else</span>                </div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>                 lineInput[iband][icol]=nodata_opt[0];</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>             }</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>             masked=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>       }</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>         }</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>       }</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>       <span class="keywordflow">else</span>{<span class="comment">//potentially more invalid values for single mask</span></div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>     inputReader.image2geo(icol,irow,x,y);</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>     maskReader[0].geo2image(x,y,colMask,rowMask);</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>     colMask=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(colMask);</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>     rowMask=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(rowMask);</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>         <span class="keywordtype">bool</span> masked=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>         <span class="keywordflow">if</span>(rowMask>=0&&rowMask<maskReader[0].nrOfRow()&&colMask>=0&&colMask<maskReader[0].nrOfCol()){</div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>           <span class="keywordflow">if</span>(static_cast<int>(rowMask)!=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(oldRowMask[0])){</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>             assert(rowMask>=0&&rowMask<maskReader[0].nrOfRow());</div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>             <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>               <span class="comment">// maskReader[0].readData(lineMask[0],GDT_Int32,static_cast<int>(rowMask));</span></div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>               maskReader[0].readData(lineMask[0],GDT_Float64,static_cast<int>(rowMask),mskband_opt[0]);</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>         }</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>             <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>               cerr << errorstring << endl;</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>               exit(1);</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>         }</div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>             oldRowMask[0]=rowMask;</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>       }</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ivalue=0;ivalue<msknodata_opt.size();++ivalue){</div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>             assert(msknodata_opt.size()==nodata_opt.size());</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>             <span class="keywordtype">char</span> op=(operator_opt.size()==msknodata_opt.size())?operator_opt[ivalue]:operator_opt[0];</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>             <span class="keywordflow">switch</span>(op){</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>             <span class="keywordflow">case</span>(<span class="charliteral">'='</span>):</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>             <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>               <span class="keywordflow">if</span>(lineMask[0][colMask]==msknodata_opt[ivalue])</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>                 masked=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>             <span class="keywordflow">case</span>(<span class="charliteral">'<'</span>):</div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>               <span class="keywordflow">if</span>(lineMask[0][colMask]<msknodata_opt[ivalue])</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>                 masked=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>             <span class="keywordflow">case</span>(<span class="charliteral">'>'</span>):</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>               <span class="keywordflow">if</span>(lineMask[0][colMask]>msknodata_opt[ivalue])</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>                 masked=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>             <span class="keywordflow">case</span>(<span class="charliteral">'!'</span>):</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>               <span class="keywordflow">if</span>(lineMask[0][colMask]!=msknodata_opt[ivalue])</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>                 masked=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>             }</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>             <span class="keywordflow">if</span>(masked){</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>               <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<inputReader.nrOfBand();++iband)</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>                 lineInput[iband][icol]=nodata_opt[ivalue];</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>               masked=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>             }</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>           }</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>     }</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>       }</div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<lineOutput.size();++iband)</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>         lineOutput[iband][icol]=lineInput[iband][icol];</div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>     }</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>     <span class="comment">//write buffer lineOutput to output file</span></div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<outputWriter.nrOfBand();++iband){</div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>         outputWriter.writeData(lineOutput[iband],GDT_Float64,irow,iband);</div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>       }</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>         cerr << errorstring << endl;</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>         exit(1);</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>       }</div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>     }</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>     <span class="comment">//progress bar</span></div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>     progress=<span class="keyword">static_cast<</span><span class="keywordtype">float</span><span class="keyword">></span>(irow+1.0)/outputWriter.nrOfRow();</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>   }</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>   inputReader.close();</div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> imask=0;imask<mask_opt.size();++imask)</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>     maskReader[imask].close();</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>   outputWriter.close();</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span> }</div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-<div class="ttc" id="classImgWriterGdal_html"><div class="ttname"><a href="classImgWriterGdal.html">ImgWriterGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgWriterGdal_8h_source.html#l00033">ImgWriterGdal.h:33</a></div></div>
-<div class="ttc" id="classVector2d_html"><div class="ttname"><a href="classVector2d.html">Vector2d< double ></a></div></div>
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pksetmask_8py_source.html b/doc/html/pksetmask_8py_source.html
deleted file mode 100644
index 494b69c..0000000
--- a/doc/html/pksetmask_8py_source.html
+++ /dev/null
@@ -1,200 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/pksetmask.py Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pksetmask.py</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment"># -*- coding: utf-8 -*-</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> </div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="stringliteral">    pksetmask.py</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="stringliteral">    ---------------------</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="stringliteral">    Date                 : April 2015</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="stringliteral">    Copyright            : (C) 2015 by Pieter Kempeneers</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="stringliteral">    Email                : kempenep at gmail dot com</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="stringliteral">*   This program is free software; you can redistribute it and/or modify  *</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="stringliteral">*   it under the terms of the GNU General Public License as published by  *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="stringliteral">*   the Free Software Foundation; either version 2 of the License, or     *</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="stringliteral">*   (at your option) any later version.                                   *</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> __author__ = <span class="stringliteral">'Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> __date__ = <span class="stringliteral">'April 2015'</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> __copyright__ = <span class="stringliteral">'(C) 2015, Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"># This will get replaced with a git SHA1 when you do a git archive</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> __revision__ = <span class="stringliteral">'$Format:%H$'</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">import</span> os</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">from</span> pktoolsUtils <span class="keyword">import</span> pktoolsUtils</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">from</span> pktoolsAlgorithm <span class="keyword">import</span> pktoolsAlgorithm</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterMultipleInput</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterRaster</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">from</span> processing.core.outputs <span class="keyword">import</span> OutputRaster</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterSelection</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterNumber</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterString</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterBoolean</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterExtent</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
-<div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classqgis_1_1pksetmask_1_1pksetmask.html">   38</a></span> <span class="keyword">class </span><a class="code" href="classqgis_1_1pksetmask_1_1pksetmask.html">pksetmask</a>(pktoolsAlgorithm):</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> </div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     INPUT = <span class="stringliteral">"INPUT"</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     MASK = <span class="stringliteral">"MASK"</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     MSKNODATA = <span class="stringliteral">"MSKNODATA"</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     MSKBAND = <span class="stringliteral">"MSKBAND"</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     OPERATOR_OPTIONS = [<span class="stringliteral">"="</span>,<span class="stringliteral">"<"</span>,<span class="stringliteral">">"</span>,<span class="stringliteral">"!"</span>]</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     OPERATOR = <span class="stringliteral">"OPERATOR"</span></div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     NODATA = <span class="stringliteral">"NODATA"</span></div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     OUTPUT = <span class="stringliteral">"OUTPUT"</span></div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     RTYPE = <span class="stringliteral">'RTYPE'</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     TYPE = [<span class="stringliteral">'none'</span>, <span class="stringliteral">'Byte'</span>,<span class="stringliteral">'Int16'</span>,<span class="stringliteral">'UInt16'</span>,<span class="stringliteral">'UInt32'</span>,<span class="stringliteral">'Int32'</span>,<span class="stringliteral">'Float32'</span>,<span class="stringliteral">'Float64&# [...]
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     EXTRA = <span class="stringliteral">'EXTRA'</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span> </div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     <span class="keyword">def </span>cliName(self):</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>         <span class="keywordflow">return</span> <span class="stringliteral">"pksetmask"</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span> </div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     <span class="keyword">def </span>defineCharacteristics(self):</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>         self.<a class="code" href="classqgis_1_1pksetmask_1_1pksetmask.html#ac356f16f384fdc78b5419cdbaaac496d">name</a> = <span class="stringliteral">"apply mask to raster dataset"</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>         self.<a class="code" href="classqgis_1_1pksetmask_1_1pksetmask.html#a26a6204cff0e0414422bddb6d714c8d5">group</a> = <span class="stringliteral">"[pktools] raster"</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>         self.addParameter(ParameterRaster(self.<a class="code" href="classqgis_1_1pksetmask_1_1pksetmask.html#a64b4d0cf98dae937536135be3220011d">INPUT</a>, <span class="stringliteral">'Input layer raster data set'</span>,ParameterRaster))</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>         self.addParameter(ParameterMultipleInput(self.<a class="code" href="classqgis_1_1pksetmask_1_1pksetmask.html#a926a151acae3b3947f8f659c08901a0e">MASK</a>, <span class="stringliteral">'Mask(s) to apply'</span>,ParameterMultipleInput.TYPE_RASTER))</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pksetmask_1_1pksetmask.html#afd621c70d1c2fc2f29a598ca94f52209">MSKNODATA</a>, <span class="stringliteral">"Mask value(s), provide value for each mask (e.g., 250;255)"</span>,<span class="stringliteral">"1"</span>))</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pksetmask_1_1pksetmask.html#a72fd0200a13dd69eb8a8e8664288f8f3">MSKBAND</a>, <span class="stringliteral">"Mask band(s) to read, provide band for each mask (e.g., 0;1)"</span>,<span class="stringliteral">"0"</span>))</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pksetmask_1_1pksetmask.html#a68d2802febad55d67d4848ee6553d21e">OPERATOR</a>,<span class="stringliteral">"setmask rule"</span>,self.<a class="code" href="classqgis_1_1pksetmask_1_1pksetmask.html#a0ec16c72e434e986dc7127edd22a8756">OPERATOR_OPTIONS</a>, 0))</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pksetmask_1_1pksetmask.html#a7db2c15757ac66baf866fcaaba9f27ac">NODATA</a>, <span class="stringliteral">"nodata value to put in image if not valid"</span>,<span class="stringliteral">"0"</span>))</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>         self.addOutput(OutputRaster(self.<a class="code" href="classqgis_1_1pksetmask_1_1pksetmask.html#a1f43a43129a59344782bd62b9984045b">OUTPUT</a>, <span class="stringliteral">"Output raster data set"</span>))</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pksetmask_1_1pksetmask.html#a53adabeb756e8f6c38b739a182b4c351">RTYPE</a>, <span class="stringliteral">'Output raster type (leave as none to keep original type)'</span>, self.<a class="code" href="classqgis_1_1pksetmask_1_1pksetmask.html#a4c222c8118aa51967806a48f9e67151a">TYPE</a>, 0))</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pksetmask_1_1pksetmask.html#ae31305e3b79571cc6475b47cf9c4762e">EXTRA</a>,</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>                           <span class="stringliteral">'Additional parameters'</span>, <span class="stringliteral">'-of GTiff'</span>, optional=<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span> </div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     <span class="keyword">def </span>processAlgorithm(self, progress):</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>         cliPath = <span class="stringliteral">'"'</span> + os.path.join(pktoolsUtils.pktoolsPath(), self.<a class="code" href="classqgis_1_1pksetmask_1_1pksetmask.html#a539b2bbbabaa1ea1ac1dcdcc60a87669">cliName</a>()) + <span class="stringliteral">'"'</span></div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>         commands = [cliPath]</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span> </div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>         input=self.getParameterValue(self.<a class="code" href="classqgis_1_1pksetmask_1_1pksetmask.html#a64b4d0cf98dae937536135be3220011d">INPUT</a>)</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>         commands.append(<span class="stringliteral">'-i'</span>)</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>         commands.append(<span class="stringliteral">'"'</span> + input + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span> </div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>         mask=self.getParameterValue(self.<a class="code" href="classqgis_1_1pksetmask_1_1pksetmask.html#a926a151acae3b3947f8f659c08901a0e">MASK</a>)</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>         maskFiles = mask.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>         <span class="keywordflow">for</span> maskFile <span class="keywordflow">in</span> maskFiles:</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>             commands.append(<span class="stringliteral">'-m'</span>)</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>             commands.append(maskFile)</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span> </div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>         commands.append(str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pksetmask_1_1pksetmask.html#a72fd0200a13dd69eb8a8e8664288f8f3">MSKBAND</a>)))</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>         mskband=self.getParameterValue(self.<a class="code" href="classqgis_1_1pksetmask_1_1pksetmask.html#a72fd0200a13dd69eb8a8e8664288f8f3">MSKBAND</a>)</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>         mskbandValues = mskband.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>         <span class="keywordflow">for</span> mskbandValue <span class="keywordflow">in</span> mskbandValues:</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>                 commands.append(<span class="stringliteral">'-mskband'</span>)</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>                 commands.append(mskbandValue)</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>         commands.append(str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pksetmask_1_1pksetmask.html#afd621c70d1c2fc2f29a598ca94f52209">MSKNODATA</a>)))</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>         msknodata=self.getParameterValue(self.<a class="code" href="classqgis_1_1pksetmask_1_1pksetmask.html#afd621c70d1c2fc2f29a598ca94f52209">MSKNODATA</a>)</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>         msknodataValues = msknodata.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>         <span class="keywordflow">for</span> msknodataValue <span class="keywordflow">in</span> msknodataValues:</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>                 commands.append(<span class="stringliteral">'-msknodata'</span>)</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>                 commands.append(msknodataValue)</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span> </div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>         commands.append(<span class="stringliteral">"-p"</span>)</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>         commands.append(self.<a class="code" href="classqgis_1_1pksetmask_1_1pksetmask.html#a0ec16c72e434e986dc7127edd22a8756">OPERATOR_OPTIONS</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pksetmask_1_1pksetmask.html#a68d2802febad55d67d4848ee6553d21e">OPERATOR</a>)])</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>         nodata=self.getParameterValue(self.<a class="code" href="classqgis_1_1pksetmask_1_1pksetmask.html#a7db2c15757ac66baf866fcaaba9f27ac">NODATA</a>)</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>         commands.append(<span class="stringliteral">'-nodata'</span>)</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>         commands.append(nodata)</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>         <span class="keywordflow">if</span> self.<a class="code" href="classqgis_1_1pksetmask_1_1pksetmask.html#a4c222c8118aa51967806a48f9e67151a">TYPE</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pksetmask_1_1pksetmask.html#a53adabeb756e8f6c38b739a182b4c351">RTYPE</a>)] != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>             commands.append(<span class="stringliteral">'-ot'</span>)</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>             commands.append(self.<a class="code" href="classqgis_1_1pksetmask_1_1pksetmask.html#a4c222c8118aa51967806a48f9e67151a">TYPE</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pksetmask_1_1pksetmask.html#a53adabeb756e8f6c38b739a182b4c351">RTYPE</a>)])</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>         output=self.getOutputValue(self.<a class="code" href="classqgis_1_1pksetmask_1_1pksetmask.html#a1f43a43129a59344782bd62b9984045b">OUTPUT</a>)</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>         <span class="keywordflow">if</span> output != <span class="stringliteral">""</span>:</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>             commands.append(<span class="stringliteral">"-o"</span>)</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>             commands.append(<span class="stringliteral">'"'</span> + output + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span> </div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>         extra = str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pksetmask_1_1pksetmask.html#ae31305e3b79571cc6475b47cf9c4762e">EXTRA</a>))</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>         <span class="keywordflow">if</span> len(extra) > 0:</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>             commands.append(extra)</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span> </div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>         pktoolsUtils.runpktools(commands, progress)</div>
-<div class="ttc" id="classqgis_1_1pksetmask_1_1pksetmask_html_a0ec16c72e434e986dc7127edd22a8756"><div class="ttname"><a href="classqgis_1_1pksetmask_1_1pksetmask.html#a0ec16c72e434e986dc7127edd22a8756">qgis.pksetmask.pksetmask.OPERATOR_OPTIONS</a></div><div class="ttdeci">list OPERATOR_OPTIONS</div><div class="ttdef"><b>Definition:</b> <a href="pksetmask_8py_source.html#l00044">pksetmask.py:44</a></div></div>
-<div class="ttc" id="classqgis_1_1pksetmask_1_1pksetmask_html_a4c222c8118aa51967806a48f9e67151a"><div class="ttname"><a href="classqgis_1_1pksetmask_1_1pksetmask.html#a4c222c8118aa51967806a48f9e67151a">qgis.pksetmask.pksetmask.TYPE</a></div><div class="ttdeci">list TYPE</div><div class="ttdef"><b>Definition:</b> <a href="pksetmask_8py_source.html#l00049">pksetmask.py:49</a></div></div>
-<div class="ttc" id="classqgis_1_1pksetmask_1_1pksetmask_html_a68d2802febad55d67d4848ee6553d21e"><div class="ttname"><a href="classqgis_1_1pksetmask_1_1pksetmask.html#a68d2802febad55d67d4848ee6553d21e">qgis.pksetmask.pksetmask.OPERATOR</a></div><div class="ttdeci">string OPERATOR</div><div class="ttdef"><b>Definition:</b> <a href="pksetmask_8py_source.html#l00045">pksetmask.py:45</a></div></div>
-<div class="ttc" id="classqgis_1_1pksetmask_1_1pksetmask_html_a72fd0200a13dd69eb8a8e8664288f8f3"><div class="ttname"><a href="classqgis_1_1pksetmask_1_1pksetmask.html#a72fd0200a13dd69eb8a8e8664288f8f3">qgis.pksetmask.pksetmask.MSKBAND</a></div><div class="ttdeci">string MSKBAND</div><div class="ttdef"><b>Definition:</b> <a href="pksetmask_8py_source.html#l00043">pksetmask.py:43</a></div></div>
-<div class="ttc" id="classqgis_1_1pksetmask_1_1pksetmask_html_a64b4d0cf98dae937536135be3220011d"><div class="ttname"><a href="classqgis_1_1pksetmask_1_1pksetmask.html#a64b4d0cf98dae937536135be3220011d">qgis.pksetmask.pksetmask.INPUT</a></div><div class="ttdeci">string INPUT</div><div class="ttdef"><b>Definition:</b> <a href="pksetmask_8py_source.html#l00040">pksetmask.py:40</a></div></div>
-<div class="ttc" id="classqgis_1_1pksetmask_1_1pksetmask_html_a26a6204cff0e0414422bddb6d714c8d5"><div class="ttname"><a href="classqgis_1_1pksetmask_1_1pksetmask.html#a26a6204cff0e0414422bddb6d714c8d5">qgis.pksetmask.pksetmask.group</a></div><div class="ttdeci">group</div><div class="ttdef"><b>Definition:</b> <a href="pksetmask_8py_source.html#l00057">pksetmask.py:57</a></div></div>
-<div class="ttc" id="classqgis_1_1pksetmask_1_1pksetmask_html_a7db2c15757ac66baf866fcaaba9f27ac"><div class="ttname"><a href="classqgis_1_1pksetmask_1_1pksetmask.html#a7db2c15757ac66baf866fcaaba9f27ac">qgis.pksetmask.pksetmask.NODATA</a></div><div class="ttdeci">string NODATA</div><div class="ttdef"><b>Definition:</b> <a href="pksetmask_8py_source.html#l00046">pksetmask.py:46</a></div></div>
-<div class="ttc" id="classqgis_1_1pksetmask_1_1pksetmask_html_ae31305e3b79571cc6475b47cf9c4762e"><div class="ttname"><a href="classqgis_1_1pksetmask_1_1pksetmask.html#ae31305e3b79571cc6475b47cf9c4762e">qgis.pksetmask.pksetmask.EXTRA</a></div><div class="ttdeci">string EXTRA</div><div class="ttdef"><b>Definition:</b> <a href="pksetmask_8py_source.html#l00050">pksetmask.py:50</a></div></div>
-<div class="ttc" id="classqgis_1_1pksetmask_1_1pksetmask_html_afd621c70d1c2fc2f29a598ca94f52209"><div class="ttname"><a href="classqgis_1_1pksetmask_1_1pksetmask.html#afd621c70d1c2fc2f29a598ca94f52209">qgis.pksetmask.pksetmask.MSKNODATA</a></div><div class="ttdeci">string MSKNODATA</div><div class="ttdef"><b>Definition:</b> <a href="pksetmask_8py_source.html#l00042">pksetmask.py:42</a></div></div>
-<div class="ttc" id="classqgis_1_1pksetmask_1_1pksetmask_html_ac356f16f384fdc78b5419cdbaaac496d"><div class="ttname"><a href="classqgis_1_1pksetmask_1_1pksetmask.html#ac356f16f384fdc78b5419cdbaaac496d">qgis.pksetmask.pksetmask.name</a></div><div class="ttdeci">name</div><div class="ttdef"><b>Definition:</b> <a href="pksetmask_8py_source.html#l00056">pksetmask.py:56</a></div></div>
-<div class="ttc" id="classqgis_1_1pksetmask_1_1pksetmask_html_a53adabeb756e8f6c38b739a182b4c351"><div class="ttname"><a href="classqgis_1_1pksetmask_1_1pksetmask.html#a53adabeb756e8f6c38b739a182b4c351">qgis.pksetmask.pksetmask.RTYPE</a></div><div class="ttdeci">string RTYPE</div><div class="ttdef"><b>Definition:</b> <a href="pksetmask_8py_source.html#l00048">pksetmask.py:48</a></div></div>
-<div class="ttc" id="classqgis_1_1pksetmask_1_1pksetmask_html_a926a151acae3b3947f8f659c08901a0e"><div class="ttname"><a href="classqgis_1_1pksetmask_1_1pksetmask.html#a926a151acae3b3947f8f659c08901a0e">qgis.pksetmask.pksetmask.MASK</a></div><div class="ttdeci">string MASK</div><div class="ttdef"><b>Definition:</b> <a href="pksetmask_8py_source.html#l00041">pksetmask.py:41</a></div></div>
-<div class="ttc" id="classqgis_1_1pksetmask_1_1pksetmask_html_a539b2bbbabaa1ea1ac1dcdcc60a87669"><div class="ttname"><a href="classqgis_1_1pksetmask_1_1pksetmask.html#a539b2bbbabaa1ea1ac1dcdcc60a87669">qgis.pksetmask.pksetmask.cliName</a></div><div class="ttdeci">def cliName</div><div class="ttdef"><b>Definition:</b> <a href="pksetmask_8py_source.html#l00052">pksetmask.py:52</a></div></div>
-<div class="ttc" id="classqgis_1_1pksetmask_1_1pksetmask_html_a1f43a43129a59344782bd62b9984045b"><div class="ttname"><a href="classqgis_1_1pksetmask_1_1pksetmask.html#a1f43a43129a59344782bd62b9984045b">qgis.pksetmask.pksetmask.OUTPUT</a></div><div class="ttdeci">string OUTPUT</div><div class="ttdef"><b>Definition:</b> <a href="pksetmask_8py_source.html#l00047">pksetmask.py:47</a></div></div>
-<div class="ttc" id="classqgis_1_1pksetmask_1_1pksetmask_html"><div class="ttname"><a href="classqgis_1_1pksetmask_1_1pksetmask.html">qgis.pksetmask.pksetmask</a></div><div class="ttdef"><b>Definition:</b> <a href="pksetmask_8py_source.html#l00038">pksetmask.py:38</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pksieve.html b/doc/html/pksieve.html
deleted file mode 100644
index 49e1bbd..0000000
--- a/doc/html/pksieve.html
+++ /dev/null
@@ -1,102 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: pksieve</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pksieve </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><p>program to sieve filter raster image </p>
-<h2>SYNOPSIS</h2>
-<p><code> Usage: pksieve -i input [-s size] -o output </code></p>
-<p><code></code></p>
-<p><code> Options: [-c 4|8] [-b band] [-m mask] [-ot type] [-of format] [-co option]* [-ct table]</code></p>
-<p><code></code></p>
-<h1><a class="anchor" id="pksieve_description"></a>
-Description</h1>
-<p>The utility pksieve filters small objects (maximum size defined with the option -s) in a raster by replacing them to the largest neighbor object. In this context, objects are defined as pixels of the same value that are also connected. The connection can be defined in four directions (N-S and W-E: set option -c 4) or eight directions (N-S, W-E and diagonals NW-SE, NE-SW: set option -c 8).</p>
-<h1><a class="anchor" id="pksieve_options"></a>
-Options</h1>
-<ul>
-<li>use either <code>-short</code> or <code>--long</code> options (both <code>--long=value</code> and <code>--long value</code> are supported)</li>
-<li>short option <code>-h</code> shows basic options only, long option <code>--help</code> shows all options <table class="doxtable">
-<tr>
-<th>short</th><th>long</th><th>type</th><th>default</th><th>description  </th></tr>
-<tr>
-<td>i </td><td>input </td><td>std::string </td><td></td><td>Input image file </td></tr>
-<tr>
-<td>s </td><td>size </td><td>int </td><td>0 </td><td>raster polygons with sizes smaller than this will be merged into their largest neighbour. No sieve is performed if size = 0 </td></tr>
-<tr>
-<td>o </td><td>output </td><td>std::string </td><td></td><td>Output image file </td></tr>
-<tr>
-<td>c </td><td>connect </td><td>int </td><td>8 </td><td>the connectedness: 4 directions or 8 directions </td></tr>
-<tr>
-<td>b </td><td>band </td><td>int </td><td>0 </td><td>the band to be used from input file </td></tr>
-<tr>
-<td>m </td><td>mask </td><td>std::string </td><td></td><td>Use the first band of the specified file as a validity mask (zero is invalid, non-zero is valid). </td></tr>
-<tr>
-<td>ot </td><td>otype </td><td>std::string </td><td></td><td>Data type for output image ({Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/CInt16/CInt32/CFloat32/CFloat64}). Empty string: inherit type from input image </td></tr>
-<tr>
-<td>co </td><td>co </td><td>std::string </td><td></td><td>Creation option for output file. Multiple options can be specified. </td></tr>
-<tr>
-<td>ct </td><td>ct </td><td>std::string </td><td></td><td>color table (file with 5 columns: id R G B ALFA (0: transparent, 255: solid) </td></tr>
-</table>
-Usage: pksieve -i input [-s size] -o output</li>
-</ul>
-<h1>Examples </h1>
-<p>Some examples how to use pksieve can be found <a class="el" href="md_examples_pksieve.html#examples_pksieve">here</a> </p>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pksieve_8cc_source.html b/doc/html/pksieve_8cc_source.html
deleted file mode 100644
index 77c9fd4..0000000
--- a/doc/html/pksieve_8cc_source.html
+++ /dev/null
@@ -1,196 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/pksieve.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pksieve.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pksieve.cc: program to sieve filter raster image</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "cpl_string.h"</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "gdal_priv.h"</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "gdal.h"</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "imageclasses/ImgReaderGdal.h"</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "imageclasses/ImgWriterGdal.h"</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="comment">// #include "imageclasses/ImgWriterOgr.h"</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "ogrsf_frmts.h"</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span> {</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include "gdal_alg.h"</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include "ogr_api.h"</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> }</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="comment">/******************************************************************************/</span></div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span> </div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc,<span class="keywordtype">char</span> **argv) {</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> input_opt(<span class="stringliteral">"i"</span>, <span class="stringliteral">"input"</span>, <span class="stringliteral">"Input image file"</span>);</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> mask_opt(<span class="stringliteral">"m"</span>, <span class="stringliteral">"mask"</span>, <span class="stringliteral">"Use the first band of the specified file as a validity mask (zero is invalid, non-zero is valid)."</span>);</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> output_opt(<span class="stringliteral">"o"</span>, <span class="stringliteral">"output"</span>, <span class="stringliteral">"Output image file"</span>);</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> band_opt(<span class="stringliteral">"b"</span>, <span class="stringliteral">"band"</span>, <span class="stringliteral">"the band to be used from input file"</span>, 0);</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> connect_opt(<span class="stringliteral">"c"</span>, <span class="stringliteral">"connect"</span>, <span class="stringliteral">"the connectedness: 4 directions or 8 directions"</span>, 8);</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> size_opt(<span class="stringliteral">"s"</span>, <span class="stringliteral">"size"</span>, <span class="stringliteral">"raster polygons with sizes smaller than this will be merged into their largest neighbour. No sieve is performed if size = 0"</span>, 0);</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  otype_opt(<span class="stringliteral">"ot"</span>, <span class="stringliteral">"otype"</span>, <span class="stringliteral">"Data type for output image ({Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/CInt16/CInt32/CFloat32/CFloat64}). Empty string: inherit type from input image"</span>, <span class="stringliter [...]
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> option_opt(<span class="stringliteral">"co"</span>, <span class="stringliteral">"co"</span>, <span class="stringliteral">"Creation option for output file. Multiple options can be specified."</span>);</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> colorTable_opt(<span class="stringliteral">"ct"</span>, <span class="stringliteral">"ct"</span>, <span class="stringliteral">"color table (file with 5 columns: id R G B ALFA (0: transparent, 255: solid)"</span>);</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> verbose_opt(<span class="stringliteral">"v"</span>, <span class="stringliteral">"verbose"</span>, <span class="stringliteral">"verbose mode if > 0"</span>, 0,2);</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span> </div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   <span class="keywordtype">bool</span> doProcess;<span class="comment">//stop process when program was invoked with help option (-h --help)</span></div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>     doProcess=input_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     size_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     output_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     connect_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     band_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>     mask_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>     otype_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>     option_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     colorTable_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     verbose_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>   }</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> predefinedString){</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     std::cout << predefinedString << std::endl;</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     exit(0);</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>   }</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>   <span class="keywordflow">if</span>(!doProcess){</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     cout << endl;</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     cout << <span class="stringliteral">"Usage: pksieve -i input [-s size] -o output"</span> << endl;</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     cout << endl;</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     std::cout << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << std::endl;</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   }</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span> </div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>   GDALAllRegister();</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span> </div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>   <span class="keywordtype">double</span> dfComplete=0.0;</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>   pfnProgress(dfComplete,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>   </div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>   <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> maskReader;</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>   GDALRasterBand *maskBand=NULL;</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>   <span class="keywordflow">if</span>(mask_opt.size()){</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>       cout << <span class="stringliteral">"opening mask file "</span> << mask_opt[0] << endl;</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     maskReader.open(mask_opt[0]);</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>     maskBand = maskReader.getRasterBand(0);</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>   }</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span> </div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>   assert(input_opt.size());</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>   assert(output_opt.size());</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>   <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> inputReader(input_opt[0]);</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>   GDALRasterBand  *inputBand;</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>   inputBand=inputReader.getRasterBand(band_opt[0]);</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span> </div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>   <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> outputWriter;</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>   GDALRasterBand *outputBand=NULL;</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>     cout << <span class="stringliteral">"opening output file "</span> << output_opt[0] << endl;</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>   outputWriter.open(output_opt[0],inputReader);</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>   <span class="keywordflow">if</span>(colorTable_opt.size()){</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>     <span class="keywordflow">if</span>(colorTable_opt[0]!=<span class="stringliteral">"none"</span>)</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>       outputWriter.setColorTable(colorTable_opt[0]);</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>   }</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (inputReader.getColorTable()!=NULL)<span class="comment">//copy colorTable from input image</span></div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>     outputWriter.setColorTable(inputReader.getColorTable());</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>   outputBand = outputWriter.getRasterBand(0);</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>   <span class="comment">//sieve filter to remove small raster elements (overwrite input band)</span></div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>   <span class="keywordflow">if</span>(size_opt[0]){</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>     <span class="keywordflow">if</span>(GDALSieveFilter((GDALRasterBandH)inputBand, (GDALRasterBandH)maskBand, (GDALRasterBandH)outputBand, size_opt[0], connect_opt[0],NULL,pfnProgress,pProgressArg)!=CE_None)</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>       cerr << CPLGetLastErrorMsg() << endl;</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>       dfComplete=1.0;</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>       pfnProgress(dfComplete,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>     }</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>   }</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>   inputReader.close();</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>   <span class="keywordflow">if</span>(mask_opt.size())</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>     maskReader.close();</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>   outputWriter.close();</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span> }</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span> </div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-<div class="ttc" id="classImgWriterGdal_html"><div class="ttname"><a href="classImgWriterGdal.html">ImgWriterGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgWriterGdal_8h_source.html#l00033">ImgWriterGdal.h:33</a></div></div>
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkstat.html b/doc/html/pkstat.html
deleted file mode 100644
index 6a7c9b1..0000000
--- a/doc/html/pkstat.html
+++ /dev/null
@@ -1,140 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: pkstat</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkstat </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><p>program to calculate basic statistics from raster dataset </p>
-<h2>SYNOPSIS</h2>
-<p><code> Usage: pkstat -i input </code></p>
-<h1><a class="anchor" id="pkstat_options"></a>
-Options</h1>
-<ul>
-<li>use either <code>-short</code> or <code>--long</code> options (both <code>--long=value</code> and <code>--long value</code> are supported)</li>
-<li>short option <code>-h</code> shows basic options only, long option <code>--help</code> shows all options <table class="doxtable">
-<tr>
-<th>short</th><th>long</th><th>type</th><th>default</th><th>description  </th></tr>
-<tr>
-<td>i </td><td>input </td><td>std::string </td><td></td><td>name of the input raster dataset </td></tr>
-<tr>
-<td>b </td><td>band </td><td>unsigned short </td><td>0 </td><td>band(s) on which to calculate statistics </td></tr>
-<tr>
-<td>f </td><td>filename </td><td>bool </td><td>false </td><td>Shows image filename </td></tr>
-<tr>
-<td>stats </td><td>statistics </td><td>bool </td><td>false </td><td>Shows basic statistics (min,max, mean and stdDev of the raster datasets) </td></tr>
-<tr>
-<td>nodata </td><td>nodata </td><td>double </td><td></td><td>Set nodata value(s) </td></tr>
-<tr>
-<td>mean </td><td>mean </td><td>bool </td><td>false </td><td>calculate mean </td></tr>
-<tr>
-<td>median </td><td>median </td><td>bool </td><td>false </td><td>calculate median </td></tr>
-<tr>
-<td>var </td><td>var </td><td>bool </td><td>false </td><td>calculate variance </td></tr>
-<tr>
-<td>stdev </td><td>stdev </td><td>bool </td><td>false </td><td>calculate standard deviation </td></tr>
-<tr>
-<td>mm </td><td>minmax </td><td>bool </td><td>false </td><td>calculate minimum and maximum value </td></tr>
-<tr>
-<td>min </td><td>min </td><td>bool </td><td>false </td><td>calculate minimum value </td></tr>
-<tr>
-<td>max </td><td>max </td><td>bool </td><td>false </td><td>calculate maximum value </td></tr>
-<tr>
-<td>hist </td><td>hist </td><td>bool </td><td>false </td><td>calculate histogram </td></tr>
-<tr>
-<td>nbin </td><td>nbin </td><td>short </td><td></td><td>number of bins to calculate histogram </td></tr>
-<tr>
-<td>rel </td><td>relative </td><td>bool </td><td>false </td><td>use percentiles for histogram to calculate histogram </td></tr>
-<tr>
-<td>hist2d </td><td>hist2d </td><td>bool </td><td>false </td><td>calculate 2-dimensional histogram based on two images </td></tr>
-<tr>
-<td>cor </td><td>correlation </td><td>bool </td><td>false </td><td>calculate Pearson produc-moment correlation coefficient between two raster datasets (defined by -c <col1> -c <col2>) </td></tr>
-<tr>
-<td>rmse </td><td>rmse </td><td>bool </td><td>false </td><td>calculate root mean square error between two raster datasets </td></tr>
-<tr>
-<td>reg </td><td>regression </td><td>bool </td><td>false </td><td>calculate linear regression between two raster datasets and get correlation coefficient </td></tr>
-<tr>
-<td>regerr </td><td>regerr </td><td>bool </td><td>false </td><td>calculate linear regression between two raster datasets and get root mean square error </td></tr>
-<tr>
-<td>preg </td><td>preg </td><td>bool </td><td>false </td><td>calculate perpendicular regression between two raster datasets and get correlation coefficient </td></tr>
-<tr>
-<td>ulx </td><td>ulx </td><td>double </td><td></td><td>Upper left x value bounding box </td></tr>
-<tr>
-<td>uly </td><td>uly </td><td>double </td><td></td><td>Upper left y value bounding box </td></tr>
-<tr>
-<td>lrx </td><td>lrx </td><td>double </td><td></td><td>Lower right x value bounding box </td></tr>
-<tr>
-<td>lry </td><td>lry </td><td>double </td><td></td><td>Lower right y value bounding box </td></tr>
-<tr>
-<td>down </td><td>down </td><td>short </td><td>1 </td><td>Down sampling factor (for raster sample datasets only). Can be used to create grid points </td></tr>
-<tr>
-<td>rnd </td><td>rnd </td><td>unsigned int </td><td>0 </td><td>generate random numbers </td></tr>
-<tr>
-<td>scale </td><td>scale </td><td>double </td><td></td><td>Scale(s) for reading input image(s) </td></tr>
-<tr>
-<td>offset </td><td>offset </td><td>double </td><td></td><td>Offset(s) for reading input image(s) </td></tr>
-<tr>
-<td>src_min </td><td>src_min </td><td>double </td><td></td><td>start reading source from this minimum value </td></tr>
-<tr>
-<td>src_max </td><td>src_max </td><td>double </td><td></td><td>stop reading source from this maximum value </td></tr>
-<tr>
-<td>kde </td><td>kde </td><td>bool </td><td>false </td><td>Use <a class="el" href="classKernel.html">Kernel</a> density estimation when producing histogram. The standard deviation is estimated based on Silverman's rule of thumb </td></tr>
-</table>
-Usage: pkstat -i input </li>
-</ul>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkstat_8cc_source.html b/doc/html/pkstat_8cc_source.html
deleted file mode 100644
index fc61132..0000000
--- a/doc/html/pkstat_8cc_source.html
+++ /dev/null
@@ -1,1167 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/pkstat.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkstat.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pkstat.cc: program to calculate basic statistics from raster dataset</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2015 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <iostream></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <fstream></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <math.h></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "algorithms/StatFactory.h"</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "algorithms/ImgRegression.h"</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="comment">/******************************************************************************/</span></div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span> </div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span> {</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> input_opt(<span class="stringliteral">"i"</span>,<span class="stringliteral">"input"</span>,<span class="stringliteral">"name of the input raster dataset"</span>);</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> band_opt(<span class="stringliteral">"b"</span>,<span class="stringliteral">"band"</span>,<span class="stringliteral">"band(s) on which to calculate statistics"</span>,0);</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a>  filename_opt(<span class="stringliteral">"f"</span>, <span class="stringliteral">"filename"</span>, <span class="stringliteral">"Shows image filename "</span>, <span class="keyword">false</span>);</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a>  stat_opt(<span class="stringliteral">"stats"</span>, <span class="stringliteral">"statistics"</span>, <span class="stringliteral">"Shows basic statistics (calculate in memory) (min,max, mean and stdDev of the raster datasets)"</span>, <span class="keyword">false</span>);</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a>  fstat_opt(<span class="stringliteral">"fstats"</span>, <span class="stringliteral">"fstatistics"</span>, <span class="stringliteral">"Shows basic statistics using GDAL computeStatistics  (min,max, mean and stdDev of the raster datasets)"</span>, <span class="keyword">false</span>);</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a>  ulx_opt(<span class="stringliteral">"ulx"</span>, <span class="stringliteral">"ulx"</span>, <span class="stringliteral">"Upper left x value bounding box"</span>);</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a>  uly_opt(<span class="stringliteral">"uly"</span>, <span class="stringliteral">"uly"</span>, <span class="stringliteral">"Upper left y value bounding box"</span>);</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a>  lrx_opt(<span class="stringliteral">"lrx"</span>, <span class="stringliteral">"lrx"</span>, <span class="stringliteral">"Lower right x value bounding box"</span>);</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a>  lry_opt(<span class="stringliteral">"lry"</span>, <span class="stringliteral">"lry"</span>, <span class="stringliteral">"Lower right y value bounding box"</span>);</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> nodata_opt(<span class="stringliteral">"nodata"</span>,<span class="stringliteral">"nodata"</span>,<span class="stringliteral">"Set nodata value(s)"</span>);</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> down_opt(<span class="stringliteral">"down"</span>, <span class="stringliteral">"down"</span>, <span class="stringliteral">"Down sampling factor (for raster sample datasets only). Can be used to create grid points"</span>, 1);</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned int></a> random_opt(<span class="stringliteral">"rnd"</span>, <span class="stringliteral">"rnd"</span>, <span class="stringliteral">"generate random numbers"</span>, 0);</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a>  scale_opt(<span class="stringliteral">"scale"</span>, <span class="stringliteral">"scale"</span>, <span class="stringliteral">"Scale(s) for reading input image(s)"</span>);</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a>  offset_opt(<span class="stringliteral">"offset"</span>, <span class="stringliteral">"offset"</span>, <span class="stringliteral">"Offset(s) for reading input image(s)"</span>);</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span> </div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>   <span class="comment">// Optionpk<bool> transpose_opt("t","transpose","transpose output",false);</span></div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>   <span class="comment">// Optionpk<std::string> randdist_opt("dist", "dist", "distribution for generating random numbers, see http://www.gn/software/gsl/manual/gsl-ref_toc.html#TOC320 (only uniform and Gaussian supported yet)", "gaussian");</span></div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>   <span class="comment">// Optionpk<double> randa_opt("rnda", "rnda", "first parameter for random distribution (mean value in case of Gaussian)", 0);</span></div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>   <span class="comment">// Optionpk<double> randb_opt("rndb", "rndb", "second parameter for random distribution (standard deviation in case of Gaussian)", 1);</span></div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> mean_opt(<span class="stringliteral">"mean"</span>,<span class="stringliteral">"mean"</span>,<span class="stringliteral">"calculate mean"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> median_opt(<span class="stringliteral">"median"</span>,<span class="stringliteral">"median"</span>,<span class="stringliteral">"calculate median"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> var_opt(<span class="stringliteral">"var"</span>,<span class="stringliteral">"var"</span>,<span class="stringliteral">"calculate variance"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> skewness_opt(<span class="stringliteral">"skew"</span>,<span class="stringliteral">"skewness"</span>,<span class="stringliteral">"calculate skewness"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> kurtosis_opt(<span class="stringliteral">"kurt"</span>,<span class="stringliteral">"kurtosis"</span>,<span class="stringliteral">"calculate kurtosis"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> stdev_opt(<span class="stringliteral">"stdev"</span>,<span class="stringliteral">"stdev"</span>,<span class="stringliteral">"calculate standard deviation"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> sum_opt(<span class="stringliteral">"sum"</span>,<span class="stringliteral">"sum"</span>,<span class="stringliteral">"calculate sum of column"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> minmax_opt(<span class="stringliteral">"mm"</span>,<span class="stringliteral">"minmax"</span>,<span class="stringliteral">"calculate minimum and maximum value"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> min_opt(<span class="stringliteral">"min"</span>,<span class="stringliteral">"min"</span>,<span class="stringliteral">"calculate minimum value"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> max_opt(<span class="stringliteral">"max"</span>,<span class="stringliteral">"max"</span>,<span class="stringliteral">"calculate maximum value"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> src_min_opt(<span class="stringliteral">"src_min"</span>,<span class="stringliteral">"src_min"</span>,<span class="stringliteral">"start reading source from this minimum value"</span>);</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> src_max_opt(<span class="stringliteral">"src_max"</span>,<span class="stringliteral">"src_max"</span>,<span class="stringliteral">"stop reading source from this maximum value"</span>);</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> histogram_opt(<span class="stringliteral">"hist"</span>,<span class="stringliteral">"hist"</span>,<span class="stringliteral">"calculate histogram"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> histogram2d_opt(<span class="stringliteral">"hist2d"</span>,<span class="stringliteral">"hist2d"</span>,<span class="stringliteral">"calculate 2-dimensional histogram based on two images"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> nbin_opt(<span class="stringliteral">"nbin"</span>,<span class="stringliteral">"nbin"</span>,<span class="stringliteral">"number of bins to calculate histogram"</span>);</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> relative_opt(<span class="stringliteral">"rel"</span>,<span class="stringliteral">"relative"</span>,<span class="stringliteral">"use percentiles for histogram to calculate histogram"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> kde_opt(<span class="stringliteral">"kde"</span>,<span class="stringliteral">"kde"</span>,<span class="stringliteral">"Use Kernel density estimation when producing histogram. The standard deviation is estimated based on Silverman's rule of thumb"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> rmse_opt(<span class="stringliteral">"rmse"</span>,<span class="stringliteral">"rmse"</span>,<span class="stringliteral">"calculate root mean square error between two raster datasets"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> reg_opt(<span class="stringliteral">"reg"</span>,<span class="stringliteral">"regression"</span>,<span class="stringliteral">"calculate linear regression between two raster datasets and get correlation coefficient"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> regerr_opt(<span class="stringliteral">"regerr"</span>,<span class="stringliteral">"regerr"</span>,<span class="stringliteral">"calculate linear regression between two raster datasets and get root mean square error"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> preg_opt(<span class="stringliteral">"preg"</span>,<span class="stringliteral">"preg"</span>,<span class="stringliteral">"calculate perpendicular regression between two raster datasets and get correlation coefficient"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> verbose_opt(<span class="stringliteral">"v"</span>, <span class="stringliteral">"verbose"</span>, <span class="stringliteral">"verbose mode when positive"</span>, 0,2);</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>   fstat_opt.setHide(1);</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>   ulx_opt.setHide(1);</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>   uly_opt.setHide(1);</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>   lrx_opt.setHide(1);</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>   lry_opt.setHide(1);</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>   down_opt.setHide(1);</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>   random_opt.setHide(1);</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>   scale_opt.setHide(1);</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>   offset_opt.setHide(1);</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>   src_min_opt.setHide(1);</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>   src_max_opt.setHide(1);</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>   kde_opt.setHide(1);</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span> </div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>   <span class="comment">// range_opt.setHide(1);</span></div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>   <span class="comment">// transpose_opt.setHide(1);</span></div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span> </div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>   <span class="keywordtype">bool</span> doProcess;<span class="comment">//stop process when program was invoked with help option (-h --help)</span></div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>     <span class="comment">//mandatory options</span></div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>     doProcess=input_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>     <span class="comment">//optional options</span></div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>     band_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>     filename_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>     stat_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>     fstat_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>     nodata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>     mean_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>     median_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>     var_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>     stdev_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>     minmax_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>     min_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>     max_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>     histogram_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>     nbin_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>     relative_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>     histogram2d_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>     rmse_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>     reg_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>     regerr_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>     preg_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>     <span class="comment">//advanced options</span></div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>     ulx_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>     uly_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>     lrx_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>     lry_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>     down_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>     random_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>     scale_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>     offset_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>     src_min_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>     src_max_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>     kde_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>     verbose_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>   }</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> predefinedString){</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>     std::cout << predefinedString << std::endl;</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>     exit(0);</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>   }</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>   <span class="keywordflow">if</span>(!doProcess){</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>     cout << endl;</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>     cout << <span class="stringliteral">"Usage: pkstat -i input"</span> << endl;</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>     cout << endl;</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>     std::cout << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << std::endl;</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>     exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>   }</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span> </div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>   <span class="keywordflow">if</span>(src_min_opt.size()){</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>     <span class="keywordflow">while</span>(src_min_opt.size()<band_opt.size())</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>       src_min_opt.push_back(src_min_opt[0]);</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>   }</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>   <span class="keywordflow">if</span>(src_max_opt.size()){</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>     <span class="keywordflow">while</span>(src_max_opt.size()<band_opt.size())</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>       src_max_opt.push_back(src_max_opt[0]);</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>   }</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span> </div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nbin=0;</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>   <span class="keywordtype">double</span> minX=0;</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>   <span class="keywordtype">double</span> minY=0;</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>   <span class="keywordtype">double</span> maxX=0;</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>   <span class="keywordtype">double</span> maxY=0;</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>   <span class="keywordtype">double</span> minValue=(src_min_opt.size())? src_min_opt[0] : 0;</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>   <span class="keywordtype">double</span> maxValue=(src_max_opt.size())? src_max_opt[0] : 0;</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>   <span class="keywordtype">double</span> meanValue=0;</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>   <span class="keywordtype">double</span> medianValue=0;</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>   <span class="keywordtype">double</span> stdDev=0;</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span> </div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>   <span class="keywordtype">double</span> progress=0;</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>   srand(time(NULL));</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span> </div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>   <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>   <a class="code" href="classimgregression_1_1ImgRegression.html">imgregression::ImgRegression</a> imgreg;</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>   std::vector<double> histogramOutput;</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>   <span class="keywordtype">double</span> nsample=0;</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span> </div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>   <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> imgReader;</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span> </div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>   <span class="keywordflow">if</span>(scale_opt.size()){</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>     <span class="keywordflow">while</span>(scale_opt.size()<input_opt.size())</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>       scale_opt.push_back(scale_opt[0]);</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>   }</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>   <span class="keywordflow">if</span>(offset_opt.size()){</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>     <span class="keywordflow">while</span>(offset_opt.size()<input_opt.size())</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>       offset_opt.push_back(offset_opt[0]);</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>   }</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>   <span class="keywordflow">if</span>(input_opt.empty()){</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>     std::cerr << <span class="stringliteral">"No image dataset provided (use option -i). Use --help for help information"</span>;</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>       exit(0);</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>   }</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ifile=0;ifile<input_opt.size();++ifile){</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>       imgReader.open(input_opt[ifile]);</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>     }</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>     <span class="keywordflow">catch</span>(std::string errorstring){</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>       std::cout << errorstring << std::endl;</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>       exit(0);</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>     }</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span> </div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>     <span class="keywordflow">if</span>(filename_opt[0])</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>       std::cout << <span class="stringliteral">" --input "</span> << input_opt[ifile] << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span> </div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> inodata=0;inodata<nodata_opt.size();++inodata)</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>       imgReader.pushNoDataValue(nodata_opt[inodata]);</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span> </div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>     <span class="keywordtype">int</span> nband=band_opt.size();</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span> </div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> inodata=0;inodata<nodata_opt.size();++inodata){</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>     <span class="keywordflow">if</span>(!inodata)</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>       imgReader.GDALSetNoDataValue(nodata_opt[0],band_opt[iband]);<span class="comment">//only single no data can be set in GDALRasterBand (used for ComputeStatistics)</span></div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>       }</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span> </div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>       <span class="keywordflow">if</span>(offset_opt.size()>ifile)</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>         imgReader.setOffset(offset_opt[ifile],band_opt[iband]);</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>       <span class="keywordflow">if</span>(scale_opt.size()>ifile)</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>         imgReader.setScale(scale_opt[ifile],band_opt[iband]);</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span> </div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>       <span class="keywordflow">if</span>(stat_opt[0]||mean_opt[0]||median_opt[0]||var_opt[0]||stdev_opt[0]){<span class="comment">//the hard way (in memory)</span></div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>     <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>     vector<double> readBuffer;</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>     <span class="keywordtype">double</span> varValue;</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>     imgReader.readDataBlock(readBuffer, GDT_Float64, 0, imgReader.nrOfCol()-1, 0, imgReader.nrOfRow()-1, band_opt[0]);</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>     stat.setNoDataValues(nodata_opt);</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>     stat.meanVar(readBuffer,meanValue,varValue);</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>     medianValue=stat.median(readBuffer);</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>     stat.minmax(readBuffer,readBuffer.begin(),readBuffer.end(),minValue,maxValue);</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>         <span class="keywordflow">if</span>(mean_opt[0])</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>           std::cout << <span class="stringliteral">"--mean "</span> << meanValue << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>         <span class="keywordflow">if</span>(median_opt[0])</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>           std::cout << <span class="stringliteral">"--median "</span> << medianValue << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>         <span class="keywordflow">if</span>(stdev_opt[0])</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>           std::cout << <span class="stringliteral">"--stdDev "</span> << sqrt(varValue) << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>         <span class="keywordflow">if</span>(var_opt[0])</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>           std::cout << <span class="stringliteral">"--var "</span> << varValue << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>         <span class="keywordflow">if</span>(stat_opt[0])</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>           std::cout << <span class="stringliteral">"-min "</span> << minValue << <span class="stringliteral">" -max "</span> << maxValue << <span class="stringliteral">" --mean "</span> << meanValue << <span class="stringliteral">" --stdDev "</span> << sqrt(varValue) << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>       }</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span> </div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>       <span class="keywordflow">if</span>(fstat_opt[0]){<span class="comment">//the fast way</span></div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>         assert(band_opt[iband]<imgReader.nrOfBand());</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>     GDALProgressFunc pfnProgress;</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>     <span class="keywordtype">void</span>* pProgressData;</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>     GDALRasterBand* rasterBand;</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>         rasterBand=imgReader.getRasterBand(band_opt[iband]);</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>         rasterBand->ComputeStatistics(0,&minValue,&maxValue,&meanValue,&stdDev,pfnProgress,pProgressData);</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span> </div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>     std::cout << <span class="stringliteral">"-min "</span> << minValue << <span class="stringliteral">" -max "</span> << maxValue << <span class="stringliteral">" --mean "</span> << meanValue << <span class="stringliteral">" --stdDev "</span> << stdDev << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>       }</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span> </div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>       <span class="keywordflow">if</span>(minmax_opt[0]||min_opt[0]||max_opt[0]){</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>     assert(band_opt[iband]<imgReader.nrOfBand());</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span> </div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>     <span class="keywordflow">if</span>((ulx_opt.size()||uly_opt.size()||lrx_opt.size()||lry_opt.size())&&(imgReader.covers(ulx_opt[0],uly_opt[0],lrx_opt[0],lry_opt[0]))){</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>       <span class="keywordtype">double</span> uli,ulj,lri,lrj;</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>       imgReader.geo2image(ulx_opt[0],uly_opt[0],uli,ulj);</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>       imgReader.geo2image(lrx_opt[0],lry_opt[0],lri,lrj);</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>       imgReader.getMinMax(static_cast<int>(uli),static_cast<int>(lri),static_cast<int>(ulj),static_cast<int>(lrj),band_opt[iband],minValue,maxValue);</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>     }</div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>       imgReader.getMinMax(minValue,maxValue,band_opt[iband]);</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>     }</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>     <span class="keywordflow">if</span>(minmax_opt[0])</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>       std::cout << <span class="stringliteral">"-min "</span> << minValue << <span class="stringliteral">" -max "</span> << maxValue << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>       <span class="keywordflow">if</span>(min_opt[0])</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>         std::cout << <span class="stringliteral">"-min "</span> << minValue << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>       <span class="keywordflow">if</span>(max_opt[0])</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>         std::cout << <span class="stringliteral">"-max "</span> << maxValue << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>     }</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>       }</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>     }</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>     <span class="keywordflow">if</span>(histogram_opt[0]){<span class="comment">//aggregate results from multiple inputs, but only calculate for first selected band</span></div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>       assert(band_opt[0]<imgReader.nrOfBand());</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>       nbin=(nbin_opt.size())? nbin_opt[0]:0;</div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>       </div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>       imgReader.getMinMax(minValue,maxValue,band_opt[0]);</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>       <span class="keywordflow">if</span>(src_min_opt.size())</div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>         minValue=src_min_opt[0];</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>       <span class="keywordflow">if</span>(src_max_opt.size())</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>         maxValue=src_max_opt[0];</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>       <span class="keywordflow">if</span>(minValue>=maxValue)</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>     imgReader.getMinMax(minValue,maxValue,band_opt[0]);</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span> </div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>     cout << <span class="stringliteral">"number of valid pixels in image: "</span> << imgReader.getNvalid(band_opt[0]) << endl;</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span> </div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>       nsample+=imgReader.getHistogram(histogramOutput,minValue,maxValue,nbin,band_opt[0],kde_opt[0]);</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span> </div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>       <span class="comment">//only output for last input file</span></div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>       <span class="keywordflow">if</span>(ifile==input_opt.size()-1){</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>     std::cout.precision(10);</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> bin=0;bin<nbin;++bin){</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>       <span class="keywordtype">double</span> binValue=0;</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>       <span class="keywordflow">if</span>(nbin==maxValue-minValue+1)</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>         binValue=minValue+bin;</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>         binValue=minValue+<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(maxValue-minValue)*(bin+0.5)/nbin;</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>       std::cout << binValue << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>       <span class="keywordflow">if</span>(relative_opt[0]||kde_opt[0])</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>         std::cout << 100.0*<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(histogramOutput[bin])/static_cast<double>(nsample) << std::endl;</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>         std::cout << static_cast<double>(histogramOutput[bin]) << std::endl;</div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>     }</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>       }</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>     }</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>     <span class="keywordflow">if</span>(histogram2d_opt[0]&&input_opt.size()<2){</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>       assert(band_opt.size()>1);</div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>       imgReader.getMinMax(minX,maxX,band_opt[0]);</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>       imgReader.getMinMax(minY,maxY,band_opt[1]);</div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>       <span class="keywordflow">if</span>(src_min_opt.size()){</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>     minX=src_min_opt[0];</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>     minY=src_min_opt[1];</div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>       }</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>       <span class="keywordflow">if</span>(src_max_opt.size()){</div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>     maxX=src_max_opt[0];</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>     maxY=src_max_opt[1];</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>       }</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>       nbin=(nbin_opt.size())? nbin_opt[0]:0;</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>       <span class="keywordflow">if</span>(nbin<=1){</div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>     std::cerr << <span class="stringliteral">"Warning: number of bins not defined, calculating bins from min and max value"</span> << std::endl;</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>     <span class="keywordflow">if</span>(minX>=maxX)</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>       imgReader.getMinMax(minX,maxX,band_opt[0]);</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>     <span class="keywordflow">if</span>(minY>=maxY)</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>       imgReader.getMinMax(minY,maxY,band_opt[1]);</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span> </div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>     minValue=(minX<minY)? minX:minY;</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>     maxValue=(maxX>maxY)? maxX:maxY;</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>       std::cout << <span class="stringliteral">"min and max values: "</span> << minValue << <span class="stringliteral">", "</span> << maxValue << std::endl;</div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>     nbin=maxValue-minValue+1;</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>       }</div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>       assert(nbin>1);</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>       <span class="keywordtype">double</span> sigma=0;</div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>       <span class="comment">//kernel density estimation as in http://en.wikipedia.org/wiki/Kernel_density_estimation</span></div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>       <span class="keywordflow">if</span>(kde_opt[0]){</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>     assert(band_opt[0]<imgReader.nrOfBand());</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>     assert(band_opt[1]<imgReader.nrOfBand());</div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>     GDALProgressFunc pfnProgress;</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>     <span class="keywordtype">void</span>* pProgressData;</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>     GDALRasterBand* rasterBand;</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>     <span class="keywordtype">double</span> stdDev1=0;</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>     <span class="keywordtype">double</span> stdDev2=0;</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>     rasterBand=imgReader.getRasterBand(band_opt[0]);</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>     rasterBand->ComputeStatistics(0,&minValue,&maxValue,&meanValue,&stdDev1,pfnProgress,pProgressData);</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>     rasterBand=imgReader.getRasterBand(band_opt[1]);</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>     rasterBand->ComputeStatistics(0,&minValue,&maxValue,&meanValue,&stdDev2,pfnProgress,pProgressData);</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span> </div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>     <span class="keywordtype">double</span> estimatedSize=1.0*imgReader.getNvalid(band_opt[0])/down_opt[0]/down_opt[0];</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>     <span class="keywordflow">if</span>(random_opt[0]>0)</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>       estimatedSize*=random_opt[0]/100.0;</div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>         sigma=1.06*sqrt(stdDev1*stdDev2)*pow(estimatedSize,-0.2);</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>       }</div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>       assert(nbin);</div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>       <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>     <span class="keywordflow">if</span>(sigma>0)</div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>       std::cout << <span class="stringliteral">"calculating 2d kernel density estimate with sigma "</span> << sigma << <span class="stringliteral">" for bands "</span> << band_opt[0] << <span class="stringliteral">" and "</span> << band_opt[1] << std::endl;</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span>       std::cout << <span class="stringliteral">"calculating 2d histogram for bands "</span> << band_opt[0] << <span class="stringliteral">" and "</span> << band_opt[1] << std::endl;</div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>     std::cout << <span class="stringliteral">"nbin: "</span> << nbin << std::endl;</div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>       }</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span> </div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span> </div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>       vector< vector<double> > output;</div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span> </div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>       <span class="keywordflow">if</span>(maxX<=minX)</div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>     imgReader.getMinMax(minX,maxX,band_opt[0]);</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>       <span class="keywordflow">if</span>(maxY<=minY)</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>     imgReader.getMinMax(minY,maxY,band_opt[1]);</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span> </div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>       <span class="keywordflow">if</span>(maxX<=minX){</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>     std::ostringstream s;</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>     s<<<span class="stringliteral">"Error: could not calculate distribution (minX>=maxX)"</span>;</div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span>       }</div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>       <span class="keywordflow">if</span>(maxY<=minY){</div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>     std::ostringstream s;</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span>     s<<<span class="stringliteral">"Error: could not calculate distribution (minY>=maxY)"</span>;</div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>     <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span>       }</div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span>       output.resize(nbin);</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<nbin;++i){</div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span>     output[i].resize(nbin);</div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=0;j<nbin;++j)</div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span>       output[i][j]=0;</div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span>       }</div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span>       <span class="keywordtype">int</span> binX=0;</div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span>       <span class="keywordtype">int</span> binY=0;</div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span>       vector<double> inputX(imgReader.nrOfCol());</div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span>       vector<double> inputY(imgReader.nrOfCol());</div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>       <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> nvalid=0;</div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<imgReader.nrOfRow();++irow){</div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span>         <span class="keywordflow">if</span>(irow%down_opt[0])</div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span>           <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span>     imgReader.readData(inputX,GDT_Float64,irow,band_opt[0]);</div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span>     imgReader.readData(inputY,GDT_Float64,irow,band_opt[1]);</div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<imgReader.nrOfCol();++icol){</div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span>           <span class="keywordflow">if</span>(icol%down_opt[0])</div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span>             <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span>       <span class="keywordflow">if</span>(random_opt[0]>0){</div>
-<div class="line"><a name="l00445"></a><span class="lineno">  445</span>         <span class="keywordtype">double</span> p=<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(rand())/(RAND_MAX);</div>
-<div class="line"><a name="l00446"></a><span class="lineno">  446</span>         p*=100.0;</div>
-<div class="line"><a name="l00447"></a><span class="lineno">  447</span>         <span class="keywordflow">if</span>(p>random_opt[0])</div>
-<div class="line"><a name="l00448"></a><span class="lineno">  448</span>           <span class="keywordflow">continue</span>;<span class="comment">//do not select for now, go to next column</span></div>
-<div class="line"><a name="l00449"></a><span class="lineno">  449</span>       }</div>
-<div class="line"><a name="l00450"></a><span class="lineno">  450</span>       <span class="keywordflow">if</span>(imgReader.isNoData(inputX[icol]))</div>
-<div class="line"><a name="l00451"></a><span class="lineno">  451</span>         <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00452"></a><span class="lineno">  452</span>       <span class="keywordflow">if</span>(imgReader.isNoData(inputY[icol]))</div>
-<div class="line"><a name="l00453"></a><span class="lineno">  453</span>         <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00454"></a><span class="lineno">  454</span>       ++nvalid;</div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span>       <span class="keywordflow">if</span>(inputX[icol]>=maxX)</div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</span>         binX=nbin-1;</div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(inputX[icol]<=minX)</div>
-<div class="line"><a name="l00458"></a><span class="lineno">  458</span>         binX=0;</div>
-<div class="line"><a name="l00459"></a><span class="lineno">  459</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00460"></a><span class="lineno">  460</span>         binX=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(inputX[icol]-minX)/(maxX-minX)*nbin);</div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span>       <span class="keywordflow">if</span>(inputY[icol]>=maxY)</div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span>         binY=nbin-1;</div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(inputY[icol]<=minX)</div>
-<div class="line"><a name="l00464"></a><span class="lineno">  464</span>         binY=0;</div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>         binY=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(inputY[icol]-minY)/(maxY-minY)*nbin);</div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span>       assert(binX>=0);</div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span>       assert(binX<output.size());</div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span>       assert(binY>=0);</div>
-<div class="line"><a name="l00470"></a><span class="lineno">  470</span>       assert(binY<output[binX].size());</div>
-<div class="line"><a name="l00471"></a><span class="lineno">  471</span>       <span class="keywordflow">if</span>(sigma>0){</div>
-<div class="line"><a name="l00472"></a><span class="lineno">  472</span>         <span class="comment">//create kde for Gaussian basis function</span></div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span>         <span class="comment">//todo: speed up by calculating first and last bin with non-zero contriubtion...</span></div>
-<div class="line"><a name="l00474"></a><span class="lineno">  474</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ibinX=0;ibinX<nbin;++ibinX){</div>
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span>           <span class="keywordtype">double</span> centerX=minX+<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(maxX-minX)*ibinX/nbin;</div>
-<div class="line"><a name="l00476"></a><span class="lineno">  476</span>           <span class="keywordtype">double</span> pdfX=gsl_ran_gaussian_pdf(inputX[icol]-centerX, sigma);</div>
-<div class="line"><a name="l00477"></a><span class="lineno">  477</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ibinY=0;ibinY<nbin;++ibinY){</div>
-<div class="line"><a name="l00478"></a><span class="lineno">  478</span>         <span class="comment">//calculate  \integral_ibinX^(ibinX+1)</span></div>
-<div class="line"><a name="l00479"></a><span class="lineno">  479</span>         <span class="keywordtype">double</span> centerY=minY+<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(maxY-minY)*ibinY/nbin;</div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span>         <span class="keywordtype">double</span> pdfY=gsl_ran_gaussian_pdf(inputY[icol]-centerY, sigma);</div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span>         output[ibinX][binY]+=pdfX*pdfY;</div>
-<div class="line"><a name="l00482"></a><span class="lineno">  482</span>           }</div>
-<div class="line"><a name="l00483"></a><span class="lineno">  483</span>         }</div>
-<div class="line"><a name="l00484"></a><span class="lineno">  484</span>       }</div>
-<div class="line"><a name="l00485"></a><span class="lineno">  485</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00486"></a><span class="lineno">  486</span>         ++output[binX][binY];</div>
-<div class="line"><a name="l00487"></a><span class="lineno">  487</span>     }</div>
-<div class="line"><a name="l00488"></a><span class="lineno">  488</span>       }</div>
-<div class="line"><a name="l00489"></a><span class="lineno">  489</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span>     cout << <span class="stringliteral">"number of valid pixels: "</span> << nvalid << endl;</div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span> </div>
-<div class="line"><a name="l00492"></a><span class="lineno">  492</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> binX=0;binX<nbin;++binX){</div>
-<div class="line"><a name="l00493"></a><span class="lineno">  493</span>     cout << endl;</div>
-<div class="line"><a name="l00494"></a><span class="lineno">  494</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> binY=0;binY<nbin;++binY){</div>
-<div class="line"><a name="l00495"></a><span class="lineno">  495</span>       <span class="keywordtype">double</span> binValueX=0;</div>
-<div class="line"><a name="l00496"></a><span class="lineno">  496</span>       <span class="keywordflow">if</span>(nbin==maxX-minX+1)</div>
-<div class="line"><a name="l00497"></a><span class="lineno">  497</span>         binValueX=minX+binX;</div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span>         binValueX=minX+<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(maxX-minX)*(binX+0.5)/nbin;</div>
-<div class="line"><a name="l00500"></a><span class="lineno">  500</span>       <span class="keywordtype">double</span> binValueY=0;</div>
-<div class="line"><a name="l00501"></a><span class="lineno">  501</span>       <span class="keywordflow">if</span>(nbin==maxY-minY+1)</div>
-<div class="line"><a name="l00502"></a><span class="lineno">  502</span>         binValueY=minY+binY;</div>
-<div class="line"><a name="l00503"></a><span class="lineno">  503</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00504"></a><span class="lineno">  504</span>         binValueY=minY+<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(maxY-minY)*(binY+0.5)/nbin;</div>
-<div class="line"><a name="l00505"></a><span class="lineno">  505</span> </div>
-<div class="line"><a name="l00506"></a><span class="lineno">  506</span>       <span class="keywordtype">double</span> value=<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(output[binX][binY]);</div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span>       </div>
-<div class="line"><a name="l00508"></a><span class="lineno">  508</span>       <span class="keywordflow">if</span>(relative_opt[0])</div>
-<div class="line"><a name="l00509"></a><span class="lineno">  509</span>         value*=100.0/nvalid;</div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span> </div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span>       cout << binValueX << <span class="stringliteral">" "</span> << binValueY << <span class="stringliteral">" "</span> << value << std::endl;</div>
-<div class="line"><a name="l00512"></a><span class="lineno">  512</span>       <span class="comment">// double value=static_cast<double>(output[binX][binY])/nvalid;</span></div>
-<div class="line"><a name="l00513"></a><span class="lineno">  513</span>       <span class="comment">// cout << (maxX-minX)*bin/(nbin-1)+minX << " " << (maxY-minY)*bin/(nbin-1)+minY << " " << value << std::endl;</span></div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span>     }</div>
-<div class="line"><a name="l00515"></a><span class="lineno">  515</span>       }</div>
-<div class="line"><a name="l00516"></a><span class="lineno">  516</span>     }</div>
-<div class="line"><a name="l00517"></a><span class="lineno">  517</span>     <span class="keywordflow">if</span>(reg_opt[0]&&input_opt.size()<2){</div>
-<div class="line"><a name="l00518"></a><span class="lineno">  518</span>       <span class="keywordflow">if</span>(band_opt.size()<2)</div>
-<div class="line"><a name="l00519"></a><span class="lineno">  519</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00520"></a><span class="lineno">  520</span>       imgreg.setDown(down_opt[0]);</div>
-<div class="line"><a name="l00521"></a><span class="lineno">  521</span>       imgreg.setThreshold(random_opt[0]);</div>
-<div class="line"><a name="l00522"></a><span class="lineno">  522</span>       <span class="keywordtype">double</span> c0=0;<span class="comment">//offset</span></div>
-<div class="line"><a name="l00523"></a><span class="lineno">  523</span>       <span class="keywordtype">double</span> c1=1;<span class="comment">//scale</span></div>
-<div class="line"><a name="l00524"></a><span class="lineno">  524</span>       <span class="keywordtype">double</span> r2=imgreg.getR2(imgReader,band_opt[0],band_opt[1],c0,c1,verbose_opt[0]);</div>
-<div class="line"><a name="l00525"></a><span class="lineno">  525</span>       std::cout << <span class="stringliteral">"-c0 "</span> << c0 << <span class="stringliteral">" -c1 "</span> << c1 << <span class="stringliteral">" -r2 "</span> << r2 << std::endl;</div>
-<div class="line"><a name="l00526"></a><span class="lineno">  526</span>     }</div>
-<div class="line"><a name="l00527"></a><span class="lineno">  527</span>     <span class="keywordflow">if</span>(regerr_opt[0]&&input_opt.size()<2){</div>
-<div class="line"><a name="l00528"></a><span class="lineno">  528</span>       <span class="keywordflow">if</span>(band_opt.size()<2)</div>
-<div class="line"><a name="l00529"></a><span class="lineno">  529</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00530"></a><span class="lineno">  530</span>       imgreg.setDown(down_opt[0]);</div>
-<div class="line"><a name="l00531"></a><span class="lineno">  531</span>       imgreg.setThreshold(random_opt[0]);</div>
-<div class="line"><a name="l00532"></a><span class="lineno">  532</span>       <span class="keywordtype">double</span> c0=0;<span class="comment">//offset</span></div>
-<div class="line"><a name="l00533"></a><span class="lineno">  533</span>       <span class="keywordtype">double</span> c1=1;<span class="comment">//scale</span></div>
-<div class="line"><a name="l00534"></a><span class="lineno">  534</span>       <span class="keywordtype">double</span> err=imgreg.getRMSE(imgReader,band_opt[0],band_opt[1],c0,c1,verbose_opt[0]);</div>
-<div class="line"><a name="l00535"></a><span class="lineno">  535</span>       std::cout << <span class="stringliteral">"-c0 "</span> << c0 << <span class="stringliteral">" -c1 "</span> << c1 << <span class="stringliteral">" -rmse "</span> << err << std::endl;</div>
-<div class="line"><a name="l00536"></a><span class="lineno">  536</span>     }</div>
-<div class="line"><a name="l00537"></a><span class="lineno">  537</span>     <span class="keywordflow">if</span>(rmse_opt[0]&&input_opt.size()<2){</div>
-<div class="line"><a name="l00538"></a><span class="lineno">  538</span>       <span class="keywordflow">if</span>(band_opt.size()<2)</div>
-<div class="line"><a name="l00539"></a><span class="lineno">  539</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00540"></a><span class="lineno">  540</span>       vector<double> xBuffer(imgReader.nrOfCol());</div>
-<div class="line"><a name="l00541"></a><span class="lineno">  541</span>       vector<double> yBuffer(imgReader.nrOfCol());</div>
-<div class="line"><a name="l00542"></a><span class="lineno">  542</span>       <span class="keywordtype">double</span> mse=0;</div>
-<div class="line"><a name="l00543"></a><span class="lineno">  543</span>       <span class="keywordtype">double</span> nValid=0;</div>
-<div class="line"><a name="l00544"></a><span class="lineno">  544</span>       <span class="keywordtype">double</span> nPixel=imgReader.nrOfCol()/down_opt[0]*imgReader.nrOfRow()/down_opt[0];</div>
-<div class="line"><a name="l00545"></a><span class="lineno">  545</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow;irow<imgReader.nrOfRow();irow+=down_opt[0]){</div>
-<div class="line"><a name="l00546"></a><span class="lineno">  546</span>     imgReader.readData(xBuffer,GDT_Float64,irow,band_opt[0]);</div>
-<div class="line"><a name="l00547"></a><span class="lineno">  547</span>     imgReader.readData(yBuffer,GDT_Float64,irow,band_opt[1]);</div>
-<div class="line"><a name="l00548"></a><span class="lineno">  548</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol;icol<imgReader.nrOfCol();icol+=down_opt[0]){</div>
-<div class="line"><a name="l00549"></a><span class="lineno">  549</span>       <span class="keywordtype">double</span> xValue=xBuffer[icol];</div>
-<div class="line"><a name="l00550"></a><span class="lineno">  550</span>       <span class="keywordtype">double</span> yValue=yBuffer[icol];</div>
-<div class="line"><a name="l00551"></a><span class="lineno">  551</span>       <span class="keywordflow">if</span>(imgReader.isNoData(xValue)||imgReader.isNoData(yValue)){</div>
-<div class="line"><a name="l00552"></a><span class="lineno">  552</span>         <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00553"></a><span class="lineno">  553</span>       }</div>
-<div class="line"><a name="l00554"></a><span class="lineno">  554</span>       <span class="keywordflow">if</span>(imgReader.isNoData(xValue)||imgReader.isNoData(yValue)){</div>
-<div class="line"><a name="l00555"></a><span class="lineno">  555</span>         <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00556"></a><span class="lineno">  556</span>       }</div>
-<div class="line"><a name="l00557"></a><span class="lineno">  557</span>       <span class="keywordflow">if</span>(xValue<src_min_opt[0]||xValue>src_max_opt[0]||yValue<src_min_opt[0]||yValue>src_max_opt[0])</div>
-<div class="line"><a name="l00558"></a><span class="lineno">  558</span>         <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00559"></a><span class="lineno">  559</span>       ++nValid;</div>
-<div class="line"><a name="l00560"></a><span class="lineno">  560</span>       <span class="keywordtype">double</span> e=xValue-yValue;</div>
-<div class="line"><a name="l00561"></a><span class="lineno">  561</span>       <span class="keywordflow">if</span>(relative_opt[0])</div>
-<div class="line"><a name="l00562"></a><span class="lineno">  562</span>         e/=yValue;</div>
-<div class="line"><a name="l00563"></a><span class="lineno">  563</span>       mse+=e*e/nPixel;</div>
-<div class="line"><a name="l00564"></a><span class="lineno">  564</span>     }</div>
-<div class="line"><a name="l00565"></a><span class="lineno">  565</span>       }</div>
-<div class="line"><a name="l00566"></a><span class="lineno">  566</span>       <span class="keywordtype">double</span> correctNorm=nValid;</div>
-<div class="line"><a name="l00567"></a><span class="lineno">  567</span>       correctNorm/=nPixel;</div>
-<div class="line"><a name="l00568"></a><span class="lineno">  568</span>       mse/=correctNorm;</div>
-<div class="line"><a name="l00569"></a><span class="lineno">  569</span>       std::cout << <span class="stringliteral">" -rmse "</span> << sqrt(mse) << std::endl;</div>
-<div class="line"><a name="l00570"></a><span class="lineno">  570</span>     }</div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span>     <span class="keywordflow">if</span>(preg_opt[0]&&input_opt.size()<2){</div>
-<div class="line"><a name="l00572"></a><span class="lineno">  572</span>       <span class="keywordflow">if</span>(band_opt.size()<2)</div>
-<div class="line"><a name="l00573"></a><span class="lineno">  573</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00574"></a><span class="lineno">  574</span>       imgreg.setDown(down_opt[0]);</div>
-<div class="line"><a name="l00575"></a><span class="lineno">  575</span>       imgreg.setThreshold(random_opt[0]);</div>
-<div class="line"><a name="l00576"></a><span class="lineno">  576</span>       <span class="keywordtype">double</span> c0=0;<span class="comment">//offset</span></div>
-<div class="line"><a name="l00577"></a><span class="lineno">  577</span>       <span class="keywordtype">double</span> c1=1;<span class="comment">//scale</span></div>
-<div class="line"><a name="l00578"></a><span class="lineno">  578</span>       <span class="keywordtype">double</span> r2=imgreg.pgetR2(imgReader,band_opt[0],band_opt[1],c0,c1,verbose_opt[0]);</div>
-<div class="line"><a name="l00579"></a><span class="lineno">  579</span>       std::cout << <span class="stringliteral">"-c0 "</span> << c0 << <span class="stringliteral">" -c1 "</span> << c1 << <span class="stringliteral">" -r2 "</span> << r2 << std::endl;</div>
-<div class="line"><a name="l00580"></a><span class="lineno">  580</span>     }</div>
-<div class="line"><a name="l00581"></a><span class="lineno">  581</span>     imgReader.close();</div>
-<div class="line"><a name="l00582"></a><span class="lineno">  582</span>   }</div>
-<div class="line"><a name="l00583"></a><span class="lineno">  583</span>   <span class="comment">// if(rmse_opt[0]&&(input_opt.size()>1)){</span></div>
-<div class="line"><a name="l00584"></a><span class="lineno">  584</span>   <span class="comment">//   while(band_opt.size()<input_opt.size())</span></div>
-<div class="line"><a name="l00585"></a><span class="lineno">  585</span>   <span class="comment">//     band_opt.push_back(band_opt[0]);</span></div>
-<div class="line"><a name="l00586"></a><span class="lineno">  586</span>   <span class="comment">//   if(src_min_opt.size()){</span></div>
-<div class="line"><a name="l00587"></a><span class="lineno">  587</span>   <span class="comment">//     while(src_min_opt.size()<input_opt.size())</span></div>
-<div class="line"><a name="l00588"></a><span class="lineno">  588</span>   <span class="comment">//    src_min_opt.push_back(src_min_opt[0]);</span></div>
-<div class="line"><a name="l00589"></a><span class="lineno">  589</span>   <span class="comment">//   }</span></div>
-<div class="line"><a name="l00590"></a><span class="lineno">  590</span>   <span class="comment">//   if(src_max_opt.size()){</span></div>
-<div class="line"><a name="l00591"></a><span class="lineno">  591</span>   <span class="comment">//     while(src_max_opt.size()<input_opt.size())</span></div>
-<div class="line"><a name="l00592"></a><span class="lineno">  592</span>   <span class="comment">//    src_max_opt.push_back(src_max_opt[0]);</span></div>
-<div class="line"><a name="l00593"></a><span class="lineno">  593</span>   <span class="comment">//   }</span></div>
-<div class="line"><a name="l00594"></a><span class="lineno">  594</span>   <span class="comment">//   ImgReaderGdal imgReader1(input_opt[0]);</span></div>
-<div class="line"><a name="l00595"></a><span class="lineno">  595</span>   <span class="comment">//   ImgReaderGdal imgReader2(input_opt[1]);</span></div>
-<div class="line"><a name="l00596"></a><span class="lineno">  596</span> </div>
-<div class="line"><a name="l00597"></a><span class="lineno">  597</span>   <span class="comment">//   if(offset_opt.size())</span></div>
-<div class="line"><a name="l00598"></a><span class="lineno">  598</span>   <span class="comment">//     imgReader1.setOffset(offset_opt[0],band_opt[0]);</span></div>
-<div class="line"><a name="l00599"></a><span class="lineno">  599</span>   <span class="comment">//   if(scale_opt.size())</span></div>
-<div class="line"><a name="l00600"></a><span class="lineno">  600</span>   <span class="comment">//     imgReader1.setScale(scale_opt[0],band_opt[0]);</span></div>
-<div class="line"><a name="l00601"></a><span class="lineno">  601</span>   <span class="comment">//   if(offset_opt.size()>1)</span></div>
-<div class="line"><a name="l00602"></a><span class="lineno">  602</span>   <span class="comment">//     imgReader2.setOffset(offset_opt[1],band_opt[1]);</span></div>
-<div class="line"><a name="l00603"></a><span class="lineno">  603</span>   <span class="comment">//   if(scale_opt.size()>1)</span></div>
-<div class="line"><a name="l00604"></a><span class="lineno">  604</span>   <span class="comment">//     imgReader2.setScale(scale_opt[1],band_opt[1]);</span></div>
-<div class="line"><a name="l00605"></a><span class="lineno">  605</span> </div>
-<div class="line"><a name="l00606"></a><span class="lineno">  606</span>   <span class="comment">//   for(int inodata=0;inodata<nodata_opt.size();++inodata){</span></div>
-<div class="line"><a name="l00607"></a><span class="lineno">  607</span>   <span class="comment">//     imgReader1.pushNoDataValue(nodata_opt[inodata]);</span></div>
-<div class="line"><a name="l00608"></a><span class="lineno">  608</span>   <span class="comment">//     imgReader2.pushNoDataValue(nodata_opt[inodata]);</span></div>
-<div class="line"><a name="l00609"></a><span class="lineno">  609</span>   <span class="comment">//   }</span></div>
-<div class="line"><a name="l00610"></a><span class="lineno">  610</span>   <span class="comment">//   vector<double> xBuffer(imgReader1.nrOfCol());</span></div>
-<div class="line"><a name="l00611"></a><span class="lineno">  611</span>   <span class="comment">//   vector<double> yBuffer(imgReader2.nrOfCol());</span></div>
-<div class="line"><a name="l00612"></a><span class="lineno">  612</span>   <span class="comment">//   double mse=0;</span></div>
-<div class="line"><a name="l00613"></a><span class="lineno">  613</span>   <span class="comment">//   double nValid=0;</span></div>
-<div class="line"><a name="l00614"></a><span class="lineno">  614</span>   <span class="comment">//   double nPixel=imgReader.nrOfCol()/imgReader.nrOfRow()/down_opt[0]/down_opt[0];</span></div>
-<div class="line"><a name="l00615"></a><span class="lineno">  615</span>   <span class="comment">//   for(int irow;irow<imgReader1.nrOfRow();irow+=down_opt[0]){</span></div>
-<div class="line"><a name="l00616"></a><span class="lineno">  616</span>   <span class="comment">//     double irow1=irow;</span></div>
-<div class="line"><a name="l00617"></a><span class="lineno">  617</span>   <span class="comment">//     double irow2=0;</span></div>
-<div class="line"><a name="l00618"></a><span class="lineno">  618</span>   <span class="comment">//     double icol1=0;</span></div>
-<div class="line"><a name="l00619"></a><span class="lineno">  619</span>   <span class="comment">//     double icol2=0;</span></div>
-<div class="line"><a name="l00620"></a><span class="lineno">  620</span>   <span class="comment">//     double geoX=0;</span></div>
-<div class="line"><a name="l00621"></a><span class="lineno">  621</span>   <span class="comment">//     double geoY=0;</span></div>
-<div class="line"><a name="l00622"></a><span class="lineno">  622</span>   <span class="comment">//     imgReader1.image2geo(icol1,irow1,geoX,geoY);</span></div>
-<div class="line"><a name="l00623"></a><span class="lineno">  623</span>   <span class="comment">//     imgReader2.geo2image(geoX,geoY,icol2,irow2);</span></div>
-<div class="line"><a name="l00624"></a><span class="lineno">  624</span>   <span class="comment">//     irow2=static_cast<int>(irow2);</span></div>
-<div class="line"><a name="l00625"></a><span class="lineno">  625</span>   <span class="comment">//     imgReader1.readData(xBuffer,GDT_Float64,irow1,band_opt[0]);</span></div>
-<div class="line"><a name="l00626"></a><span class="lineno">  626</span>   <span class="comment">//     imgReader2.readData(yBuffer,GDT_Float64,irow2,band_opt[1]);</span></div>
-<div class="line"><a name="l00627"></a><span class="lineno">  627</span>   <span class="comment">//     for(int icol;icol<imgReader.nrOfCol();icol+=down_opt[0]){</span></div>
-<div class="line"><a name="l00628"></a><span class="lineno">  628</span>   <span class="comment">//    icol1=icol;</span></div>
-<div class="line"><a name="l00629"></a><span class="lineno">  629</span>   <span class="comment">//    imgReader1.image2geo(icol1,irow1,geoX,geoY);</span></div>
-<div class="line"><a name="l00630"></a><span class="lineno">  630</span>   <span class="comment">//    imgReader2.geo2image(geoX,geoY,icol2,irow2);</span></div>
-<div class="line"><a name="l00631"></a><span class="lineno">  631</span>   <span class="comment">//    double xValue=xBuffer[icol1];</span></div>
-<div class="line"><a name="l00632"></a><span class="lineno">  632</span>   <span class="comment">//    double yValue=yBuffer[icol2];</span></div>
-<div class="line"><a name="l00633"></a><span class="lineno">  633</span>   <span class="comment">//    if(imgReader.isNoData(xValue)||imgReader.isNoData(yValue)){</span></div>
-<div class="line"><a name="l00634"></a><span class="lineno">  634</span>   <span class="comment">//      continue;</span></div>
-<div class="line"><a name="l00635"></a><span class="lineno">  635</span>   <span class="comment">//    }</span></div>
-<div class="line"><a name="l00636"></a><span class="lineno">  636</span>   <span class="comment">//    if(xValue<src_min_opt[0]||xValue>src_max_opt[0]||yValue<src_min_opt[1]||yValue>src_max_opt[1])</span></div>
-<div class="line"><a name="l00637"></a><span class="lineno">  637</span>   <span class="comment">//      continue;</span></div>
-<div class="line"><a name="l00638"></a><span class="lineno">  638</span>   <span class="comment">//    ++nValid;</span></div>
-<div class="line"><a name="l00639"></a><span class="lineno">  639</span>   <span class="comment">//    double e=xValue-yValue;</span></div>
-<div class="line"><a name="l00640"></a><span class="lineno">  640</span>   <span class="comment">//    if(relative_opt[0])</span></div>
-<div class="line"><a name="l00641"></a><span class="lineno">  641</span>   <span class="comment">//      e/=yValue;</span></div>
-<div class="line"><a name="l00642"></a><span class="lineno">  642</span>   <span class="comment">//    mse+=e*e/nPixel;</span></div>
-<div class="line"><a name="l00643"></a><span class="lineno">  643</span>   <span class="comment">//     }</span></div>
-<div class="line"><a name="l00644"></a><span class="lineno">  644</span>   <span class="comment">//   }</span></div>
-<div class="line"><a name="l00645"></a><span class="lineno">  645</span>   <span class="comment">//   double correctNorm=nValid;</span></div>
-<div class="line"><a name="l00646"></a><span class="lineno">  646</span>   <span class="comment">//   correctNorm/=nPixel;</span></div>
-<div class="line"><a name="l00647"></a><span class="lineno">  647</span>   <span class="comment">//   mse/=correctNorm;</span></div>
-<div class="line"><a name="l00648"></a><span class="lineno">  648</span>   <span class="comment">//   std::cout << " -rmse " << sqrt(mse) << std::endl;</span></div>
-<div class="line"><a name="l00649"></a><span class="lineno">  649</span>   <span class="comment">// }</span></div>
-<div class="line"><a name="l00650"></a><span class="lineno">  650</span>   <span class="keywordflow">if</span>(reg_opt[0]&&(input_opt.size()>1)){</div>
-<div class="line"><a name="l00651"></a><span class="lineno">  651</span>     imgreg.setDown(down_opt[0]);</div>
-<div class="line"><a name="l00652"></a><span class="lineno">  652</span>     imgreg.setThreshold(random_opt[0]);</div>
-<div class="line"><a name="l00653"></a><span class="lineno">  653</span>     <span class="keywordtype">double</span> c0=0;<span class="comment">//offset</span></div>
-<div class="line"><a name="l00654"></a><span class="lineno">  654</span>     <span class="keywordtype">double</span> c1=1;<span class="comment">//scale</span></div>
-<div class="line"><a name="l00655"></a><span class="lineno">  655</span>     <span class="keywordflow">while</span>(band_opt.size()<input_opt.size())</div>
-<div class="line"><a name="l00656"></a><span class="lineno">  656</span>       band_opt.push_back(band_opt[0]);</div>
-<div class="line"><a name="l00657"></a><span class="lineno">  657</span>     <span class="keywordflow">if</span>(src_min_opt.size()){</div>
-<div class="line"><a name="l00658"></a><span class="lineno">  658</span>       <span class="keywordflow">while</span>(src_min_opt.size()<input_opt.size())</div>
-<div class="line"><a name="l00659"></a><span class="lineno">  659</span>     src_min_opt.push_back(src_min_opt[0]);</div>
-<div class="line"><a name="l00660"></a><span class="lineno">  660</span>     }</div>
-<div class="line"><a name="l00661"></a><span class="lineno">  661</span>     <span class="keywordflow">if</span>(src_max_opt.size()){</div>
-<div class="line"><a name="l00662"></a><span class="lineno">  662</span>       <span class="keywordflow">while</span>(src_max_opt.size()<input_opt.size())</div>
-<div class="line"><a name="l00663"></a><span class="lineno">  663</span>     src_max_opt.push_back(src_max_opt[0]);</div>
-<div class="line"><a name="l00664"></a><span class="lineno">  664</span>     }</div>
-<div class="line"><a name="l00665"></a><span class="lineno">  665</span>     <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> imgReader1(input_opt[0]);</div>
-<div class="line"><a name="l00666"></a><span class="lineno">  666</span>     <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> imgReader2(input_opt[1]);</div>
-<div class="line"><a name="l00667"></a><span class="lineno">  667</span> </div>
-<div class="line"><a name="l00668"></a><span class="lineno">  668</span>     <span class="keywordflow">if</span>(offset_opt.size())</div>
-<div class="line"><a name="l00669"></a><span class="lineno">  669</span>       imgReader1.setOffset(offset_opt[0],band_opt[0]);</div>
-<div class="line"><a name="l00670"></a><span class="lineno">  670</span>     <span class="keywordflow">if</span>(scale_opt.size())</div>
-<div class="line"><a name="l00671"></a><span class="lineno">  671</span>       imgReader1.setScale(scale_opt[0],band_opt[0]);</div>
-<div class="line"><a name="l00672"></a><span class="lineno">  672</span>     <span class="keywordflow">if</span>(offset_opt.size()>1)</div>
-<div class="line"><a name="l00673"></a><span class="lineno">  673</span>       imgReader2.setOffset(offset_opt[1],band_opt[1]);</div>
-<div class="line"><a name="l00674"></a><span class="lineno">  674</span>     <span class="keywordflow">if</span>(scale_opt.size()>1)</div>
-<div class="line"><a name="l00675"></a><span class="lineno">  675</span>       imgReader2.setScale(scale_opt[1],band_opt[1]);</div>
-<div class="line"><a name="l00676"></a><span class="lineno">  676</span> </div>
-<div class="line"><a name="l00677"></a><span class="lineno">  677</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> inodata=0;inodata<nodata_opt.size();++inodata){</div>
-<div class="line"><a name="l00678"></a><span class="lineno">  678</span>       <span class="keywordflow">if</span>(!inodata){</div>
-<div class="line"><a name="l00679"></a><span class="lineno">  679</span>         imgReader1.GDALSetNoDataValue(nodata_opt[0],band_opt[0]);<span class="comment">//only single no data can be set in GDALRasterBand (used for ComputeStatistics)</span></div>
-<div class="line"><a name="l00680"></a><span class="lineno">  680</span>         imgReader2.GDALSetNoDataValue(nodata_opt[0]),band_opt[1];<span class="comment">//only single no data can be set in GDALRasterBand (used for ComputeStatistics)</span></div>
-<div class="line"><a name="l00681"></a><span class="lineno">  681</span>       }</div>
-<div class="line"><a name="l00682"></a><span class="lineno">  682</span>       imgReader1.pushNoDataValue(nodata_opt[inodata]);</div>
-<div class="line"><a name="l00683"></a><span class="lineno">  683</span>       imgReader2.pushNoDataValue(nodata_opt[inodata]);</div>
-<div class="line"><a name="l00684"></a><span class="lineno">  684</span>     }</div>
-<div class="line"><a name="l00685"></a><span class="lineno">  685</span> </div>
-<div class="line"><a name="l00686"></a><span class="lineno">  686</span>     <span class="keywordtype">double</span> r2=imgreg.getR2(imgReader1,imgReader2,c0,c1,band_opt[0],band_opt[1],verbose_opt[0]);</div>
-<div class="line"><a name="l00687"></a><span class="lineno">  687</span>     std::cout << <span class="stringliteral">"-c0 "</span> << c0 << <span class="stringliteral">" -c1 "</span> << c1 << <span class="stringliteral">" -r2 "</span> << r2 << std::endl;</div>
-<div class="line"><a name="l00688"></a><span class="lineno">  688</span>     imgReader1.close();</div>
-<div class="line"><a name="l00689"></a><span class="lineno">  689</span>     imgReader2.close();</div>
-<div class="line"><a name="l00690"></a><span class="lineno">  690</span>   }</div>
-<div class="line"><a name="l00691"></a><span class="lineno">  691</span>   <span class="keywordflow">if</span>(preg_opt[0]&&(input_opt.size()>1)){</div>
-<div class="line"><a name="l00692"></a><span class="lineno">  692</span>     imgreg.setDown(down_opt[0]);</div>
-<div class="line"><a name="l00693"></a><span class="lineno">  693</span>     imgreg.setThreshold(random_opt[0]);</div>
-<div class="line"><a name="l00694"></a><span class="lineno">  694</span>     <span class="keywordtype">double</span> c0=0;<span class="comment">//offset</span></div>
-<div class="line"><a name="l00695"></a><span class="lineno">  695</span>     <span class="keywordtype">double</span> c1=1;<span class="comment">//scale</span></div>
-<div class="line"><a name="l00696"></a><span class="lineno">  696</span>     <span class="keywordflow">while</span>(band_opt.size()<input_opt.size())</div>
-<div class="line"><a name="l00697"></a><span class="lineno">  697</span>       band_opt.push_back(band_opt[0]);</div>
-<div class="line"><a name="l00698"></a><span class="lineno">  698</span>     <span class="keywordflow">if</span>(src_min_opt.size()){</div>
-<div class="line"><a name="l00699"></a><span class="lineno">  699</span>       <span class="keywordflow">while</span>(src_min_opt.size()<input_opt.size())</div>
-<div class="line"><a name="l00700"></a><span class="lineno">  700</span>     src_min_opt.push_back(src_min_opt[0]);</div>
-<div class="line"><a name="l00701"></a><span class="lineno">  701</span>     }</div>
-<div class="line"><a name="l00702"></a><span class="lineno">  702</span>     <span class="keywordflow">if</span>(src_max_opt.size()){</div>
-<div class="line"><a name="l00703"></a><span class="lineno">  703</span>       <span class="keywordflow">while</span>(src_max_opt.size()<input_opt.size())</div>
-<div class="line"><a name="l00704"></a><span class="lineno">  704</span>     src_max_opt.push_back(src_max_opt[0]);</div>
-<div class="line"><a name="l00705"></a><span class="lineno">  705</span>     }</div>
-<div class="line"><a name="l00706"></a><span class="lineno">  706</span>     <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> imgReader1(input_opt[0]);</div>
-<div class="line"><a name="l00707"></a><span class="lineno">  707</span>     <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> imgReader2(input_opt[1]);</div>
-<div class="line"><a name="l00708"></a><span class="lineno">  708</span> </div>
-<div class="line"><a name="l00709"></a><span class="lineno">  709</span>     <span class="keywordflow">if</span>(offset_opt.size())</div>
-<div class="line"><a name="l00710"></a><span class="lineno">  710</span>       imgReader1.setOffset(offset_opt[0],band_opt[0]);</div>
-<div class="line"><a name="l00711"></a><span class="lineno">  711</span>     <span class="keywordflow">if</span>(scale_opt.size())</div>
-<div class="line"><a name="l00712"></a><span class="lineno">  712</span>       imgReader1.setScale(scale_opt[0],band_opt[0]);</div>
-<div class="line"><a name="l00713"></a><span class="lineno">  713</span>     <span class="keywordflow">if</span>(offset_opt.size()>1)</div>
-<div class="line"><a name="l00714"></a><span class="lineno">  714</span>       imgReader2.setOffset(offset_opt[1],band_opt[1]);</div>
-<div class="line"><a name="l00715"></a><span class="lineno">  715</span>     <span class="keywordflow">if</span>(scale_opt.size()>1)</div>
-<div class="line"><a name="l00716"></a><span class="lineno">  716</span>       imgReader2.setScale(scale_opt[1],band_opt[1]);</div>
-<div class="line"><a name="l00717"></a><span class="lineno">  717</span> </div>
-<div class="line"><a name="l00718"></a><span class="lineno">  718</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> inodata=0;inodata<nodata_opt.size();++inodata){</div>
-<div class="line"><a name="l00719"></a><span class="lineno">  719</span>       <span class="keywordflow">if</span>(!inodata){</div>
-<div class="line"><a name="l00720"></a><span class="lineno">  720</span>         imgReader1.GDALSetNoDataValue(nodata_opt[0],band_opt[0]);<span class="comment">//only single no data can be set in GDALRasterBand (used for ComputeStatistics)</span></div>
-<div class="line"><a name="l00721"></a><span class="lineno">  721</span>         imgReader2.GDALSetNoDataValue(nodata_opt[0]),band_opt[1];<span class="comment">//only single no data can be set in GDALRasterBand (used for ComputeStatistics)</span></div>
-<div class="line"><a name="l00722"></a><span class="lineno">  722</span>       }</div>
-<div class="line"><a name="l00723"></a><span class="lineno">  723</span>       imgReader1.pushNoDataValue(nodata_opt[inodata]);</div>
-<div class="line"><a name="l00724"></a><span class="lineno">  724</span>       imgReader2.pushNoDataValue(nodata_opt[inodata]);</div>
-<div class="line"><a name="l00725"></a><span class="lineno">  725</span>     }</div>
-<div class="line"><a name="l00726"></a><span class="lineno">  726</span> </div>
-<div class="line"><a name="l00727"></a><span class="lineno">  727</span>     <span class="keywordtype">double</span> r2=imgreg.pgetR2(imgReader1,imgReader2,c0,c1,band_opt[0],band_opt[1],verbose_opt[0]);</div>
-<div class="line"><a name="l00728"></a><span class="lineno">  728</span>     std::cout << <span class="stringliteral">"-c0 "</span> << c0 << <span class="stringliteral">" -c1 "</span> << c1 << <span class="stringliteral">" -r2 "</span> << r2 << std::endl;</div>
-<div class="line"><a name="l00729"></a><span class="lineno">  729</span>     imgReader1.close();</div>
-<div class="line"><a name="l00730"></a><span class="lineno">  730</span>     imgReader2.close();</div>
-<div class="line"><a name="l00731"></a><span class="lineno">  731</span>   }</div>
-<div class="line"><a name="l00732"></a><span class="lineno">  732</span>   <span class="keywordflow">if</span>(regerr_opt[0]&&(input_opt.size()>1)){</div>
-<div class="line"><a name="l00733"></a><span class="lineno">  733</span>     imgreg.setDown(down_opt[0]);</div>
-<div class="line"><a name="l00734"></a><span class="lineno">  734</span>     imgreg.setThreshold(random_opt[0]);</div>
-<div class="line"><a name="l00735"></a><span class="lineno">  735</span>     <span class="keywordtype">double</span> c0=0;<span class="comment">//offset</span></div>
-<div class="line"><a name="l00736"></a><span class="lineno">  736</span>     <span class="keywordtype">double</span> c1=1;<span class="comment">//scale</span></div>
-<div class="line"><a name="l00737"></a><span class="lineno">  737</span>     <span class="keywordflow">while</span>(band_opt.size()<input_opt.size())</div>
-<div class="line"><a name="l00738"></a><span class="lineno">  738</span>       band_opt.push_back(band_opt[0]);</div>
-<div class="line"><a name="l00739"></a><span class="lineno">  739</span>     <span class="keywordflow">if</span>(src_min_opt.size()){</div>
-<div class="line"><a name="l00740"></a><span class="lineno">  740</span>       <span class="keywordflow">while</span>(src_min_opt.size()<input_opt.size())</div>
-<div class="line"><a name="l00741"></a><span class="lineno">  741</span>     src_min_opt.push_back(src_min_opt[0]);</div>
-<div class="line"><a name="l00742"></a><span class="lineno">  742</span>     }</div>
-<div class="line"><a name="l00743"></a><span class="lineno">  743</span>     <span class="keywordflow">if</span>(src_max_opt.size()){</div>
-<div class="line"><a name="l00744"></a><span class="lineno">  744</span>       <span class="keywordflow">while</span>(src_max_opt.size()<input_opt.size())</div>
-<div class="line"><a name="l00745"></a><span class="lineno">  745</span>     src_max_opt.push_back(src_max_opt[0]);</div>
-<div class="line"><a name="l00746"></a><span class="lineno">  746</span>     }</div>
-<div class="line"><a name="l00747"></a><span class="lineno">  747</span>     <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> imgReader1(input_opt[0]);</div>
-<div class="line"><a name="l00748"></a><span class="lineno">  748</span>     <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> imgReader2(input_opt[1]);</div>
-<div class="line"><a name="l00749"></a><span class="lineno">  749</span> </div>
-<div class="line"><a name="l00750"></a><span class="lineno">  750</span>     <span class="keywordflow">if</span>(offset_opt.size())</div>
-<div class="line"><a name="l00751"></a><span class="lineno">  751</span>       imgReader1.setOffset(offset_opt[0],band_opt[0]);</div>
-<div class="line"><a name="l00752"></a><span class="lineno">  752</span>     <span class="keywordflow">if</span>(scale_opt.size())</div>
-<div class="line"><a name="l00753"></a><span class="lineno">  753</span>       imgReader1.setScale(scale_opt[0],band_opt[0]);</div>
-<div class="line"><a name="l00754"></a><span class="lineno">  754</span>     <span class="keywordflow">if</span>(offset_opt.size()>1)</div>
-<div class="line"><a name="l00755"></a><span class="lineno">  755</span>       imgReader2.setOffset(offset_opt[1],band_opt[1]);</div>
-<div class="line"><a name="l00756"></a><span class="lineno">  756</span>     <span class="keywordflow">if</span>(scale_opt.size()>1)</div>
-<div class="line"><a name="l00757"></a><span class="lineno">  757</span>       imgReader2.setScale(scale_opt[1],band_opt[1]);</div>
-<div class="line"><a name="l00758"></a><span class="lineno">  758</span> </div>
-<div class="line"><a name="l00759"></a><span class="lineno">  759</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> inodata=0;inodata<nodata_opt.size();++inodata){</div>
-<div class="line"><a name="l00760"></a><span class="lineno">  760</span>       <span class="keywordflow">if</span>(!inodata){</div>
-<div class="line"><a name="l00761"></a><span class="lineno">  761</span>         imgReader1.GDALSetNoDataValue(nodata_opt[0],band_opt[0]);<span class="comment">//only single no data can be set in GDALRasterBand (used for ComputeStatistics)</span></div>
-<div class="line"><a name="l00762"></a><span class="lineno">  762</span>         imgReader2.GDALSetNoDataValue(nodata_opt[0]),band_opt[1];<span class="comment">//only single no data can be set in GDALRasterBand (used for ComputeStatistics)</span></div>
-<div class="line"><a name="l00763"></a><span class="lineno">  763</span>       }</div>
-<div class="line"><a name="l00764"></a><span class="lineno">  764</span>       imgReader1.pushNoDataValue(nodata_opt[inodata]);</div>
-<div class="line"><a name="l00765"></a><span class="lineno">  765</span>       imgReader2.pushNoDataValue(nodata_opt[inodata]);</div>
-<div class="line"><a name="l00766"></a><span class="lineno">  766</span>     }</div>
-<div class="line"><a name="l00767"></a><span class="lineno">  767</span> </div>
-<div class="line"><a name="l00768"></a><span class="lineno">  768</span>     <span class="keywordtype">double</span> err=imgreg.getRMSE(imgReader1,imgReader2,c0,c1,band_opt[0],band_opt[1],verbose_opt[0]);</div>
-<div class="line"><a name="l00769"></a><span class="lineno">  769</span>     std::cout << <span class="stringliteral">"-c0 "</span> << c0 << <span class="stringliteral">" -c1 "</span> << c1 << <span class="stringliteral">" -rmse "</span> << err << std::endl;</div>
-<div class="line"><a name="l00770"></a><span class="lineno">  770</span>     imgReader1.close();</div>
-<div class="line"><a name="l00771"></a><span class="lineno">  771</span>     imgReader2.close();</div>
-<div class="line"><a name="l00772"></a><span class="lineno">  772</span>   }</div>
-<div class="line"><a name="l00773"></a><span class="lineno">  773</span>   <span class="keywordflow">if</span>(rmse_opt[0]&&(input_opt.size()>1)){</div>
-<div class="line"><a name="l00774"></a><span class="lineno">  774</span>     imgreg.setDown(down_opt[0]);</div>
-<div class="line"><a name="l00775"></a><span class="lineno">  775</span>     imgreg.setThreshold(random_opt[0]);</div>
-<div class="line"><a name="l00776"></a><span class="lineno">  776</span>     <span class="keywordtype">double</span> c0=0;<span class="comment">//offset</span></div>
-<div class="line"><a name="l00777"></a><span class="lineno">  777</span>     <span class="keywordtype">double</span> c1=1;<span class="comment">//scale</span></div>
-<div class="line"><a name="l00778"></a><span class="lineno">  778</span>     <span class="keywordflow">while</span>(band_opt.size()<input_opt.size())</div>
-<div class="line"><a name="l00779"></a><span class="lineno">  779</span>       band_opt.push_back(band_opt[0]);</div>
-<div class="line"><a name="l00780"></a><span class="lineno">  780</span>     <span class="keywordflow">if</span>(src_min_opt.size()){</div>
-<div class="line"><a name="l00781"></a><span class="lineno">  781</span>       <span class="keywordflow">while</span>(src_min_opt.size()<input_opt.size())</div>
-<div class="line"><a name="l00782"></a><span class="lineno">  782</span>     src_min_opt.push_back(src_min_opt[0]);</div>
-<div class="line"><a name="l00783"></a><span class="lineno">  783</span>     }</div>
-<div class="line"><a name="l00784"></a><span class="lineno">  784</span>     <span class="keywordflow">if</span>(src_max_opt.size()){</div>
-<div class="line"><a name="l00785"></a><span class="lineno">  785</span>       <span class="keywordflow">while</span>(src_max_opt.size()<input_opt.size())</div>
-<div class="line"><a name="l00786"></a><span class="lineno">  786</span>     src_max_opt.push_back(src_max_opt[0]);</div>
-<div class="line"><a name="l00787"></a><span class="lineno">  787</span>     }</div>
-<div class="line"><a name="l00788"></a><span class="lineno">  788</span>     <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> imgReader1(input_opt[0]);</div>
-<div class="line"><a name="l00789"></a><span class="lineno">  789</span>     <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> imgReader2(input_opt[1]);</div>
-<div class="line"><a name="l00790"></a><span class="lineno">  790</span> </div>
-<div class="line"><a name="l00791"></a><span class="lineno">  791</span>     <span class="keywordflow">if</span>(offset_opt.size())</div>
-<div class="line"><a name="l00792"></a><span class="lineno">  792</span>       imgReader1.setOffset(offset_opt[0],band_opt[0]);</div>
-<div class="line"><a name="l00793"></a><span class="lineno">  793</span>     <span class="keywordflow">if</span>(scale_opt.size())</div>
-<div class="line"><a name="l00794"></a><span class="lineno">  794</span>       imgReader1.setScale(scale_opt[0],band_opt[0]);</div>
-<div class="line"><a name="l00795"></a><span class="lineno">  795</span>     <span class="keywordflow">if</span>(offset_opt.size()>1)</div>
-<div class="line"><a name="l00796"></a><span class="lineno">  796</span>       imgReader2.setOffset(offset_opt[1],band_opt[1]);</div>
-<div class="line"><a name="l00797"></a><span class="lineno">  797</span>     <span class="keywordflow">if</span>(scale_opt.size()>1)</div>
-<div class="line"><a name="l00798"></a><span class="lineno">  798</span>       imgReader2.setScale(scale_opt[1],band_opt[1]);</div>
-<div class="line"><a name="l00799"></a><span class="lineno">  799</span> </div>
-<div class="line"><a name="l00800"></a><span class="lineno">  800</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> inodata=0;inodata<nodata_opt.size();++inodata){</div>
-<div class="line"><a name="l00801"></a><span class="lineno">  801</span>       <span class="keywordflow">if</span>(!inodata){</div>
-<div class="line"><a name="l00802"></a><span class="lineno">  802</span>         imgReader1.GDALSetNoDataValue(nodata_opt[0],band_opt[0]);<span class="comment">//only single no data can be set in GDALRasterBand (used for ComputeStatistics)</span></div>
-<div class="line"><a name="l00803"></a><span class="lineno">  803</span>         imgReader2.GDALSetNoDataValue(nodata_opt[0]),band_opt[1];<span class="comment">//only single no data can be set in GDALRasterBand (used for ComputeStatistics)</span></div>
-<div class="line"><a name="l00804"></a><span class="lineno">  804</span>       }</div>
-<div class="line"><a name="l00805"></a><span class="lineno">  805</span>       imgReader1.pushNoDataValue(nodata_opt[inodata]);</div>
-<div class="line"><a name="l00806"></a><span class="lineno">  806</span>       imgReader2.pushNoDataValue(nodata_opt[inodata]);</div>
-<div class="line"><a name="l00807"></a><span class="lineno">  807</span>     }</div>
-<div class="line"><a name="l00808"></a><span class="lineno">  808</span> </div>
-<div class="line"><a name="l00809"></a><span class="lineno">  809</span>     <span class="keywordtype">double</span> err=imgreg.getRMSE(imgReader1,imgReader2,c0,c1,band_opt[0],band_opt[1],verbose_opt[0]);</div>
-<div class="line"><a name="l00810"></a><span class="lineno">  810</span>     std::cout << <span class="stringliteral">"-rmse "</span> << err << std::endl;</div>
-<div class="line"><a name="l00811"></a><span class="lineno">  811</span>     imgReader1.close();</div>
-<div class="line"><a name="l00812"></a><span class="lineno">  812</span>     imgReader2.close();</div>
-<div class="line"><a name="l00813"></a><span class="lineno">  813</span>   }</div>
-<div class="line"><a name="l00814"></a><span class="lineno">  814</span>   <span class="keywordflow">if</span>(histogram2d_opt[0]&&(input_opt.size()>1)){</div>
-<div class="line"><a name="l00815"></a><span class="lineno">  815</span>     <span class="keywordflow">while</span>(band_opt.size()<input_opt.size())</div>
-<div class="line"><a name="l00816"></a><span class="lineno">  816</span>       band_opt.push_back(band_opt[0]);</div>
-<div class="line"><a name="l00817"></a><span class="lineno">  817</span>     <span class="keywordflow">if</span>(src_min_opt.size()){</div>
-<div class="line"><a name="l00818"></a><span class="lineno">  818</span>       <span class="keywordflow">while</span>(src_min_opt.size()<input_opt.size())</div>
-<div class="line"><a name="l00819"></a><span class="lineno">  819</span>     src_min_opt.push_back(src_min_opt[0]);</div>
-<div class="line"><a name="l00820"></a><span class="lineno">  820</span>     }</div>
-<div class="line"><a name="l00821"></a><span class="lineno">  821</span>     <span class="keywordflow">if</span>(src_max_opt.size()){</div>
-<div class="line"><a name="l00822"></a><span class="lineno">  822</span>       <span class="keywordflow">while</span>(src_max_opt.size()<input_opt.size())</div>
-<div class="line"><a name="l00823"></a><span class="lineno">  823</span>     src_max_opt.push_back(src_max_opt[0]);</div>
-<div class="line"><a name="l00824"></a><span class="lineno">  824</span>     }</div>
-<div class="line"><a name="l00825"></a><span class="lineno">  825</span>     <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> imgReader1(input_opt[0]);</div>
-<div class="line"><a name="l00826"></a><span class="lineno">  826</span>     <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> imgReader2(input_opt[1]);</div>
-<div class="line"><a name="l00827"></a><span class="lineno">  827</span> </div>
-<div class="line"><a name="l00828"></a><span class="lineno">  828</span>     <span class="keywordflow">if</span>(offset_opt.size())</div>
-<div class="line"><a name="l00829"></a><span class="lineno">  829</span>       imgReader1.setOffset(offset_opt[0],band_opt[0]);</div>
-<div class="line"><a name="l00830"></a><span class="lineno">  830</span>     <span class="keywordflow">if</span>(scale_opt.size())</div>
-<div class="line"><a name="l00831"></a><span class="lineno">  831</span>       imgReader1.setScale(scale_opt[0],band_opt[0]);</div>
-<div class="line"><a name="l00832"></a><span class="lineno">  832</span>     <span class="keywordflow">if</span>(offset_opt.size()>1)</div>
-<div class="line"><a name="l00833"></a><span class="lineno">  833</span>       imgReader2.setOffset(offset_opt[1],band_opt[1]);</div>
-<div class="line"><a name="l00834"></a><span class="lineno">  834</span>     <span class="keywordflow">if</span>(scale_opt.size()>1)</div>
-<div class="line"><a name="l00835"></a><span class="lineno">  835</span>       imgReader2.setScale(scale_opt[1],band_opt[1]);</div>
-<div class="line"><a name="l00836"></a><span class="lineno">  836</span> </div>
-<div class="line"><a name="l00837"></a><span class="lineno">  837</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> inodata=0;inodata<nodata_opt.size();++inodata){</div>
-<div class="line"><a name="l00838"></a><span class="lineno">  838</span>       <span class="keywordflow">if</span>(!inodata){</div>
-<div class="line"><a name="l00839"></a><span class="lineno">  839</span>         imgReader1.GDALSetNoDataValue(nodata_opt[0],band_opt[0]);<span class="comment">//only single no data can be set in GDALRasterBand (used for ComputeStatistics)</span></div>
-<div class="line"><a name="l00840"></a><span class="lineno">  840</span>         imgReader2.GDALSetNoDataValue(nodata_opt[0]),band_opt[1];<span class="comment">//only single no data can be set in GDALRasterBand (used for ComputeStatistics)</span></div>
-<div class="line"><a name="l00841"></a><span class="lineno">  841</span>       }</div>
-<div class="line"><a name="l00842"></a><span class="lineno">  842</span>       imgReader1.pushNoDataValue(nodata_opt[inodata]);</div>
-<div class="line"><a name="l00843"></a><span class="lineno">  843</span>       imgReader2.pushNoDataValue(nodata_opt[inodata]);</div>
-<div class="line"><a name="l00844"></a><span class="lineno">  844</span>     }</div>
-<div class="line"><a name="l00845"></a><span class="lineno">  845</span> </div>
-<div class="line"><a name="l00846"></a><span class="lineno">  846</span>     imgReader1.getMinMax(minX,maxX,band_opt[0]);</div>
-<div class="line"><a name="l00847"></a><span class="lineno">  847</span>     imgReader2.getMinMax(minY,maxY,band_opt[1]);</div>
-<div class="line"><a name="l00848"></a><span class="lineno">  848</span> </div>
-<div class="line"><a name="l00849"></a><span class="lineno">  849</span>     <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00850"></a><span class="lineno">  850</span>       cout << <span class="stringliteral">"minX: "</span> << minX << endl;</div>
-<div class="line"><a name="l00851"></a><span class="lineno">  851</span>       cout << <span class="stringliteral">"maxX: "</span> << maxX << endl;</div>
-<div class="line"><a name="l00852"></a><span class="lineno">  852</span>       cout << <span class="stringliteral">"minY: "</span> << minY << endl;</div>
-<div class="line"><a name="l00853"></a><span class="lineno">  853</span>       cout << <span class="stringliteral">"maxY: "</span> << maxY << endl;</div>
-<div class="line"><a name="l00854"></a><span class="lineno">  854</span>     }</div>
-<div class="line"><a name="l00855"></a><span class="lineno">  855</span>       </div>
-<div class="line"><a name="l00856"></a><span class="lineno">  856</span>     <span class="keywordflow">if</span>(src_min_opt.size()){</div>
-<div class="line"><a name="l00857"></a><span class="lineno">  857</span>       minX=src_min_opt[0];</div>
-<div class="line"><a name="l00858"></a><span class="lineno">  858</span>       minY=src_min_opt[1];</div>
-<div class="line"><a name="l00859"></a><span class="lineno">  859</span>     }</div>
-<div class="line"><a name="l00860"></a><span class="lineno">  860</span>     <span class="keywordflow">if</span>(src_max_opt.size()){</div>
-<div class="line"><a name="l00861"></a><span class="lineno">  861</span>       maxX=src_max_opt[0];</div>
-<div class="line"><a name="l00862"></a><span class="lineno">  862</span>       maxY=src_max_opt[1];</div>
-<div class="line"><a name="l00863"></a><span class="lineno">  863</span>     }</div>
-<div class="line"><a name="l00864"></a><span class="lineno">  864</span> </div>
-<div class="line"><a name="l00865"></a><span class="lineno">  865</span>     nbin=(nbin_opt.size())? nbin_opt[0]:0;</div>
-<div class="line"><a name="l00866"></a><span class="lineno">  866</span>     <span class="keywordflow">if</span>(nbin<=1){</div>
-<div class="line"><a name="l00867"></a><span class="lineno">  867</span>       std::cerr << <span class="stringliteral">"Warning: number of bins not defined, calculating bins from min and max value"</span> << std::endl;</div>
-<div class="line"><a name="l00868"></a><span class="lineno">  868</span>       <span class="comment">// imgReader1.getMinMax(minX,maxX,band_opt[0]);</span></div>
-<div class="line"><a name="l00869"></a><span class="lineno">  869</span>       <span class="comment">// imgReader2.getMinMax(minY,maxY,band_opt[0]);</span></div>
-<div class="line"><a name="l00870"></a><span class="lineno">  870</span>       <span class="keywordflow">if</span>(minX>=maxX)</div>
-<div class="line"><a name="l00871"></a><span class="lineno">  871</span>     imgReader1.getMinMax(minX,maxX,band_opt[0]);</div>
-<div class="line"><a name="l00872"></a><span class="lineno">  872</span>       <span class="keywordflow">if</span>(minY>=maxY)</div>
-<div class="line"><a name="l00873"></a><span class="lineno">  873</span>     imgReader2.getMinMax(minY,maxY,band_opt[1]);</div>
-<div class="line"><a name="l00874"></a><span class="lineno">  874</span>       </div>
-<div class="line"><a name="l00875"></a><span class="lineno">  875</span>       minValue=(minX<minY)? minX:minY;</div>
-<div class="line"><a name="l00876"></a><span class="lineno">  876</span>       maxValue=(maxX>maxY)? maxX:maxY;</div>
-<div class="line"><a name="l00877"></a><span class="lineno">  877</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00878"></a><span class="lineno">  878</span>         std::cout << <span class="stringliteral">"min and max values: "</span> << minValue << <span class="stringliteral">", "</span> << maxValue << std::endl;</div>
-<div class="line"><a name="l00879"></a><span class="lineno">  879</span>       nbin=maxValue-minValue+1;</div>
-<div class="line"><a name="l00880"></a><span class="lineno">  880</span>     }</div>
-<div class="line"><a name="l00881"></a><span class="lineno">  881</span>     assert(nbin>1);</div>
-<div class="line"><a name="l00882"></a><span class="lineno">  882</span>     <span class="keywordtype">double</span> sigma=0;</div>
-<div class="line"><a name="l00883"></a><span class="lineno">  883</span>     <span class="comment">//kernel density estimation as in http://en.wikipedia.org/wiki/Kernel_density_estimation</span></div>
-<div class="line"><a name="l00884"></a><span class="lineno">  884</span>     <span class="keywordflow">if</span>(kde_opt[0]){</div>
-<div class="line"><a name="l00885"></a><span class="lineno">  885</span>       GDALProgressFunc pfnProgress;</div>
-<div class="line"><a name="l00886"></a><span class="lineno">  886</span>       <span class="keywordtype">void</span>* pProgressData;</div>
-<div class="line"><a name="l00887"></a><span class="lineno">  887</span>       GDALRasterBand* rasterBand;</div>
-<div class="line"><a name="l00888"></a><span class="lineno">  888</span>       <span class="keywordtype">double</span> stdDev1=0;</div>
-<div class="line"><a name="l00889"></a><span class="lineno">  889</span>       <span class="keywordtype">double</span> stdDev2=0;</div>
-<div class="line"><a name="l00890"></a><span class="lineno">  890</span>       rasterBand=imgReader1.getRasterBand(band_opt[0]);</div>
-<div class="line"><a name="l00891"></a><span class="lineno">  891</span>       rasterBand->ComputeStatistics(0,&minValue,&maxValue,&meanValue,&stdDev1,pfnProgress,pProgressData);</div>
-<div class="line"><a name="l00892"></a><span class="lineno">  892</span>       rasterBand=imgReader2.getRasterBand(band_opt[0]);</div>
-<div class="line"><a name="l00893"></a><span class="lineno">  893</span>       rasterBand->ComputeStatistics(0,&minValue,&maxValue,&meanValue,&stdDev2,pfnProgress,pProgressData);</div>
-<div class="line"><a name="l00894"></a><span class="lineno">  894</span>       </div>
-<div class="line"><a name="l00895"></a><span class="lineno">  895</span>       <span class="comment">//todo: think of smarter way how to estimate size (nodata!)</span></div>
-<div class="line"><a name="l00896"></a><span class="lineno">  896</span>       <span class="keywordtype">double</span> estimatedSize=1.0*imgReader.getNvalid(band_opt[0])/down_opt[0]/down_opt[0];</div>
-<div class="line"><a name="l00897"></a><span class="lineno">  897</span>       <span class="keywordflow">if</span>(random_opt[0]>0)</div>
-<div class="line"><a name="l00898"></a><span class="lineno">  898</span>     estimatedSize*=random_opt[0]/100.0;</div>
-<div class="line"><a name="l00899"></a><span class="lineno">  899</span>       sigma=1.06*sqrt(stdDev1*stdDev2)*pow(estimatedSize,-0.2);</div>
-<div class="line"><a name="l00900"></a><span class="lineno">  900</span>     }</div>
-<div class="line"><a name="l00901"></a><span class="lineno">  901</span>     assert(nbin);</div>
-<div class="line"><a name="l00902"></a><span class="lineno">  902</span>     <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00903"></a><span class="lineno">  903</span>       <span class="keywordflow">if</span>(sigma>0)</div>
-<div class="line"><a name="l00904"></a><span class="lineno">  904</span>     std::cout << <span class="stringliteral">"calculating 2d kernel density estimate with sigma "</span> << sigma << <span class="stringliteral">" for datasets "</span> << input_opt[0] << <span class="stringliteral">" and "</span> << input_opt[1] << std::endl;</div>
-<div class="line"><a name="l00905"></a><span class="lineno">  905</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00906"></a><span class="lineno">  906</span>     std::cout << <span class="stringliteral">"calculating 2d histogram for datasets "</span> << input_opt[0] << <span class="stringliteral">" and "</span> << input_opt[1] << std::endl;</div>
-<div class="line"><a name="l00907"></a><span class="lineno">  907</span>       std::cout << <span class="stringliteral">"nbin: "</span> << nbin << std::endl;</div>
-<div class="line"><a name="l00908"></a><span class="lineno">  908</span>     }</div>
-<div class="line"><a name="l00909"></a><span class="lineno">  909</span> </div>
-<div class="line"><a name="l00910"></a><span class="lineno">  910</span>     vector< vector<double> > output;</div>
-<div class="line"><a name="l00911"></a><span class="lineno">  911</span> </div>
-<div class="line"><a name="l00912"></a><span class="lineno">  912</span>     <span class="keywordflow">if</span>(maxX<=minX)</div>
-<div class="line"><a name="l00913"></a><span class="lineno">  913</span>       imgReader1.getMinMax(minX,maxX,band_opt[0]);</div>
-<div class="line"><a name="l00914"></a><span class="lineno">  914</span>     <span class="keywordflow">if</span>(maxY<=minY)</div>
-<div class="line"><a name="l00915"></a><span class="lineno">  915</span>       imgReader2.getMinMax(minY,maxY,band_opt[1]);</div>
-<div class="line"><a name="l00916"></a><span class="lineno">  916</span> </div>
-<div class="line"><a name="l00917"></a><span class="lineno">  917</span>     <span class="keywordflow">if</span>(maxX<=minX){</div>
-<div class="line"><a name="l00918"></a><span class="lineno">  918</span>       std::ostringstream s;</div>
-<div class="line"><a name="l00919"></a><span class="lineno">  919</span>       s<<<span class="stringliteral">"Error: could not calculate distribution (minX>=maxX)"</span>;</div>
-<div class="line"><a name="l00920"></a><span class="lineno">  920</span>       <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l00921"></a><span class="lineno">  921</span>     }</div>
-<div class="line"><a name="l00922"></a><span class="lineno">  922</span>     <span class="keywordflow">if</span>(maxY<=minY){</div>
-<div class="line"><a name="l00923"></a><span class="lineno">  923</span>       std::ostringstream s;</div>
-<div class="line"><a name="l00924"></a><span class="lineno">  924</span>       s<<<span class="stringliteral">"Error: could not calculate distribution (minY>=maxY)"</span>;</div>
-<div class="line"><a name="l00925"></a><span class="lineno">  925</span>       <span class="keywordflow">throw</span>(s.str());</div>
-<div class="line"><a name="l00926"></a><span class="lineno">  926</span>     }</div>
-<div class="line"><a name="l00927"></a><span class="lineno">  927</span>     <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00928"></a><span class="lineno">  928</span>       cout << <span class="stringliteral">"minX: "</span> << minX << endl;</div>
-<div class="line"><a name="l00929"></a><span class="lineno">  929</span>       cout << <span class="stringliteral">"maxX: "</span> << maxX << endl;</div>
-<div class="line"><a name="l00930"></a><span class="lineno">  930</span>       cout << <span class="stringliteral">"minY: "</span> << minY << endl;</div>
-<div class="line"><a name="l00931"></a><span class="lineno">  931</span>       cout << <span class="stringliteral">"maxY: "</span> << maxY << endl;</div>
-<div class="line"><a name="l00932"></a><span class="lineno">  932</span>     }</div>
-<div class="line"><a name="l00933"></a><span class="lineno">  933</span>     output.resize(nbin);</div>
-<div class="line"><a name="l00934"></a><span class="lineno">  934</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<nbin;++i){</div>
-<div class="line"><a name="l00935"></a><span class="lineno">  935</span>       output[i].resize(nbin);</div>
-<div class="line"><a name="l00936"></a><span class="lineno">  936</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=0;j<nbin;++j)</div>
-<div class="line"><a name="l00937"></a><span class="lineno">  937</span>     output[i][j]=0;</div>
-<div class="line"><a name="l00938"></a><span class="lineno">  938</span>     }</div>
-<div class="line"><a name="l00939"></a><span class="lineno">  939</span>     <span class="keywordtype">int</span> binX=0;</div>
-<div class="line"><a name="l00940"></a><span class="lineno">  940</span>     <span class="keywordtype">int</span> binY=0;</div>
-<div class="line"><a name="l00941"></a><span class="lineno">  941</span>     vector<double> inputX(imgReader1.nrOfCol());</div>
-<div class="line"><a name="l00942"></a><span class="lineno">  942</span>     vector<double> inputY(imgReader2.nrOfCol());</div>
-<div class="line"><a name="l00943"></a><span class="lineno">  943</span>     <span class="keywordtype">double</span> nvalid=0;</div>
-<div class="line"><a name="l00944"></a><span class="lineno">  944</span>     <span class="keywordtype">double</span> geoX=0;</div>
-<div class="line"><a name="l00945"></a><span class="lineno">  945</span>     <span class="keywordtype">double</span> geoY=0;</div>
-<div class="line"><a name="l00946"></a><span class="lineno">  946</span>     <span class="keywordtype">double</span> icol1=0;</div>
-<div class="line"><a name="l00947"></a><span class="lineno">  947</span>     <span class="keywordtype">double</span> irow1=0;</div>
-<div class="line"><a name="l00948"></a><span class="lineno">  948</span>     <span class="keywordtype">double</span> icol2=0;</div>
-<div class="line"><a name="l00949"></a><span class="lineno">  949</span>     <span class="keywordtype">double</span> irow2=0;</div>
-<div class="line"><a name="l00950"></a><span class="lineno">  950</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<imgReader1.nrOfRow();++irow){</div>
-<div class="line"><a name="l00951"></a><span class="lineno">  951</span>       <span class="keywordflow">if</span>(irow%down_opt[0])</div>
-<div class="line"><a name="l00952"></a><span class="lineno">  952</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00953"></a><span class="lineno">  953</span>       irow1=irow;</div>
-<div class="line"><a name="l00954"></a><span class="lineno">  954</span>       imgReader1.image2geo(icol1,irow1,geoX,geoY);</div>
-<div class="line"><a name="l00955"></a><span class="lineno">  955</span>       imgReader2.geo2image(geoX,geoY,icol2,irow2);</div>
-<div class="line"><a name="l00956"></a><span class="lineno">  956</span>       irow2=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(irow2);</div>
-<div class="line"><a name="l00957"></a><span class="lineno">  957</span>       imgReader1.readData(inputX,GDT_Float64,irow1,band_opt[0]);</div>
-<div class="line"><a name="l00958"></a><span class="lineno">  958</span>       imgReader2.readData(inputY,GDT_Float64,irow2,band_opt[1]);</div>
-<div class="line"><a name="l00959"></a><span class="lineno">  959</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<imgReader.nrOfCol();++icol){</div>
-<div class="line"><a name="l00960"></a><span class="lineno">  960</span>     <span class="keywordflow">if</span>(icol%down_opt[0])</div>
-<div class="line"><a name="l00961"></a><span class="lineno">  961</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00962"></a><span class="lineno">  962</span>     icol1=icol;</div>
-<div class="line"><a name="l00963"></a><span class="lineno">  963</span>     <span class="keywordflow">if</span>(random_opt[0]>0){</div>
-<div class="line"><a name="l00964"></a><span class="lineno">  964</span>       <span class="keywordtype">double</span> p=<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(rand())/(RAND_MAX);</div>
-<div class="line"><a name="l00965"></a><span class="lineno">  965</span>       p*=100.0;</div>
-<div class="line"><a name="l00966"></a><span class="lineno">  966</span>       <span class="keywordflow">if</span>(p>random_opt[0])</div>
-<div class="line"><a name="l00967"></a><span class="lineno">  967</span>         <span class="keywordflow">continue</span>;<span class="comment">//do not select for now, go to next column</span></div>
-<div class="line"><a name="l00968"></a><span class="lineno">  968</span>     }</div>
-<div class="line"><a name="l00969"></a><span class="lineno">  969</span>     <span class="keywordflow">if</span>(imgReader1.isNoData(inputX[icol]))</div>
-<div class="line"><a name="l00970"></a><span class="lineno">  970</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00971"></a><span class="lineno">  971</span>     imgReader1.image2geo(icol1,irow1,geoX,geoY);</div>
-<div class="line"><a name="l00972"></a><span class="lineno">  972</span>     imgReader2.geo2image(geoX,geoY,icol2,irow2);</div>
-<div class="line"><a name="l00973"></a><span class="lineno">  973</span>     icol2=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(icol2);</div>
-<div class="line"><a name="l00974"></a><span class="lineno">  974</span>     <span class="keywordflow">if</span>(imgReader2.isNoData(inputY[icol2]))</div>
-<div class="line"><a name="l00975"></a><span class="lineno">  975</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00976"></a><span class="lineno">  976</span>     <span class="comment">// ++nvalid;</span></div>
-<div class="line"><a name="l00977"></a><span class="lineno">  977</span>     <span class="keywordflow">if</span>(inputX[icol1]>=maxX)</div>
-<div class="line"><a name="l00978"></a><span class="lineno">  978</span>       binX=nbin-1;</div>
-<div class="line"><a name="l00979"></a><span class="lineno">  979</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(inputX[icol]<=minX)</div>
-<div class="line"><a name="l00980"></a><span class="lineno">  980</span>       binX=0;</div>
-<div class="line"><a name="l00981"></a><span class="lineno">  981</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00982"></a><span class="lineno">  982</span>       binX=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(inputX[icol1]-minX)/(maxX-minX)*nbin);</div>
-<div class="line"><a name="l00983"></a><span class="lineno">  983</span>     <span class="keywordflow">if</span>(inputY[icol2]>=maxY)</div>
-<div class="line"><a name="l00984"></a><span class="lineno">  984</span>       binY=nbin-1;</div>
-<div class="line"><a name="l00985"></a><span class="lineno">  985</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(inputY[icol2]<=minY)</div>
-<div class="line"><a name="l00986"></a><span class="lineno">  986</span>       binY=0;</div>
-<div class="line"><a name="l00987"></a><span class="lineno">  987</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00988"></a><span class="lineno">  988</span>       binY=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(inputY[icol2]-minY)/(maxY-minY)*nbin);</div>
-<div class="line"><a name="l00989"></a><span class="lineno">  989</span>     assert(binX>=0);</div>
-<div class="line"><a name="l00990"></a><span class="lineno">  990</span>     assert(binX<output.size());</div>
-<div class="line"><a name="l00991"></a><span class="lineno">  991</span>     assert(binY>=0);</div>
-<div class="line"><a name="l00992"></a><span class="lineno">  992</span>     assert(binY<output[binX].size());</div>
-<div class="line"><a name="l00993"></a><span class="lineno">  993</span>     <span class="keywordflow">if</span>(sigma>0){</div>
-<div class="line"><a name="l00994"></a><span class="lineno">  994</span>       <span class="comment">//create kde for Gaussian basis function</span></div>
-<div class="line"><a name="l00995"></a><span class="lineno">  995</span>       <span class="comment">//todo: speed up by calculating first and last bin with non-zero contriubtion...</span></div>
-<div class="line"><a name="l00996"></a><span class="lineno">  996</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ibinX=0;ibinX<nbin;++ibinX){</div>
-<div class="line"><a name="l00997"></a><span class="lineno">  997</span>         <span class="keywordtype">double</span> centerX=minX+<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(maxX-minX)*ibinX/nbin;</div>
-<div class="line"><a name="l00998"></a><span class="lineno">  998</span>         <span class="keywordtype">double</span> pdfX=gsl_ran_gaussian_pdf(inputX[icol1]-centerX, sigma);</div>
-<div class="line"><a name="l00999"></a><span class="lineno">  999</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ibinY=0;ibinY<nbin;++ibinY){</div>
-<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>           <span class="comment">//calculate  \integral_ibinX^(ibinX+1)</span></div>
-<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>           <span class="keywordtype">double</span> centerY=minY+<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(maxY-minY)*ibinY/nbin;</div>
-<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>           <span class="keywordtype">double</span> pdfY=gsl_ran_gaussian_pdf(inputY[icol2]-centerY, sigma);</div>
-<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>           output[ibinX][binY]+=pdfX*pdfY;</div>
-<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>           nvalid+=pdfX*pdfY;</div>
-<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>         }</div>
-<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>       }</div>
-<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>     }</div>
-<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>       ++output[binX][binY];</div>
-<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>       ++nvalid;</div>
-<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>     }</div>
-<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>       }</div>
-<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>     }</div>
-<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>       cout << <span class="stringliteral">"number of valid pixels: "</span> << nvalid << endl;</div>
-<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> binX=0;binX<nbin;++binX){</div>
-<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>       cout << endl;</div>
-<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> binY=0;binY<nbin;++binY){</div>
-<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>     <span class="keywordtype">double</span> binValueX=0;</div>
-<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>     <span class="keywordflow">if</span>(nbin==maxX-minX+1)</div>
-<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>       binValueX=minX+binX;</div>
-<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>       binValueX=minX+<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(maxX-minX)*(binX+0.5)/nbin;</div>
-<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>     <span class="keywordtype">double</span> binValueY=0;</div>
-<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>     <span class="keywordflow">if</span>(nbin==maxY-minY+1)</div>
-<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>       binValueY=minY+binY;</div>
-<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>       binValueY=minY+<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(maxY-minY)*(binY+0.5)/nbin;</div>
-<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>     <span class="keywordtype">double</span> value=<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(output[binX][binY]);</div>
-<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>       </div>
-<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>     <span class="keywordflow">if</span>(relative_opt[0]||kde_opt[0])</div>
-<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>       value*=100.0/nvalid;</div>
-<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span> </div>
-<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>     cout << binValueX << <span class="stringliteral">" "</span> << binValueY << <span class="stringliteral">" "</span> << value << std::endl;</div>
-<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>     <span class="comment">// double value=static_cast<double>(output[binX][binY])/nvalid;</span></div>
-<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>     <span class="comment">// cout << (maxX-minX)*bin/(nbin-1)+minX << " " << (maxY-minY)*bin/(nbin-1)+minY << " " << value << std::endl;</span></div>
-<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>       }</div>
-<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>     }</div>
-<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>     imgReader1.close();</div>
-<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>     imgReader2.close();</div>
-<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>   }</div>
-<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span> </div>
-<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>   <span class="keywordflow">if</span>(!histogram_opt[0]||histogram2d_opt[0])</div>
-<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>     std::cout << std::endl;</div>
-<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span> }</div>
-<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>   </div>
-<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span> <span class="comment">// int nband=(band_opt.size()) ? band_opt.size() : imgReader.nrOfBand();</span></div>
-<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span> </div>
-<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span> <span class="comment">// const char* pszMessage;</span></div>
-<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span> <span class="comment">// void* pProgressArg=NULL;</span></div>
-<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span> <span class="comment">// GDALProgressFunc pfnProgress=GDALTermProgress;</span></div>
-<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span> <span class="comment">// double progress=0;</span></div>
-<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span> <span class="comment">// srand(time(NULL));</span></div>
-<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span> </div>
-<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span> </div>
-<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span> <span class="comment">// statfactory::StatFactory stat;</span></div>
-<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span> <span class="comment">// imgregression::ImgRegression imgreg;</span></div>
-<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span> </div>
-<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span> <span class="comment">// pfnProgress(progress,pszMessage,pProgressArg);</span></div>
-<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span> <span class="comment">// for(irow=0;irow<classReader.nrOfRow();++irow){</span></div>
-<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span> <span class="comment">//   if(irow%down_opt[0])</span></div>
-<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span> <span class="comment">//     continue;</span></div>
-<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span> <span class="comment">//   // classReader.readData(classBuffer,GDT_Int32,irow);</span></div>
-<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span> <span class="comment">//   classReader.readData(classBuffer,GDT_Float64,irow);</span></div>
-<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span> <span class="comment">//   double x,y;//geo coordinates</span></div>
-<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span> <span class="comment">//   double iimg,jimg;//image coordinates in img image</span></div>
-<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span> <span class="comment">//   for(icol=0;icol<classReader.nrOfCol();++icol){</span></div>
-<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span> <span class="comment">//     if(icol%down_opt[0])</span></div>
-<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>   <span class="comment">//    continue;</span></div>
-<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span> </div>
-<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span> </div>
-<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>   <span class="comment">// if(rand_opt[0]>0){</span></div>
-<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>   <span class="comment">//   gsl_rng* r=stat.getRandomGenerator(time(NULL));</span></div>
-<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>   <span class="comment">//   //todo: init random number generator using time...</span></div>
-<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>   <span class="comment">//   if(verbose_opt[0])</span></div>
-<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>   <span class="comment">//     std::cout << "generating " << rand_opt[0] << " random numbers: " << std::endl;</span></div>
-<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>   <span class="comment">//   for(unsigned int i=0;i<rand_opt[0];++i)</span></div>
-<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>   <span class="comment">//     std::cout << i << " " << stat.getRandomValue(r,randdist_opt[0],randa_opt[0],randb_opt[0]) << std::endl;</span></div>
-<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>   <span class="comment">// }</span></div>
-<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span> </div>
-<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>   <span class="comment">// imgreg.setDown(down_opt[0]);</span></div>
-<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>   <span class="comment">// imgreg.setThreshold(threshold_opt[0]);</span></div>
-<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>   <span class="comment">// double c0=0;//offset</span></div>
-<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>   <span class="comment">// double c1=1;//scale</span></div>
-<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>   <span class="comment">// double err=uncertNodata_opt[0];//start with high initial value in case we do not have first ob err=imgreg.getRMSE(imgReaderModel1,imgReader,c0,c1,verbose_opt[0]);</span></div>
-<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span> </div>
-<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>   <span class="comment">//   int nband=band_opt.size();</span></div>
-<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>   <span class="comment">//   if(band_opt[0]<0)</span></div>
-<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>   <span class="comment">//     nband=imgReader.nrOfBand();</span></div>
-<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>   <span class="comment">//   for(int iband=0;iband<nband;++iband){</span></div>
-<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>   <span class="comment">//     unsigned short band_opt[iband]=(band_opt[0]<0)? iband : band_opt[iband];</span></div>
-<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span> </div>
-<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>   <span class="comment">//     if(minmax_opt[0]||min_opt[0]||max_opt[0]){</span></div>
-<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>   <span class="comment">//    assert(band_opt[iband]<imgReader.nrOfBand());</span></div>
-<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>   <span class="comment">//    if((ulx_opt.size()||uly_opt.size()||lrx_opt.size()||lry_opt.size())&&(imgReader.covers(ulx_opt[0],uly_opt[0],lrx_opt[0],lry_opt[0]))){</span></div>
-<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>   <span class="comment">//      double uli,ulj,lri,lrj;</span></div>
-<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>   <span class="comment">//      imgReader.geo2image(ulx_opt[0],uly_opt[0],uli,ulj);</span></div>
-<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>   <span class="comment">//      imgReader.geo2image(lrx_opt[0],lry_opt[0],lri,lrj);</span></div>
-<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>   <span class="comment">//      imgReader.getMinMax(static_cast<int>(uli),static_cast<int>(lri),static_cast<int>(ulj),static_cast<int>(lrj),band_opt[iband],minValue,maxValue);</span></div>
-<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>   <span class="comment">//    }</span></div>
-<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>   <span class="comment">//    else</span></div>
-<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>   <span class="comment">//      imgReader.getMinMax(minValue,maxValue,band_opt[iband],true);</span></div>
-<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>   <span class="comment">//    if(minmax_opt[0])</span></div>
-<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>   <span class="comment">//      std::cout << "-min " << minValue << " -max " << maxValue << " ";</span></div>
-<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>   <span class="comment">//    else{</span></div>
-<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>   <span class="comment">//      if(min_opt[0])</span></div>
-<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>   <span class="comment">//        std::cout << "-min " << minValue << " ";</span></div>
-<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>   <span class="comment">//      if(max_opt[0])</span></div>
-<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>   <span class="comment">//        std::cout << "-max " << maxValue << " ";</span></div>
-<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>   <span class="comment">//    }</span></div>
-<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>   <span class="comment">//     }</span></div>
-<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>   <span class="comment">//   }</span></div>
-<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>   <span class="comment">//   if(relative_opt[0])</span></div>
-<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>   <span class="comment">//     hist_opt[0]=true;</span></div>
-<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>   <span class="comment">//   if(hist_opt[0]){</span></div>
-<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>   <span class="comment">//     assert(band_opt[0]<imgReader.nrOfBand());</span></div>
-<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>   <span class="comment">//     unsigned int nbin=(nbin_opt.size())? nbin_opt[0]:0;</span></div>
-<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>   <span class="comment">//     std::vector<unsigned long int> output;</span></div>
-<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>   <span class="comment">//     minValue=0;</span></div>
-<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>   <span class="comment">//     maxValue=0;</span></div>
-<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>   <span class="comment">//     //todo: optimize such that getMinMax is only called once...</span></div>
-<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>   <span class="comment">//     imgReader.getMinMax(minValue,maxValue,band_opt[0]);</span></div>
-<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>       </div>
-<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>   <span class="comment">//     if(src_min_opt.size())</span></div>
-<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>   <span class="comment">//       minValue=src_min_opt[0];</span></div>
-<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>   <span class="comment">//     if(src_max_opt.size())</span></div>
-<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>   <span class="comment">//       maxValue=src_max_opt[0];</span></div>
-<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>   <span class="comment">//     unsigned long int nsample=imgReader.getHistogram(output,minValue,maxValue,nbin,band_opt[0]);</span></div>
-<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>   <span class="comment">//     std::cout.precision(10);</span></div>
-<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>   <span class="comment">//     for(int bin=0;bin<nbin;++bin){</span></div>
-<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>   <span class="comment">//    double binValue=0;</span></div>
-<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>   <span class="comment">//    if(nbin==maxValue-minValue+1)</span></div>
-<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>   <span class="comment">//      binValue=minValue+bin;</span></div>
-<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>   <span class="comment">//    else</span></div>
-<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>   <span class="comment">//      binValue=minValue+static_cast<double>(maxValue-minValue)*(bin+0.5)/nbin;</span></div>
-<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>   <span class="comment">//    std::cout << binValue << " ";</span></div>
-<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>   <span class="comment">//    if(relative_opt[0])</span></div>
-<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>   <span class="comment">//      std::cout << 100.0*static_cast<double>(output[bin])/static_cast<double>(nsample) << std::endl;</span></div>
-<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>   <span class="comment">//    else</span></div>
-<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>   <span class="comment">//      std::cout << static_cast<double>(output[bin]) << std::endl;</span></div>
-<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>   <span class="comment">//     }</span></div>
-<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>   <span class="comment">//   }</span></div>
-<div class="ttc" id="classimgregression_1_1ImgRegression_html"><div class="ttname"><a href="classimgregression_1_1ImgRegression.html">imgregression::ImgRegression</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgRegression_8h_source.html#l00030">ImgRegression.h:30</a></div></div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-<div class="ttc" id="classstatfactory_1_1StatFactory_html"><div class="ttname"><a href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></div><div class="ttdef"><b>Definition:</b> <a href="StatFactory_8h_source.html#l00043">StatFactory.h:43</a></div></div>
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkstatascii.html b/doc/html/pkstatascii.html
deleted file mode 100644
index 482597b..0000000
--- a/doc/html/pkstatascii.html
+++ /dev/null
@@ -1,149 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: pkstatascii</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkstatascii </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><p>program to calculate basic statistics from text file </p>
-<h2>SYNOPSIS</h2>
-<p><code> Usage: pkstatascii -i input [-c column]* </code></p>
-<p><code></code></p>
-<p><code> Options: [-size] [-rnd number [-dist function] [-rnda value -rndb value]] [-mean] [-median] [-var] [-skew] [-stdev] [-sum] [-mm] [-min] [-max] [-hist [-nbin value] [-rel] [-kde]] [-hist2d [-nbin value] [-rel] [-kde]] [-cor] [-rmse] [-reg] [-regerr]</code></p>
-<p><code> Advanced options: [-srcmin value] [-srcmax value] [-fs separator] [-r startrow [-r endrow]] [-o [-t]] [–comment character]</code></p>
-<p><code></code></p>
-<h1><a class="anchor" id="pkstatascii_description"></a>
-Description</h1>
-<p>The utility pkstatascii calculates basic statistics of a data series in a text file.</p>
-<h1><a class="anchor" id="pkstatascii_options"></a>
-Options</h1>
-<ul>
-<li>use either <code>-short</code> or <code>--long</code> options (both <code>--long=value</code> and <code>--long value</code> are supported)</li>
-<li>short option <code>-h</code> shows basic options only, long option <code>--help</code> shows all options <table class="doxtable">
-<tr>
-<th>short</th><th>long</th><th>type</th><th>default</th><th>description  </th></tr>
-<tr>
-<td>i </td><td>input </td><td>std::string </td><td></td><td>name of the input text file </td></tr>
-<tr>
-<td>c </td><td>column </td><td>int </td><td>0 </td><td>column nr, starting from 0 </td></tr>
-<tr>
-<td>size </td><td>size </td><td>bool </td><td>false </td><td>sample size </td></tr>
-<tr>
-<td>rnd </td><td>rnd </td><td>unsigned int </td><td>0 </td><td>generate random numbers </td></tr>
-<tr>
-<td>dist </td><td>dist </td><td>std::string </td><td>gaussian </td><td>distribution for generating random numbers, see <a href="http://www.gn/software/gsl/manual/gsl-ref_toc.html#TOC320">http://www.gn/software/gsl/manual/gsl-ref_toc.html#TOC320</a> (only uniform and Gaussian supported yet) </td></tr>
-<tr>
-<td>rnda </td><td>rnda </td><td>double </td><td>0 </td><td>first parameter for random distribution (mean value in case of Gaussian) </td></tr>
-<tr>
-<td>rndb </td><td>rndb </td><td>double </td><td>1 </td><td>second parameter for random distribution (standard deviation in case of Gaussian) </td></tr>
-<tr>
-<td>mean </td><td>mean </td><td>bool </td><td>false </td><td>calculate median </td></tr>
-<tr>
-<td>median </td><td>median </td><td>bool </td><td>false </td><td>calculate median </td></tr>
-<tr>
-<td>var </td><td>var </td><td>bool </td><td>false </td><td>calculate variance </td></tr>
-<tr>
-<td>stdev </td><td>stdev </td><td>bool </td><td>false </td><td>calculate standard deviation </td></tr>
-<tr>
-<td>skew </td><td>skewness </td><td>bool </td><td>false </td><td>calculate skewness </td></tr>
-<tr>
-<td>kurt </td><td>kurtosis </td><td>bool </td><td>false </td><td>calculate kurtosis </td></tr>
-<tr>
-<td>sum </td><td>sum </td><td>bool </td><td>false </td><td>calculate sum of column </td></tr>
-<tr>
-<td>mm </td><td>minmax </td><td>bool </td><td>false </td><td>calculate minimum and maximum value </td></tr>
-<tr>
-<td>min </td><td>min </td><td>bool </td><td>false </td><td>calculate minimum value </td></tr>
-<tr>
-<td>max </td><td>max </td><td>bool </td><td>false </td><td>calculate maximum value </td></tr>
-<tr>
-<td>hist </td><td>hist </td><td>bool </td><td>false </td><td>calculate histogram </td></tr>
-<tr>
-<td>nbin </td><td>nbin </td><td>short </td><td></td><td>number of bins to calculate histogram </td></tr>
-<tr>
-<td>rel </td><td>relative </td><td>bool </td><td>false </td><td>use percentiles for histogram to calculate histogram </td></tr>
-<tr>
-<td>kde </td><td>kde </td><td>bool </td><td>false </td><td>Use <a class="el" href="classKernel.html">Kernel</a> density estimation when producing histogram. The standard deviation is estimated based on Silverman's rule of thumb </td></tr>
-<tr>
-<td>hist2d </td><td>hist2d </td><td>bool </td><td>false </td><td>calculate 2-dimensional histogram based on two columns </td></tr>
-<tr>
-<td>cor </td><td>correlation </td><td>bool </td><td>false </td><td>calculate Pearson produc-moment correlation coefficient between two columns (defined by -c <col1> -c <col2> </td></tr>
-<tr>
-<td>rmse </td><td>rmse </td><td>bool </td><td>false </td><td>calculate root mean square error between two columns (defined by -c <col1> -c <col2> </td></tr>
-<tr>
-<td>reg </td><td>regression </td><td>bool </td><td>false </td><td>calculate linear regression between two columns and get correlation coefficient (defined by -c <col1> -c <col2> </td></tr>
-<tr>
-<td>regerr </td><td>regerr </td><td>bool </td><td>false </td><td>calculate linear regression between two columns and get root mean square error (defined by -c <col1> -c <col2> </td></tr>
-<tr>
-<td>src_min </td><td>src_min </td><td>double </td><td></td><td>start reading source from this minimum value </td></tr>
-<tr>
-<td>src_max </td><td>src_max </td><td>double </td><td></td><td>stop reading source from this maximum value </td></tr>
-<tr>
-<td>fs </td><td>fs </td><td>char </td><td></td><td>field separator. </td></tr>
-<tr>
-<td>r </td><td>range </td><td>int </td><td>0 </td><td>rows to start/end reading. Use -r 1 -r 10 to read first 10 rows where first row is header. Use 0 to read all rows with no header. </td></tr>
-<tr>
-<td>o </td><td>output </td><td>bool </td><td>false </td><td>output the selected columns </td></tr>
-<tr>
-<td>t </td><td>transpose </td><td>bool </td><td>false </td><td>transpose input ascii vector (use in combination with –output) </td></tr>
-<tr>
-<td>comment </td><td>comment </td><td>char </td><td># </td><td>comment character </td></tr>
-</table>
-Usage: pkstatascii -i input [-c column]* </li>
-</ul>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkstatascii_8cc_source.html b/doc/html/pkstatascii_8cc_source.html
deleted file mode 100644
index c618b12..0000000
--- a/doc/html/pkstatascii_8cc_source.html
+++ /dev/null
@@ -1,488 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/pkstatascii.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkstatascii.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pkstatascii.cc: program to calculate basic statistics from text file</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <iostream></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <fstream></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <vector></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <math.h></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "fileclasses/FileReaderAscii.h"</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "algorithms/StatFactory.h"</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="comment">/******************************************************************************/</span></div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span> </div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span> {</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> input_opt(<span class="stringliteral">"i"</span>,<span class="stringliteral">"input"</span>,<span class="stringliteral">"name of the input text file"</span>);</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   <a class="code" href="classOptionpk.html">Optionpk<char></a> fs_opt(<span class="stringliteral">"fs"</span>,<span class="stringliteral">"fs"</span>,<span class="stringliteral">"field separator."</span>,<span class="charliteral">' '</span>);</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>   <a class="code" href="classOptionpk.html">Optionpk<char></a> comment_opt(<span class="stringliteral">"comment"</span>,<span class="stringliteral">"comment"</span>,<span class="stringliteral">"comment character"</span>,<span class="charliteral">'#'</span>);</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> output_opt(<span class="stringliteral">"o"</span>,<span class="stringliteral">"output"</span>,<span class="stringliteral">"output the selected columns"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> transpose_opt(<span class="stringliteral">"t"</span>,<span class="stringliteral">"transpose"</span>,<span class="stringliteral">"transpose input ascii vector (use in combination with --output)"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> col_opt(<span class="stringliteral">"c"</span>, <span class="stringliteral">"column"</span>, <span class="stringliteral">"column nr, starting from 0"</span>, 0);</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> range_opt(<span class="stringliteral">"r"</span>, <span class="stringliteral">"range"</span>, <span class="stringliteral">"rows to start/end reading. Use -r 1 -r 10 to read first 10 rows where first row is header. Use 0 to read all rows with no header."</span>, 0);</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> size_opt(<span class="stringliteral">"size"</span>,<span class="stringliteral">"size"</span>,<span class="stringliteral">"sample size"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned int></a> rand_opt(<span class="stringliteral">"rnd"</span>, <span class="stringliteral">"rnd"</span>, <span class="stringliteral">"generate random numbers"</span>, 0);</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> randdist_opt(<span class="stringliteral">"dist"</span>, <span class="stringliteral">"dist"</span>, <span class="stringliteral">"distribution for generating random numbers, see http://www.gn/software/gsl/manual/gsl-ref_toc.html#TOC320 (only uniform and Gaussian supported yet)"</span>, <span class="stringlite [...]
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> randa_opt(<span class="stringliteral">"rnda"</span>, <span class="stringliteral">"rnda"</span>, <span class="stringliteral">"first parameter for random distribution (mean value in case of Gaussian)"</span>, 0);</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> randb_opt(<span class="stringliteral">"rndb"</span>, <span class="stringliteral">"rndb"</span>, <span class="stringliteral">"second parameter for random distribution (standard deviation in case of Gaussian)"</span>, 1);</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> mean_opt(<span class="stringliteral">"mean"</span>,<span class="stringliteral">"mean"</span>,<span class="stringliteral">"calculate median"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> median_opt(<span class="stringliteral">"median"</span>,<span class="stringliteral">"median"</span>,<span class="stringliteral">"calculate median"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> var_opt(<span class="stringliteral">"var"</span>,<span class="stringliteral">"var"</span>,<span class="stringliteral">"calculate variance"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> skewness_opt(<span class="stringliteral">"skew"</span>,<span class="stringliteral">"skewness"</span>,<span class="stringliteral">"calculate skewness"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> kurtosis_opt(<span class="stringliteral">"kurt"</span>,<span class="stringliteral">"kurtosis"</span>,<span class="stringliteral">"calculate kurtosis"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> stdev_opt(<span class="stringliteral">"stdev"</span>,<span class="stringliteral">"stdev"</span>,<span class="stringliteral">"calculate standard deviation"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> sum_opt(<span class="stringliteral">"sum"</span>,<span class="stringliteral">"sum"</span>,<span class="stringliteral">"calculate sum of column"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> minmax_opt(<span class="stringliteral">"mm"</span>,<span class="stringliteral">"minmax"</span>,<span class="stringliteral">"calculate minimum and maximum value"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> min_opt(<span class="stringliteral">"min"</span>,<span class="stringliteral">"min"</span>,<span class="stringliteral">"calculate minimum value"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> max_opt(<span class="stringliteral">"max"</span>,<span class="stringliteral">"max"</span>,<span class="stringliteral">"calculate maximum value"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> src_min_opt(<span class="stringliteral">"src_min"</span>,<span class="stringliteral">"src_min"</span>,<span class="stringliteral">"start reading source from this minimum value"</span>);</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> src_max_opt(<span class="stringliteral">"src_max"</span>,<span class="stringliteral">"src_max"</span>,<span class="stringliteral">"stop reading source from this maximum value"</span>);</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> histogram_opt(<span class="stringliteral">"hist"</span>,<span class="stringliteral">"hist"</span>,<span class="stringliteral">"calculate histogram"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> histogram2d_opt(<span class="stringliteral">"hist2d"</span>,<span class="stringliteral">"hist2d"</span>,<span class="stringliteral">"calculate 2-dimensional histogram based on two columns"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> nbin_opt(<span class="stringliteral">"nbin"</span>,<span class="stringliteral">"nbin"</span>,<span class="stringliteral">"number of bins to calculate histogram"</span>);</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> relative_opt(<span class="stringliteral">"rel"</span>,<span class="stringliteral">"relative"</span>,<span class="stringliteral">"use percentiles for histogram to calculate histogram"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> kde_opt(<span class="stringliteral">"kde"</span>,<span class="stringliteral">"kde"</span>,<span class="stringliteral">"Use Kernel density estimation when producing histogram. The standard deviation is estimated based on Silverman's rule of thumb"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> correlation_opt(<span class="stringliteral">"cor"</span>,<span class="stringliteral">"correlation"</span>,<span class="stringliteral">"calculate Pearson produc-moment correlation coefficient between two columns (defined by -c <col1> -c <col2>"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> rmse_opt(<span class="stringliteral">"rmse"</span>,<span class="stringliteral">"rmse"</span>,<span class="stringliteral">"calculate root mean square error between two columns (defined by -c <col1> -c <col2>"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> reg_opt(<span class="stringliteral">"reg"</span>,<span class="stringliteral">"regression"</span>,<span class="stringliteral">"calculate linear regression between two columns and get correlation coefficient (defined by -c <col1> -c <col2>"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> regerr_opt(<span class="stringliteral">"regerr"</span>,<span class="stringliteral">"regerr"</span>,<span class="stringliteral">"calculate linear regression between two columns and get root mean square error (defined by -c <col1> -c <col2>"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> verbose_opt(<span class="stringliteral">"v"</span>, <span class="stringliteral">"verbose"</span>, <span class="stringliteral">"verbose mode when positive"</span>, 0,2);</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span> </div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>   src_min_opt.setHide(1);</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>   src_max_opt.setHide(1);</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>   fs_opt.setHide(1);</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>   range_opt.setHide(1);</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>   output_opt.setHide(1);</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>   transpose_opt.setHide(1);</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>   comment_opt.setHide(1);</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span> </div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>   <span class="keywordtype">bool</span> doProcess;<span class="comment">//stop process when program was invoked with help option (-h --help)</span></div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>     <span class="comment">//mandatory options</span></div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>     doProcess=input_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>     col_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>     <span class="comment">//optional options</span></div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>     size_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>     rand_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>     randdist_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>     randa_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>     randb_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>     mean_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>     median_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>     var_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>     stdev_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>     skewness_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>     kurtosis_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>     sum_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>     minmax_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>     min_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>     max_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>     histogram_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>     nbin_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>     relative_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>     kde_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>     histogram2d_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>     correlation_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>     rmse_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>     reg_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>     regerr_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>     <span class="comment">//advanced options</span></div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>     src_min_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>     src_max_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>     fs_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>     range_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>     output_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>     transpose_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>     comment_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>     verbose_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>   }</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> predefinedString){</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>     std::cout << predefinedString << std::endl;</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>     exit(0);</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>   }</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>   <span class="keywordflow">if</span>(!doProcess){</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>     cout << endl;</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>     cout << <span class="stringliteral">"Usage: pkstatascii -i input [-c column]*"</span> << endl;</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>     cout << endl;</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>     std::cout << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << std::endl;</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>     exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>   }</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span> </div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>   <span class="keywordflow">if</span>(src_min_opt.size()){</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>     <span class="keywordflow">while</span>(src_min_opt.size()<col_opt.size())</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>       src_min_opt.push_back(src_min_opt[0]);</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>   }</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>   <span class="keywordflow">if</span>(src_max_opt.size()){</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>     <span class="keywordflow">while</span>(src_max_opt.size()<col_opt.size())</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>       src_max_opt.push_back(src_max_opt[0]);</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>   }</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>   <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>   <span class="keywordflow">if</span>(rand_opt[0]>0){</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>     gsl_rng* r=stat.getRandomGenerator(time(NULL));</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>     <span class="comment">//todo: init random number generator using time...</span></div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>       std::cout << <span class="stringliteral">"generating "</span> << rand_opt[0] << <span class="stringliteral">" random numbers: "</span> << std::endl;</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>     <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0;i<rand_opt[0];++i)</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>       std::cout << i << <span class="stringliteral">" "</span> << stat.getRandomValue(r,randdist_opt[0],randa_opt[0],randb_opt[0]) << std::endl;</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>   }</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>   vector< vector<double> > dataVector(col_opt.size());</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>   vector< vector<double> > statVector(col_opt.size());</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span> </div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>   <span class="keywordflow">if</span>(!input_opt.size())</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>     exit(0);</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>   <a class="code" href="classFileReaderAscii.html">FileReaderAscii</a> asciiReader(input_opt[0]);</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>   asciiReader.setFieldSeparator(fs_opt[0]);</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>   asciiReader.setComment(comment_opt[0]);</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>   asciiReader.setMinRow(range_opt[0]);</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>   <span class="keywordflow">if</span>(range_opt.size()>1)</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>     asciiReader.setMaxRow(range_opt[1]);</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>   asciiReader.readData(dataVector,col_opt);</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>   assert(dataVector.size());</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>   <span class="keywordtype">double</span> minValue=0;</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>   <span class="keywordtype">double</span> maxValue=0;</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nbin=0;</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>   <span class="keywordflow">if</span>(nbin_opt.size())</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>     nbin=nbin_opt[0];</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>   <span class="keywordflow">if</span>(histogram_opt[0]){</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>     stat.minmax(dataVector[0],dataVector[0].begin(),dataVector[0].end(),minValue,maxValue);</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>     <span class="keywordflow">if</span>(src_min_opt.size())</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>       minValue=src_min_opt[0];</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>     <span class="keywordflow">if</span>(src_max_opt.size())</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>       maxValue=src_max_opt[0];</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>     <span class="keywordflow">if</span>(nbin<1){</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>       std::cerr << <span class="stringliteral">"Warning: number of bins not defined, calculating bins from min and max value"</span> << std::endl;</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>       nbin=maxValue-minValue+1;</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>     }</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>   }</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>   <span class="keywordtype">double</span> minX=0;</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>   <span class="keywordtype">double</span> minY=0;</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>   <span class="keywordtype">double</span> maxX=0;</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>   <span class="keywordtype">double</span> maxY=0;</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>   <span class="keywordflow">if</span>(histogram2d_opt[0]){</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>     assert(col_opt.size()==2);</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>     <span class="keywordflow">if</span>(nbin<1){</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>       std::cerr << <span class="stringliteral">"Warning: number of bins not defined, calculating bins from min and max value"</span> << std::endl;</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>       stat.minmax(dataVector[0],dataVector[0].begin(),dataVector[0].end(),minX,maxX);</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>       stat.minmax(dataVector[1],dataVector[1].begin(),dataVector[1].end(),minY,maxY);</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>       <span class="keywordflow">if</span>(src_min_opt.size())</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>     minX=src_min_opt[0];</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>       <span class="keywordflow">if</span>(src_min_opt.size()>1)</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>     minY=src_min_opt[1];</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>       <span class="keywordflow">if</span>(src_max_opt.size())</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>     maxX=src_max_opt[0];</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>       <span class="keywordflow">if</span>(src_max_opt.size()>1)</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>     maxY=src_max_opt[1];</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>       minValue=(minX<minY)? minX:minY;</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>       maxValue=(maxX>maxY)? maxX:maxY;</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>         std::cout << <span class="stringliteral">"min and max values: "</span> << minValue << <span class="stringliteral">", "</span> << maxValue << std::endl;</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>       nbin=maxValue-minValue+1;</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>     }</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>   }</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<col_opt.size();++icol){</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>     <span class="keywordflow">if</span>(!dataVector[icol].size()){</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>       std::cerr << <span class="stringliteral">"Warning: dataVector["</span> << icol << <span class="stringliteral">"] is empty"</span> << std::endl;</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>       <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>     }</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>     <span class="keywordflow">if</span>(size_opt[0])</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>       cout << <span class="stringliteral">"sample size column "</span> << col_opt[icol] << <span class="stringliteral">": "</span> << dataVector[icol].size() << endl;</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>     <span class="keywordflow">if</span>(mean_opt[0])</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>       cout << <span class="stringliteral">"mean value column "</span> << col_opt[icol] << <span class="stringliteral">": "</span> << stat.mean(dataVector[icol]) << endl;</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>     <span class="keywordflow">if</span>(var_opt[0])</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>       cout << <span class="stringliteral">"variance value column "</span> << col_opt[icol] << <span class="stringliteral">": "</span> << stat.var(dataVector[icol]) << endl;</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>     <span class="keywordflow">if</span>(stdev_opt[0])</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>       cout << <span class="stringliteral">"standard deviation column "</span> << col_opt[icol] << <span class="stringliteral">": "</span> << sqrt(stat.var(dataVector[icol])) << endl;</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>     <span class="keywordflow">if</span>(skewness_opt[0])</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>       cout << <span class="stringliteral">"skewness value column "</span> << col_opt[icol] << <span class="stringliteral">": "</span> << stat.skewness(dataVector[icol]) << endl;</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>     <span class="keywordflow">if</span>(kurtosis_opt[0])</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>       cout << <span class="stringliteral">"kurtosis value column "</span> << col_opt[icol] << <span class="stringliteral">": "</span> << stat.kurtosis(dataVector[icol]) << endl;</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>     <span class="keywordflow">if</span>(sum_opt[0]){</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>       cout << setprecision(2);</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>       cout << fixed << <span class="stringliteral">"sum column "</span> << col_opt[icol] << <span class="stringliteral">": "</span> << (stat.sum(dataVector[icol])) << endl;</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>     }</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>     <span class="keywordflow">if</span>(median_opt[0])</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>       cout << <span class="stringliteral">"median value column "</span> << col_opt[icol] << <span class="stringliteral">": "</span> << stat.median(dataVector[icol]) << endl;</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>     <span class="keywordflow">if</span>(minmax_opt[0]){</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>       cout << <span class="stringliteral">"min value column "</span> << col_opt[icol] << <span class="stringliteral">": "</span> << stat.mymin(dataVector[icol]) << endl;</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>       cout << <span class="stringliteral">"max value column "</span> << col_opt[icol] << <span class="stringliteral">": "</span> << stat.mymax(dataVector[icol]) << endl;</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>     }</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>     <span class="keywordflow">if</span>(min_opt[0])</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>       cout << <span class="stringliteral">"min value column "</span> << col_opt[icol] << <span class="stringliteral">": "</span> << stat.mymin(dataVector[icol]) << endl;</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>     <span class="keywordflow">if</span>(max_opt[0])</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>       cout << <span class="stringliteral">"max value column "</span> << col_opt[icol] << <span class="stringliteral">": "</span> << stat.mymax(dataVector[icol]) << endl;</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>     <span class="keywordflow">if</span>(histogram_opt[0]){</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>       <span class="comment">//todo: support kernel density function and estimate sigma as in practical estimate of the bandwith in http://en.wikipedia.org/wiki/Kernel_density_estimation</span></div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>       <span class="keywordtype">double</span> sigma=0;</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>       <span class="keywordflow">if</span>(kde_opt[0]){<span class="comment">//.size()){</span></div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>         <span class="comment">// if(kde_opt[0]>0)</span></div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>         <span class="comment">//   sigma=kde_opt[0];</span></div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>         <span class="comment">// else</span></div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>           sigma=1.06*sqrt(stat.var(dataVector[icol]))*pow(dataVector[icol].size(),-0.2);</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>       }</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>       assert(nbin);</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>       <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>         <span class="keywordflow">if</span>(sigma>0)</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>           std::cout << <span class="stringliteral">"calculating kernel density estimate with sigma "</span> << sigma << <span class="stringliteral">" for col "</span> << icol << std::endl;</div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>           std::cout << <span class="stringliteral">"calculating histogram for col "</span> << icol << std::endl;</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>       }</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>       <span class="comment">//test</span></div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>       <span class="comment">// cout << "debug0" << endl;</span></div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>       <span class="comment">// cout << "dataVector.size(): " << dataVector.size() << endl;</span></div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>       <span class="comment">// cout << "statVector.size(): " << statVector.size() << endl;</span></div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span> </div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>       <span class="comment">// double theMinValue=0;</span></div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>       <span class="comment">// double theMaxValue=0;</span></div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>       </div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>       <span class="comment">// stat.minmax(dataVector[icol],dataVector[icol].begin(),dataVector[icol].end(),theMinValue,theMaxValue);</span></div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>       <span class="comment">// if(minValue<maxValue&&minValue>theMinValue)</span></div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>       <span class="comment">//    theMinValue=minValue;</span></div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>       <span class="comment">// if(minValue<maxValue&&maxValue<theMaxValue)</span></div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>       <span class="comment">//    theMaxValue=maxValue;</span></div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span> </div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>       <span class="comment">// //todo: check...</span></div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>       <span class="comment">// minValue=theMinValue;</span></div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>       <span class="comment">// maxValue=theMaxValue;</span></div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span> </div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>       <span class="comment">// if(maxValue<=minValue){</span></div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>       <span class="comment">//    std::ostringstream s;</span></div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>       <span class="comment">//    s<<"Error: could not calculate distribution (min>=max)";</span></div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>       <span class="comment">//    throw(s.str());</span></div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>       <span class="comment">// }</span></div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>       <span class="comment">// assert(nbin);</span></div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>       <span class="comment">// assert(dataVector[icol].size());</span></div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>       <span class="comment">// if(statVector[icol].size()!=nbin){</span></div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>       <span class="comment">//    statVector[icol].resize(nbin);</span></div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>       <span class="comment">//    for(int i=0;i<nbin;statVector[icol][i++]=0);</span></div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>       <span class="comment">// }</span></div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>       <span class="comment">// typename std::vector<double>::const_iterator it;</span></div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>       <span class="comment">// for(it=dataVector[icol].begin();it!=dataVector[icol].end();++it){</span></div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>       <span class="comment">//    if(*it<minValue)</span></div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>       <span class="comment">//      continue;</span></div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>       <span class="comment">//    if(*it>maxValue)</span></div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>       <span class="comment">//      continue;</span></div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>       <span class="comment">//    if(stat.isNoData(*it))</span></div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>       <span class="comment">//      continue;</span></div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>       <span class="comment">//    int theBin=0;</span></div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>       <span class="comment">//    if(*it==maxValue)</span></div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>       <span class="comment">//      theBin=nbin-1;</span></div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>       <span class="comment">//    else if(*it>minValue && *it<maxValue)</span></div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>       <span class="comment">//      theBin=static_cast<int>(static_cast<double>((nbin-1)*(*it)-minValue)/(maxValue-minValue));</span></div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>       <span class="comment">//    assert(theBin<statVector[icol].size());</span></div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>       <span class="comment">//    ++statVector[icol][theBin];</span></div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>       <span class="comment">//    // if(*it==maxValue)</span></div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>       <span class="comment">//    //   ++statVector[icol][nbin-1];</span></div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>       <span class="comment">//    // else if(*it>=minValue && *it<maxValue)</span></div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>       <span class="comment">//    //   ++statVector[icol][static_cast<int>(static_cast<double>((*it)-minValue)/(maxValue-minValue)*nbin)];</span></div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>       <span class="comment">// }</span></div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span> </div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>       <span class="comment">// exit(0);</span></div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>       <span class="comment">//end test</span></div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>       </div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>       stat.distribution(dataVector[icol],dataVector[icol].begin(),dataVector[icol].end(),statVector[icol],nbin,minValue,maxValue,sigma);</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>         std::cout << <span class="stringliteral">"min and max values: "</span> << minValue << <span class="stringliteral">", "</span> << maxValue << std::endl;</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>     }</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>   }</div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>   <span class="keywordflow">if</span>(correlation_opt[0]){</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>     assert(dataVector.size()==2);</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>     cout << <span class="stringliteral">"correlation between columns "</span> << col_opt[0] << <span class="stringliteral">" and "</span> << col_opt[1] << <span class="stringliteral">": "</span> << stat.correlation(dataVector[0],dataVector[1]) << endl;</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>   }</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>   <span class="keywordflow">if</span>(rmse_opt[0]){</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>     assert(dataVector.size()==2);</div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>     cout << <span class="stringliteral">"root mean square error between columns "</span> << col_opt[0] << <span class="stringliteral">" and "</span> << col_opt[1] << <span class="stringliteral">": "</span> << stat.rmse(dataVector[0],dataVector[1]) << endl;</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>   }</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>   <span class="keywordflow">if</span>(reg_opt[0]){</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>     assert(dataVector.size()==2);</div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>     <span class="keywordtype">double</span> c0=0;</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>     <span class="keywordtype">double</span> c1=0;</div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>     <span class="keywordtype">double</span> r2=stat.linear_regression(dataVector[0],dataVector[1],c0,c1);</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>     cout << <span class="stringliteral">"linear regression between columns: "</span> << col_opt[0] << <span class="stringliteral">" and "</span> << col_opt[1] << <span class="stringliteral">": "</span> << c0 << <span class="stringliteral">"+"</span> << c1 << <span class="stringliteral">" * x "</span> << [...]
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>   }</div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>   <span class="keywordflow">if</span>(regerr_opt[0]){</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>     assert(dataVector.size()==2);</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>     <span class="keywordtype">double</span> c0=0;</div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>     <span class="keywordtype">double</span> c1=0;</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>     <span class="keywordtype">double</span> err=stat.linear_regression_err(dataVector[0],dataVector[1],c0,c1);</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>       cout << <span class="stringliteral">"linear regression between columns: "</span> << col_opt[0] << <span class="stringliteral">" and "</span> << col_opt[1] << <span class="stringliteral">": "</span> << c0 << <span class="stringliteral">"+"</span> << c1 << <span class="stringliteral">" * x "</span> <&l [...]
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>       cout << c0 << <span class="stringliteral">" "</span> << c1 << <span class="stringliteral">" "</span> << err << endl;</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>   }</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>   <span class="keywordflow">if</span>(histogram_opt[0]){</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<statVector.begin()->size();++irow){</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>       <span class="keywordtype">double</span> binValue=0;</div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>       <span class="keywordflow">if</span>(nbin==maxValue-minValue+1)</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>     binValue=minValue+irow;</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>     binValue=minValue+<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(maxValue-minValue)*(irow+0.5)/nbin;</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>       std::cout << binValue << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>       <span class="comment">// std::cout << minValue+static_cast<double>(maxValue-minValue)*(irow+0.5)/nbin << " ";</span></div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<col_opt.size();++icol){</div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>         <span class="keywordflow">if</span>(relative_opt[0])</div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>           std::cout << 100.0*<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(statVector[icol][irow])/static_cast<double>(dataVector[icol].size());</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span>           std::cout << statVector[icol][irow];</div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>         <span class="keywordflow">if</span>(icol<col_opt.size()-1)</div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>           cout << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>       }</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span>       cout << endl;</div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>     }</div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span>   }</div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>   <span class="keywordflow">if</span>(histogram2d_opt[0]){</div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>     assert(nbin);</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>     assert(dataVector.size()==2);</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>     assert(dataVector[0].size()==dataVector[1].size());</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span>     <span class="keywordtype">double</span> sigma=0;</div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>     <span class="comment">//kernel density estimation as in http://en.wikipedia.org/wiki/Kernel_density_estimation</span></div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>     <span class="keywordflow">if</span>(kde_opt[0]){</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>       <span class="comment">// if(kde_opt[0]>0)</span></div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>       <span class="comment">//   sigma=kde_opt[0];</span></div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span>       <span class="comment">// else</span></div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>         sigma=1.06*sqrt(sqrt(stat.var(dataVector[0]))*sqrt(stat.var(dataVector[1])))*pow(dataVector[0].size(),-0.2);</div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>     }</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span>     assert(nbin);</div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>     <span class="keywordflow">if</span>(verbose_opt[0]){</div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span>       <span class="keywordflow">if</span>(sigma>0)</div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span>         std::cout << <span class="stringliteral">"calculating 2d kernel density estimate with sigma "</span> << sigma << <span class="stringliteral">" for cols "</span> << col_opt[0] << <span class="stringliteral">" and "</span> << col_opt[1] << std::endl;</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span>         std::cout << <span class="stringliteral">"calculating 2d histogram for cols "</span> << col_opt[0] << <span class="stringliteral">" and "</span> << col_opt[1] << std::endl;</div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span>       std::cout << <span class="stringliteral">"nbin: "</span> << nbin << std::endl;</div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span>     }</div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span>     std::vector< std::vector<double> > histVector;</div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span>     stat.distribution2d(dataVector[0],dataVector[1],histVector,nbin,minX,maxX,minY,maxY,sigma);</div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> binX=0;binX<nbin;++binX){</div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span>       std::cout << std::endl;</div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> binY=0;binY<nbin;++binY){</div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>     <span class="keywordtype">double</span> binValueX=0;</div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>     <span class="keywordflow">if</span>(nbin==maxX-minX+1)</div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span>       binValueX=minX+binX;</div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span>       binValueX=minX+<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(maxX-minX)*(binX+0.5)/nbin;</div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span>     <span class="keywordtype">double</span> binValueY=0;</div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span>     <span class="keywordflow">if</span>(nbin==maxY-minY+1)</div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span>       binValueY=minY+binY;</div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span>       binValueY=minY+<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(maxY-minY)*(binY+0.5)/nbin;</div>
-<div class="line"><a name="l00445"></a><span class="lineno">  445</span>         <span class="keywordtype">double</span> value=0;</div>
-<div class="line"><a name="l00446"></a><span class="lineno">  446</span>         value=<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(histVector[binX][binY])/dataVector[0].size();</div>
-<div class="line"><a name="l00447"></a><span class="lineno">  447</span>     std::cout << binValueX << <span class="stringliteral">" "</span> << binValueY << <span class="stringliteral">" "</span> << value << std::endl;</div>
-<div class="line"><a name="l00448"></a><span class="lineno">  448</span>     <span class="comment">// std::cout << minX+static_cast<double>(maxX-minX)*(binX+0.5)/nbin << " " << minY+static_cast<double>(maxY-minY)*(binY+0.5)/nbin << " " << value << std::endl;</span></div>
-<div class="line"><a name="l00449"></a><span class="lineno">  449</span>       }</div>
-<div class="line"><a name="l00450"></a><span class="lineno">  450</span>     }</div>
-<div class="line"><a name="l00451"></a><span class="lineno">  451</span>   }</div>
-<div class="line"><a name="l00452"></a><span class="lineno">  452</span>   </div>
-<div class="line"><a name="l00453"></a><span class="lineno">  453</span>   <span class="keywordflow">if</span>(output_opt[0]){</div>
-<div class="line"><a name="l00454"></a><span class="lineno">  454</span>     <span class="keywordflow">if</span>(transpose_opt[0]){</div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<col_opt.size();++icol){</div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<dataVector.begin()->size();++irow){</div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span>           cout << dataVector[icol][irow];</div>
-<div class="line"><a name="l00458"></a><span class="lineno">  458</span>           <span class="keywordflow">if</span>(irow<dataVector.begin()->size()-1)</div>
-<div class="line"><a name="l00459"></a><span class="lineno">  459</span>             cout << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00460"></a><span class="lineno">  460</span>         }</div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span>         cout << endl;</div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span>       }</div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span>     }</div>
-<div class="line"><a name="l00464"></a><span class="lineno">  464</span>     <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<dataVector.begin()->size();++irow){</div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<col_opt.size();++icol){</div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span>           cout << dataVector[icol][irow];</div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span>           <span class="keywordflow">if</span>(icol<col_opt.size()-1)</div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span>             cout << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00470"></a><span class="lineno">  470</span>         }</div>
-<div class="line"><a name="l00471"></a><span class="lineno">  471</span>         cout << endl;</div>
-<div class="line"><a name="l00472"></a><span class="lineno">  472</span>       }</div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span>     }</div>
-<div class="line"><a name="l00474"></a><span class="lineno">  474</span>   }</div>
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span> }</div>
-<div class="ttc" id="classFileReaderAscii_html"><div class="ttname"><a href="classFileReaderAscii.html">FileReaderAscii</a></div><div class="ttdef"><b>Definition:</b> <a href="FileReaderAscii_8h_source.html#l00030">FileReaderAscii.h:30</a></div></div>
-<div class="ttc" id="classstatfactory_1_1StatFactory_html"><div class="ttname"><a href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></div><div class="ttdef"><b>Definition:</b> <a href="StatFactory_8h_source.html#l00043">StatFactory.h:43</a></div></div>
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkstatogr.html b/doc/html/pkstatogr.html
deleted file mode 100644
index 5273325..0000000
--- a/doc/html/pkstatogr.html
+++ /dev/null
@@ -1,117 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: pkstatogr</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkstatogr </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><p>program to calculate basic statistics from vector file </p>
-<h2>SYNOPSIS</h2>
-<p><code> Usage: pkstatogr -i input [-n attribute]* </code></p>
-<p><code></code></p>
-<p><code> Options: [-ln layer]* [-n attribute]* [srcnodata]* [src_min] [src_max] [-s] [-mm] [-min] [-max] [-mean] [-median] [-stdev] [-hist] [-nbin] [-rel] [-kde] </code></p>
-<h1><a class="anchor" id="pkstatogr_description"></a>
-Description</h1>
-<p>The utility pkstatogr calculates basic statistics on attributes of a vector file. Examples of the basic statistics include: minimum, maximum, median, mean and standard deviation. Histograms (in percentage or absolute values) can also be calculated. The attribute of interest can be selected using the option -n|–fname. Values defined by the -nodata option, or not withing the limits set by the options -src_min and -src_max are ignored for the statistics. </p>
-<h1><a class="anchor" id="pkstatogr_options"></a>
-Options</h1>
-<ul>
-<li>use either <code>-short</code> or <code>--long</code> options (both <code>--long=value</code> and <code>--long value</code> are supported)</li>
-<li>short option <code>-h</code> shows basic options only, long option <code>--help</code> shows all options <table class="doxtable">
-<tr>
-<th>short</th><th>long</th><th>type</th><th>default</th><th>description  </th></tr>
-<tr>
-<td>i </td><td>input </td><td>std::string </td><td></td><td>Input OGR vector file </td></tr>
-<tr>
-<td>n </td><td>fname </td><td>std::string </td><td></td><td>Fields on which to calculate statistics </td></tr>
-<tr>
-<td>ln </td><td>lname </td><td>std::string </td><td></td><td>Layer name(s) in sample (leave empty to select all) </td></tr>
-<tr>
-<td>nodata </td><td>nodata </td><td>double </td><td></td><td>Set nodata value(s) </td></tr>
-<tr>
-<td>src_min </td><td>src_min </td><td>double </td><td></td><td>Set minimum value for histogram </td></tr>
-<tr>
-<td>src_max </td><td>src_max </td><td>double </td><td></td><td>Set maximum value for histogram </td></tr>
-<tr>
-<td>s </td><td>size </td><td>bool </td><td>false </td><td>Sample size (number of points) </td></tr>
-<tr>
-<td>mm </td><td>minmax </td><td>bool </td><td>false </td><td>Calculate minimum and maximum value </td></tr>
-<tr>
-<td>min </td><td>min </td><td>bool </td><td>false </td><td>Calculate minimum value </td></tr>
-<tr>
-<td>max </td><td>max </td><td>bool </td><td>false </td><td>Calculate maximum value </td></tr>
-<tr>
-<td>mean </td><td>mean </td><td>bool </td><td>false </td><td>Calculate mean value </td></tr>
-<tr>
-<td>median </td><td>median </td><td>bool </td><td>false </td><td>Calculate median value </td></tr>
-<tr>
-<td>stdev </td><td>stdev </td><td>bool </td><td>false </td><td>Calculate standard deviation </td></tr>
-<tr>
-<td>hist </td><td>hist </td><td>bool </td><td>false </td><td>Calculate histogram </td></tr>
-<tr>
-<td>nbin </td><td>nbin </td><td>unsigned int </td><td></td><td>Number of bins </td></tr>
-<tr>
-<td>rel </td><td>relative </td><td>bool </td><td>false </td><td>Use percentiles for histogram to calculate histogram </td></tr>
-<tr>
-<td>kde </td><td>kde </td><td>bool </td><td>false </td><td>Use <a class="el" href="classKernel.html">Kernel</a> density estimation when producing histogram. The standard deviation is estimated based on Silverman's rule of thumb </td></tr>
-</table>
-Usage: pkstatogr -i input [-n attribute]*</li>
-</ul>
-<h1>Examples </h1>
-<p>Some examples how to use pkstatogr can be found <a class="el" href="md_examples_pkstatogr.html#examples_pkstatogr">here</a> </p>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkstatogr_8cc_source.html b/doc/html/pkstatogr_8cc_source.html
deleted file mode 100644
index 1899faf..0000000
--- a/doc/html/pkstatogr_8cc_source.html
+++ /dev/null
@@ -1,283 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/pkstatogr.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkstatogr.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pkstatogr.cc: program to calculate basic statistics from vector file</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2012 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <math.h></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <string></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <fstream></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <assert.h></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "imageclasses/ImgReaderOgr.h"</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "algorithms/StatFactory.h"</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="comment">/******************************************************************************/</span></div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span> </div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span> {</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> input_opt(<span class="stringliteral">"i"</span>, <span class="stringliteral">"input"</span>, <span class="stringliteral">"Input OGR vector file"</span>, <span class="stringliteral">""</span>);</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> layer_opt(<span class="stringliteral">"ln"</span>, <span class="stringliteral">"lname"</span>, <span class="stringliteral">"Layer name(s) in sample (leave empty to select all)"</span>);</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> fieldname_opt(<span class="stringliteral">"n"</span>, <span class="stringliteral">"fname"</span>, <span class="stringliteral">"Fields on which to calculate statistics"</span>, <span class="stringliteral">""</span>);</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> nodata_opt(<span class="stringliteral">"nodata"</span>,<span class="stringliteral">"nodata"</span>,<span class="stringliteral">"Set nodata value(s)"</span>);</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> src_min_opt(<span class="stringliteral">"src_min"</span>,<span class="stringliteral">"src_min"</span>,<span class="stringliteral">"Set minimum value for histogram"</span>);</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> src_max_opt(<span class="stringliteral">"src_max"</span>,<span class="stringliteral">"src_max"</span>,<span class="stringliteral">"Set maximum value for histogram"</span>);</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> size_opt(<span class="stringliteral">"s"</span>,<span class="stringliteral">"size"</span>,<span class="stringliteral">"Sample size (number of points)"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> minmax_opt(<span class="stringliteral">"mm"</span>,<span class="stringliteral">"minmax"</span>,<span class="stringliteral">"Calculate minimum and maximum value"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> min_opt(<span class="stringliteral">"min"</span>,<span class="stringliteral">"min"</span>,<span class="stringliteral">"Calculate minimum value"</span>,0);</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> max_opt(<span class="stringliteral">"max"</span>,<span class="stringliteral">"max"</span>,<span class="stringliteral">"Calculate maximum value"</span>,0);</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> mean_opt(<span class="stringliteral">"mean"</span>,<span class="stringliteral">"mean"</span>,<span class="stringliteral">"Calculate mean value"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> median_opt(<span class="stringliteral">"median"</span>,<span class="stringliteral">"median"</span>,<span class="stringliteral">"Calculate median value"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> stdev_opt(<span class="stringliteral">"stdev"</span>,<span class="stringliteral">"stdev"</span>,<span class="stringliteral">"Calculate standard deviation"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> histogram_opt(<span class="stringliteral">"hist"</span>,<span class="stringliteral">"hist"</span>,<span class="stringliteral">"Calculate histogram"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned int></a> nbin_opt(<span class="stringliteral">"nbin"</span>, <span class="stringliteral">"nbin"</span>, <span class="stringliteral">"Number of bins"</span>);</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> relative_opt(<span class="stringliteral">"rel"</span>,<span class="stringliteral">"relative"</span>,<span class="stringliteral">"Use percentiles for histogram to calculate histogram"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> kde_opt(<span class="stringliteral">"kde"</span>,<span class="stringliteral">"kde"</span>,<span class="stringliteral">"Use Kernel density estimation when producing histogram. The standard deviation is estimated based on Silverman's rule of thumb"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> verbose_opt(<span class="stringliteral">"v"</span>, <span class="stringliteral">"verbose"</span>, <span class="stringliteral">"Verbose level"</span>, 0,2);</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span> </div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>   <span class="keywordtype">bool</span> doProcess;<span class="comment">//stop process when program was invoked with help option (-h --help)</span></div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     doProcess=input_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     fieldname_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     layer_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     nodata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     src_min_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     src_max_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     size_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     minmax_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     min_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>     max_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>     mean_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>     median_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>     stdev_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     histogram_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     nbin_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     relative_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     kde_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     verbose_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>   }</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> predefinedString){</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>     cout << predefinedString << endl;</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>     exit(0);</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   }</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>   <span class="keywordflow">if</span>(!doProcess){</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     cout << endl;</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>     cout << <span class="stringliteral">"Usage: pkstatogr -i input [-n attribute]*"</span> << endl;</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     cout << endl;</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>     cout << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << endl;</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>     exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>   }</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span> </div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>   <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a> imgReader;</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>     imgReader.open(input_opt[0]);</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>   }</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>     cerr << errorstring << endl;</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>   }</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span> </div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>   <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a> inputReader(input_opt[0]);</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>   vector<double> theData;</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>   <a class="code" href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a> stat;</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>   <span class="comment">//todo: implement ALL</span></div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span> </div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>   stat.setNoDataValues(nodata_opt);</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span> </div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>   <span class="comment">//support multiple layers</span></div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>   <span class="keywordtype">int</span> nlayerRead=inputReader.getDataSource()->GetLayerCount();</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>     cout << <span class="stringliteral">"number of layers: "</span> << nlayerRead << endl;</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>       </div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ilayer=0;ilayer<nlayerRead;++ilayer){</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>     OGRLayer *readLayer=inputReader.getLayer(ilayer);</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>     <span class="keywordtype">string</span> currentLayername=readLayer->GetName();</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>     <span class="keywordflow">if</span>(layer_opt.size())</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>       <span class="keywordflow">if</span>(find(layer_opt.begin(),layer_opt.end(),currentLayername)==layer_opt.end())</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>     <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>       cout << <span class="stringliteral">"processing layer "</span> << currentLayername << endl;</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>     <span class="keywordflow">if</span>(layer_opt.size())</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>       cout << <span class="stringliteral">" --lname "</span> << currentLayername;</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>       </div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ifield=0;ifield<fieldname_opt.size();++ifield){</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>     cout << <span class="stringliteral">"field: "</span> << ifield << endl;</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>       theData.clear();</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>       inputReader.readData(theData,OFTReal,fieldname_opt[ifield],ilayer,verbose_opt[0]);</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>       vector<double> binData;</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>       <span class="keywordtype">double</span> minValue=0;</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>       <span class="keywordtype">double</span> maxValue=0;</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>       stat.minmax(theData,theData.begin(),theData.end(),minValue,maxValue);</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>       <span class="keywordflow">if</span>(src_min_opt.size())</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>     minValue=src_min_opt[0];</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>       <span class="keywordflow">if</span>(src_max_opt.size())</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>     maxValue=src_max_opt[0];</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>       <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nbin=(nbin_opt.size())? nbin_opt[0]:0;</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span> </div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>       <span class="keywordflow">if</span>(histogram_opt[0]){</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>     <span class="keywordtype">double</span> sigma=0;</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>     <span class="keywordflow">if</span>(kde_opt[0]){</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>       <span class="comment">// if(kde_opt[0]>0)</span></div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>       <span class="comment">//   sigma=kde_opt[0];</span></div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>       <span class="comment">// else</span></div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>         sigma=1.06*sqrt(stat.var(theData))*pow(theData.size(),-0.2);</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>     }</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>     <span class="keywordflow">if</span>(nbin<1)</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>       nbin=(maxValue-minValue+1);</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>       stat.distribution(theData,theData.begin(),theData.end(),binData,nbin,minValue,maxValue,sigma);</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>     }</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>     <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> theError){</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>       cerr << <span class="stringliteral">"Warning: all identical values in data"</span> << endl;</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>       exit(1);</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>     }</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>       }</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>       <span class="comment">// int nbin=(nbin_opt[0]>1)? nbin_opt[0] : 2;</span></div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>       cout << <span class="stringliteral">" --fname "</span> << fieldname_opt[ifield];</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>     <span class="keywordtype">double</span> theMean=0;</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>     <span class="keywordtype">double</span> theVar=0;</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>     stat.meanVar(theData,theMean,theVar);</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>     <span class="keywordflow">if</span>(mean_opt[0])</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>       cout << <span class="stringliteral">" --mean "</span> << theMean;</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>     <span class="keywordflow">if</span>(stdev_opt[0])</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>       cout << <span class="stringliteral">" --stdev "</span> << sqrt(theVar);</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>     <span class="keywordflow">if</span>(minmax_opt[0]||min_opt[0]||max_opt[0]){</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>       <span class="keywordflow">if</span>(minmax_opt[0])</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>         cout << <span class="stringliteral">" --min "</span> << minValue << <span class="stringliteral">" --max "</span> << maxValue << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>         <span class="keywordflow">if</span>(min_opt[0])</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>           cout << <span class="stringliteral">" --min "</span> << minValue << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>         <span class="keywordflow">if</span>(max_opt[0])</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>           cout << <span class="stringliteral">" --max "</span> << maxValue << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>       }</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>     }</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>     <span class="keywordflow">if</span>(median_opt[0])</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>       cout << <span class="stringliteral">" -median "</span> << stat.median(theData);</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>     <span class="keywordflow">if</span>(size_opt[0])</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>       cout << <span class="stringliteral">" -size "</span> << theData.size();</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>     cout << endl;</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>     <span class="keywordflow">if</span>(histogram_opt[0]){</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ibin=0;ibin<nbin;++ibin){</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>         <span class="keywordtype">double</span> binValue=0;</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>         <span class="keywordflow">if</span>(nbin==maxValue-minValue+1)</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>           binValue=minValue+ibin;</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>           binValue=minValue+<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(maxValue-minValue)*(ibin+0.5)/nbin;</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>         cout << binValue << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>         <span class="keywordflow">if</span>(relative_opt[0]||kde_opt[0])</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>           cout << 100.0*<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(binData[ibin])/theData.size() << endl;</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>           cout << binData[ibin] << endl;</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>       }</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>     }</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>       }</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> theError){</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>     <span class="keywordflow">if</span>(mean_opt[0])</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>       cout << <span class="stringliteral">" --mean "</span> << theData.back();</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>     <span class="keywordflow">if</span>(stdev_opt[0])</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>       cout << <span class="stringliteral">" --stdev "</span> << <span class="stringliteral">"0"</span>;</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>     <span class="keywordflow">if</span>(min_opt[0])</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>       cout << <span class="stringliteral">" -min "</span> << theData.back();</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>     <span class="keywordflow">if</span>(max_opt[0])</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>       cout << <span class="stringliteral">" -max "</span> << theData.back();</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>     <span class="keywordflow">if</span>(median_opt[0])</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>       cout << <span class="stringliteral">" -median "</span> << theData.back();</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>     <span class="keywordflow">if</span>(size_opt[0])</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>       cout << <span class="stringliteral">" -size "</span> << theData.size();</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>     cout << endl;</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>     cerr << <span class="stringliteral">"Warning: all identical values in data"</span> << endl;</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>       }</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>     }</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>   }</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>   imgReader.close();</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span> }</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span> </div>
-<div class="ttc" id="classImgReaderOgr_html"><div class="ttname"><a href="classImgReaderOgr.html">ImgReaderOgr</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderOgr_8h_source.html#l00035">ImgReaderOgr.h:35</a></div></div>
-<div class="ttc" id="classstatfactory_1_1StatFactory_html"><div class="ttname"><a href="classstatfactory_1_1StatFactory.html">statfactory::StatFactory</a></div><div class="ttdef"><b>Definition:</b> <a href="StatFactory_8h_source.html#l00043">StatFactory.h:43</a></div></div>
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkstatprofile.html b/doc/html/pkstatprofile.html
deleted file mode 100644
index 318b86c..0000000
--- a/doc/html/pkstatprofile.html
+++ /dev/null
@@ -1,126 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: pkstatprofile</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkstatprofile </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><p>program to calculate statistics in temporal or spectral profile </p>
-<h2>SYNOPSIS</h2>
-<p><code> Usage: pkstatprofile -i input -o output [-f function]* </code></p>
-<p><code> Options: [-nodata value]</code></p>
-<p><code> Advanced options: check table </code></p>
-<h1><a class="anchor" id="pkstatprofile_description"></a>
-Description</h1>
-<p>This utility calculates statistics for a temporal (time series) or spectral profile</p>
-<p><a class="anchor" id="pkstatprofile_functions"></a> </p>
-<table class="doxtable">
-<tr>
-<th>function </th><th>description  </th></tr>
-<tr>
-<td>mean </td><td>calculate mean in window </td></tr>
-<tr>
-<td>median </td><td>perform a median filter in spatial (dx, dy) or spectral/temporal (dz) domain </td></tr>
-<tr>
-<td>var </td><td>calculate variance in window </td></tr>
-<tr>
-<td>stdev </td><td>calculate standard deviation in window </td></tr>
-<tr>
-<td>min </td><td>calculate minimum in window </td></tr>
-<tr>
-<td>max </td><td>calculate maximum in window </td></tr>
-<tr>
-<td>sum </td><td>calculate sum in window </td></tr>
-<tr>
-<td>mode </td><td>calculate mode of all values </td></tr>
-<tr>
-<td>ismin </td><td>1 if value is minimum, else 0 </td></tr>
-<tr>
-<td>ismax </td><td>1 if value is maximum, else 0 </td></tr>
-<tr>
-<td>per </td><td>calculate percentile in time series (provide percentage value as argument) </td></tr>
-<tr>
-<td>prop </td><td>calculate proportion </td></tr>
-<tr>
-<td>nvalid </td><td>report number of valid observations </td></tr>
-</table>
-<p>Example: Calculate min and max NDVI in time series</p>
-<div class="fragment"><div class="line">pkstatprofile -i modis_ndvi_2010.tif -o modis_stats_2010.tif -f min -f max</div>
-</div><!-- fragment --><h1><a class="anchor" id="pkfilter_options"></a>
-Options</h1>
-<ul>
-<li>use either <code>-short</code> or <code>--long</code> options (both <code>--long=value</code> and <code>--long value</code> are supported)</li>
-<li>short option <code>-h</code> shows basic options only, long option <code>--help</code> shows all options <table class="doxtable">
-<tr>
-<th>short</th><th>long</th><th>type</th><th>default</th><th>description  </th></tr>
-<tr>
-<td>i </td><td>input </td><td>std::string </td><td></td><td>input image file </td></tr>
-<tr>
-<td>o </td><td>output </td><td>std::string </td><td></td><td>Output image file </td></tr>
-<tr>
-<td>f </td><td>function </td><td>std::string </td><td></td><td>statistics function (see table) </td></tr>
-<tr>
-<td>perc </td><td>percentile </td><td>double </td><td></td><td>percentile value(s) for percentile function </td></tr>
-<tr>
-<td>class </td><td>class </td><td>std::string </td><td></td><td>class value(s) to use for mode, proportion </td></tr>
-<tr>
-<td>nodata </td><td>nodata </td><td>double </td><td></td><td>nodata value(s) </td></tr>
-</table>
-Usage: pkstatprofile -i input -o ouptut [-f function]* </li>
-</ul>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkstatprofile_8cc_source.html b/doc/html/pkstatprofile_8cc_source.html
deleted file mode 100644
index 16d1a66..0000000
--- a/doc/html/pkstatprofile_8cc_source.html
+++ /dev/null
@@ -1,256 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/pkstatprofile.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkstatprofile.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pkstatprofile.cc: program to calculate statistics in temporal or spectral profile</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2015 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <assert.h></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <iostream></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <string></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <fstream></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <math.h></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include <sys/types.h></span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include <stdio.h></span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include "base/Vector2d.h"</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include "algorithms/Filter2d.h"</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include "algorithms/Filter.h"</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="preprocessor">#include "imageclasses/ImgReaderGdal.h"</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="preprocessor">#include "imageclasses/ImgWriterGdal.h"</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="preprocessor">#include "algorithms/StatFactory.h"</span></div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> </div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="comment">/******************************************************************************/</span></div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span> <span class="comment">/*------------------</span></div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span> <span class="comment">  Main procedure</span></div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span> <span class="comment">  ----------------*/</span></div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc,<span class="keywordtype">char</span> **argv) {</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> input_opt(<span class="stringliteral">"i"</span>,<span class="stringliteral">"input"</span>,<span class="stringliteral">"input image file"</span>);</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> output_opt(<span class="stringliteral">"o"</span>, <span class="stringliteral">"output"</span>, <span class="stringliteral">"Output image file"</span>);</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> function_opt(<span class="stringliteral">"f"</span>, <span class="stringliteral">"function"</span>, <span class="stringliteral">"Statistics function (mean, median, var, stdev, min, max, sum, mode (provide classes), ismin, ismax, proportion (provide classes), percentile, nvalid"</span>);</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> percentile_opt(<span class="stringliteral">"perc"</span>,<span class="stringliteral">"perc"</span>,<span class="stringliteral">"Percentile value(s) used for rule percentile"</span>);</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> class_opt(<span class="stringliteral">"class"</span>, <span class="stringliteral">"class"</span>, <span class="stringliteral">"class value(s) to use for mode, proportion"</span>);</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> nodata_opt(<span class="stringliteral">"nodata"</span>, <span class="stringliteral">"nodata"</span>, <span class="stringliteral">"nodata value(s)"</span>);</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a>  otype_opt(<span class="stringliteral">"ot"</span>, <span class="stringliteral">"otype"</span>, <span class="stringliteral">"Data type for output image ({Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/CInt16/CInt32/CFloat32/CFloat64}). Empty string: inherit type from input image"</span>,<span class="stringl [...]
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  oformat_opt(<span class="stringliteral">"of"</span>, <span class="stringliteral">"oformat"</span>, <span class="stringliteral">"Output image format (see also gdal_translate)"</span>,<span class="stringliteral">"GTiff"</span>);</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  colorTable_opt(<span class="stringliteral">"ct"</span>, <span class="stringliteral">"ct"</span>, <span class="stringliteral">"color table (file with 5 columns: id R G B ALFA (0: transparent, 255: solid). Use none to ommit color table"</span>);</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> option_opt(<span class="stringliteral">"co"</span>, <span class="stringliteral">"co"</span>, <span class="stringliteral">"Creation option for output file. Multiple options can be specified."</span>);</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   <span class="comment">// Optionpk<short> down_opt("d", "down", "down sampling factor. Use value 1 for no downsampling). Use value n>1 for downsampling (aggregation)", 1);</span></div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> verbose_opt(<span class="stringliteral">"v"</span>, <span class="stringliteral">"verbose"</span>, <span class="stringliteral">"verbose mode if > 0"</span>, 0,2);</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span> </div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>   percentile_opt.setHide(1);</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>   class_opt.setHide(1);</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   otype_opt.setHide(1);</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>   oformat_opt.setHide(1);</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>   colorTable_opt.setHide(1);</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span> </div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>   <span class="keywordtype">bool</span> doProcess;<span class="comment">//stop process when program was invoked with help option (-h --help)</span></div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>     doProcess=input_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>     output_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>     function_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>     percentile_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     nodata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>     otype_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     oformat_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>     colorTable_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>     verbose_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>   }</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> predefinedString){</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>     std::cout << predefinedString << std::endl;</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>     exit(0);</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>   }</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>   <span class="keywordflow">if</span>(!doProcess){</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>     cout << endl;</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>     cout << <span class="stringliteral">"Usage: pkstatprofile -i input -o ouptut [-function]*"</span> << endl;</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>     cout << endl;</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>     std::cout << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << std::endl;</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>     exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>   }</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span> </div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>   <span class="keywordflow">if</span>(function_opt.empty()){</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>     cerr << <span class="stringliteral">"Error: no function selected, use option -f"</span> << endl;</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>     exit(1);</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>   }</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span> </div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>   <a class="code" href="classfilter_1_1Filter.html">filter::Filter</a> filter1d;</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>   filter1d.setNoDataValues(nodata_opt);</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<class_opt.size();++iclass)</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>     filter1d.pushClass(class_opt[iclass]);</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span> </div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>   filter1d.setThresholds(percentile_opt);</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span> </div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>   <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> input;</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>   <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> output;</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>   <span class="keywordflow">if</span>(input_opt.empty()){</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>     cerr << <span class="stringliteral">"Error: no input file selected, use option -i"</span> << endl;</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>     exit(1);</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   }</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>   <span class="keywordflow">if</span>(output_opt.empty()){</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>     cerr << <span class="stringliteral">"Error: no output file selected, use option -o"</span> << endl;</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>     exit(1);</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>   }</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>     input.open(input_opt[0]);</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>   }</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>     cout << errorstring << endl;</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>     exit(1);</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>   }</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span> </div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>   GDALDataType theType=GDT_Unknown;</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>     cout << <span class="stringliteral">"possible output data types: "</span>;</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iType = 0; iType < GDT_TypeCount; ++iType){</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>       cout << <span class="stringliteral">" "</span> << GDALGetDataTypeName((GDALDataType)iType);</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>     <span class="keywordflow">if</span>( GDALGetDataTypeName((GDALDataType)iType) != NULL</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>         && EQUAL(GDALGetDataTypeName((GDALDataType)iType),</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>                  otype_opt[0].c_str()))</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>       theType=(GDALDataType) iType;</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>   }</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>   <span class="keywordflow">if</span>(theType==GDT_Unknown)</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>     theType=input.getDataType();</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span> </div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>     std::cout << std::endl << <span class="stringliteral">"Output pixel type:  "</span> << GDALGetDataTypeName(theType) << endl;</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span> </div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>   <span class="keywordtype">string</span> imageType;<span class="comment">//=input.getImageType();</span></div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>   <span class="keywordflow">if</span>(oformat_opt.size())</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>     imageType=oformat_opt[0];</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span> </div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>   <span class="keywordflow">if</span>(option_opt.findSubstring(<span class="stringliteral">"INTERLEAVE="</span>)==option_opt.end()){</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>     <span class="keywordtype">string</span> theInterleave=<span class="stringliteral">"INTERLEAVE="</span>;</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>     theInterleave+=input.getInterleave();</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>     option_opt.push_back(theInterleave);</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>   }</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>   <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>     cout << <span class="stringliteral">"Calculating statistic metrics: "</span> << function_opt.size() << endl;</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>     output.open(output_opt[0],input.nrOfCol(),input.nrOfRow(),function_opt.size(),theType,imageType,option_opt);</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>   }</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>     cout << errorstring << endl;</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>     exit(4);</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>   }</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span> </div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>   output.setProjection(input.getProjection());</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>   <span class="keywordtype">double</span> gt[6];</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>   input.getGeoTransform(gt);</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>   output.setGeoTransform(gt);</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>   </div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>   <span class="keywordflow">if</span>(colorTable_opt.size()){</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>     <span class="keywordflow">if</span>(colorTable_opt[0]!=<span class="stringliteral">"none"</span>){</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>     cout << <span class="stringliteral">"set colortable "</span> << colorTable_opt[0] << endl;</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>       assert(output.getDataType()==GDT_Byte);</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>       output.setColorTable(colorTable_opt[0]);</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>     }</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>   }</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(input.getColorTable()!=NULL)</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>     output.setColorTable(input.getColorTable());</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>   </div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>   <span class="keywordflow">if</span>(nodata_opt.size()){</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<output.nrOfBand();++iband)</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>       output.GDALSetNoDataValue(nodata_opt[0],iband);</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>   }</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span> </div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>     filter1d.stats(input,output,function_opt);</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>   }</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>     cerr << errorstring << endl;</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>   }</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>   input.close();</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>   output.close();</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>   <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span> }</div>
-<div class="ttc" id="classfilter_1_1Filter_html"><div class="ttname"><a href="classfilter_1_1Filter.html">filter::Filter</a></div><div class="ttdef"><b>Definition:</b> <a href="Filter_8h_source.html#l00040">Filter.h:40</a></div></div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-<div class="ttc" id="classImgWriterGdal_html"><div class="ttname"><a href="classImgWriterGdal.html">ImgWriterGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgWriterGdal_8h_source.html#l00033">ImgWriterGdal.h:33</a></div></div>
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pkstatz.html b/doc/html/pkstatz.html
deleted file mode 100644
index 124693c..0000000
--- a/doc/html/pkstatz.html
+++ /dev/null
@@ -1,128 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: pkstatz</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.5</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkstatz </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><p>program to calculate statistics in temporal or spectral profile </p>
-<h2>SYNOPSIS</h2>
-<p><code> Usage: pkstatz -i input -o output [-f function]* </code></p>
-<p><code> Options: [-nodata value]</code></p>
-<p><code> Advanced options: check table </code></p>
-<h1><a class="anchor" id="pkstatz_description"></a>
-Description</h1>
-<p>This utility calculates statistics for a temporal (time series) or spectral profile</p>
-<p><a class="anchor" id="pkstatz_functions"></a> </p>
-<table class="doxtable">
-<tr>
-<th>function </th><th>description  </th></tr>
-<tr>
-<td>mean </td><td>calculate mean in window </td></tr>
-<tr>
-<td>median </td><td>perform a median filter in spatial (dx, dy) or spectral/temporal (dz) domain </td></tr>
-<tr>
-<td>var </td><td>calculate variance in window </td></tr>
-<tr>
-<td>stdev </td><td>calculate standard deviation in window </td></tr>
-<tr>
-<td>min </td><td>calculate minimum in window </td></tr>
-<tr>
-<td>max </td><td>calculate maximum in window </td></tr>
-<tr>
-<td>sum </td><td>calculate sum in window </td></tr>
-<tr>
-<td>mode </td><td>calculate mode of all values </td></tr>
-<tr>
-<td>ismin </td><td>1 if value is minimum, else 0 </td></tr>
-<tr>
-<td>ismax </td><td>1 if value is maximum, else 0 </td></tr>
-<tr>
-<td>per </td><td>calculate percentile in time series (provide percentage value as argument) </td></tr>
-<tr>
-<td>prop </td><td>calculate proportion </td></tr>
-<tr>
-<td>nvalid </td><td>report number of valid observations </td></tr>
-</table>
-<p>Example: Calculate min and max NDVI in time series</p>
-<div class="fragment"><div class="line">pkstatz -i modis_ndvi_2010.tif -o modis_stats_2010.tif -f min -f max</div>
-</div><!-- fragment --><h1><a class="anchor" id="pkfilter_options"></a>
-Options</h1>
-<ul>
-<li>use either <code>-short</code> or <code>--long</code> options (both <code>--long=value</code> and <code>--long value</code> are supported)</li>
-<li>short option <code>-h</code> shows basic options only, long option <code>--help</code> shows all options <table class="doxtable">
-<tr>
-<th>short</th><th>long</th><th>type</th><th>default</th><th>description  </th></tr>
-<tr>
-<td>i </td><td>input </td><td>std::string </td><td></td><td>input image file </td></tr>
-<tr>
-<td>o </td><td>output </td><td>std::string </td><td></td><td>Output image file </td></tr>
-<tr>
-<td>f </td><td>function </td><td>std::string </td><td></td><td>statistics function (see table) </td></tr>
-<tr>
-<td>perc </td><td>percentile </td><td>double </td><td></td><td>percentile value(s) for percentile function </td></tr>
-<tr>
-<td>class </td><td>class </td><td>std::string </td><td></td><td>class value(s) to use for mode, proportion </td></tr>
-<tr>
-<td>nodata </td><td>nodata </td><td>double </td><td></td><td>nodata value(s) </td></tr>
-</table>
-Usage: pkstatz -i input -o ouptut [-f function]*</li>
-</ul>
-<h1>Examples </h1>
-<p>Some examples how to use pkstatz can be found here </p>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Dec 16 2015 16:04:45 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pksvm.html b/doc/html/pksvm.html
deleted file mode 100644
index da209e6..0000000
--- a/doc/html/pksvm.html
+++ /dev/null
@@ -1,176 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: pksvm</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pksvm </div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><p>classify raster image using Support Vector Machine </p>
-<h2>SYNOPSIS</h2>
-<p><code> Usage: pksvm -t training [-i input -o output] [-cv value] </code></p>
-<p><code></code></p>
-<p><code> Options: [-tln layer]* [-c name -r value]* [-of GDALformat|-f OGRformat] [-co NAME=VALUE]* [-ct filename] [-label attribute] [-prior value]* [-g gamma] [-cc cost] [-m filename [-msknodata value]*] [-nodata value]</code></p>
-<p><code> Advanced options: [-b band] [-sband band -eband band]* [-bal size]* [-min] [-bag value] [-bs value] [-comb rule] [-cb filename] [-prob filename] [-pim priorimage] [–offset value] [–scale value] [-svmt type] [-kt type] [-kd value] [-c0 value] [-nu value] [-eloss value] [-cache value] [-etol value] [-shrink] </code></p>
-<h1><a class="anchor" id="pksvm_description"></a>
-Description</h1>
-<p>The utility pksvm implements a support vector machine (SVM) to solve a supervised classification problem. The implementation is based on the open source C++ library libSVM (<a href="http://www.csie.ntu.edu.tw/~cjlin/libsvm">http://www.csie.ntu.edu.tw/~cjlin/libsvm</a>). Both raster and vector files are supported as input. The output will contain the classification result, either in raster or vector format, corresponding to the format of the input. A training sample must be provided as [...]
-<h1><a class="anchor" id="pksvm_options"></a>
-Options</h1>
-<ul>
-<li>use either <code>-short</code> or <code>--long</code> options (both <code>--long=value</code> and <code>--long value</code> are supported)</li>
-<li>short option <code>-h</code> shows basic options only, long option <code>--help</code> shows all options <table class="doxtable">
-<tr>
-<th>short</th><th>long</th><th>type</th><th>default</th><th>description  </th></tr>
-<tr>
-<td>t </td><td>training </td><td>std::string </td><td></td><td>Training vector file. A single vector file contains all training features (must be set as: b0, b1, b2,...) for all classes (class numbers identified by label option). Use multiple training files for bootstrap aggregation (alternative to the bag and bsize options, where a random subset is taken from a single training file) </td></tr>
-<tr>
-<td>i </td><td>input </td><td>std::string </td><td></td><td>input image </td></tr>
-<tr>
-<td>o </td><td>output </td><td>std::string </td><td></td><td>Output classification image </td></tr>
-<tr>
-<td>cv </td><td>cv </td><td>unsigned short </td><td>0 </td><td>N-fold cross validation mode </td></tr>
-<tr>
-<td>cmf </td><td>cmf </td><td>std::string </td><td>ascii </td><td>Format for confusion matrix (ascii or latex) </td></tr>
-<tr>
-<td>tln </td><td>tln </td><td>std::string </td><td></td><td>Training layer name(s) </td></tr>
-<tr>
-<td>c </td><td>class </td><td>std::string </td><td></td><td>List of class names. </td></tr>
-<tr>
-<td>r </td><td>reclass </td><td>short </td><td></td><td>List of class values (use same order as in class opt). </td></tr>
-<tr>
-<td>of </td><td>oformat </td><td>std::string </td><td>GTiff </td><td>Output image format (see also gdal_translate). </td></tr>
-<tr>
-<td>f </td><td>f </td><td>std::string </td><td>SQLite </td><td>Output ogr format for active training sample </td></tr>
-<tr>
-<td>co </td><td>co </td><td>std::string </td><td></td><td>Creation option for output file. Multiple options can be specified. </td></tr>
-<tr>
-<td>ct </td><td>ct </td><td>std::string </td><td></td><td>Color table in ASCII format having 5 columns: id R G B ALFA (0: transparent, 255: solid) </td></tr>
-<tr>
-<td>label </td><td>label </td><td>std::string </td><td>label </td><td>Attribute name for class label in training vector file. </td></tr>
-<tr>
-<td>prior </td><td>prior </td><td>double </td><td>0 </td><td>Prior probabilities for each class (e.g., -p 0.3 -p 0.3 -p 0.2 ). Used for input only (ignored for cross validation) </td></tr>
-<tr>
-<td>g </td><td>gamma </td><td>float </td><td>1 </td><td>Gamma in kernel function </td></tr>
-<tr>
-<td>cc </td><td>ccost </td><td>float </td><td>1000 </td><td>The parameter C of C_SVC, epsilon_SVR, and nu_SVR </td></tr>
-<tr>
-<td>m </td><td>mask </td><td>std::string </td><td></td><td>Only classify within specified mask (vector or raster). For raster mask, set nodata values with the option msknodata. </td></tr>
-<tr>
-<td>msknodata </td><td>msknodata </td><td>short </td><td>0 </td><td>Mask value(s) not to consider for classification. Values will be taken over in classification image. </td></tr>
-<tr>
-<td>nodata </td><td>nodata </td><td>unsigned short </td><td>0 </td><td>Nodata value to put where image is masked as nodata </td></tr>
-<tr>
-<td>b </td><td>band </td><td>short </td><td></td><td>Band index (starting from 0, either use band option or use start to end) </td></tr>
-<tr>
-<td>sband </td><td>startband </td><td>unsigned short </td><td></td><td>Start band sequence number </td></tr>
-<tr>
-<td>eband </td><td>endband </td><td>unsigned short </td><td></td><td>End band sequence number </td></tr>
-<tr>
-<td>bal </td><td>balance </td><td>unsigned int </td><td>0 </td><td>Balance the input data to this number of samples for each class </td></tr>
-<tr>
-<td>min </td><td>min </td><td>int </td><td>0 </td><td>If number of training pixels is less then min, do not take this class into account (0: consider all classes) </td></tr>
-<tr>
-<td>bag </td><td>bag </td><td>unsigned short </td><td>1 </td><td>Number of bootstrap aggregations </td></tr>
-<tr>
-<td>bagsize </td><td>bagsize </td><td>int </td><td>100 </td><td>Percentage of features used from available training features for each bootstrap aggregation (one size for all classes, or a different size for each class respectively </td></tr>
-<tr>
-<td>comb </td><td>comb </td><td>unsigned short </td><td>0 </td><td>How to combine bootstrap aggregation classifiers (0: sum rule, 1: product rule, 2: max rule). Also used to aggregate classes with rc option. </td></tr>
-<tr>
-<td>cb </td><td>classbag </td><td>std::string </td><td></td><td>Output for each individual bootstrap aggregation </td></tr>
-<tr>
-<td>prob </td><td>prob </td><td>std::string </td><td></td><td>Probability image. </td></tr>
-<tr>
-<td>pim </td><td>priorimg </td><td>std::string </td><td></td><td>Prior probability image (multi-band img with band for each class </td></tr>
-<tr>
-<td>offset </td><td>offset </td><td>double </td><td>0 </td><td>Offset value for each spectral band input features: refl[band]=(DN[band]-offset[band])/scale[band] </td></tr>
-<tr>
-<td>scale </td><td>scale </td><td>double </td><td>0 </td><td>Scale value for each spectral band input features: refl=(DN[band]-offset[band])/scale<a href="use 0 if scale min and max in each band to -1.0 and 1.0">band</a> </td></tr>
-<tr>
-<td>svmt </td><td>svmtype </td><td>std::string </td><td>C_SVC </td><td>Type of SVM (C_SVC, nu_SVC,one_class, epsilon_SVR, nu_SVR) </td></tr>
-<tr>
-<td>kt </td><td>kerneltype </td><td>std::string </td><td>radial </td><td>Type of kernel function (linear,polynomial,radial,sigmoid) </td></tr>
-<tr>
-<td>kd </td><td>kd </td><td>unsigned short </td><td>3 </td><td>Degree in kernel function </td></tr>
-<tr>
-<td>c0 </td><td>coef0 </td><td>float </td><td>0 </td><td>Coef0 in kernel function </td></tr>
-<tr>
-<td>nu </td><td>nu </td><td>float </td><td>0.5 </td><td>The parameter nu of nu_SVC, one_class SVM, and nu_SVR </td></tr>
-<tr>
-<td>eloss </td><td>eloss </td><td>float </td><td>0.1 </td><td>The epsilon in loss function of epsilon_SVR </td></tr>
-<tr>
-<td>cache </td><td>cache </td><td>int </td><td>100 </td><td><a class="el" href="classCache.html">Cache</a> memory size in MB </td></tr>
-<tr>
-<td>etol </td><td>etol </td><td>float </td><td>0.001 </td><td>The tolerance of termination criterion </td></tr>
-<tr>
-<td>shrink </td><td>shrink </td><td>bool </td><td>false </td><td>Whether to use the shrinking heuristics </td></tr>
-<tr>
-<td>pe </td><td>probest </td><td>bool </td><td>true </td><td>Whether to train a SVC or SVR model for probability estimates </td></tr>
-<tr>
-<td>entropy </td><td>entropy </td><td>std::string </td><td></td><td>Entropy image (measure for uncertainty of classifier output </td></tr>
-<tr>
-<td>active </td><td>active </td><td>std::string </td><td></td><td>Ogr output for active training sample. </td></tr>
-<tr>
-<td>na </td><td>nactive </td><td>unsigned int </td><td>1 </td><td>Number of active training points </td></tr>
-<tr>
-<td>random </td><td>random </td><td>bool </td><td>true </td><td>Randomize training data for balancing and bagging </td></tr>
-</table>
-Usage: pksvm -t training [-i input -o output] [-cv value]</li>
-</ul>
-<h1>Examples </h1>
-<p>Some examples how to use pksvm can be found <a class="el" href="md_examples_pksvm.html#examples_pksvm">here</a> </p>
-</div></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pksvm_8cc_source.html b/doc/html/pksvm_8cc_source.html
deleted file mode 100644
index e56c9dd..0000000
--- a/doc/html/pksvm_8cc_source.html
+++ /dev/null
@@ -1,1410 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/apps/pksvm.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pksvm.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pksvm.cc: classify raster image using Support Vector Machine</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <stdlib.h></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <vector></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <map></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <algorithm></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "imageclasses/ImgReaderGdal.h"</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "imageclasses/ImgWriterGdal.h"</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "imageclasses/ImgReaderOgr.h"</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "imageclasses/ImgWriterOgr.h"</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include "base/PosValue.h"</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include "algorithms/ConfusionMatrix.h"</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="preprocessor">#include "algorithms/svm.h"</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> </div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="preprocessor">#ifdef HAVE_CONFIG_H</span></div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="preprocessor"></span><span class="preprocessor">#include <config.h></span></div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="preprocessor"></span><span class="comment">/******************************************************************************/</span></div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span> <span class="keyword">namespace </span>svm{</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>   <span class="keyword">enum</span> SVM_TYPE {C_SVC=0, nu_SVC=1,one_class=2, epsilon_SVR=3, nu_SVR=4};</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>   <span class="keyword">enum</span> KERNEL_TYPE {linear=0,polynomial=1,radial=2,sigmoid=3};</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span> }</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span> </div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span> <span class="preprocessor">#define Malloc(type,n) (type *)malloc((n)*sizeof(type))</span></div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span> <span class="keyword">using namespace </span>std;</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span> </div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span> {</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>   vector<double> priors;</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>   </div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>   <span class="comment">//--------------------------- command line options ------------------------------------</span></div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> input_opt(<span class="stringliteral">"i"</span>, <span class="stringliteral">"input"</span>, <span class="stringliteral">"input image"</span>); </div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> training_opt(<span class="stringliteral">"t"</span>, <span class="stringliteral">"training"</span>, <span class="stringliteral">"Training vector file. A single vector file contains all training features (must be set as: b0, b1, b2,...) for all classes (class numbers identified by label option). Use multiple training  [...]
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> tlayer_opt(<span class="stringliteral">"tln"</span>, <span class="stringliteral">"tln"</span>, <span class="stringliteral">"Training layer name(s)"</span>);</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> label_opt(<span class="stringliteral">"label"</span>, <span class="stringliteral">"label"</span>, <span class="stringliteral">"Attribute name for class label in training vector file."</span>,<span class="stringliteral">"label"</span>); </div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned int></a> balance_opt(<span class="stringliteral">"bal"</span>, <span class="stringliteral">"balance"</span>, <span class="stringliteral">"Balance the input data to this number of samples for each class"</span>, 0);</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> random_opt(<span class="stringliteral">"random"</span>, <span class="stringliteral">"random"</span>, <span class="stringliteral">"Randomize training data for balancing and bagging"</span>, <span class="keyword">true</span>, 2);</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> minSize_opt(<span class="stringliteral">"min"</span>, <span class="stringliteral">"min"</span>, <span class="stringliteral">"If number of training pixels is less then min, do not take this class into account (0: consider all classes)"</span>, 0);</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> band_opt(<span class="stringliteral">"b"</span>, <span class="stringliteral">"band"</span>, <span class="stringliteral">"Band index (starting from 0, either use band option or use start to end)"</span>);</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> bstart_opt(<span class="stringliteral">"sband"</span>, <span class="stringliteral">"startband"</span>, <span class="stringliteral">"Start band sequence number"</span>); </div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> bend_opt(<span class="stringliteral">"eband"</span>, <span class="stringliteral">"endband"</span>, <span class="stringliteral">"End band sequence number"</span>); </div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> offset_opt(<span class="stringliteral">"offset"</span>, <span class="stringliteral">"offset"</span>, <span class="stringliteral">"Offset value for each spectral band input features: refl[band]=(DN[band]-offset[band])/scale[band]"</span>, 0.0);</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> scale_opt(<span class="stringliteral">"scale"</span>, <span class="stringliteral">"scale"</span>, <span class="stringliteral">"Scale value for each spectral band input features: refl=(DN[band]-offset[band])/scale[band] (use 0 if scale min and max in each band to -1.0 and 1.0)"</span>, 0.0);</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>   <a class="code" href="classOptionpk.html">Optionpk<double></a> priors_opt(<span class="stringliteral">"prior"</span>, <span class="stringliteral">"prior"</span>, <span class="stringliteral">"Prior probabilities for each class (e.g., -p 0.3 -p 0.3 -p 0.2 ). Used for input only (ignored for cross validation)"</span>, 0.0); </div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> priorimg_opt(<span class="stringliteral">"pim"</span>, <span class="stringliteral">"priorimg"</span>, <span class="stringliteral">"Prior probability image (multi-band img with band for each class"</span>,<span class="stringliteral">""</span>,2); </div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> cv_opt(<span class="stringliteral">"cv"</span>, <span class="stringliteral">"cv"</span>, <span class="stringliteral">"N-fold cross validation mode"</span>,0);</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> cmformat_opt(<span class="stringliteral">"cmf"</span>,<span class="stringliteral">"cmf"</span>,<span class="stringliteral">"Format for confusion matrix (ascii or latex)"</span>,<span class="stringliteral">"ascii"</span>);</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> svm_type_opt(<span class="stringliteral">"svmt"</span>, <span class="stringliteral">"svmtype"</span>, <span class="stringliteral">"Type of SVM (C_SVC, nu_SVC,one_class, epsilon_SVR, nu_SVR)"</span>,<span class="stringliteral">"C_SVC"</span>);</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> kernel_type_opt(<span class="stringliteral">"kt"</span>, <span class="stringliteral">"kerneltype"</span>, <span class="stringliteral">"Type of kernel function (linear,polynomial,radial,sigmoid) "</span>,<span class="stringliteral">"radial"</span>);</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> kernel_degree_opt(<span class="stringliteral">"kd"</span>, <span class="stringliteral">"kd"</span>, <span class="stringliteral">"Degree in kernel function"</span>,3);</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>   <a class="code" href="classOptionpk.html">Optionpk<float></a> gamma_opt(<span class="stringliteral">"g"</span>, <span class="stringliteral">"gamma"</span>, <span class="stringliteral">"Gamma in kernel function"</span>,1.0);</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>   <a class="code" href="classOptionpk.html">Optionpk<float></a> coef0_opt(<span class="stringliteral">"c0"</span>, <span class="stringliteral">"coef0"</span>, <span class="stringliteral">"Coef0 in kernel function"</span>,0);</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>   <a class="code" href="classOptionpk.html">Optionpk<float></a> ccost_opt(<span class="stringliteral">"cc"</span>, <span class="stringliteral">"ccost"</span>, <span class="stringliteral">"The parameter C of C_SVC, epsilon_SVR, and nu_SVR"</span>,1000);</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>   <a class="code" href="classOptionpk.html">Optionpk<float></a> nu_opt(<span class="stringliteral">"nu"</span>, <span class="stringliteral">"nu"</span>, <span class="stringliteral">"The parameter nu of nu_SVC, one_class SVM, and nu_SVR"</span>,0.5);</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>   <a class="code" href="classOptionpk.html">Optionpk<float></a> epsilon_loss_opt(<span class="stringliteral">"eloss"</span>, <span class="stringliteral">"eloss"</span>, <span class="stringliteral">"The epsilon in loss function of epsilon_SVR"</span>,0.1);</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> cache_opt(<span class="stringliteral">"cache"</span>, <span class="stringliteral">"cache"</span>, <span class="stringliteral">"Cache memory size in MB"</span>,100);</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>   <a class="code" href="classOptionpk.html">Optionpk<float></a> epsilon_tol_opt(<span class="stringliteral">"etol"</span>, <span class="stringliteral">"etol"</span>, <span class="stringliteral">"The tolerance of termination criterion"</span>,0.001);</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> shrinking_opt(<span class="stringliteral">"shrink"</span>, <span class="stringliteral">"shrink"</span>, <span class="stringliteral">"Whether to use the shrinking heuristics"</span>,<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> prob_est_opt(<span class="stringliteral">"pe"</span>, <span class="stringliteral">"probest"</span>, <span class="stringliteral">"Whether to train a SVC or SVR model for probability estimates"</span>,<span class="keyword">true</span>,2);</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>   <span class="comment">// Optionpk<bool> weight_opt("wi", "wi", "Set the parameter C of class i to weight*C, for C_SVC",true);</span></div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> comb_opt(<span class="stringliteral">"comb"</span>, <span class="stringliteral">"comb"</span>, <span class="stringliteral">"How to combine bootstrap aggregation classifiers (0: sum rule, 1: product rule, 2: max rule). Also used to aggregate classes with rc option."</span>,0); </div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> bag_opt(<span class="stringliteral">"bag"</span>, <span class="stringliteral">"bag"</span>, <span class="stringliteral">"Number of bootstrap aggregations"</span>, 1);</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> bagSize_opt(<span class="stringliteral">"bagsize"</span>, <span class="stringliteral">"bagsize"</span>, <span class="stringliteral">"Percentage of features used from available training features for each bootstrap aggregation (one size for all classes, or a different size for each class respectively"</span>, 100);</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> classBag_opt(<span class="stringliteral">"cb"</span>, <span class="stringliteral">"classbag"</span>, <span class="stringliteral">"Output for each individual bootstrap aggregation"</span>);</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> mask_opt(<span class="stringliteral">"m"</span>, <span class="stringliteral">"mask"</span>, <span class="stringliteral">"Only classify within specified mask (vector or raster). For raster mask, set nodata values with the option msknodata."</span>);</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> msknodata_opt(<span class="stringliteral">"msknodata"</span>, <span class="stringliteral">"msknodata"</span>, <span class="stringliteral">"Mask value(s) not to consider for classification. Values will be taken over in classification image."</span>, 0);</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned short></a> nodata_opt(<span class="stringliteral">"nodata"</span>, <span class="stringliteral">"nodata"</span>, <span class="stringliteral">"Nodata value to put where image is masked as nodata"</span>, 0);</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> output_opt(<span class="stringliteral">"o"</span>, <span class="stringliteral">"output"</span>, <span class="stringliteral">"Output classification image"</span>); </div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a>  oformat_opt(<span class="stringliteral">"of"</span>, <span class="stringliteral">"oformat"</span>, <span class="stringliteral">"Output image format (see also gdal_translate)."</span>,<span class="stringliteral">"GTiff"</span>);</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> option_opt(<span class="stringliteral">"co"</span>, <span class="stringliteral">"co"</span>, <span class="stringliteral">"Creation option for output file. Multiple options can be specified."</span>);</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> colorTable_opt(<span class="stringliteral">"ct"</span>, <span class="stringliteral">"ct"</span>, <span class="stringliteral">"Color table in ASCII format having 5 columns: id R G B ALFA (0: transparent, 255: solid)"</span>); </div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> prob_opt(<span class="stringliteral">"prob"</span>, <span class="stringliteral">"prob"</span>, <span class="stringliteral">"Probability image."</span>); </div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> entropy_opt(<span class="stringliteral">"entropy"</span>, <span class="stringliteral">"entropy"</span>, <span class="stringliteral">"Entropy image (measure for uncertainty of classifier output"</span>,<span class="stringliteral">""</span>,2); </div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> active_opt(<span class="stringliteral">"active"</span>, <span class="stringliteral">"active"</span>, <span class="stringliteral">"Ogr output for active training sample."</span>,<span class="stringliteral">""</span>,2); </div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> ogrformat_opt(<span class="stringliteral">"f"</span>, <span class="stringliteral">"f"</span>, <span class="stringliteral">"Output ogr format for active training sample"</span>,<span class="stringliteral">"SQLite"</span>);</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>   <a class="code" href="classOptionpk.html">Optionpk<unsigned int></a> nactive_opt(<span class="stringliteral">"na"</span>, <span class="stringliteral">"nactive"</span>, <span class="stringliteral">"Number of active training points"</span>,1);</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>   <a class="code" href="classOptionpk.html">Optionpk<string></a> classname_opt(<span class="stringliteral">"c"</span>, <span class="stringliteral">"class"</span>, <span class="stringliteral">"List of class names."</span>); </div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> classvalue_opt(<span class="stringliteral">"r"</span>, <span class="stringliteral">"reclass"</span>, <span class="stringliteral">"List of class values (use same order as in class opt)."</span>); </div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>   <a class="code" href="classOptionpk.html">Optionpk<short></a> verbose_opt(<span class="stringliteral">"v"</span>, <span class="stringliteral">"verbose"</span>, <span class="stringliteral">"Verbose level"</span>,0,2);</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span> </div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>   oformat_opt.setHide(1);</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>   option_opt.setHide(1);</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>   band_opt.setHide(1);</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>   bstart_opt.setHide(1);</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>   bend_opt.setHide(1);</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>   balance_opt.setHide(1);</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>   minSize_opt.setHide(1);</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>   bag_opt.setHide(1);</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>   bagSize_opt.setHide(1);</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>   comb_opt.setHide(1);</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>   classBag_opt.setHide(1);</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>   prob_opt.setHide(1);</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>   priorimg_opt.setHide(1);</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>   offset_opt.setHide(1);</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>   scale_opt.setHide(1);</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>   svm_type_opt.setHide(1);</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>   kernel_type_opt.setHide(1);</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>   kernel_degree_opt.setHide(1);</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>   coef0_opt.setHide(1);</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>   nu_opt.setHide(1);</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>   epsilon_loss_opt.setHide(1);</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>   cache_opt.setHide(1);</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>   epsilon_tol_opt.setHide(1);</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>   shrinking_opt.setHide(1);</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>   prob_est_opt.setHide(1);</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>   entropy_opt.setHide(1);</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>   active_opt.setHide(1);</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>   nactive_opt.setHide(1);</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>   random_opt.setHide(1);</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span> </div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>   verbose_opt.setHide(2);</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span> </div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>   <span class="keywordtype">bool</span> doProcess;<span class="comment">//stop process when program was invoked with help option (-h --help)</span></div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>     doProcess=training_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>     input_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>     output_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>     cv_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>     cmformat_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>     tlayer_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>     classname_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>     classvalue_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>     oformat_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>     ogrformat_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>     option_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>     colorTable_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>     label_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>     priors_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>     gamma_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>     ccost_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>     mask_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>     msknodata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>     nodata_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>     <span class="comment">// Advanced options</span></div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>     band_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>     bstart_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>     bend_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>     balance_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>     minSize_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>     bag_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>     bagSize_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>     comb_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>     classBag_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>     prob_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>     priorimg_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>     offset_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>     scale_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>     svm_type_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>     kernel_type_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>     kernel_degree_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>     coef0_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>     nu_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>     epsilon_loss_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>     cache_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>     epsilon_tol_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>     shrinking_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>     prob_est_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>     entropy_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>     active_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>     nactive_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>     verbose_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>     random_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>   }</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> predefinedString){</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>     std::cout << predefinedString << std::endl;</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>     exit(0);</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>   }</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>   <span class="keywordflow">if</span>(!doProcess){</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>     cout << endl;</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>     cout << <span class="stringliteral">"Usage: pksvm -t training [-i input -o output] [-cv value]"</span> << endl;</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>     cout << endl;</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>     std::cout << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << std::endl;</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>     exit(0);<span class="comment">//help was invoked, stop processing</span></div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>   }</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span> </div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>   <span class="keywordflow">if</span>(entropy_opt[0]==<span class="stringliteral">""</span>)</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>     entropy_opt.clear();</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>   <span class="keywordflow">if</span>(active_opt[0]==<span class="stringliteral">""</span>)</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>     active_opt.clear();</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>   <span class="keywordflow">if</span>(priorimg_opt[0]==<span class="stringliteral">""</span>)</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>     priorimg_opt.clear();</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span> </div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span> </div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>   std::map<std::string, svm::SVM_TYPE> svmMap;</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span> </div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>   svmMap[<span class="stringliteral">"C_SVC"</span>]=svm::C_SVC;</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>   svmMap[<span class="stringliteral">"nu_SVC"</span>]=svm::nu_SVC;</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>   svmMap[<span class="stringliteral">"one_class"</span>]=svm::one_class;</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>   svmMap[<span class="stringliteral">"epsilon_SVR"</span>]=svm::epsilon_SVR;</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>   svmMap[<span class="stringliteral">"nu_SVR"</span>]=svm::nu_SVR;</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span> </div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>   std::map<std::string, svm::KERNEL_TYPE> kernelMap;</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span> </div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>   kernelMap[<span class="stringliteral">"linear"</span>]=svm::linear;</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>   kernelMap[<span class="stringliteral">"polynomial"</span>]=svm::polynomial;</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>   kernelMap[<span class="stringliteral">"radial"</span>]=svm::radial;</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>   kernelMap[<span class="stringliteral">"sigmoid;"</span>]=svm::sigmoid;</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span> </div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>   assert(training_opt.size());</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span> </div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>   <span class="keywordflow">if</span>(verbose_opt[0]>=1){</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>     <span class="keywordflow">if</span>(input_opt.size())</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>       std::cout << <span class="stringliteral">"input filename: "</span> << input_opt[0] << std::endl;</div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>     <span class="keywordflow">if</span>(mask_opt.size())</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>       std::cout << <span class="stringliteral">"mask filename: "</span> << mask_opt[0] << std::endl;</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>     std::cout << <span class="stringliteral">"training vector file: "</span> << std::endl;</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ifile=0;ifile<training_opt.size();++ifile)</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>       std::cout << training_opt[ifile] << std::endl;</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>     std::cout << <span class="stringliteral">"verbose: "</span> << verbose_opt[0] << std::endl;</div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>   }</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> nbag=(training_opt.size()>1)?training_opt.size():bag_opt[0];</div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>   <span class="keywordflow">if</span>(verbose_opt[0]>=1)</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>     std::cout << <span class="stringliteral">"number of bootstrap aggregations: "</span> << nbag << std::endl;</div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span> </div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>   <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a> extentReader;</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>   OGRLayer  *readLayer;</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span> </div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>   <span class="keywordtype">double</span> ulx=0;</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>   <span class="keywordtype">double</span> uly=0;</div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>   <span class="keywordtype">double</span> lrx=0;</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>   <span class="keywordtype">double</span> lry=0;</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span> </div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>   <span class="keywordtype">bool</span> maskIsVector=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>   <span class="keywordflow">if</span>(mask_opt.size()){</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>       extentReader.open(mask_opt[0]);</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>       maskIsVector=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>       readLayer = extentReader.getDataSource()->GetLayer(0);</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>       <span class="keywordflow">if</span>(!(extentReader.getExtent(ulx,uly,lrx,lry))){</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>     cerr << <span class="stringliteral">"Error: could not get extent from "</span> << mask_opt[0] << endl;</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>     exit(1);</div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>       }</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>     }</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>     <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorString){</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>       maskIsVector=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>     }</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>   }</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span> </div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>   <a class="code" href="classImgWriterOgr.html">ImgWriterOgr</a> activeWriter;</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>   <span class="keywordflow">if</span>(active_opt.size()){</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>     prob_est_opt[0]=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>     <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a> trainingReader(training_opt[0]);</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>     activeWriter.open(active_opt[0],ogrformat_opt[0]);</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>     activeWriter.createLayer(active_opt[0],trainingReader.getProjection(),wkbPoint,NULL);</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>     activeWriter.copyFields(trainingReader);</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>   }</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>   vector<PosValue> activePoints(nactive_opt[0]);</div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iactive=0;iactive<activePoints.size();++iactive){</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>     activePoints[iactive].value=1.0;</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>     activePoints[iactive].posx=0.0;</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>     activePoints[iactive].posy=0.0;</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>   }</div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>   </div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> totalSamples=0;</div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nactive=0;</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>   vector<struct svm_model*> svm(nbag);</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>   vector<struct svm_parameter> param(nbag);</div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span> </div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>   <span class="keywordtype">short</span> nclass=0;</div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>   <span class="keywordtype">int</span> nband=0;</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>   <span class="keywordtype">int</span> startBand=2;<span class="comment">//first two bands represent X and Y pos</span></div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span> </div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>   <span class="comment">//normalize priors from command line</span></div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>   <span class="keywordflow">if</span>(priors_opt.size()>1){<span class="comment">//priors from argument list</span></div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>     priors.resize(priors_opt.size());</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>     <span class="keywordtype">double</span> normPrior=0;</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>     <span class="keywordflow">for</span>(<span class="keywordtype">short</span> iclass=0;iclass<priors_opt.size();++iclass){</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>       priors[iclass]=priors_opt[iclass];</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>       normPrior+=priors[iclass];</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>     }</div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>     <span class="comment">//normalize</span></div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>     <span class="keywordflow">for</span>(<span class="keywordtype">short</span> iclass=0;iclass<priors_opt.size();++iclass)</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>       priors[iclass]/=normPrior;</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>   }</div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span> </div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>   <span class="comment">//convert start and end band options to vector of band indexes</span></div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>     <span class="keywordflow">if</span>(bstart_opt.size()){</div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>       <span class="keywordflow">if</span>(bend_opt.size()!=bstart_opt.size()){</div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>     <span class="keywordtype">string</span> errorstring=<span class="stringliteral">"Error: options for start and end band indexes must be provided as pairs, missing end band"</span>;</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>     <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>       }</div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>       band_opt.clear();</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ipair=0;ipair<bstart_opt.size();++ipair){</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>     <span class="keywordflow">if</span>(bend_opt[ipair]<=bstart_opt[ipair]){</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>       <span class="keywordtype">string</span> errorstring=<span class="stringliteral">"Error: index for end band must be smaller then start band"</span>;</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>       <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>     }</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=bstart_opt[ipair];iband<=bend_opt[ipair];++iband)</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>       band_opt.push_back(iband);</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>       }</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>     }</div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>   }</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> error){</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>     cerr << error << std::endl;</div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>     exit(1);</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>   }</div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>   <span class="comment">//sort bands</span></div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>   <span class="keywordflow">if</span>(band_opt.size())</div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>     std::sort(band_opt.begin(),band_opt.end());</div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span> </div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>   map<string,short> classValueMap;</div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span>   vector<std::string> nameVector;</div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>   <span class="keywordflow">if</span>(classname_opt.size()){</div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>     assert(classname_opt.size()==classvalue_opt.size());</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<classname_opt.size();++iclass)</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span>       classValueMap[classname_opt[iclass]]=classvalue_opt[iclass];</div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>   }</div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span> </div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>   <span class="comment">//----------------------------------- Training -------------------------------</span></div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>   <a class="code" href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a> cm;</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>   vector< vector<double> > offset(nbag);</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>   vector< vector<double> > scale(nbag);</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span>   map<string,Vector2d<float> > trainingMap;</div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>   vector< Vector2d<float> > trainingPixels;<span class="comment">//[class][sample][band]</span></div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>   vector<string> fields;</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span> </div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>   vector<struct svm_problem> prob(nbag);</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span>   vector<struct svm_node *> x_space(nbag);</div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span> </div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ibag=0;ibag<nbag;++ibag){</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span>     <span class="comment">//organize training data</span></div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>     <span class="keywordflow">if</span>(ibag<training_opt.size()){<span class="comment">//if bag contains new training pixels</span></div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span>       trainingMap.clear();</div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span>       trainingPixels.clear();</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>       <span class="keywordflow">if</span>(verbose_opt[0]>=1)</div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span>         std::cout << <span class="stringliteral">"reading imageVector file "</span> << training_opt[0] << std::endl;</div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span>     <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a> trainingReaderBag(training_opt[ibag]);</div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span>         <span class="keywordflow">if</span>(band_opt.size())</div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span>       <span class="comment">//todo: when tlayer_opt is provided, readDataImageOgr does not read any layer</span></div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span>           totalSamples=trainingReaderBag.readDataImageOgr(trainingMap,fields,band_opt,label_opt[0],tlayer_opt,verbose_opt[0]);</div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span>           totalSamples=trainingReaderBag.readDataImageOgr(trainingMap,fields,0,0,label_opt[0],tlayer_opt,verbose_opt[0]);</div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>         <span class="keywordflow">if</span>(trainingMap.size()<2){</div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>           <span class="keywordtype">string</span> errorstring=<span class="stringliteral">"Error: could not read at least two classes from training file, did you provide class labels in training sample (see option label)?"</span>;</div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span>           <span class="keywordflow">throw</span>(errorstring);</div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span>         }</div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span>     trainingReaderBag.close();</div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span>       }</div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> error){</div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span>         cerr << error << std::endl;</div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span>         exit(1);</div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span>       }</div>
-<div class="line"><a name="l00445"></a><span class="lineno">  445</span>       <span class="keywordflow">catch</span>(std::exception& e){</div>
-<div class="line"><a name="l00446"></a><span class="lineno">  446</span>         std::cerr << <span class="stringliteral">"Error: "</span>;</div>
-<div class="line"><a name="l00447"></a><span class="lineno">  447</span>         std::cerr << e.what() << std::endl;</div>
-<div class="line"><a name="l00448"></a><span class="lineno">  448</span>         std::cerr << CPLGetLastErrorMsg() << std::endl; </div>
-<div class="line"><a name="l00449"></a><span class="lineno">  449</span>         exit(1);</div>
-<div class="line"><a name="l00450"></a><span class="lineno">  450</span>       }</div>
-<div class="line"><a name="l00451"></a><span class="lineno">  451</span>       <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l00452"></a><span class="lineno">  452</span>         cerr << <span class="stringliteral">"error caught"</span> << std::endl;</div>
-<div class="line"><a name="l00453"></a><span class="lineno">  453</span>         exit(1);</div>
-<div class="line"><a name="l00454"></a><span class="lineno">  454</span>       }</div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span> </div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</span>       <span class="comment">//convert map to vector</span></div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span>       <span class="comment">// short iclass=0;</span></div>
-<div class="line"><a name="l00458"></a><span class="lineno">  458</span>       <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00459"></a><span class="lineno">  459</span>         std::cout << <span class="stringliteral">"training pixels: "</span> << std::endl;</div>
-<div class="line"><a name="l00460"></a><span class="lineno">  460</span>       map<string,Vector2d<float> >::iterator mapit=trainingMap.begin();</div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span>       <span class="keywordflow">while</span>(mapit!=trainingMap.end()){</div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span>         <span class="comment">//delete small classes</span></div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span>         <span class="keywordflow">if</span>((mapit->second).size()<minSize_opt[0]){</div>
-<div class="line"><a name="l00464"></a><span class="lineno">  464</span>           trainingMap.erase(mapit);</div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span>           <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>         }</div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span>         trainingPixels.push_back(mapit->second);</div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span>         <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span>           std::cout << mapit->first << <span class="stringliteral">": "</span> << (mapit->second).size() << <span class="stringliteral">" samples"</span> << std::endl;</div>
-<div class="line"><a name="l00470"></a><span class="lineno">  470</span>         ++mapit;</div>
-<div class="line"><a name="l00471"></a><span class="lineno">  471</span>       }</div>
-<div class="line"><a name="l00472"></a><span class="lineno">  472</span>       <span class="keywordflow">if</span>(!ibag){</div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span>         nclass=trainingPixels.size();</div>
-<div class="line"><a name="l00474"></a><span class="lineno">  474</span>     <span class="keywordflow">if</span>(classname_opt.size())</div>
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span>       assert(nclass==classname_opt.size());</div>
-<div class="line"><a name="l00476"></a><span class="lineno">  476</span>         nband=trainingPixels[0][0].size()-2;<span class="comment">//X and Y//trainingPixels[0][0].size();</span></div>
-<div class="line"><a name="l00477"></a><span class="lineno">  477</span>       }</div>
-<div class="line"><a name="l00478"></a><span class="lineno">  478</span>       <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00479"></a><span class="lineno">  479</span>         assert(nclass==trainingPixels.size());</div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span>         assert(nband==trainingPixels[0][0].size()-2);</div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span>       }</div>
-<div class="line"><a name="l00482"></a><span class="lineno">  482</span> </div>
-<div class="line"><a name="l00483"></a><span class="lineno">  483</span>       <span class="comment">//do not remove outliers here: could easily be obtained through ogr2ogr -where 'B2<110' output.shp input.shp</span></div>
-<div class="line"><a name="l00484"></a><span class="lineno">  484</span>       <span class="comment">//balance training data</span></div>
-<div class="line"><a name="l00485"></a><span class="lineno">  485</span>       <span class="keywordflow">if</span>(balance_opt[0]>0){</div>
-<div class="line"><a name="l00486"></a><span class="lineno">  486</span>         <span class="keywordflow">while</span>(balance_opt.size()<nclass)</div>
-<div class="line"><a name="l00487"></a><span class="lineno">  487</span>           balance_opt.push_back(balance_opt.back());</div>
-<div class="line"><a name="l00488"></a><span class="lineno">  488</span>         <span class="keywordflow">if</span>(random_opt[0])</div>
-<div class="line"><a name="l00489"></a><span class="lineno">  489</span>           srand(time(NULL));</div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span>         totalSamples=0;</div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span>         <span class="keywordflow">for</span>(<span class="keywordtype">short</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l00492"></a><span class="lineno">  492</span>           <span class="keywordflow">if</span>(trainingPixels[iclass].size()>balance_opt[iclass]){</div>
-<div class="line"><a name="l00493"></a><span class="lineno">  493</span>             <span class="keywordflow">while</span>(trainingPixels[iclass].size()>balance_opt[iclass]){</div>
-<div class="line"><a name="l00494"></a><span class="lineno">  494</span>               <span class="keywordtype">int</span> index=rand()%trainingPixels[iclass].size();</div>
-<div class="line"><a name="l00495"></a><span class="lineno">  495</span>               trainingPixels[iclass].erase(trainingPixels[iclass].begin()+index);</div>
-<div class="line"><a name="l00496"></a><span class="lineno">  496</span>             }</div>
-<div class="line"><a name="l00497"></a><span class="lineno">  497</span>           }</div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span>           <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span>             <span class="keywordtype">int</span> oldsize=trainingPixels[iclass].size();</div>
-<div class="line"><a name="l00500"></a><span class="lineno">  500</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=trainingPixels[iclass].size();isample<balance_opt[iclass];++isample){</div>
-<div class="line"><a name="l00501"></a><span class="lineno">  501</span>               <span class="keywordtype">int</span> index = rand()%oldsize;</div>
-<div class="line"><a name="l00502"></a><span class="lineno">  502</span>               trainingPixels[iclass].push_back(trainingPixels[iclass][index]);</div>
-<div class="line"><a name="l00503"></a><span class="lineno">  503</span>             }</div>
-<div class="line"><a name="l00504"></a><span class="lineno">  504</span>           }</div>
-<div class="line"><a name="l00505"></a><span class="lineno">  505</span>           totalSamples+=trainingPixels[iclass].size();</div>
-<div class="line"><a name="l00506"></a><span class="lineno">  506</span>         }</div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span>       }</div>
-<div class="line"><a name="l00508"></a><span class="lineno">  508</span>     </div>
-<div class="line"><a name="l00509"></a><span class="lineno">  509</span>       <span class="comment">//set scale and offset</span></div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span>       offset[ibag].resize(nband);</div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span>       scale[ibag].resize(nband);</div>
-<div class="line"><a name="l00512"></a><span class="lineno">  512</span>       <span class="keywordflow">if</span>(offset_opt.size()>1)</div>
-<div class="line"><a name="l00513"></a><span class="lineno">  513</span>         assert(offset_opt.size()==nband);</div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span>       <span class="keywordflow">if</span>(scale_opt.size()>1)</div>
-<div class="line"><a name="l00515"></a><span class="lineno">  515</span>         assert(scale_opt.size()==nband);</div>
-<div class="line"><a name="l00516"></a><span class="lineno">  516</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l00517"></a><span class="lineno">  517</span>         <span class="keywordflow">if</span>(verbose_opt[0]>=1)</div>
-<div class="line"><a name="l00518"></a><span class="lineno">  518</span>           std::cout << <span class="stringliteral">"scaling for band"</span> << iband << std::endl;</div>
-<div class="line"><a name="l00519"></a><span class="lineno">  519</span>         offset[ibag][iband]=(offset_opt.size()==1)?offset_opt[0]:offset_opt[iband];</div>
-<div class="line"><a name="l00520"></a><span class="lineno">  520</span>         scale[ibag][iband]=(scale_opt.size()==1)?scale_opt[0]:scale_opt[iband];</div>
-<div class="line"><a name="l00521"></a><span class="lineno">  521</span>         <span class="comment">//search for min and maximum</span></div>
-<div class="line"><a name="l00522"></a><span class="lineno">  522</span>         <span class="keywordflow">if</span>(scale[ibag][iband]<=0){</div>
-<div class="line"><a name="l00523"></a><span class="lineno">  523</span>           <span class="keywordtype">float</span> theMin=trainingPixels[0][0][iband+startBand];</div>
-<div class="line"><a name="l00524"></a><span class="lineno">  524</span>           <span class="keywordtype">float</span> theMax=trainingPixels[0][0][iband+startBand];</div>
-<div class="line"><a name="l00525"></a><span class="lineno">  525</span>           <span class="keywordflow">for</span>(<span class="keywordtype">short</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l00526"></a><span class="lineno">  526</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<trainingPixels[iclass].size();++isample){</div>
-<div class="line"><a name="l00527"></a><span class="lineno">  527</span>               <span class="keywordflow">if</span>(theMin>trainingPixels[iclass][isample][iband+startBand])</div>
-<div class="line"><a name="l00528"></a><span class="lineno">  528</span>                 theMin=trainingPixels[iclass][isample][iband+startBand];</div>
-<div class="line"><a name="l00529"></a><span class="lineno">  529</span>               <span class="keywordflow">if</span>(theMax<trainingPixels[iclass][isample][iband+startBand])</div>
-<div class="line"><a name="l00530"></a><span class="lineno">  530</span>                 theMax=trainingPixels[iclass][isample][iband+startBand];</div>
-<div class="line"><a name="l00531"></a><span class="lineno">  531</span>             }</div>
-<div class="line"><a name="l00532"></a><span class="lineno">  532</span>           }</div>
-<div class="line"><a name="l00533"></a><span class="lineno">  533</span>           offset[ibag][iband]=theMin+(theMax-theMin)/2.0;</div>
-<div class="line"><a name="l00534"></a><span class="lineno">  534</span>           scale[ibag][iband]=(theMax-theMin)/2.0;</div>
-<div class="line"><a name="l00535"></a><span class="lineno">  535</span>           <span class="keywordflow">if</span>(verbose_opt[0]>=1){</div>
-<div class="line"><a name="l00536"></a><span class="lineno">  536</span>             std::cout << <span class="stringliteral">"Extreme image values for band "</span> << iband << <span class="stringliteral">": ["</span> << theMin << <span class="stringliteral">","</span> << theMax << <span class="stringliteral">"]"</span> << std::endl;</div>
-<div class="line"><a name="l00537"></a><span class="lineno">  537</span>             std::cout << <span class="stringliteral">"Using offset, scale: "</span> << offset[ibag][iband] << <span class="stringliteral">", "</span> << scale[ibag][iband] << std::endl;</div>
-<div class="line"><a name="l00538"></a><span class="lineno">  538</span>             std::cout << <span class="stringliteral">"scaled values for band "</span> << iband << <span class="stringliteral">": ["</span> << (theMin-offset[ibag][iband])/scale[ibag][iband] << <span class="stringliteral">","</span> << (theMax-offset[ibag][iband])/scale[ibag][iband] << <span class="stringliteral">"]"</span> <&lt [...]
-<div class="line"><a name="l00539"></a><span class="lineno">  539</span>           }</div>
-<div class="line"><a name="l00540"></a><span class="lineno">  540</span>         }</div>
-<div class="line"><a name="l00541"></a><span class="lineno">  541</span>       }</div>
-<div class="line"><a name="l00542"></a><span class="lineno">  542</span>     }</div>
-<div class="line"><a name="l00543"></a><span class="lineno">  543</span>     <span class="keywordflow">else</span>{<span class="comment">//use same offset and scale </span></div>
-<div class="line"><a name="l00544"></a><span class="lineno">  544</span>       offset[ibag].resize(nband);</div>
-<div class="line"><a name="l00545"></a><span class="lineno">  545</span>       scale[ibag].resize(nband);</div>
-<div class="line"><a name="l00546"></a><span class="lineno">  546</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l00547"></a><span class="lineno">  547</span>         offset[ibag][iband]=offset[0][iband];</div>
-<div class="line"><a name="l00548"></a><span class="lineno">  548</span>         scale[ibag][iband]=scale[0][iband];</div>
-<div class="line"><a name="l00549"></a><span class="lineno">  549</span>       }</div>
-<div class="line"><a name="l00550"></a><span class="lineno">  550</span>     }</div>
-<div class="line"><a name="l00551"></a><span class="lineno">  551</span>       </div>
-<div class="line"><a name="l00552"></a><span class="lineno">  552</span>     <span class="keywordflow">if</span>(!ibag){</div>
-<div class="line"><a name="l00553"></a><span class="lineno">  553</span>       <span class="keywordflow">if</span>(priors_opt.size()==1){<span class="comment">//default: equal priors for each class</span></div>
-<div class="line"><a name="l00554"></a><span class="lineno">  554</span>         priors.resize(nclass);</div>
-<div class="line"><a name="l00555"></a><span class="lineno">  555</span>         <span class="keywordflow">for</span>(<span class="keywordtype">short</span> iclass=0;iclass<nclass;++iclass)</div>
-<div class="line"><a name="l00556"></a><span class="lineno">  556</span>           priors[iclass]=1.0/nclass;</div>
-<div class="line"><a name="l00557"></a><span class="lineno">  557</span>       }</div>
-<div class="line"><a name="l00558"></a><span class="lineno">  558</span>       assert(priors_opt.size()==1||priors_opt.size()==nclass);</div>
-<div class="line"><a name="l00559"></a><span class="lineno">  559</span> </div>
-<div class="line"><a name="l00560"></a><span class="lineno">  560</span>       <span class="comment">//set bagsize for each class if not done already via command line</span></div>
-<div class="line"><a name="l00561"></a><span class="lineno">  561</span>       <span class="keywordflow">while</span>(bagSize_opt.size()<nclass)</div>
-<div class="line"><a name="l00562"></a><span class="lineno">  562</span>         bagSize_opt.push_back(bagSize_opt.back());</div>
-<div class="line"><a name="l00563"></a><span class="lineno">  563</span> </div>
-<div class="line"><a name="l00564"></a><span class="lineno">  564</span>       <span class="keywordflow">if</span>(verbose_opt[0]>=1){</div>
-<div class="line"><a name="l00565"></a><span class="lineno">  565</span>         std::cout << <span class="stringliteral">"number of bands: "</span> << nband << std::endl;</div>
-<div class="line"><a name="l00566"></a><span class="lineno">  566</span>         std::cout << <span class="stringliteral">"number of classes: "</span> << nclass << std::endl;</div>
-<div class="line"><a name="l00567"></a><span class="lineno">  567</span>     <span class="keywordflow">if</span>(priorimg_opt.empty()){</div>
-<div class="line"><a name="l00568"></a><span class="lineno">  568</span>       std::cout << <span class="stringliteral">"priors:"</span>;</div>
-<div class="line"><a name="l00569"></a><span class="lineno">  569</span>       <span class="keywordflow">for</span>(<span class="keywordtype">short</span> iclass=0;iclass<nclass;++iclass)</div>
-<div class="line"><a name="l00570"></a><span class="lineno">  570</span>         std::cout << <span class="stringliteral">" "</span> << priors[iclass];</div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span>       std::cout << std::endl;</div>
-<div class="line"><a name="l00572"></a><span class="lineno">  572</span>     }</div>
-<div class="line"><a name="l00573"></a><span class="lineno">  573</span>       }</div>
-<div class="line"><a name="l00574"></a><span class="lineno">  574</span>       map<string,Vector2d<float> >::iterator mapit=trainingMap.begin();</div>
-<div class="line"><a name="l00575"></a><span class="lineno">  575</span>       <span class="keywordtype">bool</span> doSort=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00576"></a><span class="lineno">  576</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00577"></a><span class="lineno">  577</span>     <span class="keywordflow">while</span>(mapit!=trainingMap.end()){</div>
-<div class="line"><a name="l00578"></a><span class="lineno">  578</span>       nameVector.push_back(mapit->first);</div>
-<div class="line"><a name="l00579"></a><span class="lineno">  579</span>       <span class="keywordflow">if</span>(classValueMap.size()){</div>
-<div class="line"><a name="l00580"></a><span class="lineno">  580</span>         <span class="comment">//check if name in training is covered by classname_opt (values can not be 0)</span></div>
-<div class="line"><a name="l00581"></a><span class="lineno">  581</span>         <span class="keywordflow">if</span>(classValueMap[mapit->first]>0){</div>
-<div class="line"><a name="l00582"></a><span class="lineno">  582</span>           <span class="keywordflow">if</span>(cm.getClassIndex(type2string<short>(classValueMap[mapit->first]))<0){</div>
-<div class="line"><a name="l00583"></a><span class="lineno">  583</span>         cm.pushBackClassName(type2string<short>(classValueMap[mapit->first]),doSort);</div>
-<div class="line"><a name="l00584"></a><span class="lineno">  584</span>           }</div>
-<div class="line"><a name="l00585"></a><span class="lineno">  585</span>         }</div>
-<div class="line"><a name="l00586"></a><span class="lineno">  586</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00587"></a><span class="lineno">  587</span>           std::cerr << <span class="stringliteral">"Error: names in classname option are not complete, please check names in training vector and make sure classvalue is > 0"</span> << std::endl;</div>
-<div class="line"><a name="l00588"></a><span class="lineno">  588</span>           exit(1);</div>
-<div class="line"><a name="l00589"></a><span class="lineno">  589</span>         }</div>
-<div class="line"><a name="l00590"></a><span class="lineno">  590</span>       }</div>
-<div class="line"><a name="l00591"></a><span class="lineno">  591</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00592"></a><span class="lineno">  592</span>         cm.pushBackClassName(mapit->first,doSort);</div>
-<div class="line"><a name="l00593"></a><span class="lineno">  593</span>       ++mapit;</div>
-<div class="line"><a name="l00594"></a><span class="lineno">  594</span>     }</div>
-<div class="line"><a name="l00595"></a><span class="lineno">  595</span>       }</div>
-<div class="line"><a name="l00596"></a><span class="lineno">  596</span>       <span class="keywordflow">catch</span>(<a class="code" href="classBadConversion.html">BadConversion</a> conversionString){</div>
-<div class="line"><a name="l00597"></a><span class="lineno">  597</span>     std::cerr << <span class="stringliteral">"Error: did you provide class pairs names (-c) and integer values (-r) for each class in training vector?"</span> << std::endl;</div>
-<div class="line"><a name="l00598"></a><span class="lineno">  598</span>     exit(1);</div>
-<div class="line"><a name="l00599"></a><span class="lineno">  599</span>       }</div>
-<div class="line"><a name="l00600"></a><span class="lineno">  600</span>       <span class="keywordflow">if</span>(classname_opt.empty()){</div>
-<div class="line"><a name="l00601"></a><span class="lineno">  601</span>         <span class="comment">//std::cerr << "Warning: no class name and value pair provided for all " << nclass << " classes, using string2type<int> instead!" << std::endl;</span></div>
-<div class="line"><a name="l00602"></a><span class="lineno">  602</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l00603"></a><span class="lineno">  603</span>           <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00604"></a><span class="lineno">  604</span>             std::cout << iclass << <span class="stringliteral">" "</span> << cm.getClass(iclass) << <span class="stringliteral">" -> "</span> << string2type<short>(cm.getClass(iclass)) << std::endl;</div>
-<div class="line"><a name="l00605"></a><span class="lineno">  605</span>           classValueMap[cm.getClass(iclass)]=string2type<short>(cm.getClass(iclass));</div>
-<div class="line"><a name="l00606"></a><span class="lineno">  606</span>         }</div>
-<div class="line"><a name="l00607"></a><span class="lineno">  607</span>       }</div>
-<div class="line"><a name="l00608"></a><span class="lineno">  608</span> </div>
-<div class="line"><a name="l00609"></a><span class="lineno">  609</span>       <span class="comment">// if(priors_opt.size()==nameVector.size()){</span></div>
-<div class="line"><a name="l00610"></a><span class="lineno">  610</span>       <span class="comment">//    std::cerr << "Warning: please check if priors are provided in correct order!!!" << std::endl;</span></div>
-<div class="line"><a name="l00611"></a><span class="lineno">  611</span>       <span class="comment">//    for(int iclass=0;iclass<nameVector.size();++iclass)</span></div>
-<div class="line"><a name="l00612"></a><span class="lineno">  612</span>       <span class="comment">//      std::cerr << nameVector[iclass] << " " << priors_opt[iclass] << std::endl;</span></div>
-<div class="line"><a name="l00613"></a><span class="lineno">  613</span>       <span class="comment">// }</span></div>
-<div class="line"><a name="l00614"></a><span class="lineno">  614</span>     }<span class="comment">//if(!ibag)</span></div>
-<div class="line"><a name="l00615"></a><span class="lineno">  615</span> </div>
-<div class="line"><a name="l00616"></a><span class="lineno">  616</span>     <span class="comment">//Calculate features of training set</span></div>
-<div class="line"><a name="l00617"></a><span class="lineno">  617</span>     vector< Vector2d<float> > trainingFeatures(nclass);</div>
-<div class="line"><a name="l00618"></a><span class="lineno">  618</span>     <span class="keywordflow">for</span>(<span class="keywordtype">short</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l00619"></a><span class="lineno">  619</span>       <span class="keywordtype">int</span> nctraining=0;</div>
-<div class="line"><a name="l00620"></a><span class="lineno">  620</span>       <span class="keywordflow">if</span>(verbose_opt[0]>=1)</div>
-<div class="line"><a name="l00621"></a><span class="lineno">  621</span>         std::cout << <span class="stringliteral">"calculating features for class "</span> << iclass << std::endl;</div>
-<div class="line"><a name="l00622"></a><span class="lineno">  622</span>       <span class="keywordflow">if</span>(random_opt[0])</div>
-<div class="line"><a name="l00623"></a><span class="lineno">  623</span>         srand(time(NULL));</div>
-<div class="line"><a name="l00624"></a><span class="lineno">  624</span>       nctraining=(bagSize_opt[iclass]<100)? trainingPixels[iclass].size()/100.0*bagSize_opt[iclass] : trainingPixels[iclass].size();<span class="comment">//bagSize_opt[iclass] given in % of training size</span></div>
-<div class="line"><a name="l00625"></a><span class="lineno">  625</span>       <span class="keywordflow">if</span>(nctraining<=0)</div>
-<div class="line"><a name="l00626"></a><span class="lineno">  626</span>         nctraining=1;</div>
-<div class="line"><a name="l00627"></a><span class="lineno">  627</span>       assert(nctraining<=trainingPixels[iclass].size());</div>
-<div class="line"><a name="l00628"></a><span class="lineno">  628</span>       <span class="keywordtype">int</span> index=0;</div>
-<div class="line"><a name="l00629"></a><span class="lineno">  629</span>       <span class="keywordflow">if</span>(bagSize_opt[iclass]<100)</div>
-<div class="line"><a name="l00630"></a><span class="lineno">  630</span>         random_shuffle(trainingPixels[iclass].begin(),trainingPixels[iclass].end());</div>
-<div class="line"><a name="l00631"></a><span class="lineno">  631</span>       <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00632"></a><span class="lineno">  632</span>     std::cout << <span class="stringliteral">"nctraining (class "</span> << iclass << <span class="stringliteral">"): "</span> << nctraining << std::endl;</div>
-<div class="line"><a name="l00633"></a><span class="lineno">  633</span>       trainingFeatures[iclass].resize(nctraining);</div>
-<div class="line"><a name="l00634"></a><span class="lineno">  634</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<nctraining;++isample){</div>
-<div class="line"><a name="l00635"></a><span class="lineno">  635</span>         <span class="comment">//scale pixel values according to scale and offset!!!</span></div>
-<div class="line"><a name="l00636"></a><span class="lineno">  636</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l00637"></a><span class="lineno">  637</span>           <span class="keywordtype">float</span> value=trainingPixels[iclass][isample][iband+startBand];</div>
-<div class="line"><a name="l00638"></a><span class="lineno">  638</span>           trainingFeatures[iclass][isample].push_back((value-offset[ibag][iband])/scale[ibag][iband]);</div>
-<div class="line"><a name="l00639"></a><span class="lineno">  639</span>         }</div>
-<div class="line"><a name="l00640"></a><span class="lineno">  640</span>       }</div>
-<div class="line"><a name="l00641"></a><span class="lineno">  641</span>       assert(trainingFeatures[iclass].size()==nctraining);</div>
-<div class="line"><a name="l00642"></a><span class="lineno">  642</span>     }</div>
-<div class="line"><a name="l00643"></a><span class="lineno">  643</span>     </div>
-<div class="line"><a name="l00644"></a><span class="lineno">  644</span>     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nFeatures=trainingFeatures[0][0].size();</div>
-<div class="line"><a name="l00645"></a><span class="lineno">  645</span>     <span class="keywordflow">if</span>(verbose_opt[0]>=1)</div>
-<div class="line"><a name="l00646"></a><span class="lineno">  646</span>       std::cout << <span class="stringliteral">"number of features: "</span> << nFeatures << std::endl;</div>
-<div class="line"><a name="l00647"></a><span class="lineno">  647</span>     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ntraining=0;</div>
-<div class="line"><a name="l00648"></a><span class="lineno">  648</span>     <span class="keywordflow">for</span>(<span class="keywordtype">short</span> iclass=0;iclass<nclass;++iclass)</div>
-<div class="line"><a name="l00649"></a><span class="lineno">  649</span>       ntraining+=trainingFeatures[iclass].size();</div>
-<div class="line"><a name="l00650"></a><span class="lineno">  650</span>     <span class="keywordflow">if</span>(verbose_opt[0]>=1)</div>
-<div class="line"><a name="l00651"></a><span class="lineno">  651</span>       std::cout << <span class="stringliteral">"training size over all classes: "</span> << ntraining << std::endl;</div>
-<div class="line"><a name="l00652"></a><span class="lineno">  652</span> </div>
-<div class="line"><a name="l00653"></a><span class="lineno">  653</span>     prob[ibag].l=ntraining;</div>
-<div class="line"><a name="l00654"></a><span class="lineno">  654</span>     prob[ibag].y = Malloc(<span class="keywordtype">double</span>,prob[ibag].l);</div>
-<div class="line"><a name="l00655"></a><span class="lineno">  655</span>     prob[ibag].x = Malloc(<span class="keyword">struct</span> <a class="code" href="structsvm__node.html">svm_node</a> *,prob[ibag].l);</div>
-<div class="line"><a name="l00656"></a><span class="lineno">  656</span>     x_space[ibag] = Malloc(<span class="keyword">struct</span> <a class="code" href="structsvm__node.html">svm_node</a>,(nFeatures+1)*ntraining);</div>
-<div class="line"><a name="l00657"></a><span class="lineno">  657</span>     <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> spaceIndex=0;</div>
-<div class="line"><a name="l00658"></a><span class="lineno">  658</span>     <span class="keywordtype">int</span> lIndex=0;</div>
-<div class="line"><a name="l00659"></a><span class="lineno">  659</span>     <span class="keywordflow">for</span>(<span class="keywordtype">short</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l00660"></a><span class="lineno">  660</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> isample=0;isample<trainingFeatures[iclass].size();++isample){</div>
-<div class="line"><a name="l00661"></a><span class="lineno">  661</span>         prob[ibag].x[lIndex]=&(x_space[ibag][spaceIndex]);</div>
-<div class="line"><a name="l00662"></a><span class="lineno">  662</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ifeature=0;ifeature<nFeatures;++ifeature){</div>
-<div class="line"><a name="l00663"></a><span class="lineno">  663</span>           x_space[ibag][spaceIndex].index=ifeature+1;</div>
-<div class="line"><a name="l00664"></a><span class="lineno">  664</span>           x_space[ibag][spaceIndex].value=trainingFeatures[iclass][isample][ifeature];</div>
-<div class="line"><a name="l00665"></a><span class="lineno">  665</span>           ++spaceIndex;</div>
-<div class="line"><a name="l00666"></a><span class="lineno">  666</span>         }</div>
-<div class="line"><a name="l00667"></a><span class="lineno">  667</span>         x_space[ibag][spaceIndex++].index=-1;</div>
-<div class="line"><a name="l00668"></a><span class="lineno">  668</span>         prob[ibag].y[lIndex]=iclass;</div>
-<div class="line"><a name="l00669"></a><span class="lineno">  669</span>         ++lIndex;</div>
-<div class="line"><a name="l00670"></a><span class="lineno">  670</span>       }</div>
-<div class="line"><a name="l00671"></a><span class="lineno">  671</span>     }</div>
-<div class="line"><a name="l00672"></a><span class="lineno">  672</span>     assert(lIndex==prob[ibag].l);</div>
-<div class="line"><a name="l00673"></a><span class="lineno">  673</span> </div>
-<div class="line"><a name="l00674"></a><span class="lineno">  674</span>     <span class="comment">//set SVM parameters through command line options</span></div>
-<div class="line"><a name="l00675"></a><span class="lineno">  675</span>     param[ibag].svm_type = svmMap[svm_type_opt[0]];</div>
-<div class="line"><a name="l00676"></a><span class="lineno">  676</span>     param[ibag].kernel_type = kernelMap[kernel_type_opt[0]];</div>
-<div class="line"><a name="l00677"></a><span class="lineno">  677</span>     param[ibag].degree = kernel_degree_opt[0];</div>
-<div class="line"><a name="l00678"></a><span class="lineno">  678</span>     param[ibag].gamma = (gamma_opt[0]>0)? gamma_opt[0] : 1.0/nFeatures;</div>
-<div class="line"><a name="l00679"></a><span class="lineno">  679</span>     param[ibag].coef0 = coef0_opt[0];</div>
-<div class="line"><a name="l00680"></a><span class="lineno">  680</span>     param[ibag].nu = nu_opt[0];</div>
-<div class="line"><a name="l00681"></a><span class="lineno">  681</span>     param[ibag].cache_size = cache_opt[0];</div>
-<div class="line"><a name="l00682"></a><span class="lineno">  682</span>     param[ibag].C = ccost_opt[0];</div>
-<div class="line"><a name="l00683"></a><span class="lineno">  683</span>     param[ibag].eps = epsilon_tol_opt[0];</div>
-<div class="line"><a name="l00684"></a><span class="lineno">  684</span>     param[ibag].p = epsilon_loss_opt[0];</div>
-<div class="line"><a name="l00685"></a><span class="lineno">  685</span>     param[ibag].shrinking = (shrinking_opt[0])? 1 : 0;</div>
-<div class="line"><a name="l00686"></a><span class="lineno">  686</span>     param[ibag].probability = (prob_est_opt[0])? 1 : 0;</div>
-<div class="line"><a name="l00687"></a><span class="lineno">  687</span>     param[ibag].nr_weight = 0;<span class="comment">//not used: I use priors and balancing</span></div>
-<div class="line"><a name="l00688"></a><span class="lineno">  688</span>     param[ibag].weight_label = NULL;</div>
-<div class="line"><a name="l00689"></a><span class="lineno">  689</span>     param[ibag].weight = NULL;</div>
-<div class="line"><a name="l00690"></a><span class="lineno">  690</span>     param[ibag].verbose=(verbose_opt[0]>1)? <span class="keyword">true</span>:<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00691"></a><span class="lineno">  691</span> </div>
-<div class="line"><a name="l00692"></a><span class="lineno">  692</span>     <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00693"></a><span class="lineno">  693</span>       std::cout << <span class="stringliteral">"checking parameters"</span> << std::endl;</div>
-<div class="line"><a name="l00694"></a><span class="lineno">  694</span>     svm_check_parameter(&prob[ibag],&param[ibag]);</div>
-<div class="line"><a name="l00695"></a><span class="lineno">  695</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l00696"></a><span class="lineno">  696</span>       std::cout << <span class="stringliteral">"parameters ok, training"</span> << std::endl;</div>
-<div class="line"><a name="l00697"></a><span class="lineno">  697</span>     svm[ibag]=svm_train(&prob[ibag],&param[ibag]);</div>
-<div class="line"><a name="l00698"></a><span class="lineno">  698</span>     <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00699"></a><span class="lineno">  699</span>       std::cout << <span class="stringliteral">"SVM is now trained"</span> << std::endl;</div>
-<div class="line"><a name="l00700"></a><span class="lineno">  700</span>     <span class="keywordflow">if</span>(cv_opt[0]>1){</div>
-<div class="line"><a name="l00701"></a><span class="lineno">  701</span>       <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00702"></a><span class="lineno">  702</span>     std::cout << <span class="stringliteral">"Cross validating"</span> << std::endl;</div>
-<div class="line"><a name="l00703"></a><span class="lineno">  703</span>       <span class="keywordtype">double</span> *target = Malloc(<span class="keywordtype">double</span>,prob[ibag].l);</div>
-<div class="line"><a name="l00704"></a><span class="lineno">  704</span>       svm_cross_validation(&prob[ibag],&param[ibag],cv_opt[0],target);</div>
-<div class="line"><a name="l00705"></a><span class="lineno">  705</span>       assert(param[ibag].svm_type != EPSILON_SVR&&param[ibag].svm_type != NU_SVR);<span class="comment">//only for regression</span></div>
-<div class="line"><a name="l00706"></a><span class="lineno">  706</span> </div>
-<div class="line"><a name="l00707"></a><span class="lineno">  707</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<prob[ibag].l;i++){</div>
-<div class="line"><a name="l00708"></a><span class="lineno">  708</span>     <span class="keywordtype">string</span> refClassName=nameVector[prob[ibag].y[i]];</div>
-<div class="line"><a name="l00709"></a><span class="lineno">  709</span>     <span class="keywordtype">string</span> className=nameVector[target[i]];</div>
-<div class="line"><a name="l00710"></a><span class="lineno">  710</span>     <span class="keywordflow">if</span>(classValueMap.size())</div>
-<div class="line"><a name="l00711"></a><span class="lineno">  711</span>       cm.incrementResult(type2string<short>(classValueMap[refClassName]),type2string<short>(classValueMap[className]),1.0/nbag);</div>
-<div class="line"><a name="l00712"></a><span class="lineno">  712</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00713"></a><span class="lineno">  713</span>       cm.incrementResult(cm.getClass(prob[ibag].y[i]),cm.getClass(target[i]),1.0/nbag);</div>
-<div class="line"><a name="l00714"></a><span class="lineno">  714</span>       }</div>
-<div class="line"><a name="l00715"></a><span class="lineno">  715</span>       free(target);</div>
-<div class="line"><a name="l00716"></a><span class="lineno">  716</span>     }</div>
-<div class="line"><a name="l00717"></a><span class="lineno">  717</span>     <span class="comment">// *NOTE* Because svm_model contains pointers to svm_problem, you can</span></div>
-<div class="line"><a name="l00718"></a><span class="lineno">  718</span>     <span class="comment">// not free the memory used by svm_problem if you are still using the</span></div>
-<div class="line"><a name="l00719"></a><span class="lineno">  719</span>     <span class="comment">// svm_model produced by svm_train(). </span></div>
-<div class="line"><a name="l00720"></a><span class="lineno">  720</span>   }<span class="comment">//for ibag</span></div>
-<div class="line"><a name="l00721"></a><span class="lineno">  721</span>   <span class="keywordflow">if</span>(cv_opt[0]>1){</div>
-<div class="line"><a name="l00722"></a><span class="lineno">  722</span>     assert(cm.nReference());</div>
-<div class="line"><a name="l00723"></a><span class="lineno">  723</span>     cm.setFormat(cmformat_opt[0]);</div>
-<div class="line"><a name="l00724"></a><span class="lineno">  724</span>     cm.reportSE95(<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00725"></a><span class="lineno">  725</span>     std::cout << cm << std::endl;</div>
-<div class="line"><a name="l00726"></a><span class="lineno">  726</span>     <span class="comment">// cout << "class #samples userAcc prodAcc" << endl;</span></div>
-<div class="line"><a name="l00727"></a><span class="lineno">  727</span>     <span class="comment">// double se95_ua=0;</span></div>
-<div class="line"><a name="l00728"></a><span class="lineno">  728</span>     <span class="comment">// double se95_pa=0;</span></div>
-<div class="line"><a name="l00729"></a><span class="lineno">  729</span>     <span class="comment">// double se95_oa=0;</span></div>
-<div class="line"><a name="l00730"></a><span class="lineno">  730</span>     <span class="comment">// double dua=0;</span></div>
-<div class="line"><a name="l00731"></a><span class="lineno">  731</span>     <span class="comment">// double dpa=0;</span></div>
-<div class="line"><a name="l00732"></a><span class="lineno">  732</span>     <span class="comment">// double doa=0;</span></div>
-<div class="line"><a name="l00733"></a><span class="lineno">  733</span>     <span class="comment">// for(short iclass=0;iclass<cm.nClasses();++iclass){</span></div>
-<div class="line"><a name="l00734"></a><span class="lineno">  734</span>     <span class="comment">//   dua=cm.ua(cm.getClass(iclass),&se95_ua);</span></div>
-<div class="line"><a name="l00735"></a><span class="lineno">  735</span>     <span class="comment">//   dpa=cm.pa(cm.getClass(iclass),&se95_pa);</span></div>
-<div class="line"><a name="l00736"></a><span class="lineno">  736</span>     <span class="comment">//   cout << cm.getClass(iclass) << " " << cm.nReference(cm.getClass(iclass)) << " " << dua << " (" << se95_ua << ")" << " " << dpa << " (" << se95_pa << ")" << endl;</span></div>
-<div class="line"><a name="l00737"></a><span class="lineno">  737</span>     <span class="comment">// }</span></div>
-<div class="line"><a name="l00738"></a><span class="lineno">  738</span>     <span class="comment">// std::cout << "Kappa: " << cm.kappa() << std::endl;</span></div>
-<div class="line"><a name="l00739"></a><span class="lineno">  739</span>     <span class="comment">// doa=cm.oa(&se95_oa);</span></div>
-<div class="line"><a name="l00740"></a><span class="lineno">  740</span>     <span class="comment">// std::cout << "Overall Accuracy: " << 100*doa << " (" << 100*se95_oa << ")"  << std::endl;</span></div>
-<div class="line"><a name="l00741"></a><span class="lineno">  741</span>   }</div>
-<div class="line"><a name="l00742"></a><span class="lineno">  742</span> </div>
-<div class="line"><a name="l00743"></a><span class="lineno">  743</span>   <span class="comment">//--------------------------------- end of training -----------------------------------</span></div>
-<div class="line"><a name="l00744"></a><span class="lineno">  744</span>   <span class="keywordflow">if</span>(input_opt.empty())</div>
-<div class="line"><a name="l00745"></a><span class="lineno">  745</span>     exit(0);</div>
-<div class="line"><a name="l00746"></a><span class="lineno">  746</span> </div>
-<div class="line"><a name="l00747"></a><span class="lineno">  747</span>   <span class="keyword">const</span> <span class="keywordtype">char</span>* pszMessage;</div>
-<div class="line"><a name="l00748"></a><span class="lineno">  748</span>   <span class="keywordtype">void</span>* pProgressArg=NULL;</div>
-<div class="line"><a name="l00749"></a><span class="lineno">  749</span>   GDALProgressFunc pfnProgress=GDALTermProgress;</div>
-<div class="line"><a name="l00750"></a><span class="lineno">  750</span>   <span class="keywordtype">float</span> progress=0;</div>
-<div class="line"><a name="l00751"></a><span class="lineno">  751</span>   <span class="keywordflow">if</span>(!verbose_opt[0])</div>
-<div class="line"><a name="l00752"></a><span class="lineno">  752</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l00753"></a><span class="lineno">  753</span>   <span class="comment">//-------------------------------- open image file ------------------------------------</span></div>
-<div class="line"><a name="l00754"></a><span class="lineno">  754</span>   <span class="keywordtype">bool</span> inputIsRaster=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00755"></a><span class="lineno">  755</span>   <a class="code" href="classImgReaderOgr.html">ImgReaderOgr</a> imgReaderOgr;</div>
-<div class="line"><a name="l00756"></a><span class="lineno">  756</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00757"></a><span class="lineno">  757</span>     imgReaderOgr.open(input_opt[0]);</div>
-<div class="line"><a name="l00758"></a><span class="lineno">  758</span>     imgReaderOgr.close();</div>
-<div class="line"><a name="l00759"></a><span class="lineno">  759</span>   }</div>
-<div class="line"><a name="l00760"></a><span class="lineno">  760</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorString){</div>
-<div class="line"><a name="l00761"></a><span class="lineno">  761</span>     inputIsRaster=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00762"></a><span class="lineno">  762</span>   }</div>
-<div class="line"><a name="l00763"></a><span class="lineno">  763</span>   <span class="keywordflow">if</span>(inputIsRaster){</div>
-<div class="line"><a name="l00764"></a><span class="lineno">  764</span>     <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> testImage;</div>
-<div class="line"><a name="l00765"></a><span class="lineno">  765</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00766"></a><span class="lineno">  766</span>       <span class="keywordflow">if</span>(verbose_opt[0]>=1)</div>
-<div class="line"><a name="l00767"></a><span class="lineno">  767</span>         std::cout << <span class="stringliteral">"opening image "</span> << input_opt[0] << std::endl; </div>
-<div class="line"><a name="l00768"></a><span class="lineno">  768</span>       testImage.open(input_opt[0]);</div>
-<div class="line"><a name="l00769"></a><span class="lineno">  769</span>     }</div>
-<div class="line"><a name="l00770"></a><span class="lineno">  770</span>     <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> error){</div>
-<div class="line"><a name="l00771"></a><span class="lineno">  771</span>       cerr << error << std::endl;</div>
-<div class="line"><a name="l00772"></a><span class="lineno">  772</span>       exit(2);</div>
-<div class="line"><a name="l00773"></a><span class="lineno">  773</span>     }</div>
-<div class="line"><a name="l00774"></a><span class="lineno">  774</span>     <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> priorReader;</div>
-<div class="line"><a name="l00775"></a><span class="lineno">  775</span>     <span class="keywordflow">if</span>(priorimg_opt.size()){</div>
-<div class="line"><a name="l00776"></a><span class="lineno">  776</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00777"></a><span class="lineno">  777</span>     <span class="keywordflow">if</span>(verbose_opt[0]>=1)</div>
-<div class="line"><a name="l00778"></a><span class="lineno">  778</span>           std::cout << <span class="stringliteral">"opening prior image "</span> << priorimg_opt[0] << std::endl;</div>
-<div class="line"><a name="l00779"></a><span class="lineno">  779</span>         priorReader.open(priorimg_opt[0]);</div>
-<div class="line"><a name="l00780"></a><span class="lineno">  780</span>         assert(priorReader.nrOfCol()==testImage.nrOfCol());</div>
-<div class="line"><a name="l00781"></a><span class="lineno">  781</span>         assert(priorReader.nrOfRow()==testImage.nrOfRow());</div>
-<div class="line"><a name="l00782"></a><span class="lineno">  782</span>       }</div>
-<div class="line"><a name="l00783"></a><span class="lineno">  783</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> error){</div>
-<div class="line"><a name="l00784"></a><span class="lineno">  784</span>         cerr << error << std::endl;</div>
-<div class="line"><a name="l00785"></a><span class="lineno">  785</span>         exit(2);</div>
-<div class="line"><a name="l00786"></a><span class="lineno">  786</span>       }</div>
-<div class="line"><a name="l00787"></a><span class="lineno">  787</span>       <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l00788"></a><span class="lineno">  788</span>         cerr << <span class="stringliteral">"error caught"</span> << std::endl;</div>
-<div class="line"><a name="l00789"></a><span class="lineno">  789</span>         exit(1);</div>
-<div class="line"><a name="l00790"></a><span class="lineno">  790</span>       }</div>
-<div class="line"><a name="l00791"></a><span class="lineno">  791</span>     }</div>
-<div class="line"><a name="l00792"></a><span class="lineno">  792</span> </div>
-<div class="line"><a name="l00793"></a><span class="lineno">  793</span>     <span class="keywordtype">int</span> nrow=testImage.nrOfRow();</div>
-<div class="line"><a name="l00794"></a><span class="lineno">  794</span>     <span class="keywordtype">int</span> ncol=testImage.nrOfCol();</div>
-<div class="line"><a name="l00795"></a><span class="lineno">  795</span>     <span class="keywordflow">if</span>(option_opt.findSubstring(<span class="stringliteral">"INTERLEAVE="</span>)==option_opt.end()){</div>
-<div class="line"><a name="l00796"></a><span class="lineno">  796</span>       <span class="keywordtype">string</span> theInterleave=<span class="stringliteral">"INTERLEAVE="</span>;</div>
-<div class="line"><a name="l00797"></a><span class="lineno">  797</span>       theInterleave+=testImage.getInterleave();</div>
-<div class="line"><a name="l00798"></a><span class="lineno">  798</span>       option_opt.push_back(theInterleave);</div>
-<div class="line"><a name="l00799"></a><span class="lineno">  799</span>     }</div>
-<div class="line"><a name="l00800"></a><span class="lineno">  800</span>     vector<char> classOut(ncol);<span class="comment">//classified line for writing to image file</span></div>
-<div class="line"><a name="l00801"></a><span class="lineno">  801</span> </div>
-<div class="line"><a name="l00802"></a><span class="lineno">  802</span>     <span class="comment">//   assert(nband==testImage.nrOfBand());</span></div>
-<div class="line"><a name="l00803"></a><span class="lineno">  803</span>     <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> classImageBag;</div>
-<div class="line"><a name="l00804"></a><span class="lineno">  804</span>     <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> classImageOut;</div>
-<div class="line"><a name="l00805"></a><span class="lineno">  805</span>     <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> probImage;</div>
-<div class="line"><a name="l00806"></a><span class="lineno">  806</span>     <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> entropyImage;</div>
-<div class="line"><a name="l00807"></a><span class="lineno">  807</span> </div>
-<div class="line"><a name="l00808"></a><span class="lineno">  808</span>     <span class="keywordtype">string</span> imageType=testImage.getImageType();</div>
-<div class="line"><a name="l00809"></a><span class="lineno">  809</span>     <span class="keywordflow">if</span>(oformat_opt.size())<span class="comment">//default</span></div>
-<div class="line"><a name="l00810"></a><span class="lineno">  810</span>       imageType=oformat_opt[0];</div>
-<div class="line"><a name="l00811"></a><span class="lineno">  811</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00812"></a><span class="lineno">  812</span>       assert(output_opt.size());</div>
-<div class="line"><a name="l00813"></a><span class="lineno">  813</span>       <span class="keywordflow">if</span>(verbose_opt[0]>=1)</div>
-<div class="line"><a name="l00814"></a><span class="lineno">  814</span>         std::cout << <span class="stringliteral">"opening class image for writing output "</span> << output_opt[0] << std::endl;</div>
-<div class="line"><a name="l00815"></a><span class="lineno">  815</span>       <span class="keywordflow">if</span>(classBag_opt.size()){</div>
-<div class="line"><a name="l00816"></a><span class="lineno">  816</span>         classImageBag.open(classBag_opt[0],ncol,nrow,nbag,GDT_Byte,imageType,option_opt);</div>
-<div class="line"><a name="l00817"></a><span class="lineno">  817</span>     classImageBag.GDALSetNoDataValue(nodata_opt[0]);</div>
-<div class="line"><a name="l00818"></a><span class="lineno">  818</span>         classImageBag.copyGeoTransform(testImage);</div>
-<div class="line"><a name="l00819"></a><span class="lineno">  819</span>         classImageBag.setProjection(testImage.getProjection());</div>
-<div class="line"><a name="l00820"></a><span class="lineno">  820</span>       }</div>
-<div class="line"><a name="l00821"></a><span class="lineno">  821</span>       classImageOut.open(output_opt[0],ncol,nrow,1,GDT_Byte,imageType,option_opt);</div>
-<div class="line"><a name="l00822"></a><span class="lineno">  822</span>       classImageOut.GDALSetNoDataValue(nodata_opt[0]);</div>
-<div class="line"><a name="l00823"></a><span class="lineno">  823</span>       classImageOut.copyGeoTransform(testImage);</div>
-<div class="line"><a name="l00824"></a><span class="lineno">  824</span>       classImageOut.setProjection(testImage.getProjection());</div>
-<div class="line"><a name="l00825"></a><span class="lineno">  825</span>       <span class="keywordflow">if</span>(colorTable_opt.size())</div>
-<div class="line"><a name="l00826"></a><span class="lineno">  826</span>         classImageOut.setColorTable(colorTable_opt[0],0);</div>
-<div class="line"><a name="l00827"></a><span class="lineno">  827</span>       <span class="keywordflow">if</span>(prob_opt.size()){</div>
-<div class="line"><a name="l00828"></a><span class="lineno">  828</span>         probImage.open(prob_opt[0],ncol,nrow,nclass,GDT_Byte,imageType,option_opt);</div>
-<div class="line"><a name="l00829"></a><span class="lineno">  829</span>     probImage.GDALSetNoDataValue(nodata_opt[0]);</div>
-<div class="line"><a name="l00830"></a><span class="lineno">  830</span>         probImage.copyGeoTransform(testImage);</div>
-<div class="line"><a name="l00831"></a><span class="lineno">  831</span>         probImage.setProjection(testImage.getProjection());</div>
-<div class="line"><a name="l00832"></a><span class="lineno">  832</span>       }</div>
-<div class="line"><a name="l00833"></a><span class="lineno">  833</span>       <span class="keywordflow">if</span>(entropy_opt.size()){</div>
-<div class="line"><a name="l00834"></a><span class="lineno">  834</span>         entropyImage.open(entropy_opt[0],ncol,nrow,1,GDT_Byte,imageType,option_opt);</div>
-<div class="line"><a name="l00835"></a><span class="lineno">  835</span>     entropyImage.GDALSetNoDataValue(nodata_opt[0]);</div>
-<div class="line"><a name="l00836"></a><span class="lineno">  836</span>         entropyImage.copyGeoTransform(testImage);</div>
-<div class="line"><a name="l00837"></a><span class="lineno">  837</span>         entropyImage.setProjection(testImage.getProjection());</div>
-<div class="line"><a name="l00838"></a><span class="lineno">  838</span>       }</div>
-<div class="line"><a name="l00839"></a><span class="lineno">  839</span>     }</div>
-<div class="line"><a name="l00840"></a><span class="lineno">  840</span>     <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> error){</div>
-<div class="line"><a name="l00841"></a><span class="lineno">  841</span>       cerr << error << std::endl;</div>
-<div class="line"><a name="l00842"></a><span class="lineno">  842</span>     }</div>
-<div class="line"><a name="l00843"></a><span class="lineno">  843</span>   </div>
-<div class="line"><a name="l00844"></a><span class="lineno">  844</span>     <a class="code" href="classImgWriterGdal.html">ImgWriterGdal</a> maskWriter;</div>
-<div class="line"><a name="l00845"></a><span class="lineno">  845</span> </div>
-<div class="line"><a name="l00846"></a><span class="lineno">  846</span>     <span class="keywordflow">if</span>(maskIsVector){</div>
-<div class="line"><a name="l00847"></a><span class="lineno">  847</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00848"></a><span class="lineno">  848</span>     maskWriter.open(<span class="stringliteral">"/vsimem/mask.tif"</span>,ncol,nrow,1,GDT_Float32,imageType,option_opt);</div>
-<div class="line"><a name="l00849"></a><span class="lineno">  849</span>     maskWriter.GDALSetNoDataValue(nodata_opt[0]);</div>
-<div class="line"><a name="l00850"></a><span class="lineno">  850</span>         maskWriter.copyGeoTransform(testImage);</div>
-<div class="line"><a name="l00851"></a><span class="lineno">  851</span>         maskWriter.setProjection(testImage.getProjection());</div>
-<div class="line"><a name="l00852"></a><span class="lineno">  852</span>     vector<double> burnValues(1,1);<span class="comment">//burn value is 1 (single band)</span></div>
-<div class="line"><a name="l00853"></a><span class="lineno">  853</span>     maskWriter.rasterizeOgr(extentReader,burnValues);</div>
-<div class="line"><a name="l00854"></a><span class="lineno">  854</span>     extentReader.close();</div>
-<div class="line"><a name="l00855"></a><span class="lineno">  855</span>     maskWriter.close();</div>
-<div class="line"><a name="l00856"></a><span class="lineno">  856</span>       }</div>
-<div class="line"><a name="l00857"></a><span class="lineno">  857</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> error){</div>
-<div class="line"><a name="l00858"></a><span class="lineno">  858</span>         cerr << error << std::endl;</div>
-<div class="line"><a name="l00859"></a><span class="lineno">  859</span>         exit(2);</div>
-<div class="line"><a name="l00860"></a><span class="lineno">  860</span>       }</div>
-<div class="line"><a name="l00861"></a><span class="lineno">  861</span>       <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l00862"></a><span class="lineno">  862</span>         cerr << <span class="stringliteral">"error caught"</span> << std::endl;</div>
-<div class="line"><a name="l00863"></a><span class="lineno">  863</span>         exit(1);</div>
-<div class="line"><a name="l00864"></a><span class="lineno">  864</span>       }</div>
-<div class="line"><a name="l00865"></a><span class="lineno">  865</span>       mask_opt.clear();</div>
-<div class="line"><a name="l00866"></a><span class="lineno">  866</span>       mask_opt.push_back(<span class="stringliteral">"/vsimem/mask.tif"</span>);</div>
-<div class="line"><a name="l00867"></a><span class="lineno">  867</span>     }</div>
-<div class="line"><a name="l00868"></a><span class="lineno">  868</span>     <a class="code" href="classImgReaderGdal.html">ImgReaderGdal</a> maskReader;</div>
-<div class="line"><a name="l00869"></a><span class="lineno">  869</span>     <span class="keywordflow">if</span>(mask_opt.size()){</div>
-<div class="line"><a name="l00870"></a><span class="lineno">  870</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00871"></a><span class="lineno">  871</span>         <span class="keywordflow">if</span>(verbose_opt[0]>=1)</div>
-<div class="line"><a name="l00872"></a><span class="lineno">  872</span>           std::cout << <span class="stringliteral">"opening mask image file "</span> << mask_opt[0] << std::endl;</div>
-<div class="line"><a name="l00873"></a><span class="lineno">  873</span>         maskReader.open(mask_opt[0]);</div>
-<div class="line"><a name="l00874"></a><span class="lineno">  874</span>       }</div>
-<div class="line"><a name="l00875"></a><span class="lineno">  875</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> error){</div>
-<div class="line"><a name="l00876"></a><span class="lineno">  876</span>         cerr << error << std::endl;</div>
-<div class="line"><a name="l00877"></a><span class="lineno">  877</span>         exit(2);</div>
-<div class="line"><a name="l00878"></a><span class="lineno">  878</span>       }</div>
-<div class="line"><a name="l00879"></a><span class="lineno">  879</span>       <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l00880"></a><span class="lineno">  880</span>         cerr << <span class="stringliteral">"error caught"</span> << std::endl;</div>
-<div class="line"><a name="l00881"></a><span class="lineno">  881</span>         exit(1);</div>
-<div class="line"><a name="l00882"></a><span class="lineno">  882</span>       }</div>
-<div class="line"><a name="l00883"></a><span class="lineno">  883</span>     }</div>
-<div class="line"><a name="l00884"></a><span class="lineno">  884</span> </div>
-<div class="line"><a name="l00885"></a><span class="lineno">  885</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iline=0;iline<nrow;++iline){</div>
-<div class="line"><a name="l00886"></a><span class="lineno">  886</span>       vector<float> buffer(ncol);</div>
-<div class="line"><a name="l00887"></a><span class="lineno">  887</span>       vector<short> lineMask;</div>
-<div class="line"><a name="l00888"></a><span class="lineno">  888</span>       <a class="code" href="classVector2d.html">Vector2d<float></a> linePrior;</div>
-<div class="line"><a name="l00889"></a><span class="lineno">  889</span>       <span class="keywordflow">if</span>(priorimg_opt.size())</div>
-<div class="line"><a name="l00890"></a><span class="lineno">  890</span>      linePrior.resize(nclass,ncol);<span class="comment">//prior prob for each class</span></div>
-<div class="line"><a name="l00891"></a><span class="lineno">  891</span>       <a class="code" href="classVector2d.html">Vector2d<float></a> hpixel(ncol);</div>
-<div class="line"><a name="l00892"></a><span class="lineno">  892</span>       <a class="code" href="classVector2d.html">Vector2d<float></a> probOut(nclass,ncol);<span class="comment">//posterior prob for each (internal) class</span></div>
-<div class="line"><a name="l00893"></a><span class="lineno">  893</span>       vector<float> entropy(ncol);</div>
-<div class="line"><a name="l00894"></a><span class="lineno">  894</span>       <a class="code" href="classVector2d.html">Vector2d<char></a> classBag;<span class="comment">//classified line for writing to image file</span></div>
-<div class="line"><a name="l00895"></a><span class="lineno">  895</span>       <span class="keywordflow">if</span>(classBag_opt.size())</div>
-<div class="line"><a name="l00896"></a><span class="lineno">  896</span>         classBag.resize(nbag,ncol);</div>
-<div class="line"><a name="l00897"></a><span class="lineno">  897</span>       <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00898"></a><span class="lineno">  898</span>         <span class="keywordflow">if</span>(band_opt.size()){</div>
-<div class="line"><a name="l00899"></a><span class="lineno">  899</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<band_opt.size();++iband){</div>
-<div class="line"><a name="l00900"></a><span class="lineno">  900</span>             <span class="keywordflow">if</span>(verbose_opt[0]==2)</div>
-<div class="line"><a name="l00901"></a><span class="lineno">  901</span>               std::cout << <span class="stringliteral">"reading band "</span> << band_opt[iband] << std::endl;</div>
-<div class="line"><a name="l00902"></a><span class="lineno">  902</span>             assert(band_opt[iband]>=0);</div>
-<div class="line"><a name="l00903"></a><span class="lineno">  903</span>             assert(band_opt[iband]<testImage.nrOfBand());</div>
-<div class="line"><a name="l00904"></a><span class="lineno">  904</span>             testImage.readData(buffer,GDT_Float32,iline,band_opt[iband]);</div>
-<div class="line"><a name="l00905"></a><span class="lineno">  905</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<ncol;++icol)</div>
-<div class="line"><a name="l00906"></a><span class="lineno">  906</span>               hpixel[icol].push_back(buffer[icol]);</div>
-<div class="line"><a name="l00907"></a><span class="lineno">  907</span>           }</div>
-<div class="line"><a name="l00908"></a><span class="lineno">  908</span>         }</div>
-<div class="line"><a name="l00909"></a><span class="lineno">  909</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l00910"></a><span class="lineno">  910</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l00911"></a><span class="lineno">  911</span>             <span class="keywordflow">if</span>(verbose_opt[0]==2)</div>
-<div class="line"><a name="l00912"></a><span class="lineno">  912</span>               std::cout << <span class="stringliteral">"reading band "</span> << iband << std::endl;</div>
-<div class="line"><a name="l00913"></a><span class="lineno">  913</span>             assert(iband>=0);</div>
-<div class="line"><a name="l00914"></a><span class="lineno">  914</span>             assert(iband<testImage.nrOfBand());</div>
-<div class="line"><a name="l00915"></a><span class="lineno">  915</span>             testImage.readData(buffer,GDT_Float32,iline,iband);</div>
-<div class="line"><a name="l00916"></a><span class="lineno">  916</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<ncol;++icol)</div>
-<div class="line"><a name="l00917"></a><span class="lineno">  917</span>               hpixel[icol].push_back(buffer[icol]);</div>
-<div class="line"><a name="l00918"></a><span class="lineno">  918</span>           }</div>
-<div class="line"><a name="l00919"></a><span class="lineno">  919</span>         }</div>
-<div class="line"><a name="l00920"></a><span class="lineno">  920</span>       }</div>
-<div class="line"><a name="l00921"></a><span class="lineno">  921</span>       <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> theError){</div>
-<div class="line"><a name="l00922"></a><span class="lineno">  922</span>         cerr << <span class="stringliteral">"Error reading "</span> << input_opt[0] << <span class="stringliteral">": "</span> << theError << std::endl;</div>
-<div class="line"><a name="l00923"></a><span class="lineno">  923</span>         exit(3);</div>
-<div class="line"><a name="l00924"></a><span class="lineno">  924</span>       }</div>
-<div class="line"><a name="l00925"></a><span class="lineno">  925</span>       <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l00926"></a><span class="lineno">  926</span>         cerr << <span class="stringliteral">"error caught"</span> << std::endl;</div>
-<div class="line"><a name="l00927"></a><span class="lineno">  927</span>         exit(3);</div>
-<div class="line"><a name="l00928"></a><span class="lineno">  928</span>       }</div>
-<div class="line"><a name="l00929"></a><span class="lineno">  929</span>       assert(nband==hpixel[0].size());</div>
-<div class="line"><a name="l00930"></a><span class="lineno">  930</span>       <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l00931"></a><span class="lineno">  931</span>         std::cout << <span class="stringliteral">"used bands: "</span> << nband << std::endl;</div>
-<div class="line"><a name="l00932"></a><span class="lineno">  932</span>       <span class="comment">//read prior</span></div>
-<div class="line"><a name="l00933"></a><span class="lineno">  933</span>       <span class="keywordflow">if</span>(priorimg_opt.size()){</div>
-<div class="line"><a name="l00934"></a><span class="lineno">  934</span>         <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00935"></a><span class="lineno">  935</span>       <span class="keywordflow">for</span>(<span class="keywordtype">short</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l00936"></a><span class="lineno">  936</span>         <span class="keywordflow">if</span>(verbose_opt.size()>1)</div>
-<div class="line"><a name="l00937"></a><span class="lineno">  937</span>           std::cout << <span class="stringliteral">"Reading "</span> << priorimg_opt[0] << <span class="stringliteral">" band "</span> << iclass << <span class="stringliteral">" line "</span> << iline << std::endl;</div>
-<div class="line"><a name="l00938"></a><span class="lineno">  938</span>         priorReader.readData(linePrior[iclass],GDT_Float32,iline,iclass);</div>
-<div class="line"><a name="l00939"></a><span class="lineno">  939</span>       }</div>
-<div class="line"><a name="l00940"></a><span class="lineno">  940</span>         }</div>
-<div class="line"><a name="l00941"></a><span class="lineno">  941</span>         <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> theError){</div>
-<div class="line"><a name="l00942"></a><span class="lineno">  942</span>       std::cerr << <span class="stringliteral">"Error reading "</span> << priorimg_opt[0] << <span class="stringliteral">": "</span> << theError << std::endl;</div>
-<div class="line"><a name="l00943"></a><span class="lineno">  943</span>           exit(3);</div>
-<div class="line"><a name="l00944"></a><span class="lineno">  944</span>         }</div>
-<div class="line"><a name="l00945"></a><span class="lineno">  945</span>         <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l00946"></a><span class="lineno">  946</span>           cerr << <span class="stringliteral">"error caught"</span> << std::endl;</div>
-<div class="line"><a name="l00947"></a><span class="lineno">  947</span>           exit(3);</div>
-<div class="line"><a name="l00948"></a><span class="lineno">  948</span>         }</div>
-<div class="line"><a name="l00949"></a><span class="lineno">  949</span>       }</div>
-<div class="line"><a name="l00950"></a><span class="lineno">  950</span>       <span class="keywordtype">double</span> oldRowMask=-1;<span class="comment">//keep track of row mask to optimize number of line readings</span></div>
-<div class="line"><a name="l00951"></a><span class="lineno">  951</span>       <span class="comment">//process per pixel</span></div>
-<div class="line"><a name="l00952"></a><span class="lineno">  952</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> icol=0;icol<ncol;++icol){</div>
-<div class="line"><a name="l00953"></a><span class="lineno">  953</span>         assert(hpixel[icol].size()==nband);</div>
-<div class="line"><a name="l00954"></a><span class="lineno">  954</span>     <span class="keywordtype">bool</span> doClassify=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00955"></a><span class="lineno">  955</span>         <span class="keywordtype">bool</span> masked=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00956"></a><span class="lineno">  956</span>     <span class="keywordtype">double</span> geox=0;</div>
-<div class="line"><a name="l00957"></a><span class="lineno">  957</span>     <span class="keywordtype">double</span> geoy=0;</div>
-<div class="line"><a name="l00958"></a><span class="lineno">  958</span>         <span class="keywordflow">if</span>(maskIsVector){</div>
-<div class="line"><a name="l00959"></a><span class="lineno">  959</span>       doClassify=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l00960"></a><span class="lineno">  960</span>       testImage.image2geo(icol,iline,geox,geoy);</div>
-<div class="line"><a name="l00961"></a><span class="lineno">  961</span>       <span class="comment">//check enveloppe first</span></div>
-<div class="line"><a name="l00962"></a><span class="lineno">  962</span>       <span class="keywordflow">if</span>(uly>=geoy&&lry<=geoy&&ulx<=geox&&lrx>=geox){</div>
-<div class="line"><a name="l00963"></a><span class="lineno">  963</span>         doClassify=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00964"></a><span class="lineno">  964</span>       }</div>
-<div class="line"><a name="l00965"></a><span class="lineno">  965</span>     }</div>
-<div class="line"><a name="l00966"></a><span class="lineno">  966</span>         <span class="keywordflow">if</span>(mask_opt.size()){</div>
-<div class="line"><a name="l00967"></a><span class="lineno">  967</span>       <span class="comment">//read mask</span></div>
-<div class="line"><a name="l00968"></a><span class="lineno">  968</span>       <span class="keywordtype">double</span> colMask=0;</div>
-<div class="line"><a name="l00969"></a><span class="lineno">  969</span>       <span class="keywordtype">double</span> rowMask=0;</div>
-<div class="line"><a name="l00970"></a><span class="lineno">  970</span> </div>
-<div class="line"><a name="l00971"></a><span class="lineno">  971</span>       testImage.image2geo(icol,iline,geox,geoy);</div>
-<div class="line"><a name="l00972"></a><span class="lineno">  972</span>       maskReader.geo2image(geox,geoy,colMask,rowMask);</div>
-<div class="line"><a name="l00973"></a><span class="lineno">  973</span>       colMask=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(colMask);</div>
-<div class="line"><a name="l00974"></a><span class="lineno">  974</span>       rowMask=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(rowMask);</div>
-<div class="line"><a name="l00975"></a><span class="lineno">  975</span>       <span class="keywordflow">if</span>(rowMask>=0&&rowMask<maskReader.nrOfRow()&&colMask>=0&&colMask<maskReader.nrOfCol()){</div>
-<div class="line"><a name="l00976"></a><span class="lineno">  976</span>         <span class="keywordflow">if</span>(static_cast<int>(rowMask)!=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(oldRowMask)){</div>
-<div class="line"><a name="l00977"></a><span class="lineno">  977</span>           assert(rowMask>=0&&rowMask<maskReader.nrOfRow());</div>
-<div class="line"><a name="l00978"></a><span class="lineno">  978</span>           <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00979"></a><span class="lineno">  979</span>         <span class="comment">// maskReader.readData(lineMask[imask],GDT_Int32,static_cast<int>(rowMask));</span></div>
-<div class="line"><a name="l00980"></a><span class="lineno">  980</span>         maskReader.readData(lineMask,GDT_Int16,static_cast<int>(rowMask));</div>
-<div class="line"><a name="l00981"></a><span class="lineno">  981</span>           }</div>
-<div class="line"><a name="l00982"></a><span class="lineno">  982</span>           <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorstring){</div>
-<div class="line"><a name="l00983"></a><span class="lineno">  983</span>         cerr << errorstring << endl;</div>
-<div class="line"><a name="l00984"></a><span class="lineno">  984</span>         exit(1);</div>
-<div class="line"><a name="l00985"></a><span class="lineno">  985</span>           }</div>
-<div class="line"><a name="l00986"></a><span class="lineno">  986</span>           <span class="keywordflow">catch</span>(...){</div>
-<div class="line"><a name="l00987"></a><span class="lineno">  987</span>         cerr << <span class="stringliteral">"error caught"</span> << std::endl;</div>
-<div class="line"><a name="l00988"></a><span class="lineno">  988</span>         exit(3);</div>
-<div class="line"><a name="l00989"></a><span class="lineno">  989</span>           }</div>
-<div class="line"><a name="l00990"></a><span class="lineno">  990</span>           oldRowMask=rowMask;</div>
-<div class="line"><a name="l00991"></a><span class="lineno">  991</span>         }</div>
-<div class="line"><a name="l00992"></a><span class="lineno">  992</span>         <span class="keywordtype">short</span> theMask=0;</div>
-<div class="line"><a name="l00993"></a><span class="lineno">  993</span>         <span class="keywordflow">for</span>(<span class="keywordtype">short</span> ivalue=0;ivalue<msknodata_opt.size();++ivalue){</div>
-<div class="line"><a name="l00994"></a><span class="lineno">  994</span>           <span class="comment">// if(msknodata_opt[ivalue]>=0){//values set in msknodata_opt are invalid</span></div>
-<div class="line"><a name="l00995"></a><span class="lineno">  995</span>         <span class="keywordflow">if</span>(lineMask[colMask]==msknodata_opt[ivalue]){</div>
-<div class="line"><a name="l00996"></a><span class="lineno">  996</span>           theMask=lineMask[colMask];</div>
-<div class="line"><a name="l00997"></a><span class="lineno">  997</span>           masked=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l00998"></a><span class="lineno">  998</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00999"></a><span class="lineno">  999</span>         }</div>
-<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>           <span class="comment">// }</span></div>
-<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>           <span class="comment">// else{//only values set in msknodata_opt are valid</span></div>
-<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>           <span class="comment">//    if(lineMask[colMask]!=-msknodata_opt[ivalue]){</span></div>
-<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>           <span class="comment">//      theMask=lineMask[colMask];</span></div>
-<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>           <span class="comment">//      masked=true;</span></div>
-<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>           <span class="comment">//    }</span></div>
-<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>           <span class="comment">//    else{</span></div>
-<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>           <span class="comment">//      masked=false;</span></div>
-<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>           <span class="comment">//      break;</span></div>
-<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>           <span class="comment">//    }</span></div>
-<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>           <span class="comment">// }</span></div>
-<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>         }</div>
-<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>         <span class="keywordflow">if</span>(masked){</div>
-<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>           <span class="keywordflow">if</span>(classBag_opt.size())</div>
-<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ibag=0;ibag<nbag;++ibag)</div>
-<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>           classBag[ibag][icol]=theMask;</div>
-<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>           classOut[icol]=theMask;</div>
-<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>           <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>         }</div>
-<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>       }</div>
-<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>       <span class="keywordtype">bool</span> valid=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<hpixel[icol].size();++iband){</div>
-<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>         <span class="keywordflow">if</span>(hpixel[icol][iband]){</div>
-<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>           valid=<span class="keyword">true</span>;</div>
-<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>         }</div>
-<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>       }</div>
-<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>       <span class="keywordflow">if</span>(!valid)</div>
-<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>         doClassify=<span class="keyword">false</span>;</div>
-<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>     }</div>
-<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>         <span class="keywordflow">for</span>(<span class="keywordtype">short</span> iclass=0;iclass<nclass;++iclass)</div>
-<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>           probOut[iclass][icol]=0;</div>
-<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>     <span class="keywordflow">if</span>(!doClassify){</div>
-<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>       <span class="keywordflow">if</span>(classBag_opt.size())</div>
-<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ibag=0;ibag<nbag;++ibag)</div>
-<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>           classBag[ibag][icol]=nodata_opt[0];</div>
-<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>       classOut[icol]=nodata_opt[0];</div>
-<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>       <span class="keywordflow">continue</span>;<span class="comment">//next column</span></div>
-<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>     }</div>
-<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>     <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>       std::cout << <span class="stringliteral">"begin classification "</span> << std::endl;</div>
-<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>         <span class="comment">//----------------------------------- classification -------------------</span></div>
-<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ibag=0;ibag<nbag;++ibag){</div>
-<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>           vector<double> result(nclass);</div>
-<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>           <span class="keyword">struct </span><a class="code" href="structsvm__node.html">svm_node</a> *x;</div>
-<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>           x = (<span class="keyword">struct </span><a class="code" href="structsvm__node.html">svm_node</a> *) malloc((nband+1)*<span class="keyword">sizeof</span>(<span class="keyword">struct </span><a class="code" href="structsvm__node.html">svm_node</a>));</div>
-<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>             x[iband].index=iband+1;</div>
-<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>             x[iband].value=(hpixel[icol][iband]-offset[ibag][iband])/scale[ibag][iband];</div>
-<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>           }</div>
-<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>           x[nband].index=-1;<span class="comment">//to end svm feature vector</span></div>
-<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>           <span class="keywordtype">double</span> predict_label=0;</div>
-<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>           vector<float> prValues(nclass);</div>
-<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>           <span class="keywordtype">float</span> maxP=0;</div>
-<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>           <span class="keywordflow">if</span>(!prob_est_opt[0]){</div>
-<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>             predict_label = svm_predict(svm[ibag],x);</div>
-<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>             <span class="keywordflow">for</span>(<span class="keywordtype">short</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>               <span class="keywordflow">if</span>(iclass==static_cast<short>(predict_label))</div>
-<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>                 result[iclass]=1;</div>
-<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>               <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>                 result[iclass]=0;</div>
-<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>             }</div>
-<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>           }</div>
-<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>           <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>             assert(svm_check_probability_model(svm[ibag]));</div>
-<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>             predict_label = svm_predict_probability(svm[ibag],x,&(result[0]));</div>
-<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>           }</div>
-<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>           <span class="comment">//calculate posterior prob of bag </span></div>
-<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>           <span class="keywordflow">if</span>(classBag_opt.size()){</div>
-<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>             <span class="comment">//search for max prob within bag</span></div>
-<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>             maxP=0;</div>
-<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>             classBag[ibag][icol]=0;</div>
-<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>           }</div>
-<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>       <span class="keywordtype">double</span> normPrior=0;</div>
-<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>       <span class="keywordflow">if</span>(priorimg_opt.size()){</div>
-<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>         <span class="keywordflow">for</span>(<span class="keywordtype">short</span> iclass=0;iclass<nclass;++iclass)</div>
-<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>           normPrior+=linePrior[iclass][icol];</div>
-<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>       }</div>
-<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>           <span class="keywordflow">for</span>(<span class="keywordtype">short</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>         <span class="keywordflow">if</span>(priorimg_opt.size())</div>
-<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>           priors[iclass]=linePrior[iclass][icol]/normPrior;<span class="comment">//todo: check if correct for all cases... (automatic classValueMap and manual input for names and values)</span></div>
-<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>             <span class="keywordflow">switch</span>(comb_opt[0]){</div>
-<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>             <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>             <span class="keywordflow">case</span>(0):<span class="comment">//sum rule</span></div>
-<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>               probOut[iclass][icol]+=result[iclass]*priors[iclass];<span class="comment">//add probabilities for each bag</span></div>
-<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>                <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>             <span class="keywordflow">case</span>(1):<span class="comment">//product rule</span></div>
-<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>               probOut[iclass][icol]*=pow(static_cast<float>(priors[iclass]),static_cast<float>(1.0-nbag)/nbag)*result[iclass];<span class="comment">//multiply probabilities for each bag</span></div>
-<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>             <span class="keywordflow">case</span>(2):<span class="comment">//max rule</span></div>
-<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>               <span class="keywordflow">if</span>(priors[iclass]*result[iclass]>probOut[iclass][icol])</div>
-<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>                 probOut[iclass][icol]=priors[iclass]*result[iclass];</div>
-<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>               <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>             }</div>
-<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>             <span class="keywordflow">if</span>(classBag_opt.size()){</div>
-<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>               <span class="comment">//search for max prob within bag</span></div>
-<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>               <span class="comment">// if(prValues[iclass]>maxP){</span></div>
-<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>               <span class="comment">//   maxP=prValues[iclass];</span></div>
-<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>               <span class="comment">//   classBag[ibag][icol]=iclass;</span></div>
-<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>               <span class="comment">// }</span></div>
-<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>               <span class="keywordflow">if</span>(result[iclass]>maxP){</div>
-<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>                 maxP=result[iclass];</div>
-<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>                 classBag[ibag][icol]=iclass;</div>
-<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>               }</div>
-<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>             }</div>
-<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>           }</div>
-<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>           free(x);</div>
-<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>         }<span class="comment">//ibag</span></div>
-<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span> </div>
-<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>         <span class="comment">//search for max class prob</span></div>
-<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>         <span class="keywordtype">float</span> maxBag1=0;<span class="comment">//max probability</span></div>
-<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>         <span class="keywordtype">float</span> maxBag2=0;<span class="comment">//second max probability</span></div>
-<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>         <span class="keywordtype">float</span> normBag=0;</div>
-<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>         <span class="keywordflow">for</span>(<span class="keywordtype">short</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>           <span class="keywordflow">if</span>(probOut[iclass][icol]>maxBag1){</div>
-<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>             maxBag1=probOut[iclass][icol];</div>
-<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>             classOut[icol]=classValueMap[nameVector[iclass]];</div>
-<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>           }</div>
-<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(probOut[iclass][icol]>maxBag2)</div>
-<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>             maxBag2=probOut[iclass][icol];</div>
-<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>           normBag+=probOut[iclass][icol];</div>
-<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>         }</div>
-<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>         <span class="comment">//normalize probOut and convert to percentage</span></div>
-<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>         entropy[icol]=0;</div>
-<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>         <span class="keywordflow">for</span>(<span class="keywordtype">short</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>           <span class="keywordtype">float</span> prv=probOut[iclass][icol];</div>
-<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>           prv/=normBag;</div>
-<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>           entropy[icol]-=prv*log(prv)/log(2.0);</div>
-<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>           prv*=100.0;</div>
-<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>             </div>
-<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>           probOut[iclass][icol]=<span class="keyword">static_cast<</span><span class="keywordtype">short</span><span class="keyword">></span>(prv+0.5);</div>
-<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>           <span class="comment">// assert(classValueMap[nameVector[iclass]]<probOut.size());</span></div>
-<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>           <span class="comment">// assert(classValueMap[nameVector[iclass]]>=0);</span></div>
-<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>           <span class="comment">// probOut[classValueMap[nameVector[iclass]]][icol]=static_cast<short>(prv+0.5);</span></div>
-<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>         }</div>
-<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>         entropy[icol]/=log(static_cast<double>(nclass))/log(2.0);</div>
-<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>         entropy[icol]=<span class="keyword">static_cast<</span><span class="keywordtype">short</span><span class="keyword">></span>(100*entropy[icol]+0.5);</div>
-<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>     <span class="keywordflow">if</span>(active_opt.size()){</div>
-<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>       <span class="keywordflow">if</span>(entropy[icol]>activePoints.back().value){</div>
-<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>         activePoints.back().value=entropy[icol];<span class="comment">//replace largest value (last)</span></div>
-<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>         activePoints.back().posx=icol;</div>
-<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>         activePoints.back().posy=iline;</div>
-<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>         std::sort(activePoints.begin(),activePoints.end(),<a class="code" href="classDecrease__PosValue.html">Decrease_PosValue</a>());<span class="comment">//sort in descending order (largest first, smallest last)</span></div>
-<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>         <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>           std::cout << activePoints.back().posx << <span class="stringliteral">" "</span> << activePoints.back().posy << <span class="stringliteral">" "</span> << activePoints.back().value << std::endl;</div>
-<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>       }</div>
-<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>     }</div>
-<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>       }<span class="comment">//icol</span></div>
-<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>       <span class="comment">//----------------------------------- write output ------------------------------------------</span></div>
-<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>       <span class="keywordflow">if</span>(classBag_opt.size())</div>
-<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ibag=0;ibag<nbag;++ibag)</div>
-<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>           classImageBag.writeData(classBag[ibag],GDT_Byte,iline,ibag);</div>
-<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>       <span class="keywordflow">if</span>(prob_opt.size()){</div>
-<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>         <span class="keywordflow">for</span>(<span class="keywordtype">short</span> iclass=0;iclass<nclass;++iclass)</div>
-<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>           probImage.writeData(probOut[iclass],GDT_Float32,iline,iclass);</div>
-<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>       }</div>
-<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>       <span class="keywordflow">if</span>(entropy_opt.size()){</div>
-<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>         entropyImage.writeData(entropy,GDT_Float32,iline);</div>
-<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>       }</div>
-<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>       classImageOut.writeData(classOut,GDT_Byte,iline);</div>
-<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>       <span class="keywordflow">if</span>(!verbose_opt[0]){</div>
-<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>         progress=<span class="keyword">static_cast<</span><span class="keywordtype">float</span><span class="keyword">></span>(iline+1.0)/classImageOut.nrOfRow();</div>
-<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>         pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>       }</div>
-<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>     }</div>
-<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>     <span class="comment">//write active learning points</span></div>
-<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>     <span class="keywordflow">if</span>(active_opt.size()){</div>
-<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iactive=0;iactive<activePoints.size();++iactive){</div>
-<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>     std::map<string,double> pointMap;</div>
-<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<testImage.nrOfBand();++iband){</div>
-<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>       <span class="keywordtype">double</span> value;</div>
-<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>       testImage.readData(value,GDT_Float64,static_cast<int>(activePoints[iactive].posx),static_cast<int>(activePoints[iactive].posy),iband);</div>
-<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>       ostringstream fs;</div>
-<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>       fs << <span class="stringliteral">"B"</span> << iband;</div>
-<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>       pointMap[fs.str()]=value;</div>
-<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>     }</div>
-<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>     pointMap[label_opt[0]]=0;</div>
-<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>     <span class="keywordtype">double</span> x, y;</div>
-<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>     testImage.image2geo(activePoints[iactive].posx,activePoints[iactive].posy,x,y);</div>
-<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>         std::string fieldname=<span class="stringliteral">"id"</span>;<span class="comment">//number of the point</span></div>
-<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>     activeWriter.addPoint(x,y,pointMap,fieldname,++nactive);</div>
-<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>       }</div>
-<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>     }</div>
-<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span> </div>
-<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>     testImage.close();</div>
-<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>     <span class="keywordflow">if</span>(mask_opt.size())</div>
-<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>       maskReader.close();</div>
-<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>     <span class="keywordflow">if</span>(priorimg_opt.size())</div>
-<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>       priorReader.close();</div>
-<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>     <span class="keywordflow">if</span>(prob_opt.size())</div>
-<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>       probImage.close();</div>
-<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>     <span class="keywordflow">if</span>(entropy_opt.size())</div>
-<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>       entropyImage.close();</div>
-<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>     <span class="keywordflow">if</span>(classBag_opt.size())</div>
-<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>       classImageBag.close();</div>
-<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>     classImageOut.close();</div>
-<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>   }</div>
-<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>   <span class="keywordflow">else</span>{<span class="comment">//classify vector file</span></div>
-<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>     cm.clearResults();</div>
-<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>     <span class="comment">//notice that fields have already been set by readDataImageOgr (taking into account appropriate bands)</span></div>
-<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ivalidation=0;ivalidation<input_opt.size();++ivalidation){</div>
-<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>       <span class="keywordflow">if</span>(output_opt.size())</div>
-<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>     assert(output_opt.size()==input_opt.size());</div>
-<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>         std::cout << <span class="stringliteral">"opening img reader "</span> << input_opt[ivalidation] << std::endl;</div>
-<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>       imgReaderOgr.open(input_opt[ivalidation]);</div>
-<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>       <a class="code" href="classImgWriterOgr.html">ImgWriterOgr</a> imgWriterOgr;</div>
-<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span> </div>
-<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>       <span class="keywordflow">if</span>(output_opt.size()){</div>
-<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>       std::cout << <span class="stringliteral">"opening img writer and copying fields from img reader"</span> << output_opt[ivalidation] << std::endl;</div>
-<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>     imgWriterOgr.open(output_opt[ivalidation],imgReaderOgr);</div>
-<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>       }</div>
-<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>     cout << <span class="stringliteral">"number of layers in input ogr file: "</span> << imgReaderOgr.getLayerCount() << endl;</div>
-<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ilayer=0;ilayer<imgReaderOgr.getLayerCount();++ilayer){</div>
-<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>     <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>       cout << <span class="stringliteral">"processing input layer "</span> << ilayer << endl;</div>
-<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>     <span class="keywordflow">if</span>(output_opt.size()){</div>
-<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>       <span class="keywordflow">if</span>(verbose_opt[0])</div>
-<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>         std::cout << <span class="stringliteral">"creating field class"</span> << std::endl;</div>
-<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>       <span class="keywordflow">if</span>(classValueMap.size())</div>
-<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>         imgWriterOgr.createField(<span class="stringliteral">"class"</span>,OFTInteger,ilayer);</div>
-<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>       <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>         imgWriterOgr.createField(<span class="stringliteral">"class"</span>,OFTString,ilayer);</div>
-<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>     }</div>
-<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nFeatures=imgReaderOgr.getFeatureCount(ilayer);</div>
-<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ifeature=0;</div>
-<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>     progress=0;</div>
-<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>     pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>     OGRFeature *poFeature;</div>
-<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>     <span class="keywordflow">while</span>( (poFeature = imgReaderOgr.getLayer(ilayer)->GetNextFeature()) != NULL ){</div>
-<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>       <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>         std::cout << <span class="stringliteral">"feature "</span> << ifeature << std::endl;</div>
-<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>       <span class="keywordflow">if</span>( poFeature == NULL ){</div>
-<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>           cout << <span class="stringliteral">"Warning: could not read feature "</span> << ifeature << <span class="stringliteral">" in layer "</span> << imgReaderOgr.getLayerName(ilayer) << endl;</div>
-<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>           <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>       }</div>
-<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>       OGRFeature *poDstFeature = NULL;</div>
-<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>       <span class="keywordflow">if</span>(output_opt.size()){</div>
-<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>         poDstFeature=imgWriterOgr.createFeature(ilayer);</div>
-<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>         <span class="keywordflow">if</span>( poDstFeature->SetFrom( poFeature, TRUE ) != OGRERR_NONE ){</div>
-<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>           CPLError( CE_Failure, CPLE_AppDefined,</div>
-<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>             <span class="stringliteral">"Unable to translate feature %d from layer %s.\n"</span>,</div>
-<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>             poFeature->GetFID(), imgWriterOgr.getLayerName(ilayer).c_str() );</div>
-<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>           OGRFeature::DestroyFeature( poFeature );</div>
-<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>           OGRFeature::DestroyFeature( poDstFeature );</div>
-<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>         }</div>
-<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>       }</div>
-<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>       vector<float> validationPixel;</div>
-<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>       vector<float> validationFeature;</div>
-<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>         </div>
-<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>       imgReaderOgr.readData(validationPixel,OFTReal,fields,poFeature,ilayer);</div>
-<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>       assert(validationPixel.size()==nband);</div>
-<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>       vector<float> probOut(nclass);<span class="comment">//posterior prob for each class</span></div>
-<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>       <span class="keywordflow">for</span>(<span class="keywordtype">short</span> iclass=0;iclass<nclass;++iclass)</div>
-<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>         probOut[iclass]=0;</div>
-<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ibag=0;ibag<nbag;++ibag){</div>
-<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iband=0;iband<nband;++iband){</div>
-<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>           validationFeature.push_back((validationPixel[iband]-offset[ibag][iband])/scale[ibag][iband]);</div>
-<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>           <span class="keywordflow">if</span>(verbose_opt[0]==2)</div>
-<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>         std::cout << <span class="stringliteral">" "</span> << validationFeature.back();</div>
-<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>         }</div>
-<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>         <span class="keywordflow">if</span>(verbose_opt[0]==2)</div>
-<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>           std::cout << std::endl;</div>
-<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>         vector<double> result(nclass);</div>
-<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>         <span class="keyword">struct </span><a class="code" href="structsvm__node.html">svm_node</a> *x;</div>
-<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>         x = (<span class="keyword">struct </span><a class="code" href="structsvm__node.html">svm_node</a> *) malloc((validationFeature.size()+1)*<span class="keyword">sizeof</span>(<span class="keyword">struct</span> <a class="code" href="structsvm__node.html">svm_node</a>));</div>
-<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<validationFeature.size();++i){</div>
-<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>           x[i].index=i+1;</div>
-<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>           x[i].value=validationFeature[i];</div>
-<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>         }</div>
-<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span> </div>
-<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>         x[validationFeature.size()].index=-1;<span class="comment">//to end svm feature vector</span></div>
-<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>         <span class="keywordtype">double</span> predict_label=0;</div>
-<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>         <span class="keywordflow">if</span>(!prob_est_opt[0]){</div>
-<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>           predict_label = svm_predict(svm[ibag],x);</div>
-<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>           <span class="keywordflow">for</span>(<span class="keywordtype">short</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>         <span class="keywordflow">if</span>(iclass==static_cast<short>(predict_label))</div>
-<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>           result[iclass]=1;</div>
-<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>           result[iclass]=0;</div>
-<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>           }</div>
-<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>         }</div>
-<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>         <span class="keywordflow">else</span>{</div>
-<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>           assert(svm_check_probability_model(svm[ibag]));</div>
-<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>           predict_label = svm_predict_probability(svm[ibag],x,&(result[0]));</div>
-<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>         }</div>
-<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>         <span class="keywordflow">if</span>(verbose_opt[0]>1){</div>
-<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>           std::cout << <span class="stringliteral">"predict_label: "</span> << predict_label << std::endl;</div>
-<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>           <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=0;iclass<result.size();++iclass)</div>
-<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>         std::cout << result[iclass] << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>           std::cout << std::endl;</div>
-<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>         }</div>
-<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span> </div>
-<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>         <span class="comment">//calculate posterior prob of bag </span></div>
-<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>         <span class="keywordflow">for</span>(<span class="keywordtype">short</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>           <span class="keywordflow">switch</span>(comb_opt[0]){</div>
-<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>           <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>           <span class="keywordflow">case</span>(0):<span class="comment">//sum rule</span></div>
-<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>         probOut[iclass]+=result[iclass]*priors[iclass];<span class="comment">//add probabilities for each bag</span></div>
-<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>           <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>           <span class="keywordflow">case</span>(1):<span class="comment">//product rule</span></div>
-<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>         probOut[iclass]*=pow(static_cast<float>(priors[iclass]),static_cast<float>(1.0-nbag)/nbag)*result[iclass];<span class="comment">//multiply probabilities for each bag</span></div>
-<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>           <span class="keywordflow">case</span>(2):<span class="comment">//max rule</span></div>
-<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>         <span class="keywordflow">if</span>(priors[iclass]*result[iclass]>probOut[iclass])</div>
-<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>           probOut[iclass]=priors[iclass]*result[iclass];</div>
-<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>         <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>           }</div>
-<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>         }</div>
-<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>         free(x);</div>
-<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>       }<span class="comment">//for ibag</span></div>
-<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span> </div>
-<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>       <span class="comment">//search for max class prob</span></div>
-<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>       <span class="keywordtype">float</span> maxBag=0;</div>
-<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>       <span class="keywordtype">float</span> normBag=0;</div>
-<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>       <span class="keywordtype">string</span> classOut=<span class="stringliteral">"Unclassified"</span>;</div>
-<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>       <span class="keywordflow">for</span>(<span class="keywordtype">short</span> iclass=0;iclass<nclass;++iclass){</div>
-<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>         <span class="keywordflow">if</span>(verbose_opt[0]>1)</div>
-<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>           std::cout << probOut[iclass] << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>         <span class="keywordflow">if</span>(probOut[iclass]>maxBag){</div>
-<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>           maxBag=probOut[iclass];</div>
-<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>           classOut=nameVector[iclass];</div>
-<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>         }</div>
-<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>       }</div>
-<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>       <span class="comment">//look for class name</span></div>
-<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>       <span class="keywordflow">if</span>(verbose_opt[0]>1){</div>
-<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>         <span class="keywordflow">if</span>(classValueMap.size())</div>
-<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>           std::cout << <span class="stringliteral">"->"</span> << classValueMap[classOut] << std::endl;</div>
-<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>         <span class="keywordflow">else</span>        </div>
-<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>           std::cout << <span class="stringliteral">"->"</span> << classOut << std::endl;</div>
-<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>       }</div>
-<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>       <span class="keywordflow">if</span>(output_opt.size()){</div>
-<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>         <span class="keywordflow">if</span>(classValueMap.size())</div>
-<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>           poDstFeature->SetField(<span class="stringliteral">"class"</span>,classValueMap[classOut]);</div>
-<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>         <span class="keywordflow">else</span>        </div>
-<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>           poDstFeature->SetField(<span class="stringliteral">"class"</span>,classOut.c_str());</div>
-<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>         poDstFeature->SetFID( poFeature->GetFID() );</div>
-<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>       }</div>
-<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>       <span class="keywordtype">int</span> labelIndex=poFeature->GetFieldIndex(label_opt[0].c_str());</div>
-<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>       <span class="keywordflow">if</span>(labelIndex>=0){</div>
-<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>         <span class="keywordtype">string</span> classRef=poFeature->GetFieldAsString(labelIndex);</div>
-<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>         <span class="keywordflow">if</span>(classRef!=<span class="stringliteral">"0"</span>){</div>
-<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>           <span class="keywordflow">if</span>(classValueMap.size())</div>
-<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>         cm.incrementResult(type2string<short>(classValueMap[classRef]),type2string<short>(classValueMap[classOut]),1);</div>
-<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>           <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>         cm.incrementResult(classRef,classOut,1);</div>
-<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>         }</div>
-<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>       }</div>
-<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>       CPLErrorReset();</div>
-<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>       <span class="keywordflow">if</span>(output_opt.size()){</div>
-<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>         <span class="keywordflow">if</span>(imgWriterOgr.createFeature(poDstFeature,ilayer) != OGRERR_NONE){</div>
-<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>           CPLError( CE_Failure, CPLE_AppDefined,</div>
-<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>             <span class="stringliteral">"Unable to translate feature %d from layer %s.\n"</span>,</div>
-<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>             poFeature->GetFID(), imgWriterOgr.getLayerName(ilayer).c_str() );</div>
-<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>           OGRFeature::DestroyFeature( poDstFeature );</div>
-<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>           OGRFeature::DestroyFeature( poDstFeature );</div>
-<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>         }</div>
-<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>       }</div>
-<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>       ++ifeature;</div>
-<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>       <span class="keywordflow">if</span>(!verbose_opt[0]){</div>
-<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>         progress=<span class="keyword">static_cast<</span><span class="keywordtype">float</span><span class="keyword">></span>(ifeature+1.0)/nFeatures;</div>
-<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>         pfnProgress(progress,pszMessage,pProgressArg);</div>
-<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>       }</div>
-<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>       OGRFeature::DestroyFeature( poFeature );</div>
-<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>       OGRFeature::DestroyFeature( poDstFeature );</div>
-<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>     }<span class="comment">//get next feature</span></div>
-<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>       }<span class="comment">//next layer</span></div>
-<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>       imgReaderOgr.close();</div>
-<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>       <span class="keywordflow">if</span>(output_opt.size())</div>
-<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>     imgWriterOgr.close();</div>
-<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>     }</div>
-<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>     <span class="keywordflow">if</span>(cm.nReference()){</div>
-<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>       std::cout << cm << std::endl;</div>
-<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>       cout << <span class="stringliteral">"class #samples userAcc prodAcc"</span> << endl;</div>
-<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>       <span class="keywordtype">double</span> se95_ua=0;</div>
-<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>       <span class="keywordtype">double</span> se95_pa=0;</div>
-<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>       <span class="keywordtype">double</span> se95_oa=0;</div>
-<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>       <span class="keywordtype">double</span> dua=0;</div>
-<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>       <span class="keywordtype">double</span> dpa=0;</div>
-<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>       <span class="keywordtype">double</span> doa=0;</div>
-<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>       <span class="keywordflow">for</span>(<span class="keywordtype">short</span> iclass=0;iclass<cm.nClasses();++iclass){</div>
-<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>     dua=cm.ua_pct(cm.getClass(iclass),&se95_ua);</div>
-<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>     dpa=cm.pa_pct(cm.getClass(iclass),&se95_pa);</div>
-<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>     cout << cm.getClass(iclass) << <span class="stringliteral">" "</span> << cm.nReference(cm.getClass(iclass)) << <span class="stringliteral">" "</span> << dua << <span class="stringliteral">" ("</span> << se95_ua << <span class="stringliteral">")"</span> << <span class="stringliteral">" "</span> << dp [...]
-<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>       }</div>
-<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>       std::cout << <span class="stringliteral">"Kappa: "</span> << cm.kappa() << std::endl;</div>
-<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>       doa=cm.oa(&se95_oa);</div>
-<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>       std::cout << <span class="stringliteral">"Overall Accuracy: "</span> << 100*doa << <span class="stringliteral">" ("</span> << 100*se95_oa << <span class="stringliteral">")"</span>  << std::endl;</div>
-<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>     }</div>
-<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>   }</div>
-<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>     <span class="keywordflow">if</span>(active_opt.size())</div>
-<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>       activeWriter.close();</div>
-<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>   }</div>
-<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>   <span class="keywordflow">catch</span>(<span class="keywordtype">string</span> errorString){</div>
-<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>     std::cerr << <span class="stringliteral">"Error: errorString"</span> << std::endl;</div>
-<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>   }</div>
-<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span> </div>
-<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ibag=0;ibag<nbag;++ibag){</div>
-<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>     <span class="comment">// svm_destroy_param[ibag](&param[ibag]);</span></div>
-<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>     svm_destroy_param(&param[ibag]);</div>
-<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>     free(prob[ibag].y);</div>
-<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>     free(prob[ibag].x);</div>
-<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>     free(x_space[ibag]);</div>
-<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>     svm_free_and_destroy_model(&(svm[ibag]));</div>
-<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>   }</div>
-<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>   <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span> }</div>
-<div class="ttc" id="classImgReaderGdal_html"><div class="ttname"><a href="classImgReaderGdal.html">ImgReaderGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderGdal_8h_source.html#l00032">ImgReaderGdal.h:32</a></div></div>
-<div class="ttc" id="classImgWriterGdal_html"><div class="ttname"><a href="classImgWriterGdal.html">ImgWriterGdal</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgWriterGdal_8h_source.html#l00033">ImgWriterGdal.h:33</a></div></div>
-<div class="ttc" id="classBadConversion_html"><div class="ttname"><a href="classBadConversion.html">BadConversion</a></div><div class="ttdoc">throw this class when syntax error in command line option </div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00045">Optionpk.h:45</a></div></div>
-<div class="ttc" id="classDecrease__PosValue_html"><div class="ttname"><a href="classDecrease__PosValue.html">Decrease_PosValue</a></div><div class="ttdef"><b>Definition:</b> <a href="PosValue_8h_source.html#l00034">PosValue.h:34</a></div></div>
-<div class="ttc" id="classVector2d_html"><div class="ttname"><a href="classVector2d.html">Vector2d</a></div><div class="ttdef"><b>Definition:</b> <a href="Vector2d_8h_source.html#l00031">Vector2d.h:31</a></div></div>
-<div class="ttc" id="classImgReaderOgr_html"><div class="ttname"><a href="classImgReaderOgr.html">ImgReaderOgr</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgReaderOgr_8h_source.html#l00035">ImgReaderOgr.h:35</a></div></div>
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-<div class="ttc" id="classconfusionmatrix_1_1ConfusionMatrix_html"><div class="ttname"><a href="classconfusionmatrix_1_1ConfusionMatrix.html">confusionmatrix::ConfusionMatrix</a></div><div class="ttdef"><b>Definition:</b> <a href="ConfusionMatrix_8h_source.html#l00032">ConfusionMatrix.h:32</a></div></div>
-<div class="ttc" id="structsvm__node_html"><div class="ttname"><a href="structsvm__node.html">svm_node</a></div><div class="ttdef"><b>Definition:</b> <a href="svm_8h_source.html#l00012">svm.h:12</a></div></div>
-<div class="ttc" id="classImgWriterOgr_html"><div class="ttname"><a href="classImgWriterOgr.html">ImgWriterOgr</a></div><div class="ttdef"><b>Definition:</b> <a href="ImgWriterOgr_8h_source.html#l00035">ImgWriterOgr.h:35</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pksvm_8py_source.html b/doc/html/pksvm_8py_source.html
deleted file mode 100644
index 1690c8c..0000000
--- a/doc/html/pksvm_8py_source.html
+++ /dev/null
@@ -1,215 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/pksvm.py Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pksvm.py</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment"># -*- coding: utf-8 -*-</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> </div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="stringliteral">    pksvm.py</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="stringliteral">    ---------------------</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="stringliteral">    Date                 : April 2015</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="stringliteral">    Copyright            : (C) 2015 by Pieter Kempeneers</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="stringliteral">    Email                : kempenep at gmail dot com</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="stringliteral">*   This program is free software; you can redistribute it and/or modify  *</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="stringliteral">*   it under the terms of the GNU General Public License as published by  *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="stringliteral">*   the Free Software Foundation; either version 2 of the License, or     *</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="stringliteral">*   (at your option) any later version.                                   *</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> __author__ = <span class="stringliteral">'Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> __date__ = <span class="stringliteral">'April 2015'</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> __copyright__ = <span class="stringliteral">'(C) 2015, Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"># This will get replaced with a git SHA1 when you do a git archive</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> __revision__ = <span class="stringliteral">'$Format:%H$'</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">import</span> os</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">from</span> pktoolsUtils <span class="keyword">import</span> pktoolsUtils</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">from</span> pktoolsAlgorithm <span class="keyword">import</span> pktoolsAlgorithm</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterMultipleInput</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterVector</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterRaster</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">from</span> processing.core.outputs <span class="keyword">import</span> OutputRaster</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterSelection</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterFile</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterNumber</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterString</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterBoolean</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterExtent</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> </div>
-<div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classqgis_1_1pksvm_1_1pksvm.html">   40</a></span> <span class="keyword">class </span><a class="code" href="classqgis_1_1pksvm_1_1pksvm.html">pksvm</a>(pktoolsAlgorithm):</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> </div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     INPUT = <span class="stringliteral">"INPUT"</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     TRAINING = <span class="stringliteral">"TRAINING"</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     ITERATE = <span class="stringliteral">"ITERATE"</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     LABEL = <span class="stringliteral">"LABEL"</span></div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span> <span class="comment">#    CV = "CV"</span></div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     GAMMA = <span class="stringliteral">"GAMMA"</span></div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     COST = <span class="stringliteral">"COST"</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     OUTPUT = <span class="stringliteral">"OUTPUT"</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     MASK = <span class="stringliteral">"MASK"</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     MSKNODATA = <span class="stringliteral">"MSKNODATA"</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span> <span class="comment">#    NODATA = "NODATA"</span></div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span> </div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span> <span class="comment">#    SVM_TYPE_OPTIONS = ["C_SVC", "nu_SVC,one_class", "epsilon_SVR", "nu_SVR"]</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span> <span class="comment">#    KERNEL_TYPE_OPTIONS = ["linear", "polynomial", "radial", "sigmoid"]</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     EXTRA = <span class="stringliteral">'EXTRA'</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span> </div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     <span class="keyword">def </span>cliName(self):</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>         <span class="keywordflow">return</span> <span class="stringliteral">"pksvm"</span></div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span> </div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     <span class="keyword">def </span>defineCharacteristics(self):</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>         self.<a class="code" href="classqgis_1_1pksvm_1_1pksvm.html#aa5c7d4dda4c1b0316e26dfb3c8f4cf8f">name</a> = <span class="stringliteral">"Support vector machine"</span></div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>         self.<a class="code" href="classqgis_1_1pksvm_1_1pksvm.html#a33cc5cc741eadc78c3fa6687592cd810">group</a> = <span class="stringliteral">"[pktools] supervised classification"</span></div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>         self.addParameter(ParameterRaster(self.<a class="code" href="classqgis_1_1pksvm_1_1pksvm.html#a70980660386dbf0e5a4abbaee81b20b7">INPUT</a>, <span class="stringliteral">'Input layer raster data set'</span>,ParameterRaster))</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>         self.addParameter(ParameterVector(self.<a class="code" href="classqgis_1_1pksvm_1_1pksvm.html#a52e9137080458d2fa51683e03d046418">TRAINING</a>, <span class="stringliteral">'Training vector file.'</span>))</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>         self.addParameter(ParameterBoolean(self.<a class="code" href="classqgis_1_1pksvm_1_1pksvm.html#a655f6139a543113d1dd2ad8b11f773b9">ITERATE</a>, <span class="stringliteral">"Iterate over all layers"</span>,<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pksvm_1_1pksvm.html#a426fe91136cb5f3e7ebbeba2c4199501">LABEL</a>, <span class="stringliteral">"Attribute name for class label in training vector file"</span>,<span class="stringliteral">"label"</span>))</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>         self.addParameter(ParameterNumber(self.<a class="code" href="classqgis_1_1pksvm_1_1pksvm.html#ab6c3b8cccb265ca1cfadeaa79fed04a1">GAMMA</a>, <span class="stringliteral">"Gamma in kernel function"</span>,0,100,1.0))</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>         self.addParameter(ParameterNumber(self.<a class="code" href="classqgis_1_1pksvm_1_1pksvm.html#ab3ec104ab7505d3115c8aa868b4f8cba">COST</a>, <span class="stringliteral">"The parameter C of C_SVC"</span>,0,100000,1000.0))</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>         self.addParameter(ParameterFile(self.<a class="code" href="classqgis_1_1pksvm_1_1pksvm.html#a614bbc0b875b73667749b0e58d89fc54">MASK</a>, <span class="stringliteral">"Mask vector/raster dataset used for classification"</span>,<span class="stringliteral">"None"</span>,optional=<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pksvm_1_1pksvm.html#a63e8acd9ffce30910af0eed869439190">MSKNODATA</a>, <span class="stringliteral">"Mask value(s) not to consider for classification (in case of raster mask, e.g., 0;255)"</span>,<span class="stringliteral">"0"</span>))</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>         self.addOutput(OutputRaster(self.<a class="code" href="classqgis_1_1pksvm_1_1pksvm.html#aeb7332c0838e46bfe82b647cb5085700">OUTPUT</a>, <span class="stringliteral">"Output raster data set"</span>))</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pksvm_1_1pksvm.html#aead41106feadc1f8d3078aa839df4f79">EXTRA</a>,</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>                           <span class="stringliteral">'Additional parameters'</span>, <span class="stringliteral">'-of GTiff'</span>, optional=<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span> </div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span> <span class="comment">#        self.addParameter(ParameterSelection(self.KERNEL_TYPE,"Type of kernel function (linear,polynomial,radial,sigmoid)",self.KERNEL_TYPE_OPTIONS, 2))</span></div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span> <span class="comment">#        self.addParameter(ParameterSelection(self.SVM_TYPE,"Type of SVM (C_SVC, nu_SVC,one_class, epsilon_SVR, nu_SVR)",self.SVM_TYPE_OPTIONS, 0))</span></div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span> </div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>     <span class="keyword">def </span>processAlgorithm(self, progress):</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>         cliPath = <span class="stringliteral">'"'</span> + os.path.join(pktoolsUtils.pktoolsPath(), self.<a class="code" href="classqgis_1_1pksvm_1_1pksvm.html#ac0504ade82ce87e0d386db1a50812bf9">cliName</a>()) + <span class="stringliteral">'"'</span></div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>         commands = [cliPath]</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span> </div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>         input=self.getParameterValue(self.<a class="code" href="classqgis_1_1pksvm_1_1pksvm.html#a70980660386dbf0e5a4abbaee81b20b7">INPUT</a>)</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>         <span class="keywordflow">if</span> input != <span class="stringliteral">""</span>:</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>             commands.append(<span class="stringliteral">'-i'</span>)</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>             commands.append(<span class="stringliteral">'"'</span> + input + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span> </div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>         commands.append(<span class="stringliteral">'-t'</span>)</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>         training=self.getParameterValue(self.<a class="code" href="classqgis_1_1pksvm_1_1pksvm.html#a52e9137080458d2fa51683e03d046418">TRAINING</a>)</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span> </div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>         if(str(training).find(<span class="stringliteral">'|'</span>)>0):</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>             <span class="keywordflow">if</span> self.getParameterValue(self.<a class="code" href="classqgis_1_1pksvm_1_1pksvm.html#a655f6139a543113d1dd2ad8b11f773b9">ITERATE</a>):</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>                 trainingname=str(training)</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>                 commands.append(trainingname[:trainingname.find(<span class="stringliteral">'|'</span>)])</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>             <span class="keywordflow">else</span>:</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>                 trainingname=str(training).replace(<span class="stringliteral">"|layername"</span>,<span class="stringliteral">" -ln"</span>)</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>                 commands.append(trainingname)</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>         <span class="keywordflow">else</span>:</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>             commands.append(training)</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span> </div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>         commands.append(<span class="stringliteral">'-label'</span>)</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>         commands.append(str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pksvm_1_1pksvm.html#a426fe91136cb5f3e7ebbeba2c4199501">LABEL</a>)))</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>         <span class="comment"># if self.getParameterValue(self.CV):</span></div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>         <span class="comment">#     commands.append("-cv 2")</span></div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>         commands.append(<span class="stringliteral">'-g'</span>)</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>         commands.append(str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pksvm_1_1pksvm.html#ab6c3b8cccb265ca1cfadeaa79fed04a1">GAMMA</a>)))</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>         commands.append(<span class="stringliteral">'-cc'</span>)</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>         commands.append(str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pksvm_1_1pksvm.html#ab3ec104ab7505d3115c8aa868b4f8cba">COST</a>)))</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span> </div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>         mask = str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pksvm_1_1pksvm.html#a614bbc0b875b73667749b0e58d89fc54">MASK</a>))</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>         <span class="keywordflow">if</span> mask != <span class="stringliteral">""</span>:</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>             commands.append(<span class="stringliteral">'-m'</span>)</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>             commands.append(mask)</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>             msknodata=str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pksvm_1_1pksvm.html#a63e8acd9ffce30910af0eed869439190">MSKNODATA</a>))</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>             msknodataValues = msknodata.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>             <span class="keywordflow">for</span> msknodataValue <span class="keywordflow">in</span> msknodataValues:</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>                 commands.append(<span class="stringliteral">'-msknodata'</span>)</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>                 commands.append(msknodataValue)</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>                 </div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>         extra = str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pksvm_1_1pksvm.html#aead41106feadc1f8d3078aa839df4f79">EXTRA</a>))</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>         <span class="keywordflow">if</span> len(extra) > 0:</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>             commands.append(extra)</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span> </div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>         output=self.getOutputValue(self.<a class="code" href="classqgis_1_1pksvm_1_1pksvm.html#aeb7332c0838e46bfe82b647cb5085700">OUTPUT</a>)</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>         <span class="keywordflow">if</span> output != <span class="stringliteral">""</span>:</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>             commands.append(<span class="stringliteral">'-o'</span>)</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>             commands.append(<span class="stringliteral">'"'</span> + output + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span> </div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>         pktoolsUtils.runpktools(commands, progress)</div>
-<div class="ttc" id="classqgis_1_1pksvm_1_1pksvm_html_a52e9137080458d2fa51683e03d046418"><div class="ttname"><a href="classqgis_1_1pksvm_1_1pksvm.html#a52e9137080458d2fa51683e03d046418">qgis.pksvm.pksvm.TRAINING</a></div><div class="ttdeci">string TRAINING</div><div class="ttdef"><b>Definition:</b> <a href="pksvm_8py_source.html#l00043">pksvm.py:43</a></div></div>
-<div class="ttc" id="classqgis_1_1pksvm_1_1pksvm_html_aead41106feadc1f8d3078aa839df4f79"><div class="ttname"><a href="classqgis_1_1pksvm_1_1pksvm.html#aead41106feadc1f8d3078aa839df4f79">qgis.pksvm.pksvm.EXTRA</a></div><div class="ttdeci">string EXTRA</div><div class="ttdef"><b>Definition:</b> <a href="pksvm_8py_source.html#l00056">pksvm.py:56</a></div></div>
-<div class="ttc" id="classqgis_1_1pksvm_1_1pksvm_html_a614bbc0b875b73667749b0e58d89fc54"><div class="ttname"><a href="classqgis_1_1pksvm_1_1pksvm.html#a614bbc0b875b73667749b0e58d89fc54">qgis.pksvm.pksvm.MASK</a></div><div class="ttdeci">string MASK</div><div class="ttdef"><b>Definition:</b> <a href="pksvm_8py_source.html#l00050">pksvm.py:50</a></div></div>
-<div class="ttc" id="classqgis_1_1pksvm_1_1pksvm_html_ab6c3b8cccb265ca1cfadeaa79fed04a1"><div class="ttname"><a href="classqgis_1_1pksvm_1_1pksvm.html#ab6c3b8cccb265ca1cfadeaa79fed04a1">qgis.pksvm.pksvm.GAMMA</a></div><div class="ttdeci">string GAMMA</div><div class="ttdef"><b>Definition:</b> <a href="pksvm_8py_source.html#l00047">pksvm.py:47</a></div></div>
-<div class="ttc" id="classqgis_1_1pksvm_1_1pksvm_html_a655f6139a543113d1dd2ad8b11f773b9"><div class="ttname"><a href="classqgis_1_1pksvm_1_1pksvm.html#a655f6139a543113d1dd2ad8b11f773b9">qgis.pksvm.pksvm.ITERATE</a></div><div class="ttdeci">string ITERATE</div><div class="ttdef"><b>Definition:</b> <a href="pksvm_8py_source.html#l00044">pksvm.py:44</a></div></div>
-<div class="ttc" id="classqgis_1_1pksvm_1_1pksvm_html_a63e8acd9ffce30910af0eed869439190"><div class="ttname"><a href="classqgis_1_1pksvm_1_1pksvm.html#a63e8acd9ffce30910af0eed869439190">qgis.pksvm.pksvm.MSKNODATA</a></div><div class="ttdeci">string MSKNODATA</div><div class="ttdef"><b>Definition:</b> <a href="pksvm_8py_source.html#l00051">pksvm.py:51</a></div></div>
-<div class="ttc" id="classqgis_1_1pksvm_1_1pksvm_html_a33cc5cc741eadc78c3fa6687592cd810"><div class="ttname"><a href="classqgis_1_1pksvm_1_1pksvm.html#a33cc5cc741eadc78c3fa6687592cd810">qgis.pksvm.pksvm.group</a></div><div class="ttdeci">group</div><div class="ttdef"><b>Definition:</b> <a href="pksvm_8py_source.html#l00063">pksvm.py:63</a></div></div>
-<div class="ttc" id="classqgis_1_1pksvm_1_1pksvm_html_ab3ec104ab7505d3115c8aa868b4f8cba"><div class="ttname"><a href="classqgis_1_1pksvm_1_1pksvm.html#ab3ec104ab7505d3115c8aa868b4f8cba">qgis.pksvm.pksvm.COST</a></div><div class="ttdeci">string COST</div><div class="ttdef"><b>Definition:</b> <a href="pksvm_8py_source.html#l00048">pksvm.py:48</a></div></div>
-<div class="ttc" id="classqgis_1_1pksvm_1_1pksvm_html_aa5c7d4dda4c1b0316e26dfb3c8f4cf8f"><div class="ttname"><a href="classqgis_1_1pksvm_1_1pksvm.html#aa5c7d4dda4c1b0316e26dfb3c8f4cf8f">qgis.pksvm.pksvm.name</a></div><div class="ttdeci">name</div><div class="ttdef"><b>Definition:</b> <a href="pksvm_8py_source.html#l00062">pksvm.py:62</a></div></div>
-<div class="ttc" id="classqgis_1_1pksvm_1_1pksvm_html_a426fe91136cb5f3e7ebbeba2c4199501"><div class="ttname"><a href="classqgis_1_1pksvm_1_1pksvm.html#a426fe91136cb5f3e7ebbeba2c4199501">qgis.pksvm.pksvm.LABEL</a></div><div class="ttdeci">string LABEL</div><div class="ttdef"><b>Definition:</b> <a href="pksvm_8py_source.html#l00045">pksvm.py:45</a></div></div>
-<div class="ttc" id="classqgis_1_1pksvm_1_1pksvm_html"><div class="ttname"><a href="classqgis_1_1pksvm_1_1pksvm.html">qgis.pksvm.pksvm</a></div><div class="ttdef"><b>Definition:</b> <a href="pksvm_8py_source.html#l00040">pksvm.py:40</a></div></div>
-<div class="ttc" id="classqgis_1_1pksvm_1_1pksvm_html_a70980660386dbf0e5a4abbaee81b20b7"><div class="ttname"><a href="classqgis_1_1pksvm_1_1pksvm.html#a70980660386dbf0e5a4abbaee81b20b7">qgis.pksvm.pksvm.INPUT</a></div><div class="ttdeci">string INPUT</div><div class="ttdef"><b>Definition:</b> <a href="pksvm_8py_source.html#l00042">pksvm.py:42</a></div></div>
-<div class="ttc" id="classqgis_1_1pksvm_1_1pksvm_html_aeb7332c0838e46bfe82b647cb5085700"><div class="ttname"><a href="classqgis_1_1pksvm_1_1pksvm.html#aeb7332c0838e46bfe82b647cb5085700">qgis.pksvm.pksvm.OUTPUT</a></div><div class="ttdeci">string OUTPUT</div><div class="ttdef"><b>Definition:</b> <a href="pksvm_8py_source.html#l00049">pksvm.py:49</a></div></div>
-<div class="ttc" id="classqgis_1_1pksvm_1_1pksvm_html_ac0504ade82ce87e0d386db1a50812bf9"><div class="ttname"><a href="classqgis_1_1pksvm_1_1pksvm.html#ac0504ade82ce87e0d386db1a50812bf9">qgis.pksvm.pksvm.cliName</a></div><div class="ttdeci">def cliName</div><div class="ttdef"><b>Definition:</b> <a href="pksvm_8py_source.html#l00058">pksvm.py:58</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pksvm__gui_2main_8cpp_source.html b/doc/html/pksvm__gui_2main_8cpp_source.html
deleted file mode 100644
index 10a7727..0000000
--- a/doc/html/pksvm__gui_2main_8cpp_source.html
+++ /dev/null
@@ -1,103 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/pksvm_gui/main.cpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_b66e135988e27fdc966ddddb8708f514.html">pksvm_gui</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">main.cpp</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">main.cpp: GUI for pktools</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "mainwindow.h"</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <QApplication></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> </div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])</div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> {</div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span>     QApplication a(argc, argv);</div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span>     <a class="code" href="classMainWindow.html">MainWindow</a> w;</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span>     w.show();</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> </div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span>     <span class="keywordflow">return</span> a.exec();</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> }</div>
-<div class="ttc" id="classMainWindow_html"><div class="ttname"><a href="classMainWindow.html">MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite__gui_2mainwindow_8h_source.html#l00031">mainwindow.h:31</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pksvm__gui_2mainwindow_8cpp_source.html b/doc/html/pksvm__gui_2mainwindow_8cpp_source.html
deleted file mode 100644
index 6a0e1bc..0000000
--- a/doc/html/pksvm__gui_2mainwindow_8cpp_source.html
+++ /dev/null
@@ -1,353 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/pksvm_gui/mainwindow.cpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_b66e135988e27fdc966ddddb8708f514.html">pksvm_gui</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">mainwindow.cpp</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">mainwindow.cpp: GUI for pktools</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "mainwindow.h"</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "ui_mainwindow.h"</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <QFileDialog></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <QStandardItemModel></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <QMessageBox></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include <QProcess></span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> </div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> MainWindow::MainWindow(QWidget *parent) :</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span>     QMainWindow(parent),</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span>     ui(new Ui::<a class="code" href="classMainWindow.html">MainWindow</a>)</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> {</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span>     ui->setupUi(<span class="keyword">this</span>);</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>     QStringList svmlist;</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>     svmlist << <span class="stringliteral">"C_SVC"</span> << <span class="stringliteral">"nu_SVC"</span> << <span class="stringliteral">"one_class"</span> << <span class="stringliteral">"epsilon_SVR"</span> << <span class="stringliteral">"nu_SVR"</span>;</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>     ui->svmtype->addItems(svmlist);</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>     QStringList kernellist;</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>     kernellist << <span class="stringliteral">"radial"</span> << <span class="stringliteral">"linear"</span> << <span class="stringliteral">"polynomial"</span> << <span class="stringliteral">"sigmoid"</span>;</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>     ui->kerneltype->addItems(kernellist);</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>     setDefaults();</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> }</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> </div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> MainWindow::~MainWindow()</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span> {</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     <span class="keyword">delete</span> ui;</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span> }</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span> </div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span> <span class="keywordtype">void</span> MainWindow::setDefaults()</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span> {</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     <span class="comment">//tab training</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     <span class="comment">//m_training="d:\\osgeo\\course\\openstreetmap\\training2.sqlite";</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span> <span class="comment">//    ui->training->setText(m_training);</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     ui->cv->setText(<span class="stringliteral">"0"</span>);</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     ui->training->clear();</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     ui->tln->clear();</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     ui->label->setText(<span class="stringliteral">"label"</span>);</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     QStringList labels;</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     setClassTable(labels);</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     ui->nclass->clear();</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span> </div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     <span class="comment">//tab input/output</span></div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     ui->input->clear();</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     ui->msknodata->setText(<span class="stringliteral">"0"</span>);</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     ui->output->clear();</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     ui->nodata->setText(<span class="stringliteral">"0"</span>);</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     ui->ct->clear();</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     <span class="comment">//tab classifier</span></div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     ui->coef0->setText(<span class="stringliteral">"0"</span>);</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>     ui->nu->setText(<span class="stringliteral">"0.5"</span>);</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     ui->kd->setText(<span class="stringliteral">"3"</span>);</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     ui->label->setText(<span class="stringliteral">"label"</span>);</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     ui->cv->setText(<span class="stringliteral">"0"</span>);</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     ui->gamma->setText(<span class="stringliteral">"1"</span>);</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>     ui->ccost->setText(<span class="stringliteral">"1000"</span>);</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span> }</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span> </div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span> <span class="keywordtype">void</span> MainWindow::on_actionTraining_triggered()</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span> {</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>     QString qstraining = QFileDialog::getOpenFileName(<span class="keyword">this</span>, <span class="stringliteral">"Training"</span>);</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>     ui->training->setText(qstraining);</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>     this->on_training_returnPressed();</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span> }</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span> </div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span> <span class="keywordtype">void</span> MainWindow::on_actionMask_triggered()</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span> {</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     QString qsmask = QFileDialog::getOpenFileName(<span class="keyword">this</span>, <span class="stringliteral">"Mask"</span>);</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>     ui->mask->setText(qsmask);</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span> }</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span> </div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span> <span class="keywordtype">void</span> MainWindow::on_actionOutput_triggered()</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span> {</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     QString qsoutput = QFileDialog::getSaveFileName(<span class="keyword">this</span>,<span class="stringliteral">"Output image"</span>,<span class="stringliteral">""</span>,<span class="stringliteral">"*.*"</span>);</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     ui->output->setText(qsoutput);</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span> }</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span> </div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span> <span class="keywordtype">void</span> MainWindow::on_actionInput_triggered()</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span> {</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     QString qsinput = QFileDialog::getOpenFileName(<span class="keyword">this</span>, <span class="stringliteral">"Input"</span>);</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     ui->input->setText(qsinput);</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span> }</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span> </div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span> </div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span> <span class="keywordtype">void</span> MainWindow::on_actionColor_table_triggered()</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span> {</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     QString qsct = QFileDialog::getOpenFileName(<span class="keyword">this</span>, <span class="stringliteral">"Color table"</span>);</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     ui->ct->setText(qsct);</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span> }</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span> </div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span> <span class="keywordtype">void</span> MainWindow::on_toolButton_input_clicked()</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span> {</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>     on_actionInput_triggered();</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span> }</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span> </div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span> <span class="keywordtype">void</span> MainWindow::on_toolButton_mask_clicked()</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span> {</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     on_actionMask_triggered();</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span> }</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span> </div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span> <span class="keywordtype">void</span> MainWindow::on_toolButton_output_clicked()</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span> {</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>     on_actionOutput_triggered();</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span> }</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span> </div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span> <span class="keywordtype">void</span> MainWindow::on_toolButton_training_clicked()</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span> {</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     on_actionTraining_triggered();</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span> }</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span> </div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span> <span class="keywordtype">void</span> MainWindow::on_toolButton_ct_clicked()</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span> {</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>     on_actionColor_table_triggered();</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span> }</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span> </div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span> <span class="keywordtype">void</span> MainWindow::on_training_returnPressed()</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span> {</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>     <span class="comment">//eventually read classes from vector file to fill in table...</span></div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span> }</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span> </div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span> <span class="keywordtype">void</span> MainWindow::setClassTable(<span class="keyword">const</span> QStringList &labels)</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span> {</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>     QStandardItemModel *model = <span class="keyword">new</span> QStandardItemModel(labels.size(),4,<span class="keyword">this</span>); <span class="comment">//nlabel rows and 4 columns</span></div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>     model->setHorizontalHeaderItem(0, <span class="keyword">new</span> QStandardItem(QString(<span class="stringliteral">"label name"</span>)));</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>     model->setHorizontalHeaderItem(1, <span class="keyword">new</span> QStandardItem(QString(<span class="stringliteral">"class nr"</span>)));</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>     model->setHorizontalHeaderItem(2, <span class="keyword">new</span> QStandardItem(QString(<span class="stringliteral">"prior prob"</span>)));</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>     model->setHorizontalHeaderItem(3, <span class="keyword">new</span> QStandardItem(QString(<span class="stringliteral">"balance (optional)"</span>)));</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ilabel=0;ilabel<labels.size();++ilabel){</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>         QStandardItem *firstCol = <span class="keyword">new</span> QStandardItem(QString(labels[ilabel]));</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>         model->setItem(ilabel,0,firstCol);</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>         QStandardItem *secondCol = <span class="keyword">new</span> QStandardItem(QString::number(ilabel+1));</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>         model->setItem(ilabel,1,secondCol);</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>         QStandardItem *thirdCol = <span class="keyword">new</span> QStandardItem(QString::number(1.0/labels.size()));</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>         model->setItem(ilabel,2,thirdCol);</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>     }</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>     ui->tableView_labels->setModel(model);</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span> }</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span> </div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span> <span class="keywordtype">void</span> MainWindow::on_pushButton_run_clicked()</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span> {</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>     <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>         ui->commandLineEdit->clear();</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>         ui->consoleEdit->clear();</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>         QString program = <span class="stringliteral">"pksvm"</span>;</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>         <span class="keywordflow">if</span>(ui->training->text().isEmpty())</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>             MainWindow::on_actionTraining_triggered();</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>         <span class="keywordflow">if</span>(ui->training->text().isEmpty()){</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>             QString qsError=<span class="stringliteral">"No training vector file selected"</span>;</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>             <span class="keywordflow">throw</span>(qsError);</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>         }</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>         <span class="keywordflow">if</span>(!ui->input->text().isEmpty()){</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>             <span class="keywordflow">if</span>(ui->output->text().isEmpty())</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>                 MainWindow::on_actionOutput_triggered();</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>             <span class="keywordflow">if</span>(ui->output->text().isEmpty()){</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>                 QString qsError=<span class="stringliteral">"No training vector file selected"</span>;</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>                 <span class="keywordflow">throw</span>(qsError);</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>             }</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>         }</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span> </div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span> <span class="comment">//        QList<QCheckBox*> qcheckBoxList = this->findChildren<QCheckBox *>();</span></div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span> </div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span> <span class="comment">//        for(QList<QCheckBox*>::ConstIterator qcbit=qcheckBoxList.begin();qcbit!=qcheckBoxList.end();++qcbit){</span></div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span> <span class="comment">//            if((*qcbit)->isChecked()){</span></div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span> <span class="comment">//                QString qsOption;</span></div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span> <span class="comment">//                qsOption+=" --";</span></div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span> <span class="comment">//                qsOption+=(*qcbit)->objectName();</span></div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span> <span class="comment">//                program+=qsOption;</span></div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span> <span class="comment">//            }</span></div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span> <span class="comment">//        }</span></div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span> </div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>         QStringList qslBalance;</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<ui->tableView_labels->model()->rowCount();++irow){</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>             QString qsOption;</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>             qsOption+=<span class="stringliteral">" --class "</span>;</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>             qsOption+=ui->tableView_labels->model()->data(ui->tableView_labels->model()->index(irow,0)).toString();</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>             qsOption+=<span class="stringliteral">" --reclass "</span>;</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>             qsOption+=ui->tableView_labels->model()->data(ui->tableView_labels->model()->index(irow,1)).toString();</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>             qsOption+=<span class="stringliteral">" --prior "</span>;</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>             qsOption+=ui->tableView_labels->model()->data(ui->tableView_labels->model()->index(irow,2)).toString();</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>             program+=qsOption;</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>             <span class="keywordflow">if</span>(ui->tableView_labels->model()->columnCount()>3){</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>                 QString qsbalance=ui->tableView_labels->model()->data(ui->tableView_labels->model()->index(irow,3)).toString();</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>                 <span class="keywordflow">if</span>(!qsbalance.isEmpty())</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>                     qslBalance << qsbalance;</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>             }</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>         }</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>         <span class="keywordflow">if</span>(qslBalance.size()){</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> irow=0;irow<ui->tableView_labels->model()->rowCount();++irow){</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>                 QString qsOption;</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>                 qsOption+=<span class="stringliteral">" --balance "</span>;</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>                 <span class="keywordflow">if</span>(qslBalance.size()==ui->tableView_labels->model()->rowCount())</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>                     qsOption+=qslBalance[irow];</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>                 <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>                     qsOption+=qslBalance[0];</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>                 program+=qsOption;</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>             }</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>         }</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span> </div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>         QList<QComboBox*> qcomboBoxList = this->findChildren<QComboBox *>();</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span> </div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>         <span class="keywordflow">for</span>(QList<QComboBox*>::ConstIterator qcbit=qcomboBoxList.begin();qcbit!=qcomboBoxList.end();++qcbit){</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>             QString qsOption;</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>             qsOption+=<span class="stringliteral">" --"</span>;</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>             qsOption+=(*qcbit)->objectName();</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>             program+=qsOption;</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>             program+=<span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>             program+=(*qcbit)->currentText();</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>         }</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span> </div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>         QList<QLineEdit*> qlineEditList = this->findChildren<QLineEdit *>();</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span> </div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>         <span class="keywordflow">for</span>(QList<QLineEdit*>::ConstIterator qlbit=qlineEditList.begin();qlbit!=qlineEditList.end();++qlbit){</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>             <span class="keywordflow">if</span>(!((*qlbit)->text().isEmpty())){</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>                 QString qsOption;</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>                 qsOption+=<span class="stringliteral">" --"</span>;</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>                 qsOption+=(*qlbit)->objectName();</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>                 qsOption+=<span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>                 qsOption+=(*qlbit)->text();</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>                 program+=qsOption;</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>             }</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>         }</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span> </div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>         ui->commandLineEdit->setText(program);</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span> </div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span> <span class="comment">//        QProcess *myProcess = new QProcess(parent);</span></div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>         QProcess *myProcess = <span class="keyword">new</span> QProcess(<span class="keyword">this</span>);</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>         myProcess->start(program);</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>         myProcess->setProcessChannelMode(QProcess::MergedChannels);</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>         this->setCursor(Qt::WaitCursor);</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>         myProcess->waitForFinished(-1);</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>         this->setCursor(Qt::ArrowCursor);</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>         QMessageBox msgBox;</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>         QString p_stderr = myProcess->readAllStandardError();</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>         <span class="keywordflow">if</span>(!p_stderr.isEmpty()){</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>             msgBox.setText(p_stderr);</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>             msgBox.exec();</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>         }</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>         QString p_stdout = myProcess->readAll();</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>         ui->consoleEdit->insertPlainText(p_stdout);</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>         <span class="keyword">delete</span> myProcess;</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>     }</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>     <span class="keywordflow">catch</span>(QString qsError){</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>         QMessageBox msgBox;</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>         msgBox.setText(qsError);</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>         msgBox.exec();</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>     }</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span> }</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span> </div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span> <span class="keywordtype">void</span> MainWindow::on_pushButton_restore_clicked()</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span> {</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>     setDefaults();</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span> }</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span> </div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span> <span class="keywordtype">void</span> MainWindow::on_commandLinkButtonPrepareTable_clicked()</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span> {</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>     <span class="keywordtype">int</span> nclass=ui->nclass->text().toInt();</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>     QStringList labels;</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iclass=1;iclass<=nclass;++iclass){</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>         QString lstring=<span class="stringliteral">"label"</span>;</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>         lstring+=QString::number(iclass);</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>         labels << lstring;</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>     }</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>     setClassTable(labels);</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span> }</div>
-<div class="ttc" id="classMainWindow_html"><div class="ttname"><a href="classMainWindow.html">MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite__gui_2mainwindow_8h_source.html#l00031">mainwindow.h:31</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pksvm__gui_2mainwindow_8h_source.html b/doc/html/pksvm__gui_2mainwindow_8h_source.html
deleted file mode 100644
index 3be5391..0000000
--- a/doc/html/pksvm__gui_2mainwindow_8h_source.html
+++ /dev/null
@@ -1,151 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qt/pksvm_gui/mainwindow.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_0f63d6441a2c250919e1e8723011eb2f.html">qt</a></li><li class="navelem"><a class="el" href="dir_b66e135988e27fdc966ddddb8708f514.html">pksvm_gui</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">mainwindow.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">mainwindow.h: GUI for pktools</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2014 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#ifndef MAINWINDOW_H</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor"></span><span class="preprocessor">#define MAINWINDOW_H</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <QMainWindow></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> </div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="keyword">namespace </span>Ui {</div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">class </span><a class="code" href="classMainWindow.html">MainWindow</a>;</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> }</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> </div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">class </span><a class="code" href="classMainWindow.html">MainWindow</a> : <span class="keyword">public</span> QMainWindow</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> {</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span>     Q_OBJECT</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> </div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>     <span class="keyword">explicit</span> <a class="code" href="classMainWindow.html">MainWindow</a>(QWidget *parent = 0);</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>     ~<a class="code" href="classMainWindow.html">MainWindow</a>();</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> </div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="keyword">private</span> slots:</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>     <span class="keywordtype">void</span> on_actionInput_triggered();</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> </div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     <span class="keywordtype">void</span> on_actionTraining_triggered();</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> </div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     <span class="keywordtype">void</span> on_actionMask_triggered();</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span> </div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     <span class="keywordtype">void</span> on_actionOutput_triggered();</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span> </div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     <span class="keywordtype">void</span> on_toolButton_input_clicked();</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span> </div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     <span class="keywordtype">void</span> on_toolButton_mask_clicked();</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span> </div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     <span class="keywordtype">void</span> on_toolButton_output_clicked();</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span> </div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     <span class="keywordtype">void</span> on_toolButton_training_clicked();</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span> </div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     <span class="keywordtype">void</span> on_training_returnPressed();</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span> </div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <span class="keywordtype">void</span> on_pushButton_run_clicked();</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span> </div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     <span class="keywordtype">void</span> on_pushButton_restore_clicked();</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span> </div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     <span class="keywordtype">void</span> on_commandLinkButtonPrepareTable_clicked();</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span> </div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     <span class="keywordtype">void</span> on_actionColor_table_triggered();</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span> </div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     <span class="keywordtype">void</span> on_toolButton_ct_clicked();</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span> </div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span> <span class="keyword">private</span>:</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>     <span class="keywordtype">void</span> setClassTable(<span class="keyword">const</span> QStringList &labels);</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     <span class="keywordtype">void</span> setDefaults();</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span> </div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     <a class="code" href="classUi_1_1MainWindow.html">Ui::MainWindow</a> *ui;</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span> <span class="comment">//    QString m_input;</span></div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span> <span class="comment">//    QString m_training;</span></div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span> <span class="comment">//    QString m_mask;</span></div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span> <span class="comment">//    QString m_output;</span></div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span> };</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span> </div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span> <span class="preprocessor">#endif // MAINWINDOW_H</span></div>
-<div class="ttc" id="classUi_1_1MainWindow_html"><div class="ttname"><a href="classUi_1_1MainWindow.html">Ui::MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="build-pkcomposite__gui-gcc-Debug_2ui__mainwindow_8h_source.html#l00702">ui_mainwindow.h:702</a></div></div>
-<div class="ttc" id="classMainWindow_html"><div class="ttname"><a href="classMainWindow.html">MainWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="pkcomposite__gui_2mainwindow_8h_source.html#l00031">mainwindow.h:31</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pktestOption_8cc_source.html b/doc/html/pktestOption_8cc_source.html
deleted file mode 100644
index bbb34ef..0000000
--- a/doc/html/pktestOption_8cc_source.html
+++ /dev/null
@@ -1,129 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/base/pktestOption.cc Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_0af1587c8378955de40f48b4bd1869f0.html">base</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pktestOption.cc</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/**********************************************************************</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">pktestOption: example program how to use class Optionpk pktestOption.cc </span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">Copyright (C) 2008-2013 Pieter Kempeneers</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment"></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">This file is part of pktools</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">pktools is free software: you can redistribute it and/or modify</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">it under the terms of the GNU General Public License as published by</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">the Free Software Foundation, either version 3 of the License, or</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">(at your option) any later version.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment"></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">pktools is distributed in the hope that it will be useful,</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">GNU General Public License for more details.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment"></span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">You should have received a copy of the GNU General Public License</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">along with pktools.  If not, see <http://www.gnu.org/licenses/>.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">***********************************************************************/</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <iostream></span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <string></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "base/Optionpk.h"</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> </div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])</div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> {</div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span>   <a class="code" href="classOptionpk.html">Optionpk<std::string></a> foo_opt(<span class="stringliteral">"f"</span>,<span class="stringliteral">"foo"</span>,<span class="stringliteral">"command line option **foo** of type string can be invoked with either short (f) or long (foo) option"</span>,<span class="stringliteral">"defaultString"</span>);</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span>   <a class="code" href="classOptionpk.html">Optionpk<int></a> bar_opt(<span class="stringliteral">"\0"</span>,<span class="stringliteral">"bar"</span>,<span class="stringliteral">"command line option **bar** of type int has no short option"</span>,<span class="keyword">false</span>,1);<span class="comment">//bar will only be visible in long help (hide=1)</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span>   <a class="code" href="classOptionpk.html">Optionpk<bool></a> easterEgg_opt(<span class="stringliteral">"egg"</span>,<span class="stringliteral">"egg"</span>,<span class="stringliteral">"this help information is useless"</span>,<span class="keyword">false</span>,2);<span class="comment">//this option will not be shown in help (hide=2)</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> </div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>   <span class="keywordtype">bool</span> doProcess;<span class="comment">//stop process when program was invoked with help option (-h --help)</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span>   <span class="keywordflow">try</span>{</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>     doProcess=foo_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>     bar_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>     easterEgg_opt.retrieveOption(argc,argv);</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>     }</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   <span class="keywordflow">catch</span>(std::string predefinedString){<span class="comment">//command line option contained license or version</span></div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>     std::cout << predefinedString << std::endl;<span class="comment">//report the predefined string to stdout</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>     exit(0);<span class="comment">//stop processing</span></div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>   }</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   <span class="keywordflow">if</span>(!doProcess){<span class="comment">//command line option contained help option</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     std::cout << <span class="stringliteral">"short option -h shows basic options only, use long option --help to show all options"</span> << std::endl;<span class="comment">//provide extra details for help to the user</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     exit(0);<span class="comment">//stop processing</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   }</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   std::cout << <span class="stringliteral">"foo: "</span>;</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> ifoo=0;ifoo<foo_opt.size();++ifoo){</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     std::cout << foo_opt[ifoo] << <span class="stringliteral">" "</span>;</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   }</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>   std::cout << std::endl;</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>   std::cout << foo_opt << std::endl;<span class="comment">//short cut for code above</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span> </div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>   <span class="keywordflow">if</span>(bar_opt[0]>0)</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     std::cout << <span class="stringliteral">"long option for bar was used with a positive value"</span> << std::endl;</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>   </div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>   <span class="keywordflow">if</span>(easterEgg_opt[0])</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     std::cout << <span class="stringliteral">"How did you find this option -egg or --egg? Not through the help info!"</span> << std::endl;</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span> }</div>
-<div class="ttc" id="classOptionpk_html"><div class="ttname"><a href="classOptionpk.html">Optionpk</a></div><div class="ttdef"><b>Definition:</b> <a href="Optionpk_8h_source.html#l00106">Optionpk.h:106</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pktoolsAlgorithmProvider_8py_source.html b/doc/html/pktoolsAlgorithmProvider_8py_source.html
deleted file mode 100644
index 9745ae5..0000000
--- a/doc/html/pktoolsAlgorithmProvider_8py_source.html
+++ /dev/null
@@ -1,200 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/pktoolsAlgorithmProvider.py Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pktoolsAlgorithmProvider.py</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment"># -*- coding: utf-8 -*-</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> </div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="stringliteral">    pktoolsAlgorithmProvider.py</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="stringliteral">    ---------------------</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="stringliteral">    Date                 : April 2015</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="stringliteral">    Copyright            : (C) 2015 by Pieter Kempeneers</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="stringliteral">    Email                : kempenep at gmail dot com</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="stringliteral">*   This program is free software; you can redistribute it and/or modify  *</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="stringliteral">*   it under the terms of the GNU General Public License as published by  *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="stringliteral">*   the Free Software Foundation; either version 2 of the License, or     *</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="stringliteral">*   (at your option) any later version.                                   *</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> __author__ = <span class="stringliteral">'Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> __date__ = <span class="stringliteral">'April 2015'</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> __copyright__ = <span class="stringliteral">'(C) 2015, Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"># This will get replaced with a git SHA1 when you do a git archive</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> __revision__ = <span class="stringliteral">'$Format:%H$'</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> </div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="comment">#from pktools.ExampleAlgorithm import ExampleAlgorithm</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="comment">#raster utilities</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">from</span> pktools.pkcomposite <span class="keyword">import</span> pkcomposite</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">from</span> pktools.pkcrop <span class="keyword">import</span> pkcrop</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">from</span> pktools.pkreclass <span class="keyword">import</span> pkreclass</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">from</span> pktools.pkgetmask <span class="keyword">import</span> pkgetmask</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">from</span> pktools.pksetmask <span class="keyword">import</span> pksetmask</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="comment">#raster/vector utilities</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">from</span> pktools.pkextract <span class="keyword">import</span> pkextract</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">from</span> pktools.pkextract_grid <span class="keyword">import</span> pkextract_grid</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="keyword">from</span> pktools.pkextract_random <span class="keyword">import</span> pkextract_random</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="comment">#Supervised classification utilities</span></div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="keyword">from</span> pktools.pksvm <span class="keyword">import</span> pksvm</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> <span class="keyword">from</span> pktools.pkdiff_accuracy <span class="keyword">import</span> pkdiff_accuracy</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="comment">#LiDAR utilities</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span> <span class="keyword">from</span> pktools.pklas2img <span class="keyword">import</span> pklas2img</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span> <span class="keyword">from</span> pktools.pkfilterdem <span class="keyword">import</span> pkfilterdem</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span> <span class="comment">#filter utilities</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span> <span class="keyword">from</span> pktools.pkfilter_spectral <span class="keyword">import</span> pkfilter_spectral</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span> <span class="keyword">from</span> pktools.pkfilter_spatial <span class="keyword">import</span> pkfilter_spatial</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span> </div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span> <span class="keyword">from</span> processing.core.AlgorithmProvider <span class="keyword">import</span> AlgorithmProvider</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span> <span class="keyword">from</span> processing.core.ProcessingConfig <span class="keyword">import</span> Setting, ProcessingConfig</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span> <span class="keyword">import</span> os</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span> <span class="keyword">from</span> PyQt4 <span class="keyword">import</span> QtGui</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span> <span class="keyword">from</span> pktools.pktoolsUtils <span class="keyword">import</span> pktoolsUtils</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span> </div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span> </div>
-<div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html">   55</a></span> <span class="keyword">class </span><a class="code" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html">pktoolsAlgorithmProvider</a>(AlgorithmProvider):</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span> </div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     MY_DUMMY_SETTING = <span class="stringliteral">"MY_DUMMY_SETTING"</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span> </div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     <span class="keyword">def </span>__init__(self):</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>         AlgorithmProvider.__init__(self)</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>         <span class="comment"># deactivate provider by default</span></div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>         self.<a class="code" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a431ba8d9bcf8cb86744888c39ce0159e">activate</a> = <span class="keyword">True</span></div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>         <span class="comment"># load algorithms</span></div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span> <span class="comment">#        self.alglist = [pkinfo()]</span></div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>         self.<a class="code" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a18808e0ef41167a503d619e8dcf39c33">alglist</a> = [pkreclass(),pkcrop(),pkcomposite(),pkgetmask(),pksetmask(),pkextract(),pkextract_grid(),pkextract_random(),pksvm(),pkdiff_accuracy(),pklas2img(),pkfilterdem(),pkfilter_spectral(),pkfilter_spatial()]</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>         <span class="comment"># pktools = [pkinfo()]</span></div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>         <span class="comment"># for alg in pktools:</span></div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>         <span class="comment">#     alg.group = "pktools"</span></div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>         <span class="comment">#     self.alglist.extend(pktools)</span></div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>         <span class="keywordflow">for</span> alg <span class="keywordflow">in</span> self.<a class="code" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a18808e0ef41167a503d619e8dcf39c33">alglist</a>:</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>             alg.provider = self</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span> </div>
-<div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a41cbf8f2612d0ba5e7e858f421e4c344">   73</a></span>     <span class="keyword">def </span><a class="code" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a41cbf8f2612d0ba5e7e858f421e4c344">initializeSettings</a>(self):</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>         <span class="stringliteral">'''In this method we add settings needed to configure our provider.</span></div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span> <span class="stringliteral">        Do not forget to call the parent method, since it takes care or</span></div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span> <span class="stringliteral">        automatically adding a setting for activating or deactivating the</span></div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span> <span class="stringliteral">        algorithms in the provider</span></div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span> <span class="stringliteral">        '''</span></div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>         AlgorithmProvider.initializeSettings(self)</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>         ProcessingConfig.addSetting(Setting(self.<a class="code" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#aa6d4f9562f9502ae7c12e90d0d95d7b1">getDescription</a>(), pktoolsUtils.PKTOOLS_FOLDER, <span class="stringliteral">"pktools folder"</span>, pktoolsUtils.pktoolsPath()))</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span> </div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span> <span class="comment">#        ProcessingConfig.addSetting(Setting("Example algorithms", pktoolsAlgorithmProvider.MY_DUMMY_SETTING, "Example setting", "Default value"))</span></div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>  <span class="comment">#       '''To get the parameter of a setting parameter, use</span></div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span> <span class="comment">#        ProcessingConfig.getSetting(name_of_parameter)</span></div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span> <span class="comment">#        '''</span></div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span> </div>
-<div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a458d5bb02c856ca83d7ca332ff4125aa">   87</a></span>     <span class="keyword">def </span><a class="code" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a458d5bb02c856ca83d7ca332ff4125aa">unload</a>(self):</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>         <span class="stringliteral">'''Setting should be removed here, so they do not appear anymore</span></div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span> <span class="stringliteral">        when the plugin is unloaded'''</span></div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>         AlgorithmProvider.unload(self)</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>         ProcessingConfig.removeSetting(pktoolsAlgorithmProvider.MY_DUMMY_SETTING)</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span> </div>
-<div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#ac0eb1ee881715c3efe5819e23b8ff473">   93</a></span>     <span class="keyword">def </span><a class="code" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#ac0eb1ee881715c3efe5819e23b8ff473">getName</a>(self):</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>         <span class="stringliteral">'''This is the name that will appear on the toolbox group.</span></div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span> <span class="stringliteral">        It is also used to create the command line name of all the algorithms</span></div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span> <span class="stringliteral">        from this provider</span></div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span> <span class="stringliteral">        '''</span></div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>         <span class="keywordflow">return</span> <span class="stringliteral">"pktools"</span></div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span> </div>
-<div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#aa6d4f9562f9502ae7c12e90d0d95d7b1">  100</a></span>     <span class="keyword">def </span><a class="code" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#aa6d4f9562f9502ae7c12e90d0d95d7b1">getDescription</a>(self):</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>         <span class="stringliteral">'''This is the provired full name.</span></div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span> <span class="stringliteral">        '''</span></div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>         <span class="keywordflow">return</span> <span class="stringliteral">"Utilities for remote sensing image processing"</span></div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span> </div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     <span class="keyword">def </span>getIcon(self):</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>         filepath = os.path.dirname(__file__) + <span class="stringliteral">"/logo.png"</span></div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>         <span class="keywordflow">return</span> QtGui.QIcon(filepath)</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span> </div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>     <span class="keyword">def </span>_loadAlgorithms(self):</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>         <span class="stringliteral">'''Here we fill the list of algorithms in self.algs.</span></div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span> <span class="stringliteral">        This method is called whenever the list of algorithms should be updated.</span></div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span> <span class="stringliteral">        If the list of algorithms can change</span></div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span> <span class="stringliteral">        (for instance, if it contains algorithms from user-defined scripts and</span></div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span> <span class="stringliteral">        a new script might have been added), you should create the list again</span></div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span> <span class="stringliteral">        here.</span></div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span> <span class="stringliteral">        In this case, since the list is always the same, we assign from the pre-made list.</span></div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span> <span class="stringliteral">        This assignment has to be done in this method even if the list does not change,</span></div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span> <span class="stringliteral">        since the self.algs list is cleared before calling this method</span></div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span> <span class="stringliteral">        '''</span></div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>         self.<a class="code" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#ad93cae1d50d4c7fe0d39b40ae0a9f71b">algs</a> = self.<a class="code" href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a18808e0ef41167a503d619e8dcf39c33">alglist</a></div>
-<div class="ttc" id="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider_html_a431ba8d9bcf8cb86744888c39ce0159e"><div class="ttname"><a href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a431ba8d9bcf8cb86744888c39ce0159e">qgis.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider.activate</a></div><div class="ttdeci">activate</div><div class="ttdef"><b>Definition:</b> <a href="pktoolsAlgorithmProvider_8py_source.html#l00062">pktoolsAlgorithmProvider.py [...]
-<div class="ttc" id="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider_html_a41cbf8f2612d0ba5e7e858f421e4c344"><div class="ttname"><a href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a41cbf8f2612d0ba5e7e858f421e4c344">qgis.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider.initializeSettings</a></div><div class="ttdeci">def initializeSettings</div><div class="ttdef"><b>Definition:</b> <a href="pktoolsAlgorithmProvider_8py_source.html#l00073">pkt [...]
-<div class="ttc" id="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider_html_a458d5bb02c856ca83d7ca332ff4125aa"><div class="ttname"><a href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a458d5bb02c856ca83d7ca332ff4125aa">qgis.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider.unload</a></div><div class="ttdeci">def unload</div><div class="ttdef"><b>Definition:</b> <a href="pktoolsAlgorithmProvider_8py_source.html#l00087">pktoolsAlgorithmProvider.py [...]
-<div class="ttc" id="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider_html_a18808e0ef41167a503d619e8dcf39c33"><div class="ttname"><a href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a18808e0ef41167a503d619e8dcf39c33">qgis.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider.alglist</a></div><div class="ttdeci">alglist</div><div class="ttdef"><b>Definition:</b> <a href="pktoolsAlgorithmProvider_8py_source.html#l00065">pktoolsAlgorithmProvider.py:6 [...]
-<div class="ttc" id="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider_html"><div class="ttname"><a href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html">qgis.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider</a></div><div class="ttdef"><b>Definition:</b> <a href="pktoolsAlgorithmProvider_8py_source.html#l00055">pktoolsAlgorithmProvider.py:55</a></div></div>
-<div class="ttc" id="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider_html_aa6d4f9562f9502ae7c12e90d0d95d7b1"><div class="ttname"><a href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#aa6d4f9562f9502ae7c12e90d0d95d7b1">qgis.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider.getDescription</a></div><div class="ttdeci">def getDescription</div><div class="ttdef"><b>Definition:</b> <a href="pktoolsAlgorithmProvider_8py_source.html#l00100">pktoolsAlgo [...]
-<div class="ttc" id="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider_html_ac0eb1ee881715c3efe5819e23b8ff473"><div class="ttname"><a href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#ac0eb1ee881715c3efe5819e23b8ff473">qgis.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider.getName</a></div><div class="ttdeci">def getName</div><div class="ttdef"><b>Definition:</b> <a href="pktoolsAlgorithmProvider_8py_source.html#l00093">pktoolsAlgorithmProvider. [...]
-<div class="ttc" id="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider_html_ad93cae1d50d4c7fe0d39b40ae0a9f71b"><div class="ttname"><a href="classqgis_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#ad93cae1d50d4c7fe0d39b40ae0a9f71b">qgis.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider.algs</a></div><div class="ttdeci">algs</div><div class="ttdef"><b>Definition:</b> <a href="pktoolsAlgorithmProvider_8py_source.html#l00120">pktoolsAlgorithmProvider.py:120</a> [...]
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pktoolsAlgorithm_8py_source.html b/doc/html/pktoolsAlgorithm_8py_source.html
deleted file mode 100644
index 21c7881..0000000
--- a/doc/html/pktoolsAlgorithm_8py_source.html
+++ /dev/null
@@ -1,129 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/pktoolsAlgorithm.py Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pktoolsAlgorithm.py</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment"># -*- coding: utf-8 -*-</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> </div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="stringliteral">    pktoolsAlgorithm.py</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="stringliteral">    ---------------------</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="stringliteral">    Date                 : April 2015</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="stringliteral">    Copyright            : (C) 2015 by Pieter Kempeneers</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="stringliteral">    Email                : kempenep at gmail dot com</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="stringliteral">*   This program is free software; you can redistribute it and/or modify  *</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="stringliteral">*   it under the terms of the GNU General Public License as published by  *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="stringliteral">*   the Free Software Foundation; either version 2 of the License, or     *</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="stringliteral">*   (at your option) any later version.                                   *</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> __author__ = <span class="stringliteral">'Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> __date__ = <span class="stringliteral">'April 2015'</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> __copyright__ = <span class="stringliteral">'(C) 2015, Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"># This will get replaced with a git SHA1 when you do a git archive</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> __revision__ = <span class="stringliteral">'$Format:%H$'</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">from</span> processing.core.GeoAlgorithm <span class="keyword">import</span> GeoAlgorithm</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> </div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">import</span> os</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">from</span> PyQt4 <span class="keyword">import</span> QtGui</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">from</span> pktools.pktoolsUtils <span class="keyword">import</span> pktoolsUtils</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> </div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterFile</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterBoolean</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterNumber</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterString</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterSelection</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="keyword">from</span> processing.core.outputs <span class="keyword">import</span> OutputFile</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="keyword">from</span> processing.core.outputs <span class="keyword">import</span> OutputRaster</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="keyword">from</span> processing.core.outputs <span class="keyword">import</span> OutputVector</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> </div>
-<div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html">   41</a></span> <span class="keyword">class </span><a class="code" href="classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html">pktoolsAlgorithm</a>(GeoAlgorithm):</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span> </div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     <span class="keyword">def </span>getIcon(self):</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>         filepath = os.path.dirname(__file__) + <span class="stringliteral">"/logo.png"</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>         <span class="keywordflow">return</span> QtGui.QIcon(filepath)</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span> </div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     <span class="keyword">def </span>checkBeforeOpeningParametersDialog(self):</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>             path = pktoolsUtils.pktoolsPath()</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>             <span class="keywordflow">if</span> path == <span class="stringliteral">""</span>:</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>                 <span class="keywordflow">return</span> <span class="stringliteral">"pktools folder is not configured.\nPlease configure it before running pktools algorithms."</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     </div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     <span class="keyword">def </span>help(self):</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span> </div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>         <span class="comment">#utilityName=self.__class__.__name__</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>         helpUrl = <span class="stringliteral">'http://pktools.nongnu.org/html/{}.html'</span>.format(self.cliName())</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>         <span class="keywordflow">return</span> <span class="keyword">False</span>, helpUrl        </div>
-<div class="ttc" id="classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm_html"><div class="ttname"><a href="classqgis_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html">qgis.pktoolsAlgorithm.pktoolsAlgorithm</a></div><div class="ttdef"><b>Definition:</b> <a href="pktoolsAlgorithm_8py_source.html#l00041">pktoolsAlgorithm.py:41</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pktoolsUtils_8py_source.html b/doc/html/pktoolsUtils_8py_source.html
deleted file mode 100644
index dbf8928..0000000
--- a/doc/html/pktoolsUtils_8py_source.html
+++ /dev/null
@@ -1,166 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/pktoolsUtils.py Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pktoolsUtils.py</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment"># -*- coding: utf-8 -*-</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> </div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="stringliteral">    pktoolsUtils.py</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="stringliteral">    ---------------------</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="stringliteral">    Date                 : April 2015</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="stringliteral">    Copyright            : (C) 2015 by Pieter Kempeneers</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="stringliteral">    Email                : kempenep at gmail dot com</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="stringliteral">*   This program is free software; you can redistribute it and/or modify  *</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="stringliteral">*   it under the terms of the GNU General Public License as published by  *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="stringliteral">*   the Free Software Foundation; either version 2 of the License, or     *</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="stringliteral">*   (at your option) any later version.                                   *</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> __author__ = <span class="stringliteral">'Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> __date__ = <span class="stringliteral">'April 2015'</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> __copyright__ = <span class="stringliteral">'(C) 2015, Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"># This will get replaced with a git SHA1 when you do a git archive</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> __revision__ = <span class="stringliteral">'$Format:%H$'</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">from</span> <a class="code" href="namespacePyQt4_1_1QtCore.html">PyQt4.QtCore</a> <span class="keyword">import</span> *</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">from</span> <a class="code" href="namespacePyQt4_1_1QtGui.html">PyQt4.QtGui</a> <span class="keyword">import</span> *</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">import</span> os</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">import</span> subprocess</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">from</span> <a class="code" href="namespaceqgis_1_1core.html">qgis.core</a> <span class="keyword">import</span> QgsApplication</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">from</span> processing.core.ProcessingLog <span class="keyword">import</span> ProcessingLog</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">from</span> processing.core.ProcessingConfig <span class="keyword">import</span> ProcessingConfig</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">from</span> processing.tools.system <span class="keyword">import</span> isWindows, isMac, userFolder</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> </div>
-<div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="classqgis_1_1pktoolsUtils_1_1pktoolsUtils.html">   35</a></span> <span class="keyword">class </span><a class="code" href="classqgis_1_1pktoolsUtils_1_1pktoolsUtils.html">pktoolsUtils</a>():</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> </div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>     PKTOOLS_FOLDER = <span class="stringliteral">"PKTOOLS_FOLDER"</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>     @staticmethod</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     <span class="keyword">def </span>pktoolsPath():</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>         folder = ProcessingConfig.getSetting(pktoolsUtils.PKTOOLS_FOLDER)</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span> </div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>         <span class="keywordflow">if</span> folder <span class="keywordflow">is</span> <span class="keywordtype">None</span> <span class="keywordflow">or</span> folder == <span class="stringliteral">''</span>:</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>             <span class="keywordflow">if</span> isWindows():</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>                 testfolder = os.path.join(os.path.dirname(QgsApplication.prefixPath()), <span class="stringliteral">'pktools'</span>)</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>                 testfolder = os.path.join(testfolder, <span class="stringliteral">'bin'</span>)</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>                 <span class="keywordflow">if</span> os.path.exists(os.path.join(testfolder, <span class="stringliteral">'pkinfo'</span>)):</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>                     folder = testfolder</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>                 folder = testfolder</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>             <span class="keywordflow">else</span>:</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>                 testfolder = <span class="stringliteral">"/usr/bin"</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>                 <span class="keywordflow">if</span> os.path.exists(os.path.join(testfolder, <span class="stringliteral">"pkinfo"</span>)):</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>                     folder = testfolder</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>                 <span class="keywordflow">else</span>:</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>                     testfolder = <span class="stringliteral">"/usr/local/bin"</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>                     <span class="keywordflow">if</span> os.path.exists(os.path.join(testfolder, <span class="stringliteral">"pkinfo"</span>)):</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>                         folder = testfolder</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>                     folder = testfolder</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>         <span class="keywordflow">return</span> folder</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span> </div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     @staticmethod</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     <span class="keyword">def </span>runpktools(commands, progress):</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>         settings = QSettings()<span class="comment">#from gdal</span></div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>         loglines = []</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>         loglines.append(<span class="stringliteral">"pktools execution console output"</span>)</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>         loglines.append(commands)</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>         progress.setInfo(<span class="stringliteral">'pktools command:'</span>)</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>         commandline = <span class="stringliteral">" "</span>.join(commands)</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>         progress.setCommand(commandline)</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>         proc = subprocess.Popen(</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>             commandline,</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>             shell=<span class="keyword">True</span>,</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>             stdout=subprocess.PIPE,</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>             stdin=open(os.devnull),</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>             stderr=subprocess.STDOUT,</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>             universal_newlines=<span class="keyword">True</span>,</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>         ).stdout</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>         progress.setInfo(<span class="stringliteral">'pktools command output:'</span>)</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span> </div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>         <span class="keywordflow">for</span> line <span class="keywordflow">in</span> iter(proc.readline, <span class="stringliteral">""</span>):</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>             progress.setConsoleInfo(line)</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>             loglines.append(line)</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>         ProcessingLog.addToLog(ProcessingLog.LOG_INFO, loglines)</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span> </div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>         ProcessingLog.addToLog(ProcessingLog.LOG_INFO, commandline)</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>         pktoolsUtils.consoleOutput = loglines</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span> </div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span> <span class="comment">#    @staticmethod</span></div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span> <span class="comment">#    def getConsoleOutput():</span></div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span> <span class="comment">#        return pktoolsUtils.consoleOutput</span></div>
-<div class="ttc" id="namespacePyQt4_1_1QtCore_html"><div class="ttname"><a href="namespacePyQt4_1_1QtCore.html">QtCore</a></div></div>
-<div class="ttc" id="namespaceqgis_1_1core_html"><div class="ttname"><a href="namespaceqgis_1_1core.html">core</a></div></div>
-<div class="ttc" id="classqgis_1_1pktoolsUtils_1_1pktoolsUtils_html"><div class="ttname"><a href="classqgis_1_1pktoolsUtils_1_1pktoolsUtils.html">qgis.pktoolsUtils.pktoolsUtils</a></div><div class="ttdef"><b>Definition:</b> <a href="pktoolsUtils_8py_source.html#l00035">pktoolsUtils.py:35</a></div></div>
-<div class="ttc" id="namespacePyQt4_1_1QtGui_html"><div class="ttname"><a href="namespacePyQt4_1_1QtGui.html">QtGui</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pktools_2ProcessingPktoolsPlugin_8py_source.html b/doc/html/pktools_2ProcessingPktoolsPlugin_8py_source.html
deleted file mode 100644
index 6dff032..0000000
--- a/doc/html/pktools_2ProcessingPktoolsPlugin_8py_source.html
+++ /dev/null
@@ -1,123 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/pktools/ProcessingPktoolsPlugin.py Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li><li class="navelem"><a class="el" href="dir_b7cc22b4453454f1e686d9a2e78d988d.html">pktools</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">ProcessingPktoolsPlugin.py</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment"># -*- coding: utf-8 -*-</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> </div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="stringliteral">    ProcessingPktoolsPlugin.py</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="stringliteral">    ---------------------</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="stringliteral">    Date                 : April 2015</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="stringliteral">    Copyright            : (C) 2015 by Pieter Kempeneers</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="stringliteral">    Email                : kempenep at gmail dot com</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="stringliteral">*   This program is free software; you can redistribute it and/or modify  *</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="stringliteral">*   it under the terms of the GNU General Public License as published by  *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="stringliteral">*   the Free Software Foundation; either version 2 of the License, or     *</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="stringliteral">*   (at your option) any later version.                                   *</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> __author__ = <span class="stringliteral">'Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> __date__ = <span class="stringliteral">'April 2015'</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> __copyright__ = <span class="stringliteral">'(C) 2015, Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"># This will get replaced with a git SHA1 when you do a git archive</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> __revision__ = <span class="stringliteral">'$Format:%H$'</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">import</span> os, sys</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">import</span> inspect</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> </div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">from</span> <a class="code" href="namespaceqgis_1_1core.html">qgis.core</a> <span class="keyword">import</span> *</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> </div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">from</span> processing.core.Processing <span class="keyword">import</span> Processing</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">from</span> pktools.pktoolsAlgorithmProvider <span class="keyword">import</span> pktoolsAlgorithmProvider</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> </div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> cmd_folder = os.path.split(inspect.getfile(inspect.currentframe()))[0]</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> </div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keywordflow">if</span> cmd_folder <span class="keywordflow">not</span> <span class="keywordflow">in</span> sys.path:</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>     sys.path.insert(0, cmd_folder)</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> </div>
-<div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classqgis_1_1pktools_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin.html">   40</a></span> <span class="keyword">class </span><a class="code" href="classqgis_1_1pktools_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin.html">ProcessingPktoolsPlugin</a>:</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     <span class="keyword">def </span>__init__(self):</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>         self.<a class="code" href="classqgis_1_1pktools_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin.html#a6bde09ef68ae5df5d481923313f6318e">provider</a> = pktoolsAlgorithmProvider()</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span> </div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     <span class="keyword">def </span>initGui(self):</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>         Processing.addProvider(self.<a class="code" href="classqgis_1_1pktools_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin.html#a6bde09ef68ae5df5d481923313f6318e">provider</a>)</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span> </div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     <span class="keyword">def </span>unload(self):</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>         Processing.removeProvider(self.<a class="code" href="classqgis_1_1pktools_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin.html#a6bde09ef68ae5df5d481923313f6318e">provider</a>)</div>
-<div class="ttc" id="classqgis_1_1pktools_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin_html"><div class="ttname"><a href="classqgis_1_1pktools_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin.html">qgis.pktools.ProcessingPktoolsPlugin.ProcessingPktoolsPlugin</a></div><div class="ttdef"><b>Definition:</b> <a href="pktools_2ProcessingPktoolsPlugin_8py_source.html#l00040">ProcessingPktoolsPlugin.py:40</a></div></div>
-<div class="ttc" id="namespaceqgis_1_1core_html"><div class="ttname"><a href="namespaceqgis_1_1core.html">core</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin_html_a6bde09ef68ae5df5d481923313f6318e"><div class="ttname"><a href="classqgis_1_1pktools_1_1ProcessingPktoolsPlugin_1_1ProcessingPktoolsPlugin.html#a6bde09ef68ae5df5d481923313f6318e">qgis.pktools.ProcessingPktoolsPlugin.ProcessingPktoolsPlugin.provider</a></div><div class="ttdeci">provider</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2ProcessingPktoolsPlugin_8py_source.html#l00 [...]
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pktools_2____init_____8py_source.html b/doc/html/pktools_2____init_____8py_source.html
deleted file mode 100644
index e06a6bd..0000000
--- a/doc/html/pktools_2____init_____8py_source.html
+++ /dev/null
@@ -1,103 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/pktools/__init__.py Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li><li class="navelem"><a class="el" href="dir_b7cc22b4453454f1e686d9a2e78d988d.html">pktools</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">__init__.py</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment"># -*- coding: utf-8 -*-</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> </div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="stringliteral">    __init__.py</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="stringliteral">    ---------------------</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="stringliteral">    Date                 : April 2015</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="stringliteral">    Copyright            : (C) 2015 by Pieter Kempeneers</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="stringliteral">    Email                : kempenep at gmail dot com</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="stringliteral">*   This program is free software; you can redistribute it and/or modify  *</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="stringliteral">*   it under the terms of the GNU General Public License as published by  *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="stringliteral">*   the Free Software Foundation; either version 2 of the License, or     *</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="stringliteral">*   (at your option) any later version.                                   *</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> __author__ = <span class="stringliteral">'Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> __date__ = <span class="stringliteral">'April 2015'</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> __copyright__ = <span class="stringliteral">'(C) 2015, Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"># This will get replaced with a git SHA1 when you do a git archive</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> __revision__ = <span class="stringliteral">'$Format:%H$'</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> </div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">def </span>classFactory(iface):</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span>     <span class="keyword">from</span> pktools.ProcessingPktoolsPlugin <span class="keyword">import</span> ProcessingPktoolsPlugin</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span>     <span class="keywordflow">return</span> ProcessingPktoolsPlugin()</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>     <span class="comment">#of beter met ifacer argument?</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span>     <span class="comment">#return ProcessingPktoolsPlugin(iface)</span></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pktools_2pkcomposite_8py_source.html b/doc/html/pktools_2pkcomposite_8py_source.html
deleted file mode 100644
index f68f7dd..0000000
--- a/doc/html/pktools_2pkcomposite_8py_source.html
+++ /dev/null
@@ -1,249 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/pktools/pkcomposite.py Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li><li class="navelem"><a class="el" href="dir_b7cc22b4453454f1e686d9a2e78d988d.html">pktools</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkcomposite.py</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment"># -*- coding: utf-8 -*-</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> </div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="stringliteral">    pkcomposite.py</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="stringliteral">    ---------------------</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="stringliteral">    Date                 : April 2015</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="stringliteral">    Copyright            : (C) 2015 by Pieter Kempeneers</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="stringliteral">    Email                : kempenep at gmail dot com</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="stringliteral">*   This program is free software; you can redistribute it and/or modify  *</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="stringliteral">*   it under the terms of the GNU General Public License as published by  *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="stringliteral">*   the Free Software Foundation; either version 2 of the License, or     *</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="stringliteral">*   (at your option) any later version.                                   *</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> __author__ = <span class="stringliteral">'Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> __date__ = <span class="stringliteral">'April 2015'</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> __copyright__ = <span class="stringliteral">'(C) 2015, Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"># This will get replaced with a git SHA1 when you do a git archive</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> __revision__ = <span class="stringliteral">'$Format:%H$'</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">import</span> os</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">from</span> pktoolsUtils <span class="keyword">import</span> pktoolsUtils</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">from</span> pktoolsAlgorithm <span class="keyword">import</span> pktoolsAlgorithm</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterMultipleInput</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterRaster</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">from</span> processing.core.outputs <span class="keyword">import</span> OutputRaster</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterSelection</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterNumber</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterString</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterBoolean</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterExtent</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
-<div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">   38</a></span> <span class="keyword">class </span><a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">pkcomposite</a>(pktoolsAlgorithm):</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> </div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     INPUT = <span class="stringliteral">"INPUT"</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     OUTPUT = <span class="stringliteral">"OUTPUT"</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     CRULE_OPTIONS = [<span class="stringliteral">"overwrite"</span>, <span class="stringliteral">"maxndvi"</span>, <span class="stringliteral">"maxband"</span>, <span class="stringliteral">"minband"</span>, <span class="stringliteral">"validband"</span>, <span class="stringliteral">"mean"</span>, <span class="stringliteral">"mode"</span>, <sp [...]
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     CRULE = <span class="stringliteral">"CRULE"</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     DX = <span class="stringliteral">"DX"</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     DY = <span class="stringliteral">"DY"</span></div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     PROJWIN = <span class="stringliteral">'PROJWIN'</span></div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     CB = <span class="stringliteral">"CB"</span></div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     SRCNODATA = <span class="stringliteral">"SRCNODATA"</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     BNDNODATA = <span class="stringliteral">"BNDNODATA"</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     DSTNODATA = <span class="stringliteral">"DSTNODATA"</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     MINGUI = <span class="stringliteral">"MINGUI"</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     MAXGUI = <span class="stringliteral">"MAXGUI"</span></div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     RESAMPLE_OPTIONS = [<span class="stringliteral">'near'</span>, <span class="stringliteral">'bilinear'</span>]</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     RESAMPLE = <span class="stringliteral">"RESAMPLE"</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     RTYPE = <span class="stringliteral">'RTYPE'</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     TYPE = [<span class="stringliteral">'none'</span>, <span class="stringliteral">'Byte'</span>,<span class="stringliteral">'Int16'</span>,<span class="stringliteral">'UInt16'</span>,<span class="stringliteral">'UInt32'</span>,<span class="stringliteral">'Int32'</span>,<span class="stringliteral">'Float32'</span>,<span class="stringliteral">'Float64&# [...]
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     EXTRA = <span class="stringliteral">'EXTRA'</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span> </div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     <span class="keyword">def </span>cliName(self):</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>         <span class="keywordflow">return</span> <span class="stringliteral">"pkcomposite"</span></div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span> </div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     <span class="keyword">def </span>defineCharacteristics(self):</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>         self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#ae5c19770832f35898b752105d828721b">name</a> = <span class="stringliteral">"composite/mosaic raster datasets"</span></div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>         self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#ae880cea72e765e6339ad058eee48338b">group</a> = <span class="stringliteral">"[pktools] raster"</span></div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>         self.addParameter(ParameterMultipleInput(self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#afb22832137b08d855bea38be798f09ea">INPUT</a>, <span class="stringliteral">'Input layer raster data set'</span>,ParameterMultipleInput.TYPE_RASTER))</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#a47345a51323bb1691ca35ece877efb1d">CRULE</a>,<span class="stringliteral">"composite rule"</span>,self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#a73b416e6ed08b45bd7efcfdfdaba4ab6">CRULE_OPTIONS</a>, 0))</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>         self.addOutput(OutputRaster(self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#ad095de90efcd6d1da7bc2590ce9a0ee9">OUTPUT</a>, <span class="stringliteral">"Output raster data set"</span>))</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#a28599f5565263acdfe7ed1eadc976bde">RTYPE</a>, <span class="stringliteral">'Output raster type (leave as none to keep original type)'</span>, self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#a5c1caab4d9c94ad9d0648348a364f133">TYPE</a>, 0))</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>         self.addParameter(ParameterNumber(self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#a7792dd836e222b13caadc31417e90a6b">DX</a>, <span class="stringliteral">"Output resolution in x (leave 0 for no change)"</span>,0.0,<span class="keywordtype">None</span>,0.0))</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>         self.addParameter(ParameterNumber(self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#aa940dd19d5252f4fef53d8257cd7811d">DY</a>, <span class="stringliteral">"Output resolution in y (leave 0 for no change)"</span>,0.0,<span class="keywordtype">None</span>,0.0))</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>         self.addParameter(ParameterExtent(self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#a48b92a1335d66add3766103500c24a4d">PROJWIN</a>,</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>                           <span class="stringliteral">'Georeferenced boundingbox'</span>))</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#a450395c11852e1f005bffe466925c42d">CB</a>, <span class="stringliteral">"band index(es) used for the composite rule (0 based), e.g., 0;1 in case of maxndvi"</span>,<span class="stringliteral">"0"</span>))</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#a2e5828b6eb4912e7fd035d9e885b54c4">SRCNODATA</a>, <span class="stringliteral">"invalid value(s) for input raster dataset (e.g., 0;255)"</span>,<span class="stringliteral">"none"</span>))</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#a3eeab89eabe7294252f9610977f10c09">BNDNODATA</a>, <span class="stringliteral">"Band(s) in input image to check if pixel is valid (e.g., 0;1)"</span>,<span class="stringliteral">"0"</span>))</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#ae80eeebbec867494eb799574a2a22346">DSTNODATA</a>, <span class="stringliteral">"nodata value to put in output raster dataset if not valid or out of bounds"</span>,<span class="stringliteral">"0"</span>))</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#a1523a0a2abdd0cf84c1c794e8d2eed89">MINGUI</a>, <span class="stringliteral">"flag values smaller or equal to this value as invalid"</span>,<span class="stringliteral">"none"</span>))</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#aaeab6fdf6429c284df503d0ee29eee24">MAXGUI</a>, <span class="stringliteral">"flag values smaller or equal to this value as invalid"</span>,<span class="stringliteral">"none"</span>))</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#af1a5711589eb0837bf2f500508a6373e">RESAMPLE</a>,<span class="stringliteral">"resampling method"</span>,self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#aff4540989ad400292a4bb23fba35a598">RESAMPLE_OPTIONS</a>, 0))</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#ac2d1f35938c4fc3a99039e06384df9a7">EXTRA</a>,</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>                           <span class="stringliteral">'Additional parameters'</span>, <span class="stringliteral">'-of GTiff'</span>, optional=<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span> </div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     <span class="keyword">def </span>processAlgorithm(self, progress):</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>         cliPath = <span class="stringliteral">'"'</span> + os.path.join(pktoolsUtils.pktoolsPath(), self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#a3965eb26c90ee1566a43a333540654fb">cliName</a>()) + <span class="stringliteral">'"'</span></div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>         commands = [cliPath]</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span> </div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>         input=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#afb22832137b08d855bea38be798f09ea">INPUT</a>)</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>         inputFiles = input.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>         <span class="keywordflow">for</span> inputFile <span class="keywordflow">in</span> inputFiles:</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>             commands.append(<span class="stringliteral">'-i'</span>)</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>             commands.append(<span class="stringliteral">'"'</span> + inputFile + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span> </div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>         <span class="keywordflow">if</span> self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#a5c1caab4d9c94ad9d0648348a364f133">TYPE</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#a28599f5565263acdfe7ed1eadc976bde">RTYPE</a>)] != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>             commands.append(<span class="stringliteral">'-ot'</span>)</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>             commands.append(self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#a5c1caab4d9c94ad9d0648348a364f133">TYPE</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#a28599f5565263acdfe7ed1eadc976bde">RTYPE</a>)])</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>         output=self.getOutputValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#ad095de90efcd6d1da7bc2590ce9a0ee9">OUTPUT</a>)</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>         <span class="keywordflow">if</span> output != <span class="stringliteral">""</span>:</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>             commands.append(<span class="stringliteral">"-o"</span>)</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>             commands.append(<span class="stringliteral">'"'</span> + output + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>         commands.append(<span class="stringliteral">"-cr"</span>)</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>         commands.append(self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#a73b416e6ed08b45bd7efcfdfdaba4ab6">CRULE_OPTIONS</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#a47345a51323bb1691ca35ece877efb1d">CRULE</a>)])</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>         <span class="keywordflow">if</span> self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#a7792dd836e222b13caadc31417e90a6b">DX</a>) != 0:</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>             commands.append(<span class="stringliteral">"-dx"</span>)</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>             commands.append(str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#a7792dd836e222b13caadc31417e90a6b">DX</a>)))</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>         <span class="keywordflow">if</span> self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#aa940dd19d5252f4fef53d8257cd7811d">DY</a>) != 0:</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>             commands.append(<span class="stringliteral">"-dy"</span>)</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>             commands.append(str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#aa940dd19d5252f4fef53d8257cd7811d">DY</a>)))</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>         projwin = str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#a48b92a1335d66add3766103500c24a4d">PROJWIN</a>))</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>         regionCoords = projwin.split(<span class="stringliteral">','</span>)</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>         commands.append(<span class="stringliteral">'-ulx'</span>)</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>         commands.append(regionCoords[0])</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>         commands.append(<span class="stringliteral">'-uly'</span>)</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>         commands.append(regionCoords[3])</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>         commands.append(<span class="stringliteral">'-lrx'</span>)</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>         commands.append(regionCoords[1])</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>         commands.append(<span class="stringliteral">'-lry'</span>)</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>         commands.append(regionCoords[2])</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>         cb=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#a450395c11852e1f005bffe466925c42d">CB</a>)</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>         cbValues = cb.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>         <span class="keywordflow">for</span> cbValue <span class="keywordflow">in</span> cbValues:</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>                 commands.append(<span class="stringliteral">'-cb'</span>)</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>                 commands.append(cbValue)</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>         srcnodata=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#a2e5828b6eb4912e7fd035d9e885b54c4">SRCNODATA</a>)</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>         <span class="keywordflow">if</span> srcnodata != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>             srcnodataValues = srcnodata.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>             <span class="keywordflow">for</span> srcnodataValue <span class="keywordflow">in</span> srcnodataValues:</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>                 commands.append(<span class="stringliteral">'-srcnodata'</span>)</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>                 commands.append(srcnodataValue)</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>         bndnodata=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#a3eeab89eabe7294252f9610977f10c09">BNDNODATA</a>)</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>         bndnodataValues = bndnodata.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>         <span class="keywordflow">for</span> bndnodataValue <span class="keywordflow">in</span> bndnodataValues:</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>             commands.append(<span class="stringliteral">'-bndnodata'</span>)</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>             commands.append(bndnodataValue)</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>         commands.append(<span class="stringliteral">'-dstnodata'</span>)</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>         commands.append(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#ae80eeebbec867494eb799574a2a22346">DSTNODATA</a>))</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span> </div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>         minGUI=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#a1523a0a2abdd0cf84c1c794e8d2eed89">MINGUI</a>)</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>         <span class="keywordflow">if</span> minGUI != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>             minValues = minGUI.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>             <span class="keywordflow">for</span> minValue <span class="keywordflow">in</span> minValues:</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>                 commands.append(<span class="stringliteral">'-min'</span>)</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>                 commands.append(minValue)</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>         maxGUI=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#aaeab6fdf6429c284df503d0ee29eee24">MAXGUI</a>)</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>         <span class="keywordflow">if</span> maxGUI != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>             maxValues = maxGUI.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>             <span class="keywordflow">for</span> maxValue <span class="keywordflow">in</span> maxValues:</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>                 commands.append(<span class="stringliteral">'-max'</span>)</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>                 commands.append(maxValue)</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>         commands.append(<span class="stringliteral">"-r"</span>)</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>         commands.append(self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#aff4540989ad400292a4bb23fba35a598">RESAMPLE_OPTIONS</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#af1a5711589eb0837bf2f500508a6373e">RESAMPLE</a>)])</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>         extra = str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#ac2d1f35938c4fc3a99039e06384df9a7">EXTRA</a>))</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>         <span class="keywordflow">if</span> len(extra) > 0:</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>             commands.append(extra)</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span> </div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>         pktoolsUtils.runpktools(commands, progress)</div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite_html_a28599f5565263acdfe7ed1eadc976bde"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#a28599f5565263acdfe7ed1eadc976bde">qgis.pktools.pkcomposite.pkcomposite.RTYPE</a></div><div class="ttdeci">string RTYPE</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkcomposite_8py_source.html#l00055">pkcomposite.py:55</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite_html_af1a5711589eb0837bf2f500508a6373e"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#af1a5711589eb0837bf2f500508a6373e">qgis.pktools.pkcomposite.pkcomposite.RESAMPLE</a></div><div class="ttdeci">string RESAMPLE</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkcomposite_8py_source.html#l00054">pkcomposite.py:54</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite_html_ac2d1f35938c4fc3a99039e06384df9a7"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#ac2d1f35938c4fc3a99039e06384df9a7">qgis.pktools.pkcomposite.pkcomposite.EXTRA</a></div><div class="ttdeci">string EXTRA</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkcomposite_8py_source.html#l00057">pkcomposite.py:57</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite_html_a5c1caab4d9c94ad9d0648348a364f133"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#a5c1caab4d9c94ad9d0648348a364f133">qgis.pktools.pkcomposite.pkcomposite.TYPE</a></div><div class="ttdeci">list TYPE</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkcomposite_8py_source.html#l00056">pkcomposite.py:56</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite_html_a3965eb26c90ee1566a43a333540654fb"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#a3965eb26c90ee1566a43a333540654fb">qgis.pktools.pkcomposite.pkcomposite.cliName</a></div><div class="ttdeci">def cliName</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkcomposite_8py_source.html#l00059">pkcomposite.py:59</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite_html_ae880cea72e765e6339ad058eee48338b"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#ae880cea72e765e6339ad058eee48338b">qgis.pktools.pkcomposite.pkcomposite.group</a></div><div class="ttdeci">group</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkcomposite_8py_source.html#l00064">pkcomposite.py:64</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite_html_ae5c19770832f35898b752105d828721b"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#ae5c19770832f35898b752105d828721b">qgis.pktools.pkcomposite.pkcomposite.name</a></div><div class="ttdeci">name</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkcomposite_8py_source.html#l00063">pkcomposite.py:63</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite_html_a1523a0a2abdd0cf84c1c794e8d2eed89"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#a1523a0a2abdd0cf84c1c794e8d2eed89">qgis.pktools.pkcomposite.pkcomposite.MINGUI</a></div><div class="ttdeci">string MINGUI</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkcomposite_8py_source.html#l00051">pkcomposite.py:51</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite_html_afb22832137b08d855bea38be798f09ea"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#afb22832137b08d855bea38be798f09ea">qgis.pktools.pkcomposite.pkcomposite.INPUT</a></div><div class="ttdeci">string INPUT</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkcomposite_8py_source.html#l00040">pkcomposite.py:40</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite_html_a48b92a1335d66add3766103500c24a4d"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#a48b92a1335d66add3766103500c24a4d">qgis.pktools.pkcomposite.pkcomposite.PROJWIN</a></div><div class="ttdeci">string PROJWIN</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkcomposite_8py_source.html#l00046">pkcomposite.py:46</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite_html_aa940dd19d5252f4fef53d8257cd7811d"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#aa940dd19d5252f4fef53d8257cd7811d">qgis.pktools.pkcomposite.pkcomposite.DY</a></div><div class="ttdeci">string DY</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkcomposite_8py_source.html#l00045">pkcomposite.py:45</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite_html"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html">qgis.pktools.pkcomposite.pkcomposite</a></div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkcomposite_8py_source.html#l00038">pkcomposite.py:38</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite_html_a2e5828b6eb4912e7fd035d9e885b54c4"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#a2e5828b6eb4912e7fd035d9e885b54c4">qgis.pktools.pkcomposite.pkcomposite.SRCNODATA</a></div><div class="ttdeci">string SRCNODATA</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkcomposite_8py_source.html#l00048">pkcomposite.py:48</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite_html_a3eeab89eabe7294252f9610977f10c09"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#a3eeab89eabe7294252f9610977f10c09">qgis.pktools.pkcomposite.pkcomposite.BNDNODATA</a></div><div class="ttdeci">string BNDNODATA</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkcomposite_8py_source.html#l00049">pkcomposite.py:49</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite_html_aaeab6fdf6429c284df503d0ee29eee24"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#aaeab6fdf6429c284df503d0ee29eee24">qgis.pktools.pkcomposite.pkcomposite.MAXGUI</a></div><div class="ttdeci">string MAXGUI</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkcomposite_8py_source.html#l00052">pkcomposite.py:52</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite_html_a47345a51323bb1691ca35ece877efb1d"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#a47345a51323bb1691ca35ece877efb1d">qgis.pktools.pkcomposite.pkcomposite.CRULE</a></div><div class="ttdeci">string CRULE</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkcomposite_8py_source.html#l00043">pkcomposite.py:43</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite_html_a450395c11852e1f005bffe466925c42d"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#a450395c11852e1f005bffe466925c42d">qgis.pktools.pkcomposite.pkcomposite.CB</a></div><div class="ttdeci">string CB</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkcomposite_8py_source.html#l00047">pkcomposite.py:47</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite_html_a7792dd836e222b13caadc31417e90a6b"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#a7792dd836e222b13caadc31417e90a6b">qgis.pktools.pkcomposite.pkcomposite.DX</a></div><div class="ttdeci">string DX</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkcomposite_8py_source.html#l00044">pkcomposite.py:44</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite_html_a73b416e6ed08b45bd7efcfdfdaba4ab6"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#a73b416e6ed08b45bd7efcfdfdaba4ab6">qgis.pktools.pkcomposite.pkcomposite.CRULE_OPTIONS</a></div><div class="ttdeci">list CRULE_OPTIONS</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkcomposite_8py_source.html#l00042">pkcomposite.py:42</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite_html_ae80eeebbec867494eb799574a2a22346"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#ae80eeebbec867494eb799574a2a22346">qgis.pktools.pkcomposite.pkcomposite.DSTNODATA</a></div><div class="ttdeci">string DSTNODATA</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkcomposite_8py_source.html#l00050">pkcomposite.py:50</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite_html_aff4540989ad400292a4bb23fba35a598"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#aff4540989ad400292a4bb23fba35a598">qgis.pktools.pkcomposite.pkcomposite.RESAMPLE_OPTIONS</a></div><div class="ttdeci">list RESAMPLE_OPTIONS</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkcomposite_8py_source.html#l00053">pkcomposite.py:53</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite_html_ad095de90efcd6d1da7bc2590ce9a0ee9"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkcomposite_1_1pkcomposite.html#ad095de90efcd6d1da7bc2590ce9a0ee9">qgis.pktools.pkcomposite.pkcomposite.OUTPUT</a></div><div class="ttdeci">string OUTPUT</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkcomposite_8py_source.html#l00041">pkcomposite.py:41</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pktools_2pkcrop_8py_source.html b/doc/html/pktools_2pkcrop_8py_source.html
deleted file mode 100644
index 4a7196e..0000000
--- a/doc/html/pktools_2pkcrop_8py_source.html
+++ /dev/null
@@ -1,216 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/pktools/pkcrop.py Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li><li class="navelem"><a class="el" href="dir_b7cc22b4453454f1e686d9a2e78d988d.html">pktools</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkcrop.py</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment"># -*- coding: utf-8 -*-</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> </div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="stringliteral">    pkcrop.py</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="stringliteral">    ---------------------</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="stringliteral">    Date                 : April 2015</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="stringliteral">    Copyright            : (C) 2015 by Pieter Kempeneers</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="stringliteral">    Email                : kempenep at gmail dot com</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="stringliteral">*   This program is free software; you can redistribute it and/or modify  *</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="stringliteral">*   it under the terms of the GNU General Public License as published by  *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="stringliteral">*   the Free Software Foundation; either version 2 of the License, or     *</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="stringliteral">*   (at your option) any later version.                                   *</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> __author__ = <span class="stringliteral">'Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> __date__ = <span class="stringliteral">'April 2015'</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> __copyright__ = <span class="stringliteral">'(C) 2015, Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"># This will get replaced with a git SHA1 when you do a git archive</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> __revision__ = <span class="stringliteral">'$Format:%H$'</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">import</span> os</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">from</span> pktoolsUtils <span class="keyword">import</span> pktoolsUtils</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">from</span> pktoolsAlgorithm <span class="keyword">import</span> pktoolsAlgorithm</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterMultipleInput</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterRaster</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">from</span> processing.core.outputs <span class="keyword">import</span> OutputRaster</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterSelection</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterNumber</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterString</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterBoolean</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterExtent</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
-<div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">   38</a></span> <span class="keyword">class </span><a class="code" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">pkcrop</a>(pktoolsAlgorithm):</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> </div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     INPUT = <span class="stringliteral">"INPUT"</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     OUTPUT = <span class="stringliteral">"OUTPUT"</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     DX = <span class="stringliteral">"DX"</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     DY = <span class="stringliteral">"DY"</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     PROJWIN = <span class="stringliteral">'PROJWIN'</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     BAND = <span class="stringliteral">"BAND"</span></div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     NODATA = <span class="stringliteral">"NODATA"</span></div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     RESAMPLE_OPTIONS = [<span class="stringliteral">'near'</span>, <span class="stringliteral">'bilinear'</span>]</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     RESAMPLE = <span class="stringliteral">"RESAMPLE"</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     RTYPE = <span class="stringliteral">'RTYPE'</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     TYPE = [<span class="stringliteral">'none'</span>, <span class="stringliteral">'Byte'</span>,<span class="stringliteral">'Int16'</span>,<span class="stringliteral">'UInt16'</span>,<span class="stringliteral">'UInt32'</span>,<span class="stringliteral">'Int32'</span>,<span class="stringliteral">'Float32'</span>,<span class="stringliteral">'Float64&# [...]
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     EXTRA = <span class="stringliteral">'EXTRA'</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span> </div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     <span class="keyword">def </span>cliName(self):</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>         <span class="keywordflow">return</span> <span class="stringliteral">"pkcrop"</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span> </div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <span class="keyword">def </span>defineCharacteristics(self):</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>         self.<a class="code" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#ae937210a61feb138b0abc2cb67d6ad5b">name</a> = <span class="stringliteral">"crop raster datasets"</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>         self.<a class="code" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#ae2c4e89f56b83d8cab9b6d99c9645e80">group</a> = <span class="stringliteral">"[pktools] raster"</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>         self.addParameter(ParameterMultipleInput(self.<a class="code" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#a7309fd72361327278b1fefabfa7f03ad">INPUT</a>, <span class="stringliteral">'Input layer raster data set'</span>,ParameterMultipleInput.TYPE_RASTER))</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>         self.addOutput(OutputRaster(self.<a class="code" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#ac3c7e447a20304d204e1cb9d956a9eed">OUTPUT</a>, <span class="stringliteral">"Output raster data set"</span>))</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#a909bbe623577b51ae6427d73aa703c28">RTYPE</a>, <span class="stringliteral">'Output raster type (leave as none to keep original type)'</span>, self.<a class="code" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#a8135eba7dc27f89fef11c8cc226b77ca">TYPE</a>, 0))</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>         self.addParameter(ParameterNumber(self.<a class="code" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#ac728a472b77be42ab2b4de231c21fe79">DX</a>, <span class="stringliteral">"Output resolution in x (leave 0 for no change)"</span>,0.0,<span class="keywordtype">None</span>,0.0))</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>         self.addParameter(ParameterNumber(self.<a class="code" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#a89711319003fc990e2dedb83eb5405a3">DY</a>, <span class="stringliteral">"Output resolution in y (leave 0 for no change)"</span>,0.0,<span class="keywordtype">None</span>,0.0))</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>         self.addParameter(ParameterExtent(self.<a class="code" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#a1beaf0244ed19ce9af19072399c95f47">PROJWIN</a>,</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>                           <span class="stringliteral">'Georeferenced boundingbox'</span>))</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#a19fb0d5c68f226f6a9e7a939581b0970">NODATA</a>, <span class="stringliteral">"invalid value(s) for input raster dataset (e.g., 0;255)"</span>,<span class="stringliteral">"none"</span>))</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#a356b1c519f594aa18f0b8f7dbb83abf3">BAND</a>, <span class="stringliteral">"Band(s) in input image to crop, e.g., 0;1;2 (leave empty to retain all bands)"</span>,<span class="stringliteral">''</span>, optional=<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#ab207608ada15c93982967e03b10b7524">RESAMPLE</a>,<span class="stringliteral">"resampling method"</span>,self.<a class="code" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#a1b0888761b96112483aecfa774a9b8ab">RESAMPLE_OPTIONS</a>, 0))</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#a3076c24eb1c309b6f5091545d7bd78c9">EXTRA</a>,</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>                           <span class="stringliteral">'Additional parameters'</span>, <span class="stringliteral">'-of GTiff'</span>, optional=<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span> </div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>     <span class="keyword">def </span>processAlgorithm(self, progress):</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>         cliPath = <span class="stringliteral">'"'</span> + os.path.join(pktoolsUtils.pktoolsPath(), self.<a class="code" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#a6caffb1e09eec28b29ce9996e20b6cf9">cliName</a>()) + <span class="stringliteral">'"'</span></div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>         commands = [cliPath]</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span> </div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>         input=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#a7309fd72361327278b1fefabfa7f03ad">INPUT</a>)</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>         inputFiles = input.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>         <span class="keywordflow">for</span> inputFile <span class="keywordflow">in</span> inputFiles:</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>             commands.append(<span class="stringliteral">'-i'</span>)</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>             commands.append(<span class="stringliteral">'"'</span> + inputFile + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span> </div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>         <span class="keywordflow">if</span> self.<a class="code" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#a8135eba7dc27f89fef11c8cc226b77ca">TYPE</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#a909bbe623577b51ae6427d73aa703c28">RTYPE</a>)] != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>             commands.append(<span class="stringliteral">'-ot'</span>)</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>             commands.append(self.<a class="code" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#a8135eba7dc27f89fef11c8cc226b77ca">TYPE</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#a909bbe623577b51ae6427d73aa703c28">RTYPE</a>)])</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>         output=self.getOutputValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#ac3c7e447a20304d204e1cb9d956a9eed">OUTPUT</a>)</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>         <span class="keywordflow">if</span> output != <span class="stringliteral">""</span>:</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>             commands.append(<span class="stringliteral">"-o"</span>)</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>             commands.append(<span class="stringliteral">'"'</span> + output + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>         <span class="keywordflow">if</span> self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#ac728a472b77be42ab2b4de231c21fe79">DX</a>) != 0:</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>             commands.append(<span class="stringliteral">"-dx"</span>)</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>             commands.append(str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#ac728a472b77be42ab2b4de231c21fe79">DX</a>)))</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>         <span class="keywordflow">if</span> self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#a89711319003fc990e2dedb83eb5405a3">DY</a>) != 0:</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>             commands.append(<span class="stringliteral">"-dy"</span>)</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>             commands.append(str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#a89711319003fc990e2dedb83eb5405a3">DY</a>)))</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span> </div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>         projwin = str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#a1beaf0244ed19ce9af19072399c95f47">PROJWIN</a>))</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>         if(str(projwin).find(<span class="stringliteral">','</span>)>0):</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>            regionCoords = projwin.split(<span class="stringliteral">','</span>)</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>            commands.append(<span class="stringliteral">'-ulx'</span>)</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>            commands.append(regionCoords[0])</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>            commands.append(<span class="stringliteral">'-uly'</span>)</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>            commands.append(regionCoords[3])</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>            commands.append(<span class="stringliteral">'-lrx'</span>)</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>            commands.append(regionCoords[1])</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>            commands.append(<span class="stringliteral">'-lry'</span>)</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>            commands.append(regionCoords[2])</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span> </div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>         nodata=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#a19fb0d5c68f226f6a9e7a939581b0970">NODATA</a>)</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>         <span class="keywordflow">if</span> nodata != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>             nodataValues = nodata.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>             <span class="keywordflow">for</span> nodataValue <span class="keywordflow">in</span> nodataValues:</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>                 commands.append(<span class="stringliteral">'-nodata'</span>)</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>                 commands.append(nodataValue)</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>         </div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>         band=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#a356b1c519f594aa18f0b8f7dbb83abf3">BAND</a>)</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>         <span class="keywordflow">if</span> band != <span class="stringliteral">''</span>:</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>             bandValues = band.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>             <span class="keywordflow">for</span> bandValue <span class="keywordflow">in</span> bandValues:</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>                 commands.append(<span class="stringliteral">'-b'</span>)</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>                 commands.append(bandValue)</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>         commands.append(<span class="stringliteral">"-r"</span>)</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>         commands.append(self.<a class="code" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#a1b0888761b96112483aecfa774a9b8ab">RESAMPLE_OPTIONS</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#ab207608ada15c93982967e03b10b7524">RESAMPLE</a>)])</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span> </div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>         extra = str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#a3076c24eb1c309b6f5091545d7bd78c9">EXTRA</a>))</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>         <span class="keywordflow">if</span> len(extra) > 0:</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>             commands.append(extra)</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span> </div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>         pktoolsUtils.runpktools(commands, progress)</div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop_html_a8135eba7dc27f89fef11c8cc226b77ca"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#a8135eba7dc27f89fef11c8cc226b77ca">qgis.pktools.pkcrop.pkcrop.TYPE</a></div><div class="ttdeci">list TYPE</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkcrop_8py_source.html#l00050">pkcrop.py:50</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop_html_a1b0888761b96112483aecfa774a9b8ab"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#a1b0888761b96112483aecfa774a9b8ab">qgis.pktools.pkcrop.pkcrop.RESAMPLE_OPTIONS</a></div><div class="ttdeci">list RESAMPLE_OPTIONS</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkcrop_8py_source.html#l00047">pkcrop.py:47</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop_html_a19fb0d5c68f226f6a9e7a939581b0970"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#a19fb0d5c68f226f6a9e7a939581b0970">qgis.pktools.pkcrop.pkcrop.NODATA</a></div><div class="ttdeci">string NODATA</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkcrop_8py_source.html#l00046">pkcrop.py:46</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop_html_a6caffb1e09eec28b29ce9996e20b6cf9"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#a6caffb1e09eec28b29ce9996e20b6cf9">qgis.pktools.pkcrop.pkcrop.cliName</a></div><div class="ttdeci">def cliName</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkcrop_8py_source.html#l00053">pkcrop.py:53</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop_html_ac728a472b77be42ab2b4de231c21fe79"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#ac728a472b77be42ab2b4de231c21fe79">qgis.pktools.pkcrop.pkcrop.DX</a></div><div class="ttdeci">string DX</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkcrop_8py_source.html#l00042">pkcrop.py:42</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop_html_a1beaf0244ed19ce9af19072399c95f47"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#a1beaf0244ed19ce9af19072399c95f47">qgis.pktools.pkcrop.pkcrop.PROJWIN</a></div><div class="ttdeci">string PROJWIN</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkcrop_8py_source.html#l00044">pkcrop.py:44</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop_html_ae2c4e89f56b83d8cab9b6d99c9645e80"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#ae2c4e89f56b83d8cab9b6d99c9645e80">qgis.pktools.pkcrop.pkcrop.group</a></div><div class="ttdeci">group</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkcrop_8py_source.html#l00058">pkcrop.py:58</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop_html_a356b1c519f594aa18f0b8f7dbb83abf3"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#a356b1c519f594aa18f0b8f7dbb83abf3">qgis.pktools.pkcrop.pkcrop.BAND</a></div><div class="ttdeci">string BAND</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkcrop_8py_source.html#l00045">pkcrop.py:45</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop_html_ac3c7e447a20304d204e1cb9d956a9eed"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#ac3c7e447a20304d204e1cb9d956a9eed">qgis.pktools.pkcrop.pkcrop.OUTPUT</a></div><div class="ttdeci">string OUTPUT</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkcrop_8py_source.html#l00041">pkcrop.py:41</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop_html"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html">qgis.pktools.pkcrop.pkcrop</a></div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkcrop_8py_source.html#l00038">pkcrop.py:38</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop_html_ae937210a61feb138b0abc2cb67d6ad5b"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#ae937210a61feb138b0abc2cb67d6ad5b">qgis.pktools.pkcrop.pkcrop.name</a></div><div class="ttdeci">name</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkcrop_8py_source.html#l00057">pkcrop.py:57</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop_html_a7309fd72361327278b1fefabfa7f03ad"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#a7309fd72361327278b1fefabfa7f03ad">qgis.pktools.pkcrop.pkcrop.INPUT</a></div><div class="ttdeci">string INPUT</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkcrop_8py_source.html#l00040">pkcrop.py:40</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop_html_a909bbe623577b51ae6427d73aa703c28"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#a909bbe623577b51ae6427d73aa703c28">qgis.pktools.pkcrop.pkcrop.RTYPE</a></div><div class="ttdeci">string RTYPE</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkcrop_8py_source.html#l00049">pkcrop.py:49</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop_html_a3076c24eb1c309b6f5091545d7bd78c9"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#a3076c24eb1c309b6f5091545d7bd78c9">qgis.pktools.pkcrop.pkcrop.EXTRA</a></div><div class="ttdeci">string EXTRA</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkcrop_8py_source.html#l00051">pkcrop.py:51</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop_html_ab207608ada15c93982967e03b10b7524"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#ab207608ada15c93982967e03b10b7524">qgis.pktools.pkcrop.pkcrop.RESAMPLE</a></div><div class="ttdeci">string RESAMPLE</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkcrop_8py_source.html#l00048">pkcrop.py:48</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop_html_a89711319003fc990e2dedb83eb5405a3"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkcrop_1_1pkcrop.html#a89711319003fc990e2dedb83eb5405a3">qgis.pktools.pkcrop.pkcrop.DY</a></div><div class="ttdeci">string DY</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkcrop_8py_source.html#l00043">pkcrop.py:43</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pktools_2pkdiff__accuracy_8py_source.html b/doc/html/pktools_2pkdiff__accuracy_8py_source.html
deleted file mode 100644
index 485e9e5..0000000
--- a/doc/html/pktools_2pkdiff__accuracy_8py_source.html
+++ /dev/null
@@ -1,277 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/pktools/pkdiff_accuracy.py Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li><li class="navelem"><a class="el" href="dir_b7cc22b4453454f1e686d9a2e78d988d.html">pktools</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkdiff_accuracy.py</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment"># -*- coding: utf-8 -*-</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> </div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="stringliteral">    pkdiff_accuracy.py</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="stringliteral">    ---------------------</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="stringliteral">    Date                 : April 2015</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="stringliteral">    Copyright            : (C) 2015 by Pieter Kempeneers</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="stringliteral">    Email                : kempenep at gmail dot com</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="stringliteral">*   This program is free software; you can redistribute it and/or modify  *</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="stringliteral">*   it under the terms of the GNU General Public License as published by  *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="stringliteral">*   the Free Software Foundation; either version 2 of the License, or     *</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="stringliteral">*   (at your option) any later version.                                   *</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> __author__ = <span class="stringliteral">'Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> __date__ = <span class="stringliteral">'April 2015'</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> __copyright__ = <span class="stringliteral">'(C) 2015, Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"># This will get replaced with a git SHA1 when you do a git archive</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> __revision__ = <span class="stringliteral">'$Format:%H$'</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">import</span> os</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> </div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">from</span> <a class="code" href="namespacePyQt4_1_1QtCore.html">PyQt4.QtCore</a> <span class="keyword">import</span> QVariant</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">from</span> <a class="code" href="namespaceqgis_1_1core.html">qgis.core</a> <span class="keyword">import</span> QgsField</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> </div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">from</span> pktoolsUtils <span class="keyword">import</span> pktoolsUtils</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">from</span> pktoolsAlgorithm <span class="keyword">import</span> pktoolsAlgorithm</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterRaster</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterVector</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">from</span> processing.core.outputs <span class="keyword">import</span> OutputVector</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">from</span> processing.core.outputs <span class="keyword">import</span> OutputFile</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="comment">#from processing.core.outputs import OutputTable</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterSelection</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterNumber</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterString</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterBoolean</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterExtent</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span> </div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span> FORMATS = [</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     <span class="stringliteral">'ESRI Shapefile'</span>,</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     <span class="stringliteral">'GeoJSON'</span>,</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     <span class="stringliteral">'GeoRSS'</span>,</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     <span class="stringliteral">'SQLite'</span>,</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     <span class="stringliteral">'GMT'</span>,</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     <span class="stringliteral">'MapInfo File'</span>,</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     <span class="stringliteral">'INTERLIS 1'</span>,</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     <span class="stringliteral">'INTERLIS 2'</span>,</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     <span class="stringliteral">'GML'</span>,</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     <span class="stringliteral">'Geoconcept'</span>,</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     <span class="stringliteral">'DXF'</span>,</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <span class="stringliteral">'DGN'</span>,</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     <span class="stringliteral">'CSV'</span>,</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     <span class="stringliteral">'BNA'</span>,</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     <span class="stringliteral">'S57'</span>,</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     <span class="stringliteral">'KML'</span>,</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     <span class="stringliteral">'GPX'</span>,</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     <span class="stringliteral">'PGDump'</span>,</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     <span class="stringliteral">'GPSTrackMaker'</span>,</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     <span class="stringliteral">'ODS'</span>,</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     <span class="stringliteral">'XLSX'</span>,</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     <span class="stringliteral">'PDF'</span>,</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span> ]</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span> EXTS = [</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     <span class="stringliteral">'.shp'</span>,</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     <span class="stringliteral">'.geojson'</span>,</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     <span class="stringliteral">'.xml'</span>,</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>     <span class="stringliteral">'.sqlite'</span>,</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>     <span class="stringliteral">'.gmt'</span>,</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>     <span class="stringliteral">'.tab'</span>,</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>     <span class="stringliteral">'.ili'</span>,</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>     <span class="stringliteral">'.ili'</span>,</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>     <span class="stringliteral">'.gml'</span>,</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>     <span class="stringliteral">'.txt'</span>,</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>     <span class="stringliteral">'.dxf'</span>,</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>     <span class="stringliteral">'.dgn'</span>,</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>     <span class="stringliteral">'.csv'</span>,</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     <span class="stringliteral">'.bna'</span>,</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     <span class="stringliteral">'.000'</span>,</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     <span class="stringliteral">'.kml'</span>,</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>     <span class="stringliteral">'.gpx'</span>,</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>     <span class="stringliteral">'.pgdump'</span>,</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>     <span class="stringliteral">'.gtm'</span>,</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>     <span class="stringliteral">'.ods'</span>,</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     <span class="stringliteral">'.xlsx'</span>,</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     <span class="stringliteral">'.pdf'</span>,</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span> ]</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span> </div>
-<div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">   93</a></span> <span class="keyword">class </span><a class="code" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">pkdiff_accuracy</a>(pktoolsAlgorithm):</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span> </div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>     INPUT = <span class="stringliteral">"INPUT"</span></div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     REFERENCE = <span class="stringliteral">"REFERENCE"</span></div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     ITERATE = <span class="stringliteral">"ITERATE"</span></div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     LABELREF = <span class="stringliteral">"LABELREF"</span></div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     NODATA = <span class="stringliteral">"NODATA"</span></div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span> <span class="comment">#    TABLE = 'TABLE'</span></div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     OUTPUT = <span class="stringliteral">"OUTPUT"</span></div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     CMOUTPUT = <span class="stringliteral">"CMOUTPUT"</span></div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     CMFORMAT_OPTIONS = [<span class="stringliteral">"ascii"</span>, <span class="stringliteral">"latex"</span>]</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     CMFORMAT = <span class="stringliteral">"CMFORMAT"</span></div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span> </div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     FORMAT = <span class="stringliteral">"FORMAT"</span></div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     LABELCLASS = <span class="stringliteral">"LABELCLASS"</span></div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     EXTRA = <span class="stringliteral">'EXTRA'</span></div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span> </div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>     <span class="keyword">def </span>cliName(self):</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>         <span class="keywordflow">return</span> <span class="stringliteral">"pkdiff"</span></div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span> </div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     <span class="keyword">def </span>defineCharacteristics(self):</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>         self.<a class="code" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#adde47dc64982051137c51b2b9c45d686">name</a> = <span class="stringliteral">"Accuracy assessment with ground reference"</span></div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>         self.<a class="code" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a25a018181afee40dea3e4d5275747bb7">group</a> = <span class="stringliteral">"[pktools] supervised classification"</span></div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>         self.addParameter(ParameterRaster(self.<a class="code" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#ab4e343f53122cd27e365391daa149b8e">INPUT</a>, <span class="stringliteral">'Classification result (raster map)'</span>))</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>         self.addParameter(ParameterVector(self.<a class="code" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#ab721f3d9ae2c876ef39abc3b07a12530">REFERENCE</a>, <span class="stringliteral">'Labeled reference vector data set'</span>))</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>         self.addParameter(ParameterBoolean(self.<a class="code" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a04cec215fc970c27c9cbbe0ddcd7a2b5">ITERATE</a>, <span class="stringliteral">"Iterate over all layers"</span>,<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a392cc9957b286d74ad2515c0dba4a695">LABELREF</a>, <span class="stringliteral">"Attribute name of the reference label"</span>,<span class="stringliteral">"label"</span>))</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#ae62e0e32e5c75f22f5a8ef0f521f5cce">NODATA</a>, <span class="stringliteral">"No data value(s) in input or reference dataset to ignore (e.g., 0;255)"</span>,<span class="stringliteral">"0"</span>))</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>         self.addOutput(OutputFile(self.<a class="code" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a53f02145c4734a0655c70a3d7b4950f6">CMOUTPUT</a>, self.tr(<span class="stringliteral">"Confusion matrix output file "</span>)))</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a4b776ec91fa5d020d7680eca874427e2">CMFORMAT</a>,<span class="stringliteral">"Format for confusion matrix output"</span>,self.<a class="code" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#ad1221f675d9b9d779d83abbf9b437146">CMFORMAT_OPTIONS</ [...]
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span> </div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span> <span class="comment">#        self.addOutput(OutputTable(self.TABLE, self.tr('Confusion matrix table')))</span></div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>         self.addOutput(OutputVector(self.<a class="code" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#ae64041efab08dd8fa6c19b625e168761">OUTPUT</a>, <span class="stringliteral">'Assessment output vector data set'</span>))</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a1fbcff81b3676249f0408de6319950d9">FORMAT</a>,</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>                           <span class="stringliteral">'Assessment output vector Format'</span>, FORMATS))</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a2d4f21a8f0057584931a3a696a5d1b75">LABELCLASS</a>, <span class="stringliteral">"Attribute name of classified (map) label"</span>,<span class="stringliteral">"class"</span>))</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a5779733ceff946ac04ec1f6d0e494452">EXTRA</a>,</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>                           <span class="stringliteral">'Additional parameters'</span>, <span class="stringliteral">''</span>, optional=<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span> </div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>     <span class="keyword">def </span>processAlgorithm(self, progress):</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>         cliPath = <span class="stringliteral">'"'</span> + os.path.join(pktoolsUtils.pktoolsPath(), self.<a class="code" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a55056565ea9f8f166997ca32bcf92d68">cliName</a>()) + <span class="stringliteral">'"'</span></div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>         commands = [cliPath]</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>         <span class="comment">#outputtable = self.getOutputFromName(self.TABLE)</span></div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span> </div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>         input=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#ab4e343f53122cd27e365391daa149b8e">INPUT</a>)</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>         commands.append(<span class="stringliteral">'-i'</span>)</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>         commands.append(<span class="stringliteral">'"'</span> + input + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span> </div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>         reference=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#ab721f3d9ae2c876ef39abc3b07a12530">REFERENCE</a>)</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>         <span class="keywordflow">if</span> self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a04cec215fc970c27c9cbbe0ddcd7a2b5">ITERATE</a>):</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>             <span class="keywordflow">if</span> str(reference).find(<span class="stringliteral">'|'</span>)>0:</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>                 referencename=str(reference)[:str(reference).find(<span class="stringliteral">'|'</span>)]</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>             <span class="keywordflow">else</span>:</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>                 referencename=str(reference)</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>         <span class="keywordflow">else</span>:</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>             referencename=str(reference).replace(<span class="stringliteral">"|layername"</span>,<span class="stringliteral">" -ln"</span>)</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>         commands.append(<span class="stringliteral">'-ref'</span>)</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>         commands.append(referencename)</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span> </div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>         commands.append(<span class="stringliteral">'-lr'</span>);</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>         commands.append(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a392cc9957b286d74ad2515c0dba4a695">LABELREF</a>))</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span> </div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>         nodata=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#ae62e0e32e5c75f22f5a8ef0f521f5cce">NODATA</a>)</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>         <span class="keywordflow">if</span> nodata != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>             nodataValues = nodata.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>             <span class="keywordflow">for</span> nodataValue <span class="keywordflow">in</span> nodataValues:</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>                 commands.append(<span class="stringliteral">'-nodata'</span>)</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>                 commands.append(nodataValue)</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span> </div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>         commands.append(<span class="stringliteral">"-cm"</span>)</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>         commands.append(<span class="stringliteral">"-cmf"</span>)</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>         commands.append(self.<a class="code" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#ad1221f675d9b9d779d83abbf9b437146">CMFORMAT_OPTIONS</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a4b776ec91fa5d020d7680eca874427e2">CMFORMAT</a>)])</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>         commands.append(<span class="stringliteral">"-cmo"</span>)</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>         commands.append(self.getOutputValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a53f02145c4734a0655c70a3d7b4950f6">CMOUTPUT</a>))</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span> </div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>         output = self.getOutputFromName(self.<a class="code" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#ae64041efab08dd8fa6c19b625e168761">OUTPUT</a>)</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>         outFile = output.value</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>         formatIdx = self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a1fbcff81b3676249f0408de6319950d9">FORMAT</a>)</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>         outFormat = <span class="stringliteral">'"'</span> + FORMATS[formatIdx] + <span class="stringliteral">'"'</span></div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>         commands.append(<span class="stringliteral">'-f'</span>)</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>         commands.append(outFormat)</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>         ext = EXTS[formatIdx]</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>         <span class="keywordflow">if</span> <span class="keywordflow">not</span> outFile.endswith(ext):</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>             outFile += ext</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>             output.value = outFile</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>         commands.append(<span class="stringliteral">'-o'</span>)</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>         commands.append(<span class="stringliteral">'"'</span> + outFile + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>         commands.append(<span class="stringliteral">'-lc'</span>);</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>         commands.append(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a2d4f21a8f0057584931a3a696a5d1b75">LABELCLASS</a>))</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span> </div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>         extra = str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a5779733ceff946ac04ec1f6d0e494452">EXTRA</a>))</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>         <span class="keywordflow">if</span> len(extra) > 0:</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>             commands.append(extra)</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span> </div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>         pktoolsUtils.runpktools(commands, progress)</div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy_html_ab4e343f53122cd27e365391daa149b8e"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#ab4e343f53122cd27e365391daa149b8e">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy.INPUT</a></div><div class="ttdeci">string INPUT</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkdiff__accuracy_8py_source.html#l00095">pkdiff_accuracy.py:95</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy_html_a2d4f21a8f0057584931a3a696a5d1b75"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a2d4f21a8f0057584931a3a696a5d1b75">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy.LABELCLASS</a></div><div class="ttdeci">string LABELCLASS</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkdiff__accuracy_8py_source.html#l00107">pkdiff_accuracy.py:107</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy_html_ab721f3d9ae2c876ef39abc3b07a12530"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#ab721f3d9ae2c876ef39abc3b07a12530">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy.REFERENCE</a></div><div class="ttdeci">string REFERENCE</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkdiff__accuracy_8py_source.html#l00096">pkdiff_accuracy.py:96</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy_html_adde47dc64982051137c51b2b9c45d686"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#adde47dc64982051137c51b2b9c45d686">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy.name</a></div><div class="ttdeci">name</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkdiff__accuracy_8py_source.html#l00114">pkdiff_accuracy.py:114</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy_html_ad1221f675d9b9d779d83abbf9b437146"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#ad1221f675d9b9d779d83abbf9b437146">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy.CMFORMAT_OPTIONS</a></div><div class="ttdeci">list CMFORMAT_OPTIONS</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkdiff__accuracy_8py_source.html#l00103">pkdiff_accuracy.py:103</a [...]
-<div class="ttc" id="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy_html_a04cec215fc970c27c9cbbe0ddcd7a2b5"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a04cec215fc970c27c9cbbe0ddcd7a2b5">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy.ITERATE</a></div><div class="ttdeci">string ITERATE</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkdiff__accuracy_8py_source.html#l00097">pkdiff_accuracy.py:97</a></div></div>
-<div class="ttc" id="namespacePyQt4_1_1QtCore_html"><div class="ttname"><a href="namespacePyQt4_1_1QtCore.html">QtCore</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy_html"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy</a></div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkdiff__accuracy_8py_source.html#l00093">pkdiff_accuracy.py:93</a></div></div>
-<div class="ttc" id="namespaceqgis_1_1core_html"><div class="ttname"><a href="namespaceqgis_1_1core.html">core</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy_html_a55056565ea9f8f166997ca32bcf92d68"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a55056565ea9f8f166997ca32bcf92d68">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy.cliName</a></div><div class="ttdeci">def cliName</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkdiff__accuracy_8py_source.html#l00110">pkdiff_accuracy.py:110</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy_html_a5779733ceff946ac04ec1f6d0e494452"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a5779733ceff946ac04ec1f6d0e494452">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy.EXTRA</a></div><div class="ttdeci">string EXTRA</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkdiff__accuracy_8py_source.html#l00108">pkdiff_accuracy.py:108</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy_html_a392cc9957b286d74ad2515c0dba4a695"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a392cc9957b286d74ad2515c0dba4a695">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy.LABELREF</a></div><div class="ttdeci">string LABELREF</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkdiff__accuracy_8py_source.html#l00098">pkdiff_accuracy.py:98</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy_html_a1fbcff81b3676249f0408de6319950d9"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a1fbcff81b3676249f0408de6319950d9">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy.FORMAT</a></div><div class="ttdeci">string FORMAT</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkdiff__accuracy_8py_source.html#l00106">pkdiff_accuracy.py:106</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy_html_a25a018181afee40dea3e4d5275747bb7"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a25a018181afee40dea3e4d5275747bb7">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy.group</a></div><div class="ttdeci">group</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkdiff__accuracy_8py_source.html#l00115">pkdiff_accuracy.py:115</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy_html_a4b776ec91fa5d020d7680eca874427e2"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a4b776ec91fa5d020d7680eca874427e2">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy.CMFORMAT</a></div><div class="ttdeci">string CMFORMAT</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkdiff__accuracy_8py_source.html#l00104">pkdiff_accuracy.py:104</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy_html_ae64041efab08dd8fa6c19b625e168761"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#ae64041efab08dd8fa6c19b625e168761">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy.OUTPUT</a></div><div class="ttdeci">string OUTPUT</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkdiff__accuracy_8py_source.html#l00101">pkdiff_accuracy.py:101</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy_html_a53f02145c4734a0655c70a3d7b4950f6"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#a53f02145c4734a0655c70a3d7b4950f6">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy.CMOUTPUT</a></div><div class="ttdeci">string CMOUTPUT</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkdiff__accuracy_8py_source.html#l00102">pkdiff_accuracy.py:102</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy_html_ae62e0e32e5c75f22f5a8ef0f521f5cce"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkdiff__accuracy_1_1pkdiff__accuracy.html#ae62e0e32e5c75f22f5a8ef0f521f5cce">qgis.pktools.pkdiff_accuracy.pkdiff_accuracy.NODATA</a></div><div class="ttdeci">string NODATA</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkdiff__accuracy_8py_source.html#l00099">pkdiff_accuracy.py:99</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pktools_2pkextract_8py_source.html b/doc/html/pktools_2pkextract_8py_source.html
deleted file mode 100644
index 0a05ca8..0000000
--- a/doc/html/pktools_2pkextract_8py_source.html
+++ /dev/null
@@ -1,278 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/pktools/pkextract.py Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li><li class="navelem"><a class="el" href="dir_b7cc22b4453454f1e686d9a2e78d988d.html">pktools</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkextract.py</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment"># -*- coding: utf-8 -*-</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> </div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="stringliteral">    pkextract.py</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="stringliteral">    ---------------------</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="stringliteral">    Date                 : April 2015</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="stringliteral">    Copyright            : (C) 2015 by Pieter Kempeneers</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="stringliteral">    Email                : kempenep at gmail dot com</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="stringliteral">*   This program is free software; you can redistribute it and/or modify  *</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="stringliteral">*   it under the terms of the GNU General Public License as published by  *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="stringliteral">*   the Free Software Foundation; either version 2 of the License, or     *</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="stringliteral">*   (at your option) any later version.                                   *</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> __author__ = <span class="stringliteral">'Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> __date__ = <span class="stringliteral">'April 2015'</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> __copyright__ = <span class="stringliteral">'(C) 2015, Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"># This will get replaced with a git SHA1 when you do a git archive</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> __revision__ = <span class="stringliteral">'$Format:%H$'</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">import</span> os</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">from</span> pktoolsUtils <span class="keyword">import</span> pktoolsUtils</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">from</span> pktoolsAlgorithm <span class="keyword">import</span> pktoolsAlgorithm</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterRaster</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterVector</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">from</span> processing.core.outputs <span class="keyword">import</span> OutputVector</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterSelection</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterNumber</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterString</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterBoolean</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterExtent</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> FORMATS = [</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>     <span class="stringliteral">'ESRI Shapefile'</span>,</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     <span class="stringliteral">'GeoJSON'</span>,</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     <span class="stringliteral">'GeoRSS'</span>,</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     <span class="stringliteral">'SQLite'</span>,</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     <span class="stringliteral">'GMT'</span>,</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     <span class="stringliteral">'MapInfo File'</span>,</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     <span class="stringliteral">'INTERLIS 1'</span>,</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     <span class="stringliteral">'INTERLIS 2'</span>,</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     <span class="stringliteral">'GML'</span>,</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     <span class="stringliteral">'Geoconcept'</span>,</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     <span class="stringliteral">'DXF'</span>,</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     <span class="stringliteral">'DGN'</span>,</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     <span class="stringliteral">'CSV'</span>,</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     <span class="stringliteral">'BNA'</span>,</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     <span class="stringliteral">'S57'</span>,</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     <span class="stringliteral">'KML'</span>,</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     <span class="stringliteral">'GPX'</span>,</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <span class="stringliteral">'PGDump'</span>,</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     <span class="stringliteral">'GPSTrackMaker'</span>,</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     <span class="stringliteral">'ODS'</span>,</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     <span class="stringliteral">'XLSX'</span>,</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     <span class="stringliteral">'PDF'</span>,</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span> ]</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span> EXTS = [</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     <span class="stringliteral">'.shp'</span>,</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     <span class="stringliteral">'.geojson'</span>,</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     <span class="stringliteral">'.xml'</span>,</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     <span class="stringliteral">'.sqlite'</span>,</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>     <span class="stringliteral">'.gmt'</span>,</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     <span class="stringliteral">'.tab'</span>,</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     <span class="stringliteral">'.ili'</span>,</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     <span class="stringliteral">'.ili'</span>,</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     <span class="stringliteral">'.gml'</span>,</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>     <span class="stringliteral">'.txt'</span>,</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>     <span class="stringliteral">'.dxf'</span>,</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>     <span class="stringliteral">'.dgn'</span>,</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>     <span class="stringliteral">'.csv'</span>,</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>     <span class="stringliteral">'.bna'</span>,</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>     <span class="stringliteral">'.000'</span>,</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>     <span class="stringliteral">'.kml'</span>,</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>     <span class="stringliteral">'.gpx'</span>,</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>     <span class="stringliteral">'.pgdump'</span>,</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>     <span class="stringliteral">'.gtm'</span>,</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     <span class="stringliteral">'.ods'</span>,</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     <span class="stringliteral">'.xlsx'</span>,</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     <span class="stringliteral">'.pdf'</span>,</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span> ]</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span> </div>
-<div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">   87</a></span> <span class="keyword">class </span><a class="code" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">pkextract</a>(pktoolsAlgorithm):</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span> </div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     INPUT = <span class="stringliteral">"INPUT"</span></div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     SAMPLE = <span class="stringliteral">"SAMPLE"</span></div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     ITERATE = <span class="stringliteral">"ITERATE"</span></div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     OUTPUT = <span class="stringliteral">"OUTPUT"</span></div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>     </div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>     RULE_OPTIONS = [<span class="stringliteral">'centroid'</span>, <span class="stringliteral">'point'</span>, <span class="stringliteral">'mean'</span>, <span class="stringliteral">'proportion'</span>, <span class="stringliteral">'min'</span>, <span class="stringliteral">'max'</span>, <span class="stringliteral">'mode'</span>, <span class="stringliteral"> [...]
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span> </div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     RULE = <span class="stringliteral">"RULE"</span></div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     POLYGON = <span class="stringliteral">"POLYGON"</span></div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     BUFFER = <span class="stringliteral">"BUFFER"</span></div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     SRCNODATA = <span class="stringliteral">"SRCNODATA"</span></div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     BNDNODATA = <span class="stringliteral">"BNDNODATA"</span></div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span> </div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     EXTRA = <span class="stringliteral">'EXTRA'</span></div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     </div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     FORMAT = <span class="stringliteral">"FORMAT"</span></div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span> </div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     <span class="keyword">def </span>cliName(self):</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>         <span class="keywordflow">return</span> <span class="stringliteral">"pkextract"</span></div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span> </div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>     <span class="keyword">def </span>defineCharacteristics(self):</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>         self.<a class="code" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#ab9efcad6e33e229054cd88a80d2e31ff">name</a> = <span class="stringliteral">"extract vector sample from raster"</span></div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>         self.<a class="code" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#ae279e3125dc30a09e1430c5e76b473cb">group</a> = <span class="stringliteral">"[pktools] raster/vector"</span></div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>         self.addParameter(ParameterRaster(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#a257192faedfabf32e503d72a2f34f459">INPUT</a>, <span class="stringliteral">'Input raster data set'</span>))</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>         self.addParameter(ParameterVector(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#a7e6d595c2e44bf7b9634f917bca79c61">SAMPLE</a>, <span class="stringliteral">'Sample vector data set'</span>))</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>         self.addParameter(ParameterBoolean(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#a5797ede6cc9265a846e09a4f5ff31292">ITERATE</a>, <span class="stringliteral">"Iterate over all layers"</span>,<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#a6997d33d8c4528dc3e278af16188ac1d">RULE</a>,<span class="stringliteral">"extraction rule"</span>,self.<a class="code" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#a3e61a3b83a4917429eb54cdbe69bf84f">RULE_OPTIONS</a>, 0))</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span> </div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>         self.addOutput(OutputVector(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#a481ae866b7a60d1f8ec47f0caa8d3d6b">OUTPUT</a>, <span class="stringliteral">'Output vector data set'</span>))</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#a3242dae21dccbdc5f1805b566fe4bc28">FORMAT</a>,</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>                           <span class="stringliteral">'Destination Format'</span>, FORMATS))</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span> </div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>         self.addParameter(ParameterBoolean(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#aac5a26b050718715b4adfcdd5e10c6c2">POLYGON</a>, <span class="stringliteral">"Create OGRPolygon as geometry instead of OGRPoint"</span>,<span class="keyword">False</span>))</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>         self.addParameter(ParameterNumber(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#a21c89f90489c9cc008332981c12868e2">BUFFER</a>, <span class="stringliteral">"Buffer for calculating statistics for point features"</span>,1,25,1))</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#adc9fa45630da5c63f41f4542bc82244f">SRCNODATA</a>, <span class="stringliteral">"invalid value(s) for input raster dataset (e.g., 0;255)"</span>,<span class="stringliteral">"none"</span>))</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#a222f15dc4f8abcf5ccdb34e909da8ec8">BNDNODATA</a>, <span class="stringliteral">"Band(s) in input image to check if pixel is valid (e.g., 0;1)"</span>,<span class="stringliteral">"0"</span>))</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span> </div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#afd7a165c5f77f4ad99a6f664576852dd">EXTRA</a>,</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>                           <span class="stringliteral">'Additional parameters'</span>, <span class="stringliteral">''</span>, optional=<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span> </div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>     <span class="keyword">def </span>processAlgorithm(self, progress):</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>         cliPath = <span class="stringliteral">'"'</span> + os.path.join(pktoolsUtils.pktoolsPath(), self.<a class="code" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#ae049566d661a688af829c9a068df729e">cliName</a>()) + <span class="stringliteral">'"'</span></div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>         commands = [cliPath]</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span> </div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>         input=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#a257192faedfabf32e503d72a2f34f459">INPUT</a>)</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>         commands.append(<span class="stringliteral">'-i'</span>)</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>         commands.append(<span class="stringliteral">'"'</span> + input + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span> </div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>         sample=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#a7e6d595c2e44bf7b9634f917bca79c61">SAMPLE</a>)</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>         <span class="keywordflow">if</span> self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#a5797ede6cc9265a846e09a4f5ff31292">ITERATE</a>):</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>             <span class="keywordflow">if</span> str(sample).find(<span class="stringliteral">'|'</span>)>0:</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>                 samplename=str(sample)[:str(sample).find(<span class="stringliteral">'|'</span>)]</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>             <span class="keywordflow">else</span>:</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>                 samplename=str(sample)</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>         <span class="keywordflow">else</span>:</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>             samplename=str(sample).replace(<span class="stringliteral">"|layername"</span>,<span class="stringliteral">" -ln"</span>)</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>         commands.append(<span class="stringliteral">'-s'</span>)</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>         commands.append(samplename)</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span> </div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>         <span class="keywordflow">if</span> self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#aac5a26b050718715b4adfcdd5e10c6c2">POLYGON</a>):</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>             commands.append(<span class="stringliteral">"-polygon"</span>)</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span> </div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>         commands.append(<span class="stringliteral">"-r"</span>)</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>         commands.append(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#a3e61a3b83a4917429eb54cdbe69bf84f">RULE_OPTIONS</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#a6997d33d8c4528dc3e278af16188ac1d">RULE</a>)])</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span> </div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>         output = self.getOutputFromName(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#a481ae866b7a60d1f8ec47f0caa8d3d6b">OUTPUT</a>)</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>         outFile = output.value</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>         formatIdx = self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#a3242dae21dccbdc5f1805b566fe4bc28">FORMAT</a>)</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>         outFormat = <span class="stringliteral">'"'</span> + FORMATS[formatIdx] + <span class="stringliteral">'"'</span></div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>         commands.append(<span class="stringliteral">'-f'</span>)</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>         commands.append(outFormat)</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>         ext = EXTS[formatIdx]</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>         <span class="keywordflow">if</span> <span class="keywordflow">not</span> outFile.endswith(ext):</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>             outFile += ext</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>             output.value = outFile</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>         commands.append(<span class="stringliteral">'-o'</span>)</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>         commands.append(<span class="stringliteral">'"'</span> + outFile + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span> </div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>         <span class="keywordflow">if</span> self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#aac5a26b050718715b4adfcdd5e10c6c2">POLYGON</a>):</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>             commands.append(<span class="stringliteral">"-polygon"</span>)</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>         buffer=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#a21c89f90489c9cc008332981c12868e2">BUFFER</a>)</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>         <span class="keywordflow">if</span> buffer > 1:</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>             commands.append(<span class="stringliteral">"-buf"</span>)</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>             commands.append(str(buffer))</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span> </div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>         srcnodata=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#adc9fa45630da5c63f41f4542bc82244f">SRCNODATA</a>)</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>         <span class="keywordflow">if</span> srcnodata != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>             srcnodataValues = srcnodata.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>             <span class="keywordflow">for</span> srcnodataValue <span class="keywordflow">in</span> srcnodataValues:</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>                 commands.append(<span class="stringliteral">'-srcnodata'</span>)</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>                 commands.append(srcnodataValue)</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>         bndnodata=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#a222f15dc4f8abcf5ccdb34e909da8ec8">BNDNODATA</a>)</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>         bndnodataValues = bndnodata.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>         <span class="keywordflow">for</span> bndnodataValue <span class="keywordflow">in</span> bndnodataValues:</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>             commands.append(<span class="stringliteral">'-bndnodata'</span>)</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>             commands.append(bndnodataValue)</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span> </div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>         extra = str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#afd7a165c5f77f4ad99a6f664576852dd">EXTRA</a>))</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>         <span class="keywordflow">if</span> len(extra) > 0:</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>             commands.append(extra)</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span> </div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>         pktoolsUtils.runpktools(commands, progress)</div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract_1_1pkextract_html_a3242dae21dccbdc5f1805b566fe4bc28"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#a3242dae21dccbdc5f1805b566fe4bc28">qgis.pktools.pkextract.pkextract.FORMAT</a></div><div class="ttdeci">string FORMAT</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract_8py_source.html#l00104">pkextract.py:104</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract_1_1pkextract_html_a3e61a3b83a4917429eb54cdbe69bf84f"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#a3e61a3b83a4917429eb54cdbe69bf84f">qgis.pktools.pkextract.pkextract.RULE_OPTIONS</a></div><div class="ttdeci">list RULE_OPTIONS</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract_8py_source.html#l00094">pkextract.py:94</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract_1_1pkextract_html_ae279e3125dc30a09e1430c5e76b473cb"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#ae279e3125dc30a09e1430c5e76b473cb">qgis.pktools.pkextract.pkextract.group</a></div><div class="ttdeci">group</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract_8py_source.html#l00111">pkextract.py:111</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract_1_1pkextract_html"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html">qgis.pktools.pkextract.pkextract</a></div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract_8py_source.html#l00087">pkextract.py:87</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract_1_1pkextract_html_adc9fa45630da5c63f41f4542bc82244f"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#adc9fa45630da5c63f41f4542bc82244f">qgis.pktools.pkextract.pkextract.SRCNODATA</a></div><div class="ttdeci">string SRCNODATA</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract_8py_source.html#l00099">pkextract.py:99</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract_1_1pkextract_html_afd7a165c5f77f4ad99a6f664576852dd"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#afd7a165c5f77f4ad99a6f664576852dd">qgis.pktools.pkextract.pkextract.EXTRA</a></div><div class="ttdeci">string EXTRA</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract_8py_source.html#l00102">pkextract.py:102</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract_1_1pkextract_html_ae049566d661a688af829c9a068df729e"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#ae049566d661a688af829c9a068df729e">qgis.pktools.pkextract.pkextract.cliName</a></div><div class="ttdeci">def cliName</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract_8py_source.html#l00106">pkextract.py:106</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract_1_1pkextract_html_aac5a26b050718715b4adfcdd5e10c6c2"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#aac5a26b050718715b4adfcdd5e10c6c2">qgis.pktools.pkextract.pkextract.POLYGON</a></div><div class="ttdeci">string POLYGON</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract_8py_source.html#l00097">pkextract.py:97</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract_1_1pkextract_html_a21c89f90489c9cc008332981c12868e2"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#a21c89f90489c9cc008332981c12868e2">qgis.pktools.pkextract.pkextract.BUFFER</a></div><div class="ttdeci">string BUFFER</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract_8py_source.html#l00098">pkextract.py:98</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract_1_1pkextract_html_a6997d33d8c4528dc3e278af16188ac1d"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#a6997d33d8c4528dc3e278af16188ac1d">qgis.pktools.pkextract.pkextract.RULE</a></div><div class="ttdeci">string RULE</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract_8py_source.html#l00096">pkextract.py:96</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract_1_1pkextract_html_a257192faedfabf32e503d72a2f34f459"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#a257192faedfabf32e503d72a2f34f459">qgis.pktools.pkextract.pkextract.INPUT</a></div><div class="ttdeci">string INPUT</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract_8py_source.html#l00089">pkextract.py:89</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract_1_1pkextract_html_a5797ede6cc9265a846e09a4f5ff31292"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#a5797ede6cc9265a846e09a4f5ff31292">qgis.pktools.pkextract.pkextract.ITERATE</a></div><div class="ttdeci">string ITERATE</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract_8py_source.html#l00091">pkextract.py:91</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract_1_1pkextract_html_a222f15dc4f8abcf5ccdb34e909da8ec8"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#a222f15dc4f8abcf5ccdb34e909da8ec8">qgis.pktools.pkextract.pkextract.BNDNODATA</a></div><div class="ttdeci">string BNDNODATA</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract_8py_source.html#l00100">pkextract.py:100</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract_1_1pkextract_html_a481ae866b7a60d1f8ec47f0caa8d3d6b"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#a481ae866b7a60d1f8ec47f0caa8d3d6b">qgis.pktools.pkextract.pkextract.OUTPUT</a></div><div class="ttdeci">string OUTPUT</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract_8py_source.html#l00092">pkextract.py:92</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract_1_1pkextract_html_ab9efcad6e33e229054cd88a80d2e31ff"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#ab9efcad6e33e229054cd88a80d2e31ff">qgis.pktools.pkextract.pkextract.name</a></div><div class="ttdeci">name</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract_8py_source.html#l00110">pkextract.py:110</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract_1_1pkextract_html_a7e6d595c2e44bf7b9634f917bca79c61"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract_1_1pkextract.html#a7e6d595c2e44bf7b9634f917bca79c61">qgis.pktools.pkextract.pkextract.SAMPLE</a></div><div class="ttdeci">string SAMPLE</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract_8py_source.html#l00090">pkextract.py:90</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pktools_2pkextract__grid_8py_source.html b/doc/html/pktools_2pkextract__grid_8py_source.html
deleted file mode 100644
index f223c73..0000000
--- a/doc/html/pktools_2pkextract__grid_8py_source.html
+++ /dev/null
@@ -1,262 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/pktools/pkextract_grid.py Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li><li class="navelem"><a class="el" href="dir_b7cc22b4453454f1e686d9a2e78d988d.html">pktools</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkextract_grid.py</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment"># -*- coding: utf-8 -*-</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> </div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="stringliteral">    pkextract_grid.py</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="stringliteral">    ---------------------</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="stringliteral">    Date                 : April 2015</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="stringliteral">    Copyright            : (C) 2015 by Pieter Kempeneers</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="stringliteral">    Email                : kempenep at gmail dot com</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="stringliteral">*   This program is free software; you can redistribute it and/or modify  *</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="stringliteral">*   it under the terms of the GNU General Public License as published by  *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="stringliteral">*   the Free Software Foundation; either version 2 of the License, or     *</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="stringliteral">*   (at your option) any later version.                                   *</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> __author__ = <span class="stringliteral">'Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> __date__ = <span class="stringliteral">'April 2015'</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> __copyright__ = <span class="stringliteral">'(C) 2015, Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"># This will get replaced with a git SHA1 when you do a git archive</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> __revision__ = <span class="stringliteral">'$Format:%H$'</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">import</span> os</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">from</span> pktoolsUtils <span class="keyword">import</span> pktoolsUtils</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">from</span> pktoolsAlgorithm <span class="keyword">import</span> pktoolsAlgorithm</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterRaster</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterVector</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">from</span> processing.core.outputs <span class="keyword">import</span> OutputVector</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterSelection</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterNumber</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterString</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterBoolean</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterExtent</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> FORMATS = [</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>     <span class="stringliteral">'ESRI Shapefile'</span>,</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     <span class="stringliteral">'GeoJSON'</span>,</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     <span class="stringliteral">'GeoRSS'</span>,</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     <span class="stringliteral">'SQLite'</span>,</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     <span class="stringliteral">'GMT'</span>,</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     <span class="stringliteral">'MapInfo File'</span>,</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     <span class="stringliteral">'INTERLIS 1'</span>,</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     <span class="stringliteral">'INTERLIS 2'</span>,</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     <span class="stringliteral">'GML'</span>,</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     <span class="stringliteral">'Geoconcept'</span>,</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     <span class="stringliteral">'DXF'</span>,</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     <span class="stringliteral">'DGN'</span>,</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     <span class="stringliteral">'CSV'</span>,</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     <span class="stringliteral">'BNA'</span>,</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     <span class="stringliteral">'S57'</span>,</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     <span class="stringliteral">'KML'</span>,</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     <span class="stringliteral">'GPX'</span>,</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <span class="stringliteral">'PGDump'</span>,</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     <span class="stringliteral">'GPSTrackMaker'</span>,</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     <span class="stringliteral">'ODS'</span>,</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     <span class="stringliteral">'XLSX'</span>,</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     <span class="stringliteral">'PDF'</span>,</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span> ]</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span> EXTS = [</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     <span class="stringliteral">'.shp'</span>,</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     <span class="stringliteral">'.geojson'</span>,</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     <span class="stringliteral">'.xml'</span>,</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     <span class="stringliteral">'.sqlite'</span>,</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>     <span class="stringliteral">'.gmt'</span>,</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     <span class="stringliteral">'.tab'</span>,</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     <span class="stringliteral">'.ili'</span>,</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     <span class="stringliteral">'.ili'</span>,</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     <span class="stringliteral">'.gml'</span>,</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>     <span class="stringliteral">'.txt'</span>,</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>     <span class="stringliteral">'.dxf'</span>,</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>     <span class="stringliteral">'.dgn'</span>,</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>     <span class="stringliteral">'.csv'</span>,</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>     <span class="stringliteral">'.bna'</span>,</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>     <span class="stringliteral">'.000'</span>,</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>     <span class="stringliteral">'.kml'</span>,</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>     <span class="stringliteral">'.gpx'</span>,</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>     <span class="stringliteral">'.pgdump'</span>,</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>     <span class="stringliteral">'.gtm'</span>,</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     <span class="stringliteral">'.ods'</span>,</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     <span class="stringliteral">'.xlsx'</span>,</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     <span class="stringliteral">'.pdf'</span>,</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span> ]</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span> </div>
-<div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">   87</a></span> <span class="keyword">class </span><a class="code" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">pkextract_grid</a>(pktoolsAlgorithm):</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span> </div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     INPUT = <span class="stringliteral">"INPUT"</span></div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     OUTPUT = <span class="stringliteral">"OUTPUT"</span></div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     </div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     RULE_OPTIONS = [<span class="stringliteral">'centroid'</span>, <span class="stringliteral">'point'</span>, <span class="stringliteral">'mean'</span>, <span class="stringliteral">'proportion'</span>, <span class="stringliteral">'custom'</span>, <span class="stringliteral">'min'</span>, <span class="stringliteral">'max'</span>, <span class="stringliteral [...]
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span> </div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>     RULE = <span class="stringliteral">"RULE"</span></div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>     POLYGON = <span class="stringliteral">"POLYGON"</span></div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     BUFFER = <span class="stringliteral">"BUFFER"</span></div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     GRID = <span class="stringliteral">"GRID"</span></div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     SRCNODATA = <span class="stringliteral">"SRCNODATA"</span></div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     BNDNODATA = <span class="stringliteral">"BNDNODATA"</span></div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     EXTRA = <span class="stringliteral">'EXTRA'</span></div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     </div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     FORMAT = <span class="stringliteral">"FORMAT"</span></div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span> </div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     <span class="keyword">def </span>cliName(self):</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>         <span class="keywordflow">return</span> <span class="stringliteral">"pkextract"</span></div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span> </div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     <span class="keyword">def </span>defineCharacteristics(self):</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>         self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#af13c9efdff741494bfb58c8b10d4b53e">name</a> = <span class="stringliteral">"extract regular grid"</span></div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>         self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#a09ae45118a775983455e10ecc7959004">group</a> = <span class="stringliteral">"[pktools] raster/vector"</span></div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>         self.addParameter(ParameterRaster(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#a5412a66f1947ac26ccbd630b71428157">INPUT</a>, <span class="stringliteral">'Input raster data set'</span>))</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#a694eeda5f32f8f58ec20b873a2c31333">RULE</a>,<span class="stringliteral">"extraction rule"</span>,self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#a3fb178091872bc1872478de700caf1b4">RULE_OPTIONS</a>, 0))</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span> </div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>         self.addOutput(OutputVector(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#a6064a8e5b885a1bad7a28957e70e1cdc">OUTPUT</a>, <span class="stringliteral">'Output vector data set'</span>))</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#a064ad85bca7f4be990fbb62d99a89ba1">FORMAT</a>,</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>                           <span class="stringliteral">'Destination Format'</span>, FORMATS))</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>         self.addParameter(ParameterBoolean(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#a7834e2f6a8d96793e5d50c379d69495f">POLYGON</a>, <span class="stringliteral">"Create OGRPolygon as geometry instead of OGRPoint"</span>,<span class="keyword">False</span>))</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>         self.addParameter(ParameterNumber(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#af200c24667122672e45fd9d6f5067efd">BUFFER</a>, <span class="stringliteral">"Buffer for calculating statistics for point features"</span>,1,25,1))</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>         self.addParameter(ParameterNumber(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#a90b6bcee6161de183851f985a02be337">GRID</a>, <span class="stringliteral">"Cell grid size (in projected units, e.g,. m)"</span>,0,1000000,1))</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span> </div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#a567185dde201a783080d4e480a3f658b">SRCNODATA</a>, <span class="stringliteral">"invalid value(s) for input raster dataset (e.g., 0;255)"</span>,<span class="stringliteral">"none"</span>))</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#a67f2914362c1595ea342a4b3a7a4715f">BNDNODATA</a>, <span class="stringliteral">"Band(s) in input image to check if pixel is valid (e.g., 0;1)"</span>,<span class="stringliteral">"0"</span>))</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#acb46e5b74179c65a686d0a6e5f49d226">EXTRA</a>, <span class="stringliteral">'Additional parameters'</span>, <span class="stringliteral">''</span>, optional=<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span> </div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     <span class="keyword">def </span>processAlgorithm(self, progress):</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>         cliPath = <span class="stringliteral">'"'</span> + os.path.join(pktoolsUtils.pktoolsPath(), self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#aa8f2f067f0a059b531c53a38b1a85308">cliName</a>()) + <span class="stringliteral">'"'</span></div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>         commands = [cliPath]</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span> </div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>         input=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#a5412a66f1947ac26ccbd630b71428157">INPUT</a>)</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>         commands.append(<span class="stringliteral">'-i'</span>)</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>         commands.append(<span class="stringliteral">'"'</span> + input + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span> </div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>         commands.append(<span class="stringliteral">"-r"</span>)</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>         commands.append(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#a3fb178091872bc1872478de700caf1b4">RULE_OPTIONS</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#a694eeda5f32f8f58ec20b873a2c31333">RULE</a>)])</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span> </div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>         output = self.getOutputFromName(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#a6064a8e5b885a1bad7a28957e70e1cdc">OUTPUT</a>)</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>         outFile = output.value</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>         formatIdx = self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#a064ad85bca7f4be990fbb62d99a89ba1">FORMAT</a>)</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>         outFormat = <span class="stringliteral">'"'</span> + FORMATS[formatIdx] + <span class="stringliteral">'"'</span></div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>         commands.append(<span class="stringliteral">'-f'</span>)</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>         commands.append(outFormat)</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>         ext = EXTS[formatIdx]</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>         <span class="keywordflow">if</span> <span class="keywordflow">not</span> outFile.endswith(ext):</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>             outFile += ext</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>             output.value = outFile</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>         commands.append(<span class="stringliteral">'-o'</span>)</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>         commands.append(<span class="stringliteral">'"'</span> + outFile + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span> </div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>         <span class="keywordflow">if</span> self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#a7834e2f6a8d96793e5d50c379d69495f">POLYGON</a>):</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>             commands.append(<span class="stringliteral">"-polygon"</span>)</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>         buffer=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#af200c24667122672e45fd9d6f5067efd">BUFFER</a>)</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>         <span class="keywordflow">if</span> buffer > 1:</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>             commands.append(<span class="stringliteral">"-buf"</span>)</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>             commands.append(str(buffer))</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span> </div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>         <span class="keywordflow">if</span> self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#a90b6bcee6161de183851f985a02be337">GRID</a>) > 0:</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>             commands.append(<span class="stringliteral">"-grid"</span>)</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>             commands.append(str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#a90b6bcee6161de183851f985a02be337">GRID</a>)))</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span> </div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>         srcnodata=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#a567185dde201a783080d4e480a3f658b">SRCNODATA</a>)</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>         <span class="keywordflow">if</span> srcnodata != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>             srcnodataValues = srcnodata.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>             <span class="keywordflow">for</span> srcnodataValue <span class="keywordflow">in</span> srcnodataValues:</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>                 commands.append(<span class="stringliteral">'-srcnodata'</span>)</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>                 commands.append(srcnodataValue)</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>         bndnodata=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#a67f2914362c1595ea342a4b3a7a4715f">BNDNODATA</a>)</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>         bndnodataValues = bndnodata.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>         <span class="keywordflow">for</span> bndnodataValue <span class="keywordflow">in</span> bndnodataValues:</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>             commands.append(<span class="stringliteral">'-bndnodata'</span>)</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>             commands.append(bndnodataValue)</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span> </div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>         extra = str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#acb46e5b74179c65a686d0a6e5f49d226">EXTRA</a>))</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>         <span class="keywordflow">if</span> len(extra) > 0:</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>             commands.append(extra)</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span> </div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>         pktoolsUtils.runpktools(commands, progress)</div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid_html_a567185dde201a783080d4e480a3f658b"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#a567185dde201a783080d4e480a3f658b">qgis.pktools.pkextract_grid.pkextract_grid.SRCNODATA</a></div><div class="ttdeci">string SRCNODATA</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract__grid_8py_source.html#l00098">pkextract_grid.py:98</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid_html_a6064a8e5b885a1bad7a28957e70e1cdc"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#a6064a8e5b885a1bad7a28957e70e1cdc">qgis.pktools.pkextract_grid.pkextract_grid.OUTPUT</a></div><div class="ttdeci">string OUTPUT</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract__grid_8py_source.html#l00090">pkextract_grid.py:90</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid_html"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html">qgis.pktools.pkextract_grid.pkextract_grid</a></div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract__grid_8py_source.html#l00087">pkextract_grid.py:87</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid_html_af200c24667122672e45fd9d6f5067efd"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#af200c24667122672e45fd9d6f5067efd">qgis.pktools.pkextract_grid.pkextract_grid.BUFFER</a></div><div class="ttdeci">string BUFFER</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract__grid_8py_source.html#l00096">pkextract_grid.py:96</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid_html_aa8f2f067f0a059b531c53a38b1a85308"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#aa8f2f067f0a059b531c53a38b1a85308">qgis.pktools.pkextract_grid.pkextract_grid.cliName</a></div><div class="ttdeci">def cliName</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract__grid_8py_source.html#l00104">pkextract_grid.py:104</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid_html_a064ad85bca7f4be990fbb62d99a89ba1"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#a064ad85bca7f4be990fbb62d99a89ba1">qgis.pktools.pkextract_grid.pkextract_grid.FORMAT</a></div><div class="ttdeci">string FORMAT</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract__grid_8py_source.html#l00102">pkextract_grid.py:102</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid_html_a5412a66f1947ac26ccbd630b71428157"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#a5412a66f1947ac26ccbd630b71428157">qgis.pktools.pkextract_grid.pkextract_grid.INPUT</a></div><div class="ttdeci">string INPUT</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract__grid_8py_source.html#l00089">pkextract_grid.py:89</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid_html_a694eeda5f32f8f58ec20b873a2c31333"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#a694eeda5f32f8f58ec20b873a2c31333">qgis.pktools.pkextract_grid.pkextract_grid.RULE</a></div><div class="ttdeci">string RULE</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract__grid_8py_source.html#l00094">pkextract_grid.py:94</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid_html_acb46e5b74179c65a686d0a6e5f49d226"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#acb46e5b74179c65a686d0a6e5f49d226">qgis.pktools.pkextract_grid.pkextract_grid.EXTRA</a></div><div class="ttdeci">string EXTRA</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract__grid_8py_source.html#l00100">pkextract_grid.py:100</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid_html_a3fb178091872bc1872478de700caf1b4"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#a3fb178091872bc1872478de700caf1b4">qgis.pktools.pkextract_grid.pkextract_grid.RULE_OPTIONS</a></div><div class="ttdeci">list RULE_OPTIONS</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract__grid_8py_source.html#l00092">pkextract_grid.py:92</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid_html_a7834e2f6a8d96793e5d50c379d69495f"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#a7834e2f6a8d96793e5d50c379d69495f">qgis.pktools.pkextract_grid.pkextract_grid.POLYGON</a></div><div class="ttdeci">string POLYGON</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract__grid_8py_source.html#l00095">pkextract_grid.py:95</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid_html_a67f2914362c1595ea342a4b3a7a4715f"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#a67f2914362c1595ea342a4b3a7a4715f">qgis.pktools.pkextract_grid.pkextract_grid.BNDNODATA</a></div><div class="ttdeci">string BNDNODATA</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract__grid_8py_source.html#l00099">pkextract_grid.py:99</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid_html_af13c9efdff741494bfb58c8b10d4b53e"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#af13c9efdff741494bfb58c8b10d4b53e">qgis.pktools.pkextract_grid.pkextract_grid.name</a></div><div class="ttdeci">name</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract__grid_8py_source.html#l00108">pkextract_grid.py:108</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid_html_a90b6bcee6161de183851f985a02be337"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#a90b6bcee6161de183851f985a02be337">qgis.pktools.pkextract_grid.pkextract_grid.GRID</a></div><div class="ttdeci">string GRID</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract__grid_8py_source.html#l00097">pkextract_grid.py:97</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid_html_a09ae45118a775983455e10ecc7959004"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract__grid_1_1pkextract__grid.html#a09ae45118a775983455e10ecc7959004">qgis.pktools.pkextract_grid.pkextract_grid.group</a></div><div class="ttdeci">group</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract__grid_8py_source.html#l00109">pkextract_grid.py:109</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pktools_2pkextract__random_8py_source.html b/doc/html/pktools_2pkextract__random_8py_source.html
deleted file mode 100644
index ad9f55f..0000000
--- a/doc/html/pktools_2pkextract__random_8py_source.html
+++ /dev/null
@@ -1,265 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/pktools/pkextract_random.py Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li><li class="navelem"><a class="el" href="dir_b7cc22b4453454f1e686d9a2e78d988d.html">pktools</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkextract_random.py</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment"># -*- coding: utf-8 -*-</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> </div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="stringliteral">    pkextract_random.py</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="stringliteral">    ---------------------</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="stringliteral">    Date                 : April 2015</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="stringliteral">    Copyright            : (C) 2015 by Pieter Kempeneers</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="stringliteral">    Email                : kempenep at gmail dot com</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="stringliteral">*   This program is free software; you can redistribute it and/or modify  *</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="stringliteral">*   it under the terms of the GNU General Public License as published by  *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="stringliteral">*   the Free Software Foundation; either version 2 of the License, or     *</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="stringliteral">*   (at your option) any later version.                                   *</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> __author__ = <span class="stringliteral">'Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> __date__ = <span class="stringliteral">'April 2015'</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> __copyright__ = <span class="stringliteral">'(C) 2015, Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"># This will get replaced with a git SHA1 when you do a git archive</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> __revision__ = <span class="stringliteral">'$Format:%H$'</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">import</span> os</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">from</span> pktoolsUtils <span class="keyword">import</span> pktoolsUtils</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">from</span> pktoolsAlgorithm <span class="keyword">import</span> pktoolsAlgorithm</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterRaster</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterVector</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">from</span> processing.core.outputs <span class="keyword">import</span> OutputVector</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterSelection</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterNumber</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterString</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterBoolean</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterExtent</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> FORMATS = [</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>     <span class="stringliteral">'ESRI Shapefile'</span>,</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     <span class="stringliteral">'GeoJSON'</span>,</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     <span class="stringliteral">'GeoRSS'</span>,</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     <span class="stringliteral">'SQLite'</span>,</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     <span class="stringliteral">'GMT'</span>,</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     <span class="stringliteral">'MapInfo File'</span>,</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     <span class="stringliteral">'INTERLIS 1'</span>,</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     <span class="stringliteral">'INTERLIS 2'</span>,</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     <span class="stringliteral">'GML'</span>,</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     <span class="stringliteral">'Geoconcept'</span>,</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     <span class="stringliteral">'DXF'</span>,</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     <span class="stringliteral">'DGN'</span>,</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     <span class="stringliteral">'CSV'</span>,</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     <span class="stringliteral">'BNA'</span>,</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     <span class="stringliteral">'S57'</span>,</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     <span class="stringliteral">'KML'</span>,</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     <span class="stringliteral">'GPX'</span>,</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <span class="stringliteral">'PGDump'</span>,</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     <span class="stringliteral">'GPSTrackMaker'</span>,</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     <span class="stringliteral">'ODS'</span>,</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     <span class="stringliteral">'XLSX'</span>,</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     <span class="stringliteral">'PDF'</span>,</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span> ]</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span> EXTS = [</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     <span class="stringliteral">'.shp'</span>,</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     <span class="stringliteral">'.geojson'</span>,</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     <span class="stringliteral">'.xml'</span>,</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     <span class="stringliteral">'.sqlite'</span>,</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>     <span class="stringliteral">'.gmt'</span>,</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     <span class="stringliteral">'.tab'</span>,</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     <span class="stringliteral">'.ili'</span>,</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     <span class="stringliteral">'.ili'</span>,</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     <span class="stringliteral">'.gml'</span>,</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>     <span class="stringliteral">'.txt'</span>,</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>     <span class="stringliteral">'.dxf'</span>,</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>     <span class="stringliteral">'.dgn'</span>,</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>     <span class="stringliteral">'.csv'</span>,</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>     <span class="stringliteral">'.bna'</span>,</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>     <span class="stringliteral">'.000'</span>,</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>     <span class="stringliteral">'.kml'</span>,</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>     <span class="stringliteral">'.gpx'</span>,</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>     <span class="stringliteral">'.pgdump'</span>,</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>     <span class="stringliteral">'.gtm'</span>,</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     <span class="stringliteral">'.ods'</span>,</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     <span class="stringliteral">'.xlsx'</span>,</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     <span class="stringliteral">'.pdf'</span>,</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span> ]</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span> </div>
-<div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">   87</a></span> <span class="keyword">class </span><a class="code" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">pkextract_random</a>(pktoolsAlgorithm):</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span> </div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     INPUT = <span class="stringliteral">"INPUT"</span></div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     OUTPUT = <span class="stringliteral">"OUTPUT"</span></div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     </div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     RULE_OPTIONS = [<span class="stringliteral">'centroid'</span>, <span class="stringliteral">'point'</span>, <span class="stringliteral">'mean'</span>, <span class="stringliteral">'proportion'</span>, <span class="stringliteral">'custom'</span>, <span class="stringliteral">'min'</span>, <span class="stringliteral">'max'</span>, <span class="stringliteral [...]
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span> </div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>     RULE = <span class="stringliteral">"RULE"</span></div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>     POLYGON = <span class="stringliteral">"POLYGON"</span></div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     BUFFER = <span class="stringliteral">"BUFFER"</span></div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     RANDOM = <span class="stringliteral">"RANDOM"</span></div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     SRCNODATA = <span class="stringliteral">"SRCNODATA"</span></div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     BNDNODATA = <span class="stringliteral">"BNDNODATA"</span></div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     EXTRA = <span class="stringliteral">'EXTRA'</span></div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     </div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     FORMAT = <span class="stringliteral">"FORMAT"</span></div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span> </div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     <span class="keyword">def </span>cliName(self):</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>         <span class="keywordflow">return</span> <span class="stringliteral">"pkextract"</span></div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span> </div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     <span class="keyword">def </span>defineCharacteristics(self):</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>         self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#af22352f109032ed3a3340b13a9013e09">name</a> = <span class="stringliteral">"extract random points"</span></div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>         self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#a87570906ed677592d5f8bac33ff7a3d8">group</a> = <span class="stringliteral">"[pktools] raster/vector"</span></div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>         self.addParameter(ParameterRaster(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#af378362e275409fbaadf0164809d9580">INPUT</a>, <span class="stringliteral">'Input raster data set'</span>))</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#ae3e01342bd3404b653c4b8d24f505f17">RULE</a>,<span class="stringliteral">"extraction rule"</span>,self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#ada2bb55cda0c34c8b4a82a13401d2455">RULE_OPTIONS</a>, 0))</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span> </div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>         self.addOutput(OutputVector(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#ada827e4d57de53322129310d1d2b01ac">OUTPUT</a>, <span class="stringliteral">'Output vector data set'</span>))</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#aa477d50d42493c4a70f2d985dc235b8c">FORMAT</a>,</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>                           <span class="stringliteral">'Destination Format'</span>, FORMATS))</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span> </div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>         self.addParameter(ParameterBoolean(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#a6d966809aee7401ccf7c298400e7d590">POLYGON</a>, <span class="stringliteral">"Create OGRPolygon as geometry instead of OGRPoint"</span>,<span class="keyword">False</span>))</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>         self.addParameter(ParameterNumber(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#a9cae04c4754d9863a12c776286e96fdb">BUFFER</a>, <span class="stringliteral">"Buffer for calculating statistics for point features"</span>,1,25,1))</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>         self.addParameter(ParameterNumber(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#aae134982ad295e7f2f206c85b6d28528">RANDOM</a>, <span class="stringliteral">"Number of random points to generate"</span>,0,1000000,100))</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span> </div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#a7a0f0334d5a3ecc367fc6621a9bfe63f">SRCNODATA</a>, <span class="stringliteral">"invalid value(s) for input raster dataset (e.g., 0;255)"</span>,<span class="stringliteral">"none"</span>))</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#aabe205b1faf586f973e527998303d834">BNDNODATA</a>, <span class="stringliteral">"Band(s) in input image to check if pixel is valid (e.g., 0;1)"</span>,<span class="stringliteral">"0"</span>))</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#a366ca672a6dc061ca5624107cd1e6701">EXTRA</a>,</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>                           <span class="stringliteral">'Additional parameters'</span>, <span class="stringliteral">''</span>, optional=<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span> </div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     <span class="keyword">def </span>processAlgorithm(self, progress):</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>         cliPath = <span class="stringliteral">'"'</span> + os.path.join(pktoolsUtils.pktoolsPath(), self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#a4ad3adfb8949647f7e2ce887ef844473">cliName</a>()) + <span class="stringliteral">'"'</span></div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>         commands = [cliPath]</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span> </div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>         input=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#af378362e275409fbaadf0164809d9580">INPUT</a>)</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>         commands.append(<span class="stringliteral">'-i'</span>)</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>         commands.append(<span class="stringliteral">'"'</span> + input + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span> </div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>         commands.append(<span class="stringliteral">"-r"</span>)</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>         commands.append(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#ada2bb55cda0c34c8b4a82a13401d2455">RULE_OPTIONS</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#ae3e01342bd3404b653c4b8d24f505f17">RULE</a>)])</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span> </div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>         output = self.getOutputFromName(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#ada827e4d57de53322129310d1d2b01ac">OUTPUT</a>)</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>         outFile = output.value</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>         formatIdx = self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#aa477d50d42493c4a70f2d985dc235b8c">FORMAT</a>)</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>         outFormat = <span class="stringliteral">'"'</span> + FORMATS[formatIdx] + <span class="stringliteral">'"'</span></div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>         commands.append(<span class="stringliteral">'-f'</span>)</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>         commands.append(outFormat)</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>         ext = EXTS[formatIdx]</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>         <span class="keywordflow">if</span> <span class="keywordflow">not</span> outFile.endswith(ext):</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>             outFile += ext</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>             output.value = outFile</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>         commands.append(<span class="stringliteral">'-o'</span>)</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>         commands.append(<span class="stringliteral">'"'</span> + outFile + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span> </div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>         <span class="keywordflow">if</span> self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#a6d966809aee7401ccf7c298400e7d590">POLYGON</a>):</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>             commands.append(<span class="stringliteral">"-polygon"</span>)</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>         buffer=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#a9cae04c4754d9863a12c776286e96fdb">BUFFER</a>)</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>         <span class="keywordflow">if</span> buffer > 1:</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>             commands.append(<span class="stringliteral">"-buf"</span>)</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>             commands.append(str(buffer))</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span> </div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>         <span class="keywordflow">if</span> self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#aae134982ad295e7f2f206c85b6d28528">RANDOM</a>) > 0:</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>             commands.append(<span class="stringliteral">"-rand"</span>)</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>             commands.append(str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#aae134982ad295e7f2f206c85b6d28528">RANDOM</a>)))</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span> </div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>         srcnodata=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#a7a0f0334d5a3ecc367fc6621a9bfe63f">SRCNODATA</a>)</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>         <span class="keywordflow">if</span> srcnodata != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>             srcnodataValues = srcnodata.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>             <span class="keywordflow">for</span> srcnodataValue <span class="keywordflow">in</span> srcnodataValues:</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>                 commands.append(<span class="stringliteral">'-srcnodata'</span>)</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>                 commands.append(srcnodataValue)</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>         bndnodata=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#aabe205b1faf586f973e527998303d834">BNDNODATA</a>)</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>         bndnodataValues = bndnodata.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>         <span class="keywordflow">for</span> bndnodataValue <span class="keywordflow">in</span> bndnodataValues:</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>             commands.append(<span class="stringliteral">'-bndnodata'</span>)</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>             commands.append(bndnodataValue)</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span> </div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>         extra = str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#a366ca672a6dc061ca5624107cd1e6701">EXTRA</a>))</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>         <span class="keywordflow">if</span> len(extra) > 0:</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>             commands.append(extra)</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span> </div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span> </div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>         pktoolsUtils.runpktools(commands, progress)</div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random_html_a6d966809aee7401ccf7c298400e7d590"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#a6d966809aee7401ccf7c298400e7d590">qgis.pktools.pkextract_random.pkextract_random.POLYGON</a></div><div class="ttdeci">string POLYGON</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract__random_8py_source.html#l00095">pkextract_random.py:95</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random_html_a366ca672a6dc061ca5624107cd1e6701"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#a366ca672a6dc061ca5624107cd1e6701">qgis.pktools.pkextract_random.pkextract_random.EXTRA</a></div><div class="ttdeci">string EXTRA</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract__random_8py_source.html#l00100">pkextract_random.py:100</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random_html_a87570906ed677592d5f8bac33ff7a3d8"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#a87570906ed677592d5f8bac33ff7a3d8">qgis.pktools.pkextract_random.pkextract_random.group</a></div><div class="ttdeci">group</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract__random_8py_source.html#l00109">pkextract_random.py:109</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random_html_ada2bb55cda0c34c8b4a82a13401d2455"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#ada2bb55cda0c34c8b4a82a13401d2455">qgis.pktools.pkextract_random.pkextract_random.RULE_OPTIONS</a></div><div class="ttdeci">list RULE_OPTIONS</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract__random_8py_source.html#l00092">pkextract_random.py:92</a> [...]
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random_html_aae134982ad295e7f2f206c85b6d28528"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#aae134982ad295e7f2f206c85b6d28528">qgis.pktools.pkextract_random.pkextract_random.RANDOM</a></div><div class="ttdeci">string RANDOM</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract__random_8py_source.html#l00097">pkextract_random.py:97</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random_html_aabe205b1faf586f973e527998303d834"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#aabe205b1faf586f973e527998303d834">qgis.pktools.pkextract_random.pkextract_random.BNDNODATA</a></div><div class="ttdeci">string BNDNODATA</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract__random_8py_source.html#l00099">pkextract_random.py:99</a></di [...]
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random_html_a7a0f0334d5a3ecc367fc6621a9bfe63f"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#a7a0f0334d5a3ecc367fc6621a9bfe63f">qgis.pktools.pkextract_random.pkextract_random.SRCNODATA</a></div><div class="ttdeci">string SRCNODATA</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract__random_8py_source.html#l00098">pkextract_random.py:98</a></di [...]
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random_html_a4ad3adfb8949647f7e2ce887ef844473"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#a4ad3adfb8949647f7e2ce887ef844473">qgis.pktools.pkextract_random.pkextract_random.cliName</a></div><div class="ttdeci">def cliName</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract__random_8py_source.html#l00104">pkextract_random.py:104</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random_html_aa477d50d42493c4a70f2d985dc235b8c"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#aa477d50d42493c4a70f2d985dc235b8c">qgis.pktools.pkextract_random.pkextract_random.FORMAT</a></div><div class="ttdeci">string FORMAT</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract__random_8py_source.html#l00102">pkextract_random.py:102</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random_html_a9cae04c4754d9863a12c776286e96fdb"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#a9cae04c4754d9863a12c776286e96fdb">qgis.pktools.pkextract_random.pkextract_random.BUFFER</a></div><div class="ttdeci">string BUFFER</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract__random_8py_source.html#l00096">pkextract_random.py:96</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random_html_af378362e275409fbaadf0164809d9580"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#af378362e275409fbaadf0164809d9580">qgis.pktools.pkextract_random.pkextract_random.INPUT</a></div><div class="ttdeci">string INPUT</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract__random_8py_source.html#l00089">pkextract_random.py:89</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random_html_ae3e01342bd3404b653c4b8d24f505f17"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#ae3e01342bd3404b653c4b8d24f505f17">qgis.pktools.pkextract_random.pkextract_random.RULE</a></div><div class="ttdeci">string RULE</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract__random_8py_source.html#l00094">pkextract_random.py:94</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random_html"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html">qgis.pktools.pkextract_random.pkextract_random</a></div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract__random_8py_source.html#l00087">pkextract_random.py:87</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random_html_af22352f109032ed3a3340b13a9013e09"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#af22352f109032ed3a3340b13a9013e09">qgis.pktools.pkextract_random.pkextract_random.name</a></div><div class="ttdeci">name</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract__random_8py_source.html#l00108">pkextract_random.py:108</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random_html_ada827e4d57de53322129310d1d2b01ac"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkextract__random_1_1pkextract__random.html#ada827e4d57de53322129310d1d2b01ac">qgis.pktools.pkextract_random.pkextract_random.OUTPUT</a></div><div class="ttdeci">string OUTPUT</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkextract__random_8py_source.html#l00090">pkextract_random.py:90</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pktools_2pkfilter__spatial_8py_source.html b/doc/html/pktools_2pkfilter__spatial_8py_source.html
deleted file mode 100644
index 94c6b7f..0000000
--- a/doc/html/pktools_2pkfilter__spatial_8py_source.html
+++ /dev/null
@@ -1,199 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/pktools/pkfilter_spatial.py Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li><li class="navelem"><a class="el" href="dir_b7cc22b4453454f1e686d9a2e78d988d.html">pktools</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkfilter_spatial.py</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment"># -*- coding: utf-8 -*-</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> </div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="stringliteral">    pkfilter_spatial.py</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="stringliteral">    ---------------------</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="stringliteral">    Date                 : April 2015</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="stringliteral">    Copyright            : (C) 2015 by Pieter Kempeneers</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="stringliteral">    Email                : kempenep at gmail dot com</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="stringliteral">*   This program is free software; you can redistribute it and/or modify  *</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="stringliteral">*   it under the terms of the GNU General Public License as published by  *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="stringliteral">*   the Free Software Foundation; either version 2 of the License, or     *</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="stringliteral">*   (at your option) any later version.                                   *</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> __author__ = <span class="stringliteral">'Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> __date__ = <span class="stringliteral">'April 2015'</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> __copyright__ = <span class="stringliteral">'(C) 2015, Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"># This will get replaced with a git SHA1 when you do a git archive</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> __revision__ = <span class="stringliteral">'$Format:%H$'</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">import</span> os</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">from</span> pktoolsUtils <span class="keyword">import</span> pktoolsUtils</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">from</span> pktoolsAlgorithm <span class="keyword">import</span> pktoolsAlgorithm</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterMultipleInput</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterRaster</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">from</span> processing.core.outputs <span class="keyword">import</span> OutputRaster</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterSelection</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterNumber</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterString</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterBoolean</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterExtent</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
-<div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">   38</a></span> <span class="keyword">class </span><a class="code" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">pkfilter_spatial</a>(pktoolsAlgorithm):</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> </div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     INPUT = <span class="stringliteral">"INPUT"</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     OUTPUT = <span class="stringliteral">"OUTPUT"</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     METHOD_OPTIONS = [<span class="stringliteral">"none"</span>, <span class="stringliteral">"median"</span>, <span class="stringliteral">"var"</span>, <span class="stringliteral">"min"</span>, <span class="stringliteral">"max"</span>, <span class="stringliteral">"sum"</span>, <span class="stringliteral">"mean"</span>, <span class="stringlite [...]
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     METHOD = <span class="stringliteral">"METHOD"</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span> <span class="comment">#    RESAMPLE_OPTIONS = ['near', 'bilinear']</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span> <span class="comment">#    RESAMPLE = "RESAMPLE"</span></div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     DIM = <span class="stringliteral">"DIM"</span></div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     NODATA = <span class="stringliteral">"NODATA"</span></div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     PADDING_OPTIONS = [<span class="stringliteral">"symmetric"</span>, <span class="stringliteral">"replicate"</span>, <span class="stringliteral">"circular"</span>, <span class="stringliteral">"zero"</span>]</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     PADDING = <span class="stringliteral">"PADDING"</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     RTYPE = <span class="stringliteral">'RTYPE'</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     TYPE = [<span class="stringliteral">'none'</span>, <span class="stringliteral">'Byte'</span>,<span class="stringliteral">'Int16'</span>,<span class="stringliteral">'UInt16'</span>,<span class="stringliteral">'UInt32'</span>,<span class="stringliteral">'Int32'</span>,<span class="stringliteral">'Float32'</span>,<span class="stringliteral">'Float64&# [...]
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     EXTRA = <span class="stringliteral">'EXTRA'</span></div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span> </div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     <span class="keyword">def </span>cliName(self):</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>         <span class="keywordflow">return</span> <span class="stringliteral">"pkfilter"</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span> </div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     <span class="keyword">def </span>defineCharacteristics(self):</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>         self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a94b3480f40673e5016d7383c63ec83a5">name</a> = <span class="stringliteral">"spatial filter"</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>         self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#afff9b2d6386a3a2f623056162d9d5cfd">group</a> = <span class="stringliteral">"[pktools] filter"</span></div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span> </div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>         self.addParameter(ParameterRaster(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a70643eead7c6d1505fad7e785fb65360">INPUT</a>, <span class="stringliteral">'Input layer raster data set'</span>,ParameterRaster))</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a50ea23abc53abb9a4b5b829c9e1ed221">METHOD</a>,<span class="stringliteral">"filter rule"</span>,self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a5f7665673481e0fc3fcec2249af3ded1">METHOD_OPTIONS</a>, 0))</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>         self.addOutput(OutputRaster(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a2bded0b49bef4a2fbd1fb93c5448cd31">OUTPUT</a>, <span class="stringliteral">"Output raster data set"</span>))</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a417eebdeec4c9e85ff7bf759c0f9396d">RTYPE</a>, <span class="stringliteral">'Output raster type (leave as none to keep original type)'</span>, self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a1b6d5e87c0633ad7b7297d8689b68 [...]
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>         self.addParameter(ParameterNumber(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a5b3e50fc81018403e22380d4a9f81376">DIM</a>, <span class="stringliteral">"Filter kernel size (odd value)"</span>,0.0,<span class="keywordtype">None</span>,3.0))</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>         <span class="comment">#for smooth nodata:</span></div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a9f53b19e3f757101071ad12687ea8133">NODATA</a>, <span class="stringliteral">"invalid value(s) for input raster dataset (e.g., 0;255)"</span>,<span class="stringliteral">"none"</span>))</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a4c65e79b498ae3c1455181680af356ae">PADDING</a>,<span class="stringliteral">"Padding (edge effects)"</span>,self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a701591dea36d98ef8ebc551500eb38f7">PADDING_OPTIONS</a>, 0))</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span> <span class="comment">#        self.addParameter(ParameterSelection(self.RESAMPLE,"resampling method",self.RESAMPLE_OPTIONS, 0))</span></div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#aea043fa4377c44c0e081e7377f6b30b3">EXTRA</a>,</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>                           <span class="stringliteral">'Additional parameters'</span>, <span class="stringliteral">'-of GTiff'</span>, optional=<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span> </div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>     <span class="keyword">def </span>processAlgorithm(self, progress):</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>         cliPath = <span class="stringliteral">'"'</span> + os.path.join(pktoolsUtils.pktoolsPath(), self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a49b7370981ec4d1b7ce7fe15c26138bd">cliName</a>()) + <span class="stringliteral">'"'</span></div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>         commands = [cliPath]</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span> </div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>         input=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a70643eead7c6d1505fad7e785fb65360">INPUT</a>)</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>         <span class="keywordflow">if</span> input != <span class="stringliteral">""</span>:</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>             commands.append(<span class="stringliteral">'-i'</span>)</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>             commands.append(<span class="stringliteral">'"'</span> + input + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span> </div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>         method=self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a5f7665673481e0fc3fcec2249af3ded1">METHOD_OPTIONS</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a50ea23abc53abb9a4b5b829c9e1ed221">METHOD</a>)]</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>         <span class="keywordflow">if</span> method != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>             commands.append(<span class="stringliteral">"-f"</span>)</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>             commands.append(method)</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>         commands.append(<span class="stringliteral">"-pad"</span>)</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>         commands.append(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a701591dea36d98ef8ebc551500eb38f7">PADDING_OPTIONS</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a4c65e79b498ae3c1455181680af356ae">PADDING</a>)])</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span> </div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>         <span class="keywordflow">if</span> self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a1b6d5e87c0633ad7b7297d8689b681d8">TYPE</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a417eebdeec4c9e85ff7bf759c0f9396d">RTYPE</a>)] != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>             commands.append(<span class="stringliteral">'-ot'</span>)</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>             commands.append(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a1b6d5e87c0633ad7b7297d8689b681d8">TYPE</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a417eebdeec4c9e85ff7bf759c0f9396d">RTYPE</a>)])</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>         output=self.getOutputValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a2bded0b49bef4a2fbd1fb93c5448cd31">OUTPUT</a>)</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>         <span class="keywordflow">if</span> output != <span class="stringliteral">""</span>:</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>             commands.append(<span class="stringliteral">"-o"</span>)</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>             commands.append(<span class="stringliteral">'"'</span> + output + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span> </div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>         <span class="keywordflow">if</span> self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a5b3e50fc81018403e22380d4a9f81376">DIM</a>) != 0:</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>             commands.append(<span class="stringliteral">"-dx"</span>)</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>             commands.append(str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a5b3e50fc81018403e22380d4a9f81376">DIM</a>)))</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>             commands.append(<span class="stringliteral">"-dy"</span>)</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>             commands.append(str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a5b3e50fc81018403e22380d4a9f81376">DIM</a>)))</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>         nodata=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a9f53b19e3f757101071ad12687ea8133">NODATA</a>)</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>         <span class="keywordflow">if</span> nodata != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>             nodataValues = nodata.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>             <span class="keywordflow">for</span> nodataValue <span class="keywordflow">in</span> nodataValues:</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>                 commands.append(<span class="stringliteral">'-nodata'</span>)</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>                 commands.append(nodataValue)</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>         extra = str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#aea043fa4377c44c0e081e7377f6b30b3">EXTRA</a>))</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>         <span class="keywordflow">if</span> len(extra) > 0:</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>             commands.append(extra)</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span> </div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>         pktoolsUtils.runpktools(commands, progress)</div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial_html_a4c65e79b498ae3c1455181680af356ae"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a4c65e79b498ae3c1455181680af356ae">qgis.pktools.pkfilter_spatial.pkfilter_spatial.PADDING</a></div><div class="ttdeci">string PADDING</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilter__spatial_8py_source.html#l00049">pkfilter_spatial.py:49</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial_html_a417eebdeec4c9e85ff7bf759c0f9396d"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a417eebdeec4c9e85ff7bf759c0f9396d">qgis.pktools.pkfilter_spatial.pkfilter_spatial.RTYPE</a></div><div class="ttdeci">string RTYPE</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilter__spatial_8py_source.html#l00050">pkfilter_spatial.py:50</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial_html_a1b6d5e87c0633ad7b7297d8689b681d8"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a1b6d5e87c0633ad7b7297d8689b681d8">qgis.pktools.pkfilter_spatial.pkfilter_spatial.TYPE</a></div><div class="ttdeci">list TYPE</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilter__spatial_8py_source.html#l00051">pkfilter_spatial.py:51</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial_html_a5b3e50fc81018403e22380d4a9f81376"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a5b3e50fc81018403e22380d4a9f81376">qgis.pktools.pkfilter_spatial.pkfilter_spatial.DIM</a></div><div class="ttdeci">string DIM</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilter__spatial_8py_source.html#l00046">pkfilter_spatial.py:46</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial_html"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html">qgis.pktools.pkfilter_spatial.pkfilter_spatial</a></div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilter__spatial_8py_source.html#l00038">pkfilter_spatial.py:38</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial_html_aea043fa4377c44c0e081e7377f6b30b3"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#aea043fa4377c44c0e081e7377f6b30b3">qgis.pktools.pkfilter_spatial.pkfilter_spatial.EXTRA</a></div><div class="ttdeci">string EXTRA</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilter__spatial_8py_source.html#l00052">pkfilter_spatial.py:52</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial_html_a94b3480f40673e5016d7383c63ec83a5"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a94b3480f40673e5016d7383c63ec83a5">qgis.pktools.pkfilter_spatial.pkfilter_spatial.name</a></div><div class="ttdeci">name</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilter__spatial_8py_source.html#l00058">pkfilter_spatial.py:58</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial_html_a2bded0b49bef4a2fbd1fb93c5448cd31"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a2bded0b49bef4a2fbd1fb93c5448cd31">qgis.pktools.pkfilter_spatial.pkfilter_spatial.OUTPUT</a></div><div class="ttdeci">string OUTPUT</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilter__spatial_8py_source.html#l00041">pkfilter_spatial.py:41</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial_html_a5f7665673481e0fc3fcec2249af3ded1"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a5f7665673481e0fc3fcec2249af3ded1">qgis.pktools.pkfilter_spatial.pkfilter_spatial.METHOD_OPTIONS</a></div><div class="ttdeci">list METHOD_OPTIONS</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilter__spatial_8py_source.html#l00042">pkfilter_spatial.py:42 [...]
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial_html_a49b7370981ec4d1b7ce7fe15c26138bd"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a49b7370981ec4d1b7ce7fe15c26138bd">qgis.pktools.pkfilter_spatial.pkfilter_spatial.cliName</a></div><div class="ttdeci">def cliName</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilter__spatial_8py_source.html#l00054">pkfilter_spatial.py:54</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial_html_afff9b2d6386a3a2f623056162d9d5cfd"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#afff9b2d6386a3a2f623056162d9d5cfd">qgis.pktools.pkfilter_spatial.pkfilter_spatial.group</a></div><div class="ttdeci">group</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilter__spatial_8py_source.html#l00059">pkfilter_spatial.py:59</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial_html_a70643eead7c6d1505fad7e785fb65360"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a70643eead7c6d1505fad7e785fb65360">qgis.pktools.pkfilter_spatial.pkfilter_spatial.INPUT</a></div><div class="ttdeci">string INPUT</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilter__spatial_8py_source.html#l00040">pkfilter_spatial.py:40</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial_html_a50ea23abc53abb9a4b5b829c9e1ed221"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a50ea23abc53abb9a4b5b829c9e1ed221">qgis.pktools.pkfilter_spatial.pkfilter_spatial.METHOD</a></div><div class="ttdeci">string METHOD</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilter__spatial_8py_source.html#l00043">pkfilter_spatial.py:43</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial_html_a9f53b19e3f757101071ad12687ea8133"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a9f53b19e3f757101071ad12687ea8133">qgis.pktools.pkfilter_spatial.pkfilter_spatial.NODATA</a></div><div class="ttdeci">string NODATA</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilter__spatial_8py_source.html#l00047">pkfilter_spatial.py:47</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial_html_a701591dea36d98ef8ebc551500eb38f7"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilter__spatial_1_1pkfilter__spatial.html#a701591dea36d98ef8ebc551500eb38f7">qgis.pktools.pkfilter_spatial.pkfilter_spatial.PADDING_OPTIONS</a></div><div class="ttdeci">list PADDING_OPTIONS</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilter__spatial_8py_source.html#l00048">pkfilter_spatial.py: [...]
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pktools_2pkfilter__spectral_8py_source.html b/doc/html/pktools_2pkfilter__spectral_8py_source.html
deleted file mode 100644
index d1d2a74..0000000
--- a/doc/html/pktools_2pkfilter__spectral_8py_source.html
+++ /dev/null
@@ -1,193 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/pktools/pkfilter_spectral.py Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li><li class="navelem"><a class="el" href="dir_b7cc22b4453454f1e686d9a2e78d988d.html">pktools</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkfilter_spectral.py</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment"># -*- coding: utf-8 -*-</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> </div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="stringliteral">    pkfilter_spectral.py</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="stringliteral">    ---------------------</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="stringliteral">    Date                 : April 2015</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="stringliteral">    Copyright            : (C) 2015 by Pieter Kempeneers</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="stringliteral">    Email                : kempenep at gmail dot com</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="stringliteral">*   This program is free software; you can redistribute it and/or modify  *</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="stringliteral">*   it under the terms of the GNU General Public License as published by  *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="stringliteral">*   the Free Software Foundation; either version 2 of the License, or     *</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="stringliteral">*   (at your option) any later version.                                   *</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> __author__ = <span class="stringliteral">'Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> __date__ = <span class="stringliteral">'April 2015'</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> __copyright__ = <span class="stringliteral">'(C) 2015, Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"># This will get replaced with a git SHA1 when you do a git archive</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> __revision__ = <span class="stringliteral">'$Format:%H$'</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">import</span> os</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">from</span> pktoolsUtils <span class="keyword">import</span> pktoolsUtils</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">from</span> pktoolsAlgorithm <span class="keyword">import</span> pktoolsAlgorithm</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterMultipleInput</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterRaster</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">from</span> processing.core.outputs <span class="keyword">import</span> OutputRaster</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterSelection</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterNumber</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterString</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterBoolean</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterExtent</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
-<div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">   38</a></span> <span class="keyword">class </span><a class="code" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">pkfilter_spectral</a>(pktoolsAlgorithm):</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> </div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     INPUT = <span class="stringliteral">"INPUT"</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     OUTPUT = <span class="stringliteral">"OUTPUT"</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     METHOD_OPTIONS = [<span class="stringliteral">"none"</span>, <span class="stringliteral">"median"</span>, <span class="stringliteral">"var"</span>, <span class="stringliteral">"min"</span>, <span class="stringliteral">"max"</span>, <span class="stringliteral">"sum"</span>, <span class="stringliteral">"mean"</span>, <span class="stringlite [...]
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     METHOD = <span class="stringliteral">"METHOD"</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     DZ = <span class="stringliteral">"DZ"</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     NODATA = <span class="stringliteral">"NODATA"</span></div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     PADDING_OPTIONS = [<span class="stringliteral">"symmetric"</span>, <span class="stringliteral">"replicate"</span>, <span class="stringliteral">"circular"</span>, <span class="stringliteral">"zero"</span>]</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     PADDING = <span class="stringliteral">"PADDING"</span></div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     RTYPE = <span class="stringliteral">'RTYPE'</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     TYPE = [<span class="stringliteral">'none'</span>, <span class="stringliteral">'Byte'</span>,<span class="stringliteral">'Int16'</span>,<span class="stringliteral">'UInt16'</span>,<span class="stringliteral">'UInt32'</span>,<span class="stringliteral">'Int32'</span>,<span class="stringliteral">'Float32'</span>,<span class="stringliteral">'Float64&# [...]
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     EXTRA = <span class="stringliteral">'EXTRA'</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span> </div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     <span class="keyword">def </span>cliName(self):</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>         <span class="keywordflow">return</span> <span class="stringliteral">"pkfilter"</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span> </div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     <span class="keyword">def </span>defineCharacteristics(self):</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>         self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a3acd427b14996200c28731af93881230">name</a> = <span class="stringliteral">"spectral/temporal filter"</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>         self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a564ebf9df0204af2dcdddddd4242e8e1">group</a> = <span class="stringliteral">"[pktools] filter"</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>         self.addParameter(ParameterRaster(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a66e04e576250870781b5354957894c96">INPUT</a>, <span class="stringliteral">'Input layer raster data set'</span>,ParameterRaster))</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a2161052c92e79f5af48d6777d37afe2f">METHOD</a>,<span class="stringliteral">"filter rule"</span>,self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a0b6ef52a12318176d8a7274b0b3c0992">METHOD_OPTIONS</a>, 0))</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>         self.addOutput(OutputRaster(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a0386672f58fdda479ca994c7dd7ceda8">OUTPUT</a>, <span class="stringliteral">"Output raster data set"</span>))</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a6464f37811e617e629087e4760f353d8">RTYPE</a>, <span class="stringliteral">'Output raster type (leave as none to keep original type)'</span>, self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#ae43cc505f2d02b9bbc05f4a84 [...]
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>         self.addParameter(ParameterNumber(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a818a9a5d4a7484deaa19a4445e034c60">DZ</a>, <span class="stringliteral">"Filter kernel size"</span>,0.0,<span class="keywordtype">None</span>,1.0))</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>         <span class="comment">#for smooth nodata:</span></div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a9f1e339aa49f2753729f9fcd4ed43d09">NODATA</a>, <span class="stringliteral">"nodata value to smooth(e.g., 0;255)"</span>,<span class="stringliteral">"none"</span>))</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#aeab6b7f6a3471187ae33f3597a86721a">PADDING</a>,<span class="stringliteral">"Padding (edge effects)"</span>,self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a90860af18044f5ce29b36c7c4ef112dd">PADDING_OPTIONS</a>, 0))</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a9c91be195b361b2616904f3ee2990ff5">EXTRA</a>,</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>                           <span class="stringliteral">'Additional parameters'</span>, <span class="stringliteral">'-of GTiff'</span>, optional=<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span> </div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     <span class="keyword">def </span>processAlgorithm(self, progress):</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>         cliPath = <span class="stringliteral">'"'</span> + os.path.join(pktoolsUtils.pktoolsPath(), self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#ae4ff77f62787c22082b90cce278fe647">cliName</a>()) + <span class="stringliteral">'"'</span></div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>         commands = [cliPath]</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span> </div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>         input=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a66e04e576250870781b5354957894c96">INPUT</a>)</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>         <span class="keywordflow">if</span> input != <span class="stringliteral">""</span>:</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>             commands.append(<span class="stringliteral">'-i'</span>)</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>             commands.append(<span class="stringliteral">'"'</span> + input + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span> </div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>         method=self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a0b6ef52a12318176d8a7274b0b3c0992">METHOD_OPTIONS</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a2161052c92e79f5af48d6777d37afe2f">METHOD</a>)]</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>         <span class="keywordflow">if</span> method != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>             commands.append(<span class="stringliteral">"-f"</span>)</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>             commands.append(method)</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>         commands.append(<span class="stringliteral">"-pad"</span>)</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>         commands.append(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a90860af18044f5ce29b36c7c4ef112dd">PADDING_OPTIONS</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#aeab6b7f6a3471187ae33f3597a86721a">PADDING</a>)])</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span> </div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>         <span class="keywordflow">if</span> self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#ae43cc505f2d02b9bbc05f4a84658a792">TYPE</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a6464f37811e617e629087e4760f353d8">RTYPE</a>)] != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>             commands.append(<span class="stringliteral">'-ot'</span>)</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>             commands.append(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#ae43cc505f2d02b9bbc05f4a84658a792">TYPE</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a6464f37811e617e629087e4760f353d8">RTYPE</a>)])</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>         output=self.getOutputValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a0386672f58fdda479ca994c7dd7ceda8">OUTPUT</a>)</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>         <span class="keywordflow">if</span> output != <span class="stringliteral">""</span>:</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>             commands.append(<span class="stringliteral">"-o"</span>)</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>             commands.append(<span class="stringliteral">'"'</span> + output + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span> </div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>         <span class="keywordflow">if</span> self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a818a9a5d4a7484deaa19a4445e034c60">DZ</a>) != 0:</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>             commands.append(<span class="stringliteral">"-dz"</span>)</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>             commands.append(str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a818a9a5d4a7484deaa19a4445e034c60">DZ</a>)))</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>         nodata=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a9f1e339aa49f2753729f9fcd4ed43d09">NODATA</a>)</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>         <span class="keywordflow">if</span> nodata != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>             nodataValues = nodata.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>             <span class="keywordflow">for</span> nodataValue <span class="keywordflow">in</span> nodataValues:</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>                 commands.append(<span class="stringliteral">'-nodata'</span>)</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>                 commands.append(nodataValue)</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>         extra = str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a9c91be195b361b2616904f3ee2990ff5">EXTRA</a>))</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>         <span class="keywordflow">if</span> len(extra) > 0:</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>             commands.append(extra)</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span> </div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>         pktoolsUtils.runpktools(commands, progress)</div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral_html_a0386672f58fdda479ca994c7dd7ceda8"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a0386672f58fdda479ca994c7dd7ceda8">qgis.pktools.pkfilter_spectral.pkfilter_spectral.OUTPUT</a></div><div class="ttdeci">string OUTPUT</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilter__spectral_8py_source.html#l00041">pkfilter_spectral.py:41</a></ [...]
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral_html_a0b6ef52a12318176d8a7274b0b3c0992"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a0b6ef52a12318176d8a7274b0b3c0992">qgis.pktools.pkfilter_spectral.pkfilter_spectral.METHOD_OPTIONS</a></div><div class="ttdeci">list METHOD_OPTIONS</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilter__spectral_8py_source.html#l00042">pkfilter_spectr [...]
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral_html_a2161052c92e79f5af48d6777d37afe2f"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a2161052c92e79f5af48d6777d37afe2f">qgis.pktools.pkfilter_spectral.pkfilter_spectral.METHOD</a></div><div class="ttdeci">string METHOD</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilter__spectral_8py_source.html#l00043">pkfilter_spectral.py:43</a></ [...]
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral_html_a9f1e339aa49f2753729f9fcd4ed43d09"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a9f1e339aa49f2753729f9fcd4ed43d09">qgis.pktools.pkfilter_spectral.pkfilter_spectral.NODATA</a></div><div class="ttdeci">string NODATA</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilter__spectral_8py_source.html#l00045">pkfilter_spectral.py:45</a></ [...]
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral_html_ae43cc505f2d02b9bbc05f4a84658a792"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#ae43cc505f2d02b9bbc05f4a84658a792">qgis.pktools.pkfilter_spectral.pkfilter_spectral.TYPE</a></div><div class="ttdeci">list TYPE</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilter__spectral_8py_source.html#l00049">pkfilter_spectral.py:49</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral_html_a66e04e576250870781b5354957894c96"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a66e04e576250870781b5354957894c96">qgis.pktools.pkfilter_spectral.pkfilter_spectral.INPUT</a></div><div class="ttdeci">string INPUT</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilter__spectral_8py_source.html#l00040">pkfilter_spectral.py:40</a></di [...]
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral_html"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html">qgis.pktools.pkfilter_spectral.pkfilter_spectral</a></div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilter__spectral_8py_source.html#l00038">pkfilter_spectral.py:38</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral_html_a90860af18044f5ce29b36c7c4ef112dd"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a90860af18044f5ce29b36c7c4ef112dd">qgis.pktools.pkfilter_spectral.pkfilter_spectral.PADDING_OPTIONS</a></div><div class="ttdeci">list PADDING_OPTIONS</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilter__spectral_8py_source.html#l00046">pkfilter_spec [...]
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral_html_a9c91be195b361b2616904f3ee2990ff5"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a9c91be195b361b2616904f3ee2990ff5">qgis.pktools.pkfilter_spectral.pkfilter_spectral.EXTRA</a></div><div class="ttdeci">string EXTRA</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilter__spectral_8py_source.html#l00050">pkfilter_spectral.py:50</a></di [...]
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral_html_a818a9a5d4a7484deaa19a4445e034c60"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a818a9a5d4a7484deaa19a4445e034c60">qgis.pktools.pkfilter_spectral.pkfilter_spectral.DZ</a></div><div class="ttdeci">string DZ</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilter__spectral_8py_source.html#l00044">pkfilter_spectral.py:44</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral_html_aeab6b7f6a3471187ae33f3597a86721a"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#aeab6b7f6a3471187ae33f3597a86721a">qgis.pktools.pkfilter_spectral.pkfilter_spectral.PADDING</a></div><div class="ttdeci">string PADDING</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilter__spectral_8py_source.html#l00047">pkfilter_spectral.py:47</a> [...]
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral_html_ae4ff77f62787c22082b90cce278fe647"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#ae4ff77f62787c22082b90cce278fe647">qgis.pktools.pkfilter_spectral.pkfilter_spectral.cliName</a></div><div class="ttdeci">def cliName</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilter__spectral_8py_source.html#l00052">pkfilter_spectral.py:52</a></d [...]
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral_html_a3acd427b14996200c28731af93881230"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a3acd427b14996200c28731af93881230">qgis.pktools.pkfilter_spectral.pkfilter_spectral.name</a></div><div class="ttdeci">name</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilter__spectral_8py_source.html#l00056">pkfilter_spectral.py:56</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral_html_a6464f37811e617e629087e4760f353d8"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a6464f37811e617e629087e4760f353d8">qgis.pktools.pkfilter_spectral.pkfilter_spectral.RTYPE</a></div><div class="ttdeci">string RTYPE</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilter__spectral_8py_source.html#l00048">pkfilter_spectral.py:48</a></di [...]
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral_html_a564ebf9df0204af2dcdddddd4242e8e1"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilter__spectral_1_1pkfilter__spectral.html#a564ebf9df0204af2dcdddddd4242e8e1">qgis.pktools.pkfilter_spectral.pkfilter_spectral.group</a></div><div class="ttdeci">group</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilter__spectral_8py_source.html#l00057">pkfilter_spectral.py:57</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pktools_2pkfilterdem_8py_source.html b/doc/html/pktools_2pkfilterdem_8py_source.html
deleted file mode 100644
index acb9ea6..0000000
--- a/doc/html/pktools_2pkfilterdem_8py_source.html
+++ /dev/null
@@ -1,179 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/pktools/pkfilterdem.py Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li><li class="navelem"><a class="el" href="dir_b7cc22b4453454f1e686d9a2e78d988d.html">pktools</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkfilterdem.py</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment"># -*- coding: utf-8 -*-</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> </div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="stringliteral">    pkfilterdem.py</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="stringliteral">    ---------------------</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="stringliteral">    Date                 : April 2015</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="stringliteral">    Copyright            : (C) 2015 by Pieter Kempeneers</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="stringliteral">    Email                : kempenep at gmail dot com</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="stringliteral">*   This program is free software; you can redistribute it and/or modify  *</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="stringliteral">*   it under the terms of the GNU General Public License as published by  *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="stringliteral">*   the Free Software Foundation; either version 2 of the License, or     *</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="stringliteral">*   (at your option) any later version.                                   *</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> __author__ = <span class="stringliteral">'Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> __date__ = <span class="stringliteral">'April 2015'</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> __copyright__ = <span class="stringliteral">'(C) 2015, Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"># This will get replaced with a git SHA1 when you do a git archive</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> __revision__ = <span class="stringliteral">'$Format:%H$'</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">import</span> os</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">from</span> pktoolsUtils <span class="keyword">import</span> pktoolsUtils</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">from</span> pktoolsAlgorithm <span class="keyword">import</span> pktoolsAlgorithm</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterMultipleInput</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterRaster</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterFile</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">from</span> processing.core.outputs <span class="keyword">import</span> OutputRaster</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterSelection</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterNumber</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterString</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterBoolean</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterExtent</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
-<div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html">   39</a></span> <span class="keyword">class </span><a class="code" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html">pkfilterdem</a>(pktoolsAlgorithm):</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> </div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     INPUT = <span class="stringliteral">"INPUT"</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     OUTPUT = <span class="stringliteral">"OUTPUT"</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     DIM = <span class="stringliteral">"DIM"</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     RTYPE = <span class="stringliteral">'RTYPE'</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     TYPE = [<span class="stringliteral">'Float32'</span>,<span class="stringliteral">'Byte'</span>,<span class="stringliteral">'Int16'</span>,<span class="stringliteral">'UInt16'</span>,<span class="stringliteral">'UInt32'</span>,<span class="stringliteral">'Int32'</span>,<span class="stringliteral">'Float64'</span>,<span class="stringliteral">'CInt16& [...]
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     FILTER_OPTIONS = [<span class="stringliteral">"promorph"</span>]</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     FILTER = <span class="stringliteral">"FILTER"</span></div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     EXTRA = <span class="stringliteral">'EXTRA'</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span> </div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     <span class="keyword">def </span>cliName(self):</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>         <span class="keywordflow">return</span> <span class="stringliteral">"pkfilterdem"</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span> </div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     <span class="keyword">def </span>defineCharacteristics(self):</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>         self.<a class="code" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html#acf67738f3f769ecd8c908f883aaf585a">name</a> = <span class="stringliteral">"Create DTM from DEM raster dataset)"</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>         self.<a class="code" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html#a2b10663adca2f38835d50d6872e157ce">group</a> = <span class="stringliteral">"[pktools] LiDAR"</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span> </div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>         self.addParameter(ParameterRaster(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html#ae1e46a26be886bacea781ad51b4410a8">INPUT</a>, <span class="stringliteral">'Input layer raster data set'</span>,ParameterRaster))</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html#a7f5103cdd44f324038b46d976a5b83fd">FILTER</a>,<span class="stringliteral">"filter"</span>,self.<a class="code" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html#a638ece9d2b2398b40299138509bfb82b">FILTER_OPTIONS</a>, 0))</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>         self.addParameter(ParameterNumber(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html#ad307370f861c20fe353817b2ab0b8d30">DIM</a>, <span class="stringliteral">"maximum filter kernel size"</span>,3,<span class="keywordtype">None</span>,17))</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span> </div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>         self.addOutput(OutputRaster(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html#af8b963b1053b7cb062180301e101f6e8">OUTPUT</a>, <span class="stringliteral">"Output raster data set"</span>))</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html#aabf2e76352764ec3bd9c181276da0022">RTYPE</a>, <span class="stringliteral">'Output raster type'</span>, self.<a class="code" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html#aa4a697381f67ada0cfdf81a7f103cfcb">TYPE</a>, 0))</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html#a350392989faf79142d8005da7a13056b">EXTRA</a>,</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>                           <span class="stringliteral">'Additional parameters'</span>, <span class="stringliteral">'-of GTiff'</span>, optional=<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span> </div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     <span class="keyword">def </span>processAlgorithm(self, progress):</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>         cliPath = <span class="stringliteral">'"'</span> + os.path.join(pktoolsUtils.pktoolsPath(), self.<a class="code" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html#a0aac6f68d72ca4b02b164f5d76f25e6e">cliName</a>()) + <span class="stringliteral">'"'</span></div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>         commands = [cliPath]</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span> </div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>         input=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html#ae1e46a26be886bacea781ad51b4410a8">INPUT</a>)</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>         <span class="keywordflow">if</span> input != <span class="stringliteral">""</span>:</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>             commands.append(<span class="stringliteral">'-i'</span>)</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>             commands.append(<span class="stringliteral">'"'</span> + input + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span> </div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>         filter=self.<a class="code" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html#a638ece9d2b2398b40299138509bfb82b">FILTER_OPTIONS</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html#a7f5103cdd44f324038b46d976a5b83fd">FILTER</a>)]</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>         <span class="keywordflow">if</span> filter != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>             commands.append(<span class="stringliteral">"-f"</span>)</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>             commands.append(filter)</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>         <span class="keywordflow">if</span> self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html#ad307370f861c20fe353817b2ab0b8d30">DIM</a>) != 0:</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>             commands.append(<span class="stringliteral">"-dim"</span>)</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>             commands.append(str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html#ad307370f861c20fe353817b2ab0b8d30">DIM</a>)))</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span> </div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>         <span class="keywordflow">if</span> self.<a class="code" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html#aa4a697381f67ada0cfdf81a7f103cfcb">TYPE</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html#aabf2e76352764ec3bd9c181276da0022">RTYPE</a>)] != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>             commands.append(<span class="stringliteral">'-ot'</span>)</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>             commands.append(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html#aa4a697381f67ada0cfdf81a7f103cfcb">TYPE</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html#aabf2e76352764ec3bd9c181276da0022">RTYPE</a>)])</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>         output=self.getOutputValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html#af8b963b1053b7cb062180301e101f6e8">OUTPUT</a>)</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>         <span class="keywordflow">if</span> output != <span class="stringliteral">""</span>:</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>             commands.append(<span class="stringliteral">"-o"</span>)</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>             commands.append(<span class="stringliteral">'"'</span> + output + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span> </div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>         extra = str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html#a350392989faf79142d8005da7a13056b">EXTRA</a>))</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>         <span class="keywordflow">if</span> len(extra) > 0:</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>             commands.append(extra)</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span> </div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>         pktoolsUtils.runpktools(commands, progress)</div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem_html_a350392989faf79142d8005da7a13056b"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html#a350392989faf79142d8005da7a13056b">qgis.pktools.pkfilterdem.pkfilterdem.EXTRA</a></div><div class="ttdeci">string EXTRA</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilterdem_8py_source.html#l00048">pkfilterdem.py:48</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem_html_ad307370f861c20fe353817b2ab0b8d30"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html#ad307370f861c20fe353817b2ab0b8d30">qgis.pktools.pkfilterdem.pkfilterdem.DIM</a></div><div class="ttdeci">string DIM</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilterdem_8py_source.html#l00043">pkfilterdem.py:43</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem_html_af8b963b1053b7cb062180301e101f6e8"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html#af8b963b1053b7cb062180301e101f6e8">qgis.pktools.pkfilterdem.pkfilterdem.OUTPUT</a></div><div class="ttdeci">string OUTPUT</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilterdem_8py_source.html#l00042">pkfilterdem.py:42</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem_html_a638ece9d2b2398b40299138509bfb82b"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html#a638ece9d2b2398b40299138509bfb82b">qgis.pktools.pkfilterdem.pkfilterdem.FILTER_OPTIONS</a></div><div class="ttdeci">list FILTER_OPTIONS</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilterdem_8py_source.html#l00046">pkfilterdem.py:46</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem_html_acf67738f3f769ecd8c908f883aaf585a"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html#acf67738f3f769ecd8c908f883aaf585a">qgis.pktools.pkfilterdem.pkfilterdem.name</a></div><div class="ttdeci">name</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilterdem_8py_source.html#l00054">pkfilterdem.py:54</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem_html_a7f5103cdd44f324038b46d976a5b83fd"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html#a7f5103cdd44f324038b46d976a5b83fd">qgis.pktools.pkfilterdem.pkfilterdem.FILTER</a></div><div class="ttdeci">string FILTER</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilterdem_8py_source.html#l00047">pkfilterdem.py:47</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem_html"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html">qgis.pktools.pkfilterdem.pkfilterdem</a></div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilterdem_8py_source.html#l00039">pkfilterdem.py:39</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem_html_aabf2e76352764ec3bd9c181276da0022"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html#aabf2e76352764ec3bd9c181276da0022">qgis.pktools.pkfilterdem.pkfilterdem.RTYPE</a></div><div class="ttdeci">string RTYPE</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilterdem_8py_source.html#l00044">pkfilterdem.py:44</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem_html_a2b10663adca2f38835d50d6872e157ce"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html#a2b10663adca2f38835d50d6872e157ce">qgis.pktools.pkfilterdem.pkfilterdem.group</a></div><div class="ttdeci">group</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilterdem_8py_source.html#l00055">pkfilterdem.py:55</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem_html_ae1e46a26be886bacea781ad51b4410a8"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html#ae1e46a26be886bacea781ad51b4410a8">qgis.pktools.pkfilterdem.pkfilterdem.INPUT</a></div><div class="ttdeci">string INPUT</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilterdem_8py_source.html#l00041">pkfilterdem.py:41</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem_html_a0aac6f68d72ca4b02b164f5d76f25e6e"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html#a0aac6f68d72ca4b02b164f5d76f25e6e">qgis.pktools.pkfilterdem.pkfilterdem.cliName</a></div><div class="ttdeci">def cliName</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilterdem_8py_source.html#l00050">pkfilterdem.py:50</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem_html_aa4a697381f67ada0cfdf81a7f103cfcb"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkfilterdem_1_1pkfilterdem.html#aa4a697381f67ada0cfdf81a7f103cfcb">qgis.pktools.pkfilterdem.pkfilterdem.TYPE</a></div><div class="ttdeci">list TYPE</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkfilterdem_8py_source.html#l00045">pkfilterdem.py:45</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pktools_2pkgetmask_8py_source.html b/doc/html/pktools_2pkgetmask_8py_source.html
deleted file mode 100644
index c40a453..0000000
--- a/doc/html/pktools_2pkgetmask_8py_source.html
+++ /dev/null
@@ -1,212 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/pktools/pkgetmask.py Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li><li class="navelem"><a class="el" href="dir_b7cc22b4453454f1e686d9a2e78d988d.html">pktools</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkgetmask.py</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment"># -*- coding: utf-8 -*-</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> </div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="stringliteral">    pkgetmask.py</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="stringliteral">    ---------------------</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="stringliteral">    Date                 : April 2015</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="stringliteral">    Copyright            : (C) 2015 by Pieter Kempeneers</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="stringliteral">    Email                : kempenep at gmail dot com</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="stringliteral">*   This program is free software; you can redistribute it and/or modify  *</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="stringliteral">*   it under the terms of the GNU General Public License as published by  *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="stringliteral">*   the Free Software Foundation; either version 2 of the License, or     *</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="stringliteral">*   (at your option) any later version.                                   *</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> __author__ = <span class="stringliteral">'Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> __date__ = <span class="stringliteral">'April 2015'</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> __copyright__ = <span class="stringliteral">'(C) 2015, Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"># This will get replaced with a git SHA1 when you do a git archive</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> __revision__ = <span class="stringliteral">'$Format:%H$'</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">import</span> os</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">from</span> pktoolsUtils <span class="keyword">import</span> pktoolsUtils</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">from</span> pktoolsAlgorithm <span class="keyword">import</span> pktoolsAlgorithm</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterMultipleInput</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterRaster</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">from</span> processing.core.outputs <span class="keyword">import</span> OutputRaster</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterSelection</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterNumber</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterString</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterBoolean</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterExtent</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
-<div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">   38</a></span> <span class="keyword">class </span><a class="code" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">pkgetmask</a>(pktoolsAlgorithm):</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> </div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     INPUT = <span class="stringliteral">"INPUT"</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     BAND = <span class="stringliteral">"BAND"</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     MIN = <span class="stringliteral">"MIN"</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     MAX = <span class="stringliteral">"MAX"</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     OPERATOR_OPTIONS = [<span class="stringliteral">"OR"</span>, <span class="stringliteral">"AND"</span>]</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     OPERATOR = <span class="stringliteral">"OPERATOR"</span></div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     DATA = <span class="stringliteral">"DATA"</span></div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     NODATA = <span class="stringliteral">"NODATA"</span></div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     OUTPUT = <span class="stringliteral">"OUTPUT"</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     RTYPE = <span class="stringliteral">'RTYPE'</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     TYPE = [<span class="stringliteral">'none'</span>, <span class="stringliteral">'Byte'</span>,<span class="stringliteral">'Int16'</span>,<span class="stringliteral">'UInt16'</span>,<span class="stringliteral">'UInt32'</span>,<span class="stringliteral">'Int32'</span>,<span class="stringliteral">'Float32'</span>,<span class="stringliteral">'Float64&# [...]
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     EXTRA = <span class="stringliteral">'EXTRA'</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span> </div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     <span class="keyword">def </span>cliName(self):</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>         <span class="keywordflow">return</span> <span class="stringliteral">"pkgetmask"</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span> </div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <span class="keyword">def </span>defineCharacteristics(self):</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>         self.<a class="code" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#ac4229d79e7fdbcc320c34b70b4996c61">name</a> = <span class="stringliteral">"create mask from raster dataset"</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>         self.<a class="code" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#afe1f40dd307ff76950c2b7095fa51b2d">group</a> = <span class="stringliteral">"[pktools] raster"</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>         self.addParameter(ParameterRaster(self.<a class="code" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#aaf2310f968ae6d6254816539b83b424b">INPUT</a>, <span class="stringliteral">'Input layer raster data set'</span>,ParameterRaster))</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#a4b3b39185a49678924fa180770112465">BAND</a>, <span class="stringliteral">"Band(s) used for mask (e.g., 0;1)"</span>,<span class="stringliteral">"0"</span>))</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#accd8fb321226d11fb68b2564297d3b13">MIN</a>, <span class="stringliteral">"Minimum valid value (one value per band)"</span>,<span class="stringliteral">"none"</span>))</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#a89fc80dd3cf449b57ee883116ea2b4a7">MAX</a>, <span class="stringliteral">"Maximum valid value (one value per band)"</span>,<span class="stringliteral">"none"</span>))</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#af34e465611d97efa0f38d938c61391d6">OPERATOR</a>,<span class="stringliteral">"getmask rule"</span>,self.<a class="code" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#a8e2b218c2424a51cbc4a93fe83d07c04">OPERATOR_OPTIONS</a>, 0))</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#a70f3dbf7f080106837a8b17c006d81ac">DATA</a>, <span class="stringliteral">"write value(s) for valid pixels (e.g., 0;255)"</span>,<span class="stringliteral">"1"</span>))</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#af966197d692f8351d058f374fbc5179c">NODATA</a>, <span class="stringliteral">"write value(s) for invalid pixels"</span>,<span class="stringliteral">"0"</span>))</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>         self.addOutput(OutputRaster(self.<a class="code" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#a9923121c7323d34231111da4876b6ae1">OUTPUT</a>, <span class="stringliteral">"Output raster data set"</span>))</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#ac7313cff3a0c24fab4a0c93b49a46ed8">RTYPE</a>, <span class="stringliteral">'Output raster type (leave as none to keep original type)'</span>, self.<a class="code" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#a5d4080e59895fdae293320e363dbfa03">TYPE</a>, 0))</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#a67fb04dae201f7eeacd2c1c15ea8a68b">EXTRA</a>,</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>                           <span class="stringliteral">'Additional parameters'</span>, <span class="stringliteral">'-of GTiff'</span>, optional=<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span> </div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     <span class="keyword">def </span>processAlgorithm(self, progress):</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>         cliPath = <span class="stringliteral">'"'</span> + os.path.join(pktoolsUtils.pktoolsPath(), self.<a class="code" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#af8638a18a992135f0d2333599455da9d">cliName</a>()) + <span class="stringliteral">'"'</span></div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>         commands = [cliPath]</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span> </div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>         input=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#aaf2310f968ae6d6254816539b83b424b">INPUT</a>)</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>         commands.append(<span class="stringliteral">'-i'</span>)</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>         commands.append(<span class="stringliteral">'"'</span> + input + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span> </div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>         band=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#a4b3b39185a49678924fa180770112465">BAND</a>)</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>         bandValues = band.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>         <span class="keywordflow">for</span> bandValue <span class="keywordflow">in</span> bandValues:</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>             commands.append(<span class="stringliteral">'-band'</span>)</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>             commands.append(bandValue)</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>         min=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#accd8fb321226d11fb68b2564297d3b13">MIN</a>)</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>         <span class="keywordflow">if</span> min != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>             minValues = min.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>             <span class="keywordflow">for</span> minValue <span class="keywordflow">in</span> minValues:</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>                 commands.append(<span class="stringliteral">'-min'</span>)</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>                 commands.append(minValue)</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>         max=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#a89fc80dd3cf449b57ee883116ea2b4a7">MAX</a>)</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>         <span class="keywordflow">if</span> max != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>             maxValues = max.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>             <span class="keywordflow">for</span> maxValue <span class="keywordflow">in</span> maxValues:</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>                 commands.append(<span class="stringliteral">'-max'</span>)</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>                 commands.append(maxValue)</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>         commands.append(<span class="stringliteral">"-p"</span>)</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>         commands.append(self.<a class="code" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#a8e2b218c2424a51cbc4a93fe83d07c04">OPERATOR_OPTIONS</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#af34e465611d97efa0f38d938c61391d6">OPERATOR</a>)])</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>         data=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#a70f3dbf7f080106837a8b17c006d81ac">DATA</a>)</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>         <span class="keywordflow">if</span> data != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>             dataValues = data.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>             <span class="keywordflow">for</span> dataValue <span class="keywordflow">in</span> dataValues:</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>                 commands.append(<span class="stringliteral">'-data'</span>)</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>                 commands.append(dataValue)</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>         nodata=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#af966197d692f8351d058f374fbc5179c">NODATA</a>)</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>         <span class="keywordflow">if</span> nodata != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>             nodataValues = nodata.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>             <span class="keywordflow">for</span> nodataValue <span class="keywordflow">in</span> nodataValues:</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>                 commands.append(<span class="stringliteral">'-nodata'</span>)</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>                 commands.append(nodataValue)</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>         <span class="keywordflow">if</span> self.<a class="code" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#a5d4080e59895fdae293320e363dbfa03">TYPE</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#ac7313cff3a0c24fab4a0c93b49a46ed8">RTYPE</a>)] != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>             commands.append(<span class="stringliteral">'-ot'</span>)</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>             commands.append(self.<a class="code" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#a5d4080e59895fdae293320e363dbfa03">TYPE</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#ac7313cff3a0c24fab4a0c93b49a46ed8">RTYPE</a>)])</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>         output=self.getOutputValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#a9923121c7323d34231111da4876b6ae1">OUTPUT</a>)</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>         <span class="keywordflow">if</span> output != <span class="stringliteral">""</span>:</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>             commands.append(<span class="stringliteral">"-o"</span>)</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>             commands.append(<span class="stringliteral">'"'</span> + output + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span> </div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>         data=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#a70f3dbf7f080106837a8b17c006d81ac">DATA</a>)</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span> </div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>         extra = str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#a67fb04dae201f7eeacd2c1c15ea8a68b">EXTRA</a>))</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>         <span class="keywordflow">if</span> len(extra) > 0:</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>             commands.append(extra)</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span> </div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>         pktoolsUtils.runpktools(commands, progress)</div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask_html_a8e2b218c2424a51cbc4a93fe83d07c04"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#a8e2b218c2424a51cbc4a93fe83d07c04">qgis.pktools.pkgetmask.pkgetmask.OPERATOR_OPTIONS</a></div><div class="ttdeci">list OPERATOR_OPTIONS</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkgetmask_8py_source.html#l00044">pkgetmask.py:44</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask_html"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html">qgis.pktools.pkgetmask.pkgetmask</a></div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkgetmask_8py_source.html#l00038">pkgetmask.py:38</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask_html_af8638a18a992135f0d2333599455da9d"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#af8638a18a992135f0d2333599455da9d">qgis.pktools.pkgetmask.pkgetmask.cliName</a></div><div class="ttdeci">def cliName</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkgetmask_8py_source.html#l00053">pkgetmask.py:53</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask_html_a9923121c7323d34231111da4876b6ae1"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#a9923121c7323d34231111da4876b6ae1">qgis.pktools.pkgetmask.pkgetmask.OUTPUT</a></div><div class="ttdeci">string OUTPUT</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkgetmask_8py_source.html#l00048">pkgetmask.py:48</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask_html_a5d4080e59895fdae293320e363dbfa03"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#a5d4080e59895fdae293320e363dbfa03">qgis.pktools.pkgetmask.pkgetmask.TYPE</a></div><div class="ttdeci">list TYPE</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkgetmask_8py_source.html#l00050">pkgetmask.py:50</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask_html_aaf2310f968ae6d6254816539b83b424b"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#aaf2310f968ae6d6254816539b83b424b">qgis.pktools.pkgetmask.pkgetmask.INPUT</a></div><div class="ttdeci">string INPUT</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkgetmask_8py_source.html#l00040">pkgetmask.py:40</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask_html_af966197d692f8351d058f374fbc5179c"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#af966197d692f8351d058f374fbc5179c">qgis.pktools.pkgetmask.pkgetmask.NODATA</a></div><div class="ttdeci">string NODATA</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkgetmask_8py_source.html#l00047">pkgetmask.py:47</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask_html_a4b3b39185a49678924fa180770112465"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#a4b3b39185a49678924fa180770112465">qgis.pktools.pkgetmask.pkgetmask.BAND</a></div><div class="ttdeci">string BAND</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkgetmask_8py_source.html#l00041">pkgetmask.py:41</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask_html_a70f3dbf7f080106837a8b17c006d81ac"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#a70f3dbf7f080106837a8b17c006d81ac">qgis.pktools.pkgetmask.pkgetmask.DATA</a></div><div class="ttdeci">string DATA</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkgetmask_8py_source.html#l00046">pkgetmask.py:46</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask_html_accd8fb321226d11fb68b2564297d3b13"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#accd8fb321226d11fb68b2564297d3b13">qgis.pktools.pkgetmask.pkgetmask.MIN</a></div><div class="ttdeci">string MIN</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkgetmask_8py_source.html#l00042">pkgetmask.py:42</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask_html_a67fb04dae201f7eeacd2c1c15ea8a68b"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#a67fb04dae201f7eeacd2c1c15ea8a68b">qgis.pktools.pkgetmask.pkgetmask.EXTRA</a></div><div class="ttdeci">string EXTRA</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkgetmask_8py_source.html#l00051">pkgetmask.py:51</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask_html_af34e465611d97efa0f38d938c61391d6"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#af34e465611d97efa0f38d938c61391d6">qgis.pktools.pkgetmask.pkgetmask.OPERATOR</a></div><div class="ttdeci">string OPERATOR</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkgetmask_8py_source.html#l00045">pkgetmask.py:45</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask_html_ac7313cff3a0c24fab4a0c93b49a46ed8"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#ac7313cff3a0c24fab4a0c93b49a46ed8">qgis.pktools.pkgetmask.pkgetmask.RTYPE</a></div><div class="ttdeci">string RTYPE</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkgetmask_8py_source.html#l00049">pkgetmask.py:49</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask_html_afe1f40dd307ff76950c2b7095fa51b2d"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#afe1f40dd307ff76950c2b7095fa51b2d">qgis.pktools.pkgetmask.pkgetmask.group</a></div><div class="ttdeci">group</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkgetmask_8py_source.html#l00058">pkgetmask.py:58</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask_html_a89fc80dd3cf449b57ee883116ea2b4a7"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#a89fc80dd3cf449b57ee883116ea2b4a7">qgis.pktools.pkgetmask.pkgetmask.MAX</a></div><div class="ttdeci">string MAX</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkgetmask_8py_source.html#l00043">pkgetmask.py:43</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask_html_ac4229d79e7fdbcc320c34b70b4996c61"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkgetmask_1_1pkgetmask.html#ac4229d79e7fdbcc320c34b70b4996c61">qgis.pktools.pkgetmask.pkgetmask.name</a></div><div class="ttdeci">name</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkgetmask_8py_source.html#l00057">pkgetmask.py:57</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pktools_2pklas2img_8py_source.html b/doc/html/pktools_2pklas2img_8py_source.html
deleted file mode 100644
index 84fe53d..0000000
--- a/doc/html/pktools_2pklas2img_8py_source.html
+++ /dev/null
@@ -1,222 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/pktools/pklas2img.py Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li><li class="navelem"><a class="el" href="dir_b7cc22b4453454f1e686d9a2e78d988d.html">pktools</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pklas2img.py</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment"># -*- coding: utf-8 -*-</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> </div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="stringliteral">    pklas2img.py</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="stringliteral">    ---------------------</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="stringliteral">    Date                 : April 2015</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="stringliteral">    Copyright            : (C) 2015 by Pieter Kempeneers</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="stringliteral">    Email                : kempenep at gmail dot com</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="stringliteral">*   This program is free software; you can redistribute it and/or modify  *</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="stringliteral">*   it under the terms of the GNU General Public License as published by  *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="stringliteral">*   the Free Software Foundation; either version 2 of the License, or     *</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="stringliteral">*   (at your option) any later version.                                   *</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> __author__ = <span class="stringliteral">'Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> __date__ = <span class="stringliteral">'April 2015'</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> __copyright__ = <span class="stringliteral">'(C) 2015, Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"># This will get replaced with a git SHA1 when you do a git archive</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> __revision__ = <span class="stringliteral">'$Format:%H$'</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">import</span> os</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">from</span> pktoolsUtils <span class="keyword">import</span> pktoolsUtils</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">from</span> pktoolsAlgorithm <span class="keyword">import</span> pktoolsAlgorithm</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterMultipleInput</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterRaster</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterFile</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">from</span> processing.core.outputs <span class="keyword">import</span> OutputRaster</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterSelection</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterNumber</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterString</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterBoolean</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterExtent</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
-<div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">   39</a></span> <span class="keyword">class </span><a class="code" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">pklas2img</a>(pktoolsAlgorithm):</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> </div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     INPUT = <span class="stringliteral">"INPUT"</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     OUTPUT = <span class="stringliteral">"OUTPUT"</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     ATTRIBUTE_OPTIONS = [<span class="stringliteral">"z"</span>,<span class="stringliteral">"intensity"</span>, <span class="stringliteral">"return"</span>, <span class="stringliteral">"nreturn"</span>]</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     COMPOSITE_OPTIONS = [<span class="stringliteral">"last"</span>, <span class="stringliteral">"min"</span>, <span class="stringliteral">"max"</span>, <span class="stringliteral">"median"</span>, <span class="stringliteral">"mean"</span>, <span class="stringliteral">"sum"</span>, <span class="stringliteral">"first"</span>, <span class="strin [...]
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     FILTER_OPTIONS = [<span class="stringliteral">"all"</span>,<span class="stringliteral">"first"</span>,<span class="stringliteral">"last"</span>,<span class="stringliteral">"single"</span>,<span class="stringliteral">"multiple"</span>]</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span> </div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     ATTRIBUTE = <span class="stringliteral">"ATTRIBUTE"</span></div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     COMPOSITE = <span class="stringliteral">"COMPOSITE"</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     FILTER = <span class="stringliteral">"FILTER"</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span> </div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     PERCENTILE = <span class="stringliteral">"PERCENTILE"</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     DX = <span class="stringliteral">"DX"</span></div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     DY = <span class="stringliteral">"DY"</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span> <span class="comment">#    PROJWIN = 'PROJWIN'</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     NODATA = <span class="stringliteral">"NODATA"</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     RTYPE = <span class="stringliteral">'RTYPE'</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     TYPE = [<span class="stringliteral">'Float32'</span>,<span class="stringliteral">'Byte'</span>,<span class="stringliteral">'Int16'</span>,<span class="stringliteral">'UInt16'</span>,<span class="stringliteral">'UInt32'</span>,<span class="stringliteral">'Int32'</span>,<span class="stringliteral">'Float64'</span>,<span class="stringliteral">'CInt16& [...]
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     EXTRA = <span class="stringliteral">'EXTRA'</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span> </div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     <span class="keyword">def </span>cliName(self):</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>         <span class="keywordflow">return</span> <span class="stringliteral">"pklas2img"</span></div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span> </div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     <span class="keyword">def </span>defineCharacteristics(self):</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>         self.<a class="code" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#accc880de7d62d73a9a3c5b34d2c1205a">name</a> = <span class="stringliteral">"(Linux only) Create raster dataset from LAS(Z) data point cloud(s)"</span></div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>         self.<a class="code" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#ae424f891aaec9acfd3d85259f0b5ebca">group</a> = <span class="stringliteral">"[pktools] LiDAR"</span></div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span> </div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>         self.addParameter(ParameterFile(self.<a class="code" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#ac7de684f0362601c5bf667db9b68763a">INPUT</a>, <span class="stringliteral">"Input LAS(Z) data set(s)"</span>, <span class="keyword">False</span>, <span class="keyword">False</span>))</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span> </div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#adfbb8aab172e26f0382162c1a81fa863">ATTRIBUTE</a>,<span class="stringliteral">"name of the point attribute to select"</span>,self.<a class="code" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#afe4c444f4c7f89fd2851e4517c66e82d">ATTRIBUTE_OPTIONS</a>, 0))</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#a8e27277f96bb3c59dc7fa3e39050ac85">COMPOSITE</a>,<span class="stringliteral">"composite for multiple points in cell"</span>,self.<a class="code" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#a95fe33a74c29ec44b4601b384358e024">COMPOSITE_OPTIONS</a>, 0))</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#acf62ddc2366d8d598fbee8185a363c9d">FILTER</a>,<span class="stringliteral">"filter las points"</span>,self.<a class="code" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#a18f6b8223a9c56b4fd5676f5c8062d13">FILTER_OPTIONS</a>, 0))</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>         self.addOutput(OutputRaster(self.<a class="code" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#aa923079e3e31c6f9045fc26402066b28">OUTPUT</a>, <span class="stringliteral">"Output raster data set"</span>))</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#a450ccb8c2deb11dff9a0debe2ab3873a">RTYPE</a>, <span class="stringliteral">'Output raster type'</span>, self.<a class="code" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#ae724a48a4f739d510c3d4aadfa069b83">TYPE</a>, 0))</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>         self.addParameter(ParameterNumber(self.<a class="code" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#ac0a6e98dcb6d3726d1e861e1485cf3d9">PERCENTILE</a>, <span class="stringliteral">"Percentile value used for rule percentile"</span>,0.0,100.0,95))</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>         self.addParameter(ParameterNumber(self.<a class="code" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#a4b50520fa826ccb6a6bc24e414ec5391">DX</a>, <span class="stringliteral">"Output resolution in x"</span>,0.0,<span class="keywordtype">None</span>,1.0))</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>         self.addParameter(ParameterNumber(self.<a class="code" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#ab450e8c2f27160d69f5f376a6e39dfa1">DY</a>, <span class="stringliteral">"Output resolution in y"</span>,0.0,<span class="keywordtype">None</span>,1.0))</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>         <span class="comment"># self.addParameter(ParameterExtent(self.PROJWIN,</span></div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>         <span class="comment">#                   'Georeferenced boundingbox'))</span></div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>         self.addParameter(ParameterNumber(self.<a class="code" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#a2072186e8c3a370ceb38067d56b33868">NODATA</a>, <span class="stringliteral">"nodata value to put in image"</span>,0,<span class="keywordtype">None</span>,0))</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#a534a211c9476179786a5b4fd526aa76b">EXTRA</a>,</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>                           <span class="stringliteral">'Additional parameters'</span>, <span class="stringliteral">'-of GTiff'</span>, optional=<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span> </div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     <span class="keyword">def </span>processAlgorithm(self, progress):</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>         cliPath = <span class="stringliteral">'"'</span> + os.path.join(pktoolsUtils.pktoolsPath(), self.<a class="code" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#a341f95eb3efccf5c63b40c2aaf5b84d9">cliName</a>()) + <span class="stringliteral">'"'</span></div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>         commands = [cliPath]</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span> </div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>         input=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#ac7de684f0362601c5bf667db9b68763a">INPUT</a>)</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>         inputFiles = input.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>         <span class="keywordflow">for</span> inputFile <span class="keywordflow">in</span> inputFiles:</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>             commands.append(<span class="stringliteral">'-i'</span>)</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>             commands.append(<span class="stringliteral">'"'</span> + inputFile + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span> </div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>         <span class="keywordflow">if</span> self.<a class="code" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#ae724a48a4f739d510c3d4aadfa069b83">TYPE</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#a450ccb8c2deb11dff9a0debe2ab3873a">RTYPE</a>)] != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>             commands.append(<span class="stringliteral">'-ot'</span>)</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>             commands.append(self.<a class="code" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#ae724a48a4f739d510c3d4aadfa069b83">TYPE</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#a450ccb8c2deb11dff9a0debe2ab3873a">RTYPE</a>)])</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span> </div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>         output=self.getOutputValue(self.<a class="code" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#aa923079e3e31c6f9045fc26402066b28">OUTPUT</a>)</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>         <span class="keywordflow">if</span> output != <span class="stringliteral">""</span>:</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>             commands.append(<span class="stringliteral">"-o"</span>)</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>             commands.append(<span class="stringliteral">'"'</span> + output + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span> </div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>         commands.append(<span class="stringliteral">"-n"</span>)</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>         commands.append(self.<a class="code" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#afe4c444f4c7f89fd2851e4517c66e82d">ATTRIBUTE_OPTIONS</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#adfbb8aab172e26f0382162c1a81fa863">ATTRIBUTE</a>)])</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>         commands.append(<span class="stringliteral">"-comp"</span>)</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>         commands.append(self.<a class="code" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#a95fe33a74c29ec44b4601b384358e024">COMPOSITE_OPTIONS</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#a8e27277f96bb3c59dc7fa3e39050ac85">COMPOSITE</a>)])</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>         commands.append(<span class="stringliteral">"-fir"</span>)</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>         commands.append(self.<a class="code" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#a18f6b8223a9c56b4fd5676f5c8062d13">FILTER_OPTIONS</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#acf62ddc2366d8d598fbee8185a363c9d">FILTER</a>)])</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>         <span class="keywordflow">if</span> self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#a4b50520fa826ccb6a6bc24e414ec5391">DX</a>) != 0:</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>             commands.append(<span class="stringliteral">"-dx"</span>)</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>             commands.append(str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#a4b50520fa826ccb6a6bc24e414ec5391">DX</a>)))</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>         <span class="keywordflow">if</span> self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#ab450e8c2f27160d69f5f376a6e39dfa1">DY</a>) != 0:</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>             commands.append(<span class="stringliteral">"-dy"</span>)</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>             commands.append(str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#ab450e8c2f27160d69f5f376a6e39dfa1">DY</a>)))</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>         <span class="comment">#projwin = str(self.getParameterValue(self.PROJWIN))</span></div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>         <span class="comment"># regionCoords = projwin.split(',')</span></div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>         <span class="comment"># commands.append('-ulx')</span></div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>         <span class="comment"># commands.append(regionCoords[0])</span></div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>         <span class="comment"># commands.append('-uly')</span></div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>         <span class="comment"># commands.append(regionCoords[3])</span></div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>         <span class="comment"># commands.append('-lrx')</span></div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>         <span class="comment"># commands.append(regionCoords[1])</span></div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>         <span class="comment"># commands.append('-lry')</span></div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>         <span class="comment"># commands.append(regionCoords[2])</span></div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>         commands.append(<span class="stringliteral">'-nodata'</span>)</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>         commands.append(str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#a2072186e8c3a370ceb38067d56b33868">NODATA</a>)))</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span> </div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>         extra = str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#a534a211c9476179786a5b4fd526aa76b">EXTRA</a>))</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>         <span class="keywordflow">if</span> len(extra) > 0:</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>             commands.append(extra)</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span> </div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>         pktoolsUtils.runpktools(commands, progress)</div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img_html_a8e27277f96bb3c59dc7fa3e39050ac85"><div class="ttname"><a href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#a8e27277f96bb3c59dc7fa3e39050ac85">qgis.pktools.pklas2img.pklas2img.COMPOSITE</a></div><div class="ttdeci">string COMPOSITE</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pklas2img_8py_source.html#l00048">pklas2img.py:48</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img_html_aa923079e3e31c6f9045fc26402066b28"><div class="ttname"><a href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#aa923079e3e31c6f9045fc26402066b28">qgis.pktools.pklas2img.pklas2img.OUTPUT</a></div><div class="ttdeci">string OUTPUT</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pklas2img_8py_source.html#l00042">pklas2img.py:42</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img_html_a450ccb8c2deb11dff9a0debe2ab3873a"><div class="ttname"><a href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#a450ccb8c2deb11dff9a0debe2ab3873a">qgis.pktools.pklas2img.pklas2img.RTYPE</a></div><div class="ttdeci">string RTYPE</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pklas2img_8py_source.html#l00056">pklas2img.py:56</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img_html_ac0a6e98dcb6d3726d1e861e1485cf3d9"><div class="ttname"><a href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#ac0a6e98dcb6d3726d1e861e1485cf3d9">qgis.pktools.pklas2img.pklas2img.PERCENTILE</a></div><div class="ttdeci">string PERCENTILE</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pklas2img_8py_source.html#l00051">pklas2img.py:51</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img_html_a341f95eb3efccf5c63b40c2aaf5b84d9"><div class="ttname"><a href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#a341f95eb3efccf5c63b40c2aaf5b84d9">qgis.pktools.pklas2img.pklas2img.cliName</a></div><div class="ttdeci">def cliName</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pklas2img_8py_source.html#l00060">pklas2img.py:60</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img_html_accc880de7d62d73a9a3c5b34d2c1205a"><div class="ttname"><a href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#accc880de7d62d73a9a3c5b34d2c1205a">qgis.pktools.pklas2img.pklas2img.name</a></div><div class="ttdeci">name</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pklas2img_8py_source.html#l00064">pklas2img.py:64</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img_html"><div class="ttname"><a href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html">qgis.pktools.pklas2img.pklas2img</a></div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pklas2img_8py_source.html#l00039">pklas2img.py:39</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img_html_a534a211c9476179786a5b4fd526aa76b"><div class="ttname"><a href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#a534a211c9476179786a5b4fd526aa76b">qgis.pktools.pklas2img.pklas2img.EXTRA</a></div><div class="ttdeci">string EXTRA</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pklas2img_8py_source.html#l00058">pklas2img.py:58</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img_html_a2072186e8c3a370ceb38067d56b33868"><div class="ttname"><a href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#a2072186e8c3a370ceb38067d56b33868">qgis.pktools.pklas2img.pklas2img.NODATA</a></div><div class="ttdeci">string NODATA</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pklas2img_8py_source.html#l00055">pklas2img.py:55</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img_html_ae424f891aaec9acfd3d85259f0b5ebca"><div class="ttname"><a href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#ae424f891aaec9acfd3d85259f0b5ebca">qgis.pktools.pklas2img.pklas2img.group</a></div><div class="ttdeci">group</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pklas2img_8py_source.html#l00065">pklas2img.py:65</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img_html_ae724a48a4f739d510c3d4aadfa069b83"><div class="ttname"><a href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#ae724a48a4f739d510c3d4aadfa069b83">qgis.pktools.pklas2img.pklas2img.TYPE</a></div><div class="ttdeci">list TYPE</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pklas2img_8py_source.html#l00057">pklas2img.py:57</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img_html_a18f6b8223a9c56b4fd5676f5c8062d13"><div class="ttname"><a href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#a18f6b8223a9c56b4fd5676f5c8062d13">qgis.pktools.pklas2img.pklas2img.FILTER_OPTIONS</a></div><div class="ttdeci">list FILTER_OPTIONS</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pklas2img_8py_source.html#l00045">pklas2img.py:45</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img_html_afe4c444f4c7f89fd2851e4517c66e82d"><div class="ttname"><a href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#afe4c444f4c7f89fd2851e4517c66e82d">qgis.pktools.pklas2img.pklas2img.ATTRIBUTE_OPTIONS</a></div><div class="ttdeci">list ATTRIBUTE_OPTIONS</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pklas2img_8py_source.html#l00043">pklas2img.py:43</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img_html_adfbb8aab172e26f0382162c1a81fa863"><div class="ttname"><a href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#adfbb8aab172e26f0382162c1a81fa863">qgis.pktools.pklas2img.pklas2img.ATTRIBUTE</a></div><div class="ttdeci">string ATTRIBUTE</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pklas2img_8py_source.html#l00047">pklas2img.py:47</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img_html_a4b50520fa826ccb6a6bc24e414ec5391"><div class="ttname"><a href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#a4b50520fa826ccb6a6bc24e414ec5391">qgis.pktools.pklas2img.pklas2img.DX</a></div><div class="ttdeci">string DX</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pklas2img_8py_source.html#l00052">pklas2img.py:52</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img_html_a95fe33a74c29ec44b4601b384358e024"><div class="ttname"><a href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#a95fe33a74c29ec44b4601b384358e024">qgis.pktools.pklas2img.pklas2img.COMPOSITE_OPTIONS</a></div><div class="ttdeci">list COMPOSITE_OPTIONS</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pklas2img_8py_source.html#l00044">pklas2img.py:44</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img_html_acf62ddc2366d8d598fbee8185a363c9d"><div class="ttname"><a href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#acf62ddc2366d8d598fbee8185a363c9d">qgis.pktools.pklas2img.pklas2img.FILTER</a></div><div class="ttdeci">string FILTER</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pklas2img_8py_source.html#l00049">pklas2img.py:49</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img_html_ac7de684f0362601c5bf667db9b68763a"><div class="ttname"><a href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#ac7de684f0362601c5bf667db9b68763a">qgis.pktools.pklas2img.pklas2img.INPUT</a></div><div class="ttdeci">string INPUT</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pklas2img_8py_source.html#l00041">pklas2img.py:41</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img_html_ab450e8c2f27160d69f5f376a6e39dfa1"><div class="ttname"><a href="classqgis_1_1pktools_1_1pklas2img_1_1pklas2img.html#ab450e8c2f27160d69f5f376a6e39dfa1">qgis.pktools.pklas2img.pklas2img.DY</a></div><div class="ttdeci">string DY</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pklas2img_8py_source.html#l00053">pklas2img.py:53</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pktools_2pkreclass_8py_source.html b/doc/html/pktools_2pkreclass_8py_source.html
deleted file mode 100644
index d58ffaa..0000000
--- a/doc/html/pktools_2pkreclass_8py_source.html
+++ /dev/null
@@ -1,211 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/pktools/pkreclass.py Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li><li class="navelem"><a class="el" href="dir_b7cc22b4453454f1e686d9a2e78d988d.html">pktools</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pkreclass.py</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment"># -*- coding: utf-8 -*-</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> </div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="stringliteral">    pkreclass.py</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="stringliteral">    ---------------------</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="stringliteral">    Date                 : April 2015</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="stringliteral">    Copyright            : (C) 2015 by Pieter Kempeneers</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="stringliteral">    Email                : kempenep at gmail dot com</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="stringliteral">*   This program is free software; you can redistribute it and/or modify  *</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="stringliteral">*   it under the terms of the GNU General Public License as published by  *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="stringliteral">*   the Free Software Foundation; either version 2 of the License, or     *</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="stringliteral">*   (at your option) any later version.                                   *</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> __author__ = <span class="stringliteral">'Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> __date__ = <span class="stringliteral">'April 2015'</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> __copyright__ = <span class="stringliteral">'(C) 2015, Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"># This will get replaced with a git SHA1 when you do a git archive</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> __revision__ = <span class="stringliteral">'$Format:%H$'</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">import</span> os</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">from</span> pktoolsUtils <span class="keyword">import</span> pktoolsUtils</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">from</span> pktoolsAlgorithm <span class="keyword">import</span> pktoolsAlgorithm</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterMultipleInput</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterRaster</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">from</span> processing.core.outputs <span class="keyword">import</span> OutputRaster</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterSelection</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterNumber</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterString</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterBoolean</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterExtent</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
-<div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">   38</a></span> <span class="keyword">class </span><a class="code" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">pkreclass</a>(pktoolsAlgorithm):</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> </div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     INPUT = <span class="stringliteral">"INPUT"</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     OUTPUT = <span class="stringliteral">"OUTPUT"</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     CLASS = <span class="stringliteral">"CLASS"</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     BAND = <span class="stringliteral">"BAND"</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     RECLASS = <span class="stringliteral">"RECLASS"</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     MASK = <span class="stringliteral">"MASK"</span></div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     MSKNODATA = <span class="stringliteral">"MSKNODATA"</span></div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     NODATA = <span class="stringliteral">"NODATA"</span></div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     RTYPE = <span class="stringliteral">'RTYPE'</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     TYPE = [<span class="stringliteral">'none'</span>, <span class="stringliteral">'Byte'</span>,<span class="stringliteral">'Int16'</span>,<span class="stringliteral">'UInt16'</span>,<span class="stringliteral">'UInt32'</span>,<span class="stringliteral">'Int32'</span>,<span class="stringliteral">'Float32'</span>,<span class="stringliteral">'Float64&# [...]
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     EXTRA = <span class="stringliteral">'EXTRA'</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span> </div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     <span class="keyword">def </span>cliName(self):</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>         <span class="keywordflow">return</span> <span class="stringliteral">"pkreclass"</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span> </div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     <span class="keyword">def </span>defineCharacteristics(self):</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>         self.<a class="code" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#a556f1db8b0402c9c9c4f7cca81b1c264">name</a> = <span class="stringliteral">"reclass raster datasets"</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>         self.<a class="code" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#a2fff886959f64cb10c12a26c056a1e88">group</a> = <span class="stringliteral">"[pktools] raster"</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>         self.addParameter(ParameterMultipleInput(self.<a class="code" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#a303601836409f7a7a101ac4af8d8f3a6">INPUT</a>, <span class="stringliteral">'Input layer raster data set'</span>,ParameterMultipleInput.TYPE_RASTER))</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>         self.addOutput(OutputRaster(self.<a class="code" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#a065a117498a6be8d13ee27b0bcc04647">OUTPUT</a>, <span class="stringliteral">"Output raster data set"</span>))</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#a310bec7495dd575a3ac641d81f914ae3">BAND</a>, <span class="stringliteral">"Band index(es) to replace, e.g., 0;1;2 (other bands are copied to output)"</span>, <span class="stringliteral">'0'</span>))</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>         self.addParameter(ParameterRaster(self.<a class="code" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#a801a99540cfdf947b4837778ed0a1f37">MASK</a>, <span class="stringliteral">"Mask raster dataset"</span>,optional=<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#ad273e7dbdd1610b40f42d3c50295bd3a">MSKNODATA</a>, <span class="stringliteral">"Mask value(s) not to consider for classification (e.g., 0;255)"</span>,<span class="stringliteral">"0"</span>))</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#a47265725eeabaab2bb47e02c34ce8f66">CLASS</a>, <span class="stringliteral">"list of classes to reclass, in combination with reclass option, e.g., 0;1;2;3"</span>,<span class="stringliteral">""</span>))</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#a77d68ecc97bddef7f58cfdb7426139d8">RECLASS</a>, <span class="stringliteral">"list of recoded classes, in combination with class option e.g., 10;11;12;13"</span>,<span class="stringliteral">""</span>))</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>         self.addParameter(ParameterNumber(self.<a class="code" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#ae133eccf7059c47635068612f8d788db">NODATA</a>, <span class="stringliteral">"nodata value to put in image if not valid"</span>,0,<span class="keywordtype">None</span>,0))</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span> </div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#ad32491e68ff156791fe09f6435925b64">RTYPE</a>, <span class="stringliteral">'Output raster type (leave as none to keep original type)'</span>, self.<a class="code" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#ae0f930fadcfbe749ee6565d75bb090f3">TYPE</a>, 0))</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#a2da5ea965129a52c1559f80b8815b65d">EXTRA</a>,</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>                           <span class="stringliteral">'Additional parameters'</span>, <span class="stringliteral">'-of GTiff'</span>, optional=<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span> </div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     <span class="keyword">def </span>processAlgorithm(self, progress):</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>         cliPath = <span class="stringliteral">'"'</span> + os.path.join(pktoolsUtils.pktoolsPath(), self.<a class="code" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#a984813cdec014931ab57b85348708d12">cliName</a>()) + <span class="stringliteral">'"'</span></div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>         commands = [cliPath]</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span> </div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>         input=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#a303601836409f7a7a101ac4af8d8f3a6">INPUT</a>)</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>         commands.append(<span class="stringliteral">'-i'</span>)</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>         commands.append(<span class="stringliteral">'"'</span> + input + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span> </div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>         <span class="keywordflow">if</span> self.<a class="code" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#ae0f930fadcfbe749ee6565d75bb090f3">TYPE</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#ad32491e68ff156791fe09f6435925b64">RTYPE</a>)] != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>             commands.append(<span class="stringliteral">'-ot'</span>)</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>             commands.append(self.<a class="code" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#ae0f930fadcfbe749ee6565d75bb090f3">TYPE</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#ad32491e68ff156791fe09f6435925b64">RTYPE</a>)])</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span> </div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>         output=self.getOutputValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#a065a117498a6be8d13ee27b0bcc04647">OUTPUT</a>)</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>         commands.append(<span class="stringliteral">"-o"</span>)</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>         commands.append(<span class="stringliteral">'"'</span> + output + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span> </div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>         commands.append(<span class="stringliteral">'-nodata'</span>)</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>         commands.append(str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#ae133eccf7059c47635068612f8d788db">NODATA</a>)))</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>         </div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>         band=str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#a310bec7495dd575a3ac641d81f914ae3">BAND</a>))</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>         <span class="keywordflow">if</span> band != <span class="stringliteral">''</span>:</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>             bandValues = band.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>             <span class="keywordflow">for</span> bandValue <span class="keywordflow">in</span> bandValues:</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>                 commands.append(<span class="stringliteral">'-b'</span>)</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>                 commands.append(bandValue)</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span> </div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>         theclass=str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#a47265725eeabaab2bb47e02c34ce8f66">CLASS</a>))</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>         <span class="keywordflow">if</span> theclass != <span class="stringliteral">''</span>:</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>             classValues = theclass.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>             <span class="keywordflow">for</span> classValue <span class="keywordflow">in</span> classValues:</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>                 commands.append(<span class="stringliteral">'-c'</span>)</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>                 commands.append(classValue)</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>         reclass=str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#a77d68ecc97bddef7f58cfdb7426139d8">RECLASS</a>))</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>         <span class="keywordflow">if</span> reclass != <span class="stringliteral">''</span>:</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>             reclassValues = reclass.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>             <span class="keywordflow">for</span> reclassValue <span class="keywordflow">in</span> reclassValues:</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>                 commands.append(<span class="stringliteral">'-r'</span>)</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>                 commands.append(reclassValue)</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span> </div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>         mask = str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#a801a99540cfdf947b4837778ed0a1f37">MASK</a>))</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>         <span class="keywordflow">if</span> mask != <span class="stringliteral">"None"</span>:</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>             commands.append(<span class="stringliteral">'-m'</span>)</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>             commands.append(mask)</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>             msknodata=str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#ad273e7dbdd1610b40f42d3c50295bd3a">MSKNODATA</a>))</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>             msknodataValues = msknodata.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>             <span class="keywordflow">for</span> msknodataValue <span class="keywordflow">in</span> msknodataValues:</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>                 commands.append(<span class="stringliteral">'-msknodata'</span>)</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>                 commands.append(msknodataValue)</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span> </div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>         extra = str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#a2da5ea965129a52c1559f80b8815b65d">EXTRA</a>))</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>         <span class="keywordflow">if</span> len(extra) > 0:</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>             commands.append(extra)</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span> </div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>         pktoolsUtils.runpktools(commands, progress)</div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass_html"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html">qgis.pktools.pkreclass.pkreclass</a></div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkreclass_8py_source.html#l00038">pkreclass.py:38</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass_html_ae133eccf7059c47635068612f8d788db"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#ae133eccf7059c47635068612f8d788db">qgis.pktools.pkreclass.pkreclass.NODATA</a></div><div class="ttdeci">string NODATA</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkreclass_8py_source.html#l00047">pkreclass.py:47</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass_html_ad32491e68ff156791fe09f6435925b64"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#ad32491e68ff156791fe09f6435925b64">qgis.pktools.pkreclass.pkreclass.RTYPE</a></div><div class="ttdeci">string RTYPE</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkreclass_8py_source.html#l00048">pkreclass.py:48</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass_html_a77d68ecc97bddef7f58cfdb7426139d8"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#a77d68ecc97bddef7f58cfdb7426139d8">qgis.pktools.pkreclass.pkreclass.RECLASS</a></div><div class="ttdeci">string RECLASS</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkreclass_8py_source.html#l00044">pkreclass.py:44</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass_html_a801a99540cfdf947b4837778ed0a1f37"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#a801a99540cfdf947b4837778ed0a1f37">qgis.pktools.pkreclass.pkreclass.MASK</a></div><div class="ttdeci">string MASK</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkreclass_8py_source.html#l00045">pkreclass.py:45</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass_html_a310bec7495dd575a3ac641d81f914ae3"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#a310bec7495dd575a3ac641d81f914ae3">qgis.pktools.pkreclass.pkreclass.BAND</a></div><div class="ttdeci">string BAND</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkreclass_8py_source.html#l00043">pkreclass.py:43</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass_html_a984813cdec014931ab57b85348708d12"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#a984813cdec014931ab57b85348708d12">qgis.pktools.pkreclass.pkreclass.cliName</a></div><div class="ttdeci">def cliName</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkreclass_8py_source.html#l00052">pkreclass.py:52</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass_html_a556f1db8b0402c9c9c4f7cca81b1c264"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#a556f1db8b0402c9c9c4f7cca81b1c264">qgis.pktools.pkreclass.pkreclass.name</a></div><div class="ttdeci">name</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkreclass_8py_source.html#l00056">pkreclass.py:56</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass_html_a2fff886959f64cb10c12a26c056a1e88"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#a2fff886959f64cb10c12a26c056a1e88">qgis.pktools.pkreclass.pkreclass.group</a></div><div class="ttdeci">group</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkreclass_8py_source.html#l00057">pkreclass.py:57</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass_html_ad273e7dbdd1610b40f42d3c50295bd3a"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#ad273e7dbdd1610b40f42d3c50295bd3a">qgis.pktools.pkreclass.pkreclass.MSKNODATA</a></div><div class="ttdeci">string MSKNODATA</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkreclass_8py_source.html#l00046">pkreclass.py:46</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass_html_a2da5ea965129a52c1559f80b8815b65d"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#a2da5ea965129a52c1559f80b8815b65d">qgis.pktools.pkreclass.pkreclass.EXTRA</a></div><div class="ttdeci">string EXTRA</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkreclass_8py_source.html#l00050">pkreclass.py:50</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass_html_a47265725eeabaab2bb47e02c34ce8f66"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#a47265725eeabaab2bb47e02c34ce8f66">qgis.pktools.pkreclass.pkreclass.CLASS</a></div><div class="ttdeci">string CLASS</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkreclass_8py_source.html#l00042">pkreclass.py:42</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass_html_ae0f930fadcfbe749ee6565d75bb090f3"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#ae0f930fadcfbe749ee6565d75bb090f3">qgis.pktools.pkreclass.pkreclass.TYPE</a></div><div class="ttdeci">list TYPE</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkreclass_8py_source.html#l00049">pkreclass.py:49</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass_html_a303601836409f7a7a101ac4af8d8f3a6"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#a303601836409f7a7a101ac4af8d8f3a6">qgis.pktools.pkreclass.pkreclass.INPUT</a></div><div class="ttdeci">string INPUT</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkreclass_8py_source.html#l00040">pkreclass.py:40</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass_html_a065a117498a6be8d13ee27b0bcc04647"><div class="ttname"><a href="classqgis_1_1pktools_1_1pkreclass_1_1pkreclass.html#a065a117498a6be8d13ee27b0bcc04647">qgis.pktools.pkreclass.pkreclass.OUTPUT</a></div><div class="ttdeci">string OUTPUT</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pkreclass_8py_source.html#l00041">pkreclass.py:41</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pktools_2pksetmask_8py_source.html b/doc/html/pktools_2pksetmask_8py_source.html
deleted file mode 100644
index 2d3f838..0000000
--- a/doc/html/pktools_2pksetmask_8py_source.html
+++ /dev/null
@@ -1,200 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/pktools/pksetmask.py Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li><li class="navelem"><a class="el" href="dir_b7cc22b4453454f1e686d9a2e78d988d.html">pktools</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pksetmask.py</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment"># -*- coding: utf-8 -*-</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> </div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="stringliteral">    pksetmask.py</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="stringliteral">    ---------------------</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="stringliteral">    Date                 : April 2015</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="stringliteral">    Copyright            : (C) 2015 by Pieter Kempeneers</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="stringliteral">    Email                : kempenep at gmail dot com</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="stringliteral">*   This program is free software; you can redistribute it and/or modify  *</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="stringliteral">*   it under the terms of the GNU General Public License as published by  *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="stringliteral">*   the Free Software Foundation; either version 2 of the License, or     *</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="stringliteral">*   (at your option) any later version.                                   *</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> __author__ = <span class="stringliteral">'Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> __date__ = <span class="stringliteral">'April 2015'</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> __copyright__ = <span class="stringliteral">'(C) 2015, Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"># This will get replaced with a git SHA1 when you do a git archive</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> __revision__ = <span class="stringliteral">'$Format:%H$'</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">import</span> os</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">from</span> pktoolsUtils <span class="keyword">import</span> pktoolsUtils</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">from</span> pktoolsAlgorithm <span class="keyword">import</span> pktoolsAlgorithm</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterMultipleInput</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterRaster</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">from</span> processing.core.outputs <span class="keyword">import</span> OutputRaster</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterSelection</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterNumber</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterString</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterBoolean</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterExtent</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
-<div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">   38</a></span> <span class="keyword">class </span><a class="code" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">pksetmask</a>(pktoolsAlgorithm):</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> </div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     INPUT = <span class="stringliteral">"INPUT"</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     MASK = <span class="stringliteral">"MASK"</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     MSKNODATA = <span class="stringliteral">"MSKNODATA"</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     MSKBAND = <span class="stringliteral">"MSKBAND"</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     OPERATOR_OPTIONS = [<span class="stringliteral">"="</span>,<span class="stringliteral">"<"</span>,<span class="stringliteral">">"</span>,<span class="stringliteral">"!"</span>]</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     OPERATOR = <span class="stringliteral">"OPERATOR"</span></div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     NODATA = <span class="stringliteral">"NODATA"</span></div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     OUTPUT = <span class="stringliteral">"OUTPUT"</span></div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     RTYPE = <span class="stringliteral">'RTYPE'</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     TYPE = [<span class="stringliteral">'none'</span>, <span class="stringliteral">'Byte'</span>,<span class="stringliteral">'Int16'</span>,<span class="stringliteral">'UInt16'</span>,<span class="stringliteral">'UInt32'</span>,<span class="stringliteral">'Int32'</span>,<span class="stringliteral">'Float32'</span>,<span class="stringliteral">'Float64&# [...]
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     EXTRA = <span class="stringliteral">'EXTRA'</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span> </div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     <span class="keyword">def </span>cliName(self):</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>         <span class="keywordflow">return</span> <span class="stringliteral">"pksetmask"</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span> </div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     <span class="keyword">def </span>defineCharacteristics(self):</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>         self.<a class="code" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#a0c7a9177b36c398a267bf8de262516eb">name</a> = <span class="stringliteral">"apply mask to raster dataset"</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>         self.<a class="code" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#ae1d2501517fe54bab01bb8d797582e84">group</a> = <span class="stringliteral">"[pktools] raster"</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>         self.addParameter(ParameterRaster(self.<a class="code" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#a8e87715eedd9a7165b00d55d02833569">INPUT</a>, <span class="stringliteral">'Input layer raster data set'</span>,ParameterRaster))</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>         self.addParameter(ParameterMultipleInput(self.<a class="code" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#ac40b33e07c5ee97c23a151a66df84689">MASK</a>, <span class="stringliteral">'Mask(s) to apply'</span>,ParameterMultipleInput.TYPE_RASTER))</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#a9b66ea21c12be4ad78c2ca6cff1f43f9">MSKNODATA</a>, <span class="stringliteral">"Mask value(s), provide value for each mask (e.g., 250;255)"</span>,<span class="stringliteral">"1"</span>))</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#ace691beff7bf0d303e8fee5efde7b265">MSKBAND</a>, <span class="stringliteral">"Mask band(s) to read, provide band for each mask (e.g., 0;1)"</span>,<span class="stringliteral">"0"</span>))</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#a73bb29985c2a59680763c0037397739e">OPERATOR</a>,<span class="stringliteral">"setmask rule"</span>,self.<a class="code" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#a51a45aa30286d2a9ff7810da37e28aae">OPERATOR_OPTIONS</a>, 0))</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#a24c98153680e1de66746fd52785ae784">NODATA</a>, <span class="stringliteral">"nodata value to put in image if not valid"</span>,<span class="stringliteral">"0"</span>))</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>         self.addOutput(OutputRaster(self.<a class="code" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#a5883cf4f62435f304fdadd16b2cffc7b">OUTPUT</a>, <span class="stringliteral">"Output raster data set"</span>))</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>         self.addParameter(ParameterSelection(self.<a class="code" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#aebbb05f08af1f26f4bdab58e4765f0f4">RTYPE</a>, <span class="stringliteral">'Output raster type (leave as none to keep original type)'</span>, self.<a class="code" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#a9e6a013c1e4fb1d7a17be4c55e414a21">TYPE</a>, 0))</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#a7844f283b29ff1eab06a928d703b1628">EXTRA</a>,</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>                           <span class="stringliteral">'Additional parameters'</span>, <span class="stringliteral">'-of GTiff'</span>, optional=<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span> </div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     <span class="keyword">def </span>processAlgorithm(self, progress):</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>         cliPath = <span class="stringliteral">'"'</span> + os.path.join(pktoolsUtils.pktoolsPath(), self.<a class="code" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#a25ebf3b8fa56e16e2dfa077434ee4419">cliName</a>()) + <span class="stringliteral">'"'</span></div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>         commands = [cliPath]</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span> </div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>         input=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#a8e87715eedd9a7165b00d55d02833569">INPUT</a>)</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>         commands.append(<span class="stringliteral">'-i'</span>)</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>         commands.append(<span class="stringliteral">'"'</span> + input + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span> </div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>         mask=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#ac40b33e07c5ee97c23a151a66df84689">MASK</a>)</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>         maskFiles = mask.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>         <span class="keywordflow">for</span> maskFile <span class="keywordflow">in</span> maskFiles:</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>             commands.append(<span class="stringliteral">'-m'</span>)</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>             commands.append(maskFile)</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span> </div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>         commands.append(str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#ace691beff7bf0d303e8fee5efde7b265">MSKBAND</a>)))</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>         mskband=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#ace691beff7bf0d303e8fee5efde7b265">MSKBAND</a>)</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>         mskbandValues = mskband.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>         <span class="keywordflow">for</span> mskbandValue <span class="keywordflow">in</span> mskbandValues:</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>                 commands.append(<span class="stringliteral">'-mskband'</span>)</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>                 commands.append(mskbandValue)</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>         commands.append(str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#a9b66ea21c12be4ad78c2ca6cff1f43f9">MSKNODATA</a>)))</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>         msknodata=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#a9b66ea21c12be4ad78c2ca6cff1f43f9">MSKNODATA</a>)</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>         msknodataValues = msknodata.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>         <span class="keywordflow">for</span> msknodataValue <span class="keywordflow">in</span> msknodataValues:</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>                 commands.append(<span class="stringliteral">'-msknodata'</span>)</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>                 commands.append(msknodataValue)</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span> </div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>         commands.append(<span class="stringliteral">"-p"</span>)</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>         commands.append(self.<a class="code" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#a51a45aa30286d2a9ff7810da37e28aae">OPERATOR_OPTIONS</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#a73bb29985c2a59680763c0037397739e">OPERATOR</a>)])</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>         nodata=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#a24c98153680e1de66746fd52785ae784">NODATA</a>)</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>         commands.append(<span class="stringliteral">'-nodata'</span>)</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>         commands.append(nodata)</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>         <span class="keywordflow">if</span> self.<a class="code" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#a9e6a013c1e4fb1d7a17be4c55e414a21">TYPE</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#aebbb05f08af1f26f4bdab58e4765f0f4">RTYPE</a>)] != <span class="stringliteral">"none"</span>:</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>             commands.append(<span class="stringliteral">'-ot'</span>)</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>             commands.append(self.<a class="code" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#a9e6a013c1e4fb1d7a17be4c55e414a21">TYPE</a>[self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#aebbb05f08af1f26f4bdab58e4765f0f4">RTYPE</a>)])</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>         output=self.getOutputValue(self.<a class="code" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#a5883cf4f62435f304fdadd16b2cffc7b">OUTPUT</a>)</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>         <span class="keywordflow">if</span> output != <span class="stringliteral">""</span>:</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>             commands.append(<span class="stringliteral">"-o"</span>)</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>             commands.append(<span class="stringliteral">'"'</span> + output + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span> </div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>         extra = str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#a7844f283b29ff1eab06a928d703b1628">EXTRA</a>))</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>         <span class="keywordflow">if</span> len(extra) > 0:</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>             commands.append(extra)</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span> </div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>         pktoolsUtils.runpktools(commands, progress)</div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask_html_ac40b33e07c5ee97c23a151a66df84689"><div class="ttname"><a href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#ac40b33e07c5ee97c23a151a66df84689">qgis.pktools.pksetmask.pksetmask.MASK</a></div><div class="ttdeci">string MASK</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pksetmask_8py_source.html#l00041">pksetmask.py:41</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask_html_a8e87715eedd9a7165b00d55d02833569"><div class="ttname"><a href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#a8e87715eedd9a7165b00d55d02833569">qgis.pktools.pksetmask.pksetmask.INPUT</a></div><div class="ttdeci">string INPUT</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pksetmask_8py_source.html#l00040">pksetmask.py:40</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask_html"><div class="ttname"><a href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html">qgis.pktools.pksetmask.pksetmask</a></div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pksetmask_8py_source.html#l00038">pksetmask.py:38</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask_html_ace691beff7bf0d303e8fee5efde7b265"><div class="ttname"><a href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#ace691beff7bf0d303e8fee5efde7b265">qgis.pktools.pksetmask.pksetmask.MSKBAND</a></div><div class="ttdeci">string MSKBAND</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pksetmask_8py_source.html#l00043">pksetmask.py:43</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask_html_a9e6a013c1e4fb1d7a17be4c55e414a21"><div class="ttname"><a href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#a9e6a013c1e4fb1d7a17be4c55e414a21">qgis.pktools.pksetmask.pksetmask.TYPE</a></div><div class="ttdeci">list TYPE</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pksetmask_8py_source.html#l00049">pksetmask.py:49</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask_html_a73bb29985c2a59680763c0037397739e"><div class="ttname"><a href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#a73bb29985c2a59680763c0037397739e">qgis.pktools.pksetmask.pksetmask.OPERATOR</a></div><div class="ttdeci">string OPERATOR</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pksetmask_8py_source.html#l00045">pksetmask.py:45</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask_html_a24c98153680e1de66746fd52785ae784"><div class="ttname"><a href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#a24c98153680e1de66746fd52785ae784">qgis.pktools.pksetmask.pksetmask.NODATA</a></div><div class="ttdeci">string NODATA</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pksetmask_8py_source.html#l00046">pksetmask.py:46</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask_html_a7844f283b29ff1eab06a928d703b1628"><div class="ttname"><a href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#a7844f283b29ff1eab06a928d703b1628">qgis.pktools.pksetmask.pksetmask.EXTRA</a></div><div class="ttdeci">string EXTRA</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pksetmask_8py_source.html#l00050">pksetmask.py:50</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask_html_a25ebf3b8fa56e16e2dfa077434ee4419"><div class="ttname"><a href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#a25ebf3b8fa56e16e2dfa077434ee4419">qgis.pktools.pksetmask.pksetmask.cliName</a></div><div class="ttdeci">def cliName</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pksetmask_8py_source.html#l00052">pksetmask.py:52</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask_html_ae1d2501517fe54bab01bb8d797582e84"><div class="ttname"><a href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#ae1d2501517fe54bab01bb8d797582e84">qgis.pktools.pksetmask.pksetmask.group</a></div><div class="ttdeci">group</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pksetmask_8py_source.html#l00057">pksetmask.py:57</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask_html_a0c7a9177b36c398a267bf8de262516eb"><div class="ttname"><a href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#a0c7a9177b36c398a267bf8de262516eb">qgis.pktools.pksetmask.pksetmask.name</a></div><div class="ttdeci">name</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pksetmask_8py_source.html#l00056">pksetmask.py:56</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask_html_a51a45aa30286d2a9ff7810da37e28aae"><div class="ttname"><a href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#a51a45aa30286d2a9ff7810da37e28aae">qgis.pktools.pksetmask.pksetmask.OPERATOR_OPTIONS</a></div><div class="ttdeci">list OPERATOR_OPTIONS</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pksetmask_8py_source.html#l00044">pksetmask.py:44</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask_html_aebbb05f08af1f26f4bdab58e4765f0f4"><div class="ttname"><a href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#aebbb05f08af1f26f4bdab58e4765f0f4">qgis.pktools.pksetmask.pksetmask.RTYPE</a></div><div class="ttdeci">string RTYPE</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pksetmask_8py_source.html#l00048">pksetmask.py:48</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask_html_a5883cf4f62435f304fdadd16b2cffc7b"><div class="ttname"><a href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#a5883cf4f62435f304fdadd16b2cffc7b">qgis.pktools.pksetmask.pksetmask.OUTPUT</a></div><div class="ttdeci">string OUTPUT</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pksetmask_8py_source.html#l00047">pksetmask.py:47</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask_html_a9b66ea21c12be4ad78c2ca6cff1f43f9"><div class="ttname"><a href="classqgis_1_1pktools_1_1pksetmask_1_1pksetmask.html#a9b66ea21c12be4ad78c2ca6cff1f43f9">qgis.pktools.pksetmask.pksetmask.MSKNODATA</a></div><div class="ttdeci">string MSKNODATA</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pksetmask_8py_source.html#l00042">pksetmask.py:42</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pktools_2pksvm_8py_source.html b/doc/html/pktools_2pksvm_8py_source.html
deleted file mode 100644
index 7961c4e..0000000
--- a/doc/html/pktools_2pksvm_8py_source.html
+++ /dev/null
@@ -1,214 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/pktools/pksvm.py Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li><li class="navelem"><a class="el" href="dir_b7cc22b4453454f1e686d9a2e78d988d.html">pktools</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pksvm.py</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment"># -*- coding: utf-8 -*-</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> </div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="stringliteral">    pksvm.py</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="stringliteral">    ---------------------</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="stringliteral">    Date                 : April 2015</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="stringliteral">    Copyright            : (C) 2015 by Pieter Kempeneers</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="stringliteral">    Email                : kempenep at gmail dot com</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="stringliteral">*   This program is free software; you can redistribute it and/or modify  *</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="stringliteral">*   it under the terms of the GNU General Public License as published by  *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="stringliteral">*   the Free Software Foundation; either version 2 of the License, or     *</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="stringliteral">*   (at your option) any later version.                                   *</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> __author__ = <span class="stringliteral">'Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> __date__ = <span class="stringliteral">'April 2015'</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> __copyright__ = <span class="stringliteral">'(C) 2015, Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"># This will get replaced with a git SHA1 when you do a git archive</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> __revision__ = <span class="stringliteral">'$Format:%H$'</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">import</span> os</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">from</span> pktoolsUtils <span class="keyword">import</span> pktoolsUtils</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">from</span> pktoolsAlgorithm <span class="keyword">import</span> pktoolsAlgorithm</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterMultipleInput</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterVector</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterRaster</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">from</span> processing.core.outputs <span class="keyword">import</span> OutputRaster</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterSelection</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterNumber</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterString</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterBoolean</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterExtent</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
-<div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html">   39</a></span> <span class="keyword">class </span><a class="code" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html">pksvm</a>(pktoolsAlgorithm):</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> </div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     INPUT = <span class="stringliteral">"INPUT"</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     TRAINING = <span class="stringliteral">"TRAINING"</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     ITERATE = <span class="stringliteral">"ITERATE"</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     LABEL = <span class="stringliteral">"LABEL"</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span> <span class="comment">#    CV = "CV"</span></div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     GAMMA = <span class="stringliteral">"GAMMA"</span></div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     COST = <span class="stringliteral">"COST"</span></div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     OUTPUT = <span class="stringliteral">"OUTPUT"</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     MASK = <span class="stringliteral">"MASK"</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     MSKNODATA = <span class="stringliteral">"MSKNODATA"</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span> <span class="comment">#    NODATA = "NODATA"</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span> </div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span> <span class="comment">#    SVM_TYPE_OPTIONS = ["C_SVC", "nu_SVC,one_class", "epsilon_SVR", "nu_SVR"]</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span> <span class="comment">#    KERNEL_TYPE_OPTIONS = ["linear", "polynomial", "radial", "sigmoid"]</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     EXTRA = <span class="stringliteral">'EXTRA'</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span> </div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     <span class="keyword">def </span>cliName(self):</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>         <span class="keywordflow">return</span> <span class="stringliteral">"pksvm"</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span> </div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     <span class="keyword">def </span>defineCharacteristics(self):</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>         self.<a class="code" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html#ac3e6f06386e8ed665adb2168e57e01a8">name</a> = <span class="stringliteral">"Support vector machine"</span></div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>         self.<a class="code" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html#aa20dab28c3712708dbd39bf066bfb99c">group</a> = <span class="stringliteral">"[pktools] supervised classification"</span></div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>         self.addParameter(ParameterRaster(self.<a class="code" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html#a449dacc23d9df8747a447f46d9f8295e">INPUT</a>, <span class="stringliteral">'Input layer raster data set'</span>,ParameterRaster))</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>         self.addParameter(ParameterVector(self.<a class="code" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html#ac4bd65562ba7f52abb53c6fb35e368ca">TRAINING</a>, <span class="stringliteral">'Training vector file.'</span>))</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>         self.addParameter(ParameterBoolean(self.<a class="code" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html#ae80fe946cdd873ff57e05a3a2ed6131b">ITERATE</a>, <span class="stringliteral">"Iterate over all layers"</span>,<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html#a8a3efb11fd3716fd738991ec2289e2f1">LABEL</a>, <span class="stringliteral">"Attribute name for class label in training vector file"</span>,<span class="stringliteral">"label"</span>))</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>         self.addParameter(ParameterNumber(self.<a class="code" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html#a5cb924380f4009fa78a99f0e63a98a22">GAMMA</a>, <span class="stringliteral">"Gamma in kernel function"</span>,0,100,1.0))</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>         self.addParameter(ParameterNumber(self.<a class="code" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html#af889c66eadaf2a22a56db24c11b6dc2a">COST</a>, <span class="stringliteral">"The parameter C of C_SVC"</span>,0,100000,1000.0))</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>         self.addParameter(ParameterRaster(self.<a class="code" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html#a749c2182f8ab095d690e08951156f695">MASK</a>, <span class="stringliteral">"Mask raster dataset"</span>,optional=<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html#a986be02b97ec4cc26f00ea4dd9c878ff">MSKNODATA</a>, <span class="stringliteral">"Mask value(s) not to consider for classification (e.g., 0;255)"</span>,<span class="stringliteral">"0"</span>))</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>         self.addOutput(OutputRaster(self.<a class="code" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html#a81bff218d4c83d0f71a38d81109bd395">OUTPUT</a>, <span class="stringliteral">"Output raster data set"</span>))</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>         self.addParameter(ParameterString(self.<a class="code" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html#aea279cd6acf26d72a740aa6a8149b6fe">EXTRA</a>,</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>                           <span class="stringliteral">'Additional parameters'</span>, <span class="stringliteral">'-of GTiff'</span>, optional=<span class="keyword">True</span>))</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span> </div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span> <span class="comment">#        self.addParameter(ParameterSelection(self.KERNEL_TYPE,"Type of kernel function (linear,polynomial,radial,sigmoid)",self.KERNEL_TYPE_OPTIONS, 2))</span></div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span> <span class="comment">#        self.addParameter(ParameterSelection(self.SVM_TYPE,"Type of SVM (C_SVC, nu_SVC,one_class, epsilon_SVR, nu_SVR)",self.SVM_TYPE_OPTIONS, 0))</span></div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span> </div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>     <span class="keyword">def </span>processAlgorithm(self, progress):</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>         cliPath = <span class="stringliteral">'"'</span> + os.path.join(pktoolsUtils.pktoolsPath(), self.<a class="code" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html#af39f9264502b9f57b573d61861e24061">cliName</a>()) + <span class="stringliteral">'"'</span></div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>         commands = [cliPath]</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span> </div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>         input=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html#a449dacc23d9df8747a447f46d9f8295e">INPUT</a>)</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>         <span class="keywordflow">if</span> input != <span class="stringliteral">""</span>:</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>             commands.append(<span class="stringliteral">'-i'</span>)</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>             commands.append(<span class="stringliteral">'"'</span> + input + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span> </div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>         commands.append(<span class="stringliteral">'-t'</span>)</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>         training=self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html#ac4bd65562ba7f52abb53c6fb35e368ca">TRAINING</a>)</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span> </div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>         if(str(training).find(<span class="stringliteral">'|'</span>)>0):</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>             <span class="keywordflow">if</span> self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html#ae80fe946cdd873ff57e05a3a2ed6131b">ITERATE</a>):</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>                 trainingname=str(training)</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>                 commands.append(trainingname[:trainingname.find(<span class="stringliteral">'|'</span>)])</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>             <span class="keywordflow">else</span>:</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>                 trainingname=str(training).replace(<span class="stringliteral">"|layername"</span>,<span class="stringliteral">" -ln"</span>)</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>                 commands.append(trainingname)</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>         <span class="keywordflow">else</span>:</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>             commands.append(training)</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span> </div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>         commands.append(<span class="stringliteral">'-label'</span>)</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>         commands.append(str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html#a8a3efb11fd3716fd738991ec2289e2f1">LABEL</a>)))</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>         <span class="comment"># if self.getParameterValue(self.CV):</span></div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>         <span class="comment">#     commands.append("-cv 2")</span></div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>         commands.append(<span class="stringliteral">'-g'</span>)</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>         commands.append(str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html#a5cb924380f4009fa78a99f0e63a98a22">GAMMA</a>)))</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>         commands.append(<span class="stringliteral">'-cc'</span>)</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>         commands.append(str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html#af889c66eadaf2a22a56db24c11b6dc2a">COST</a>)))</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span> </div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>         mask = str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html#a749c2182f8ab095d690e08951156f695">MASK</a>))</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>         <span class="keywordflow">if</span> mask != <span class="stringliteral">"None"</span>:</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>             commands.append(<span class="stringliteral">'-m'</span>)</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>             commands.append(mask)</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>             msknodata=str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html#a986be02b97ec4cc26f00ea4dd9c878ff">MSKNODATA</a>))</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>             msknodataValues = msknodata.split(<span class="stringliteral">';'</span>)</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>             <span class="keywordflow">for</span> msknodataValue <span class="keywordflow">in</span> msknodataValues:</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>                 commands.append(<span class="stringliteral">'-msknodata'</span>)</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>                 commands.append(msknodataValue)</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>                 </div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>         extra = str(self.getParameterValue(self.<a class="code" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html#aea279cd6acf26d72a740aa6a8149b6fe">EXTRA</a>))</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>         <span class="keywordflow">if</span> len(extra) > 0:</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>             commands.append(extra)</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span> </div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>         output=self.getOutputValue(self.<a class="code" href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html#a81bff218d4c83d0f71a38d81109bd395">OUTPUT</a>)</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>         <span class="keywordflow">if</span> output != <span class="stringliteral">""</span>:</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>             commands.append(<span class="stringliteral">'-o'</span>)</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>             commands.append(<span class="stringliteral">'"'</span> + output + <span class="stringliteral">'"'</span>)</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span> </div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>         pktoolsUtils.runpktools(commands, progress)</div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pksvm_1_1pksvm_html_af889c66eadaf2a22a56db24c11b6dc2a"><div class="ttname"><a href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html#af889c66eadaf2a22a56db24c11b6dc2a">qgis.pktools.pksvm.pksvm.COST</a></div><div class="ttdeci">string COST</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pksvm_8py_source.html#l00047">pksvm.py:47</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pksvm_1_1pksvm_html_a81bff218d4c83d0f71a38d81109bd395"><div class="ttname"><a href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html#a81bff218d4c83d0f71a38d81109bd395">qgis.pktools.pksvm.pksvm.OUTPUT</a></div><div class="ttdeci">string OUTPUT</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pksvm_8py_source.html#l00048">pksvm.py:48</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pksvm_1_1pksvm_html_ac4bd65562ba7f52abb53c6fb35e368ca"><div class="ttname"><a href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html#ac4bd65562ba7f52abb53c6fb35e368ca">qgis.pktools.pksvm.pksvm.TRAINING</a></div><div class="ttdeci">string TRAINING</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pksvm_8py_source.html#l00042">pksvm.py:42</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pksvm_1_1pksvm_html_a5cb924380f4009fa78a99f0e63a98a22"><div class="ttname"><a href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html#a5cb924380f4009fa78a99f0e63a98a22">qgis.pktools.pksvm.pksvm.GAMMA</a></div><div class="ttdeci">string GAMMA</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pksvm_8py_source.html#l00046">pksvm.py:46</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pksvm_1_1pksvm_html_aea279cd6acf26d72a740aa6a8149b6fe"><div class="ttname"><a href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html#aea279cd6acf26d72a740aa6a8149b6fe">qgis.pktools.pksvm.pksvm.EXTRA</a></div><div class="ttdeci">string EXTRA</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pksvm_8py_source.html#l00055">pksvm.py:55</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pksvm_1_1pksvm_html_a8a3efb11fd3716fd738991ec2289e2f1"><div class="ttname"><a href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html#a8a3efb11fd3716fd738991ec2289e2f1">qgis.pktools.pksvm.pksvm.LABEL</a></div><div class="ttdeci">string LABEL</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pksvm_8py_source.html#l00044">pksvm.py:44</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pksvm_1_1pksvm_html_ac3e6f06386e8ed665adb2168e57e01a8"><div class="ttname"><a href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html#ac3e6f06386e8ed665adb2168e57e01a8">qgis.pktools.pksvm.pksvm.name</a></div><div class="ttdeci">name</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pksvm_8py_source.html#l00061">pksvm.py:61</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pksvm_1_1pksvm_html_af39f9264502b9f57b573d61861e24061"><div class="ttname"><a href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html#af39f9264502b9f57b573d61861e24061">qgis.pktools.pksvm.pksvm.cliName</a></div><div class="ttdeci">def cliName</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pksvm_8py_source.html#l00057">pksvm.py:57</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pksvm_1_1pksvm_html"><div class="ttname"><a href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html">qgis.pktools.pksvm.pksvm</a></div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pksvm_8py_source.html#l00039">pksvm.py:39</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pksvm_1_1pksvm_html_aa20dab28c3712708dbd39bf066bfb99c"><div class="ttname"><a href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html#aa20dab28c3712708dbd39bf066bfb99c">qgis.pktools.pksvm.pksvm.group</a></div><div class="ttdeci">group</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pksvm_8py_source.html#l00062">pksvm.py:62</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pksvm_1_1pksvm_html_a986be02b97ec4cc26f00ea4dd9c878ff"><div class="ttname"><a href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html#a986be02b97ec4cc26f00ea4dd9c878ff">qgis.pktools.pksvm.pksvm.MSKNODATA</a></div><div class="ttdeci">string MSKNODATA</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pksvm_8py_source.html#l00050">pksvm.py:50</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pksvm_1_1pksvm_html_a449dacc23d9df8747a447f46d9f8295e"><div class="ttname"><a href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html#a449dacc23d9df8747a447f46d9f8295e">qgis.pktools.pksvm.pksvm.INPUT</a></div><div class="ttdeci">string INPUT</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pksvm_8py_source.html#l00041">pksvm.py:41</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pksvm_1_1pksvm_html_a749c2182f8ab095d690e08951156f695"><div class="ttname"><a href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html#a749c2182f8ab095d690e08951156f695">qgis.pktools.pksvm.pksvm.MASK</a></div><div class="ttdeci">string MASK</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pksvm_8py_source.html#l00049">pksvm.py:49</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pksvm_1_1pksvm_html_ae80fe946cdd873ff57e05a3a2ed6131b"><div class="ttname"><a href="classqgis_1_1pktools_1_1pksvm_1_1pksvm.html#ae80fe946cdd873ff57e05a3a2ed6131b">qgis.pktools.pksvm.pksvm.ITERATE</a></div><div class="ttdeci">string ITERATE</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pksvm_8py_source.html#l00043">pksvm.py:43</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pktools_2pktoolsAlgorithmProvider_8py_source.html b/doc/html/pktools_2pktoolsAlgorithmProvider_8py_source.html
deleted file mode 100644
index a07967b..0000000
--- a/doc/html/pktools_2pktoolsAlgorithmProvider_8py_source.html
+++ /dev/null
@@ -1,200 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/pktools/pktoolsAlgorithmProvider.py Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li><li class="navelem"><a class="el" href="dir_b7cc22b4453454f1e686d9a2e78d988d.html">pktools</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pktoolsAlgorithmProvider.py</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment"># -*- coding: utf-8 -*-</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> </div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="stringliteral">    pktoolsAlgorithmProvider.py</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="stringliteral">    ---------------------</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="stringliteral">    Date                 : April 2015</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="stringliteral">    Copyright            : (C) 2015 by Pieter Kempeneers</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="stringliteral">    Email                : kempenep at gmail dot com</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="stringliteral">*   This program is free software; you can redistribute it and/or modify  *</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="stringliteral">*   it under the terms of the GNU General Public License as published by  *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="stringliteral">*   the Free Software Foundation; either version 2 of the License, or     *</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="stringliteral">*   (at your option) any later version.                                   *</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> __author__ = <span class="stringliteral">'Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> __date__ = <span class="stringliteral">'April 2015'</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> __copyright__ = <span class="stringliteral">'(C) 2015, Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"># This will get replaced with a git SHA1 when you do a git archive</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> __revision__ = <span class="stringliteral">'$Format:%H$'</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> </div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="comment">#from pktools.ExampleAlgorithm import ExampleAlgorithm</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="comment">#raster utilities</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">from</span> pktools.pkcomposite <span class="keyword">import</span> pkcomposite</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">from</span> pktools.pkcrop <span class="keyword">import</span> pkcrop</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">from</span> pktools.pkreclass <span class="keyword">import</span> pkreclass</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">from</span> pktools.pkgetmask <span class="keyword">import</span> pkgetmask</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">from</span> pktools.pksetmask <span class="keyword">import</span> pksetmask</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="comment">#raster/vector utilities</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">from</span> pktools.pkextract <span class="keyword">import</span> pkextract</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">from</span> pktools.pkextract_grid <span class="keyword">import</span> pkextract_grid</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="keyword">from</span> pktools.pkextract_random <span class="keyword">import</span> pkextract_random</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="comment">#Supervised classification utilities</span></div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="keyword">from</span> pktools.pksvm <span class="keyword">import</span> pksvm</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> <span class="keyword">from</span> pktools.pkdiff_accuracy <span class="keyword">import</span> pkdiff_accuracy</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="comment">#LiDAR utilities</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span> <span class="keyword">from</span> pktools.pklas2img <span class="keyword">import</span> pklas2img</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span> <span class="keyword">from</span> pktools.pkfilterdem <span class="keyword">import</span> pkfilterdem</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span> <span class="comment">#filter utilities</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span> <span class="keyword">from</span> pktools.pkfilter_spectral <span class="keyword">import</span> pkfilter_spectral</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span> <span class="keyword">from</span> pktools.pkfilter_spatial <span class="keyword">import</span> pkfilter_spatial</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span> </div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span> <span class="keyword">from</span> processing.core.AlgorithmProvider <span class="keyword">import</span> AlgorithmProvider</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span> <span class="keyword">from</span> processing.core.ProcessingConfig <span class="keyword">import</span> Setting, ProcessingConfig</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span> <span class="keyword">import</span> os</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span> <span class="keyword">from</span> PyQt4 <span class="keyword">import</span> QtGui</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span> <span class="keyword">from</span> pktools.pktoolsUtils <span class="keyword">import</span> pktoolsUtils</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span> </div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span> </div>
-<div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html">   55</a></span> <span class="keyword">class </span><a class="code" href="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html">pktoolsAlgorithmProvider</a>(AlgorithmProvider):</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span> </div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     MY_DUMMY_SETTING = <span class="stringliteral">"MY_DUMMY_SETTING"</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span> </div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     <span class="keyword">def </span>__init__(self):</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>         AlgorithmProvider.__init__(self)</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>         <span class="comment"># deactivate provider by default</span></div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>         self.<a class="code" href="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a37d8a69b9b2e4f771040c39ec10d54c4">activate</a> = <span class="keyword">True</span></div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>         <span class="comment"># load algorithms</span></div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span> <span class="comment">#        self.alglist = [pkinfo()]</span></div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>         self.<a class="code" href="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#ad3d4d7c0de7717299ac1936a24c0e933">alglist</a> = [pkreclass(),pkcrop(),pkcomposite(),pkgetmask(),pksetmask(),pkextract(),pkextract_grid(),pkextract_random(),pksvm(),pkdiff_accuracy(),pklas2img(),pkfilterdem(),pkfilter_spectral(),pkfilter_spatial()]</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>         <span class="comment"># pktools = [pkinfo()]</span></div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>         <span class="comment"># for alg in pktools:</span></div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>         <span class="comment">#     alg.group = "pktools"</span></div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>         <span class="comment">#     self.alglist.extend(pktools)</span></div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>         <span class="keywordflow">for</span> alg <span class="keywordflow">in</span> self.<a class="code" href="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#ad3d4d7c0de7717299ac1936a24c0e933">alglist</a>:</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>             alg.provider = self</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span> </div>
-<div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a3c0515d681ec29ab388bc10d2d5cb455">   73</a></span>     <span class="keyword">def </span><a class="code" href="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a3c0515d681ec29ab388bc10d2d5cb455">initializeSettings</a>(self):</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>         <span class="stringliteral">'''In this method we add settings needed to configure our provider.</span></div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span> <span class="stringliteral">        Do not forget to call the parent method, since it takes care or</span></div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span> <span class="stringliteral">        automatically adding a setting for activating or deactivating the</span></div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span> <span class="stringliteral">        algorithms in the provider</span></div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span> <span class="stringliteral">        '''</span></div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>         AlgorithmProvider.initializeSettings(self)</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>         ProcessingConfig.addSetting(Setting(self.<a class="code" href="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a7ccc5c08d6d0d906b57e978657d628c8">getDescription</a>(), pktoolsUtils.PKTOOLS_FOLDER, <span class="stringliteral">"pktools folder"</span>, pktoolsUtils.pktoolsPath()))</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span> </div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span> <span class="comment">#        ProcessingConfig.addSetting(Setting("Example algorithms", pktoolsAlgorithmProvider.MY_DUMMY_SETTING, "Example setting", "Default value"))</span></div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>  <span class="comment">#       '''To get the parameter of a setting parameter, use</span></div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span> <span class="comment">#        ProcessingConfig.getSetting(name_of_parameter)</span></div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span> <span class="comment">#        '''</span></div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span> </div>
-<div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a0d55ab57e07e57292f309173cf65114f">   87</a></span>     <span class="keyword">def </span><a class="code" href="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a0d55ab57e07e57292f309173cf65114f">unload</a>(self):</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>         <span class="stringliteral">'''Setting should be removed here, so they do not appear anymore</span></div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span> <span class="stringliteral">        when the plugin is unloaded'''</span></div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>         AlgorithmProvider.unload(self)</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>         ProcessingConfig.removeSetting(pktoolsAlgorithmProvider.MY_DUMMY_SETTING)</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span> </div>
-<div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#aa1d3118388803531aa5368f90bd0dbce">   93</a></span>     <span class="keyword">def </span><a class="code" href="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#aa1d3118388803531aa5368f90bd0dbce">getName</a>(self):</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>         <span class="stringliteral">'''This is the name that will appear on the toolbox group.</span></div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span> <span class="stringliteral">        It is also used to create the command line name of all the algorithms</span></div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span> <span class="stringliteral">        from this provider</span></div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span> <span class="stringliteral">        '''</span></div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>         <span class="keywordflow">return</span> <span class="stringliteral">"pktools"</span></div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span> </div>
-<div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a7ccc5c08d6d0d906b57e978657d628c8">  100</a></span>     <span class="keyword">def </span><a class="code" href="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a7ccc5c08d6d0d906b57e978657d628c8">getDescription</a>(self):</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>         <span class="stringliteral">'''This is the provired full name.</span></div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span> <span class="stringliteral">        '''</span></div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>         <span class="keywordflow">return</span> <span class="stringliteral">"Utilities for remote sensing image processing"</span></div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span> </div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     <span class="keyword">def </span>getIcon(self):</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>         filepath = os.path.dirname(__file__) + <span class="stringliteral">"/logo.png"</span></div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>         <span class="keywordflow">return</span> QtGui.QIcon(filepath)</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span> </div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>     <span class="keyword">def </span>_loadAlgorithms(self):</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>         <span class="stringliteral">'''Here we fill the list of algorithms in self.algs.</span></div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span> <span class="stringliteral">        This method is called whenever the list of algorithms should be updated.</span></div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span> <span class="stringliteral">        If the list of algorithms can change</span></div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span> <span class="stringliteral">        (for instance, if it contains algorithms from user-defined scripts and</span></div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span> <span class="stringliteral">        a new script might have been added), you should create the list again</span></div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span> <span class="stringliteral">        here.</span></div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span> <span class="stringliteral">        In this case, since the list is always the same, we assign from the pre-made list.</span></div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span> <span class="stringliteral">        This assignment has to be done in this method even if the list does not change,</span></div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span> <span class="stringliteral">        since the self.algs list is cleared before calling this method</span></div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span> <span class="stringliteral">        '''</span></div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>         self.<a class="code" href="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#aa9f8de9a8f4bd14a137331a681dbad87">algs</a> = self.<a class="code" href="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#ad3d4d7c0de7717299ac1936a24c0e933">alglist</a></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider_html"><div class="ttname"><a href="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html">qgis.pktools.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider</a></div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pktoolsAlgorithmProvider_8py_source.html#l00055">pktoolsAlgorithmProvider.py:55</a></div></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider_html_aa1d3118388803531aa5368f90bd0dbce"><div class="ttname"><a href="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#aa1d3118388803531aa5368f90bd0dbce">qgis.pktools.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider.getName</a></div><div class="ttdeci">def getName</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pktoolsAlgorithmProvider_8py_source [...]
-<div class="ttc" id="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider_html_ad3d4d7c0de7717299ac1936a24c0e933"><div class="ttname"><a href="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#ad3d4d7c0de7717299ac1936a24c0e933">qgis.pktools.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider.alglist</a></div><div class="ttdeci">alglist</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pktoolsAlgorithmProvider_8py_source.htm [...]
-<div class="ttc" id="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider_html_aa9f8de9a8f4bd14a137331a681dbad87"><div class="ttname"><a href="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#aa9f8de9a8f4bd14a137331a681dbad87">qgis.pktools.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider.algs</a></div><div class="ttdeci">algs</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pktoolsAlgorithmProvider_8py_source.html#l001 [...]
-<div class="ttc" id="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider_html_a3c0515d681ec29ab388bc10d2d5cb455"><div class="ttname"><a href="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a3c0515d681ec29ab388bc10d2d5cb455">qgis.pktools.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider.initializeSettings</a></div><div class="ttdeci">def initializeSettings</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pktoolsAlgori [...]
-<div class="ttc" id="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider_html_a7ccc5c08d6d0d906b57e978657d628c8"><div class="ttname"><a href="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a7ccc5c08d6d0d906b57e978657d628c8">qgis.pktools.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider.getDescription</a></div><div class="ttdeci">def getDescription</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pktoolsAlgorithmProvi [...]
-<div class="ttc" id="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider_html_a37d8a69b9b2e4f771040c39ec10d54c4"><div class="ttname"><a href="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a37d8a69b9b2e4f771040c39ec10d54c4">qgis.pktools.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider.activate</a></div><div class="ttdeci">activate</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pktoolsAlgorithmProvider_8py_source.h [...]
-<div class="ttc" id="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider_html_a0d55ab57e07e57292f309173cf65114f"><div class="ttname"><a href="classqgis_1_1pktools_1_1pktoolsAlgorithmProvider_1_1pktoolsAlgorithmProvider.html#a0d55ab57e07e57292f309173cf65114f">qgis.pktools.pktoolsAlgorithmProvider.pktoolsAlgorithmProvider.unload</a></div><div class="ttdeci">def unload</div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pktoolsAlgorithmProvider_8py_source.h [...]
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pktools_2pktoolsAlgorithm_8py_source.html b/doc/html/pktools_2pktoolsAlgorithm_8py_source.html
deleted file mode 100644
index 8454453..0000000
--- a/doc/html/pktools_2pktoolsAlgorithm_8py_source.html
+++ /dev/null
@@ -1,130 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/pktools/pktoolsAlgorithm.py Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li><li class="navelem"><a class="el" href="dir_b7cc22b4453454f1e686d9a2e78d988d.html">pktools</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pktoolsAlgorithm.py</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment"># -*- coding: utf-8 -*-</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> </div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="stringliteral">    pktoolsAlgorithm.py</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="stringliteral">    ---------------------</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="stringliteral">    Date                 : April 2015</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="stringliteral">    Copyright            : (C) 2015 by Pieter Kempeneers</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="stringliteral">    Email                : kempenep at gmail dot com</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="stringliteral">*   This program is free software; you can redistribute it and/or modify  *</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="stringliteral">*   it under the terms of the GNU General Public License as published by  *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="stringliteral">*   the Free Software Foundation; either version 2 of the License, or     *</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="stringliteral">*   (at your option) any later version.                                   *</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> __author__ = <span class="stringliteral">'Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> __date__ = <span class="stringliteral">'April 2015'</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> __copyright__ = <span class="stringliteral">'(C) 2015, Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"># This will get replaced with a git SHA1 when you do a git archive</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> __revision__ = <span class="stringliteral">'$Format:%H$'</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">from</span> processing.core.GeoAlgorithm <span class="keyword">import</span> GeoAlgorithm</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> </div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">import</span> os</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">from</span> PyQt4 <span class="keyword">import</span> QtGui</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">from</span> pktools.pktoolsUtils <span class="keyword">import</span> pktoolsUtils</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> </div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterFile</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterBoolean</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterNumber</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterString</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">from</span> processing.core.parameters <span class="keyword">import</span> ParameterSelection</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="keyword">from</span> processing.core.outputs <span class="keyword">import</span> OutputFile</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="keyword">from</span> processing.core.outputs <span class="keyword">import</span> OutputRaster</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="keyword">from</span> processing.core.outputs <span class="keyword">import</span> OutputVector</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> </div>
-<div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="classqgis_1_1pktools_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html">   41</a></span> <span class="keyword">class </span><a class="code" href="classqgis_1_1pktools_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html">pktoolsAlgorithm</a>(GeoAlgorithm):</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span> </div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     <span class="keyword">def </span>getIcon(self):</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>         filepath = os.path.dirname(__file__) + <span class="stringliteral">"/logo.png"</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>         <span class="keywordflow">return</span> QtGui.QIcon(filepath)</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span> </div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     <span class="keyword">def </span>checkBeforeOpeningParametersDialog(self):</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>             path = pktoolsUtils.pktoolsPath()</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>             <span class="keywordflow">if</span> path == <span class="stringliteral">""</span>:</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>                 <span class="keywordflow">return</span> <span class="stringliteral">"pktools folder is not configured.\nPlease configure it before running pktools algorithms."</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     </div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     <span class="keyword">def </span>help(self):</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span> </div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>         <span class="comment">#utilityName=self.__class__.__name__</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span> </div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>         helpUrl = <span class="stringliteral">'http://pktools.nongnu.org/html/md_{}.html'</span>.format(self.cliName())</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>         <span class="keywordflow">return</span> <span class="keyword">False</span>, helpUrl        </div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm_html"><div class="ttname"><a href="classqgis_1_1pktools_1_1pktoolsAlgorithm_1_1pktoolsAlgorithm.html">qgis.pktools.pktoolsAlgorithm.pktoolsAlgorithm</a></div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pktoolsAlgorithm_8py_source.html#l00041">pktoolsAlgorithm.py:41</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/pktools_2pktoolsUtils_8py_source.html b/doc/html/pktools_2pktoolsUtils_8py_source.html
deleted file mode 100644
index e005f98..0000000
--- a/doc/html/pktools_2pktoolsUtils_8py_source.html
+++ /dev/null
@@ -1,166 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/qgis/pktools/pktoolsUtils.py Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_5785acc8d2e42f8795bdbe936856f26d.html">qgis</a></li><li class="navelem"><a class="el" href="dir_b7cc22b4453454f1e686d9a2e78d988d.html">pktools</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">pktoolsUtils.py</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment"># -*- coding: utf-8 -*-</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> </div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="stringliteral">    pktoolsUtils.py</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="stringliteral">    ---------------------</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="stringliteral">    Date                 : April 2015</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="stringliteral">    Copyright            : (C) 2015 by Pieter Kempeneers</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="stringliteral">    Email                : kempenep at gmail dot com</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="stringliteral">*   This program is free software; you can redistribute it and/or modify  *</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="stringliteral">*   it under the terms of the GNU General Public License as published by  *</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="stringliteral">*   the Free Software Foundation; either version 2 of the License, or     *</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="stringliteral">*   (at your option) any later version.                                   *</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="stringliteral">*                                                                         *</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="stringliteral">***************************************************************************</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="stringliteral">"""</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> __author__ = <span class="stringliteral">'Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> __date__ = <span class="stringliteral">'April 2015'</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> __copyright__ = <span class="stringliteral">'(C) 2015, Pieter Kempeneers'</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"># This will get replaced with a git SHA1 when you do a git archive</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> __revision__ = <span class="stringliteral">'$Format:%H$'</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">from</span> <a class="code" href="namespacePyQt4_1_1QtCore.html">PyQt4.QtCore</a> <span class="keyword">import</span> *</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">from</span> <a class="code" href="namespacePyQt4_1_1QtGui.html">PyQt4.QtGui</a> <span class="keyword">import</span> *</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">import</span> os</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">import</span> subprocess</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">from</span> <a class="code" href="namespaceqgis_1_1core.html">qgis.core</a> <span class="keyword">import</span> QgsApplication</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">from</span> processing.core.ProcessingLog <span class="keyword">import</span> ProcessingLog</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">from</span> processing.core.ProcessingConfig <span class="keyword">import</span> ProcessingConfig</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">from</span> processing.tools.system <span class="keyword">import</span> isWindows, isMac, userFolder</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> </div>
-<div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="classqgis_1_1pktools_1_1pktoolsUtils_1_1pktoolsUtils.html">   35</a></span> <span class="keyword">class </span><a class="code" href="classqgis_1_1pktools_1_1pktoolsUtils_1_1pktoolsUtils.html">pktoolsUtils</a>():</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> </div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>     PKTOOLS_FOLDER = <span class="stringliteral">"PKTOOLS_FOLDER"</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>     @staticmethod</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     <span class="keyword">def </span>pktoolsPath():</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>         folder = ProcessingConfig.getSetting(pktoolsUtils.PKTOOLS_FOLDER)</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span> </div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>         <span class="keywordflow">if</span> folder <span class="keywordflow">is</span> <span class="keywordtype">None</span> <span class="keywordflow">or</span> folder == <span class="stringliteral">''</span>:</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>             <span class="keywordflow">if</span> isWindows():</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>                 testfolder = os.path.join(os.path.dirname(QgsApplication.prefixPath()), <span class="stringliteral">'pktools'</span>)</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>                 testfolder = os.path.join(testfolder, <span class="stringliteral">'bin'</span>)</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>                 <span class="keywordflow">if</span> os.path.exists(os.path.join(testfolder, <span class="stringliteral">'pkinfo'</span>)):</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>                     folder = testfolder</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>                 folder = testfolder</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>             <span class="keywordflow">else</span>:</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>                 testfolder = <span class="stringliteral">"/usr/bin"</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>                 <span class="keywordflow">if</span> os.path.exists(os.path.join(testfolder, <span class="stringliteral">"pkinfo"</span>)):</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>                     folder = testfolder</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>                 <span class="keywordflow">else</span>:</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>                     testfolder = <span class="stringliteral">"/usr/local/bin"</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>                     <span class="keywordflow">if</span> os.path.exists(os.path.join(testfolder, <span class="stringliteral">"pkinfo"</span>)):</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>                         folder = testfolder</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>                     folder = testfolder</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>         <span class="keywordflow">return</span> folder</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span> </div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     @staticmethod</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     <span class="keyword">def </span>runpktools(commands, progress):</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>         settings = QSettings()<span class="comment">#from gdal</span></div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>         loglines = []</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>         loglines.append(<span class="stringliteral">"pktools execution console output"</span>)</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>         loglines.append(commands)</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>         progress.setInfo(<span class="stringliteral">'pktools command:'</span>)</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>         commandline = <span class="stringliteral">" "</span>.join(commands)</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>         progress.setCommand(commandline)</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>         proc = subprocess.Popen(</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>             commandline,</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>             shell=<span class="keyword">True</span>,</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>             stdout=subprocess.PIPE,</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>             stdin=open(os.devnull),</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>             stderr=subprocess.STDOUT,</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>             universal_newlines=<span class="keyword">True</span>,</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>         ).stdout</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>         progress.setInfo(<span class="stringliteral">'pktools command output:'</span>)</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span> </div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>         <span class="keywordflow">for</span> line <span class="keywordflow">in</span> iter(proc.readline, <span class="stringliteral">""</span>):</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>             progress.setConsoleInfo(line)</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>             loglines.append(line)</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>         ProcessingLog.addToLog(ProcessingLog.LOG_INFO, loglines)</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span> </div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>         ProcessingLog.addToLog(ProcessingLog.LOG_INFO, commandline)</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>         pktoolsUtils.consoleOutput = loglines</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span> </div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span> <span class="comment">#    @staticmethod</span></div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span> <span class="comment">#    def getConsoleOutput():</span></div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span> <span class="comment">#        return pktoolsUtils.consoleOutput</span></div>
-<div class="ttc" id="classqgis_1_1pktools_1_1pktoolsUtils_1_1pktoolsUtils_html"><div class="ttname"><a href="classqgis_1_1pktools_1_1pktoolsUtils_1_1pktoolsUtils.html">qgis.pktools.pktoolsUtils.pktoolsUtils</a></div><div class="ttdef"><b>Definition:</b> <a href="pktools_2pktoolsUtils_8py_source.html#l00035">pktoolsUtils.py:35</a></div></div>
-<div class="ttc" id="namespacePyQt4_1_1QtCore_html"><div class="ttname"><a href="namespacePyQt4_1_1QtCore.html">QtCore</a></div></div>
-<div class="ttc" id="namespaceqgis_1_1core_html"><div class="ttname"><a href="namespaceqgis_1_1core.html">core</a></div></div>
-<div class="ttc" id="namespacePyQt4_1_1QtGui_html"><div class="ttname"><a href="namespacePyQt4_1_1QtGui.html">QtGui</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/structIndexValue-members.html b/doc/html/structIndexValue-members.html
deleted file mode 100644
index 3d26145..0000000
--- a/doc/html/structIndexValue-members.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">IndexValue Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="structIndexValue.html">IndexValue</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>position</b> (defined in <a class="el" href="structIndexValue.html">IndexValue</a>)</td><td class="entry"><a class="el" href="structIndexValue.html">IndexValue</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>value</b> (defined in <a class="el" href="structIndexValue.html">IndexValue</a>)</td><td class="entry"><a class="el" href="structIndexValue.html">IndexValue</a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/structIndexValue.html b/doc/html/structIndexValue.html
deleted file mode 100644
index 32d199e..0000000
--- a/doc/html/structIndexValue.html
+++ /dev/null
@@ -1,90 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: IndexValue Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="structIndexValue-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">IndexValue Struct Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:a00d827f814cf23d44711038d90242589"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a00d827f814cf23d44711038d90242589"></a>
-int </td><td class="memItemRight" valign="bottom"><b>position</b></td></tr>
-<tr class="separator:a00d827f814cf23d44711038d90242589"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae0fdfc25638ea2920d60cea8e0fc40b8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae0fdfc25638ea2920d60cea8e0fc40b8"></a>
-double </td><td class="memItemRight" valign="bottom"><b>value</b></td></tr>
-<tr class="separator:ae0fdfc25638ea2920d60cea8e0fc40b8"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="IndexValue_8h_source.html#l00023">23</a> of file <a class="el" href="IndexValue_8h_source.html">IndexValue.h</a>.</p>
-</div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/home/kempenep/pktools/src/base/<a class="el" href="IndexValue_8h_source.html">IndexValue.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/structPosValue-members.html b/doc/html/structPosValue-members.html
deleted file mode 100644
index ba827c3..0000000
--- a/doc/html/structPosValue-members.html
+++ /dev/null
@@ -1,77 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">PosValue Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="structPosValue.html">PosValue</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>posx</b> (defined in <a class="el" href="structPosValue.html">PosValue</a>)</td><td class="entry"><a class="el" href="structPosValue.html">PosValue</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>posy</b> (defined in <a class="el" href="structPosValue.html">PosValue</a>)</td><td class="entry"><a class="el" href="structPosValue.html">PosValue</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>value</b> (defined in <a class="el" href="structPosValue.html">PosValue</a>)</td><td class="entry"><a class="el" href="structPosValue.html">PosValue</a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/structPosValue.html b/doc/html/structPosValue.html
deleted file mode 100644
index b5a276a..0000000
--- a/doc/html/structPosValue.html
+++ /dev/null
@@ -1,93 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: PosValue Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="structPosValue-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">PosValue Struct Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:a483969d2ebf1df859c6c2ce5c2493f6a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a483969d2ebf1df859c6c2ce5c2493f6a"></a>
-double </td><td class="memItemRight" valign="bottom"><b>posx</b></td></tr>
-<tr class="separator:a483969d2ebf1df859c6c2ce5c2493f6a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4e3ea9e8282351c719351fa6e8d1cd35"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4e3ea9e8282351c719351fa6e8d1cd35"></a>
-double </td><td class="memItemRight" valign="bottom"><b>posy</b></td></tr>
-<tr class="separator:a4e3ea9e8282351c719351fa6e8d1cd35"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a94da613bfa56c859fa349069d2c00223"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a94da613bfa56c859fa349069d2c00223"></a>
-double </td><td class="memItemRight" valign="bottom"><b>value</b></td></tr>
-<tr class="separator:a94da613bfa56c859fa349069d2c00223"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="PosValue_8h_source.html#l00023">23</a> of file <a class="el" href="PosValue_8h_source.html">PosValue.h</a>.</p>
-</div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/home/kempenep/pktools/src/base/<a class="el" href="PosValue_8h_source.html">PosValue.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/structSolver_1_1SolutionInfo-members.html b/doc/html/structSolver_1_1SolutionInfo-members.html
deleted file mode 100644
index cafdab8..0000000
--- a/doc/html/structSolver_1_1SolutionInfo-members.html
+++ /dev/null
@@ -1,83 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="classSolver.html">Solver</a></li><li class="navelem"><a class="el" href="structSolver_1_1SolutionInfo.html">SolutionInfo</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">Solver::SolutionInfo Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="structSolver_1_1SolutionInfo.html">Solver::SolutionInfo</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>obj</b> (defined in <a class="el" href="structSolver_1_1SolutionInfo.html">Solver::SolutionInfo</a>)</td><td class="entry"><a class="el" href="structSolver_1_1SolutionInfo.html">Solver::SolutionInfo</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>r</b> (defined in <a class="el" href="structSolver_1_1SolutionInfo.html">Solver::SolutionInfo</a>)</td><td class="entry"><a class="el" href="structSolver_1_1SolutionInfo.html">Solver::SolutionInfo</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>rho</b> (defined in <a class="el" href="structSolver_1_1SolutionInfo.html">Solver::SolutionInfo</a>)</td><td class="entry"><a class="el" href="structSolver_1_1SolutionInfo.html">Solver::SolutionInfo</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>upper_bound_n</b> (defined in <a class="el" href="structSolver_1_1SolutionInfo.html">Solver::SolutionInfo</a>)</td><td class="entry"><a class="el" href="structSolver_1_1SolutionInfo.html">Solver::SolutionInfo</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>upper_bound_p</b> (defined in <a class="el" href="structSolver_1_1SolutionInfo.html">Solver::SolutionInfo</a>)</td><td class="entry"><a class="el" href="structSolver_1_1SolutionInfo.html">Solver::SolutionInfo</a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/structSolver_1_1SolutionInfo.html b/doc/html/structSolver_1_1SolutionInfo.html
deleted file mode 100644
index 091f168..0000000
--- a/doc/html/structSolver_1_1SolutionInfo.html
+++ /dev/null
@@ -1,103 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Solver::SolutionInfo Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="classSolver.html">Solver</a></li><li class="navelem"><a class="el" href="structSolver_1_1SolutionInfo.html">SolutionInfo</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="structSolver_1_1SolutionInfo-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">Solver::SolutionInfo Struct Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:adf1d775e9152a7b1742057cd638ed2ae"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adf1d775e9152a7b1742057cd638ed2ae"></a>
-double </td><td class="memItemRight" valign="bottom"><b>obj</b></td></tr>
-<tr class="separator:adf1d775e9152a7b1742057cd638ed2ae"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8091f45a336af39e232f3845e25f2266"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8091f45a336af39e232f3845e25f2266"></a>
-double </td><td class="memItemRight" valign="bottom"><b>rho</b></td></tr>
-<tr class="separator:a8091f45a336af39e232f3845e25f2266"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a94c4cb7f402752326cc975ec57a8688f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a94c4cb7f402752326cc975ec57a8688f"></a>
-double </td><td class="memItemRight" valign="bottom"><b>upper_bound_p</b></td></tr>
-<tr class="separator:a94c4cb7f402752326cc975ec57a8688f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a07ab9dc3265855f483922988bdaaf986"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a07ab9dc3265855f483922988bdaaf986"></a>
-double </td><td class="memItemRight" valign="bottom"><b>upper_bound_n</b></td></tr>
-<tr class="separator:a07ab9dc3265855f483922988bdaaf986"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3db948f9e914e1f9976523cfdc7c1bbe"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3db948f9e914e1f9976523cfdc7c1bbe"></a>
-double </td><td class="memItemRight" valign="bottom"><b>r</b></td></tr>
-<tr class="separator:a3db948f9e914e1f9976523cfdc7c1bbe"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="svm_8cpp_source.html#l00400">400</a> of file <a class="el" href="svm_8cpp_source.html">svm.cpp</a>.</p>
-</div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/home/kempenep/pktools/src/algorithms/<a class="el" href="svm_8cpp_source.html">svm.cpp</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/structdecision__function-members.html b/doc/html/structdecision__function-members.html
deleted file mode 100644
index 4e41ac0..0000000
--- a/doc/html/structdecision__function-members.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">decision_function Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="structdecision__function.html">decision_function</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>alpha</b> (defined in <a class="el" href="structdecision__function.html">decision_function</a>)</td><td class="entry"><a class="el" href="structdecision__function.html">decision_function</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>rho</b> (defined in <a class="el" href="structdecision__function.html">decision_function</a>)</td><td class="entry"><a class="el" href="structdecision__function.html">decision_function</a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/structdecision__function.html b/doc/html/structdecision__function.html
deleted file mode 100644
index 6a871ab..0000000
--- a/doc/html/structdecision__function.html
+++ /dev/null
@@ -1,90 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: decision_function Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="structdecision__function-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">decision_function Struct Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:ab79ad1c39d091d4f8ad798abe4223772"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab79ad1c39d091d4f8ad798abe4223772"></a>
-double * </td><td class="memItemRight" valign="bottom"><b>alpha</b></td></tr>
-<tr class="separator:ab79ad1c39d091d4f8ad798abe4223772"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae2aeeaa508803351b22d4454b81cb375"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae2aeeaa508803351b22d4454b81cb375"></a>
-double </td><td class="memItemRight" valign="bottom"><b>rho</b></td></tr>
-<tr class="separator:ae2aeeaa508803351b22d4454b81cb375"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="svm_8cpp_source.html#l01652">1652</a> of file <a class="el" href="svm_8cpp_source.html">svm.cpp</a>.</p>
-</div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/home/kempenep/pktools/src/algorithms/<a class="el" href="svm_8cpp_source.html">svm.cpp</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/structsvm__model-members.html b/doc/html/structsvm__model-members.html
deleted file mode 100644
index 8cb277b..0000000
--- a/doc/html/structsvm__model-members.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">svm_model Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="structsvm__model.html">svm_model</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>free_sv</b> (defined in <a class="el" href="structsvm__model.html">svm_model</a>)</td><td class="entry"><a class="el" href="structsvm__model.html">svm_model</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>l</b> (defined in <a class="el" href="structsvm__model.html">svm_model</a>)</td><td class="entry"><a class="el" href="structsvm__model.html">svm_model</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>label</b> (defined in <a class="el" href="structsvm__model.html">svm_model</a>)</td><td class="entry"><a class="el" href="structsvm__model.html">svm_model</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>nr_class</b> (defined in <a class="el" href="structsvm__model.html">svm_model</a>)</td><td class="entry"><a class="el" href="structsvm__model.html">svm_model</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>nSV</b> (defined in <a class="el" href="structsvm__model.html">svm_model</a>)</td><td class="entry"><a class="el" href="structsvm__model.html">svm_model</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>param</b> (defined in <a class="el" href="structsvm__model.html">svm_model</a>)</td><td class="entry"><a class="el" href="structsvm__model.html">svm_model</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>probA</b> (defined in <a class="el" href="structsvm__model.html">svm_model</a>)</td><td class="entry"><a class="el" href="structsvm__model.html">svm_model</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>probB</b> (defined in <a class="el" href="structsvm__model.html">svm_model</a>)</td><td class="entry"><a class="el" href="structsvm__model.html">svm_model</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>rho</b> (defined in <a class="el" href="structsvm__model.html">svm_model</a>)</td><td class="entry"><a class="el" href="structsvm__model.html">svm_model</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>SV</b> (defined in <a class="el" href="structsvm__model.html">svm_model</a>)</td><td class="entry"><a class="el" href="structsvm__model.html">svm_model</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>sv_coef</b> (defined in <a class="el" href="structsvm__model.html">svm_model</a>)</td><td class="entry"><a class="el" href="structsvm__model.html">svm_model</a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/structsvm__model.html b/doc/html/structsvm__model.html
deleted file mode 100644
index 6dfa92a..0000000
--- a/doc/html/structsvm__model.html
+++ /dev/null
@@ -1,124 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: svm_model Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="structsvm__model-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">svm_model Struct Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Collaboration diagram for svm_model:</div>
-<div class="dyncontent">
-<div class="center"><img src="structsvm__model__coll__graph.png" border="0" usemap="#svm__model_coll__map" alt="Collaboration graph"/></div>
-<map name="svm__model_coll__map" id="svm__model_coll__map">
-<area shape="rect" id="node2" href="structsvm__node.html" title="svm_node" alt="" coords="5,5,87,32"/><area shape="rect" id="node3" href="structsvm__parameter.html" title="svm_parameter" alt="" coords="112,5,223,32"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:a95f43f398a173e63d0ce26911d0a9273"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a95f43f398a173e63d0ce26911d0a9273"></a>
-struct <a class="el" href="structsvm__parameter.html">svm_parameter</a> </td><td class="memItemRight" valign="bottom"><b>param</b></td></tr>
-<tr class="separator:a95f43f398a173e63d0ce26911d0a9273"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5af6e0cfb063e8aac03c99aa9d319116"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5af6e0cfb063e8aac03c99aa9d319116"></a>
-int </td><td class="memItemRight" valign="bottom"><b>nr_class</b></td></tr>
-<tr class="separator:a5af6e0cfb063e8aac03c99aa9d319116"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab858d7eed0bd3cc4c33c094872643d0a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab858d7eed0bd3cc4c33c094872643d0a"></a>
-int </td><td class="memItemRight" valign="bottom"><b>l</b></td></tr>
-<tr class="separator:ab858d7eed0bd3cc4c33c094872643d0a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a96da6fe173a7150dae95bf55d5539e45"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a96da6fe173a7150dae95bf55d5539e45"></a>
-struct <a class="el" href="structsvm__node.html">svm_node</a> ** </td><td class="memItemRight" valign="bottom"><b>SV</b></td></tr>
-<tr class="separator:a96da6fe173a7150dae95bf55d5539e45"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a978084d722ac886100ffcc35fc931143"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a978084d722ac886100ffcc35fc931143"></a>
-double ** </td><td class="memItemRight" valign="bottom"><b>sv_coef</b></td></tr>
-<tr class="separator:a978084d722ac886100ffcc35fc931143"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a16e4dea1508f93ece4384ec35c991887"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16e4dea1508f93ece4384ec35c991887"></a>
-double * </td><td class="memItemRight" valign="bottom"><b>rho</b></td></tr>
-<tr class="separator:a16e4dea1508f93ece4384ec35c991887"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adf5f28fcdd3ca1c5b23c1f6167710a04"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adf5f28fcdd3ca1c5b23c1f6167710a04"></a>
-double * </td><td class="memItemRight" valign="bottom"><b>probA</b></td></tr>
-<tr class="separator:adf5f28fcdd3ca1c5b23c1f6167710a04"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a73ba8feaaf3c2c38c6bb81f7bcb5809e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a73ba8feaaf3c2c38c6bb81f7bcb5809e"></a>
-double * </td><td class="memItemRight" valign="bottom"><b>probB</b></td></tr>
-<tr class="separator:a73ba8feaaf3c2c38c6bb81f7bcb5809e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac66d192809e92b95875bdf8ebb749060"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac66d192809e92b95875bdf8ebb749060"></a>
-int * </td><td class="memItemRight" valign="bottom"><b>label</b></td></tr>
-<tr class="separator:ac66d192809e92b95875bdf8ebb749060"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1d342c9b9e5e4a6377862e13123a25ef"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1d342c9b9e5e4a6377862e13123a25ef"></a>
-int * </td><td class="memItemRight" valign="bottom"><b>nSV</b></td></tr>
-<tr class="separator:a1d342c9b9e5e4a6377862e13123a25ef"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2ae57ce1fa43497d151aff26c21a13a1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2ae57ce1fa43497d151aff26c21a13a1"></a>
-int </td><td class="memItemRight" valign="bottom"><b>free_sv</b></td></tr>
-<tr class="separator:a2ae57ce1fa43497d151aff26c21a13a1"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="svm_8h_source.html#l00053">53</a> of file <a class="el" href="svm_8h_source.html">svm.h</a>.</p>
-</div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/home/kempenep/pktools/src/algorithms/<a class="el" href="svm_8h_source.html">svm.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/structsvm__model__coll__graph.map b/doc/html/structsvm__model__coll__graph.map
deleted file mode 100644
index e8f6707..0000000
--- a/doc/html/structsvm__model__coll__graph.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="svm_model" name="svm_model">
-<area shape="rect" id="node2" href="$structsvm__node.html" title="svm_node" alt="" coords="5,5,87,32"/>
-<area shape="rect" id="node3" href="$structsvm__parameter.html" title="svm_parameter" alt="" coords="112,5,223,32"/>
-</map>
diff --git a/doc/html/structsvm__model__coll__graph.md5 b/doc/html/structsvm__model__coll__graph.md5
deleted file mode 100644
index 5f7acfe..0000000
--- a/doc/html/structsvm__model__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-f1b564de644568331df725046d60b3b4
\ No newline at end of file
diff --git a/doc/html/structsvm__model__coll__graph.png b/doc/html/structsvm__model__coll__graph.png
deleted file mode 100644
index e32b49d..0000000
Binary files a/doc/html/structsvm__model__coll__graph.png and /dev/null differ
diff --git a/doc/html/structsvm__node-members.html b/doc/html/structsvm__node-members.html
deleted file mode 100644
index d5ffefc..0000000
--- a/doc/html/structsvm__node-members.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">svm_node Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="structsvm__node.html">svm_node</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>index</b> (defined in <a class="el" href="structsvm__node.html">svm_node</a>)</td><td class="entry"><a class="el" href="structsvm__node.html">svm_node</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>value</b> (defined in <a class="el" href="structsvm__node.html">svm_node</a>)</td><td class="entry"><a class="el" href="structsvm__node.html">svm_node</a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/structsvm__node.html b/doc/html/structsvm__node.html
deleted file mode 100644
index 6647e18..0000000
--- a/doc/html/structsvm__node.html
+++ /dev/null
@@ -1,90 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: svm_node Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="structsvm__node-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">svm_node Struct Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:aa733ca75ee5a5c0f36af5ddb4c6394d9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa733ca75ee5a5c0f36af5ddb4c6394d9"></a>
-int </td><td class="memItemRight" valign="bottom"><b>index</b></td></tr>
-<tr class="separator:aa733ca75ee5a5c0f36af5ddb4c6394d9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9ca47b8a156238d04213453f3b89e177"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9ca47b8a156238d04213453f3b89e177"></a>
-double </td><td class="memItemRight" valign="bottom"><b>value</b></td></tr>
-<tr class="separator:a9ca47b8a156238d04213453f3b89e177"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="svm_8h_source.html#l00012">12</a> of file <a class="el" href="svm_8h_source.html">svm.h</a>.</p>
-</div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/home/kempenep/pktools/src/algorithms/<a class="el" href="svm_8h_source.html">svm.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/structsvm__parameter-members.html b/doc/html/structsvm__parameter-members.html
deleted file mode 100644
index e1a1fb9..0000000
--- a/doc/html/structsvm__parameter-members.html
+++ /dev/null
@@ -1,90 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">svm_parameter Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="structsvm__parameter.html">svm_parameter</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>C</b> (defined in <a class="el" href="structsvm__parameter.html">svm_parameter</a>)</td><td class="entry"><a class="el" href="structsvm__parameter.html">svm_parameter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>cache_size</b> (defined in <a class="el" href="structsvm__parameter.html">svm_parameter</a>)</td><td class="entry"><a class="el" href="structsvm__parameter.html">svm_parameter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>coef0</b> (defined in <a class="el" href="structsvm__parameter.html">svm_parameter</a>)</td><td class="entry"><a class="el" href="structsvm__parameter.html">svm_parameter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>degree</b> (defined in <a class="el" href="structsvm__parameter.html">svm_parameter</a>)</td><td class="entry"><a class="el" href="structsvm__parameter.html">svm_parameter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>eps</b> (defined in <a class="el" href="structsvm__parameter.html">svm_parameter</a>)</td><td class="entry"><a class="el" href="structsvm__parameter.html">svm_parameter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>gamma</b> (defined in <a class="el" href="structsvm__parameter.html">svm_parameter</a>)</td><td class="entry"><a class="el" href="structsvm__parameter.html">svm_parameter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>kernel_type</b> (defined in <a class="el" href="structsvm__parameter.html">svm_parameter</a>)</td><td class="entry"><a class="el" href="structsvm__parameter.html">svm_parameter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>nr_weight</b> (defined in <a class="el" href="structsvm__parameter.html">svm_parameter</a>)</td><td class="entry"><a class="el" href="structsvm__parameter.html">svm_parameter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>nu</b> (defined in <a class="el" href="structsvm__parameter.html">svm_parameter</a>)</td><td class="entry"><a class="el" href="structsvm__parameter.html">svm_parameter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>p</b> (defined in <a class="el" href="structsvm__parameter.html">svm_parameter</a>)</td><td class="entry"><a class="el" href="structsvm__parameter.html">svm_parameter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>probability</b> (defined in <a class="el" href="structsvm__parameter.html">svm_parameter</a>)</td><td class="entry"><a class="el" href="structsvm__parameter.html">svm_parameter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>shrinking</b> (defined in <a class="el" href="structsvm__parameter.html">svm_parameter</a>)</td><td class="entry"><a class="el" href="structsvm__parameter.html">svm_parameter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>svm_type</b> (defined in <a class="el" href="structsvm__parameter.html">svm_parameter</a>)</td><td class="entry"><a class="el" href="structsvm__parameter.html">svm_parameter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>verbose</b> (defined in <a class="el" href="structsvm__parameter.html">svm_parameter</a>)</td><td class="entry"><a class="el" href="structsvm__parameter.html">svm_parameter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>weight</b> (defined in <a class="el" href="structsvm__parameter.html">svm_parameter</a>)</td><td class="entry"><a class="el" href="structsvm__parameter.html">svm_parameter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>weight_label</b> (defined in <a class="el" href="structsvm__parameter.html">svm_parameter</a>)</td><td class="entry"><a class="el" href="structsvm__parameter.html">svm_parameter</a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/structsvm__parameter.html b/doc/html/structsvm__parameter.html
deleted file mode 100644
index 950dac1..0000000
--- a/doc/html/structsvm__parameter.html
+++ /dev/null
@@ -1,132 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: svm_parameter Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="structsvm__parameter-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">svm_parameter Struct Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:a3afb37272180a903df05f7b649b338f4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3afb37272180a903df05f7b649b338f4"></a>
-int </td><td class="memItemRight" valign="bottom"><b>svm_type</b></td></tr>
-<tr class="separator:a3afb37272180a903df05f7b649b338f4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4188713ba31fc3d101244a6bcc09a760"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4188713ba31fc3d101244a6bcc09a760"></a>
-int </td><td class="memItemRight" valign="bottom"><b>kernel_type</b></td></tr>
-<tr class="separator:a4188713ba31fc3d101244a6bcc09a760"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afef1c4508ec0045c236a3308b0fa5138"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afef1c4508ec0045c236a3308b0fa5138"></a>
-int </td><td class="memItemRight" valign="bottom"><b>degree</b></td></tr>
-<tr class="separator:afef1c4508ec0045c236a3308b0fa5138"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a91667b90506e171482b5fc619377110d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a91667b90506e171482b5fc619377110d"></a>
-double </td><td class="memItemRight" valign="bottom"><b>gamma</b></td></tr>
-<tr class="separator:a91667b90506e171482b5fc619377110d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3ab3555a96a578bea6e5285a5db0a4db"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3ab3555a96a578bea6e5285a5db0a4db"></a>
-double </td><td class="memItemRight" valign="bottom"><b>coef0</b></td></tr>
-<tr class="separator:a3ab3555a96a578bea6e5285a5db0a4db"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00286b7e0767e45d68ac7abceb60c821"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a00286b7e0767e45d68ac7abceb60c821"></a>
-double </td><td class="memItemRight" valign="bottom"><b>cache_size</b></td></tr>
-<tr class="separator:a00286b7e0767e45d68ac7abceb60c821"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1feab5a4e0d5842a20e544f3f944f841"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1feab5a4e0d5842a20e544f3f944f841"></a>
-double </td><td class="memItemRight" valign="bottom"><b>eps</b></td></tr>
-<tr class="separator:a1feab5a4e0d5842a20e544f3f944f841"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af4f905a3f7d589d86964289af3c9d812"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af4f905a3f7d589d86964289af3c9d812"></a>
-double </td><td class="memItemRight" valign="bottom"><b>C</b></td></tr>
-<tr class="separator:af4f905a3f7d589d86964289af3c9d812"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a44014738d1db5444f7f9a1ebf74e4214"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a44014738d1db5444f7f9a1ebf74e4214"></a>
-int </td><td class="memItemRight" valign="bottom"><b>nr_weight</b></td></tr>
-<tr class="separator:a44014738d1db5444f7f9a1ebf74e4214"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a06753922bb0282240f35ae7683f8d69a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a06753922bb0282240f35ae7683f8d69a"></a>
-int * </td><td class="memItemRight" valign="bottom"><b>weight_label</b></td></tr>
-<tr class="separator:a06753922bb0282240f35ae7683f8d69a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afff750f99180b5ddf735404496b6c196"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afff750f99180b5ddf735404496b6c196"></a>
-double * </td><td class="memItemRight" valign="bottom"><b>weight</b></td></tr>
-<tr class="separator:afff750f99180b5ddf735404496b6c196"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4c20c566cb61d5808e8cabd7adbc35c1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4c20c566cb61d5808e8cabd7adbc35c1"></a>
-double </td><td class="memItemRight" valign="bottom"><b>nu</b></td></tr>
-<tr class="separator:a4c20c566cb61d5808e8cabd7adbc35c1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3b60d7ce96137a64caca81095d1a188b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3b60d7ce96137a64caca81095d1a188b"></a>
-double </td><td class="memItemRight" valign="bottom"><b>p</b></td></tr>
-<tr class="separator:a3b60d7ce96137a64caca81095d1a188b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afdbccdf6a24be650d75804b783edc347"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afdbccdf6a24be650d75804b783edc347"></a>
-int </td><td class="memItemRight" valign="bottom"><b>shrinking</b></td></tr>
-<tr class="separator:afdbccdf6a24be650d75804b783edc347"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afac0ef02879d7e27e17ac2a75115a7d9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afac0ef02879d7e27e17ac2a75115a7d9"></a>
-int </td><td class="memItemRight" valign="bottom"><b>probability</b></td></tr>
-<tr class="separator:afac0ef02879d7e27e17ac2a75115a7d9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aff9936119026e499e915228285264560"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aff9936119026e499e915228285264560"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>verbose</b></td></tr>
-<tr class="separator:aff9936119026e499e915228285264560"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="svm_8h_source.html#l00028">28</a> of file <a class="el" href="svm_8h_source.html">svm.h</a>.</p>
-</div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/home/kempenep/pktools/src/algorithms/<a class="el" href="svm_8h_source.html">svm.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/structsvm__problem-members.html b/doc/html/structsvm__problem-members.html
deleted file mode 100644
index 74ee752..0000000
--- a/doc/html/structsvm__problem-members.html
+++ /dev/null
@@ -1,77 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">svm_problem Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="structsvm__problem.html">svm_problem</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>l</b> (defined in <a class="el" href="structsvm__problem.html">svm_problem</a>)</td><td class="entry"><a class="el" href="structsvm__problem.html">svm_problem</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>x</b> (defined in <a class="el" href="structsvm__problem.html">svm_problem</a>)</td><td class="entry"><a class="el" href="structsvm__problem.html">svm_problem</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>y</b> (defined in <a class="el" href="structsvm__problem.html">svm_problem</a>)</td><td class="entry"><a class="el" href="structsvm__problem.html">svm_problem</a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/structsvm__problem.html b/doc/html/structsvm__problem.html
deleted file mode 100644
index 8c4b97f..0000000
--- a/doc/html/structsvm__problem.html
+++ /dev/null
@@ -1,100 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: svm_problem Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="classes.html"><span>Class Index</span></a></li>
-      <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="structsvm__problem-members.html">List of all members</a>  </div>
-  <div class="headertitle">
-<div class="title">svm_problem Struct Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="dynheader">
-Collaboration diagram for svm_problem:</div>
-<div class="dyncontent">
-<div class="center"><img src="structsvm__problem__coll__graph.png" border="0" usemap="#svm__problem_coll__map" alt="Collaboration graph"/></div>
-<map name="svm__problem_coll__map" id="svm__problem_coll__map">
-<area shape="rect" id="node2" href="structsvm__node.html" title="svm_node" alt="" coords="13,5,95,32"/></map>
-<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:a4350eb6820f0d6126bffb6264cec65b3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4350eb6820f0d6126bffb6264cec65b3"></a>
-int </td><td class="memItemRight" valign="bottom"><b>l</b></td></tr>
-<tr class="separator:a4350eb6820f0d6126bffb6264cec65b3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a59dec12ff090571bc9592ba9fb306780"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a59dec12ff090571bc9592ba9fb306780"></a>
-double * </td><td class="memItemRight" valign="bottom"><b>y</b></td></tr>
-<tr class="separator:a59dec12ff090571bc9592ba9fb306780"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acddda9b49a8e38bbda079f35c2e18984"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acddda9b49a8e38bbda079f35c2e18984"></a>
-struct <a class="el" href="structsvm__node.html">svm_node</a> ** </td><td class="memItemRight" valign="bottom"><b>x</b></td></tr>
-<tr class="separator:acddda9b49a8e38bbda079f35c2e18984"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock">
-<p>Definition at line <a class="el" href="svm_8h_source.html#l00018">18</a> of file <a class="el" href="svm_8h_source.html">svm.h</a>.</p>
-</div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/home/kempenep/pktools/src/algorithms/<a class="el" href="svm_8h_source.html">svm.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:06 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/structsvm__problem__coll__graph.map b/doc/html/structsvm__problem__coll__graph.map
deleted file mode 100644
index dc328c9..0000000
--- a/doc/html/structsvm__problem__coll__graph.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="svm_problem" name="svm_problem">
-<area shape="rect" id="node2" href="$structsvm__node.html" title="svm_node" alt="" coords="13,5,95,32"/>
-</map>
diff --git a/doc/html/structsvm__problem__coll__graph.md5 b/doc/html/structsvm__problem__coll__graph.md5
deleted file mode 100644
index f7e6fde..0000000
--- a/doc/html/structsvm__problem__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-60b7301611be9431fad7f64c0d76eab8
\ No newline at end of file
diff --git a/doc/html/structsvm__problem__coll__graph.png b/doc/html/structsvm__problem__coll__graph.png
deleted file mode 100644
index f40c78f..0000000
Binary files a/doc/html/structsvm__problem__coll__graph.png and /dev/null differ
diff --git a/doc/html/svm_8cpp_source.html b/doc/html/svm_8cpp_source.html
deleted file mode 100644
index 2b93c3c..0000000
--- a/doc/html/svm_8cpp_source.html
+++ /dev/null
@@ -1,3212 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/algorithms/svm.cpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_e6df591b0639d4c4807ef64d058833e2.html">algorithms</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">svm.cpp</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="preprocessor">#include <math.h></span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="preprocessor">#include <stdio.h></span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="preprocessor">#include <stdlib.h></span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="preprocessor">#include <ctype.h></span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="preprocessor">#include <float.h></span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="preprocessor">#include <string.h></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="preprocessor">#include <stdarg.h></span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="preprocessor">#include <limits.h></span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="preprocessor">#include <locale.h></span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">//test</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment">// #include <iostream></span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="preprocessor">#include "svm.h"</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="keywordtype">int</span> libsvm_version = LIBSVM_VERSION;</div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="keyword">typedef</span> <span class="keywordtype">float</span> Qfloat;</div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="keyword">typedef</span> <span class="keywordtype">signed</span> <span class="keywordtype">char</span> schar;</div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor">#ifndef min</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor"></span><span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T min(T x,T y) { <span class="keywordflow">return</span> (x<y)?x:y; }</div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor"></span><span class="preprocessor">#ifndef max</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor"></span><span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T max(T x,T y) { <span class="keywordflow">return</span> (x>y)?x:y; }</div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor"></span><span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> swap(T& x, T& y) { T t=x; x=y; y=t; }</div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="keyword">template</span> <<span class="keyword">class</span> S, <span class="keyword">class</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> clone(T*& dst, S* src, <span class="keywordtype">int</span> n)</div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> {</div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span>     dst = <span class="keyword">new</span> T[n];</div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span>     memcpy((<span class="keywordtype">void</span> *)dst,(<span class="keywordtype">void</span> *)src,<span class="keyword">sizeof</span>(T)*n);</div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> }</div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">double</span> powi(<span class="keywordtype">double</span> base, <span class="keywordtype">int</span> times)</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> {</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>     <span class="keywordtype">double</span> tmp = base, ret = 1.0;</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> </div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> t=times; t>0; t/=2)</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>     {</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>         <span class="keywordflow">if</span>(t%2==1) ret*=tmp;</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>         tmp = tmp * tmp;</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>     }</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>     <span class="keywordflow">return</span> ret;</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> }</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="preprocessor">#define INF HUGE_VAL</span></div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> <span class="preprocessor"></span><span class="preprocessor">#define TAU 1e-12</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="preprocessor"></span><span class="preprocessor">#define Malloc(type,n) (type *)malloc((n)*sizeof(type))</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span> <span class="keyword">static</span> <span class="keywordtype">void</span> print_string_stdout(<span class="keyword">const</span> <span class="keywordtype">char</span> *s)</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span> {</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     fputs(s,stdout);</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     fflush(stdout);</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span> }</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span> <span class="keyword">static</span> void (*svm_print_string) (<span class="keyword">const</span> <span class="keywordtype">char</span> *) = &print_string_stdout;</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span> <span class="preprocessor">#if 1</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span> <span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">void</span> info(<span class="keyword">const</span> <span class="keywordtype">char</span> *fmt,...)</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span> {</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     <span class="keywordtype">char</span> buf[BUFSIZ];</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     va_list ap;</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     va_start(ap,fmt);</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     vsprintf(buf,fmt,ap);</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     va_end(ap);</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     (*svm_print_string)(buf);</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span> }</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span> <span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span> <span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">void</span> info(<span class="keyword">const</span> <span class="keywordtype">char</span> *fmt,...) {}</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span> <span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span> <span class="comment">//</span></div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span> <span class="comment">// Kernel Cache</span></div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span> <span class="comment">//</span></div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span> <span class="comment">// l is the number of total data items</span></div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span> <span class="comment">// size is the cache size limit in bytes</span></div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span> <span class="comment">//</span></div>
-<div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classCache.html">   69</a></span> <span class="keyword">class </span><a class="code" href="classCache.html">Cache</a></div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span> {</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>     <a class="code" href="classCache.html">Cache</a>(<span class="keywordtype">int</span> l,<span class="keywordtype">long</span> <span class="keywordtype">int</span> size);</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>     ~<a class="code" href="classCache.html">Cache</a>();</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span> </div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>     <span class="comment">// request data [0,len)</span></div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>     <span class="comment">// return some position p where [p,len) need to be filled</span></div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>     <span class="comment">// (p >= len if nothing needs to be filled)</span></div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>     <span class="keywordtype">int</span> get_data(<span class="keyword">const</span> <span class="keywordtype">int</span> index, Qfloat **data, <span class="keywordtype">int</span> len);</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>     <span class="keywordtype">void</span> swap_index(<span class="keywordtype">int</span> i, <span class="keywordtype">int</span> j);  </div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span> <span class="keyword">private</span>:</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>     <span class="keywordtype">int</span> l;</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     <span class="keywordtype">long</span> <span class="keywordtype">int</span> size;</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     <span class="keyword">struct </span>head_t</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     {</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>         head_t *prev, *next;    <span class="comment">// a circular list</span></div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>         Qfloat *data;</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>         <span class="keywordtype">int</span> len;        <span class="comment">// data[0,len) is cached in this entry</span></div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>     };</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span> </div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     head_t *head;</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     head_t lru_head;</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     <span class="keywordtype">void</span> lru_delete(head_t *h);</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>     <span class="keywordtype">void</span> lru_insert(head_t *h);</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span> };</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span> </div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span> Cache::Cache(<span class="keywordtype">int</span> l_,<span class="keywordtype">long</span> <span class="keywordtype">int</span> size_):l(l_),size(size_)</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span> {</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     head = (head_t *)calloc(l,<span class="keyword">sizeof</span>(head_t));  <span class="comment">// initialized to 0</span></div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     size /= <span class="keyword">sizeof</span>(Qfloat);</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     size -= l * <span class="keyword">sizeof</span>(head_t) / <span class="keyword">sizeof</span>(Qfloat);</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     size = max(size, 2 * (<span class="keywordtype">long</span> <span class="keywordtype">int</span>) l); <span class="comment">// cache must be large enough for two columns</span></div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     lru_head.next = lru_head.prev = &lru_head;</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span> }</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span> </div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span> Cache::~Cache()</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span> {</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     <span class="keywordflow">for</span>(head_t *h = lru_head.next; h != &lru_head; h=h->next)</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>         free(h->data);</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>     free(head);</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span> }</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span> </div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span> <span class="keywordtype">void</span> Cache::lru_delete(head_t *h)</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span> {</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     <span class="comment">// delete from current location</span></div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     h->prev->next = h->next;</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     h->next->prev = h->prev;</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span> }</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span> </div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span> <span class="keywordtype">void</span> Cache::lru_insert(head_t *h)</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span> {</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>     <span class="comment">// insert to last position</span></div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>     h->next = &lru_head;</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>     h->prev = lru_head.prev;</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     h->prev->next = h;</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>     h->next->prev = h;</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span> }</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span> </div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span> <span class="keywordtype">int</span> Cache::get_data(<span class="keyword">const</span> <span class="keywordtype">int</span> index, Qfloat **data, <span class="keywordtype">int</span> len)</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span> {</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>     head_t *h = &head[index];</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>     <span class="keywordflow">if</span>(h->len) lru_delete(h);</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>     <span class="keywordtype">int</span> more = len - h->len;</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span> </div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>     <span class="keywordflow">if</span>(more > 0)</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>     {</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>         <span class="comment">// free old space</span></div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>         <span class="keywordflow">while</span>(size < more)</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>         {</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>             head_t *old = lru_head.next;</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>             lru_delete(old);</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>             free(old->data);</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>             size += old->len;</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>             old->data = 0;</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>             old->len = 0;</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>         }</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span> </div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>         <span class="comment">// allocate new space</span></div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>         h->data = (Qfloat *)realloc(h->data,<span class="keyword">sizeof</span>(Qfloat)*len);</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>         size -= more;</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>         swap(h->len,len);</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>     }</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span> </div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>     lru_insert(h);</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>     *data = h->data;</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>     <span class="keywordflow">return</span> len;</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span> }</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span> </div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span> <span class="keywordtype">void</span> Cache::swap_index(<span class="keywordtype">int</span> i, <span class="keywordtype">int</span> j)</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span> {</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>     <span class="keywordflow">if</span>(i==j) <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span> </div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>     <span class="keywordflow">if</span>(head[i].len) lru_delete(&head[i]);</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>     <span class="keywordflow">if</span>(head[j].len) lru_delete(&head[j]);</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>     swap(head[i].data,head[j].data);</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>     swap(head[i].len,head[j].len);</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>     <span class="keywordflow">if</span>(head[i].len) lru_insert(&head[i]);</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>     <span class="keywordflow">if</span>(head[j].len) lru_insert(&head[j]);</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span> </div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>     <span class="keywordflow">if</span>(i>j) swap(i,j);</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>     <span class="keywordflow">for</span>(head_t *h = lru_head.next; h!=&lru_head; h=h->next)</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>     {</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>         <span class="keywordflow">if</span>(h->len > i)</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>         {</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>             <span class="keywordflow">if</span>(h->len > j)</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>                 swap(h->data[i],h->data[j]);</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>             {</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>                 <span class="comment">// give up</span></div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>                 lru_delete(h);</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>                 free(h->data);</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>                 size += h->len;</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>                 h->data = 0;</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>                 h->len = 0;</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>             }</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>         }</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>     }</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span> }</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span> </div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span> <span class="comment">//</span></div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span> <span class="comment">// Kernel evaluation</span></div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span> <span class="comment">//</span></div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span> <span class="comment">// the static method k_function is for doing single kernel evaluation</span></div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span> <span class="comment">// the constructor of Kernel prepares to calculate the l*l kernel matrix</span></div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span> <span class="comment">// the member function get_Q is for getting one column from the Q Matrix</span></div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span> <span class="comment">//</span></div>
-<div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="classQMatrix.html">  196</a></span> <span class="keyword">class </span><a class="code" href="classQMatrix.html">QMatrix</a> {</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>     <span class="keyword">virtual</span> Qfloat *get_Q(<span class="keywordtype">int</span> column, <span class="keywordtype">int</span> len) <span class="keyword">const</span> = 0;</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>     <span class="keyword">virtual</span> <span class="keywordtype">double</span> *get_QD() <span class="keyword">const</span> = 0;</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>     <span class="keyword">virtual</span> <span class="keywordtype">void</span> swap_index(<span class="keywordtype">int</span> i, <span class="keywordtype">int</span> j) <span class="keyword">const</span> = 0;</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>     <span class="keyword">virtual</span> ~<a class="code" href="classQMatrix.html">QMatrix</a>() {}</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span> };</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span> </div>
-<div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="classKernel.html">  204</a></span> <span class="keyword">class </span><a class="code" href="classKernel.html">Kernel</a>: <span class="keyword">public</span> <a class="code" href="classQMatrix.html">QMatrix</a> {</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>     <a class="code" href="classKernel.html">Kernel</a>(<span class="keywordtype">int</span> l, <a class="code" href="structsvm__node.html">svm_node</a> * <span class="keyword">const</span> * x, <span class="keyword">const</span> <a class="code" href="structsvm__parameter.html">svm_parameter</a>& param);</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>     <span class="keyword">virtual</span> ~<a class="code" href="classKernel.html">Kernel</a>();</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span> </div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>     <span class="keyword">static</span> <span class="keywordtype">double</span> k_function(<span class="keyword">const</span> <a class="code" href="structsvm__node.html">svm_node</a> *x, <span class="keyword">const</span> <a class="code" href="structsvm__node.html">svm_node</a> *y,</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>                  <span class="keyword">const</span> <a class="code" href="structsvm__parameter.html">svm_parameter</a>& param);</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>     <span class="keyword">virtual</span> Qfloat *get_Q(<span class="keywordtype">int</span> column, <span class="keywordtype">int</span> len) <span class="keyword">const</span> = 0;</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>     <span class="keyword">virtual</span> <span class="keywordtype">double</span> *get_QD() <span class="keyword">const</span> = 0;</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>     <span class="keyword">virtual</span> <span class="keywordtype">void</span> swap_index(<span class="keywordtype">int</span> i, <span class="keywordtype">int</span> j) <span class="keyword">const</span> <span class="comment">// no so const...</span></div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>     {</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>         swap(x[i],x[j]);</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>         <span class="keywordflow">if</span>(x_square) swap(x_square[i],x_square[j]);</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>     }</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span> <span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span> </div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>     double (<a class="code" href="classKernel.html">Kernel</a>::*kernel_function)(<span class="keywordtype">int</span> i, <span class="keywordtype">int</span> j) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span> </div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span> <span class="keyword">private</span>:</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>     <span class="keyword">const</span> <a class="code" href="structsvm__node.html">svm_node</a> **x;</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>     <span class="keywordtype">double</span> *x_square;</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span> </div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>     <span class="comment">// svm_parameter</span></div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>     <span class="keyword">const</span> <span class="keywordtype">int</span> kernel_type;</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>     <span class="keyword">const</span> <span class="keywordtype">int</span> degree;</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>     <span class="keyword">const</span> <span class="keywordtype">double</span> gamma;</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>     <span class="keyword">const</span> <span class="keywordtype">double</span> coef0;</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span> </div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>     <span class="keyword">static</span> <span class="keywordtype">double</span> dot(<span class="keyword">const</span> <a class="code" href="structsvm__node.html">svm_node</a> *px, <span class="keyword">const</span> <a class="code" href="structsvm__node.html">svm_node</a> *py);</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>     <span class="keywordtype">double</span> kernel_linear(<span class="keywordtype">int</span> i, <span class="keywordtype">int</span> j)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span> <span class="keyword">    </span>{</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>         <span class="keywordflow">return</span> dot(x[i],x[j]);</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>     }</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>     <span class="keywordtype">double</span> kernel_poly(<span class="keywordtype">int</span> i, <span class="keywordtype">int</span> j)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span> <span class="keyword">    </span>{</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>         <span class="keywordflow">return</span> powi(gamma*dot(x[i],x[j])+coef0,degree);</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>     }</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>     <span class="keywordtype">double</span> kernel_rbf(<span class="keywordtype">int</span> i, <span class="keywordtype">int</span> j)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span> <span class="keyword">    </span>{</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>         <span class="keywordflow">return</span> exp(-gamma*(x_square[i]+x_square[j]-2*dot(x[i],x[j])));</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>     }</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>     <span class="keywordtype">double</span> kernel_sigmoid(<span class="keywordtype">int</span> i, <span class="keywordtype">int</span> j)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span> <span class="keyword">    </span>{</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>         <span class="keywordflow">return</span> tanh(gamma*dot(x[i],x[j])+coef0);</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>     }</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>     <span class="keywordtype">double</span> kernel_precomputed(<span class="keywordtype">int</span> i, <span class="keywordtype">int</span> j)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span> <span class="keyword">    </span>{</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>         <span class="keywordflow">return</span> x[i][(int)(x[j][0].value)].value;</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>     }</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span> };</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span> </div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span> Kernel::Kernel(<span class="keywordtype">int</span> l, <a class="code" href="structsvm__node.html">svm_node</a> * <span class="keyword">const</span> * x_, <span class="keyword">const</span> <a class="code" href="structsvm__parameter.html">svm_parameter</a>& param)</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span> :kernel_type(param.kernel_type), degree(param.degree),</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>  gamma(param.gamma), coef0(param.coef0)</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span> {</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>     <span class="keywordflow">switch</span>(kernel_type)</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>     {</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>         <span class="keywordflow">case</span> LINEAR:</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>             kernel_function = &Kernel::kernel_linear;</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>         <span class="keywordflow">case</span> POLY:</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>             kernel_function = &Kernel::kernel_poly;</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>         <span class="keywordflow">case</span> RBF:</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>             kernel_function = &Kernel::kernel_rbf;</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>         <span class="keywordflow">case</span> SIGMOID:</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>             kernel_function = &Kernel::kernel_sigmoid;</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>         <span class="keywordflow">case</span> PRECOMPUTED:</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>             kernel_function = &Kernel::kernel_precomputed;</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>     }</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span> </div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>     clone(x,x_,l);</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span> </div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>     <span class="keywordflow">if</span>(kernel_type == RBF)</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>     {</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>         x_square = <span class="keyword">new</span> <span class="keywordtype">double</span>[l];</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<l;i++)</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>             x_square[i] = dot(x[i],x[i]);</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>     }</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>         x_square = 0;</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span> }</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span> </div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span> Kernel::~Kernel()</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span> {</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>     <span class="keyword">delete</span>[] x;</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>     <span class="keyword">delete</span>[] x_square;</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span> }</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span> </div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span> <span class="keywordtype">double</span> Kernel::dot(<span class="keyword">const</span> <a class="code" href="structsvm__node.html">svm_node</a> *px, <span class="keyword">const</span> <a class="code" href="structsvm__node.html">svm_node</a> *py)</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span> {</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>     <span class="keywordtype">double</span> sum = 0;</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>     <span class="keywordflow">while</span>(px->index != -1 && py->index != -1)</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>     {</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>         <span class="keywordflow">if</span>(px->index == py->index)</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>         {</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>             sum += px->value * py->value;</div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>             ++px;</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>             ++py;</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>         }</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>         {</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>             <span class="keywordflow">if</span>(px->index > py->index)</div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>                 ++py;</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>                 ++px;</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>         }           </div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>     }</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>     <span class="keywordflow">return</span> sum;</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span> }</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span> </div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span> <span class="keywordtype">double</span> Kernel::k_function(<span class="keyword">const</span> <a class="code" href="structsvm__node.html">svm_node</a> *x, <span class="keyword">const</span> <a class="code" href="structsvm__node.html">svm_node</a> *y,</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>               <span class="keyword">const</span> <a class="code" href="structsvm__parameter.html">svm_parameter</a>& param)</div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span> {</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>     <span class="keywordflow">switch</span>(param.kernel_type)</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>     {</div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>         <span class="keywordflow">case</span> LINEAR:</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>             <span class="keywordflow">return</span> dot(x,y);</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>         <span class="keywordflow">case</span> POLY:</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>             <span class="keywordflow">return</span> powi(param.gamma*dot(x,y)+param.coef0,param.degree);</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>         <span class="keywordflow">case</span> RBF:</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>         {</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>             <span class="keywordtype">double</span> sum = 0;</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>             <span class="keywordflow">while</span>(x->index != -1 && y->index !=-1)</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>             {</div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>                 <span class="keywordflow">if</span>(x->index == y->index)</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>                 {</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>                     <span class="keywordtype">double</span> d = x->value - y->value;</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>                     sum += d*d;</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>                     ++x;</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>                     ++y;</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>                 }</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>                 <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>                 {</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>                     <span class="keywordflow">if</span>(x->index > y->index)</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>                     {   </div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>                         sum += y->value * y->value;</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>                         ++y;</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>                     }</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>                     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>                     {</div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>                         sum += x->value * x->value;</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>                         ++x;</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>                     }</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>                 }</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>             }</div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span> </div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>             <span class="keywordflow">while</span>(x->index != -1)</div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>             {</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>                 sum += x->value * x->value;</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>                 ++x;</div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>             }</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span> </div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>             <span class="keywordflow">while</span>(y->index != -1)</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>             {</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>                 sum += y->value * y->value;</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>                 ++y;</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>             }</div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>             </div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>             <span class="keywordflow">return</span> exp(-param.gamma*sum);</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>         }</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>         <span class="keywordflow">case</span> SIGMOID:</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>             <span class="keywordflow">return</span> tanh(param.gamma*dot(x,y)+param.coef0);</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>         <span class="keywordflow">case</span> PRECOMPUTED:  <span class="comment">//x: test (validation), y: SV</span></div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>             <span class="keywordflow">return</span> x[(int)(y->value)].value;</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>         <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>             <span class="keywordflow">return</span> 0;  <span class="comment">// Unreachable </span></div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>     }</div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span> }</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span> </div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span> <span class="comment">// An SMO algorithm in Fan et al., JMLR 6(2005), p. 1889--1918</span></div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span> <span class="comment">// Solves:</span></div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span> <span class="comment">//</span></div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span> <span class="comment">//  min 0.5(\alpha^T Q \alpha) + p^T \alpha</span></div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span> <span class="comment">//</span></div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span> <span class="comment">//      y^T \alpha = \delta</span></div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span> <span class="comment">//      y_i = +1 or -1</span></div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span> <span class="comment">//      0 <= alpha_i <= Cp for y_i = 1</span></div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span> <span class="comment">//      0 <= alpha_i <= Cn for y_i = -1</span></div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span> <span class="comment">//</span></div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span> <span class="comment">// Given:</span></div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span> <span class="comment">//</span></div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span> <span class="comment">//  Q, p, y, Cp, Cn, and an initial feasible point \alpha</span></div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span> <span class="comment">//  l is the size of vectors and matrices</span></div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span> <span class="comment">//  eps is the stopping tolerance</span></div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span> <span class="comment">//</span></div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span> <span class="comment">// solution will be put in \alpha, objective value will be put in obj</span></div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span> <span class="comment">//</span></div>
-<div class="line"><a name="l00395"></a><span class="lineno"><a class="line" href="classSolver.html">  395</a></span> <span class="keyword">class </span><a class="code" href="classSolver.html">Solver</a> {</div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>     <a class="code" href="classSolver.html">Solver</a>() {};</div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>     <span class="keyword">virtual</span> ~<a class="code" href="classSolver.html">Solver</a>() {};</div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span> </div>
-<div class="line"><a name="l00400"></a><span class="lineno"><a class="line" href="structSolver_1_1SolutionInfo.html">  400</a></span>     <span class="keyword">struct </span><a class="code" href="structSolver_1_1SolutionInfo.html">SolutionInfo</a> {</div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>         <span class="keywordtype">double</span> obj;</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>         <span class="keywordtype">double</span> rho;</div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span>         <span class="keywordtype">double</span> upper_bound_p;</div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>         <span class="keywordtype">double</span> upper_bound_n;</div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>         <span class="keywordtype">double</span> r;   <span class="comment">// for Solver_NU</span></div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>     };</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span> </div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>     <span class="keywordtype">void</span> Solve(<span class="keywordtype">int</span> l, <span class="keyword">const</span> <a class="code" href="classQMatrix.html">QMatrix</a>& Q, <span class="keyword">const</span> <span class="keywordtype">double</span> *p_, <span class="keyword">const</span> schar *y_,</div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span>            <span class="keywordtype">double</span> *alpha_, <span class="keywordtype">double</span> Cp, <span class="keywordtype">double</span> Cn, <span class="keywordtype">double</span> eps,</div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>            <a class="code" href="structSolver_1_1SolutionInfo.html">SolutionInfo</a>* si, <span class="keywordtype">int</span> shrinking, <span class="keywordtype">bool</span> verbose=<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span> <span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>     <span class="keywordtype">int</span> active_size;</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>     schar *y;</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span>     <span class="keywordtype">double</span> *G;      <span class="comment">// gradient of objective function</span></div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>     <span class="keyword">enum</span> { LOWER_BOUND, UPPER_BOUND, FREE };</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>     <span class="keywordtype">char</span> *alpha_status; <span class="comment">// LOWER_BOUND, UPPER_BOUND, FREE</span></div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>     <span class="keywordtype">double</span> *alpha;</div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>     <span class="keyword">const</span> <a class="code" href="classQMatrix.html">QMatrix</a> *Q;</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span>     <span class="keyword">const</span> <span class="keywordtype">double</span> *QD;</div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>     <span class="keywordtype">double</span> eps;</div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>     <span class="keywordtype">double</span> Cp,Cn;</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span>     <span class="keywordtype">double</span> *p;</div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>     <span class="keywordtype">int</span> *active_set;</div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span>     <span class="keywordtype">double</span> *G_bar;      <span class="comment">// gradient, if we treat free variables as 0</span></div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span>     <span class="keywordtype">int</span> l;</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>     <span class="keywordtype">bool</span> unshrink;  <span class="comment">// XXX</span></div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span> </div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span>     <span class="keywordtype">double</span> get_C(<span class="keywordtype">int</span> i)</div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span>     {</div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span>         <span class="keywordflow">return</span> (y[i] > 0)? Cp : Cn;</div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span>     }</div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span>     <span class="keywordtype">void</span> update_alpha_status(<span class="keywordtype">int</span> i)</div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span>     {</div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span>         <span class="keywordflow">if</span>(alpha[i] >= get_C(i))</div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>             alpha_status[i] = UPPER_BOUND;</div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(alpha[i] <= 0)</div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span>             alpha_status[i] = LOWER_BOUND;</div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span>         <span class="keywordflow">else</span> alpha_status[i] = FREE;</div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span>     }</div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span>     <span class="keywordtype">bool</span> is_upper_bound(<span class="keywordtype">int</span> i) { <span class="keywordflow">return</span> alpha_status[i] == UPPER_BOUND; }</div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span>     <span class="keywordtype">bool</span> is_lower_bound(<span class="keywordtype">int</span> i) { <span class="keywordflow">return</span> alpha_status[i] == LOWER_BOUND; }</div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span>     <span class="keywordtype">bool</span> is_free(<span class="keywordtype">int</span> i) { <span class="keywordflow">return</span> alpha_status[i] == FREE; }</div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span>     <span class="keywordtype">void</span> swap_index(<span class="keywordtype">int</span> i, <span class="keywordtype">int</span> j);</div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span>     <span class="keywordtype">void</span> reconstruct_gradient();</div>
-<div class="line"><a name="l00445"></a><span class="lineno">  445</span>     <span class="keyword">virtual</span> <span class="keywordtype">int</span> select_working_set(<span class="keywordtype">int</span> &i, <span class="keywordtype">int</span> &j);</div>
-<div class="line"><a name="l00446"></a><span class="lineno">  446</span>     <span class="keyword">virtual</span> <span class="keywordtype">double</span> calculate_rho();</div>
-<div class="line"><a name="l00447"></a><span class="lineno">  447</span>     <span class="keyword">virtual</span> <span class="keywordtype">void</span> do_shrinking();</div>
-<div class="line"><a name="l00448"></a><span class="lineno">  448</span> <span class="keyword">private</span>:</div>
-<div class="line"><a name="l00449"></a><span class="lineno">  449</span>     <span class="keywordtype">bool</span> be_shrunk(<span class="keywordtype">int</span> i, <span class="keywordtype">double</span> Gmax1, <span class="keywordtype">double</span> Gmax2);  </div>
-<div class="line"><a name="l00450"></a><span class="lineno">  450</span> };</div>
-<div class="line"><a name="l00451"></a><span class="lineno">  451</span> </div>
-<div class="line"><a name="l00452"></a><span class="lineno">  452</span> <span class="keywordtype">void</span> Solver::swap_index(<span class="keywordtype">int</span> i, <span class="keywordtype">int</span> j)</div>
-<div class="line"><a name="l00453"></a><span class="lineno">  453</span> {</div>
-<div class="line"><a name="l00454"></a><span class="lineno">  454</span>     Q->swap_index(i,j);</div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span>     swap(y[i],y[j]);</div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</span>     swap(G[i],G[j]);</div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span>     swap(alpha_status[i],alpha_status[j]);</div>
-<div class="line"><a name="l00458"></a><span class="lineno">  458</span>     swap(alpha[i],alpha[j]);</div>
-<div class="line"><a name="l00459"></a><span class="lineno">  459</span>     swap(p[i],p[j]);</div>
-<div class="line"><a name="l00460"></a><span class="lineno">  460</span>     swap(active_set[i],active_set[j]);</div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span>     swap(G_bar[i],G_bar[j]);</div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span> }</div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span> </div>
-<div class="line"><a name="l00464"></a><span class="lineno">  464</span> <span class="keywordtype">void</span> Solver::reconstruct_gradient()</div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span> {</div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>     <span class="comment">// reconstruct inactive elements of G from G_bar and free variables</span></div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span> </div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span>     <span class="keywordflow">if</span>(active_size == l) <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span> </div>
-<div class="line"><a name="l00470"></a><span class="lineno">  470</span>     <span class="keywordtype">int</span> i,j;</div>
-<div class="line"><a name="l00471"></a><span class="lineno">  471</span>     <span class="keywordtype">int</span> nr_free = 0;</div>
-<div class="line"><a name="l00472"></a><span class="lineno">  472</span> </div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span>     <span class="keywordflow">for</span>(j=active_size;j<l;j++)</div>
-<div class="line"><a name="l00474"></a><span class="lineno">  474</span>         G[j] = G_bar[j] + p[j];</div>
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span> </div>
-<div class="line"><a name="l00476"></a><span class="lineno">  476</span>     <span class="keywordflow">for</span>(j=0;j<active_size;j++)</div>
-<div class="line"><a name="l00477"></a><span class="lineno">  477</span>         <span class="keywordflow">if</span>(is_free(j))</div>
-<div class="line"><a name="l00478"></a><span class="lineno">  478</span>             nr_free++;</div>
-<div class="line"><a name="l00479"></a><span class="lineno">  479</span> </div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span>     <span class="keywordflow">if</span>(2*nr_free < active_size)</div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span>         info(<span class="stringliteral">"\nWARNING: using -h 0 may be faster\n"</span>);</div>
-<div class="line"><a name="l00482"></a><span class="lineno">  482</span> </div>
-<div class="line"><a name="l00483"></a><span class="lineno">  483</span>     <span class="keywordflow">if</span> (nr_free*l > 2*active_size*(l-active_size))</div>
-<div class="line"><a name="l00484"></a><span class="lineno">  484</span>     {</div>
-<div class="line"><a name="l00485"></a><span class="lineno">  485</span>         <span class="keywordflow">for</span>(i=active_size;i<l;i++)</div>
-<div class="line"><a name="l00486"></a><span class="lineno">  486</span>         {</div>
-<div class="line"><a name="l00487"></a><span class="lineno">  487</span>             <span class="keyword">const</span> Qfloat *Q_i = Q->get_Q(i,active_size);</div>
-<div class="line"><a name="l00488"></a><span class="lineno">  488</span>             <span class="keywordflow">for</span>(j=0;j<active_size;j++)</div>
-<div class="line"><a name="l00489"></a><span class="lineno">  489</span>                 <span class="keywordflow">if</span>(is_free(j))</div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span>                     G[i] += alpha[j] * Q_i[j];</div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span>         }</div>
-<div class="line"><a name="l00492"></a><span class="lineno">  492</span>     }</div>
-<div class="line"><a name="l00493"></a><span class="lineno">  493</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00494"></a><span class="lineno">  494</span>     {</div>
-<div class="line"><a name="l00495"></a><span class="lineno">  495</span>         <span class="keywordflow">for</span>(i=0;i<active_size;i++)</div>
-<div class="line"><a name="l00496"></a><span class="lineno">  496</span>             <span class="keywordflow">if</span>(is_free(i))</div>
-<div class="line"><a name="l00497"></a><span class="lineno">  497</span>             {</div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span>                 <span class="keyword">const</span> Qfloat *Q_i = Q->get_Q(i,l);</div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span>                 <span class="keywordtype">double</span> alpha_i = alpha[i];</div>
-<div class="line"><a name="l00500"></a><span class="lineno">  500</span>                 <span class="keywordflow">for</span>(j=active_size;j<l;j++)</div>
-<div class="line"><a name="l00501"></a><span class="lineno">  501</span>                     G[j] += alpha_i * Q_i[j];</div>
-<div class="line"><a name="l00502"></a><span class="lineno">  502</span>             }</div>
-<div class="line"><a name="l00503"></a><span class="lineno">  503</span>     }</div>
-<div class="line"><a name="l00504"></a><span class="lineno">  504</span> }</div>
-<div class="line"><a name="l00505"></a><span class="lineno">  505</span> </div>
-<div class="line"><a name="l00506"></a><span class="lineno">  506</span> <span class="keywordtype">void</span> Solver::Solve(<span class="keywordtype">int</span> l, <span class="keyword">const</span> <a class="code" href="classQMatrix.html">QMatrix</a>& Q, <span class="keyword">const</span> <span class="keywordtype">double</span> *p_, <span class="keyword">const</span> schar *y_,</div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span>            <span class="keywordtype">double</span> *alpha_, <span class="keywordtype">double</span> Cp, <span class="keywordtype">double</span> Cn, <span class="keywordtype">double</span> eps,</div>
-<div class="line"><a name="l00508"></a><span class="lineno">  508</span>            SolutionInfo* si, <span class="keywordtype">int</span> shrinking,</div>
-<div class="line"><a name="l00509"></a><span class="lineno">  509</span>                    <span class="keywordtype">bool</span> verbose)<span class="comment">//pk</span></div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span> {</div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span>     this->l = l;</div>
-<div class="line"><a name="l00512"></a><span class="lineno">  512</span>     this->Q = &Q;</div>
-<div class="line"><a name="l00513"></a><span class="lineno">  513</span>     QD=Q.get_QD();</div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span>     clone(p, p_,l);</div>
-<div class="line"><a name="l00515"></a><span class="lineno">  515</span>     clone(y, y_,l);</div>
-<div class="line"><a name="l00516"></a><span class="lineno">  516</span>     clone(alpha,alpha_,l);</div>
-<div class="line"><a name="l00517"></a><span class="lineno">  517</span>     this->Cp = Cp;</div>
-<div class="line"><a name="l00518"></a><span class="lineno">  518</span>     this->Cn = Cn;</div>
-<div class="line"><a name="l00519"></a><span class="lineno">  519</span>     this->eps = eps;</div>
-<div class="line"><a name="l00520"></a><span class="lineno">  520</span>     unshrink = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00521"></a><span class="lineno">  521</span> </div>
-<div class="line"><a name="l00522"></a><span class="lineno">  522</span>     <span class="comment">// initialize alpha_status</span></div>
-<div class="line"><a name="l00523"></a><span class="lineno">  523</span>     {</div>
-<div class="line"><a name="l00524"></a><span class="lineno">  524</span>         alpha_status = <span class="keyword">new</span> <span class="keywordtype">char</span>[l];</div>
-<div class="line"><a name="l00525"></a><span class="lineno">  525</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<l;i++)</div>
-<div class="line"><a name="l00526"></a><span class="lineno">  526</span>             update_alpha_status(i);</div>
-<div class="line"><a name="l00527"></a><span class="lineno">  527</span>     }</div>
-<div class="line"><a name="l00528"></a><span class="lineno">  528</span> </div>
-<div class="line"><a name="l00529"></a><span class="lineno">  529</span>     <span class="comment">// initialize active set (for shrinking)</span></div>
-<div class="line"><a name="l00530"></a><span class="lineno">  530</span>     {</div>
-<div class="line"><a name="l00531"></a><span class="lineno">  531</span>         active_set = <span class="keyword">new</span> <span class="keywordtype">int</span>[l];</div>
-<div class="line"><a name="l00532"></a><span class="lineno">  532</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<l;i++)</div>
-<div class="line"><a name="l00533"></a><span class="lineno">  533</span>             active_set[i] = i;</div>
-<div class="line"><a name="l00534"></a><span class="lineno">  534</span>         active_size = l;</div>
-<div class="line"><a name="l00535"></a><span class="lineno">  535</span>     }</div>
-<div class="line"><a name="l00536"></a><span class="lineno">  536</span> </div>
-<div class="line"><a name="l00537"></a><span class="lineno">  537</span>     <span class="comment">// initialize gradient</span></div>
-<div class="line"><a name="l00538"></a><span class="lineno">  538</span>     {</div>
-<div class="line"><a name="l00539"></a><span class="lineno">  539</span>         G = <span class="keyword">new</span> <span class="keywordtype">double</span>[l];</div>
-<div class="line"><a name="l00540"></a><span class="lineno">  540</span>         G_bar = <span class="keyword">new</span> <span class="keywordtype">double</span>[l];</div>
-<div class="line"><a name="l00541"></a><span class="lineno">  541</span>         <span class="keywordtype">int</span> i;</div>
-<div class="line"><a name="l00542"></a><span class="lineno">  542</span>         <span class="keywordflow">for</span>(i=0;i<l;i++)</div>
-<div class="line"><a name="l00543"></a><span class="lineno">  543</span>         {</div>
-<div class="line"><a name="l00544"></a><span class="lineno">  544</span>             G[i] = p[i];</div>
-<div class="line"><a name="l00545"></a><span class="lineno">  545</span>             G_bar[i] = 0;</div>
-<div class="line"><a name="l00546"></a><span class="lineno">  546</span>         }</div>
-<div class="line"><a name="l00547"></a><span class="lineno">  547</span>         <span class="keywordflow">for</span>(i=0;i<l;i++)</div>
-<div class="line"><a name="l00548"></a><span class="lineno">  548</span>             <span class="keywordflow">if</span>(!is_lower_bound(i))</div>
-<div class="line"><a name="l00549"></a><span class="lineno">  549</span>             {</div>
-<div class="line"><a name="l00550"></a><span class="lineno">  550</span>                 <span class="keyword">const</span> Qfloat *Q_i = Q.get_Q(i,l);</div>
-<div class="line"><a name="l00551"></a><span class="lineno">  551</span>                 <span class="keywordtype">double</span> alpha_i = alpha[i];</div>
-<div class="line"><a name="l00552"></a><span class="lineno">  552</span>                 <span class="keywordtype">int</span> j;</div>
-<div class="line"><a name="l00553"></a><span class="lineno">  553</span>                 <span class="keywordflow">for</span>(j=0;j<l;j++)</div>
-<div class="line"><a name="l00554"></a><span class="lineno">  554</span>                     G[j] += alpha_i*Q_i[j];</div>
-<div class="line"><a name="l00555"></a><span class="lineno">  555</span>                 <span class="keywordflow">if</span>(is_upper_bound(i))</div>
-<div class="line"><a name="l00556"></a><span class="lineno">  556</span>                     <span class="keywordflow">for</span>(j=0;j<l;j++)</div>
-<div class="line"><a name="l00557"></a><span class="lineno">  557</span>                         G_bar[j] += get_C(i) * Q_i[j];</div>
-<div class="line"><a name="l00558"></a><span class="lineno">  558</span>             }</div>
-<div class="line"><a name="l00559"></a><span class="lineno">  559</span>     }</div>
-<div class="line"><a name="l00560"></a><span class="lineno">  560</span> </div>
-<div class="line"><a name="l00561"></a><span class="lineno">  561</span>     <span class="comment">// optimization step</span></div>
-<div class="line"><a name="l00562"></a><span class="lineno">  562</span> </div>
-<div class="line"><a name="l00563"></a><span class="lineno">  563</span>     <span class="keywordtype">int</span> iter = 0;</div>
-<div class="line"><a name="l00564"></a><span class="lineno">  564</span>     <span class="keywordtype">int</span> max_iter = max(10000000, l>INT_MAX/100 ? INT_MAX : 100*l);</div>
-<div class="line"><a name="l00565"></a><span class="lineno">  565</span>     <span class="keywordtype">int</span> counter = min(l,1000)+1;</div>
-<div class="line"><a name="l00566"></a><span class="lineno">  566</span>     </div>
-<div class="line"><a name="l00567"></a><span class="lineno">  567</span>     <span class="keywordflow">while</span>(iter < max_iter)</div>
-<div class="line"><a name="l00568"></a><span class="lineno">  568</span>     {</div>
-<div class="line"><a name="l00569"></a><span class="lineno">  569</span>         <span class="comment">// show progress and do shrinking</span></div>
-<div class="line"><a name="l00570"></a><span class="lineno">  570</span> </div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span>         <span class="keywordflow">if</span>(--counter == 0)</div>
-<div class="line"><a name="l00572"></a><span class="lineno">  572</span>         {</div>
-<div class="line"><a name="l00573"></a><span class="lineno">  573</span>             counter = min(l,1000);</div>
-<div class="line"><a name="l00574"></a><span class="lineno">  574</span>             <span class="keywordflow">if</span>(shrinking) do_shrinking();</div>
-<div class="line"><a name="l00575"></a><span class="lineno">  575</span>                         <span class="keywordflow">if</span>(verbose)<span class="comment">//pk</span></div>
-<div class="line"><a name="l00576"></a><span class="lineno">  576</span>                           info(<span class="stringliteral">"."</span>);</div>
-<div class="line"><a name="l00577"></a><span class="lineno">  577</span>         }</div>
-<div class="line"><a name="l00578"></a><span class="lineno">  578</span> </div>
-<div class="line"><a name="l00579"></a><span class="lineno">  579</span>         <span class="keywordtype">int</span> i,j;</div>
-<div class="line"><a name="l00580"></a><span class="lineno">  580</span>         <span class="keywordflow">if</span>(select_working_set(i,j)!=0)</div>
-<div class="line"><a name="l00581"></a><span class="lineno">  581</span>         {</div>
-<div class="line"><a name="l00582"></a><span class="lineno">  582</span>             <span class="comment">// reconstruct the whole gradient</span></div>
-<div class="line"><a name="l00583"></a><span class="lineno">  583</span>             reconstruct_gradient();</div>
-<div class="line"><a name="l00584"></a><span class="lineno">  584</span>             <span class="comment">// reset active set size and check</span></div>
-<div class="line"><a name="l00585"></a><span class="lineno">  585</span>             active_size = l;</div>
-<div class="line"><a name="l00586"></a><span class="lineno">  586</span>                         <span class="keywordflow">if</span>(verbose)<span class="comment">//pk</span></div>
-<div class="line"><a name="l00587"></a><span class="lineno">  587</span>                           info(<span class="stringliteral">"*"</span>);</div>
-<div class="line"><a name="l00588"></a><span class="lineno">  588</span>             <span class="keywordflow">if</span>(select_working_set(i,j)!=0)</div>
-<div class="line"><a name="l00589"></a><span class="lineno">  589</span>                 <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00590"></a><span class="lineno">  590</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00591"></a><span class="lineno">  591</span>                 counter = 1;    <span class="comment">// do shrinking next iteration</span></div>
-<div class="line"><a name="l00592"></a><span class="lineno">  592</span>         }</div>
-<div class="line"><a name="l00593"></a><span class="lineno">  593</span>         </div>
-<div class="line"><a name="l00594"></a><span class="lineno">  594</span>         ++iter;</div>
-<div class="line"><a name="l00595"></a><span class="lineno">  595</span> </div>
-<div class="line"><a name="l00596"></a><span class="lineno">  596</span>         <span class="comment">// update alpha[i] and alpha[j], handle bounds carefully</span></div>
-<div class="line"><a name="l00597"></a><span class="lineno">  597</span>         </div>
-<div class="line"><a name="l00598"></a><span class="lineno">  598</span>         <span class="keyword">const</span> Qfloat *Q_i = Q.get_Q(i,active_size);</div>
-<div class="line"><a name="l00599"></a><span class="lineno">  599</span>         <span class="keyword">const</span> Qfloat *Q_j = Q.get_Q(j,active_size);</div>
-<div class="line"><a name="l00600"></a><span class="lineno">  600</span> </div>
-<div class="line"><a name="l00601"></a><span class="lineno">  601</span>         <span class="keywordtype">double</span> C_i = get_C(i);</div>
-<div class="line"><a name="l00602"></a><span class="lineno">  602</span>         <span class="keywordtype">double</span> C_j = get_C(j);</div>
-<div class="line"><a name="l00603"></a><span class="lineno">  603</span> </div>
-<div class="line"><a name="l00604"></a><span class="lineno">  604</span>         <span class="keywordtype">double</span> old_alpha_i = alpha[i];</div>
-<div class="line"><a name="l00605"></a><span class="lineno">  605</span>         <span class="keywordtype">double</span> old_alpha_j = alpha[j];</div>
-<div class="line"><a name="l00606"></a><span class="lineno">  606</span> </div>
-<div class="line"><a name="l00607"></a><span class="lineno">  607</span>         <span class="keywordflow">if</span>(y[i]!=y[j])</div>
-<div class="line"><a name="l00608"></a><span class="lineno">  608</span>         {</div>
-<div class="line"><a name="l00609"></a><span class="lineno">  609</span>             <span class="keywordtype">double</span> quad_coef = QD[i]+QD[j]+2*Q_i[j];</div>
-<div class="line"><a name="l00610"></a><span class="lineno">  610</span>             <span class="keywordflow">if</span> (quad_coef <= 0)</div>
-<div class="line"><a name="l00611"></a><span class="lineno">  611</span>                 quad_coef = TAU;</div>
-<div class="line"><a name="l00612"></a><span class="lineno">  612</span>             <span class="keywordtype">double</span> delta = (-G[i]-G[j])/quad_coef;</div>
-<div class="line"><a name="l00613"></a><span class="lineno">  613</span>             <span class="keywordtype">double</span> diff = alpha[i] - alpha[j];</div>
-<div class="line"><a name="l00614"></a><span class="lineno">  614</span>             alpha[i] += delta;</div>
-<div class="line"><a name="l00615"></a><span class="lineno">  615</span>             alpha[j] += delta;</div>
-<div class="line"><a name="l00616"></a><span class="lineno">  616</span>             </div>
-<div class="line"><a name="l00617"></a><span class="lineno">  617</span>             <span class="keywordflow">if</span>(diff > 0)</div>
-<div class="line"><a name="l00618"></a><span class="lineno">  618</span>             {</div>
-<div class="line"><a name="l00619"></a><span class="lineno">  619</span>                 <span class="keywordflow">if</span>(alpha[j] < 0)</div>
-<div class="line"><a name="l00620"></a><span class="lineno">  620</span>                 {</div>
-<div class="line"><a name="l00621"></a><span class="lineno">  621</span>                     alpha[j] = 0;</div>
-<div class="line"><a name="l00622"></a><span class="lineno">  622</span>                     alpha[i] = diff;</div>
-<div class="line"><a name="l00623"></a><span class="lineno">  623</span>                 }</div>
-<div class="line"><a name="l00624"></a><span class="lineno">  624</span>             }</div>
-<div class="line"><a name="l00625"></a><span class="lineno">  625</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00626"></a><span class="lineno">  626</span>             {</div>
-<div class="line"><a name="l00627"></a><span class="lineno">  627</span>                 <span class="keywordflow">if</span>(alpha[i] < 0)</div>
-<div class="line"><a name="l00628"></a><span class="lineno">  628</span>                 {</div>
-<div class="line"><a name="l00629"></a><span class="lineno">  629</span>                     alpha[i] = 0;</div>
-<div class="line"><a name="l00630"></a><span class="lineno">  630</span>                     alpha[j] = -diff;</div>
-<div class="line"><a name="l00631"></a><span class="lineno">  631</span>                 }</div>
-<div class="line"><a name="l00632"></a><span class="lineno">  632</span>             }</div>
-<div class="line"><a name="l00633"></a><span class="lineno">  633</span>             <span class="keywordflow">if</span>(diff > C_i - C_j)</div>
-<div class="line"><a name="l00634"></a><span class="lineno">  634</span>             {</div>
-<div class="line"><a name="l00635"></a><span class="lineno">  635</span>                 <span class="keywordflow">if</span>(alpha[i] > C_i)</div>
-<div class="line"><a name="l00636"></a><span class="lineno">  636</span>                 {</div>
-<div class="line"><a name="l00637"></a><span class="lineno">  637</span>                     alpha[i] = C_i;</div>
-<div class="line"><a name="l00638"></a><span class="lineno">  638</span>                     alpha[j] = C_i - diff;</div>
-<div class="line"><a name="l00639"></a><span class="lineno">  639</span>                 }</div>
-<div class="line"><a name="l00640"></a><span class="lineno">  640</span>             }</div>
-<div class="line"><a name="l00641"></a><span class="lineno">  641</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00642"></a><span class="lineno">  642</span>             {</div>
-<div class="line"><a name="l00643"></a><span class="lineno">  643</span>                 <span class="keywordflow">if</span>(alpha[j] > C_j)</div>
-<div class="line"><a name="l00644"></a><span class="lineno">  644</span>                 {</div>
-<div class="line"><a name="l00645"></a><span class="lineno">  645</span>                     alpha[j] = C_j;</div>
-<div class="line"><a name="l00646"></a><span class="lineno">  646</span>                     alpha[i] = C_j + diff;</div>
-<div class="line"><a name="l00647"></a><span class="lineno">  647</span>                 }</div>
-<div class="line"><a name="l00648"></a><span class="lineno">  648</span>             }</div>
-<div class="line"><a name="l00649"></a><span class="lineno">  649</span>         }</div>
-<div class="line"><a name="l00650"></a><span class="lineno">  650</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00651"></a><span class="lineno">  651</span>         {</div>
-<div class="line"><a name="l00652"></a><span class="lineno">  652</span>             <span class="keywordtype">double</span> quad_coef = QD[i]+QD[j]-2*Q_i[j];</div>
-<div class="line"><a name="l00653"></a><span class="lineno">  653</span>             <span class="keywordflow">if</span> (quad_coef <= 0)</div>
-<div class="line"><a name="l00654"></a><span class="lineno">  654</span>                 quad_coef = TAU;</div>
-<div class="line"><a name="l00655"></a><span class="lineno">  655</span>             <span class="keywordtype">double</span> delta = (G[i]-G[j])/quad_coef;</div>
-<div class="line"><a name="l00656"></a><span class="lineno">  656</span>             <span class="keywordtype">double</span> sum = alpha[i] + alpha[j];</div>
-<div class="line"><a name="l00657"></a><span class="lineno">  657</span>             alpha[i] -= delta;</div>
-<div class="line"><a name="l00658"></a><span class="lineno">  658</span>             alpha[j] += delta;</div>
-<div class="line"><a name="l00659"></a><span class="lineno">  659</span> </div>
-<div class="line"><a name="l00660"></a><span class="lineno">  660</span>             <span class="keywordflow">if</span>(sum > C_i)</div>
-<div class="line"><a name="l00661"></a><span class="lineno">  661</span>             {</div>
-<div class="line"><a name="l00662"></a><span class="lineno">  662</span>                 <span class="keywordflow">if</span>(alpha[i] > C_i)</div>
-<div class="line"><a name="l00663"></a><span class="lineno">  663</span>                 {</div>
-<div class="line"><a name="l00664"></a><span class="lineno">  664</span>                     alpha[i] = C_i;</div>
-<div class="line"><a name="l00665"></a><span class="lineno">  665</span>                     alpha[j] = sum - C_i;</div>
-<div class="line"><a name="l00666"></a><span class="lineno">  666</span>                 }</div>
-<div class="line"><a name="l00667"></a><span class="lineno">  667</span>             }</div>
-<div class="line"><a name="l00668"></a><span class="lineno">  668</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00669"></a><span class="lineno">  669</span>             {</div>
-<div class="line"><a name="l00670"></a><span class="lineno">  670</span>                 <span class="keywordflow">if</span>(alpha[j] < 0)</div>
-<div class="line"><a name="l00671"></a><span class="lineno">  671</span>                 {</div>
-<div class="line"><a name="l00672"></a><span class="lineno">  672</span>                     alpha[j] = 0;</div>
-<div class="line"><a name="l00673"></a><span class="lineno">  673</span>                     alpha[i] = sum;</div>
-<div class="line"><a name="l00674"></a><span class="lineno">  674</span>                 }</div>
-<div class="line"><a name="l00675"></a><span class="lineno">  675</span>             }</div>
-<div class="line"><a name="l00676"></a><span class="lineno">  676</span>             <span class="keywordflow">if</span>(sum > C_j)</div>
-<div class="line"><a name="l00677"></a><span class="lineno">  677</span>             {</div>
-<div class="line"><a name="l00678"></a><span class="lineno">  678</span>                 <span class="keywordflow">if</span>(alpha[j] > C_j)</div>
-<div class="line"><a name="l00679"></a><span class="lineno">  679</span>                 {</div>
-<div class="line"><a name="l00680"></a><span class="lineno">  680</span>                     alpha[j] = C_j;</div>
-<div class="line"><a name="l00681"></a><span class="lineno">  681</span>                     alpha[i] = sum - C_j;</div>
-<div class="line"><a name="l00682"></a><span class="lineno">  682</span>                 }</div>
-<div class="line"><a name="l00683"></a><span class="lineno">  683</span>             }</div>
-<div class="line"><a name="l00684"></a><span class="lineno">  684</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00685"></a><span class="lineno">  685</span>             {</div>
-<div class="line"><a name="l00686"></a><span class="lineno">  686</span>                 <span class="keywordflow">if</span>(alpha[i] < 0)</div>
-<div class="line"><a name="l00687"></a><span class="lineno">  687</span>                 {</div>
-<div class="line"><a name="l00688"></a><span class="lineno">  688</span>                     alpha[i] = 0;</div>
-<div class="line"><a name="l00689"></a><span class="lineno">  689</span>                     alpha[j] = sum;</div>
-<div class="line"><a name="l00690"></a><span class="lineno">  690</span>                 }</div>
-<div class="line"><a name="l00691"></a><span class="lineno">  691</span>             }</div>
-<div class="line"><a name="l00692"></a><span class="lineno">  692</span>         }</div>
-<div class="line"><a name="l00693"></a><span class="lineno">  693</span> </div>
-<div class="line"><a name="l00694"></a><span class="lineno">  694</span>         <span class="comment">// update G</span></div>
-<div class="line"><a name="l00695"></a><span class="lineno">  695</span> </div>
-<div class="line"><a name="l00696"></a><span class="lineno">  696</span>         <span class="keywordtype">double</span> delta_alpha_i = alpha[i] - old_alpha_i;</div>
-<div class="line"><a name="l00697"></a><span class="lineno">  697</span>         <span class="keywordtype">double</span> delta_alpha_j = alpha[j] - old_alpha_j;</div>
-<div class="line"><a name="l00698"></a><span class="lineno">  698</span>         </div>
-<div class="line"><a name="l00699"></a><span class="lineno">  699</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> k=0;k<active_size;k++)</div>
-<div class="line"><a name="l00700"></a><span class="lineno">  700</span>         {</div>
-<div class="line"><a name="l00701"></a><span class="lineno">  701</span>             G[k] += Q_i[k]*delta_alpha_i + Q_j[k]*delta_alpha_j;</div>
-<div class="line"><a name="l00702"></a><span class="lineno">  702</span>         }</div>
-<div class="line"><a name="l00703"></a><span class="lineno">  703</span> </div>
-<div class="line"><a name="l00704"></a><span class="lineno">  704</span>         <span class="comment">// update alpha_status and G_bar</span></div>
-<div class="line"><a name="l00705"></a><span class="lineno">  705</span> </div>
-<div class="line"><a name="l00706"></a><span class="lineno">  706</span>         {</div>
-<div class="line"><a name="l00707"></a><span class="lineno">  707</span>             <span class="keywordtype">bool</span> ui = is_upper_bound(i);</div>
-<div class="line"><a name="l00708"></a><span class="lineno">  708</span>             <span class="keywordtype">bool</span> uj = is_upper_bound(j);</div>
-<div class="line"><a name="l00709"></a><span class="lineno">  709</span>             update_alpha_status(i);</div>
-<div class="line"><a name="l00710"></a><span class="lineno">  710</span>             update_alpha_status(j);</div>
-<div class="line"><a name="l00711"></a><span class="lineno">  711</span>             <span class="keywordtype">int</span> k;</div>
-<div class="line"><a name="l00712"></a><span class="lineno">  712</span>             <span class="keywordflow">if</span>(ui != is_upper_bound(i))</div>
-<div class="line"><a name="l00713"></a><span class="lineno">  713</span>             {</div>
-<div class="line"><a name="l00714"></a><span class="lineno">  714</span>                 Q_i = Q.get_Q(i,l);</div>
-<div class="line"><a name="l00715"></a><span class="lineno">  715</span>                 <span class="keywordflow">if</span>(ui)</div>
-<div class="line"><a name="l00716"></a><span class="lineno">  716</span>                     <span class="keywordflow">for</span>(k=0;k<l;k++)</div>
-<div class="line"><a name="l00717"></a><span class="lineno">  717</span>                         G_bar[k] -= C_i * Q_i[k];</div>
-<div class="line"><a name="l00718"></a><span class="lineno">  718</span>                 <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00719"></a><span class="lineno">  719</span>                     <span class="keywordflow">for</span>(k=0;k<l;k++)</div>
-<div class="line"><a name="l00720"></a><span class="lineno">  720</span>                         G_bar[k] += C_i * Q_i[k];</div>
-<div class="line"><a name="l00721"></a><span class="lineno">  721</span>             }</div>
-<div class="line"><a name="l00722"></a><span class="lineno">  722</span> </div>
-<div class="line"><a name="l00723"></a><span class="lineno">  723</span>             <span class="keywordflow">if</span>(uj != is_upper_bound(j))</div>
-<div class="line"><a name="l00724"></a><span class="lineno">  724</span>             {</div>
-<div class="line"><a name="l00725"></a><span class="lineno">  725</span>                 Q_j = Q.get_Q(j,l);</div>
-<div class="line"><a name="l00726"></a><span class="lineno">  726</span>                 <span class="keywordflow">if</span>(uj)</div>
-<div class="line"><a name="l00727"></a><span class="lineno">  727</span>                     <span class="keywordflow">for</span>(k=0;k<l;k++)</div>
-<div class="line"><a name="l00728"></a><span class="lineno">  728</span>                         G_bar[k] -= C_j * Q_j[k];</div>
-<div class="line"><a name="l00729"></a><span class="lineno">  729</span>                 <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00730"></a><span class="lineno">  730</span>                     <span class="keywordflow">for</span>(k=0;k<l;k++)</div>
-<div class="line"><a name="l00731"></a><span class="lineno">  731</span>                         G_bar[k] += C_j * Q_j[k];</div>
-<div class="line"><a name="l00732"></a><span class="lineno">  732</span>             }</div>
-<div class="line"><a name="l00733"></a><span class="lineno">  733</span>         }</div>
-<div class="line"><a name="l00734"></a><span class="lineno">  734</span>     }</div>
-<div class="line"><a name="l00735"></a><span class="lineno">  735</span> </div>
-<div class="line"><a name="l00736"></a><span class="lineno">  736</span>     <span class="keywordflow">if</span>(iter >= max_iter)</div>
-<div class="line"><a name="l00737"></a><span class="lineno">  737</span>     {</div>
-<div class="line"><a name="l00738"></a><span class="lineno">  738</span>         <span class="keywordflow">if</span>(active_size < l)</div>
-<div class="line"><a name="l00739"></a><span class="lineno">  739</span>         {</div>
-<div class="line"><a name="l00740"></a><span class="lineno">  740</span>             <span class="comment">// reconstruct the whole gradient to calculate objective value</span></div>
-<div class="line"><a name="l00741"></a><span class="lineno">  741</span>             reconstruct_gradient();</div>
-<div class="line"><a name="l00742"></a><span class="lineno">  742</span>             active_size = l;</div>
-<div class="line"><a name="l00743"></a><span class="lineno">  743</span>                         <span class="keywordflow">if</span>(verbose)<span class="comment">//pk</span></div>
-<div class="line"><a name="l00744"></a><span class="lineno">  744</span>                           info(<span class="stringliteral">"*"</span>);</div>
-<div class="line"><a name="l00745"></a><span class="lineno">  745</span>         }</div>
-<div class="line"><a name="l00746"></a><span class="lineno">  746</span>         info(<span class="stringliteral">"\nWARNING: reaching max number of iterations"</span>);</div>
-<div class="line"><a name="l00747"></a><span class="lineno">  747</span>     }</div>
-<div class="line"><a name="l00748"></a><span class="lineno">  748</span> </div>
-<div class="line"><a name="l00749"></a><span class="lineno">  749</span>     <span class="comment">// calculate rho</span></div>
-<div class="line"><a name="l00750"></a><span class="lineno">  750</span> </div>
-<div class="line"><a name="l00751"></a><span class="lineno">  751</span>     si->rho = calculate_rho();</div>
-<div class="line"><a name="l00752"></a><span class="lineno">  752</span> </div>
-<div class="line"><a name="l00753"></a><span class="lineno">  753</span>     <span class="comment">// calculate objective value</span></div>
-<div class="line"><a name="l00754"></a><span class="lineno">  754</span>     {</div>
-<div class="line"><a name="l00755"></a><span class="lineno">  755</span>         <span class="keywordtype">double</span> v = 0;</div>
-<div class="line"><a name="l00756"></a><span class="lineno">  756</span>         <span class="keywordtype">int</span> i;</div>
-<div class="line"><a name="l00757"></a><span class="lineno">  757</span>         <span class="keywordflow">for</span>(i=0;i<l;i++)</div>
-<div class="line"><a name="l00758"></a><span class="lineno">  758</span>             v += alpha[i] * (G[i] + p[i]);</div>
-<div class="line"><a name="l00759"></a><span class="lineno">  759</span> </div>
-<div class="line"><a name="l00760"></a><span class="lineno">  760</span>         si->obj = v/2;</div>
-<div class="line"><a name="l00761"></a><span class="lineno">  761</span>     }</div>
-<div class="line"><a name="l00762"></a><span class="lineno">  762</span> </div>
-<div class="line"><a name="l00763"></a><span class="lineno">  763</span>     <span class="comment">// put back the solution</span></div>
-<div class="line"><a name="l00764"></a><span class="lineno">  764</span>     {</div>
-<div class="line"><a name="l00765"></a><span class="lineno">  765</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<l;i++)</div>
-<div class="line"><a name="l00766"></a><span class="lineno">  766</span>             alpha_[active_set[i]] = alpha[i];</div>
-<div class="line"><a name="l00767"></a><span class="lineno">  767</span>     }</div>
-<div class="line"><a name="l00768"></a><span class="lineno">  768</span> </div>
-<div class="line"><a name="l00769"></a><span class="lineno">  769</span>     <span class="comment">// juggle everything back</span></div>
-<div class="line"><a name="l00770"></a><span class="lineno">  770</span>     <span class="comment">/*{</span></div>
-<div class="line"><a name="l00771"></a><span class="lineno">  771</span> <span class="comment">        for(int i=0;i<l;i++)</span></div>
-<div class="line"><a name="l00772"></a><span class="lineno">  772</span> <span class="comment">            while(active_set[i] != i)</span></div>
-<div class="line"><a name="l00773"></a><span class="lineno">  773</span> <span class="comment">                swap_index(i,active_set[i]);</span></div>
-<div class="line"><a name="l00774"></a><span class="lineno">  774</span> <span class="comment">                // or Q.swap_index(i,active_set[i]);</span></div>
-<div class="line"><a name="l00775"></a><span class="lineno">  775</span> <span class="comment">    }*/</span></div>
-<div class="line"><a name="l00776"></a><span class="lineno">  776</span> </div>
-<div class="line"><a name="l00777"></a><span class="lineno">  777</span>     si->upper_bound_p = Cp;</div>
-<div class="line"><a name="l00778"></a><span class="lineno">  778</span>     si->upper_bound_n = Cn;</div>
-<div class="line"><a name="l00779"></a><span class="lineno">  779</span>         </div>
-<div class="line"><a name="l00780"></a><span class="lineno">  780</span>         <span class="keywordflow">if</span>(verbose)<span class="comment">//pk</span></div>
-<div class="line"><a name="l00781"></a><span class="lineno">  781</span>           info(<span class="stringliteral">"\noptimization finished, #iter = %d\n"</span>,iter);</div>
-<div class="line"><a name="l00782"></a><span class="lineno">  782</span> </div>
-<div class="line"><a name="l00783"></a><span class="lineno">  783</span>     <span class="keyword">delete</span>[] p;</div>
-<div class="line"><a name="l00784"></a><span class="lineno">  784</span>     <span class="keyword">delete</span>[] y;</div>
-<div class="line"><a name="l00785"></a><span class="lineno">  785</span>     <span class="keyword">delete</span>[] alpha;</div>
-<div class="line"><a name="l00786"></a><span class="lineno">  786</span>     <span class="keyword">delete</span>[] alpha_status;</div>
-<div class="line"><a name="l00787"></a><span class="lineno">  787</span>     <span class="keyword">delete</span>[] active_set;</div>
-<div class="line"><a name="l00788"></a><span class="lineno">  788</span>     <span class="keyword">delete</span>[] G;</div>
-<div class="line"><a name="l00789"></a><span class="lineno">  789</span>     <span class="keyword">delete</span>[] G_bar;</div>
-<div class="line"><a name="l00790"></a><span class="lineno">  790</span> }</div>
-<div class="line"><a name="l00791"></a><span class="lineno">  791</span> </div>
-<div class="line"><a name="l00792"></a><span class="lineno">  792</span> <span class="comment">// return 1 if already optimal, return 0 otherwise</span></div>
-<div class="line"><a name="l00793"></a><span class="lineno">  793</span> <span class="keywordtype">int</span> Solver::select_working_set(<span class="keywordtype">int</span> &out_i, <span class="keywordtype">int</span> &out_j)</div>
-<div class="line"><a name="l00794"></a><span class="lineno">  794</span> {</div>
-<div class="line"><a name="l00795"></a><span class="lineno">  795</span>     <span class="comment">// return i,j such that</span></div>
-<div class="line"><a name="l00796"></a><span class="lineno">  796</span>     <span class="comment">// i: maximizes -y_i * grad(f)_i, i in I_up(\alpha)</span></div>
-<div class="line"><a name="l00797"></a><span class="lineno">  797</span>     <span class="comment">// j: minimizes the decrease of obj value</span></div>
-<div class="line"><a name="l00798"></a><span class="lineno">  798</span>     <span class="comment">//    (if quadratic coefficeint <= 0, replace it with tau)</span></div>
-<div class="line"><a name="l00799"></a><span class="lineno">  799</span>     <span class="comment">//    -y_j*grad(f)_j < -y_i*grad(f)_i, j in I_low(\alpha)</span></div>
-<div class="line"><a name="l00800"></a><span class="lineno">  800</span>     </div>
-<div class="line"><a name="l00801"></a><span class="lineno">  801</span>     <span class="keywordtype">double</span> Gmax = -INF;</div>
-<div class="line"><a name="l00802"></a><span class="lineno">  802</span>     <span class="keywordtype">double</span> Gmax2 = -INF;</div>
-<div class="line"><a name="l00803"></a><span class="lineno">  803</span>     <span class="keywordtype">int</span> Gmax_idx = -1;</div>
-<div class="line"><a name="l00804"></a><span class="lineno">  804</span>     <span class="keywordtype">int</span> Gmin_idx = -1;</div>
-<div class="line"><a name="l00805"></a><span class="lineno">  805</span>     <span class="keywordtype">double</span> obj_diff_min = INF;</div>
-<div class="line"><a name="l00806"></a><span class="lineno">  806</span> </div>
-<div class="line"><a name="l00807"></a><span class="lineno">  807</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> t=0;t<active_size;t++)</div>
-<div class="line"><a name="l00808"></a><span class="lineno">  808</span>         <span class="keywordflow">if</span>(y[t]==+1)    </div>
-<div class="line"><a name="l00809"></a><span class="lineno">  809</span>         {</div>
-<div class="line"><a name="l00810"></a><span class="lineno">  810</span>             <span class="keywordflow">if</span>(!is_upper_bound(t))</div>
-<div class="line"><a name="l00811"></a><span class="lineno">  811</span>                 <span class="keywordflow">if</span>(-G[t] >= Gmax)</div>
-<div class="line"><a name="l00812"></a><span class="lineno">  812</span>                 {</div>
-<div class="line"><a name="l00813"></a><span class="lineno">  813</span>                     Gmax = -G[t];</div>
-<div class="line"><a name="l00814"></a><span class="lineno">  814</span>                     Gmax_idx = t;</div>
-<div class="line"><a name="l00815"></a><span class="lineno">  815</span>                 }</div>
-<div class="line"><a name="l00816"></a><span class="lineno">  816</span>         }</div>
-<div class="line"><a name="l00817"></a><span class="lineno">  817</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00818"></a><span class="lineno">  818</span>         {</div>
-<div class="line"><a name="l00819"></a><span class="lineno">  819</span>             <span class="keywordflow">if</span>(!is_lower_bound(t))</div>
-<div class="line"><a name="l00820"></a><span class="lineno">  820</span>                 <span class="keywordflow">if</span>(G[t] >= Gmax)</div>
-<div class="line"><a name="l00821"></a><span class="lineno">  821</span>                 {</div>
-<div class="line"><a name="l00822"></a><span class="lineno">  822</span>                     Gmax = G[t];</div>
-<div class="line"><a name="l00823"></a><span class="lineno">  823</span>                     Gmax_idx = t;</div>
-<div class="line"><a name="l00824"></a><span class="lineno">  824</span>                 }</div>
-<div class="line"><a name="l00825"></a><span class="lineno">  825</span>         }</div>
-<div class="line"><a name="l00826"></a><span class="lineno">  826</span> </div>
-<div class="line"><a name="l00827"></a><span class="lineno">  827</span>     <span class="keywordtype">int</span> i = Gmax_idx;</div>
-<div class="line"><a name="l00828"></a><span class="lineno">  828</span>     <span class="keyword">const</span> Qfloat *Q_i = NULL;</div>
-<div class="line"><a name="l00829"></a><span class="lineno">  829</span>     <span class="keywordflow">if</span>(i != -1) <span class="comment">// NULL Q_i not accessed: Gmax=-INF if i=-1</span></div>
-<div class="line"><a name="l00830"></a><span class="lineno">  830</span>         Q_i = Q->get_Q(i,active_size);</div>
-<div class="line"><a name="l00831"></a><span class="lineno">  831</span> </div>
-<div class="line"><a name="l00832"></a><span class="lineno">  832</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=0;j<active_size;j++)</div>
-<div class="line"><a name="l00833"></a><span class="lineno">  833</span>     {</div>
-<div class="line"><a name="l00834"></a><span class="lineno">  834</span>         <span class="keywordflow">if</span>(y[j]==+1)</div>
-<div class="line"><a name="l00835"></a><span class="lineno">  835</span>         {</div>
-<div class="line"><a name="l00836"></a><span class="lineno">  836</span>             <span class="keywordflow">if</span> (!is_lower_bound(j))</div>
-<div class="line"><a name="l00837"></a><span class="lineno">  837</span>             {</div>
-<div class="line"><a name="l00838"></a><span class="lineno">  838</span>                 <span class="keywordtype">double</span> grad_diff=Gmax+G[j];</div>
-<div class="line"><a name="l00839"></a><span class="lineno">  839</span>                 <span class="keywordflow">if</span> (G[j] >= Gmax2)</div>
-<div class="line"><a name="l00840"></a><span class="lineno">  840</span>                     Gmax2 = G[j];</div>
-<div class="line"><a name="l00841"></a><span class="lineno">  841</span>                 <span class="keywordflow">if</span> (grad_diff > 0)</div>
-<div class="line"><a name="l00842"></a><span class="lineno">  842</span>                 {</div>
-<div class="line"><a name="l00843"></a><span class="lineno">  843</span>                     <span class="keywordtype">double</span> obj_diff; </div>
-<div class="line"><a name="l00844"></a><span class="lineno">  844</span>                     <span class="keywordtype">double</span> quad_coef = QD[i]+QD[j]-2.0*y[i]*Q_i[j];</div>
-<div class="line"><a name="l00845"></a><span class="lineno">  845</span>                     <span class="keywordflow">if</span> (quad_coef > 0)</div>
-<div class="line"><a name="l00846"></a><span class="lineno">  846</span>                         obj_diff = -(grad_diff*grad_diff)/quad_coef;</div>
-<div class="line"><a name="l00847"></a><span class="lineno">  847</span>                     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00848"></a><span class="lineno">  848</span>                         obj_diff = -(grad_diff*grad_diff)/TAU;</div>
-<div class="line"><a name="l00849"></a><span class="lineno">  849</span> </div>
-<div class="line"><a name="l00850"></a><span class="lineno">  850</span>                     <span class="keywordflow">if</span> (obj_diff <= obj_diff_min)</div>
-<div class="line"><a name="l00851"></a><span class="lineno">  851</span>                     {</div>
-<div class="line"><a name="l00852"></a><span class="lineno">  852</span>                         Gmin_idx=j;</div>
-<div class="line"><a name="l00853"></a><span class="lineno">  853</span>                         obj_diff_min = obj_diff;</div>
-<div class="line"><a name="l00854"></a><span class="lineno">  854</span>                     }</div>
-<div class="line"><a name="l00855"></a><span class="lineno">  855</span>                 }</div>
-<div class="line"><a name="l00856"></a><span class="lineno">  856</span>             }</div>
-<div class="line"><a name="l00857"></a><span class="lineno">  857</span>         }</div>
-<div class="line"><a name="l00858"></a><span class="lineno">  858</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00859"></a><span class="lineno">  859</span>         {</div>
-<div class="line"><a name="l00860"></a><span class="lineno">  860</span>             <span class="keywordflow">if</span> (!is_upper_bound(j))</div>
-<div class="line"><a name="l00861"></a><span class="lineno">  861</span>             {</div>
-<div class="line"><a name="l00862"></a><span class="lineno">  862</span>                 <span class="keywordtype">double</span> grad_diff= Gmax-G[j];</div>
-<div class="line"><a name="l00863"></a><span class="lineno">  863</span>                 <span class="keywordflow">if</span> (-G[j] >= Gmax2)</div>
-<div class="line"><a name="l00864"></a><span class="lineno">  864</span>                     Gmax2 = -G[j];</div>
-<div class="line"><a name="l00865"></a><span class="lineno">  865</span>                 <span class="keywordflow">if</span> (grad_diff > 0)</div>
-<div class="line"><a name="l00866"></a><span class="lineno">  866</span>                 {</div>
-<div class="line"><a name="l00867"></a><span class="lineno">  867</span>                     <span class="keywordtype">double</span> obj_diff; </div>
-<div class="line"><a name="l00868"></a><span class="lineno">  868</span>                     <span class="keywordtype">double</span> quad_coef = QD[i]+QD[j]+2.0*y[i]*Q_i[j];</div>
-<div class="line"><a name="l00869"></a><span class="lineno">  869</span>                     <span class="keywordflow">if</span> (quad_coef > 0)</div>
-<div class="line"><a name="l00870"></a><span class="lineno">  870</span>                         obj_diff = -(grad_diff*grad_diff)/quad_coef;</div>
-<div class="line"><a name="l00871"></a><span class="lineno">  871</span>                     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00872"></a><span class="lineno">  872</span>                         obj_diff = -(grad_diff*grad_diff)/TAU;</div>
-<div class="line"><a name="l00873"></a><span class="lineno">  873</span> </div>
-<div class="line"><a name="l00874"></a><span class="lineno">  874</span>                     <span class="keywordflow">if</span> (obj_diff <= obj_diff_min)</div>
-<div class="line"><a name="l00875"></a><span class="lineno">  875</span>                     {</div>
-<div class="line"><a name="l00876"></a><span class="lineno">  876</span>                         Gmin_idx=j;</div>
-<div class="line"><a name="l00877"></a><span class="lineno">  877</span>                         obj_diff_min = obj_diff;</div>
-<div class="line"><a name="l00878"></a><span class="lineno">  878</span>                     }</div>
-<div class="line"><a name="l00879"></a><span class="lineno">  879</span>                 }</div>
-<div class="line"><a name="l00880"></a><span class="lineno">  880</span>             }</div>
-<div class="line"><a name="l00881"></a><span class="lineno">  881</span>         }</div>
-<div class="line"><a name="l00882"></a><span class="lineno">  882</span>     }</div>
-<div class="line"><a name="l00883"></a><span class="lineno">  883</span> </div>
-<div class="line"><a name="l00884"></a><span class="lineno">  884</span>     <span class="keywordflow">if</span>(Gmax+Gmax2 < eps)</div>
-<div class="line"><a name="l00885"></a><span class="lineno">  885</span>         <span class="keywordflow">return</span> 1;</div>
-<div class="line"><a name="l00886"></a><span class="lineno">  886</span> </div>
-<div class="line"><a name="l00887"></a><span class="lineno">  887</span>     out_i = Gmax_idx;</div>
-<div class="line"><a name="l00888"></a><span class="lineno">  888</span>     out_j = Gmin_idx;</div>
-<div class="line"><a name="l00889"></a><span class="lineno">  889</span>     <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l00890"></a><span class="lineno">  890</span> }</div>
-<div class="line"><a name="l00891"></a><span class="lineno">  891</span> </div>
-<div class="line"><a name="l00892"></a><span class="lineno">  892</span> <span class="keywordtype">bool</span> Solver::be_shrunk(<span class="keywordtype">int</span> i, <span class="keywordtype">double</span> Gmax1, <span class="keywordtype">double</span> Gmax2)</div>
-<div class="line"><a name="l00893"></a><span class="lineno">  893</span> {</div>
-<div class="line"><a name="l00894"></a><span class="lineno">  894</span>     <span class="keywordflow">if</span>(is_upper_bound(i))</div>
-<div class="line"><a name="l00895"></a><span class="lineno">  895</span>     {</div>
-<div class="line"><a name="l00896"></a><span class="lineno">  896</span>         <span class="keywordflow">if</span>(y[i]==+1)</div>
-<div class="line"><a name="l00897"></a><span class="lineno">  897</span>             <span class="keywordflow">return</span>(-G[i] > Gmax1);</div>
-<div class="line"><a name="l00898"></a><span class="lineno">  898</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00899"></a><span class="lineno">  899</span>             <span class="keywordflow">return</span>(-G[i] > Gmax2);</div>
-<div class="line"><a name="l00900"></a><span class="lineno">  900</span>     }</div>
-<div class="line"><a name="l00901"></a><span class="lineno">  901</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(is_lower_bound(i))</div>
-<div class="line"><a name="l00902"></a><span class="lineno">  902</span>     {</div>
-<div class="line"><a name="l00903"></a><span class="lineno">  903</span>         <span class="keywordflow">if</span>(y[i]==+1)</div>
-<div class="line"><a name="l00904"></a><span class="lineno">  904</span>             <span class="keywordflow">return</span>(G[i] > Gmax2);</div>
-<div class="line"><a name="l00905"></a><span class="lineno">  905</span>         <span class="keywordflow">else</span>    </div>
-<div class="line"><a name="l00906"></a><span class="lineno">  906</span>             <span class="keywordflow">return</span>(G[i] > Gmax1);</div>
-<div class="line"><a name="l00907"></a><span class="lineno">  907</span>     }</div>
-<div class="line"><a name="l00908"></a><span class="lineno">  908</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00909"></a><span class="lineno">  909</span>         <span class="keywordflow">return</span>(<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00910"></a><span class="lineno">  910</span> }</div>
-<div class="line"><a name="l00911"></a><span class="lineno">  911</span> </div>
-<div class="line"><a name="l00912"></a><span class="lineno">  912</span> <span class="keywordtype">void</span> Solver::do_shrinking()</div>
-<div class="line"><a name="l00913"></a><span class="lineno">  913</span> {</div>
-<div class="line"><a name="l00914"></a><span class="lineno">  914</span>     <span class="keywordtype">int</span> i;</div>
-<div class="line"><a name="l00915"></a><span class="lineno">  915</span>     <span class="keywordtype">double</span> Gmax1 = -INF;        <span class="comment">// max { -y_i * grad(f)_i | i in I_up(\alpha) }</span></div>
-<div class="line"><a name="l00916"></a><span class="lineno">  916</span>     <span class="keywordtype">double</span> Gmax2 = -INF;        <span class="comment">// max { y_i * grad(f)_i | i in I_low(\alpha) }</span></div>
-<div class="line"><a name="l00917"></a><span class="lineno">  917</span> </div>
-<div class="line"><a name="l00918"></a><span class="lineno">  918</span>     <span class="comment">// find maximal violating pair first</span></div>
-<div class="line"><a name="l00919"></a><span class="lineno">  919</span>     <span class="keywordflow">for</span>(i=0;i<active_size;i++)</div>
-<div class="line"><a name="l00920"></a><span class="lineno">  920</span>     {</div>
-<div class="line"><a name="l00921"></a><span class="lineno">  921</span>         <span class="keywordflow">if</span>(y[i]==+1)    </div>
-<div class="line"><a name="l00922"></a><span class="lineno">  922</span>         {</div>
-<div class="line"><a name="l00923"></a><span class="lineno">  923</span>             <span class="keywordflow">if</span>(!is_upper_bound(i))  </div>
-<div class="line"><a name="l00924"></a><span class="lineno">  924</span>             {</div>
-<div class="line"><a name="l00925"></a><span class="lineno">  925</span>                 <span class="keywordflow">if</span>(-G[i] >= Gmax1)</div>
-<div class="line"><a name="l00926"></a><span class="lineno">  926</span>                     Gmax1 = -G[i];</div>
-<div class="line"><a name="l00927"></a><span class="lineno">  927</span>             }</div>
-<div class="line"><a name="l00928"></a><span class="lineno">  928</span>             <span class="keywordflow">if</span>(!is_lower_bound(i))  </div>
-<div class="line"><a name="l00929"></a><span class="lineno">  929</span>             {</div>
-<div class="line"><a name="l00930"></a><span class="lineno">  930</span>                 <span class="keywordflow">if</span>(G[i] >= Gmax2)</div>
-<div class="line"><a name="l00931"></a><span class="lineno">  931</span>                     Gmax2 = G[i];</div>
-<div class="line"><a name="l00932"></a><span class="lineno">  932</span>             }</div>
-<div class="line"><a name="l00933"></a><span class="lineno">  933</span>         }</div>
-<div class="line"><a name="l00934"></a><span class="lineno">  934</span>         <span class="keywordflow">else</span>    </div>
-<div class="line"><a name="l00935"></a><span class="lineno">  935</span>         {</div>
-<div class="line"><a name="l00936"></a><span class="lineno">  936</span>             <span class="keywordflow">if</span>(!is_upper_bound(i))  </div>
-<div class="line"><a name="l00937"></a><span class="lineno">  937</span>             {</div>
-<div class="line"><a name="l00938"></a><span class="lineno">  938</span>                 <span class="keywordflow">if</span>(-G[i] >= Gmax2)</div>
-<div class="line"><a name="l00939"></a><span class="lineno">  939</span>                     Gmax2 = -G[i];</div>
-<div class="line"><a name="l00940"></a><span class="lineno">  940</span>             }</div>
-<div class="line"><a name="l00941"></a><span class="lineno">  941</span>             <span class="keywordflow">if</span>(!is_lower_bound(i))  </div>
-<div class="line"><a name="l00942"></a><span class="lineno">  942</span>             {</div>
-<div class="line"><a name="l00943"></a><span class="lineno">  943</span>                 <span class="keywordflow">if</span>(G[i] >= Gmax1)</div>
-<div class="line"><a name="l00944"></a><span class="lineno">  944</span>                     Gmax1 = G[i];</div>
-<div class="line"><a name="l00945"></a><span class="lineno">  945</span>             }</div>
-<div class="line"><a name="l00946"></a><span class="lineno">  946</span>         }</div>
-<div class="line"><a name="l00947"></a><span class="lineno">  947</span>     }</div>
-<div class="line"><a name="l00948"></a><span class="lineno">  948</span> </div>
-<div class="line"><a name="l00949"></a><span class="lineno">  949</span>     <span class="keywordflow">if</span>(unshrink == <span class="keyword">false</span> && Gmax1 + Gmax2 <= eps*10) </div>
-<div class="line"><a name="l00950"></a><span class="lineno">  950</span>     {</div>
-<div class="line"><a name="l00951"></a><span class="lineno">  951</span>         unshrink = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00952"></a><span class="lineno">  952</span>         reconstruct_gradient();</div>
-<div class="line"><a name="l00953"></a><span class="lineno">  953</span>         active_size = l;</div>
-<div class="line"><a name="l00954"></a><span class="lineno">  954</span>         info(<span class="stringliteral">"*"</span>);</div>
-<div class="line"><a name="l00955"></a><span class="lineno">  955</span>     }</div>
-<div class="line"><a name="l00956"></a><span class="lineno">  956</span> </div>
-<div class="line"><a name="l00957"></a><span class="lineno">  957</span>     <span class="keywordflow">for</span>(i=0;i<active_size;i++)</div>
-<div class="line"><a name="l00958"></a><span class="lineno">  958</span>         <span class="keywordflow">if</span> (be_shrunk(i, Gmax1, Gmax2))</div>
-<div class="line"><a name="l00959"></a><span class="lineno">  959</span>         {</div>
-<div class="line"><a name="l00960"></a><span class="lineno">  960</span>             active_size--;</div>
-<div class="line"><a name="l00961"></a><span class="lineno">  961</span>             <span class="keywordflow">while</span> (active_size > i)</div>
-<div class="line"><a name="l00962"></a><span class="lineno">  962</span>             {</div>
-<div class="line"><a name="l00963"></a><span class="lineno">  963</span>                 <span class="keywordflow">if</span> (!be_shrunk(active_size, Gmax1, Gmax2))</div>
-<div class="line"><a name="l00964"></a><span class="lineno">  964</span>                 {</div>
-<div class="line"><a name="l00965"></a><span class="lineno">  965</span>                     swap_index(i,active_size);</div>
-<div class="line"><a name="l00966"></a><span class="lineno">  966</span>                     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00967"></a><span class="lineno">  967</span>                 }</div>
-<div class="line"><a name="l00968"></a><span class="lineno">  968</span>                 active_size--;</div>
-<div class="line"><a name="l00969"></a><span class="lineno">  969</span>             }</div>
-<div class="line"><a name="l00970"></a><span class="lineno">  970</span>         }</div>
-<div class="line"><a name="l00971"></a><span class="lineno">  971</span> }</div>
-<div class="line"><a name="l00972"></a><span class="lineno">  972</span> </div>
-<div class="line"><a name="l00973"></a><span class="lineno">  973</span> <span class="keywordtype">double</span> Solver::calculate_rho()</div>
-<div class="line"><a name="l00974"></a><span class="lineno">  974</span> {</div>
-<div class="line"><a name="l00975"></a><span class="lineno">  975</span>     <span class="keywordtype">double</span> r;</div>
-<div class="line"><a name="l00976"></a><span class="lineno">  976</span>     <span class="keywordtype">int</span> nr_free = 0;</div>
-<div class="line"><a name="l00977"></a><span class="lineno">  977</span>     <span class="keywordtype">double</span> ub = INF, lb = -INF, sum_free = 0;</div>
-<div class="line"><a name="l00978"></a><span class="lineno">  978</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<active_size;i++)</div>
-<div class="line"><a name="l00979"></a><span class="lineno">  979</span>     {</div>
-<div class="line"><a name="l00980"></a><span class="lineno">  980</span>         <span class="keywordtype">double</span> yG = y[i]*G[i];</div>
-<div class="line"><a name="l00981"></a><span class="lineno">  981</span> </div>
-<div class="line"><a name="l00982"></a><span class="lineno">  982</span>         <span class="keywordflow">if</span>(is_upper_bound(i))</div>
-<div class="line"><a name="l00983"></a><span class="lineno">  983</span>         {</div>
-<div class="line"><a name="l00984"></a><span class="lineno">  984</span>             <span class="keywordflow">if</span>(y[i]==-1)</div>
-<div class="line"><a name="l00985"></a><span class="lineno">  985</span>                 ub = min(ub,yG);</div>
-<div class="line"><a name="l00986"></a><span class="lineno">  986</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00987"></a><span class="lineno">  987</span>                 lb = max(lb,yG);</div>
-<div class="line"><a name="l00988"></a><span class="lineno">  988</span>         }</div>
-<div class="line"><a name="l00989"></a><span class="lineno">  989</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(is_lower_bound(i))</div>
-<div class="line"><a name="l00990"></a><span class="lineno">  990</span>         {</div>
-<div class="line"><a name="l00991"></a><span class="lineno">  991</span>             <span class="keywordflow">if</span>(y[i]==+1)</div>
-<div class="line"><a name="l00992"></a><span class="lineno">  992</span>                 ub = min(ub,yG);</div>
-<div class="line"><a name="l00993"></a><span class="lineno">  993</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00994"></a><span class="lineno">  994</span>                 lb = max(lb,yG);</div>
-<div class="line"><a name="l00995"></a><span class="lineno">  995</span>         }</div>
-<div class="line"><a name="l00996"></a><span class="lineno">  996</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00997"></a><span class="lineno">  997</span>         {</div>
-<div class="line"><a name="l00998"></a><span class="lineno">  998</span>             ++nr_free;</div>
-<div class="line"><a name="l00999"></a><span class="lineno">  999</span>             sum_free += yG;</div>
-<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>         }</div>
-<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>     }</div>
-<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span> </div>
-<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>     <span class="keywordflow">if</span>(nr_free>0)</div>
-<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>         r = sum_free/nr_free;</div>
-<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>         r = (ub+lb)/2;</div>
-<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span> </div>
-<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>     <span class="keywordflow">return</span> r;</div>
-<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span> }</div>
-<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span> </div>
-<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span> <span class="comment">//</span></div>
-<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span> <span class="comment">// Solver for nu-svm classification and regression</span></div>
-<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span> <span class="comment">//</span></div>
-<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span> <span class="comment">// additional constraint: e^T \alpha = constant</span></div>
-<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span> <span class="comment">//</span></div>
-<div class="line"><a name="l01016"></a><span class="lineno"><a class="line" href="classSolver__NU.html"> 1016</a></span> <span class="keyword">class </span><a class="code" href="classSolver__NU.html">Solver_NU</a> : <span class="keyword">public</span> <a class="code" href="classSolver.html">Solver</a></div>
-<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span> {</div>
-<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>     <a class="code" href="classSolver__NU.html">Solver_NU</a>() {}</div>
-<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>     <span class="keywordtype">void</span> Solve(<span class="keywordtype">int</span> l, <span class="keyword">const</span> <a class="code" href="classQMatrix.html">QMatrix</a>& Q, <span class="keyword">const</span> <span class="keywordtype">double</span> *p, <span class="keyword">const</span> schar *y,</div>
-<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>            <span class="keywordtype">double</span> *alpha, <span class="keywordtype">double</span> Cp, <span class="keywordtype">double</span> Cn, <span class="keywordtype">double</span> eps,</div>
-<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>            <a class="code" href="structSolver_1_1SolutionInfo.html">SolutionInfo</a>* si, <span class="keywordtype">int</span> shrinking, <span class="keywordtype">bool</span> verbose=<span class="keyword">false</span>)</div>
-<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>     {</div>
-<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>         this->si = si;</div>
-<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>         Solver::Solve(l,Q,p,y,alpha,Cp,Cn,eps,si,shrinking,verbose);</div>
-<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>     }</div>
-<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span> <span class="keyword">private</span>:</div>
-<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>     <a class="code" href="structSolver_1_1SolutionInfo.html">SolutionInfo</a> *si;</div>
-<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>     <span class="keywordtype">int</span> select_working_set(<span class="keywordtype">int</span> &i, <span class="keywordtype">int</span> &j);</div>
-<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>     <span class="keywordtype">double</span> calculate_rho();</div>
-<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>     <span class="keywordtype">bool</span> be_shrunk(<span class="keywordtype">int</span> i, <span class="keywordtype">double</span> Gmax1, <span class="keywordtype">double</span> Gmax2, <span class="keywordtype">double</span> Gmax3, <span class="keywordtype">double</span> Gmax4);</div>
-<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>     <span class="keywordtype">void</span> do_shrinking();</div>
-<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span> };</div>
-<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span> </div>
-<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span> <span class="comment">// return 1 if already optimal, return 0 otherwise</span></div>
-<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span> <span class="keywordtype">int</span> Solver_NU::select_working_set(<span class="keywordtype">int</span> &out_i, <span class="keywordtype">int</span> &out_j)</div>
-<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span> {</div>
-<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>     <span class="comment">// return i,j such that y_i = y_j and</span></div>
-<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>     <span class="comment">// i: maximizes -y_i * grad(f)_i, i in I_up(\alpha)</span></div>
-<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>     <span class="comment">// j: minimizes the decrease of obj value</span></div>
-<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>     <span class="comment">//    (if quadratic coefficeint <= 0, replace it with tau)</span></div>
-<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>     <span class="comment">//    -y_j*grad(f)_j < -y_i*grad(f)_i, j in I_low(\alpha)</span></div>
-<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span> </div>
-<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>     <span class="keywordtype">double</span> Gmaxp = -INF;</div>
-<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>     <span class="keywordtype">double</span> Gmaxp2 = -INF;</div>
-<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>     <span class="keywordtype">int</span> Gmaxp_idx = -1;</div>
-<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span> </div>
-<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>     <span class="keywordtype">double</span> Gmaxn = -INF;</div>
-<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>     <span class="keywordtype">double</span> Gmaxn2 = -INF;</div>
-<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>     <span class="keywordtype">int</span> Gmaxn_idx = -1;</div>
-<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span> </div>
-<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>     <span class="keywordtype">int</span> Gmin_idx = -1;</div>
-<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>     <span class="keywordtype">double</span> obj_diff_min = INF;</div>
-<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span> </div>
-<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> t=0;t<active_size;t++)</div>
-<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>         <span class="keywordflow">if</span>(y[t]==+1)</div>
-<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>         {</div>
-<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>             <span class="keywordflow">if</span>(!is_upper_bound(t))</div>
-<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>                 <span class="keywordflow">if</span>(-G[t] >= Gmaxp)</div>
-<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>                 {</div>
-<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>                     Gmaxp = -G[t];</div>
-<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>                     Gmaxp_idx = t;</div>
-<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>                 }</div>
-<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>         }</div>
-<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>         {</div>
-<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>             <span class="keywordflow">if</span>(!is_lower_bound(t))</div>
-<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>                 <span class="keywordflow">if</span>(G[t] >= Gmaxn)</div>
-<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>                 {</div>
-<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>                     Gmaxn = G[t];</div>
-<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>                     Gmaxn_idx = t;</div>
-<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>                 }</div>
-<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>         }</div>
-<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span> </div>
-<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>     <span class="keywordtype">int</span> ip = Gmaxp_idx;</div>
-<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>     <span class="keywordtype">int</span> in = Gmaxn_idx;</div>
-<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>     <span class="keyword">const</span> Qfloat *Q_ip = NULL;</div>
-<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>     <span class="keyword">const</span> Qfloat *Q_in = NULL;</div>
-<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>     <span class="keywordflow">if</span>(ip != -1) <span class="comment">// NULL Q_ip not accessed: Gmaxp=-INF if ip=-1</span></div>
-<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>         Q_ip = Q->get_Q(ip,active_size);</div>
-<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>     <span class="keywordflow">if</span>(in != -1)</div>
-<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>         Q_in = Q->get_Q(in,active_size);</div>
-<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span> </div>
-<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=0;j<active_size;j++)</div>
-<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>     {</div>
-<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>         <span class="keywordflow">if</span>(y[j]==+1)</div>
-<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>         {</div>
-<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>             <span class="keywordflow">if</span> (!is_lower_bound(j)) </div>
-<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>             {</div>
-<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>                 <span class="keywordtype">double</span> grad_diff=Gmaxp+G[j];</div>
-<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>                 <span class="keywordflow">if</span> (G[j] >= Gmaxp2)</div>
-<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>                     Gmaxp2 = G[j];</div>
-<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>                 <span class="keywordflow">if</span> (grad_diff > 0)</div>
-<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>                 {</div>
-<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>                     <span class="keywordtype">double</span> obj_diff; </div>
-<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>                     <span class="keywordtype">double</span> quad_coef = QD[ip]+QD[j]-2*Q_ip[j];</div>
-<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>                     <span class="keywordflow">if</span> (quad_coef > 0)</div>
-<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>                         obj_diff = -(grad_diff*grad_diff)/quad_coef;</div>
-<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>                     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>                         obj_diff = -(grad_diff*grad_diff)/TAU;</div>
-<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span> </div>
-<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>                     <span class="keywordflow">if</span> (obj_diff <= obj_diff_min)</div>
-<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>                     {</div>
-<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>                         Gmin_idx=j;</div>
-<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>                         obj_diff_min = obj_diff;</div>
-<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>                     }</div>
-<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>                 }</div>
-<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>             }</div>
-<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>         }</div>
-<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>         {</div>
-<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>             <span class="keywordflow">if</span> (!is_upper_bound(j))</div>
-<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>             {</div>
-<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>                 <span class="keywordtype">double</span> grad_diff=Gmaxn-G[j];</div>
-<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>                 <span class="keywordflow">if</span> (-G[j] >= Gmaxn2)</div>
-<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>                     Gmaxn2 = -G[j];</div>
-<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>                 <span class="keywordflow">if</span> (grad_diff > 0)</div>
-<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>                 {</div>
-<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>                     <span class="keywordtype">double</span> obj_diff; </div>
-<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>                     <span class="keywordtype">double</span> quad_coef = QD[in]+QD[j]-2*Q_in[j];</div>
-<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>                     <span class="keywordflow">if</span> (quad_coef > 0)</div>
-<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>                         obj_diff = -(grad_diff*grad_diff)/quad_coef;</div>
-<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>                     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>                         obj_diff = -(grad_diff*grad_diff)/TAU;</div>
-<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span> </div>
-<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>                     <span class="keywordflow">if</span> (obj_diff <= obj_diff_min)</div>
-<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>                     {</div>
-<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>                         Gmin_idx=j;</div>
-<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>                         obj_diff_min = obj_diff;</div>
-<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>                     }</div>
-<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>                 }</div>
-<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>             }</div>
-<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>         }</div>
-<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>     }</div>
-<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span> </div>
-<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>     <span class="keywordflow">if</span>(max(Gmaxp+Gmaxp2,Gmaxn+Gmaxn2) < eps)</div>
-<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>         <span class="keywordflow">return</span> 1;</div>
-<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span> </div>
-<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>     <span class="keywordflow">if</span> (y[Gmin_idx] == +1)</div>
-<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>         out_i = Gmaxp_idx;</div>
-<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>         out_i = Gmaxn_idx;</div>
-<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>     out_j = Gmin_idx;</div>
-<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span> </div>
-<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>     <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span> }</div>
-<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span> </div>
-<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span> <span class="keywordtype">bool</span> Solver_NU::be_shrunk(<span class="keywordtype">int</span> i, <span class="keywordtype">double</span> Gmax1, <span class="keywordtype">double</span> Gmax2, <span class="keywordtype">double</span> Gmax3, <span class="keywordtype">double</span> Gmax4)</div>
-<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span> {</div>
-<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>     <span class="keywordflow">if</span>(is_upper_bound(i))</div>
-<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>     {</div>
-<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>         <span class="keywordflow">if</span>(y[i]==+1)</div>
-<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>             <span class="keywordflow">return</span>(-G[i] > Gmax1);</div>
-<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>         <span class="keywordflow">else</span>    </div>
-<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>             <span class="keywordflow">return</span>(-G[i] > Gmax4);</div>
-<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>     }</div>
-<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(is_lower_bound(i))</div>
-<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>     {</div>
-<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>         <span class="keywordflow">if</span>(y[i]==+1)</div>
-<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>             <span class="keywordflow">return</span>(G[i] > Gmax2);</div>
-<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>         <span class="keywordflow">else</span>    </div>
-<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>             <span class="keywordflow">return</span>(G[i] > Gmax3);</div>
-<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>     }</div>
-<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>         <span class="keywordflow">return</span>(<span class="keyword">false</span>);</div>
-<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span> }</div>
-<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span> </div>
-<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span> <span class="keywordtype">void</span> Solver_NU::do_shrinking()</div>
-<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span> {</div>
-<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>     <span class="keywordtype">double</span> Gmax1 = -INF;    <span class="comment">// max { -y_i * grad(f)_i | y_i = +1, i in I_up(\alpha) }</span></div>
-<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>     <span class="keywordtype">double</span> Gmax2 = -INF;    <span class="comment">// max { y_i * grad(f)_i | y_i = +1, i in I_low(\alpha) }</span></div>
-<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>     <span class="keywordtype">double</span> Gmax3 = -INF;    <span class="comment">// max { -y_i * grad(f)_i | y_i = -1, i in I_up(\alpha) }</span></div>
-<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>     <span class="keywordtype">double</span> Gmax4 = -INF;    <span class="comment">// max { y_i * grad(f)_i | y_i = -1, i in I_low(\alpha) }</span></div>
-<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span> </div>
-<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>     <span class="comment">// find maximal violating pair first</span></div>
-<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>     <span class="keywordtype">int</span> i;</div>
-<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>     <span class="keywordflow">for</span>(i=0;i<active_size;i++)</div>
-<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>     {</div>
-<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>         <span class="keywordflow">if</span>(!is_upper_bound(i))</div>
-<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>         {</div>
-<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>             <span class="keywordflow">if</span>(y[i]==+1)</div>
-<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>             {</div>
-<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>                 <span class="keywordflow">if</span>(-G[i] > Gmax1) Gmax1 = -G[i];</div>
-<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>             }</div>
-<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>             <span class="keywordflow">else</span>    <span class="keywordflow">if</span>(-G[i] > Gmax4) Gmax4 = -G[i];</div>
-<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>         }</div>
-<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>         <span class="keywordflow">if</span>(!is_lower_bound(i))</div>
-<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>         {</div>
-<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>             <span class="keywordflow">if</span>(y[i]==+1)</div>
-<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>             {   </div>
-<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>                 <span class="keywordflow">if</span>(G[i] > Gmax2) Gmax2 = G[i];</div>
-<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>             }</div>
-<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>             <span class="keywordflow">else</span>    <span class="keywordflow">if</span>(G[i] > Gmax3) Gmax3 = G[i];</div>
-<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>         }</div>
-<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>     }</div>
-<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span> </div>
-<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>     <span class="keywordflow">if</span>(unshrink == <span class="keyword">false</span> && max(Gmax1+Gmax2,Gmax3+Gmax4) <= eps*10) </div>
-<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>     {</div>
-<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>         unshrink = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>         reconstruct_gradient();</div>
-<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>         active_size = l;</div>
-<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>     }</div>
-<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span> </div>
-<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>     <span class="keywordflow">for</span>(i=0;i<active_size;i++)</div>
-<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>         <span class="keywordflow">if</span> (be_shrunk(i, Gmax1, Gmax2, Gmax3, Gmax4))</div>
-<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>         {</div>
-<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>             active_size--;</div>
-<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>             <span class="keywordflow">while</span> (active_size > i)</div>
-<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>             {</div>
-<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>                 <span class="keywordflow">if</span> (!be_shrunk(active_size, Gmax1, Gmax2, Gmax3, Gmax4))</div>
-<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>                 {</div>
-<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>                     swap_index(i,active_size);</div>
-<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>                     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>                 }</div>
-<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>                 active_size--;</div>
-<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>             }</div>
-<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>         }</div>
-<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span> }</div>
-<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span> </div>
-<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span> <span class="keywordtype">double</span> Solver_NU::calculate_rho()</div>
-<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span> {</div>
-<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>     <span class="keywordtype">int</span> nr_free1 = 0,nr_free2 = 0;</div>
-<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>     <span class="keywordtype">double</span> ub1 = INF, ub2 = INF;</div>
-<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>     <span class="keywordtype">double</span> lb1 = -INF, lb2 = -INF;</div>
-<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>     <span class="keywordtype">double</span> sum_free1 = 0, sum_free2 = 0;</div>
-<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span> </div>
-<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<active_size;i++)</div>
-<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>     {</div>
-<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>         <span class="keywordflow">if</span>(y[i]==+1)</div>
-<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>         {</div>
-<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>             <span class="keywordflow">if</span>(is_upper_bound(i))</div>
-<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>                 lb1 = max(lb1,G[i]);</div>
-<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>             <span class="keywordflow">else</span> <span class="keywordflow">if</span>(is_lower_bound(i))</div>
-<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>                 ub1 = min(ub1,G[i]);</div>
-<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>             {</div>
-<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>                 ++nr_free1;</div>
-<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>                 sum_free1 += G[i];</div>
-<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>             }</div>
-<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>         }</div>
-<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>         {</div>
-<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>             <span class="keywordflow">if</span>(is_upper_bound(i))</div>
-<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>                 lb2 = max(lb2,G[i]);</div>
-<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>             <span class="keywordflow">else</span> <span class="keywordflow">if</span>(is_lower_bound(i))</div>
-<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>                 ub2 = min(ub2,G[i]);</div>
-<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>             {</div>
-<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>                 ++nr_free2;</div>
-<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>                 sum_free2 += G[i];</div>
-<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>             }</div>
-<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>         }</div>
-<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>     }</div>
-<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span> </div>
-<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>     <span class="keywordtype">double</span> r1,r2;</div>
-<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>     <span class="keywordflow">if</span>(nr_free1 > 0)</div>
-<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>         r1 = sum_free1/nr_free1;</div>
-<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>         r1 = (ub1+lb1)/2;</div>
-<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>     </div>
-<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>     <span class="keywordflow">if</span>(nr_free2 > 0)</div>
-<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>         r2 = sum_free2/nr_free2;</div>
-<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>         r2 = (ub2+lb2)/2;</div>
-<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>     </div>
-<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>     si->r = (r1+r2)/2;</div>
-<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>     <span class="keywordflow">return</span> (r1-r2)/2;</div>
-<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span> }</div>
-<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span> </div>
-<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span> <span class="comment">//</span></div>
-<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span> <span class="comment">// Q matrices for various formulations</span></div>
-<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span> <span class="comment">//</span></div>
-<div class="line"><a name="l01273"></a><span class="lineno"><a class="line" href="classSVC__Q.html"> 1273</a></span> <span class="keyword">class </span><a class="code" href="classSVC__Q.html">SVC_Q</a>: <span class="keyword">public</span> <a class="code" href="classKernel.html">Kernel</a></div>
-<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span> { </div>
-<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>     <a class="code" href="classSVC__Q.html">SVC_Q</a>(<span class="keyword">const</span> <a class="code" href="structsvm__problem.html">svm_problem</a>& prob, <span class="keyword">const</span> <a class="code" href="structsvm__parameter.html">svm_parameter</a>& param, <span class="keyword">const</span> schar *y_)</div>
-<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>     :<a class="code" href="classKernel.html">Kernel</a>(prob.l, prob.x, param)</div>
-<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>     {</div>
-<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>         clone(y,y_,prob.l);</div>
-<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>         cache = <span class="keyword">new</span> <a class="code" href="classCache.html">Cache</a>(prob.l,(<span class="keywordtype">long</span> <span class="keywordtype">int</span>)(param.cache_size*(1<<20)));</div>
-<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>         QD = <span class="keyword">new</span> <span class="keywordtype">double</span>[prob.l];</div>
-<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<prob.l;i++)</div>
-<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>             QD[i] = (this->*kernel_function)(i,i);</div>
-<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>     }</div>
-<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>     </div>
-<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>     Qfloat *get_Q(<span class="keywordtype">int</span> i, <span class="keywordtype">int</span> len)<span class="keyword"> const</span></div>
-<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span> <span class="keyword">    </span>{</div>
-<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>         Qfloat *data;</div>
-<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>         <span class="keywordtype">int</span> start, j;</div>
-<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>         <span class="keywordflow">if</span>((start = cache->get_data(i,&data,len)) < len)</div>
-<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>         {</div>
-<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>             <span class="keywordflow">for</span>(j=start;j<len;j++)</div>
-<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>                 data[j] = (Qfloat)(y[i]*y[j]*(this->*kernel_function)(i,j));</div>
-<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>         }</div>
-<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>         <span class="keywordflow">return</span> data;</div>
-<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>     }</div>
-<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span> </div>
-<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>     <span class="keywordtype">double</span> *get_QD()<span class="keyword"> const</span></div>
-<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span> <span class="keyword">    </span>{</div>
-<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>         <span class="keywordflow">return</span> QD;</div>
-<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>     }</div>
-<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span> </div>
-<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>     <span class="keywordtype">void</span> swap_index(<span class="keywordtype">int</span> i, <span class="keywordtype">int</span> j)<span class="keyword"> const</span></div>
-<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span> <span class="keyword">    </span>{</div>
-<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>         cache->swap_index(i,j);</div>
-<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>         Kernel::swap_index(i,j);</div>
-<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>         swap(y[i],y[j]);</div>
-<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>         swap(QD[i],QD[j]);</div>
-<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>     }</div>
-<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span> </div>
-<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>     ~<a class="code" href="classSVC__Q.html">SVC_Q</a>()</div>
-<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>     {</div>
-<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>         <span class="keyword">delete</span>[] y;</div>
-<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>         <span class="keyword">delete</span> cache;</div>
-<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>         <span class="keyword">delete</span>[] QD;</div>
-<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>     }</div>
-<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span> <span class="keyword">private</span>:</div>
-<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>     schar *y;</div>
-<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>     <a class="code" href="classCache.html">Cache</a> *cache;</div>
-<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>     <span class="keywordtype">double</span> *QD;</div>
-<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span> };</div>
-<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span> </div>
-<div class="line"><a name="l01323"></a><span class="lineno"><a class="line" href="classONE__CLASS__Q.html"> 1323</a></span> <span class="keyword">class </span><a class="code" href="classONE__CLASS__Q.html">ONE_CLASS_Q</a>: <span class="keyword">public</span> <a class="code" href="classKernel.html">Kernel</a></div>
-<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span> {</div>
-<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>     <a class="code" href="classONE__CLASS__Q.html">ONE_CLASS_Q</a>(<span class="keyword">const</span> <a class="code" href="structsvm__problem.html">svm_problem</a>& prob, <span class="keyword">const</span> <a class="code" href="structsvm__parameter.html">svm_parameter</a>& param)</div>
-<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>     :<a class="code" href="classKernel.html">Kernel</a>(prob.l, prob.x, param)</div>
-<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>     {</div>
-<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>         cache = <span class="keyword">new</span> <a class="code" href="classCache.html">Cache</a>(prob.l,(<span class="keywordtype">long</span> <span class="keywordtype">int</span>)(param.cache_size*(1<<20)));</div>
-<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>         QD = <span class="keyword">new</span> <span class="keywordtype">double</span>[prob.l];</div>
-<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<prob.l;i++)</div>
-<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>             QD[i] = (this->*kernel_function)(i,i);</div>
-<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>     }</div>
-<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>     </div>
-<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>     Qfloat *get_Q(<span class="keywordtype">int</span> i, <span class="keywordtype">int</span> len)<span class="keyword"> const</span></div>
-<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span> <span class="keyword">    </span>{</div>
-<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>         Qfloat *data;</div>
-<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>         <span class="keywordtype">int</span> start, j;</div>
-<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>         <span class="keywordflow">if</span>((start = cache->get_data(i,&data,len)) < len)</div>
-<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>         {</div>
-<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>             <span class="keywordflow">for</span>(j=start;j<len;j++)</div>
-<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>                 data[j] = (Qfloat)(this->*kernel_function)(i,j);</div>
-<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>         }</div>
-<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>         <span class="keywordflow">return</span> data;</div>
-<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>     }</div>
-<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span> </div>
-<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>     <span class="keywordtype">double</span> *get_QD()<span class="keyword"> const</span></div>
-<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span> <span class="keyword">    </span>{</div>
-<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>         <span class="keywordflow">return</span> QD;</div>
-<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>     }</div>
-<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span> </div>
-<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>     <span class="keywordtype">void</span> swap_index(<span class="keywordtype">int</span> i, <span class="keywordtype">int</span> j)<span class="keyword"> const</span></div>
-<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span> <span class="keyword">    </span>{</div>
-<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>         cache->swap_index(i,j);</div>
-<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>         Kernel::swap_index(i,j);</div>
-<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>         swap(QD[i],QD[j]);</div>
-<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>     }</div>
-<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span> </div>
-<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>     ~<a class="code" href="classONE__CLASS__Q.html">ONE_CLASS_Q</a>()</div>
-<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>     {</div>
-<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>         <span class="keyword">delete</span> cache;</div>
-<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>         <span class="keyword">delete</span>[] QD;</div>
-<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>     }</div>
-<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span> <span class="keyword">private</span>:</div>
-<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>     <a class="code" href="classCache.html">Cache</a> *cache;</div>
-<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>     <span class="keywordtype">double</span> *QD;</div>
-<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span> };</div>
-<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span> </div>
-<div class="line"><a name="l01369"></a><span class="lineno"><a class="line" href="classSVR__Q.html"> 1369</a></span> <span class="keyword">class </span><a class="code" href="classSVR__Q.html">SVR_Q</a>: <span class="keyword">public</span> <a class="code" href="classKernel.html">Kernel</a></div>
-<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span> { </div>
-<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>     <a class="code" href="classSVR__Q.html">SVR_Q</a>(<span class="keyword">const</span> <a class="code" href="structsvm__problem.html">svm_problem</a>& prob, <span class="keyword">const</span> <a class="code" href="structsvm__parameter.html">svm_parameter</a>& param)</div>
-<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>     :<a class="code" href="classKernel.html">Kernel</a>(prob.l, prob.x, param)</div>
-<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>     {</div>
-<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>         l = prob.l;</div>
-<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>         cache = <span class="keyword">new</span> <a class="code" href="classCache.html">Cache</a>(l,(<span class="keywordtype">long</span> <span class="keywordtype">int</span>)(param.cache_size*(1<<20)));</div>
-<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>         QD = <span class="keyword">new</span> <span class="keywordtype">double</span>[2*l];</div>
-<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>         sign = <span class="keyword">new</span> schar[2*l];</div>
-<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>         index = <span class="keyword">new</span> <span class="keywordtype">int</span>[2*l];</div>
-<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> k=0;k<l;k++)</div>
-<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>         {</div>
-<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>             sign[k] = 1;</div>
-<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>             sign[k+l] = -1;</div>
-<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>             index[k] = k;</div>
-<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>             index[k+l] = k;</div>
-<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>             QD[k] = (this->*kernel_function)(k,k);</div>
-<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>             QD[k+l] = QD[k];</div>
-<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>         }</div>
-<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>         buffer[0] = <span class="keyword">new</span> Qfloat[2*l];</div>
-<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>         buffer[1] = <span class="keyword">new</span> Qfloat[2*l];</div>
-<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>         next_buffer = 0;</div>
-<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>     }</div>
-<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span> </div>
-<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>     <span class="keywordtype">void</span> swap_index(<span class="keywordtype">int</span> i, <span class="keywordtype">int</span> j)<span class="keyword"> const</span></div>
-<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span> <span class="keyword">    </span>{</div>
-<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>         swap(sign[i],sign[j]);</div>
-<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>         swap(index[i],index[j]);</div>
-<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>         swap(QD[i],QD[j]);</div>
-<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>     }</div>
-<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>     </div>
-<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>     Qfloat *get_Q(<span class="keywordtype">int</span> i, <span class="keywordtype">int</span> len)<span class="keyword"> const</span></div>
-<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span> <span class="keyword">    </span>{</div>
-<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>         Qfloat *data;</div>
-<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>         <span class="keywordtype">int</span> j, real_i = index[i];</div>
-<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>         <span class="keywordflow">if</span>(cache->get_data(real_i,&data,l) < l)</div>
-<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>         {</div>
-<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>             <span class="keywordflow">for</span>(j=0;j<l;j++)</div>
-<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>                 data[j] = (Qfloat)(this->*kernel_function)(real_i,j);</div>
-<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>         }</div>
-<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span> </div>
-<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>         <span class="comment">// reorder and copy</span></div>
-<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>         Qfloat *buf = buffer[next_buffer];</div>
-<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>         next_buffer = 1 - next_buffer;</div>
-<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>         schar si = sign[i];</div>
-<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>         <span class="keywordflow">for</span>(j=0;j<len;j++)</div>
-<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>             buf[j] = (Qfloat) si * (Qfloat) sign[j] * data[index[j]];</div>
-<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>         <span class="keywordflow">return</span> buf;</div>
-<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>     }</div>
-<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span> </div>
-<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>     <span class="keywordtype">double</span> *get_QD()<span class="keyword"> const</span></div>
-<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span> <span class="keyword">    </span>{</div>
-<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>         <span class="keywordflow">return</span> QD;</div>
-<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>     }</div>
-<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span> </div>
-<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>     ~<a class="code" href="classSVR__Q.html">SVR_Q</a>()</div>
-<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>     {</div>
-<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>         <span class="keyword">delete</span> cache;</div>
-<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>         <span class="keyword">delete</span>[] sign;</div>
-<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>         <span class="keyword">delete</span>[] index;</div>
-<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>         <span class="keyword">delete</span>[] buffer[0];</div>
-<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>         <span class="keyword">delete</span>[] buffer[1];</div>
-<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>         <span class="keyword">delete</span>[] QD;</div>
-<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>     }</div>
-<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span> <span class="keyword">private</span>:</div>
-<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>     <span class="keywordtype">int</span> l;</div>
-<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>     <a class="code" href="classCache.html">Cache</a> *cache;</div>
-<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>     schar *sign;</div>
-<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>     <span class="keywordtype">int</span> *index;</div>
-<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>     <span class="keyword">mutable</span> <span class="keywordtype">int</span> next_buffer;</div>
-<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>     Qfloat *buffer[2];</div>
-<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>     <span class="keywordtype">double</span> *QD;</div>
-<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span> };</div>
-<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span> </div>
-<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span> <span class="comment">//</span></div>
-<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span> <span class="comment">// construct and solve various formulations</span></div>
-<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span> <span class="comment">//</span></div>
-<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span> <span class="keyword">static</span> <span class="keywordtype">void</span> solve_c_svc(</div>
-<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>     <span class="keyword">const</span> <a class="code" href="structsvm__problem.html">svm_problem</a> *prob, <span class="keyword">const</span> <a class="code" href="structsvm__parameter.html">svm_parameter</a>* param,</div>
-<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>     <span class="keywordtype">double</span> *alpha, <a class="code" href="structSolver_1_1SolutionInfo.html">Solver::SolutionInfo</a>* si, <span class="keywordtype">double</span> Cp, <span class="keywordtype">double</span> Cn)</div>
-<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span> {</div>
-<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>     <span class="keywordtype">int</span> l = prob->l;</div>
-<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>     <span class="keywordtype">double</span> *minus_ones = <span class="keyword">new</span> <span class="keywordtype">double</span>[l];</div>
-<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>     schar *y = <span class="keyword">new</span> schar[l];</div>
-<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span> </div>
-<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>     <span class="keywordtype">int</span> i;</div>
-<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span> </div>
-<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>     <span class="keywordflow">for</span>(i=0;i<l;i++)</div>
-<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>     {</div>
-<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>         alpha[i] = 0;</div>
-<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>         minus_ones[i] = -1;</div>
-<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>         <span class="keywordflow">if</span>(prob->y[i] > 0) y[i] = +1; <span class="keywordflow">else</span> y[i] = -1;</div>
-<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>     }</div>
-<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span> </div>
-<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>     <a class="code" href="classSolver.html">Solver</a> s;</div>
-<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>     s.Solve(l, <a class="code" href="classSVC__Q.html">SVC_Q</a>(*prob,*param,y), minus_ones, y,</div>
-<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>         alpha, Cp, Cn, param->eps, si, param->shrinking, param->verbose);</div>
-<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span> </div>
-<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>     <span class="keywordtype">double</span> sum_alpha=0;</div>
-<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>     <span class="keywordflow">for</span>(i=0;i<l;i++)</div>
-<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>         sum_alpha += alpha[i];</div>
-<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span> </div>
-<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>     <span class="keywordflow">if</span> (Cp==Cn)</div>
-<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>           <span class="keywordflow">if</span>(param->verbose)<span class="comment">//pk</span></div>
-<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>             info(<span class="stringliteral">"nu = %f\n"</span>, sum_alpha/(Cp*prob->l));</div>
-<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span> </div>
-<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>     <span class="keywordflow">for</span>(i=0;i<l;i++)</div>
-<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>         alpha[i] *= y[i];</div>
-<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span> </div>
-<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>     <span class="keyword">delete</span>[] minus_ones;</div>
-<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>     <span class="keyword">delete</span>[] y;</div>
-<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span> }</div>
-<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span> </div>
-<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span> <span class="keyword">static</span> <span class="keywordtype">void</span> solve_nu_svc(</div>
-<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>     <span class="keyword">const</span> <a class="code" href="structsvm__problem.html">svm_problem</a> *prob, <span class="keyword">const</span> <a class="code" href="structsvm__parameter.html">svm_parameter</a> *param,</div>
-<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>     <span class="keywordtype">double</span> *alpha, <a class="code" href="structSolver_1_1SolutionInfo.html">Solver::SolutionInfo</a>* si)</div>
-<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span> {</div>
-<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>     <span class="keywordtype">int</span> i;</div>
-<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>     <span class="keywordtype">int</span> l = prob->l;</div>
-<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>     <span class="keywordtype">double</span> nu = param->nu;</div>
-<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span> </div>
-<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>     schar *y = <span class="keyword">new</span> schar[l];</div>
-<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span> </div>
-<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>     <span class="keywordflow">for</span>(i=0;i<l;i++)</div>
-<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>         <span class="keywordflow">if</span>(prob->y[i]>0)</div>
-<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>             y[i] = +1;</div>
-<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>             y[i] = -1;</div>
-<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span> </div>
-<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>     <span class="keywordtype">double</span> sum_pos = nu*l/2;</div>
-<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>     <span class="keywordtype">double</span> sum_neg = nu*l/2;</div>
-<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span> </div>
-<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>     <span class="keywordflow">for</span>(i=0;i<l;i++)</div>
-<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>         <span class="keywordflow">if</span>(y[i] == +1)</div>
-<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>         {</div>
-<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>             alpha[i] = min(1.0,sum_pos);</div>
-<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>             sum_pos -= alpha[i];</div>
-<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>         }</div>
-<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>         {</div>
-<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>             alpha[i] = min(1.0,sum_neg);</div>
-<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>             sum_neg -= alpha[i];</div>
-<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>         }</div>
-<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span> </div>
-<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>     <span class="keywordtype">double</span> *zeros = <span class="keyword">new</span> <span class="keywordtype">double</span>[l];</div>
-<div class="line"><a name="l01515"></a><span class="lineno"> 1515</span> </div>
-<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>     <span class="keywordflow">for</span>(i=0;i<l;i++)</div>
-<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>         zeros[i] = 0;</div>
-<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span> </div>
-<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>     <a class="code" href="classSolver__NU.html">Solver_NU</a> s;</div>
-<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>     s.Solve(l, <a class="code" href="classSVC__Q.html">SVC_Q</a>(*prob,*param,y), zeros, y,</div>
-<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>         alpha, 1.0, 1.0, param->eps, si,  param->shrinking, param->verbose);</div>
-<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>     <span class="keywordtype">double</span> r = si->r;</div>
-<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>         </div>
-<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>         <span class="keywordflow">if</span>(param->verbose)<span class="comment">//pk</span></div>
-<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>           info(<span class="stringliteral">"C = %f\n"</span>,1/r);</div>
-<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span> </div>
-<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>     <span class="keywordflow">for</span>(i=0;i<l;i++)</div>
-<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>         alpha[i] *= y[i]/r;</div>
-<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span> </div>
-<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>     si->rho /= r;</div>
-<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>     si->obj /= (r*r);</div>
-<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>     si->upper_bound_p = 1/r;</div>
-<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>     si->upper_bound_n = 1/r;</div>
-<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span> </div>
-<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>     <span class="keyword">delete</span>[] y;</div>
-<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>     <span class="keyword">delete</span>[] zeros;</div>
-<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span> }</div>
-<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span> </div>
-<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span> <span class="keyword">static</span> <span class="keywordtype">void</span> solve_one_class(</div>
-<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>     <span class="keyword">const</span> <a class="code" href="structsvm__problem.html">svm_problem</a> *prob, <span class="keyword">const</span> <a class="code" href="structsvm__parameter.html">svm_parameter</a> *param,</div>
-<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>     <span class="keywordtype">double</span> *alpha, <a class="code" href="structSolver_1_1SolutionInfo.html">Solver::SolutionInfo</a>* si)</div>
-<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span> {</div>
-<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>     <span class="keywordtype">int</span> l = prob->l;</div>
-<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>     <span class="keywordtype">double</span> *zeros = <span class="keyword">new</span> <span class="keywordtype">double</span>[l];</div>
-<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>     schar *ones = <span class="keyword">new</span> schar[l];</div>
-<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>     <span class="keywordtype">int</span> i;</div>
-<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span> </div>
-<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>     <span class="keywordtype">int</span> n = (int)(param->nu*prob->l);   <span class="comment">// # of alpha's at upper bound</span></div>
-<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span> </div>
-<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>     <span class="keywordflow">for</span>(i=0;i<n;i++)</div>
-<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>         alpha[i] = 1;</div>
-<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>     <span class="keywordflow">if</span>(n<prob->l)</div>
-<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>         alpha[n] = param->nu * prob->l - n;</div>
-<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>     <span class="keywordflow">for</span>(i=n+1;i<l;i++)</div>
-<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>         alpha[i] = 0;</div>
-<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span> </div>
-<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>     <span class="keywordflow">for</span>(i=0;i<l;i++)</div>
-<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>     {</div>
-<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>         zeros[i] = 0;</div>
-<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>         ones[i] = 1;</div>
-<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>     }</div>
-<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span> </div>
-<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>     <a class="code" href="classSolver.html">Solver</a> s;</div>
-<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>     s.Solve(l, <a class="code" href="classONE__CLASS__Q.html">ONE_CLASS_Q</a>(*prob,*param), zeros, ones,</div>
-<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>         alpha, 1.0, 1.0, param->eps, si, param->shrinking, param->verbose );</div>
-<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span> </div>
-<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>     <span class="keyword">delete</span>[] zeros;</div>
-<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>     <span class="keyword">delete</span>[] ones;</div>
-<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span> }</div>
-<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span> </div>
-<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span> <span class="keyword">static</span> <span class="keywordtype">void</span> solve_epsilon_svr(</div>
-<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>     <span class="keyword">const</span> <a class="code" href="structsvm__problem.html">svm_problem</a> *prob, <span class="keyword">const</span> <a class="code" href="structsvm__parameter.html">svm_parameter</a> *param,</div>
-<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>     <span class="keywordtype">double</span> *alpha, <a class="code" href="structSolver_1_1SolutionInfo.html">Solver::SolutionInfo</a>* si)</div>
-<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span> {</div>
-<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>     <span class="keywordtype">int</span> l = prob->l;</div>
-<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>     <span class="keywordtype">double</span> *alpha2 = <span class="keyword">new</span> <span class="keywordtype">double</span>[2*l];</div>
-<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>     <span class="keywordtype">double</span> *linear_term = <span class="keyword">new</span> <span class="keywordtype">double</span>[2*l];</div>
-<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>     schar *y = <span class="keyword">new</span> schar[2*l];</div>
-<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>     <span class="keywordtype">int</span> i;</div>
-<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span> </div>
-<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>     <span class="keywordflow">for</span>(i=0;i<l;i++)</div>
-<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>     {</div>
-<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>         alpha2[i] = 0;</div>
-<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>         linear_term[i] = param->p - prob->y[i];</div>
-<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>         y[i] = 1;</div>
-<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span> </div>
-<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>         alpha2[i+l] = 0;</div>
-<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>         linear_term[i+l] = param->p + prob->y[i];</div>
-<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>         y[i+l] = -1;</div>
-<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>     }</div>
-<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span> </div>
-<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>     <a class="code" href="classSolver.html">Solver</a> s;</div>
-<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>     s.Solve(2*l, <a class="code" href="classSVR__Q.html">SVR_Q</a>(*prob,*param), linear_term, y,</div>
-<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>         alpha2, param->C, param->C, param->eps, si, param->shrinking, param->verbose);</div>
-<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span> </div>
-<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>     <span class="keywordtype">double</span> sum_alpha = 0;</div>
-<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>     <span class="keywordflow">for</span>(i=0;i<l;i++)</div>
-<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>     {</div>
-<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>         alpha[i] = alpha2[i] - alpha2[i+l];</div>
-<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>         sum_alpha += fabs(alpha[i]);</div>
-<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>     }</div>
-<div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>         <span class="keywordflow">if</span>(param->verbose)<span class="comment">//pk</span></div>
-<div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>           info(<span class="stringliteral">"nu = %f\n"</span>,sum_alpha/(param->C*l));</div>
-<div class="line"><a name="l01604"></a><span class="lineno"> 1604</span> </div>
-<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>     <span class="keyword">delete</span>[] alpha2;</div>
-<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>     <span class="keyword">delete</span>[] linear_term;</div>
-<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>     <span class="keyword">delete</span>[] y;</div>
-<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span> }</div>
-<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span> </div>
-<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span> <span class="keyword">static</span> <span class="keywordtype">void</span> solve_nu_svr(</div>
-<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>     <span class="keyword">const</span> <a class="code" href="structsvm__problem.html">svm_problem</a> *prob, <span class="keyword">const</span> <a class="code" href="structsvm__parameter.html">svm_parameter</a> *param,</div>
-<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>     <span class="keywordtype">double</span> *alpha, <a class="code" href="structSolver_1_1SolutionInfo.html">Solver::SolutionInfo</a>* si)</div>
-<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span> {</div>
-<div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>     <span class="keywordtype">int</span> l = prob->l;</div>
-<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>     <span class="keywordtype">double</span> C = param->C;</div>
-<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>     <span class="keywordtype">double</span> *alpha2 = <span class="keyword">new</span> <span class="keywordtype">double</span>[2*l];</div>
-<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>     <span class="keywordtype">double</span> *linear_term = <span class="keyword">new</span> <span class="keywordtype">double</span>[2*l];</div>
-<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>     schar *y = <span class="keyword">new</span> schar[2*l];</div>
-<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>     <span class="keywordtype">int</span> i;</div>
-<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span> </div>
-<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>     <span class="keywordtype">double</span> sum = C * param->nu * l / 2;</div>
-<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>     <span class="keywordflow">for</span>(i=0;i<l;i++)</div>
-<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>     {</div>
-<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>         alpha2[i] = alpha2[i+l] = min(sum,C);</div>
-<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>         sum -= alpha2[i];</div>
-<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span> </div>
-<div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>         linear_term[i] = - prob->y[i];</div>
-<div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>         y[i] = 1;</div>
-<div class="line"><a name="l01629"></a><span class="lineno"> 1629</span> </div>
-<div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>         linear_term[i+l] = prob->y[i];</div>
-<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>         y[i+l] = -1;</div>
-<div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>     }</div>
-<div class="line"><a name="l01633"></a><span class="lineno"> 1633</span> </div>
-<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>     <a class="code" href="classSolver__NU.html">Solver_NU</a> s;</div>
-<div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>     s.Solve(2*l, <a class="code" href="classSVR__Q.html">SVR_Q</a>(*prob,*param), linear_term, y,</div>
-<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>         alpha2, C, C, param->eps, si, param->shrinking, param->verbose);</div>
-<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span> </div>
-<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>         <span class="keywordflow">if</span>(param->verbose)<span class="comment">//pk</span></div>
-<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>           info(<span class="stringliteral">"epsilon = %f\n"</span>,-si->r);</div>
-<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span> </div>
-<div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>     <span class="keywordflow">for</span>(i=0;i<l;i++)</div>
-<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>         alpha[i] = alpha2[i] - alpha2[i+l];</div>
-<div class="line"><a name="l01643"></a><span class="lineno"> 1643</span> </div>
-<div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>     <span class="keyword">delete</span>[] alpha2;</div>
-<div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>     <span class="keyword">delete</span>[] linear_term;</div>
-<div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>     <span class="keyword">delete</span>[] y;</div>
-<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span> }</div>
-<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span> </div>
-<div class="line"><a name="l01649"></a><span class="lineno"> 1649</span> <span class="comment">//</span></div>
-<div class="line"><a name="l01650"></a><span class="lineno"> 1650</span> <span class="comment">// decision_function</span></div>
-<div class="line"><a name="l01651"></a><span class="lineno"> 1651</span> <span class="comment">//</span></div>
-<div class="line"><a name="l01652"></a><span class="lineno"><a class="line" href="structdecision__function.html"> 1652</a></span> <span class="keyword">struct </span><a class="code" href="structdecision__function.html">decision_function</a></div>
-<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span> {</div>
-<div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>     <span class="keywordtype">double</span> *alpha;</div>
-<div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>     <span class="keywordtype">double</span> rho; </div>
-<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span> };</div>
-<div class="line"><a name="l01657"></a><span class="lineno"> 1657</span> </div>
-<div class="line"><a name="l01658"></a><span class="lineno"> 1658</span> <span class="keyword">static</span> <a class="code" href="structdecision__function.html">decision_function</a> svm_train_one(</div>
-<div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>     <span class="keyword">const</span> <a class="code" href="structsvm__problem.html">svm_problem</a> *prob, <span class="keyword">const</span> <a class="code" href="structsvm__parameter.html">svm_parameter</a> *param,</div>
-<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>     <span class="keywordtype">double</span> Cp, <span class="keywordtype">double</span> Cn)</div>
-<div class="line"><a name="l01661"></a><span class="lineno"> 1661</span> {</div>
-<div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>     <span class="keywordtype">double</span> *alpha = Malloc(<span class="keywordtype">double</span>,prob->l);</div>
-<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>     <a class="code" href="structSolver_1_1SolutionInfo.html">Solver::SolutionInfo</a> si;</div>
-<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>     <span class="keywordflow">switch</span>(param->svm_type)</div>
-<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>     {</div>
-<div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>         <span class="keywordflow">case</span> C_SVC:</div>
-<div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>             solve_c_svc(prob,param,alpha,&si,Cp,Cn);</div>
-<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>         <span class="keywordflow">case</span> NU_SVC:</div>
-<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>             solve_nu_svc(prob,param,alpha,&si);</div>
-<div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>         <span class="keywordflow">case</span> ONE_CLASS:</div>
-<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>             solve_one_class(prob,param,alpha,&si);</div>
-<div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>         <span class="keywordflow">case</span> EPSILON_SVR:</div>
-<div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>             solve_epsilon_svr(prob,param,alpha,&si);</div>
-<div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>         <span class="keywordflow">case</span> NU_SVR:</div>
-<div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>             solve_nu_svr(prob,param,alpha,&si);</div>
-<div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>     }</div>
-<div class="line"><a name="l01682"></a><span class="lineno"> 1682</span> </div>
-<div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>         <span class="keywordflow">if</span>(param->verbose)<span class="comment">//pk</span></div>
-<div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>           info(<span class="stringliteral">"obj = %f, rho = %f\n"</span>,si.obj,si.rho);</div>
-<div class="line"><a name="l01685"></a><span class="lineno"> 1685</span> </div>
-<div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>     <span class="comment">// output SVs</span></div>
-<div class="line"><a name="l01687"></a><span class="lineno"> 1687</span> </div>
-<div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>     <span class="keywordtype">int</span> nSV = 0;</div>
-<div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>     <span class="keywordtype">int</span> nBSV = 0;</div>
-<div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<prob->l;i++)</div>
-<div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>     {</div>
-<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>         <span class="keywordflow">if</span>(fabs(alpha[i]) > 0)</div>
-<div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>         {</div>
-<div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>             ++nSV;</div>
-<div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>             <span class="keywordflow">if</span>(prob->y[i] > 0)</div>
-<div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>             {</div>
-<div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>                 <span class="keywordflow">if</span>(fabs(alpha[i]) >= si.upper_bound_p)</div>
-<div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>                     ++nBSV;</div>
-<div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>             }</div>
-<div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>             {</div>
-<div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>                 <span class="keywordflow">if</span>(fabs(alpha[i]) >= si.upper_bound_n)</div>
-<div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>                     ++nBSV;</div>
-<div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>             }</div>
-<div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>         }</div>
-<div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>     }</div>
-<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span> </div>
-<div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>         <span class="keywordflow">if</span>(param->verbose)<span class="comment">//pk</span></div>
-<div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>           info(<span class="stringliteral">"nSV = %d, nBSV = %d\n"</span>,nSV,nBSV);</div>
-<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span> </div>
-<div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>     <a class="code" href="structdecision__function.html">decision_function</a> f;</div>
-<div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>     f.alpha = alpha;</div>
-<div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>     f.rho = si.rho;</div>
-<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>     <span class="keywordflow">return</span> f;</div>
-<div class="line"><a name="l01715"></a><span class="lineno"> 1715</span> }</div>
-<div class="line"><a name="l01716"></a><span class="lineno"> 1716</span> </div>
-<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span> <span class="comment">// Platt's binary SVM Probablistic Output: an improvement from Lin et al.</span></div>
-<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span> <span class="keyword">static</span> <span class="keywordtype">void</span> sigmoid_train(</div>
-<div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>     <span class="keywordtype">int</span> l, <span class="keyword">const</span> <span class="keywordtype">double</span> *dec_values, <span class="keyword">const</span> <span class="keywordtype">double</span> *labels, </div>
-<div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>     <span class="keywordtype">double</span>& A, <span class="keywordtype">double</span>& B)</div>
-<div class="line"><a name="l01721"></a><span class="lineno"> 1721</span> {</div>
-<div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>     <span class="keywordtype">double</span> prior1=0, prior0 = 0;</div>
-<div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>     <span class="keywordtype">int</span> i;</div>
-<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span> </div>
-<div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>     <span class="keywordflow">for</span> (i=0;i<l;i++)</div>
-<div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>         <span class="keywordflow">if</span> (labels[i] > 0) prior1+=1;</div>
-<div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>         <span class="keywordflow">else</span> prior0+=1;</div>
-<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>     </div>
-<div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>     <span class="keywordtype">int</span> max_iter=100;   <span class="comment">// Maximal number of iterations</span></div>
-<div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>     <span class="keywordtype">double</span> min_step=1e-10;  <span class="comment">// Minimal step taken in line search</span></div>
-<div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>     <span class="keywordtype">double</span> sigma=1e-12; <span class="comment">// For numerically strict PD of Hessian</span></div>
-<div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>     <span class="keywordtype">double</span> eps=1e-5;</div>
-<div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>     <span class="keywordtype">double</span> hiTarget=(prior1+1.0)/(prior1+2.0);</div>
-<div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>     <span class="keywordtype">double</span> loTarget=1/(prior0+2.0);</div>
-<div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>     <span class="keywordtype">double</span> *t=Malloc(<span class="keywordtype">double</span>,l);</div>
-<div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>     <span class="keywordtype">double</span> fApB,p,q,h11,h22,h21,g1,g2,det,dA,dB,gd,stepsize;</div>
-<div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>     <span class="keywordtype">double</span> newA,newB,newf,d1,d2;</div>
-<div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>     <span class="keywordtype">int</span> iter; </div>
-<div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>     </div>
-<div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>     <span class="comment">// Initial Point and Initial Fun Value</span></div>
-<div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>     A=0.0; B=log((prior0+1.0)/(prior1+1.0));</div>
-<div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>     <span class="keywordtype">double</span> fval = 0.0;</div>
-<div class="line"><a name="l01743"></a><span class="lineno"> 1743</span> </div>
-<div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>     <span class="keywordflow">for</span> (i=0;i<l;i++)</div>
-<div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>     {</div>
-<div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>         <span class="keywordflow">if</span> (labels[i]>0) t[i]=hiTarget;</div>
-<div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>         <span class="keywordflow">else</span> t[i]=loTarget;</div>
-<div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>         fApB = dec_values[i]*A+B;</div>
-<div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>         <span class="keywordflow">if</span> (fApB>=0)</div>
-<div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>             fval += t[i]*fApB + log(1+exp(-fApB));</div>
-<div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>             fval += (t[i] - 1)*fApB +log(1+exp(fApB));</div>
-<div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>     }</div>
-<div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>     <span class="keywordflow">for</span> (iter=0;iter<max_iter;iter++)</div>
-<div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>     {</div>
-<div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>         <span class="comment">// Update Gradient and Hessian (use H' = H + sigma I)</span></div>
-<div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>         h11=sigma; <span class="comment">// numerically ensures strict PD</span></div>
-<div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>         h22=sigma;</div>
-<div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>         h21=0.0;g1=0.0;g2=0.0;</div>
-<div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>         <span class="keywordflow">for</span> (i=0;i<l;i++)</div>
-<div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>         {</div>
-<div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>             fApB = dec_values[i]*A+B;</div>
-<div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>             <span class="keywordflow">if</span> (fApB >= 0)</div>
-<div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>             {</div>
-<div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>                 p=exp(-fApB)/(1.0+exp(-fApB));</div>
-<div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>                 q=1.0/(1.0+exp(-fApB));</div>
-<div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>             }</div>
-<div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>             {</div>
-<div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>                 p=1.0/(1.0+exp(fApB));</div>
-<div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>                 q=exp(fApB)/(1.0+exp(fApB));</div>
-<div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>             }</div>
-<div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>             d2=p*q;</div>
-<div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>             h11+=dec_values[i]*dec_values[i]*d2;</div>
-<div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>             h22+=d2;</div>
-<div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>             h21+=dec_values[i]*d2;</div>
-<div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>             d1=t[i]-p;</div>
-<div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>             g1+=dec_values[i]*d1;</div>
-<div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>             g2+=d1;</div>
-<div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>         }</div>
-<div class="line"><a name="l01781"></a><span class="lineno"> 1781</span> </div>
-<div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>         <span class="comment">// Stopping Criteria</span></div>
-<div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>         <span class="keywordflow">if</span> (fabs(g1)<eps && fabs(g2)<eps)</div>
-<div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01785"></a><span class="lineno"> 1785</span> </div>
-<div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>         <span class="comment">// Finding Newton direction: -inv(H') * g</span></div>
-<div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>         det=h11*h22-h21*h21;</div>
-<div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>         dA=-(h22*g1 - h21 * g2) / det;</div>
-<div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>         dB=-(-h21*g1+ h11 * g2) / det;</div>
-<div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>         gd=g1*dA+g2*dB;</div>
-<div class="line"><a name="l01791"></a><span class="lineno"> 1791</span> </div>
-<div class="line"><a name="l01792"></a><span class="lineno"> 1792</span> </div>
-<div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>         stepsize = 1;       <span class="comment">// Line Search</span></div>
-<div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>         <span class="keywordflow">while</span> (stepsize >= min_step)</div>
-<div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>         {</div>
-<div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>             newA = A + stepsize * dA;</div>
-<div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>             newB = B + stepsize * dB;</div>
-<div class="line"><a name="l01798"></a><span class="lineno"> 1798</span> </div>
-<div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>             <span class="comment">// New function value</span></div>
-<div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>             newf = 0.0;</div>
-<div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>             <span class="keywordflow">for</span> (i=0;i<l;i++)</div>
-<div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>             {</div>
-<div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>                 fApB = dec_values[i]*newA+newB;</div>
-<div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>                 <span class="keywordflow">if</span> (fApB >= 0)</div>
-<div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>                     newf += t[i]*fApB + log(1+exp(-fApB));</div>
-<div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>                 <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>                     newf += (t[i] - 1)*fApB +log(1+exp(fApB));</div>
-<div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>             }</div>
-<div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>             <span class="comment">// Check sufficient decrease</span></div>
-<div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>             <span class="keywordflow">if</span> (newf<fval+0.0001*stepsize*gd)</div>
-<div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>             {</div>
-<div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>                 A=newA;B=newB;fval=newf;</div>
-<div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>                 <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>             }</div>
-<div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>                 stepsize = stepsize / 2.0;</div>
-<div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>         }</div>
-<div class="line"><a name="l01818"></a><span class="lineno"> 1818</span> </div>
-<div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>         <span class="keywordflow">if</span> (stepsize < min_step)</div>
-<div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>         {</div>
-<div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>             info(<span class="stringliteral">"Line search fails in two-class probability estimates\n"</span>);</div>
-<div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>         }</div>
-<div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>     }</div>
-<div class="line"><a name="l01825"></a><span class="lineno"> 1825</span> </div>
-<div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>     <span class="keywordflow">if</span> (iter>=max_iter)</div>
-<div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>         info(<span class="stringliteral">"Reaching maximal iterations in two-class probability estimates\n"</span>);</div>
-<div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>     free(t);</div>
-<div class="line"><a name="l01829"></a><span class="lineno"> 1829</span> }</div>
-<div class="line"><a name="l01830"></a><span class="lineno"> 1830</span> </div>
-<div class="line"><a name="l01831"></a><span class="lineno"> 1831</span> <span class="keyword">static</span> <span class="keywordtype">double</span> sigmoid_predict(<span class="keywordtype">double</span> decision_value, <span class="keywordtype">double</span> A, <span class="keywordtype">double</span> B)</div>
-<div class="line"><a name="l01832"></a><span class="lineno"> 1832</span> {</div>
-<div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>     <span class="keywordtype">double</span> fApB = decision_value*A+B;</div>
-<div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>     <span class="comment">// 1-p used later; avoid catastrophic cancellation</span></div>
-<div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>     <span class="keywordflow">if</span> (fApB >= 0)</div>
-<div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>         <span class="keywordflow">return</span> exp(-fApB)/(1.0+exp(-fApB));</div>
-<div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>         <span class="keywordflow">return</span> 1.0/(1+exp(fApB)) ;</div>
-<div class="line"><a name="l01839"></a><span class="lineno"> 1839</span> }</div>
-<div class="line"><a name="l01840"></a><span class="lineno"> 1840</span> </div>
-<div class="line"><a name="l01841"></a><span class="lineno"> 1841</span> <span class="comment">// Method 2 from the multiclass_prob paper by Wu, Lin, and Weng</span></div>
-<div class="line"><a name="l01842"></a><span class="lineno"> 1842</span> <span class="keyword">static</span> <span class="keywordtype">void</span> multiclass_probability(<span class="keywordtype">int</span> k, <span class="keywordtype">double</span> **r, <span class="keywordtype">double</span> *p)</div>
-<div class="line"><a name="l01843"></a><span class="lineno"> 1843</span> {</div>
-<div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>     <span class="keywordtype">int</span> t,j;</div>
-<div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>     <span class="keywordtype">int</span> iter = 0, max_iter=max(100,k);</div>
-<div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>     <span class="keywordtype">double</span> **Q=Malloc(<span class="keywordtype">double</span> *,k);</div>
-<div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>     <span class="keywordtype">double</span> *Qp=Malloc(<span class="keywordtype">double</span>,k);</div>
-<div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>     <span class="keywordtype">double</span> pQp, eps=0.005/k;</div>
-<div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>     </div>
-<div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>     <span class="keywordflow">for</span> (t=0;t<k;t++)</div>
-<div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>     {</div>
-<div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>         p[t]=1.0/k;  <span class="comment">// Valid if k = 1</span></div>
-<div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>         Q[t]=Malloc(<span class="keywordtype">double</span>,k);</div>
-<div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>         Q[t][t]=0;</div>
-<div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>         <span class="keywordflow">for</span> (j=0;j<t;j++)</div>
-<div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>         {</div>
-<div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>             Q[t][t]+=r[j][t]*r[j][t];</div>
-<div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>             Q[t][j]=Q[j][t];</div>
-<div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>         }</div>
-<div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>         <span class="keywordflow">for</span> (j=t+1;j<k;j++)</div>
-<div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>         {</div>
-<div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>             Q[t][t]+=r[j][t]*r[j][t];</div>
-<div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>             Q[t][j]=-r[j][t]*r[t][j];</div>
-<div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>         }</div>
-<div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>     }</div>
-<div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>     <span class="keywordflow">for</span> (iter=0;iter<max_iter;iter++)</div>
-<div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>     {</div>
-<div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>         <span class="comment">// stopping condition, recalculate QP,pQP for numerical accuracy</span></div>
-<div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>         pQp=0;</div>
-<div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>         <span class="keywordflow">for</span> (t=0;t<k;t++)</div>
-<div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>         {</div>
-<div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>             Qp[t]=0;</div>
-<div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>             <span class="keywordflow">for</span> (j=0;j<k;j++)</div>
-<div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>                 Qp[t]+=Q[t][j]*p[j];</div>
-<div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>             pQp+=p[t]*Qp[t];</div>
-<div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>         }</div>
-<div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>         <span class="keywordtype">double</span> max_error=0;</div>
-<div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>         <span class="keywordflow">for</span> (t=0;t<k;t++)</div>
-<div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>         {</div>
-<div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>             <span class="keywordtype">double</span> error=fabs(Qp[t]-pQp);</div>
-<div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>             <span class="keywordflow">if</span> (error>max_error)</div>
-<div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>                 max_error=error;</div>
-<div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>         }</div>
-<div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>         <span class="keywordflow">if</span> (max_error<eps) <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>         </div>
-<div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>         <span class="keywordflow">for</span> (t=0;t<k;t++)</div>
-<div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>         {</div>
-<div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>             <span class="keywordtype">double</span> diff=(-Qp[t]+pQp)/Q[t][t];</div>
-<div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>             p[t]+=diff;</div>
-<div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>             pQp=(pQp+diff*(diff*Q[t][t]+2*Qp[t]))/(1+diff)/(1+diff);</div>
-<div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>             <span class="keywordflow">for</span> (j=0;j<k;j++)</div>
-<div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>             {</div>
-<div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>                 Qp[j]=(Qp[j]+diff*Q[t][j])/(1+diff);</div>
-<div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>                 p[j]/=(1+diff);</div>
-<div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>             }</div>
-<div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>         }</div>
-<div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>     }</div>
-<div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>     <span class="keywordflow">if</span> (iter>=max_iter)</div>
-<div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>         info(<span class="stringliteral">"Exceeds max_iter in multiclass_prob\n"</span>);</div>
-<div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>     <span class="keywordflow">for</span>(t=0;t<k;t++) free(Q[t]);</div>
-<div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>     free(Q);</div>
-<div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>     free(Qp);</div>
-<div class="line"><a name="l01903"></a><span class="lineno"> 1903</span> }</div>
-<div class="line"><a name="l01904"></a><span class="lineno"> 1904</span> </div>
-<div class="line"><a name="l01905"></a><span class="lineno"> 1905</span> <span class="comment">// Cross-validation decision values for probability estimates</span></div>
-<div class="line"><a name="l01906"></a><span class="lineno"> 1906</span> <span class="keyword">static</span> <span class="keywordtype">void</span> svm_binary_svc_probability(</div>
-<div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>     <span class="keyword">const</span> <a class="code" href="structsvm__problem.html">svm_problem</a> *prob, <span class="keyword">const</span> <a class="code" href="structsvm__parameter.html">svm_parameter</a> *param,</div>
-<div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>     <span class="keywordtype">double</span> Cp, <span class="keywordtype">double</span> Cn, <span class="keywordtype">double</span>& probA, <span class="keywordtype">double</span>& probB)</div>
-<div class="line"><a name="l01909"></a><span class="lineno"> 1909</span> {</div>
-<div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>     <span class="keywordtype">int</span> i;</div>
-<div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>     <span class="keywordtype">int</span> nr_fold = 5;</div>
-<div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>     <span class="keywordtype">int</span> *perm = Malloc(<span class="keywordtype">int</span>,prob->l);</div>
-<div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>     <span class="keywordtype">double</span> *dec_values = Malloc(<span class="keywordtype">double</span>,prob->l);</div>
-<div class="line"><a name="l01914"></a><span class="lineno"> 1914</span> </div>
-<div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>     <span class="comment">// random shuffle</span></div>
-<div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>     <span class="keywordflow">for</span>(i=0;i<prob->l;i++) perm[i]=i;</div>
-<div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>     <span class="keywordflow">for</span>(i=0;i<prob->l;i++)</div>
-<div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>     {</div>
-<div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>         <span class="keywordtype">int</span> j = i+rand()%(prob->l-i);</div>
-<div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>         swap(perm[i],perm[j]);</div>
-<div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>     }</div>
-<div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>     <span class="keywordflow">for</span>(i=0;i<nr_fold;i++)</div>
-<div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>     {</div>
-<div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>         <span class="keywordtype">int</span> begin = i*prob->l/nr_fold;</div>
-<div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>         <span class="keywordtype">int</span> end = (i+1)*prob->l/nr_fold;</div>
-<div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>         <span class="keywordtype">int</span> j,k;</div>
-<div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>         <span class="keyword">struct</span> <a class="code" href="structsvm__problem.html">svm_problem</a> subprob;</div>
-<div class="line"><a name="l01928"></a><span class="lineno"> 1928</span> </div>
-<div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>         subprob.l = prob->l-(end-begin);</div>
-<div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>         subprob.x = Malloc(<span class="keyword">struct</span> <a class="code" href="structsvm__node.html">svm_node</a>*,subprob.l);</div>
-<div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>         subprob.y = Malloc(<span class="keywordtype">double</span>,subprob.l);</div>
-<div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>             </div>
-<div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>         k=0;</div>
-<div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>         <span class="keywordflow">for</span>(j=0;j<begin;j++)</div>
-<div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>         {</div>
-<div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>             subprob.x[k] = prob->x[perm[j]];</div>
-<div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>             subprob.y[k] = prob->y[perm[j]];</div>
-<div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>             ++k;</div>
-<div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>         }</div>
-<div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>         <span class="keywordflow">for</span>(j=end;j<prob->l;j++)</div>
-<div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>         {</div>
-<div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>             subprob.x[k] = prob->x[perm[j]];</div>
-<div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>             subprob.y[k] = prob->y[perm[j]];</div>
-<div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>             ++k;</div>
-<div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>         }</div>
-<div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>         <span class="keywordtype">int</span> p_count=0,n_count=0;</div>
-<div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>         <span class="keywordflow">for</span>(j=0;j<k;j++)</div>
-<div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>             <span class="keywordflow">if</span>(subprob.y[j]>0)</div>
-<div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>                 p_count++;</div>
-<div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>                 n_count++;</div>
-<div class="line"><a name="l01952"></a><span class="lineno"> 1952</span> </div>
-<div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>         <span class="keywordflow">if</span>(p_count==0 && n_count==0)</div>
-<div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>             <span class="keywordflow">for</span>(j=begin;j<end;j++)</div>
-<div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>                 dec_values[perm[j]] = 0;</div>
-<div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(p_count > 0 && n_count == 0)</div>
-<div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>             <span class="keywordflow">for</span>(j=begin;j<end;j++)</div>
-<div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>                 dec_values[perm[j]] = 1;</div>
-<div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(p_count == 0 && n_count > 0)</div>
-<div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>             <span class="keywordflow">for</span>(j=begin;j<end;j++)</div>
-<div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>                 dec_values[perm[j]] = -1;</div>
-<div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>         {</div>
-<div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>             <a class="code" href="structsvm__parameter.html">svm_parameter</a> subparam = *param;</div>
-<div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>             subparam.probability=0;</div>
-<div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>             subparam.C=1.0;</div>
-<div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>             subparam.nr_weight=2;</div>
-<div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>             subparam.weight_label = Malloc(<span class="keywordtype">int</span>,2);</div>
-<div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>             subparam.weight = Malloc(<span class="keywordtype">double</span>,2);</div>
-<div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>             subparam.weight_label[0]=+1;</div>
-<div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>             subparam.weight_label[1]=-1;</div>
-<div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>             subparam.weight[0]=Cp;</div>
-<div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>             subparam.weight[1]=Cn;</div>
-<div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>             <span class="keyword">struct </span><a class="code" href="structsvm__model.html">svm_model</a> *submodel = svm_train(&subprob,&subparam);</div>
-<div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>             <span class="keywordflow">for</span>(j=begin;j<end;j++)</div>
-<div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>             {</div>
-<div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>                 svm_predict_values(submodel,prob->x[perm[j]],&(dec_values[perm[j]])); </div>
-<div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>                 <span class="comment">// ensure +1 -1 order; reason not using CV subroutine</span></div>
-<div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>                 dec_values[perm[j]] *= submodel->label[0];</div>
-<div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>             }       </div>
-<div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>             svm_free_and_destroy_model(&submodel);</div>
-<div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>             svm_destroy_param(&subparam);</div>
-<div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>         }</div>
-<div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>         free(subprob.x);</div>
-<div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>         free(subprob.y);</div>
-<div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>     }       </div>
-<div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>     sigmoid_train(prob->l,dec_values,prob->y,probA,probB);</div>
-<div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>     free(dec_values);</div>
-<div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>     free(perm);</div>
-<div class="line"><a name="l01990"></a><span class="lineno"> 1990</span> }</div>
-<div class="line"><a name="l01991"></a><span class="lineno"> 1991</span> </div>
-<div class="line"><a name="l01992"></a><span class="lineno"> 1992</span> <span class="comment">// Return parameter of a Laplace distribution </span></div>
-<div class="line"><a name="l01993"></a><span class="lineno"> 1993</span> <span class="keyword">static</span> <span class="keywordtype">double</span> svm_svr_probability(</div>
-<div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>     <span class="keyword">const</span> <a class="code" href="structsvm__problem.html">svm_problem</a> *prob, <span class="keyword">const</span> <a class="code" href="structsvm__parameter.html">svm_parameter</a> *param)</div>
-<div class="line"><a name="l01995"></a><span class="lineno"> 1995</span> {</div>
-<div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>     <span class="keywordtype">int</span> i;</div>
-<div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>     <span class="keywordtype">int</span> nr_fold = 5;</div>
-<div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>     <span class="keywordtype">double</span> *ymv = Malloc(<span class="keywordtype">double</span>,prob->l);</div>
-<div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>     <span class="keywordtype">double</span> mae = 0;</div>
-<div class="line"><a name="l02000"></a><span class="lineno"> 2000</span> </div>
-<div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>     <a class="code" href="structsvm__parameter.html">svm_parameter</a> newparam = *param;</div>
-<div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>     newparam.probability = 0;</div>
-<div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>     svm_cross_validation(prob,&newparam,nr_fold,ymv);</div>
-<div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>     <span class="keywordflow">for</span>(i=0;i<prob->l;i++)</div>
-<div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>     {</div>
-<div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>         ymv[i]=prob->y[i]-ymv[i];</div>
-<div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>         mae += fabs(ymv[i]);</div>
-<div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>     }       </div>
-<div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>     mae /= prob->l;</div>
-<div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>     <span class="keywordtype">double</span> std=sqrt(2*mae*mae);</div>
-<div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>     <span class="keywordtype">int</span> count=0;</div>
-<div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>     mae=0;</div>
-<div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>     <span class="keywordflow">for</span>(i=0;i<prob->l;i++)</div>
-<div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>         <span class="keywordflow">if</span> (fabs(ymv[i]) > 5*std) </div>
-<div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>             count=count+1;</div>
-<div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>         <span class="keywordflow">else</span> </div>
-<div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>             mae+=fabs(ymv[i]);</div>
-<div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>     mae /= (prob->l-count);</div>
-<div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>     info(<span class="stringliteral">"Prob. model for test data: target value = predicted value + z,\nz: Laplace distribution e^(-|z|/sigma)/(2sigma),sigma= %g\n"</span>,mae);</div>
-<div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>     free(ymv);</div>
-<div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>     <span class="keywordflow">return</span> mae;</div>
-<div class="line"><a name="l02022"></a><span class="lineno"> 2022</span> }</div>
-<div class="line"><a name="l02023"></a><span class="lineno"> 2023</span> </div>
-<div class="line"><a name="l02024"></a><span class="lineno"> 2024</span> </div>
-<div class="line"><a name="l02025"></a><span class="lineno"> 2025</span> <span class="comment">// label: label name, start: begin of each class, count: #data of classes, perm: indices to the original data</span></div>
-<div class="line"><a name="l02026"></a><span class="lineno"> 2026</span> <span class="comment">// perm, length l, must be allocated before calling this subroutine</span></div>
-<div class="line"><a name="l02027"></a><span class="lineno"> 2027</span> <span class="keyword">static</span> <span class="keywordtype">void</span> svm_group_classes(<span class="keyword">const</span> <a class="code" href="structsvm__problem.html">svm_problem</a> *prob, <span class="keywordtype">int</span> *nr_class_ret, <span class="keywordtype">int</span> **label_ret, <span class="keywordtype">int</span> **start_ret, <span class="keywordtype">int</span> **count_ret, <span class="ke [...]
-<div class="line"><a name="l02028"></a><span class="lineno"> 2028</span> {</div>
-<div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>     <span class="keywordtype">int</span> l = prob->l;</div>
-<div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>     <span class="keywordtype">int</span> max_nr_class = 16;</div>
-<div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>     <span class="keywordtype">int</span> nr_class = 0;</div>
-<div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>     <span class="keywordtype">int</span> *label = Malloc(<span class="keywordtype">int</span>,max_nr_class);</div>
-<div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>     <span class="keywordtype">int</span> *count = Malloc(<span class="keywordtype">int</span>,max_nr_class);</div>
-<div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>     <span class="keywordtype">int</span> *data_label = Malloc(<span class="keywordtype">int</span>,l);    </div>
-<div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>     <span class="keywordtype">int</span> i;</div>
-<div class="line"><a name="l02036"></a><span class="lineno"> 2036</span> </div>
-<div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>     <span class="keywordflow">for</span>(i=0;i<l;i++)</div>
-<div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>     {</div>
-<div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>         <span class="keywordtype">int</span> this_label = (int)prob->y[i];</div>
-<div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>         <span class="keywordtype">int</span> j;</div>
-<div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>         <span class="keywordflow">for</span>(j=0;j<nr_class;j++)</div>
-<div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>         {</div>
-<div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>             <span class="keywordflow">if</span>(this_label == label[j])</div>
-<div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>             {</div>
-<div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>                 ++count[j];</div>
-<div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>                 <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>             }</div>
-<div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>         }</div>
-<div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>         data_label[i] = j;</div>
-<div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>         <span class="keywordflow">if</span>(j == nr_class)</div>
-<div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>         {</div>
-<div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>             <span class="keywordflow">if</span>(nr_class == max_nr_class)</div>
-<div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>             {</div>
-<div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>                 max_nr_class *= 2;</div>
-<div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>                 label = (<span class="keywordtype">int</span> *)realloc(label,max_nr_class*<span class="keyword">sizeof</span>(<span class="keywordtype">int</span>));</div>
-<div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>                 count = (<span class="keywordtype">int</span> *)realloc(count,max_nr_class*<span class="keyword">sizeof</span>(<span class="keywordtype">int</span>));</div>
-<div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>             }</div>
-<div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>             label[nr_class] = this_label;</div>
-<div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>             count[nr_class] = 1;</div>
-<div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>             ++nr_class;</div>
-<div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>         }</div>
-<div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>     }</div>
-<div class="line"><a name="l02063"></a><span class="lineno"> 2063</span> </div>
-<div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>     <span class="keywordtype">int</span> *start = Malloc(<span class="keywordtype">int</span>,nr_class);</div>
-<div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>     start[0] = 0;</div>
-<div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>     <span class="keywordflow">for</span>(i=1;i<nr_class;i++)</div>
-<div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>         start[i] = start[i-1]+count[i-1];</div>
-<div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>     <span class="keywordflow">for</span>(i=0;i<l;i++)</div>
-<div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>     {</div>
-<div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>         perm[start[data_label[i]]] = i;</div>
-<div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>         ++start[data_label[i]];</div>
-<div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>     }</div>
-<div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>     start[0] = 0;</div>
-<div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>     <span class="keywordflow">for</span>(i=1;i<nr_class;i++)</div>
-<div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>         start[i] = start[i-1]+count[i-1];</div>
-<div class="line"><a name="l02076"></a><span class="lineno"> 2076</span> </div>
-<div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>     *nr_class_ret = nr_class;</div>
-<div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>     *label_ret = label;</div>
-<div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>     *start_ret = start;</div>
-<div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>     *count_ret = count;</div>
-<div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>     free(data_label);</div>
-<div class="line"><a name="l02082"></a><span class="lineno"> 2082</span> }</div>
-<div class="line"><a name="l02083"></a><span class="lineno"> 2083</span> </div>
-<div class="line"><a name="l02084"></a><span class="lineno"> 2084</span> <span class="comment">//</span></div>
-<div class="line"><a name="l02085"></a><span class="lineno"> 2085</span> <span class="comment">// Interface functions</span></div>
-<div class="line"><a name="l02086"></a><span class="lineno"> 2086</span> <span class="comment">//</span></div>
-<div class="line"><a name="l02087"></a><span class="lineno"> 2087</span> <a class="code" href="structsvm__model.html">svm_model</a> *svm_train(<span class="keyword">const</span> <a class="code" href="structsvm__problem.html">svm_problem</a> *prob, <span class="keyword">const</span> <a class="code" href="structsvm__parameter.html">svm_parameter</a> *param)</div>
-<div class="line"><a name="l02088"></a><span class="lineno"> 2088</span> {</div>
-<div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>     <a class="code" href="structsvm__model.html">svm_model</a> *model = Malloc(<a class="code" href="structsvm__model.html">svm_model</a>,1);</div>
-<div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>     model->param = *param;</div>
-<div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>     model->free_sv = 0; <span class="comment">// XXX</span></div>
-<div class="line"><a name="l02092"></a><span class="lineno"> 2092</span> </div>
-<div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>     <span class="keywordflow">if</span>(param->svm_type == ONE_CLASS ||</div>
-<div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>        param->svm_type == EPSILON_SVR ||</div>
-<div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>        param->svm_type == NU_SVR)</div>
-<div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>     {</div>
-<div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>         <span class="comment">// regression or one-class-svm</span></div>
-<div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>         model->nr_class = 2;</div>
-<div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>         model->label = NULL;</div>
-<div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>         model->nSV = NULL;</div>
-<div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>         model->probA = NULL; model->probB = NULL;</div>
-<div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>         model->sv_coef = Malloc(<span class="keywordtype">double</span> *,1);</div>
-<div class="line"><a name="l02103"></a><span class="lineno"> 2103</span> </div>
-<div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>         <span class="keywordflow">if</span>(param->probability && </div>
-<div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>            (param->svm_type == EPSILON_SVR ||</div>
-<div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>             param->svm_type == NU_SVR))</div>
-<div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>         {</div>
-<div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>             model->probA = Malloc(<span class="keywordtype">double</span>,1);</div>
-<div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>             model->probA[0] = svm_svr_probability(prob,param);</div>
-<div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>         }</div>
-<div class="line"><a name="l02111"></a><span class="lineno"> 2111</span> </div>
-<div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>         <a class="code" href="structdecision__function.html">decision_function</a> f = svm_train_one(prob,param,0,0);</div>
-<div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>         model->rho = Malloc(<span class="keywordtype">double</span>,1);</div>
-<div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>         model->rho[0] = f.rho;</div>
-<div class="line"><a name="l02115"></a><span class="lineno"> 2115</span> </div>
-<div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>         <span class="keywordtype">int</span> nSV = 0;</div>
-<div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>         <span class="keywordtype">int</span> i;</div>
-<div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>         <span class="keywordflow">for</span>(i=0;i<prob->l;i++)</div>
-<div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>             <span class="keywordflow">if</span>(fabs(f.alpha[i]) > 0) ++nSV;</div>
-<div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>         model->l = nSV;</div>
-<div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>         model->SV = Malloc(<a class="code" href="structsvm__node.html">svm_node</a> *,nSV);</div>
-<div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>         model->sv_coef[0] = Malloc(<span class="keywordtype">double</span>,nSV);</div>
-<div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>         <span class="keywordtype">int</span> j = 0;</div>
-<div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>         <span class="keywordflow">for</span>(i=0;i<prob->l;i++)</div>
-<div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>             <span class="keywordflow">if</span>(fabs(f.alpha[i]) > 0)</div>
-<div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>             {</div>
-<div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>                 model->SV[j] = prob->x[i];</div>
-<div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>                 model->sv_coef[0][j] = f.alpha[i];</div>
-<div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>                 ++j;</div>
-<div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>             }       </div>
-<div class="line"><a name="l02131"></a><span class="lineno"> 2131</span> </div>
-<div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>         free(f.alpha);</div>
-<div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>     }</div>
-<div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>     {</div>
-<div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>         <span class="comment">// classification</span></div>
-<div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>         <span class="keywordtype">int</span> l = prob->l;</div>
-<div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>         <span class="keywordtype">int</span> nr_class;</div>
-<div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>         <span class="keywordtype">int</span> *label = NULL;</div>
-<div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>         <span class="keywordtype">int</span> *start = NULL;</div>
-<div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>         <span class="keywordtype">int</span> *count = NULL;</div>
-<div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>         <span class="keywordtype">int</span> *perm = Malloc(<span class="keywordtype">int</span>,l);</div>
-<div class="line"><a name="l02143"></a><span class="lineno"> 2143</span> </div>
-<div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>         <span class="comment">// group training data of the same class</span></div>
-<div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>         svm_group_classes(prob,&nr_class,&label,&start,&count,perm);</div>
-<div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>         <span class="keywordflow">if</span>(nr_class == 1) </div>
-<div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>             info(<span class="stringliteral">"WARNING: training data in only one class. See README for details.\n"</span>);</div>
-<div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>         </div>
-<div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>         <a class="code" href="structsvm__node.html">svm_node</a> **x = Malloc(<a class="code" href="structsvm__node.html">svm_node</a> *,l);</div>
-<div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>         <span class="keywordtype">int</span> i;</div>
-<div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>         <span class="keywordflow">for</span>(i=0;i<l;i++)</div>
-<div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>             x[i] = prob->x[perm[i]];</div>
-<div class="line"><a name="l02153"></a><span class="lineno"> 2153</span> </div>
-<div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>         <span class="comment">// calculate weighted C</span></div>
-<div class="line"><a name="l02155"></a><span class="lineno"> 2155</span> </div>
-<div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>         <span class="keywordtype">double</span> *weighted_C = Malloc(<span class="keywordtype">double</span>, nr_class);</div>
-<div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>         <span class="keywordflow">for</span>(i=0;i<nr_class;i++)</div>
-<div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>             weighted_C[i] = param->C;</div>
-<div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>         <span class="keywordflow">for</span>(i=0;i<param->nr_weight;i++)</div>
-<div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>         {   </div>
-<div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>             <span class="keywordtype">int</span> j;</div>
-<div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>             <span class="keywordflow">for</span>(j=0;j<nr_class;j++)</div>
-<div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>                 <span class="keywordflow">if</span>(param->weight_label[i] == label[j])</div>
-<div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>                     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>             <span class="keywordflow">if</span>(j == nr_class)</div>
-<div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>                 fprintf(stderr,<span class="stringliteral">"WARNING: class label %d specified in weight is not found\n"</span>, param->weight_label[i]);</div>
-<div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>             <span class="keywordflow">else</span></div>
-<div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>                 weighted_C[j] *= param->weight[i];</div>
-<div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>         }</div>
-<div class="line"><a name="l02170"></a><span class="lineno"> 2170</span> </div>
-<div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>         <span class="comment">// train k*(k-1)/2 models</span></div>
-<div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>         </div>
-<div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>         <span class="keywordtype">bool</span> *nonzero = Malloc(<span class="keywordtype">bool</span>,l);</div>
-<div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>         <span class="keywordflow">for</span>(i=0;i<l;i++)</div>
-<div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>             nonzero[i] = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>         <a class="code" href="structdecision__function.html">decision_function</a> *f = Malloc(<a class="code" href="structdecision__function.html">decision_function</a>,nr_class*(nr_class-1)/2);</div>
-<div class="line"><a name="l02177"></a><span class="lineno"> 2177</span> </div>
-<div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>         <span class="keywordtype">double</span> *probA=NULL,*probB=NULL;</div>
-<div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>         <span class="keywordflow">if</span> (param->probability)</div>
-<div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>         {</div>
-<div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>             probA=Malloc(<span class="keywordtype">double</span>,nr_class*(nr_class-1)/2);</div>
-<div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>             probB=Malloc(<span class="keywordtype">double</span>,nr_class*(nr_class-1)/2);</div>
-<div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>         }</div>
-<div class="line"><a name="l02184"></a><span class="lineno"> 2184</span> </div>
-<div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>         <span class="keywordtype">int</span> p = 0;</div>
-<div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>         <span class="keywordflow">for</span>(i=0;i<nr_class;i++)</div>
-<div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=i+1;j<nr_class;j++)</div>
-<div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>             {</div>
-<div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>                 <a class="code" href="structsvm__problem.html">svm_problem</a> sub_prob;</div>
-<div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>                 <span class="keywordtype">int</span> si = start[i], sj = start[j];</div>
-<div class="line"><a name="l02191"></a><span class="lineno"> 2191</span>                 <span class="keywordtype">int</span> ci = count[i], cj = count[j];</div>
-<div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>                 sub_prob.l = ci+cj;</div>
-<div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>                 sub_prob.x = Malloc(<a class="code" href="structsvm__node.html">svm_node</a> *,sub_prob.l);</div>
-<div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>                 sub_prob.y = Malloc(<span class="keywordtype">double</span>,sub_prob.l);</div>
-<div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>                 <span class="keywordtype">int</span> k;</div>
-<div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>                 <span class="keywordflow">for</span>(k=0;k<ci;k++)</div>
-<div class="line"><a name="l02197"></a><span class="lineno"> 2197</span>                 {</div>
-<div class="line"><a name="l02198"></a><span class="lineno"> 2198</span>                     sub_prob.x[k] = x[si+k];</div>
-<div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>                     sub_prob.y[k] = +1;</div>
-<div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>                 }</div>
-<div class="line"><a name="l02201"></a><span class="lineno"> 2201</span>                 <span class="keywordflow">for</span>(k=0;k<cj;k++)</div>
-<div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>                 {</div>
-<div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>                     sub_prob.x[ci+k] = x[sj+k];</div>
-<div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>                     sub_prob.y[ci+k] = -1;</div>
-<div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>                 }</div>
-<div class="line"><a name="l02206"></a><span class="lineno"> 2206</span> </div>
-<div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>                 <span class="keywordflow">if</span>(param->probability)</div>
-<div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>                     svm_binary_svc_probability(&sub_prob,param,weighted_C[i],weighted_C[j],probA[p],probB[p]);</div>
-<div class="line"><a name="l02209"></a><span class="lineno"> 2209</span> </div>
-<div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>                 f[p] = svm_train_one(&sub_prob,param,weighted_C[i],weighted_C[j]);</div>
-<div class="line"><a name="l02211"></a><span class="lineno"> 2211</span>                 <span class="keywordflow">for</span>(k=0;k<ci;k++)</div>
-<div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>                     <span class="keywordflow">if</span>(!nonzero[si+k] && fabs(f[p].alpha[k]) > 0)</div>
-<div class="line"><a name="l02213"></a><span class="lineno"> 2213</span>                         nonzero[si+k] = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>                 <span class="keywordflow">for</span>(k=0;k<cj;k++)</div>
-<div class="line"><a name="l02215"></a><span class="lineno"> 2215</span>                     <span class="keywordflow">if</span>(!nonzero[sj+k] && fabs(f[p].alpha[ci+k]) > 0)</div>
-<div class="line"><a name="l02216"></a><span class="lineno"> 2216</span>                         nonzero[sj+k] = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>                 free(sub_prob.x);</div>
-<div class="line"><a name="l02218"></a><span class="lineno"> 2218</span>                 free(sub_prob.y);</div>
-<div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>                 ++p;</div>
-<div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>             }</div>
-<div class="line"><a name="l02221"></a><span class="lineno"> 2221</span> </div>
-<div class="line"><a name="l02222"></a><span class="lineno"> 2222</span>         <span class="comment">// build output</span></div>
-<div class="line"><a name="l02223"></a><span class="lineno"> 2223</span> </div>
-<div class="line"><a name="l02224"></a><span class="lineno"> 2224</span>         model->nr_class = nr_class;</div>
-<div class="line"><a name="l02225"></a><span class="lineno"> 2225</span>         </div>
-<div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>         model->label = Malloc(<span class="keywordtype">int</span>,nr_class);</div>
-<div class="line"><a name="l02227"></a><span class="lineno"> 2227</span>         <span class="keywordflow">for</span>(i=0;i<nr_class;i++)</div>
-<div class="line"><a name="l02228"></a><span class="lineno"> 2228</span>             model->label[i] = label[i];</div>
-<div class="line"><a name="l02229"></a><span class="lineno"> 2229</span>         </div>
-<div class="line"><a name="l02230"></a><span class="lineno"> 2230</span>         model->rho = Malloc(<span class="keywordtype">double</span>,nr_class*(nr_class-1)/2);</div>
-<div class="line"><a name="l02231"></a><span class="lineno"> 2231</span>         <span class="keywordflow">for</span>(i=0;i<nr_class*(nr_class-1)/2;i++)</div>
-<div class="line"><a name="l02232"></a><span class="lineno"> 2232</span>             model->rho[i] = f[i].rho;</div>
-<div class="line"><a name="l02233"></a><span class="lineno"> 2233</span> </div>
-<div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>         <span class="keywordflow">if</span>(param->probability)</div>
-<div class="line"><a name="l02235"></a><span class="lineno"> 2235</span>         {</div>
-<div class="line"><a name="l02236"></a><span class="lineno"> 2236</span>             model->probA = Malloc(<span class="keywordtype">double</span>,nr_class*(nr_class-1)/2);</div>
-<div class="line"><a name="l02237"></a><span class="lineno"> 2237</span>             model->probB = Malloc(<span class="keywordtype">double</span>,nr_class*(nr_class-1)/2);</div>
-<div class="line"><a name="l02238"></a><span class="lineno"> 2238</span>             <span class="keywordflow">for</span>(i=0;i<nr_class*(nr_class-1)/2;i++)</div>
-<div class="line"><a name="l02239"></a><span class="lineno"> 2239</span>             {</div>
-<div class="line"><a name="l02240"></a><span class="lineno"> 2240</span>                 model->probA[i] = probA[i];</div>
-<div class="line"><a name="l02241"></a><span class="lineno"> 2241</span>                 model->probB[i] = probB[i];</div>
-<div class="line"><a name="l02242"></a><span class="lineno"> 2242</span>             }</div>
-<div class="line"><a name="l02243"></a><span class="lineno"> 2243</span>         }</div>
-<div class="line"><a name="l02244"></a><span class="lineno"> 2244</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l02245"></a><span class="lineno"> 2245</span>         {</div>
-<div class="line"><a name="l02246"></a><span class="lineno"> 2246</span>             model->probA=NULL;</div>
-<div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>             model->probB=NULL;</div>
-<div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>         }</div>
-<div class="line"><a name="l02249"></a><span class="lineno"> 2249</span> </div>
-<div class="line"><a name="l02250"></a><span class="lineno"> 2250</span>         <span class="keywordtype">int</span> total_sv = 0;</div>
-<div class="line"><a name="l02251"></a><span class="lineno"> 2251</span>         <span class="keywordtype">int</span> *nz_count = Malloc(<span class="keywordtype">int</span>,nr_class);</div>
-<div class="line"><a name="l02252"></a><span class="lineno"> 2252</span>         model->nSV = Malloc(<span class="keywordtype">int</span>,nr_class);</div>
-<div class="line"><a name="l02253"></a><span class="lineno"> 2253</span>         <span class="keywordflow">for</span>(i=0;i<nr_class;i++)</div>
-<div class="line"><a name="l02254"></a><span class="lineno"> 2254</span>         {</div>
-<div class="line"><a name="l02255"></a><span class="lineno"> 2255</span>             <span class="keywordtype">int</span> nSV = 0;</div>
-<div class="line"><a name="l02256"></a><span class="lineno"> 2256</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=0;j<count[i];j++)</div>
-<div class="line"><a name="l02257"></a><span class="lineno"> 2257</span>                 <span class="keywordflow">if</span>(nonzero[start[i]+j])</div>
-<div class="line"><a name="l02258"></a><span class="lineno"> 2258</span>                 {   </div>
-<div class="line"><a name="l02259"></a><span class="lineno"> 2259</span>                     ++nSV;</div>
-<div class="line"><a name="l02260"></a><span class="lineno"> 2260</span>                     ++total_sv;</div>
-<div class="line"><a name="l02261"></a><span class="lineno"> 2261</span>                 }</div>
-<div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>             model->nSV[i] = nSV;</div>
-<div class="line"><a name="l02263"></a><span class="lineno"> 2263</span>             nz_count[i] = nSV;</div>
-<div class="line"><a name="l02264"></a><span class="lineno"> 2264</span>         }</div>
-<div class="line"><a name="l02265"></a><span class="lineno"> 2265</span>         </div>
-<div class="line"><a name="l02266"></a><span class="lineno"> 2266</span>                 <span class="keywordflow">if</span>(param->verbose)<span class="comment">//pk</span></div>
-<div class="line"><a name="l02267"></a><span class="lineno"> 2267</span>                   info(<span class="stringliteral">"Total nSV = %d\n"</span>,total_sv);</div>
-<div class="line"><a name="l02268"></a><span class="lineno"> 2268</span> </div>
-<div class="line"><a name="l02269"></a><span class="lineno"> 2269</span>         model->l = total_sv;</div>
-<div class="line"><a name="l02270"></a><span class="lineno"> 2270</span>         model->SV = Malloc(<a class="code" href="structsvm__node.html">svm_node</a> *,total_sv);</div>
-<div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>         p = 0;</div>
-<div class="line"><a name="l02272"></a><span class="lineno"> 2272</span>         <span class="keywordflow">for</span>(i=0;i<l;i++)</div>
-<div class="line"><a name="l02273"></a><span class="lineno"> 2273</span>             <span class="keywordflow">if</span>(nonzero[i]) model->SV[p++] = x[i];</div>
-<div class="line"><a name="l02274"></a><span class="lineno"> 2274</span> </div>
-<div class="line"><a name="l02275"></a><span class="lineno"> 2275</span>         <span class="keywordtype">int</span> *nz_start = Malloc(<span class="keywordtype">int</span>,nr_class);</div>
-<div class="line"><a name="l02276"></a><span class="lineno"> 2276</span>         nz_start[0] = 0;</div>
-<div class="line"><a name="l02277"></a><span class="lineno"> 2277</span>         <span class="keywordflow">for</span>(i=1;i<nr_class;i++)</div>
-<div class="line"><a name="l02278"></a><span class="lineno"> 2278</span>             nz_start[i] = nz_start[i-1]+nz_count[i-1];</div>
-<div class="line"><a name="l02279"></a><span class="lineno"> 2279</span> </div>
-<div class="line"><a name="l02280"></a><span class="lineno"> 2280</span>         model->sv_coef = Malloc(<span class="keywordtype">double</span> *,nr_class-1);</div>
-<div class="line"><a name="l02281"></a><span class="lineno"> 2281</span>         <span class="keywordflow">for</span>(i=0;i<nr_class-1;i++)</div>
-<div class="line"><a name="l02282"></a><span class="lineno"> 2282</span>             model->sv_coef[i] = Malloc(<span class="keywordtype">double</span>,total_sv);</div>
-<div class="line"><a name="l02283"></a><span class="lineno"> 2283</span> </div>
-<div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>         p = 0;</div>
-<div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>         <span class="keywordflow">for</span>(i=0;i<nr_class;i++)</div>
-<div class="line"><a name="l02286"></a><span class="lineno"> 2286</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=i+1;j<nr_class;j++)</div>
-<div class="line"><a name="l02287"></a><span class="lineno"> 2287</span>             {</div>
-<div class="line"><a name="l02288"></a><span class="lineno"> 2288</span>                 <span class="comment">// classifier (i,j): coefficients with</span></div>
-<div class="line"><a name="l02289"></a><span class="lineno"> 2289</span>                 <span class="comment">// i are in sv_coef[j-1][nz_start[i]...],</span></div>
-<div class="line"><a name="l02290"></a><span class="lineno"> 2290</span>                 <span class="comment">// j are in sv_coef[i][nz_start[j]...]</span></div>
-<div class="line"><a name="l02291"></a><span class="lineno"> 2291</span> </div>
-<div class="line"><a name="l02292"></a><span class="lineno"> 2292</span>                 <span class="keywordtype">int</span> si = start[i];</div>
-<div class="line"><a name="l02293"></a><span class="lineno"> 2293</span>                 <span class="keywordtype">int</span> sj = start[j];</div>
-<div class="line"><a name="l02294"></a><span class="lineno"> 2294</span>                 <span class="keywordtype">int</span> ci = count[i];</div>
-<div class="line"><a name="l02295"></a><span class="lineno"> 2295</span>                 <span class="keywordtype">int</span> cj = count[j];</div>
-<div class="line"><a name="l02296"></a><span class="lineno"> 2296</span>                 </div>
-<div class="line"><a name="l02297"></a><span class="lineno"> 2297</span>                 <span class="keywordtype">int</span> q = nz_start[i];</div>
-<div class="line"><a name="l02298"></a><span class="lineno"> 2298</span>                 <span class="keywordtype">int</span> k;</div>
-<div class="line"><a name="l02299"></a><span class="lineno"> 2299</span>                 <span class="keywordflow">for</span>(k=0;k<ci;k++)</div>
-<div class="line"><a name="l02300"></a><span class="lineno"> 2300</span>                     <span class="keywordflow">if</span>(nonzero[si+k])</div>
-<div class="line"><a name="l02301"></a><span class="lineno"> 2301</span>                         model->sv_coef[j-1][q++] = f[p].alpha[k];</div>
-<div class="line"><a name="l02302"></a><span class="lineno"> 2302</span>                 q = nz_start[j];</div>
-<div class="line"><a name="l02303"></a><span class="lineno"> 2303</span>                 <span class="keywordflow">for</span>(k=0;k<cj;k++)</div>
-<div class="line"><a name="l02304"></a><span class="lineno"> 2304</span>                     <span class="keywordflow">if</span>(nonzero[sj+k])</div>
-<div class="line"><a name="l02305"></a><span class="lineno"> 2305</span>                         model->sv_coef[i][q++] = f[p].alpha[ci+k];</div>
-<div class="line"><a name="l02306"></a><span class="lineno"> 2306</span>                 ++p;</div>
-<div class="line"><a name="l02307"></a><span class="lineno"> 2307</span>             }</div>
-<div class="line"><a name="l02308"></a><span class="lineno"> 2308</span>         </div>
-<div class="line"><a name="l02309"></a><span class="lineno"> 2309</span>         free(label);</div>
-<div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>         free(probA);</div>
-<div class="line"><a name="l02311"></a><span class="lineno"> 2311</span>         free(probB);</div>
-<div class="line"><a name="l02312"></a><span class="lineno"> 2312</span>         free(count);</div>
-<div class="line"><a name="l02313"></a><span class="lineno"> 2313</span>         free(perm);</div>
-<div class="line"><a name="l02314"></a><span class="lineno"> 2314</span>         free(start);</div>
-<div class="line"><a name="l02315"></a><span class="lineno"> 2315</span>         free(x);</div>
-<div class="line"><a name="l02316"></a><span class="lineno"> 2316</span>         free(weighted_C);</div>
-<div class="line"><a name="l02317"></a><span class="lineno"> 2317</span>         free(nonzero);</div>
-<div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>         <span class="keywordflow">for</span>(i=0;i<nr_class*(nr_class-1)/2;i++)</div>
-<div class="line"><a name="l02319"></a><span class="lineno"> 2319</span>             free(f[i].alpha);</div>
-<div class="line"><a name="l02320"></a><span class="lineno"> 2320</span>         free(f);</div>
-<div class="line"><a name="l02321"></a><span class="lineno"> 2321</span>         free(nz_count);</div>
-<div class="line"><a name="l02322"></a><span class="lineno"> 2322</span>         free(nz_start);</div>
-<div class="line"><a name="l02323"></a><span class="lineno"> 2323</span>     }</div>
-<div class="line"><a name="l02324"></a><span class="lineno"> 2324</span>     <span class="keywordflow">return</span> model;</div>
-<div class="line"><a name="l02325"></a><span class="lineno"> 2325</span> }</div>
-<div class="line"><a name="l02326"></a><span class="lineno"> 2326</span> </div>
-<div class="line"><a name="l02327"></a><span class="lineno"> 2327</span> <span class="comment">// Stratified cross validation</span></div>
-<div class="line"><a name="l02328"></a><span class="lineno"> 2328</span> <span class="keywordtype">void</span> svm_cross_validation(<span class="keyword">const</span> <a class="code" href="structsvm__problem.html">svm_problem</a> *prob, <span class="keyword">const</span> <a class="code" href="structsvm__parameter.html">svm_parameter</a> *param, <span class="keywordtype">int</span> nr_fold, <span class="keywordtype">double</span> *target)</div>
-<div class="line"><a name="l02329"></a><span class="lineno"> 2329</span> {</div>
-<div class="line"><a name="l02330"></a><span class="lineno"> 2330</span>     <span class="keywordtype">int</span> i;</div>
-<div class="line"><a name="l02331"></a><span class="lineno"> 2331</span>     <span class="keywordtype">int</span> *fold_start = Malloc(<span class="keywordtype">int</span>,nr_fold+1);</div>
-<div class="line"><a name="l02332"></a><span class="lineno"> 2332</span>     <span class="keywordtype">int</span> l = prob->l;</div>
-<div class="line"><a name="l02333"></a><span class="lineno"> 2333</span>     <span class="keywordtype">int</span> *perm = Malloc(<span class="keywordtype">int</span>,l);</div>
-<div class="line"><a name="l02334"></a><span class="lineno"> 2334</span>     <span class="keywordtype">int</span> nr_class;</div>
-<div class="line"><a name="l02335"></a><span class="lineno"> 2335</span> </div>
-<div class="line"><a name="l02336"></a><span class="lineno"> 2336</span>     <span class="comment">// stratified cv may not give leave-one-out rate</span></div>
-<div class="line"><a name="l02337"></a><span class="lineno"> 2337</span>     <span class="comment">// Each class to l folds -> some folds may have zero elements</span></div>
-<div class="line"><a name="l02338"></a><span class="lineno"> 2338</span>     <span class="keywordflow">if</span>((param->svm_type == C_SVC ||</div>
-<div class="line"><a name="l02339"></a><span class="lineno"> 2339</span>         param->svm_type == NU_SVC) && nr_fold < l)</div>
-<div class="line"><a name="l02340"></a><span class="lineno"> 2340</span>     {</div>
-<div class="line"><a name="l02341"></a><span class="lineno"> 2341</span>         <span class="keywordtype">int</span> *start = NULL;</div>
-<div class="line"><a name="l02342"></a><span class="lineno"> 2342</span>         <span class="keywordtype">int</span> *label = NULL;</div>
-<div class="line"><a name="l02343"></a><span class="lineno"> 2343</span>         <span class="keywordtype">int</span> *count = NULL;</div>
-<div class="line"><a name="l02344"></a><span class="lineno"> 2344</span>         svm_group_classes(prob,&nr_class,&label,&start,&count,perm);</div>
-<div class="line"><a name="l02345"></a><span class="lineno"> 2345</span> </div>
-<div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>         <span class="comment">// random shuffle and then data grouped by fold using the array perm</span></div>
-<div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>         <span class="keywordtype">int</span> *fold_count = Malloc(<span class="keywordtype">int</span>,nr_fold);</div>
-<div class="line"><a name="l02348"></a><span class="lineno"> 2348</span>         <span class="keywordtype">int</span> c;</div>
-<div class="line"><a name="l02349"></a><span class="lineno"> 2349</span>         <span class="keywordtype">int</span> *index = Malloc(<span class="keywordtype">int</span>,l);</div>
-<div class="line"><a name="l02350"></a><span class="lineno"> 2350</span>         <span class="keywordflow">for</span>(i=0;i<l;i++)</div>
-<div class="line"><a name="l02351"></a><span class="lineno"> 2351</span>             index[i]=perm[i];</div>
-<div class="line"><a name="l02352"></a><span class="lineno"> 2352</span>         <span class="keywordflow">for</span> (c=0; c<nr_class; c++) </div>
-<div class="line"><a name="l02353"></a><span class="lineno"> 2353</span>             <span class="keywordflow">for</span>(i=0;i<count[c];i++)</div>
-<div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>             {</div>
-<div class="line"><a name="l02355"></a><span class="lineno"> 2355</span>                 <span class="keywordtype">int</span> j = i+rand()%(count[c]-i);</div>
-<div class="line"><a name="l02356"></a><span class="lineno"> 2356</span>                 swap(index[start[c]+j],index[start[c]+i]);</div>
-<div class="line"><a name="l02357"></a><span class="lineno"> 2357</span>             }</div>
-<div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>         <span class="keywordflow">for</span>(i=0;i<nr_fold;i++)</div>
-<div class="line"><a name="l02359"></a><span class="lineno"> 2359</span>         {</div>
-<div class="line"><a name="l02360"></a><span class="lineno"> 2360</span>             fold_count[i] = 0;</div>
-<div class="line"><a name="l02361"></a><span class="lineno"> 2361</span>             <span class="keywordflow">for</span> (c=0; c<nr_class;c++)</div>
-<div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>                 fold_count[i]+=(i+1)*count[c]/nr_fold-i*count[c]/nr_fold;</div>
-<div class="line"><a name="l02363"></a><span class="lineno"> 2363</span>         }</div>
-<div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>         fold_start[0]=0;</div>
-<div class="line"><a name="l02365"></a><span class="lineno"> 2365</span>         <span class="keywordflow">for</span> (i=1;i<=nr_fold;i++)</div>
-<div class="line"><a name="l02366"></a><span class="lineno"> 2366</span>             fold_start[i] = fold_start[i-1]+fold_count[i-1];</div>
-<div class="line"><a name="l02367"></a><span class="lineno"> 2367</span>         <span class="keywordflow">for</span> (c=0; c<nr_class;c++)</div>
-<div class="line"><a name="l02368"></a><span class="lineno"> 2368</span>             <span class="keywordflow">for</span>(i=0;i<nr_fold;i++)</div>
-<div class="line"><a name="l02369"></a><span class="lineno"> 2369</span>             {</div>
-<div class="line"><a name="l02370"></a><span class="lineno"> 2370</span>                 <span class="keywordtype">int</span> begin = start[c]+i*count[c]/nr_fold;</div>
-<div class="line"><a name="l02371"></a><span class="lineno"> 2371</span>                 <span class="keywordtype">int</span> end = start[c]+(i+1)*count[c]/nr_fold;</div>
-<div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>                 <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=begin;j<end;j++)</div>
-<div class="line"><a name="l02373"></a><span class="lineno"> 2373</span>                 {</div>
-<div class="line"><a name="l02374"></a><span class="lineno"> 2374</span>                     perm[fold_start[i]] = index[j];</div>
-<div class="line"><a name="l02375"></a><span class="lineno"> 2375</span>                     fold_start[i]++;</div>
-<div class="line"><a name="l02376"></a><span class="lineno"> 2376</span>                 }</div>
-<div class="line"><a name="l02377"></a><span class="lineno"> 2377</span>             }</div>
-<div class="line"><a name="l02378"></a><span class="lineno"> 2378</span>         fold_start[0]=0;</div>
-<div class="line"><a name="l02379"></a><span class="lineno"> 2379</span>         <span class="keywordflow">for</span> (i=1;i<=nr_fold;i++)</div>
-<div class="line"><a name="l02380"></a><span class="lineno"> 2380</span>             fold_start[i] = fold_start[i-1]+fold_count[i-1];</div>
-<div class="line"><a name="l02381"></a><span class="lineno"> 2381</span>         free(start);    </div>
-<div class="line"><a name="l02382"></a><span class="lineno"> 2382</span>         free(label);</div>
-<div class="line"><a name="l02383"></a><span class="lineno"> 2383</span>         free(count);    </div>
-<div class="line"><a name="l02384"></a><span class="lineno"> 2384</span>         free(index);</div>
-<div class="line"><a name="l02385"></a><span class="lineno"> 2385</span>         free(fold_count);</div>
-<div class="line"><a name="l02386"></a><span class="lineno"> 2386</span>     }</div>
-<div class="line"><a name="l02387"></a><span class="lineno"> 2387</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l02388"></a><span class="lineno"> 2388</span>     {</div>
-<div class="line"><a name="l02389"></a><span class="lineno"> 2389</span>         <span class="keywordflow">for</span>(i=0;i<l;i++) perm[i]=i;</div>
-<div class="line"><a name="l02390"></a><span class="lineno"> 2390</span>         <span class="keywordflow">for</span>(i=0;i<l;i++)</div>
-<div class="line"><a name="l02391"></a><span class="lineno"> 2391</span>         {</div>
-<div class="line"><a name="l02392"></a><span class="lineno"> 2392</span>             <span class="keywordtype">int</span> j = i+rand()%(l-i);</div>
-<div class="line"><a name="l02393"></a><span class="lineno"> 2393</span>             swap(perm[i],perm[j]);</div>
-<div class="line"><a name="l02394"></a><span class="lineno"> 2394</span>         }</div>
-<div class="line"><a name="l02395"></a><span class="lineno"> 2395</span>         <span class="keywordflow">for</span>(i=0;i<=nr_fold;i++)</div>
-<div class="line"><a name="l02396"></a><span class="lineno"> 2396</span>             fold_start[i]=i*l/nr_fold;</div>
-<div class="line"><a name="l02397"></a><span class="lineno"> 2397</span>     }</div>
-<div class="line"><a name="l02398"></a><span class="lineno"> 2398</span> </div>
-<div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>     <span class="keywordflow">for</span>(i=0;i<nr_fold;i++)</div>
-<div class="line"><a name="l02400"></a><span class="lineno"> 2400</span>     {</div>
-<div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>         <span class="keywordtype">int</span> begin = fold_start[i];</div>
-<div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>         <span class="keywordtype">int</span> end = fold_start[i+1];</div>
-<div class="line"><a name="l02403"></a><span class="lineno"> 2403</span>         <span class="keywordtype">int</span> j,k;</div>
-<div class="line"><a name="l02404"></a><span class="lineno"> 2404</span>         <span class="keyword">struct </span><a class="code" href="structsvm__problem.html">svm_problem</a> subprob;</div>
-<div class="line"><a name="l02405"></a><span class="lineno"> 2405</span> </div>
-<div class="line"><a name="l02406"></a><span class="lineno"> 2406</span>         subprob.l = l-(end-begin);</div>
-<div class="line"><a name="l02407"></a><span class="lineno"> 2407</span>         subprob.x = Malloc(<span class="keyword">struct</span> <a class="code" href="structsvm__node.html">svm_node</a>*,subprob.l);</div>
-<div class="line"><a name="l02408"></a><span class="lineno"> 2408</span>         subprob.y = Malloc(<span class="keywordtype">double</span>,subprob.l);</div>
-<div class="line"><a name="l02409"></a><span class="lineno"> 2409</span>             </div>
-<div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>         k=0;</div>
-<div class="line"><a name="l02411"></a><span class="lineno"> 2411</span>         <span class="keywordflow">for</span>(j=0;j<begin;j++)</div>
-<div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>         {</div>
-<div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>             subprob.x[k] = prob->x[perm[j]];</div>
-<div class="line"><a name="l02414"></a><span class="lineno"> 2414</span>             subprob.y[k] = prob->y[perm[j]];</div>
-<div class="line"><a name="l02415"></a><span class="lineno"> 2415</span>             ++k;</div>
-<div class="line"><a name="l02416"></a><span class="lineno"> 2416</span>         }</div>
-<div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>         <span class="keywordflow">for</span>(j=end;j<l;j++)</div>
-<div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>         {</div>
-<div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>             subprob.x[k] = prob->x[perm[j]];</div>
-<div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>             subprob.y[k] = prob->y[perm[j]];</div>
-<div class="line"><a name="l02421"></a><span class="lineno"> 2421</span>             ++k;</div>
-<div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>         }</div>
-<div class="line"><a name="l02423"></a><span class="lineno"> 2423</span>         <span class="keyword">struct </span><a class="code" href="structsvm__model.html">svm_model</a> *submodel = svm_train(&subprob,param);</div>
-<div class="line"><a name="l02424"></a><span class="lineno"> 2424</span>         <span class="keywordflow">if</span>(param->probability && </div>
-<div class="line"><a name="l02425"></a><span class="lineno"> 2425</span>            (param->svm_type == C_SVC || param->svm_type == NU_SVC))</div>
-<div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>         {</div>
-<div class="line"><a name="l02427"></a><span class="lineno"> 2427</span>             <span class="keywordtype">double</span> *prob_estimates=Malloc(<span class="keywordtype">double</span>,svm_get_nr_class(submodel));</div>
-<div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>             <span class="keywordflow">for</span>(j=begin;j<end;j++)</div>
-<div class="line"><a name="l02429"></a><span class="lineno"> 2429</span>                 target[perm[j]] = svm_predict_probability(submodel,prob->x[perm[j]],prob_estimates);</div>
-<div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>             free(prob_estimates);           </div>
-<div class="line"><a name="l02431"></a><span class="lineno"> 2431</span>         }</div>
-<div class="line"><a name="l02432"></a><span class="lineno"> 2432</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l02433"></a><span class="lineno"> 2433</span>             <span class="keywordflow">for</span>(j=begin;j<end;j++)</div>
-<div class="line"><a name="l02434"></a><span class="lineno"> 2434</span>                 target[perm[j]] = svm_predict(submodel,prob->x[perm[j]]);</div>
-<div class="line"><a name="l02435"></a><span class="lineno"> 2435</span>         svm_free_and_destroy_model(&submodel);</div>
-<div class="line"><a name="l02436"></a><span class="lineno"> 2436</span>         free(subprob.x);</div>
-<div class="line"><a name="l02437"></a><span class="lineno"> 2437</span>         free(subprob.y);</div>
-<div class="line"><a name="l02438"></a><span class="lineno"> 2438</span>     }       </div>
-<div class="line"><a name="l02439"></a><span class="lineno"> 2439</span>     free(fold_start);</div>
-<div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>     free(perm); </div>
-<div class="line"><a name="l02441"></a><span class="lineno"> 2441</span> }</div>
-<div class="line"><a name="l02442"></a><span class="lineno"> 2442</span> </div>
-<div class="line"><a name="l02443"></a><span class="lineno"> 2443</span> </div>
-<div class="line"><a name="l02444"></a><span class="lineno"> 2444</span> <span class="keywordtype">int</span> svm_get_svm_type(<span class="keyword">const</span> <a class="code" href="structsvm__model.html">svm_model</a> *model)</div>
-<div class="line"><a name="l02445"></a><span class="lineno"> 2445</span> {</div>
-<div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>     <span class="keywordflow">return</span> model->param.svm_type;</div>
-<div class="line"><a name="l02447"></a><span class="lineno"> 2447</span> }</div>
-<div class="line"><a name="l02448"></a><span class="lineno"> 2448</span> </div>
-<div class="line"><a name="l02449"></a><span class="lineno"> 2449</span> <span class="keywordtype">int</span> svm_get_nr_class(<span class="keyword">const</span> <a class="code" href="structsvm__model.html">svm_model</a> *model)</div>
-<div class="line"><a name="l02450"></a><span class="lineno"> 2450</span> {</div>
-<div class="line"><a name="l02451"></a><span class="lineno"> 2451</span>     <span class="keywordflow">return</span> model->nr_class;</div>
-<div class="line"><a name="l02452"></a><span class="lineno"> 2452</span> }</div>
-<div class="line"><a name="l02453"></a><span class="lineno"> 2453</span> </div>
-<div class="line"><a name="l02454"></a><span class="lineno"> 2454</span> <span class="keywordtype">void</span> svm_get_labels(<span class="keyword">const</span> <a class="code" href="structsvm__model.html">svm_model</a> *model, <span class="keywordtype">int</span>* label)</div>
-<div class="line"><a name="l02455"></a><span class="lineno"> 2455</span> {</div>
-<div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>     <span class="keywordflow">if</span> (model->label != NULL)</div>
-<div class="line"><a name="l02457"></a><span class="lineno"> 2457</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<model->nr_class;i++)</div>
-<div class="line"><a name="l02458"></a><span class="lineno"> 2458</span>             label[i] = model->label[i];</div>
-<div class="line"><a name="l02459"></a><span class="lineno"> 2459</span> }</div>
-<div class="line"><a name="l02460"></a><span class="lineno"> 2460</span> </div>
-<div class="line"><a name="l02461"></a><span class="lineno"> 2461</span> <span class="keywordtype">double</span> svm_get_svr_probability(<span class="keyword">const</span> <a class="code" href="structsvm__model.html">svm_model</a> *model)</div>
-<div class="line"><a name="l02462"></a><span class="lineno"> 2462</span> {</div>
-<div class="line"><a name="l02463"></a><span class="lineno"> 2463</span>     <span class="keywordflow">if</span> ((model->param.svm_type == EPSILON_SVR || model->param.svm_type == NU_SVR) &&</div>
-<div class="line"><a name="l02464"></a><span class="lineno"> 2464</span>         model->probA!=NULL)</div>
-<div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>         <span class="keywordflow">return</span> model->probA[0];</div>
-<div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>     {</div>
-<div class="line"><a name="l02468"></a><span class="lineno"> 2468</span>         fprintf(stderr,<span class="stringliteral">"Model doesn't contain information for SVR probability inference\n"</span>);</div>
-<div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>         <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>     }</div>
-<div class="line"><a name="l02471"></a><span class="lineno"> 2471</span> }</div>
-<div class="line"><a name="l02472"></a><span class="lineno"> 2472</span> </div>
-<div class="line"><a name="l02473"></a><span class="lineno"> 2473</span> <span class="keywordtype">double</span> svm_predict_values(<span class="keyword">const</span> <a class="code" href="structsvm__model.html">svm_model</a> *model, <span class="keyword">const</span> <a class="code" href="structsvm__node.html">svm_node</a> *x, <span class="keywordtype">double</span>* dec_values)</div>
-<div class="line"><a name="l02474"></a><span class="lineno"> 2474</span> {</div>
-<div class="line"><a name="l02475"></a><span class="lineno"> 2475</span>     <span class="keywordtype">int</span> i;</div>
-<div class="line"><a name="l02476"></a><span class="lineno"> 2476</span>     <span class="keywordflow">if</span>(model->param.svm_type == ONE_CLASS ||</div>
-<div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>        model->param.svm_type == EPSILON_SVR ||</div>
-<div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>        model->param.svm_type == NU_SVR)</div>
-<div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>     {</div>
-<div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>         <span class="keywordtype">double</span> *sv_coef = model->sv_coef[0];</div>
-<div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>         <span class="keywordtype">double</span> sum = 0;</div>
-<div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>         <span class="keywordflow">for</span>(i=0;i<model->l;i++)</div>
-<div class="line"><a name="l02483"></a><span class="lineno"> 2483</span>             sum += sv_coef[i] * Kernel::k_function(x,model->SV[i],model->param);</div>
-<div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>         sum -= model->rho[0];</div>
-<div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>         *dec_values = sum;</div>
-<div class="line"><a name="l02486"></a><span class="lineno"> 2486</span> </div>
-<div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>         <span class="keywordflow">if</span>(model->param.svm_type == ONE_CLASS)</div>
-<div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>             <span class="keywordflow">return</span> (sum>0)?1:-1;</div>
-<div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>             <span class="keywordflow">return</span> sum;</div>
-<div class="line"><a name="l02491"></a><span class="lineno"> 2491</span>     }</div>
-<div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>     {</div>
-<div class="line"><a name="l02494"></a><span class="lineno"> 2494</span>         <span class="keywordtype">int</span> nr_class = model->nr_class;</div>
-<div class="line"><a name="l02495"></a><span class="lineno"> 2495</span>         <span class="keywordtype">int</span> l = model->l;</div>
-<div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>         </div>
-<div class="line"><a name="l02497"></a><span class="lineno"> 2497</span>         <span class="keywordtype">double</span> *kvalue = Malloc(<span class="keywordtype">double</span>,l);</div>
-<div class="line"><a name="l02498"></a><span class="lineno"> 2498</span>         <span class="keywordflow">for</span>(i=0;i<l;i++)</div>
-<div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>             kvalue[i] = Kernel::k_function(x,model->SV[i],model->param);</div>
-<div class="line"><a name="l02500"></a><span class="lineno"> 2500</span> </div>
-<div class="line"><a name="l02501"></a><span class="lineno"> 2501</span>         <span class="keywordtype">int</span> *start = Malloc(<span class="keywordtype">int</span>,nr_class);</div>
-<div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>         start[0] = 0;</div>
-<div class="line"><a name="l02503"></a><span class="lineno"> 2503</span>         <span class="keywordflow">for</span>(i=1;i<nr_class;i++)</div>
-<div class="line"><a name="l02504"></a><span class="lineno"> 2504</span>             start[i] = start[i-1]+model->nSV[i-1];</div>
-<div class="line"><a name="l02505"></a><span class="lineno"> 2505</span> </div>
-<div class="line"><a name="l02506"></a><span class="lineno"> 2506</span>         <span class="keywordtype">int</span> *vote = Malloc(<span class="keywordtype">int</span>,nr_class);</div>
-<div class="line"><a name="l02507"></a><span class="lineno"> 2507</span>         <span class="keywordflow">for</span>(i=0;i<nr_class;i++)</div>
-<div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>             vote[i] = 0;</div>
-<div class="line"><a name="l02509"></a><span class="lineno"> 2509</span> </div>
-<div class="line"><a name="l02510"></a><span class="lineno"> 2510</span>         <span class="keywordtype">int</span> p=0;</div>
-<div class="line"><a name="l02511"></a><span class="lineno"> 2511</span>         <span class="keywordflow">for</span>(i=0;i<nr_class;i++)</div>
-<div class="line"><a name="l02512"></a><span class="lineno"> 2512</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=i+1;j<nr_class;j++)</div>
-<div class="line"><a name="l02513"></a><span class="lineno"> 2513</span>             {</div>
-<div class="line"><a name="l02514"></a><span class="lineno"> 2514</span>                 <span class="keywordtype">double</span> sum = 0;</div>
-<div class="line"><a name="l02515"></a><span class="lineno"> 2515</span>                 <span class="keywordtype">int</span> si = start[i];</div>
-<div class="line"><a name="l02516"></a><span class="lineno"> 2516</span>                 <span class="keywordtype">int</span> sj = start[j];</div>
-<div class="line"><a name="l02517"></a><span class="lineno"> 2517</span>                 <span class="keywordtype">int</span> ci = model->nSV[i];</div>
-<div class="line"><a name="l02518"></a><span class="lineno"> 2518</span>                 <span class="keywordtype">int</span> cj = model->nSV[j];</div>
-<div class="line"><a name="l02519"></a><span class="lineno"> 2519</span>                 </div>
-<div class="line"><a name="l02520"></a><span class="lineno"> 2520</span>                 <span class="keywordtype">int</span> k;</div>
-<div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>                 <span class="keywordtype">double</span> *coef1 = model->sv_coef[j-1];</div>
-<div class="line"><a name="l02522"></a><span class="lineno"> 2522</span>                 <span class="keywordtype">double</span> *coef2 = model->sv_coef[i];</div>
-<div class="line"><a name="l02523"></a><span class="lineno"> 2523</span>                 <span class="keywordflow">for</span>(k=0;k<ci;k++)</div>
-<div class="line"><a name="l02524"></a><span class="lineno"> 2524</span>                     sum += coef1[si+k] * kvalue[si+k];</div>
-<div class="line"><a name="l02525"></a><span class="lineno"> 2525</span>                 <span class="keywordflow">for</span>(k=0;k<cj;k++)</div>
-<div class="line"><a name="l02526"></a><span class="lineno"> 2526</span>                     sum += coef2[sj+k] * kvalue[sj+k];</div>
-<div class="line"><a name="l02527"></a><span class="lineno"> 2527</span>                 sum -= model->rho[p];</div>
-<div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>                 dec_values[p] = sum;</div>
-<div class="line"><a name="l02529"></a><span class="lineno"> 2529</span> </div>
-<div class="line"><a name="l02530"></a><span class="lineno"> 2530</span>                 <span class="keywordflow">if</span>(dec_values[p] > 0)</div>
-<div class="line"><a name="l02531"></a><span class="lineno"> 2531</span>                     ++vote[i];</div>
-<div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>                 <span class="keywordflow">else</span></div>
-<div class="line"><a name="l02533"></a><span class="lineno"> 2533</span>                     ++vote[j];</div>
-<div class="line"><a name="l02534"></a><span class="lineno"> 2534</span>                 p++;</div>
-<div class="line"><a name="l02535"></a><span class="lineno"> 2535</span>             }</div>
-<div class="line"><a name="l02536"></a><span class="lineno"> 2536</span> </div>
-<div class="line"><a name="l02537"></a><span class="lineno"> 2537</span>         <span class="keywordtype">int</span> vote_max_idx = 0;</div>
-<div class="line"><a name="l02538"></a><span class="lineno"> 2538</span>         <span class="keywordflow">for</span>(i=1;i<nr_class;i++)</div>
-<div class="line"><a name="l02539"></a><span class="lineno"> 2539</span>             <span class="keywordflow">if</span>(vote[i] > vote[vote_max_idx])</div>
-<div class="line"><a name="l02540"></a><span class="lineno"> 2540</span>                 vote_max_idx = i;</div>
-<div class="line"><a name="l02541"></a><span class="lineno"> 2541</span> </div>
-<div class="line"><a name="l02542"></a><span class="lineno"> 2542</span>         free(kvalue);</div>
-<div class="line"><a name="l02543"></a><span class="lineno"> 2543</span>         free(start);</div>
-<div class="line"><a name="l02544"></a><span class="lineno"> 2544</span>         free(vote);</div>
-<div class="line"><a name="l02545"></a><span class="lineno"> 2545</span>         <span class="keywordflow">return</span> model->label[vote_max_idx];</div>
-<div class="line"><a name="l02546"></a><span class="lineno"> 2546</span>     }</div>
-<div class="line"><a name="l02547"></a><span class="lineno"> 2547</span> }</div>
-<div class="line"><a name="l02548"></a><span class="lineno"> 2548</span> </div>
-<div class="line"><a name="l02549"></a><span class="lineno"> 2549</span> <span class="keywordtype">double</span> svm_predict(<span class="keyword">const</span> <a class="code" href="structsvm__model.html">svm_model</a> *model, <span class="keyword">const</span> <a class="code" href="structsvm__node.html">svm_node</a> *x)</div>
-<div class="line"><a name="l02550"></a><span class="lineno"> 2550</span> {</div>
-<div class="line"><a name="l02551"></a><span class="lineno"> 2551</span>     <span class="keywordtype">int</span> nr_class = model->nr_class;</div>
-<div class="line"><a name="l02552"></a><span class="lineno"> 2552</span>     <span class="keywordtype">double</span> *dec_values;</div>
-<div class="line"><a name="l02553"></a><span class="lineno"> 2553</span>     <span class="keywordflow">if</span>(model->param.svm_type == ONE_CLASS ||</div>
-<div class="line"><a name="l02554"></a><span class="lineno"> 2554</span>        model->param.svm_type == EPSILON_SVR ||</div>
-<div class="line"><a name="l02555"></a><span class="lineno"> 2555</span>        model->param.svm_type == NU_SVR)</div>
-<div class="line"><a name="l02556"></a><span class="lineno"> 2556</span>         dec_values = Malloc(<span class="keywordtype">double</span>, 1);</div>
-<div class="line"><a name="l02557"></a><span class="lineno"> 2557</span>     <span class="keywordflow">else</span> </div>
-<div class="line"><a name="l02558"></a><span class="lineno"> 2558</span>         dec_values = Malloc(<span class="keywordtype">double</span>, nr_class*(nr_class-1)/2);</div>
-<div class="line"><a name="l02559"></a><span class="lineno"> 2559</span>     <span class="keywordtype">double</span> pred_result = svm_predict_values(model, x, dec_values);</div>
-<div class="line"><a name="l02560"></a><span class="lineno"> 2560</span>     free(dec_values);</div>
-<div class="line"><a name="l02561"></a><span class="lineno"> 2561</span>     <span class="keywordflow">return</span> pred_result;</div>
-<div class="line"><a name="l02562"></a><span class="lineno"> 2562</span> }</div>
-<div class="line"><a name="l02563"></a><span class="lineno"> 2563</span> </div>
-<div class="line"><a name="l02564"></a><span class="lineno"> 2564</span> <span class="keywordtype">double</span> svm_predict_probability(</div>
-<div class="line"><a name="l02565"></a><span class="lineno"> 2565</span>     <span class="keyword">const</span> <a class="code" href="structsvm__model.html">svm_model</a> *model, <span class="keyword">const</span> <a class="code" href="structsvm__node.html">svm_node</a> *x, <span class="keywordtype">double</span> *prob_estimates)</div>
-<div class="line"><a name="l02566"></a><span class="lineno"> 2566</span> {</div>
-<div class="line"><a name="l02567"></a><span class="lineno"> 2567</span>     <span class="keywordflow">if</span> ((model->param.svm_type == C_SVC || model->param.svm_type == NU_SVC) &&</div>
-<div class="line"><a name="l02568"></a><span class="lineno"> 2568</span>         model->probA!=NULL && model->probB!=NULL)</div>
-<div class="line"><a name="l02569"></a><span class="lineno"> 2569</span>     {</div>
-<div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>         <span class="keywordtype">int</span> i;</div>
-<div class="line"><a name="l02571"></a><span class="lineno"> 2571</span>         <span class="keywordtype">int</span> nr_class = model->nr_class;</div>
-<div class="line"><a name="l02572"></a><span class="lineno"> 2572</span>         <span class="keywordtype">double</span> *dec_values = Malloc(<span class="keywordtype">double</span>, nr_class*(nr_class-1)/2);</div>
-<div class="line"><a name="l02573"></a><span class="lineno"> 2573</span>         svm_predict_values(model, x, dec_values);</div>
-<div class="line"><a name="l02574"></a><span class="lineno"> 2574</span> </div>
-<div class="line"><a name="l02575"></a><span class="lineno"> 2575</span>         <span class="keywordtype">double</span> min_prob=1e-7;</div>
-<div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>         <span class="keywordtype">double</span> **pairwise_prob=Malloc(<span class="keywordtype">double</span> *,nr_class);</div>
-<div class="line"><a name="l02577"></a><span class="lineno"> 2577</span>         <span class="keywordflow">for</span>(i=0;i<nr_class;i++)</div>
-<div class="line"><a name="l02578"></a><span class="lineno"> 2578</span>             pairwise_prob[i]=Malloc(<span class="keywordtype">double</span>,nr_class);</div>
-<div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>         <span class="keywordtype">int</span> k=0;</div>
-<div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>         <span class="keywordflow">for</span>(i=0;i<nr_class;i++)</div>
-<div class="line"><a name="l02581"></a><span class="lineno"> 2581</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=i+1;j<nr_class;j++)</div>
-<div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>             {</div>
-<div class="line"><a name="l02583"></a><span class="lineno"> 2583</span>                 pairwise_prob[i][j]=min(max(sigmoid_predict(dec_values[k],model->probA[k],model->probB[k]),min_prob),1-min_prob);</div>
-<div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>                 pairwise_prob[j][i]=1-pairwise_prob[i][j];</div>
-<div class="line"><a name="l02585"></a><span class="lineno"> 2585</span>                 k++;</div>
-<div class="line"><a name="l02586"></a><span class="lineno"> 2586</span>             }</div>
-<div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>         multiclass_probability(nr_class,pairwise_prob,prob_estimates);</div>
-<div class="line"><a name="l02588"></a><span class="lineno"> 2588</span> </div>
-<div class="line"><a name="l02589"></a><span class="lineno"> 2589</span>         <span class="keywordtype">int</span> prob_max_idx = 0;</div>
-<div class="line"><a name="l02590"></a><span class="lineno"> 2590</span>         <span class="keywordflow">for</span>(i=1;i<nr_class;i++)</div>
-<div class="line"><a name="l02591"></a><span class="lineno"> 2591</span>             <span class="keywordflow">if</span>(prob_estimates[i] > prob_estimates[prob_max_idx])</div>
-<div class="line"><a name="l02592"></a><span class="lineno"> 2592</span>                 prob_max_idx = i;</div>
-<div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>         <span class="keywordflow">for</span>(i=0;i<nr_class;i++)</div>
-<div class="line"><a name="l02594"></a><span class="lineno"> 2594</span>             free(pairwise_prob[i]);</div>
-<div class="line"><a name="l02595"></a><span class="lineno"> 2595</span>         free(dec_values);</div>
-<div class="line"><a name="l02596"></a><span class="lineno"> 2596</span>         free(pairwise_prob);         </div>
-<div class="line"><a name="l02597"></a><span class="lineno"> 2597</span>         <span class="keywordflow">return</span> model->label[prob_max_idx];</div>
-<div class="line"><a name="l02598"></a><span class="lineno"> 2598</span>     }</div>
-<div class="line"><a name="l02599"></a><span class="lineno"> 2599</span>     <span class="keywordflow">else</span> </div>
-<div class="line"><a name="l02600"></a><span class="lineno"> 2600</span>         <span class="keywordflow">return</span> svm_predict(model, x);</div>
-<div class="line"><a name="l02601"></a><span class="lineno"> 2601</span> }</div>
-<div class="line"><a name="l02602"></a><span class="lineno"> 2602</span> </div>
-<div class="line"><a name="l02603"></a><span class="lineno"> 2603</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *svm_type_table[] =</div>
-<div class="line"><a name="l02604"></a><span class="lineno"> 2604</span> {</div>
-<div class="line"><a name="l02605"></a><span class="lineno"> 2605</span>     <span class="stringliteral">"c_svc"</span>,<span class="stringliteral">"nu_svc"</span>,<span class="stringliteral">"one_class"</span>,<span class="stringliteral">"epsilon_svr"</span>,<span class="stringliteral">"nu_svr"</span>,NULL</div>
-<div class="line"><a name="l02606"></a><span class="lineno"> 2606</span> };</div>
-<div class="line"><a name="l02607"></a><span class="lineno"> 2607</span> </div>
-<div class="line"><a name="l02608"></a><span class="lineno"> 2608</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *kernel_type_table[]=</div>
-<div class="line"><a name="l02609"></a><span class="lineno"> 2609</span> {</div>
-<div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>     <span class="stringliteral">"linear"</span>,<span class="stringliteral">"polynomial"</span>,<span class="stringliteral">"rbf"</span>,<span class="stringliteral">"sigmoid"</span>,<span class="stringliteral">"precomputed"</span>,NULL</div>
-<div class="line"><a name="l02611"></a><span class="lineno"> 2611</span> };</div>
-<div class="line"><a name="l02612"></a><span class="lineno"> 2612</span> </div>
-<div class="line"><a name="l02613"></a><span class="lineno"> 2613</span> <span class="keywordtype">int</span> svm_save_model(<span class="keyword">const</span> <span class="keywordtype">char</span> *model_file_name, <span class="keyword">const</span> <a class="code" href="structsvm__model.html">svm_model</a> *model)</div>
-<div class="line"><a name="l02614"></a><span class="lineno"> 2614</span> {</div>
-<div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>     FILE *fp = fopen(model_file_name,<span class="stringliteral">"w"</span>);</div>
-<div class="line"><a name="l02616"></a><span class="lineno"> 2616</span>     <span class="keywordflow">if</span>(fp==NULL) <span class="keywordflow">return</span> -1;</div>
-<div class="line"><a name="l02617"></a><span class="lineno"> 2617</span> </div>
-<div class="line"><a name="l02618"></a><span class="lineno"> 2618</span>     <span class="keywordtype">char</span> *old_locale = strdup(setlocale(LC_ALL, NULL));</div>
-<div class="line"><a name="l02619"></a><span class="lineno"> 2619</span>     setlocale(LC_ALL, <span class="stringliteral">"C"</span>);</div>
-<div class="line"><a name="l02620"></a><span class="lineno"> 2620</span> </div>
-<div class="line"><a name="l02621"></a><span class="lineno"> 2621</span>     <span class="keyword">const</span> <a class="code" href="structsvm__parameter.html">svm_parameter</a>& param = model->param;</div>
-<div class="line"><a name="l02622"></a><span class="lineno"> 2622</span> </div>
-<div class="line"><a name="l02623"></a><span class="lineno"> 2623</span>     fprintf(fp,<span class="stringliteral">"svm_type %s\n"</span>, svm_type_table[param.svm_type]);</div>
-<div class="line"><a name="l02624"></a><span class="lineno"> 2624</span>     fprintf(fp,<span class="stringliteral">"kernel_type %s\n"</span>, kernel_type_table[param.kernel_type]);</div>
-<div class="line"><a name="l02625"></a><span class="lineno"> 2625</span> </div>
-<div class="line"><a name="l02626"></a><span class="lineno"> 2626</span>     <span class="keywordflow">if</span>(param.kernel_type == POLY)</div>
-<div class="line"><a name="l02627"></a><span class="lineno"> 2627</span>         fprintf(fp,<span class="stringliteral">"degree %d\n"</span>, param.degree);</div>
-<div class="line"><a name="l02628"></a><span class="lineno"> 2628</span> </div>
-<div class="line"><a name="l02629"></a><span class="lineno"> 2629</span>     <span class="keywordflow">if</span>(param.kernel_type == POLY || param.kernel_type == RBF || param.kernel_type == SIGMOID)</div>
-<div class="line"><a name="l02630"></a><span class="lineno"> 2630</span>         fprintf(fp,<span class="stringliteral">"gamma %g\n"</span>, param.gamma);</div>
-<div class="line"><a name="l02631"></a><span class="lineno"> 2631</span> </div>
-<div class="line"><a name="l02632"></a><span class="lineno"> 2632</span>     <span class="keywordflow">if</span>(param.kernel_type == POLY || param.kernel_type == SIGMOID)</div>
-<div class="line"><a name="l02633"></a><span class="lineno"> 2633</span>         fprintf(fp,<span class="stringliteral">"coef0 %g\n"</span>, param.coef0);</div>
-<div class="line"><a name="l02634"></a><span class="lineno"> 2634</span> </div>
-<div class="line"><a name="l02635"></a><span class="lineno"> 2635</span>     <span class="keywordtype">int</span> nr_class = model->nr_class;</div>
-<div class="line"><a name="l02636"></a><span class="lineno"> 2636</span>     <span class="keywordtype">int</span> l = model->l;</div>
-<div class="line"><a name="l02637"></a><span class="lineno"> 2637</span>     fprintf(fp, <span class="stringliteral">"nr_class %d\n"</span>, nr_class);</div>
-<div class="line"><a name="l02638"></a><span class="lineno"> 2638</span>     fprintf(fp, <span class="stringliteral">"total_sv %d\n"</span>,l);</div>
-<div class="line"><a name="l02639"></a><span class="lineno"> 2639</span>     </div>
-<div class="line"><a name="l02640"></a><span class="lineno"> 2640</span>     {</div>
-<div class="line"><a name="l02641"></a><span class="lineno"> 2641</span>         fprintf(fp, <span class="stringliteral">"rho"</span>);</div>
-<div class="line"><a name="l02642"></a><span class="lineno"> 2642</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<nr_class*(nr_class-1)/2;i++)</div>
-<div class="line"><a name="l02643"></a><span class="lineno"> 2643</span>             fprintf(fp,<span class="stringliteral">" %g"</span>,model->rho[i]);</div>
-<div class="line"><a name="l02644"></a><span class="lineno"> 2644</span>         fprintf(fp, <span class="stringliteral">"\n"</span>);</div>
-<div class="line"><a name="l02645"></a><span class="lineno"> 2645</span>     }</div>
-<div class="line"><a name="l02646"></a><span class="lineno"> 2646</span>     </div>
-<div class="line"><a name="l02647"></a><span class="lineno"> 2647</span>     <span class="keywordflow">if</span>(model->label)</div>
-<div class="line"><a name="l02648"></a><span class="lineno"> 2648</span>     {</div>
-<div class="line"><a name="l02649"></a><span class="lineno"> 2649</span>         fprintf(fp, <span class="stringliteral">"label"</span>);</div>
-<div class="line"><a name="l02650"></a><span class="lineno"> 2650</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<nr_class;i++)</div>
-<div class="line"><a name="l02651"></a><span class="lineno"> 2651</span>             fprintf(fp,<span class="stringliteral">" %d"</span>,model->label[i]);</div>
-<div class="line"><a name="l02652"></a><span class="lineno"> 2652</span>         fprintf(fp, <span class="stringliteral">"\n"</span>);</div>
-<div class="line"><a name="l02653"></a><span class="lineno"> 2653</span>     }</div>
-<div class="line"><a name="l02654"></a><span class="lineno"> 2654</span> </div>
-<div class="line"><a name="l02655"></a><span class="lineno"> 2655</span>     <span class="keywordflow">if</span>(model->probA) <span class="comment">// regression has probA only</span></div>
-<div class="line"><a name="l02656"></a><span class="lineno"> 2656</span>     {</div>
-<div class="line"><a name="l02657"></a><span class="lineno"> 2657</span>         fprintf(fp, <span class="stringliteral">"probA"</span>);</div>
-<div class="line"><a name="l02658"></a><span class="lineno"> 2658</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<nr_class*(nr_class-1)/2;i++)</div>
-<div class="line"><a name="l02659"></a><span class="lineno"> 2659</span>             fprintf(fp,<span class="stringliteral">" %g"</span>,model->probA[i]);</div>
-<div class="line"><a name="l02660"></a><span class="lineno"> 2660</span>         fprintf(fp, <span class="stringliteral">"\n"</span>);</div>
-<div class="line"><a name="l02661"></a><span class="lineno"> 2661</span>     }</div>
-<div class="line"><a name="l02662"></a><span class="lineno"> 2662</span>     <span class="keywordflow">if</span>(model->probB)</div>
-<div class="line"><a name="l02663"></a><span class="lineno"> 2663</span>     {</div>
-<div class="line"><a name="l02664"></a><span class="lineno"> 2664</span>         fprintf(fp, <span class="stringliteral">"probB"</span>);</div>
-<div class="line"><a name="l02665"></a><span class="lineno"> 2665</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<nr_class*(nr_class-1)/2;i++)</div>
-<div class="line"><a name="l02666"></a><span class="lineno"> 2666</span>             fprintf(fp,<span class="stringliteral">" %g"</span>,model->probB[i]);</div>
-<div class="line"><a name="l02667"></a><span class="lineno"> 2667</span>         fprintf(fp, <span class="stringliteral">"\n"</span>);</div>
-<div class="line"><a name="l02668"></a><span class="lineno"> 2668</span>     }</div>
-<div class="line"><a name="l02669"></a><span class="lineno"> 2669</span> </div>
-<div class="line"><a name="l02670"></a><span class="lineno"> 2670</span>     <span class="keywordflow">if</span>(model->nSV)</div>
-<div class="line"><a name="l02671"></a><span class="lineno"> 2671</span>     {</div>
-<div class="line"><a name="l02672"></a><span class="lineno"> 2672</span>         fprintf(fp, <span class="stringliteral">"nr_sv"</span>);</div>
-<div class="line"><a name="l02673"></a><span class="lineno"> 2673</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<nr_class;i++)</div>
-<div class="line"><a name="l02674"></a><span class="lineno"> 2674</span>             fprintf(fp,<span class="stringliteral">" %d"</span>,model->nSV[i]);</div>
-<div class="line"><a name="l02675"></a><span class="lineno"> 2675</span>         fprintf(fp, <span class="stringliteral">"\n"</span>);</div>
-<div class="line"><a name="l02676"></a><span class="lineno"> 2676</span>     }</div>
-<div class="line"><a name="l02677"></a><span class="lineno"> 2677</span> </div>
-<div class="line"><a name="l02678"></a><span class="lineno"> 2678</span>     fprintf(fp, <span class="stringliteral">"SV\n"</span>);</div>
-<div class="line"><a name="l02679"></a><span class="lineno"> 2679</span>     <span class="keyword">const</span> <span class="keywordtype">double</span> * <span class="keyword">const</span> *sv_coef = model->sv_coef;</div>
-<div class="line"><a name="l02680"></a><span class="lineno"> 2680</span>     <span class="keyword">const</span> <a class="code" href="structsvm__node.html">svm_node</a> * <span class="keyword">const</span> *SV = model->SV;</div>
-<div class="line"><a name="l02681"></a><span class="lineno"> 2681</span> </div>
-<div class="line"><a name="l02682"></a><span class="lineno"> 2682</span>     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<l;i++)</div>
-<div class="line"><a name="l02683"></a><span class="lineno"> 2683</span>     {</div>
-<div class="line"><a name="l02684"></a><span class="lineno"> 2684</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=0;j<nr_class-1;j++)</div>
-<div class="line"><a name="l02685"></a><span class="lineno"> 2685</span>             fprintf(fp, <span class="stringliteral">"%.16g "</span>,sv_coef[j][i]);</div>
-<div class="line"><a name="l02686"></a><span class="lineno"> 2686</span> </div>
-<div class="line"><a name="l02687"></a><span class="lineno"> 2687</span>         <span class="keyword">const</span> <a class="code" href="structsvm__node.html">svm_node</a> *p = SV[i];</div>
-<div class="line"><a name="l02688"></a><span class="lineno"> 2688</span> </div>
-<div class="line"><a name="l02689"></a><span class="lineno"> 2689</span>         <span class="keywordflow">if</span>(param.kernel_type == PRECOMPUTED)</div>
-<div class="line"><a name="l02690"></a><span class="lineno"> 2690</span>             fprintf(fp,<span class="stringliteral">"0:%d "</span>,(<span class="keywordtype">int</span>)(p->value));</div>
-<div class="line"><a name="l02691"></a><span class="lineno"> 2691</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l02692"></a><span class="lineno"> 2692</span>             <span class="keywordflow">while</span>(p->index != -1)</div>
-<div class="line"><a name="l02693"></a><span class="lineno"> 2693</span>             {</div>
-<div class="line"><a name="l02694"></a><span class="lineno"> 2694</span>                 fprintf(fp,<span class="stringliteral">"%d:%.8g "</span>,p->index,p->value);</div>
-<div class="line"><a name="l02695"></a><span class="lineno"> 2695</span>                 p++;</div>
-<div class="line"><a name="l02696"></a><span class="lineno"> 2696</span>             }</div>
-<div class="line"><a name="l02697"></a><span class="lineno"> 2697</span>         fprintf(fp, <span class="stringliteral">"\n"</span>);</div>
-<div class="line"><a name="l02698"></a><span class="lineno"> 2698</span>     }</div>
-<div class="line"><a name="l02699"></a><span class="lineno"> 2699</span> </div>
-<div class="line"><a name="l02700"></a><span class="lineno"> 2700</span>     setlocale(LC_ALL, old_locale);</div>
-<div class="line"><a name="l02701"></a><span class="lineno"> 2701</span>     free(old_locale);</div>
-<div class="line"><a name="l02702"></a><span class="lineno"> 2702</span> </div>
-<div class="line"><a name="l02703"></a><span class="lineno"> 2703</span>     <span class="keywordflow">if</span> (ferror(fp) != 0 || fclose(fp) != 0) <span class="keywordflow">return</span> -1;</div>
-<div class="line"><a name="l02704"></a><span class="lineno"> 2704</span>     <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l02705"></a><span class="lineno"> 2705</span> }</div>
-<div class="line"><a name="l02706"></a><span class="lineno"> 2706</span> </div>
-<div class="line"><a name="l02707"></a><span class="lineno"> 2707</span> <span class="keyword">static</span> <span class="keywordtype">char</span> *line = NULL;</div>
-<div class="line"><a name="l02708"></a><span class="lineno"> 2708</span> <span class="keyword">static</span> <span class="keywordtype">int</span> max_line_len;</div>
-<div class="line"><a name="l02709"></a><span class="lineno"> 2709</span> </div>
-<div class="line"><a name="l02710"></a><span class="lineno"> 2710</span> <span class="keyword">static</span> <span class="keywordtype">char</span>* readline(FILE *input)</div>
-<div class="line"><a name="l02711"></a><span class="lineno"> 2711</span> {</div>
-<div class="line"><a name="l02712"></a><span class="lineno"> 2712</span>     <span class="keywordtype">int</span> len;</div>
-<div class="line"><a name="l02713"></a><span class="lineno"> 2713</span> </div>
-<div class="line"><a name="l02714"></a><span class="lineno"> 2714</span>     <span class="keywordflow">if</span>(fgets(line,max_line_len,input) == NULL)</div>
-<div class="line"><a name="l02715"></a><span class="lineno"> 2715</span>         <span class="keywordflow">return</span> NULL;</div>
-<div class="line"><a name="l02716"></a><span class="lineno"> 2716</span> </div>
-<div class="line"><a name="l02717"></a><span class="lineno"> 2717</span>     <span class="keywordflow">while</span>(strrchr(line,<span class="charliteral">'\n'</span>) == NULL)</div>
-<div class="line"><a name="l02718"></a><span class="lineno"> 2718</span>     {</div>
-<div class="line"><a name="l02719"></a><span class="lineno"> 2719</span>         max_line_len *= 2;</div>
-<div class="line"><a name="l02720"></a><span class="lineno"> 2720</span>         line = (<span class="keywordtype">char</span> *) realloc(line,max_line_len);</div>
-<div class="line"><a name="l02721"></a><span class="lineno"> 2721</span>         len = (int) strlen(line);</div>
-<div class="line"><a name="l02722"></a><span class="lineno"> 2722</span>         <span class="keywordflow">if</span>(fgets(line+len,max_line_len-len,input) == NULL)</div>
-<div class="line"><a name="l02723"></a><span class="lineno"> 2723</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l02724"></a><span class="lineno"> 2724</span>     }</div>
-<div class="line"><a name="l02725"></a><span class="lineno"> 2725</span>     <span class="keywordflow">return</span> line;</div>
-<div class="line"><a name="l02726"></a><span class="lineno"> 2726</span> }</div>
-<div class="line"><a name="l02727"></a><span class="lineno"> 2727</span> </div>
-<div class="line"><a name="l02728"></a><span class="lineno"> 2728</span> <a class="code" href="structsvm__model.html">svm_model</a> *svm_load_model(<span class="keyword">const</span> <span class="keywordtype">char</span> *model_file_name)</div>
-<div class="line"><a name="l02729"></a><span class="lineno"> 2729</span> {</div>
-<div class="line"><a name="l02730"></a><span class="lineno"> 2730</span>     FILE *fp = fopen(model_file_name,<span class="stringliteral">"rb"</span>);</div>
-<div class="line"><a name="l02731"></a><span class="lineno"> 2731</span>     <span class="keywordflow">if</span>(fp==NULL) <span class="keywordflow">return</span> NULL;</div>
-<div class="line"><a name="l02732"></a><span class="lineno"> 2732</span> </div>
-<div class="line"><a name="l02733"></a><span class="lineno"> 2733</span>     <span class="keywordtype">char</span> *old_locale = strdup(setlocale(LC_ALL, NULL));</div>
-<div class="line"><a name="l02734"></a><span class="lineno"> 2734</span>     setlocale(LC_ALL, <span class="stringliteral">"C"</span>);</div>
-<div class="line"><a name="l02735"></a><span class="lineno"> 2735</span> </div>
-<div class="line"><a name="l02736"></a><span class="lineno"> 2736</span>     <span class="comment">// read parameters</span></div>
-<div class="line"><a name="l02737"></a><span class="lineno"> 2737</span> </div>
-<div class="line"><a name="l02738"></a><span class="lineno"> 2738</span>     <a class="code" href="structsvm__model.html">svm_model</a> *model = Malloc(<a class="code" href="structsvm__model.html">svm_model</a>,1);</div>
-<div class="line"><a name="l02739"></a><span class="lineno"> 2739</span>     <a class="code" href="structsvm__parameter.html">svm_parameter</a>& param = model->param;</div>
-<div class="line"><a name="l02740"></a><span class="lineno"> 2740</span>     model->rho = NULL;</div>
-<div class="line"><a name="l02741"></a><span class="lineno"> 2741</span>     model->probA = NULL;</div>
-<div class="line"><a name="l02742"></a><span class="lineno"> 2742</span>     model->probB = NULL;</div>
-<div class="line"><a name="l02743"></a><span class="lineno"> 2743</span>     model->label = NULL;</div>
-<div class="line"><a name="l02744"></a><span class="lineno"> 2744</span>     model->nSV = NULL;</div>
-<div class="line"><a name="l02745"></a><span class="lineno"> 2745</span> </div>
-<div class="line"><a name="l02746"></a><span class="lineno"> 2746</span>     <span class="keywordtype">char</span> cmd[81];</div>
-<div class="line"><a name="l02747"></a><span class="lineno"> 2747</span>     <span class="keywordflow">while</span>(1)</div>
-<div class="line"><a name="l02748"></a><span class="lineno"> 2748</span>     {</div>
-<div class="line"><a name="l02749"></a><span class="lineno"> 2749</span>         fscanf(fp,<span class="stringliteral">"%80s"</span>,cmd);</div>
-<div class="line"><a name="l02750"></a><span class="lineno"> 2750</span> </div>
-<div class="line"><a name="l02751"></a><span class="lineno"> 2751</span>         <span class="keywordflow">if</span>(strcmp(cmd,<span class="stringliteral">"svm_type"</span>)==0)</div>
-<div class="line"><a name="l02752"></a><span class="lineno"> 2752</span>         {</div>
-<div class="line"><a name="l02753"></a><span class="lineno"> 2753</span>             fscanf(fp,<span class="stringliteral">"%80s"</span>,cmd);</div>
-<div class="line"><a name="l02754"></a><span class="lineno"> 2754</span>             <span class="keywordtype">int</span> i;</div>
-<div class="line"><a name="l02755"></a><span class="lineno"> 2755</span>             <span class="keywordflow">for</span>(i=0;svm_type_table[i];i++)</div>
-<div class="line"><a name="l02756"></a><span class="lineno"> 2756</span>             {</div>
-<div class="line"><a name="l02757"></a><span class="lineno"> 2757</span>                 <span class="keywordflow">if</span>(strcmp(svm_type_table[i],cmd)==0)</div>
-<div class="line"><a name="l02758"></a><span class="lineno"> 2758</span>                 {</div>
-<div class="line"><a name="l02759"></a><span class="lineno"> 2759</span>                     param.svm_type=i;</div>
-<div class="line"><a name="l02760"></a><span class="lineno"> 2760</span>                     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l02761"></a><span class="lineno"> 2761</span>                 }</div>
-<div class="line"><a name="l02762"></a><span class="lineno"> 2762</span>             }</div>
-<div class="line"><a name="l02763"></a><span class="lineno"> 2763</span>             <span class="keywordflow">if</span>(svm_type_table[i] == NULL)</div>
-<div class="line"><a name="l02764"></a><span class="lineno"> 2764</span>             {</div>
-<div class="line"><a name="l02765"></a><span class="lineno"> 2765</span>                 fprintf(stderr,<span class="stringliteral">"unknown svm type.\n"</span>);</div>
-<div class="line"><a name="l02766"></a><span class="lineno"> 2766</span>                 </div>
-<div class="line"><a name="l02767"></a><span class="lineno"> 2767</span>                 setlocale(LC_ALL, old_locale);</div>
-<div class="line"><a name="l02768"></a><span class="lineno"> 2768</span>                 free(old_locale);</div>
-<div class="line"><a name="l02769"></a><span class="lineno"> 2769</span>                 free(model->rho);</div>
-<div class="line"><a name="l02770"></a><span class="lineno"> 2770</span>                 free(model->label);</div>
-<div class="line"><a name="l02771"></a><span class="lineno"> 2771</span>                 free(model->nSV);</div>
-<div class="line"><a name="l02772"></a><span class="lineno"> 2772</span>                 free(model);</div>
-<div class="line"><a name="l02773"></a><span class="lineno"> 2773</span>                 <span class="keywordflow">return</span> NULL;</div>
-<div class="line"><a name="l02774"></a><span class="lineno"> 2774</span>             }</div>
-<div class="line"><a name="l02775"></a><span class="lineno"> 2775</span>         }</div>
-<div class="line"><a name="l02776"></a><span class="lineno"> 2776</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(strcmp(cmd,<span class="stringliteral">"kernel_type"</span>)==0)</div>
-<div class="line"><a name="l02777"></a><span class="lineno"> 2777</span>         {       </div>
-<div class="line"><a name="l02778"></a><span class="lineno"> 2778</span>             fscanf(fp,<span class="stringliteral">"%80s"</span>,cmd);</div>
-<div class="line"><a name="l02779"></a><span class="lineno"> 2779</span>             <span class="keywordtype">int</span> i;</div>
-<div class="line"><a name="l02780"></a><span class="lineno"> 2780</span>             <span class="keywordflow">for</span>(i=0;kernel_type_table[i];i++)</div>
-<div class="line"><a name="l02781"></a><span class="lineno"> 2781</span>             {</div>
-<div class="line"><a name="l02782"></a><span class="lineno"> 2782</span>                 <span class="keywordflow">if</span>(strcmp(kernel_type_table[i],cmd)==0)</div>
-<div class="line"><a name="l02783"></a><span class="lineno"> 2783</span>                 {</div>
-<div class="line"><a name="l02784"></a><span class="lineno"> 2784</span>                     param.kernel_type=i;</div>
-<div class="line"><a name="l02785"></a><span class="lineno"> 2785</span>                     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l02786"></a><span class="lineno"> 2786</span>                 }</div>
-<div class="line"><a name="l02787"></a><span class="lineno"> 2787</span>             }</div>
-<div class="line"><a name="l02788"></a><span class="lineno"> 2788</span>             <span class="keywordflow">if</span>(kernel_type_table[i] == NULL)</div>
-<div class="line"><a name="l02789"></a><span class="lineno"> 2789</span>             {</div>
-<div class="line"><a name="l02790"></a><span class="lineno"> 2790</span>                 fprintf(stderr,<span class="stringliteral">"unknown kernel function.\n"</span>);</div>
-<div class="line"><a name="l02791"></a><span class="lineno"> 2791</span>                 </div>
-<div class="line"><a name="l02792"></a><span class="lineno"> 2792</span>                 setlocale(LC_ALL, old_locale);</div>
-<div class="line"><a name="l02793"></a><span class="lineno"> 2793</span>                 free(old_locale);</div>
-<div class="line"><a name="l02794"></a><span class="lineno"> 2794</span>                 free(model->rho);</div>
-<div class="line"><a name="l02795"></a><span class="lineno"> 2795</span>                 free(model->label);</div>
-<div class="line"><a name="l02796"></a><span class="lineno"> 2796</span>                 free(model->nSV);</div>
-<div class="line"><a name="l02797"></a><span class="lineno"> 2797</span>                 free(model);</div>
-<div class="line"><a name="l02798"></a><span class="lineno"> 2798</span>                 <span class="keywordflow">return</span> NULL;</div>
-<div class="line"><a name="l02799"></a><span class="lineno"> 2799</span>             }</div>
-<div class="line"><a name="l02800"></a><span class="lineno"> 2800</span>         }</div>
-<div class="line"><a name="l02801"></a><span class="lineno"> 2801</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(strcmp(cmd,<span class="stringliteral">"degree"</span>)==0)</div>
-<div class="line"><a name="l02802"></a><span class="lineno"> 2802</span>             fscanf(fp,<span class="stringliteral">"%d"</span>,&param.degree);</div>
-<div class="line"><a name="l02803"></a><span class="lineno"> 2803</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(strcmp(cmd,<span class="stringliteral">"gamma"</span>)==0)</div>
-<div class="line"><a name="l02804"></a><span class="lineno"> 2804</span>             fscanf(fp,<span class="stringliteral">"%lf"</span>,&param.gamma);</div>
-<div class="line"><a name="l02805"></a><span class="lineno"> 2805</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(strcmp(cmd,<span class="stringliteral">"coef0"</span>)==0)</div>
-<div class="line"><a name="l02806"></a><span class="lineno"> 2806</span>             fscanf(fp,<span class="stringliteral">"%lf"</span>,&param.coef0);</div>
-<div class="line"><a name="l02807"></a><span class="lineno"> 2807</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(strcmp(cmd,<span class="stringliteral">"nr_class"</span>)==0)</div>
-<div class="line"><a name="l02808"></a><span class="lineno"> 2808</span>             fscanf(fp,<span class="stringliteral">"%d"</span>,&model->nr_class);</div>
-<div class="line"><a name="l02809"></a><span class="lineno"> 2809</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(strcmp(cmd,<span class="stringliteral">"total_sv"</span>)==0)</div>
-<div class="line"><a name="l02810"></a><span class="lineno"> 2810</span>             fscanf(fp,<span class="stringliteral">"%d"</span>,&model->l);</div>
-<div class="line"><a name="l02811"></a><span class="lineno"> 2811</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(strcmp(cmd,<span class="stringliteral">"rho"</span>)==0)</div>
-<div class="line"><a name="l02812"></a><span class="lineno"> 2812</span>         {</div>
-<div class="line"><a name="l02813"></a><span class="lineno"> 2813</span>             <span class="keywordtype">int</span> n = model->nr_class * (model->nr_class-1)/2;</div>
-<div class="line"><a name="l02814"></a><span class="lineno"> 2814</span>             model->rho = Malloc(<span class="keywordtype">double</span>,n);</div>
-<div class="line"><a name="l02815"></a><span class="lineno"> 2815</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<n;i++)</div>
-<div class="line"><a name="l02816"></a><span class="lineno"> 2816</span>                 fscanf(fp,<span class="stringliteral">"%lf"</span>,&model->rho[i]);</div>
-<div class="line"><a name="l02817"></a><span class="lineno"> 2817</span>         }</div>
-<div class="line"><a name="l02818"></a><span class="lineno"> 2818</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(strcmp(cmd,<span class="stringliteral">"label"</span>)==0)</div>
-<div class="line"><a name="l02819"></a><span class="lineno"> 2819</span>         {</div>
-<div class="line"><a name="l02820"></a><span class="lineno"> 2820</span>             <span class="keywordtype">int</span> n = model->nr_class;</div>
-<div class="line"><a name="l02821"></a><span class="lineno"> 2821</span>             model->label = Malloc(<span class="keywordtype">int</span>,n);</div>
-<div class="line"><a name="l02822"></a><span class="lineno"> 2822</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<n;i++)</div>
-<div class="line"><a name="l02823"></a><span class="lineno"> 2823</span>                 fscanf(fp,<span class="stringliteral">"%d"</span>,&model->label[i]);</div>
-<div class="line"><a name="l02824"></a><span class="lineno"> 2824</span>         }</div>
-<div class="line"><a name="l02825"></a><span class="lineno"> 2825</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(strcmp(cmd,<span class="stringliteral">"probA"</span>)==0)</div>
-<div class="line"><a name="l02826"></a><span class="lineno"> 2826</span>         {</div>
-<div class="line"><a name="l02827"></a><span class="lineno"> 2827</span>             <span class="keywordtype">int</span> n = model->nr_class * (model->nr_class-1)/2;</div>
-<div class="line"><a name="l02828"></a><span class="lineno"> 2828</span>             model->probA = Malloc(<span class="keywordtype">double</span>,n);</div>
-<div class="line"><a name="l02829"></a><span class="lineno"> 2829</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<n;i++)</div>
-<div class="line"><a name="l02830"></a><span class="lineno"> 2830</span>                 fscanf(fp,<span class="stringliteral">"%lf"</span>,&model->probA[i]);</div>
-<div class="line"><a name="l02831"></a><span class="lineno"> 2831</span>         }</div>
-<div class="line"><a name="l02832"></a><span class="lineno"> 2832</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(strcmp(cmd,<span class="stringliteral">"probB"</span>)==0)</div>
-<div class="line"><a name="l02833"></a><span class="lineno"> 2833</span>         {</div>
-<div class="line"><a name="l02834"></a><span class="lineno"> 2834</span>             <span class="keywordtype">int</span> n = model->nr_class * (model->nr_class-1)/2;</div>
-<div class="line"><a name="l02835"></a><span class="lineno"> 2835</span>             model->probB = Malloc(<span class="keywordtype">double</span>,n);</div>
-<div class="line"><a name="l02836"></a><span class="lineno"> 2836</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<n;i++)</div>
-<div class="line"><a name="l02837"></a><span class="lineno"> 2837</span>                 fscanf(fp,<span class="stringliteral">"%lf"</span>,&model->probB[i]);</div>
-<div class="line"><a name="l02838"></a><span class="lineno"> 2838</span>         }</div>
-<div class="line"><a name="l02839"></a><span class="lineno"> 2839</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(strcmp(cmd,<span class="stringliteral">"nr_sv"</span>)==0)</div>
-<div class="line"><a name="l02840"></a><span class="lineno"> 2840</span>         {</div>
-<div class="line"><a name="l02841"></a><span class="lineno"> 2841</span>             <span class="keywordtype">int</span> n = model->nr_class;</div>
-<div class="line"><a name="l02842"></a><span class="lineno"> 2842</span>             model->nSV = Malloc(<span class="keywordtype">int</span>,n);</div>
-<div class="line"><a name="l02843"></a><span class="lineno"> 2843</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<n;i++)</div>
-<div class="line"><a name="l02844"></a><span class="lineno"> 2844</span>                 fscanf(fp,<span class="stringliteral">"%d"</span>,&model->nSV[i]);</div>
-<div class="line"><a name="l02845"></a><span class="lineno"> 2845</span>         }</div>
-<div class="line"><a name="l02846"></a><span class="lineno"> 2846</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(strcmp(cmd,<span class="stringliteral">"SV"</span>)==0)</div>
-<div class="line"><a name="l02847"></a><span class="lineno"> 2847</span>         {</div>
-<div class="line"><a name="l02848"></a><span class="lineno"> 2848</span>             <span class="keywordflow">while</span>(1)</div>
-<div class="line"><a name="l02849"></a><span class="lineno"> 2849</span>             {</div>
-<div class="line"><a name="l02850"></a><span class="lineno"> 2850</span>                 <span class="keywordtype">int</span> c = getc(fp);</div>
-<div class="line"><a name="l02851"></a><span class="lineno"> 2851</span>                 <span class="keywordflow">if</span>(c==EOF || c==<span class="charliteral">'\n'</span>) <span class="keywordflow">break</span>;    </div>
-<div class="line"><a name="l02852"></a><span class="lineno"> 2852</span>             }</div>
-<div class="line"><a name="l02853"></a><span class="lineno"> 2853</span>             <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l02854"></a><span class="lineno"> 2854</span>         }</div>
-<div class="line"><a name="l02855"></a><span class="lineno"> 2855</span>         <span class="keywordflow">else</span></div>
-<div class="line"><a name="l02856"></a><span class="lineno"> 2856</span>         {</div>
-<div class="line"><a name="l02857"></a><span class="lineno"> 2857</span>             fprintf(stderr,<span class="stringliteral">"unknown text in model file: [%s]\n"</span>,cmd);</div>
-<div class="line"><a name="l02858"></a><span class="lineno"> 2858</span>             </div>
-<div class="line"><a name="l02859"></a><span class="lineno"> 2859</span>             setlocale(LC_ALL, old_locale);</div>
-<div class="line"><a name="l02860"></a><span class="lineno"> 2860</span>             free(old_locale);</div>
-<div class="line"><a name="l02861"></a><span class="lineno"> 2861</span>             free(model->rho);</div>
-<div class="line"><a name="l02862"></a><span class="lineno"> 2862</span>             free(model->label);</div>
-<div class="line"><a name="l02863"></a><span class="lineno"> 2863</span>             free(model->nSV);</div>
-<div class="line"><a name="l02864"></a><span class="lineno"> 2864</span>             free(model);</div>
-<div class="line"><a name="l02865"></a><span class="lineno"> 2865</span>             <span class="keywordflow">return</span> NULL;</div>
-<div class="line"><a name="l02866"></a><span class="lineno"> 2866</span>         }</div>
-<div class="line"><a name="l02867"></a><span class="lineno"> 2867</span>     }</div>
-<div class="line"><a name="l02868"></a><span class="lineno"> 2868</span> </div>
-<div class="line"><a name="l02869"></a><span class="lineno"> 2869</span>     <span class="comment">// read sv_coef and SV</span></div>
-<div class="line"><a name="l02870"></a><span class="lineno"> 2870</span> </div>
-<div class="line"><a name="l02871"></a><span class="lineno"> 2871</span>     <span class="keywordtype">int</span> elements = 0;</div>
-<div class="line"><a name="l02872"></a><span class="lineno"> 2872</span>     <span class="keywordtype">long</span> pos = ftell(fp);</div>
-<div class="line"><a name="l02873"></a><span class="lineno"> 2873</span> </div>
-<div class="line"><a name="l02874"></a><span class="lineno"> 2874</span>     max_line_len = 1024;</div>
-<div class="line"><a name="l02875"></a><span class="lineno"> 2875</span>     line = Malloc(<span class="keywordtype">char</span>,max_line_len);</div>
-<div class="line"><a name="l02876"></a><span class="lineno"> 2876</span>     <span class="keywordtype">char</span> *p,*endptr,*idx,*val;</div>
-<div class="line"><a name="l02877"></a><span class="lineno"> 2877</span> </div>
-<div class="line"><a name="l02878"></a><span class="lineno"> 2878</span>     <span class="keywordflow">while</span>(readline(fp)!=NULL)</div>
-<div class="line"><a name="l02879"></a><span class="lineno"> 2879</span>     {</div>
-<div class="line"><a name="l02880"></a><span class="lineno"> 2880</span>         p = strtok(line,<span class="stringliteral">":"</span>);</div>
-<div class="line"><a name="l02881"></a><span class="lineno"> 2881</span>         <span class="keywordflow">while</span>(1)</div>
-<div class="line"><a name="l02882"></a><span class="lineno"> 2882</span>         {</div>
-<div class="line"><a name="l02883"></a><span class="lineno"> 2883</span>             p = strtok(NULL,<span class="stringliteral">":"</span>);</div>
-<div class="line"><a name="l02884"></a><span class="lineno"> 2884</span>             <span class="keywordflow">if</span>(p == NULL)</div>
-<div class="line"><a name="l02885"></a><span class="lineno"> 2885</span>                 <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l02886"></a><span class="lineno"> 2886</span>             ++elements;</div>
-<div class="line"><a name="l02887"></a><span class="lineno"> 2887</span>         }</div>
-<div class="line"><a name="l02888"></a><span class="lineno"> 2888</span>     }</div>
-<div class="line"><a name="l02889"></a><span class="lineno"> 2889</span>     elements += model->l;</div>
-<div class="line"><a name="l02890"></a><span class="lineno"> 2890</span> </div>
-<div class="line"><a name="l02891"></a><span class="lineno"> 2891</span>     fseek(fp,pos,SEEK_SET);</div>
-<div class="line"><a name="l02892"></a><span class="lineno"> 2892</span> </div>
-<div class="line"><a name="l02893"></a><span class="lineno"> 2893</span>     <span class="keywordtype">int</span> m = model->nr_class - 1;</div>
-<div class="line"><a name="l02894"></a><span class="lineno"> 2894</span>     <span class="keywordtype">int</span> l = model->l;</div>
-<div class="line"><a name="l02895"></a><span class="lineno"> 2895</span>     model->sv_coef = Malloc(<span class="keywordtype">double</span> *,m);</div>
-<div class="line"><a name="l02896"></a><span class="lineno"> 2896</span>     <span class="keywordtype">int</span> i;</div>
-<div class="line"><a name="l02897"></a><span class="lineno"> 2897</span>     <span class="keywordflow">for</span>(i=0;i<m;i++)</div>
-<div class="line"><a name="l02898"></a><span class="lineno"> 2898</span>         model->sv_coef[i] = Malloc(<span class="keywordtype">double</span>,l);</div>
-<div class="line"><a name="l02899"></a><span class="lineno"> 2899</span>     model->SV = Malloc(<a class="code" href="structsvm__node.html">svm_node</a>*,l);</div>
-<div class="line"><a name="l02900"></a><span class="lineno"> 2900</span>     <a class="code" href="structsvm__node.html">svm_node</a> *x_space = NULL;</div>
-<div class="line"><a name="l02901"></a><span class="lineno"> 2901</span>     <span class="keywordflow">if</span>(l>0) x_space = Malloc(<a class="code" href="structsvm__node.html">svm_node</a>,elements);</div>
-<div class="line"><a name="l02902"></a><span class="lineno"> 2902</span> </div>
-<div class="line"><a name="l02903"></a><span class="lineno"> 2903</span>     <span class="keywordtype">int</span> j=0;</div>
-<div class="line"><a name="l02904"></a><span class="lineno"> 2904</span>     <span class="keywordflow">for</span>(i=0;i<l;i++)</div>
-<div class="line"><a name="l02905"></a><span class="lineno"> 2905</span>     {</div>
-<div class="line"><a name="l02906"></a><span class="lineno"> 2906</span>         readline(fp);</div>
-<div class="line"><a name="l02907"></a><span class="lineno"> 2907</span>         model->SV[i] = &x_space[j];</div>
-<div class="line"><a name="l02908"></a><span class="lineno"> 2908</span> </div>
-<div class="line"><a name="l02909"></a><span class="lineno"> 2909</span>         p = strtok(line, <span class="stringliteral">" \t"</span>);</div>
-<div class="line"><a name="l02910"></a><span class="lineno"> 2910</span>         model->sv_coef[0][i] = strtod(p,&endptr);</div>
-<div class="line"><a name="l02911"></a><span class="lineno"> 2911</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> k=1;k<m;k++)</div>
-<div class="line"><a name="l02912"></a><span class="lineno"> 2912</span>         {</div>
-<div class="line"><a name="l02913"></a><span class="lineno"> 2913</span>             p = strtok(NULL, <span class="stringliteral">" \t"</span>);</div>
-<div class="line"><a name="l02914"></a><span class="lineno"> 2914</span>             model->sv_coef[k][i] = strtod(p,&endptr);</div>
-<div class="line"><a name="l02915"></a><span class="lineno"> 2915</span>         }</div>
-<div class="line"><a name="l02916"></a><span class="lineno"> 2916</span> </div>
-<div class="line"><a name="l02917"></a><span class="lineno"> 2917</span>         <span class="keywordflow">while</span>(1)</div>
-<div class="line"><a name="l02918"></a><span class="lineno"> 2918</span>         {</div>
-<div class="line"><a name="l02919"></a><span class="lineno"> 2919</span>             idx = strtok(NULL, <span class="stringliteral">":"</span>);</div>
-<div class="line"><a name="l02920"></a><span class="lineno"> 2920</span>             val = strtok(NULL, <span class="stringliteral">" \t"</span>);</div>
-<div class="line"><a name="l02921"></a><span class="lineno"> 2921</span> </div>
-<div class="line"><a name="l02922"></a><span class="lineno"> 2922</span>             <span class="keywordflow">if</span>(val == NULL)</div>
-<div class="line"><a name="l02923"></a><span class="lineno"> 2923</span>                 <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l02924"></a><span class="lineno"> 2924</span>             x_space[j].index = (int) strtol(idx,&endptr,10);</div>
-<div class="line"><a name="l02925"></a><span class="lineno"> 2925</span>             x_space[j].value = strtod(val,&endptr);</div>
-<div class="line"><a name="l02926"></a><span class="lineno"> 2926</span> </div>
-<div class="line"><a name="l02927"></a><span class="lineno"> 2927</span>             ++j;</div>
-<div class="line"><a name="l02928"></a><span class="lineno"> 2928</span>         }</div>
-<div class="line"><a name="l02929"></a><span class="lineno"> 2929</span>         x_space[j++].index = -1;</div>
-<div class="line"><a name="l02930"></a><span class="lineno"> 2930</span>     }</div>
-<div class="line"><a name="l02931"></a><span class="lineno"> 2931</span>     free(line);</div>
-<div class="line"><a name="l02932"></a><span class="lineno"> 2932</span> </div>
-<div class="line"><a name="l02933"></a><span class="lineno"> 2933</span>     setlocale(LC_ALL, old_locale);</div>
-<div class="line"><a name="l02934"></a><span class="lineno"> 2934</span>     free(old_locale);</div>
-<div class="line"><a name="l02935"></a><span class="lineno"> 2935</span> </div>
-<div class="line"><a name="l02936"></a><span class="lineno"> 2936</span>     <span class="keywordflow">if</span> (ferror(fp) != 0 || fclose(fp) != 0)</div>
-<div class="line"><a name="l02937"></a><span class="lineno"> 2937</span>         <span class="keywordflow">return</span> NULL;</div>
-<div class="line"><a name="l02938"></a><span class="lineno"> 2938</span> </div>
-<div class="line"><a name="l02939"></a><span class="lineno"> 2939</span>     model->free_sv = 1; <span class="comment">// XXX</span></div>
-<div class="line"><a name="l02940"></a><span class="lineno"> 2940</span>     <span class="keywordflow">return</span> model;</div>
-<div class="line"><a name="l02941"></a><span class="lineno"> 2941</span> }</div>
-<div class="line"><a name="l02942"></a><span class="lineno"> 2942</span> </div>
-<div class="line"><a name="l02943"></a><span class="lineno"> 2943</span> <span class="keywordtype">void</span> svm_free_model_content(<a class="code" href="structsvm__model.html">svm_model</a>* model_ptr)</div>
-<div class="line"><a name="l02944"></a><span class="lineno"> 2944</span> {</div>
-<div class="line"><a name="l02945"></a><span class="lineno"> 2945</span>     <span class="keywordflow">if</span>(model_ptr->free_sv && model_ptr->l > 0 && model_ptr->SV != NULL)</div>
-<div class="line"><a name="l02946"></a><span class="lineno"> 2946</span>         free((<span class="keywordtype">void</span> *)(model_ptr->SV[0]));</div>
-<div class="line"><a name="l02947"></a><span class="lineno"> 2947</span>     <span class="keywordflow">if</span>(model_ptr->sv_coef)</div>
-<div class="line"><a name="l02948"></a><span class="lineno"> 2948</span>     {</div>
-<div class="line"><a name="l02949"></a><span class="lineno"> 2949</span>         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i<model_ptr->nr_class-1;i++)</div>
-<div class="line"><a name="l02950"></a><span class="lineno"> 2950</span>             free(model_ptr->sv_coef[i]);</div>
-<div class="line"><a name="l02951"></a><span class="lineno"> 2951</span>     }</div>
-<div class="line"><a name="l02952"></a><span class="lineno"> 2952</span> </div>
-<div class="line"><a name="l02953"></a><span class="lineno"> 2953</span>     free(model_ptr->SV);</div>
-<div class="line"><a name="l02954"></a><span class="lineno"> 2954</span>     model_ptr->SV = NULL;</div>
-<div class="line"><a name="l02955"></a><span class="lineno"> 2955</span> </div>
-<div class="line"><a name="l02956"></a><span class="lineno"> 2956</span>     free(model_ptr->sv_coef);</div>
-<div class="line"><a name="l02957"></a><span class="lineno"> 2957</span>     model_ptr->sv_coef = NULL;</div>
-<div class="line"><a name="l02958"></a><span class="lineno"> 2958</span> </div>
-<div class="line"><a name="l02959"></a><span class="lineno"> 2959</span>     free(model_ptr->rho);</div>
-<div class="line"><a name="l02960"></a><span class="lineno"> 2960</span>     model_ptr->rho = NULL;</div>
-<div class="line"><a name="l02961"></a><span class="lineno"> 2961</span> </div>
-<div class="line"><a name="l02962"></a><span class="lineno"> 2962</span>     free(model_ptr->label);</div>
-<div class="line"><a name="l02963"></a><span class="lineno"> 2963</span>     model_ptr->label= NULL;</div>
-<div class="line"><a name="l02964"></a><span class="lineno"> 2964</span> </div>
-<div class="line"><a name="l02965"></a><span class="lineno"> 2965</span>     free(model_ptr->probA);</div>
-<div class="line"><a name="l02966"></a><span class="lineno"> 2966</span>     model_ptr->probA = NULL;</div>
-<div class="line"><a name="l02967"></a><span class="lineno"> 2967</span> </div>
-<div class="line"><a name="l02968"></a><span class="lineno"> 2968</span>     free(model_ptr->probB);</div>
-<div class="line"><a name="l02969"></a><span class="lineno"> 2969</span>     model_ptr->probB= NULL;</div>
-<div class="line"><a name="l02970"></a><span class="lineno"> 2970</span> </div>
-<div class="line"><a name="l02971"></a><span class="lineno"> 2971</span>     free(model_ptr->nSV);</div>
-<div class="line"><a name="l02972"></a><span class="lineno"> 2972</span>     model_ptr->nSV = NULL;</div>
-<div class="line"><a name="l02973"></a><span class="lineno"> 2973</span> }</div>
-<div class="line"><a name="l02974"></a><span class="lineno"> 2974</span> </div>
-<div class="line"><a name="l02975"></a><span class="lineno"> 2975</span> <span class="keywordtype">void</span> svm_free_and_destroy_model(<a class="code" href="structsvm__model.html">svm_model</a>** model_ptr_ptr)</div>
-<div class="line"><a name="l02976"></a><span class="lineno"> 2976</span> {</div>
-<div class="line"><a name="l02977"></a><span class="lineno"> 2977</span>     <span class="keywordflow">if</span>(model_ptr_ptr != NULL && *model_ptr_ptr != NULL)</div>
-<div class="line"><a name="l02978"></a><span class="lineno"> 2978</span>     {</div>
-<div class="line"><a name="l02979"></a><span class="lineno"> 2979</span>         svm_free_model_content(*model_ptr_ptr);</div>
-<div class="line"><a name="l02980"></a><span class="lineno"> 2980</span>         free(*model_ptr_ptr);</div>
-<div class="line"><a name="l02981"></a><span class="lineno"> 2981</span>         *model_ptr_ptr = NULL;</div>
-<div class="line"><a name="l02982"></a><span class="lineno"> 2982</span>     }</div>
-<div class="line"><a name="l02983"></a><span class="lineno"> 2983</span> }</div>
-<div class="line"><a name="l02984"></a><span class="lineno"> 2984</span> </div>
-<div class="line"><a name="l02985"></a><span class="lineno"> 2985</span> <span class="keywordtype">void</span> svm_destroy_param(<a class="code" href="structsvm__parameter.html">svm_parameter</a>* param)</div>
-<div class="line"><a name="l02986"></a><span class="lineno"> 2986</span> {</div>
-<div class="line"><a name="l02987"></a><span class="lineno"> 2987</span>     free(param->weight_label);</div>
-<div class="line"><a name="l02988"></a><span class="lineno"> 2988</span>     free(param->weight);</div>
-<div class="line"><a name="l02989"></a><span class="lineno"> 2989</span> }</div>
-<div class="line"><a name="l02990"></a><span class="lineno"> 2990</span> </div>
-<div class="line"><a name="l02991"></a><span class="lineno"> 2991</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *svm_check_parameter(<span class="keyword">const</span> <a class="code" href="structsvm__problem.html">svm_problem</a> *prob, <span class="keyword">const</span> <a class="code" href="structsvm__parameter.html">svm_parameter</a> *param)</div>
-<div class="line"><a name="l02992"></a><span class="lineno"> 2992</span> {</div>
-<div class="line"><a name="l02993"></a><span class="lineno"> 2993</span>     <span class="comment">// svm_type</span></div>
-<div class="line"><a name="l02994"></a><span class="lineno"> 2994</span> </div>
-<div class="line"><a name="l02995"></a><span class="lineno"> 2995</span>     <span class="keywordtype">int</span> svm_type = param->svm_type;</div>
-<div class="line"><a name="l02996"></a><span class="lineno"> 2996</span>     <span class="keywordflow">if</span>(svm_type != C_SVC &&</div>
-<div class="line"><a name="l02997"></a><span class="lineno"> 2997</span>        svm_type != NU_SVC &&</div>
-<div class="line"><a name="l02998"></a><span class="lineno"> 2998</span>        svm_type != ONE_CLASS &&</div>
-<div class="line"><a name="l02999"></a><span class="lineno"> 2999</span>        svm_type != EPSILON_SVR &&</div>
-<div class="line"><a name="l03000"></a><span class="lineno"> 3000</span>        svm_type != NU_SVR)</div>
-<div class="line"><a name="l03001"></a><span class="lineno"> 3001</span>         <span class="keywordflow">return</span> <span class="stringliteral">"unknown svm type"</span>;</div>
-<div class="line"><a name="l03002"></a><span class="lineno"> 3002</span>     </div>
-<div class="line"><a name="l03003"></a><span class="lineno"> 3003</span>     <span class="comment">// kernel_type, degree</span></div>
-<div class="line"><a name="l03004"></a><span class="lineno"> 3004</span>     </div>
-<div class="line"><a name="l03005"></a><span class="lineno"> 3005</span>     <span class="keywordtype">int</span> kernel_type = param->kernel_type;</div>
-<div class="line"><a name="l03006"></a><span class="lineno"> 3006</span>     <span class="keywordflow">if</span>(kernel_type != LINEAR &&</div>
-<div class="line"><a name="l03007"></a><span class="lineno"> 3007</span>        kernel_type != POLY &&</div>
-<div class="line"><a name="l03008"></a><span class="lineno"> 3008</span>        kernel_type != RBF &&</div>
-<div class="line"><a name="l03009"></a><span class="lineno"> 3009</span>        kernel_type != SIGMOID &&</div>
-<div class="line"><a name="l03010"></a><span class="lineno"> 3010</span>        kernel_type != PRECOMPUTED)</div>
-<div class="line"><a name="l03011"></a><span class="lineno"> 3011</span>         <span class="keywordflow">return</span> <span class="stringliteral">"unknown kernel type"</span>;</div>
-<div class="line"><a name="l03012"></a><span class="lineno"> 3012</span> </div>
-<div class="line"><a name="l03013"></a><span class="lineno"> 3013</span>     <span class="keywordflow">if</span>(param->gamma < 0)</div>
-<div class="line"><a name="l03014"></a><span class="lineno"> 3014</span>         <span class="keywordflow">return</span> <span class="stringliteral">"gamma < 0"</span>;</div>
-<div class="line"><a name="l03015"></a><span class="lineno"> 3015</span> </div>
-<div class="line"><a name="l03016"></a><span class="lineno"> 3016</span>     <span class="keywordflow">if</span>(param->degree < 0)</div>
-<div class="line"><a name="l03017"></a><span class="lineno"> 3017</span>         <span class="keywordflow">return</span> <span class="stringliteral">"degree of polynomial kernel < 0"</span>;</div>
-<div class="line"><a name="l03018"></a><span class="lineno"> 3018</span> </div>
-<div class="line"><a name="l03019"></a><span class="lineno"> 3019</span>     <span class="comment">// cache_size,eps,C,nu,p,shrinking</span></div>
-<div class="line"><a name="l03020"></a><span class="lineno"> 3020</span> </div>
-<div class="line"><a name="l03021"></a><span class="lineno"> 3021</span>     <span class="keywordflow">if</span>(param->cache_size <= 0)</div>
-<div class="line"><a name="l03022"></a><span class="lineno"> 3022</span>         <span class="keywordflow">return</span> <span class="stringliteral">"cache_size <= 0"</span>;</div>
-<div class="line"><a name="l03023"></a><span class="lineno"> 3023</span> </div>
-<div class="line"><a name="l03024"></a><span class="lineno"> 3024</span>     <span class="keywordflow">if</span>(param->eps <= 0)</div>
-<div class="line"><a name="l03025"></a><span class="lineno"> 3025</span>         <span class="keywordflow">return</span> <span class="stringliteral">"eps <= 0"</span>;</div>
-<div class="line"><a name="l03026"></a><span class="lineno"> 3026</span> </div>
-<div class="line"><a name="l03027"></a><span class="lineno"> 3027</span>     <span class="keywordflow">if</span>(svm_type == C_SVC ||</div>
-<div class="line"><a name="l03028"></a><span class="lineno"> 3028</span>        svm_type == EPSILON_SVR ||</div>
-<div class="line"><a name="l03029"></a><span class="lineno"> 3029</span>        svm_type == NU_SVR)</div>
-<div class="line"><a name="l03030"></a><span class="lineno"> 3030</span>         <span class="keywordflow">if</span>(param->C <= 0)</div>
-<div class="line"><a name="l03031"></a><span class="lineno"> 3031</span>             <span class="keywordflow">return</span> <span class="stringliteral">"C <= 0"</span>;</div>
-<div class="line"><a name="l03032"></a><span class="lineno"> 3032</span> </div>
-<div class="line"><a name="l03033"></a><span class="lineno"> 3033</span>     <span class="keywordflow">if</span>(svm_type == NU_SVC ||</div>
-<div class="line"><a name="l03034"></a><span class="lineno"> 3034</span>        svm_type == ONE_CLASS ||</div>
-<div class="line"><a name="l03035"></a><span class="lineno"> 3035</span>        svm_type == NU_SVR)</div>
-<div class="line"><a name="l03036"></a><span class="lineno"> 3036</span>         <span class="keywordflow">if</span>(param->nu <= 0 || param->nu > 1)</div>
-<div class="line"><a name="l03037"></a><span class="lineno"> 3037</span>             <span class="keywordflow">return</span> <span class="stringliteral">"nu <= 0 or nu > 1"</span>;</div>
-<div class="line"><a name="l03038"></a><span class="lineno"> 3038</span> </div>
-<div class="line"><a name="l03039"></a><span class="lineno"> 3039</span>     <span class="keywordflow">if</span>(svm_type == EPSILON_SVR)</div>
-<div class="line"><a name="l03040"></a><span class="lineno"> 3040</span>         <span class="keywordflow">if</span>(param->p < 0)</div>
-<div class="line"><a name="l03041"></a><span class="lineno"> 3041</span>             <span class="keywordflow">return</span> <span class="stringliteral">"p < 0"</span>;</div>
-<div class="line"><a name="l03042"></a><span class="lineno"> 3042</span> </div>
-<div class="line"><a name="l03043"></a><span class="lineno"> 3043</span>     <span class="keywordflow">if</span>(param->shrinking != 0 &&</div>
-<div class="line"><a name="l03044"></a><span class="lineno"> 3044</span>        param->shrinking != 1)</div>
-<div class="line"><a name="l03045"></a><span class="lineno"> 3045</span>         <span class="keywordflow">return</span> <span class="stringliteral">"shrinking != 0 and shrinking != 1"</span>;</div>
-<div class="line"><a name="l03046"></a><span class="lineno"> 3046</span> </div>
-<div class="line"><a name="l03047"></a><span class="lineno"> 3047</span>     <span class="keywordflow">if</span>(param->probability != 0 &&</div>
-<div class="line"><a name="l03048"></a><span class="lineno"> 3048</span>        param->probability != 1)</div>
-<div class="line"><a name="l03049"></a><span class="lineno"> 3049</span>         <span class="keywordflow">return</span> <span class="stringliteral">"probability != 0 and probability != 1"</span>;</div>
-<div class="line"><a name="l03050"></a><span class="lineno"> 3050</span> </div>
-<div class="line"><a name="l03051"></a><span class="lineno"> 3051</span>     <span class="keywordflow">if</span>(param->probability == 1 &&</div>
-<div class="line"><a name="l03052"></a><span class="lineno"> 3052</span>        svm_type == ONE_CLASS)</div>
-<div class="line"><a name="l03053"></a><span class="lineno"> 3053</span>         <span class="keywordflow">return</span> <span class="stringliteral">"one-class SVM probability output not supported yet"</span>;</div>
-<div class="line"><a name="l03054"></a><span class="lineno"> 3054</span> </div>
-<div class="line"><a name="l03055"></a><span class="lineno"> 3055</span> </div>
-<div class="line"><a name="l03056"></a><span class="lineno"> 3056</span>     <span class="comment">// check whether nu-svc is feasible</span></div>
-<div class="line"><a name="l03057"></a><span class="lineno"> 3057</span>     </div>
-<div class="line"><a name="l03058"></a><span class="lineno"> 3058</span>     <span class="keywordflow">if</span>(svm_type == NU_SVC)</div>
-<div class="line"><a name="l03059"></a><span class="lineno"> 3059</span>     {</div>
-<div class="line"><a name="l03060"></a><span class="lineno"> 3060</span>         <span class="keywordtype">int</span> l = prob->l;</div>
-<div class="line"><a name="l03061"></a><span class="lineno"> 3061</span>         <span class="keywordtype">int</span> max_nr_class = 16;</div>
-<div class="line"><a name="l03062"></a><span class="lineno"> 3062</span>         <span class="keywordtype">int</span> nr_class = 0;</div>
-<div class="line"><a name="l03063"></a><span class="lineno"> 3063</span>         <span class="keywordtype">int</span> *label = Malloc(<span class="keywordtype">int</span>,max_nr_class);</div>
-<div class="line"><a name="l03064"></a><span class="lineno"> 3064</span>         <span class="keywordtype">int</span> *count = Malloc(<span class="keywordtype">int</span>,max_nr_class);</div>
-<div class="line"><a name="l03065"></a><span class="lineno"> 3065</span> </div>
-<div class="line"><a name="l03066"></a><span class="lineno"> 3066</span>         <span class="keywordtype">int</span> i;</div>
-<div class="line"><a name="l03067"></a><span class="lineno"> 3067</span>         <span class="keywordflow">for</span>(i=0;i<l;i++)</div>
-<div class="line"><a name="l03068"></a><span class="lineno"> 3068</span>         {</div>
-<div class="line"><a name="l03069"></a><span class="lineno"> 3069</span>             <span class="keywordtype">int</span> this_label = (int)prob->y[i];</div>
-<div class="line"><a name="l03070"></a><span class="lineno"> 3070</span>             <span class="keywordtype">int</span> j;</div>
-<div class="line"><a name="l03071"></a><span class="lineno"> 3071</span>             <span class="keywordflow">for</span>(j=0;j<nr_class;j++)</div>
-<div class="line"><a name="l03072"></a><span class="lineno"> 3072</span>                 <span class="keywordflow">if</span>(this_label == label[j])</div>
-<div class="line"><a name="l03073"></a><span class="lineno"> 3073</span>                 {</div>
-<div class="line"><a name="l03074"></a><span class="lineno"> 3074</span>                     ++count[j];</div>
-<div class="line"><a name="l03075"></a><span class="lineno"> 3075</span>                     <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l03076"></a><span class="lineno"> 3076</span>                 }</div>
-<div class="line"><a name="l03077"></a><span class="lineno"> 3077</span>             <span class="keywordflow">if</span>(j == nr_class)</div>
-<div class="line"><a name="l03078"></a><span class="lineno"> 3078</span>             {</div>
-<div class="line"><a name="l03079"></a><span class="lineno"> 3079</span>                 <span class="keywordflow">if</span>(nr_class == max_nr_class)</div>
-<div class="line"><a name="l03080"></a><span class="lineno"> 3080</span>                 {</div>
-<div class="line"><a name="l03081"></a><span class="lineno"> 3081</span>                     max_nr_class *= 2;</div>
-<div class="line"><a name="l03082"></a><span class="lineno"> 3082</span>                     label = (<span class="keywordtype">int</span> *)realloc(label,max_nr_class*<span class="keyword">sizeof</span>(<span class="keywordtype">int</span>));</div>
-<div class="line"><a name="l03083"></a><span class="lineno"> 3083</span>                     count = (<span class="keywordtype">int</span> *)realloc(count,max_nr_class*<span class="keyword">sizeof</span>(<span class="keywordtype">int</span>));</div>
-<div class="line"><a name="l03084"></a><span class="lineno"> 3084</span>                 }</div>
-<div class="line"><a name="l03085"></a><span class="lineno"> 3085</span>                 label[nr_class] = this_label;</div>
-<div class="line"><a name="l03086"></a><span class="lineno"> 3086</span>                 count[nr_class] = 1;</div>
-<div class="line"><a name="l03087"></a><span class="lineno"> 3087</span>                 ++nr_class;</div>
-<div class="line"><a name="l03088"></a><span class="lineno"> 3088</span>             }</div>
-<div class="line"><a name="l03089"></a><span class="lineno"> 3089</span>         }</div>
-<div class="line"><a name="l03090"></a><span class="lineno"> 3090</span>     </div>
-<div class="line"><a name="l03091"></a><span class="lineno"> 3091</span>         <span class="keywordflow">for</span>(i=0;i<nr_class;i++)</div>
-<div class="line"><a name="l03092"></a><span class="lineno"> 3092</span>         {</div>
-<div class="line"><a name="l03093"></a><span class="lineno"> 3093</span>             <span class="keywordtype">int</span> n1 = count[i];</div>
-<div class="line"><a name="l03094"></a><span class="lineno"> 3094</span>             <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=i+1;j<nr_class;j++)</div>
-<div class="line"><a name="l03095"></a><span class="lineno"> 3095</span>             {</div>
-<div class="line"><a name="l03096"></a><span class="lineno"> 3096</span>                 <span class="keywordtype">int</span> n2 = count[j];</div>
-<div class="line"><a name="l03097"></a><span class="lineno"> 3097</span>                 <span class="keywordflow">if</span>(param->nu*(n1+n2)/2 > min(n1,n2))</div>
-<div class="line"><a name="l03098"></a><span class="lineno"> 3098</span>                 {</div>
-<div class="line"><a name="l03099"></a><span class="lineno"> 3099</span>                     free(label);</div>
-<div class="line"><a name="l03100"></a><span class="lineno"> 3100</span>                     free(count);</div>
-<div class="line"><a name="l03101"></a><span class="lineno"> 3101</span>                     <span class="keywordflow">return</span> <span class="stringliteral">"specified nu is infeasible"</span>;</div>
-<div class="line"><a name="l03102"></a><span class="lineno"> 3102</span>                 }</div>
-<div class="line"><a name="l03103"></a><span class="lineno"> 3103</span>             }</div>
-<div class="line"><a name="l03104"></a><span class="lineno"> 3104</span>         }</div>
-<div class="line"><a name="l03105"></a><span class="lineno"> 3105</span>         free(label);</div>
-<div class="line"><a name="l03106"></a><span class="lineno"> 3106</span>         free(count);</div>
-<div class="line"><a name="l03107"></a><span class="lineno"> 3107</span>     }</div>
-<div class="line"><a name="l03108"></a><span class="lineno"> 3108</span> </div>
-<div class="line"><a name="l03109"></a><span class="lineno"> 3109</span>     <span class="keywordflow">return</span> NULL;</div>
-<div class="line"><a name="l03110"></a><span class="lineno"> 3110</span> }</div>
-<div class="line"><a name="l03111"></a><span class="lineno"> 3111</span> </div>
-<div class="line"><a name="l03112"></a><span class="lineno"> 3112</span> <span class="keywordtype">int</span> svm_check_probability_model(<span class="keyword">const</span> <a class="code" href="structsvm__model.html">svm_model</a> *model)</div>
-<div class="line"><a name="l03113"></a><span class="lineno"> 3113</span> {</div>
-<div class="line"><a name="l03114"></a><span class="lineno"> 3114</span>     <span class="keywordflow">return</span> ((model->param.svm_type == C_SVC || model->param.svm_type == NU_SVC) &&</div>
-<div class="line"><a name="l03115"></a><span class="lineno"> 3115</span>         model->probA!=NULL && model->probB!=NULL) ||</div>
-<div class="line"><a name="l03116"></a><span class="lineno"> 3116</span>         ((model->param.svm_type == EPSILON_SVR || model->param.svm_type == NU_SVR) &&</div>
-<div class="line"><a name="l03117"></a><span class="lineno"> 3117</span>          model->probA!=NULL);</div>
-<div class="line"><a name="l03118"></a><span class="lineno"> 3118</span> }</div>
-<div class="line"><a name="l03119"></a><span class="lineno"> 3119</span> </div>
-<div class="line"><a name="l03120"></a><span class="lineno"> 3120</span> <span class="keywordtype">void</span> svm_set_print_string_function(<span class="keywordtype">void</span> (*print_func)(<span class="keyword">const</span> <span class="keywordtype">char</span> *))</div>
-<div class="line"><a name="l03121"></a><span class="lineno"> 3121</span> {</div>
-<div class="line"><a name="l03122"></a><span class="lineno"> 3122</span>     <span class="keywordflow">if</span>(print_func == NULL)</div>
-<div class="line"><a name="l03123"></a><span class="lineno"> 3123</span>         svm_print_string = &print_string_stdout;</div>
-<div class="line"><a name="l03124"></a><span class="lineno"> 3124</span>     <span class="keywordflow">else</span></div>
-<div class="line"><a name="l03125"></a><span class="lineno"> 3125</span>         svm_print_string = print_func;</div>
-<div class="line"><a name="l03126"></a><span class="lineno"> 3126</span> }</div>
-<div class="ttc" id="classONE__CLASS__Q_html"><div class="ttname"><a href="classONE__CLASS__Q.html">ONE_CLASS_Q</a></div><div class="ttdef"><b>Definition:</b> <a href="svm_8cpp_source.html#l01323">svm.cpp:1323</a></div></div>
-<div class="ttc" id="classQMatrix_html"><div class="ttname"><a href="classQMatrix.html">QMatrix</a></div><div class="ttdef"><b>Definition:</b> <a href="svm_8cpp_source.html#l00196">svm.cpp:196</a></div></div>
-<div class="ttc" id="structSolver_1_1SolutionInfo_html"><div class="ttname"><a href="structSolver_1_1SolutionInfo.html">Solver::SolutionInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="svm_8cpp_source.html#l00400">svm.cpp:400</a></div></div>
-<div class="ttc" id="structsvm__parameter_html"><div class="ttname"><a href="structsvm__parameter.html">svm_parameter</a></div><div class="ttdef"><b>Definition:</b> <a href="svm_8h_source.html#l00028">svm.h:28</a></div></div>
-<div class="ttc" id="structsvm__model_html"><div class="ttname"><a href="structsvm__model.html">svm_model</a></div><div class="ttdef"><b>Definition:</b> <a href="svm_8h_source.html#l00053">svm.h:53</a></div></div>
-<div class="ttc" id="classCache_html"><div class="ttname"><a href="classCache.html">Cache</a></div><div class="ttdef"><b>Definition:</b> <a href="svm_8cpp_source.html#l00069">svm.cpp:69</a></div></div>
-<div class="ttc" id="classSVR__Q_html"><div class="ttname"><a href="classSVR__Q.html">SVR_Q</a></div><div class="ttdef"><b>Definition:</b> <a href="svm_8cpp_source.html#l01369">svm.cpp:1369</a></div></div>
-<div class="ttc" id="structdecision__function_html"><div class="ttname"><a href="structdecision__function.html">decision_function</a></div><div class="ttdef"><b>Definition:</b> <a href="svm_8cpp_source.html#l01652">svm.cpp:1652</a></div></div>
-<div class="ttc" id="classSVC__Q_html"><div class="ttname"><a href="classSVC__Q.html">SVC_Q</a></div><div class="ttdef"><b>Definition:</b> <a href="svm_8cpp_source.html#l01273">svm.cpp:1273</a></div></div>
-<div class="ttc" id="classSolver_html"><div class="ttname"><a href="classSolver.html">Solver</a></div><div class="ttdef"><b>Definition:</b> <a href="svm_8cpp_source.html#l00395">svm.cpp:395</a></div></div>
-<div class="ttc" id="classKernel_html"><div class="ttname"><a href="classKernel.html">Kernel</a></div><div class="ttdef"><b>Definition:</b> <a href="svm_8cpp_source.html#l00204">svm.cpp:204</a></div></div>
-<div class="ttc" id="structsvm__node_html"><div class="ttname"><a href="structsvm__node.html">svm_node</a></div><div class="ttdef"><b>Definition:</b> <a href="svm_8h_source.html#l00012">svm.h:12</a></div></div>
-<div class="ttc" id="classSolver__NU_html"><div class="ttname"><a href="classSolver__NU.html">Solver_NU</a></div><div class="ttdef"><b>Definition:</b> <a href="svm_8cpp_source.html#l01016">svm.cpp:1016</a></div></div>
-<div class="ttc" id="structsvm__problem_html"><div class="ttname"><a href="structsvm__problem.html">svm_problem</a></div><div class="ttdef"><b>Definition:</b> <a href="svm_8h_source.html#l00018">svm.h:18</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/svm_8h_source.html b/doc/html/svm_8h_source.html
deleted file mode 100644
index 146302f..0000000
--- a/doc/html/svm_8h_source.html
+++ /dev/null
@@ -1,178 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/src/algorithms/svm.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.6</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_e6df591b0639d4c4807ef64d058833e2.html">algorithms</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">svm.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="preprocessor">#ifndef _LIBSVM_H</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="preprocessor"></span><span class="preprocessor">#define _LIBSVM_H</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="preprocessor">#define LIBSVM_VERSION 312</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="preprocessor">#ifdef __cplusplus</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {</div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="keyword">extern</span> <span class="keywordtype">int</span> libsvm_version;</div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> </div>
-<div class="line"><a name="l00012"></a><span class="lineno"><a class="line" href="structsvm__node.html">   12</a></span> <span class="keyword">struct </span><a class="code" href="structsvm__node.html">svm_node</a></div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> {</div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span>     <span class="keywordtype">int</span> index;</div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span>     <span class="keywordtype">double</span> value;</div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> };</div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> </div>
-<div class="line"><a name="l00018"></a><span class="lineno"><a class="line" href="structsvm__problem.html">   18</a></span> <span class="keyword">struct </span><a class="code" href="structsvm__problem.html">svm_problem</a></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> {</div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span>     <span class="keywordtype">int</span> l;</div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span>     <span class="keywordtype">double</span> *y;</div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span>     <span class="keyword">struct </span><a class="code" href="structsvm__node.html">svm_node</a> **x;</div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> };</div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> </div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="keyword">enum</span> { C_SVC, NU_SVC, ONE_CLASS, EPSILON_SVR, NU_SVR }; <span class="comment">/* svm_type */</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">enum</span> { LINEAR, POLY, RBF, SIGMOID, PRECOMPUTED }; <span class="comment">/* kernel_type */</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> </div>
-<div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="structsvm__parameter.html">   28</a></span> <span class="keyword">struct </span><a class="code" href="structsvm__parameter.html">svm_parameter</a></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> {</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>     <span class="keywordtype">int</span> svm_type;</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span>     <span class="keywordtype">int</span> kernel_type;</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>     <span class="keywordtype">int</span> degree; <span class="comment">/* for poly */</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>     <span class="keywordtype">double</span> gamma;   <span class="comment">/* for poly/rbf/sigmoid */</span></div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>     <span class="keywordtype">double</span> coef0;   <span class="comment">/* for poly/sigmoid */</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> </div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>     <span class="comment">/* these are for training only */</span></div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>     <span class="keywordtype">double</span> cache_size; <span class="comment">/* in MB */</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>     <span class="keywordtype">double</span> eps; <span class="comment">/* stopping criteria */</span></div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>     <span class="keywordtype">double</span> C;   <span class="comment">/* for C_SVC, EPSILON_SVR and NU_SVR */</span></div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     <span class="keywordtype">int</span> nr_weight;      <span class="comment">/* for C_SVC */</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     <span class="keywordtype">int</span> *weight_label;  <span class="comment">/* for C_SVC */</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     <span class="keywordtype">double</span>* weight;     <span class="comment">/* for C_SVC */</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     <span class="keywordtype">double</span> nu;  <span class="comment">/* for NU_SVC, ONE_CLASS, and NU_SVR */</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     <span class="keywordtype">double</span> p;   <span class="comment">/* for EPSILON_SVR */</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     <span class="keywordtype">int</span> shrinking;  <span class="comment">/* use the shrinking heuristics */</span></div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     <span class="keywordtype">int</span> probability; <span class="comment">/* do probability estimates */</span></div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   <span class="keywordtype">bool</span> verbose;<span class="comment">//pk</span></div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span> };</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span> </div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span> <span class="comment">//</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span> <span class="comment">// svm_model</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span> <span class="comment">// </span></div>
-<div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="structsvm__model.html">   53</a></span> <span class="keyword">struct </span><a class="code" href="structsvm__model.html">svm_model</a></div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span> {</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     <span class="keyword">struct </span><a class="code" href="structsvm__parameter.html">svm_parameter</a> param; <span class="comment">/* parameter */</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <span class="keywordtype">int</span> nr_class;       <span class="comment">/* number of classes, = 2 in regression/one class svm */</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     <span class="keywordtype">int</span> l;          <span class="comment">/* total #SV */</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     <span class="keyword">struct </span><a class="code" href="structsvm__node.html">svm_node</a> **SV;       <span class="comment">/* SVs (SV[l]) */</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     <span class="keywordtype">double</span> **sv_coef;   <span class="comment">/* coefficients for SVs in decision functions (sv_coef[k-1][l]) */</span></div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     <span class="keywordtype">double</span> *rho;        <span class="comment">/* constants in decision functions (rho[k*(k-1)/2]) */</span></div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     <span class="keywordtype">double</span> *probA;      <span class="comment">/* pariwise probability information */</span></div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     <span class="keywordtype">double</span> *probB;</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span> </div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     <span class="comment">/* for classification only */</span></div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span> </div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     <span class="keywordtype">int</span> *label;     <span class="comment">/* label of each class (label[k]) */</span></div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>     <span class="keywordtype">int</span> *nSV;       <span class="comment">/* number of SVs for each class (nSV[k]) */</span></div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>                 <span class="comment">/* nSV[0] + nSV[1] + ... + nSV[k-1] = l */</span></div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     <span class="comment">/* XXX */</span></div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     <span class="keywordtype">int</span> free_sv;        <span class="comment">/* 1 if svm_model is created by svm_load_model*/</span></div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>                 <span class="comment">/* 0 if svm_model is created by svm_train */</span></div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span> };</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span> </div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span> <span class="keyword">struct </span><a class="code" href="structsvm__model.html">svm_model</a> *svm_train(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structsvm__problem.html">svm_problem</a> *prob, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structsvm__parameter.html">svm_parameter</a> *param);</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span> <span class="keywordtype">void</span> svm_cross_validation(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structsvm__problem.html">svm_problem</a> *prob, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structsvm__parameter.html">svm_parameter</a> *param, <span class="keywordtype">int</span> nr_fold, <span class="keywordty [...]
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span> </div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span> <span class="keywordtype">int</span> svm_save_model(<span class="keyword">const</span> <span class="keywordtype">char</span> *model_file_name, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structsvm__model.html">svm_model</a> *model);</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span> <span class="keyword">struct </span><a class="code" href="structsvm__model.html">svm_model</a> *svm_load_model(<span class="keyword">const</span> <span class="keywordtype">char</span> *model_file_name);</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span> </div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span> <span class="keywordtype">int</span> svm_get_svm_type(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structsvm__model.html">svm_model</a> *model);</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span> <span class="keywordtype">int</span> svm_get_nr_class(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structsvm__model.html">svm_model</a> *model);</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span> <span class="keywordtype">void</span> svm_get_labels(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structsvm__model.html">svm_model</a> *model, <span class="keywordtype">int</span> *label);</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span> <span class="keywordtype">double</span> svm_get_svr_probability(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structsvm__model.html">svm_model</a> *model);</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span> </div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span> <span class="keywordtype">double</span> svm_predict_values(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structsvm__model.html">svm_model</a> *model, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structsvm__node.html">svm_node</a> *x, <span class="keywordtype">double</span>* dec_values);</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span> <span class="keywordtype">double</span> svm_predict(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structsvm__model.html">svm_model</a> *model, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structsvm__node.html">svm_node</a> *x);</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span> <span class="keywordtype">double</span> svm_predict_probability(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structsvm__model.html">svm_model</a> *model, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structsvm__node.html">svm_node</a> *x, <span class="keywordtype">double</span>* prob_estimates);</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span> </div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span> <span class="keywordtype">void</span> svm_free_model_content(<span class="keyword">struct</span> <a class="code" href="structsvm__model.html">svm_model</a> *model_ptr);</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span> <span class="keywordtype">void</span> svm_free_and_destroy_model(<span class="keyword">struct</span> <a class="code" href="structsvm__model.html">svm_model</a> **model_ptr_ptr);</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span> <span class="keywordtype">void</span> svm_destroy_param(<span class="keyword">struct</span> <a class="code" href="structsvm__parameter.html">svm_parameter</a> *param);</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span> </div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *svm_check_parameter(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structsvm__problem.html">svm_problem</a> *prob, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structsvm__parameter.html">svm_parameter</a> *param);</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span> <span class="keywordtype">int</span> svm_check_probability_model(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structsvm__model.html">svm_model</a> *model);</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span> </div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span> <span class="keywordtype">void</span> svm_set_print_string_function(<span class="keywordtype">void</span> (*print_func)(<span class="keyword">const</span> <span class="keywordtype">char</span> *));</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span> </div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span> <span class="preprocessor">#ifdef __cplusplus</span></div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span> <span class="preprocessor"></span>}</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span> <span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span> <span class="preprocessor">#endif </span><span class="comment">/* _LIBSVM_H */</span><span class="preprocessor"></span></div>
-<div class="ttc" id="structsvm__parameter_html"><div class="ttname"><a href="structsvm__parameter.html">svm_parameter</a></div><div class="ttdef"><b>Definition:</b> <a href="svm_8h_source.html#l00028">svm.h:28</a></div></div>
-<div class="ttc" id="structsvm__model_html"><div class="ttname"><a href="structsvm__model.html">svm_model</a></div><div class="ttdef"><b>Definition:</b> <a href="svm_8h_source.html#l00053">svm.h:53</a></div></div>
-<div class="ttc" id="structsvm__node_html"><div class="ttname"><a href="structsvm__node.html">svm_node</a></div><div class="ttdef"><b>Definition:</b> <a href="svm_8h_source.html#l00012">svm.h:12</a></div></div>
-<div class="ttc" id="structsvm__problem_html"><div class="ttname"><a href="structsvm__problem.html">svm_problem</a></div><div class="ttdef"><b>Definition:</b> <a href="svm_8h_source.html#l00018">svm.h:18</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Wed Jan 20 2016 09:05:05 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/html/sync_off.png b/doc/html/sync_off.png
deleted file mode 100644
index 3b443fc..0000000
Binary files a/doc/html/sync_off.png and /dev/null differ
diff --git a/doc/html/sync_on.png b/doc/html/sync_on.png
deleted file mode 100644
index e08320f..0000000
Binary files a/doc/html/sync_on.png and /dev/null differ
diff --git a/doc/html/tab_a.png b/doc/html/tab_a.png
deleted file mode 100644
index 3b725c4..0000000
Binary files a/doc/html/tab_a.png and /dev/null differ
diff --git a/doc/html/tab_b.png b/doc/html/tab_b.png
deleted file mode 100644
index e2b4a86..0000000
Binary files a/doc/html/tab_b.png and /dev/null differ
diff --git a/doc/html/tab_h.png b/doc/html/tab_h.png
deleted file mode 100644
index fd5cb70..0000000
Binary files a/doc/html/tab_h.png and /dev/null differ
diff --git a/doc/html/tab_s.png b/doc/html/tab_s.png
deleted file mode 100644
index ab478c9..0000000
Binary files a/doc/html/tab_s.png and /dev/null differ
diff --git a/doc/html/tabs.css b/doc/html/tabs.css
deleted file mode 100644
index 9cf578f..0000000
--- a/doc/html/tabs.css
+++ /dev/null
@@ -1,60 +0,0 @@
-.tabs, .tabs2, .tabs3 {
-    background-image: url('tab_b.png');
-    width: 100%;
-    z-index: 101;
-    font-size: 13px;
-    font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
-}
-
-.tabs2 {
-    font-size: 10px;
-}
-.tabs3 {
-    font-size: 9px;
-}
-
-.tablist {
-    margin: 0;
-    padding: 0;
-    display: table;
-}
-
-.tablist li {
-    float: left;
-    display: table-cell;
-    background-image: url('tab_b.png');
-    line-height: 36px;
-    list-style: none;
-}
-
-.tablist a {
-    display: block;
-    padding: 0 20px;
-    font-weight: bold;
-    background-image:url('tab_s.png');
-    background-repeat:no-repeat;
-    background-position:right;
-    color: #283A5D;
-    text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
-    text-decoration: none;
-    outline: none;
-}
-
-.tabs3 .tablist a {
-    padding: 0 10px;
-}
-
-.tablist a:hover {
-    background-image: url('tab_h.png');
-    background-repeat:repeat-x;
-    color: #fff;
-    text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
-    text-decoration: none;
-}
-
-.tablist li.current a {
-    background-image: url('tab_a.png');
-    background-repeat:repeat-x;
-    color: #fff;
-    text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
-}
diff --git a/doc/html/vis__studio_2config_8h_source.html b/doc/html/vis__studio_2config_8h_source.html
deleted file mode 100644
index ab2b2be..0000000
--- a/doc/html/vis__studio_2config_8h_source.html
+++ /dev/null
@@ -1,153 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.6"/>
-<title>pktools: /home/kempenep/pktools/vis_studio/config.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">pktools
-    <span id="projectnumber">2.6.4</span>
-   </div>
-   <div id="projectbrief">Processing Kernel for geospatial data</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.6 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_457de909e3893805a4d2d0b8c0742bd8.html">vis_studio</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">config.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">/* config.h.  Generated from config.h.in by configure.  */</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">/* config.h.in.  Generated from configure.ac by autoheader.  */</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno">    3</span> </div>
-<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">/* Define to 1 if you have the <dlfcn.h> header file. */</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="preprocessor">#define HAVE_DLFCN_H 1</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">/* Define to 1 if GDAL library are available */</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="preprocessor">#define HAVE_GDAL 1</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">/* Define to 1 if you have the <gdal.h> header file. */</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment">/* #undef HAVE_GDAL_H */</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno">   12</span> </div>
-<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">/* Define to 1 if GDAL library includes OGR support */</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="preprocessor">#define HAVE_GDAL_OGR 1</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment">/* Define to 1 if you have the <inttypes.h> header file. */</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#define HAVE_INTTYPES_H 1</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">/* Define to 1 if you have the <iostream> header file. */</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#define HAVE_IOSTREAM 1</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="comment">/* Define to 1 if you have the <memory.h> header file. */</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#define HAVE_MEMORY_H 1</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="comment">/* Define to 1 if you have the <stdint.h> header file. */</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#define HAVE_STDINT_H 1</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="comment">/* Define to 1 if you have the <stdlib.h> header file. */</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#define HAVE_STDLIB_H 1</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="comment">/* Define to 1 if you have the <string> header file. */</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="preprocessor">#define HAVE_STRING 1</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="comment">/* Define to 1 if you have the <strings.h> header file. */</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="preprocessor">#define HAVE_STRINGS_H 1</span></div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="comment">/* Define to 1 if you have the <string.h> header file. */</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="preprocessor">#define HAVE_STRING_H 1</span></div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span> <span class="comment">/* Define to 1 if you have the <sys/stat.h> header file. */</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="preprocessor">#define HAVE_SYS_STAT_H 1</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span> <span class="comment">/* Define to 1 if you have the <sys/types.h> header file. */</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span> <span class="preprocessor">#define HAVE_SYS_TYPES_H 1</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span> <span class="comment">/* Define to 1 if you have the <unistd.h> header file. */</span></div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span> <span class="preprocessor">#define HAVE_UNISTD_H 1</span></div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span> <span class="comment">/* Define to the sub-directory in which libtool stores uninstalled libraries.</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span> <span class="comment">   */</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span> <span class="preprocessor">#define LT_OBJDIR ".libs/"</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span> <span class="comment">/* Name of package */</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span> <span class="preprocessor">#define PACKAGE "pktools"</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span> <span class="comment">/* Define to the address where bug reports for this package should be sent. */</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span> <span class="preprocessor">#define PACKAGE_BUGREPORT "kempenep at gmail.com"</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span> <span class="comment">/* Define to the full name of this package. */</span></div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span> <span class="preprocessor">#define PACKAGE_NAME "pktools"</span></div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span> <span class="comment">/* Define to the full name and version of this package. */</span></div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span> <span class="preprocessor">#define PACKAGE_STRING "pktools 2.6.3"</span></div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span> <span class="comment">/* Define to the one symbol short name of this package. */</span></div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span> <span class="preprocessor">#define PACKAGE_TARNAME "pktools"</span></div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span> <span class="comment">/* Define to the home page for this package. */</span></div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span> <span class="preprocessor">#define PACKAGE_URL ""</span></div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span> <span class="comment">/* Define to the version of this package. */</span></div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span> <span class="preprocessor">#define PACKAGE_VERSION "2.6.3"</span></div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span> <span class="comment">/* Define to 1 if you have the ANSI C header files. */</span></div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span> <span class="preprocessor">#define STDC_HEADERS 1</span></div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span> <span class="comment">/* Version number of package */</span></div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span> <span class="preprocessor">#define VERSION "2.6.3"</span></div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span> <span class="preprocessor"></span></div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span> <span class="comment">/* Define to `unsigned int' if <sys/types.h> does not define. */</span></div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span> <span class="comment">/* #undef size_t */</span></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.4-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Tue Nov 3 2015 15:58:26 for pktools by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.6
-</small></address>
-<script>
-  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-  ga('create', 'UA-46952639-1', 'nongnu.org');
-  ga('send', 'pageview');
-</script>
-</body>
-</html>
diff --git a/doc/installation_linux.dox b/doc/installation_linux.dox
index 98268ad..61f7e49 100644
--- a/doc/installation_linux.dox
+++ b/doc/installation_linux.dox
@@ -38,38 +38,9 @@ cd pktools-*
 \endcode
 
 You can install pktools via
-    - \ref installation_autotools "autotools" (linux only)
     - \ref installation_cmake "cmake" (linux, windows, Mac OS)
 
-\subsection installation_autotools Installation via autotools
-
-Add libtool support to your package:
-
-If you obtained pktools from the git repository, please please perform the following actions first (assuming the current directory is pktools):
-
-\code
-libtoolize
-\endcode
-
-Remake the GNU Build System files by scanning 'configure.ac' and running 'autoconf', 'autoheader', 'aclocal', 'automake' and 'libtoolize':
-
-\code
-autoreconf
-\endcode
-
-Finalize package generation:
-
-\code
-automake --add-missing
-\endcode
-
-Basic installation (please refer to INSTALL file for more advanced configuration)
-\code
-./configure
-make
-sudo make install
-sudo ldconfig
-\endcode
+Notice that "autotools" (configure, make, make install) is deprecated from version 2.6.7, please use cmake instead
 
 \subsubsection pktools_installation_required Required dependences
 
@@ -121,13 +92,14 @@ packages to install before pktools
    sudo apt-get install libfann-dev
    \endcode
 
-   Install pktools with extra configuration option --libfann-dev:
+   Install pktools with extra cmake option -DBUILD_WITH_FANN=ON
 
    \code
-   ./configure --enable-fann
+   mkdir build
+   cd build
+   cmake -DBUILD_WITH_FANN=ON ..
    make
    sudo make install
-   sudo ldconfig
    \endcode
 
 <b>To enable program \ref pklas2img</b>
@@ -161,30 +133,35 @@ packages to install before pktools
 
    ! Note that if you want support for compressed las format (LAZ), you need to install laszip first (http://www.laszip.org) and install liblas manually
 
-   - Install pktools with with extra configuration option --enable-las:
+   - Install pktools with with extra cmake option -DBUILD_WITH_LIBLAS=ON
 
    \code
-   ./configure --enable-las
+   mkdir build
+   cd build
+   cmake -DBUILD_WITH_LIBLAS=ON ..
    make
    sudo make install
-   sudo ldconfig
    \endcode
+   \code
 
-\subsection installation_cmake Installation via cmake (or ccmake)
-Note that CMake version 3.0 or higher is required for building via cmake
-We will build out-of-source:
+
+\subsection Troubleshooting cmake in Linux (installed version is not 2.8)
+If your system does not have CMake version 2.8, or your repository has an older version, you can manually install the latest version of CMake (for instance version 3.2.2):
 
 \code
-mkdir build
-cd build
-ccmake ..
+wget http://www.cmake.org/files/v3.2/cmake-3.2.2.tar.gz
+tar xf cmake-3.2.2.tar.gz
+cd cmake-3.2.2
+./configure
+make
+make install
 \endcode
 
-Within ccmake, press "c" to configure. Make sure all paths are correctly set.
-Then press "g" to generate and exit ccmake.
-
-Compile and link via make:
+In order to have ccmake look for the newly installed version in /usr/local/bin, I had to (on a Debian/Ubuntu based system):
 
 \code
-make
-\endcode
+sudo apt-get install libncurses5-dev
+\code
+
+Then reconfigure/compile/install cmake and restart the shell
+
diff --git a/doc/mainpage.dox b/doc/mainpage.dox
index 53ebf46..6647311 100644
--- a/doc/mainpage.dox
+++ b/doc/mainpage.dox
@@ -11,7 +11,7 @@
 
 \section pktools_introduction Introduction
 
-pktools is a collection of programs written in C++ for image processing with a focus on remote sensing applications. It relies on the Geospatial Data Abstraction Library (GDAL, http://www.gdal.org) and OGR.
+pktools is a suite of utilities written in C++ for image processing with a focus on remote sensing applications. It relies on the Geospatial Data Abstraction Library (GDAL, http://www.gdal.org) and OGR.
 
 All utilities in pktools use command line options and have a built in help
 
diff --git a/install-sh b/install-sh
deleted file mode 100755
index 6781b98..0000000
--- a/install-sh
+++ /dev/null
@@ -1,520 +0,0 @@
-#!/bin/sh
-# install - install a program, script, or datafile
-
-scriptversion=2009-04-28.21; # UTC
-
-# This originates from X11R5 (mit/util/scripts/install.sh), which was
-# later released in X11R6 (xc/config/util/install.sh) with the
-# following copyright and license.
-#
-# Copyright (C) 1994 X Consortium
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to
-# deal in the Software without restriction, including without limitation the
-# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-# sell copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
-# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-# Except as contained in this notice, the name of the X Consortium shall not
-# be used in advertising or otherwise to promote the sale, use or other deal-
-# ings in this Software without prior written authorization from the X Consor-
-# tium.
-#
-#
-# FSF changes to this file are in the public domain.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch.
-
-nl='
-'
-IFS=" ""	$nl"
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit=${DOITPROG-}
-if test -z "$doit"; then
-  doit_exec=exec
-else
-  doit_exec=$doit
-fi
-
-# Put in absolute file names if you don't have them in your path;
-# or use environment vars.
-
-chgrpprog=${CHGRPPROG-chgrp}
-chmodprog=${CHMODPROG-chmod}
-chownprog=${CHOWNPROG-chown}
-cmpprog=${CMPPROG-cmp}
-cpprog=${CPPROG-cp}
-mkdirprog=${MKDIRPROG-mkdir}
-mvprog=${MVPROG-mv}
-rmprog=${RMPROG-rm}
-stripprog=${STRIPPROG-strip}
-
-posix_glob='?'
-initialize_posix_glob='
-  test "$posix_glob" != "?" || {
-    if (set -f) 2>/dev/null; then
-      posix_glob=
-    else
-      posix_glob=:
-    fi
-  }
-'
-
-posix_mkdir=
-
-# Desired mode of installed file.
-mode=0755
-
-chgrpcmd=
-chmodcmd=$chmodprog
-chowncmd=
-mvcmd=$mvprog
-rmcmd="$rmprog -f"
-stripcmd=
-
-src=
-dst=
-dir_arg=
-dst_arg=
-
-copy_on_change=false
-no_target_directory=
-
-usage="\
-Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
-   or: $0 [OPTION]... SRCFILES... DIRECTORY
-   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
-   or: $0 [OPTION]... -d DIRECTORIES...
-
-In the 1st form, copy SRCFILE to DSTFILE.
-In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
-In the 4th, create DIRECTORIES.
-
-Options:
-     --help     display this help and exit.
-     --version  display version info and exit.
-
-  -c            (ignored)
-  -C            install only if different (preserve the last data modification time)
-  -d            create directories instead of installing files.
-  -g GROUP      $chgrpprog installed files to GROUP.
-  -m MODE       $chmodprog installed files to MODE.
-  -o USER       $chownprog installed files to USER.
-  -s            $stripprog installed files.
-  -t DIRECTORY  install into DIRECTORY.
-  -T            report an error if DSTFILE is a directory.
-
-Environment variables override the default commands:
-  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
-  RMPROG STRIPPROG
-"
-
-while test $# -ne 0; do
-  case $1 in
-    -c) ;;
-
-    -C) copy_on_change=true;;
-
-    -d) dir_arg=true;;
-
-    -g) chgrpcmd="$chgrpprog $2"
-	shift;;
-
-    --help) echo "$usage"; exit $?;;
-
-    -m) mode=$2
-	case $mode in
-	  *' '* | *'	'* | *'
-'*	  | *'*'* | *'?'* | *'['*)
-	    echo "$0: invalid mode: $mode" >&2
-	    exit 1;;
-	esac
-	shift;;
-
-    -o) chowncmd="$chownprog $2"
-	shift;;
-
-    -s) stripcmd=$stripprog;;
-
-    -t) dst_arg=$2
-	shift;;
-
-    -T) no_target_directory=true;;
-
-    --version) echo "$0 $scriptversion"; exit $?;;
-
-    --)	shift
-	break;;
-
-    -*)	echo "$0: invalid option: $1" >&2
-	exit 1;;
-
-    *)  break;;
-  esac
-  shift
-done
-
-if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
-  # When -d is used, all remaining arguments are directories to create.
-  # When -t is used, the destination is already specified.
-  # Otherwise, the last argument is the destination.  Remove it from $@.
-  for arg
-  do
-    if test -n "$dst_arg"; then
-      # $@ is not empty: it contains at least $arg.
-      set fnord "$@" "$dst_arg"
-      shift # fnord
-    fi
-    shift # arg
-    dst_arg=$arg
-  done
-fi
-
-if test $# -eq 0; then
-  if test -z "$dir_arg"; then
-    echo "$0: no input file specified." >&2
-    exit 1
-  fi
-  # It's OK to call `install-sh -d' without argument.
-  # This can happen when creating conditional directories.
-  exit 0
-fi
-
-if test -z "$dir_arg"; then
-  trap '(exit $?); exit' 1 2 13 15
-
-  # Set umask so as not to create temps with too-generous modes.
-  # However, 'strip' requires both read and write access to temps.
-  case $mode in
-    # Optimize common cases.
-    *644) cp_umask=133;;
-    *755) cp_umask=22;;
-
-    *[0-7])
-      if test -z "$stripcmd"; then
-	u_plus_rw=
-      else
-	u_plus_rw='% 200'
-      fi
-      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
-    *)
-      if test -z "$stripcmd"; then
-	u_plus_rw=
-      else
-	u_plus_rw=,u+rw
-      fi
-      cp_umask=$mode$u_plus_rw;;
-  esac
-fi
-
-for src
-do
-  # Protect names starting with `-'.
-  case $src in
-    -*) src=./$src;;
-  esac
-
-  if test -n "$dir_arg"; then
-    dst=$src
-    dstdir=$dst
-    test -d "$dstdir"
-    dstdir_status=$?
-  else
-
-    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
-    # might cause directories to be created, which would be especially bad
-    # if $src (and thus $dsttmp) contains '*'.
-    if test ! -f "$src" && test ! -d "$src"; then
-      echo "$0: $src does not exist." >&2
-      exit 1
-    fi
-
-    if test -z "$dst_arg"; then
-      echo "$0: no destination specified." >&2
-      exit 1
-    fi
-
-    dst=$dst_arg
-    # Protect names starting with `-'.
-    case $dst in
-      -*) dst=./$dst;;
-    esac
-
-    # If destination is a directory, append the input filename; won't work
-    # if double slashes aren't ignored.
-    if test -d "$dst"; then
-      if test -n "$no_target_directory"; then
-	echo "$0: $dst_arg: Is a directory" >&2
-	exit 1
-      fi
-      dstdir=$dst
-      dst=$dstdir/`basename "$src"`
-      dstdir_status=0
-    else
-      # Prefer dirname, but fall back on a substitute if dirname fails.
-      dstdir=`
-	(dirname "$dst") 2>/dev/null ||
-	expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	     X"$dst" : 'X\(//\)[^/]' \| \
-	     X"$dst" : 'X\(//\)$' \| \
-	     X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
-	echo X"$dst" |
-	    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-		   s//\1/
-		   q
-		 }
-		 /^X\(\/\/\)[^/].*/{
-		   s//\1/
-		   q
-		 }
-		 /^X\(\/\/\)$/{
-		   s//\1/
-		   q
-		 }
-		 /^X\(\/\).*/{
-		   s//\1/
-		   q
-		 }
-		 s/.*/./; q'
-      `
-
-      test -d "$dstdir"
-      dstdir_status=$?
-    fi
-  fi
-
-  obsolete_mkdir_used=false
-
-  if test $dstdir_status != 0; then
-    case $posix_mkdir in
-      '')
-	# Create intermediate dirs using mode 755 as modified by the umask.
-	# This is like FreeBSD 'install' as of 1997-10-28.
-	umask=`umask`
-	case $stripcmd.$umask in
-	  # Optimize common cases.
-	  *[2367][2367]) mkdir_umask=$umask;;
-	  .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
-
-	  *[0-7])
-	    mkdir_umask=`expr $umask + 22 \
-	      - $umask % 100 % 40 + $umask % 20 \
-	      - $umask % 10 % 4 + $umask % 2
-	    `;;
-	  *) mkdir_umask=$umask,go-w;;
-	esac
-
-	# With -d, create the new directory with the user-specified mode.
-	# Otherwise, rely on $mkdir_umask.
-	if test -n "$dir_arg"; then
-	  mkdir_mode=-m$mode
-	else
-	  mkdir_mode=
-	fi
-
-	posix_mkdir=false
-	case $umask in
-	  *[123567][0-7][0-7])
-	    # POSIX mkdir -p sets u+wx bits regardless of umask, which
-	    # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
-	    ;;
-	  *)
-	    tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
-	    trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
-
-	    if (umask $mkdir_umask &&
-		exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
-	    then
-	      if test -z "$dir_arg" || {
-		   # Check for POSIX incompatibilities with -m.
-		   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
-		   # other-writeable bit of parent directory when it shouldn't.
-		   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
-		   ls_ld_tmpdir=`ls -ld "$tmpdir"`
-		   case $ls_ld_tmpdir in
-		     d????-?r-*) different_mode=700;;
-		     d????-?--*) different_mode=755;;
-		     *) false;;
-		   esac &&
-		   $mkdirprog -m$different_mode -p -- "$tmpdir" && {
-		     ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
-		     test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
-		   }
-		 }
-	      then posix_mkdir=:
-	      fi
-	      rmdir "$tmpdir/d" "$tmpdir"
-	    else
-	      # Remove any dirs left behind by ancient mkdir implementations.
-	      rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
-	    fi
-	    trap '' 0;;
-	esac;;
-    esac
-
-    if
-      $posix_mkdir && (
-	umask $mkdir_umask &&
-	$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
-      )
-    then :
-    else
-
-      # The umask is ridiculous, or mkdir does not conform to POSIX,
-      # or it failed possibly due to a race condition.  Create the
-      # directory the slow way, step by step, checking for races as we go.
-
-      case $dstdir in
-	/*) prefix='/';;
-	-*) prefix='./';;
-	*)  prefix='';;
-      esac
-
-      eval "$initialize_posix_glob"
-
-      oIFS=$IFS
-      IFS=/
-      $posix_glob set -f
-      set fnord $dstdir
-      shift
-      $posix_glob set +f
-      IFS=$oIFS
-
-      prefixes=
-
-      for d
-      do
-	test -z "$d" && continue
-
-	prefix=$prefix$d
-	if test -d "$prefix"; then
-	  prefixes=
-	else
-	  if $posix_mkdir; then
-	    (umask=$mkdir_umask &&
-	     $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
-	    # Don't fail if two instances are running concurrently.
-	    test -d "$prefix" || exit 1
-	  else
-	    case $prefix in
-	      *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
-	      *) qprefix=$prefix;;
-	    esac
-	    prefixes="$prefixes '$qprefix'"
-	  fi
-	fi
-	prefix=$prefix/
-      done
-
-      if test -n "$prefixes"; then
-	# Don't fail if two instances are running concurrently.
-	(umask $mkdir_umask &&
-	 eval "\$doit_exec \$mkdirprog $prefixes") ||
-	  test -d "$dstdir" || exit 1
-	obsolete_mkdir_used=true
-      fi
-    fi
-  fi
-
-  if test -n "$dir_arg"; then
-    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
-    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
-    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
-      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
-  else
-
-    # Make a couple of temp file names in the proper directory.
-    dsttmp=$dstdir/_inst.$$_
-    rmtmp=$dstdir/_rm.$$_
-
-    # Trap to clean up those temp files at exit.
-    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
-
-    # Copy the file name to the temp name.
-    (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
-
-    # and set any options; do chmod last to preserve setuid bits.
-    #
-    # If any of these fail, we abort the whole thing.  If we want to
-    # ignore errors from any of these, just make sure not to ignore
-    # errors from the above "$doit $cpprog $src $dsttmp" command.
-    #
-    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
-    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
-    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
-    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
-
-    # If -C, don't bother to copy if it wouldn't change the file.
-    if $copy_on_change &&
-       old=`LC_ALL=C ls -dlL "$dst"	2>/dev/null` &&
-       new=`LC_ALL=C ls -dlL "$dsttmp"	2>/dev/null` &&
-
-       eval "$initialize_posix_glob" &&
-       $posix_glob set -f &&
-       set X $old && old=:$2:$4:$5:$6 &&
-       set X $new && new=:$2:$4:$5:$6 &&
-       $posix_glob set +f &&
-
-       test "$old" = "$new" &&
-       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
-    then
-      rm -f "$dsttmp"
-    else
-      # Rename the file to the real destination.
-      $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
-
-      # The rename failed, perhaps because mv can't rename something else
-      # to itself, or perhaps because mv is so ancient that it does not
-      # support -f.
-      {
-	# Now remove or move aside any old file at destination location.
-	# We try this two ways since rm can't unlink itself on some
-	# systems and the destination file might be busy for other
-	# reasons.  In this case, the final cleanup might fail but the new
-	# file should still install successfully.
-	{
-	  test ! -f "$dst" ||
-	  $doit $rmcmd -f "$dst" 2>/dev/null ||
-	  { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
-	    { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
-	  } ||
-	  { echo "$0: cannot unlink or rename $dst" >&2
-	    (exit 1); exit 1
-	  }
-	} &&
-
-	# Now rename the file to the real destination.
-	$doit $mvcmd "$dsttmp" "$dst"
-      }
-    fi || exit 1
-
-    trap '' 0
-  fi
-done
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/ltmain.sh b/libtool
old mode 100644
new mode 100755
similarity index 61%
rename from ltmain.sh
rename to libtool
index a356aca..01cadf9
--- a/ltmain.sh
+++ b/libtool
@@ -1,903 +1,2649 @@
+#! /bin/bash
+# Generated automatically by config.status (pktools) 2.6.7
+# Libtool was configured on host marge:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
 
-# libtool (GNU libtool) 2.4.2
-# Written by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
+# Provide generalized library-building support services.
+# Written by Gordon Matzigkeit, 1996
 
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
-# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+# Copyright (C) 2014 Free Software Foundation, Inc.
 # This is free software; see the source for copying conditions.  There is NO
 # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
 # GNU Libtool is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
+# the Free Software Foundation; either version 2 of of the License, or
 # (at your option) any later version.
 #
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program or library that is built
+# using GNU Libtool, you may include this file under the  same
+# distribution terms that you use for the rest of that program.
 #
 # GNU Libtool is distributed in the hope that it will be useful, but
 # WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING.  If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html,
-# or obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-# Usage: $progname [OPTION]... [MODE-ARG]...
-#
-# Provide generalized library-building support services.
-#
-#       --config             show all configuration variables
-#       --debug              enable verbose shell tracing
-#   -n, --dry-run            display commands without modifying any files
-#       --features           display basic configuration information and exit
-#       --mode=MODE          use operation mode MODE
-#       --preserve-dup-deps  don't remove duplicate dependency libraries
-#       --quiet, --silent    don't print informational messages
-#       --no-quiet, --no-silent
-#                            print informational messages (default)
-#       --no-warn            don't display warning messages
-#       --tag=TAG            use configuration variables from tag TAG
-#   -v, --verbose            print more informational messages than default
-#       --no-verbose         don't print the extra informational messages
-#       --version            print version information
-#   -h, --help, --help-all   print short, long, or detailed help message
-#
-# MODE must be one of the following:
-#
-#         clean              remove files from the build directory
-#         compile            compile a source file into a libtool object
-#         execute            automatically set library path, then run a program
-#         finish             complete the installation of libtool libraries
-#         install            install libraries or executables
-#         link               create a library or an executable
-#         uninstall          remove libraries from an installed directory
-#
-# MODE-ARGS vary depending on the MODE.  When passed as first option,
-# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
-# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
-#
-# When reporting a bug, please describe a test case to reproduce it and
-# include the following information:
-#
-#         host-triplet:	$host
-#         shell:		$SHELL
-#         compiler:		$LTCC
-#         compiler flags:		$LTCFLAGS
-#         linker:		$LD (gnu? $with_gnu_ld)
-#         $progname:	(GNU libtool) 2.4.2 Debian-2.4.2-1.7ubuntu1
-#         automake:	$automake_version
-#         autoconf:	$autoconf_version
-#
-# Report bugs to <bug-libtool at gnu.org>.
-# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
-# General help using GNU software: <http://www.gnu.org/gethelp/>.
 
-PROGRAM=libtool
-PACKAGE=libtool
-VERSION="2.4.2 Debian-2.4.2-1.7ubuntu1"
-TIMESTAMP=""
-package_revision=1.3337
+# The names of the tagged configurations supported by this script.
+available_tags='CXX FC '
 
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
-fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
+# Configured defaults for sys_lib_dlsearch_path munging.
+: ${LT_SYS_LIBRARY_PATH=""}
 
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
-  eval 'cat <<_LTECHO_EOF
-$1
-_LTECHO_EOF'
-}
+# ### BEGIN LIBTOOL CONFIG
 
-# NLS nuisances: We save the old values to restore during execute mode.
-lt_user_locale=
-lt_safe_locale=
-for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
-do
-  eval "if test \"\${$lt_var+set}\" = set; then
-          save_$lt_var=\$$lt_var
-          $lt_var=C
-	  export $lt_var
-	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
-	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
-	fi"
-done
-LC_ALL=C
-LANGUAGE=C
-export LANGUAGE LC_ALL
+# Which release of libtool.m4 was used?
+macro_version=2.4.6
+macro_revision=2.4.6
 
-$lt_unset CDPATH
+# Whether or not to build shared libraries.
+build_libtool_libs=yes
 
+# Whether or not to build static libraries.
+build_old_libs=yes
 
-# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
-# is ksh but when the shell is invoked as "sh" and the current value of
-# the _XPG environment variable is not equal to 1 (one), the special
-# positional parameter $0, within a function call, is the name of the
-# function.
-progpath="$0"
+# What type of objects to build.
+pic_mode=default
 
+# Whether or not to optimize for fast installation.
+fast_install=yes
 
+# Shared archive member basename,for filename based shared library versioning on AIX.
+shared_archive_member_spec=
 
-: ${CP="cp -f"}
-test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
-: ${MAKE="make"}
-: ${MKDIR="mkdir"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
-: ${Xsed="$SED -e 1s/^X//"}
+# Shell to use when invoking shell scripts.
+SHELL="/bin/bash"
 
-# Global variables:
-EXIT_SUCCESS=0
-EXIT_FAILURE=1
-EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
-EXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
+# An echo program that protects backslashes.
+ECHO="printf %s\\n"
 
-exit_status=$EXIT_SUCCESS
+# The PATH separator for the build system.
+PATH_SEPARATOR=":"
 
-# Make sure IFS has a sensible default
-lt_nl='
-'
-IFS=" 	$lt_nl"
+# The host system.
+host_alias=
+host=x86_64-pc-linux-gnu
+host_os=linux-gnu
 
-dirname="s,/[^/]*$,,"
-basename="s,^.*/,,"
+# The build system.
+build_alias=
+build=x86_64-pc-linux-gnu
+build_os=linux-gnu
 
-# func_dirname file append nondir_replacement
-# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
-# otherwise set result to NONDIR_REPLACEMENT.
-func_dirname ()
-{
-    func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
-    if test "X$func_dirname_result" = "X${1}"; then
-      func_dirname_result="${3}"
-    else
-      func_dirname_result="$func_dirname_result${2}"
-    fi
-} # func_dirname may be replaced by extended shell implementation
+# A sed program that does not truncate output.
+SED="/bin/sed"
 
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="$SED -e 1s/^X//"
 
-# func_basename file
-func_basename ()
-{
-    func_basename_result=`$ECHO "${1}" | $SED "$basename"`
-} # func_basename may be replaced by extended shell implementation
+# A grep program that handles long lines.
+GREP="/bin/grep"
 
+# An ERE matcher.
+EGREP="/bin/grep -E"
 
-# func_dirname_and_basename file append nondir_replacement
-# perform func_basename and func_dirname in a single function
-# call:
-#   dirname:  Compute the dirname of FILE.  If nonempty,
-#             add APPEND to the result, otherwise set result
-#             to NONDIR_REPLACEMENT.
-#             value returned in "$func_dirname_result"
-#   basename: Compute filename of FILE.
-#             value retuned in "$func_basename_result"
-# Implementation must be kept synchronized with func_dirname
-# and func_basename. For efficiency, we do not delegate to
-# those functions but instead duplicate the functionality here.
-func_dirname_and_basename ()
-{
-    # Extract subdirectory from the argument.
-    func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
-    if test "X$func_dirname_result" = "X${1}"; then
-      func_dirname_result="${3}"
-    else
-      func_dirname_result="$func_dirname_result${2}"
-    fi
-    func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
-} # func_dirname_and_basename may be replaced by extended shell implementation
+# A literal string matcher.
+FGREP="/bin/grep -F"
 
+# A BSD- or MS-compatible name lister.
+NM="/usr/bin/nm -B"
 
-# func_stripname prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-# func_strip_suffix prefix name
-func_stripname ()
-{
-    case ${2} in
-      .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
-      *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
-    esac
-} # func_stripname may be replaced by extended shell implementation
+# Whether we need soft or hard links.
+LN_S="ln -s"
 
+# What is the maximum length of a command?
+max_cmd_len=1572864
 
-# These SED scripts presuppose an absolute path with a trailing slash.
-pathcar='s,^/\([^/]*\).*$,\1,'
-pathcdr='s,^/[^/]*,,'
-removedotparts=':dotsl
-		s@/\./@/@g
-		t dotsl
-		s,/\.$,/,'
-collapseslashes='s@/\{1,\}@/@g'
-finalslash='s,/*$,/,'
+# Object file suffix (normally "o").
+objext=o
 
-# func_normal_abspath PATH
-# Remove doubled-up and trailing slashes, "." path components,
-# and cancel out any ".." path components in PATH after making
-# it an absolute path.
-#             value returned in "$func_normal_abspath_result"
-func_normal_abspath ()
-{
-  # Start from root dir and reassemble the path.
-  func_normal_abspath_result=
-  func_normal_abspath_tpath=$1
-  func_normal_abspath_altnamespace=
-  case $func_normal_abspath_tpath in
-    "")
-      # Empty path, that just means $cwd.
-      func_stripname '' '/' "`pwd`"
-      func_normal_abspath_result=$func_stripname_result
-      return
-    ;;
-    # The next three entries are used to spot a run of precisely
-    # two leading slashes without using negated character classes;
-    # we take advantage of case's first-match behaviour.
-    ///*)
-      # Unusual form of absolute path, do nothing.
-    ;;
-    //*)
-      # Not necessarily an ordinary path; POSIX reserves leading '//'
-      # and for example Cygwin uses it to access remote file shares
-      # over CIFS/SMB, so we conserve a leading double slash if found.
-      func_normal_abspath_altnamespace=/
-    ;;
-    /*)
-      # Absolute path, do nothing.
-    ;;
-    *)
-      # Relative path, prepend $cwd.
-      func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
-    ;;
-  esac
-  # Cancel out all the simple stuff to save iterations.  We also want
-  # the path to end with a slash for ease of parsing, so make sure
-  # there is one (and only one) here.
-  func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
-        -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
-  while :; do
-    # Processed it all yet?
-    if test "$func_normal_abspath_tpath" = / ; then
-      # If we ascended to the root using ".." the result may be empty now.
-      if test -z "$func_normal_abspath_result" ; then
-        func_normal_abspath_result=/
-      fi
-      break
-    fi
-    func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
-        -e "$pathcar"`
-    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
-        -e "$pathcdr"`
-    # Figure out what to do with it
-    case $func_normal_abspath_tcomponent in
-      "")
-        # Trailing empty path component, ignore it.
-      ;;
-      ..)
-        # Parent dir; strip last assembled component from result.
-        func_dirname "$func_normal_abspath_result"
-        func_normal_abspath_result=$func_dirname_result
-      ;;
-      *)
-        # Actual path component, append it.
-        func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
-      ;;
-    esac
-  done
-  # Restore leading double-slash if one was found on entry.
-  func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
-}
+# Executable file suffix (normally "").
+exeext=
 
-# func_relative_path SRCDIR DSTDIR
-# generates a relative path from SRCDIR to DSTDIR, with a trailing
-# slash if non-empty, suitable for immediately appending a filename
-# without needing to append a separator.
-#             value returned in "$func_relative_path_result"
-func_relative_path ()
-{
-  func_relative_path_result=
-  func_normal_abspath "$1"
-  func_relative_path_tlibdir=$func_normal_abspath_result
-  func_normal_abspath "$2"
-  func_relative_path_tbindir=$func_normal_abspath_result
-
-  # Ascend the tree starting from libdir
-  while :; do
-    # check if we have found a prefix of bindir
-    case $func_relative_path_tbindir in
-      $func_relative_path_tlibdir)
-        # found an exact match
-        func_relative_path_tcancelled=
-        break
-        ;;
-      $func_relative_path_tlibdir*)
-        # found a matching prefix
-        func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
-        func_relative_path_tcancelled=$func_stripname_result
-        if test -z "$func_relative_path_result"; then
-          func_relative_path_result=.
-        fi
-        break
-        ;;
-      *)
-        func_dirname $func_relative_path_tlibdir
-        func_relative_path_tlibdir=${func_dirname_result}
-        if test "x$func_relative_path_tlibdir" = x ; then
-          # Have to descend all the way to the root!
-          func_relative_path_result=../$func_relative_path_result
-          func_relative_path_tcancelled=$func_relative_path_tbindir
-          break
-        fi
-        func_relative_path_result=../$func_relative_path_result
-        ;;
-    esac
-  done
+# whether the shell understands "unset".
+lt_unset=unset
 
-  # Now calculate path; take care to avoid doubling-up slashes.
-  func_stripname '' '/' "$func_relative_path_result"
-  func_relative_path_result=$func_stripname_result
-  func_stripname '/' '/' "$func_relative_path_tcancelled"
-  if test "x$func_stripname_result" != x ; then
-    func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
-  fi
+# turn spaces into newlines.
+SP2NL="tr \\040 \\012"
 
-  # Normalisation. If bindir is libdir, return empty string,
-  # else relative path ending with a slash; either way, target
-  # file name can be directly appended.
-  if test ! -z "$func_relative_path_result"; then
-    func_stripname './' '' "$func_relative_path_result/"
-    func_relative_path_result=$func_stripname_result
-  fi
-}
+# turn newlines into spaces.
+NL2SP="tr \\015\\012 \\040\\040"
 
-# The name of this program:
-func_dirname_and_basename "$progpath"
-progname=$func_basename_result
+# convert $build file names to $host format.
+to_host_file_cmd=func_convert_file_noop
 
-# Make sure we have an absolute path for reexecution:
-case $progpath in
-  [\\/]*|[A-Za-z]:\\*) ;;
-  *[\\/]*)
-     progdir=$func_dirname_result
-     progdir=`cd "$progdir" && pwd`
-     progpath="$progdir/$progname"
-     ;;
-  *)
-     save_IFS="$IFS"
-     IFS=${PATH_SEPARATOR-:}
-     for progdir in $PATH; do
-       IFS="$save_IFS"
-       test -x "$progdir/$progname" && break
-     done
-     IFS="$save_IFS"
-     test -n "$progdir" || progdir=`pwd`
-     progpath="$progdir/$progname"
-     ;;
-esac
+# convert $build files to toolchain format.
+to_tool_file_cmd=func_convert_file_noop
 
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# metacharacters that are still active within double-quoted strings.
-Xsed="${SED}"' -e 1s/^X//'
-sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
+# An object symbol dumper.
+OBJDUMP="objdump"
 
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\(["`\\]\)/\\\1/g'
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method="pass_all"
 
-# Sed substitution that turns a string into a regex matching for the
-# string literally.
-sed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
+# Command to use when deplibs_check_method = "file_magic".
+file_magic_cmd="\$MAGIC_CMD"
 
-# Sed substitution that converts a w32 file name or path
-# which contains forward slashes, into one that contains
-# (escaped) backslashes.  A very naive implementation.
-lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
-
-# Re-`\' parameter expansions in output of double_quote_subst that were
-# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
-# in input to double_quote_subst, that '$' was protected from expansion.
-# Since each input `\' is now two `\'s, look for any number of runs of
-# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
-bs='\\'
-bs2='\\\\'
-bs4='\\\\\\\\'
-dollar='\$'
-sed_double_backslash="\
-  s/$bs4/&\\
-/g
-  s/^$bs2$dollar/$bs&/
-  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
-  s/\n//g"
+# How to find potential files when deplibs_check_method = "file_magic".
+file_magic_glob=""
 
-# Standard options:
-opt_dry_run=false
-opt_help=false
-opt_quiet=false
-opt_verbose=false
-opt_warning=:
+# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
+want_nocaseglob="no"
 
-# func_echo arg...
-# Echo program name prefixed message, along with the current mode
-# name if it has been set yet.
-func_echo ()
-{
-    $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
-}
+# DLL creation program.
+DLLTOOL="false"
 
-# func_verbose arg...
-# Echo program name prefixed message in verbose mode only.
-func_verbose ()
-{
-    $opt_verbose && func_echo ${1+"$@"}
+# Command to associate shared and link libraries.
+sharedlib_from_linklib_cmd="printf %s\\n"
 
-    # A bug in bash halts the script if the last line of a function
-    # fails when set -e is in force, so we need another command to
-    # work around that:
-    :
-}
+# The archiver.
+AR="ar"
 
-# func_echo_all arg...
-# Invoke $ECHO with all args, space-separated.
-func_echo_all ()
-{
-    $ECHO "$*"
-}
+# Flags to create an archive.
+AR_FLAGS="cru"
 
-# func_error arg...
-# Echo program name prefixed message to standard error.
-func_error ()
-{
-    $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
-}
+# How to feed a file listing to the archiver.
+archiver_list_spec="@"
 
-# func_warning arg...
-# Echo program name prefixed warning message to standard error.
-func_warning ()
-{
-    $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
+# A symbol stripping program.
+STRIP="strip"
 
-    # bash bug again:
-    :
-}
+# Commands used to install an old-style archive.
+RANLIB="ranlib"
+old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$tool_oldlib"
+old_postuninstall_cmds=""
 
-# func_fatal_error arg...
-# Echo program name prefixed message to standard error, and exit.
-func_fatal_error ()
-{
-    func_error ${1+"$@"}
-    exit $EXIT_FAILURE
-}
+# Whether to use a lock for old archive extraction.
+lock_old_archive_extraction=no
 
-# func_fatal_help arg...
-# Echo program name prefixed message to standard error, followed by
-# a help hint, and exit.
-func_fatal_help ()
-{
-    func_error ${1+"$@"}
-    func_fatal_error "$help"
-}
-help="Try \`$progname --help' for more information."  ## default
+# A C compiler.
+LTCC="gcc"
 
+# LTCC compiler flags.
+LTCFLAGS="-g -O2"
 
-# func_grep expression filename
-# Check whether EXPRESSION matches any line of FILENAME, without output.
-func_grep ()
-{
-    $GREP "$1" "$2" >/dev/null 2>&1
-}
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe="sed -n -e 's/^.*[	 ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[	 ][	 ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p' | sed '/ __gnu_lto/d'"
 
+# Transform the output of nm in a proper C declaration.
+global_symbol_to_cdecl="sed -n -e 's/^T .* \\(.*\\)\$/extern int \\1();/p' -e 's/^[ABCDGIRSTW][ABCDGIRSTW]* .* \\(.*\\)\$/extern char \\1;/p'"
 
-# func_mkdir_p directory-path
-# Make sure the entire path to DIRECTORY-PATH is available.
-func_mkdir_p ()
-{
-    my_directory_path="$1"
-    my_dir_list=
+# Transform the output of nm into a list of symbols to manually relocate.
+global_symbol_to_import=""
 
-    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
+# Transform the output of nm in a C name address pair.
+global_symbol_to_c_name_address="sed -n -e 's/^: \\(.*\\) .*\$/  {\"\\1\", (void *) 0},/p' -e 's/^[ABCDGIRSTW][ABCDGIRSTW]* .* \\(.*\\)\$/  {\"\\1\", (void *) \\&\\1},/p'"
 
-      # Protect directory names starting with `-'
-      case $my_directory_path in
-        -*) my_directory_path="./$my_directory_path" ;;
-      esac
+# Transform the output of nm in a C name address pair when lib prefix is needed.
+global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \\(.*\\) .*\$/  {\"\\1\", (void *) 0},/p' -e 's/^[ABCDGIRSTW][ABCDGIRSTW]* .* \\(lib.*\\)\$/  {\"\\1\", (void *) \\&\\1},/p' -e 's/^[ABCDGIRSTW][ABCDGIRSTW]* .* \\(.*\\)\$/  {\"lib\\1\", (void *) \\&\\1},/p'"
 
-      # While some portion of DIR does not yet exist...
-      while test ! -d "$my_directory_path"; do
-        # ...make a list in topmost first order.  Use a colon delimited
-	# list incase some portion of path contains whitespace.
-        my_dir_list="$my_directory_path:$my_dir_list"
+# The name lister interface.
+nm_interface="BSD nm"
 
-        # If the last portion added has no slash in it, the list is done
-        case $my_directory_path in */*) ;; *) break ;; esac
+# Specify filename containing input files for $NM.
+nm_file_list_spec="@"
 
-        # ...otherwise throw away the child directory and loop
-        my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
-      done
-      my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
+# The root where to search for dependent libraries,and where our libraries should be installed.
+lt_sysroot=
 
-      save_mkdir_p_IFS="$IFS"; IFS=':'
-      for my_dir in $my_dir_list; do
-	IFS="$save_mkdir_p_IFS"
-        # mkdir can fail with a `File exist' error if two processes
-        # try to create one of the directories concurrently.  Don't
-        # stop in that case!
-        $MKDIR "$my_dir" 2>/dev/null || :
-      done
-      IFS="$save_mkdir_p_IFS"
+# Command to truncate a binary pipe.
+lt_truncate_bin="/bin/dd bs=4096 count=1"
 
-      # Bail out if we (or some other process) failed to create a directory.
-      test -d "$my_directory_path" || \
-        func_fatal_error "Failed to create \`$1'"
-    fi
-}
+# The name of the directory that contains temporary libtool files.
+objdir=.libs
 
+# Used to examine libraries when file_magic_cmd begins with "file".
+MAGIC_CMD=file
 
-# func_mktempdir [string]
-# Make a temporary directory that won't clash with other running
-# libtool processes, and avoids race conditions if possible.  If
-# given, STRING is the basename for that directory.
-func_mktempdir ()
-{
-    my_template="${TMPDIR-/tmp}/${1-$progname}"
+# Must we lock files when doing compilation?
+need_locks="no"
 
-    if test "$opt_dry_run" = ":"; then
-      # Return a directory name, but don't create it in dry-run mode
-      my_tmpdir="${my_template}-$$"
-    else
+# Manifest tool.
+MANIFEST_TOOL=":"
 
-      # If mktemp works, use that first and foremost
-      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
+# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+DSYMUTIL=""
 
-      if test ! -d "$my_tmpdir"; then
-        # Failing that, at least try and use $RANDOM to avoid a race
-        my_tmpdir="${my_template}-${RANDOM-0}$$"
+# Tool to change global to local symbols on Mac OS X.
+NMEDIT=""
 
-        save_mktempdir_umask=`umask`
-        umask 0077
-        $MKDIR "$my_tmpdir"
-        umask $save_mktempdir_umask
-      fi
+# Tool to manipulate fat objects and archives on Mac OS X.
+LIPO=""
 
-      # If we're not in dry-run mode, bomb out on failure
-      test -d "$my_tmpdir" || \
-        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
-    fi
+# ldd/readelf like tool for Mach-O binaries on Mac OS X.
+OTOOL=""
 
-    $ECHO "$my_tmpdir"
-}
+# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
+OTOOL64=""
 
+# Old archive suffix (normally "a").
+libext=a
 
-# func_quote_for_eval arg
-# Aesthetically quote ARG to be evaled later.
-# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
-# is double-quoted, suitable for a subsequent eval, whereas
-# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
-# which are still active within double quotes backslashified.
-func_quote_for_eval ()
-{
-    case $1 in
-      *[\\\`\"\$]*)
-	func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
-      *)
-        func_quote_for_eval_unquoted_result="$1" ;;
-    esac
+# Shared library suffix (normally ".so").
+shrext_cmds=".so"
 
-    case $func_quote_for_eval_unquoted_result in
-      # Double-quote args containing shell metacharacters to delay
-      # word splitting, command substitution and and variable
-      # expansion for a subsequent eval.
-      # Many Bourne shells cannot handle close brackets correctly
-      # in scan sets, so we specify it separately.
-      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
-        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
-        ;;
-      *)
-        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
-    esac
-}
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=""
 
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at link time.
+variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
 
-# func_quote_for_expand arg
-# Aesthetically quote ARG to be evaled later; same as above,
-# but do not quote variable references.
-func_quote_for_expand ()
-{
-    case $1 in
-      *[\\\`\"]*)
-	my_arg=`$ECHO "$1" | $SED \
-	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
-      *)
-        my_arg="$1" ;;
-    esac
+# Do we need the "lib" prefix for modules?
+need_lib_prefix=no
 
-    case $my_arg in
-      # Double-quote args containing shell metacharacters to delay
-      # word splitting and command substitution for a subsequent eval.
-      # Many Bourne shells cannot handle close brackets correctly
-      # in scan sets, so we specify it separately.
-      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
-        my_arg="\"$my_arg\""
-        ;;
-    esac
+# Do we need a version for libraries?
+need_version=no
 
-    func_quote_for_expand_result="$my_arg"
-}
+# Library versioning type.
+version_type=linux
 
+# Shared library runtime path variable.
+runpath_var=LD_RUN_PATH
 
-# func_show_eval cmd [fail_exp]
-# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
-# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
-# is given, then evaluate it.
-func_show_eval ()
-{
-    my_cmd="$1"
-    my_fail_exp="${2-:}"
+# Shared library path variable.
+shlibpath_var=LD_LIBRARY_PATH
 
-    ${opt_silent-false} || {
-      func_quote_for_expand "$my_cmd"
-      eval "func_echo $func_quote_for_expand_result"
-    }
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=no
 
-    if ${opt_dry_run-false}; then :; else
-      eval "$my_cmd"
-      my_status=$?
-      if test "$my_status" -eq 0; then :; else
-	eval "(exit $my_status); $my_fail_exp"
+# Format of library name prefix.
+libname_spec="lib\$name"
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME
+library_names_spec="\$libname\$release\$shared_ext\$versuffix \$libname\$release\$shared_ext\$major \$libname\$shared_ext"
+
+# The coded name of the library, if different from the real name.
+soname_spec="\$libname\$release\$shared_ext\$major"
+
+# Permission mode override for installation of shared libraries.
+install_override_mode=""
+
+# Command to use after installation of a shared archive.
+postinstall_cmds=""
+
+# Command to use after uninstallation of a shared archive.
+postuninstall_cmds=""
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir"
+
+# As "finish_cmds", except a single script fragment to be evaled but
+# not shown.
+finish_eval=""
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=yes
+
+# Compile-time system search path for libraries.
+sys_lib_search_path_spec="/usr/lib/gcc/x86_64-linux-gnu/5 /usr/lib/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib "
+
+# Detected run-time system search path for libraries.
+sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/lib/x86_64-linux-gnu/libfakeroot /usr/local/lib /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu "
+
+# Explicit LT_SYS_LIBRARY_PATH set during ./configure time.
+configure_time_lt_sys_library_path=""
+
+# Whether dlopen is supported.
+dlopen_support=unknown
+
+# Whether dlopen of programs is supported.
+dlopen_self=unknown
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=unknown
+
+# Commands to strip libraries.
+old_striplib="strip --strip-debug"
+striplib="strip --strip-unneeded"
+
+
+# The linker used to build libraries.
+LD="/usr/bin/ld -m elf_x86_64"
+
+# How to create reloadable object files.
+reload_flag=" -r"
+reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"
+
+# Commands used to build an old-style archive.
+old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$tool_oldlib"
+
+# A language specific compiler.
+CC="gcc"
+
+# Is the compiler the GNU compiler?
+with_gcc=yes
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=" -fno-builtin"
+
+# Additional compiler flags for building library objects.
+pic_flag=" -fPIC -DPIC"
+
+# How to pass a linker flag through the compiler.
+wl="-Wl,"
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag="-static"
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o="yes"
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=no
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=no
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec="\$wl--export-dynamic"
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec="\$wl--whole-archive\$convenience \$wl--no-whole-archive"
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object="no"
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=""
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=""
+
+# Commands used to build a shared archive.
+archive_cmds="\$CC -shared \$pic_flag \$libobjs \$deplibs \$compiler_flags \$wl-soname \$wl\$soname -o \$lib"
+archive_expsym_cmds="echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~
+            cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~
+            echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~
+            \$CC -shared \$pic_flag \$libobjs \$deplibs \$compiler_flags \$wl-soname \$wl\$soname \$wl-version-script \$wl\$output_objdir/\$libname.ver -o \$lib"
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=""
+module_expsym_cmds=""
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld="yes"
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=""
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=""
+
+# Flag to hardcode $libdir into a binary during linking.
+# This must work even if $libdir does not exist
+hardcode_libdir_flag_spec="\$wl-rpath \$wl\$libdir"
+
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=""
+
+# Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=no
+
+# Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting $shlibpath_var if the
+# library is relocated.
+hardcode_direct_absolute=no
+
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=no
+
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=unsupported
+
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=no
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=no
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=no
+
+# Set to "yes" if exported symbols are required.
+always_export_symbols=no
+
+# The commands to list exported symbols.
+export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols"
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*"
+
+# Symbols that must always be exported.
+include_expsyms=""
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=""
+
+# Commands necessary for finishing linking programs.
+postlink_cmds=""
+
+# Specify filename containing input files.
+file_list_spec=""
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=immediate
+
+# The directories searched by this compiler when creating a shared library.
+compiler_lib_search_dirs=""
+
+# Dependencies to place before and after the objects being linked to
+# create a shared library.
+predep_objects=""
+postdep_objects=""
+predeps=""
+postdeps=""
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=""
+
+# ### END LIBTOOL CONFIG
+
+
+# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE
+
+# func_munge_path_list VARIABLE PATH
+# -----------------------------------
+# VARIABLE is name of variable containing _space_ separated list of
+# directories to be munged by the contents of PATH, which is string
+# having a format:
+# "DIR[:DIR]:"
+#       string "DIR[ DIR]" will be prepended to VARIABLE
+# ":DIR[:DIR]"
+#       string "DIR[ DIR]" will be appended to VARIABLE
+# "DIRP[:DIRP]::[DIRA:]DIRA"
+#       string "DIRP[ DIRP]" will be prepended to VARIABLE and string
+#       "DIRA[ DIRA]" will be appended to VARIABLE
+# "DIR[:DIR]"
+#       VARIABLE will be replaced by "DIR[ DIR]"
+func_munge_path_list ()
+{
+    case x$2 in
+    x)
+        ;;
+    *:)
+        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\"
+        ;;
+    x:*)
+        eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\"
+        ;;
+    *::*)
+        eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\"
+        eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\"
+        ;;
+    *)
+        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\"
+        ;;
+    esac
+}
+
+
+# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
+func_cc_basename ()
+{
+    for cc_temp in $*""; do
+      case $cc_temp in
+        compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+        distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+        \-*) ;;
+        *) break;;
+      esac
+    done
+    func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+}
+
+
+# ### END FUNCTIONS SHARED WITH CONFIGURE
+
+#! /bin/sh
+## DO NOT EDIT - This file generated from ./build-aux/ltmain.in
+##               by inline-source v2014-01-03.01
+
+# libtool (GNU libtool) 2.4.6
+# Provide generalized library-building support services.
+# Written by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
+
+# Copyright (C) 1996-2015 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions.  There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# GNU Libtool is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+
+PROGRAM=libtool
+PACKAGE=libtool
+VERSION="2.4.6 Debian-2.4.6-0.1"
+package_revision=2.4.6
+
+
+## ------ ##
+## Usage. ##
+## ------ ##
+
+# Run './libtool --help' for help with using this script from the
+# command line.
+
+
+## ------------------------------- ##
+## User overridable command paths. ##
+## ------------------------------- ##
+
+# After configure completes, it has a better idea of some of the
+# shell tools we need than the defaults used by the functions shared
+# with bootstrap, so set those here where they can still be over-
+# ridden by the user, but otherwise take precedence.
+
+: ${AUTOCONF="autoconf"}
+: ${AUTOMAKE="automake"}
+
+
+## -------------------------- ##
+## Source external libraries. ##
+## -------------------------- ##
+
+# Much of our low-level functionality needs to be sourced from external
+# libraries, which are installed to $pkgauxdir.
+
+# Set a version string for this script.
+scriptversion=2015-01-20.17; # UTC
+
+# General shell script boiler plate, and helper functions.
+# Written by Gary V. Vaughan, 2004
+
+# Copyright (C) 2004-2015 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions.  There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+
+# As a special exception to the GNU General Public License, if you distribute
+# this file as part of a program or library that is built using GNU Libtool,
+# you may include this file under the same distribution terms that you use
+# for the rest of that program.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# Please report bugs or propose patches to gary at gnu.org.
+
+
+## ------ ##
+## Usage. ##
+## ------ ##
+
+# Evaluate this file near the top of your script to gain access to
+# the functions and variables defined here:
+#
+#   . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh
+#
+# If you need to override any of the default environment variable
+# settings, do that before evaluating this file.
+
+
+## -------------------- ##
+## Shell normalisation. ##
+## -------------------- ##
+
+# Some shells need a little help to be as Bourne compatible as possible.
+# Before doing anything else, make sure all that help has been provided!
+
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac
+fi
+
+# NLS nuisances: We save the old values in case they are required later.
+_G_user_locale=
+_G_safe_locale=
+for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+do
+  eval "if test set = \"\${$_G_var+set}\"; then
+          save_$_G_var=\$$_G_var
+          $_G_var=C
+	  export $_G_var
+	  _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\"
+	  _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\"
+	fi"
+done
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# Make sure IFS has a sensible default
+sp=' '
+nl='
+'
+IFS="$sp	$nl"
+
+# There are apparently some retarded systems that use ';' as a PATH separator!
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+
+## ------------------------- ##
+## Locate command utilities. ##
+## ------------------------- ##
+
+
+# func_executable_p FILE
+# ----------------------
+# Check that FILE is an executable regular file.
+func_executable_p ()
+{
+    test -f "$1" && test -x "$1"
+}
+
+
+# func_path_progs PROGS_LIST CHECK_FUNC [PATH]
+# --------------------------------------------
+# Search for either a program that responds to --version with output
+# containing "GNU", or else returned by CHECK_FUNC otherwise, by
+# trying all the directories in PATH with each of the elements of
+# PROGS_LIST.
+#
+# CHECK_FUNC should accept the path to a candidate program, and
+# set $func_check_prog_result if it truncates its output less than
+# $_G_path_prog_max characters.
+func_path_progs ()
+{
+    _G_progs_list=$1
+    _G_check_func=$2
+    _G_PATH=${3-"$PATH"}
+
+    _G_path_prog_max=0
+    _G_path_prog_found=false
+    _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:}
+    for _G_dir in $_G_PATH; do
+      IFS=$_G_save_IFS
+      test -z "$_G_dir" && _G_dir=.
+      for _G_prog_name in $_G_progs_list; do
+        for _exeext in '' .EXE; do
+          _G_path_prog=$_G_dir/$_G_prog_name$_exeext
+          func_executable_p "$_G_path_prog" || continue
+          case `"$_G_path_prog" --version 2>&1` in
+            *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;;
+            *)     $_G_check_func $_G_path_prog
+		   func_path_progs_result=$func_check_prog_result
+		   ;;
+          esac
+          $_G_path_prog_found && break 3
+        done
+      done
+    done
+    IFS=$_G_save_IFS
+    test -z "$func_path_progs_result" && {
+      echo "no acceptable sed could be found in \$PATH" >&2
+      exit 1
+    }
+}
+
+
+# We want to be able to use the functions in this file before configure
+# has figured out where the best binaries are kept, which means we have
+# to search for them ourselves - except when the results are already set
+# where we skip the searches.
+
+# Unless the user overrides by setting SED, search the path for either GNU
+# sed, or the sed that truncates its output the least.
+test -z "$SED" && {
+  _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+  for _G_i in 1 2 3 4 5 6 7; do
+    _G_sed_script=$_G_sed_script$nl$_G_sed_script
+  done
+  echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed
+  _G_sed_script=
+
+  func_check_prog_sed ()
+  {
+    _G_path_prog=$1
+
+    _G_count=0
+    printf 0123456789 >conftest.in
+    while :
+    do
+      cat conftest.in conftest.in >conftest.tmp
+      mv conftest.tmp conftest.in
+      cp conftest.in conftest.nl
+      echo '' >> conftest.nl
+      "$_G_path_prog" -f conftest.sed <conftest.nl >conftest.out 2>/dev/null || break
+      diff conftest.out conftest.nl >/dev/null 2>&1 || break
+      _G_count=`expr $_G_count + 1`
+      if test "$_G_count" -gt "$_G_path_prog_max"; then
+        # Best one so far, save it but keep looking for a better one
+        func_check_prog_result=$_G_path_prog
+        _G_path_prog_max=$_G_count
+      fi
+      # 10*(2^10) chars as input seems more than enough
+      test 10 -lt "$_G_count" && break
+    done
+    rm -f conftest.in conftest.tmp conftest.nl conftest.out
+  }
+
+  func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin
+  rm -f conftest.sed
+  SED=$func_path_progs_result
+}
+
+
+# Unless the user overrides by setting GREP, search the path for either GNU
+# grep, or the grep that truncates its output the least.
+test -z "$GREP" && {
+  func_check_prog_grep ()
+  {
+    _G_path_prog=$1
+
+    _G_count=0
+    _G_path_prog_max=0
+    printf 0123456789 >conftest.in
+    while :
+    do
+      cat conftest.in conftest.in >conftest.tmp
+      mv conftest.tmp conftest.in
+      cp conftest.in conftest.nl
+      echo 'GREP' >> conftest.nl
+      "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' <conftest.nl >conftest.out 2>/dev/null || break
+      diff conftest.out conftest.nl >/dev/null 2>&1 || break
+      _G_count=`expr $_G_count + 1`
+      if test "$_G_count" -gt "$_G_path_prog_max"; then
+        # Best one so far, save it but keep looking for a better one
+        func_check_prog_result=$_G_path_prog
+        _G_path_prog_max=$_G_count
+      fi
+      # 10*(2^10) chars as input seems more than enough
+      test 10 -lt "$_G_count" && break
+    done
+    rm -f conftest.in conftest.tmp conftest.nl conftest.out
+  }
+
+  func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin
+  GREP=$func_path_progs_result
+}
+
+
+## ------------------------------- ##
+## User overridable command paths. ##
+## ------------------------------- ##
+
+# All uppercase variable names are used for environment variables.  These
+# variables can be overridden by the user before calling a script that
+# uses them if a suitable command of that name is not already available
+# in the command search PATH.
+
+: ${CP="cp -f"}
+: ${ECHO="printf %s\n"}
+: ${EGREP="$GREP -E"}
+: ${FGREP="$GREP -F"}
+: ${LN_S="ln -s"}
+: ${MAKE="make"}
+: ${MKDIR="mkdir"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
+
+
+## -------------------- ##
+## Useful sed snippets. ##
+## -------------------- ##
+
+sed_dirname='s|/[^/]*$||'
+sed_basename='s|^.*/||'
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Same as above, but do not quote variable references.
+sed_double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
+# Sed substitution that turns a string into a regex matching for the
+# string literally.
+sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g'
+
+# Sed substitution that converts a w32 file name or path
+# that contains forward slashes, into one that contains
+# (escaped) backslashes.  A very naive implementation.
+sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
+
+# Re-'\' parameter expansions in output of sed_double_quote_subst that
+# were '\'-ed in input to the same.  If an odd number of '\' preceded a
+# '$' in input to sed_double_quote_subst, that '$' was protected from
+# expansion.  Since each input '\' is now two '\'s, look for any number
+# of runs of four '\'s followed by two '\'s and then a '$'.  '\' that '$'.
+_G_bs='\\'
+_G_bs2='\\\\'
+_G_bs4='\\\\\\\\'
+_G_dollar='\$'
+sed_double_backslash="\
+  s/$_G_bs4/&\\
+/g
+  s/^$_G_bs2$_G_dollar/$_G_bs&/
+  s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g
+  s/\n//g"
+
+
+## ----------------- ##
+## Global variables. ##
+## ----------------- ##
+
+# Except for the global variables explicitly listed below, the following
+# functions in the '^func_' namespace, and the '^require_' namespace
+# variables initialised in the 'Resource management' section, sourcing
+# this file will not pollute your global namespace with anything
+# else. There's no portable way to scope variables in Bourne shell
+# though, so actually running these functions will sometimes place
+# results into a variable named after the function, and often use
+# temporary variables in the '^_G_' namespace. If you are careful to
+# avoid using those namespaces casually in your sourcing script, things
+# should continue to work as you expect. And, of course, you can freely
+# overwrite any of the functions or variables defined here before
+# calling anything to customize them.
+
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
+EXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
+
+# Allow overriding, eg assuming that you follow the convention of
+# putting '$debug_cmd' at the start of all your functions, you can get
+# bash to show function call trace with:
+#
+#    debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name
+debug_cmd=${debug_cmd-":"}
+exit_cmd=:
+
+# By convention, finish your script with:
+#
+#    exit $exit_status
+#
+# so that you can set exit_status to non-zero if you want to indicate
+# something went wrong during execution without actually bailing out at
+# the point of failure.
+exit_status=$EXIT_SUCCESS
+
+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+# is ksh but when the shell is invoked as "sh" and the current value of
+# the _XPG environment variable is not equal to 1 (one), the special
+# positional parameter $0, within a function call, is the name of the
+# function.
+progpath=$0
+
+# The name of this program.
+progname=`$ECHO "$progpath" |$SED "$sed_basename"`
+
+# Make sure we have an absolute progpath for reexecution:
+case $progpath in
+  [\\/]*|[A-Za-z]:\\*) ;;
+  *[\\/]*)
+     progdir=`$ECHO "$progpath" |$SED "$sed_dirname"`
+     progdir=`cd "$progdir" && pwd`
+     progpath=$progdir/$progname
+     ;;
+  *)
+     _G_IFS=$IFS
+     IFS=${PATH_SEPARATOR-:}
+     for progdir in $PATH; do
+       IFS=$_G_IFS
+       test -x "$progdir/$progname" && break
+     done
+     IFS=$_G_IFS
+     test -n "$progdir" || progdir=`pwd`
+     progpath=$progdir/$progname
+     ;;
+esac
+
+
+## ----------------- ##
+## Standard options. ##
+## ----------------- ##
+
+# The following options affect the operation of the functions defined
+# below, and should be set appropriately depending on run-time para-
+# meters passed on the command line.
+
+opt_dry_run=false
+opt_quiet=false
+opt_verbose=false
+
+# Categories 'all' and 'none' are always available.  Append any others
+# you will pass as the first argument to func_warning from your own
+# code.
+warning_categories=
+
+# By default, display warnings according to 'opt_warning_types'.  Set
+# 'warning_func'  to ':' to elide all warnings, or func_fatal_error to
+# treat the next displayed warning as a fatal error.
+warning_func=func_warn_and_continue
+
+# Set to 'all' to display all warnings, 'none' to suppress all
+# warnings, or a space delimited list of some subset of
+# 'warning_categories' to display only the listed warnings.
+opt_warning_types=all
+
+
+## -------------------- ##
+## Resource management. ##
+## -------------------- ##
+
+# This section contains definitions for functions that each ensure a
+# particular resource (a file, or a non-empty configuration variable for
+# example) is available, and if appropriate to extract default values
+# from pertinent package files. Call them using their associated
+# 'require_*' variable to ensure that they are executed, at most, once.
+#
+# It's entirely deliberate that calling these functions can set
+# variables that don't obey the namespace limitations obeyed by the rest
+# of this file, in order that that they be as useful as possible to
+# callers.
+
+
+# require_term_colors
+# -------------------
+# Allow display of bold text on terminals that support it.
+require_term_colors=func_require_term_colors
+func_require_term_colors ()
+{
+    $debug_cmd
+
+    test -t 1 && {
+      # COLORTERM and USE_ANSI_COLORS environment variables take
+      # precedence, because most terminfo databases neglect to describe
+      # whether color sequences are supported.
+      test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"}
+
+      if test 1 = "$USE_ANSI_COLORS"; then
+        # Standard ANSI escape sequences
+        tc_reset=''
+        tc_bold='';   tc_standout=''
+        tc_red='';   tc_green=''
+        tc_blue='';  tc_cyan=''
+      else
+        # Otherwise trust the terminfo database after all.
+        test -n "`tput sgr0 2>/dev/null`" && {
+          tc_reset=`tput sgr0`
+          test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold`
+          tc_standout=$tc_bold
+          test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso`
+          test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1`
+          test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2`
+          test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4`
+          test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5`
+        }
+      fi
+    }
+
+    require_term_colors=:
+}
+
+
+## ----------------- ##
+## Function library. ##
+## ----------------- ##
+
+# This section contains a variety of useful functions to call in your
+# scripts. Take note of the portable wrappers for features provided by
+# some modern shells, which will fall back to slower equivalents on
+# less featureful shells.
+
+
+# func_append VAR VALUE
+# ---------------------
+# Append VALUE onto the existing contents of VAR.
+
+  # We should try to minimise forks, especially on Windows where they are
+  # unreasonably slow, so skip the feature probes when bash or zsh are
+  # being used:
+  if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then
+    : ${_G_HAVE_ARITH_OP="yes"}
+    : ${_G_HAVE_XSI_OPS="yes"}
+    # The += operator was introduced in bash 3.1
+    case $BASH_VERSION in
+      [12].* | 3.0 | 3.0*) ;;
+      *)
+        : ${_G_HAVE_PLUSEQ_OP="yes"}
+        ;;
+    esac
+  fi
+
+  # _G_HAVE_PLUSEQ_OP
+  # Can be empty, in which case the shell is probed, "yes" if += is
+  # useable or anything else if it does not work.
+  test -z "$_G_HAVE_PLUSEQ_OP" \
+    && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \
+    && _G_HAVE_PLUSEQ_OP=yes
+
+if test yes = "$_G_HAVE_PLUSEQ_OP"
+then
+  # This is an XSI compatible shell, allowing a faster implementation...
+  eval 'func_append ()
+  {
+    $debug_cmd
+
+    eval "$1+=\$2"
+  }'
+else
+  # ...otherwise fall back to using expr, which is often a shell builtin.
+  func_append ()
+  {
+    $debug_cmd
+
+    eval "$1=\$$1\$2"
+  }
+fi
+
+
+# func_append_quoted VAR VALUE
+# ----------------------------
+# Quote VALUE and append to the end of shell variable VAR, separated
+# by a space.
+if test yes = "$_G_HAVE_PLUSEQ_OP"; then
+  eval 'func_append_quoted ()
+  {
+    $debug_cmd
+
+    func_quote_for_eval "$2"
+    eval "$1+=\\ \$func_quote_for_eval_result"
+  }'
+else
+  func_append_quoted ()
+  {
+    $debug_cmd
+
+    func_quote_for_eval "$2"
+    eval "$1=\$$1\\ \$func_quote_for_eval_result"
+  }
+fi
+
+
+# func_append_uniq VAR VALUE
+# --------------------------
+# Append unique VALUE onto the existing contents of VAR, assuming
+# entries are delimited by the first character of VALUE.  For example:
+#
+#   func_append_uniq options " --another-option option-argument"
+#
+# will only append to $options if " --another-option option-argument "
+# is not already present somewhere in $options already (note spaces at
+# each end implied by leading space in second argument).
+func_append_uniq ()
+{
+    $debug_cmd
+
+    eval _G_current_value='`$ECHO $'$1'`'
+    _G_delim=`expr "$2" : '\(.\)'`
+
+    case $_G_delim$_G_current_value$_G_delim in
+      *"$2$_G_delim"*) ;;
+      *) func_append "$@" ;;
+    esac
+}
+
+
+# func_arith TERM...
+# ------------------
+# Set func_arith_result to the result of evaluating TERMs.
+  test -z "$_G_HAVE_ARITH_OP" \
+    && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \
+    && _G_HAVE_ARITH_OP=yes
+
+if test yes = "$_G_HAVE_ARITH_OP"; then
+  eval 'func_arith ()
+  {
+    $debug_cmd
+
+    func_arith_result=$(( $* ))
+  }'
+else
+  func_arith ()
+  {
+    $debug_cmd
+
+    func_arith_result=`expr "$@"`
+  }
+fi
+
+
+# func_basename FILE
+# ------------------
+# Set func_basename_result to FILE with everything up to and including
+# the last / stripped.
+if test yes = "$_G_HAVE_XSI_OPS"; then
+  # If this shell supports suffix pattern removal, then use it to avoid
+  # forking. Hide the definitions single quotes in case the shell chokes
+  # on unsupported syntax...
+  _b='func_basename_result=${1##*/}'
+  _d='case $1 in
+        */*) func_dirname_result=${1%/*}$2 ;;
+        *  ) func_dirname_result=$3        ;;
+      esac'
+
+else
+  # ...otherwise fall back to using sed.
+  _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`'
+  _d='func_dirname_result=`$ECHO "$1"  |$SED "$sed_dirname"`
+      if test "X$func_dirname_result" = "X$1"; then
+        func_dirname_result=$3
+      else
+        func_append func_dirname_result "$2"
+      fi'
+fi
+
+eval 'func_basename ()
+{
+    $debug_cmd
+
+    '"$_b"'
+}'
+
+
+# func_dirname FILE APPEND NONDIR_REPLACEMENT
+# -------------------------------------------
+# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+eval 'func_dirname ()
+{
+    $debug_cmd
+
+    '"$_d"'
+}'
+
+
+# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT
+# --------------------------------------------------------
+# Perform func_basename and func_dirname in a single function
+# call:
+#   dirname:  Compute the dirname of FILE.  If nonempty,
+#             add APPEND to the result, otherwise set result
+#             to NONDIR_REPLACEMENT.
+#             value returned in "$func_dirname_result"
+#   basename: Compute filename of FILE.
+#             value retuned in "$func_basename_result"
+# For efficiency, we do not delegate to the functions above but instead
+# duplicate the functionality here.
+eval 'func_dirname_and_basename ()
+{
+    $debug_cmd
+
+    '"$_b"'
+    '"$_d"'
+}'
+
+
+# func_echo ARG...
+# ----------------
+# Echo program name prefixed message.
+func_echo ()
+{
+    $debug_cmd
+
+    _G_message=$*
+
+    func_echo_IFS=$IFS
+    IFS=$nl
+    for _G_line in $_G_message; do
+      IFS=$func_echo_IFS
+      $ECHO "$progname: $_G_line"
+    done
+    IFS=$func_echo_IFS
+}
+
+
+# func_echo_all ARG...
+# --------------------
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+    $ECHO "$*"
+}
+
+
+# func_echo_infix_1 INFIX ARG...
+# ------------------------------
+# Echo program name, followed by INFIX on the first line, with any
+# additional lines not showing INFIX.
+func_echo_infix_1 ()
+{
+    $debug_cmd
+
+    $require_term_colors
+
+    _G_infix=$1; shift
+    _G_indent=$_G_infix
+    _G_prefix="$progname: $_G_infix: "
+    _G_message=$*
+
+    # Strip color escape sequences before counting printable length
+    for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan"
+    do
+      test -n "$_G_tc" && {
+        _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"`
+        _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"`
+      }
+    done
+    _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`"  " ## exclude from sc_prohibit_nested_quotes
+
+    func_echo_infix_1_IFS=$IFS
+    IFS=$nl
+    for _G_line in $_G_message; do
+      IFS=$func_echo_infix_1_IFS
+      $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2
+      _G_prefix=$_G_indent
+    done
+    IFS=$func_echo_infix_1_IFS
+}
+
+
+# func_error ARG...
+# -----------------
+# Echo program name prefixed message to standard error.
+func_error ()
+{
+    $debug_cmd
+
+    $require_term_colors
+
+    func_echo_infix_1 "  $tc_standout${tc_red}error$tc_reset" "$*" >&2
+}
+
+
+# func_fatal_error ARG...
+# -----------------------
+# Echo program name prefixed message to standard error, and exit.
+func_fatal_error ()
+{
+    $debug_cmd
+
+    func_error "$*"
+    exit $EXIT_FAILURE
+}
+
+
+# func_grep EXPRESSION FILENAME
+# -----------------------------
+# Check whether EXPRESSION matches any line of FILENAME, without output.
+func_grep ()
+{
+    $debug_cmd
+
+    $GREP "$1" "$2" >/dev/null 2>&1
+}
+
+
+# func_len STRING
+# ---------------
+# Set func_len_result to the length of STRING. STRING may not
+# start with a hyphen.
+  test -z "$_G_HAVE_XSI_OPS" \
+    && (eval 'x=a/b/c;
+      test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
+    && _G_HAVE_XSI_OPS=yes
+
+if test yes = "$_G_HAVE_XSI_OPS"; then
+  eval 'func_len ()
+  {
+    $debug_cmd
+
+    func_len_result=${#1}
+  }'
+else
+  func_len ()
+  {
+    $debug_cmd
+
+    func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
+  }
+fi
+
+
+# func_mkdir_p DIRECTORY-PATH
+# ---------------------------
+# Make sure the entire path to DIRECTORY-PATH is available.
+func_mkdir_p ()
+{
+    $debug_cmd
+
+    _G_directory_path=$1
+    _G_dir_list=
+
+    if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then
+
+      # Protect directory names starting with '-'
+      case $_G_directory_path in
+        -*) _G_directory_path=./$_G_directory_path ;;
+      esac
+
+      # While some portion of DIR does not yet exist...
+      while test ! -d "$_G_directory_path"; do
+        # ...make a list in topmost first order.  Use a colon delimited
+	# list incase some portion of path contains whitespace.
+        _G_dir_list=$_G_directory_path:$_G_dir_list
+
+        # If the last portion added has no slash in it, the list is done
+        case $_G_directory_path in */*) ;; *) break ;; esac
+
+        # ...otherwise throw away the child directory and loop
+        _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"`
+      done
+      _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'`
+
+      func_mkdir_p_IFS=$IFS; IFS=:
+      for _G_dir in $_G_dir_list; do
+	IFS=$func_mkdir_p_IFS
+        # mkdir can fail with a 'File exist' error if two processes
+        # try to create one of the directories concurrently.  Don't
+        # stop in that case!
+        $MKDIR "$_G_dir" 2>/dev/null || :
+      done
+      IFS=$func_mkdir_p_IFS
+
+      # Bail out if we (or some other process) failed to create a directory.
+      test -d "$_G_directory_path" || \
+        func_fatal_error "Failed to create '$1'"
+    fi
+}
+
+
+# func_mktempdir [BASENAME]
+# -------------------------
+# Make a temporary directory that won't clash with other running
+# libtool processes, and avoids race conditions if possible.  If
+# given, BASENAME is the basename for that directory.
+func_mktempdir ()
+{
+    $debug_cmd
+
+    _G_template=${TMPDIR-/tmp}/${1-$progname}
+
+    if test : = "$opt_dry_run"; then
+      # Return a directory name, but don't create it in dry-run mode
+      _G_tmpdir=$_G_template-$$
+    else
+
+      # If mktemp works, use that first and foremost
+      _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null`
+
+      if test ! -d "$_G_tmpdir"; then
+        # Failing that, at least try and use $RANDOM to avoid a race
+        _G_tmpdir=$_G_template-${RANDOM-0}$$
+
+        func_mktempdir_umask=`umask`
+        umask 0077
+        $MKDIR "$_G_tmpdir"
+        umask $func_mktempdir_umask
+      fi
+
+      # If we're not in dry-run mode, bomb out on failure
+      test -d "$_G_tmpdir" || \
+        func_fatal_error "cannot create temporary directory '$_G_tmpdir'"
+    fi
+
+    $ECHO "$_G_tmpdir"
+}
+
+
+# func_normal_abspath PATH
+# ------------------------
+# Remove doubled-up and trailing slashes, "." path components,
+# and cancel out any ".." path components in PATH after making
+# it an absolute path.
+func_normal_abspath ()
+{
+    $debug_cmd
+
+    # These SED scripts presuppose an absolute path with a trailing slash.
+    _G_pathcar='s|^/\([^/]*\).*$|\1|'
+    _G_pathcdr='s|^/[^/]*||'
+    _G_removedotparts=':dotsl
+		s|/\./|/|g
+		t dotsl
+		s|/\.$|/|'
+    _G_collapseslashes='s|/\{1,\}|/|g'
+    _G_finalslash='s|/*$|/|'
+
+    # Start from root dir and reassemble the path.
+    func_normal_abspath_result=
+    func_normal_abspath_tpath=$1
+    func_normal_abspath_altnamespace=
+    case $func_normal_abspath_tpath in
+      "")
+        # Empty path, that just means $cwd.
+        func_stripname '' '/' "`pwd`"
+        func_normal_abspath_result=$func_stripname_result
+        return
+        ;;
+      # The next three entries are used to spot a run of precisely
+      # two leading slashes without using negated character classes;
+      # we take advantage of case's first-match behaviour.
+      ///*)
+        # Unusual form of absolute path, do nothing.
+        ;;
+      //*)
+        # Not necessarily an ordinary path; POSIX reserves leading '//'
+        # and for example Cygwin uses it to access remote file shares
+        # over CIFS/SMB, so we conserve a leading double slash if found.
+        func_normal_abspath_altnamespace=/
+        ;;
+      /*)
+        # Absolute path, do nothing.
+        ;;
+      *)
+        # Relative path, prepend $cwd.
+        func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
+        ;;
+    esac
+
+    # Cancel out all the simple stuff to save iterations.  We also want
+    # the path to end with a slash for ease of parsing, so make sure
+    # there is one (and only one) here.
+    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+          -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"`
+    while :; do
+      # Processed it all yet?
+      if test / = "$func_normal_abspath_tpath"; then
+        # If we ascended to the root using ".." the result may be empty now.
+        if test -z "$func_normal_abspath_result"; then
+          func_normal_abspath_result=/
+        fi
+        break
+      fi
+      func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
+          -e "$_G_pathcar"`
+      func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+          -e "$_G_pathcdr"`
+      # Figure out what to do with it
+      case $func_normal_abspath_tcomponent in
+        "")
+          # Trailing empty path component, ignore it.
+          ;;
+        ..)
+          # Parent dir; strip last assembled component from result.
+          func_dirname "$func_normal_abspath_result"
+          func_normal_abspath_result=$func_dirname_result
+          ;;
+        *)
+          # Actual path component, append it.
+          func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent"
+          ;;
+      esac
+    done
+    # Restore leading double-slash if one was found on entry.
+    func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
+}
+
+
+# func_notquiet ARG...
+# --------------------
+# Echo program name prefixed message only when not in quiet mode.
+func_notquiet ()
+{
+    $debug_cmd
+
+    $opt_quiet || func_echo ${1+"$@"}
+
+    # A bug in bash halts the script if the last line of a function
+    # fails when set -e is in force, so we need another command to
+    # work around that:
+    :
+}
+
+
+# func_relative_path SRCDIR DSTDIR
+# --------------------------------
+# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR.
+func_relative_path ()
+{
+    $debug_cmd
+
+    func_relative_path_result=
+    func_normal_abspath "$1"
+    func_relative_path_tlibdir=$func_normal_abspath_result
+    func_normal_abspath "$2"
+    func_relative_path_tbindir=$func_normal_abspath_result
+
+    # Ascend the tree starting from libdir
+    while :; do
+      # check if we have found a prefix of bindir
+      case $func_relative_path_tbindir in
+        $func_relative_path_tlibdir)
+          # found an exact match
+          func_relative_path_tcancelled=
+          break
+          ;;
+        $func_relative_path_tlibdir*)
+          # found a matching prefix
+          func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
+          func_relative_path_tcancelled=$func_stripname_result
+          if test -z "$func_relative_path_result"; then
+            func_relative_path_result=.
+          fi
+          break
+          ;;
+        *)
+          func_dirname $func_relative_path_tlibdir
+          func_relative_path_tlibdir=$func_dirname_result
+          if test -z "$func_relative_path_tlibdir"; then
+            # Have to descend all the way to the root!
+            func_relative_path_result=../$func_relative_path_result
+            func_relative_path_tcancelled=$func_relative_path_tbindir
+            break
+          fi
+          func_relative_path_result=../$func_relative_path_result
+          ;;
+      esac
+    done
+
+    # Now calculate path; take care to avoid doubling-up slashes.
+    func_stripname '' '/' "$func_relative_path_result"
+    func_relative_path_result=$func_stripname_result
+    func_stripname '/' '/' "$func_relative_path_tcancelled"
+    if test -n "$func_stripname_result"; then
+      func_append func_relative_path_result "/$func_stripname_result"
+    fi
+
+    # Normalisation. If bindir is libdir, return '.' else relative path.
+    if test -n "$func_relative_path_result"; then
+      func_stripname './' '' "$func_relative_path_result"
+      func_relative_path_result=$func_stripname_result
+    fi
+
+    test -n "$func_relative_path_result" || func_relative_path_result=.
+
+    :
+}
+
+
+# func_quote_for_eval ARG...
+# --------------------------
+# Aesthetically quote ARGs to be evaled later.
+# This function returns two values:
+#   i) func_quote_for_eval_result
+#      double-quoted, suitable for a subsequent eval
+#  ii) func_quote_for_eval_unquoted_result
+#      has all characters that are still active within double
+#      quotes backslashified.
+func_quote_for_eval ()
+{
+    $debug_cmd
+
+    func_quote_for_eval_unquoted_result=
+    func_quote_for_eval_result=
+    while test 0 -lt $#; do
+      case $1 in
+        *[\\\`\"\$]*)
+	  _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;;
+        *)
+          _G_unquoted_arg=$1 ;;
+      esac
+      if test -n "$func_quote_for_eval_unquoted_result"; then
+	func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg"
+      else
+        func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg"
+      fi
+
+      case $_G_unquoted_arg in
+        # Double-quote args containing shell metacharacters to delay
+        # word splitting, command substitution and variable expansion
+        # for a subsequent eval.
+        # Many Bourne shells cannot handle close brackets correctly
+        # in scan sets, so we specify it separately.
+        *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+          _G_quoted_arg=\"$_G_unquoted_arg\"
+          ;;
+        *)
+          _G_quoted_arg=$_G_unquoted_arg
+	  ;;
+      esac
+
+      if test -n "$func_quote_for_eval_result"; then
+	func_append func_quote_for_eval_result " $_G_quoted_arg"
+      else
+        func_append func_quote_for_eval_result "$_G_quoted_arg"
       fi
-    fi
+      shift
+    done
+}
+
+
+# func_quote_for_expand ARG
+# -------------------------
+# Aesthetically quote ARG to be evaled later; same as above,
+# but do not quote variable references.
+func_quote_for_expand ()
+{
+    $debug_cmd
+
+    case $1 in
+      *[\\\`\"]*)
+	_G_arg=`$ECHO "$1" | $SED \
+	    -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;;
+      *)
+        _G_arg=$1 ;;
+    esac
+
+    case $_G_arg in
+      # Double-quote args containing shell metacharacters to delay
+      # word splitting and command substitution for a subsequent eval.
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, so we specify it separately.
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+        _G_arg=\"$_G_arg\"
+        ;;
+    esac
+
+    func_quote_for_expand_result=$_G_arg
+}
+
+
+# func_stripname PREFIX SUFFIX NAME
+# ---------------------------------
+# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+if test yes = "$_G_HAVE_XSI_OPS"; then
+  eval 'func_stripname ()
+  {
+    $debug_cmd
+
+    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+    # positional parameters, so assign one to ordinary variable first.
+    func_stripname_result=$3
+    func_stripname_result=${func_stripname_result#"$1"}
+    func_stripname_result=${func_stripname_result%"$2"}
+  }'
+else
+  func_stripname ()
+  {
+    $debug_cmd
+
+    case $2 in
+      .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;;
+      *)  func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;;
+    esac
+  }
+fi
+
+
+# func_show_eval CMD [FAIL_EXP]
+# -----------------------------
+# Unless opt_quiet is true, then output CMD.  Then, if opt_dryrun is
+# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it.
+func_show_eval ()
+{
+    $debug_cmd
+
+    _G_cmd=$1
+    _G_fail_exp=${2-':'}
+
+    func_quote_for_expand "$_G_cmd"
+    eval "func_notquiet $func_quote_for_expand_result"
+
+    $opt_dry_run || {
+      eval "$_G_cmd"
+      _G_status=$?
+      if test 0 -ne "$_G_status"; then
+	eval "(exit $_G_status); $_G_fail_exp"
+      fi
+    }
 }
 
 
-# func_show_eval_locale cmd [fail_exp]
-# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
+# func_show_eval_locale CMD [FAIL_EXP]
+# ------------------------------------
+# Unless opt_quiet is true, then output CMD.  Then, if opt_dryrun is
 # not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
 # is given, then evaluate it.  Use the saved locale for evaluation.
 func_show_eval_locale ()
 {
-    my_cmd="$1"
-    my_fail_exp="${2-:}"
+    $debug_cmd
 
-    ${opt_silent-false} || {
-      func_quote_for_expand "$my_cmd"
+    _G_cmd=$1
+    _G_fail_exp=${2-':'}
+
+    $opt_quiet || {
+      func_quote_for_expand "$_G_cmd"
       eval "func_echo $func_quote_for_expand_result"
     }
 
-    if ${opt_dry_run-false}; then :; else
-      eval "$lt_user_locale
-	    $my_cmd"
-      my_status=$?
-      eval "$lt_safe_locale"
-      if test "$my_status" -eq 0; then :; else
-	eval "(exit $my_status); $my_fail_exp"
+    $opt_dry_run || {
+      eval "$_G_user_locale
+	    $_G_cmd"
+      _G_status=$?
+      eval "$_G_safe_locale"
+      if test 0 -ne "$_G_status"; then
+	eval "(exit $_G_status); $_G_fail_exp"
       fi
-    fi
+    }
 }
 
+
 # func_tr_sh
+# ----------
 # Turn $1 into a string suitable for a shell variable name.
 # Result is stored in $func_tr_sh_result.  All characters
 # not in the set a-zA-Z0-9_ are replaced with '_'. Further,
 # if $1 begins with a digit, a '_' is prepended as well.
 func_tr_sh ()
 {
-  case $1 in
-  [0-9]* | *[!a-zA-Z0-9_]*)
-    func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
-    ;;
-  * )
-    func_tr_sh_result=$1
-    ;;
-  esac
+    $debug_cmd
+
+    case $1 in
+    [0-9]* | *[!a-zA-Z0-9_]*)
+      func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'`
+      ;;
+    * )
+      func_tr_sh_result=$1
+      ;;
+    esac
+}
+
+
+# func_verbose ARG...
+# -------------------
+# Echo program name prefixed message in verbose mode only.
+func_verbose ()
+{
+    $debug_cmd
+
+    $opt_verbose && func_echo "$*"
+
+    :
+}
+
+
+# func_warn_and_continue ARG...
+# -----------------------------
+# Echo program name prefixed warning message to standard error.
+func_warn_and_continue ()
+{
+    $debug_cmd
+
+    $require_term_colors
+
+    func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2
+}
+
+
+# func_warning CATEGORY ARG...
+# ----------------------------
+# Echo program name prefixed warning message to standard error. Warning
+# messages can be filtered according to CATEGORY, where this function
+# elides messages where CATEGORY is not listed in the global variable
+# 'opt_warning_types'.
+func_warning ()
+{
+    $debug_cmd
+
+    # CATEGORY must be in the warning_categories list!
+    case " $warning_categories " in
+      *" $1 "*) ;;
+      *) func_internal_error "invalid warning category '$1'" ;;
+    esac
+
+    _G_category=$1
+    shift
+
+    case " $opt_warning_types " in
+      *" $_G_category "*) $warning_func ${1+"$@"} ;;
+    esac
+}
+
+
+# func_sort_ver VER1 VER2
+# -----------------------
+# 'sort -V' is not generally available.
+# Note this deviates from the version comparison in automake
+# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a
+# but this should suffice as we won't be specifying old
+# version formats or redundant trailing .0 in bootstrap.conf.
+# If we did want full compatibility then we should probably
+# use m4_version_compare from autoconf.
+func_sort_ver ()
+{
+    $debug_cmd
+
+    printf '%s\n%s\n' "$1" "$2" \
+      | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n
+}
+
+# func_lt_ver PREV CURR
+# ---------------------
+# Return true if PREV and CURR are in the correct order according to
+# func_sort_ver, otherwise false.  Use it like this:
+#
+#  func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..."
+func_lt_ver ()
+{
+    $debug_cmd
+
+    test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q`
+}
+
+
+# Local variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC"
+# time-stamp-time-zone: "UTC"
+# End:
+#! /bin/sh
+
+# Set a version string for this script.
+scriptversion=2014-01-07.03; # UTC
+
+# A portable, pluggable option parser for Bourne shell.
+# Written by Gary V. Vaughan, 2010
+
+# Copyright (C) 2010-2015 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions.  There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Please report bugs or propose patches to gary at gnu.org.
+
+
+## ------ ##
+## Usage. ##
+## ------ ##
+
+# This file is a library for parsing options in your shell scripts along
+# with assorted other useful supporting features that you can make use
+# of too.
+#
+# For the simplest scripts you might need only:
+#
+#   #!/bin/sh
+#   . relative/path/to/funclib.sh
+#   . relative/path/to/options-parser
+#   scriptversion=1.0
+#   func_options ${1+"$@"}
+#   eval set dummy "$func_options_result"; shift
+#   ...rest of your script...
+#
+# In order for the '--version' option to work, you will need to have a
+# suitably formatted comment like the one at the top of this file
+# starting with '# Written by ' and ending with '# warranty; '.
+#
+# For '-h' and '--help' to work, you will also need a one line
+# description of your script's purpose in a comment directly above the
+# '# Written by ' line, like the one at the top of this file.
+#
+# The default options also support '--debug', which will turn on shell
+# execution tracing (see the comment above debug_cmd below for another
+# use), and '--verbose' and the func_verbose function to allow your script
+# to display verbose messages only when your user has specified
+# '--verbose'.
+#
+# After sourcing this file, you can plug processing for additional
+# options by amending the variables from the 'Configuration' section
+# below, and following the instructions in the 'Option parsing'
+# section further down.
+
+## -------------- ##
+## Configuration. ##
+## -------------- ##
+
+# You should override these variables in your script after sourcing this
+# file so that they reflect the customisations you have added to the
+# option parser.
+
+# The usage line for option parsing errors and the start of '-h' and
+# '--help' output messages. You can embed shell variables for delayed
+# expansion at the time the message is displayed, but you will need to
+# quote other shell meta-characters carefully to prevent them being
+# expanded when the contents are evaled.
+usage='$progpath [OPTION]...'
+
+# Short help message in response to '-h' and '--help'.  Add to this or
+# override it after sourcing this library to reflect the full set of
+# options your script accepts.
+usage_message="\
+       --debug        enable verbose shell tracing
+   -W, --warnings=CATEGORY
+                      report the warnings falling in CATEGORY [all]
+   -v, --verbose      verbosely report processing
+       --version      print version information and exit
+   -h, --help         print short or long help message and exit
+"
+
+# Additional text appended to 'usage_message' in response to '--help'.
+long_help_message="
+Warning categories include:
+       'all'          show all warnings
+       'none'         turn off all the warnings
+       'error'        warnings are treated as fatal errors"
+
+# Help message printed before fatal option parsing errors.
+fatal_help="Try '\$progname --help' for more information."
+
+
+
+## ------------------------- ##
+## Hook function management. ##
+## ------------------------- ##
+
+# This section contains functions for adding, removing, and running hooks
+# to the main code.  A hook is just a named list of of function, that can
+# be run in order later on.
+
+# func_hookable FUNC_NAME
+# -----------------------
+# Declare that FUNC_NAME will run hooks added with
+# 'func_add_hook FUNC_NAME ...'.
+func_hookable ()
+{
+    $debug_cmd
+
+    func_append hookable_fns " $1"
+}
+
+
+# func_add_hook FUNC_NAME HOOK_FUNC
+# ---------------------------------
+# Request that FUNC_NAME call HOOK_FUNC before it returns.  FUNC_NAME must
+# first have been declared "hookable" by a call to 'func_hookable'.
+func_add_hook ()
+{
+    $debug_cmd
+
+    case " $hookable_fns " in
+      *" $1 "*) ;;
+      *) func_fatal_error "'$1' does not accept hook functions." ;;
+    esac
+
+    eval func_append ${1}_hooks '" $2"'
+}
+
+
+# func_remove_hook FUNC_NAME HOOK_FUNC
+# ------------------------------------
+# Remove HOOK_FUNC from the list of functions called by FUNC_NAME.
+func_remove_hook ()
+{
+    $debug_cmd
+
+    eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`'
+}
+
+
+# func_run_hooks FUNC_NAME [ARG]...
+# ---------------------------------
+# Run all hook functions registered to FUNC_NAME.
+# It is assumed that the list of hook functions contains nothing more
+# than a whitespace-delimited list of legal shell function names, and
+# no effort is wasted trying to catch shell meta-characters or preserve
+# whitespace.
+func_run_hooks ()
+{
+    $debug_cmd
+
+    case " $hookable_fns " in
+      *" $1 "*) ;;
+      *) func_fatal_error "'$1' does not support hook funcions.n" ;;
+    esac
+
+    eval _G_hook_fns=\$$1_hooks; shift
+
+    for _G_hook in $_G_hook_fns; do
+      eval $_G_hook '"$@"'
+
+      # store returned options list back into positional
+      # parameters for next 'cmd' execution.
+      eval _G_hook_result=\$${_G_hook}_result
+      eval set dummy "$_G_hook_result"; shift
+    done
+
+    func_quote_for_eval ${1+"$@"}
+    func_run_hooks_result=$func_quote_for_eval_result
+}
+
+
+
+## --------------- ##
+## Option parsing. ##
+## --------------- ##
+
+# In order to add your own option parsing hooks, you must accept the
+# full positional parameter list in your hook function, remove any
+# options that you action, and then pass back the remaining unprocessed
+# options in '<hooked_function_name>_result', escaped suitably for
+# 'eval'.  Like this:
+#
+#    my_options_prep ()
+#    {
+#        $debug_cmd
+#
+#        # Extend the existing usage message.
+#        usage_message=$usage_message'
+#      -s, --silent       don'\''t print informational messages
+#    '
+#
+#        func_quote_for_eval ${1+"$@"}
+#        my_options_prep_result=$func_quote_for_eval_result
+#    }
+#    func_add_hook func_options_prep my_options_prep
+#
+#
+#    my_silent_option ()
+#    {
+#        $debug_cmd
+#
+#        # Note that for efficiency, we parse as many options as we can
+#        # recognise in a loop before passing the remainder back to the
+#        # caller on the first unrecognised argument we encounter.
+#        while test $# -gt 0; do
+#          opt=$1; shift
+#          case $opt in
+#            --silent|-s) opt_silent=: ;;
+#            # Separate non-argument short options:
+#            -s*)         func_split_short_opt "$_G_opt"
+#                         set dummy "$func_split_short_opt_name" \
+#                             "-$func_split_short_opt_arg" ${1+"$@"}
+#                         shift
+#                         ;;
+#            *)            set dummy "$_G_opt" "$*"; shift; break ;;
+#          esac
+#        done
+#
+#        func_quote_for_eval ${1+"$@"}
+#        my_silent_option_result=$func_quote_for_eval_result
+#    }
+#    func_add_hook func_parse_options my_silent_option
+#
+#
+#    my_option_validation ()
+#    {
+#        $debug_cmd
+#
+#        $opt_silent && $opt_verbose && func_fatal_help "\
+#    '--silent' and '--verbose' options are mutually exclusive."
+#
+#        func_quote_for_eval ${1+"$@"}
+#        my_option_validation_result=$func_quote_for_eval_result
+#    }
+#    func_add_hook func_validate_options my_option_validation
+#
+# You'll alse need to manually amend $usage_message to reflect the extra
+# options you parse.  It's preferable to append if you can, so that
+# multiple option parsing hooks can be added safely.
+
+
+# func_options [ARG]...
+# ---------------------
+# All the functions called inside func_options are hookable. See the
+# individual implementations for details.
+func_hookable func_options
+func_options ()
+{
+    $debug_cmd
+
+    func_options_prep ${1+"$@"}
+    eval func_parse_options \
+        ${func_options_prep_result+"$func_options_prep_result"}
+    eval func_validate_options \
+        ${func_parse_options_result+"$func_parse_options_result"}
+
+    eval func_run_hooks func_options \
+        ${func_validate_options_result+"$func_validate_options_result"}
+
+    # save modified positional parameters for caller
+    func_options_result=$func_run_hooks_result
+}
+
+
+# func_options_prep [ARG]...
+# --------------------------
+# All initialisations required before starting the option parse loop.
+# Note that when calling hook functions, we pass through the list of
+# positional parameters.  If a hook function modifies that list, and
+# needs to propogate that back to rest of this script, then the complete
+# modified list must be put in 'func_run_hooks_result' before
+# returning.
+func_hookable func_options_prep
+func_options_prep ()
+{
+    $debug_cmd
+
+    # Option defaults:
+    opt_verbose=false
+    opt_warning_types=
+
+    func_run_hooks func_options_prep ${1+"$@"}
+
+    # save modified positional parameters for caller
+    func_options_prep_result=$func_run_hooks_result
+}
+
+
+# func_parse_options [ARG]...
+# ---------------------------
+# The main option parsing loop.
+func_hookable func_parse_options
+func_parse_options ()
+{
+    $debug_cmd
+
+    func_parse_options_result=
+
+    # this just eases exit handling
+    while test $# -gt 0; do
+      # Defer to hook functions for initial option parsing, so they
+      # get priority in the event of reusing an option name.
+      func_run_hooks func_parse_options ${1+"$@"}
+
+      # Adjust func_parse_options positional parameters to match
+      eval set dummy "$func_run_hooks_result"; shift
+
+      # Break out of the loop if we already parsed every option.
+      test $# -gt 0 || break
+
+      _G_opt=$1
+      shift
+      case $_G_opt in
+        --debug|-x)   debug_cmd='set -x'
+                      func_echo "enabling shell trace mode"
+                      $debug_cmd
+                      ;;
+
+        --no-warnings|--no-warning|--no-warn)
+                      set dummy --warnings none ${1+"$@"}
+                      shift
+		      ;;
+
+        --warnings|--warning|-W)
+                      test $# = 0 && func_missing_arg $_G_opt && break
+                      case " $warning_categories $1" in
+                        *" $1 "*)
+                          # trailing space prevents matching last $1 above
+                          func_append_uniq opt_warning_types " $1"
+                          ;;
+                        *all)
+                          opt_warning_types=$warning_categories
+                          ;;
+                        *none)
+                          opt_warning_types=none
+                          warning_func=:
+                          ;;
+                        *error)
+                          opt_warning_types=$warning_categories
+                          warning_func=func_fatal_error
+                          ;;
+                        *)
+                          func_fatal_error \
+                             "unsupported warning category: '$1'"
+                          ;;
+                      esac
+                      shift
+                      ;;
+
+        --verbose|-v) opt_verbose=: ;;
+        --version)    func_version ;;
+        -\?|-h)       func_usage ;;
+        --help)       func_help ;;
+
+	# Separate optargs to long options (plugins may need this):
+	--*=*)        func_split_equals "$_G_opt"
+	              set dummy "$func_split_equals_lhs" \
+                          "$func_split_equals_rhs" ${1+"$@"}
+                      shift
+                      ;;
+
+       # Separate optargs to short options:
+        -W*)
+                      func_split_short_opt "$_G_opt"
+                      set dummy "$func_split_short_opt_name" \
+                          "$func_split_short_opt_arg" ${1+"$@"}
+                      shift
+                      ;;
+
+        # Separate non-argument short options:
+        -\?*|-h*|-v*|-x*)
+                      func_split_short_opt "$_G_opt"
+                      set dummy "$func_split_short_opt_name" \
+                          "-$func_split_short_opt_arg" ${1+"$@"}
+                      shift
+                      ;;
+
+        --)           break ;;
+        -*)           func_fatal_help "unrecognised option: '$_G_opt'" ;;
+        *)            set dummy "$_G_opt" ${1+"$@"}; shift; break ;;
+      esac
+    done
+
+    # save modified positional parameters for caller
+    func_quote_for_eval ${1+"$@"}
+    func_parse_options_result=$func_quote_for_eval_result
+}
+
+
+# func_validate_options [ARG]...
+# ------------------------------
+# Perform any sanity checks on option settings and/or unconsumed
+# arguments.
+func_hookable func_validate_options
+func_validate_options ()
+{
+    $debug_cmd
+
+    # Display all warnings if -W was not given.
+    test -n "$opt_warning_types" || opt_warning_types=" $warning_categories"
+
+    func_run_hooks func_validate_options ${1+"$@"}
+
+    # Bail if the options were screwed!
+    $exit_cmd $EXIT_FAILURE
+
+    # save modified positional parameters for caller
+    func_validate_options_result=$func_run_hooks_result
+}
+
+
+
+## ----------------- ##
+## Helper functions. ##
+## ----------------- ##
+
+# This section contains the helper functions used by the rest of the
+# hookable option parser framework in ascii-betical order.
+
+
+# func_fatal_help ARG...
+# ----------------------
+# Echo program name prefixed message to standard error, followed by
+# a help hint, and exit.
+func_fatal_help ()
+{
+    $debug_cmd
+
+    eval \$ECHO \""Usage: $usage"\"
+    eval \$ECHO \""$fatal_help"\"
+    func_error ${1+"$@"}
+    exit $EXIT_FAILURE
+}
+
+
+# func_help
+# ---------
+# Echo long help message to standard output and exit.
+func_help ()
+{
+    $debug_cmd
+
+    func_usage_message
+    $ECHO "$long_help_message"
+    exit 0
+}
+
+
+# func_missing_arg ARGNAME
+# ------------------------
+# Echo program name prefixed message to standard error and set global
+# exit_cmd.
+func_missing_arg ()
+{
+    $debug_cmd
+
+    func_error "Missing argument for '$1'."
+    exit_cmd=exit
 }
 
 
-# func_version
-# Echo version message to standard output and exit.
-func_version ()
-{
-    $opt_debug
+# func_split_equals STRING
+# ------------------------
+# Set func_split_equals_lhs and func_split_equals_rhs shell variables after
+# splitting STRING at the '=' sign.
+test -z "$_G_HAVE_XSI_OPS" \
+    && (eval 'x=a/b/c;
+      test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
+    && _G_HAVE_XSI_OPS=yes
+
+if test yes = "$_G_HAVE_XSI_OPS"
+then
+  # This is an XSI compatible shell, allowing a faster implementation...
+  eval 'func_split_equals ()
+  {
+      $debug_cmd
+
+      func_split_equals_lhs=${1%%=*}
+      func_split_equals_rhs=${1#*=}
+      test "x$func_split_equals_lhs" = "x$1" \
+        && func_split_equals_rhs=
+  }'
+else
+  # ...otherwise fall back to using expr, which is often a shell builtin.
+  func_split_equals ()
+  {
+      $debug_cmd
+
+      func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'`
+      func_split_equals_rhs=
+      test "x$func_split_equals_lhs" = "x$1" \
+        || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'`
+  }
+fi #func_split_equals
+
+
+# func_split_short_opt SHORTOPT
+# -----------------------------
+# Set func_split_short_opt_name and func_split_short_opt_arg shell
+# variables after splitting SHORTOPT after the 2nd character.
+if test yes = "$_G_HAVE_XSI_OPS"
+then
+  # This is an XSI compatible shell, allowing a faster implementation...
+  eval 'func_split_short_opt ()
+  {
+      $debug_cmd
+
+      func_split_short_opt_arg=${1#??}
+      func_split_short_opt_name=${1%"$func_split_short_opt_arg"}
+  }'
+else
+  # ...otherwise fall back to using expr, which is often a shell builtin.
+  func_split_short_opt ()
+  {
+      $debug_cmd
+
+      func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'`
+      func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'`
+  }
+fi #func_split_short_opt
 
-    $SED -n '/(C)/!b go
-	:more
-	/\./!{
-	  N
-	  s/\n# / /
-	  b more
-	}
-	:go
-	/^# '$PROGRAM' (GNU /,/# warranty; / {
-        s/^# //
-	s/^# *$//
-        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
-        p
-     }' < "$progpath"
-     exit $?
-}
 
 # func_usage
+# ----------
 # Echo short help message to standard output and exit.
 func_usage ()
 {
-    $opt_debug
+    $debug_cmd
 
-    $SED -n '/^# Usage:/,/^#  *.*--help/ {
-        s/^# //
-	s/^# *$//
-	s/\$progname/'$progname'/
-	p
-    }' < "$progpath"
-    echo
-    $ECHO "run \`$progname --help | more' for full usage"
-    exit $?
+    func_usage_message
+    $ECHO "Run '$progname --help |${PAGER-more}' for full usage"
+    exit 0
 }
 
-# func_help [NOEXIT]
-# Echo long help message to standard output and exit,
-# unless 'noexit' is passed as argument.
-func_help ()
-{
-    $opt_debug
-
-    $SED -n '/^# Usage:/,/# Report bugs to/ {
-	:print
-        s/^# //
-	s/^# *$//
-	s*\$progname*'$progname'*
-	s*\$host*'"$host"'*
-	s*\$SHELL*'"$SHELL"'*
-	s*\$LTCC*'"$LTCC"'*
-	s*\$LTCFLAGS*'"$LTCFLAGS"'*
-	s*\$LD*'"$LD"'*
-	s/\$with_gnu_ld/'"$with_gnu_ld"'/
-	s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
-	s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
-	p
-	d
-     }
-     /^# .* home page:/b print
-     /^# General help using/b print
-     ' < "$progpath"
-    ret=$?
-    if test -z "$1"; then
-      exit $ret
-    fi
-}
 
-# func_missing_arg argname
-# Echo program name prefixed message to standard error and set global
-# exit_cmd.
-func_missing_arg ()
+# func_usage_message
+# ------------------
+# Echo short help message to standard output.
+func_usage_message ()
 {
-    $opt_debug
+    $debug_cmd
 
-    func_error "missing argument for $1."
-    exit_cmd=exit
+    eval \$ECHO \""Usage: $usage"\"
+    echo
+    $SED -n 's|^# ||
+        /^Written by/{
+          x;p;x
+        }
+	h
+	/^Written by/q' < "$progpath"
+    echo
+    eval \$ECHO \""$usage_message"\"
 }
 
 
-# func_split_short_opt shortopt
-# Set func_split_short_opt_name and func_split_short_opt_arg shell
-# variables after splitting SHORTOPT after the 2nd character.
-func_split_short_opt ()
+# func_version
+# ------------
+# Echo version message to standard output and exit.
+func_version ()
 {
-    my_sed_short_opt='1s/^\(..\).*$/\1/;q'
-    my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
-
-    func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
-    func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
-} # func_split_short_opt may be replaced by extended shell implementation
-
+    $debug_cmd
 
-# func_split_long_opt longopt
-# Set func_split_long_opt_name and func_split_long_opt_arg shell
-# variables after splitting LONGOPT at the `=' sign.
-func_split_long_opt ()
-{
-    my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
-    my_sed_long_arg='1s/^--[^=]*=//'
+    printf '%s\n' "$progname $scriptversion"
+    $SED -n '
+        /(C)/!b go
+        :more
+        /\./!{
+          N
+          s|\n# | |
+          b more
+        }
+        :go
+        /^# Written by /,/# warranty; / {
+          s|^# ||
+          s|^# *$||
+          s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2|
+          p
+        }
+        /^# Written by / {
+          s|^# ||
+          p
+        }
+        /^warranty; /q' < "$progpath"
 
-    func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
-    func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
-} # func_split_long_opt may be replaced by extended shell implementation
+    exit $?
+}
 
-exit_cmd=:
 
+# Local variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC"
+# time-stamp-time-zone: "UTC"
+# End:
 
+# Set a version string.
+scriptversion='(GNU libtool) 2.4.6'
 
 
+# func_echo ARG...
+# ----------------
+# Libtool also displays the current mode in messages, so override
+# funclib.sh func_echo with this custom definition.
+func_echo ()
+{
+    $debug_cmd
 
-magic="%%%MAGIC variable%%%"
-magic_exe="%%%MAGIC EXE variable%%%"
+    _G_message=$*
 
-# Global variables.
-nonopt=
-preserve_args=
-lo2o="s/\\.lo\$/.${objext}/"
-o2lo="s/\\.${objext}\$/.lo/"
-extracted_archives=
-extracted_serial=0
+    func_echo_IFS=$IFS
+    IFS=$nl
+    for _G_line in $_G_message; do
+      IFS=$func_echo_IFS
+      $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line"
+    done
+    IFS=$func_echo_IFS
+}
 
-# If this variable is set in any of the actions, the command in it
-# will be execed at the end.  This prevents here-documents from being
-# left over by shells.
-exec_cmd=
 
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
+# func_warning ARG...
+# -------------------
+# Libtool warnings are not categorized, so override funclib.sh
+# func_warning with this simpler definition.
+func_warning ()
 {
-    eval "${1}=\$${1}\${2}"
-} # func_append may be replaced by extended shell implementation
+    $debug_cmd
+
+    $warning_func ${1+"$@"}
+}
 
-# func_append_quoted var value
-# Quote VALUE and append to the end of shell variable VAR, separated
-# by a space.
-func_append_quoted ()
-{
-    func_quote_for_eval "${2}"
-    eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
-} # func_append_quoted may be replaced by extended shell implementation
 
+## ---------------- ##
+## Options parsing. ##
+## ---------------- ##
+
+# Hook in the functions to make sure our own options are parsed during
+# the option parsing loop.
+
+usage='$progpath [OPTION]... [MODE-ARG]...'
+
+# Short help message in response to '-h'.
+usage_message="Options:
+       --config             show all configuration variables
+       --debug              enable verbose shell tracing
+   -n, --dry-run            display commands without modifying any files
+       --features           display basic configuration information and exit
+       --mode=MODE          use operation mode MODE
+       --no-warnings        equivalent to '-Wnone'
+       --preserve-dup-deps  don't remove duplicate dependency libraries
+       --quiet, --silent    don't print informational messages
+       --tag=TAG            use configuration variables from tag TAG
+   -v, --verbose            print more informational messages than default
+       --version            print version information
+   -W, --warnings=CATEGORY  report the warnings falling in CATEGORY [all]
+   -h, --help, --help-all   print short, long, or detailed help message
+"
 
-# func_arith arithmetic-term...
-func_arith ()
+# Additional text appended to 'usage_message' in response to '--help'.
+func_help ()
 {
-    func_arith_result=`expr "${@}"`
-} # func_arith may be replaced by extended shell implementation
+    $debug_cmd
+
+    func_usage_message
+    $ECHO "$long_help_message
+
+MODE must be one of the following:
+
+       clean           remove files from the build directory
+       compile         compile a source file into a libtool object
+       execute         automatically set library path, then run a program
+       finish          complete the installation of libtool libraries
+       install         install libraries or executables
+       link            create a library or an executable
+       uninstall       remove libraries from an installed directory
+
+MODE-ARGS vary depending on the MODE.  When passed as first option,
+'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that.
+Try '$progname --help --mode=MODE' for a more detailed description of MODE.
+
+When reporting a bug, please describe a test case to reproduce it and
+include the following information:
+
+       host-triplet:   $host
+       shell:          $SHELL
+       compiler:       $LTCC
+       compiler flags: $LTCFLAGS
+       linker:         $LD (gnu? $with_gnu_ld)
+       version:        $progname (GNU libtool) 2.4.6
+       automake:       `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
+       autoconf:       `($AUTOCONF --version) 2>/dev/null |$SED 1q`
+
+Report bugs to <bug-libtool at gnu.org>.
+GNU libtool home page: <http://www.gnu.org/s/libtool/>.
+General help using GNU software: <http://www.gnu.org/gethelp/>."
+    exit 0
+}
 
 
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
-{
-    func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
-} # func_len may be replaced by extended shell implementation
+# func_lo2o OBJECT-NAME
+# ---------------------
+# Transform OBJECT-NAME from a '.lo' suffix to the platform specific
+# object suffix.
 
+lo2o=s/\\.lo\$/.$objext/
+o2lo=s/\\.$objext\$/.lo/
 
-# func_lo2o object
-func_lo2o ()
-{
-    func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
-} # func_lo2o may be replaced by extended shell implementation
+if test yes = "$_G_HAVE_XSI_OPS"; then
+  eval 'func_lo2o ()
+  {
+    case $1 in
+      *.lo) func_lo2o_result=${1%.lo}.$objext ;;
+      *   ) func_lo2o_result=$1               ;;
+    esac
+  }'
 
+  # func_xform LIBOBJ-OR-SOURCE
+  # ---------------------------
+  # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise)
+  # suffix to a '.lo' libtool-object suffix.
+  eval 'func_xform ()
+  {
+    func_xform_result=${1%.*}.lo
+  }'
+else
+  # ...otherwise fall back to using sed.
+  func_lo2o ()
+  {
+    func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"`
+  }
 
-# func_xform libobj-or-source
-func_xform ()
-{
-    func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
-} # func_xform may be replaced by extended shell implementation
+  func_xform ()
+  {
+    func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'`
+  }
+fi
 
 
-# func_fatal_configuration arg...
+# func_fatal_configuration ARG...
+# -------------------------------
 # Echo program name prefixed message to standard error, followed by
 # a configuration failure hint, and exit.
 func_fatal_configuration ()
 {
-    func_error ${1+"$@"}
-    func_error "See the $PACKAGE documentation for more information."
-    func_fatal_error "Fatal configuration error."
+    func__fatal_error ${1+"$@"} \
+      "See the $PACKAGE documentation for more information." \
+      "Fatal configuration error."
 }
 
 
 # func_config
+# -----------
 # Display the configuration for all the tags in this script.
 func_config ()
 {
@@ -915,17 +2661,19 @@ func_config ()
     exit $?
 }
 
+
 # func_features
+# -------------
 # Display the features supported by this script.
 func_features ()
 {
     echo "host: $host"
-    if test "$build_libtool_libs" = yes; then
+    if test yes = "$build_libtool_libs"; then
       echo "enable shared libraries"
     else
       echo "disable shared libraries"
     fi
-    if test "$build_old_libs" = yes; then
+    if test yes = "$build_old_libs"; then
       echo "enable static libraries"
     else
       echo "disable static libraries"
@@ -934,314 +2682,350 @@ func_features ()
     exit $?
 }
 
-# func_enable_tag tagname
+
+# func_enable_tag TAGNAME
+# -----------------------
 # Verify that TAGNAME is valid, and either flag an error and exit, or
 # enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
 # variable here.
 func_enable_tag ()
 {
-  # Global variable:
-  tagname="$1"
+    # Global variable:
+    tagname=$1
 
-  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
-  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
-  sed_extractcf="/$re_begincf/,/$re_endcf/p"
+    re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
+    re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
+    sed_extractcf=/$re_begincf/,/$re_endcf/p
 
-  # Validate tagname.
-  case $tagname in
-    *[!-_A-Za-z0-9,/]*)
-      func_fatal_error "invalid tag name: $tagname"
-      ;;
-  esac
+    # Validate tagname.
+    case $tagname in
+      *[!-_A-Za-z0-9,/]*)
+        func_fatal_error "invalid tag name: $tagname"
+        ;;
+    esac
 
-  # Don't test for the "default" C tag, as we know it's
-  # there but not specially marked.
-  case $tagname in
-    CC) ;;
+    # Don't test for the "default" C tag, as we know it's
+    # there but not specially marked.
+    case $tagname in
+        CC) ;;
     *)
-      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
-	taglist="$taglist $tagname"
-
-	# Evaluate the configuration.  Be careful to quote the path
-	# and the sed script, to avoid splitting on whitespace, but
-	# also don't use non-portable quotes within backquotes within
-	# quotes we have to do it in 2 steps:
-	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
-	eval "$extractedcf"
-      else
-	func_error "ignoring unknown tag $tagname"
-      fi
-      ;;
-  esac
+        if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
+	  taglist="$taglist $tagname"
+
+	  # Evaluate the configuration.  Be careful to quote the path
+	  # and the sed script, to avoid splitting on whitespace, but
+	  # also don't use non-portable quotes within backquotes within
+	  # quotes we have to do it in 2 steps:
+	  extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
+	  eval "$extractedcf"
+        else
+	  func_error "ignoring unknown tag $tagname"
+        fi
+        ;;
+    esac
 }
 
+
 # func_check_version_match
+# ------------------------
 # Ensure that we are using m4 macros, and libtool script from the same
 # release of libtool.
 func_check_version_match ()
 {
-  if test "$package_revision" != "$macro_revision"; then
-    if test "$VERSION" != "$macro_version"; then
-      if test -z "$macro_version"; then
-        cat >&2 <<_LT_EOF
+    if test "$package_revision" != "$macro_revision"; then
+      if test "$VERSION" != "$macro_version"; then
+        if test -z "$macro_version"; then
+          cat >&2 <<_LT_EOF
 $progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
 $progname: definition of this LT_INIT comes from an older release.
 $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
 $progname: and run autoconf again.
 _LT_EOF
-      else
-        cat >&2 <<_LT_EOF
+        else
+          cat >&2 <<_LT_EOF
 $progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
 $progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
 $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
 $progname: and run autoconf again.
 _LT_EOF
-      fi
-    else
-      cat >&2 <<_LT_EOF
+        fi
+      else
+        cat >&2 <<_LT_EOF
 $progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
 $progname: but the definition of this LT_INIT comes from revision $macro_revision.
 $progname: You should recreate aclocal.m4 with macros from revision $package_revision
 $progname: of $PACKAGE $VERSION and run autoconf again.
 _LT_EOF
-    fi
+      fi
 
-    exit $EXIT_MISMATCH
-  fi
+      exit $EXIT_MISMATCH
+    fi
 }
 
 
-# Shorthand for --mode=foo, only valid as the first argument
-case $1 in
-clean|clea|cle|cl)
-  shift; set dummy --mode clean ${1+"$@"}; shift
-  ;;
-compile|compil|compi|comp|com|co|c)
-  shift; set dummy --mode compile ${1+"$@"}; shift
-  ;;
-execute|execut|execu|exec|exe|ex|e)
-  shift; set dummy --mode execute ${1+"$@"}; shift
-  ;;
-finish|finis|fini|fin|fi|f)
-  shift; set dummy --mode finish ${1+"$@"}; shift
-  ;;
-install|instal|insta|inst|ins|in|i)
-  shift; set dummy --mode install ${1+"$@"}; shift
-  ;;
-link|lin|li|l)
-  shift; set dummy --mode link ${1+"$@"}; shift
-  ;;
-uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
-  shift; set dummy --mode uninstall ${1+"$@"}; shift
-  ;;
-esac
+# libtool_options_prep [ARG]...
+# -----------------------------
+# Preparation for options parsed by libtool.
+libtool_options_prep ()
+{
+    $debug_mode
 
+    # Option defaults:
+    opt_config=false
+    opt_dlopen=
+    opt_dry_run=false
+    opt_help=false
+    opt_mode=
+    opt_preserve_dup_deps=false
+    opt_quiet=false
 
+    nonopt=
+    preserve_args=
 
-# Option defaults:
-opt_debug=:
-opt_dry_run=false
-opt_config=false
-opt_preserve_dup_deps=false
-opt_features=false
-opt_finish=false
-opt_help=false
-opt_help_all=false
-opt_silent=:
-opt_warning=:
-opt_verbose=:
-opt_silent=false
-opt_verbose=false
+    # Shorthand for --mode=foo, only valid as the first argument
+    case $1 in
+    clean|clea|cle|cl)
+      shift; set dummy --mode clean ${1+"$@"}; shift
+      ;;
+    compile|compil|compi|comp|com|co|c)
+      shift; set dummy --mode compile ${1+"$@"}; shift
+      ;;
+    execute|execut|execu|exec|exe|ex|e)
+      shift; set dummy --mode execute ${1+"$@"}; shift
+      ;;
+    finish|finis|fini|fin|fi|f)
+      shift; set dummy --mode finish ${1+"$@"}; shift
+      ;;
+    install|instal|insta|inst|ins|in|i)
+      shift; set dummy --mode install ${1+"$@"}; shift
+      ;;
+    link|lin|li|l)
+      shift; set dummy --mode link ${1+"$@"}; shift
+      ;;
+    uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
+      shift; set dummy --mode uninstall ${1+"$@"}; shift
+      ;;
+    esac
+
+    # Pass back the list of options.
+    func_quote_for_eval ${1+"$@"}
+    libtool_options_prep_result=$func_quote_for_eval_result
+}
+func_add_hook func_options_prep libtool_options_prep
 
 
-# Parse options once, thoroughly.  This comes as soon as possible in the
-# script to make things like `--version' happen as quickly as we can.
+# libtool_parse_options [ARG]...
+# ---------------------------------
+# Provide handling for libtool specific options.
+libtool_parse_options ()
 {
-  # this just eases exit handling
-  while test $# -gt 0; do
-    opt="$1"
-    shift
-    case $opt in
-      --debug|-x)	opt_debug='set -x'
-			func_echo "enabling shell trace mode"
-			$opt_debug
-			;;
-      --dry-run|--dryrun|-n)
-			opt_dry_run=:
-			;;
-      --config)
-			opt_config=:
-func_config
-			;;
-      --dlopen|-dlopen)
-			optarg="$1"
-			opt_dlopen="${opt_dlopen+$opt_dlopen
-}$optarg"
-			shift
-			;;
-      --preserve-dup-deps)
-			opt_preserve_dup_deps=:
-			;;
-      --features)
-			opt_features=:
-func_features
-			;;
-      --finish)
-			opt_finish=:
-set dummy --mode finish ${1+"$@"}; shift
-			;;
-      --help)
-			opt_help=:
-			;;
-      --help-all)
-			opt_help_all=:
-opt_help=': help-all'
-			;;
-      --mode)
-			test $# = 0 && func_missing_arg $opt && break
-			optarg="$1"
-			opt_mode="$optarg"
-case $optarg in
-  # Valid mode arguments:
-  clean|compile|execute|finish|install|link|relink|uninstall) ;;
-
-  # Catch anything else as an error
-  *) func_error "invalid argument for $opt"
-     exit_cmd=exit
-     break
-     ;;
-esac
-			shift
-			;;
-      --no-silent|--no-quiet)
-			opt_silent=false
-func_append preserve_args " $opt"
-			;;
-      --no-warning|--no-warn)
-			opt_warning=false
-func_append preserve_args " $opt"
-			;;
-      --no-verbose)
-			opt_verbose=false
-func_append preserve_args " $opt"
-			;;
-      --silent|--quiet)
-			opt_silent=:
-func_append preserve_args " $opt"
-        opt_verbose=false
-			;;
-      --verbose|-v)
-			opt_verbose=:
-func_append preserve_args " $opt"
-opt_silent=false
-			;;
-      --tag)
-			test $# = 0 && func_missing_arg $opt && break
-			optarg="$1"
-			opt_tag="$optarg"
-func_append preserve_args " $opt $optarg"
-func_enable_tag "$optarg"
-			shift
-			;;
-
-      -\?|-h)		func_usage				;;
-      --help)		func_help				;;
-      --version)	func_version				;;
-
-      # Separate optargs to long options:
-      --*=*)
-			func_split_long_opt "$opt"
-			set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
-			shift
-			;;
-
-      # Separate non-argument short options:
-      -\?*|-h*|-n*|-v*)
-			func_split_short_opt "$opt"
-			set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
-			shift
-			;;
-
-      --)		break					;;
-      -*)		func_fatal_help "unrecognized option \`$opt'" ;;
-      *)		set dummy "$opt" ${1+"$@"};	shift; break  ;;
-    esac
-  done
+    $debug_cmd
 
-  # Validate options:
+    # Perform our own loop to consume as many options as possible in
+    # each iteration.
+    while test $# -gt 0; do
+      _G_opt=$1
+      shift
+      case $_G_opt in
+        --dry-run|--dryrun|-n)
+                        opt_dry_run=:
+                        ;;
+
+        --config)       func_config ;;
+
+        --dlopen|-dlopen)
+                        opt_dlopen="${opt_dlopen+$opt_dlopen
+}$1"
+                        shift
+                        ;;
+
+        --preserve-dup-deps)
+                        opt_preserve_dup_deps=: ;;
+
+        --features)     func_features ;;
+
+        --finish)       set dummy --mode finish ${1+"$@"}; shift ;;
+
+        --help)         opt_help=: ;;
+
+        --help-all)     opt_help=': help-all' ;;
+
+        --mode)         test $# = 0 && func_missing_arg $_G_opt && break
+                        opt_mode=$1
+                        case $1 in
+                          # Valid mode arguments:
+                          clean|compile|execute|finish|install|link|relink|uninstall) ;;
+
+                          # Catch anything else as an error
+                          *) func_error "invalid argument for $_G_opt"
+                             exit_cmd=exit
+                             break
+                             ;;
+                        esac
+                        shift
+                        ;;
+
+        --no-silent|--no-quiet)
+                        opt_quiet=false
+                        func_append preserve_args " $_G_opt"
+                        ;;
+
+        --no-warnings|--no-warning|--no-warn)
+                        opt_warning=false
+                        func_append preserve_args " $_G_opt"
+                        ;;
+
+        --no-verbose)
+                        opt_verbose=false
+                        func_append preserve_args " $_G_opt"
+                        ;;
+
+        --silent|--quiet)
+                        opt_quiet=:
+                        opt_verbose=false
+                        func_append preserve_args " $_G_opt"
+                        ;;
+
+        --tag)          test $# = 0 && func_missing_arg $_G_opt && break
+                        opt_tag=$1
+                        func_append preserve_args " $_G_opt $1"
+                        func_enable_tag "$1"
+                        shift
+                        ;;
+
+        --verbose|-v)   opt_quiet=false
+                        opt_verbose=:
+                        func_append preserve_args " $_G_opt"
+                        ;;
+
+	# An option not handled by this hook function:
+        *)		set dummy "$_G_opt" ${1+"$@"};	shift; break  ;;
+      esac
+    done
 
-  # save first non-option argument
-  if test "$#" -gt 0; then
-    nonopt="$opt"
-    shift
-  fi
 
-  # preserve --debug
-  test "$opt_debug" = : || func_append preserve_args " --debug"
+    # save modified positional parameters for caller
+    func_quote_for_eval ${1+"$@"}
+    libtool_parse_options_result=$func_quote_for_eval_result
+}
+func_add_hook func_parse_options libtool_parse_options
 
-  case $host in
-    *cygwin* | *mingw* | *pw32* | *cegcc*)
-      # don't eliminate duplications in $postdeps and $predeps
-      opt_duplicate_compiler_generated_deps=:
-      ;;
-    *)
-      opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
-      ;;
-  esac
 
-  $opt_help || {
-    # Sanity checks first:
-    func_check_version_match
 
-    if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
-      func_fatal_configuration "not configured to build any kind of library"
+# libtool_validate_options [ARG]...
+# ---------------------------------
+# Perform any sanity checks on option settings and/or unconsumed
+# arguments.
+libtool_validate_options ()
+{
+    # save first non-option argument
+    if test 0 -lt $#; then
+      nonopt=$1
+      shift
     fi
 
-    # Darwin sucks
-    eval std_shrext=\"$shrext_cmds\"
+    # preserve --debug
+    test : = "$debug_cmd" || func_append preserve_args " --debug"
 
-    # Only execute mode is allowed to have -dlopen flags.
-    if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
-      func_error "unrecognized option \`-dlopen'"
-      $ECHO "$help" 1>&2
-      exit $EXIT_FAILURE
-    fi
+    case $host in
+      # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452
+      # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788
+      *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*)
+        # don't eliminate duplications in $postdeps and $predeps
+        opt_duplicate_compiler_generated_deps=:
+        ;;
+      *)
+        opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
+        ;;
+    esac
 
-    # Change the help message to a mode-specific one.
-    generic_help="$help"
-    help="Try \`$progname --help --mode=$opt_mode' for more information."
-  }
+    $opt_help || {
+      # Sanity checks first:
+      func_check_version_match
+
+      test yes != "$build_libtool_libs" \
+        && test yes != "$build_old_libs" \
+        && func_fatal_configuration "not configured to build any kind of library"
 
+      # Darwin sucks
+      eval std_shrext=\"$shrext_cmds\"
+
+      # Only execute mode is allowed to have -dlopen flags.
+      if test -n "$opt_dlopen" && test execute != "$opt_mode"; then
+        func_error "unrecognized option '-dlopen'"
+        $ECHO "$help" 1>&2
+        exit $EXIT_FAILURE
+      fi
+
+      # Change the help message to a mode-specific one.
+      generic_help=$help
+      help="Try '$progname --help --mode=$opt_mode' for more information."
+    }
 
-  # Bail if the options were screwed
-  $exit_cmd $EXIT_FAILURE
+    # Pass back the unparsed argument list
+    func_quote_for_eval ${1+"$@"}
+    libtool_validate_options_result=$func_quote_for_eval_result
 }
+func_add_hook func_validate_options libtool_validate_options
 
 
+# Process options as early as possible so that --help and --version
+# can return quickly.
+func_options ${1+"$@"}
+eval set dummy "$func_options_result"; shift
+
 
 
 ## ----------- ##
 ##    Main.    ##
 ## ----------- ##
 
+magic='%%%MAGIC variable%%%'
+magic_exe='%%%MAGIC EXE variable%%%'
+
+# Global variables.
+extracted_archives=
+extracted_serial=0
+
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end.  This prevents here-documents from being
+# left over by shells.
+exec_cmd=
+
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+
+# func_generated_by_libtool
+# True iff stdin has been generated by Libtool. This function is only
+# a basic sanity check; it will hardly flush out determined imposters.
+func_generated_by_libtool_p ()
+{
+  $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
+}
+
 # func_lalib_p file
-# True iff FILE is a libtool `.la' library or `.lo' object file.
+# True iff FILE is a libtool '.la' library or '.lo' object file.
 # This function is only a basic sanity check; it will hardly flush out
 # determined imposters.
 func_lalib_p ()
 {
     test -f "$1" &&
-      $SED -e 4q "$1" 2>/dev/null \
-        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
+      $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p
 }
 
 # func_lalib_unsafe_p file
-# True iff FILE is a libtool `.la' library or `.lo' object file.
+# True iff FILE is a libtool '.la' library or '.lo' object file.
 # This function implements the same check as func_lalib_p without
 # resorting to external programs.  To this end, it redirects stdin and
 # closes it afterwards, without saving the original file descriptor.
 # As a safety measure, use it only where a negative result would be
-# fatal anyway.  Works if `file' does not exist.
+# fatal anyway.  Works if 'file' does not exist.
 func_lalib_unsafe_p ()
 {
     lalib_p=no
@@ -1249,13 +3033,13 @@ func_lalib_unsafe_p ()
 	for lalib_p_l in 1 2 3 4
 	do
 	    read lalib_p_line
-	    case "$lalib_p_line" in
+	    case $lalib_p_line in
 		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
 	    esac
 	done
 	exec 0<&5 5<&-
     fi
-    test "$lalib_p" = yes
+    test yes = "$lalib_p"
 }
 
 # func_ltwrapper_script_p file
@@ -1264,7 +3048,8 @@ func_lalib_unsafe_p ()
 # determined imposters.
 func_ltwrapper_script_p ()
 {
-    func_lalib_p "$1"
+    test -f "$1" &&
+      $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p
 }
 
 # func_ltwrapper_executable_p file
@@ -1289,7 +3074,7 @@ func_ltwrapper_scriptname ()
 {
     func_dirname_and_basename "$1" "" "."
     func_stripname '' '.exe' "$func_basename_result"
-    func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
+    func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper
 }
 
 # func_ltwrapper_p file
@@ -1308,11 +3093,13 @@ func_ltwrapper_p ()
 # FAIL_CMD may read-access the current command in variable CMD!
 func_execute_cmds ()
 {
-    $opt_debug
+    $debug_cmd
+
     save_ifs=$IFS; IFS='~'
     for cmd in $1; do
-      IFS=$save_ifs
+      IFS=$sp$nl
       eval cmd=\"$cmd\"
+      IFS=$save_ifs
       func_show_eval "$cmd" "${2-:}"
     done
     IFS=$save_ifs
@@ -1324,10 +3111,11 @@ func_execute_cmds ()
 # Note that it is not necessary on cygwin/mingw to append a dot to
 # FILE even if both FILE and FILE.exe exist: automatic-append-.exe
 # behavior happens only for exec(3), not for open(2)!  Also, sourcing
-# `FILE.' does not work on cygwin managed mounts.
+# 'FILE.' does not work on cygwin managed mounts.
 func_source ()
 {
-    $opt_debug
+    $debug_cmd
+
     case $1 in
     */* | *\\*)	. "$1" ;;
     *)		. "./$1" ;;
@@ -1354,10 +3142,10 @@ func_resolve_sysroot ()
 # store the result into func_replace_sysroot_result.
 func_replace_sysroot ()
 {
-  case "$lt_sysroot:$1" in
+  case $lt_sysroot:$1 in
   ?*:"$lt_sysroot"*)
     func_stripname "$lt_sysroot" '' "$1"
-    func_replace_sysroot_result="=$func_stripname_result"
+    func_replace_sysroot_result='='$func_stripname_result
     ;;
   *)
     # Including no sysroot.
@@ -1374,7 +3162,8 @@ func_replace_sysroot ()
 # arg is usually of the form 'gcc ...'
 func_infer_tag ()
 {
-    $opt_debug
+    $debug_cmd
+
     if test -n "$available_tags" && test -z "$tagname"; then
       CC_quoted=
       for arg in $CC; do
@@ -1393,7 +3182,7 @@ func_infer_tag ()
 	for z in $available_tags; do
 	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
 	    # Evaluate the configuration.
-	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
+	    eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
 	    CC_quoted=
 	    for arg in $CC; do
 	      # Double-quote args containing other shell metacharacters.
@@ -1418,7 +3207,7 @@ func_infer_tag ()
 	# line option must be used.
 	if test -z "$tagname"; then
 	  func_echo "unable to infer tagged configuration"
-	  func_fatal_error "specify a tag with \`--tag'"
+	  func_fatal_error "specify a tag with '--tag'"
 #	else
 #	  func_verbose "using $tagname tagged configuration"
 	fi
@@ -1434,15 +3223,15 @@ func_infer_tag ()
 # but don't create it if we're doing a dry run.
 func_write_libtool_object ()
 {
-    write_libobj=${1}
-    if test "$build_libtool_libs" = yes; then
-      write_lobj=\'${2}\'
+    write_libobj=$1
+    if test yes = "$build_libtool_libs"; then
+      write_lobj=\'$2\'
     else
       write_lobj=none
     fi
 
-    if test "$build_old_libs" = yes; then
-      write_oldobj=\'${3}\'
+    if test yes = "$build_old_libs"; then
+      write_oldobj=\'$3\'
     else
       write_oldobj=none
     fi
@@ -1450,7 +3239,7 @@ func_write_libtool_object ()
     $opt_dry_run || {
       cat >${write_libobj}T <<EOF
 # $write_libobj - a libtool object file
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
 #
 # Please DO NOT delete this file!
 # It is necessary for linking the library.
@@ -1462,7 +3251,7 @@ pic_object=$write_lobj
 non_pic_object=$write_oldobj
 
 EOF
-      $MV "${write_libobj}T" "${write_libobj}"
+      $MV "${write_libobj}T" "$write_libobj"
     }
 }
 
@@ -1482,8 +3271,9 @@ EOF
 # be empty on error (or when ARG is empty)
 func_convert_core_file_wine_to_w32 ()
 {
-  $opt_debug
-  func_convert_core_file_wine_to_w32_result="$1"
+  $debug_cmd
+
+  func_convert_core_file_wine_to_w32_result=$1
   if test -n "$1"; then
     # Unfortunately, winepath does not exit with a non-zero error code, so we
     # are forced to check the contents of stdout. On the other hand, if the
@@ -1491,9 +3281,9 @@ func_convert_core_file_wine_to_w32 ()
     # *an error message* to stdout. So we must check for both error code of
     # zero AND non-empty stdout, which explains the odd construction:
     func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
-    if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
+    if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then
       func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
-        $SED -e "$lt_sed_naive_backslashify"`
+        $SED -e "$sed_naive_backslashify"`
     else
       func_convert_core_file_wine_to_w32_result=
     fi
@@ -1514,18 +3304,19 @@ func_convert_core_file_wine_to_w32 ()
 # are convertible, then the result may be empty.
 func_convert_core_path_wine_to_w32 ()
 {
-  $opt_debug
+  $debug_cmd
+
   # unfortunately, winepath doesn't convert paths, only file names
-  func_convert_core_path_wine_to_w32_result=""
+  func_convert_core_path_wine_to_w32_result=
   if test -n "$1"; then
     oldIFS=$IFS
     IFS=:
     for func_convert_core_path_wine_to_w32_f in $1; do
       IFS=$oldIFS
       func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
-      if test -n "$func_convert_core_file_wine_to_w32_result" ; then
+      if test -n "$func_convert_core_file_wine_to_w32_result"; then
         if test -z "$func_convert_core_path_wine_to_w32_result"; then
-          func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
+          func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result
         else
           func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
         fi
@@ -1554,7 +3345,8 @@ func_convert_core_path_wine_to_w32 ()
 # environment variable; do not put it in $PATH.
 func_cygpath ()
 {
-  $opt_debug
+  $debug_cmd
+
   if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
     func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
     if test "$?" -ne 0; then
@@ -1563,7 +3355,7 @@ func_cygpath ()
     fi
   else
     func_cygpath_result=
-    func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
+    func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'"
   fi
 }
 #end: func_cygpath
@@ -1574,10 +3366,11 @@ func_cygpath ()
 # result in func_convert_core_msys_to_w32_result.
 func_convert_core_msys_to_w32 ()
 {
-  $opt_debug
+  $debug_cmd
+
   # awkward: cmd appends spaces to result
   func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
-    $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
+    $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"`
 }
 #end: func_convert_core_msys_to_w32
 
@@ -1588,13 +3381,14 @@ func_convert_core_msys_to_w32 ()
 # func_to_host_file_result to ARG1).
 func_convert_file_check ()
 {
-  $opt_debug
-  if test -z "$2" && test -n "$1" ; then
+  $debug_cmd
+
+  if test -z "$2" && test -n "$1"; then
     func_error "Could not determine host file name corresponding to"
-    func_error "  \`$1'"
+    func_error "  '$1'"
     func_error "Continuing, but uninstalled executables may not work."
     # Fallback:
-    func_to_host_file_result="$1"
+    func_to_host_file_result=$1
   fi
 }
 # end func_convert_file_check
@@ -1606,10 +3400,11 @@ func_convert_file_check ()
 # func_to_host_file_result to a simplistic fallback value (see below).
 func_convert_path_check ()
 {
-  $opt_debug
+  $debug_cmd
+
   if test -z "$4" && test -n "$3"; then
     func_error "Could not determine the host path corresponding to"
-    func_error "  \`$3'"
+    func_error "  '$3'"
     func_error "Continuing, but uninstalled executables may not work."
     # Fallback.  This is a deliberately simplistic "conversion" and
     # should not be "improved".  See libtool.info.
@@ -1618,7 +3413,7 @@ func_convert_path_check ()
       func_to_host_path_result=`echo "$3" |
         $SED -e "$lt_replace_pathsep_chars"`
     else
-      func_to_host_path_result="$3"
+      func_to_host_path_result=$3
     fi
   fi
 }
@@ -1630,9 +3425,10 @@ func_convert_path_check ()
 # and appending REPL if ORIG matches BACKPAT.
 func_convert_path_front_back_pathsep ()
 {
-  $opt_debug
+  $debug_cmd
+
   case $4 in
-  $1 ) func_to_host_path_result="$3$func_to_host_path_result"
+  $1 ) func_to_host_path_result=$3$func_to_host_path_result
     ;;
   esac
   case $4 in
@@ -1646,7 +3442,7 @@ func_convert_path_front_back_pathsep ()
 ##################################################
 # $build to $host FILE NAME CONVERSION FUNCTIONS #
 ##################################################
-# invoked via `$to_host_file_cmd ARG'
+# invoked via '$to_host_file_cmd ARG'
 #
 # In each case, ARG is the path to be converted from $build to $host format.
 # Result will be available in $func_to_host_file_result.
@@ -1657,7 +3453,8 @@ func_convert_path_front_back_pathsep ()
 # in func_to_host_file_result.
 func_to_host_file ()
 {
-  $opt_debug
+  $debug_cmd
+
   $to_host_file_cmd "$1"
 }
 # end func_to_host_file
@@ -1669,7 +3466,8 @@ func_to_host_file ()
 # in (the comma separated) LAZY, no conversion takes place.
 func_to_tool_file ()
 {
-  $opt_debug
+  $debug_cmd
+
   case ,$2, in
     *,"$to_tool_file_cmd",*)
       func_to_tool_file_result=$1
@@ -1687,7 +3485,7 @@ func_to_tool_file ()
 # Copy ARG to func_to_host_file_result.
 func_convert_file_noop ()
 {
-  func_to_host_file_result="$1"
+  func_to_host_file_result=$1
 }
 # end func_convert_file_noop
 
@@ -1698,11 +3496,12 @@ func_convert_file_noop ()
 # func_to_host_file_result.
 func_convert_file_msys_to_w32 ()
 {
-  $opt_debug
-  func_to_host_file_result="$1"
+  $debug_cmd
+
+  func_to_host_file_result=$1
   if test -n "$1"; then
     func_convert_core_msys_to_w32 "$1"
-    func_to_host_file_result="$func_convert_core_msys_to_w32_result"
+    func_to_host_file_result=$func_convert_core_msys_to_w32_result
   fi
   func_convert_file_check "$1" "$func_to_host_file_result"
 }
@@ -1714,8 +3513,9 @@ func_convert_file_msys_to_w32 ()
 # func_to_host_file_result.
 func_convert_file_cygwin_to_w32 ()
 {
-  $opt_debug
-  func_to_host_file_result="$1"
+  $debug_cmd
+
+  func_to_host_file_result=$1
   if test -n "$1"; then
     # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
     # LT_CYGPATH in this case.
@@ -1731,11 +3531,12 @@ func_convert_file_cygwin_to_w32 ()
 # and a working winepath. Returns result in func_to_host_file_result.
 func_convert_file_nix_to_w32 ()
 {
-  $opt_debug
-  func_to_host_file_result="$1"
+  $debug_cmd
+
+  func_to_host_file_result=$1
   if test -n "$1"; then
     func_convert_core_file_wine_to_w32 "$1"
-    func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
+    func_to_host_file_result=$func_convert_core_file_wine_to_w32_result
   fi
   func_convert_file_check "$1" "$func_to_host_file_result"
 }
@@ -1747,12 +3548,13 @@ func_convert_file_nix_to_w32 ()
 # Returns result in func_to_host_file_result.
 func_convert_file_msys_to_cygwin ()
 {
-  $opt_debug
-  func_to_host_file_result="$1"
+  $debug_cmd
+
+  func_to_host_file_result=$1
   if test -n "$1"; then
     func_convert_core_msys_to_w32 "$1"
     func_cygpath -u "$func_convert_core_msys_to_w32_result"
-    func_to_host_file_result="$func_cygpath_result"
+    func_to_host_file_result=$func_cygpath_result
   fi
   func_convert_file_check "$1" "$func_to_host_file_result"
 }
@@ -1765,13 +3567,14 @@ func_convert_file_msys_to_cygwin ()
 # in func_to_host_file_result.
 func_convert_file_nix_to_cygwin ()
 {
-  $opt_debug
-  func_to_host_file_result="$1"
+  $debug_cmd
+
+  func_to_host_file_result=$1
   if test -n "$1"; then
     # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
     func_convert_core_file_wine_to_w32 "$1"
     func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
-    func_to_host_file_result="$func_cygpath_result"
+    func_to_host_file_result=$func_cygpath_result
   fi
   func_convert_file_check "$1" "$func_to_host_file_result"
 }
@@ -1781,7 +3584,7 @@ func_convert_file_nix_to_cygwin ()
 #############################################
 # $build to $host PATH CONVERSION FUNCTIONS #
 #############################################
-# invoked via `$to_host_path_cmd ARG'
+# invoked via '$to_host_path_cmd ARG'
 #
 # In each case, ARG is the path to be converted from $build to $host format.
 # The result will be available in $func_to_host_path_result.
@@ -1805,10 +3608,11 @@ func_convert_file_nix_to_cygwin ()
 to_host_path_cmd=
 func_init_to_host_path_cmd ()
 {
-  $opt_debug
+  $debug_cmd
+
   if test -z "$to_host_path_cmd"; then
     func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
-    to_host_path_cmd="func_convert_path_${func_stripname_result}"
+    to_host_path_cmd=func_convert_path_$func_stripname_result
   fi
 }
 
@@ -1818,7 +3622,8 @@ func_init_to_host_path_cmd ()
 # in func_to_host_path_result.
 func_to_host_path ()
 {
-  $opt_debug
+  $debug_cmd
+
   func_init_to_host_path_cmd
   $to_host_path_cmd "$1"
 }
@@ -1829,7 +3634,7 @@ func_to_host_path ()
 # Copy ARG to func_to_host_path_result.
 func_convert_path_noop ()
 {
-  func_to_host_path_result="$1"
+  func_to_host_path_result=$1
 }
 # end func_convert_path_noop
 
@@ -1840,8 +3645,9 @@ func_convert_path_noop ()
 # func_to_host_path_result.
 func_convert_path_msys_to_w32 ()
 {
-  $opt_debug
-  func_to_host_path_result="$1"
+  $debug_cmd
+
+  func_to_host_path_result=$1
   if test -n "$1"; then
     # Remove leading and trailing path separator characters from ARG.  MSYS
     # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
@@ -1849,7 +3655,7 @@ func_convert_path_msys_to_w32 ()
     func_stripname : : "$1"
     func_to_host_path_tmp1=$func_stripname_result
     func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
-    func_to_host_path_result="$func_convert_core_msys_to_w32_result"
+    func_to_host_path_result=$func_convert_core_msys_to_w32_result
     func_convert_path_check : ";" \
       "$func_to_host_path_tmp1" "$func_to_host_path_result"
     func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
@@ -1863,8 +3669,9 @@ func_convert_path_msys_to_w32 ()
 # func_to_host_file_result.
 func_convert_path_cygwin_to_w32 ()
 {
-  $opt_debug
-  func_to_host_path_result="$1"
+  $debug_cmd
+
+  func_to_host_path_result=$1
   if test -n "$1"; then
     # See func_convert_path_msys_to_w32:
     func_stripname : : "$1"
@@ -1883,14 +3690,15 @@ func_convert_path_cygwin_to_w32 ()
 # a working winepath.  Returns result in func_to_host_file_result.
 func_convert_path_nix_to_w32 ()
 {
-  $opt_debug
-  func_to_host_path_result="$1"
+  $debug_cmd
+
+  func_to_host_path_result=$1
   if test -n "$1"; then
     # See func_convert_path_msys_to_w32:
     func_stripname : : "$1"
     func_to_host_path_tmp1=$func_stripname_result
     func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
-    func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
+    func_to_host_path_result=$func_convert_core_path_wine_to_w32_result
     func_convert_path_check : ";" \
       "$func_to_host_path_tmp1" "$func_to_host_path_result"
     func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
@@ -1904,15 +3712,16 @@ func_convert_path_nix_to_w32 ()
 # Returns result in func_to_host_file_result.
 func_convert_path_msys_to_cygwin ()
 {
-  $opt_debug
-  func_to_host_path_result="$1"
+  $debug_cmd
+
+  func_to_host_path_result=$1
   if test -n "$1"; then
     # See func_convert_path_msys_to_w32:
     func_stripname : : "$1"
     func_to_host_path_tmp1=$func_stripname_result
     func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
     func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
-    func_to_host_path_result="$func_cygpath_result"
+    func_to_host_path_result=$func_cygpath_result
     func_convert_path_check : : \
       "$func_to_host_path_tmp1" "$func_to_host_path_result"
     func_convert_path_front_back_pathsep ":*" "*:" : "$1"
@@ -1927,8 +3736,9 @@ func_convert_path_msys_to_cygwin ()
 # func_to_host_file_result.
 func_convert_path_nix_to_cygwin ()
 {
-  $opt_debug
-  func_to_host_path_result="$1"
+  $debug_cmd
+
+  func_to_host_path_result=$1
   if test -n "$1"; then
     # Remove leading and trailing path separator characters from
     # ARG. msys behavior is inconsistent here, cygpath turns them
@@ -1937,7 +3747,7 @@ func_convert_path_nix_to_cygwin ()
     func_to_host_path_tmp1=$func_stripname_result
     func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
     func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
-    func_to_host_path_result="$func_cygpath_result"
+    func_to_host_path_result=$func_cygpath_result
     func_convert_path_check : : \
       "$func_to_host_path_tmp1" "$func_to_host_path_result"
     func_convert_path_front_back_pathsep ":*" "*:" : "$1"
@@ -1946,13 +3756,31 @@ func_convert_path_nix_to_cygwin ()
 # end func_convert_path_nix_to_cygwin
 
 
+# func_dll_def_p FILE
+# True iff FILE is a Windows DLL '.def' file.
+# Keep in sync with _LT_DLL_DEF_P in libtool.m4
+func_dll_def_p ()
+{
+  $debug_cmd
+
+  func_dll_def_p_tmp=`$SED -n \
+    -e 's/^[	 ]*//' \
+    -e '/^\(;.*\)*$/d' \
+    -e 's/^\(EXPORTS\|LIBRARY\)\([	 ].*\)*$/DEF/p' \
+    -e q \
+    "$1"`
+  test DEF = "$func_dll_def_p_tmp"
+}
+
+
 # func_mode_compile arg...
 func_mode_compile ()
 {
-    $opt_debug
+    $debug_cmd
+
     # Get the compilation command and the source file.
     base_compile=
-    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
+    srcfile=$nonopt  #  always keep a non-empty value in "srcfile"
     suppress_opt=yes
     suppress_output=
     arg_mode=normal
@@ -1965,12 +3793,12 @@ func_mode_compile ()
       case $arg_mode in
       arg  )
 	# do not "continue".  Instead, add this to base_compile
-	lastarg="$arg"
+	lastarg=$arg
 	arg_mode=normal
 	;;
 
       target )
-	libobj="$arg"
+	libobj=$arg
 	arg_mode=normal
 	continue
 	;;
@@ -1980,7 +3808,7 @@ func_mode_compile ()
 	case $arg in
 	-o)
 	  test -n "$libobj" && \
-	    func_fatal_error "you cannot specify \`-o' more than once"
+	    func_fatal_error "you cannot specify '-o' more than once"
 	  arg_mode=target
 	  continue
 	  ;;
@@ -2009,12 +3837,12 @@ func_mode_compile ()
 	  func_stripname '-Wc,' '' "$arg"
 	  args=$func_stripname_result
 	  lastarg=
-	  save_ifs="$IFS"; IFS=','
+	  save_ifs=$IFS; IFS=,
 	  for arg in $args; do
-	    IFS="$save_ifs"
+	    IFS=$save_ifs
 	    func_append_quoted lastarg "$arg"
 	  done
-	  IFS="$save_ifs"
+	  IFS=$save_ifs
 	  func_stripname ' ' '' "$lastarg"
 	  lastarg=$func_stripname_result
 
@@ -2027,8 +3855,8 @@ func_mode_compile ()
 	  # Accept the current argument as the source file.
 	  # The previous "srcfile" becomes the current argument.
 	  #
-	  lastarg="$srcfile"
-	  srcfile="$arg"
+	  lastarg=$srcfile
+	  srcfile=$arg
 	  ;;
 	esac  #  case $arg
 	;;
@@ -2043,13 +3871,13 @@ func_mode_compile ()
       func_fatal_error "you must specify an argument for -Xcompile"
       ;;
     target)
-      func_fatal_error "you must specify a target with \`-o'"
+      func_fatal_error "you must specify a target with '-o'"
       ;;
     *)
       # Get the name of the library object.
       test -z "$libobj" && {
 	func_basename "$srcfile"
-	libobj="$func_basename_result"
+	libobj=$func_basename_result
       }
       ;;
     esac
@@ -2069,7 +3897,7 @@ func_mode_compile ()
     case $libobj in
     *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
     *)
-      func_fatal_error "cannot determine name of library object from \`$libobj'"
+      func_fatal_error "cannot determine name of library object from '$libobj'"
       ;;
     esac
 
@@ -2078,8 +3906,8 @@ func_mode_compile ()
     for arg in $later; do
       case $arg in
       -shared)
-	test "$build_libtool_libs" != yes && \
-	  func_fatal_configuration "can not build a shared library"
+	test yes = "$build_libtool_libs" \
+	  || func_fatal_configuration "cannot build a shared library"
 	build_old_libs=no
 	continue
 	;;
@@ -2105,17 +3933,17 @@ func_mode_compile ()
     func_quote_for_eval "$libobj"
     test "X$libobj" != "X$func_quote_for_eval_result" \
       && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
-      && func_warning "libobj name \`$libobj' may not contain shell special characters."
+      && func_warning "libobj name '$libobj' may not contain shell special characters."
     func_dirname_and_basename "$obj" "/" ""
-    objname="$func_basename_result"
-    xdir="$func_dirname_result"
-    lobj=${xdir}$objdir/$objname
+    objname=$func_basename_result
+    xdir=$func_dirname_result
+    lobj=$xdir$objdir/$objname
 
     test -z "$base_compile" && \
       func_fatal_help "you must specify a compilation command"
 
     # Delete any leftover library objects.
-    if test "$build_old_libs" = yes; then
+    if test yes = "$build_old_libs"; then
       removelist="$obj $lobj $libobj ${libobj}T"
     else
       removelist="$lobj $libobj ${libobj}T"
@@ -2127,16 +3955,16 @@ func_mode_compile ()
       pic_mode=default
       ;;
     esac
-    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
+    if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then
       # non-PIC code in shared libraries is not supported
       pic_mode=default
     fi
 
     # Calculate the filename of the output object if compiler does
     # not support -o with -c
-    if test "$compiler_c_o" = no; then
-      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
-      lockfile="$output_obj.lock"
+    if test no = "$compiler_c_o"; then
+      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext
+      lockfile=$output_obj.lock
     else
       output_obj=
       need_locks=no
@@ -2145,12 +3973,12 @@ func_mode_compile ()
 
     # Lock this critical section if it is needed
     # We use this script file to make the link, it avoids creating a new file
-    if test "$need_locks" = yes; then
+    if test yes = "$need_locks"; then
       until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
 	func_echo "Waiting for $lockfile to be removed"
 	sleep 2
       done
-    elif test "$need_locks" = warn; then
+    elif test warn = "$need_locks"; then
       if test -f "$lockfile"; then
 	$ECHO "\
 *** ERROR, $lockfile exists and contains:
@@ -2158,7 +3986,7 @@ func_mode_compile ()
 
 This indicates that another process is trying to use the same
 temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together.  If you
+your compiler does not support '-c' and '-o' together.  If you
 repeat this compilation, it may succeed, by chance, but you had better
 avoid parallel builds (make -j) in this platform, or get a better
 compiler."
@@ -2180,11 +4008,11 @@ compiler."
     qsrcfile=$func_quote_for_eval_result
 
     # Only build a PIC object if we are building libtool libraries.
-    if test "$build_libtool_libs" = yes; then
+    if test yes = "$build_libtool_libs"; then
       # Without this assignment, base_compile gets emptied.
       fbsd_hideous_sh_bug=$base_compile
 
-      if test "$pic_mode" != no; then
+      if test no != "$pic_mode"; then
 	command="$base_compile $qsrcfile $pic_flag"
       else
 	# Don't build PIC code
@@ -2201,7 +4029,7 @@ compiler."
       func_show_eval_locale "$command"	\
           'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
 
-      if test "$need_locks" = warn &&
+      if test warn = "$need_locks" &&
 	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
 	$ECHO "\
 *** ERROR, $lockfile contains:
@@ -2212,7 +4040,7 @@ $srcfile
 
 This indicates that another process is trying to use the same
 temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together.  If you
+your compiler does not support '-c' and '-o' together.  If you
 repeat this compilation, it may succeed, by chance, but you had better
 avoid parallel builds (make -j) in this platform, or get a better
 compiler."
@@ -2228,20 +4056,20 @@ compiler."
       fi
 
       # Allow error messages only from the first compilation.
-      if test "$suppress_opt" = yes; then
+      if test yes = "$suppress_opt"; then
 	suppress_output=' >/dev/null 2>&1'
       fi
     fi
 
     # Only build a position-dependent object if we build old libraries.
-    if test "$build_old_libs" = yes; then
-      if test "$pic_mode" != yes; then
+    if test yes = "$build_old_libs"; then
+      if test yes != "$pic_mode"; then
 	# Don't build PIC code
 	command="$base_compile $qsrcfile$pie_flag"
       else
 	command="$base_compile $qsrcfile $pic_flag"
       fi
-      if test "$compiler_c_o" = yes; then
+      if test yes = "$compiler_c_o"; then
 	func_append command " -o $obj"
       fi
 
@@ -2250,7 +4078,7 @@ compiler."
       func_show_eval_locale "$command" \
         '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
 
-      if test "$need_locks" = warn &&
+      if test warn = "$need_locks" &&
 	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
 	$ECHO "\
 *** ERROR, $lockfile contains:
@@ -2261,7 +4089,7 @@ $srcfile
 
 This indicates that another process is trying to use the same
 temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together.  If you
+your compiler does not support '-c' and '-o' together.  If you
 repeat this compilation, it may succeed, by chance, but you had better
 avoid parallel builds (make -j) in this platform, or get a better
 compiler."
@@ -2281,7 +4109,7 @@ compiler."
       func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
 
       # Unlock the critical section if it was locked
-      if test "$need_locks" != no; then
+      if test no != "$need_locks"; then
 	removelist=$lockfile
         $RM "$lockfile"
       fi
@@ -2291,7 +4119,7 @@ compiler."
 }
 
 $opt_help || {
-  test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
+  test compile = "$opt_mode" && func_mode_compile ${1+"$@"}
 }
 
 func_mode_help ()
@@ -2311,7 +4139,7 @@ func_mode_help ()
 Remove files from the build directory.
 
 RM is the name of the program to use to delete files associated with each FILE
-(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+(typically '/bin/rm').  RM-OPTIONS are options (such as '-f') to be passed
 to RM.
 
 If FILE is a libtool library, object or program, all the files associated
@@ -2330,16 +4158,16 @@ This mode accepts the following additional options:
   -no-suppress      do not suppress compiler output for multiple passes
   -prefer-pic       try to build PIC objects only
   -prefer-non-pic   try to build non-PIC objects only
-  -shared           do not build a \`.o' file suitable for static linking
-  -static           only build a \`.o' file suitable for static linking
+  -shared           do not build a '.o' file suitable for static linking
+  -static           only build a '.o' file suitable for static linking
   -Wc,FLAG          pass FLAG directly to the compiler
 
-COMPILE-COMMAND is a command to be used in creating a \`standard' object file
+COMPILE-COMMAND is a command to be used in creating a 'standard' object file
 from the given SOURCEFILE.
 
 The output file name is determined by removing the directory component from
-SOURCEFILE, then substituting the C source code suffix \`.c' with the
-library object suffix, \`.lo'."
+SOURCEFILE, then substituting the C source code suffix '.c' with the
+library object suffix, '.lo'."
         ;;
 
       execute)
@@ -2352,7 +4180,7 @@ This mode accepts the following additional options:
 
   -dlopen FILE      add the directory containing FILE to the library path
 
-This mode sets the library path environment variable according to \`-dlopen'
+This mode sets the library path environment variable according to '-dlopen'
 flags.
 
 If any of the ARGS are libtool executable wrappers, then they are translated
@@ -2371,7 +4199,7 @@ Complete the installation of libtool libraries.
 Each LIBDIR is a directory that contains libtool libraries.
 
 The commands that this mode executes may require superuser privileges.  Use
-the \`--dry-run' option if you just want to see what would be executed."
+the '--dry-run' option if you just want to see what would be executed."
         ;;
 
       install)
@@ -2381,7 +4209,7 @@ the \`--dry-run' option if you just want to see what would be executed."
 Install executables or libraries.
 
 INSTALL-COMMAND is the installation command.  The first component should be
-either the \`install' or \`cp' program.
+either the 'install' or 'cp' program.
 
 The following components of INSTALL-COMMAND are treated specially:
 
@@ -2407,7 +4235,7 @@ The following components of LINK-COMMAND are treated specially:
   -avoid-version    do not add a version suffix if possible
   -bindir BINDIR    specify path to binaries directory (for systems where
                     libraries must be found in the PATH setting at runtime)
-  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
+  -dlopen FILE      '-dlpreopen' FILE if it cannot be dlopened at runtime
   -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
   -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
   -export-symbols SYMFILE
@@ -2421,7 +4249,8 @@ The following components of LINK-COMMAND are treated specially:
   -no-install       link a not-installable executable
   -no-undefined     declare that a library does not refer to external symbols
   -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
-  -objectlist FILE  Use a list of object files found in FILE to specify objects
+  -objectlist FILE  use a list of object files found in FILE to specify objects
+  -os2dllname NAME  force a short DLL name on OS/2 (no effect on other OSes)
   -precious-files-regex REGEX
                     don't remove output files matching REGEX
   -release RELEASE  specify package release information
@@ -2441,20 +4270,20 @@ The following components of LINK-COMMAND are treated specially:
   -Xlinker FLAG     pass linker-specific FLAG directly to the linker
   -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
 
-All other options (arguments beginning with \`-') are ignored.
+All other options (arguments beginning with '-') are ignored.
 
-Every other argument is treated as a filename.  Files ending in \`.la' are
+Every other argument is treated as a filename.  Files ending in '.la' are
 treated as uninstalled libtool libraries, other files are standard or library
 object files.
 
-If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
-only library objects (\`.lo' files) may be specified, and \`-rpath' is
+If the OUTPUT-FILE ends in '.la', then a libtool library is created,
+only library objects ('.lo' files) may be specified, and '-rpath' is
 required, except when creating a convenience library.
 
-If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
-using \`ar' and \`ranlib', or on Windows using \`lib'.
+If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created
+using 'ar' and 'ranlib', or on Windows using 'lib'.
 
-If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
+If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file
 is created, otherwise an executable program is created."
         ;;
 
@@ -2465,7 +4294,7 @@ is created, otherwise an executable program is created."
 Remove libraries from an installation directory.
 
 RM is the name of the program to use to delete files associated with each FILE
-(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+(typically '/bin/rm').  RM-OPTIONS are options (such as '-f') to be passed
 to RM.
 
 If FILE is a libtool library, all the files associated with it are deleted.
@@ -2473,17 +4302,17 @@ Otherwise, only FILE itself is deleted using RM."
         ;;
 
       *)
-        func_fatal_help "invalid operation mode \`$opt_mode'"
+        func_fatal_help "invalid operation mode '$opt_mode'"
         ;;
     esac
 
     echo
-    $ECHO "Try \`$progname --help' for more information about other modes."
+    $ECHO "Try '$progname --help' for more information about other modes."
 }
 
 # Now that we've collected a possible --mode arg, show help if necessary
 if $opt_help; then
-  if test "$opt_help" = :; then
+  if test : = "$opt_help"; then
     func_mode_help
   else
     {
@@ -2491,7 +4320,7 @@ if $opt_help; then
       for opt_mode in compile link execute install finish uninstall clean; do
 	func_mode_help
       done
-    } | sed -n '1p; 2,$s/^Usage:/  or: /p'
+    } | $SED -n '1p; 2,$s/^Usage:/  or: /p'
     {
       func_help noexit
       for opt_mode in compile link execute install finish uninstall clean; do
@@ -2499,7 +4328,7 @@ if $opt_help; then
 	func_mode_help
       done
     } |
-    sed '1d
+    $SED '1d
       /^When reporting/,/^Report/{
 	H
 	d
@@ -2516,16 +4345,17 @@ fi
 # func_mode_execute arg...
 func_mode_execute ()
 {
-    $opt_debug
+    $debug_cmd
+
     # The first argument is the command name.
-    cmd="$nonopt"
+    cmd=$nonopt
     test -z "$cmd" && \
       func_fatal_help "you must specify a COMMAND"
 
     # Handle -dlopen flags immediately.
     for file in $opt_dlopen; do
       test -f "$file" \
-	|| func_fatal_help "\`$file' is not a file"
+	|| func_fatal_help "'$file' is not a file"
 
       dir=
       case $file in
@@ -2535,7 +4365,7 @@ func_mode_execute ()
 
 	# Check to see that this really is a libtool archive.
 	func_lalib_unsafe_p "$file" \
-	  || func_fatal_help "\`$lib' is not a valid libtool archive"
+	  || func_fatal_help "'$lib' is not a valid libtool archive"
 
 	# Read the libtool library.
 	dlname=
@@ -2546,18 +4376,18 @@ func_mode_execute ()
 	if test -z "$dlname"; then
 	  # Warn if it was a shared library.
 	  test -n "$library_names" && \
-	    func_warning "\`$file' was not linked with \`-export-dynamic'"
+	    func_warning "'$file' was not linked with '-export-dynamic'"
 	  continue
 	fi
 
 	func_dirname "$file" "" "."
-	dir="$func_dirname_result"
+	dir=$func_dirname_result
 
 	if test -f "$dir/$objdir/$dlname"; then
 	  func_append dir "/$objdir"
 	else
 	  if test ! -f "$dir/$dlname"; then
-	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
+	    func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'"
 	  fi
 	fi
 	;;
@@ -2565,18 +4395,18 @@ func_mode_execute ()
       *.lo)
 	# Just add the directory containing the .lo file.
 	func_dirname "$file" "" "."
-	dir="$func_dirname_result"
+	dir=$func_dirname_result
 	;;
 
       *)
-	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
+	func_warning "'-dlopen' is ignored for non-libtool libraries and objects"
 	continue
 	;;
       esac
 
       # Get the absolute pathname.
       absdir=`cd "$dir" && pwd`
-      test -n "$absdir" && dir="$absdir"
+      test -n "$absdir" && dir=$absdir
 
       # Now add the directory to shlibpath_var.
       if eval "test -z \"\$$shlibpath_var\""; then
@@ -2588,7 +4418,7 @@ func_mode_execute ()
 
     # This variable tells wrapper scripts just to set shlibpath_var
     # rather than running their programs.
-    libtool_execute_magic="$magic"
+    libtool_execute_magic=$magic
 
     # Check if any of the arguments is a wrapper script.
     args=
@@ -2601,12 +4431,12 @@ func_mode_execute ()
 	if func_ltwrapper_script_p "$file"; then
 	  func_source "$file"
 	  # Transform arg to wrapped name.
-	  file="$progdir/$program"
+	  file=$progdir/$program
 	elif func_ltwrapper_executable_p "$file"; then
 	  func_ltwrapper_scriptname "$file"
 	  func_source "$func_ltwrapper_scriptname_result"
 	  # Transform arg to wrapped name.
-	  file="$progdir/$program"
+	  file=$progdir/$program
 	fi
 	;;
       esac
@@ -2614,7 +4444,15 @@ func_mode_execute ()
       func_append_quoted args "$file"
     done
 
-    if test "X$opt_dry_run" = Xfalse; then
+    if $opt_dry_run; then
+      # Display what would be done.
+      if test -n "$shlibpath_var"; then
+	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
+	echo "export $shlibpath_var"
+      fi
+      $ECHO "$cmd$args"
+      exit $EXIT_SUCCESS
+    else
       if test -n "$shlibpath_var"; then
 	# Export the shlibpath_var.
 	eval "export $shlibpath_var"
@@ -2631,25 +4469,18 @@ func_mode_execute ()
       done
 
       # Now prepare to actually exec the command.
-      exec_cmd="\$cmd$args"
-    else
-      # Display what would be done.
-      if test -n "$shlibpath_var"; then
-	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
-	echo "export $shlibpath_var"
-      fi
-      $ECHO "$cmd$args"
-      exit $EXIT_SUCCESS
+      exec_cmd=\$cmd$args
     fi
 }
 
-test "$opt_mode" = execute && func_mode_execute ${1+"$@"}
+test execute = "$opt_mode" && func_mode_execute ${1+"$@"}
 
 
 # func_mode_finish arg...
 func_mode_finish ()
 {
-    $opt_debug
+    $debug_cmd
+
     libs=
     libdirs=
     admincmds=
@@ -2663,11 +4494,11 @@ func_mode_finish ()
 	if func_lalib_unsafe_p "$opt"; then
 	  func_append libs " $opt"
 	else
-	  func_warning "\`$opt' is not a valid libtool archive"
+	  func_warning "'$opt' is not a valid libtool archive"
 	fi
 
       else
-	func_fatal_error "invalid argument \`$opt'"
+	func_fatal_error "invalid argument '$opt'"
       fi
     done
 
@@ -2682,12 +4513,12 @@ func_mode_finish ()
       # Remove sysroot references
       if $opt_dry_run; then
         for lib in $libs; do
-          echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
+          echo "removing references to $lt_sysroot and '=' prefixes from $lib"
         done
       else
         tmpdir=`func_mktempdir`
         for lib in $libs; do
-	  sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
+	  $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
 	    > $tmpdir/tmp-la
 	  mv -f $tmpdir/tmp-la $lib
 	done
@@ -2712,7 +4543,7 @@ func_mode_finish ()
     fi
 
     # Exit here if they wanted silent mode.
-    $opt_silent && exit $EXIT_SUCCESS
+    $opt_quiet && exit $EXIT_SUCCESS
 
     if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
       echo "----------------------------------------------------------------------"
@@ -2723,27 +4554,27 @@ func_mode_finish ()
       echo
       echo "If you ever happen to want to link against installed libraries"
       echo "in a given directory, LIBDIR, you must either use libtool, and"
-      echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
+      echo "specify the full pathname of the library, or use the '-LLIBDIR'"
       echo "flag during linking and do at least one of the following:"
       if test -n "$shlibpath_var"; then
-	echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
+	echo "   - add LIBDIR to the '$shlibpath_var' environment variable"
 	echo "     during execution"
       fi
       if test -n "$runpath_var"; then
-	echo "   - add LIBDIR to the \`$runpath_var' environment variable"
+	echo "   - add LIBDIR to the '$runpath_var' environment variable"
 	echo "     during linking"
       fi
       if test -n "$hardcode_libdir_flag_spec"; then
 	libdir=LIBDIR
 	eval flag=\"$hardcode_libdir_flag_spec\"
 
-	$ECHO "   - use the \`$flag' linker flag"
+	$ECHO "   - use the '$flag' linker flag"
       fi
       if test -n "$admincmds"; then
 	$ECHO "   - have your system administrator run these commands:$admincmds"
       fi
       if test -f /etc/ld.so.conf; then
-	echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
+	echo "   - have your system administrator add LIBDIR to '/etc/ld.so.conf'"
       fi
       echo
 
@@ -2762,18 +4593,20 @@ func_mode_finish ()
     exit $EXIT_SUCCESS
 }
 
-test "$opt_mode" = finish && func_mode_finish ${1+"$@"}
+test finish = "$opt_mode" && func_mode_finish ${1+"$@"}
 
 
 # func_mode_install arg...
 func_mode_install ()
 {
-    $opt_debug
+    $debug_cmd
+
     # There may be an optional sh(1) argument at the beginning of
     # install_prog (especially on Windows NT).
-    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+    if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" ||
        # Allow the use of GNU shtool's install command.
-       case $nonopt in *shtool*) :;; *) false;; esac; then
+       case $nonopt in *shtool*) :;; *) false;; esac
+    then
       # Aesthetically quote it.
       func_quote_for_eval "$nonopt"
       install_prog="$func_quote_for_eval_result "
@@ -2800,7 +4633,7 @@ func_mode_install ()
     opts=
     prev=
     install_type=
-    isdir=no
+    isdir=false
     stripme=
     no_mode=:
     for arg
@@ -2813,7 +4646,7 @@ func_mode_install ()
       fi
 
       case $arg in
-      -d) isdir=yes ;;
+      -d) isdir=: ;;
       -f)
 	if $install_cp; then :; else
 	  prev=$arg
@@ -2831,7 +4664,7 @@ func_mode_install ()
       *)
 	# If the previous option needed an argument, then skip it.
 	if test -n "$prev"; then
-	  if test "x$prev" = x-m && test -n "$install_override_mode"; then
+	  if test X-m = "X$prev" && test -n "$install_override_mode"; then
 	    arg2=$install_override_mode
 	    no_mode=false
 	  fi
@@ -2856,7 +4689,7 @@ func_mode_install ()
       func_fatal_help "you must specify an install program"
 
     test -n "$prev" && \
-      func_fatal_help "the \`$prev' option requires an argument"
+      func_fatal_help "the '$prev' option requires an argument"
 
     if test -n "$install_override_mode" && $no_mode; then
       if $install_cp; then :; else
@@ -2878,19 +4711,19 @@ func_mode_install ()
     dest=$func_stripname_result
 
     # Check to see that the destination is a directory.
-    test -d "$dest" && isdir=yes
-    if test "$isdir" = yes; then
-      destdir="$dest"
+    test -d "$dest" && isdir=:
+    if $isdir; then
+      destdir=$dest
       destname=
     else
       func_dirname_and_basename "$dest" "" "."
-      destdir="$func_dirname_result"
-      destname="$func_basename_result"
+      destdir=$func_dirname_result
+      destname=$func_basename_result
 
       # Not a directory, so check to see that there is only one file specified.
       set dummy $files; shift
       test "$#" -gt 1 && \
-	func_fatal_help "\`$dest' is not a directory"
+	func_fatal_help "'$dest' is not a directory"
     fi
     case $destdir in
     [\\/]* | [A-Za-z]:[\\/]*) ;;
@@ -2899,7 +4732,7 @@ func_mode_install ()
 	case $file in
 	*.lo) ;;
 	*)
-	  func_fatal_help "\`$destdir' must be an absolute directory name"
+	  func_fatal_help "'$destdir' must be an absolute directory name"
 	  ;;
 	esac
       done
@@ -2908,7 +4741,7 @@ func_mode_install ()
 
     # This variable tells wrapper scripts just to set variables rather
     # than running their programs.
-    libtool_install_magic="$magic"
+    libtool_install_magic=$magic
 
     staticlibs=
     future_libdirs=
@@ -2928,7 +4761,7 @@ func_mode_install ()
 
 	# Check to see that this really is a libtool archive.
 	func_lalib_unsafe_p "$file" \
-	  || func_fatal_help "\`$file' is not a valid libtool archive"
+	  || func_fatal_help "'$file' is not a valid libtool archive"
 
 	library_names=
 	old_library=
@@ -2950,7 +4783,7 @@ func_mode_install ()
 	fi
 
 	func_dirname "$file" "/" ""
-	dir="$func_dirname_result"
+	dir=$func_dirname_result
 	func_append dir "$objdir"
 
 	if test -n "$relink_command"; then
@@ -2964,7 +4797,7 @@ func_mode_install ()
 	  # are installed into $libdir/../bin (currently, that works fine)
 	  # but it's something to keep an eye on.
 	  test "$inst_prefix_dir" = "$destdir" && \
-	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
+	    func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir"
 
 	  if test -n "$inst_prefix_dir"; then
 	    # Stick the inst_prefix_dir data into the link command.
@@ -2973,29 +4806,36 @@ func_mode_install ()
 	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
 	  fi
 
-	  func_warning "relinking \`$file'"
+	  func_warning "relinking '$file'"
 	  func_show_eval "$relink_command" \
-	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
+	    'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"'
 	fi
 
 	# See the names of the shared library.
 	set dummy $library_names; shift
 	if test -n "$1"; then
-	  realname="$1"
+	  realname=$1
 	  shift
 
-	  srcname="$realname"
-	  test -n "$relink_command" && srcname="$realname"T
+	  srcname=$realname
+	  test -n "$relink_command" && srcname=${realname}T
 
 	  # Install the shared library and build the symlinks.
 	  func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
 	      'exit $?'
-	  tstripme="$stripme"
+	  tstripme=$stripme
 	  case $host_os in
 	  cygwin* | mingw* | pw32* | cegcc*)
 	    case $realname in
 	    *.dll.a)
-	      tstripme=""
+	      tstripme=
+	      ;;
+	    esac
+	    ;;
+	  os2*)
+	    case $realname in
+	    *_dll.a)
+	      tstripme=
 	      ;;
 	    esac
 	    ;;
@@ -3006,7 +4846,7 @@ func_mode_install ()
 
 	  if test "$#" -gt 0; then
 	    # Delete the old symlinks, and create new ones.
-	    # Try `ln -sf' first, because the `ln' binary might depend on
+	    # Try 'ln -sf' first, because the 'ln' binary might depend on
 	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
 	    # so we also need to try rm && ln -s.
 	    for linkname
@@ -3017,14 +4857,14 @@ func_mode_install ()
 	  fi
 
 	  # Do each command in the postinstall commands.
-	  lib="$destdir/$realname"
+	  lib=$destdir/$realname
 	  func_execute_cmds "$postinstall_cmds" 'exit $?'
 	fi
 
 	# Install the pseudo-library for information purposes.
 	func_basename "$file"
-	name="$func_basename_result"
-	instname="$dir/$name"i
+	name=$func_basename_result
+	instname=$dir/${name}i
 	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
 
 	# Maybe install the static library, too.
@@ -3036,11 +4876,11 @@ func_mode_install ()
 
 	# Figure out destination file name, if it wasn't already specified.
 	if test -n "$destname"; then
-	  destfile="$destdir/$destname"
+	  destfile=$destdir/$destname
 	else
 	  func_basename "$file"
-	  destfile="$func_basename_result"
-	  destfile="$destdir/$destfile"
+	  destfile=$func_basename_result
+	  destfile=$destdir/$destfile
 	fi
 
 	# Deduce the name of the destination old-style object file.
@@ -3050,11 +4890,11 @@ func_mode_install ()
 	  staticdest=$func_lo2o_result
 	  ;;
 	*.$objext)
-	  staticdest="$destfile"
+	  staticdest=$destfile
 	  destfile=
 	  ;;
 	*)
-	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
+	  func_fatal_help "cannot copy a libtool object to '$destfile'"
 	  ;;
 	esac
 
@@ -3063,7 +4903,7 @@ func_mode_install ()
 	  func_show_eval "$install_prog $file $destfile" 'exit $?'
 
 	# Install the old object if enabled.
-	if test "$build_old_libs" = yes; then
+	if test yes = "$build_old_libs"; then
 	  # Deduce the name of the old-style object file.
 	  func_lo2o "$file"
 	  staticobj=$func_lo2o_result
@@ -3075,23 +4915,23 @@ func_mode_install ()
       *)
 	# Figure out destination file name, if it wasn't already specified.
 	if test -n "$destname"; then
-	  destfile="$destdir/$destname"
+	  destfile=$destdir/$destname
 	else
 	  func_basename "$file"
-	  destfile="$func_basename_result"
-	  destfile="$destdir/$destfile"
+	  destfile=$func_basename_result
+	  destfile=$destdir/$destfile
 	fi
 
 	# If the file is missing, and there is a .exe on the end, strip it
 	# because it is most likely a libtool script we actually want to
 	# install
-	stripped_ext=""
+	stripped_ext=
 	case $file in
 	  *.exe)
 	    if test ! -f "$file"; then
 	      func_stripname '' '.exe' "$file"
 	      file=$func_stripname_result
-	      stripped_ext=".exe"
+	      stripped_ext=.exe
 	    fi
 	    ;;
 	esac
@@ -3119,19 +4959,19 @@ func_mode_install ()
 
 	  # Check the variables that should have been set.
 	  test -z "$generated_by_libtool_version" && \
-	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
+	    func_fatal_error "invalid libtool wrapper script '$wrapper'"
 
-	  finalize=yes
+	  finalize=:
 	  for lib in $notinst_deplibs; do
 	    # Check to see that each library is installed.
 	    libdir=
 	    if test -f "$lib"; then
 	      func_source "$lib"
 	    fi
-	    libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
+	    libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'`
 	    if test -n "$libdir" && test ! -f "$libfile"; then
-	      func_warning "\`$lib' has not been installed in \`$libdir'"
-	      finalize=no
+	      func_warning "'$lib' has not been installed in '$libdir'"
+	      finalize=false
 	    fi
 	  done
 
@@ -3139,29 +4979,29 @@ func_mode_install ()
 	  func_source "$wrapper"
 
 	  outputname=
-	  if test "$fast_install" = no && test -n "$relink_command"; then
+	  if test no = "$fast_install" && test -n "$relink_command"; then
 	    $opt_dry_run || {
-	      if test "$finalize" = yes; then
+	      if $finalize; then
 	        tmpdir=`func_mktempdir`
 		func_basename "$file$stripped_ext"
-		file="$func_basename_result"
-	        outputname="$tmpdir/$file"
+		file=$func_basename_result
+	        outputname=$tmpdir/$file
 	        # Replace the output file specification.
 	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
 
-	        $opt_silent || {
+	        $opt_quiet || {
 	          func_quote_for_expand "$relink_command"
 		  eval "func_echo $func_quote_for_expand_result"
 	        }
 	        if eval "$relink_command"; then :
 	          else
-		  func_error "error: relink \`$file' with the above command before installing it"
+		  func_error "error: relink '$file' with the above command before installing it"
 		  $opt_dry_run || ${RM}r "$tmpdir"
 		  continue
 	        fi
-	        file="$outputname"
+	        file=$outputname
 	      else
-	        func_warning "cannot relink \`$file'"
+	        func_warning "cannot relink '$file'"
 	      fi
 	    }
 	  else
@@ -3198,10 +5038,10 @@ func_mode_install ()
 
     for file in $staticlibs; do
       func_basename "$file"
-      name="$func_basename_result"
+      name=$func_basename_result
 
       # Set up the ranlib parameters.
-      oldlib="$destdir/$name"
+      oldlib=$destdir/$name
       func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
       tool_oldlib=$func_to_tool_file_result
 
@@ -3216,18 +5056,18 @@ func_mode_install ()
     done
 
     test -n "$future_libdirs" && \
-      func_warning "remember to run \`$progname --finish$future_libdirs'"
+      func_warning "remember to run '$progname --finish$future_libdirs'"
 
     if test -n "$current_libdirs"; then
       # Maybe just do a dry run.
       $opt_dry_run && current_libdirs=" -n$current_libdirs"
-      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
+      exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs'
     else
       exit $EXIT_SUCCESS
     fi
 }
 
-test "$opt_mode" = install && func_mode_install ${1+"$@"}
+test install = "$opt_mode" && func_mode_install ${1+"$@"}
 
 
 # func_generate_dlsyms outputname originator pic_p
@@ -3235,16 +5075,17 @@ test "$opt_mode" = install && func_mode_install ${1+"$@"}
 # a dlpreopen symbol table.
 func_generate_dlsyms ()
 {
-    $opt_debug
-    my_outputname="$1"
-    my_originator="$2"
-    my_pic_p="${3-no}"
-    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
+    $debug_cmd
+
+    my_outputname=$1
+    my_originator=$2
+    my_pic_p=${3-false}
+    my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'`
     my_dlsyms=
 
-    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+    if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
       if test -n "$NM" && test -n "$global_symbol_pipe"; then
-	my_dlsyms="${my_outputname}S.c"
+	my_dlsyms=${my_outputname}S.c
       else
 	func_error "not configured to extract global symbols from dlpreopened files"
       fi
@@ -3255,7 +5096,7 @@ func_generate_dlsyms ()
       "") ;;
       *.c)
 	# Discover the nlist of each of the dlfiles.
-	nlist="$output_objdir/${my_outputname}.nm"
+	nlist=$output_objdir/$my_outputname.nm
 
 	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
 
@@ -3263,34 +5104,36 @@ func_generate_dlsyms ()
 	func_verbose "creating $output_objdir/$my_dlsyms"
 
 	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
-/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
-/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
+/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */
+/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */
 
 #ifdef __cplusplus
 extern \"C\" {
 #endif
 
-#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
+#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
 #pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
 #endif
 
 /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
-#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-/* DATA imports from DLLs on WIN32 con't be const, because runtime
+#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
+/* DATA imports from DLLs on WIN32 can't be const, because runtime
    relocations are performed -- see ld's documentation on pseudo-relocs.  */
 # define LT_DLSYM_CONST
-#elif defined(__osf__)
+#elif defined __osf__
 /* This system does not cope well with relocations in const data.  */
 # define LT_DLSYM_CONST
 #else
 # define LT_DLSYM_CONST const
 #endif
 
+#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0)
+
 /* External symbol declarations for the compiler. */\
 "
 
-	if test "$dlself" = yes; then
-	  func_verbose "generating symbol list for \`$output'"
+	if test yes = "$dlself"; then
+	  func_verbose "generating symbol list for '$output'"
 
 	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
 
@@ -3298,7 +5141,7 @@ extern \"C\" {
 	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
 	  for progfile in $progfiles; do
 	    func_to_tool_file "$progfile" func_convert_file_msys_to_w32
-	    func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
+	    func_verbose "extracting global C symbols from '$func_to_tool_file_result'"
 	    $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
 	  done
 
@@ -3318,10 +5161,10 @@ extern \"C\" {
 
 	  # Prepare the list of exported symbols
 	  if test -z "$export_symbols"; then
-	    export_symbols="$output_objdir/$outputname.exp"
+	    export_symbols=$output_objdir/$outputname.exp
 	    $opt_dry_run || {
 	      $RM $export_symbols
-	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+	      eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
 	      case $host in
 	      *cygwin* | *mingw* | *cegcc* )
                 eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
@@ -3331,7 +5174,7 @@ extern \"C\" {
 	    }
 	  else
 	    $opt_dry_run || {
-	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+	      eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
 	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
 	      eval '$MV "$nlist"T "$nlist"'
 	      case $host in
@@ -3345,22 +5188,22 @@ extern \"C\" {
 	fi
 
 	for dlprefile in $dlprefiles; do
-	  func_verbose "extracting global C symbols from \`$dlprefile'"
+	  func_verbose "extracting global C symbols from '$dlprefile'"
 	  func_basename "$dlprefile"
-	  name="$func_basename_result"
+	  name=$func_basename_result
           case $host in
 	    *cygwin* | *mingw* | *cegcc* )
 	      # if an import library, we need to obtain dlname
 	      if func_win32_import_lib_p "$dlprefile"; then
 	        func_tr_sh "$dlprefile"
 	        eval "curr_lafile=\$libfile_$func_tr_sh_result"
-	        dlprefile_dlbasename=""
+	        dlprefile_dlbasename=
 	        if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
 	          # Use subshell, to avoid clobbering current variable values
 	          dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
-	          if test -n "$dlprefile_dlname" ; then
+	          if test -n "$dlprefile_dlname"; then
 	            func_basename "$dlprefile_dlname"
-	            dlprefile_dlbasename="$func_basename_result"
+	            dlprefile_dlbasename=$func_basename_result
 	          else
 	            # no lafile. user explicitly requested -dlpreopen <import library>.
 	            $sharedlib_from_linklib_cmd "$dlprefile"
@@ -3368,7 +5211,7 @@ extern \"C\" {
 	          fi
 	        fi
 	        $opt_dry_run || {
-	          if test -n "$dlprefile_dlbasename" ; then
+	          if test -n "$dlprefile_dlbasename"; then
 	            eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
 	          else
 	            func_warning "Could not compute DLL name from $name"
@@ -3424,6 +5267,11 @@ extern \"C\" {
 	    echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
 	  fi
 
+	  func_show_eval '$RM "${nlist}I"'
+	  if test -n "$global_symbol_to_import"; then
+	    eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I'
+	  fi
+
 	  echo >> "$output_objdir/$my_dlsyms" "\
 
 /* The mapping between symbol names and symbols.  */
@@ -3432,11 +5280,30 @@ typedef struct {
   void *address;
 } lt_dlsymlist;
 extern LT_DLSYM_CONST lt_dlsymlist
-lt_${my_prefix}_LTX_preloaded_symbols[];
+lt_${my_prefix}_LTX_preloaded_symbols[];\
+"
+
+	  if test -s "$nlist"I; then
+	    echo >> "$output_objdir/$my_dlsyms" "\
+static void lt_syminit(void)
+{
+  LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols;
+  for (; symbol->name; ++symbol)
+    {"
+	    $SED 's/.*/      if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms"
+	    echo >> "$output_objdir/$my_dlsyms" "\
+    }
+}"
+	  fi
+	  echo >> "$output_objdir/$my_dlsyms" "\
 LT_DLSYM_CONST lt_dlsymlist
 lt_${my_prefix}_LTX_preloaded_symbols[] =
-{\
-  { \"$my_originator\", (void *) 0 },"
+{ {\"$my_originator\", (void *) 0},"
+
+	  if test -s "$nlist"I; then
+	    echo >> "$output_objdir/$my_dlsyms" "\
+  {\"@INIT@\", (void *) &lt_syminit},"
+	  fi
 
 	  case $need_lib_prefix in
 	  no)
@@ -3478,9 +5345,7 @@ static const void *lt_preloaded_setup() {
 	  *-*-hpux*)
 	    pic_flag_for_symtable=" $pic_flag"  ;;
 	  *)
-	    if test "X$my_pic_p" != Xno; then
-	      pic_flag_for_symtable=" $pic_flag"
-	    fi
+	    $my_pic_p && pic_flag_for_symtable=" $pic_flag"
 	    ;;
 	  esac
 	  ;;
@@ -3497,10 +5362,10 @@ static const void *lt_preloaded_setup() {
 	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
 
 	# Clean up the generated files.
-	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
+	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"'
 
 	# Transform the symbol file into the correct name.
-	symfileobj="$output_objdir/${my_outputname}S.$objext"
+	symfileobj=$output_objdir/${my_outputname}S.$objext
 	case $host in
 	*cygwin* | *mingw* | *cegcc* )
 	  if test -f "$output_objdir/$my_outputname.def"; then
@@ -3518,7 +5383,7 @@ static const void *lt_preloaded_setup() {
 	esac
 	;;
       *)
-	func_fatal_error "unknown suffix for \`$my_dlsyms'"
+	func_fatal_error "unknown suffix for '$my_dlsyms'"
 	;;
       esac
     else
@@ -3532,6 +5397,32 @@ static const void *lt_preloaded_setup() {
     fi
 }
 
+# func_cygming_gnu_implib_p ARG
+# This predicate returns with zero status (TRUE) if
+# ARG is a GNU/binutils-style import library. Returns
+# with nonzero status (FALSE) otherwise.
+func_cygming_gnu_implib_p ()
+{
+  $debug_cmd
+
+  func_to_tool_file "$1" func_convert_file_msys_to_w32
+  func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
+  test -n "$func_cygming_gnu_implib_tmp"
+}
+
+# func_cygming_ms_implib_p ARG
+# This predicate returns with zero status (TRUE) if
+# ARG is an MS-style import library. Returns
+# with nonzero status (FALSE) otherwise.
+func_cygming_ms_implib_p ()
+{
+  $debug_cmd
+
+  func_to_tool_file "$1" func_convert_file_msys_to_w32
+  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
+  test -n "$func_cygming_ms_implib_tmp"
+}
+
 # func_win32_libid arg
 # return the library type of file 'arg'
 #
@@ -3541,8 +5432,9 @@ static const void *lt_preloaded_setup() {
 # Despite the name, also deal with 64 bit binaries.
 func_win32_libid ()
 {
-  $opt_debug
-  win32_libid_type="unknown"
+  $debug_cmd
+
+  win32_libid_type=unknown
   win32_fileres=`file -L $1 2>/dev/null`
   case $win32_fileres in
   *ar\ archive\ import\ library*) # definitely import
@@ -3552,16 +5444,29 @@ func_win32_libid ()
     # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
     if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
        $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
-      func_to_tool_file "$1" func_convert_file_msys_to_w32
-      win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
-	$SED -n -e '
+      case $nm_interface in
+      "MS dumpbin")
+	if func_cygming_ms_implib_p "$1" ||
+	   func_cygming_gnu_implib_p "$1"
+	then
+	  win32_nmres=import
+	else
+	  win32_nmres=
+	fi
+	;;
+      *)
+	func_to_tool_file "$1" func_convert_file_msys_to_w32
+	win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
+	  $SED -n -e '
 	    1,100{
 		/ I /{
-		    s,.*,import,
+		    s|.*|import|
 		    p
 		    q
 		}
 	    }'`
+	;;
+      esac
       case $win32_nmres in
       import*)  win32_libid_type="x86 archive import";;
       *)        win32_libid_type="x86 archive static";;
@@ -3593,7 +5498,8 @@ func_win32_libid ()
 #    $sharedlib_from_linklib_result
 func_cygming_dll_for_implib ()
 {
-  $opt_debug
+  $debug_cmd
+
   sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
 }
 
@@ -3610,7 +5516,8 @@ func_cygming_dll_for_implib ()
 # specified import library.
 func_cygming_dll_for_implib_fallback_core ()
 {
-  $opt_debug
+  $debug_cmd
+
   match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
   $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
     $SED '/^Contents of section '"$match_literal"':/{
@@ -3646,8 +5553,8 @@ func_cygming_dll_for_implib_fallback_core ()
       /./p' |
     # we now have a list, one entry per line, of the stringified
     # contents of the appropriate section of all members of the
-    # archive which possess that section. Heuristic: eliminate
-    # all those which have a first or second character that is
+    # archive that possess that section. Heuristic: eliminate
+    # all those that have a first or second character that is
     # a '.' (that is, objdump's representation of an unprintable
     # character.) This should work for all archives with less than
     # 0x302f exports -- but will fail for DLLs whose name actually
@@ -3658,30 +5565,6 @@ func_cygming_dll_for_implib_fallback_core ()
     $SED -e '/^\./d;/^.\./d;q'
 }
 
-# func_cygming_gnu_implib_p ARG
-# This predicate returns with zero status (TRUE) if
-# ARG is a GNU/binutils-style import library. Returns
-# with nonzero status (FALSE) otherwise.
-func_cygming_gnu_implib_p ()
-{
-  $opt_debug
-  func_to_tool_file "$1" func_convert_file_msys_to_w32
-  func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
-  test -n "$func_cygming_gnu_implib_tmp"
-}
-
-# func_cygming_ms_implib_p ARG
-# This predicate returns with zero status (TRUE) if
-# ARG is an MS-style import library. Returns
-# with nonzero status (FALSE) otherwise.
-func_cygming_ms_implib_p ()
-{
-  $opt_debug
-  func_to_tool_file "$1" func_convert_file_msys_to_w32
-  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
-  test -n "$func_cygming_ms_implib_tmp"
-}
-
 # func_cygming_dll_for_implib_fallback ARG
 # Platform-specific function to extract the
 # name of the DLL associated with the specified
@@ -3695,16 +5578,17 @@ func_cygming_ms_implib_p ()
 #    $sharedlib_from_linklib_result
 func_cygming_dll_for_implib_fallback ()
 {
-  $opt_debug
-  if func_cygming_gnu_implib_p "$1" ; then
+  $debug_cmd
+
+  if func_cygming_gnu_implib_p "$1"; then
     # binutils import library
     sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
-  elif func_cygming_ms_implib_p "$1" ; then
+  elif func_cygming_ms_implib_p "$1"; then
     # ms-generated import library
     sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
   else
     # unknown
-    sharedlib_from_linklib_result=""
+    sharedlib_from_linklib_result=
   fi
 }
 
@@ -3712,10 +5596,11 @@ func_cygming_dll_for_implib_fallback ()
 # func_extract_an_archive dir oldlib
 func_extract_an_archive ()
 {
-    $opt_debug
-    f_ex_an_ar_dir="$1"; shift
-    f_ex_an_ar_oldlib="$1"
-    if test "$lock_old_archive_extraction" = yes; then
+    $debug_cmd
+
+    f_ex_an_ar_dir=$1; shift
+    f_ex_an_ar_oldlib=$1
+    if test yes = "$lock_old_archive_extraction"; then
       lockfile=$f_ex_an_ar_oldlib.lock
       until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
 	func_echo "Waiting for $lockfile to be removed"
@@ -3724,7 +5609,7 @@ func_extract_an_archive ()
     fi
     func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
 		   'stat=$?; rm -f "$lockfile"; exit $stat'
-    if test "$lock_old_archive_extraction" = yes; then
+    if test yes = "$lock_old_archive_extraction"; then
       $opt_dry_run || rm -f "$lockfile"
     fi
     if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
@@ -3738,22 +5623,23 @@ func_extract_an_archive ()
 # func_extract_archives gentop oldlib ...
 func_extract_archives ()
 {
-    $opt_debug
-    my_gentop="$1"; shift
+    $debug_cmd
+
+    my_gentop=$1; shift
     my_oldlibs=${1+"$@"}
-    my_oldobjs=""
-    my_xlib=""
-    my_xabs=""
-    my_xdir=""
+    my_oldobjs=
+    my_xlib=
+    my_xabs=
+    my_xdir=
 
     for my_xlib in $my_oldlibs; do
       # Extract the objects.
       case $my_xlib in
-	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
+	[\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;;
 	*) my_xabs=`pwd`"/$my_xlib" ;;
       esac
       func_basename "$my_xlib"
-      my_xlib="$func_basename_result"
+      my_xlib=$func_basename_result
       my_xlib_u=$my_xlib
       while :; do
         case " $extracted_archives " in
@@ -3765,7 +5651,7 @@ func_extract_archives ()
 	esac
       done
       extracted_archives="$extracted_archives $my_xlib_u"
-      my_xdir="$my_gentop/$my_xlib_u"
+      my_xdir=$my_gentop/$my_xlib_u
 
       func_mkdir_p "$my_xdir"
 
@@ -3778,22 +5664,23 @@ func_extract_archives ()
 	  cd $my_xdir || exit $?
 	  darwin_archive=$my_xabs
 	  darwin_curdir=`pwd`
-	  darwin_base_archive=`basename "$darwin_archive"`
+	  func_basename "$darwin_archive"
+	  darwin_base_archive=$func_basename_result
 	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
 	  if test -n "$darwin_arches"; then
 	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
 	    darwin_arch=
 	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
-	    for darwin_arch in  $darwin_arches ; do
-	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
-	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
-	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
-	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
+	    for darwin_arch in  $darwin_arches; do
+	      func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch"
+	      $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive"
+	      cd "unfat-$$/$darwin_base_archive-$darwin_arch"
+	      func_extract_an_archive "`pwd`" "$darwin_base_archive"
 	      cd "$darwin_curdir"
-	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
+	      $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive"
 	    done # $darwin_arches
             ## Okay now we've a bunch of thin objects, gotta fatten them up :)
-	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
+	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u`
 	    darwin_file=
 	    darwin_files=
 	    for darwin_file in $darwin_filelist; do
@@ -3815,7 +5702,7 @@ func_extract_archives ()
       my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
     done
 
-    func_extract_archives_result="$my_oldobjs"
+    func_extract_archives_result=$my_oldobjs
 }
 
 
@@ -3830,7 +5717,7 @@ func_extract_archives ()
 #
 # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
 # variable will take.  If 'yes', then the emitted script
-# will assume that the directory in which it is stored is
+# will assume that the directory where it is stored is
 # the $objdir directory.  This is a cygwin/mingw-specific
 # behavior.
 func_emit_wrapper ()
@@ -3841,7 +5728,7 @@ func_emit_wrapper ()
 #! $SHELL
 
 # $output - temporary wrapper script for $objdir/$outputname
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
 #
 # The $output program cannot be directly executed until all the libtool
 # libraries that it depends on are installed.
@@ -3898,9 +5785,9 @@ _LTECHO_EOF'
 
 # Very basic option parsing. These options are (a) specific to
 # the libtool wrapper, (b) are identical between the wrapper
-# /script/ and the wrapper /executable/ which is used only on
+# /script/ and the wrapper /executable/ that is used only on
 # windows platforms, and (c) all begin with the string "--lt-"
-# (application programs are unlikely to have options which match
+# (application programs are unlikely to have options that match
 # this pattern).
 #
 # There are only two supported options: --lt-debug and
@@ -3933,7 +5820,7 @@ func_parse_lt_options ()
 
   # Print the debug banner immediately:
   if test -n \"\$lt_option_debug\"; then
-    echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
+    echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2
   fi
 }
 
@@ -3944,7 +5831,7 @@ func_lt_dump_args ()
   lt_dump_args_N=1;
   for lt_arg
   do
-    \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
+    \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\"
     lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
   done
 }
@@ -3958,7 +5845,7 @@ func_exec_program_core ()
   *-*-mingw | *-*-os2* | *-cegcc*)
     $ECHO "\
       if test -n \"\$lt_option_debug\"; then
-        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
+        \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2
         func_lt_dump_args \${1+\"\$@\"} 1>&2
       fi
       exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
@@ -3968,7 +5855,7 @@ func_exec_program_core ()
   *)
     $ECHO "\
       if test -n \"\$lt_option_debug\"; then
-        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
+        \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2
         func_lt_dump_args \${1+\"\$@\"} 1>&2
       fi
       exec \"\$progdir/\$program\" \${1+\"\$@\"}
@@ -4043,13 +5930,13 @@ func_exec_program ()
   test -n \"\$absdir\" && thisdir=\"\$absdir\"
 "
 
-	if test "$fast_install" = yes; then
+	if test yes = "$fast_install"; then
 	  $ECHO "\
   program=lt-'$outputname'$exeext
   progdir=\"\$thisdir/$objdir\"
 
   if test ! -f \"\$progdir/\$program\" ||
-     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
+     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\
        test \"X\$file\" != \"X\$progdir/\$program\"; }; then
 
     file=\"\$\$-\$program\"
@@ -4066,7 +5953,7 @@ func_exec_program ()
     if test -n \"\$relink_command\"; then
       if relink_command_output=\`eval \$relink_command 2>&1\`; then :
       else
-	$ECHO \"\$relink_command_output\" >&2
+	\$ECHO \"\$relink_command_output\" >&2
 	$RM \"\$progdir/\$file\"
 	exit 1
       fi
@@ -4101,7 +5988,7 @@ func_exec_program ()
 	fi
 
 	# Export our shlibpath_var if we have one.
-	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+	if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
 	  $ECHO "\
     # Add our own library path to $shlibpath_var
     $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
@@ -4121,7 +6008,7 @@ func_exec_program ()
     fi
   else
     # The program doesn't exist.
-    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
+    \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2
     \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
     \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
     exit 1
@@ -4140,7 +6027,7 @@ func_emit_cwrapperexe_src ()
 	cat <<EOF
 
 /* $cwrappersource - temporary wrapper executable for $objdir/$outputname
-   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+   Generated by $PROGRAM (GNU $PACKAGE) $VERSION
 
    The $output program cannot be directly executed until all the libtool
    libraries that it depends on are installed.
@@ -4175,47 +6062,45 @@ EOF
 #include <fcntl.h>
 #include <sys/stat.h>
 
+#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0)
+
 /* declarations of non-ANSI functions */
-#if defined(__MINGW32__)
+#if defined __MINGW32__
 # ifdef __STRICT_ANSI__
 int _putenv (const char *);
 # endif
-#elif defined(__CYGWIN__)
+#elif defined __CYGWIN__
 # ifdef __STRICT_ANSI__
 char *realpath (const char *, char *);
 int putenv (char *);
 int setenv (const char *, const char *, int);
 # endif
-/* #elif defined (other platforms) ... */
+/* #elif defined other_platform || defined ... */
 #endif
 
 /* portability defines, excluding path handling macros */
-#if defined(_MSC_VER)
+#if defined _MSC_VER
 # define setmode _setmode
 # define stat    _stat
 # define chmod   _chmod
 # define getcwd  _getcwd
 # define putenv  _putenv
 # define S_IXUSR _S_IEXEC
-# ifndef _INTPTR_T_DEFINED
-#  define _INTPTR_T_DEFINED
-#  define intptr_t int
-# endif
-#elif defined(__MINGW32__)
+#elif defined __MINGW32__
 # define setmode _setmode
 # define stat    _stat
 # define chmod   _chmod
 # define getcwd  _getcwd
 # define putenv  _putenv
-#elif defined(__CYGWIN__)
+#elif defined __CYGWIN__
 # define HAVE_SETENV
 # define FOPEN_WB "wb"
-/* #elif defined (other platforms) ... */
+/* #elif defined other platforms ... */
 #endif
 
-#if defined(PATH_MAX)
+#if defined PATH_MAX
 # define LT_PATHMAX PATH_MAX
-#elif defined(MAXPATHLEN)
+#elif defined MAXPATHLEN
 # define LT_PATHMAX MAXPATHLEN
 #else
 # define LT_PATHMAX 1024
@@ -4234,8 +6119,8 @@ int setenv (const char *, const char *, int);
 # define PATH_SEPARATOR ':'
 #endif
 
-#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
-  defined (__OS2__)
+#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \
+  defined __OS2__
 # define HAVE_DOS_BASED_FILE_SYSTEM
 # define FOPEN_WB "wb"
 # ifndef DIR_SEPARATOR_2
@@ -4268,10 +6153,10 @@ int setenv (const char *, const char *, int);
 
 #define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
 #define XFREE(stale) do { \
-  if (stale) { free ((void *) stale); stale = 0; } \
+  if (stale) { free (stale); stale = 0; } \
 } while (0)
 
-#if defined(LT_DEBUGWRAPPER)
+#if defined LT_DEBUGWRAPPER
 static int lt_debug = 1;
 #else
 static int lt_debug = 0;
@@ -4300,11 +6185,16 @@ void lt_dump_script (FILE *f);
 EOF
 
 	    cat <<EOF
-volatile const char * MAGIC_EXE = "$magic_exe";
+#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5)
+# define externally_visible volatile
+#else
+# define externally_visible __attribute__((externally_visible)) volatile
+#endif
+externally_visible const char * MAGIC_EXE = "$magic_exe";
 const char * LIB_PATH_VARNAME = "$shlibpath_var";
 EOF
 
-	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+	    if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
               func_to_host_path "$temp_rpath"
 	      cat <<EOF
 const char * LIB_PATH_VALUE   = "$func_to_host_path_result";
@@ -4328,7 +6218,7 @@ const char * EXE_PATH_VALUE   = "";
 EOF
 	    fi
 
-	    if test "$fast_install" = yes; then
+	    if test yes = "$fast_install"; then
 	      cat <<EOF
 const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
 EOF
@@ -4357,12 +6247,12 @@ main (int argc, char *argv[])
   char *actual_cwrapper_name;
   char *target_name;
   char *lt_argv_zero;
-  intptr_t rval = 127;
+  int rval = 127;
 
   int i;
 
   program_name = (char *) xstrdup (base_name (argv[0]));
-  newargz = XMALLOC (char *, argc + 1);
+  newargz = XMALLOC (char *, (size_t) argc + 1);
 
   /* very simple arg parsing; don't want to rely on getopt
    * also, copy all non cwrapper options to newargz, except
@@ -4371,10 +6261,10 @@ main (int argc, char *argv[])
   newargc=0;
   for (i = 1; i < argc; i++)
     {
-      if (strcmp (argv[i], dumpscript_opt) == 0)
+      if (STREQ (argv[i], dumpscript_opt))
 	{
 EOF
-	    case "$host" in
+	    case $host in
 	      *mingw* | *cygwin* )
 		# make stdout use "unix" line endings
 		echo "          setmode(1,_O_BINARY);"
@@ -4385,12 +6275,12 @@ EOF
 	  lt_dump_script (stdout);
 	  return 0;
 	}
-      if (strcmp (argv[i], debug_opt) == 0)
+      if (STREQ (argv[i], debug_opt))
 	{
           lt_debug = 1;
           continue;
 	}
-      if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
+      if (STREQ (argv[i], ltwrapper_option_prefix))
         {
           /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
              namespace, but it is not one of the ones we know about and
@@ -4413,7 +6303,7 @@ EOF
 EOF
 	    cat <<EOF
   /* The GNU banner must be the first non-error debug message */
-  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
+  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE) $VERSION\n");
 EOF
 	    cat <<"EOF"
   lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
@@ -4524,7 +6414,7 @@ EOF
 		cat <<"EOF"
   /* execv doesn't actually work on mingw as expected on unix */
   newargz = prepare_spawn (newargz);
-  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
+  rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
   if (rval == -1)
     {
       /* failed to start process */
@@ -4569,7 +6459,7 @@ base_name (const char *name)
 {
   const char *base;
 
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+#if defined HAVE_DOS_BASED_FILE_SYSTEM
   /* Skip over the disk name in MSDOS pathnames. */
   if (isalpha ((unsigned char) name[0]) && name[1] == ':')
     name += 2;
@@ -4628,7 +6518,7 @@ find_executable (const char *wrapper)
   const char *p_next;
   /* static buffer for getcwd */
   char tmp[LT_PATHMAX + 1];
-  int tmp_len;
+  size_t tmp_len;
   char *concat_name;
 
   lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
@@ -4638,7 +6528,7 @@ find_executable (const char *wrapper)
     return NULL;
 
   /* Absolute path? */
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+#if defined HAVE_DOS_BASED_FILE_SYSTEM
   if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
     {
       concat_name = xstrdup (wrapper);
@@ -4656,7 +6546,7 @@ find_executable (const char *wrapper)
 	    return concat_name;
 	  XFREE (concat_name);
 	}
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+#if defined HAVE_DOS_BASED_FILE_SYSTEM
     }
 #endif
 
@@ -4679,7 +6569,7 @@ find_executable (const char *wrapper)
 	      for (q = p; *q; q++)
 		if (IS_PATH_SEPARATOR (*q))
 		  break;
-	      p_len = q - p;
+	      p_len = (size_t) (q - p);
 	      p_next = (*q == '\0' ? q : q + 1);
 	      if (p_len == 0)
 		{
@@ -4798,7 +6688,7 @@ strendzap (char *str, const char *pat)
   if (patlen <= len)
     {
       str += len - patlen;
-      if (strcmp (str, pat) == 0)
+      if (STREQ (str, pat))
 	*str = '\0';
     }
   return str;
@@ -4863,7 +6753,7 @@ lt_setenv (const char *name, const char *value)
     char *str = xstrdup (value);
     setenv (name, str, 1);
 #else
-    int len = strlen (name) + 1 + strlen (value) + 1;
+    size_t len = strlen (name) + 1 + strlen (value) + 1;
     char *str = XMALLOC (char, len);
     sprintf (str, "%s=%s", name, value);
     if (putenv (str) != EXIT_SUCCESS)
@@ -4880,8 +6770,8 @@ lt_extend_str (const char *orig_value, const char *add, int to_end)
   char *new_value;
   if (orig_value && *orig_value)
     {
-      int orig_value_len = strlen (orig_value);
-      int add_len = strlen (add);
+      size_t orig_value_len = strlen (orig_value);
+      size_t add_len = strlen (add);
       new_value = XMALLOC (char, add_len + orig_value_len + 1);
       if (to_end)
         {
@@ -4912,10 +6802,10 @@ lt_update_exe_path (const char *name, const char *value)
     {
       char *new_value = lt_extend_str (getenv (name), value, 0);
       /* some systems can't cope with a ':'-terminated path #' */
-      int len = strlen (new_value);
-      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
+      size_t len = strlen (new_value);
+      while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
         {
-          new_value[len-1] = '\0';
+          new_value[--len] = '\0';
         }
       lt_setenv (name, new_value);
       XFREE (new_value);
@@ -5082,27 +6972,47 @@ EOF
 # True if ARG is an import lib, as indicated by $file_magic_cmd
 func_win32_import_lib_p ()
 {
-    $opt_debug
+    $debug_cmd
+
     case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
     *import*) : ;;
     *) false ;;
     esac
 }
 
+# func_suncc_cstd_abi
+# !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!!
+# Several compiler flags select an ABI that is incompatible with the
+# Cstd library. Avoid specifying it if any are in CXXFLAGS.
+func_suncc_cstd_abi ()
+{
+    $debug_cmd
+
+    case " $compile_command " in
+    *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*)
+      suncc_use_cstd_abi=no
+      ;;
+    *)
+      suncc_use_cstd_abi=yes
+      ;;
+    esac
+}
+
 # func_mode_link arg...
 func_mode_link ()
 {
-    $opt_debug
+    $debug_cmd
+
     case $host in
     *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
       # It is impossible to link a dll without this setting, and
       # we shouldn't force the makefile maintainer to figure out
-      # which system we are compiling for in order to pass an extra
+      # what system we are compiling for in order to pass an extra
       # flag for every libtool invocation.
       # allow_undefined=no
 
       # FIXME: Unfortunately, there are problems with the above when trying
-      # to make a dll which has undefined symbols, in which case not
+      # to make a dll that has undefined symbols, in which case not
       # even a static library is built.  For now, we need to specify
       # -no-undefined on the libtool link line when we can be certain
       # that all symbols are satisfied, otherwise we get a static library.
@@ -5146,10 +7056,11 @@ func_mode_link ()
     module=no
     no_install=no
     objs=
+    os2dllname=
     non_pic_objects=
     precious_files_regex=
     prefer_static_libs=no
-    preload=no
+    preload=false
     prev=
     prevarg=
     release=
@@ -5161,7 +7072,7 @@ func_mode_link ()
     vinfo=
     vinfo_number=no
     weak_libs=
-    single_module="${wl}-single_module"
+    single_module=$wl-single_module
     func_infer_tag $base_compile
 
     # We need to know -static, to get the right output filenames.
@@ -5169,15 +7080,15 @@ func_mode_link ()
     do
       case $arg in
       -shared)
-	test "$build_libtool_libs" != yes && \
-	  func_fatal_configuration "can not build a shared library"
+	test yes != "$build_libtool_libs" \
+	  && func_fatal_configuration "cannot build a shared library"
 	build_old_libs=no
 	break
 	;;
       -all-static | -static | -static-libtool-libs)
 	case $arg in
 	-all-static)
-	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+	  if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then
 	    func_warning "complete static linking is impossible in this configuration"
 	  fi
 	  if test -n "$link_static_flag"; then
@@ -5210,7 +7121,7 @@ func_mode_link ()
 
     # Go through the arguments, transforming them on the way.
     while test "$#" -gt 0; do
-      arg="$1"
+      arg=$1
       shift
       func_quote_for_eval "$arg"
       qarg=$func_quote_for_eval_unquoted_result
@@ -5227,21 +7138,21 @@ func_mode_link ()
 
 	case $prev in
 	bindir)
-	  bindir="$arg"
+	  bindir=$arg
 	  prev=
 	  continue
 	  ;;
 	dlfiles|dlprefiles)
-	  if test "$preload" = no; then
+	  $preload || {
 	    # Add the symbol object into the linking commands.
 	    func_append compile_command " @SYMFILE@"
 	    func_append finalize_command " @SYMFILE@"
-	    preload=yes
-	  fi
+	    preload=:
+	  }
 	  case $arg in
 	  *.la | *.lo) ;;  # We handle these cases below.
 	  force)
-	    if test "$dlself" = no; then
+	    if test no = "$dlself"; then
 	      dlself=needless
 	      export_dynamic=yes
 	    fi
@@ -5249,9 +7160,9 @@ func_mode_link ()
 	    continue
 	    ;;
 	  self)
-	    if test "$prev" = dlprefiles; then
+	    if test dlprefiles = "$prev"; then
 	      dlself=yes
-	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
+	    elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then
 	      dlself=yes
 	    else
 	      dlself=needless
@@ -5261,7 +7172,7 @@ func_mode_link ()
 	    continue
 	    ;;
 	  *)
-	    if test "$prev" = dlfiles; then
+	    if test dlfiles = "$prev"; then
 	      func_append dlfiles " $arg"
 	    else
 	      func_append dlprefiles " $arg"
@@ -5272,14 +7183,14 @@ func_mode_link ()
 	  esac
 	  ;;
 	expsyms)
-	  export_symbols="$arg"
+	  export_symbols=$arg
 	  test -f "$arg" \
-	    || func_fatal_error "symbol file \`$arg' does not exist"
+	    || func_fatal_error "symbol file '$arg' does not exist"
 	  prev=
 	  continue
 	  ;;
 	expsyms_regex)
-	  export_symbols_regex="$arg"
+	  export_symbols_regex=$arg
 	  prev=
 	  continue
 	  ;;
@@ -5297,7 +7208,13 @@ func_mode_link ()
 	  continue
 	  ;;
 	inst_prefix)
-	  inst_prefix_dir="$arg"
+	  inst_prefix_dir=$arg
+	  prev=
+	  continue
+	  ;;
+	mllvm)
+	  # Clang does not use LLVM to link, so we can simply discard any
+	  # '-mllvm $arg' options when doing the link step.
 	  prev=
 	  continue
 	  ;;
@@ -5321,21 +7238,21 @@ func_mode_link ()
 
 		if test -z "$pic_object" ||
 		   test -z "$non_pic_object" ||
-		   test "$pic_object" = none &&
-		   test "$non_pic_object" = none; then
-		  func_fatal_error "cannot find name of object for \`$arg'"
+		   test none = "$pic_object" &&
+		   test none = "$non_pic_object"; then
+		  func_fatal_error "cannot find name of object for '$arg'"
 		fi
 
 		# Extract subdirectory from the argument.
 		func_dirname "$arg" "/" ""
-		xdir="$func_dirname_result"
+		xdir=$func_dirname_result
 
-		if test "$pic_object" != none; then
+		if test none != "$pic_object"; then
 		  # Prepend the subdirectory the object is found in.
-		  pic_object="$xdir$pic_object"
+		  pic_object=$xdir$pic_object
 
-		  if test "$prev" = dlfiles; then
-		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+		  if test dlfiles = "$prev"; then
+		    if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then
 		      func_append dlfiles " $pic_object"
 		      prev=
 		      continue
@@ -5346,7 +7263,7 @@ func_mode_link ()
 		  fi
 
 		  # CHECK ME:  I think I busted this.  -Ossama
-		  if test "$prev" = dlprefiles; then
+		  if test dlprefiles = "$prev"; then
 		    # Preload the old-style object.
 		    func_append dlprefiles " $pic_object"
 		    prev=
@@ -5354,23 +7271,23 @@ func_mode_link ()
 
 		  # A PIC object.
 		  func_append libobjs " $pic_object"
-		  arg="$pic_object"
+		  arg=$pic_object
 		fi
 
 		# Non-PIC object.
-		if test "$non_pic_object" != none; then
+		if test none != "$non_pic_object"; then
 		  # Prepend the subdirectory the object is found in.
-		  non_pic_object="$xdir$non_pic_object"
+		  non_pic_object=$xdir$non_pic_object
 
 		  # A standard non-PIC object
 		  func_append non_pic_objects " $non_pic_object"
-		  if test -z "$pic_object" || test "$pic_object" = none ; then
-		    arg="$non_pic_object"
+		  if test -z "$pic_object" || test none = "$pic_object"; then
+		    arg=$non_pic_object
 		  fi
 		else
 		  # If the PIC object exists, use it instead.
 		  # $xdir was prepended to $pic_object above.
-		  non_pic_object="$pic_object"
+		  non_pic_object=$pic_object
 		  func_append non_pic_objects " $non_pic_object"
 		fi
 	      else
@@ -5378,7 +7295,7 @@ func_mode_link ()
 		if $opt_dry_run; then
 		  # Extract subdirectory from the argument.
 		  func_dirname "$arg" "/" ""
-		  xdir="$func_dirname_result"
+		  xdir=$func_dirname_result
 
 		  func_lo2o "$arg"
 		  pic_object=$xdir$objdir/$func_lo2o_result
@@ -5386,24 +7303,29 @@ func_mode_link ()
 		  func_append libobjs " $pic_object"
 		  func_append non_pic_objects " $non_pic_object"
 	        else
-		  func_fatal_error "\`$arg' is not a valid libtool object"
+		  func_fatal_error "'$arg' is not a valid libtool object"
 		fi
 	      fi
 	    done
 	  else
-	    func_fatal_error "link input file \`$arg' does not exist"
+	    func_fatal_error "link input file '$arg' does not exist"
 	  fi
 	  arg=$save_arg
 	  prev=
 	  continue
 	  ;;
+	os2dllname)
+	  os2dllname=$arg
+	  prev=
+	  continue
+	  ;;
 	precious_regex)
-	  precious_files_regex="$arg"
+	  precious_files_regex=$arg
 	  prev=
 	  continue
 	  ;;
 	release)
-	  release="-$arg"
+	  release=-$arg
 	  prev=
 	  continue
 	  ;;
@@ -5415,7 +7337,7 @@ func_mode_link ()
 	    func_fatal_error "only absolute run-paths are allowed"
 	    ;;
 	  esac
-	  if test "$prev" = rpath; then
+	  if test rpath = "$prev"; then
 	    case "$rpath " in
 	    *" $arg "*) ;;
 	    *) func_append rpath " $arg" ;;
@@ -5430,7 +7352,7 @@ func_mode_link ()
 	  continue
 	  ;;
 	shrext)
-	  shrext_cmds="$arg"
+	  shrext_cmds=$arg
 	  prev=
 	  continue
 	  ;;
@@ -5470,7 +7392,7 @@ func_mode_link ()
 	esac
       fi # test -n "$prev"
 
-      prevarg="$arg"
+      prevarg=$arg
 
       case $arg in
       -all-static)
@@ -5484,7 +7406,7 @@ func_mode_link ()
 
       -allow-undefined)
 	# FIXME: remove this flag sometime in the future.
-	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
+	func_fatal_error "'-allow-undefined' must not be used because it is the default"
 	;;
 
       -avoid-version)
@@ -5516,7 +7438,7 @@ func_mode_link ()
 	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
 	  func_fatal_error "more than one -exported-symbols argument is not allowed"
 	fi
-	if test "X$arg" = "X-export-symbols"; then
+	if test X-export-symbols = "X$arg"; then
 	  prev=expsyms
 	else
 	  prev=expsyms_regex
@@ -5550,9 +7472,9 @@ func_mode_link ()
 	func_stripname "-L" '' "$arg"
 	if test -z "$func_stripname_result"; then
 	  if test "$#" -gt 0; then
-	    func_fatal_error "require no space between \`-L' and \`$1'"
+	    func_fatal_error "require no space between '-L' and '$1'"
 	  else
-	    func_fatal_error "need path for \`-L' option"
+	    func_fatal_error "need path for '-L' option"
 	  fi
 	fi
 	func_resolve_sysroot "$func_stripname_result"
@@ -5563,8 +7485,8 @@ func_mode_link ()
 	*)
 	  absdir=`cd "$dir" && pwd`
 	  test -z "$absdir" && \
-	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
-	  dir="$absdir"
+	    func_fatal_error "cannot determine absolute directory name of '$dir'"
+	  dir=$absdir
 	  ;;
 	esac
 	case "$deplibs " in
@@ -5599,7 +7521,7 @@ func_mode_link ()
 	;;
 
       -l*)
-	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+	if test X-lc = "X$arg" || test X-lm = "X$arg"; then
 	  case $host in
 	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
 	    # These systems don't actually have a C or math library (as such)
@@ -5607,11 +7529,11 @@ func_mode_link ()
 	    ;;
 	  *-*-os2*)
 	    # These systems don't actually have a C library (as such)
-	    test "X$arg" = "X-lc" && continue
+	    test X-lc = "X$arg" && continue
 	    ;;
-	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
 	    # Do not include libc due to us having libc/libc_r.
-	    test "X$arg" = "X-lc" && continue
+	    test X-lc = "X$arg" && continue
 	    ;;
 	  *-*-rhapsody* | *-*-darwin1.[012])
 	    # Rhapsody C and math libraries are in the System framework
@@ -5620,16 +7542,16 @@ func_mode_link ()
 	    ;;
 	  *-*-sco3.2v5* | *-*-sco5v6*)
 	    # Causes problems with __ctype
-	    test "X$arg" = "X-lc" && continue
+	    test X-lc = "X$arg" && continue
 	    ;;
 	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
 	    # Compiler inserts libc in the correct place for threads to work
-	    test "X$arg" = "X-lc" && continue
+	    test X-lc = "X$arg" && continue
 	    ;;
 	  esac
-	elif test "X$arg" = "X-lc_r"; then
+	elif test X-lc_r = "X$arg"; then
 	 case $host in
-	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
 	   # Do not include libc_r directly, use -pthread flag.
 	   continue
 	   ;;
@@ -5639,6 +7561,11 @@ func_mode_link ()
 	continue
 	;;
 
+      -mllvm)
+	prev=mllvm
+	continue
+	;;
+
       -module)
 	module=yes
 	continue
@@ -5668,7 +7595,7 @@ func_mode_link ()
 	;;
 
       -multi_module)
-	single_module="${wl}-multi_module"
+	single_module=$wl-multi_module
 	continue
 	;;
 
@@ -5682,8 +7609,8 @@ func_mode_link ()
 	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
 	  # The PATH hackery in wrapper scripts is required on Windows
 	  # and Darwin in order for the loader to find any dlls it needs.
-	  func_warning "\`-no-install' is ignored for $host"
-	  func_warning "assuming \`-no-fast-install' instead"
+	  func_warning "'-no-install' is ignored for $host"
+	  func_warning "assuming '-no-fast-install' instead"
 	  fast_install=no
 	  ;;
 	*) no_install=yes ;;
@@ -5701,6 +7628,11 @@ func_mode_link ()
 	continue
 	;;
 
+      -os2dllname)
+	prev=os2dllname
+	continue
+	;;
+
       -o) prev=output ;;
 
       -precious-files-regex)
@@ -5788,14 +7720,14 @@ func_mode_link ()
 	func_stripname '-Wc,' '' "$arg"
 	args=$func_stripname_result
 	arg=
-	save_ifs="$IFS"; IFS=','
+	save_ifs=$IFS; IFS=,
 	for flag in $args; do
-	  IFS="$save_ifs"
+	  IFS=$save_ifs
           func_quote_for_eval "$flag"
 	  func_append arg " $func_quote_for_eval_result"
 	  func_append compiler_flags " $func_quote_for_eval_result"
 	done
-	IFS="$save_ifs"
+	IFS=$save_ifs
 	func_stripname ' ' '' "$arg"
 	arg=$func_stripname_result
 	;;
@@ -5804,15 +7736,15 @@ func_mode_link ()
 	func_stripname '-Wl,' '' "$arg"
 	args=$func_stripname_result
 	arg=
-	save_ifs="$IFS"; IFS=','
+	save_ifs=$IFS; IFS=,
 	for flag in $args; do
-	  IFS="$save_ifs"
+	  IFS=$save_ifs
           func_quote_for_eval "$flag"
 	  func_append arg " $wl$func_quote_for_eval_result"
 	  func_append compiler_flags " $wl$func_quote_for_eval_result"
 	  func_append linker_flags " $func_quote_for_eval_result"
 	done
-	IFS="$save_ifs"
+	IFS=$save_ifs
 	func_stripname ' ' '' "$arg"
 	arg=$func_stripname_result
 	;;
@@ -5835,7 +7767,7 @@ func_mode_link ()
       # -msg_* for osf cc
       -msg_*)
 	func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
+	arg=$func_quote_for_eval_result
 	;;
 
       # Flags to be passed through unchanged, with rationale:
@@ -5847,25 +7779,49 @@ func_mode_link ()
       # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
       # -F/path              path to uninstalled frameworks, gcc on darwin
       # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
+      # -fstack-protector*   stack protector flags for GCC
       # @file                GCC response files
       # -tp=*                Portland pgcc target processor selection
       # --sysroot=*          for sysroot support
-      # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
+      # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
+      # -specs=*             GCC specs files
+      # -stdlib=*            select c++ std lib with clang
+      # -fsanitize=*         Clang/GCC memory and address sanitizer
       -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
       -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
-      -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
+      -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \
+      -specs=*|-fsanitize=*)
         func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
+	arg=$func_quote_for_eval_result
         func_append compile_command " $arg"
         func_append finalize_command " $arg"
         func_append compiler_flags " $arg"
         continue
         ;;
 
+      -Z*)
+        if test os2 = "`expr $host : '.*\(os2\)'`"; then
+          # OS/2 uses -Zxxx to specify OS/2-specific options
+	  compiler_flags="$compiler_flags $arg"
+	  func_append compile_command " $arg"
+	  func_append finalize_command " $arg"
+	  case $arg in
+	  -Zlinker | -Zstack)
+	    prev=xcompiler
+	    ;;
+	  esac
+	  continue
+        else
+	  # Otherwise treat like 'Some other compiler flag' below
+	  func_quote_for_eval "$arg"
+	  arg=$func_quote_for_eval_result
+        fi
+	;;
+
       # Some other compiler flag.
       -* | +*)
         func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
+	arg=$func_quote_for_eval_result
 	;;
 
       *.$objext)
@@ -5886,21 +7842,21 @@ func_mode_link ()
 
 	  if test -z "$pic_object" ||
 	     test -z "$non_pic_object" ||
-	     test "$pic_object" = none &&
-	     test "$non_pic_object" = none; then
-	    func_fatal_error "cannot find name of object for \`$arg'"
+	     test none = "$pic_object" &&
+	     test none = "$non_pic_object"; then
+	    func_fatal_error "cannot find name of object for '$arg'"
 	  fi
 
 	  # Extract subdirectory from the argument.
 	  func_dirname "$arg" "/" ""
-	  xdir="$func_dirname_result"
+	  xdir=$func_dirname_result
 
-	  if test "$pic_object" != none; then
+	  test none = "$pic_object" || {
 	    # Prepend the subdirectory the object is found in.
-	    pic_object="$xdir$pic_object"
+	    pic_object=$xdir$pic_object
 
-	    if test "$prev" = dlfiles; then
-	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+	    if test dlfiles = "$prev"; then
+	      if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then
 		func_append dlfiles " $pic_object"
 		prev=
 		continue
@@ -5911,7 +7867,7 @@ func_mode_link ()
 	    fi
 
 	    # CHECK ME:  I think I busted this.  -Ossama
-	    if test "$prev" = dlprefiles; then
+	    if test dlprefiles = "$prev"; then
 	      # Preload the old-style object.
 	      func_append dlprefiles " $pic_object"
 	      prev=
@@ -5919,23 +7875,23 @@ func_mode_link ()
 
 	    # A PIC object.
 	    func_append libobjs " $pic_object"
-	    arg="$pic_object"
-	  fi
+	    arg=$pic_object
+	  }
 
 	  # Non-PIC object.
-	  if test "$non_pic_object" != none; then
+	  if test none != "$non_pic_object"; then
 	    # Prepend the subdirectory the object is found in.
-	    non_pic_object="$xdir$non_pic_object"
+	    non_pic_object=$xdir$non_pic_object
 
 	    # A standard non-PIC object
 	    func_append non_pic_objects " $non_pic_object"
-	    if test -z "$pic_object" || test "$pic_object" = none ; then
-	      arg="$non_pic_object"
+	    if test -z "$pic_object" || test none = "$pic_object"; then
+	      arg=$non_pic_object
 	    fi
 	  else
 	    # If the PIC object exists, use it instead.
 	    # $xdir was prepended to $pic_object above.
-	    non_pic_object="$pic_object"
+	    non_pic_object=$pic_object
 	    func_append non_pic_objects " $non_pic_object"
 	  fi
 	else
@@ -5943,7 +7899,7 @@ func_mode_link ()
 	  if $opt_dry_run; then
 	    # Extract subdirectory from the argument.
 	    func_dirname "$arg" "/" ""
-	    xdir="$func_dirname_result"
+	    xdir=$func_dirname_result
 
 	    func_lo2o "$arg"
 	    pic_object=$xdir$objdir/$func_lo2o_result
@@ -5951,7 +7907,7 @@ func_mode_link ()
 	    func_append libobjs " $pic_object"
 	    func_append non_pic_objects " $non_pic_object"
 	  else
-	    func_fatal_error "\`$arg' is not a valid libtool object"
+	    func_fatal_error "'$arg' is not a valid libtool object"
 	  fi
 	fi
 	;;
@@ -5967,11 +7923,11 @@ func_mode_link ()
 	# A libtool-controlled library.
 
 	func_resolve_sysroot "$arg"
-	if test "$prev" = dlfiles; then
+	if test dlfiles = "$prev"; then
 	  # This library was specified with -dlopen.
 	  func_append dlfiles " $func_resolve_sysroot_result"
 	  prev=
-	elif test "$prev" = dlprefiles; then
+	elif test dlprefiles = "$prev"; then
 	  # The library was specified with -dlpreopen.
 	  func_append dlprefiles " $func_resolve_sysroot_result"
 	  prev=
@@ -5986,7 +7942,7 @@ func_mode_link ()
 	# Unknown arguments in both finalize_command and compile_command need
 	# to be aesthetically quoted because they are evaled later.
 	func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
+	arg=$func_quote_for_eval_result
 	;;
       esac # arg
 
@@ -5998,9 +7954,9 @@ func_mode_link ()
     done # argument parsing loop
 
     test -n "$prev" && \
-      func_fatal_help "the \`$prevarg' option requires an argument"
+      func_fatal_help "the '$prevarg' option requires an argument"
 
-    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+    if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then
       eval arg=\"$export_dynamic_flag_spec\"
       func_append compile_command " $arg"
       func_append finalize_command " $arg"
@@ -6009,20 +7965,23 @@ func_mode_link ()
     oldlibs=
     # calculate the name of the file, without its directory
     func_basename "$output"
-    outputname="$func_basename_result"
-    libobjs_save="$libobjs"
+    outputname=$func_basename_result
+    libobjs_save=$libobjs
 
     if test -n "$shlibpath_var"; then
       # get the directories listed in $shlibpath_var
-      eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
+      eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\`
     else
       shlib_search_path=
     fi
     eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
     eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
 
+    # Definition is injected by LT_CONFIG during libtool generation.
+    func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH"
+
     func_dirname "$output" "/" ""
-    output_objdir="$func_dirname_result$objdir"
+    output_objdir=$func_dirname_result$objdir
     func_to_tool_file "$output_objdir/"
     tool_output_objdir=$func_to_tool_file_result
     # Create the object directory.
@@ -6045,7 +8004,7 @@ func_mode_link ()
     # Find all interdependent deplibs by searching for libraries
     # that are linked more than once (e.g. -la -lb -la)
     for deplib in $deplibs; do
-      if $opt_preserve_dup_deps ; then
+      if $opt_preserve_dup_deps; then
 	case "$libs " in
 	*" $deplib "*) func_append specialdeplibs " $deplib" ;;
 	esac
@@ -6053,7 +8012,7 @@ func_mode_link ()
       func_append libs " $deplib"
     done
 
-    if test "$linkmode" = lib; then
+    if test lib = "$linkmode"; then
       libs="$predeps $libs $compiler_lib_search_path $postdeps"
 
       # Compute libraries that are listed more than once in $predeps
@@ -6085,7 +8044,7 @@ func_mode_link ()
 	  case $file in
 	  *.la) ;;
 	  *)
-	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
+	    func_fatal_help "libraries can '-dlopen' only libtool libraries: $file"
 	    ;;
 	  esac
 	done
@@ -6093,7 +8052,7 @@ func_mode_link ()
     prog)
 	compile_deplibs=
 	finalize_deplibs=
-	alldeplibs=no
+	alldeplibs=false
 	newdlfiles=
 	newdlprefiles=
 	passes="conv scan dlopen dlpreopen link"
@@ -6105,32 +8064,32 @@ func_mode_link ()
     for pass in $passes; do
       # The preopen pass in lib mode reverses $deplibs; put it back here
       # so that -L comes before libs that need it for instance...
-      if test "$linkmode,$pass" = "lib,link"; then
+      if test lib,link = "$linkmode,$pass"; then
 	## FIXME: Find the place where the list is rebuilt in the wrong
 	##        order, and fix it there properly
         tmp_deplibs=
 	for deplib in $deplibs; do
 	  tmp_deplibs="$deplib $tmp_deplibs"
 	done
-	deplibs="$tmp_deplibs"
+	deplibs=$tmp_deplibs
       fi
 
-      if test "$linkmode,$pass" = "lib,link" ||
-	 test "$linkmode,$pass" = "prog,scan"; then
-	libs="$deplibs"
+      if test lib,link = "$linkmode,$pass" ||
+	 test prog,scan = "$linkmode,$pass"; then
+	libs=$deplibs
 	deplibs=
       fi
-      if test "$linkmode" = prog; then
+      if test prog = "$linkmode"; then
 	case $pass in
-	dlopen) libs="$dlfiles" ;;
-	dlpreopen) libs="$dlprefiles" ;;
+	dlopen) libs=$dlfiles ;;
+	dlpreopen) libs=$dlprefiles ;;
 	link)
 	  libs="$deplibs %DEPLIBS%"
 	  test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
 	  ;;
 	esac
       fi
-      if test "$linkmode,$pass" = "lib,dlpreopen"; then
+      if test lib,dlpreopen = "$linkmode,$pass"; then
 	# Collect and forward deplibs of preopened libtool libs
 	for lib in $dlprefiles; do
 	  # Ignore non-libtool-libs
@@ -6151,26 +8110,26 @@ func_mode_link ()
 	    esac
 	  done
 	done
-	libs="$dlprefiles"
+	libs=$dlprefiles
       fi
-      if test "$pass" = dlopen; then
+      if test dlopen = "$pass"; then
 	# Collect dlpreopened libraries
-	save_deplibs="$deplibs"
+	save_deplibs=$deplibs
 	deplibs=
       fi
 
       for deplib in $libs; do
 	lib=
-	found=no
+	found=false
 	case $deplib in
 	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
         |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
-	  if test "$linkmode,$pass" = "prog,link"; then
+	  if test prog,link = "$linkmode,$pass"; then
 	    compile_deplibs="$deplib $compile_deplibs"
 	    finalize_deplibs="$deplib $finalize_deplibs"
 	  else
 	    func_append compiler_flags " $deplib"
-	    if test "$linkmode" = lib ; then
+	    if test lib = "$linkmode"; then
 		case "$new_inherited_linker_flags " in
 		    *" $deplib "*) ;;
 		    * ) func_append new_inherited_linker_flags " $deplib" ;;
@@ -6180,13 +8139,13 @@ func_mode_link ()
 	  continue
 	  ;;
 	-l*)
-	  if test "$linkmode" != lib && test "$linkmode" != prog; then
-	    func_warning "\`-l' is ignored for archives/objects"
+	  if test lib != "$linkmode" && test prog != "$linkmode"; then
+	    func_warning "'-l' is ignored for archives/objects"
 	    continue
 	  fi
 	  func_stripname '-l' '' "$deplib"
 	  name=$func_stripname_result
-	  if test "$linkmode" = lib; then
+	  if test lib = "$linkmode"; then
 	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
 	  else
 	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
@@ -6194,31 +8153,22 @@ func_mode_link ()
 	  for searchdir in $searchdirs; do
 	    for search_ext in .la $std_shrext .so .a; do
 	      # Search the libtool library
-	      lib="$searchdir/lib${name}${search_ext}"
+	      lib=$searchdir/lib$name$search_ext
 	      if test -f "$lib"; then
-		if test "$search_ext" = ".la"; then
-		  found=yes
+		if test .la = "$search_ext"; then
+		  found=:
 		else
-		  found=no
+		  found=false
 		fi
 		break 2
 	      fi
 	    done
 	  done
-	  if test "$found" != yes; then
-	    # deplib doesn't seem to be a libtool library
-	    if test "$linkmode,$pass" = "prog,link"; then
-	      compile_deplibs="$deplib $compile_deplibs"
-	      finalize_deplibs="$deplib $finalize_deplibs"
-	    else
-	      deplibs="$deplib $deplibs"
-	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
-	    fi
-	    continue
-	  else # deplib is a libtool library
+	  if $found; then
+	    # deplib is a libtool library
 	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
 	    # We need to do some special things here, and not later.
-	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+	    if test yes = "$allow_libtool_libs_with_static_runtimes"; then
 	      case " $predeps $postdeps " in
 	      *" $deplib "*)
 		if func_lalib_p "$lib"; then
@@ -6226,19 +8176,19 @@ func_mode_link ()
 		  old_library=
 		  func_source "$lib"
 		  for l in $old_library $library_names; do
-		    ll="$l"
+		    ll=$l
 		  done
-		  if test "X$ll" = "X$old_library" ; then # only static version available
-		    found=no
+		  if test "X$ll" = "X$old_library"; then # only static version available
+		    found=false
 		    func_dirname "$lib" "" "."
-		    ladir="$func_dirname_result"
+		    ladir=$func_dirname_result
 		    lib=$ladir/$old_library
-		    if test "$linkmode,$pass" = "prog,link"; then
+		    if test prog,link = "$linkmode,$pass"; then
 		      compile_deplibs="$deplib $compile_deplibs"
 		      finalize_deplibs="$deplib $finalize_deplibs"
 		    else
 		      deplibs="$deplib $deplibs"
-		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+		      test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs"
 		    fi
 		    continue
 		  fi
@@ -6247,15 +8197,25 @@ func_mode_link ()
 	      *) ;;
 	      esac
 	    fi
+	  else
+	    # deplib doesn't seem to be a libtool library
+	    if test prog,link = "$linkmode,$pass"; then
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    else
+	      deplibs="$deplib $deplibs"
+	      test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs"
+	    fi
+	    continue
 	  fi
 	  ;; # -l
 	*.ltframework)
-	  if test "$linkmode,$pass" = "prog,link"; then
+	  if test prog,link = "$linkmode,$pass"; then
 	    compile_deplibs="$deplib $compile_deplibs"
 	    finalize_deplibs="$deplib $finalize_deplibs"
 	  else
 	    deplibs="$deplib $deplibs"
-	    if test "$linkmode" = lib ; then
+	    if test lib = "$linkmode"; then
 		case "$new_inherited_linker_flags " in
 		    *" $deplib "*) ;;
 		    * ) func_append new_inherited_linker_flags " $deplib" ;;
@@ -6268,18 +8228,18 @@ func_mode_link ()
 	  case $linkmode in
 	  lib)
 	    deplibs="$deplib $deplibs"
-	    test "$pass" = conv && continue
+	    test conv = "$pass" && continue
 	    newdependency_libs="$deplib $newdependency_libs"
 	    func_stripname '-L' '' "$deplib"
 	    func_resolve_sysroot "$func_stripname_result"
 	    func_append newlib_search_path " $func_resolve_sysroot_result"
 	    ;;
 	  prog)
-	    if test "$pass" = conv; then
+	    if test conv = "$pass"; then
 	      deplibs="$deplib $deplibs"
 	      continue
 	    fi
-	    if test "$pass" = scan; then
+	    if test scan = "$pass"; then
 	      deplibs="$deplib $deplibs"
 	    else
 	      compile_deplibs="$deplib $compile_deplibs"
@@ -6290,13 +8250,13 @@ func_mode_link ()
 	    func_append newlib_search_path " $func_resolve_sysroot_result"
 	    ;;
 	  *)
-	    func_warning "\`-L' is ignored for archives/objects"
+	    func_warning "'-L' is ignored for archives/objects"
 	    ;;
 	  esac # linkmode
 	  continue
 	  ;; # -L
 	-R*)
-	  if test "$pass" = link; then
+	  if test link = "$pass"; then
 	    func_stripname '-R' '' "$deplib"
 	    func_resolve_sysroot "$func_stripname_result"
 	    dir=$func_resolve_sysroot_result
@@ -6314,7 +8274,7 @@ func_mode_link ()
 	  lib=$func_resolve_sysroot_result
 	  ;;
 	*.$libext)
-	  if test "$pass" = conv; then
+	  if test conv = "$pass"; then
 	    deplibs="$deplib $deplibs"
 	    continue
 	  fi
@@ -6325,21 +8285,26 @@ func_mode_link ()
 	    case " $dlpreconveniencelibs " in
 	    *" $deplib "*) ;;
 	    *)
-	      valid_a_lib=no
+	      valid_a_lib=false
 	      case $deplibs_check_method in
 		match_pattern*)
 		  set dummy $deplibs_check_method; shift
 		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
 		  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
 		    | $EGREP "$match_pattern_regex" > /dev/null; then
-		    valid_a_lib=yes
+		    valid_a_lib=:
 		  fi
 		;;
 		pass_all)
-		  valid_a_lib=yes
+		  valid_a_lib=:
 		;;
 	      esac
-	      if test "$valid_a_lib" != yes; then
+	      if $valid_a_lib; then
+		echo
+		$ECHO "*** Warning: Linking the shared library $output against the"
+		$ECHO "*** static library $deplib is not portable!"
+		deplibs="$deplib $deplibs"
+	      else
 		echo
 		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
 		echo "*** I have the capability to make that library automatically link in when"
@@ -6347,18 +8312,13 @@ func_mode_link ()
 		echo "*** shared version of the library, which you do not appear to have"
 		echo "*** because the file extensions .$libext of this argument makes me believe"
 		echo "*** that it is just a static archive that I should not use here."
-	      else
-		echo
-		$ECHO "*** Warning: Linking the shared library $output against the"
-		$ECHO "*** static library $deplib is not portable!"
-		deplibs="$deplib $deplibs"
 	      fi
 	      ;;
 	    esac
 	    continue
 	    ;;
 	  prog)
-	    if test "$pass" != link; then
+	    if test link != "$pass"; then
 	      deplibs="$deplib $deplibs"
 	    else
 	      compile_deplibs="$deplib $compile_deplibs"
@@ -6369,10 +8329,10 @@ func_mode_link ()
 	  esac # linkmode
 	  ;; # *.$libext
 	*.lo | *.$objext)
-	  if test "$pass" = conv; then
+	  if test conv = "$pass"; then
 	    deplibs="$deplib $deplibs"
-	  elif test "$linkmode" = prog; then
-	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+	  elif test prog = "$linkmode"; then
+	    if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then
 	      # If there is no dlopen support or we're linking statically,
 	      # we need to preload.
 	      func_append newdlprefiles " $deplib"
@@ -6385,22 +8345,20 @@ func_mode_link ()
 	  continue
 	  ;;
 	%DEPLIBS%)
-	  alldeplibs=yes
+	  alldeplibs=:
 	  continue
 	  ;;
 	esac # case $deplib
 
-	if test "$found" = yes || test -f "$lib"; then :
-	else
-	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
-	fi
+	$found || test -f "$lib" \
+	  || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'"
 
 	# Check to see that this really is a libtool archive.
 	func_lalib_unsafe_p "$lib" \
-	  || func_fatal_error "\`$lib' is not a valid libtool archive"
+	  || func_fatal_error "'$lib' is not a valid libtool archive"
 
 	func_dirname "$lib" "" "."
-	ladir="$func_dirname_result"
+	ladir=$func_dirname_result
 
 	dlname=
 	dlopen=
@@ -6430,19 +8388,19 @@ func_mode_link ()
 	  done
 	fi
 	dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-	if test "$linkmode,$pass" = "lib,link" ||
-	   test "$linkmode,$pass" = "prog,scan" ||
-	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+	if test lib,link = "$linkmode,$pass" ||
+	   test prog,scan = "$linkmode,$pass" ||
+	   { test prog != "$linkmode" && test lib != "$linkmode"; }; then
 	  test -n "$dlopen" && func_append dlfiles " $dlopen"
 	  test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
 	fi
 
-	if test "$pass" = conv; then
+	if test conv = "$pass"; then
 	  # Only check for convenience libraries
 	  deplibs="$lib $deplibs"
 	  if test -z "$libdir"; then
 	    if test -z "$old_library"; then
-	      func_fatal_error "cannot find name of link library for \`$lib'"
+	      func_fatal_error "cannot find name of link library for '$lib'"
 	    fi
 	    # It is a libtool convenience library, so add in its objects.
 	    func_append convenience " $ladir/$objdir/$old_library"
@@ -6450,15 +8408,15 @@ func_mode_link ()
 	    tmp_libs=
 	    for deplib in $dependency_libs; do
 	      deplibs="$deplib $deplibs"
-	      if $opt_preserve_dup_deps ; then
+	      if $opt_preserve_dup_deps; then
 		case "$tmp_libs " in
 		*" $deplib "*) func_append specialdeplibs " $deplib" ;;
 		esac
 	      fi
 	      func_append tmp_libs " $deplib"
 	    done
-	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
-	    func_fatal_error "\`$lib' is not a convenience library"
+	  elif test prog != "$linkmode" && test lib != "$linkmode"; then
+	    func_fatal_error "'$lib' is not a convenience library"
 	  fi
 	  continue
 	fi # $pass = conv
@@ -6467,26 +8425,26 @@ func_mode_link ()
 	# Get the name of the library we link against.
 	linklib=
 	if test -n "$old_library" &&
-	   { test "$prefer_static_libs" = yes ||
-	     test "$prefer_static_libs,$installed" = "built,no"; }; then
+	   { test yes = "$prefer_static_libs" ||
+	     test built,no = "$prefer_static_libs,$installed"; }; then
 	  linklib=$old_library
 	else
 	  for l in $old_library $library_names; do
-	    linklib="$l"
+	    linklib=$l
 	  done
 	fi
 	if test -z "$linklib"; then
-	  func_fatal_error "cannot find name of link library for \`$lib'"
+	  func_fatal_error "cannot find name of link library for '$lib'"
 	fi
 
 	# This library was specified with -dlopen.
-	if test "$pass" = dlopen; then
-	  if test -z "$libdir"; then
-	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
-	  fi
+	if test dlopen = "$pass"; then
+	  test -z "$libdir" \
+	    && func_fatal_error "cannot -dlopen a convenience library: '$lib'"
 	  if test -z "$dlname" ||
-	     test "$dlopen_support" != yes ||
-	     test "$build_libtool_libs" = no; then
+	     test yes != "$dlopen_support" ||
+	     test no = "$build_libtool_libs"
+	  then
 	    # If there is no dlname, no dlopen support or we're linking
 	    # statically, we need to preload.  We also need to preload any
 	    # dependent libraries so libltdl's deplib preloader doesn't
@@ -6500,40 +8458,40 @@ func_mode_link ()
 
 	# We need an absolute path.
 	case $ladir in
-	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
+	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;;
 	*)
 	  abs_ladir=`cd "$ladir" && pwd`
 	  if test -z "$abs_ladir"; then
-	    func_warning "cannot determine absolute directory name of \`$ladir'"
+	    func_warning "cannot determine absolute directory name of '$ladir'"
 	    func_warning "passing it literally to the linker, although it might fail"
-	    abs_ladir="$ladir"
+	    abs_ladir=$ladir
 	  fi
 	  ;;
 	esac
 	func_basename "$lib"
-	laname="$func_basename_result"
+	laname=$func_basename_result
 
 	# Find the relevant object directory and library name.
-	if test "X$installed" = Xyes; then
+	if test yes = "$installed"; then
 	  if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
-	    func_warning "library \`$lib' was moved."
-	    dir="$ladir"
-	    absdir="$abs_ladir"
-	    libdir="$abs_ladir"
+	    func_warning "library '$lib' was moved."
+	    dir=$ladir
+	    absdir=$abs_ladir
+	    libdir=$abs_ladir
 	  else
-	    dir="$lt_sysroot$libdir"
-	    absdir="$lt_sysroot$libdir"
+	    dir=$lt_sysroot$libdir
+	    absdir=$lt_sysroot$libdir
 	  fi
-	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
+	  test yes = "$hardcode_automatic" && avoidtemprpath=yes
 	else
 	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
-	    dir="$ladir"
-	    absdir="$abs_ladir"
+	    dir=$ladir
+	    absdir=$abs_ladir
 	    # Remove this search path later
 	    func_append notinst_path " $abs_ladir"
 	  else
-	    dir="$ladir/$objdir"
-	    absdir="$abs_ladir/$objdir"
+	    dir=$ladir/$objdir
+	    absdir=$abs_ladir/$objdir
 	    # Remove this search path later
 	    func_append notinst_path " $abs_ladir"
 	  fi
@@ -6542,11 +8500,11 @@ func_mode_link ()
 	name=$func_stripname_result
 
 	# This library was specified with -dlpreopen.
-	if test "$pass" = dlpreopen; then
-	  if test -z "$libdir" && test "$linkmode" = prog; then
-	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
+	if test dlpreopen = "$pass"; then
+	  if test -z "$libdir" && test prog = "$linkmode"; then
+	    func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'"
 	  fi
-	  case "$host" in
+	  case $host in
 	    # special handling for platforms with PE-DLLs.
 	    *cygwin* | *mingw* | *cegcc* )
 	      # Linker will automatically link against shared library if both
@@ -6590,9 +8548,9 @@ func_mode_link ()
 
 	if test -z "$libdir"; then
 	  # Link the convenience library
-	  if test "$linkmode" = lib; then
+	  if test lib = "$linkmode"; then
 	    deplibs="$dir/$old_library $deplibs"
-	  elif test "$linkmode,$pass" = "prog,link"; then
+	  elif test prog,link = "$linkmode,$pass"; then
 	    compile_deplibs="$dir/$old_library $compile_deplibs"
 	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
 	  else
@@ -6602,14 +8560,14 @@ func_mode_link ()
 	fi
 
 
-	if test "$linkmode" = prog && test "$pass" != link; then
+	if test prog = "$linkmode" && test link != "$pass"; then
 	  func_append newlib_search_path " $ladir"
 	  deplibs="$lib $deplibs"
 
-	  linkalldeplibs=no
-	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
-	     test "$build_libtool_libs" = no; then
-	    linkalldeplibs=yes
+	  linkalldeplibs=false
+	  if test no != "$link_all_deplibs" || test -z "$library_names" ||
+	     test no = "$build_libtool_libs"; then
+	    linkalldeplibs=:
 	  fi
 
 	  tmp_libs=
@@ -6621,14 +8579,14 @@ func_mode_link ()
 		 ;;
 	    esac
 	    # Need to link against all dependency_libs?
-	    if test "$linkalldeplibs" = yes; then
+	    if $linkalldeplibs; then
 	      deplibs="$deplib $deplibs"
 	    else
 	      # Need to hardcode shared library paths
 	      # or/and link against static libraries
 	      newdependency_libs="$deplib $newdependency_libs"
 	    fi
-	    if $opt_preserve_dup_deps ; then
+	    if $opt_preserve_dup_deps; then
 	      case "$tmp_libs " in
 	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
 	      esac
@@ -6638,15 +8596,15 @@ func_mode_link ()
 	  continue
 	fi # $linkmode = prog...
 
-	if test "$linkmode,$pass" = "prog,link"; then
+	if test prog,link = "$linkmode,$pass"; then
 	  if test -n "$library_names" &&
-	     { { test "$prefer_static_libs" = no ||
-	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
+	     { { test no = "$prefer_static_libs" ||
+	         test built,yes = "$prefer_static_libs,$installed"; } ||
 	       test -z "$old_library"; }; then
 	    # We need to hardcode the library path
-	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
+	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then
 	      # Make sure the rpath contains only unique directories.
-	      case "$temp_rpath:" in
+	      case $temp_rpath: in
 	      *"$absdir:"*) ;;
 	      *) func_append temp_rpath "$absdir:" ;;
 	      esac
@@ -6675,9 +8633,9 @@ func_mode_link ()
 	    esac
 	  fi # $linkmode,$pass = prog,link...
 
-	  if test "$alldeplibs" = yes &&
-	     { test "$deplibs_check_method" = pass_all ||
-	       { test "$build_libtool_libs" = yes &&
+	  if $alldeplibs &&
+	     { test pass_all = "$deplibs_check_method" ||
+	       { test yes = "$build_libtool_libs" &&
 		 test -n "$library_names"; }; }; then
 	    # We only need to search for static libraries
 	    continue
@@ -6686,19 +8644,19 @@ func_mode_link ()
 
 	link_static=no # Whether the deplib will be linked statically
 	use_static_libs=$prefer_static_libs
-	if test "$use_static_libs" = built && test "$installed" = yes; then
+	if test built = "$use_static_libs" && test yes = "$installed"; then
 	  use_static_libs=no
 	fi
 	if test -n "$library_names" &&
-	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
+	   { test no = "$use_static_libs" || test -z "$old_library"; }; then
 	  case $host in
-	  *cygwin* | *mingw* | *cegcc*)
+	  *cygwin* | *mingw* | *cegcc* | *os2*)
 	      # No point in relinking DLLs because paths are not encoded
 	      func_append notinst_deplibs " $lib"
 	      need_relink=no
 	    ;;
 	  *)
-	    if test "$installed" = no; then
+	    if test no = "$installed"; then
 	      func_append notinst_deplibs " $lib"
 	      need_relink=yes
 	    fi
@@ -6708,24 +8666,24 @@ func_mode_link ()
 
 	  # Warn about portability, can't link against -module's on some
 	  # systems (darwin).  Don't bleat about dlopened modules though!
-	  dlopenmodule=""
+	  dlopenmodule=
 	  for dlpremoduletest in $dlprefiles; do
 	    if test "X$dlpremoduletest" = "X$lib"; then
-	      dlopenmodule="$dlpremoduletest"
+	      dlopenmodule=$dlpremoduletest
 	      break
 	    fi
 	  done
-	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
+	  if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then
 	    echo
-	    if test "$linkmode" = prog; then
+	    if test prog = "$linkmode"; then
 	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
 	    else
 	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
 	    fi
 	    $ECHO "*** $linklib is not portable!"
 	  fi
-	  if test "$linkmode" = lib &&
-	     test "$hardcode_into_libs" = yes; then
+	  if test lib = "$linkmode" &&
+	     test yes = "$hardcode_into_libs"; then
 	    # Hardcode the library path.
 	    # Skip directories that are in the system default run-time
 	    # search path.
@@ -6753,43 +8711,43 @@ func_mode_link ()
 	    # figure out the soname
 	    set dummy $library_names
 	    shift
-	    realname="$1"
+	    realname=$1
 	    shift
 	    libname=`eval "\\$ECHO \"$libname_spec\""`
 	    # use dlname if we got it. it's perfectly good, no?
 	    if test -n "$dlname"; then
-	      soname="$dlname"
+	      soname=$dlname
 	    elif test -n "$soname_spec"; then
 	      # bleh windows
 	      case $host in
-	      *cygwin* | mingw* | *cegcc*)
+	      *cygwin* | mingw* | *cegcc* | *os2*)
 	        func_arith $current - $age
 		major=$func_arith_result
-		versuffix="-$major"
+		versuffix=-$major
 		;;
 	      esac
 	      eval soname=\"$soname_spec\"
 	    else
-	      soname="$realname"
+	      soname=$realname
 	    fi
 
 	    # Make a new name for the extract_expsyms_cmds to use
-	    soroot="$soname"
+	    soroot=$soname
 	    func_basename "$soroot"
-	    soname="$func_basename_result"
+	    soname=$func_basename_result
 	    func_stripname 'lib' '.dll' "$soname"
 	    newlib=libimp-$func_stripname_result.a
 
 	    # If the library has no export list, then create one now
 	    if test -f "$output_objdir/$soname-def"; then :
 	    else
-	      func_verbose "extracting exported symbol list from \`$soname'"
+	      func_verbose "extracting exported symbol list from '$soname'"
 	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
 	    fi
 
 	    # Create $newlib
 	    if test -f "$output_objdir/$newlib"; then :; else
-	      func_verbose "generating import library for \`$soname'"
+	      func_verbose "generating import library for '$soname'"
 	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
 	    fi
 	    # make sure the library variables are pointing to the new library
@@ -6797,58 +8755,58 @@ func_mode_link ()
 	    linklib=$newlib
 	  fi # test -n "$old_archive_from_expsyms_cmds"
 
-	  if test "$linkmode" = prog || test "$opt_mode" != relink; then
+	  if test prog = "$linkmode" || test relink != "$opt_mode"; then
 	    add_shlibpath=
 	    add_dir=
 	    add=
 	    lib_linked=yes
 	    case $hardcode_action in
 	    immediate | unsupported)
-	      if test "$hardcode_direct" = no; then
-		add="$dir/$linklib"
+	      if test no = "$hardcode_direct"; then
+		add=$dir/$linklib
 		case $host in
-		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
-		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
+		  *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;;
+		  *-*-sysv4*uw2*) add_dir=-L$dir ;;
 		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
-		    *-*-unixware7*) add_dir="-L$dir" ;;
+		    *-*-unixware7*) add_dir=-L$dir ;;
 		  *-*-darwin* )
-		    # if the lib is a (non-dlopened) module then we can not
+		    # if the lib is a (non-dlopened) module then we cannot
 		    # link against it, someone is ignoring the earlier warnings
 		    if /usr/bin/file -L $add 2> /dev/null |
-			 $GREP ": [^:]* bundle" >/dev/null ; then
+			 $GREP ": [^:]* bundle" >/dev/null; then
 		      if test "X$dlopenmodule" != "X$lib"; then
 			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
-			if test -z "$old_library" ; then
+			if test -z "$old_library"; then
 			  echo
 			  echo "*** And there doesn't seem to be a static archive available"
 			  echo "*** The link will probably fail, sorry"
 			else
-			  add="$dir/$old_library"
+			  add=$dir/$old_library
 			fi
 		      elif test -n "$old_library"; then
-			add="$dir/$old_library"
+			add=$dir/$old_library
 		      fi
 		    fi
 		esac
-	      elif test "$hardcode_minus_L" = no; then
+	      elif test no = "$hardcode_minus_L"; then
 		case $host in
-		*-*-sunos*) add_shlibpath="$dir" ;;
+		*-*-sunos*) add_shlibpath=$dir ;;
 		esac
-		add_dir="-L$dir"
-		add="-l$name"
-	      elif test "$hardcode_shlibpath_var" = no; then
-		add_shlibpath="$dir"
-		add="-l$name"
+		add_dir=-L$dir
+		add=-l$name
+	      elif test no = "$hardcode_shlibpath_var"; then
+		add_shlibpath=$dir
+		add=-l$name
 	      else
 		lib_linked=no
 	      fi
 	      ;;
 	    relink)
-	      if test "$hardcode_direct" = yes &&
-	         test "$hardcode_direct_absolute" = no; then
-		add="$dir/$linklib"
-	      elif test "$hardcode_minus_L" = yes; then
-		add_dir="-L$absdir"
+	      if test yes = "$hardcode_direct" &&
+	         test no = "$hardcode_direct_absolute"; then
+		add=$dir/$linklib
+	      elif test yes = "$hardcode_minus_L"; then
+		add_dir=-L$absdir
 		# Try looking first in the location we're being installed to.
 		if test -n "$inst_prefix_dir"; then
 		  case $libdir in
@@ -6857,10 +8815,10 @@ func_mode_link ()
 		      ;;
 		  esac
 		fi
-		add="-l$name"
-	      elif test "$hardcode_shlibpath_var" = yes; then
-		add_shlibpath="$dir"
-		add="-l$name"
+		add=-l$name
+	      elif test yes = "$hardcode_shlibpath_var"; then
+		add_shlibpath=$dir
+		add=-l$name
 	      else
 		lib_linked=no
 	      fi
@@ -6868,7 +8826,7 @@ func_mode_link ()
 	    *) lib_linked=no ;;
 	    esac
 
-	    if test "$lib_linked" != yes; then
+	    if test yes != "$lib_linked"; then
 	      func_fatal_configuration "unsupported hardcode properties"
 	    fi
 
@@ -6878,15 +8836,15 @@ func_mode_link ()
 	      *) func_append compile_shlibpath "$add_shlibpath:" ;;
 	      esac
 	    fi
-	    if test "$linkmode" = prog; then
+	    if test prog = "$linkmode"; then
 	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
 	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
 	    else
 	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
 	      test -n "$add" && deplibs="$add $deplibs"
-	      if test "$hardcode_direct" != yes &&
-		 test "$hardcode_minus_L" != yes &&
-		 test "$hardcode_shlibpath_var" = yes; then
+	      if test yes != "$hardcode_direct" &&
+		 test yes != "$hardcode_minus_L" &&
+		 test yes = "$hardcode_shlibpath_var"; then
 		case :$finalize_shlibpath: in
 		*":$libdir:"*) ;;
 		*) func_append finalize_shlibpath "$libdir:" ;;
@@ -6895,33 +8853,33 @@ func_mode_link ()
 	    fi
 	  fi
 
-	  if test "$linkmode" = prog || test "$opt_mode" = relink; then
+	  if test prog = "$linkmode" || test relink = "$opt_mode"; then
 	    add_shlibpath=
 	    add_dir=
 	    add=
 	    # Finalize command for both is simple: just hardcode it.
-	    if test "$hardcode_direct" = yes &&
-	       test "$hardcode_direct_absolute" = no; then
-	      add="$libdir/$linklib"
-	    elif test "$hardcode_minus_L" = yes; then
-	      add_dir="-L$libdir"
-	      add="-l$name"
-	    elif test "$hardcode_shlibpath_var" = yes; then
+	    if test yes = "$hardcode_direct" &&
+	       test no = "$hardcode_direct_absolute"; then
+	      add=$libdir/$linklib
+	    elif test yes = "$hardcode_minus_L"; then
+	      add_dir=-L$libdir
+	      add=-l$name
+	    elif test yes = "$hardcode_shlibpath_var"; then
 	      case :$finalize_shlibpath: in
 	      *":$libdir:"*) ;;
 	      *) func_append finalize_shlibpath "$libdir:" ;;
 	      esac
-	      add="-l$name"
-	    elif test "$hardcode_automatic" = yes; then
+	      add=-l$name
+	    elif test yes = "$hardcode_automatic"; then
 	      if test -n "$inst_prefix_dir" &&
-		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
-		add="$inst_prefix_dir$libdir/$linklib"
+		 test -f "$inst_prefix_dir$libdir/$linklib"; then
+		add=$inst_prefix_dir$libdir/$linklib
 	      else
-		add="$libdir/$linklib"
+		add=$libdir/$linklib
 	      fi
 	    else
 	      # We cannot seem to hardcode it, guess we'll fake it.
-	      add_dir="-L$libdir"
+	      add_dir=-L$libdir
 	      # Try looking first in the location we're being installed to.
 	      if test -n "$inst_prefix_dir"; then
 		case $libdir in
@@ -6930,10 +8888,10 @@ func_mode_link ()
 		    ;;
 		esac
 	      fi
-	      add="-l$name"
+	      add=-l$name
 	    fi
 
-	    if test "$linkmode" = prog; then
+	    if test prog = "$linkmode"; then
 	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
 	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
 	    else
@@ -6941,43 +8899,43 @@ func_mode_link ()
 	      test -n "$add" && deplibs="$add $deplibs"
 	    fi
 	  fi
-	elif test "$linkmode" = prog; then
+	elif test prog = "$linkmode"; then
 	  # Here we assume that one of hardcode_direct or hardcode_minus_L
 	  # is not unsupported.  This is valid on all known static and
 	  # shared platforms.
-	  if test "$hardcode_direct" != unsupported; then
-	    test -n "$old_library" && linklib="$old_library"
+	  if test unsupported != "$hardcode_direct"; then
+	    test -n "$old_library" && linklib=$old_library
 	    compile_deplibs="$dir/$linklib $compile_deplibs"
 	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
 	  else
 	    compile_deplibs="-l$name -L$dir $compile_deplibs"
 	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
 	  fi
-	elif test "$build_libtool_libs" = yes; then
+	elif test yes = "$build_libtool_libs"; then
 	  # Not a shared library
-	  if test "$deplibs_check_method" != pass_all; then
+	  if test pass_all != "$deplibs_check_method"; then
 	    # We're trying link a shared library against a static one
 	    # but the system doesn't support it.
 
 	    # Just print a warning and add the library to dependency_libs so
 	    # that the program can be linked against the static library.
 	    echo
-	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
+	    $ECHO "*** Warning: This system cannot link to static lib archive $lib."
 	    echo "*** I have the capability to make that library automatically link in when"
 	    echo "*** you link to this library.  But I can only do this if you have a"
 	    echo "*** shared version of the library, which you do not appear to have."
-	    if test "$module" = yes; then
+	    if test yes = "$module"; then
 	      echo "*** But as you try to build a module library, libtool will still create "
 	      echo "*** a static module, that should work as long as the dlopening application"
 	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
 	      if test -z "$global_symbol_pipe"; then
 		echo
 		echo "*** However, this would only work if libtool was able to extract symbol"
-		echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+		echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
 		echo "*** not find such a program.  So, this module is probably useless."
-		echo "*** \`nm' from GNU binutils and a full rebuild may help."
+		echo "*** 'nm' from GNU binutils and a full rebuild may help."
 	      fi
-	      if test "$build_old_libs" = no; then
+	      if test no = "$build_old_libs"; then
 		build_libtool_libs=module
 		build_old_libs=yes
 	      else
@@ -6990,11 +8948,11 @@ func_mode_link ()
 	  fi
 	fi # link shared/static library?
 
-	if test "$linkmode" = lib; then
+	if test lib = "$linkmode"; then
 	  if test -n "$dependency_libs" &&
-	     { test "$hardcode_into_libs" != yes ||
-	       test "$build_old_libs" = yes ||
-	       test "$link_static" = yes; }; then
+	     { test yes != "$hardcode_into_libs" ||
+	       test yes = "$build_old_libs" ||
+	       test yes = "$link_static"; }; then
 	    # Extract -R from dependency_libs
 	    temp_deplibs=
 	    for libdir in $dependency_libs; do
@@ -7008,12 +8966,12 @@ func_mode_link ()
 	      *) func_append temp_deplibs " $libdir";;
 	      esac
 	    done
-	    dependency_libs="$temp_deplibs"
+	    dependency_libs=$temp_deplibs
 	  fi
 
 	  func_append newlib_search_path " $absdir"
 	  # Link against this library
-	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+	  test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
 	  # ... and its dependency_libs
 	  tmp_libs=
 	  for deplib in $dependency_libs; do
@@ -7023,7 +8981,7 @@ func_mode_link ()
                    func_resolve_sysroot "$func_stripname_result";;
               *) func_resolve_sysroot "$deplib" ;;
             esac
-	    if $opt_preserve_dup_deps ; then
+	    if $opt_preserve_dup_deps; then
 	      case "$tmp_libs " in
 	      *" $func_resolve_sysroot_result "*)
                 func_append specialdeplibs " $func_resolve_sysroot_result" ;;
@@ -7032,12 +8990,12 @@ func_mode_link ()
 	    func_append tmp_libs " $func_resolve_sysroot_result"
 	  done
 
-	  if test "$link_all_deplibs" != no; then
+	  if test no != "$link_all_deplibs"; then
 	    # Add the search paths of all dependency libraries
 	    for deplib in $dependency_libs; do
 	      path=
 	      case $deplib in
-	      -L*) path="$deplib" ;;
+	      -L*) path=$deplib ;;
 	      *.la)
 	        func_resolve_sysroot "$deplib"
 	        deplib=$func_resolve_sysroot_result
@@ -7045,12 +9003,12 @@ func_mode_link ()
 		dir=$func_dirname_result
 		# We need an absolute path.
 		case $dir in
-		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+		[\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;;
 		*)
 		  absdir=`cd "$dir" && pwd`
 		  if test -z "$absdir"; then
-		    func_warning "cannot determine absolute directory name of \`$dir'"
-		    absdir="$dir"
+		    func_warning "cannot determine absolute directory name of '$dir'"
+		    absdir=$dir
 		  fi
 		  ;;
 		esac
@@ -7058,35 +9016,35 @@ func_mode_link ()
 		case $host in
 		*-*-darwin*)
 		  depdepl=
-		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
-		  if test -n "$deplibrary_names" ; then
-		    for tmp in $deplibrary_names ; do
+		  eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
+		  if test -n "$deplibrary_names"; then
+		    for tmp in $deplibrary_names; do
 		      depdepl=$tmp
 		    done
-		    if test -f "$absdir/$objdir/$depdepl" ; then
-		      depdepl="$absdir/$objdir/$depdepl"
-		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
+		    if test -f "$absdir/$objdir/$depdepl"; then
+		      depdepl=$absdir/$objdir/$depdepl
+		      darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
                       if test -z "$darwin_install_name"; then
-                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
+                          darwin_install_name=`$OTOOL64 -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
                       fi
-		      func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
-		      func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
+		      func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl"
+		      func_append linker_flags " -dylib_file $darwin_install_name:$depdepl"
 		      path=
 		    fi
 		  fi
 		  ;;
 		*)
-		  path="-L$absdir/$objdir"
+		  path=-L$absdir/$objdir
 		  ;;
 		esac
 		else
-		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		  eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
 		  test -z "$libdir" && \
-		    func_fatal_error "\`$deplib' is not a valid libtool archive"
+		    func_fatal_error "'$deplib' is not a valid libtool archive"
 		  test "$absdir" != "$libdir" && \
-		    func_warning "\`$deplib' seems to be moved"
+		    func_warning "'$deplib' seems to be moved"
 
-		  path="-L$absdir"
+		  path=-L$absdir
 		fi
 		;;
 	      esac
@@ -7098,23 +9056,23 @@ func_mode_link ()
 	  fi # link_all_deplibs != no
 	fi # linkmode = lib
       done # for deplib in $libs
-      if test "$pass" = link; then
-	if test "$linkmode" = "prog"; then
+      if test link = "$pass"; then
+	if test prog = "$linkmode"; then
 	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
 	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
 	else
 	  compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
 	fi
       fi
-      dependency_libs="$newdependency_libs"
-      if test "$pass" = dlpreopen; then
+      dependency_libs=$newdependency_libs
+      if test dlpreopen = "$pass"; then
 	# Link the dlpreopened libraries before other libraries
 	for deplib in $save_deplibs; do
 	  deplibs="$deplib $deplibs"
 	done
       fi
-      if test "$pass" != dlopen; then
-	if test "$pass" != conv; then
+      if test dlopen != "$pass"; then
+	test conv = "$pass" || {
 	  # Make sure lib_search_path contains only unique directories.
 	  lib_search_path=
 	  for dir in $newlib_search_path; do
@@ -7124,12 +9082,12 @@ func_mode_link ()
 	    esac
 	  done
 	  newlib_search_path=
-	fi
+	}
 
-	if test "$linkmode,$pass" != "prog,link"; then
-	  vars="deplibs"
-	else
+	if test prog,link = "$linkmode,$pass"; then
 	  vars="compile_deplibs finalize_deplibs"
+	else
+	  vars=deplibs
 	fi
 	for var in $vars dependency_libs; do
 	  # Add libraries to $var in reverse order
@@ -7187,62 +9145,93 @@ func_mode_link ()
 	  eval $var=\"$tmp_libs\"
 	done # for var
       fi
+
+      # Add Sun CC postdeps if required:
+      test CXX = "$tagname" && {
+        case $host_os in
+        linux*)
+          case `$CC -V 2>&1 | sed 5q` in
+          *Sun\ C*) # Sun C++ 5.9
+            func_suncc_cstd_abi
+
+            if test no != "$suncc_use_cstd_abi"; then
+              func_append postdeps ' -library=Cstd -library=Crun'
+            fi
+            ;;
+          esac
+          ;;
+
+        solaris*)
+          func_cc_basename "$CC"
+          case $func_cc_basename_result in
+          CC* | sunCC*)
+            func_suncc_cstd_abi
+
+            if test no != "$suncc_use_cstd_abi"; then
+              func_append postdeps ' -library=Cstd -library=Crun'
+            fi
+            ;;
+          esac
+          ;;
+        esac
+      }
+
       # Last step: remove runtime libs from dependency_libs
       # (they stay in deplibs)
       tmp_libs=
-      for i in $dependency_libs ; do
+      for i in $dependency_libs; do
 	case " $predeps $postdeps $compiler_lib_search_path " in
 	*" $i "*)
-	  i=""
+	  i=
 	  ;;
 	esac
-	if test -n "$i" ; then
+	if test -n "$i"; then
 	  func_append tmp_libs " $i"
 	fi
       done
       dependency_libs=$tmp_libs
     done # for pass
-    if test "$linkmode" = prog; then
-      dlfiles="$newdlfiles"
+    if test prog = "$linkmode"; then
+      dlfiles=$newdlfiles
     fi
-    if test "$linkmode" = prog || test "$linkmode" = lib; then
-      dlprefiles="$newdlprefiles"
+    if test prog = "$linkmode" || test lib = "$linkmode"; then
+      dlprefiles=$newdlprefiles
     fi
 
     case $linkmode in
     oldlib)
-      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
-	func_warning "\`-dlopen' is ignored for archives"
+      if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
+	func_warning "'-dlopen' is ignored for archives"
       fi
 
       case " $deplibs" in
       *\ -l* | *\ -L*)
-	func_warning "\`-l' and \`-L' are ignored for archives" ;;
+	func_warning "'-l' and '-L' are ignored for archives" ;;
       esac
 
       test -n "$rpath" && \
-	func_warning "\`-rpath' is ignored for archives"
+	func_warning "'-rpath' is ignored for archives"
 
       test -n "$xrpath" && \
-	func_warning "\`-R' is ignored for archives"
+	func_warning "'-R' is ignored for archives"
 
       test -n "$vinfo" && \
-	func_warning "\`-version-info/-version-number' is ignored for archives"
+	func_warning "'-version-info/-version-number' is ignored for archives"
 
       test -n "$release" && \
-	func_warning "\`-release' is ignored for archives"
+	func_warning "'-release' is ignored for archives"
 
       test -n "$export_symbols$export_symbols_regex" && \
-	func_warning "\`-export-symbols' is ignored for archives"
+	func_warning "'-export-symbols' is ignored for archives"
 
       # Now set the variables for building old libraries.
       build_libtool_libs=no
-      oldlibs="$output"
+      oldlibs=$output
       func_append objs "$old_deplibs"
       ;;
 
     lib)
-      # Make sure we only generate libraries of the form `libNAME.la'.
+      # Make sure we only generate libraries of the form 'libNAME.la'.
       case $outputname in
       lib*)
 	func_stripname 'lib' '.la' "$outputname"
@@ -7251,10 +9240,10 @@ func_mode_link ()
 	eval libname=\"$libname_spec\"
 	;;
       *)
-	test "$module" = no && \
-	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
+	test no = "$module" \
+	  && func_fatal_help "libtool library '$output' must begin with 'lib'"
 
-	if test "$need_lib_prefix" != no; then
+	if test no != "$need_lib_prefix"; then
 	  # Add the "lib" prefix for modules if required
 	  func_stripname '' '.la' "$outputname"
 	  name=$func_stripname_result
@@ -7268,8 +9257,8 @@ func_mode_link ()
       esac
 
       if test -n "$objs"; then
-	if test "$deplibs_check_method" != pass_all; then
-	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
+	if test pass_all != "$deplibs_check_method"; then
+	  func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs"
 	else
 	  echo
 	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
@@ -7278,21 +9267,21 @@ func_mode_link ()
 	fi
       fi
 
-      test "$dlself" != no && \
-	func_warning "\`-dlopen self' is ignored for libtool libraries"
+      test no = "$dlself" \
+	|| func_warning "'-dlopen self' is ignored for libtool libraries"
 
       set dummy $rpath
       shift
-      test "$#" -gt 1 && \
-	func_warning "ignoring multiple \`-rpath's for a libtool library"
+      test 1 -lt "$#" \
+	&& func_warning "ignoring multiple '-rpath's for a libtool library"
 
-      install_libdir="$1"
+      install_libdir=$1
 
       oldlibs=
       if test -z "$rpath"; then
-	if test "$build_libtool_libs" = yes; then
+	if test yes = "$build_libtool_libs"; then
 	  # Building a libtool convenience library.
-	  # Some compilers have problems with a `.al' extension so
+	  # Some compilers have problems with a '.al' extension so
 	  # convenience libraries should have the same extension an
 	  # archive normally would.
 	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
@@ -7301,20 +9290,20 @@ func_mode_link ()
 	fi
 
 	test -n "$vinfo" && \
-	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
+	  func_warning "'-version-info/-version-number' is ignored for convenience libraries"
 
 	test -n "$release" && \
-	  func_warning "\`-release' is ignored for convenience libraries"
+	  func_warning "'-release' is ignored for convenience libraries"
       else
 
 	# Parse the version information argument.
-	save_ifs="$IFS"; IFS=':'
+	save_ifs=$IFS; IFS=:
 	set dummy $vinfo 0 0 0
 	shift
-	IFS="$save_ifs"
+	IFS=$save_ifs
 
 	test -n "$7" && \
-	  func_fatal_help "too many parameters to \`-version-info'"
+	  func_fatal_help "too many parameters to '-version-info'"
 
 	# convert absolute version numbers to libtool ages
 	# this retains compatibility with .la files and attempts
@@ -7322,45 +9311,45 @@ func_mode_link ()
 
 	case $vinfo_number in
 	yes)
-	  number_major="$1"
-	  number_minor="$2"
-	  number_revision="$3"
+	  number_major=$1
+	  number_minor=$2
+	  number_revision=$3
 	  #
 	  # There are really only two kinds -- those that
 	  # use the current revision as the major version
 	  # and those that subtract age and use age as
 	  # a minor version.  But, then there is irix
-	  # which has an extra 1 added just for fun
+	  # that has an extra 1 added just for fun
 	  #
 	  case $version_type in
 	  # correct linux to gnu/linux during the next big refactor
-	  darwin|linux|osf|windows|none)
+	  darwin|freebsd-elf|linux|osf|windows|none)
 	    func_arith $number_major + $number_minor
 	    current=$func_arith_result
-	    age="$number_minor"
-	    revision="$number_revision"
+	    age=$number_minor
+	    revision=$number_revision
 	    ;;
-	  freebsd-aout|freebsd-elf|qnx|sunos)
-	    current="$number_major"
-	    revision="$number_minor"
-	    age="0"
+	  freebsd-aout|qnx|sunos)
+	    current=$number_major
+	    revision=$number_minor
+	    age=0
 	    ;;
 	  irix|nonstopux)
 	    func_arith $number_major + $number_minor
 	    current=$func_arith_result
-	    age="$number_minor"
-	    revision="$number_minor"
+	    age=$number_minor
+	    revision=$number_minor
 	    lt_irix_increment=no
 	    ;;
 	  *)
-	    func_fatal_configuration "$modename: unknown library version type \`$version_type'"
+	    func_fatal_configuration "$modename: unknown library version type '$version_type'"
 	    ;;
 	  esac
 	  ;;
 	no)
-	  current="$1"
-	  revision="$2"
-	  age="$3"
+	  current=$1
+	  revision=$2
+	  age=$3
 	  ;;
 	esac
 
@@ -7368,30 +9357,30 @@ func_mode_link ()
 	case $current in
 	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
 	*)
-	  func_error "CURRENT \`$current' must be a nonnegative integer"
-	  func_fatal_error "\`$vinfo' is not valid version information"
+	  func_error "CURRENT '$current' must be a nonnegative integer"
+	  func_fatal_error "'$vinfo' is not valid version information"
 	  ;;
 	esac
 
 	case $revision in
 	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
 	*)
-	  func_error "REVISION \`$revision' must be a nonnegative integer"
-	  func_fatal_error "\`$vinfo' is not valid version information"
+	  func_error "REVISION '$revision' must be a nonnegative integer"
+	  func_fatal_error "'$vinfo' is not valid version information"
 	  ;;
 	esac
 
 	case $age in
 	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
 	*)
-	  func_error "AGE \`$age' must be a nonnegative integer"
-	  func_fatal_error "\`$vinfo' is not valid version information"
+	  func_error "AGE '$age' must be a nonnegative integer"
+	  func_fatal_error "'$vinfo' is not valid version information"
 	  ;;
 	esac
 
 	if test "$age" -gt "$current"; then
-	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
-	  func_fatal_error "\`$vinfo' is not valid version information"
+	  func_error "AGE '$age' is greater than the current interface number '$current'"
+	  func_fatal_error "'$vinfo' is not valid version information"
 	fi
 
 	# Calculate the version variables.
@@ -7406,26 +9395,36 @@ func_mode_link ()
 	  # verstring for coding it into the library header
 	  func_arith $current - $age
 	  major=.$func_arith_result
-	  versuffix="$major.$age.$revision"
+	  versuffix=$major.$age.$revision
 	  # Darwin ld doesn't like 0 for these options...
 	  func_arith $current + 1
 	  minor_current=$func_arith_result
-	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+	  xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
 	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+          # On Darwin other compilers
+          case $CC in
+              nagfor*)
+                  verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
+                  ;;
+              *)
+                  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+                  ;;
+          esac
 	  ;;
 
 	freebsd-aout)
-	  major=".$current"
-	  versuffix=".$current.$revision";
+	  major=.$current
+	  versuffix=.$current.$revision
 	  ;;
 
 	freebsd-elf)
-	  major=".$current"
-	  versuffix=".$current"
+	  func_arith $current - $age
+	  major=.$func_arith_result
+	  versuffix=$major.$age.$revision
 	  ;;
 
 	irix | nonstopux)
-	  if test "X$lt_irix_increment" = "Xno"; then
+	  if test no = "$lt_irix_increment"; then
 	    func_arith $current - $age
 	  else
 	    func_arith $current - $age + 1
@@ -7436,69 +9435,74 @@ func_mode_link ()
 	    nonstopux) verstring_prefix=nonstopux ;;
 	    *)         verstring_prefix=sgi ;;
 	  esac
-	  verstring="$verstring_prefix$major.$revision"
+	  verstring=$verstring_prefix$major.$revision
 
 	  # Add in all the interfaces that we are compatible with.
 	  loop=$revision
-	  while test "$loop" -ne 0; do
+	  while test 0 -ne "$loop"; do
 	    func_arith $revision - $loop
 	    iface=$func_arith_result
 	    func_arith $loop - 1
 	    loop=$func_arith_result
-	    verstring="$verstring_prefix$major.$iface:$verstring"
+	    verstring=$verstring_prefix$major.$iface:$verstring
 	  done
 
-	  # Before this point, $major must not contain `.'.
+	  # Before this point, $major must not contain '.'.
 	  major=.$major
-	  versuffix="$major.$revision"
+	  versuffix=$major.$revision
 	  ;;
 
 	linux) # correct to gnu/linux during the next big refactor
 	  func_arith $current - $age
 	  major=.$func_arith_result
-	  versuffix="$major.$age.$revision"
+	  versuffix=$major.$age.$revision
 	  ;;
 
 	osf)
 	  func_arith $current - $age
 	  major=.$func_arith_result
-	  versuffix=".$current.$age.$revision"
-	  verstring="$current.$age.$revision"
+	  versuffix=.$current.$age.$revision
+	  verstring=$current.$age.$revision
 
 	  # Add in all the interfaces that we are compatible with.
 	  loop=$age
-	  while test "$loop" -ne 0; do
+	  while test 0 -ne "$loop"; do
 	    func_arith $current - $loop
 	    iface=$func_arith_result
 	    func_arith $loop - 1
 	    loop=$func_arith_result
-	    verstring="$verstring:${iface}.0"
+	    verstring=$verstring:$iface.0
 	  done
 
 	  # Make executables depend on our current version.
-	  func_append verstring ":${current}.0"
+	  func_append verstring ":$current.0"
 	  ;;
 
 	qnx)
-	  major=".$current"
-	  versuffix=".$current"
+	  major=.$current
+	  versuffix=.$current
+	  ;;
+
+	sco)
+	  major=.$current
+	  versuffix=.$current
 	  ;;
 
 	sunos)
-	  major=".$current"
-	  versuffix=".$current.$revision"
+	  major=.$current
+	  versuffix=.$current.$revision
 	  ;;
 
 	windows)
 	  # Use '-' rather than '.', since we only want one
-	  # extension on DOS 8.3 filesystems.
+	  # extension on DOS 8.3 file systems.
 	  func_arith $current - $age
 	  major=$func_arith_result
-	  versuffix="-$major"
+	  versuffix=-$major
 	  ;;
 
 	*)
-	  func_fatal_configuration "unknown library version type \`$version_type'"
+	  func_fatal_configuration "unknown library version type '$version_type'"
 	  ;;
 	esac
 
@@ -7512,42 +9516,45 @@ func_mode_link ()
 	    verstring=
 	    ;;
 	  *)
-	    verstring="0.0"
+	    verstring=0.0
 	    ;;
 	  esac
-	  if test "$need_version" = no; then
+	  if test no = "$need_version"; then
 	    versuffix=
 	  else
-	    versuffix=".0.0"
+	    versuffix=.0.0
 	  fi
 	fi
 
 	# Remove version info from name if versioning should be avoided
-	if test "$avoid_version" = yes && test "$need_version" = no; then
+	if test yes,no = "$avoid_version,$need_version"; then
 	  major=
 	  versuffix=
-	  verstring=""
+	  verstring=
 	fi
 
 	# Check to see if the archive will have undefined symbols.
-	if test "$allow_undefined" = yes; then
-	  if test "$allow_undefined_flag" = unsupported; then
-	    func_warning "undefined symbols not allowed in $host shared libraries"
-	    build_libtool_libs=no
-	    build_old_libs=yes
+	if test yes = "$allow_undefined"; then
+	  if test unsupported = "$allow_undefined_flag"; then
+	    if test yes = "$build_old_libs"; then
+	      func_warning "undefined symbols not allowed in $host shared libraries; building static only"
+	      build_libtool_libs=no
+	    else
+	      func_fatal_error "can't build $host shared library unless -no-undefined is specified"
+	    fi
 	  fi
 	else
 	  # Don't allow undefined symbols.
-	  allow_undefined_flag="$no_undefined_flag"
+	  allow_undefined_flag=$no_undefined_flag
 	fi
 
       fi
 
-      func_generate_dlsyms "$libname" "$libname" "yes"
+      func_generate_dlsyms "$libname" "$libname" :
       func_append libobjs " $symfileobj"
-      test "X$libobjs" = "X " && libobjs=
+      test " " = "$libobjs" && libobjs=
 
-      if test "$opt_mode" != relink; then
+      if test relink != "$opt_mode"; then
 	# Remove our outputs, but don't remove object files since they
 	# may have been created when compiling PIC objects.
 	removelist=
@@ -7556,8 +9563,8 @@ func_mode_link ()
 	  case $p in
 	    *.$objext | *.gcno)
 	       ;;
-	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
-	       if test "X$precious_files_regex" != "X"; then
+	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*)
+	       if test -n "$precious_files_regex"; then
 		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
 		 then
 		   continue
@@ -7573,11 +9580,11 @@ func_mode_link ()
       fi
 
       # Now set the variables for building old libraries.
-      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+      if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then
 	func_append oldlibs " $output_objdir/$libname.$libext"
 
 	# Transform .lo files to .o files.
-	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
+	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP`
       fi
 
       # Eliminate all temporary directories.
@@ -7598,13 +9605,13 @@ func_mode_link ()
 	  *) func_append finalize_rpath " $libdir" ;;
 	  esac
 	done
-	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
+	if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then
 	  dependency_libs="$temp_xrpath $dependency_libs"
 	fi
       fi
 
       # Make sure dlfiles contains only unique files that won't be dlpreopened
-      old_dlfiles="$dlfiles"
+      old_dlfiles=$dlfiles
       dlfiles=
       for lib in $old_dlfiles; do
 	case " $dlprefiles $dlfiles " in
@@ -7614,7 +9621,7 @@ func_mode_link ()
       done
 
       # Make sure dlprefiles contains only unique files
-      old_dlprefiles="$dlprefiles"
+      old_dlprefiles=$dlprefiles
       dlprefiles=
       for lib in $old_dlprefiles; do
 	case "$dlprefiles " in
@@ -7623,7 +9630,7 @@ func_mode_link ()
 	esac
       done
 
-      if test "$build_libtool_libs" = yes; then
+      if test yes = "$build_libtool_libs"; then
 	if test -n "$rpath"; then
 	  case $host in
 	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
@@ -7647,7 +9654,7 @@ func_mode_link ()
 	    ;;
 	  *)
 	    # Add libc to deplibs on all other systems if necessary.
-	    if test "$build_libtool_need_lc" = "yes"; then
+	    if test yes = "$build_libtool_need_lc"; then
 	      func_append deplibs " -lc"
 	    fi
 	    ;;
@@ -7663,9 +9670,9 @@ func_mode_link ()
 	# I'm not sure if I'm treating the release correctly.  I think
 	# release should show up in the -l (ie -lgmp5) so we don't want to
 	# add it in twice.  Is that correct?
-	release=""
-	versuffix=""
-	major=""
+	release=
+	versuffix=
+	major=
 	newdeplibs=
 	droppeddeps=no
 	case $deplibs_check_method in
@@ -7694,20 +9701,20 @@ EOF
 	      -l*)
 		func_stripname -l '' "$i"
 		name=$func_stripname_result
-		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		if test yes = "$allow_libtool_libs_with_static_runtimes"; then
 		  case " $predeps $postdeps " in
 		  *" $i "*)
 		    func_append newdeplibs " $i"
-		    i=""
+		    i=
 		    ;;
 		  esac
 		fi
-		if test -n "$i" ; then
+		if test -n "$i"; then
 		  libname=`eval "\\$ECHO \"$libname_spec\""`
 		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
 		  set dummy $deplib_matches; shift
 		  deplib_match=$1
-		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
 		    func_append newdeplibs " $i"
 		  else
 		    droppeddeps=yes
@@ -7737,20 +9744,20 @@ EOF
 		$opt_dry_run || $RM conftest
 		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
 		  ldd_output=`ldd conftest`
-		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		  if test yes = "$allow_libtool_libs_with_static_runtimes"; then
 		    case " $predeps $postdeps " in
 		    *" $i "*)
 		      func_append newdeplibs " $i"
-		      i=""
+		      i=
 		      ;;
 		    esac
 		  fi
-		  if test -n "$i" ; then
+		  if test -n "$i"; then
 		    libname=`eval "\\$ECHO \"$libname_spec\""`
 		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
 		    set dummy $deplib_matches; shift
 		    deplib_match=$1
-		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
 		      func_append newdeplibs " $i"
 		    else
 		      droppeddeps=yes
@@ -7787,24 +9794,24 @@ EOF
 	    -l*)
 	      func_stripname -l '' "$a_deplib"
 	      name=$func_stripname_result
-	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+	      if test yes = "$allow_libtool_libs_with_static_runtimes"; then
 		case " $predeps $postdeps " in
 		*" $a_deplib "*)
 		  func_append newdeplibs " $a_deplib"
-		  a_deplib=""
+		  a_deplib=
 		  ;;
 		esac
 	      fi
-	      if test -n "$a_deplib" ; then
+	      if test -n "$a_deplib"; then
 		libname=`eval "\\$ECHO \"$libname_spec\""`
 		if test -n "$file_magic_glob"; then
 		  libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
 		else
 		  libnameglob=$libname
 		fi
-		test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
+		test yes = "$want_nocaseglob" && nocaseglob=`shopt -p nocaseglob`
 		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
-		  if test "$want_nocaseglob" = yes; then
+		  if test yes = "$want_nocaseglob"; then
 		    shopt -s nocaseglob
 		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
 		    $nocaseglob
@@ -7822,25 +9829,25 @@ EOF
 		      # We might still enter an endless loop, since a link
 		      # loop can be closed while we follow links,
 		      # but so what?
-		      potlib="$potent_lib"
+		      potlib=$potent_lib
 		      while test -h "$potlib" 2>/dev/null; do
-			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
+			potliblink=`ls -ld $potlib | $SED 's/.* -> //'`
 			case $potliblink in
-			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
-			*) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
+			[\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;;
+			*) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";;
 			esac
 		      done
 		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
 			 $SED -e 10q |
 			 $EGREP "$file_magic_regex" > /dev/null; then
 			func_append newdeplibs " $a_deplib"
-			a_deplib=""
+			a_deplib=
 			break 2
 		      fi
 		  done
 		done
 	      fi
-	      if test -n "$a_deplib" ; then
+	      if test -n "$a_deplib"; then
 		droppeddeps=yes
 		echo
 		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
@@ -7848,7 +9855,7 @@ EOF
 		echo "*** you link to this library.  But I can only do this if you have a"
 		echo "*** shared version of the library, which you do not appear to have"
 		echo "*** because I did check the linker path looking for a file starting"
-		if test -z "$potlib" ; then
+		if test -z "$potlib"; then
 		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
 		else
 		  $ECHO "*** with $libname and none of the candidates passed a file format test"
@@ -7871,30 +9878,30 @@ EOF
 	    -l*)
 	      func_stripname -l '' "$a_deplib"
 	      name=$func_stripname_result
-	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+	      if test yes = "$allow_libtool_libs_with_static_runtimes"; then
 		case " $predeps $postdeps " in
 		*" $a_deplib "*)
 		  func_append newdeplibs " $a_deplib"
-		  a_deplib=""
+		  a_deplib=
 		  ;;
 		esac
 	      fi
-	      if test -n "$a_deplib" ; then
+	      if test -n "$a_deplib"; then
 		libname=`eval "\\$ECHO \"$libname_spec\""`
 		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
 		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
 		  for potent_lib in $potential_libs; do
-		    potlib="$potent_lib" # see symlink-check above in file_magic test
+		    potlib=$potent_lib # see symlink-check above in file_magic test
 		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
 		       $EGREP "$match_pattern_regex" > /dev/null; then
 		      func_append newdeplibs " $a_deplib"
-		      a_deplib=""
+		      a_deplib=
 		      break 2
 		    fi
 		  done
 		done
 	      fi
-	      if test -n "$a_deplib" ; then
+	      if test -n "$a_deplib"; then
 		droppeddeps=yes
 		echo
 		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
@@ -7902,7 +9909,7 @@ EOF
 		echo "*** you link to this library.  But I can only do this if you have a"
 		echo "*** shared version of the library, which you do not appear to have"
 		echo "*** because I did check the linker path looking for a file starting"
-		if test -z "$potlib" ; then
+		if test -z "$potlib"; then
 		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
 		else
 		  $ECHO "*** with $libname and none of the candidates passed a file format test"
@@ -7918,18 +9925,18 @@ EOF
 	  done # Gone through all deplibs.
 	  ;;
 	none | unknown | *)
-	  newdeplibs=""
+	  newdeplibs=
 	  tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
-	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-	    for i in $predeps $postdeps ; do
+	  if test yes = "$allow_libtool_libs_with_static_runtimes"; then
+	    for i in $predeps $postdeps; do
 	      # can't use Xsed below, because $i might contain '/'
-	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
+	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"`
 	    done
 	  fi
 	  case $tmp_deplibs in
 	  *[!\	\ ]*)
 	    echo
-	    if test "X$deplibs_check_method" = "Xnone"; then
+	    if test none = "$deplibs_check_method"; then
 	      echo "*** Warning: inter-library dependencies are not supported in this platform."
 	    else
 	      echo "*** Warning: inter-library dependencies are not known to be supported."
@@ -7953,8 +9960,8 @@ EOF
 	  ;;
 	esac
 
-	if test "$droppeddeps" = yes; then
-	  if test "$module" = yes; then
+	if test yes = "$droppeddeps"; then
+	  if test yes = "$module"; then
 	    echo
 	    echo "*** Warning: libtool could not satisfy all declared inter-library"
 	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
@@ -7963,12 +9970,12 @@ EOF
 	    if test -z "$global_symbol_pipe"; then
 	      echo
 	      echo "*** However, this would only work if libtool was able to extract symbol"
-	      echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+	      echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
 	      echo "*** not find such a program.  So, this module is probably useless."
-	      echo "*** \`nm' from GNU binutils and a full rebuild may help."
+	      echo "*** 'nm' from GNU binutils and a full rebuild may help."
 	    fi
-	    if test "$build_old_libs" = no; then
-	      oldlibs="$output_objdir/$libname.$libext"
+	    if test no = "$build_old_libs"; then
+	      oldlibs=$output_objdir/$libname.$libext
 	      build_libtool_libs=module
 	      build_old_libs=yes
 	    else
@@ -7979,14 +9986,14 @@ EOF
 	    echo "*** automatically added whenever a program is linked with this library"
 	    echo "*** or is declared to -dlopen it."
 
-	    if test "$allow_undefined" = no; then
+	    if test no = "$allow_undefined"; then
 	      echo
 	      echo "*** Since this library must not contain undefined symbols,"
 	      echo "*** because either the platform does not support them or"
 	      echo "*** it was explicitly requested with -no-undefined,"
 	      echo "*** libtool will only create a static version of it."
-	      if test "$build_old_libs" = no; then
-		oldlibs="$output_objdir/$libname.$libext"
+	      if test no = "$build_old_libs"; then
+		oldlibs=$output_objdir/$libname.$libext
 		build_libtool_libs=module
 		build_old_libs=yes
 	      else
@@ -8032,7 +10039,7 @@ EOF
 	*) func_append new_libs " $deplib" ;;
 	esac
       done
-      deplibs="$new_libs"
+      deplibs=$new_libs
 
       # All the library-specific variables (install_libdir is set above).
       library_names=
@@ -8040,25 +10047,25 @@ EOF
       dlname=
 
       # Test again, we may have decided not to build it any more
-      if test "$build_libtool_libs" = yes; then
-	# Remove ${wl} instances when linking with ld.
+      if test yes = "$build_libtool_libs"; then
+	# Remove $wl instances when linking with ld.
 	# FIXME: should test the right _cmds variable.
 	case $archive_cmds in
 	  *\$LD\ *) wl= ;;
         esac
-	if test "$hardcode_into_libs" = yes; then
+	if test yes = "$hardcode_into_libs"; then
 	  # Hardcode the library paths
 	  hardcode_libdirs=
 	  dep_rpath=
-	  rpath="$finalize_rpath"
-	  test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
+	  rpath=$finalize_rpath
+	  test relink = "$opt_mode" || rpath=$compile_rpath$rpath
 	  for libdir in $rpath; do
 	    if test -n "$hardcode_libdir_flag_spec"; then
 	      if test -n "$hardcode_libdir_separator"; then
 		func_replace_sysroot "$libdir"
 		libdir=$func_replace_sysroot_result
 		if test -z "$hardcode_libdirs"; then
-		  hardcode_libdirs="$libdir"
+		  hardcode_libdirs=$libdir
 		else
 		  # Just accumulate the unique libdirs.
 		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
@@ -8083,7 +10090,7 @@ EOF
 	  # Substitute the hardcoded libdirs into the rpath.
 	  if test -n "$hardcode_libdir_separator" &&
 	     test -n "$hardcode_libdirs"; then
-	    libdir="$hardcode_libdirs"
+	    libdir=$hardcode_libdirs
 	    eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
 	  fi
 	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
@@ -8097,8 +10104,8 @@ EOF
 	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
 	fi
 
-	shlibpath="$finalize_shlibpath"
-	test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+	shlibpath=$finalize_shlibpath
+	test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath
 	if test -n "$shlibpath"; then
 	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
 	fi
@@ -8108,19 +10115,19 @@ EOF
 	eval library_names=\"$library_names_spec\"
 	set dummy $library_names
 	shift
-	realname="$1"
+	realname=$1
 	shift
 
 	if test -n "$soname_spec"; then
 	  eval soname=\"$soname_spec\"
 	else
-	  soname="$realname"
+	  soname=$realname
 	fi
 	if test -z "$dlname"; then
 	  dlname=$soname
 	fi
 
-	lib="$output_objdir/$realname"
+	lib=$output_objdir/$realname
 	linknames=
 	for link
 	do
@@ -8134,7 +10141,7 @@ EOF
 	delfiles=
 	if test -n "$export_symbols" && test -n "$include_expsyms"; then
 	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
-	  export_symbols="$output_objdir/$libname.uexp"
+	  export_symbols=$output_objdir/$libname.uexp
 	  func_append delfiles " $export_symbols"
 	fi
 
@@ -8143,31 +10150,31 @@ EOF
 	cygwin* | mingw* | cegcc*)
 	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
 	    # exporting using user supplied symfile
-	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
+	    func_dll_def_p "$export_symbols" || {
 	      # and it's NOT already a .def file. Must figure out
 	      # which of the given symbols are data symbols and tag
 	      # them as such. So, trigger use of export_symbols_cmds.
 	      # export_symbols gets reassigned inside the "prepare
 	      # the list of exported symbols" if statement, so the
 	      # include_expsyms logic still works.
-	      orig_export_symbols="$export_symbols"
+	      orig_export_symbols=$export_symbols
 	      export_symbols=
 	      always_export_symbols=yes
-	    fi
+	    }
 	  fi
 	  ;;
 	esac
 
 	# Prepare the list of exported symbols
 	if test -z "$export_symbols"; then
-	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
-	    func_verbose "generating symbol list for \`$libname.la'"
-	    export_symbols="$output_objdir/$libname.exp"
+	  if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then
+	    func_verbose "generating symbol list for '$libname.la'"
+	    export_symbols=$output_objdir/$libname.exp
 	    $opt_dry_run || $RM $export_symbols
 	    cmds=$export_symbols_cmds
-	    save_ifs="$IFS"; IFS='~'
+	    save_ifs=$IFS; IFS='~'
 	    for cmd1 in $cmds; do
-	      IFS="$save_ifs"
+	      IFS=$save_ifs
 	      # Take the normal branch if the nm_file_list_spec branch
 	      # doesn't work or if tool conversion is not needed.
 	      case $nm_file_list_spec~$to_tool_file_cmd in
@@ -8181,7 +10188,7 @@ EOF
 		  try_normal_branch=no
 		  ;;
 	      esac
-	      if test "$try_normal_branch" = yes \
+	      if test yes = "$try_normal_branch" \
 		 && { test "$len" -lt "$max_cmd_len" \
 		      || test "$max_cmd_len" -le -1; }
 	      then
@@ -8192,7 +10199,7 @@ EOF
 		output_la=$func_basename_result
 		save_libobjs=$libobjs
 		save_output=$output
-		output=${output_objdir}/${output_la}.nm
+		output=$output_objdir/$output_la.nm
 		func_to_tool_file "$output"
 		libobjs=$nm_file_list_spec$func_to_tool_file_result
 		func_append delfiles " $output"
@@ -8215,8 +10222,8 @@ EOF
 		break
 	      fi
 	    done
-	    IFS="$save_ifs"
-	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
+	    IFS=$save_ifs
+	    if test -n "$export_symbols_regex" && test : != "$skipped_export"; then
 	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
 	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
 	    fi
@@ -8224,16 +10231,16 @@ EOF
 	fi
 
 	if test -n "$export_symbols" && test -n "$include_expsyms"; then
-	  tmp_export_symbols="$export_symbols"
-	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
+	  tmp_export_symbols=$export_symbols
+	  test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols
 	  $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
 	fi
 
-	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
+	if test : != "$skipped_export" && test -n "$orig_export_symbols"; then
 	  # The given exports_symbols file has to be filtered, so filter it.
-	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
+	  func_verbose "filter symbol list for '$libname.la' to tag DATA exports"
 	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
-	  # 's' commands which not all seds can handle. GNU sed should be fine
+	  # 's' commands, which not all seds can handle. GNU sed should be fine
 	  # though. Also, the filter scales superlinearly with the number of
 	  # global variables. join(1) would be nice here, but unfortunately
 	  # isn't a blessed tool.
@@ -8252,11 +10259,11 @@ EOF
 	    ;;
 	  esac
 	done
-	deplibs="$tmp_deplibs"
+	deplibs=$tmp_deplibs
 
 	if test -n "$convenience"; then
 	  if test -n "$whole_archive_flag_spec" &&
-	    test "$compiler_needs_object" = yes &&
+	    test yes = "$compiler_needs_object" &&
 	    test -z "$libobjs"; then
 	    # extract the archives, so we have objects to list.
 	    # TODO: could optimize this to just extract one archive.
@@ -8267,7 +10274,7 @@ EOF
 	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
 	    test "X$libobjs" = "X " && libobjs=
 	  else
-	    gentop="$output_objdir/${outputname}x"
+	    gentop=$output_objdir/${outputname}x
 	    func_append generated " $gentop"
 
 	    func_extract_archives $gentop $convenience
@@ -8276,18 +10283,18 @@ EOF
 	  fi
 	fi
 
-	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+	if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then
 	  eval flag=\"$thread_safe_flag_spec\"
 	  func_append linker_flags " $flag"
 	fi
 
 	# Make a backup of the uninstalled library when relinking
-	if test "$opt_mode" = relink; then
+	if test relink = "$opt_mode"; then
 	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
 	fi
 
 	# Do each of the archive commands.
-	if test "$module" = yes && test -n "$module_cmds" ; then
+	if test yes = "$module" && test -n "$module_cmds"; then
 	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
 	    eval test_cmds=\"$module_expsym_cmds\"
 	    cmds=$module_expsym_cmds
@@ -8305,7 +10312,7 @@ EOF
 	  fi
 	fi
 
-	if test "X$skipped_export" != "X:" &&
+	if test : != "$skipped_export" &&
 	   func_len " $test_cmds" &&
 	   len=$func_len_result &&
 	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
@@ -8338,8 +10345,8 @@ EOF
 	  last_robj=
 	  k=1
 
-	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
-	    output=${output_objdir}/${output_la}.lnkscript
+	  if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then
+	    output=$output_objdir/$output_la.lnkscript
 	    func_verbose "creating GNU ld script: $output"
 	    echo 'INPUT (' > $output
 	    for obj in $save_libobjs
@@ -8351,14 +10358,14 @@ EOF
 	    func_append delfiles " $output"
 	    func_to_tool_file "$output"
 	    output=$func_to_tool_file_result
-	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
-	    output=${output_objdir}/${output_la}.lnk
+	  elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then
+	    output=$output_objdir/$output_la.lnk
 	    func_verbose "creating linker input file list: $output"
 	    : > $output
 	    set x $save_libobjs
 	    shift
 	    firstobj=
-	    if test "$compiler_needs_object" = yes; then
+	    if test yes = "$compiler_needs_object"; then
 	      firstobj="$1 "
 	      shift
 	    fi
@@ -8373,7 +10380,7 @@ EOF
 	  else
 	    if test -n "$save_libobjs"; then
 	      func_verbose "creating reloadable object files..."
-	      output=$output_objdir/$output_la-${k}.$objext
+	      output=$output_objdir/$output_la-$k.$objext
 	      eval test_cmds=\"$reload_cmds\"
 	      func_len " $test_cmds"
 	      len0=$func_len_result
@@ -8385,13 +10392,13 @@ EOF
 		func_len " $obj"
 		func_arith $len + $func_len_result
 		len=$func_arith_result
-		if test "X$objlist" = X ||
+		if test -z "$objlist" ||
 		   test "$len" -lt "$max_cmd_len"; then
 		  func_append objlist " $obj"
 		else
 		  # The command $test_cmds is almost too long, add a
 		  # command to the queue.
-		  if test "$k" -eq 1 ; then
+		  if test 1 -eq "$k"; then
 		    # The first file doesn't have a previous command to add.
 		    reload_objs=$objlist
 		    eval concat_cmds=\"$reload_cmds\"
@@ -8401,10 +10408,10 @@ EOF
 		    reload_objs="$objlist $last_robj"
 		    eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
 		  fi
-		  last_robj=$output_objdir/$output_la-${k}.$objext
+		  last_robj=$output_objdir/$output_la-$k.$objext
 		  func_arith $k + 1
 		  k=$func_arith_result
-		  output=$output_objdir/$output_la-${k}.$objext
+		  output=$output_objdir/$output_la-$k.$objext
 		  objlist=" $obj"
 		  func_len " $last_robj"
 		  func_arith $len0 + $func_len_result
@@ -8416,9 +10423,9 @@ EOF
 	      # files will link in the last one created.
 	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
 	      reload_objs="$objlist $last_robj"
-	      eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
+	      eval concat_cmds=\"\$concat_cmds$reload_cmds\"
 	      if test -n "$last_robj"; then
-	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
+	        eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
 	      fi
 	      func_append delfiles " $output"
 
@@ -8426,9 +10433,9 @@ EOF
 	      output=
 	    fi
 
-	    if ${skipped_export-false}; then
-	      func_verbose "generating symbol list for \`$libname.la'"
-	      export_symbols="$output_objdir/$libname.exp"
+	    ${skipped_export-false} && {
+	      func_verbose "generating symbol list for '$libname.la'"
+	      export_symbols=$output_objdir/$libname.exp
 	      $opt_dry_run || $RM $export_symbols
 	      libobjs=$output
 	      # Append the command to create the export file.
@@ -8437,16 +10444,16 @@ EOF
 	      if test -n "$last_robj"; then
 		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
 	      fi
-	    fi
+	    }
 
 	    test -n "$save_libobjs" &&
 	      func_verbose "creating a temporary reloadable object file: $output"
 
 	    # Loop through the commands generated above and execute them.
-	    save_ifs="$IFS"; IFS='~'
+	    save_ifs=$IFS; IFS='~'
 	    for cmd in $concat_cmds; do
-	      IFS="$save_ifs"
-	      $opt_silent || {
+	      IFS=$save_ifs
+	      $opt_quiet || {
 		  func_quote_for_expand "$cmd"
 		  eval "func_echo $func_quote_for_expand_result"
 	      }
@@ -8454,7 +10461,7 @@ EOF
 		lt_exit=$?
 
 		# Restore the uninstalled library and exit
-		if test "$opt_mode" = relink; then
+		if test relink = "$opt_mode"; then
 		  ( cd "$output_objdir" && \
 		    $RM "${realname}T" && \
 		    $MV "${realname}U" "$realname" )
@@ -8463,7 +10470,7 @@ EOF
 		exit $lt_exit
 	      }
 	    done
-	    IFS="$save_ifs"
+	    IFS=$save_ifs
 
 	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
 	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
@@ -8471,18 +10478,18 @@ EOF
 	    fi
 	  fi
 
-          if ${skipped_export-false}; then
+          ${skipped_export-false} && {
 	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
-	      tmp_export_symbols="$export_symbols"
-	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
+	      tmp_export_symbols=$export_symbols
+	      test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols
 	      $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
 	    fi
 
 	    if test -n "$orig_export_symbols"; then
 	      # The given exports_symbols file has to be filtered, so filter it.
-	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
+	      func_verbose "filter symbol list for '$libname.la' to tag DATA exports"
 	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
-	      # 's' commands which not all seds can handle. GNU sed should be fine
+	      # 's' commands, which not all seds can handle. GNU sed should be fine
 	      # though. Also, the filter scales superlinearly with the number of
 	      # global variables. join(1) would be nice here, but unfortunately
 	      # isn't a blessed tool.
@@ -8491,7 +10498,7 @@ EOF
 	      export_symbols=$output_objdir/$libname.def
 	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
 	    fi
-	  fi
+	  }
 
 	  libobjs=$output
 	  # Restore the value of output.
@@ -8505,7 +10512,7 @@ EOF
 	  # value of $libobjs for piecewise linking.
 
 	  # Do each of the archive commands.
-	  if test "$module" = yes && test -n "$module_cmds" ; then
+	  if test yes = "$module" && test -n "$module_cmds"; then
 	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
 	      cmds=$module_expsym_cmds
 	    else
@@ -8527,7 +10534,7 @@ EOF
 
 	# Add any objects from preloaded convenience libraries
 	if test -n "$dlprefiles"; then
-	  gentop="$output_objdir/${outputname}x"
+	  gentop=$output_objdir/${outputname}x
 	  func_append generated " $gentop"
 
 	  func_extract_archives $gentop $dlprefiles
@@ -8535,11 +10542,12 @@ EOF
 	  test "X$libobjs" = "X " && libobjs=
 	fi
 
-	save_ifs="$IFS"; IFS='~'
+	save_ifs=$IFS; IFS='~'
 	for cmd in $cmds; do
-	  IFS="$save_ifs"
+	  IFS=$sp$nl
 	  eval cmd=\"$cmd\"
-	  $opt_silent || {
+	  IFS=$save_ifs
+	  $opt_quiet || {
 	    func_quote_for_expand "$cmd"
 	    eval "func_echo $func_quote_for_expand_result"
 	  }
@@ -8547,7 +10555,7 @@ EOF
 	    lt_exit=$?
 
 	    # Restore the uninstalled library and exit
-	    if test "$opt_mode" = relink; then
+	    if test relink = "$opt_mode"; then
 	      ( cd "$output_objdir" && \
 	        $RM "${realname}T" && \
 		$MV "${realname}U" "$realname" )
@@ -8556,10 +10564,10 @@ EOF
 	    exit $lt_exit
 	  }
 	done
-	IFS="$save_ifs"
+	IFS=$save_ifs
 
 	# Restore the uninstalled library and exit
-	if test "$opt_mode" = relink; then
+	if test relink = "$opt_mode"; then
 	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
 
 	  if test -n "$convenience"; then
@@ -8579,39 +10587,39 @@ EOF
 	done
 
 	# If -module or -export-dynamic was specified, set the dlname.
-	if test "$module" = yes || test "$export_dynamic" = yes; then
+	if test yes = "$module" || test yes = "$export_dynamic"; then
 	  # On all known operating systems, these are identical.
-	  dlname="$soname"
+	  dlname=$soname
 	fi
       fi
       ;;
 
     obj)
-      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
-	func_warning "\`-dlopen' is ignored for objects"
+      if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
+	func_warning "'-dlopen' is ignored for objects"
       fi
 
       case " $deplibs" in
       *\ -l* | *\ -L*)
-	func_warning "\`-l' and \`-L' are ignored for objects" ;;
+	func_warning "'-l' and '-L' are ignored for objects" ;;
       esac
 
       test -n "$rpath" && \
-	func_warning "\`-rpath' is ignored for objects"
+	func_warning "'-rpath' is ignored for objects"
 
       test -n "$xrpath" && \
-	func_warning "\`-R' is ignored for objects"
+	func_warning "'-R' is ignored for objects"
 
       test -n "$vinfo" && \
-	func_warning "\`-version-info' is ignored for objects"
+	func_warning "'-version-info' is ignored for objects"
 
       test -n "$release" && \
-	func_warning "\`-release' is ignored for objects"
+	func_warning "'-release' is ignored for objects"
 
       case $output in
       *.lo)
 	test -n "$objs$old_deplibs" && \
-	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
+	  func_fatal_error "cannot build library object '$output' from non-libtool objects"
 
 	libobj=$output
 	func_lo2o "$libobj"
@@ -8619,7 +10627,7 @@ EOF
 	;;
       *)
 	libobj=
-	obj="$output"
+	obj=$output
 	;;
       esac
 
@@ -8632,17 +10640,19 @@ EOF
       # the extraction.
       reload_conv_objs=
       gentop=
-      # reload_cmds runs $LD directly, so let us get rid of
-      # -Wl from whole_archive_flag_spec and hope we can get by with
-      # turning comma into space..
-      wl=
-
+      # if reload_cmds runs $LD directly, get rid of -Wl from
+      # whole_archive_flag_spec and hope we can get by with turning comma
+      # into space.
+      case $reload_cmds in
+        *\$LD[\ \$]*) wl= ;;
+      esac
       if test -n "$convenience"; then
 	if test -n "$whole_archive_flag_spec"; then
 	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
-	  reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
+	  test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
+	  reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags
 	else
-	  gentop="$output_objdir/${obj}x"
+	  gentop=$output_objdir/${obj}x
 	  func_append generated " $gentop"
 
 	  func_extract_archives $gentop $convenience
@@ -8651,12 +10661,12 @@ EOF
       fi
 
       # If we're not building shared, we need to use non_pic_objs
-      test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
+      test yes = "$build_libtool_libs" || libobjs=$non_pic_objects
 
       # Create the old-style object.
-      reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+      reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs
 
-      output="$obj"
+      output=$obj
       func_execute_cmds "$reload_cmds" 'exit $?'
 
       # Exit if we aren't doing a library object file.
@@ -8668,7 +10678,7 @@ EOF
 	exit $EXIT_SUCCESS
       fi
 
-      if test "$build_libtool_libs" != yes; then
+      test yes = "$build_libtool_libs" || {
 	if test -n "$gentop"; then
 	  func_show_eval '${RM}r "$gentop"'
 	fi
@@ -8678,12 +10688,12 @@ EOF
 	# $show "echo timestamp > $libobj"
 	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
 	exit $EXIT_SUCCESS
-      fi
+      }
 
-      if test -n "$pic_flag" || test "$pic_mode" != default; then
+      if test -n "$pic_flag" || test default != "$pic_mode"; then
 	# Only do commands if we really have different PIC objects.
 	reload_objs="$libobjs $reload_conv_objs"
-	output="$libobj"
+	output=$libobj
 	func_execute_cmds "$reload_cmds" 'exit $?'
       fi
 
@@ -8700,16 +10710,14 @@ EOF
 	          output=$func_stripname_result.exe;;
       esac
       test -n "$vinfo" && \
-	func_warning "\`-version-info' is ignored for programs"
+	func_warning "'-version-info' is ignored for programs"
 
       test -n "$release" && \
-	func_warning "\`-release' is ignored for programs"
+	func_warning "'-release' is ignored for programs"
 
-      test "$preload" = yes \
-        && test "$dlopen_support" = unknown \
-	&& test "$dlopen_self" = unknown \
-	&& test "$dlopen_self_static" = unknown && \
-	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
+      $preload \
+	&& test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \
+	&& func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support."
 
       case $host in
       *-*-rhapsody* | *-*-darwin1.[012])
@@ -8723,11 +10731,11 @@ EOF
       *-*-darwin*)
 	# Don't allow lazy linking, it breaks C++ global constructors
 	# But is supposedly fixed on 10.4 or later (yay!).
-	if test "$tagname" = CXX ; then
+	if test CXX = "$tagname"; then
 	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
 	    10.[0123])
-	      func_append compile_command " ${wl}-bind_at_load"
-	      func_append finalize_command " ${wl}-bind_at_load"
+	      func_append compile_command " $wl-bind_at_load"
+	      func_append finalize_command " $wl-bind_at_load"
 	    ;;
 	  esac
 	fi
@@ -8763,7 +10771,7 @@ EOF
 	*) func_append new_libs " $deplib" ;;
 	esac
       done
-      compile_deplibs="$new_libs"
+      compile_deplibs=$new_libs
 
 
       func_append compile_command " $compile_deplibs"
@@ -8787,7 +10795,7 @@ EOF
 	if test -n "$hardcode_libdir_flag_spec"; then
 	  if test -n "$hardcode_libdir_separator"; then
 	    if test -z "$hardcode_libdirs"; then
-	      hardcode_libdirs="$libdir"
+	      hardcode_libdirs=$libdir
 	    else
 	      # Just accumulate the unique libdirs.
 	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
@@ -8810,7 +10818,7 @@ EOF
 	fi
 	case $host in
 	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
-	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
+	  testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'`
 	  case :$dllsearchpath: in
 	  *":$libdir:"*) ;;
 	  ::) dllsearchpath=$libdir;;
@@ -8827,10 +10835,10 @@ EOF
       # Substitute the hardcoded libdirs into the rpath.
       if test -n "$hardcode_libdir_separator" &&
 	 test -n "$hardcode_libdirs"; then
-	libdir="$hardcode_libdirs"
+	libdir=$hardcode_libdirs
 	eval rpath=\" $hardcode_libdir_flag_spec\"
       fi
-      compile_rpath="$rpath"
+      compile_rpath=$rpath
 
       rpath=
       hardcode_libdirs=
@@ -8838,7 +10846,7 @@ EOF
 	if test -n "$hardcode_libdir_flag_spec"; then
 	  if test -n "$hardcode_libdir_separator"; then
 	    if test -z "$hardcode_libdirs"; then
-	      hardcode_libdirs="$libdir"
+	      hardcode_libdirs=$libdir
 	    else
 	      # Just accumulate the unique libdirs.
 	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
@@ -8863,45 +10871,43 @@ EOF
       # Substitute the hardcoded libdirs into the rpath.
       if test -n "$hardcode_libdir_separator" &&
 	 test -n "$hardcode_libdirs"; then
-	libdir="$hardcode_libdirs"
+	libdir=$hardcode_libdirs
 	eval rpath=\" $hardcode_libdir_flag_spec\"
       fi
-      finalize_rpath="$rpath"
+      finalize_rpath=$rpath
 
-      if test -n "$libobjs" && test "$build_old_libs" = yes; then
+      if test -n "$libobjs" && test yes = "$build_old_libs"; then
 	# Transform all the library objects into standard objects.
 	compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
 	finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
       fi
 
-      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
+      func_generate_dlsyms "$outputname" "@PROGRAM@" false
 
       # template prelinking step
       if test -n "$prelink_cmds"; then
 	func_execute_cmds "$prelink_cmds" 'exit $?'
       fi
 
-      wrappers_required=yes
+      wrappers_required=:
       case $host in
       *cegcc* | *mingw32ce*)
         # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
-        wrappers_required=no
+        wrappers_required=false
         ;;
       *cygwin* | *mingw* )
-        if test "$build_libtool_libs" != yes; then
-          wrappers_required=no
-        fi
+        test yes = "$build_libtool_libs" || wrappers_required=false
         ;;
       *)
-        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
-          wrappers_required=no
+        if test no = "$need_relink" || test yes != "$build_libtool_libs"; then
+          wrappers_required=false
         fi
         ;;
       esac
-      if test "$wrappers_required" = no; then
+      $wrappers_required || {
 	# Replace the output file specification.
 	compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
-	link_command="$compile_command$compile_rpath"
+	link_command=$compile_command$compile_rpath
 
 	# We have no uninstalled library dependencies, so finalize right now.
 	exit_status=0
@@ -8914,12 +10920,12 @@ EOF
 	fi
 
 	# Delete the generated files.
-	if test -f "$output_objdir/${outputname}S.${objext}"; then
-	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
+	if test -f "$output_objdir/${outputname}S.$objext"; then
+	  func_show_eval '$RM "$output_objdir/${outputname}S.$objext"'
 	fi
 
 	exit $exit_status
-      fi
+      }
 
       if test -n "$compile_shlibpath$finalize_shlibpath"; then
 	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
@@ -8949,9 +10955,9 @@ EOF
 	fi
       fi
 
-      if test "$no_install" = yes; then
+      if test yes = "$no_install"; then
 	# We don't need to create a wrapper script.
-	link_command="$compile_var$compile_command$compile_rpath"
+	link_command=$compile_var$compile_command$compile_rpath
 	# Replace the output file specification.
 	link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
 	# Delete the old output file.
@@ -8968,27 +10974,28 @@ EOF
 	exit $EXIT_SUCCESS
       fi
 
-      if test "$hardcode_action" = relink; then
-	# Fast installation is not supported
-	link_command="$compile_var$compile_command$compile_rpath"
-	relink_command="$finalize_var$finalize_command$finalize_rpath"
+      case $hardcode_action,$fast_install in
+        relink,*)
+	  # Fast installation is not supported
+	  link_command=$compile_var$compile_command$compile_rpath
+	  relink_command=$finalize_var$finalize_command$finalize_rpath
 
-	func_warning "this platform does not like uninstalled shared libraries"
-	func_warning "\`$output' will be relinked during installation"
-      else
-	if test "$fast_install" != no; then
-	  link_command="$finalize_var$compile_command$finalize_rpath"
-	  if test "$fast_install" = yes; then
-	    relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
-	  else
-	    # fast_install is set to needless
-	    relink_command=
-	  fi
-	else
-	  link_command="$compile_var$compile_command$compile_rpath"
-	  relink_command="$finalize_var$finalize_command$finalize_rpath"
-	fi
-      fi
+	  func_warning "this platform does not like uninstalled shared libraries"
+	  func_warning "'$output' will be relinked during installation"
+	  ;;
+        *,yes)
+	  link_command=$finalize_var$compile_command$finalize_rpath
+	  relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
+          ;;
+	*,no)
+	  link_command=$compile_var$compile_command$compile_rpath
+	  relink_command=$finalize_var$finalize_command$finalize_rpath
+          ;;
+	*,needless)
+	  link_command=$finalize_var$compile_command$finalize_rpath
+	  relink_command=
+          ;;
+      esac
 
       # Replace the output file specification.
       link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
@@ -9045,8 +11052,8 @@ EOF
 	    func_dirname_and_basename "$output" "" "."
 	    output_name=$func_basename_result
 	    output_path=$func_dirname_result
-	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
-	    cwrapper="$output_path/$output_name.exe"
+	    cwrappersource=$output_path/$objdir/lt-$output_name.c
+	    cwrapper=$output_path/$output_name.exe
 	    $RM $cwrappersource $cwrapper
 	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
 
@@ -9067,7 +11074,7 @@ EOF
 	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
 	    $opt_dry_run || {
 	      # note: this script will not be executed, so do not chmod.
-	      if test "x$build" = "x$host" ; then
+	      if test "x$build" = "x$host"; then
 		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
 	      else
 		func_emit_wrapper no > $func_ltwrapper_scriptname_result
@@ -9090,25 +11097,27 @@ EOF
     # See if we need to build an old-fashioned archive.
     for oldlib in $oldlibs; do
 
-      if test "$build_libtool_libs" = convenience; then
-	oldobjs="$libobjs_save $symfileobj"
-	addlibs="$convenience"
-	build_libtool_libs=no
-      else
-	if test "$build_libtool_libs" = module; then
-	  oldobjs="$libobjs_save"
+      case $build_libtool_libs in
+        convenience)
+	  oldobjs="$libobjs_save $symfileobj"
+	  addlibs=$convenience
 	  build_libtool_libs=no
-	else
+	  ;;
+	module)
+	  oldobjs=$libobjs_save
+	  addlibs=$old_convenience
+	  build_libtool_libs=no
+          ;;
+	*)
 	  oldobjs="$old_deplibs $non_pic_objects"
-	  if test "$preload" = yes && test -f "$symfileobj"; then
-	    func_append oldobjs " $symfileobj"
-	  fi
-	fi
-	addlibs="$old_convenience"
-      fi
+	  $preload && test -f "$symfileobj" \
+	    && func_append oldobjs " $symfileobj"
+	  addlibs=$old_convenience
+	  ;;
+      esac
 
       if test -n "$addlibs"; then
-	gentop="$output_objdir/${outputname}x"
+	gentop=$output_objdir/${outputname}x
 	func_append generated " $gentop"
 
 	func_extract_archives $gentop $addlibs
@@ -9116,13 +11125,13 @@ EOF
       fi
 
       # Do each command in the archive commands.
-      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+      if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then
 	cmds=$old_archive_from_new_cmds
       else
 
 	# Add any objects from preloaded convenience libraries
 	if test -n "$dlprefiles"; then
-	  gentop="$output_objdir/${outputname}x"
+	  gentop=$output_objdir/${outputname}x
 	  func_append generated " $gentop"
 
 	  func_extract_archives $gentop $dlprefiles
@@ -9143,7 +11152,7 @@ EOF
 	  :
 	else
 	  echo "copying selected object files to avoid basename conflicts..."
-	  gentop="$output_objdir/${outputname}x"
+	  gentop=$output_objdir/${outputname}x
 	  func_append generated " $gentop"
 	  func_mkdir_p "$gentop"
 	  save_oldobjs=$oldobjs
@@ -9152,7 +11161,7 @@ EOF
 	  for obj in $save_oldobjs
 	  do
 	    func_basename "$obj"
-	    objbase="$func_basename_result"
+	    objbase=$func_basename_result
 	    case " $oldobjs " in
 	    " ") oldobjs=$obj ;;
 	    *[\ /]"$objbase "*)
@@ -9221,18 +11230,18 @@ EOF
 	    else
 	      # the above command should be used before it gets too long
 	      oldobjs=$objlist
-	      if test "$obj" = "$last_oldobj" ; then
+	      if test "$obj" = "$last_oldobj"; then
 		RANLIB=$save_RANLIB
 	      fi
 	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
+	      eval concat_cmds=\"\$concat_cmds$old_archive_cmds\"
 	      objlist=
 	      len=$len0
 	    fi
 	  done
 	  RANLIB=$save_RANLIB
 	  oldobjs=$objlist
-	  if test "X$oldobjs" = "X" ; then
+	  if test -z "$oldobjs"; then
 	    eval cmds=\"\$concat_cmds\"
 	  else
 	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
@@ -9249,7 +11258,7 @@ EOF
     case $output in
     *.la)
       old_library=
-      test "$build_old_libs" = yes && old_library="$libname.$libext"
+      test yes = "$build_old_libs" && old_library=$libname.$libext
       func_verbose "creating $output"
 
       # Preserve any variables that may affect compiler behavior
@@ -9264,31 +11273,31 @@ EOF
 	fi
       done
       # Quote the link command for shipping.
-      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
+      relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
       relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
-      if test "$hardcode_automatic" = yes ; then
+      if test yes = "$hardcode_automatic"; then
 	relink_command=
       fi
 
       # Only create the output if not a dry run.
       $opt_dry_run || {
 	for installed in no yes; do
-	  if test "$installed" = yes; then
+	  if test yes = "$installed"; then
 	    if test -z "$install_libdir"; then
 	      break
 	    fi
-	    output="$output_objdir/$outputname"i
+	    output=$output_objdir/${outputname}i
 	    # Replace all uninstalled libtool libraries with the installed ones
 	    newdependency_libs=
 	    for deplib in $dependency_libs; do
 	      case $deplib in
 	      *.la)
 		func_basename "$deplib"
-		name="$func_basename_result"
+		name=$func_basename_result
 		func_resolve_sysroot "$deplib"
-		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
+		eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
 		test -z "$libdir" && \
-		  func_fatal_error "\`$deplib' is not a valid libtool archive"
+		  func_fatal_error "'$deplib' is not a valid libtool archive"
 		func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
 		;;
 	      -L*)
@@ -9304,23 +11313,23 @@ EOF
 	      *) func_append newdependency_libs " $deplib" ;;
 	      esac
 	    done
-	    dependency_libs="$newdependency_libs"
+	    dependency_libs=$newdependency_libs
 	    newdlfiles=
 
 	    for lib in $dlfiles; do
 	      case $lib in
 	      *.la)
 	        func_basename "$lib"
-		name="$func_basename_result"
-		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+		name=$func_basename_result
+		eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
 		test -z "$libdir" && \
-		  func_fatal_error "\`$lib' is not a valid libtool archive"
+		  func_fatal_error "'$lib' is not a valid libtool archive"
 		func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
 		;;
 	      *) func_append newdlfiles " $lib" ;;
 	      esac
 	    done
-	    dlfiles="$newdlfiles"
+	    dlfiles=$newdlfiles
 	    newdlprefiles=
 	    for lib in $dlprefiles; do
 	      case $lib in
@@ -9330,34 +11339,34 @@ EOF
 		# didn't already link the preopened objects directly into
 		# the library:
 		func_basename "$lib"
-		name="$func_basename_result"
-		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+		name=$func_basename_result
+		eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
 		test -z "$libdir" && \
-		  func_fatal_error "\`$lib' is not a valid libtool archive"
+		  func_fatal_error "'$lib' is not a valid libtool archive"
 		func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
 		;;
 	      esac
 	    done
-	    dlprefiles="$newdlprefiles"
+	    dlprefiles=$newdlprefiles
 	  else
 	    newdlfiles=
 	    for lib in $dlfiles; do
 	      case $lib in
-		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+		[\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;;
 		*) abs=`pwd`"/$lib" ;;
 	      esac
 	      func_append newdlfiles " $abs"
 	    done
-	    dlfiles="$newdlfiles"
+	    dlfiles=$newdlfiles
 	    newdlprefiles=
 	    for lib in $dlprefiles; do
 	      case $lib in
-		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+		[\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;;
 		*) abs=`pwd`"/$lib" ;;
 	      esac
 	      func_append newdlprefiles " $abs"
 	    done
-	    dlprefiles="$newdlprefiles"
+	    dlprefiles=$newdlprefiles
 	  fi
 	  $RM $output
 	  # place dlname in correct position for cygwin
@@ -9373,10 +11382,9 @@ EOF
 	  case $host,$output,$installed,$module,$dlname in
 	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
 	      # If a -bindir argument was supplied, place the dll there.
-	      if test "x$bindir" != x ;
-	      then
+	      if test -n "$bindir"; then
 		func_relative_path "$install_libdir" "$bindir"
-		tdlname=$func_relative_path_result$dlname
+		tdlname=$func_relative_path_result/$dlname
 	      else
 		# Otherwise fall back on heuristic.
 		tdlname=../bin/$dlname
@@ -9385,7 +11393,7 @@ EOF
 	  esac
 	  $ECHO > $output "\
 # $outputname - a libtool library file
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
 #
 # Please DO NOT delete this file!
 # It is necessary for linking the library.
@@ -9399,7 +11407,7 @@ library_names='$library_names'
 # The name of the static archive.
 old_library='$old_library'
 
-# Linker flags that can not go in dependency_libs.
+# Linker flags that cannot go in dependency_libs.
 inherited_linker_flags='$new_inherited_linker_flags'
 
 # Libraries that this one depends upon.
@@ -9425,7 +11433,7 @@ dlpreopen='$dlprefiles'
 
 # Directory that this library needs to be installed in:
 libdir='$install_libdir'"
-	  if test "$installed" = no && test "$need_relink" = yes; then
+	  if test no,yes = "$installed,$need_relink"; then
 	    $ECHO >> $output "\
 relink_command=\"$relink_command\""
 	  fi
@@ -9440,27 +11448,29 @@ relink_command=\"$relink_command\""
     exit $EXIT_SUCCESS
 }
 
-{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
-    func_mode_link ${1+"$@"}
+if test link = "$opt_mode" || test relink = "$opt_mode"; then
+  func_mode_link ${1+"$@"}
+fi
 
 
 # func_mode_uninstall arg...
 func_mode_uninstall ()
 {
-    $opt_debug
-    RM="$nonopt"
+    $debug_cmd
+
+    RM=$nonopt
     files=
-    rmforce=
+    rmforce=false
     exit_status=0
 
     # This variable tells wrapper scripts just to set variables rather
     # than running their programs.
-    libtool_install_magic="$magic"
+    libtool_install_magic=$magic
 
     for arg
     do
       case $arg in
-      -f) func_append RM " $arg"; rmforce=yes ;;
+      -f) func_append RM " $arg"; rmforce=: ;;
       -*) func_append RM " $arg" ;;
       *) func_append files " $arg" ;;
       esac
@@ -9473,18 +11483,18 @@ func_mode_uninstall ()
 
     for file in $files; do
       func_dirname "$file" "" "."
-      dir="$func_dirname_result"
-      if test "X$dir" = X.; then
-	odir="$objdir"
+      dir=$func_dirname_result
+      if test . = "$dir"; then
+	odir=$objdir
       else
-	odir="$dir/$objdir"
+	odir=$dir/$objdir
       fi
       func_basename "$file"
-      name="$func_basename_result"
-      test "$opt_mode" = uninstall && odir="$dir"
+      name=$func_basename_result
+      test uninstall = "$opt_mode" && odir=$dir
 
       # Remember odir for removal later, being careful to avoid duplicates
-      if test "$opt_mode" = clean; then
+      if test clean = "$opt_mode"; then
 	case " $rmdirs " in
 	  *" $odir "*) ;;
 	  *) func_append rmdirs " $odir" ;;
@@ -9499,11 +11509,11 @@ func_mode_uninstall ()
       elif test -d "$file"; then
 	exit_status=1
 	continue
-      elif test "$rmforce" = yes; then
+      elif $rmforce; then
 	continue
       fi
 
-      rmfiles="$file"
+      rmfiles=$file
 
       case $name in
       *.la)
@@ -9517,7 +11527,7 @@ func_mode_uninstall ()
 	  done
 	  test -n "$old_library" && func_append rmfiles " $odir/$old_library"
 
-	  case "$opt_mode" in
+	  case $opt_mode in
 	  clean)
 	    case " $library_names " in
 	    *" $dlname "*) ;;
@@ -9528,12 +11538,12 @@ func_mode_uninstall ()
 	  uninstall)
 	    if test -n "$library_names"; then
 	      # Do each command in the postuninstall commands.
-	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
+	      func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1'
 	    fi
 
 	    if test -n "$old_library"; then
 	      # Do each command in the old_postuninstall commands.
-	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
+	      func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1'
 	    fi
 	    # FIXME: should reinstall the best remaining shared library.
 	    ;;
@@ -9549,21 +11559,19 @@ func_mode_uninstall ()
 	  func_source $dir/$name
 
 	  # Add PIC object to the list of files to remove.
-	  if test -n "$pic_object" &&
-	     test "$pic_object" != none; then
+	  if test -n "$pic_object" && test none != "$pic_object"; then
 	    func_append rmfiles " $dir/$pic_object"
 	  fi
 
 	  # Add non-PIC object to the list of files to remove.
-	  if test -n "$non_pic_object" &&
-	     test "$non_pic_object" != none; then
+	  if test -n "$non_pic_object" && test none != "$non_pic_object"; then
 	    func_append rmfiles " $dir/$non_pic_object"
 	  fi
 	fi
 	;;
 
       *)
-	if test "$opt_mode" = clean ; then
+	if test clean = "$opt_mode"; then
 	  noexename=$name
 	  case $file in
 	  *.exe)
@@ -9590,12 +11598,12 @@ func_mode_uninstall ()
 
 	    # note $name still contains .exe if it was in $file originally
 	    # as does the version of $file that was added into $rmfiles
-	    func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
-	    if test "$fast_install" = yes && test -n "$relink_command"; then
+	    func_append rmfiles " $odir/$name $odir/${name}S.$objext"
+	    if test yes = "$fast_install" && test -n "$relink_command"; then
 	      func_append rmfiles " $odir/lt-$name"
 	    fi
-	    if test "X$noexename" != "X$name" ; then
-	      func_append rmfiles " $odir/lt-${noexename}.c"
+	    if test "X$noexename" != "X$name"; then
+	      func_append rmfiles " $odir/lt-$noexename.c"
 	    fi
 	  fi
 	fi
@@ -9604,7 +11612,7 @@ func_mode_uninstall ()
       func_show_eval "$RM $rmfiles" 'exit_status=1'
     done
 
-    # Try to remove the ${objdir}s in the directories where we deleted files
+    # Try to remove the $objdir's in the directories where we deleted files
     for dir in $rmdirs; do
       if test -d "$dir"; then
 	func_show_eval "rmdir $dir >/dev/null 2>&1"
@@ -9614,16 +11622,17 @@ func_mode_uninstall ()
     exit $exit_status
 }
 
-{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
-    func_mode_uninstall ${1+"$@"}
+if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then
+  func_mode_uninstall ${1+"$@"}
+fi
 
 test -z "$opt_mode" && {
-  help="$generic_help"
+  help=$generic_help
   func_fatal_help "you must specify a MODE"
 }
 
 test -z "$exec_cmd" && \
-  func_fatal_help "invalid operation mode \`$opt_mode'"
+  func_fatal_help "invalid operation mode '$opt_mode'"
 
 if test -n "$exec_cmd"; then
   eval exec "$exec_cmd"
@@ -9634,7 +11643,7 @@ exit $exit_status
 
 
 # The TAGs below are defined such that we never get into a situation
-# in which we disable both kinds of libraries.  Given conflicting
+# where we disable both kinds of libraries.  Given conflicting
 # choices, we go for a static library, that is the most portable,
 # since we can't tell whether shared libraries were disabled because
 # the user asked for that or because the platform doesn't support
@@ -9657,5 +11666,304 @@ build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
 # mode:shell-script
 # sh-indentation:2
 # End:
-# vi:sw=2
 
+# ### BEGIN LIBTOOL TAG CONFIG: CXX
+
+# The linker used to build libraries.
+LD="/usr/bin/ld -m elf_x86_64"
+
+# How to create reloadable object files.
+reload_flag=" -r"
+reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"
+
+# Commands used to build an old-style archive.
+old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$tool_oldlib"
+
+# A language specific compiler.
+CC="g++"
+
+# Is the compiler the GNU compiler?
+with_gcc=yes
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=" -fno-builtin"
+
+# Additional compiler flags for building library objects.
+pic_flag=" -fPIC -DPIC"
+
+# How to pass a linker flag through the compiler.
+wl="-Wl,"
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag="-static"
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o="yes"
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=no
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=no
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec="\$wl--export-dynamic"
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec="\$wl--whole-archive\$convenience \$wl--no-whole-archive"
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object="no"
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=""
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=""
+
+# Commands used to build a shared archive.
+archive_cmds="\$CC \$pic_flag -shared -nostdlib \$predep_objects \$libobjs \$deplibs \$postdep_objects \$compiler_flags \$wl-soname \$wl\$soname -o \$lib"
+archive_expsym_cmds="\$CC \$pic_flag -shared -nostdlib \$predep_objects \$libobjs \$deplibs \$postdep_objects \$compiler_flags \$wl-soname \$wl\$soname \$wl-retain-symbols-file \$wl\$export_symbols -o \$lib"
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=""
+module_expsym_cmds=""
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld="yes"
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=""
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=""
+
+# Flag to hardcode $libdir into a binary during linking.
+# This must work even if $libdir does not exist
+hardcode_libdir_flag_spec="\$wl-rpath \$wl\$libdir"
+
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=""
+
+# Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=no
+
+# Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting $shlibpath_var if the
+# library is relocated.
+hardcode_direct_absolute=no
+
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=no
+
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=unsupported
+
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=no
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=no
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=no
+
+# Set to "yes" if exported symbols are required.
+always_export_symbols=no
+
+# The commands to list exported symbols.
+export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols"
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*"
+
+# Symbols that must always be exported.
+include_expsyms=""
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=""
+
+# Commands necessary for finishing linking programs.
+postlink_cmds=""
+
+# Specify filename containing input files.
+file_list_spec=""
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=immediate
+
+# The directories searched by this compiler when creating a shared library.
+compiler_lib_search_dirs="/usr/lib/gcc/x86_64-linux-gnu/5 /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu /usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /usr/lib/gcc/x86_64-linux-gnu/5/../../.."
+
+# Dependencies to place before and after the objects being linked to
+# create a shared library.
+predep_objects="/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/5/crtbeginS.o"
+postdep_objects="/usr/lib/gcc/x86_64-linux-gnu/5/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crtn.o"
+predeps=""
+postdeps="-lstdc++ -lm -lgcc_s -lc -lgcc_s"
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path="-L/usr/lib/gcc/x86_64-linux-gnu/5 -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/5/../../.."
+
+# ### END LIBTOOL TAG CONFIG: CXX
+
+# ### BEGIN LIBTOOL TAG CONFIG: FC
+
+# The linker used to build libraries.
+LD="/usr/bin/ld -m elf_x86_64"
+
+# How to create reloadable object files.
+reload_flag=" -r"
+reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"
+
+# Commands used to build an old-style archive.
+old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$tool_oldlib"
+
+# A language specific compiler.
+CC="gfortran"
+
+# Is the compiler the GNU compiler?
+with_gcc=yes
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=""
+
+# Additional compiler flags for building library objects.
+pic_flag=" -fPIC"
+
+# How to pass a linker flag through the compiler.
+wl="-Wl,"
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag="-static"
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o="yes"
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=no
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=no
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec="\$wl--export-dynamic"
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec="\$wl--whole-archive\$convenience \$wl--no-whole-archive"
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object="no"
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=""
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=""
+
+# Commands used to build a shared archive.
+archive_cmds="\$CC -shared \$pic_flag \$libobjs \$deplibs \$compiler_flags \$wl-soname \$wl\$soname -o \$lib"
+archive_expsym_cmds="echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~
+            cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~
+            echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~
+            \$CC -shared \$pic_flag \$libobjs \$deplibs \$compiler_flags \$wl-soname \$wl\$soname \$wl-version-script \$wl\$output_objdir/\$libname.ver -o \$lib"
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=""
+module_expsym_cmds=""
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld="yes"
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=""
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=""
+
+# Flag to hardcode $libdir into a binary during linking.
+# This must work even if $libdir does not exist
+hardcode_libdir_flag_spec="\$wl-rpath \$wl\$libdir"
+
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=""
+
+# Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=no
+
+# Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting $shlibpath_var if the
+# library is relocated.
+hardcode_direct_absolute=no
+
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=no
+
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=unsupported
+
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=no
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=no
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=no
+
+# Set to "yes" if exported symbols are required.
+always_export_symbols=no
+
+# The commands to list exported symbols.
+export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols"
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*"
+
+# Symbols that must always be exported.
+include_expsyms=""
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=""
+
+# Commands necessary for finishing linking programs.
+postlink_cmds=""
+
+# Specify filename containing input files.
+file_list_spec=""
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=immediate
+
+# The directories searched by this compiler when creating a shared library.
+compiler_lib_search_dirs="/usr/lib/gcc/x86_64-linux-gnu/5 /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu /usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /usr/lib/gcc/x86_64-linux-gnu/5/../../.."
+
+# Dependencies to place before and after the objects being linked to
+# create a shared library.
+predep_objects="/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/5/crtbeginS.o"
+postdep_objects="/usr/lib/gcc/x86_64-linux-gnu/5/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crtn.o"
+predeps=""
+postdeps="-lgfortran -lm -lgcc_s -lquadmath -lm -lgcc_s -lc -lgcc_s"
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path="-L/usr/lib/gcc/x86_64-linux-gnu/5 -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/5/../../.."
+
+# ### END LIBTOOL TAG CONFIG: FC
diff --git a/m4/ax_lib_gdal.m4 b/m4/ax_lib_gdal.m4
deleted file mode 100644
index 201c739..0000000
--- a/m4/ax_lib_gdal.m4
+++ /dev/null
@@ -1,153 +0,0 @@
-# ===========================================================================
-# http://www.gnu.org/software/autoconf-archive/ax_lib_gdal.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-# AX_LIB_GDAL([MINIMUM-VERSION])
-#
-# DESCRIPTION
-#
-# This macro provides tests of availability of GDAL/OGR library of
-# particular version or newer.
-#
-# AX_LIB_GDAL macro takes only one argument which is optional. If there is
-# no required version passed, then macro does not run version test.
-#
-# The --with-gdal option takes complete path to gdal-config utility,
-#
-# This macro calls AC_SUBST for:
-#
-# GDAL_VERSION
-# GDAL_CFLAGS
-# GDAL_LDFLAGS
-# GDAL_DEP_LDFLAGS
-# GDAL_OGR_ENABLED
-#
-# and AC_DEFINE for:
-#
-# HAVE_GDAL
-# HAVE_GDAL_OGR
-#
-# LICENSE
-#
-# Copyright (c) 2011 Mateusz Loskot <mateusz at loskot.net>
-# Copyright (c) 2011 Alessandro Candini <candini at meeo.it>
-#
-# Copying and distribution of this file, with or without modification, are
-# permitted in any medium without royalty provided the copyright notice
-# and this notice are preserved. This file is offered as-is, without any
-# warranty.
-
-#serial 1
-
-AC_DEFUN([AX_LIB_GDAL],
-[
-    dnl If gdal-config path is not given in ---with-gdal option,
-    dnl check if it is present in the system anyway
-    AC_ARG_WITH([gdal],
-        AC_HELP_STRING([--with-gdal=@<:@ARG@:>@],
-            [Specify full path to gdal-config script]),
-        [ac_gdal_config_path=$withval],
-        [gdal_config_system=check])
-
-    dnl if gdal-config is present in the system, fill the ac_gdal_config_path variable with it full path
-    AS_IF([test "x$gdal_config_system" = xcheck],
-          [AC_PATH_PROG([GDAL_CONFIG], [gdal-config])],
-          [AC_PATH_PROG([GDAL_CONFIG], [gdal-config],
-              [no], [`dirname $ac_gdal_config_path 2> /dev/null`])]
-    )
-
-    if test ! -x "$GDAL_CONFIG"; then
-        AC_MSG_ERROR([gdal-config does not exist or it is not an exectuable file])
-            GDAL_CONFIG="no"
-            found_gdal="no"
-    fi
-
-    GDAL_VERSION=""
-    GDAL_CFLAGS=""
-    GDAL_LDFLAGS=""
-    GDAL_DEP_LDFLAGS=""
-    GDAL_OGR_ENABLED=""
-
-
-    dnl
-    dnl Check GDAL library (libgdal)
-    dnl
-
-    if test "$GDAL_CONFIG" != "no"; then
-        AC_MSG_CHECKING([for GDAL library])
-
-        GDAL_VERSION="`$GDAL_CONFIG --version`"
-        GDAL_CFLAGS="`$GDAL_CONFIG --cflags`"
-        GDAL_LDFLAGS="`$GDAL_CONFIG --libs`"
-        GDAL_DEP_LDFLAGS="`$GDAL_CONFIG --dep-libs`"
-
-        AC_DEFINE([HAVE_GDAL], [1], [Define to 1 if GDAL library are available])
-
-        found_gdal="yes"
-    else
-        found_gdal="no"
-    fi
-
-    AC_MSG_RESULT([$found_gdal])
-
-    if test "$found_gdal" = "yes"; then
-        AC_MSG_CHECKING([for OGR support in GDAL library])
-
-        GDAL_OGR_ENABLED="`$GDAL_CONFIG --ogr-enabled`"
-        AC_DEFINE([HAVE_GDAL_OGR], [1], [Define to 1 if GDAL library includes OGR support])
-
-        AC_MSG_RESULT([$GDAL_OGR_ENABLED])
-    fi
-
-    dnl
-    dnl Check if required version of GDAL is available
-    dnl
-
-    gdal_version_req=ifelse([$1], [], [], [$1])
-    if test "$found_gdal" = "yes" -a -n "$gdal_version_req"; then
-
-        AC_MSG_CHECKING([if GDAL version is >= $gdal_version_req])
-
-        dnl Decompose required version string of GDAL
-        dnl and calculate its number representation
-        gdal_version_req_major=`expr $gdal_version_req : '\([[0-9]]*\)'`
-        gdal_version_req_minor=`expr $gdal_version_req : '[[0-9]]*\.\([[0-9]]*\)'`
-        gdal_version_req_micro=`expr $gdal_version_req : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
-        if test "x$gdal_version_req_micro" = "x"; then
-            gdal_version_req_micro="0"
-        fi
-
-        gdal_version_req_number=`expr $gdal_version_req_major \* 1000000 \
-                                   \+ $gdal_version_req_minor \* 1000 \
-                                   \+ $gdal_version_req_micro`
-
-        dnl Decompose version string of installed GDAL
-        dnl and calculate its number representation
-        gdal_version_major=`expr $GDAL_VERSION : '\([[0-9]]*\)'`
-        gdal_version_minor=`expr $GDAL_VERSION : '[[0-9]]*\.\([[0-9]]*\)'`
-        gdal_version_micro=`expr $GDAL_VERSION : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
-        if test "x$gdal_version_micro" = "x"; then
-            gdal_version_micro="0"
-        fi
-
-        gdal_version_number=`expr $gdal_version_major \* 1000000 \
-                                   \+ $gdal_version_minor \* 1000 \
-                                   \+ $gdal_version_micro`
-
-        gdal_version_check=`expr $gdal_version_number \>\= $gdal_version_req_number`
-        if test "$gdal_version_check" = "1"; then
-            AC_MSG_RESULT([yes])
-        else
-            AC_MSG_RESULT([no])
-AC_MSG_ERROR([GDAL $GDAL_VERSION found, but required version is $gdal_version_req])
-        fi
-    fi
-
-    AC_SUBST(GDAL_VERSION)
-    AC_SUBST(GDAL_CFLAGS)
-    AC_SUBST(GDAL_LDFLAGS)
-    AC_SUBST(GDAL_DEP_LDFLAGS)
-    AC_SUBST(GDAL_OGR_ENABLED)
-])
diff --git a/m4/libtool.m4 b/m4/libtool.m4
deleted file mode 100644
index d7c043f..0000000
--- a/m4/libtool.m4
+++ /dev/null
@@ -1,7997 +0,0 @@
-# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
-#
-#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-#                 Foundation, Inc.
-#   Written by Gordon Matzigkeit, 1996
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-m4_define([_LT_COPYING], [dnl
-#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-#                 Foundation, Inc.
-#   Written by Gordon Matzigkeit, 1996
-#
-#   This file is part of GNU Libtool.
-#
-# GNU Libtool is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
-# the License, or (at your option) any later version.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING.  If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
-# obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-])
-
-# serial 57 LT_INIT
-
-
-# LT_PREREQ(VERSION)
-# ------------------
-# Complain and exit if this libtool version is less that VERSION.
-m4_defun([LT_PREREQ],
-[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
-       [m4_default([$3],
-		   [m4_fatal([Libtool version $1 or higher is required],
-		             63)])],
-       [$2])])
-
-
-# _LT_CHECK_BUILDDIR
-# ------------------
-# Complain if the absolute build directory name contains unusual characters
-m4_defun([_LT_CHECK_BUILDDIR],
-[case `pwd` in
-  *\ * | *\	*)
-    AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;;
-esac
-])
-
-
-# LT_INIT([OPTIONS])
-# ------------------
-AC_DEFUN([LT_INIT],
-[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
-AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
-AC_BEFORE([$0], [LT_LANG])dnl
-AC_BEFORE([$0], [LT_OUTPUT])dnl
-AC_BEFORE([$0], [LTDL_INIT])dnl
-m4_require([_LT_CHECK_BUILDDIR])dnl
-
-dnl Autoconf doesn't catch unexpanded LT_ macros by default:
-m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
-m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
-dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
-dnl unless we require an AC_DEFUNed macro:
-AC_REQUIRE([LTOPTIONS_VERSION])dnl
-AC_REQUIRE([LTSUGAR_VERSION])dnl
-AC_REQUIRE([LTVERSION_VERSION])dnl
-AC_REQUIRE([LTOBSOLETE_VERSION])dnl
-m4_require([_LT_PROG_LTMAIN])dnl
-
-_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}])
-
-dnl Parse OPTIONS
-_LT_SET_OPTIONS([$0], [$1])
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ltmain"
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-AC_SUBST(LIBTOOL)dnl
-
-_LT_SETUP
-
-# Only expand once:
-m4_define([LT_INIT])
-])# LT_INIT
-
-# Old names:
-AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
-AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
-dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
-
-
-# _LT_CC_BASENAME(CC)
-# -------------------
-# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
-m4_defun([_LT_CC_BASENAME],
-[for cc_temp in $1""; do
-  case $cc_temp in
-    compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
-    distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
-])
-
-
-# _LT_FILEUTILS_DEFAULTS
-# ----------------------
-# It is okay to use these file commands and assume they have been set
-# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
-m4_defun([_LT_FILEUTILS_DEFAULTS],
-[: ${CP="cp -f"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-])# _LT_FILEUTILS_DEFAULTS
-
-
-# _LT_SETUP
-# ---------
-m4_defun([_LT_SETUP],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
-AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
-
-_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl
-dnl
-_LT_DECL([], [host_alias], [0], [The host system])dnl
-_LT_DECL([], [host], [0])dnl
-_LT_DECL([], [host_os], [0])dnl
-dnl
-_LT_DECL([], [build_alias], [0], [The build system])dnl
-_LT_DECL([], [build], [0])dnl
-_LT_DECL([], [build_os], [0])dnl
-dnl
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([LT_PATH_LD])dnl
-AC_REQUIRE([LT_PATH_NM])dnl
-dnl
-AC_REQUIRE([AC_PROG_LN_S])dnl
-test -z "$LN_S" && LN_S="ln -s"
-_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
-dnl
-AC_REQUIRE([LT_CMD_MAX_LEN])dnl
-_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
-_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
-dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_CHECK_SHELL_FEATURES])dnl
-m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl
-m4_require([_LT_CMD_RELOAD])dnl
-m4_require([_LT_CHECK_MAGIC_METHOD])dnl
-m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl
-m4_require([_LT_CMD_OLD_ARCHIVE])dnl
-m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
-m4_require([_LT_WITH_SYSROOT])dnl
-
-_LT_CONFIG_LIBTOOL_INIT([
-# See if we are running on zsh, and set the options which allow our
-# commands through without removal of \ escapes INIT.
-if test -n "\${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
-fi
-])
-if test -n "${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
-fi
-
-_LT_CHECK_OBJDIR
-
-m4_require([_LT_TAG_COMPILER])dnl
-
-case $host_os in
-aix3*)
-  # AIX sometimes has problems with the GCC collect2 program.  For some
-  # reason, if we set the COLLECT_NAMES environment variable, the problems
-  # vanish in a puff of smoke.
-  if test "X${COLLECT_NAMES+set}" != Xset; then
-    COLLECT_NAMES=
-    export COLLECT_NAMES
-  fi
-  ;;
-esac
-
-# Global variables:
-ofile=libtool
-can_build_shared=yes
-
-# All known linkers require a `.a' archive for static linking (except MSVC,
-# which needs '.lib').
-libext=a
-
-with_gnu_ld="$lt_cv_prog_gnu_ld"
-
-old_CC="$CC"
-old_CFLAGS="$CFLAGS"
-
-# Set sane defaults for various variables
-test -z "$CC" && CC=cc
-test -z "$LTCC" && LTCC=$CC
-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
-test -z "$LD" && LD=ld
-test -z "$ac_objext" && ac_objext=o
-
-_LT_CC_BASENAME([$compiler])
-
-# Only perform the check for file, if the check method requires it
-test -z "$MAGIC_CMD" && MAGIC_CMD=file
-case $deplibs_check_method in
-file_magic*)
-  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-    _LT_PATH_MAGIC
-  fi
-  ;;
-esac
-
-# Use C for the default configuration in the libtool script
-LT_SUPPORTED_TAG([CC])
-_LT_LANG_C_CONFIG
-_LT_LANG_DEFAULT_CONFIG
-_LT_CONFIG_COMMANDS
-])# _LT_SETUP
-
-
-# _LT_PREPARE_SED_QUOTE_VARS
-# --------------------------
-# Define a few sed substitution that help us do robust quoting.
-m4_defun([_LT_PREPARE_SED_QUOTE_VARS],
-[# Backslashify metacharacters that are still active within
-# double-quoted strings.
-sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\([["`\\]]\)/\\\1/g'
-
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-# Sed substitution to delay expansion of an escaped single quote.
-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
-
-# Sed substitution to avoid accidental globbing in evaled expressions
-no_glob_subst='s/\*/\\\*/g'
-])
-
-# _LT_PROG_LTMAIN
-# ---------------
-# Note that this code is called both from `configure', and `config.status'
-# now that we use AC_CONFIG_COMMANDS to generate libtool.  Notably,
-# `config.status' has no value for ac_aux_dir unless we are using Automake,
-# so we pass a copy along to make sure it has a sensible value anyway.
-m4_defun([_LT_PROG_LTMAIN],
-[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
-_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
-ltmain="$ac_aux_dir/ltmain.sh"
-])# _LT_PROG_LTMAIN
-
-
-## ------------------------------------- ##
-## Accumulate code for creating libtool. ##
-## ------------------------------------- ##
-
-# So that we can recreate a full libtool script including additional
-# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
-# in macros and then make a single call at the end using the `libtool'
-# label.
-
-
-# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
-# ----------------------------------------
-# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
-m4_define([_LT_CONFIG_LIBTOOL_INIT],
-[m4_ifval([$1],
-          [m4_append([_LT_OUTPUT_LIBTOOL_INIT],
-                     [$1
-])])])
-
-# Initialize.
-m4_define([_LT_OUTPUT_LIBTOOL_INIT])
-
-
-# _LT_CONFIG_LIBTOOL([COMMANDS])
-# ------------------------------
-# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
-m4_define([_LT_CONFIG_LIBTOOL],
-[m4_ifval([$1],
-          [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS],
-                     [$1
-])])])
-
-# Initialize.
-m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS])
-
-
-# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
-# -----------------------------------------------------
-m4_defun([_LT_CONFIG_SAVE_COMMANDS],
-[_LT_CONFIG_LIBTOOL([$1])
-_LT_CONFIG_LIBTOOL_INIT([$2])
-])
-
-
-# _LT_FORMAT_COMMENT([COMMENT])
-# -----------------------------
-# Add leading comment marks to the start of each line, and a trailing
-# full-stop to the whole comment if one is not present already.
-m4_define([_LT_FORMAT_COMMENT],
-[m4_ifval([$1], [
-m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])],
-              [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.])
-)])
-
-
-
-## ------------------------ ##
-## FIXME: Eliminate VARNAME ##
-## ------------------------ ##
-
-
-# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
-# -------------------------------------------------------------------
-# CONFIGNAME is the name given to the value in the libtool script.
-# VARNAME is the (base) name used in the configure script.
-# VALUE may be 0, 1 or 2 for a computed quote escaped value based on
-# VARNAME.  Any other value will be used directly.
-m4_define([_LT_DECL],
-[lt_if_append_uniq([lt_decl_varnames], [$2], [, ],
-    [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name],
-	[m4_ifval([$1], [$1], [$2])])
-    lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3])
-    m4_ifval([$4],
-	[lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])])
-    lt_dict_add_subkey([lt_decl_dict], [$2],
-	[tagged?], [m4_ifval([$5], [yes], [no])])])
-])
-
-
-# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
-# --------------------------------------------------------
-m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])])
-
-
-# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
-# ------------------------------------------------
-m4_define([lt_decl_tag_varnames],
-[_lt_decl_filter([tagged?], [yes], $@)])
-
-
-# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
-# ---------------------------------------------------------
-m4_define([_lt_decl_filter],
-[m4_case([$#],
-  [0], [m4_fatal([$0: too few arguments: $#])],
-  [1], [m4_fatal([$0: too few arguments: $#: $1])],
-  [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)],
-  [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)],
-  [lt_dict_filter([lt_decl_dict], $@)])[]dnl
-])
-
-
-# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
-# --------------------------------------------------
-m4_define([lt_decl_quote_varnames],
-[_lt_decl_filter([value], [1], $@)])
-
-
-# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
-# ---------------------------------------------------
-m4_define([lt_decl_dquote_varnames],
-[_lt_decl_filter([value], [2], $@)])
-
-
-# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
-# ---------------------------------------------------
-m4_define([lt_decl_varnames_tagged],
-[m4_assert([$# <= 2])dnl
-_$0(m4_quote(m4_default([$1], [[, ]])),
-    m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]),
-    m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))])
-m4_define([_lt_decl_varnames_tagged],
-[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])])
-
-
-# lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
-# ------------------------------------------------
-m4_define([lt_decl_all_varnames],
-[_$0(m4_quote(m4_default([$1], [[, ]])),
-     m4_if([$2], [],
-	   m4_quote(lt_decl_varnames),
-	m4_quote(m4_shift($@))))[]dnl
-])
-m4_define([_lt_decl_all_varnames],
-[lt_join($@, lt_decl_varnames_tagged([$1],
-			lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl
-])
-
-
-# _LT_CONFIG_STATUS_DECLARE([VARNAME])
-# ------------------------------------
-# Quote a variable value, and forward it to `config.status' so that its
-# declaration there will have the same value as in `configure'.  VARNAME
-# must have a single quote delimited value for this to work.
-m4_define([_LT_CONFIG_STATUS_DECLARE],
-[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`'])
-
-
-# _LT_CONFIG_STATUS_DECLARATIONS
-# ------------------------------
-# We delimit libtool config variables with single quotes, so when
-# we write them to config.status, we have to be sure to quote all
-# embedded single quotes properly.  In configure, this macro expands
-# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
-#
-#    <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`'
-m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
-[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
-    [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
-
-
-# _LT_LIBTOOL_TAGS
-# ----------------
-# Output comment and list of tags supported by the script
-m4_defun([_LT_LIBTOOL_TAGS],
-[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
-available_tags="_LT_TAGS"dnl
-])
-
-
-# _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
-# -----------------------------------
-# Extract the dictionary values for VARNAME (optionally with TAG) and
-# expand to a commented shell variable setting:
-#
-#    # Some comment about what VAR is for.
-#    visible_name=$lt_internal_name
-m4_define([_LT_LIBTOOL_DECLARE],
-[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1],
-					   [description])))[]dnl
-m4_pushdef([_libtool_name],
-    m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl
-m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])),
-    [0], [_libtool_name=[$]$1],
-    [1], [_libtool_name=$lt_[]$1],
-    [2], [_libtool_name=$lt_[]$1],
-    [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl
-m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
-])
-
-
-# _LT_LIBTOOL_CONFIG_VARS
-# -----------------------
-# Produce commented declarations of non-tagged libtool config variables
-# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
-# script.  Tagged libtool config variables (even for the LIBTOOL CONFIG
-# section) are produced by _LT_LIBTOOL_TAG_VARS.
-m4_defun([_LT_LIBTOOL_CONFIG_VARS],
-[m4_foreach([_lt_var],
-    m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)),
-    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])])
-
-
-# _LT_LIBTOOL_TAG_VARS(TAG)
-# -------------------------
-m4_define([_LT_LIBTOOL_TAG_VARS],
-[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames),
-    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])])
-
-
-# _LT_TAGVAR(VARNAME, [TAGNAME])
-# ------------------------------
-m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
-
-
-# _LT_CONFIG_COMMANDS
-# -------------------
-# Send accumulated output to $CONFIG_STATUS.  Thanks to the lists of
-# variables for single and double quote escaping we saved from calls
-# to _LT_DECL, we can put quote escaped variables declarations
-# into `config.status', and then the shell code to quote escape them in
-# for loops in `config.status'.  Finally, any additional code accumulated
-# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
-m4_defun([_LT_CONFIG_COMMANDS],
-[AC_PROVIDE_IFELSE([LT_OUTPUT],
-	dnl If the libtool generation code has been placed in $CONFIG_LT,
-	dnl instead of duplicating it all over again into config.status,
-	dnl then we will have config.status run $CONFIG_LT later, so it
-	dnl needs to know what name is stored there:
-        [AC_CONFIG_COMMANDS([libtool],
-            [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])],
-    dnl If the libtool generation code is destined for config.status,
-    dnl expand the accumulated commands and init code now:
-    [AC_CONFIG_COMMANDS([libtool],
-        [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])])
-])#_LT_CONFIG_COMMANDS
-
-
-# Initialize.
-m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT],
-[
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-sed_quote_subst='$sed_quote_subst'
-double_quote_subst='$double_quote_subst'
-delay_variable_subst='$delay_variable_subst'
-_LT_CONFIG_STATUS_DECLARATIONS
-LTCC='$LTCC'
-LTCFLAGS='$LTCFLAGS'
-compiler='$compiler_DEFAULT'
-
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
-  eval 'cat <<_LTECHO_EOF
-\$[]1
-_LTECHO_EOF'
-}
-
-# Quote evaled strings.
-for var in lt_decl_all_varnames([[ \
-]], lt_decl_quote_varnames); do
-    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
-    *[[\\\\\\\`\\"\\\$]]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-# Double-quote double-evaled strings.
-for var in lt_decl_all_varnames([[ \
-]], lt_decl_dquote_varnames); do
-    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
-    *[[\\\\\\\`\\"\\\$]]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-_LT_OUTPUT_LIBTOOL_INIT
-])
-
-# _LT_GENERATED_FILE_INIT(FILE, [COMMENT])
-# ------------------------------------
-# Generate a child script FILE with all initialization necessary to
-# reuse the environment learned by the parent script, and make the
-# file executable.  If COMMENT is supplied, it is inserted after the
-# `#!' sequence but before initialization text begins.  After this
-# macro, additional text can be appended to FILE to form the body of
-# the child script.  The macro ends with non-zero status if the
-# file could not be fully written (such as if the disk is full).
-m4_ifdef([AS_INIT_GENERATED],
-[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])],
-[m4_defun([_LT_GENERATED_FILE_INIT],
-[m4_require([AS_PREPARE])]dnl
-[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl
-[lt_write_fail=0
-cat >$1 <<_ASEOF || lt_write_fail=1
-#! $SHELL
-# Generated by $as_me.
-$2
-SHELL=\${CONFIG_SHELL-$SHELL}
-export SHELL
-_ASEOF
-cat >>$1 <<\_ASEOF || lt_write_fail=1
-AS_SHELL_SANITIZE
-_AS_PREPARE
-exec AS_MESSAGE_FD>&1
-_ASEOF
-test $lt_write_fail = 0 && chmod +x $1[]dnl
-m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT
-
-# LT_OUTPUT
-# ---------
-# This macro allows early generation of the libtool script (before
-# AC_OUTPUT is called), incase it is used in configure for compilation
-# tests.
-AC_DEFUN([LT_OUTPUT],
-[: ${CONFIG_LT=./config.lt}
-AC_MSG_NOTICE([creating $CONFIG_LT])
-_LT_GENERATED_FILE_INIT(["$CONFIG_LT"],
-[# Run this file to recreate a libtool stub with the current configuration.])
-
-cat >>"$CONFIG_LT" <<\_LTEOF
-lt_cl_silent=false
-exec AS_MESSAGE_LOG_FD>>config.log
-{
-  echo
-  AS_BOX([Running $as_me.])
-} >&AS_MESSAGE_LOG_FD
-
-lt_cl_help="\
-\`$as_me' creates a local libtool stub from the current configuration,
-for use in further configure time tests before the real libtool is
-generated.
-
-Usage: $[0] [[OPTIONS]]
-
-  -h, --help      print this help, then exit
-  -V, --version   print version number, then exit
-  -q, --quiet     do not print progress messages
-  -d, --debug     don't remove temporary files
-
-Report bugs to <bug-libtool at gnu.org>."
-
-lt_cl_version="\
-m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
-m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
-configured by $[0], generated by m4_PACKAGE_STRING.
-
-Copyright (C) 2011 Free Software Foundation, Inc.
-This config.lt script is free software; the Free Software Foundation
-gives unlimited permision to copy, distribute and modify it."
-
-while test $[#] != 0
-do
-  case $[1] in
-    --version | --v* | -V )
-      echo "$lt_cl_version"; exit 0 ;;
-    --help | --h* | -h )
-      echo "$lt_cl_help"; exit 0 ;;
-    --debug | --d* | -d )
-      debug=: ;;
-    --quiet | --q* | --silent | --s* | -q )
-      lt_cl_silent=: ;;
-
-    -*) AC_MSG_ERROR([unrecognized option: $[1]
-Try \`$[0] --help' for more information.]) ;;
-
-    *) AC_MSG_ERROR([unrecognized argument: $[1]
-Try \`$[0] --help' for more information.]) ;;
-  esac
-  shift
-done
-
-if $lt_cl_silent; then
-  exec AS_MESSAGE_FD>/dev/null
-fi
-_LTEOF
-
-cat >>"$CONFIG_LT" <<_LTEOF
-_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
-_LTEOF
-
-cat >>"$CONFIG_LT" <<\_LTEOF
-AC_MSG_NOTICE([creating $ofile])
-_LT_OUTPUT_LIBTOOL_COMMANDS
-AS_EXIT(0)
-_LTEOF
-chmod +x "$CONFIG_LT"
-
-# configure is writing to config.log, but config.lt does its own redirection,
-# appending to config.log, which fails on DOS, as config.log is still kept
-# open by configure.  Here we exec the FD to /dev/null, effectively closing
-# config.log, so it can be properly (re)opened and appended to by config.lt.
-lt_cl_success=:
-test "$silent" = yes &&
-  lt_config_lt_args="$lt_config_lt_args --quiet"
-exec AS_MESSAGE_LOG_FD>/dev/null
-$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
-exec AS_MESSAGE_LOG_FD>>config.log
-$lt_cl_success || AS_EXIT(1)
-])# LT_OUTPUT
-
-
-# _LT_CONFIG(TAG)
-# ---------------
-# If TAG is the built-in tag, create an initial libtool script with a
-# default configuration from the untagged config vars.  Otherwise add code
-# to config.status for appending the configuration named by TAG from the
-# matching tagged config vars.
-m4_defun([_LT_CONFIG],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-_LT_CONFIG_SAVE_COMMANDS([
-  m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
-  m4_if(_LT_TAG, [C], [
-    # See if we are running on zsh, and set the options which allow our
-    # commands through without removal of \ escapes.
-    if test -n "${ZSH_VERSION+set}" ; then
-      setopt NO_GLOB_SUBST
-    fi
-
-    cfgfile="${ofile}T"
-    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
-    $RM "$cfgfile"
-
-    cat <<_LT_EOF >> "$cfgfile"
-#! $SHELL
-
-# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-# NOTE: Changes made to this file will be lost: look at ltmain.sh.
-#
-_LT_COPYING
-_LT_LIBTOOL_TAGS
-
-# ### BEGIN LIBTOOL CONFIG
-_LT_LIBTOOL_CONFIG_VARS
-_LT_LIBTOOL_TAG_VARS
-# ### END LIBTOOL CONFIG
-
-_LT_EOF
-
-  case $host_os in
-  aix3*)
-    cat <<\_LT_EOF >> "$cfgfile"
-# AIX sometimes has problems with the GCC collect2 program.  For some
-# reason, if we set the COLLECT_NAMES environment variable, the problems
-# vanish in a puff of smoke.
-if test "X${COLLECT_NAMES+set}" != Xset; then
-  COLLECT_NAMES=
-  export COLLECT_NAMES
-fi
-_LT_EOF
-    ;;
-  esac
-
-  _LT_PROG_LTMAIN
-
-  # We use sed instead of cat because bash on DJGPP gets confused if
-  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
-  # text mode, it properly converts lines to CR/LF.  This bash problem
-  # is reportedly fixed, but why not run on old versions too?
-  sed '$q' "$ltmain" >> "$cfgfile" \
-     || (rm -f "$cfgfile"; exit 1)
-
-  _LT_PROG_REPLACE_SHELLFNS
-
-   mv -f "$cfgfile" "$ofile" ||
-    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
-  chmod +x "$ofile"
-],
-[cat <<_LT_EOF >> "$ofile"
-
-dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded
-dnl in a comment (ie after a #).
-# ### BEGIN LIBTOOL TAG CONFIG: $1
-_LT_LIBTOOL_TAG_VARS(_LT_TAG)
-# ### END LIBTOOL TAG CONFIG: $1
-_LT_EOF
-])dnl /m4_if
-],
-[m4_if([$1], [], [
-    PACKAGE='$PACKAGE'
-    VERSION='$VERSION'
-    TIMESTAMP='$TIMESTAMP'
-    RM='$RM'
-    ofile='$ofile'], [])
-])dnl /_LT_CONFIG_SAVE_COMMANDS
-])# _LT_CONFIG
-
-
-# LT_SUPPORTED_TAG(TAG)
-# ---------------------
-# Trace this macro to discover what tags are supported by the libtool
-# --tag option, using:
-#    autoconf --trace 'LT_SUPPORTED_TAG:$1'
-AC_DEFUN([LT_SUPPORTED_TAG], [])
-
-
-# C support is built-in for now
-m4_define([_LT_LANG_C_enabled], [])
-m4_define([_LT_TAGS], [])
-
-
-# LT_LANG(LANG)
-# -------------
-# Enable libtool support for the given language if not already enabled.
-AC_DEFUN([LT_LANG],
-[AC_BEFORE([$0], [LT_OUTPUT])dnl
-m4_case([$1],
-  [C],			[_LT_LANG(C)],
-  [C++],		[_LT_LANG(CXX)],
-  [Go],			[_LT_LANG(GO)],
-  [Java],		[_LT_LANG(GCJ)],
-  [Fortran 77],		[_LT_LANG(F77)],
-  [Fortran],		[_LT_LANG(FC)],
-  [Windows Resource],	[_LT_LANG(RC)],
-  [m4_ifdef([_LT_LANG_]$1[_CONFIG],
-    [_LT_LANG($1)],
-    [m4_fatal([$0: unsupported language: "$1"])])])dnl
-])# LT_LANG
-
-
-# _LT_LANG(LANGNAME)
-# ------------------
-m4_defun([_LT_LANG],
-[m4_ifdef([_LT_LANG_]$1[_enabled], [],
-  [LT_SUPPORTED_TAG([$1])dnl
-  m4_append([_LT_TAGS], [$1 ])dnl
-  m4_define([_LT_LANG_]$1[_enabled], [])dnl
-  _LT_LANG_$1_CONFIG($1)])dnl
-])# _LT_LANG
-
-
-m4_ifndef([AC_PROG_GO], [
-############################################################
-# NOTE: This macro has been submitted for inclusion into   #
-#  GNU Autoconf as AC_PROG_GO.  When it is available in    #
-#  a released version of Autoconf we should remove this    #
-#  macro and use it instead.                               #
-############################################################
-m4_defun([AC_PROG_GO],
-[AC_LANG_PUSH(Go)dnl
-AC_ARG_VAR([GOC],     [Go compiler command])dnl
-AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl
-_AC_ARG_VAR_LDFLAGS()dnl
-AC_CHECK_TOOL(GOC, gccgo)
-if test -z "$GOC"; then
-  if test -n "$ac_tool_prefix"; then
-    AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo])
-  fi
-fi
-if test -z "$GOC"; then
-  AC_CHECK_PROG(GOC, gccgo, gccgo, false)
-fi
-])#m4_defun
-])#m4_ifndef
-
-
-# _LT_LANG_DEFAULT_CONFIG
-# -----------------------
-m4_defun([_LT_LANG_DEFAULT_CONFIG],
-[AC_PROVIDE_IFELSE([AC_PROG_CXX],
-  [LT_LANG(CXX)],
-  [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])])
-
-AC_PROVIDE_IFELSE([AC_PROG_F77],
-  [LT_LANG(F77)],
-  [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])])
-
-AC_PROVIDE_IFELSE([AC_PROG_FC],
-  [LT_LANG(FC)],
-  [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])])
-
-dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal
-dnl pulling things in needlessly.
-AC_PROVIDE_IFELSE([AC_PROG_GCJ],
-  [LT_LANG(GCJ)],
-  [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
-    [LT_LANG(GCJ)],
-    [AC_PROVIDE_IFELSE([LT_PROG_GCJ],
-      [LT_LANG(GCJ)],
-      [m4_ifdef([AC_PROG_GCJ],
-	[m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])])
-       m4_ifdef([A][M_PROG_GCJ],
-	[m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])])
-       m4_ifdef([LT_PROG_GCJ],
-	[m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
-
-AC_PROVIDE_IFELSE([AC_PROG_GO],
-  [LT_LANG(GO)],
-  [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])])
-
-AC_PROVIDE_IFELSE([LT_PROG_RC],
-  [LT_LANG(RC)],
-  [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
-])# _LT_LANG_DEFAULT_CONFIG
-
-# Obsolete macros:
-AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
-AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
-AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
-AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
-AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
-dnl AC_DEFUN([AC_LIBTOOL_F77], [])
-dnl AC_DEFUN([AC_LIBTOOL_FC], [])
-dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
-dnl AC_DEFUN([AC_LIBTOOL_RC], [])
-
-
-# _LT_TAG_COMPILER
-# ----------------
-m4_defun([_LT_TAG_COMPILER],
-[AC_REQUIRE([AC_PROG_CC])dnl
-
-_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
-_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl
-_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl
-_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-])# _LT_TAG_COMPILER
-
-
-# _LT_COMPILER_BOILERPLATE
-# ------------------------
-# Check for compiler boilerplate output or warnings with
-# the simple compiler test code.
-m4_defun([_LT_COMPILER_BOILERPLATE],
-[m4_require([_LT_DECL_SED])dnl
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-])# _LT_COMPILER_BOILERPLATE
-
-
-# _LT_LINKER_BOILERPLATE
-# ----------------------
-# Check for linker boilerplate output or warnings with
-# the simple link test code.
-m4_defun([_LT_LINKER_BOILERPLATE],
-[m4_require([_LT_DECL_SED])dnl
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-])# _LT_LINKER_BOILERPLATE
-
-# _LT_REQUIRED_DARWIN_CHECKS
-# -------------------------
-m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
-  case $host_os in
-    rhapsody* | darwin*)
-    AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
-    AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
-    AC_CHECK_TOOL([LIPO], [lipo], [:])
-    AC_CHECK_TOOL([OTOOL], [otool], [:])
-    AC_CHECK_TOOL([OTOOL64], [otool64], [:])
-    _LT_DECL([], [DSYMUTIL], [1],
-      [Tool to manipulate archived DWARF debug symbol files on Mac OS X])
-    _LT_DECL([], [NMEDIT], [1],
-      [Tool to change global to local symbols on Mac OS X])
-    _LT_DECL([], [LIPO], [1],
-      [Tool to manipulate fat objects and archives on Mac OS X])
-    _LT_DECL([], [OTOOL], [1],
-      [ldd/readelf like tool for Mach-O binaries on Mac OS X])
-    _LT_DECL([], [OTOOL64], [1],
-      [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
-
-    AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
-      [lt_cv_apple_cc_single_mod=no
-      if test -z "${LT_MULTI_MODULE}"; then
-	# By default we will add the -single_module flag. You can override
-	# by either setting the environment variable LT_MULTI_MODULE
-	# non-empty at configure time, or by adding -multi_module to the
-	# link flags.
-	rm -rf libconftest.dylib*
-	echo "int foo(void){return 1;}" > conftest.c
-	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
--dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
-	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
-	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
-        _lt_result=$?
-	# If there is a non-empty error log, and "single_module"
-	# appears in it, assume the flag caused a linker warning
-        if test -s conftest.err && $GREP single_module conftest.err; then
-	  cat conftest.err >&AS_MESSAGE_LOG_FD
-	# Otherwise, if the output was created with a 0 exit code from
-	# the compiler, it worked.
-	elif test -f libconftest.dylib && test $_lt_result -eq 0; then
-	  lt_cv_apple_cc_single_mod=yes
-	else
-	  cat conftest.err >&AS_MESSAGE_LOG_FD
-	fi
-	rm -rf libconftest.dylib*
-	rm -f conftest.*
-      fi])
-
-    AC_CACHE_CHECK([for -exported_symbols_list linker flag],
-      [lt_cv_ld_exported_symbols_list],
-      [lt_cv_ld_exported_symbols_list=no
-      save_LDFLAGS=$LDFLAGS
-      echo "_main" > conftest.sym
-      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
-      AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
-	[lt_cv_ld_exported_symbols_list=yes],
-	[lt_cv_ld_exported_symbols_list=no])
-	LDFLAGS="$save_LDFLAGS"
-    ])
-
-    AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
-      [lt_cv_ld_force_load=no
-      cat > conftest.c << _LT_EOF
-int forced_loaded() { return 2;}
-_LT_EOF
-      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD
-      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD
-      echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
-      $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
-      echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD
-      $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD
-      cat > conftest.c << _LT_EOF
-int main() { return 0;}
-_LT_EOF
-      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
-      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
-      _lt_result=$?
-      if test -s conftest.err && $GREP force_load conftest.err; then
-	cat conftest.err >&AS_MESSAGE_LOG_FD
-      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
-	lt_cv_ld_force_load=yes
-      else
-	cat conftest.err >&AS_MESSAGE_LOG_FD
-      fi
-        rm -f conftest.err libconftest.a conftest conftest.c
-        rm -rf conftest.dSYM
-    ])
-    case $host_os in
-    rhapsody* | darwin1.[[012]])
-      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
-    darwin1.*)
-      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-    darwin*) # darwin 5.x on
-      # if running on 10.5 or later, the deployment target defaults
-      # to the OS version, if on x86, and 10.4, the deployment
-      # target defaults to 10.4. Don't you love it?
-      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
-	10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-	10.[[012]]*)
-	  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-	10.*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-      esac
-    ;;
-  esac
-    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
-      _lt_dar_single_mod='$single_module'
-    fi
-    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
-      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
-    else
-      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
-    fi
-    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
-      _lt_dsymutil='~$DSYMUTIL $lib || :'
-    else
-      _lt_dsymutil=
-    fi
-    ;;
-  esac
-])
-
-
-# _LT_DARWIN_LINKER_FEATURES([TAG])
-# ---------------------------------
-# Checks for linker and compiler features on darwin
-m4_defun([_LT_DARWIN_LINKER_FEATURES],
-[
-  m4_require([_LT_REQUIRED_DARWIN_CHECKS])
-  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-  _LT_TAGVAR(hardcode_direct, $1)=no
-  _LT_TAGVAR(hardcode_automatic, $1)=yes
-  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-  if test "$lt_cv_ld_force_load" = "yes"; then
-    _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-    m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes],
-                  [FC],  [_LT_TAGVAR(compiler_needs_object, $1)=yes])
-  else
-    _LT_TAGVAR(whole_archive_flag_spec, $1)=''
-  fi
-  _LT_TAGVAR(link_all_deplibs, $1)=yes
-  _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
-  case $cc_basename in
-     ifort*) _lt_dar_can_shared=yes ;;
-     *) _lt_dar_can_shared=$GCC ;;
-  esac
-  if test "$_lt_dar_can_shared" = "yes"; then
-    output_verbose_link_cmd=func_echo_all
-    _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-    _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-    m4_if([$1], [CXX],
-[   if test "$lt_cv_apple_cc_single_mod" != "yes"; then
-      _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
-      _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
-    fi
-],[])
-  else
-  _LT_TAGVAR(ld_shlibs, $1)=no
-  fi
-])
-
-# _LT_SYS_MODULE_PATH_AIX([TAGNAME])
-# ----------------------------------
-# Links a minimal program and checks the executable
-# for the system default hardcoded library path. In most cases,
-# this is /usr/lib:/lib, but when the MPI compilers are used
-# the location of the communication and MPI libs are included too.
-# If we don't find anything, use the default library path according
-# to the aix ld manual.
-# Store the results from the different compilers for each TAGNAME.
-# Allow to override them for all tags through lt_cv_aix_libpath.
-m4_defun([_LT_SYS_MODULE_PATH_AIX],
-[m4_require([_LT_DECL_SED])dnl
-if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])],
-  [AC_LINK_IFELSE([AC_LANG_PROGRAM],[
-  lt_aix_libpath_sed='[
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }]'
-  _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
-    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi],[])
-  if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
-    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib"
-  fi
-  ])
-  aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])
-fi
-])# _LT_SYS_MODULE_PATH_AIX
-
-
-# _LT_SHELL_INIT(ARG)
-# -------------------
-m4_define([_LT_SHELL_INIT],
-[m4_divert_text([M4SH-INIT], [$1
-])])# _LT_SHELL_INIT
-
-
-
-# _LT_PROG_ECHO_BACKSLASH
-# -----------------------
-# Find how we can fake an echo command that does not interpret backslash.
-# In particular, with Autoconf 2.60 or later we add some code to the start
-# of the generated configure script which will find a shell with a builtin
-# printf (which we can use as an echo command).
-m4_defun([_LT_PROG_ECHO_BACKSLASH],
-[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
-
-AC_MSG_CHECKING([how to print strings])
-# Test print first, because it will be a builtin if present.
-if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
-   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
-  ECHO='print -r --'
-elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-  ECHO='printf %s\n'
-else
-  # Use this function as a fallback that always works.
-  func_fallback_echo ()
-  {
-    eval 'cat <<_LTECHO_EOF
-$[]1
-_LTECHO_EOF'
-  }
-  ECHO='func_fallback_echo'
-fi
-
-# func_echo_all arg...
-# Invoke $ECHO with all args, space-separated.
-func_echo_all ()
-{
-    $ECHO "$*" 
-}
-
-case "$ECHO" in
-  printf*) AC_MSG_RESULT([printf]) ;;
-  print*) AC_MSG_RESULT([print -r]) ;;
-  *) AC_MSG_RESULT([cat]) ;;
-esac
-
-m4_ifdef([_AS_DETECT_SUGGESTED],
-[_AS_DETECT_SUGGESTED([
-  test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || (
-    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-    ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
-    ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
-    PATH=/empty FPATH=/empty; export PATH FPATH
-    test "X`printf %s $ECHO`" = "X$ECHO" \
-      || test "X`print -r -- $ECHO`" = "X$ECHO" )])])
-
-_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
-_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
-])# _LT_PROG_ECHO_BACKSLASH
-
-
-# _LT_WITH_SYSROOT
-# ----------------
-AC_DEFUN([_LT_WITH_SYSROOT],
-[AC_MSG_CHECKING([for sysroot])
-AC_ARG_WITH([sysroot],
-[  --with-sysroot[=DIR] Search for dependent libraries within DIR
-                        (or the compiler's sysroot if not specified).],
-[], [with_sysroot=no])
-
-dnl lt_sysroot will always be passed unquoted.  We quote it here
-dnl in case the user passed a directory name.
-lt_sysroot=
-case ${with_sysroot} in #(
- yes)
-   if test "$GCC" = yes; then
-     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
-   fi
-   ;; #(
- /*)
-   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
-   ;; #(
- no|'')
-   ;; #(
- *)
-   AC_MSG_RESULT([${with_sysroot}])
-   AC_MSG_ERROR([The sysroot must be an absolute path.])
-   ;;
-esac
-
- AC_MSG_RESULT([${lt_sysroot:-no}])
-_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
-[dependent libraries, and in which our libraries should be installed.])])
-
-# _LT_ENABLE_LOCK
-# ---------------
-m4_defun([_LT_ENABLE_LOCK],
-[AC_ARG_ENABLE([libtool-lock],
-  [AS_HELP_STRING([--disable-libtool-lock],
-    [avoid locking (might break parallel builds)])])
-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case $host in
-ia64-*-hpux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    case `/usr/bin/file conftest.$ac_objext` in
-      *ELF-32*)
-	HPUX_IA64_MODE="32"
-	;;
-      *ELF-64*)
-	HPUX_IA64_MODE="64"
-	;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-*-*-irix6*)
-  # Find out which ABI we are using.
-  echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    if test "$lt_cv_prog_gnu_ld" = yes; then
-      case `/usr/bin/file conftest.$ac_objext` in
-	*32-bit*)
-	  LD="${LD-ld} -melf32bsmip"
-	  ;;
-	*N32*)
-	  LD="${LD-ld} -melf32bmipn32"
-	  ;;
-	*64-bit*)
-	  LD="${LD-ld} -melf64bmip"
-	;;
-      esac
-    else
-      case `/usr/bin/file conftest.$ac_objext` in
-	*32-bit*)
-	  LD="${LD-ld} -32"
-	  ;;
-	*N32*)
-	  LD="${LD-ld} -n32"
-	  ;;
-	*64-bit*)
-	  LD="${LD-ld} -64"
-	  ;;
-      esac
-    fi
-  fi
-  rm -rf conftest*
-  ;;
-
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
-s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    case `/usr/bin/file conftest.o` in
-      *32-bit*)
-	case $host in
-	  x86_64-*kfreebsd*-gnu)
-	    LD="${LD-ld} -m elf_i386_fbsd"
-	    ;;
-	  x86_64-*linux*)
-	    case `/usr/bin/file conftest.o` in
-	      *x86-64*)
-		LD="${LD-ld} -m elf32_x86_64"
-		;;
-	      *)
-		LD="${LD-ld} -m elf_i386"
-		;;
-	    esac
-	    ;;
-	  powerpc64le-*)
-	    LD="${LD-ld} -m elf32lppclinux"
-	    ;;
-	  powerpc64-*)
-	    LD="${LD-ld} -m elf32ppclinux"
-	    ;;
-	  s390x-*linux*)
-	    LD="${LD-ld} -m elf_s390"
-	    ;;
-	  sparc64-*linux*)
-	    LD="${LD-ld} -m elf32_sparc"
-	    ;;
-	esac
-	;;
-      *64-bit*)
-	case $host in
-	  x86_64-*kfreebsd*-gnu)
-	    LD="${LD-ld} -m elf_x86_64_fbsd"
-	    ;;
-	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_x86_64"
-	    ;;
-	  powerpcle-*)
-	    LD="${LD-ld} -m elf64lppc"
-	    ;;
-	  powerpc-*)
-	    LD="${LD-ld} -m elf64ppc"
-	    ;;
-	  s390*-*linux*|s390*-*tpf*)
-	    LD="${LD-ld} -m elf64_s390"
-	    ;;
-	  sparc*-*linux*)
-	    LD="${LD-ld} -m elf64_sparc"
-	    ;;
-	esac
-	;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-
-*-*-sco3.2v5*)
-  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-  SAVE_CFLAGS="$CFLAGS"
-  CFLAGS="$CFLAGS -belf"
-  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
-    [AC_LANG_PUSH(C)
-     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
-     AC_LANG_POP])
-  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
-    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
-    CFLAGS="$SAVE_CFLAGS"
-  fi
-  ;;
-*-*solaris*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    case `/usr/bin/file conftest.o` in
-    *64-bit*)
-      case $lt_cv_prog_gnu_ld in
-      yes*)
-        case $host in
-        i?86-*-solaris*)
-          LD="${LD-ld} -m elf_x86_64"
-          ;;
-        sparc*-*-solaris*)
-          LD="${LD-ld} -m elf64_sparc"
-          ;;
-        esac
-        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
-        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
-          LD="${LD-ld}_sol2"
-        fi
-        ;;
-      *)
-	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
-	  LD="${LD-ld} -64"
-	fi
-	;;
-      esac
-      ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-esac
-
-need_locks="$enable_libtool_lock"
-])# _LT_ENABLE_LOCK
-
-
-# _LT_PROG_AR
-# -----------
-m4_defun([_LT_PROG_AR],
-[AC_CHECK_TOOLS(AR, [ar], false)
-: ${AR=ar}
-: ${AR_FLAGS=cru}
-_LT_DECL([], [AR], [1], [The archiver])
-_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive])
-
-AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
-  [lt_cv_ar_at_file=no
-   AC_COMPILE_IFELSE([AC_LANG_PROGRAM],
-     [echo conftest.$ac_objext > conftest.lst
-      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD'
-      AC_TRY_EVAL([lt_ar_try])
-      if test "$ac_status" -eq 0; then
-	# Ensure the archiver fails upon bogus file names.
-	rm -f conftest.$ac_objext libconftest.a
-	AC_TRY_EVAL([lt_ar_try])
-	if test "$ac_status" -ne 0; then
-          lt_cv_ar_at_file=@
-        fi
-      fi
-      rm -f conftest.* libconftest.a
-     ])
-  ])
-
-if test "x$lt_cv_ar_at_file" = xno; then
-  archiver_list_spec=
-else
-  archiver_list_spec=$lt_cv_ar_at_file
-fi
-_LT_DECL([], [archiver_list_spec], [1],
-  [How to feed a file listing to the archiver])
-])# _LT_PROG_AR
-
-
-# _LT_CMD_OLD_ARCHIVE
-# -------------------
-m4_defun([_LT_CMD_OLD_ARCHIVE],
-[_LT_PROG_AR
-
-AC_CHECK_TOOL(STRIP, strip, :)
-test -z "$STRIP" && STRIP=:
-_LT_DECL([], [STRIP], [1], [A symbol stripping program])
-
-AC_CHECK_TOOL(RANLIB, ranlib, :)
-test -z "$RANLIB" && RANLIB=:
-_LT_DECL([], [RANLIB], [1],
-    [Commands used to install an old-style archive])
-
-# Determine commands to create old-style static archives.
-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
-old_postinstall_cmds='chmod 644 $oldlib'
-old_postuninstall_cmds=
-
-if test -n "$RANLIB"; then
-  case $host_os in
-  openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
-    ;;
-  *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
-    ;;
-  esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
-fi
-
-case $host_os in
-  darwin*)
-    lock_old_archive_extraction=yes ;;
-  *)
-    lock_old_archive_extraction=no ;;
-esac
-_LT_DECL([], [old_postinstall_cmds], [2])
-_LT_DECL([], [old_postuninstall_cmds], [2])
-_LT_TAGDECL([], [old_archive_cmds], [2],
-    [Commands used to build an old-style archive])
-_LT_DECL([], [lock_old_archive_extraction], [0],
-    [Whether to use a lock for old archive extraction])
-])# _LT_CMD_OLD_ARCHIVE
-
-
-# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
-#		[OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
-# ----------------------------------------------------------------
-# Check whether the given compiler option works
-AC_DEFUN([_LT_COMPILER_OPTION],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_SED])dnl
-AC_CACHE_CHECK([$1], [$2],
-  [$2=no
-   m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$3"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&AS_MESSAGE_LOG_FD
-   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       $2=yes
-     fi
-   fi
-   $RM conftest*
-])
-
-if test x"[$]$2" = xyes; then
-    m4_if([$5], , :, [$5])
-else
-    m4_if([$6], , :, [$6])
-fi
-])# _LT_COMPILER_OPTION
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [])
-
-
-# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
-#                  [ACTION-SUCCESS], [ACTION-FAILURE])
-# ----------------------------------------------------
-# Check whether the given linker option works
-AC_DEFUN([_LT_LINKER_OPTION],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_SED])dnl
-AC_CACHE_CHECK([$1], [$2],
-  [$2=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $3"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&AS_MESSAGE_LOG_FD
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         $2=yes
-       fi
-     else
-       $2=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-])
-
-if test x"[$]$2" = xyes; then
-    m4_if([$4], , :, [$4])
-else
-    m4_if([$5], , :, [$5])
-fi
-])# _LT_LINKER_OPTION
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [])
-
-
-# LT_CMD_MAX_LEN
-#---------------
-AC_DEFUN([LT_CMD_MAX_LEN],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-# find the maximum length of command line arguments
-AC_MSG_CHECKING([the maximum length of command line arguments])
-AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
-  i=0
-  teststring="ABCD"
-
-  case $build_os in
-  msdosdjgpp*)
-    # On DJGPP, this test can blow up pretty badly due to problems in libc
-    # (any single argument exceeding 2000 bytes causes a buffer overrun
-    # during glob expansion).  Even if it were fixed, the result of this
-    # check would be larger than it should be.
-    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
-    ;;
-
-  gnu*)
-    # Under GNU Hurd, this test is not required because there is
-    # no limit to the length of command line arguments.
-    # Libtool will interpret -1 as no limit whatsoever
-    lt_cv_sys_max_cmd_len=-1;
-    ;;
-
-  cygwin* | mingw* | cegcc*)
-    # On Win9x/ME, this test blows up -- it succeeds, but takes
-    # about 5 minutes as the teststring grows exponentially.
-    # Worse, since 9x/ME are not pre-emptively multitasking,
-    # you end up with a "frozen" computer, even though with patience
-    # the test eventually succeeds (with a max line length of 256k).
-    # Instead, let's just punt: use the minimum linelength reported by
-    # all of the supported platforms: 8192 (on NT/2K/XP).
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  mint*)
-    # On MiNT this can take a long time and run out of memory.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  amigaos*)
-    # On AmigaOS with pdksh, this test takes hours, literally.
-    # So we just punt and use a minimum line length of 8192.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
-    # This has been around since 386BSD, at least.  Likely further.
-    if test -x /sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
-    elif test -x /usr/sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
-    else
-      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
-    fi
-    # And add a safety zone
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    ;;
-
-  interix*)
-    # We know the value 262144 and hardcode it with a safety zone (like BSD)
-    lt_cv_sys_max_cmd_len=196608
-    ;;
-
-  os2*)
-    # The test takes a long time on OS/2.
-    lt_cv_sys_max_cmd_len=8192
-    ;;
-
-  osf*)
-    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
-    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
-    # nice to cause kernel panics so lets avoid the loop below.
-    # First set a reasonable default.
-    lt_cv_sys_max_cmd_len=16384
-    #
-    if test -x /sbin/sysconfig; then
-      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
-        *1*) lt_cv_sys_max_cmd_len=-1 ;;
-      esac
-    fi
-    ;;
-  sco3.2v5*)
-    lt_cv_sys_max_cmd_len=102400
-    ;;
-  sysv5* | sco5v6* | sysv4.2uw2*)
-    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
-    if test -n "$kargmax"; then
-      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[	 ]]//'`
-    else
-      lt_cv_sys_max_cmd_len=32768
-    fi
-    ;;
-  *)
-    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len" && \
-	test undefined != "$lt_cv_sys_max_cmd_len"; then
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    else
-      # Make teststring a little bigger before we do anything with it.
-      # a 1K string should be a reasonable start.
-      for i in 1 2 3 4 5 6 7 8 ; do
-        teststring=$teststring$teststring
-      done
-      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
-      # If test is not a shell built-in, we'll probably end up computing a
-      # maximum length that is only half of the actual maximum length, but
-      # we can't tell.
-      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
-	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
-	      test $i != 17 # 1/2 MB should be enough
-      do
-        i=`expr $i + 1`
-        teststring=$teststring$teststring
-      done
-      # Only check the string length outside the loop.
-      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
-      teststring=
-      # Add a significant safety factor because C++ compilers can tack on
-      # massive amounts of additional arguments before passing them to the
-      # linker.  It appears as though 1/2 is a usable value.
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
-    fi
-    ;;
-  esac
-])
-if test -n $lt_cv_sys_max_cmd_len ; then
-  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
-else
-  AC_MSG_RESULT(none)
-fi
-max_cmd_len=$lt_cv_sys_max_cmd_len
-_LT_DECL([], [max_cmd_len], [0],
-    [What is the maximum length of a command?])
-])# LT_CMD_MAX_LEN
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [])
-
-
-# _LT_HEADER_DLFCN
-# ----------------
-m4_defun([_LT_HEADER_DLFCN],
-[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl
-])# _LT_HEADER_DLFCN
-
-
-# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
-#                      ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
-# ----------------------------------------------------------------
-m4_defun([_LT_TRY_DLOPEN_SELF],
-[m4_require([_LT_HEADER_DLFCN])dnl
-if test "$cross_compiling" = yes; then :
-  [$4]
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-[#line $LINENO "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL		RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL		DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL		0
-#  endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW		DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW	RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW	DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW	0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
-
-/* When -fvisbility=hidden is used, assume the code has been annotated
-   correspondingly for the symbols needed.  */
-#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-int fnord () __attribute__((visibility("default")));
-#endif
-
-int fnord () { return 42; }
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
-
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else
-        {
-	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
-          else puts (dlerror ());
-	}
-      /* dlclose (self); */
-    }
-  else
-    puts (dlerror ());
-
-  return status;
-}]
-_LT_EOF
-  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) $1 ;;
-      x$lt_dlneed_uscore) $2 ;;
-      x$lt_dlunknown|x*) $3 ;;
-    esac
-  else :
-    # compilation failed
-    $3
-  fi
-fi
-rm -fr conftest*
-])# _LT_TRY_DLOPEN_SELF
-
-
-# LT_SYS_DLOPEN_SELF
-# ------------------
-AC_DEFUN([LT_SYS_DLOPEN_SELF],
-[m4_require([_LT_HEADER_DLFCN])dnl
-if test "x$enable_dlopen" != xyes; then
-  enable_dlopen=unknown
-  enable_dlopen_self=unknown
-  enable_dlopen_self_static=unknown
-else
-  lt_cv_dlopen=no
-  lt_cv_dlopen_libs=
-
-  case $host_os in
-  beos*)
-    lt_cv_dlopen="load_add_on"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ;;
-
-  mingw* | pw32* | cegcc*)
-    lt_cv_dlopen="LoadLibrary"
-    lt_cv_dlopen_libs=
-    ;;
-
-  cygwin*)
-    lt_cv_dlopen="dlopen"
-    lt_cv_dlopen_libs=
-    ;;
-
-  darwin*)
-  # if libdl is installed we need to link against it
-    AC_CHECK_LIB([dl], [dlopen],
-		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
-    lt_cv_dlopen="dyld"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ])
-    ;;
-
-  *)
-    AC_CHECK_FUNC([shl_load],
-	  [lt_cv_dlopen="shl_load"],
-      [AC_CHECK_LIB([dld], [shl_load],
-	    [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
-	[AC_CHECK_FUNC([dlopen],
-	      [lt_cv_dlopen="dlopen"],
-	  [AC_CHECK_LIB([dl], [dlopen],
-		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
-	    [AC_CHECK_LIB([svld], [dlopen],
-		  [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
-	      [AC_CHECK_LIB([dld], [dld_link],
-		    [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
-	      ])
-	    ])
-	  ])
-	])
-      ])
-    ;;
-  esac
-
-  if test "x$lt_cv_dlopen" != xno; then
-    enable_dlopen=yes
-  else
-    enable_dlopen=no
-  fi
-
-  case $lt_cv_dlopen in
-  dlopen)
-    save_CPPFLAGS="$CPPFLAGS"
-    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-
-    save_LDFLAGS="$LDFLAGS"
-    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-
-    save_LIBS="$LIBS"
-    LIBS="$lt_cv_dlopen_libs $LIBS"
-
-    AC_CACHE_CHECK([whether a program can dlopen itself],
-	  lt_cv_dlopen_self, [dnl
-	  _LT_TRY_DLOPEN_SELF(
-	    lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
-	    lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
-    ])
-
-    if test "x$lt_cv_dlopen_self" = xyes; then
-      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
-      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
-	  lt_cv_dlopen_self_static, [dnl
-	  _LT_TRY_DLOPEN_SELF(
-	    lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
-	    lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
-      ])
-    fi
-
-    CPPFLAGS="$save_CPPFLAGS"
-    LDFLAGS="$save_LDFLAGS"
-    LIBS="$save_LIBS"
-    ;;
-  esac
-
-  case $lt_cv_dlopen_self in
-  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
-  *) enable_dlopen_self=unknown ;;
-  esac
-
-  case $lt_cv_dlopen_self_static in
-  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-  *) enable_dlopen_self_static=unknown ;;
-  esac
-fi
-_LT_DECL([dlopen_support], [enable_dlopen], [0],
-	 [Whether dlopen is supported])
-_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
-	 [Whether dlopen of programs is supported])
-_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
-	 [Whether dlopen of statically linked programs is supported])
-])# LT_SYS_DLOPEN_SELF
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [])
-
-
-# _LT_COMPILER_C_O([TAGNAME])
-# ---------------------------
-# Check to see if options -c and -o are simultaneously supported by compiler.
-# This macro does not hard code the compiler like AC_PROG_CC_C_O.
-m4_defun([_LT_COMPILER_C_O],
-[m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_TAG_COMPILER])dnl
-AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
-  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
-  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&AS_MESSAGE_LOG_FD
-   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
-     fi
-   fi
-   chmod u+w . 2>&AS_MESSAGE_LOG_FD
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-])
-_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1],
-	[Does compiler simultaneously support -c and -o options?])
-])# _LT_COMPILER_C_O
-
-
-# _LT_COMPILER_FILE_LOCKS([TAGNAME])
-# ----------------------------------
-# Check to see if we can do hard links to lock some files if needed
-m4_defun([_LT_COMPILER_FILE_LOCKS],
-[m4_require([_LT_ENABLE_LOCK])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-_LT_COMPILER_C_O([$1])
-
-hard_links="nottested"
-if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  AC_MSG_CHECKING([if we can lock with hard links])
-  hard_links=yes
-  $RM conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  AC_MSG_RESULT([$hard_links])
-  if test "$hard_links" = no; then
-    AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?])
-])# _LT_COMPILER_FILE_LOCKS
-
-
-# _LT_CHECK_OBJDIR
-# ----------------
-m4_defun([_LT_CHECK_OBJDIR],
-[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
-[rm -f .libs 2>/dev/null
-mkdir .libs 2>/dev/null
-if test -d .libs; then
-  lt_cv_objdir=.libs
-else
-  # MS-DOS does not allow filenames that begin with a dot.
-  lt_cv_objdir=_libs
-fi
-rmdir .libs 2>/dev/null])
-objdir=$lt_cv_objdir
-_LT_DECL([], [objdir], [0],
-         [The name of the directory that contains temporary libtool files])dnl
-m4_pattern_allow([LT_OBJDIR])dnl
-AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/",
-  [Define to the sub-directory in which libtool stores uninstalled libraries.])
-])# _LT_CHECK_OBJDIR
-
-
-# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME])
-# --------------------------------------
-# Check hardcoding attributes.
-m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
-[AC_MSG_CHECKING([how to hardcode library paths into programs])
-_LT_TAGVAR(hardcode_action, $1)=
-if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
-   test -n "$_LT_TAGVAR(runpath_var, $1)" ||
-   test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
-
-  # We can hardcode non-existent directories.
-  if test "$_LT_TAGVAR(hardcode_direct, $1)" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
-     test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then
-    # Linking always hardcodes the temporary library directory.
-    _LT_TAGVAR(hardcode_action, $1)=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    _LT_TAGVAR(hardcode_action, $1)=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  _LT_TAGVAR(hardcode_action, $1)=unsupported
-fi
-AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
-
-if test "$_LT_TAGVAR(hardcode_action, $1)" = relink ||
-   test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-_LT_TAGDECL([], [hardcode_action], [0],
-    [How to hardcode a shared library path into an executable])
-])# _LT_LINKER_HARDCODE_LIBPATH
-
-
-# _LT_CMD_STRIPLIB
-# ----------------
-m4_defun([_LT_CMD_STRIPLIB],
-[m4_require([_LT_DECL_EGREP])
-striplib=
-old_striplib=
-AC_MSG_CHECKING([whether stripping libraries is possible])
-if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
-  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-  AC_MSG_RESULT([yes])
-else
-# FIXME - insert some real tests, host_os isn't really good enough
-  case $host_os in
-  darwin*)
-    if test -n "$STRIP" ; then
-      striplib="$STRIP -x"
-      old_striplib="$STRIP -S"
-      AC_MSG_RESULT([yes])
-    else
-      AC_MSG_RESULT([no])
-    fi
-    ;;
-  *)
-    AC_MSG_RESULT([no])
-    ;;
-  esac
-fi
-_LT_DECL([], [old_striplib], [1], [Commands to strip libraries])
-_LT_DECL([], [striplib], [1])
-])# _LT_CMD_STRIPLIB
-
-
-# _LT_SYS_DYNAMIC_LINKER([TAG])
-# -----------------------------
-# PORTME Fill in your ld.so characteristics
-m4_defun([_LT_SYS_DYNAMIC_LINKER],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_OBJDUMP])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_CHECK_SHELL_FEATURES])dnl
-AC_MSG_CHECKING([dynamic linker characteristics])
-m4_if([$1],
-	[], [
-if test "$GCC" = yes; then
-  case $host_os in
-    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
-    *) lt_awk_arg="/^libraries:/" ;;
-  esac
-  case $host_os in
-    mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;;
-    *) lt_sed_strip_eq="s,=/,/,g" ;;
-  esac
-  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
-  case $lt_search_path_spec in
-  *\;*)
-    # if the path contains ";" then we assume it to be the separator
-    # otherwise default to the standard path separator (i.e. ":") - it is
-    # assumed that no part of a normal pathname contains ";" but that should
-    # okay in the real world where ";" in dirpaths is itself problematic.
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
-    ;;
-  *)
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
-    ;;
-  esac
-  # Ok, now we have the path, separated by spaces, we can step through it
-  # and add multilib dir if necessary.
-  lt_tmp_lt_search_path_spec=
-  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
-  for lt_sys_path in $lt_search_path_spec; do
-    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
-      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
-    else
-      test -d "$lt_sys_path" && \
-	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
-    fi
-  done
-  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
-BEGIN {RS=" "; FS="/|\n";} {
-  lt_foo="";
-  lt_count=0;
-  for (lt_i = NF; lt_i > 0; lt_i--) {
-    if ($lt_i != "" && $lt_i != ".") {
-      if ($lt_i == "..") {
-        lt_count++;
-      } else {
-        if (lt_count == 0) {
-          lt_foo="/" $lt_i lt_foo;
-        } else {
-          lt_count--;
-        }
-      }
-    }
-  }
-  if (lt_foo != "") { lt_freq[[lt_foo]]++; }
-  if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
-}'`
-  # AWK program above erroneously prepends '/' to C:/dos/paths
-  # for these hosts.
-  case $host_os in
-    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
-      $SED 's,/\([[A-Za-z]]:\),\1,g'` ;;
-  esac
-  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
-else
-  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi])
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
-  ;;
-
-aix[[4-9]]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
-    # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[[01]] | aix4.[[01]].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
-	:
-      else
-	can_build_shared=no
-      fi
-      ;;
-    esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  case $host_cpu in
-  powerpc)
-    # Since July 2007 AmigaOS4 officially supports .so libraries.
-    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    ;;
-  m68k)
-    library_names_spec='$libname.ixlibrary $libname.a'
-    # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-    ;;
-  esac
-  ;;
-
-beos*)
-  library_names_spec='${libname}${shared_ext}'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[[45]]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32* | cegcc*)
-  version_type=windows
-  shrext_cmds=".dll"
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$cc_basename in
-  yes,*)
-    # gcc
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname~
-      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-      fi'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-m4_if([$1], [],[
-      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    esac
-    dynamic_linker='Win32 ld.exe'
-    ;;
-
-  *,cl*)
-    # Native MSVC
-    libname_spec='$name'
-    soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-    library_names_spec='${libname}.dll.lib'
-
-    case $build_os in
-    mingw*)
-      sys_lib_search_path_spec=
-      lt_save_ifs=$IFS
-      IFS=';'
-      for lt_path in $LIB
-      do
-        IFS=$lt_save_ifs
-        # Let DOS variable expansion print the short 8.3 style file name.
-        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-      done
-      IFS=$lt_save_ifs
-      # Convert to MSYS style.
-      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'`
-      ;;
-    cygwin*)
-      # Convert to unix form, then to dos form, then back to unix form
-      # but this time dos style (no spaces!) so that the unix form looks
-      # like /cygdrive/c/PROGRA~1:/cygdr...
-      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      ;;
-    *)
-      sys_lib_search_path_spec="$LIB"
-      if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
-        # It is most probably a Windows format PATH.
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      # FIXME: find the short name or the path components, as spaces are
-      # common. (e.g. "Program Files" -> "PROGRA~1")
-      ;;
-    esac
-
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-    dynamic_linker='Win32 link.exe'
-    ;;
-
-  *)
-    # Assume MSVC wrapper
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    dynamic_linker='Win32 ld.exe'
-    ;;
-  esac
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-m4_if([$1], [],[
-  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[[23]].*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2.*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[[01]]* | freebsdelf3.[[01]]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
-  freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-haiku*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  dynamic_linker="$host_os runtime_loader"
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-    fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  hppa*64*)
-    shrext_cmds='.sl'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
-  postinstall_cmds='chmod 555 $lib'
-  # or fails outright, so override atomically:
-  install_override_mode=555
-  ;;
-
-interix[[3-9]]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux # correct to gnu/linux during the next big refactor
-	else
-		version_type=irix
-	fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-
-  # Some binutils ld are patched to set DT_RUNPATH
-  AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath],
-    [lt_cv_shlibpath_overrides_runpath=no
-    save_LDFLAGS=$LDFLAGS
-    save_libdir=$libdir
-    eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
-	 LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
-    AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
-      [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
-	 [lt_cv_shlibpath_overrides_runpath=yes])])
-    LDFLAGS=$save_LDFLAGS
-    libdir=$save_libdir
-    ])
-  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Append ld.so.conf contents to the search path
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsdelf*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='NetBSD ld.elf_so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-*nto* | *qnx*)
-  version_type=qnx
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='ldqnx.so'
-  ;;
-
-openbsd*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
-  need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
-    *)				need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[[89]] | openbsd2.[[89]].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
-  ;;
-
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux # correct to gnu/linux during the next big refactor
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-	;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-uts4*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-AC_MSG_RESULT([$dynamic_linker])
-test "$dynamic_linker" = no && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-fi
-
-_LT_DECL([], [variables_saved_for_relink], [1],
-    [Variables whose values should be saved in libtool wrapper scripts and
-    restored at link time])
-_LT_DECL([], [need_lib_prefix], [0],
-    [Do we need the "lib" prefix for modules?])
-_LT_DECL([], [need_version], [0], [Do we need a version for libraries?])
-_LT_DECL([], [version_type], [0], [Library versioning type])
-_LT_DECL([], [runpath_var], [0],  [Shared library runtime path variable])
-_LT_DECL([], [shlibpath_var], [0],[Shared library path variable])
-_LT_DECL([], [shlibpath_overrides_runpath], [0],
-    [Is shlibpath searched before the hard-coded library search path?])
-_LT_DECL([], [libname_spec], [1], [Format of library name prefix])
-_LT_DECL([], [library_names_spec], [1],
-    [[List of archive names.  First name is the real one, the rest are links.
-    The last name is the one that the linker finds with -lNAME]])
-_LT_DECL([], [soname_spec], [1],
-    [[The coded name of the library, if different from the real name]])
-_LT_DECL([], [install_override_mode], [1],
-    [Permission mode override for installation of shared libraries])
-_LT_DECL([], [postinstall_cmds], [2],
-    [Command to use after installation of a shared archive])
-_LT_DECL([], [postuninstall_cmds], [2],
-    [Command to use after uninstallation of a shared archive])
-_LT_DECL([], [finish_cmds], [2],
-    [Commands used to finish a libtool library installation in a directory])
-_LT_DECL([], [finish_eval], [1],
-    [[As "finish_cmds", except a single script fragment to be evaled but
-    not shown]])
-_LT_DECL([], [hardcode_into_libs], [0],
-    [Whether we should hardcode library paths into libraries])
-_LT_DECL([], [sys_lib_search_path_spec], [2],
-    [Compile-time system search path for libraries])
-_LT_DECL([], [sys_lib_dlsearch_path_spec], [2],
-    [Run-time system search path for libraries])
-])# _LT_SYS_DYNAMIC_LINKER
-
-
-# _LT_PATH_TOOL_PREFIX(TOOL)
-# --------------------------
-# find a file program which can recognize shared library
-AC_DEFUN([_LT_PATH_TOOL_PREFIX],
-[m4_require([_LT_DECL_EGREP])dnl
-AC_MSG_CHECKING([for $1])
-AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
-[case $MAGIC_CMD in
-[[\\/*] |  ?:[\\/]*])
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-dnl $ac_dummy forces splitting on constant user-supplied paths.
-dnl POSIX.2 word splitting is done only on the output of word expansions,
-dnl not every word.  This closes a longstanding sh security hole.
-  ac_dummy="m4_if([$2], , $PATH, [$2])"
-  for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$1; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/$1"
-      if test -n "$file_magic_test_file"; then
-	case $deplibs_check_method in
-	"file_magic "*)
-	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-	    $EGREP "$file_magic_regex" > /dev/null; then
-	    :
-	  else
-	    cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool at gnu.org
-
-_LT_EOF
-	  fi ;;
-	esac
-      fi
-      break
-    fi
-  done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
-  ;;
-esac])
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
-  AC_MSG_RESULT($MAGIC_CMD)
-else
-  AC_MSG_RESULT(no)
-fi
-_LT_DECL([], [MAGIC_CMD], [0],
-	 [Used to examine libraries when file_magic_cmd begins with "file"])dnl
-])# _LT_PATH_TOOL_PREFIX
-
-# Old name:
-AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
-
-
-# _LT_PATH_MAGIC
-# --------------
-# find a file program which can recognize a shared library
-m4_defun([_LT_PATH_MAGIC],
-[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
-if test -z "$lt_cv_path_MAGIC_CMD"; then
-  if test -n "$ac_tool_prefix"; then
-    _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
-  else
-    MAGIC_CMD=:
-  fi
-fi
-])# _LT_PATH_MAGIC
-
-
-# LT_PATH_LD
-# ----------
-# find the pathname to the GNU or non-GNU linker
-AC_DEFUN([LT_PATH_LD],
-[AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_PROG_ECHO_BACKSLASH])dnl
-
-AC_ARG_WITH([gnu-ld],
-    [AS_HELP_STRING([--with-gnu-ld],
-	[assume the C compiler uses GNU ld @<:@default=no@:>@])],
-    [test "$withval" = no || with_gnu_ld=yes],
-    [with_gnu_ld=no])dnl
-
-ac_prog=ld
-if test "$GCC" = yes; then
-  # Check if gcc -print-prog-name=ld gives a path.
-  AC_MSG_CHECKING([for ld used by $CC])
-  case $host in
-  *-*-mingw*)
-    # gcc leaves a trailing carriage return which upsets mingw
-    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-  *)
-    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-  esac
-  case $ac_prog in
-    # Accept absolute paths.
-    [[\\/]]* | ?:[[\\/]]*)
-      re_direlt='/[[^/]][[^/]]*/\.\./'
-      # Canonicalize the pathname of ld
-      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
-      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
-	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
-      done
-      test -z "$LD" && LD="$ac_prog"
-      ;;
-  "")
-    # If it fails, then pretend we aren't using GCC.
-    ac_prog=ld
-    ;;
-  *)
-    # If it is relative, then search for the first ld in PATH.
-    with_gnu_ld=unknown
-    ;;
-  esac
-elif test "$with_gnu_ld" = yes; then
-  AC_MSG_CHECKING([for GNU ld])
-else
-  AC_MSG_CHECKING([for non-GNU ld])
-fi
-AC_CACHE_VAL(lt_cv_path_LD,
-[if test -z "$LD"; then
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  for ac_dir in $PATH; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD="$ac_dir/$ac_prog"
-      # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some variants of GNU ld only accept -v.
-      # Break only if it was the GNU/non-GNU ld that we prefer.
-      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-      *GNU* | *'with BFD'*)
-	test "$with_gnu_ld" != no && break
-	;;
-      *)
-	test "$with_gnu_ld" != yes && break
-	;;
-      esac
-    fi
-  done
-  IFS="$lt_save_ifs"
-else
-  lt_cv_path_LD="$LD" # Let the user override the test with a path.
-fi])
-LD="$lt_cv_path_LD"
-if test -n "$LD"; then
-  AC_MSG_RESULT($LD)
-else
-  AC_MSG_RESULT(no)
-fi
-test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
-_LT_PATH_LD_GNU
-AC_SUBST([LD])
-
-_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
-])# LT_PATH_LD
-
-# Old names:
-AU_ALIAS([AM_PROG_LD], [LT_PATH_LD])
-AU_ALIAS([AC_PROG_LD], [LT_PATH_LD])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_PROG_LD], [])
-dnl AC_DEFUN([AC_PROG_LD], [])
-
-
-# _LT_PATH_LD_GNU
-#- --------------
-m4_defun([_LT_PATH_LD_GNU],
-[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
-[# I'd rather use --version here, but apparently some GNU lds only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
-  lt_cv_prog_gnu_ld=yes
-  ;;
-*)
-  lt_cv_prog_gnu_ld=no
-  ;;
-esac])
-with_gnu_ld=$lt_cv_prog_gnu_ld
-])# _LT_PATH_LD_GNU
-
-
-# _LT_CMD_RELOAD
-# --------------
-# find reload flag for linker
-#   -- PORTME Some linkers may need a different reload flag.
-m4_defun([_LT_CMD_RELOAD],
-[AC_CACHE_CHECK([for $LD option to reload object files],
-  lt_cv_ld_reload_flag,
-  [lt_cv_ld_reload_flag='-r'])
-reload_flag=$lt_cv_ld_reload_flag
-case $reload_flag in
-"" | " "*) ;;
-*) reload_flag=" $reload_flag" ;;
-esac
-reload_cmds='$LD$reload_flag -o $output$reload_objs'
-case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    if test "$GCC" != yes; then
-      reload_cmds=false
-    fi
-    ;;
-  darwin*)
-    if test "$GCC" = yes; then
-      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-    else
-      reload_cmds='$LD$reload_flag -o $output$reload_objs'
-    fi
-    ;;
-esac
-_LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl
-_LT_TAGDECL([], [reload_cmds], [2])dnl
-])# _LT_CMD_RELOAD
-
-
-# _LT_CHECK_MAGIC_METHOD
-# ----------------------
-# how to check for library dependencies
-#  -- PORTME fill in with the dynamic library characteristics
-m4_defun([_LT_CHECK_MAGIC_METHOD],
-[m4_require([_LT_DECL_EGREP])
-m4_require([_LT_DECL_OBJDUMP])
-AC_CACHE_CHECK([how to recognize dependent libraries],
-lt_cv_deplibs_check_method,
-[lt_cv_file_magic_cmd='$MAGIC_CMD'
-lt_cv_file_magic_test_file=
-lt_cv_deplibs_check_method='unknown'
-# Need to set the preceding variable on all platforms that support
-# interlibrary dependencies.
-# 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
-# 'pass_all' -- all dependencies passed with no checks.
-# 'test_compile' -- check by making test program.
-# 'file_magic [[regex]]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given extended regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
-
-case $host_os in
-aix[[4-9]]*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-beos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-bsdi[[45]]*)
-  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
-  lt_cv_file_magic_cmd='/usr/bin/file -L'
-  lt_cv_file_magic_test_file=/shlib/libc.so
-  ;;
-
-cygwin*)
-  # func_win32_libid is a shell function defined in ltmain.sh
-  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-  lt_cv_file_magic_cmd='func_win32_libid'
-  ;;
-
-mingw* | pw32*)
-  # Base MSYS/MinGW do not provide the 'file' command needed by
-  # func_win32_libid shell function, so use a weaker test based on 'objdump',
-  # unless we find 'file', for example because we are cross-compiling.
-  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
-  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
-    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-    lt_cv_file_magic_cmd='func_win32_libid'
-  else
-    # Keep this pattern in sync with the one in func_win32_libid.
-    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
-    lt_cv_file_magic_cmd='$OBJDUMP -f'
-  fi
-  ;;
-
-cegcc*)
-  # use the weaker test based on 'objdump'. See mingw*.
-  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
-  lt_cv_file_magic_cmd='$OBJDUMP -f'
-  ;;
-
-darwin* | rhapsody*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-freebsd* | dragonfly*)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    case $host_cpu in
-    i*86 )
-      # Not sure whether the presence of OpenBSD here was a mistake.
-      # Let's accept both of them until this is cleared up.
-      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
-      lt_cv_file_magic_cmd=/usr/bin/file
-      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-      ;;
-    esac
-  else
-    lt_cv_deplibs_check_method=pass_all
-  fi
-  ;;
-
-haiku*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-hpux10.20* | hpux11*)
-  lt_cv_file_magic_cmd=/usr/bin/file
-  case $host_cpu in
-  ia64*)
-    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
-    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
-    ;;
-  hppa*64*)
-    [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]']
-    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
-    ;;
-  *)
-    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library'
-    lt_cv_file_magic_test_file=/usr/lib/libc.sl
-    ;;
-  esac
-  ;;
-
-interix[[3-9]]*)
-  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
-  lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $LD in
-  *-32|*"-32 ") libmagic=32-bit;;
-  *-n32|*"-n32 ") libmagic=N32;;
-  *-64|*"-64 ") libmagic=64-bit;;
-  *) libmagic=never-match;;
-  esac
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-netbsd* | netbsdelf*-gnu)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
-  fi
-  ;;
-
-newos6*)
-  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
-  lt_cv_file_magic_cmd=/usr/bin/file
-  lt_cv_file_magic_test_file=/usr/lib/libnls.so
-  ;;
-
-*nto* | *qnx*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-openbsd*)
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
-  fi
-  ;;
-
-osf3* | osf4* | osf5*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-rdos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-solaris*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv4 | sysv4.3*)
-  case $host_vendor in
-  motorola)
-    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
-    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
-    ;;
-  ncr)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  sequent)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
-    ;;
-  sni)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
-    lt_cv_file_magic_test_file=/lib/libc.so
-    ;;
-  siemens)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  pc)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  esac
-  ;;
-
-tpf*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-esac
-])
-
-file_magic_glob=
-want_nocaseglob=no
-if test "$build" = "$host"; then
-  case $host_os in
-  mingw* | pw32*)
-    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
-      want_nocaseglob=yes
-    else
-      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"`
-    fi
-    ;;
-  esac
-fi
-
-file_magic_cmd=$lt_cv_file_magic_cmd
-deplibs_check_method=$lt_cv_deplibs_check_method
-test -z "$deplibs_check_method" && deplibs_check_method=unknown
-
-_LT_DECL([], [deplibs_check_method], [1],
-    [Method to check whether dependent libraries are shared objects])
-_LT_DECL([], [file_magic_cmd], [1],
-    [Command to use when deplibs_check_method = "file_magic"])
-_LT_DECL([], [file_magic_glob], [1],
-    [How to find potential files when deplibs_check_method = "file_magic"])
-_LT_DECL([], [want_nocaseglob], [1],
-    [Find potential files using nocaseglob when deplibs_check_method = "file_magic"])
-])# _LT_CHECK_MAGIC_METHOD
-
-
-# LT_PATH_NM
-# ----------
-# find the pathname to a BSD- or MS-compatible name lister
-AC_DEFUN([LT_PATH_NM],
-[AC_REQUIRE([AC_PROG_CC])dnl
-AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
-[if test -n "$NM"; then
-  # Let the user override the test.
-  lt_cv_path_NM="$NM"
-else
-  lt_nm_to_check="${ac_tool_prefix}nm"
-  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
-    lt_nm_to_check="$lt_nm_to_check nm"
-  fi
-  for lt_tmp_nm in $lt_nm_to_check; do
-    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
-      IFS="$lt_save_ifs"
-      test -z "$ac_dir" && ac_dir=.
-      tmp_nm="$ac_dir/$lt_tmp_nm"
-      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
-	# Check to see if the nm accepts a BSD-compat flag.
-	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
-	#   nm: unknown option "B" ignored
-	# Tru64's nm complains that /dev/null is an invalid object file
-	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
-	*/dev/null* | *'Invalid file or object type'*)
-	  lt_cv_path_NM="$tmp_nm -B"
-	  break
-	  ;;
-	*)
-	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
-	  */dev/null*)
-	    lt_cv_path_NM="$tmp_nm -p"
-	    break
-	    ;;
-	  *)
-	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
-	    continue # so that we can try to find one that supports BSD flags
-	    ;;
-	  esac
-	  ;;
-	esac
-      fi
-    done
-    IFS="$lt_save_ifs"
-  done
-  : ${lt_cv_path_NM=no}
-fi])
-if test "$lt_cv_path_NM" != "no"; then
-  NM="$lt_cv_path_NM"
-else
-  # Didn't find any BSD compatible name lister, look for dumpbin.
-  if test -n "$DUMPBIN"; then :
-    # Let the user override the test.
-  else
-    AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
-    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
-    *COFF*)
-      DUMPBIN="$DUMPBIN -symbols"
-      ;;
-    *)
-      DUMPBIN=:
-      ;;
-    esac
-  fi
-  AC_SUBST([DUMPBIN])
-  if test "$DUMPBIN" != ":"; then
-    NM="$DUMPBIN"
-  fi
-fi
-test -z "$NM" && NM=nm
-AC_SUBST([NM])
-_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
-
-AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
-  [lt_cv_nm_interface="BSD nm"
-  echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
-  (eval "$ac_compile" 2>conftest.err)
-  cat conftest.err >&AS_MESSAGE_LOG_FD
-  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
-  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
-  cat conftest.err >&AS_MESSAGE_LOG_FD
-  (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD)
-  cat conftest.out >&AS_MESSAGE_LOG_FD
-  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
-    lt_cv_nm_interface="MS dumpbin"
-  fi
-  rm -f conftest*])
-])# LT_PATH_NM
-
-# Old names:
-AU_ALIAS([AM_PROG_NM], [LT_PATH_NM])
-AU_ALIAS([AC_PROG_NM], [LT_PATH_NM])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_PROG_NM], [])
-dnl AC_DEFUN([AC_PROG_NM], [])
-
-# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
-# --------------------------------
-# how to determine the name of the shared library
-# associated with a specific link library.
-#  -- PORTME fill in with the dynamic library characteristics
-m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB],
-[m4_require([_LT_DECL_EGREP])
-m4_require([_LT_DECL_OBJDUMP])
-m4_require([_LT_DECL_DLLTOOL])
-AC_CACHE_CHECK([how to associate runtime and link libraries],
-lt_cv_sharedlib_from_linklib_cmd,
-[lt_cv_sharedlib_from_linklib_cmd='unknown'
-
-case $host_os in
-cygwin* | mingw* | pw32* | cegcc*)
-  # two different shell functions defined in ltmain.sh
-  # decide which to use based on capabilities of $DLLTOOL
-  case `$DLLTOOL --help 2>&1` in
-  *--identify-strict*)
-    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
-    ;;
-  *)
-    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
-    ;;
-  esac
-  ;;
-*)
-  # fallback: assume linklib IS sharedlib
-  lt_cv_sharedlib_from_linklib_cmd="$ECHO"
-  ;;
-esac
-])
-sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
-test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
-
-_LT_DECL([], [sharedlib_from_linklib_cmd], [1],
-    [Command to associate shared and link libraries])
-])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
-
-
-# _LT_PATH_MANIFEST_TOOL
-# ----------------------
-# locate the manifest tool
-m4_defun([_LT_PATH_MANIFEST_TOOL],
-[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :)
-test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
-AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool],
-  [lt_cv_path_mainfest_tool=no
-  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD
-  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
-  cat conftest.err >&AS_MESSAGE_LOG_FD
-  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
-    lt_cv_path_mainfest_tool=yes
-  fi
-  rm -f conftest*])
-if test "x$lt_cv_path_mainfest_tool" != xyes; then
-  MANIFEST_TOOL=:
-fi
-_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl
-])# _LT_PATH_MANIFEST_TOOL
-
-
-# LT_LIB_M
-# --------
-# check for math library
-AC_DEFUN([LT_LIB_M],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-LIBM=
-case $host in
-*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*)
-  # These system don't have libm, or don't need it
-  ;;
-*-ncr-sysv4.3*)
-  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
-  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
-  ;;
-*)
-  AC_CHECK_LIB(m, cos, LIBM="-lm")
-  ;;
-esac
-AC_SUBST([LIBM])
-])# LT_LIB_M
-
-# Old name:
-AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_CHECK_LIBM], [])
-
-
-# _LT_COMPILER_NO_RTTI([TAGNAME])
-# -------------------------------
-m4_defun([_LT_COMPILER_NO_RTTI],
-[m4_require([_LT_TAG_COMPILER])dnl
-
-_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
-
-if test "$GCC" = yes; then
-  case $cc_basename in
-  nvcc*)
-    _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;;
-  *)
-    _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;;
-  esac
-
-  _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
-    lt_cv_prog_compiler_rtti_exceptions,
-    [-fno-rtti -fno-exceptions], [],
-    [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
-fi
-_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1],
-	[Compiler flag to turn off builtin functions])
-])# _LT_COMPILER_NO_RTTI
-
-
-# _LT_CMD_GLOBAL_SYMBOLS
-# ----------------------
-m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_PROG_AWK])dnl
-AC_REQUIRE([LT_PATH_NM])dnl
-AC_REQUIRE([LT_PATH_LD])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_TAG_COMPILER])dnl
-
-# Check for command to grab the raw symbol name followed by C symbol from nm.
-AC_MSG_CHECKING([command to parse $NM output from $compiler object])
-AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
-[
-# These are sane defaults that work on at least a few old systems.
-# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
-
-# Character class describing NM global symbol codes.
-symcode='[[BCDEGRST]]'
-
-# Regexp to match symbols that can be accessed directly from C.
-sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
-
-# Define system-specific variables.
-case $host_os in
-aix*)
-  symcode='[[BCDT]]'
-  ;;
-cygwin* | mingw* | pw32* | cegcc*)
-  symcode='[[ABCDGISTW]]'
-  ;;
-hpux*)
-  if test "$host_cpu" = ia64; then
-    symcode='[[ABCDEGRST]]'
-  fi
-  ;;
-irix* | nonstopux*)
-  symcode='[[BCDEGRST]]'
-  ;;
-osf*)
-  symcode='[[BCDEGQRST]]'
-  ;;
-solaris*)
-  symcode='[[BDRT]]'
-  ;;
-sco3.2v5*)
-  symcode='[[DT]]'
-  ;;
-sysv4.2uw2*)
-  symcode='[[DT]]'
-  ;;
-sysv5* | sco5v6* | unixware* | OpenUNIX*)
-  symcode='[[ABDT]]'
-  ;;
-sysv4)
-  symcode='[[DFNSTU]]'
-  ;;
-esac
-
-# If we're using GNU nm, then use its standard symbol codes.
-case `$NM -V 2>&1` in
-*GNU* | *'with BFD'*)
-  symcode='[[ABCDGIRSTW]]' ;;
-esac
-
-# Transform an extracted symbol line into a proper C declaration.
-# Some systems (esp. on ia64) link data and code symbols differently,
-# so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-
-# Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p'"
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
-
-# Handle CRLF in mingw tool chain
-opt_cr=
-case $build_os in
-mingw*)
-  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
-  ;;
-esac
-
-# Try without a prefix underscore, then with it.
-for ac_symprfx in "" "_"; do
-
-  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
-  symxfrm="\\1 $ac_symprfx\\2 \\2"
-
-  # Write the raw and C identifiers.
-  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-    # Fake it for dumpbin and say T for any non-static function
-    # and D for any global variable.
-    # Also find C++ and __fastcall symbols from MSVC++,
-    # which start with @ or ?.
-    lt_cv_sys_global_symbol_pipe="$AWK ['"\
-"     {last_section=section; section=\$ 3};"\
-"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
-"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
-"     \$ 0!~/External *\|/{next};"\
-"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
-"     {if(hide[section]) next};"\
-"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
-"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
-"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
-"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
-"     ' prfx=^$ac_symprfx]"
-  else
-    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[	 ]]\($symcode$symcode*\)[[	 ]][[	 ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
-  fi
-  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
-
-  # Check to see that the pipe works correctly.
-  pipe_works=no
-
-  rm -f conftest*
-  cat > conftest.$ac_ext <<_LT_EOF
-#ifdef __cplusplus
-extern "C" {
-#endif
-char nm_test_var;
-void nm_test_func(void);
-void nm_test_func(void){}
-#ifdef __cplusplus
-}
-#endif
-int main(){nm_test_var='a';nm_test_func();return(0);}
-_LT_EOF
-
-  if AC_TRY_EVAL(ac_compile); then
-    # Now try to grab the symbols.
-    nlist=conftest.nm
-    if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then
-      # Try sorting and uniquifying the output.
-      if sort "$nlist" | uniq > "$nlist"T; then
-	mv -f "$nlist"T "$nlist"
-      else
-	rm -f "$nlist"T
-      fi
-
-      # Make sure that we snagged all the symbols we need.
-      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
-	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
-	  cat <<_LT_EOF > conftest.$ac_ext
-/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
-#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-/* DATA imports from DLLs on WIN32 con't be const, because runtime
-   relocations are performed -- see ld's documentation on pseudo-relocs.  */
-# define LT@&t at _DLSYM_CONST
-#elif defined(__osf__)
-/* This system does not cope well with relocations in const data.  */
-# define LT@&t at _DLSYM_CONST
-#else
-# define LT@&t at _DLSYM_CONST const
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-_LT_EOF
-	  # Now generate the symbol file.
-	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
-
-	  cat <<_LT_EOF >> conftest.$ac_ext
-
-/* The mapping between symbol names and symbols.  */
-LT@&t at _DLSYM_CONST struct {
-  const char *name;
-  void       *address;
-}
-lt__PROGRAM__LTX_preloaded_symbols[[]] =
-{
-  { "@PROGRAM@", (void *) 0 },
-_LT_EOF
-	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
-	  cat <<\_LT_EOF >> conftest.$ac_ext
-  {0, (void *) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
-  return lt__PROGRAM__LTX_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-_LT_EOF
-	  # Now try linking the two files.
-	  mv conftest.$ac_objext conftstm.$ac_objext
-	  lt_globsym_save_LIBS=$LIBS
-	  lt_globsym_save_CFLAGS=$CFLAGS
-	  LIBS="conftstm.$ac_objext"
-	  CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
-	  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
-	    pipe_works=yes
-	  fi
-	  LIBS=$lt_globsym_save_LIBS
-	  CFLAGS=$lt_globsym_save_CFLAGS
-	else
-	  echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
-	fi
-      else
-	echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
-      fi
-    else
-      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
-    fi
-  else
-    echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
-    cat conftest.$ac_ext >&5
-  fi
-  rm -rf conftest* conftst*
-
-  # Do not use the global_symbol_pipe unless it works.
-  if test "$pipe_works" = yes; then
-    break
-  else
-    lt_cv_sys_global_symbol_pipe=
-  fi
-done
-])
-if test -z "$lt_cv_sys_global_symbol_pipe"; then
-  lt_cv_sys_global_symbol_to_cdecl=
-fi
-if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
-  AC_MSG_RESULT(failed)
-else
-  AC_MSG_RESULT(ok)
-fi
-
-# Response file support.
-if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-  nm_file_list_spec='@'
-elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then
-  nm_file_list_spec='@'
-fi
-
-_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
-    [Take the output of nm and produce a listing of raw symbols and C names])
-_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
-    [Transform the output of nm in a proper C declaration])
-_LT_DECL([global_symbol_to_c_name_address],
-    [lt_cv_sys_global_symbol_to_c_name_address], [1],
-    [Transform the output of nm in a C name address pair])
-_LT_DECL([global_symbol_to_c_name_address_lib_prefix],
-    [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
-    [Transform the output of nm in a C name address pair when lib prefix is needed])
-_LT_DECL([], [nm_file_list_spec], [1],
-    [Specify filename containing input files for $NM])
-]) # _LT_CMD_GLOBAL_SYMBOLS
-
-
-# _LT_COMPILER_PIC([TAGNAME])
-# ---------------------------
-m4_defun([_LT_COMPILER_PIC],
-[m4_require([_LT_TAG_COMPILER])dnl
-_LT_TAGVAR(lt_prog_compiler_wl, $1)=
-_LT_TAGVAR(lt_prog_compiler_pic, $1)=
-_LT_TAGVAR(lt_prog_compiler_static, $1)=
-
-m4_if([$1], [CXX], [
-  # C++ specific cases for pic, static, wl, etc.
-  if test "$GXX" = yes; then
-    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-
-    case $host_os in
-    aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
-            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-    mingw* | cygwin* | os2* | pw32* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      m4_if([$1], [GCJ], [],
-	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-      ;;
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
-      ;;
-    *djgpp*)
-      # DJGPP does not support shared libraries at all
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)=
-      ;;
-    haiku*)
-      # PIC is the default for Haiku.
-      # The "-static" flag exists, but is broken.
-      _LT_TAGVAR(lt_prog_compiler_static, $1)=
-      ;;
-    interix[[3-9]]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
-      fi
-      ;;
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-	;;
-      *)
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	;;
-      esac
-      ;;
-    *qnx* | *nto*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
-      ;;
-    *)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-      ;;
-    esac
-  else
-    case $host_os in
-      aix[[4-9]]*)
-	# All AIX code is PIC.
-	if test "$host_cpu" = ia64; then
-	  # AIX 5 now supports IA64 processor
-	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	else
-	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
-	fi
-	;;
-      chorus*)
-	case $cc_basename in
-	cxch68*)
-	  # Green Hills C++ Compiler
-	  # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
-	  ;;
-	esac
-	;;
-      mingw* | cygwin* | os2* | pw32* | cegcc*)
-	# This hack is so that the source file can tell whether it is being
-	# built for inclusion in a dll (and should export symbols for example).
-	m4_if([$1], [GCJ], [],
-	  [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-	;;
-      dgux*)
-	case $cc_basename in
-	  ec++*)
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    ;;
-	  ghcx*)
-	    # Green Hills C++ Compiler
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      freebsd* | dragonfly*)
-	# FreeBSD uses GNU C++
-	;;
-      hpux9* | hpux10* | hpux11*)
-	case $cc_basename in
-	  CC*)
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
-	    if test "$host_cpu" != ia64; then
-	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
-	    fi
-	    ;;
-	  aCC*)
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
-	    case $host_cpu in
-	    hppa*64*|ia64*)
-	      # +Z the default
-	      ;;
-	    *)
-	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
-	      ;;
-	    esac
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      interix*)
-	# This is c89, which is MS Visual C++ (no shared libs)
-	# Anyone wants to do a port?
-	;;
-      irix5* | irix6* | nonstopux*)
-	case $cc_basename in
-	  CC*)
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-	    # CC pic flag -KPIC is the default.
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-	case $cc_basename in
-	  KCC*)
-	    # KAI C++ Compiler
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	    ;;
-	  ecpc* )
-	    # old Intel C++ for x86_64 which still supported -KPIC.
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-	    ;;
-	  icpc* )
-	    # Intel C++, used to be incompatible with GCC.
-	    # ICC 10 doesn't accept -KPIC any more.
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-	    ;;
-	  pgCC* | pgcpp*)
-	    # Portland Group C++ compiler
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	    ;;
-	  cxx*)
-	    # Compaq C++
-	    # Make sure the PIC flag is empty.  It appears that all Alpha
-	    # Linux and Compaq Tru64 Unix objects are PIC.
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-	    ;;
-	  xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*)
-	    # IBM XL 8.0, 9.0 on PPC and BlueGene
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
-	    ;;
-	  *)
-	    case `$CC -V 2>&1 | sed 5q` in
-	    *Sun\ C*)
-	      # Sun C++ 5.9
-	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-	      ;;
-	    esac
-	    ;;
-	esac
-	;;
-      lynxos*)
-	;;
-      m88k*)
-	;;
-      mvs*)
-	case $cc_basename in
-	  cxx*)
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      netbsd* | netbsdelf*-gnu)
-	;;
-      *qnx* | *nto*)
-        # QNX uses GNU C++, but need to define -shared option too, otherwise
-        # it will coredump.
-        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
-        ;;
-      osf3* | osf4* | osf5*)
-	case $cc_basename in
-	  KCC*)
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
-	    ;;
-	  RCC*)
-	    # Rational C++ 2.4.1
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-	    ;;
-	  cxx*)
-	    # Digital/Compaq C++
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    # Make sure the PIC flag is empty.  It appears that all Alpha
-	    # Linux and Compaq Tru64 Unix objects are PIC.
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      psos*)
-	;;
-      solaris*)
-	case $cc_basename in
-	  CC* | sunCC*)
-	    # Sun C++ 4.2, 5.x and Centerline C++
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-	    ;;
-	  gcx*)
-	    # Green Hills C++ Compiler
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      sunos4*)
-	case $cc_basename in
-	  CC*)
-	    # Sun C++ 4.x
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	    ;;
-	  lcc*)
-	    # Lucid
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-	case $cc_basename in
-	  CC*)
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	    ;;
-	esac
-	;;
-      tandem*)
-	case $cc_basename in
-	  NCC*)
-	    # NonStop-UX NCC 3.20
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      vxworks*)
-	;;
-      *)
-	_LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-	;;
-    esac
-  fi
-],
-[
-  if test "$GCC" = yes; then
-    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-
-    case $host_os in
-      aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
-            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      m4_if([$1], [GCJ], [],
-	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-      ;;
-
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
-      ;;
-
-    haiku*)
-      # PIC is the default for Haiku.
-      # The "-static" flag exists, but is broken.
-      _LT_TAGVAR(lt_prog_compiler_static, $1)=
-      ;;
-
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-	# +Z the default
-	;;
-      *)
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	;;
-      esac
-      ;;
-
-    interix[[3-9]]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-
-    msdosdjgpp*)
-      # Just because we use GCC doesn't mean we suddenly get shared libraries
-      # on systems that don't support them.
-      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-      enable_shared=no
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
-      fi
-      ;;
-
-    *)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-      ;;
-    esac
-
-    case $cc_basename in
-    nvcc*) # Cuda Compiler Driver 2.2
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker '
-      if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
-        _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)"
-      fi
-      ;;
-    esac
-  else
-    # PORTME Check for flag to pass linker flags through the system compiler.
-    case $host_os in
-    aix*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      else
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
-      fi
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      m4_if([$1], [GCJ], [],
-	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-      ;;
-
-    hpux9* | hpux10* | hpux11*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-	# +Z the default
-	;;
-      *)
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
-	;;
-      esac
-      # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      # PIC (with -KPIC) is the default.
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-      ;;
-
-    linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-      case $cc_basename in
-      # old Intel for x86_64 which still supported -KPIC.
-      ecc*)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-        ;;
-      # icc used to be incompatible with GCC.
-      # ICC 10 doesn't accept -KPIC any more.
-      icc* | ifort*)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-        ;;
-      # Lahey Fortran 8.1.
-      lf95*)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
-	;;
-      nagfor*)
-	# NAG Fortran compiler
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	;;
-      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
-        # Portland Group compilers (*not* the Pentium gcc compiler,
-	# which looks to be a dead project)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-        ;;
-      ccc*)
-        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-        # All Alpha code is PIC.
-        _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-        ;;
-      xl* | bgxl* | bgf* | mpixl*)
-	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
-	;;
-      *)
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*)
-	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
-	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	  _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
-	  ;;
-	*Sun\ F* | *Sun*Fortran*)
-	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-	  ;;
-	*Sun\ C*)
-	  # Sun C 5.9
-	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	  ;;
-        *Intel*\ [[CF]]*Compiler*)
-	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-	  ;;
-	*Portland\ Group*)
-	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
-	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	  ;;
-	esac
-	;;
-      esac
-      ;;
-
-    newsos6)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
-      ;;
-
-    osf3* | osf4* | osf5*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      # All OSF/1 code is PIC.
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-      ;;
-
-    rdos*)
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-      ;;
-
-    solaris*)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      case $cc_basename in
-      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
-      *)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
-      esac
-      ;;
-
-    sunos4*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    sysv4 | sysv4.2uw2* | sysv4.3*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec ;then
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      fi
-      ;;
-
-    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    unicos*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-      ;;
-
-    uts4*)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    *)
-      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-      ;;
-    esac
-  fi
-])
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
-    ;;
-  *)
-    _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t at m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
-    ;;
-esac
-
-AC_CACHE_CHECK([for $compiler option to produce PIC],
-  [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)],
-  [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
-_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
-  _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works],
-    [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)],
-    [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t at m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
-    [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in
-     "" | " "*) ;;
-     *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;;
-     esac],
-    [_LT_TAGVAR(lt_prog_compiler_pic, $1)=
-     _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
-fi
-_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
-	[Additional compiler flags for building library objects])
-
-_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
-	[How to pass a linker flag through the compiler])
-#
-# Check to make sure the static flag actually works.
-#
-wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\"
-_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
-  _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1),
-  $lt_tmp_static_flag,
-  [],
-  [_LT_TAGVAR(lt_prog_compiler_static, $1)=])
-_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
-	[Compiler flag to prevent dynamic linking])
-])# _LT_COMPILER_PIC
-
-
-# _LT_LINKER_SHLIBS([TAGNAME])
-# ----------------------------
-# See if the linker supports building shared libraries.
-m4_defun([_LT_LINKER_SHLIBS],
-[AC_REQUIRE([LT_PATH_LD])dnl
-AC_REQUIRE([LT_PATH_NM])dnl
-m4_require([_LT_PATH_MANIFEST_TOOL])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
-m4_require([_LT_TAG_COMPILER])dnl
-AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
-m4_if([$1], [CXX], [
-  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
-  case $host_os in
-  aix[[4-9]]*)
-    # If we're using GNU nm, then we don't want the "-C" option.
-    # -C means demangle to AIX nm, but means don't demangle with GNU nm
-    # Also, AIX nm treats weak defined symbols like other global defined
-    # symbols, whereas GNU nm marks them as "W".
-    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-    else
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-    fi
-    ;;
-  pw32*)
-    _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
-    ;;
-  cygwin* | mingw* | cegcc*)
-    case $cc_basename in
-    cl*)
-      _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
-      ;;
-    *)
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
-      _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
-      ;;
-    esac
-    ;;
-  linux* | k*bsd*-gnu | gnu*)
-    _LT_TAGVAR(link_all_deplibs, $1)=no
-    ;;
-  *)
-    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-    ;;
-  esac
-], [
-  runpath_var=
-  _LT_TAGVAR(allow_undefined_flag, $1)=
-  _LT_TAGVAR(always_export_symbols, $1)=no
-  _LT_TAGVAR(archive_cmds, $1)=
-  _LT_TAGVAR(archive_expsym_cmds, $1)=
-  _LT_TAGVAR(compiler_needs_object, $1)=no
-  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-  _LT_TAGVAR(export_dynamic_flag_spec, $1)=
-  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  _LT_TAGVAR(hardcode_automatic, $1)=no
-  _LT_TAGVAR(hardcode_direct, $1)=no
-  _LT_TAGVAR(hardcode_direct_absolute, $1)=no
-  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-  _LT_TAGVAR(hardcode_libdir_separator, $1)=
-  _LT_TAGVAR(hardcode_minus_L, $1)=no
-  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-  _LT_TAGVAR(inherit_rpath, $1)=no
-  _LT_TAGVAR(link_all_deplibs, $1)=unknown
-  _LT_TAGVAR(module_cmds, $1)=
-  _LT_TAGVAR(module_expsym_cmds, $1)=
-  _LT_TAGVAR(old_archive_from_new_cmds, $1)=
-  _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)=
-  _LT_TAGVAR(thread_safe_flag_spec, $1)=
-  _LT_TAGVAR(whole_archive_flag_spec, $1)=
-  # include_expsyms should be a list of space-separated symbols to be *always*
-  # included in the symbol list
-  _LT_TAGVAR(include_expsyms, $1)=
-  # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ` (' and `)$', so one must not match beginning or
-  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-  # as well as any symbol that contains `d'.
-  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
-  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-  # platforms (ab)use it in PIC code, but their linkers get confused if
-  # the symbol is explicitly referenced.  Since portable code cannot
-  # rely on this symbol name, it's probably fine to never include it in
-  # preloaded symbol tables.
-  # Exclude shared library initialization/finalization symbols.
-dnl Note also adjust exclude_expsyms for C++ above.
-  extract_expsyms_cmds=
-
-  case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    # FIXME: the MSVC++ port hasn't been tested in a loooong time
-    # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++.
-    if test "$GCC" != yes; then
-      with_gnu_ld=no
-    fi
-    ;;
-  interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++)
-    with_gnu_ld=yes
-    ;;
-  openbsd*)
-    with_gnu_ld=no
-    ;;
-  linux* | k*bsd*-gnu | gnu*)
-    _LT_TAGVAR(link_all_deplibs, $1)=no
-    ;;
-  esac
-
-  _LT_TAGVAR(ld_shlibs, $1)=yes
-
-  # On some targets, GNU ld is compatible enough with the native linker
-  # that we're better off using the native interface for both.
-  lt_use_gnu_ld_interface=no
-  if test "$with_gnu_ld" = yes; then
-    case $host_os in
-      aix*)
-	# The AIX port of GNU ld has always aspired to compatibility
-	# with the native linker.  However, as the warning in the GNU ld
-	# block says, versions before 2.19.5* couldn't really create working
-	# shared libraries, regardless of the interface used.
-	case `$LD -v 2>&1` in
-	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
-	  *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;;
-	  *\ \(GNU\ Binutils\)\ [[3-9]]*) ;;
-	  *)
-	    lt_use_gnu_ld_interface=yes
-	    ;;
-	esac
-	;;
-      *)
-	lt_use_gnu_ld_interface=yes
-	;;
-    esac
-  fi
-
-  if test "$lt_use_gnu_ld_interface" = yes; then
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='${wl}'
-
-    # Set some defaults for GNU ld with shared library support. These
-    # are reset later if shared libraries are not supported. Putting them
-    # here allows them to be overridden if necessary.
-    runpath_var=LD_RUN_PATH
-    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-      _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-    else
-      _LT_TAGVAR(whole_archive_flag_spec, $1)=
-    fi
-    supports_anon_versioning=no
-    case `$LD -v 2>&1` in
-      *GNU\ gold*) supports_anon_versioning=yes ;;
-      *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
-      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-      *\ 2.11.*) ;; # other 2.11 versions
-      *) supports_anon_versioning=yes ;;
-    esac
-
-    # See if GNU ld supports shared libraries.
-    case $host_os in
-    aix[[3-9]]*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
-	_LT_TAGVAR(ld_shlibs, $1)=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.19, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to install binutils
-*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
-*** You will then need to restart the configuration process.
-
-_LT_EOF
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            _LT_TAGVAR(archive_expsym_cmds, $1)=''
-        ;;
-      m68k)
-            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-            _LT_TAGVAR(hardcode_minus_L, $1)=yes
-        ;;
-      esac
-      ;;
-
-    beos*)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
-	# support --undefined.  This deserves some investigation.  FIXME
-	_LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      else
-	_LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
-      # as there is no search path for DLLs.
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
-      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      _LT_TAGVAR(always_export_symbols, $1)=no
-      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
-      _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
-
-      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	# If the export-symbols file already is a .def file (1st line
-	# is EXPORTS), use it as is; otherwise, prepend...
-	_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	  cp $export_symbols $output_objdir/$soname.def;
-	else
-	  echo EXPORTS > $output_objdir/$soname.def;
-	  cat $export_symbols >> $output_objdir/$soname.def;
-	fi~
-	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      else
-	_LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    haiku*)
-      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      ;;
-
-    interix[[3-9]]*)
-      _LT_TAGVAR(hardcode_direct, $1)=no
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-      # Instead, shared libraries are loaded at an image base (0x10000000 by
-      # default) and relocated if they conflict, which is a slow very memory
-      # consuming and fragmenting process.  To avoid this, we pick a random,
-      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      ;;
-
-    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
-      tmp_diet=no
-      if test "$host_os" = linux-dietlibc; then
-	case $cc_basename in
-	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
-	esac
-      fi
-      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
-	 && test "$tmp_diet" = no
-      then
-	tmp_addflag=' $pic_flag'
-	tmp_sharedflag='-shared'
-	case $cc_basename,$host_cpu in
-        pgcc*)				# Portland Group C compiler
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag'
-	  ;;
-	pgf77* | pgf90* | pgf95* | pgfortran*)
-					# Portland Group f77 and f90 compilers
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag -Mnomain' ;;
-	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
-	  tmp_addflag=' -i_dynamic' ;;
-	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
-	  tmp_addflag=' -i_dynamic -nofor_main' ;;
-	ifc* | ifort*)			# Intel Fortran compiler
-	  tmp_addflag=' -nofor_main' ;;
-	lf95*)				# Lahey Fortran 8.1
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)=
-	  tmp_sharedflag='--shared' ;;
-	xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below)
-	  tmp_sharedflag='-qmkshrobj'
-	  tmp_addflag= ;;
-	nvcc*)	# Cuda Compiler Driver 2.2
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  _LT_TAGVAR(compiler_needs_object, $1)=yes
-	  ;;
-	esac
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)			# Sun C 5.9
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  _LT_TAGVAR(compiler_needs_object, $1)=yes
-	  tmp_sharedflag='-G' ;;
-	*Sun\ F*)			# Sun Fortran 8.3
-	  tmp_sharedflag='-G' ;;
-	esac
-	_LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-
-        if test "x$supports_anon_versioning" = xyes; then
-          _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	    echo "local: *; };" >> $output_objdir/$libname.ver~
-	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-        fi
-
-	case $cc_basename in
-	xlf* | bgf* | bgxlf* | mpixlf*)
-	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
-	  if test "x$supports_anon_versioning" = xyes; then
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	      echo "local: *; };" >> $output_objdir/$libname.ver~
-	      $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-	  fi
-	  ;;
-	esac
-      else
-        _LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    netbsd* | netbsdelf*-gnu)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-	wlarc=
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      fi
-      ;;
-
-    solaris*)
-      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
-	_LT_TAGVAR(ld_shlibs, $1)=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	_LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-      case `$LD -v 2>&1` in
-        *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
-	_LT_TAGVAR(ld_shlibs, $1)=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
-*** reliably create shared libraries on SCO systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-	;;
-	*)
-	  # For security reasons, it is highly recommended that you always
-	  # use absolute paths for naming shared libraries, and exclude the
-	  # DT_RUNPATH tag from executables and libraries.  But doing so
-	  # requires that you compile everything twice, which is a pain.
-	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-	  else
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	  fi
-	;;
-      esac
-      ;;
-
-    sunos4*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      wlarc=
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    *)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	_LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-    esac
-
-    if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then
-      runpath_var=
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)=
-      _LT_TAGVAR(whole_archive_flag_spec, $1)=
-    fi
-  else
-    # PORTME fill in a description of your system's linker (not GNU ld)
-    case $host_os in
-    aix3*)
-      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      _LT_TAGVAR(always_export_symbols, $1)=yes
-      _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
-	# Neither direct hardcoding nor static linking is supported with a
-	# broken collect2.
-	_LT_TAGVAR(hardcode_direct, $1)=unsupported
-      fi
-      ;;
-
-    aix[[4-9]]*)
-      if test "$host_cpu" = ia64; then
-	# On IA64, the linker does run time linking by default, so we don't
-	# have to do anything special.
-	aix_use_runtimelinking=no
-	exp_sym_flag='-Bexport'
-	no_entry_flag=""
-      else
-	# If we're using GNU nm, then we don't want the "-C" option.
-	# -C means demangle to AIX nm, but means don't demangle with GNU nm
-	# Also, AIX nm treats weak defined symbols like other global
-	# defined symbols, whereas GNU nm marks them as "W".
-	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	else
-	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	fi
-	aix_use_runtimelinking=no
-
-	# Test if we are trying to use run time linking or normal
-	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
-	# need to do runtime linking.
-	case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
-	  for ld_flag in $LDFLAGS; do
-	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-	    aix_use_runtimelinking=yes
-	    break
-	  fi
-	  done
-	  ;;
-	esac
-
-	exp_sym_flag='-bexport'
-	no_entry_flag='-bnoentry'
-      fi
-
-      # When large executables or shared objects are built, AIX ld can
-      # have problems creating the table of contents.  If linking a library
-      # or program results in "error TOC overflow" add -mminimal-toc to
-      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-      _LT_TAGVAR(archive_cmds, $1)=''
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
-
-      if test "$GCC" = yes; then
-	case $host_os in aix4.[[012]]|aix4.[[012]].*)
-	# We only want to do this on AIX 4.2 and lower, the check
-	# below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" &&
-	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-	  then
-	  # We have reworked collect2
-	  :
-	  else
-	  # We have old collect2
-	  _LT_TAGVAR(hardcode_direct, $1)=unsupported
-	  # It fails to find uninstalled libraries when the uninstalled
-	  # path is not listed in the libpath.  Setting hardcode_minus_L
-	  # to unsupported forces relinking
-	  _LT_TAGVAR(hardcode_minus_L, $1)=yes
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-	  _LT_TAGVAR(hardcode_libdir_separator, $1)=
-	  fi
-	  ;;
-	esac
-	shared_flag='-shared'
-	if test "$aix_use_runtimelinking" = yes; then
-	  shared_flag="$shared_flag "'${wl}-G'
-	fi
-	_LT_TAGVAR(link_all_deplibs, $1)=no
-      else
-	# not using gcc
-	if test "$host_cpu" = ia64; then
-	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-	# chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-	else
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag='${wl}-G'
-	  else
-	    shared_flag='${wl}-bM:SRE'
-	  fi
-	fi
-      fi
-
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
-      # It seems that -bexpall does not export symbols beginning with
-      # underscore (_), so it is better to generate a list of symbols to export.
-      _LT_TAGVAR(always_export_symbols, $1)=yes
-      if test "$aix_use_runtimelinking" = yes; then
-	# Warning - without using the other runtime loading flags (-brtl),
-	# -berok will link without error, but may produce a broken library.
-	_LT_TAGVAR(allow_undefined_flag, $1)='-berok'
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        _LT_SYS_MODULE_PATH_AIX([$1])
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-      else
-	if test "$host_cpu" = ia64; then
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
-	  _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
-	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-	else
-	 # Determine the default libpath from the value encoded in an
-	 # empty executable.
-	 _LT_SYS_MODULE_PATH_AIX([$1])
-	 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-	  # Warning - without using the other run time loading flags,
-	  # -berok will link without error, but may produce a broken library.
-	  _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
-	  _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
-	  if test "$with_gnu_ld" = yes; then
-	    # We only use this code for GNU lds that support --whole-archive.
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	  else
-	    # Exported symbols can be pulled into shared objects from archives
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
-	  fi
-	  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-	  # This is similar to how AIX traditionally builds its shared libraries.
-	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-	fi
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            _LT_TAGVAR(archive_expsym_cmds, $1)=''
-        ;;
-      m68k)
-            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-            _LT_TAGVAR(hardcode_minus_L, $1)=yes
-        ;;
-      esac
-      ;;
-
-    bsdi[[45]]*)
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      case $cc_basename in
-      cl*)
-	# Native MSVC
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
-	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-	_LT_TAGVAR(always_export_symbols, $1)=yes
-	_LT_TAGVAR(file_list_spec, $1)='@'
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	_LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-	_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	    sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-	  else
-	    sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-	  fi~
-	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-	  linknames='
-	# The linker will not automatically build a static lib if we build a DLL.
-	# _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
-	_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-	_LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
-	_LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
-	# Don't use ranlib
-	_LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
-	_LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
-	  lt_tool_outputfile="@TOOL_OUTPUT@"~
-	  case $lt_outputfile in
-	    *.exe|*.EXE) ;;
-	    *)
-	      lt_outputfile="$lt_outputfile.exe"
-	      lt_tool_outputfile="$lt_tool_outputfile.exe"
-	      ;;
-	  esac~
-	  if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-	    $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-	    $RM "$lt_outputfile.manifest";
-	  fi'
-	;;
-      *)
-	# Assume MSVC wrapper
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
-	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	_LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-	# The linker will automatically build a .lib file if we build a DLL.
-	_LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
-	# FIXME: Should let the user specify the lib program.
-	_LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
-	_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-	;;
-      esac
-      ;;
-
-    darwin* | rhapsody*)
-      _LT_DARWIN_LINKER_FEATURES($1)
-      ;;
-
-    dgux*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-    # support.  Future versions do this automatically, but an explicit c++rt0.o
-    # does not break anything, and helps significantly (at the cost of a little
-    # extra space).
-    freebsd2.2*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2.*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
-      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    hpux9*)
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-      ;;
-
-    hpux10*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      if test "$with_gnu_ld" = no; then
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
-	_LT_TAGVAR(hardcode_direct, $1)=yes
-	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-	# hardcode_minus_L: Not really in the search PATH,
-	# but as the default location of the library.
-	_LT_TAGVAR(hardcode_minus_L, $1)=yes
-      fi
-      ;;
-
-    hpux11*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	case $host_cpu in
-	hppa*64*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      else
-	case $host_cpu in
-	hppa*64*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	m4_if($1, [], [
-	  # Older versions of the 11.00 compiler do not understand -b yet
-	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
-	  _LT_LINKER_OPTION([if $CC understands -b],
-	    _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b],
-	    [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'],
-	    [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])],
-	  [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'])
-	  ;;
-	esac
-      fi
-      if test "$with_gnu_ld" = no; then
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	case $host_cpu in
-	hppa*64*|ia64*)
-	  _LT_TAGVAR(hardcode_direct, $1)=no
-	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	  ;;
-	*)
-	  _LT_TAGVAR(hardcode_direct, $1)=yes
-	  _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-
-	  # hardcode_minus_L: Not really in the search PATH,
-	  # but as the default location of the library.
-	  _LT_TAGVAR(hardcode_minus_L, $1)=yes
-	  ;;
-	esac
-      fi
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	# Try to use the -exported_symbol ld option, if it does not
-	# work, assume that -exports_file does not work either and
-	# implicitly export all symbols.
-	# This should be the same for all languages, so no per-tag cache variable.
-	AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol],
-	  [lt_cv_irix_exported_symbol],
-	  [save_LDFLAGS="$LDFLAGS"
-	   LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-	   AC_LINK_IFELSE(
-	     [AC_LANG_SOURCE(
-	        [AC_LANG_CASE([C], [[int foo (void) { return 0; }]],
-			      [C++], [[int foo (void) { return 0; }]],
-			      [Fortran 77], [[
-      subroutine foo
-      end]],
-			      [Fortran], [[
-      subroutine foo
-      end]])])],
-	      [lt_cv_irix_exported_symbol=yes],
-	      [lt_cv_irix_exported_symbol=no])
-           LDFLAGS="$save_LDFLAGS"])
-	if test "$lt_cv_irix_exported_symbol" = yes; then
-          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-	fi
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-      fi
-      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      _LT_TAGVAR(inherit_rpath, $1)=yes
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      ;;
-
-    netbsd* | netbsdelf*-gnu)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
-      fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    newsos6)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    *nto* | *qnx*)
-      ;;
-
-    openbsd*)
-      if test -f /usr/libexec/ld.so; then
-	_LT_TAGVAR(hardcode_direct, $1)=yes
-	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-	else
-	  case $host_os in
-	   openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
-	     _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-	     _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-	     ;;
-	   *)
-	     _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	     _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	     ;;
-	  esac
-	fi
-      else
-	_LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    os2*)
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-      ;;
-
-    osf3*)
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-      else
-	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-      fi
-      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      ;;
-
-    osf4* | osf5*)	# as osf3* with the addition of -msym flag
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      else
-	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
-
-	# Both c and cxx compiler support -rpath directly
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-      fi
-      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      ;;
-
-    solaris*)
-      _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
-      if test "$GCC" = yes; then
-	wlarc='${wl}'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-      else
-	case `$CC -V 2>&1` in
-	*"Compilers 5.0"*)
-	  wlarc=''
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
-	  ;;
-	*)
-	  wlarc='${wl}'
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-	  ;;
-	esac
-      fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      case $host_os in
-      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-      *)
-	# The compiler driver will combine and reorder linker options,
-	# but understands `-z linker_flag'.  GCC discards it without `$wl',
-	# but is careful enough not to reorder.
-	# Supported since Solaris 2.6 (maybe 2.5.1?)
-	if test "$GCC" = yes; then
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-	else
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
-	fi
-	;;
-      esac
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      ;;
-
-    sunos4*)
-      if test "x$host_vendor" = xsequent; then
-	# Use $CC to link under sequent, because it throws in some extra .o
-	# files that make .init and .fini sections work.
-	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    sysv4)
-      case $host_vendor in
-	sni)
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true???
-	;;
-	siemens)
-	  ## LD is ld it makes a PLAMLIB
-	  ## CC just makes a GrossModule.
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-	  _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
-	  _LT_TAGVAR(hardcode_direct, $1)=no
-        ;;
-	motorola)
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
-	;;
-      esac
-      runpath_var='LD_RUN_PATH'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    sysv4.3*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	_LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	runpath_var=LD_RUN_PATH
-	hardcode_runpath_var=yes
-	_LT_TAGVAR(ld_shlibs, $1)=yes
-      fi
-      ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
-      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We can NOT use -z defs as we might desire, because we do not
-      # link with -lc, and that would cause any symbols used from libc to
-      # always be unresolved, which means just about no library would
-      # ever link correctly.  If we're not using GNU ld we use -z text
-      # though, which does catch some bad symbols but isn't as heavy-handed
-      # as -z defs.
-      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-      _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
-      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    uts4*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    *)
-      _LT_TAGVAR(ld_shlibs, $1)=no
-      ;;
-    esac
-
-    if test x$host_vendor = xsni; then
-      case $host in
-      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym'
-	;;
-      esac
-    fi
-  fi
-])
-AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
-test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
-
-_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
-
-_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl
-_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl
-_LT_DECL([], [extract_expsyms_cmds], [2],
-    [The commands to extract the exported symbol list from a shared archive])
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in
-x|xyes)
-  # Assume -lc should be added
-  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $_LT_TAGVAR(archive_cmds, $1) in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      AC_CACHE_CHECK([whether -lc should be explicitly linked in],
-	[lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1),
-	[$RM conftest*
-	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-	if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
-	  soname=conftest
-	  lib=conftest
-	  libobjs=conftest.$ac_objext
-	  deplibs=
-	  wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
-	  pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
-	  compiler_flags=-v
-	  linker_flags=-v
-	  verstring=
-	  output_objdir=.
-	  libname=conftest
-	  lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
-	  _LT_TAGVAR(allow_undefined_flag, $1)=
-	  if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
-	  then
-	    lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-	  else
-	    lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-	  fi
-	  _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
-	else
-	  cat conftest.err 1>&5
-	fi
-	$RM conftest*
-	])
-      _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0],
-    [Whether or not to add -lc for building shared libraries])
-_LT_TAGDECL([allow_libtool_libs_with_static_runtimes],
-    [enable_shared_with_static_runtimes], [0],
-    [Whether or not to disallow shared libs when runtime libs are static])
-_LT_TAGDECL([], [export_dynamic_flag_spec], [1],
-    [Compiler flag to allow reflexive dlopens])
-_LT_TAGDECL([], [whole_archive_flag_spec], [1],
-    [Compiler flag to generate shared objects directly from archives])
-_LT_TAGDECL([], [compiler_needs_object], [1],
-    [Whether the compiler copes with passing no objects directly])
-_LT_TAGDECL([], [old_archive_from_new_cmds], [2],
-    [Create an old-style archive from a shared archive])
-_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2],
-    [Create a temporary old-style archive to link instead of a shared archive])
-_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive])
-_LT_TAGDECL([], [archive_expsym_cmds], [2])
-_LT_TAGDECL([], [module_cmds], [2],
-    [Commands used to build a loadable module if different from building
-    a shared archive.])
-_LT_TAGDECL([], [module_expsym_cmds], [2])
-_LT_TAGDECL([], [with_gnu_ld], [1],
-    [Whether we are building with GNU ld or not])
-_LT_TAGDECL([], [allow_undefined_flag], [1],
-    [Flag that allows shared libraries with undefined symbols to be built])
-_LT_TAGDECL([], [no_undefined_flag], [1],
-    [Flag that enforces no undefined symbols])
-_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
-    [Flag to hardcode $libdir into a binary during linking.
-    This must work even if $libdir does not exist])
-_LT_TAGDECL([], [hardcode_libdir_separator], [1],
-    [Whether we need a single "-rpath" flag with a separated argument])
-_LT_TAGDECL([], [hardcode_direct], [0],
-    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
-    DIR into the resulting binary])
-_LT_TAGDECL([], [hardcode_direct_absolute], [0],
-    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
-    DIR into the resulting binary and the resulting library dependency is
-    "absolute", i.e impossible to change by setting ${shlibpath_var} if the
-    library is relocated])
-_LT_TAGDECL([], [hardcode_minus_L], [0],
-    [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-    into the resulting binary])
-_LT_TAGDECL([], [hardcode_shlibpath_var], [0],
-    [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-    into the resulting binary])
-_LT_TAGDECL([], [hardcode_automatic], [0],
-    [Set to "yes" if building a shared library automatically hardcodes DIR
-    into the library and all subsequent libraries and executables linked
-    against it])
-_LT_TAGDECL([], [inherit_rpath], [0],
-    [Set to yes if linker adds runtime paths of dependent libraries
-    to runtime path list])
-_LT_TAGDECL([], [link_all_deplibs], [0],
-    [Whether libtool must link a program against all its dependency libraries])
-_LT_TAGDECL([], [always_export_symbols], [0],
-    [Set to "yes" if exported symbols are required])
-_LT_TAGDECL([], [export_symbols_cmds], [2],
-    [The commands to list exported symbols])
-_LT_TAGDECL([], [exclude_expsyms], [1],
-    [Symbols that should not be listed in the preloaded symbols])
-_LT_TAGDECL([], [include_expsyms], [1],
-    [Symbols that must always be exported])
-_LT_TAGDECL([], [prelink_cmds], [2],
-    [Commands necessary for linking programs (against libraries) with templates])
-_LT_TAGDECL([], [postlink_cmds], [2],
-    [Commands necessary for finishing linking programs])
-_LT_TAGDECL([], [file_list_spec], [1],
-    [Specify filename containing input files])
-dnl FIXME: Not yet implemented
-dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1],
-dnl    [Compiler flag to generate thread safe objects])
-])# _LT_LINKER_SHLIBS
-
-
-# _LT_LANG_C_CONFIG([TAG])
-# ------------------------
-# Ensure that the configuration variables for a C compiler are suitably
-# defined.  These variables are subsequently used by _LT_CONFIG to write
-# the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_C_CONFIG],
-[m4_require([_LT_DECL_EGREP])dnl
-lt_save_CC="$CC"
-AC_LANG_PUSH(C)
-
-# Source file extension for C test sources.
-ac_ext=c
-
-# Object file extension for compiled C test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='int main(){return(0);}'
-
-_LT_TAG_COMPILER
-# Save the default compiler, since it gets overwritten when the other
-# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
-compiler_DEFAULT=$CC
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-## CAVEAT EMPTOR:
-## There is no encapsulation within the following macros, do not change
-## the running order or otherwise move them around unless you know exactly
-## what you are doing...
-if test -n "$compiler"; then
-  _LT_COMPILER_NO_RTTI($1)
-  _LT_COMPILER_PIC($1)
-  _LT_COMPILER_C_O($1)
-  _LT_COMPILER_FILE_LOCKS($1)
-  _LT_LINKER_SHLIBS($1)
-  _LT_SYS_DYNAMIC_LINKER($1)
-  _LT_LINKER_HARDCODE_LIBPATH($1)
-  LT_SYS_DLOPEN_SELF
-  _LT_CMD_STRIPLIB
-
-  # Report which library types will actually be built
-  AC_MSG_CHECKING([if libtool supports shared libraries])
-  AC_MSG_RESULT([$can_build_shared])
-
-  AC_MSG_CHECKING([whether to build shared libraries])
-  test "$can_build_shared" = "no" && enable_shared=no
-
-  # On AIX, shared libraries and static libraries use the same namespace, and
-  # are all built from PIC.
-  case $host_os in
-  aix3*)
-    test "$enable_shared" = yes && enable_static=no
-    if test -n "$RANLIB"; then
-      archive_cmds="$archive_cmds~\$RANLIB \$lib"
-      postinstall_cmds='$RANLIB $lib'
-    fi
-    ;;
-
-  aix[[4-9]]*)
-    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-      test "$enable_shared" = yes && enable_static=no
-    fi
-    ;;
-  esac
-  AC_MSG_RESULT([$enable_shared])
-
-  AC_MSG_CHECKING([whether to build static libraries])
-  # Make sure either enable_shared or enable_static is yes.
-  test "$enable_shared" = yes || enable_static=yes
-  AC_MSG_RESULT([$enable_static])
-
-  _LT_CONFIG($1)
-fi
-AC_LANG_POP
-CC="$lt_save_CC"
-])# _LT_LANG_C_CONFIG
-
-
-# _LT_LANG_CXX_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for a C++ compiler are suitably
-# defined.  These variables are subsequently used by _LT_CONFIG to write
-# the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_CXX_CONFIG],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_PATH_MANIFEST_TOOL])dnl
-if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
-    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
-    (test "X$CXX" != "Xg++"))) ; then
-  AC_PROG_CXXCPP
-else
-  _lt_caught_CXX_error=yes
-fi
-
-AC_LANG_PUSH(C++)
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-_LT_TAGVAR(allow_undefined_flag, $1)=
-_LT_TAGVAR(always_export_symbols, $1)=no
-_LT_TAGVAR(archive_expsym_cmds, $1)=
-_LT_TAGVAR(compiler_needs_object, $1)=no
-_LT_TAGVAR(export_dynamic_flag_spec, $1)=
-_LT_TAGVAR(hardcode_direct, $1)=no
-_LT_TAGVAR(hardcode_direct_absolute, $1)=no
-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_separator, $1)=
-_LT_TAGVAR(hardcode_minus_L, $1)=no
-_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-_LT_TAGVAR(hardcode_automatic, $1)=no
-_LT_TAGVAR(inherit_rpath, $1)=no
-_LT_TAGVAR(module_cmds, $1)=
-_LT_TAGVAR(module_expsym_cmds, $1)=
-_LT_TAGVAR(link_all_deplibs, $1)=unknown
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(reload_flag, $1)=$reload_flag
-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
-_LT_TAGVAR(no_undefined_flag, $1)=
-_LT_TAGVAR(whole_archive_flag_spec, $1)=
-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-
-# Source file extension for C++ test sources.
-ac_ext=cpp
-
-# Object file extension for compiled C++ test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# No sense in running all these tests if we already determined that
-# the CXX compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_caught_CXX_error" != yes; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="int some_variable = 0;"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-  _LT_TAG_COMPILER
-
-  # save warnings/boilerplate of simple test code
-  _LT_COMPILER_BOILERPLATE
-  _LT_LINKER_BOILERPLATE
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC=$CC
-  lt_save_CFLAGS=$CFLAGS
-  lt_save_LD=$LD
-  lt_save_GCC=$GCC
-  GCC=$GXX
-  lt_save_with_gnu_ld=$with_gnu_ld
-  lt_save_path_LD=$lt_cv_path_LD
-  if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
-    lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
-  else
-    $as_unset lt_cv_prog_gnu_ld
-  fi
-  if test -n "${lt_cv_path_LDCXX+set}"; then
-    lt_cv_path_LD=$lt_cv_path_LDCXX
-  else
-    $as_unset lt_cv_path_LD
-  fi
-  test -z "${LDCXX+set}" || LD=$LDCXX
-  CC=${CXX-"c++"}
-  CFLAGS=$CXXFLAGS
-  compiler=$CC
-  _LT_TAGVAR(compiler, $1)=$CC
-  _LT_CC_BASENAME([$compiler])
-
-  if test -n "$compiler"; then
-    # We don't want -fno-exception when compiling C++ code, so set the
-    # no_builtin_flag separately
-    if test "$GXX" = yes; then
-      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
-    else
-      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
-    fi
-
-    if test "$GXX" = yes; then
-      # Set up default GNU C++ configuration
-
-      LT_PATH_LD
-
-      # Check if GNU C++ uses GNU ld as the underlying linker, since the
-      # archiving commands below assume that GNU ld is being used.
-      if test "$with_gnu_ld" = yes; then
-        _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-
-        # If archive_cmds runs LD, not CC, wlarc should be empty
-        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
-        #     investigate it a little bit more. (MM)
-        wlarc='${wl}'
-
-        # ancient GNU ld didn't support --whole-archive et. al.
-        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
-	  $GREP 'no-whole-archive' > /dev/null; then
-          _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-        else
-          _LT_TAGVAR(whole_archive_flag_spec, $1)=
-        fi
-      else
-        with_gnu_ld=no
-        wlarc=
-
-        # A generic and very simple default shared library creation
-        # command for GNU C++ for the case where it uses the native
-        # linker, instead of GNU ld.  If possible, this setting should
-        # overridden to take advantage of the native linker features on
-        # the platform it is being used on.
-        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-      fi
-
-      # Commands to make compiler produce verbose output that lists
-      # what "hidden" libraries, object files and flags are used when
-      # linking a shared library.
-      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-
-    else
-      GXX=no
-      with_gnu_ld=no
-      wlarc=
-    fi
-
-    # PORTME: fill in a description of your system's C++ link characteristics
-    AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
-    _LT_TAGVAR(ld_shlibs, $1)=yes
-    case $host_os in
-      aix3*)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-      aix[[4-9]]*)
-        if test "$host_cpu" = ia64; then
-          # On IA64, the linker does run time linking by default, so we don't
-          # have to do anything special.
-          aix_use_runtimelinking=no
-          exp_sym_flag='-Bexport'
-          no_entry_flag=""
-        else
-          aix_use_runtimelinking=no
-
-          # Test if we are trying to use run time linking or normal
-          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-          # need to do runtime linking.
-          case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
-	    for ld_flag in $LDFLAGS; do
-	      case $ld_flag in
-	      *-brtl*)
-	        aix_use_runtimelinking=yes
-	        break
-	        ;;
-	      esac
-	    done
-	    ;;
-          esac
-
-          exp_sym_flag='-bexport'
-          no_entry_flag='-bnoentry'
-        fi
-
-        # When large executables or shared objects are built, AIX ld can
-        # have problems creating the table of contents.  If linking a library
-        # or program results in "error TOC overflow" add -mminimal-toc to
-        # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-        _LT_TAGVAR(archive_cmds, $1)=''
-        _LT_TAGVAR(hardcode_direct, $1)=yes
-        _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-        _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
-        _LT_TAGVAR(link_all_deplibs, $1)=yes
-        _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
-
-        if test "$GXX" = yes; then
-          case $host_os in aix4.[[012]]|aix4.[[012]].*)
-          # We only want to do this on AIX 4.2 and lower, the check
-          # below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" &&
-	     strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-	  then
-	    # We have reworked collect2
-	    :
-	  else
-	    # We have old collect2
-	    _LT_TAGVAR(hardcode_direct, $1)=unsupported
-	    # It fails to find uninstalled libraries when the uninstalled
-	    # path is not listed in the libpath.  Setting hardcode_minus_L
-	    # to unsupported forces relinking
-	    _LT_TAGVAR(hardcode_minus_L, $1)=yes
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-	    _LT_TAGVAR(hardcode_libdir_separator, $1)=
-	  fi
-          esac
-          shared_flag='-shared'
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag="$shared_flag "'${wl}-G'
-	  fi
-        else
-          # not using gcc
-          if test "$host_cpu" = ia64; then
-	  # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-	  # chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-          else
-	    if test "$aix_use_runtimelinking" = yes; then
-	      shared_flag='${wl}-G'
-	    else
-	      shared_flag='${wl}-bM:SRE'
-	    fi
-          fi
-        fi
-
-        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
-        # It seems that -bexpall does not export symbols beginning with
-        # underscore (_), so it is better to generate a list of symbols to
-	# export.
-        _LT_TAGVAR(always_export_symbols, $1)=yes
-        if test "$aix_use_runtimelinking" = yes; then
-          # Warning - without using the other runtime loading flags (-brtl),
-          # -berok will link without error, but may produce a broken library.
-          _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
-          # Determine the default libpath from the value encoded in an empty
-          # executable.
-          _LT_SYS_MODULE_PATH_AIX([$1])
-          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-
-          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-        else
-          if test "$host_cpu" = ia64; then
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
-	    _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
-	    _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-          else
-	    # Determine the default libpath from the value encoded in an
-	    # empty executable.
-	    _LT_SYS_MODULE_PATH_AIX([$1])
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-	    # Warning - without using the other run time loading flags,
-	    # -berok will link without error, but may produce a broken library.
-	    _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
-	    _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
-	    if test "$with_gnu_ld" = yes; then
-	      # We only use this code for GNU lds that support --whole-archive.
-	      _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	    else
-	      # Exported symbols can be pulled into shared objects from archives
-	      _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
-	    fi
-	    _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-	    # This is similar to how AIX traditionally builds its shared
-	    # libraries.
-	    _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-          fi
-        fi
-        ;;
-
-      beos*)
-	if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-	  # Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
-	  # support --undefined.  This deserves some investigation.  FIXME
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	else
-	  _LT_TAGVAR(ld_shlibs, $1)=no
-	fi
-	;;
-
-      chorus*)
-        case $cc_basename in
-          *)
-	  # FIXME: insert proper C++ library support
-	  _LT_TAGVAR(ld_shlibs, $1)=no
-	  ;;
-        esac
-        ;;
-
-      cygwin* | mingw* | pw32* | cegcc*)
-	case $GXX,$cc_basename in
-	,cl* | no,cl*)
-	  # Native MSVC
-	  # hardcode_libdir_flag_spec is actually meaningless, as there is
-	  # no search path for DLLs.
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
-	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-	  _LT_TAGVAR(always_export_symbols, $1)=yes
-	  _LT_TAGVAR(file_list_spec, $1)='@'
-	  # Tell ltmain to make .lib files, not .a files.
-	  libext=lib
-	  # Tell ltmain to make .dll files, not .so files.
-	  shrext_cmds=".dll"
-	  # FIXME: Setting linknames here is a bad hack.
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	      $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-	    else
-	      $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-	    fi~
-	    $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-	    linknames='
-	  # The linker will not automatically build a static lib if we build a DLL.
-	  # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
-	  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-	  # Don't use ranlib
-	  _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
-	  _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
-	    lt_tool_outputfile="@TOOL_OUTPUT@"~
-	    case $lt_outputfile in
-	      *.exe|*.EXE) ;;
-	      *)
-		lt_outputfile="$lt_outputfile.exe"
-		lt_tool_outputfile="$lt_tool_outputfile.exe"
-		;;
-	    esac~
-	    func_to_tool_file "$lt_outputfile"~
-	    if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-	      $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-	      $RM "$lt_outputfile.manifest";
-	    fi'
-	  ;;
-	*)
-	  # g++
-	  # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
-	  # as there is no search path for DLLs.
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
-	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-	  _LT_TAGVAR(always_export_symbols, $1)=no
-	  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-
-	  if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	    # If the export-symbols file already is a .def file (1st line
-	    # is EXPORTS), use it as is; otherwise, prepend...
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	      cp $export_symbols $output_objdir/$soname.def;
-	    else
-	      echo EXPORTS > $output_objdir/$soname.def;
-	      cat $export_symbols >> $output_objdir/$soname.def;
-	    fi~
-	    $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	  else
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	  fi
-	  ;;
-	esac
-	;;
-      darwin* | rhapsody*)
-        _LT_DARWIN_LINKER_FEATURES($1)
-	;;
-
-      dgux*)
-        case $cc_basename in
-          ec++*)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          ghcx*)
-	    # Green Hills C++ Compiler
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          *)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-        esac
-        ;;
-
-      freebsd2.*)
-        # C++ shared libraries reported to be fairly broken before
-	# switch to ELF
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-
-      freebsd-elf*)
-        _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-        ;;
-
-      freebsd* | dragonfly*)
-        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
-        # conventions
-        _LT_TAGVAR(ld_shlibs, $1)=yes
-        ;;
-
-      haiku*)
-        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-        _LT_TAGVAR(link_all_deplibs, $1)=yes
-        ;;
-
-      hpux9*)
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-        _LT_TAGVAR(hardcode_direct, $1)=yes
-        _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
-				             # but as the default
-				             # location of the library.
-
-        case $cc_basename in
-          CC*)
-            # FIXME: insert proper C++ library support
-            _LT_TAGVAR(ld_shlibs, $1)=no
-            ;;
-          aCC*)
-            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-            # Commands to make compiler produce verbose output that lists
-            # what "hidden" libraries, object files and flags are used when
-            # linking a shared library.
-            #
-            # There doesn't appear to be a way to prevent this compiler from
-            # explicitly linking system object files so we need to strip them
-            # from the output so that they don't get included in the library
-            # dependencies.
-            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-            ;;
-          *)
-            if test "$GXX" = yes; then
-              _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-            else
-              # FIXME: insert proper C++ library support
-              _LT_TAGVAR(ld_shlibs, $1)=no
-            fi
-            ;;
-        esac
-        ;;
-
-      hpux10*|hpux11*)
-        if test $with_gnu_ld = no; then
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-	  _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-          case $host_cpu in
-            hppa*64*|ia64*)
-              ;;
-            *)
-	      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-              ;;
-          esac
-        fi
-        case $host_cpu in
-          hppa*64*|ia64*)
-            _LT_TAGVAR(hardcode_direct, $1)=no
-            _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-            ;;
-          *)
-            _LT_TAGVAR(hardcode_direct, $1)=yes
-            _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-            _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
-					         # but as the default
-					         # location of the library.
-            ;;
-        esac
-
-        case $cc_basename in
-          CC*)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          aCC*)
-	    case $host_cpu in
-	      hppa*64*)
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	        ;;
-	      ia64*)
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	        ;;
-	      *)
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	        ;;
-	    esac
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-	    ;;
-          *)
-	    if test "$GXX" = yes; then
-	      if test $with_gnu_ld = no; then
-	        case $host_cpu in
-	          hppa*64*)
-	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	            ;;
-	          ia64*)
-	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	            ;;
-	          *)
-	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	            ;;
-	        esac
-	      fi
-	    else
-	      # FIXME: insert proper C++ library support
-	      _LT_TAGVAR(ld_shlibs, $1)=no
-	    fi
-	    ;;
-        esac
-        ;;
-
-      interix[[3-9]]*)
-	_LT_TAGVAR(hardcode_direct, $1)=no
-	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-	# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-	# Instead, shared libraries are loaded at an image base (0x10000000 by
-	# default) and relocated if they conflict, which is a slow very memory
-	# consuming and fragmenting process.  To avoid this, we pick a random,
-	# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-	# time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-	;;
-      irix5* | irix6*)
-        case $cc_basename in
-          CC*)
-	    # SGI C++
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-
-	    # Archives containing C++ object files must be created using
-	    # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
-	    # necessary to make sure instantiated templates are included
-	    # in the archive.
-	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
-	    ;;
-          *)
-	    if test "$GXX" = yes; then
-	      if test "$with_gnu_ld" = no; then
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	      else
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
-	      fi
-	    fi
-	    _LT_TAGVAR(link_all_deplibs, $1)=yes
-	    ;;
-        esac
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-        _LT_TAGVAR(inherit_rpath, $1)=yes
-        ;;
-
-      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-        case $cc_basename in
-          KCC*)
-	    # Kuck and Associates, Inc. (KAI) C++ Compiler
-
-	    # KCC will only create a shared library if the output file
-	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
-	    # to its proper name (with version) after linking.
-	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-
-	    # Archives containing C++ object files must be created using
-	    # "CC -Bstatic", where "CC" is the KAI C++ compiler.
-	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
-	    ;;
-	  icpc* | ecpc* )
-	    # Intel C++
-	    with_gnu_ld=yes
-	    # version 8.0 and above of icpc choke on multiply defined symbols
-	    # if we add $predep_objects and $postdep_objects, however 7.1 and
-	    # earlier do not add the objects themselves.
-	    case `$CC -V 2>&1` in
-	      *"Version 7."*)
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-		;;
-	      *)  # Version 8.0 or newer
-	        tmp_idyn=
-	        case $host_cpu in
-		  ia64*) tmp_idyn=' -i_dynamic';;
-		esac
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-		;;
-	    esac
-	    _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	    ;;
-          pgCC* | pgcpp*)
-            # Portland Group C++ compiler
-	    case `$CC -V` in
-	    *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*)
-	      _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
-		compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
-	      _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
-		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
-		$RANLIB $oldlib'
-	      _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-	      _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
-	      ;;
-	    *) # Version 6 and above use weak symbols
-	      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
-	      ;;
-	    esac
-
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-            ;;
-	  cxx*)
-	    # Compaq C++
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
-
-	    runpath_var=LD_RUN_PATH
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
-	    ;;
-	  xl* | mpixl* | bgxl*)
-	    # IBM XL 8.0 on PPC, with GNU ld
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    if test "x$supports_anon_versioning" = xyes; then
-	      _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-		cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-		echo "local: *; };" >> $output_objdir/$libname.ver~
-		$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-	    fi
-	    ;;
-	  *)
-	    case `$CC -V 2>&1 | sed 5q` in
-	    *Sun\ C*)
-	      # Sun C++ 5.9
-	      _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
-	      _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
-	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-	      _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	      _LT_TAGVAR(compiler_needs_object, $1)=yes
-
-	      # Not sure whether something based on
-	      # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
-	      # would be better.
-	      output_verbose_link_cmd='func_echo_all'
-
-	      # Archives containing C++ object files must be created using
-	      # "CC -xar", where "CC" is the Sun C++ compiler.  This is
-	      # necessary to make sure instantiated templates are included
-	      # in the archive.
-	      _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
-	      ;;
-	    esac
-	    ;;
-	esac
-	;;
-
-      lynxos*)
-        # FIXME: insert proper C++ library support
-	_LT_TAGVAR(ld_shlibs, $1)=no
-	;;
-
-      m88k*)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-	;;
-
-      mvs*)
-        case $cc_basename in
-          cxx*)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-	  *)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-	esac
-	;;
-
-      netbsd*)
-        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
-	  wlarc=
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-	  _LT_TAGVAR(hardcode_direct, $1)=yes
-	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	fi
-	# Workaround some broken pre-1.5 toolchains
-	output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
-	;;
-
-      *nto* | *qnx*)
-        _LT_TAGVAR(ld_shlibs, $1)=yes
-	;;
-
-      openbsd2*)
-        # C++ shared libraries are fairly broken
-	_LT_TAGVAR(ld_shlibs, $1)=no
-	;;
-
-      openbsd*)
-	if test -f /usr/libexec/ld.so; then
-	  _LT_TAGVAR(hardcode_direct, $1)=yes
-	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	  _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-	  fi
-	  output_verbose_link_cmd=func_echo_all
-	else
-	  _LT_TAGVAR(ld_shlibs, $1)=no
-	fi
-	;;
-
-      osf3* | osf4* | osf5*)
-        case $cc_basename in
-          KCC*)
-	    # Kuck and Associates, Inc. (KAI) C++ Compiler
-
-	    # KCC will only create a shared library if the output file
-	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
-	    # to its proper name (with version) after linking.
-	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	    # Archives containing C++ object files must be created using
-	    # the KAI C++ compiler.
-	    case $host in
-	      osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;;
-	      *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;;
-	    esac
-	    ;;
-          RCC*)
-	    # Rational C++ 2.4.1
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          cxx*)
-	    case $host in
-	      osf3*)
-	        _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-		;;
-	      *)
-	        _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	        _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
-	          echo "-hidden">> $lib.exp~
-	          $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~
-	          $RM $lib.exp'
-	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-		;;
-	    esac
-
-	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-	    ;;
-	  *)
-	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-	      _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	      case $host in
-	        osf3*)
-	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-		  ;;
-	        *)
-	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-		  ;;
-	      esac
-
-	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-	      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	      # Commands to make compiler produce verbose output that lists
-	      # what "hidden" libraries, object files and flags are used when
-	      # linking a shared library.
-	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-
-	    else
-	      # FIXME: insert proper C++ library support
-	      _LT_TAGVAR(ld_shlibs, $1)=no
-	    fi
-	    ;;
-        esac
-        ;;
-
-      psos*)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-
-      sunos4*)
-        case $cc_basename in
-          CC*)
-	    # Sun C++ 4.x
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          lcc*)
-	    # Lucid
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          *)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-        esac
-        ;;
-
-      solaris*)
-        case $cc_basename in
-          CC* | sunCC*)
-	    # Sun C++ 4.2, 5.x and Centerline C++
-            _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
-	    _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	      $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-	    _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	    case $host_os in
-	      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-	      *)
-		# The compiler driver will combine and reorder linker options,
-		# but understands `-z linker_flag'.
-	        # Supported since Solaris 2.6 (maybe 2.5.1?)
-		_LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
-	        ;;
-	    esac
-	    _LT_TAGVAR(link_all_deplibs, $1)=yes
-
-	    output_verbose_link_cmd='func_echo_all'
-
-	    # Archives containing C++ object files must be created using
-	    # "CC -xar", where "CC" is the Sun C++ compiler.  This is
-	    # necessary to make sure instantiated templates are included
-	    # in the archive.
-	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
-	    ;;
-          gcx*)
-	    # Green Hills C++ Compiler
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-
-	    # The C++ compiler must be used to create the archive.
-	    _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
-	    ;;
-          *)
-	    # GNU C++ compiler with Solaris linker
-	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-	      _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
-	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-		  $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-	        # Commands to make compiler produce verbose output that lists
-	        # what "hidden" libraries, object files and flags are used when
-	        # linking a shared library.
-	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-	      else
-	        # g++ 2.7 appears to require `-G' NOT `-shared' on this
-	        # platform.
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-		  $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-	        # Commands to make compiler produce verbose output that lists
-	        # what "hidden" libraries, object files and flags are used when
-	        # linking a shared library.
-	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-	      fi
-
-	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
-	      case $host_os in
-		solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-		*)
-		  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-		  ;;
-	      esac
-	    fi
-	    ;;
-        esac
-        ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
-      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      runpath_var='LD_RUN_PATH'
-
-      case $cc_basename in
-        CC*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-      esac
-      ;;
-
-      sysv5* | sco3.2v5* | sco5v6*)
-	# Note: We can NOT use -z defs as we might desire, because we do not
-	# link with -lc, and that would cause any symbols used from libc to
-	# always be unresolved, which means just about no library would
-	# ever link correctly.  If we're not using GNU ld we use -z text
-	# though, which does catch some bad symbols but isn't as heavy-handed
-	# as -z defs.
-	_LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-	_LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
-	_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
-	_LT_TAGVAR(hardcode_libdir_separator, $1)=':'
-	_LT_TAGVAR(link_all_deplibs, $1)=yes
-	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
-	runpath_var='LD_RUN_PATH'
-
-	case $cc_basename in
-          CC*)
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~
-	      '"$_LT_TAGVAR(old_archive_cmds, $1)"
-	    _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~
-	      '"$_LT_TAGVAR(reload_cmds, $1)"
-	    ;;
-	  *)
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    ;;
-	esac
-      ;;
-
-      tandem*)
-        case $cc_basename in
-          NCC*)
-	    # NonStop-UX NCC 3.20
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          *)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-        esac
-        ;;
-
-      vxworks*)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-
-      *)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-    esac
-
-    AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
-    test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
-
-    _LT_TAGVAR(GCC, $1)="$GXX"
-    _LT_TAGVAR(LD, $1)="$LD"
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    _LT_SYS_HIDDEN_LIBDEPS($1)
-    _LT_COMPILER_PIC($1)
-    _LT_COMPILER_C_O($1)
-    _LT_COMPILER_FILE_LOCKS($1)
-    _LT_LINKER_SHLIBS($1)
-    _LT_SYS_DYNAMIC_LINKER($1)
-    _LT_LINKER_HARDCODE_LIBPATH($1)
-
-    _LT_CONFIG($1)
-  fi # test -n "$compiler"
-
-  CC=$lt_save_CC
-  CFLAGS=$lt_save_CFLAGS
-  LDCXX=$LD
-  LD=$lt_save_LD
-  GCC=$lt_save_GCC
-  with_gnu_ld=$lt_save_with_gnu_ld
-  lt_cv_path_LDCXX=$lt_cv_path_LD
-  lt_cv_path_LD=$lt_save_path_LD
-  lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
-  lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
-fi # test "$_lt_caught_CXX_error" != yes
-
-AC_LANG_POP
-])# _LT_LANG_CXX_CONFIG
-
-
-# _LT_FUNC_STRIPNAME_CNF
-# ----------------------
-# func_stripname_cnf prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-#
-# This function is identical to the (non-XSI) version of func_stripname,
-# except this one can be used by m4 code that may be executed by configure,
-# rather than the libtool script.
-m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl
-AC_REQUIRE([_LT_DECL_SED])
-AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])
-func_stripname_cnf ()
-{
-  case ${2} in
-  .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
-  *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
-  esac
-} # func_stripname_cnf
-])# _LT_FUNC_STRIPNAME_CNF
-
-# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
-# ---------------------------------
-# Figure out "hidden" library dependencies from verbose
-# compiler output when linking a shared library.
-# Parse the compiler output and extract the necessary
-# objects, libraries and library flags.
-m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl
-# Dependencies to place before and after the object being linked:
-_LT_TAGVAR(predep_objects, $1)=
-_LT_TAGVAR(postdep_objects, $1)=
-_LT_TAGVAR(predeps, $1)=
-_LT_TAGVAR(postdeps, $1)=
-_LT_TAGVAR(compiler_lib_search_path, $1)=
-
-dnl we can't use the lt_simple_compile_test_code here,
-dnl because it contains code intended for an executable,
-dnl not a library.  It's possible we should let each
-dnl tag define a new lt_????_link_test_code variable,
-dnl but it's only used here...
-m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF
-int a;
-void foo (void) { a = 0; }
-_LT_EOF
-], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF
-class Foo
-{
-public:
-  Foo (void) { a = 0; }
-private:
-  int a;
-};
-_LT_EOF
-], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF
-      subroutine foo
-      implicit none
-      integer*4 a
-      a=0
-      return
-      end
-_LT_EOF
-], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF
-      subroutine foo
-      implicit none
-      integer a
-      a=0
-      return
-      end
-_LT_EOF
-], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF
-public class foo {
-  private int a;
-  public void bar (void) {
-    a = 0;
-  }
-};
-_LT_EOF
-], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF
-package foo
-func foo() {
-}
-_LT_EOF
-])
-
-_lt_libdeps_save_CFLAGS=$CFLAGS
-case "$CC $CFLAGS " in #(
-*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
-*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
-*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
-esac
-
-dnl Parse the compiler output and extract the necessary
-dnl objects, libraries and library flags.
-if AC_TRY_EVAL(ac_compile); then
-  # Parse the compiler output and extract the necessary
-  # objects, libraries and library flags.
-
-  # Sentinel used to keep track of whether or not we are before
-  # the conftest object file.
-  pre_test_object_deps_done=no
-
-  for p in `eval "$output_verbose_link_cmd"`; do
-    case ${prev}${p} in
-
-    -L* | -R* | -l*)
-       # Some compilers place space between "-{L,R}" and the path.
-       # Remove the space.
-       if test $p = "-L" ||
-          test $p = "-R"; then
-	 prev=$p
-	 continue
-       fi
-
-       # Expand the sysroot to ease extracting the directories later.
-       if test -z "$prev"; then
-         case $p in
-         -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
-         -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
-         -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
-         esac
-       fi
-       case $p in
-       =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
-       esac
-       if test "$pre_test_object_deps_done" = no; then
-	 case ${prev} in
-	 -L | -R)
-	   # Internal compiler library paths should come after those
-	   # provided the user.  The postdeps already come after the
-	   # user supplied libs so there is no need to process them.
-	   if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
-	     _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
-	   else
-	     _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
-	   fi
-	   ;;
-	 # The "-l" case would never come before the object being
-	 # linked, so don't bother handling this case.
-	 esac
-       else
-	 if test -z "$_LT_TAGVAR(postdeps, $1)"; then
-	   _LT_TAGVAR(postdeps, $1)="${prev}${p}"
-	 else
-	   _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
-	 fi
-       fi
-       prev=
-       ;;
-
-    *.lto.$objext) ;; # Ignore GCC LTO objects
-    *.$objext)
-       # This assumes that the test object file only shows up
-       # once in the compiler output.
-       if test "$p" = "conftest.$objext"; then
-	 pre_test_object_deps_done=yes
-	 continue
-       fi
-
-       if test "$pre_test_object_deps_done" = no; then
-	 if test -z "$_LT_TAGVAR(predep_objects, $1)"; then
-	   _LT_TAGVAR(predep_objects, $1)="$p"
-	 else
-	   _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
-	 fi
-       else
-	 if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
-	   _LT_TAGVAR(postdep_objects, $1)="$p"
-	 else
-	   _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p"
-	 fi
-       fi
-       ;;
-
-    *) ;; # Ignore the rest.
-
-    esac
-  done
-
-  # Clean up.
-  rm -f a.out a.exe
-else
-  echo "libtool.m4: error: problem compiling $1 test program"
-fi
-
-$RM -f confest.$objext
-CFLAGS=$_lt_libdeps_save_CFLAGS
-
-# PORTME: override above test on systems where it is broken
-m4_if([$1], [CXX],
-[case $host_os in
-interix[[3-9]]*)
-  # Interix 3.5 installs completely hosed .la files for C++, so rather than
-  # hack all around it, let's just trust "g++" to DTRT.
-  _LT_TAGVAR(predep_objects,$1)=
-  _LT_TAGVAR(postdep_objects,$1)=
-  _LT_TAGVAR(postdeps,$1)=
-  ;;
-
-linux*)
-  case `$CC -V 2>&1 | sed 5q` in
-  *Sun\ C*)
-    # Sun C++ 5.9
-
-    # The more standards-conforming stlport4 library is
-    # incompatible with the Cstd library. Avoid specifying
-    # it if it's in CXXFLAGS. Ignore libCrun as
-    # -library=stlport4 depends on it.
-    case " $CXX $CXXFLAGS " in
-    *" -library=stlport4 "*)
-      solaris_use_stlport4=yes
-      ;;
-    esac
-
-    if test "$solaris_use_stlport4" != yes; then
-      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
-
-solaris*)
-  case $cc_basename in
-  CC* | sunCC*)
-    # The more standards-conforming stlport4 library is
-    # incompatible with the Cstd library. Avoid specifying
-    # it if it's in CXXFLAGS. Ignore libCrun as
-    # -library=stlport4 depends on it.
-    case " $CXX $CXXFLAGS " in
-    *" -library=stlport4 "*)
-      solaris_use_stlport4=yes
-      ;;
-    esac
-
-    # Adding this requires a known-good setup of shared libraries for
-    # Sun compiler versions before 5.6, else PIC objects from an old
-    # archive will be linked into the output, leading to subtle bugs.
-    if test "$solaris_use_stlport4" != yes; then
-      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
-esac
-])
-
-case " $_LT_TAGVAR(postdeps, $1) " in
-*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;;
-esac
- _LT_TAGVAR(compiler_lib_search_dirs, $1)=
-if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
- _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
-fi
-_LT_TAGDECL([], [compiler_lib_search_dirs], [1],
-    [The directories searched by this compiler when creating a shared library])
-_LT_TAGDECL([], [predep_objects], [1],
-    [Dependencies to place before and after the objects being linked to
-    create a shared library])
-_LT_TAGDECL([], [postdep_objects], [1])
-_LT_TAGDECL([], [predeps], [1])
-_LT_TAGDECL([], [postdeps], [1])
-_LT_TAGDECL([], [compiler_lib_search_path], [1],
-    [The library search path used internally by the compiler when linking
-    a shared library])
-])# _LT_SYS_HIDDEN_LIBDEPS
-
-
-# _LT_LANG_F77_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for a Fortran 77 compiler are
-# suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_F77_CONFIG],
-[AC_LANG_PUSH(Fortran 77)
-if test -z "$F77" || test "X$F77" = "Xno"; then
-  _lt_disable_F77=yes
-fi
-
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-_LT_TAGVAR(allow_undefined_flag, $1)=
-_LT_TAGVAR(always_export_symbols, $1)=no
-_LT_TAGVAR(archive_expsym_cmds, $1)=
-_LT_TAGVAR(export_dynamic_flag_spec, $1)=
-_LT_TAGVAR(hardcode_direct, $1)=no
-_LT_TAGVAR(hardcode_direct_absolute, $1)=no
-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_separator, $1)=
-_LT_TAGVAR(hardcode_minus_L, $1)=no
-_LT_TAGVAR(hardcode_automatic, $1)=no
-_LT_TAGVAR(inherit_rpath, $1)=no
-_LT_TAGVAR(module_cmds, $1)=
-_LT_TAGVAR(module_expsym_cmds, $1)=
-_LT_TAGVAR(link_all_deplibs, $1)=unknown
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(reload_flag, $1)=$reload_flag
-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
-_LT_TAGVAR(no_undefined_flag, $1)=
-_LT_TAGVAR(whole_archive_flag_spec, $1)=
-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-
-# Source file extension for f77 test sources.
-ac_ext=f
-
-# Object file extension for compiled f77 test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# No sense in running all these tests if we already determined that
-# the F77 compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_disable_F77" != yes; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="\
-      subroutine t
-      return
-      end
-"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code="\
-      program t
-      end
-"
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-  _LT_TAG_COMPILER
-
-  # save warnings/boilerplate of simple test code
-  _LT_COMPILER_BOILERPLATE
-  _LT_LINKER_BOILERPLATE
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC="$CC"
-  lt_save_GCC=$GCC
-  lt_save_CFLAGS=$CFLAGS
-  CC=${F77-"f77"}
-  CFLAGS=$FFLAGS
-  compiler=$CC
-  _LT_TAGVAR(compiler, $1)=$CC
-  _LT_CC_BASENAME([$compiler])
-  GCC=$G77
-  if test -n "$compiler"; then
-    AC_MSG_CHECKING([if libtool supports shared libraries])
-    AC_MSG_RESULT([$can_build_shared])
-
-    AC_MSG_CHECKING([whether to build shared libraries])
-    test "$can_build_shared" = "no" && enable_shared=no
-
-    # On AIX, shared libraries and static libraries use the same namespace, and
-    # are all built from PIC.
-    case $host_os in
-      aix3*)
-        test "$enable_shared" = yes && enable_static=no
-        if test -n "$RANLIB"; then
-          archive_cmds="$archive_cmds~\$RANLIB \$lib"
-          postinstall_cmds='$RANLIB $lib'
-        fi
-        ;;
-      aix[[4-9]]*)
-	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-	  test "$enable_shared" = yes && enable_static=no
-	fi
-        ;;
-    esac
-    AC_MSG_RESULT([$enable_shared])
-
-    AC_MSG_CHECKING([whether to build static libraries])
-    # Make sure either enable_shared or enable_static is yes.
-    test "$enable_shared" = yes || enable_static=yes
-    AC_MSG_RESULT([$enable_static])
-
-    _LT_TAGVAR(GCC, $1)="$G77"
-    _LT_TAGVAR(LD, $1)="$LD"
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    _LT_COMPILER_PIC($1)
-    _LT_COMPILER_C_O($1)
-    _LT_COMPILER_FILE_LOCKS($1)
-    _LT_LINKER_SHLIBS($1)
-    _LT_SYS_DYNAMIC_LINKER($1)
-    _LT_LINKER_HARDCODE_LIBPATH($1)
-
-    _LT_CONFIG($1)
-  fi # test -n "$compiler"
-
-  GCC=$lt_save_GCC
-  CC="$lt_save_CC"
-  CFLAGS="$lt_save_CFLAGS"
-fi # test "$_lt_disable_F77" != yes
-
-AC_LANG_POP
-])# _LT_LANG_F77_CONFIG
-
-
-# _LT_LANG_FC_CONFIG([TAG])
-# -------------------------
-# Ensure that the configuration variables for a Fortran compiler are
-# suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_FC_CONFIG],
-[AC_LANG_PUSH(Fortran)
-
-if test -z "$FC" || test "X$FC" = "Xno"; then
-  _lt_disable_FC=yes
-fi
-
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-_LT_TAGVAR(allow_undefined_flag, $1)=
-_LT_TAGVAR(always_export_symbols, $1)=no
-_LT_TAGVAR(archive_expsym_cmds, $1)=
-_LT_TAGVAR(export_dynamic_flag_spec, $1)=
-_LT_TAGVAR(hardcode_direct, $1)=no
-_LT_TAGVAR(hardcode_direct_absolute, $1)=no
-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_separator, $1)=
-_LT_TAGVAR(hardcode_minus_L, $1)=no
-_LT_TAGVAR(hardcode_automatic, $1)=no
-_LT_TAGVAR(inherit_rpath, $1)=no
-_LT_TAGVAR(module_cmds, $1)=
-_LT_TAGVAR(module_expsym_cmds, $1)=
-_LT_TAGVAR(link_all_deplibs, $1)=unknown
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(reload_flag, $1)=$reload_flag
-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
-_LT_TAGVAR(no_undefined_flag, $1)=
-_LT_TAGVAR(whole_archive_flag_spec, $1)=
-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-
-# Source file extension for fc test sources.
-ac_ext=${ac_fc_srcext-f}
-
-# Object file extension for compiled fc test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# No sense in running all these tests if we already determined that
-# the FC compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_disable_FC" != yes; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="\
-      subroutine t
-      return
-      end
-"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code="\
-      program t
-      end
-"
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-  _LT_TAG_COMPILER
-
-  # save warnings/boilerplate of simple test code
-  _LT_COMPILER_BOILERPLATE
-  _LT_LINKER_BOILERPLATE
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC="$CC"
-  lt_save_GCC=$GCC
-  lt_save_CFLAGS=$CFLAGS
-  CC=${FC-"f95"}
-  CFLAGS=$FCFLAGS
-  compiler=$CC
-  GCC=$ac_cv_fc_compiler_gnu
-
-  _LT_TAGVAR(compiler, $1)=$CC
-  _LT_CC_BASENAME([$compiler])
-
-  if test -n "$compiler"; then
-    AC_MSG_CHECKING([if libtool supports shared libraries])
-    AC_MSG_RESULT([$can_build_shared])
-
-    AC_MSG_CHECKING([whether to build shared libraries])
-    test "$can_build_shared" = "no" && enable_shared=no
-
-    # On AIX, shared libraries and static libraries use the same namespace, and
-    # are all built from PIC.
-    case $host_os in
-      aix3*)
-        test "$enable_shared" = yes && enable_static=no
-        if test -n "$RANLIB"; then
-          archive_cmds="$archive_cmds~\$RANLIB \$lib"
-          postinstall_cmds='$RANLIB $lib'
-        fi
-        ;;
-      aix[[4-9]]*)
-	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-	  test "$enable_shared" = yes && enable_static=no
-	fi
-        ;;
-    esac
-    AC_MSG_RESULT([$enable_shared])
-
-    AC_MSG_CHECKING([whether to build static libraries])
-    # Make sure either enable_shared or enable_static is yes.
-    test "$enable_shared" = yes || enable_static=yes
-    AC_MSG_RESULT([$enable_static])
-
-    _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu"
-    _LT_TAGVAR(LD, $1)="$LD"
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    _LT_SYS_HIDDEN_LIBDEPS($1)
-    _LT_COMPILER_PIC($1)
-    _LT_COMPILER_C_O($1)
-    _LT_COMPILER_FILE_LOCKS($1)
-    _LT_LINKER_SHLIBS($1)
-    _LT_SYS_DYNAMIC_LINKER($1)
-    _LT_LINKER_HARDCODE_LIBPATH($1)
-
-    _LT_CONFIG($1)
-  fi # test -n "$compiler"
-
-  GCC=$lt_save_GCC
-  CC=$lt_save_CC
-  CFLAGS=$lt_save_CFLAGS
-fi # test "$_lt_disable_FC" != yes
-
-AC_LANG_POP
-])# _LT_LANG_FC_CONFIG
-
-
-# _LT_LANG_GCJ_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for the GNU Java Compiler compiler
-# are suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_GCJ_CONFIG],
-[AC_REQUIRE([LT_PROG_GCJ])dnl
-AC_LANG_SAVE
-
-# Source file extension for Java test sources.
-ac_ext=java
-
-# Object file extension for compiled Java test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="class foo {}"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-_LT_TAG_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-# Allow CC to be a program name with arguments.
-lt_save_CC=$CC
-lt_save_CFLAGS=$CFLAGS
-lt_save_GCC=$GCC
-GCC=yes
-CC=${GCJ-"gcj"}
-CFLAGS=$GCJFLAGS
-compiler=$CC
-_LT_TAGVAR(compiler, $1)=$CC
-_LT_TAGVAR(LD, $1)="$LD"
-_LT_CC_BASENAME([$compiler])
-
-# GCJ did not exist at the time GCC didn't implicitly link libc in.
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(reload_flag, $1)=$reload_flag
-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
-
-## CAVEAT EMPTOR:
-## There is no encapsulation within the following macros, do not change
-## the running order or otherwise move them around unless you know exactly
-## what you are doing...
-if test -n "$compiler"; then
-  _LT_COMPILER_NO_RTTI($1)
-  _LT_COMPILER_PIC($1)
-  _LT_COMPILER_C_O($1)
-  _LT_COMPILER_FILE_LOCKS($1)
-  _LT_LINKER_SHLIBS($1)
-  _LT_LINKER_HARDCODE_LIBPATH($1)
-
-  _LT_CONFIG($1)
-fi
-
-AC_LANG_RESTORE
-
-GCC=$lt_save_GCC
-CC=$lt_save_CC
-CFLAGS=$lt_save_CFLAGS
-])# _LT_LANG_GCJ_CONFIG
-
-
-# _LT_LANG_GO_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for the GNU Go compiler
-# are suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_GO_CONFIG],
-[AC_REQUIRE([LT_PROG_GO])dnl
-AC_LANG_SAVE
-
-# Source file extension for Go test sources.
-ac_ext=go
-
-# Object file extension for compiled Go test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="package main; func main() { }"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='package main; func main() { }'
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-_LT_TAG_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-# Allow CC to be a program name with arguments.
-lt_save_CC=$CC
-lt_save_CFLAGS=$CFLAGS
-lt_save_GCC=$GCC
-GCC=yes
-CC=${GOC-"gccgo"}
-CFLAGS=$GOFLAGS
-compiler=$CC
-_LT_TAGVAR(compiler, $1)=$CC
-_LT_TAGVAR(LD, $1)="$LD"
-_LT_CC_BASENAME([$compiler])
-
-# Go did not exist at the time GCC didn't implicitly link libc in.
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(reload_flag, $1)=$reload_flag
-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
-
-## CAVEAT EMPTOR:
-## There is no encapsulation within the following macros, do not change
-## the running order or otherwise move them around unless you know exactly
-## what you are doing...
-if test -n "$compiler"; then
-  _LT_COMPILER_NO_RTTI($1)
-  _LT_COMPILER_PIC($1)
-  _LT_COMPILER_C_O($1)
-  _LT_COMPILER_FILE_LOCKS($1)
-  _LT_LINKER_SHLIBS($1)
-  _LT_LINKER_HARDCODE_LIBPATH($1)
-
-  _LT_CONFIG($1)
-fi
-
-AC_LANG_RESTORE
-
-GCC=$lt_save_GCC
-CC=$lt_save_CC
-CFLAGS=$lt_save_CFLAGS
-])# _LT_LANG_GO_CONFIG
-
-
-# _LT_LANG_RC_CONFIG([TAG])
-# -------------------------
-# Ensure that the configuration variables for the Windows resource compiler
-# are suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_RC_CONFIG],
-[AC_REQUIRE([LT_PROG_RC])dnl
-AC_LANG_SAVE
-
-# Source file extension for RC test sources.
-ac_ext=rc
-
-# Object file extension for compiled RC test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
-
-# Code to be used in simple link tests
-lt_simple_link_test_code="$lt_simple_compile_test_code"
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-_LT_TAG_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-# Allow CC to be a program name with arguments.
-lt_save_CC="$CC"
-lt_save_CFLAGS=$CFLAGS
-lt_save_GCC=$GCC
-GCC=
-CC=${RC-"windres"}
-CFLAGS=
-compiler=$CC
-_LT_TAGVAR(compiler, $1)=$CC
-_LT_CC_BASENAME([$compiler])
-_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
-
-if test -n "$compiler"; then
-  :
-  _LT_CONFIG($1)
-fi
-
-GCC=$lt_save_GCC
-AC_LANG_RESTORE
-CC=$lt_save_CC
-CFLAGS=$lt_save_CFLAGS
-])# _LT_LANG_RC_CONFIG
-
-
-# LT_PROG_GCJ
-# -----------
-AC_DEFUN([LT_PROG_GCJ],
-[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
-  [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
-    [AC_CHECK_TOOL(GCJ, gcj,)
-      test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
-      AC_SUBST(GCJFLAGS)])])[]dnl
-])
-
-# Old name:
-AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
-
-
-# LT_PROG_GO
-# ----------
-AC_DEFUN([LT_PROG_GO],
-[AC_CHECK_TOOL(GOC, gccgo,)
-])
-
-
-# LT_PROG_RC
-# ----------
-AC_DEFUN([LT_PROG_RC],
-[AC_CHECK_TOOL(RC, windres,)
-])
-
-# Old name:
-AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([LT_AC_PROG_RC], [])
-
-
-# _LT_DECL_EGREP
-# --------------
-# If we don't have a new enough Autoconf to choose the best grep
-# available, choose the one first in the user's PATH.
-m4_defun([_LT_DECL_EGREP],
-[AC_REQUIRE([AC_PROG_EGREP])dnl
-AC_REQUIRE([AC_PROG_FGREP])dnl
-test -z "$GREP" && GREP=grep
-_LT_DECL([], [GREP], [1], [A grep program that handles long lines])
-_LT_DECL([], [EGREP], [1], [An ERE matcher])
-_LT_DECL([], [FGREP], [1], [A literal string matcher])
-dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too
-AC_SUBST([GREP])
-])
-
-
-# _LT_DECL_OBJDUMP
-# --------------
-# If we don't have a new enough Autoconf to choose the best objdump
-# available, choose the one first in the user's PATH.
-m4_defun([_LT_DECL_OBJDUMP],
-[AC_CHECK_TOOL(OBJDUMP, objdump, false)
-test -z "$OBJDUMP" && OBJDUMP=objdump
-_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
-AC_SUBST([OBJDUMP])
-])
-
-# _LT_DECL_DLLTOOL
-# ----------------
-# Ensure DLLTOOL variable is set.
-m4_defun([_LT_DECL_DLLTOOL],
-[AC_CHECK_TOOL(DLLTOOL, dlltool, false)
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-_LT_DECL([], [DLLTOOL], [1], [DLL creation program])
-AC_SUBST([DLLTOOL])
-])
-
-# _LT_DECL_SED
-# ------------
-# Check for a fully-functional sed program, that truncates
-# as few characters as possible.  Prefer GNU sed if found.
-m4_defun([_LT_DECL_SED],
-[AC_PROG_SED
-test -z "$SED" && SED=sed
-Xsed="$SED -e 1s/^X//"
-_LT_DECL([], [SED], [1], [A sed program that does not truncate output])
-_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
-    [Sed that helps us avoid accidentally triggering echo(1) options like -n])
-])# _LT_DECL_SED
-
-m4_ifndef([AC_PROG_SED], [
-############################################################
-# NOTE: This macro has been submitted for inclusion into   #
-#  GNU Autoconf as AC_PROG_SED.  When it is available in   #
-#  a released version of Autoconf we should remove this    #
-#  macro and use it instead.                               #
-############################################################
-
-m4_defun([AC_PROG_SED],
-[AC_MSG_CHECKING([for a sed that does not truncate output])
-AC_CACHE_VAL(lt_cv_path_SED,
-[# Loop through the user's path and test for sed and gsed.
-# Then use that list of sed's as ones to test for truncation.
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for lt_ac_prog in sed gsed; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
-        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
-      fi
-    done
-  done
-done
-IFS=$as_save_IFS
-lt_ac_max=0
-lt_ac_count=0
-# Add /usr/xpg4/bin/sed as it is typically found on Solaris
-# along with /bin/sed that truncates output.
-for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
-  test ! -f $lt_ac_sed && continue
-  cat /dev/null > conftest.in
-  lt_ac_count=0
-  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
-  # Check for GNU sed and select it if it is found.
-  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
-    lt_cv_path_SED=$lt_ac_sed
-    break
-  fi
-  while true; do
-    cat conftest.in conftest.in >conftest.tmp
-    mv conftest.tmp conftest.in
-    cp conftest.in conftest.nl
-    echo >>conftest.nl
-    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
-    cmp -s conftest.out conftest.nl || break
-    # 10000 chars as input seems more than enough
-    test $lt_ac_count -gt 10 && break
-    lt_ac_count=`expr $lt_ac_count + 1`
-    if test $lt_ac_count -gt $lt_ac_max; then
-      lt_ac_max=$lt_ac_count
-      lt_cv_path_SED=$lt_ac_sed
-    fi
-  done
-done
-])
-SED=$lt_cv_path_SED
-AC_SUBST([SED])
-AC_MSG_RESULT([$SED])
-])#AC_PROG_SED
-])#m4_ifndef
-
-# Old name:
-AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([LT_AC_PROG_SED], [])
-
-
-# _LT_CHECK_SHELL_FEATURES
-# ------------------------
-# Find out whether the shell is Bourne or XSI compatible,
-# or has some other useful features.
-m4_defun([_LT_CHECK_SHELL_FEATURES],
-[AC_MSG_CHECKING([whether the shell understands some XSI constructs])
-# Try some XSI features
-xsi_shell=no
-( _lt_dummy="a/b/c"
-  test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
-      = c,a/b,b/c, \
-    && eval 'test $(( 1 + 1 )) -eq 2 \
-    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
-  && xsi_shell=yes
-AC_MSG_RESULT([$xsi_shell])
-_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
-
-AC_MSG_CHECKING([whether the shell understands "+="])
-lt_shell_append=no
-( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \
-    >/dev/null 2>&1 \
-  && lt_shell_append=yes
-AC_MSG_RESULT([$lt_shell_append])
-_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append'])
-
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  lt_unset=unset
-else
-  lt_unset=false
-fi
-_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl
-
-# test EBCDIC or ASCII
-case `echo X|tr X '\101'` in
- A) # ASCII based system
-    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
-  lt_SP2NL='tr \040 \012'
-  lt_NL2SP='tr \015\012 \040\040'
-  ;;
- *) # EBCDIC based system
-  lt_SP2NL='tr \100 \n'
-  lt_NL2SP='tr \r\n \100\100'
-  ;;
-esac
-_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl
-_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
-])# _LT_CHECK_SHELL_FEATURES
-
-
-# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY)
-# ------------------------------------------------------
-# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and
-# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY.
-m4_defun([_LT_PROG_FUNCTION_REPLACE],
-[dnl {
-sed -e '/^$1 ()$/,/^} # $1 /c\
-$1 ()\
-{\
-m4_bpatsubsts([$2], [$], [\\], [^\([	 ]\)], [\\\1])
-} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-])
-
-
-# _LT_PROG_REPLACE_SHELLFNS
-# -------------------------
-# Replace existing portable implementations of several shell functions with
-# equivalent extended shell implementations where those features are available..
-m4_defun([_LT_PROG_REPLACE_SHELLFNS],
-[if test x"$xsi_shell" = xyes; then
-  _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl
-    case ${1} in
-      */*) func_dirname_result="${1%/*}${2}" ;;
-      *  ) func_dirname_result="${3}" ;;
-    esac])
-
-  _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl
-    func_basename_result="${1##*/}"])
-
-  _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl
-    case ${1} in
-      */*) func_dirname_result="${1%/*}${2}" ;;
-      *  ) func_dirname_result="${3}" ;;
-    esac
-    func_basename_result="${1##*/}"])
-
-  _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl
-    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
-    # positional parameters, so assign one to ordinary parameter first.
-    func_stripname_result=${3}
-    func_stripname_result=${func_stripname_result#"${1}"}
-    func_stripname_result=${func_stripname_result%"${2}"}])
-
-  _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl
-    func_split_long_opt_name=${1%%=*}
-    func_split_long_opt_arg=${1#*=}])
-
-  _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl
-    func_split_short_opt_arg=${1#??}
-    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}])
-
-  _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl
-    case ${1} in
-      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
-      *)    func_lo2o_result=${1} ;;
-    esac])
-
-  _LT_PROG_FUNCTION_REPLACE([func_xform], [    func_xform_result=${1%.*}.lo])
-
-  _LT_PROG_FUNCTION_REPLACE([func_arith], [    func_arith_result=$(( $[*] ))])
-
-  _LT_PROG_FUNCTION_REPLACE([func_len], [    func_len_result=${#1}])
-fi
-
-if test x"$lt_shell_append" = xyes; then
-  _LT_PROG_FUNCTION_REPLACE([func_append], [    eval "${1}+=\\${2}"])
-
-  _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl
-    func_quote_for_eval "${2}"
-dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \
-    eval "${1}+=\\\\ \\$func_quote_for_eval_result"])
-
-  # Save a `func_append' function call where possible by direct use of '+='
-  sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
-    && mv -f "$cfgfile.tmp" "$cfgfile" \
-      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-  test 0 -eq $? || _lt_function_replace_fail=:
-else
-  # Save a `func_append' function call even when '+=' is not available
-  sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
-    && mv -f "$cfgfile.tmp" "$cfgfile" \
-      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-  test 0 -eq $? || _lt_function_replace_fail=:
-fi
-
-if test x"$_lt_function_replace_fail" = x":"; then
-  AC_MSG_WARN([Unable to substitute extended shell functions in $ofile])
-fi
-])
-
-# _LT_PATH_CONVERSION_FUNCTIONS
-# -----------------------------
-# Determine which file name conversion functions should be used by
-# func_to_host_file (and, implicitly, by func_to_host_path).  These are needed
-# for certain cross-compile configurations and native mingw.
-m4_defun([_LT_PATH_CONVERSION_FUNCTIONS],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-AC_MSG_CHECKING([how to convert $build file names to $host format])
-AC_CACHE_VAL(lt_cv_to_host_file_cmd,
-[case $host in
-  *-*-mingw* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
-        ;;
-      *-*-cygwin* )
-        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
-        ;;
-      * ) # otherwise, assume *nix
-        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
-        ;;
-    esac
-    ;;
-  *-*-cygwin* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
-        ;;
-      *-*-cygwin* )
-        lt_cv_to_host_file_cmd=func_convert_file_noop
-        ;;
-      * ) # otherwise, assume *nix
-        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
-        ;;
-    esac
-    ;;
-  * ) # unhandled hosts (and "normal" native builds)
-    lt_cv_to_host_file_cmd=func_convert_file_noop
-    ;;
-esac
-])
-to_host_file_cmd=$lt_cv_to_host_file_cmd
-AC_MSG_RESULT([$lt_cv_to_host_file_cmd])
-_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd],
-         [0], [convert $build file names to $host format])dnl
-
-AC_MSG_CHECKING([how to convert $build file names to toolchain format])
-AC_CACHE_VAL(lt_cv_to_tool_file_cmd,
-[#assume ordinary cross tools, or native build.
-lt_cv_to_tool_file_cmd=func_convert_file_noop
-case $host in
-  *-*-mingw* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
-        ;;
-    esac
-    ;;
-esac
-])
-to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-AC_MSG_RESULT([$lt_cv_to_tool_file_cmd])
-_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd],
-         [0], [convert $build files to toolchain format])dnl
-])# _LT_PATH_CONVERSION_FUNCTIONS
diff --git a/m4/ltoptions.m4 b/m4/ltoptions.m4
deleted file mode 100644
index 5d9acd8..0000000
--- a/m4/ltoptions.m4
+++ /dev/null
@@ -1,384 +0,0 @@
-# Helper functions for option handling.                    -*- Autoconf -*-
-#
-#   Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation,
-#   Inc.
-#   Written by Gary V. Vaughan, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 7 ltoptions.m4
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
-
-
-# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
-# ------------------------------------------
-m4_define([_LT_MANGLE_OPTION],
-[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
-
-
-# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
-# ---------------------------------------
-# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
-# matching handler defined, dispatch to it.  Other OPTION-NAMEs are
-# saved as a flag.
-m4_define([_LT_SET_OPTION],
-[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
-m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
-        _LT_MANGLE_DEFUN([$1], [$2]),
-    [m4_warning([Unknown $1 option `$2'])])[]dnl
-])
-
-
-# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
-# ------------------------------------------------------------
-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
-m4_define([_LT_IF_OPTION],
-[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
-
-
-# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
-# -------------------------------------------------------
-# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
-# are set.
-m4_define([_LT_UNLESS_OPTIONS],
-[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
-	    [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
-		      [m4_define([$0_found])])])[]dnl
-m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
-])[]dnl
-])
-
-
-# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
-# ----------------------------------------
-# OPTION-LIST is a space-separated list of Libtool options associated
-# with MACRO-NAME.  If any OPTION has a matching handler declared with
-# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
-# the unknown option and exit.
-m4_defun([_LT_SET_OPTIONS],
-[# Set options
-m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
-    [_LT_SET_OPTION([$1], _LT_Option)])
-
-m4_if([$1],[LT_INIT],[
-  dnl
-  dnl Simply set some default values (i.e off) if boolean options were not
-  dnl specified:
-  _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
-  ])
-  _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
-  ])
-  dnl
-  dnl If no reference was made to various pairs of opposing options, then
-  dnl we run the default mode handler for the pair.  For example, if neither
-  dnl `shared' nor `disable-shared' was passed, we enable building of shared
-  dnl archives by default:
-  _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
-  _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
-  _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
-  _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
-  		   [_LT_ENABLE_FAST_INSTALL])
-  ])
-])# _LT_SET_OPTIONS
-
-
-## --------------------------------- ##
-## Macros to handle LT_INIT options. ##
-## --------------------------------- ##
-
-# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
-# -----------------------------------------
-m4_define([_LT_MANGLE_DEFUN],
-[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
-
-
-# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
-# -----------------------------------------------
-m4_define([LT_OPTION_DEFINE],
-[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
-])# LT_OPTION_DEFINE
-
-
-# dlopen
-# ------
-LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
-])
-
-AU_DEFUN([AC_LIBTOOL_DLOPEN],
-[_LT_SET_OPTION([LT_INIT], [dlopen])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `dlopen' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
-
-
-# win32-dll
-# ---------
-# Declare package support for building win32 dll's.
-LT_OPTION_DEFINE([LT_INIT], [win32-dll],
-[enable_win32_dll=yes
-
-case $host in
-*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
-  AC_CHECK_TOOL(AS, as, false)
-  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
-  AC_CHECK_TOOL(OBJDUMP, objdump, false)
-  ;;
-esac
-
-test -z "$AS" && AS=as
-_LT_DECL([], [AS],      [1], [Assembler program])dnl
-
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
-
-test -z "$OBJDUMP" && OBJDUMP=objdump
-_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
-])# win32-dll
-
-AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-_LT_SET_OPTION([LT_INIT], [win32-dll])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `win32-dll' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
-
-
-# _LT_ENABLE_SHARED([DEFAULT])
-# ----------------------------
-# implement the --enable-shared flag, and supports the `shared' and
-# `disable-shared' LT_INIT options.
-# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
-m4_define([_LT_ENABLE_SHARED],
-[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([shared],
-    [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
-	[build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
-    [p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_shared=yes ;;
-    no) enable_shared=no ;;
-    *)
-      enable_shared=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_shared=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac],
-    [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
-
-    _LT_DECL([build_libtool_libs], [enable_shared], [0],
-	[Whether or not to build shared libraries])
-])# _LT_ENABLE_SHARED
-
-LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
-
-# Old names:
-AC_DEFUN([AC_ENABLE_SHARED],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
-])
-
-AC_DEFUN([AC_DISABLE_SHARED],
-[_LT_SET_OPTION([LT_INIT], [disable-shared])
-])
-
-AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
-AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_ENABLE_SHARED], [])
-dnl AC_DEFUN([AM_DISABLE_SHARED], [])
-
-
-
-# _LT_ENABLE_STATIC([DEFAULT])
-# ----------------------------
-# implement the --enable-static flag, and support the `static' and
-# `disable-static' LT_INIT options.
-# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
-m4_define([_LT_ENABLE_STATIC],
-[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([static],
-    [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
-	[build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
-    [p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_static=yes ;;
-    no) enable_static=no ;;
-    *)
-     enable_static=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_static=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac],
-    [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
-
-    _LT_DECL([build_old_libs], [enable_static], [0],
-	[Whether or not to build static libraries])
-])# _LT_ENABLE_STATIC
-
-LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
-
-# Old names:
-AC_DEFUN([AC_ENABLE_STATIC],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
-])
-
-AC_DEFUN([AC_DISABLE_STATIC],
-[_LT_SET_OPTION([LT_INIT], [disable-static])
-])
-
-AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
-AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_ENABLE_STATIC], [])
-dnl AC_DEFUN([AM_DISABLE_STATIC], [])
-
-
-
-# _LT_ENABLE_FAST_INSTALL([DEFAULT])
-# ----------------------------------
-# implement the --enable-fast-install flag, and support the `fast-install'
-# and `disable-fast-install' LT_INIT options.
-# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
-m4_define([_LT_ENABLE_FAST_INSTALL],
-[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([fast-install],
-    [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
-    [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
-    [p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_fast_install=yes ;;
-    no) enable_fast_install=no ;;
-    *)
-      enable_fast_install=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_fast_install=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac],
-    [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
-
-_LT_DECL([fast_install], [enable_fast_install], [0],
-	 [Whether or not to optimize for fast installation])dnl
-])# _LT_ENABLE_FAST_INSTALL
-
-LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
-
-# Old names:
-AU_DEFUN([AC_ENABLE_FAST_INSTALL],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `fast-install' option into LT_INIT's first parameter.])
-])
-
-AU_DEFUN([AC_DISABLE_FAST_INSTALL],
-[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `disable-fast-install' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
-dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
-
-
-# _LT_WITH_PIC([MODE])
-# --------------------
-# implement the --with-pic flag, and support the `pic-only' and `no-pic'
-# LT_INIT options.
-# MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
-m4_define([_LT_WITH_PIC],
-[AC_ARG_WITH([pic],
-    [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
-	[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
-    [lt_p=${PACKAGE-default}
-    case $withval in
-    yes|no) pic_mode=$withval ;;
-    *)
-      pic_mode=default
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for lt_pkg in $withval; do
-	IFS="$lt_save_ifs"
-	if test "X$lt_pkg" = "X$lt_p"; then
-	  pic_mode=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac],
-    [pic_mode=default])
-
-test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
-
-_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
-])# _LT_WITH_PIC
-
-LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
-LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
-
-# Old name:
-AU_DEFUN([AC_LIBTOOL_PICMODE],
-[_LT_SET_OPTION([LT_INIT], [pic-only])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `pic-only' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
-
-## ----------------- ##
-## LTDL_INIT Options ##
-## ----------------- ##
-
-m4_define([_LTDL_MODE], [])
-LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
-		 [m4_define([_LTDL_MODE], [nonrecursive])])
-LT_OPTION_DEFINE([LTDL_INIT], [recursive],
-		 [m4_define([_LTDL_MODE], [recursive])])
-LT_OPTION_DEFINE([LTDL_INIT], [subproject],
-		 [m4_define([_LTDL_MODE], [subproject])])
-
-m4_define([_LTDL_TYPE], [])
-LT_OPTION_DEFINE([LTDL_INIT], [installable],
-		 [m4_define([_LTDL_TYPE], [installable])])
-LT_OPTION_DEFINE([LTDL_INIT], [convenience],
-		 [m4_define([_LTDL_TYPE], [convenience])])
diff --git a/m4/ltsugar.m4 b/m4/ltsugar.m4
deleted file mode 100644
index 9000a05..0000000
--- a/m4/ltsugar.m4
+++ /dev/null
@@ -1,123 +0,0 @@
-# ltsugar.m4 -- libtool m4 base layer.                         -*-Autoconf-*-
-#
-# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
-# Written by Gary V. Vaughan, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 6 ltsugar.m4
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
-
-
-# lt_join(SEP, ARG1, [ARG2...])
-# -----------------------------
-# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
-# associated separator.
-# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
-# versions in m4sugar had bugs.
-m4_define([lt_join],
-[m4_if([$#], [1], [],
-       [$#], [2], [[$2]],
-       [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
-m4_define([_lt_join],
-[m4_if([$#$2], [2], [],
-       [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
-
-
-# lt_car(LIST)
-# lt_cdr(LIST)
-# ------------
-# Manipulate m4 lists.
-# These macros are necessary as long as will still need to support
-# Autoconf-2.59 which quotes differently.
-m4_define([lt_car], [[$1]])
-m4_define([lt_cdr],
-[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
-       [$#], 1, [],
-       [m4_dquote(m4_shift($@))])])
-m4_define([lt_unquote], $1)
-
-
-# lt_append(MACRO-NAME, STRING, [SEPARATOR])
-# ------------------------------------------
-# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
-# Note that neither SEPARATOR nor STRING are expanded; they are appended
-# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
-# No SEPARATOR is output if MACRO-NAME was previously undefined (different
-# than defined and empty).
-#
-# This macro is needed until we can rely on Autoconf 2.62, since earlier
-# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
-m4_define([lt_append],
-[m4_define([$1],
-	   m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
-
-
-
-# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
-# ----------------------------------------------------------
-# Produce a SEP delimited list of all paired combinations of elements of
-# PREFIX-LIST with SUFFIX1 through SUFFIXn.  Each element of the list
-# has the form PREFIXmINFIXSUFFIXn.
-# Needed until we can rely on m4_combine added in Autoconf 2.62.
-m4_define([lt_combine],
-[m4_if(m4_eval([$# > 3]), [1],
-       [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
-[[m4_foreach([_Lt_prefix], [$2],
-	     [m4_foreach([_Lt_suffix],
-		]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
-	[_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
-
-
-# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
-# -----------------------------------------------------------------------
-# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
-# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
-m4_define([lt_if_append_uniq],
-[m4_ifdef([$1],
-	  [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
-		 [lt_append([$1], [$2], [$3])$4],
-		 [$5])],
-	  [lt_append([$1], [$2], [$3])$4])])
-
-
-# lt_dict_add(DICT, KEY, VALUE)
-# -----------------------------
-m4_define([lt_dict_add],
-[m4_define([$1($2)], [$3])])
-
-
-# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
-# --------------------------------------------
-m4_define([lt_dict_add_subkey],
-[m4_define([$1($2:$3)], [$4])])
-
-
-# lt_dict_fetch(DICT, KEY, [SUBKEY])
-# ----------------------------------
-m4_define([lt_dict_fetch],
-[m4_ifval([$3],
-	m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
-    m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
-
-
-# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
-# -----------------------------------------------------------------
-m4_define([lt_if_dict_fetch],
-[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
-	[$5],
-    [$6])])
-
-
-# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
-# --------------------------------------------------------------
-m4_define([lt_dict_filter],
-[m4_if([$5], [], [],
-  [lt_join(m4_quote(m4_default([$4], [[, ]])),
-           lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
-		      [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
-])
diff --git a/m4/ltversion.m4 b/m4/ltversion.m4
deleted file mode 100644
index 07a8602..0000000
--- a/m4/ltversion.m4
+++ /dev/null
@@ -1,23 +0,0 @@
-# ltversion.m4 -- version numbers			-*- Autoconf -*-
-#
-#   Copyright (C) 2004 Free Software Foundation, Inc.
-#   Written by Scott James Remnant, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# @configure_input@
-
-# serial 3337 ltversion.m4
-# This file is part of GNU Libtool
-
-m4_define([LT_PACKAGE_VERSION], [2.4.2])
-m4_define([LT_PACKAGE_REVISION], [1.3337])
-
-AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.4.2'
-macro_revision='1.3337'
-_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
-_LT_DECL(, macro_revision, 0)
-])
diff --git a/m4/lt~obsolete.m4 b/m4/lt~obsolete.m4
deleted file mode 100644
index c573da9..0000000
--- a/m4/lt~obsolete.m4
+++ /dev/null
@@ -1,98 +0,0 @@
-# lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
-#
-#   Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
-#   Written by Scott James Remnant, 2004.
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 5 lt~obsolete.m4
-
-# These exist entirely to fool aclocal when bootstrapping libtool.
-#
-# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
-# which have later been changed to m4_define as they aren't part of the
-# exported API, or moved to Autoconf or Automake where they belong.
-#
-# The trouble is, aclocal is a bit thick.  It'll see the old AC_DEFUN
-# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
-# using a macro with the same name in our local m4/libtool.m4 it'll
-# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
-# and doesn't know about Autoconf macros at all.)
-#
-# So we provide this file, which has a silly filename so it's always
-# included after everything else.  This provides aclocal with the
-# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
-# because those macros already exist, or will be overwritten later.
-# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. 
-#
-# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
-# Yes, that means every name once taken will need to remain here until
-# we give up compatibility with versions before 1.7, at which point
-# we need to keep only those names which we still refer to.
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
-
-m4_ifndef([AC_LIBTOOL_LINKER_OPTION],	[AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
-m4_ifndef([AC_PROG_EGREP],		[AC_DEFUN([AC_PROG_EGREP])])
-m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH],	[AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
-m4_ifndef([_LT_AC_SHELL_INIT],		[AC_DEFUN([_LT_AC_SHELL_INIT])])
-m4_ifndef([_LT_AC_SYS_LIBPATH_AIX],	[AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
-m4_ifndef([_LT_PROG_LTMAIN],		[AC_DEFUN([_LT_PROG_LTMAIN])])
-m4_ifndef([_LT_AC_TAGVAR],		[AC_DEFUN([_LT_AC_TAGVAR])])
-m4_ifndef([AC_LTDL_ENABLE_INSTALL],	[AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
-m4_ifndef([AC_LTDL_PREOPEN],		[AC_DEFUN([AC_LTDL_PREOPEN])])
-m4_ifndef([_LT_AC_SYS_COMPILER],	[AC_DEFUN([_LT_AC_SYS_COMPILER])])
-m4_ifndef([_LT_AC_LOCK],		[AC_DEFUN([_LT_AC_LOCK])])
-m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE],	[AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
-m4_ifndef([_LT_AC_TRY_DLOPEN_SELF],	[AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
-m4_ifndef([AC_LIBTOOL_PROG_CC_C_O],	[AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
-m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
-m4_ifndef([AC_LIBTOOL_OBJDIR],		[AC_DEFUN([AC_LIBTOOL_OBJDIR])])
-m4_ifndef([AC_LTDL_OBJDIR],		[AC_DEFUN([AC_LTDL_OBJDIR])])
-m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
-m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP],	[AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
-m4_ifndef([AC_PATH_MAGIC],		[AC_DEFUN([AC_PATH_MAGIC])])
-m4_ifndef([AC_PROG_LD_GNU],		[AC_DEFUN([AC_PROG_LD_GNU])])
-m4_ifndef([AC_PROG_LD_RELOAD_FLAG],	[AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
-m4_ifndef([AC_DEPLIBS_CHECK_METHOD],	[AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
-m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
-m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
-m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
-m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS],	[AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
-m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP],	[AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
-m4_ifndef([LT_AC_PROG_EGREP],		[AC_DEFUN([LT_AC_PROG_EGREP])])
-m4_ifndef([LT_AC_PROG_SED],		[AC_DEFUN([LT_AC_PROG_SED])])
-m4_ifndef([_LT_CC_BASENAME],		[AC_DEFUN([_LT_CC_BASENAME])])
-m4_ifndef([_LT_COMPILER_BOILERPLATE],	[AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
-m4_ifndef([_LT_LINKER_BOILERPLATE],	[AC_DEFUN([_LT_LINKER_BOILERPLATE])])
-m4_ifndef([_AC_PROG_LIBTOOL],		[AC_DEFUN([_AC_PROG_LIBTOOL])])
-m4_ifndef([AC_LIBTOOL_SETUP],		[AC_DEFUN([AC_LIBTOOL_SETUP])])
-m4_ifndef([_LT_AC_CHECK_DLFCN],		[AC_DEFUN([_LT_AC_CHECK_DLFCN])])
-m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER],	[AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
-m4_ifndef([_LT_AC_TAGCONFIG],		[AC_DEFUN([_LT_AC_TAGCONFIG])])
-m4_ifndef([AC_DISABLE_FAST_INSTALL],	[AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
-m4_ifndef([_LT_AC_LANG_CXX],		[AC_DEFUN([_LT_AC_LANG_CXX])])
-m4_ifndef([_LT_AC_LANG_F77],		[AC_DEFUN([_LT_AC_LANG_F77])])
-m4_ifndef([_LT_AC_LANG_GCJ],		[AC_DEFUN([_LT_AC_LANG_GCJ])])
-m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
-m4_ifndef([_LT_AC_LANG_C_CONFIG],	[AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
-m4_ifndef([_LT_AC_LANG_CXX_CONFIG],	[AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
-m4_ifndef([_LT_AC_LANG_F77_CONFIG],	[AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
-m4_ifndef([_LT_AC_LANG_GCJ_CONFIG],	[AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
-m4_ifndef([_LT_AC_LANG_RC_CONFIG],	[AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
-m4_ifndef([AC_LIBTOOL_CONFIG],		[AC_DEFUN([AC_LIBTOOL_CONFIG])])
-m4_ifndef([_LT_AC_FILE_LTDLL_C],	[AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
-m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS],	[AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])])
-m4_ifndef([_LT_AC_PROG_CXXCPP],		[AC_DEFUN([_LT_AC_PROG_CXXCPP])])
-m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS],	[AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])])
-m4_ifndef([_LT_PROG_ECHO_BACKSLASH],	[AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])])
-m4_ifndef([_LT_PROG_F77],		[AC_DEFUN([_LT_PROG_F77])])
-m4_ifndef([_LT_PROG_FC],		[AC_DEFUN([_LT_PROG_FC])])
-m4_ifndef([_LT_PROG_CXX],		[AC_DEFUN([_LT_PROG_CXX])])
diff --git a/missing b/missing
deleted file mode 100755
index 28055d2..0000000
--- a/missing
+++ /dev/null
@@ -1,376 +0,0 @@
-#! /bin/sh
-# Common stub for a few missing GNU programs while installing.
-
-scriptversion=2009-04-28.21; # UTC
-
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
-# 2008, 2009 Free Software Foundation, Inc.
-# Originally by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-if test $# -eq 0; then
-  echo 1>&2 "Try \`$0 --help' for more information"
-  exit 1
-fi
-
-run=:
-sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
-sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
-
-# In the cases where this matters, `missing' is being run in the
-# srcdir already.
-if test -f configure.ac; then
-  configure_ac=configure.ac
-else
-  configure_ac=configure.in
-fi
-
-msg="missing on your system"
-
-case $1 in
---run)
-  # Try to run requested program, and just exit if it succeeds.
-  run=
-  shift
-  "$@" && exit 0
-  # Exit code 63 means version mismatch.  This often happens
-  # when the user try to use an ancient version of a tool on
-  # a file that requires a minimum version.  In this case we
-  # we should proceed has if the program had been absent, or
-  # if --run hadn't been passed.
-  if test $? = 63; then
-    run=:
-    msg="probably too old"
-  fi
-  ;;
-
-  -h|--h|--he|--hel|--help)
-    echo "\
-$0 [OPTION]... PROGRAM [ARGUMENT]...
-
-Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
-error status if there is no known handling for PROGRAM.
-
-Options:
-  -h, --help      display this help and exit
-  -v, --version   output version information and exit
-  --run           try to run the given command, and emulate it if it fails
-
-Supported PROGRAM values:
-  aclocal      touch file \`aclocal.m4'
-  autoconf     touch file \`configure'
-  autoheader   touch file \`config.h.in'
-  autom4te     touch the output file, or create a stub one
-  automake     touch all \`Makefile.in' files
-  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
-  flex         create \`lex.yy.c', if possible, from existing .c
-  help2man     touch the output file
-  lex          create \`lex.yy.c', if possible, from existing .c
-  makeinfo     touch the output file
-  tar          try tar, gnutar, gtar, then tar without non-portable flags
-  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
-
-Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
-\`g' are ignored when checking the name.
-
-Send bug reports to <bug-automake at gnu.org>."
-    exit $?
-    ;;
-
-  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
-    echo "missing $scriptversion (GNU Automake)"
-    exit $?
-    ;;
-
-  -*)
-    echo 1>&2 "$0: Unknown \`$1' option"
-    echo 1>&2 "Try \`$0 --help' for more information"
-    exit 1
-    ;;
-
-esac
-
-# normalize program name to check for.
-program=`echo "$1" | sed '
-  s/^gnu-//; t
-  s/^gnu//; t
-  s/^g//; t'`
-
-# Now exit if we have it, but it failed.  Also exit now if we
-# don't have it and --version was passed (most likely to detect
-# the program).  This is about non-GNU programs, so use $1 not
-# $program.
-case $1 in
-  lex*|yacc*)
-    # Not GNU programs, they don't have --version.
-    ;;
-
-  tar*)
-    if test -n "$run"; then
-       echo 1>&2 "ERROR: \`tar' requires --run"
-       exit 1
-    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
-       exit 1
-    fi
-    ;;
-
-  *)
-    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
-       # We have it, but it failed.
-       exit 1
-    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
-       # Could not run --version or --help.  This is probably someone
-       # running `$TOOL --version' or `$TOOL --help' to check whether
-       # $TOOL exists and not knowing $TOOL uses missing.
-       exit 1
-    fi
-    ;;
-esac
-
-# If it does not exist, or fails to run (possibly an outdated version),
-# try to emulate it.
-case $program in
-  aclocal*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
-         to install the \`Automake' and \`Perl' packages.  Grab them from
-         any GNU archive site."
-    touch aclocal.m4
-    ;;
-
-  autoconf*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`${configure_ac}'.  You might want to install the
-         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
-         archive site."
-    touch configure
-    ;;
-
-  autoheader*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
-         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
-         from any GNU archive site."
-    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
-    test -z "$files" && files="config.h"
-    touch_files=
-    for f in $files; do
-      case $f in
-      *:*) touch_files="$touch_files "`echo "$f" |
-				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
-      *) touch_files="$touch_files $f.in";;
-      esac
-    done
-    touch $touch_files
-    ;;
-
-  automake*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
-         You might want to install the \`Automake' and \`Perl' packages.
-         Grab them from any GNU archive site."
-    find . -type f -name Makefile.am -print |
-	   sed 's/\.am$/.in/' |
-	   while read f; do touch "$f"; done
-    ;;
-
-  autom4te*)
-    echo 1>&2 "\
-WARNING: \`$1' is needed, but is $msg.
-         You might have modified some files without having the
-         proper tools for further handling them.
-         You can get \`$1' as part of \`Autoconf' from any GNU
-         archive site."
-
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -f "$file"; then
-	touch $file
-    else
-	test -z "$file" || exec >$file
-	echo "#! /bin/sh"
-	echo "# Created by GNU Automake missing as a replacement of"
-	echo "#  $ $@"
-	echo "exit 0"
-	chmod +x $file
-	exit 1
-    fi
-    ;;
-
-  bison*|yacc*)
-    echo 1>&2 "\
-WARNING: \`$1' $msg.  You should only need it if
-         you modified a \`.y' file.  You may need the \`Bison' package
-         in order for those modifications to take effect.  You can get
-         \`Bison' from any GNU archive site."
-    rm -f y.tab.c y.tab.h
-    if test $# -ne 1; then
-        eval LASTARG="\${$#}"
-	case $LASTARG in
-	*.y)
-	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
-	    if test -f "$SRCFILE"; then
-	         cp "$SRCFILE" y.tab.c
-	    fi
-	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
-	    if test -f "$SRCFILE"; then
-	         cp "$SRCFILE" y.tab.h
-	    fi
-	  ;;
-	esac
-    fi
-    if test ! -f y.tab.h; then
-	echo >y.tab.h
-    fi
-    if test ! -f y.tab.c; then
-	echo 'main() { return 0; }' >y.tab.c
-    fi
-    ;;
-
-  lex*|flex*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified a \`.l' file.  You may need the \`Flex' package
-         in order for those modifications to take effect.  You can get
-         \`Flex' from any GNU archive site."
-    rm -f lex.yy.c
-    if test $# -ne 1; then
-        eval LASTARG="\${$#}"
-	case $LASTARG in
-	*.l)
-	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
-	    if test -f "$SRCFILE"; then
-	         cp "$SRCFILE" lex.yy.c
-	    fi
-	  ;;
-	esac
-    fi
-    if test ! -f lex.yy.c; then
-	echo 'main() { return 0; }' >lex.yy.c
-    fi
-    ;;
-
-  help2man*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-	 you modified a dependency of a manual page.  You may need the
-	 \`Help2man' package in order for those modifications to take
-	 effect.  You can get \`Help2man' from any GNU archive site."
-
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -f "$file"; then
-	touch $file
-    else
-	test -z "$file" || exec >$file
-	echo ".ab help2man is required to generate this page"
-	exit $?
-    fi
-    ;;
-
-  makeinfo*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified a \`.texi' or \`.texinfo' file, or any other file
-         indirectly affecting the aspect of the manual.  The spurious
-         call might also be the consequence of using a buggy \`make' (AIX,
-         DU, IRIX).  You might want to install the \`Texinfo' package or
-         the \`GNU make' package.  Grab either from any GNU archive site."
-    # The file to touch is that specified with -o ...
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -z "$file"; then
-      # ... or it is the one specified with @setfilename ...
-      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
-      file=`sed -n '
-	/^@setfilename/{
-	  s/.* \([^ ]*\) *$/\1/
-	  p
-	  q
-	}' $infile`
-      # ... or it is derived from the source name (dir/f.texi becomes f.info)
-      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
-    fi
-    # If the file does not exist, the user really needs makeinfo;
-    # let's fail without touching anything.
-    test -f $file || exit 1
-    touch $file
-    ;;
-
-  tar*)
-    shift
-
-    # We have already tried tar in the generic part.
-    # Look for gnutar/gtar before invocation to avoid ugly error
-    # messages.
-    if (gnutar --version > /dev/null 2>&1); then
-       gnutar "$@" && exit 0
-    fi
-    if (gtar --version > /dev/null 2>&1); then
-       gtar "$@" && exit 0
-    fi
-    firstarg="$1"
-    if shift; then
-	case $firstarg in
-	*o*)
-	    firstarg=`echo "$firstarg" | sed s/o//`
-	    tar "$firstarg" "$@" && exit 0
-	    ;;
-	esac
-	case $firstarg in
-	*h*)
-	    firstarg=`echo "$firstarg" | sed s/h//`
-	    tar "$firstarg" "$@" && exit 0
-	    ;;
-	esac
-    fi
-
-    echo 1>&2 "\
-WARNING: I can't seem to be able to run \`tar' with the given arguments.
-         You may want to install GNU tar or Free paxutils, or check the
-         command line arguments."
-    exit 1
-    ;;
-
-  *)
-    echo 1>&2 "\
-WARNING: \`$1' is needed, and is $msg.
-         You might have modified some files without having the
-         proper tools for further handling them.  Check the \`README' file,
-         it often tells you about the needed prerequisites for installing
-         this package.  You may also peek at any GNU archive site, in case
-         some other package would contain this missing \`$1' program."
-    exit 1
-    ;;
-esac
-
-exit 0
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/pktools.pc b/pktools.pc
new file mode 100644
index 0000000..0dbca07
--- /dev/null
+++ b/pktools.pc
@@ -0,0 +1,11 @@
+prefix=/usr/local
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: pktools
+Description: API library for pktools
+Requires: gdal gsl
+Version: 2.6.7
+Libs: -L${libdir} -lbase -lalgorithms -limageClasses -lfileClasses -llasClasses
+Cflags: -I${includedir}/pktools
diff --git a/qgis/CMakeLists.txt b/qgis/CMakeLists.txt
new file mode 100644
index 0000000..8e9eb32
--- /dev/null
+++ b/qgis/CMakeLists.txt
@@ -0,0 +1,4 @@
+FILE(GLOB PY_FILES *.py)
+FILE(GLOB OTHER_FILES *.txt)
+
+PLUGIN_INSTALL(processing ./pktools ${PY_FILES} ${OTHER_FILES})
diff --git a/qgis/ProcessingPktoolsPlugin.py b/qgis/ProcessingPktoolsPlugin.py
new file mode 100644
index 0000000..4bf3d47
--- /dev/null
+++ b/qgis/ProcessingPktoolsPlugin.py
@@ -0,0 +1,48 @@
+# -*- coding: utf-8 -*-
+
+"""
+***************************************************************************
+    ProcessingPktoolsPlugin.py
+    ---------------------
+    Date                 : April 2015
+    Copyright            : (C) 2015 by Pieter Kempeneers
+    Email                : kempenep at gmail dot com
+***************************************************************************
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+***************************************************************************
+"""
+
+__author__ = 'Pieter Kempeneers'
+__date__ = 'April 2015'
+__copyright__ = '(C) 2015, Pieter Kempeneers'
+# This will get replaced with a git SHA1 when you do a git archive
+__revision__ = '$Format:%H$'
+
+import os, sys
+import inspect
+
+from qgis.core import *
+
+from processing.core.Processing import Processing
+from pktools.pktoolsAlgorithmProvider import pktoolsAlgorithmProvider
+
+cmd_folder = os.path.split(inspect.getfile(inspect.currentframe()))[0]
+
+if cmd_folder not in sys.path:
+    sys.path.insert(0, cmd_folder)
+
+
+class ProcessingPktoolsPlugin:
+    def __init__(self):
+        self.provider = pktoolsAlgorithmProvider()
+
+    def initGui(self):
+        Processing.addProvider(self.provider)
+
+    def unload(self):
+        Processing.removeProvider(self.provider)
diff --git a/qgis/__init__.py b/qgis/__init__.py
new file mode 100644
index 0000000..fc4e2a5
--- /dev/null
+++ b/qgis/__init__.py
@@ -0,0 +1,31 @@
+# -*- coding: utf-8 -*-
+
+"""
+***************************************************************************
+    __init__.py
+    ---------------------
+    Date                 : April 2015
+    Copyright            : (C) 2015 by Pieter Kempeneers
+    Email                : kempenep at gmail dot com
+***************************************************************************
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+***************************************************************************
+"""
+
+__author__ = 'Pieter Kempeneers'
+__date__ = 'April 2015'
+__copyright__ = '(C) 2015, Pieter Kempeneers'
+# This will get replaced with a git SHA1 when you do a git archive
+__revision__ = '$Format:%H$'
+
+
+def classFactory(iface):
+    from pktools.ProcessingPktoolsPlugin import ProcessingPktoolsPlugin
+    return ProcessingPktoolsPlugin()
+    #of beter met ifacer argument?
+    #return ProcessingPktoolsPlugin(iface)
diff --git a/doc/html/logo.png b/qgis/logo.png
similarity index 100%
rename from doc/html/logo.png
rename to qgis/logo.png
diff --git a/qgis/metadata.txt b/qgis/metadata.txt
new file mode 100644
index 0000000..729fc70
--- /dev/null
+++ b/qgis/metadata.txt
@@ -0,0 +1,37 @@
+[general]
+name=pktools
+description=Processing kernel for geospatial data
+
+about =
+      pktools is a collection of programs written in C++ for image processing with a focus on remote sensing applications. This plugin provides support of utilities in pktools via the QGIS processing toolbox.
+
+      Among the utilities, you can find:
+
+      raster dataset compositing (median, mean, max ndvi, etc. compositing rules);
+
+      spectral/temporal and spatial filtering of raster datasets;
+
+      extract information from raster datasets (random sampling, regular grid or via overlaid vector sample);
+
+      supervised classification (support vector machine);
+      
+
+      To install the executables, please follow the procedure explained on the homepage
+
+
+category=Raster,Vector
+version=1.0.7
+qgisMinimumVersion=2.6
+
+author=Pieter Kempeneers
+email=kempenep at gmail.com
+
+tags=remote sensing, image processing, raster, vector
+
+homepage=http://pktools.nongnu.org
+tracker=https://savannah.nongnu.org/bugs/?func=additem&group=pktools
+repository=http://git.savannah.gnu.org/cgit/pktools.git/tree/qgis
+icon=logo.png
+
+experimental=False
+deprecated=False
diff --git a/qgis/pkcomposite.py b/qgis/pkcomposite.py
new file mode 100644
index 0000000..1e4ab6b
--- /dev/null
+++ b/qgis/pkcomposite.py
@@ -0,0 +1,155 @@
+# -*- coding: utf-8 -*-
+
+"""
+***************************************************************************
+    pkcomposite.py
+    ---------------------
+    Date                 : April 2015
+    Copyright            : (C) 2015 by Pieter Kempeneers
+    Email                : kempenep at gmail dot com
+***************************************************************************
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+***************************************************************************
+"""
+
+__author__ = 'Pieter Kempeneers'
+__date__ = 'April 2015'
+__copyright__ = '(C) 2015, Pieter Kempeneers'
+# This will get replaced with a git SHA1 when you do a git archive
+__revision__ = '$Format:%H$'
+
+import os
+from pktoolsUtils import pktoolsUtils
+from pktoolsAlgorithm import pktoolsAlgorithm
+from processing.core.parameters import ParameterMultipleInput
+from processing.core.parameters import ParameterRaster
+from processing.core.outputs import OutputRaster
+from processing.core.parameters import ParameterSelection
+from processing.core.parameters import ParameterNumber
+from processing.core.parameters import ParameterString
+from processing.core.parameters import ParameterBoolean
+from processing.core.parameters import ParameterExtent
+
+class pkcomposite(pktoolsAlgorithm):
+
+    INPUT = "INPUT"
+    OUTPUT = "OUTPUT"
+    CRULE_OPTIONS = ["overwrite", "maxndvi", "maxband", "minband", "validband", "mean", "mode", "median", "sum", "minallbands", "maxallbands","stdev"]
+    CRULE = "CRULE"
+    DX = "DX"
+    DY = "DY"
+    PROJWIN = 'PROJWIN'
+    CB = "CB"
+    SRCNODATA = "SRCNODATA"
+    BNDNODATA = "BNDNODATA"
+    DSTNODATA = "DSTNODATA"
+    MINGUI = "MINGUI"
+    MAXGUI = "MAXGUI"
+    RESAMPLE_OPTIONS = ['near', 'bilinear']
+    RESAMPLE = "RESAMPLE"
+    RTYPE = 'RTYPE'
+    TYPE = ['none', 'Byte','Int16','UInt16','UInt32','Int32','Float32','Float64','CInt16','CInt32','CFloat32','CFloat64']
+    EXTRA = 'EXTRA'
+
+    def cliName(self):
+        return "pkcomposite"
+
+    def defineCharacteristics(self):
+        self.name = "composite/mosaic raster datasets"
+        self.group = "[pktools] raster"
+        self.addParameter(ParameterMultipleInput(self.INPUT, 'Input layer raster data set',ParameterMultipleInput.TYPE_RASTER))
+        self.addParameter(ParameterSelection(self.CRULE,"composite rule",self.CRULE_OPTIONS, 0))
+        self.addOutput(OutputRaster(self.OUTPUT, "Output raster data set"))
+        self.addParameter(ParameterSelection(self.RTYPE, 'Output raster type (leave as none to keep original type)', self.TYPE, 0))
+        self.addParameter(ParameterNumber(self.DX, "Output resolution in x (leave 0 for no change)",0.0,None,0.0))
+        self.addParameter(ParameterNumber(self.DY, "Output resolution in y (leave 0 for no change)",0.0,None,0.0))
+        self.addParameter(ParameterExtent(self.PROJWIN,
+                          'Georeferenced boundingbox'))
+        self.addParameter(ParameterString(self.CB, "band index(es) used for the composite rule (0 based), e.g., 0;1 in case of maxndvi","0"))
+        self.addParameter(ParameterString(self.SRCNODATA, "invalid value(s) for input raster dataset (e.g., 0;255)","none"))
+        self.addParameter(ParameterString(self.BNDNODATA, "Band(s) in input image to check if pixel is valid (e.g., 0;1)","0"))
+        self.addParameter(ParameterString(self.DSTNODATA, "nodata value to put in output raster dataset if not valid or out of bounds","0"))
+        self.addParameter(ParameterString(self.MINGUI, "flag values smaller or equal to this value as invalid","none"))
+        self.addParameter(ParameterString(self.MAXGUI, "flag values larger or equal to this value as invalid","none"))
+        self.addParameter(ParameterSelection(self.RESAMPLE,"resampling method",self.RESAMPLE_OPTIONS, 0))
+        self.addParameter(ParameterString(self.EXTRA,
+                          'Additional parameters', '-of GTiff', optional=True))
+
+    def processAlgorithm(self, progress):
+        cliPath = '"' + os.path.join(pktoolsUtils.pktoolsPath(), self.cliName()) + '"'
+        commands = [cliPath]
+
+        input=self.getParameterValue(self.INPUT)
+        inputFiles = input.split(';')
+        for inputFile in inputFiles:
+            commands.append('-i')
+            commands.append('"' + inputFile + '"')
+
+        if self.TYPE[self.getParameterValue(self.RTYPE)] != "none":
+            commands.append('-ot')
+            commands.append(self.TYPE[self.getParameterValue(self.RTYPE)])
+        output=self.getOutputValue(self.OUTPUT)
+        if output != "":
+            commands.append("-o")
+            commands.append('"' + output + '"')
+        commands.append("-cr")
+        commands.append(self.CRULE_OPTIONS[self.getParameterValue(self.CRULE)])
+        if self.getParameterValue(self.DX) != 0:
+            commands.append("-dx")
+            commands.append(str(self.getParameterValue(self.DX)))
+        if self.getParameterValue(self.DY) != 0:
+            commands.append("-dy")
+            commands.append(str(self.getParameterValue(self.DY)))
+        projwin = str(self.getParameterValue(self.PROJWIN))
+        regionCoords = projwin.split(',')
+        commands.append('-ulx')
+        commands.append(regionCoords[0])
+        commands.append('-uly')
+        commands.append(regionCoords[3])
+        commands.append('-lrx')
+        commands.append(regionCoords[1])
+        commands.append('-lry')
+        commands.append(regionCoords[2])
+        cb=self.getParameterValue(self.CB)
+        cbValues = cb.split(';')
+        for cbValue in cbValues:
+                commands.append('-cb')
+                commands.append(cbValue)
+        srcnodata=self.getParameterValue(self.SRCNODATA)
+        if srcnodata != "none":
+            srcnodataValues = srcnodata.split(';')
+            for srcnodataValue in srcnodataValues:
+                commands.append('-srcnodata')
+                commands.append(srcnodataValue)
+        bndnodata=self.getParameterValue(self.BNDNODATA)
+        bndnodataValues = bndnodata.split(';')
+        for bndnodataValue in bndnodataValues:
+            commands.append('-bndnodata')
+            commands.append(bndnodataValue)
+        commands.append('-dstnodata')
+        commands.append(self.getParameterValue(self.DSTNODATA))
+
+        minGUI=self.getParameterValue(self.MINGUI)
+        if minGUI != "none":
+            minValues = minGUI.split(';')
+            for minValue in minValues:
+                commands.append('-min')
+                commands.append(minValue)
+        maxGUI=self.getParameterValue(self.MAXGUI)
+        if maxGUI != "none":
+            maxValues = maxGUI.split(';')
+            for maxValue in maxValues:
+                commands.append('-max')
+                commands.append(maxValue)
+        commands.append("-r")
+        commands.append(self.RESAMPLE_OPTIONS[self.getParameterValue(self.RESAMPLE)])
+        extra = str(self.getParameterValue(self.EXTRA))
+        if len(extra) > 0:
+            commands.append(extra)
+
+        pktoolsUtils.runpktools(commands, progress)
diff --git a/qgis/pkcrop.py b/qgis/pkcrop.py
new file mode 100644
index 0000000..94433ad
--- /dev/null
+++ b/qgis/pkcrop.py
@@ -0,0 +1,128 @@
+# -*- coding: utf-8 -*-
+
+"""
+***************************************************************************
+    pkcrop.py
+    ---------------------
+    Date                 : April 2015
+    Copyright            : (C) 2015 by Pieter Kempeneers
+    Email                : kempenep at gmail dot com
+***************************************************************************
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+***************************************************************************
+"""
+
+__author__ = 'Pieter Kempeneers'
+__date__ = 'April 2015'
+__copyright__ = '(C) 2015, Pieter Kempeneers'
+# This will get replaced with a git SHA1 when you do a git archive
+__revision__ = '$Format:%H$'
+
+import os
+from pktoolsUtils import pktoolsUtils
+from pktoolsAlgorithm import pktoolsAlgorithm
+from processing.core.parameters import ParameterMultipleInput
+from processing.core.parameters import ParameterRaster
+from processing.core.outputs import OutputRaster
+from processing.core.parameters import ParameterSelection
+from processing.core.parameters import ParameterNumber
+from processing.core.parameters import ParameterString
+from processing.core.parameters import ParameterBoolean
+from processing.core.parameters import ParameterExtent
+
+class pkcrop(pktoolsAlgorithm):
+
+    INPUT = "INPUT"
+    OUTPUT = "OUTPUT"
+    DX = "DX"
+    DY = "DY"
+    PROJWIN = 'PROJWIN'
+    BAND = "BAND"
+    NODATA = "NODATA"
+    RESAMPLE_OPTIONS = ['near', 'bilinear']
+    RESAMPLE = "RESAMPLE"
+    RTYPE = 'RTYPE'
+    TYPE = ['none', 'Byte','Int16','UInt16','UInt32','Int32','Float32','Float64','CInt16','CInt32','CFloat32','CFloat64']
+    EXTRA = 'EXTRA'
+
+    def cliName(self):
+        return "pkcrop"
+
+    def defineCharacteristics(self):
+        self.name = "crop raster datasets"
+        self.group = "[pktools] raster"
+        self.addParameter(ParameterMultipleInput(self.INPUT, 'Input layer raster data set',ParameterMultipleInput.TYPE_RASTER))
+        self.addOutput(OutputRaster(self.OUTPUT, "Output raster data set"))
+        self.addParameter(ParameterSelection(self.RTYPE, 'Output raster type (leave as none to keep original type)', self.TYPE, 0))
+        self.addParameter(ParameterNumber(self.DX, "Output resolution in x (leave 0 for no change)",0.0,None,0.0))
+        self.addParameter(ParameterNumber(self.DY, "Output resolution in y (leave 0 for no change)",0.0,None,0.0))
+        self.addParameter(ParameterExtent(self.PROJWIN,
+                          'Georeferenced boundingbox'))
+        self.addParameter(ParameterString(self.NODATA, "invalid value(s) for input raster dataset (e.g., 0;255)","none"))
+        self.addParameter(ParameterString(self.BAND, "Band(s) in input image to crop, e.g., 0;1;2 (leave empty to retain all bands)",'', optional=True))
+        self.addParameter(ParameterSelection(self.RESAMPLE,"resampling method",self.RESAMPLE_OPTIONS, 0))
+        self.addParameter(ParameterString(self.EXTRA,
+                          'Additional parameters', '-of GTiff', optional=True))
+
+    def processAlgorithm(self, progress):
+        cliPath = '"' + os.path.join(pktoolsUtils.pktoolsPath(), self.cliName()) + '"'
+        commands = [cliPath]
+
+        input=self.getParameterValue(self.INPUT)
+        inputFiles = input.split(';')
+        for inputFile in inputFiles:
+            commands.append('-i')
+            commands.append('"' + inputFile + '"')
+
+        if self.TYPE[self.getParameterValue(self.RTYPE)] != "none":
+            commands.append('-ot')
+            commands.append(self.TYPE[self.getParameterValue(self.RTYPE)])
+        output=self.getOutputValue(self.OUTPUT)
+        if output != "":
+            commands.append("-o")
+            commands.append('"' + output + '"')
+        if self.getParameterValue(self.DX) != 0:
+            commands.append("-dx")
+            commands.append(str(self.getParameterValue(self.DX)))
+        if self.getParameterValue(self.DY) != 0:
+            commands.append("-dy")
+            commands.append(str(self.getParameterValue(self.DY)))
+
+        projwin = str(self.getParameterValue(self.PROJWIN))
+        if(str(projwin).find(',')>0):
+           regionCoords = projwin.split(',')
+           commands.append('-ulx')
+           commands.append(regionCoords[0])
+           commands.append('-uly')
+           commands.append(regionCoords[3])
+           commands.append('-lrx')
+           commands.append(regionCoords[1])
+           commands.append('-lry')
+           commands.append(regionCoords[2])
+
+        nodata=self.getParameterValue(self.NODATA)
+        if nodata != "none":
+            nodataValues = nodata.split(';')
+            for nodataValue in nodataValues:
+                commands.append('-nodata')
+                commands.append(nodataValue)
+        
+        band=self.getParameterValue(self.BAND)
+        if band != '':
+            bandValues = band.split(';')
+            for bandValue in bandValues:
+                commands.append('-b')
+                commands.append(bandValue)
+        commands.append("-r")
+        commands.append(self.RESAMPLE_OPTIONS[self.getParameterValue(self.RESAMPLE)])
+
+        extra = str(self.getParameterValue(self.EXTRA))
+        if len(extra) > 0:
+            commands.append(extra)
+
+        pktoolsUtils.runpktools(commands, progress)
diff --git a/qgis/pkdiff_accuracy.py b/qgis/pkdiff_accuracy.py
new file mode 100644
index 0000000..706e69b
--- /dev/null
+++ b/qgis/pkdiff_accuracy.py
@@ -0,0 +1,187 @@
+# -*- coding: utf-8 -*-
+
+"""
+***************************************************************************
+    pkdiff_accuracy.py
+    ---------------------
+    Date                 : April 2015
+    Copyright            : (C) 2015 by Pieter Kempeneers
+    Email                : kempenep at gmail dot com
+***************************************************************************
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+***************************************************************************
+"""
+
+__author__ = 'Pieter Kempeneers'
+__date__ = 'April 2015'
+__copyright__ = '(C) 2015, Pieter Kempeneers'
+# This will get replaced with a git SHA1 when you do a git archive
+__revision__ = '$Format:%H$'
+
+import os
+
+from PyQt4.QtCore import QVariant
+from qgis.core import QgsField
+
+from pktoolsUtils import pktoolsUtils
+from pktoolsAlgorithm import pktoolsAlgorithm
+from processing.core.parameters import ParameterRaster
+from processing.core.parameters import ParameterVector
+from processing.core.outputs import OutputVector
+from processing.core.outputs import OutputFile
+#from processing.core.outputs import OutputTable
+from processing.core.parameters import ParameterSelection
+from processing.core.parameters import ParameterNumber
+from processing.core.parameters import ParameterString
+from processing.core.parameters import ParameterBoolean
+from processing.core.parameters import ParameterExtent
+
+FORMATS = [
+    'ESRI Shapefile',
+    'GeoJSON',
+    'GeoRSS',
+    'SQLite',
+    'GMT',
+    'MapInfo File',
+    'INTERLIS 1',
+    'INTERLIS 2',
+    'GML',
+    'Geoconcept',
+    'DXF',
+    'DGN',
+    'CSV',
+    'BNA',
+    'S57',
+    'KML',
+    'GPX',
+    'PGDump',
+    'GPSTrackMaker',
+    'ODS',
+    'XLSX',
+    'PDF',
+]
+EXTS = [
+    '.shp',
+    '.geojson',
+    '.xml',
+    '.sqlite',
+    '.gmt',
+    '.tab',
+    '.ili',
+    '.ili',
+    '.gml',
+    '.txt',
+    '.dxf',
+    '.dgn',
+    '.csv',
+    '.bna',
+    '.000',
+    '.kml',
+    '.gpx',
+    '.pgdump',
+    '.gtm',
+    '.ods',
+    '.xlsx',
+    '.pdf',
+]
+
+class pkdiff_accuracy(pktoolsAlgorithm):
+
+    INPUT = "INPUT"
+    REFERENCE = "REFERENCE"
+    ITERATE = "ITERATE"
+    LABELREF = "LABELREF"
+    NODATA = "NODATA"
+#    TABLE = 'TABLE'
+    OUTPUT = "OUTPUT"
+    CMOUTPUT = "CMOUTPUT"
+    CMFORMAT_OPTIONS = ["ascii", "latex"]
+    CMFORMAT = "CMFORMAT"
+
+    FORMAT = "FORMAT"
+    LABELCLASS = "LABELCLASS"
+    EXTRA = 'EXTRA'
+
+    def cliName(self):
+        return "pkdiff"
+
+    def defineCharacteristics(self):
+        self.name = "Accuracy assessment with ground reference"
+        self.group = "[pktools] supervised classification"
+        self.addParameter(ParameterRaster(self.INPUT, 'Classification result (raster map)'))
+        self.addParameter(ParameterVector(self.REFERENCE, 'Labeled reference vector data set'))
+        self.addParameter(ParameterBoolean(self.ITERATE, "Iterate over all layers",True))
+        self.addParameter(ParameterString(self.LABELREF, "Attribute name of the reference label","label"))
+        self.addParameter(ParameterString(self.NODATA, "No data value(s) in input or reference dataset to ignore (e.g., 0;255)","0"))
+        self.addOutput(OutputFile(self.CMOUTPUT, self.tr("Confusion matrix output file ")))
+        self.addParameter(ParameterSelection(self.CMFORMAT,"Format for confusion matrix output",self.CMFORMAT_OPTIONS, 0))
+
+#        self.addOutput(OutputTable(self.TABLE, self.tr('Confusion matrix table')))
+        self.addOutput(OutputVector(self.OUTPUT, 'Assessment output vector data set'))
+        self.addParameter(ParameterSelection(self.FORMAT,
+                          'Assessment output vector Format', FORMATS))
+        self.addParameter(ParameterString(self.LABELCLASS, "Attribute name of classified (map) label","class"))
+        self.addParameter(ParameterString(self.EXTRA,
+                          'Additional parameters', '', optional=True))
+
+    def processAlgorithm(self, progress):
+        cliPath = '"' + os.path.join(pktoolsUtils.pktoolsPath(), self.cliName()) + '"'
+        commands = [cliPath]
+        #outputtable = self.getOutputFromName(self.TABLE)
+
+        input=self.getParameterValue(self.INPUT)
+        commands.append('-i')
+        commands.append('"' + input + '"')
+
+        reference=self.getParameterValue(self.REFERENCE)
+        if self.getParameterValue(self.ITERATE):
+            if str(reference).find('|')>0:
+                referencename=str(reference)[:str(reference).find('|')]
+            else:
+                referencename=str(reference)
+        else:
+            referencename=str(reference).replace("|layername"," -ln")
+        commands.append('-ref')
+        commands.append(referencename)
+
+        commands.append('-lr');
+        commands.append(self.getParameterValue(self.LABELREF))
+
+        nodata=self.getParameterValue(self.NODATA)
+        if nodata != "none":
+            nodataValues = nodata.split(';')
+            for nodataValue in nodataValues:
+                commands.append('-nodata')
+                commands.append(nodataValue)
+
+        commands.append("-cm")
+        commands.append("-cmf")
+        commands.append(self.CMFORMAT_OPTIONS[self.getParameterValue(self.CMFORMAT)])
+        commands.append("-cmo")
+        commands.append(self.getOutputValue(self.CMOUTPUT))
+
+        output = self.getOutputFromName(self.OUTPUT)
+        outFile = output.value
+        formatIdx = self.getParameterValue(self.FORMAT)
+        outFormat = '"' + FORMATS[formatIdx] + '"'
+        commands.append('-f')
+        commands.append(outFormat)
+        ext = EXTS[formatIdx]
+        if not outFile.endswith(ext):
+            outFile += ext
+            output.value = outFile
+        commands.append('-o')
+        commands.append('"' + outFile + '"')
+        commands.append('-lc');
+        commands.append(self.getParameterValue(self.LABELCLASS))
+
+        extra = str(self.getParameterValue(self.EXTRA))
+        if len(extra) > 0:
+            commands.append(extra)
+
+        pktoolsUtils.runpktools(commands, progress)
diff --git a/qgis/pkextract.py b/qgis/pkextract.py
new file mode 100644
index 0000000..9e12d08
--- /dev/null
+++ b/qgis/pkextract.py
@@ -0,0 +1,188 @@
+# -*- coding: utf-8 -*-
+
+"""
+***************************************************************************
+    pkextract.py
+    ---------------------
+    Date                 : April 2015
+    Copyright            : (C) 2015 by Pieter Kempeneers
+    Email                : kempenep at gmail dot com
+***************************************************************************
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+***************************************************************************
+"""
+
+__author__ = 'Pieter Kempeneers'
+__date__ = 'April 2015'
+__copyright__ = '(C) 2015, Pieter Kempeneers'
+# This will get replaced with a git SHA1 when you do a git archive
+__revision__ = '$Format:%H$'
+
+import os
+from pktoolsUtils import pktoolsUtils
+from pktoolsAlgorithm import pktoolsAlgorithm
+from processing.core.parameters import ParameterRaster
+from processing.core.parameters import ParameterVector
+from processing.core.outputs import OutputVector
+from processing.core.parameters import ParameterSelection
+from processing.core.parameters import ParameterNumber
+from processing.core.parameters import ParameterString
+from processing.core.parameters import ParameterBoolean
+from processing.core.parameters import ParameterExtent
+
+FORMATS = [
+    'ESRI Shapefile',
+    'GeoJSON',
+    'GeoRSS',
+    'SQLite',
+    'GMT',
+    'MapInfo File',
+    'INTERLIS 1',
+    'INTERLIS 2',
+    'GML',
+    'Geoconcept',
+    'DXF',
+    'DGN',
+    'CSV',
+    'BNA',
+    'S57',
+    'KML',
+    'GPX',
+    'PGDump',
+    'GPSTrackMaker',
+    'ODS',
+    'XLSX',
+    'PDF',
+]
+EXTS = [
+    '.shp',
+    '.geojson',
+    '.xml',
+    '.sqlite',
+    '.gmt',
+    '.tab',
+    '.ili',
+    '.ili',
+    '.gml',
+    '.txt',
+    '.dxf',
+    '.dgn',
+    '.csv',
+    '.bna',
+    '.000',
+    '.kml',
+    '.gpx',
+    '.pgdump',
+    '.gtm',
+    '.ods',
+    '.xlsx',
+    '.pdf',
+]
+
+class pkextract(pktoolsAlgorithm):
+
+    INPUT = "INPUT"
+    SAMPLE = "SAMPLE"
+    ITERATE = "ITERATE"
+    OUTPUT = "OUTPUT"
+    
+    RULE_OPTIONS = ['centroid', 'point', 'mean', 'proportion', 'count', 'min', 'max', 'mode', 'sum', 'median', 'stdev', 'percentile']
+
+    RULE = "RULE"
+    POLYGON = "POLYGON"
+    BUFFER = "BUFFER"
+    SRCNODATA = "SRCNODATA"
+    BNDNODATA = "BNDNODATA"
+
+    EXTRA = 'EXTRA'
+    
+    FORMAT = "FORMAT"
+
+    def cliName(self):
+        return "pkextractogr"
+
+    def defineCharacteristics(self):
+        self.name = "extract vector sample from raster"
+        self.group = "[pktools] raster/vector"
+        self.addParameter(ParameterRaster(self.INPUT, 'Input raster data set'))
+        self.addParameter(ParameterVector(self.SAMPLE, 'Sample vector data set'))
+        self.addParameter(ParameterBoolean(self.ITERATE, "Iterate over all layers",True))
+        self.addParameter(ParameterSelection(self.RULE,"extraction rule",self.RULE_OPTIONS, 0))
+
+        self.addOutput(OutputVector(self.OUTPUT, 'Output vector data set'))
+        self.addParameter(ParameterSelection(self.FORMAT,
+                          'Destination Format', FORMATS))
+
+        self.addParameter(ParameterBoolean(self.POLYGON, "Create OGRPolygon as geometry instead of OGRPoint",False))
+        self.addParameter(ParameterNumber(self.BUFFER, "Buffer for calculating statistics for point features",0,19,0))
+        self.addParameter(ParameterString(self.SRCNODATA, "invalid value(s) for input raster dataset (e.g., 0;255)","none"))
+        self.addParameter(ParameterString(self.BNDNODATA, "Band(s) in input image to check if pixel is valid (e.g., 0;1)","0"))
+
+        self.addParameter(ParameterString(self.EXTRA,
+                          'Additional parameters', '', optional=True))
+
+    def processAlgorithm(self, progress):
+        cliPath = '"' + os.path.join(pktoolsUtils.pktoolsPath(), self.cliName()) + '"'
+        commands = [cliPath]
+
+        input=self.getParameterValue(self.INPUT)
+        commands.append('-i')
+        commands.append('"' + input + '"')
+
+        sample=self.getParameterValue(self.SAMPLE)
+        if self.getParameterValue(self.ITERATE):
+            if str(sample).find('|')>0:
+                samplename=str(sample)[:str(sample).find('|')]
+            else:
+                samplename=str(sample)
+        else:
+            samplename=str(sample).replace("|layername"," -ln")
+        commands.append('-s')
+        commands.append(samplename)
+
+        if self.getParameterValue(self.POLYGON):
+            commands.append("-polygon")
+
+        commands.append("-r")
+        commands.append(self.RULE_OPTIONS[self.getParameterValue(self.RULE)])
+
+        output = self.getOutputFromName(self.OUTPUT)
+        outFile = output.value
+        formatIdx = self.getParameterValue(self.FORMAT)
+        outFormat = '"' + FORMATS[formatIdx] + '"'
+        commands.append('-f')
+        commands.append(outFormat)
+        ext = EXTS[formatIdx]
+        if not outFile.endswith(ext):
+            outFile += ext
+            output.value = outFile
+        commands.append('-o')
+        commands.append('"' + outFile + '"')
+
+        buffer=self.getParameterValue(self.BUFFER)
+        if buffer > 1:
+            commands.append("-buf")
+            commands.append(str(buffer))
+
+        srcnodata=self.getParameterValue(self.SRCNODATA)
+        if srcnodata != "none":
+            srcnodataValues = srcnodata.split(';')
+            for srcnodataValue in srcnodataValues:
+                commands.append('-srcnodata')
+                commands.append(srcnodataValue)
+        bndnodata=self.getParameterValue(self.BNDNODATA)
+        bndnodataValues = bndnodata.split(';')
+        for bndnodataValue in bndnodataValues:
+            commands.append('-bndnodata')
+            commands.append(bndnodataValue)
+
+        extra = str(self.getParameterValue(self.EXTRA))
+        if len(extra) > 0:
+            commands.append(extra)
+
+        pktoolsUtils.runpktools(commands, progress)
diff --git a/qgis/pkextract_grid.py b/qgis/pkextract_grid.py
new file mode 100644
index 0000000..17f44d9
--- /dev/null
+++ b/qgis/pkextract_grid.py
@@ -0,0 +1,175 @@
+# -*- coding: utf-8 -*-
+
+"""
+***************************************************************************
+    pkextract_grid.py
+    ---------------------
+    Date                 : April 2015
+    Copyright            : (C) 2015 by Pieter Kempeneers
+    Email                : kempenep at gmail dot com
+***************************************************************************
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+***************************************************************************
+"""
+
+__author__ = 'Pieter Kempeneers'
+__date__ = 'April 2015'
+__copyright__ = '(C) 2015, Pieter Kempeneers'
+# This will get replaced with a git SHA1 when you do a git archive
+__revision__ = '$Format:%H$'
+
+import os
+from pktoolsUtils import pktoolsUtils
+from pktoolsAlgorithm import pktoolsAlgorithm
+from processing.core.parameters import ParameterRaster
+from processing.core.parameters import ParameterVector
+from processing.core.outputs import OutputVector
+from processing.core.parameters import ParameterSelection
+from processing.core.parameters import ParameterNumber
+from processing.core.parameters import ParameterString
+from processing.core.parameters import ParameterBoolean
+from processing.core.parameters import ParameterExtent
+
+FORMATS = [
+    'ESRI Shapefile',
+    'GeoJSON',
+    'GeoRSS',
+    'SQLite',
+    'GMT',
+    'MapInfo File',
+    'INTERLIS 1',
+    'INTERLIS 2',
+    'GML',
+    'Geoconcept',
+    'DXF',
+    'DGN',
+    'CSV',
+    'BNA',
+    'S57',
+    'KML',
+    'GPX',
+    'PGDump',
+    'GPSTrackMaker',
+    'ODS',
+    'XLSX',
+    'PDF',
+]
+EXTS = [
+    '.shp',
+    '.geojson',
+    '.xml',
+    '.sqlite',
+    '.gmt',
+    '.tab',
+    '.ili',
+    '.ili',
+    '.gml',
+    '.txt',
+    '.dxf',
+    '.dgn',
+    '.csv',
+    '.bna',
+    '.000',
+    '.kml',
+    '.gpx',
+    '.pgdump',
+    '.gtm',
+    '.ods',
+    '.xlsx',
+    '.pdf',
+]
+
+class pkextract_grid(pktoolsAlgorithm):
+
+    INPUT = "INPUT"
+    OUTPUT = "OUTPUT"
+    
+    RULE_OPTIONS = ['centroid', 'point', 'mean', 'proportion', 'custom', 'min', 'max', 'mode', 'sum', 'median', 'stdev', 'percentile']
+
+    RULE = "RULE"
+    POLYGON = "POLYGON"
+    BUFFER = "BUFFER"
+    GRID = "GRID"
+    SRCNODATA = "SRCNODATA"
+    BNDNODATA = "BNDNODATA"
+    EXTRA = 'EXTRA'
+    
+    FORMAT = "FORMAT"
+
+    def cliName(self):
+        return "pkextractogr"
+
+    def defineCharacteristics(self):
+        self.name = "extract regular grid"
+        self.group = "[pktools] raster/vector"
+        self.addParameter(ParameterRaster(self.INPUT, 'Input raster data set'))
+        self.addParameter(ParameterSelection(self.RULE,"extraction rule",self.RULE_OPTIONS, 0))
+
+        self.addOutput(OutputVector(self.OUTPUT, 'Output vector data set'))
+        self.addParameter(ParameterSelection(self.FORMAT,
+                          'Destination Format', FORMATS))
+        self.addParameter(ParameterBoolean(self.POLYGON, "Create OGRPolygon as geometry instead of OGRPoint",False))
+        self.addParameter(ParameterNumber(self.BUFFER, "Buffer for calculating statistics for point features",1,25,1))
+        self.addParameter(ParameterNumber(self.GRID, "Cell grid size (in projected units, e.g,. m)",0,1000000,1))
+
+        self.addParameter(ParameterString(self.SRCNODATA, "invalid value(s) for input raster dataset (e.g., 0;255)","none"))
+        self.addParameter(ParameterString(self.BNDNODATA, "Band(s) in input image to check if pixel is valid (e.g., 0;1)","0"))
+        self.addParameter(ParameterString(self.EXTRA, 'Additional parameters', '', optional=True))
+
+    def processAlgorithm(self, progress):
+        cliPath = '"' + os.path.join(pktoolsUtils.pktoolsPath(), self.cliName()) + '"'
+        commands = [cliPath]
+
+        input=self.getParameterValue(self.INPUT)
+        commands.append('-i')
+        commands.append('"' + input + '"')
+
+        commands.append("-r")
+        commands.append(self.RULE_OPTIONS[self.getParameterValue(self.RULE)])
+
+        output = self.getOutputFromName(self.OUTPUT)
+        outFile = output.value
+        formatIdx = self.getParameterValue(self.FORMAT)
+        outFormat = '"' + FORMATS[formatIdx] + '"'
+        commands.append('-f')
+        commands.append(outFormat)
+        ext = EXTS[formatIdx]
+        if not outFile.endswith(ext):
+            outFile += ext
+            output.value = outFile
+        commands.append('-o')
+        commands.append('"' + outFile + '"')
+
+        if self.getParameterValue(self.POLYGON):
+            commands.append("-polygon")
+        buffer=self.getParameterValue(self.BUFFER)
+        if buffer > 1:
+            commands.append("-buf")
+            commands.append(str(buffer))
+
+        if self.getParameterValue(self.GRID) > 0:
+            commands.append("-grid")
+            commands.append(str(self.getParameterValue(self.GRID)))
+
+        srcnodata=self.getParameterValue(self.SRCNODATA)
+        if srcnodata != "none":
+            srcnodataValues = srcnodata.split(';')
+            for srcnodataValue in srcnodataValues:
+                commands.append('-srcnodata')
+                commands.append(srcnodataValue)
+        bndnodata=self.getParameterValue(self.BNDNODATA)
+        bndnodataValues = bndnodata.split(';')
+        for bndnodataValue in bndnodataValues:
+            commands.append('-bndnodata')
+            commands.append(bndnodataValue)
+
+        extra = str(self.getParameterValue(self.EXTRA))
+        if len(extra) > 0:
+            commands.append(extra)
+
+        pktoolsUtils.runpktools(commands, progress)
diff --git a/qgis/pkextract_random.py b/qgis/pkextract_random.py
new file mode 100644
index 0000000..c67923b
--- /dev/null
+++ b/qgis/pkextract_random.py
@@ -0,0 +1,178 @@
+# -*- coding: utf-8 -*-
+
+"""
+***************************************************************************
+    pkextract_random.py
+    ---------------------
+    Date                 : April 2015
+    Copyright            : (C) 2015 by Pieter Kempeneers
+    Email                : kempenep at gmail dot com
+***************************************************************************
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+***************************************************************************
+"""
+
+__author__ = 'Pieter Kempeneers'
+__date__ = 'April 2015'
+__copyright__ = '(C) 2015, Pieter Kempeneers'
+# This will get replaced with a git SHA1 when you do a git archive
+__revision__ = '$Format:%H$'
+
+import os
+from pktoolsUtils import pktoolsUtils
+from pktoolsAlgorithm import pktoolsAlgorithm
+from processing.core.parameters import ParameterRaster
+from processing.core.parameters import ParameterVector
+from processing.core.outputs import OutputVector
+from processing.core.parameters import ParameterSelection
+from processing.core.parameters import ParameterNumber
+from processing.core.parameters import ParameterString
+from processing.core.parameters import ParameterBoolean
+from processing.core.parameters import ParameterExtent
+
+FORMATS = [
+    'ESRI Shapefile',
+    'GeoJSON',
+    'GeoRSS',
+    'SQLite',
+    'GMT',
+    'MapInfo File',
+    'INTERLIS 1',
+    'INTERLIS 2',
+    'GML',
+    'Geoconcept',
+    'DXF',
+    'DGN',
+    'CSV',
+    'BNA',
+    'S57',
+    'KML',
+    'GPX',
+    'PGDump',
+    'GPSTrackMaker',
+    'ODS',
+    'XLSX',
+    'PDF',
+]
+EXTS = [
+    '.shp',
+    '.geojson',
+    '.xml',
+    '.sqlite',
+    '.gmt',
+    '.tab',
+    '.ili',
+    '.ili',
+    '.gml',
+    '.txt',
+    '.dxf',
+    '.dgn',
+    '.csv',
+    '.bna',
+    '.000',
+    '.kml',
+    '.gpx',
+    '.pgdump',
+    '.gtm',
+    '.ods',
+    '.xlsx',
+    '.pdf',
+]
+
+class pkextract_random(pktoolsAlgorithm):
+
+    INPUT = "INPUT"
+    OUTPUT = "OUTPUT"
+    
+    RULE_OPTIONS = ['centroid', 'point', 'mean', 'proportion', 'custom', 'min', 'max', 'mode', 'sum', 'median', 'stdev', 'percentile']
+
+    RULE = "RULE"
+    POLYGON = "POLYGON"
+    BUFFER = "BUFFER"
+    RANDOM = "RANDOM"
+    SRCNODATA = "SRCNODATA"
+    BNDNODATA = "BNDNODATA"
+    EXTRA = 'EXTRA'
+    
+    FORMAT = "FORMAT"
+
+    def cliName(self):
+        return "pkextractogr"
+
+    def defineCharacteristics(self):
+        self.name = "extract random points"
+        self.group = "[pktools] raster/vector"
+        self.addParameter(ParameterRaster(self.INPUT, 'Input raster data set'))
+        self.addParameter(ParameterSelection(self.RULE,"extraction rule",self.RULE_OPTIONS, 0))
+
+        self.addOutput(OutputVector(self.OUTPUT, 'Output vector data set'))
+        self.addParameter(ParameterSelection(self.FORMAT,
+                          'Destination Format', FORMATS))
+
+        self.addParameter(ParameterBoolean(self.POLYGON, "Create OGRPolygon as geometry instead of OGRPoint",False))
+        self.addParameter(ParameterNumber(self.BUFFER, "Buffer for calculating statistics for point features",1,25,1))
+        self.addParameter(ParameterNumber(self.RANDOM, "Number of random points to generate",0,1000000,100))
+
+        self.addParameter(ParameterString(self.SRCNODATA, "invalid value(s) for input raster dataset (e.g., 0;255)","none"))
+        self.addParameter(ParameterString(self.BNDNODATA, "Band(s) in input image to check if pixel is valid (e.g., 0;1)","0"))
+        self.addParameter(ParameterString(self.EXTRA,
+                          'Additional parameters', '', optional=True))
+
+    def processAlgorithm(self, progress):
+        cliPath = '"' + os.path.join(pktoolsUtils.pktoolsPath(), self.cliName()) + '"'
+        commands = [cliPath]
+
+        input=self.getParameterValue(self.INPUT)
+        commands.append('-i')
+        commands.append('"' + input + '"')
+
+        commands.append("-r")
+        commands.append(self.RULE_OPTIONS[self.getParameterValue(self.RULE)])
+
+        output = self.getOutputFromName(self.OUTPUT)
+        outFile = output.value
+        formatIdx = self.getParameterValue(self.FORMAT)
+        outFormat = '"' + FORMATS[formatIdx] + '"'
+        commands.append('-f')
+        commands.append(outFormat)
+        ext = EXTS[formatIdx]
+        if not outFile.endswith(ext):
+            outFile += ext
+            output.value = outFile
+        commands.append('-o')
+        commands.append('"' + outFile + '"')
+
+        if self.getParameterValue(self.POLYGON):
+            commands.append("-polygon")
+        buffer=self.getParameterValue(self.BUFFER)
+        if buffer > 1:
+            commands.append("-buf")
+            commands.append(str(buffer))
+
+        if self.getParameterValue(self.RANDOM) > 0:
+            commands.append("-rand")
+            commands.append(str(self.getParameterValue(self.RANDOM)))
+
+        srcnodata=self.getParameterValue(self.SRCNODATA)
+        if srcnodata != "none":
+            srcnodataValues = srcnodata.split(';')
+            for srcnodataValue in srcnodataValues:
+                commands.append('-srcnodata')
+                commands.append(srcnodataValue)
+        bndnodata=self.getParameterValue(self.BNDNODATA)
+        bndnodataValues = bndnodata.split(';')
+        for bndnodataValue in bndnodataValues:
+            commands.append('-bndnodata')
+            commands.append(bndnodataValue)
+
+        extra = str(self.getParameterValue(self.EXTRA))
+        if len(extra) > 0:
+            commands.append(extra)
+
+
+        pktoolsUtils.runpktools(commands, progress)
diff --git a/qgis/pkfilter_spatial.py b/qgis/pkfilter_spatial.py
new file mode 100644
index 0000000..cebc188
--- /dev/null
+++ b/qgis/pkfilter_spatial.py
@@ -0,0 +1,112 @@
+# -*- coding: utf-8 -*-
+
+"""
+***************************************************************************
+    pkfilter_spatial.py
+    ---------------------
+    Date                 : April 2015
+    Copyright            : (C) 2015 by Pieter Kempeneers
+    Email                : kempenep at gmail dot com
+***************************************************************************
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+***************************************************************************
+"""
+
+__author__ = 'Pieter Kempeneers'
+__date__ = 'April 2015'
+__copyright__ = '(C) 2015, Pieter Kempeneers'
+# This will get replaced with a git SHA1 when you do a git archive
+__revision__ = '$Format:%H$'
+
+import os
+from pktoolsUtils import pktoolsUtils
+from pktoolsAlgorithm import pktoolsAlgorithm
+from processing.core.parameters import ParameterMultipleInput
+from processing.core.parameters import ParameterRaster
+from processing.core.outputs import OutputRaster
+from processing.core.parameters import ParameterSelection
+from processing.core.parameters import ParameterNumber
+from processing.core.parameters import ParameterString
+from processing.core.parameters import ParameterBoolean
+from processing.core.parameters import ParameterExtent
+
+class pkfilter_spatial(pktoolsAlgorithm):
+
+    INPUT = "INPUT"
+    OUTPUT = "OUTPUT"
+    METHOD_OPTIONS = ["none", "median", "var", "min", "max", "sum", "mean", "dilate", "erode", "close", "open", "homog ", "heterog ", "sobelx ", "sobely ", "sobelxy ", "sobelyx" , "smooth", "countid", "smoothnodata  values", "threshold local filtering", "ismin", "ismax", "order", "mode", "stdev", "mrf", "dwt", "dwti", "dwt_cut", "scramble", "shift", "savgolay", "percentile"]
+    METHOD = "METHOD"
+#    RESAMPLE_OPTIONS = ['near', 'bilinear']
+#    RESAMPLE = "RESAMPLE"
+    DIM = "DIM"
+    NODATA = "NODATA"
+    PADDING_OPTIONS = ["symmetric", "replicate", "circular", "zero"]
+    PADDING = "PADDING"
+    RTYPE = 'RTYPE'
+    TYPE = ['none', 'Byte','Int16','UInt16','UInt32','Int32','Float32','Float64','CInt16','CInt32','CFloat32','CFloat64']
+    EXTRA = 'EXTRA'
+
+    def cliName(self):
+        return "pkfilter"
+
+    def defineCharacteristics(self):
+        self.name = "spatial filter"
+        self.group = "[pktools] filter"
+
+        self.addParameter(ParameterRaster(self.INPUT, 'Input layer raster data set',ParameterRaster))
+        self.addParameter(ParameterSelection(self.METHOD,"filter rule",self.METHOD_OPTIONS, 0))
+        self.addOutput(OutputRaster(self.OUTPUT, "Output raster data set"))
+        self.addParameter(ParameterSelection(self.RTYPE, 'Output raster type (leave as none to keep original type)', self.TYPE, 0))
+        self.addParameter(ParameterNumber(self.DIM, "Filter kernel size (odd value)",0.0,None,3.0))
+        #for smooth nodata:
+        self.addParameter(ParameterString(self.NODATA, "invalid value(s) for input raster dataset (e.g., 0;255)","none"))
+        self.addParameter(ParameterSelection(self.PADDING,"Padding (edge effects)",self.PADDING_OPTIONS, 0))
+#        self.addParameter(ParameterSelection(self.RESAMPLE,"resampling method",self.RESAMPLE_OPTIONS, 0))
+        self.addParameter(ParameterString(self.EXTRA,
+                          'Additional parameters', '-of GTiff', optional=True))
+
+    def processAlgorithm(self, progress):
+        cliPath = '"' + os.path.join(pktoolsUtils.pktoolsPath(), self.cliName()) + '"'
+        commands = [cliPath]
+
+        input=self.getParameterValue(self.INPUT)
+        if input != "":
+            commands.append('-i')
+            commands.append('"' + input + '"')
+
+        method=self.METHOD_OPTIONS[self.getParameterValue(self.METHOD)]
+        if method != "none":
+            commands.append("-f")
+            commands.append(method)
+        commands.append("-pad")
+        commands.append(self.PADDING_OPTIONS[self.getParameterValue(self.PADDING)])
+
+        if self.TYPE[self.getParameterValue(self.RTYPE)] != "none":
+            commands.append('-ot')
+            commands.append(self.TYPE[self.getParameterValue(self.RTYPE)])
+        output=self.getOutputValue(self.OUTPUT)
+        if output != "":
+            commands.append("-o")
+            commands.append('"' + output + '"')
+
+        if self.getParameterValue(self.DIM) != 0:
+            commands.append("-dx")
+            commands.append(str(self.getParameterValue(self.DIM)))
+            commands.append("-dy")
+            commands.append(str(self.getParameterValue(self.DIM)))
+        nodata=self.getParameterValue(self.NODATA)
+        if nodata != "none":
+            nodataValues = nodata.split(';')
+            for nodataValue in nodataValues:
+                commands.append('-nodata')
+                commands.append(nodataValue)
+        extra = str(self.getParameterValue(self.EXTRA))
+        if len(extra) > 0:
+            commands.append(extra)
+
+        pktoolsUtils.runpktools(commands, progress)
diff --git a/qgis/pkfilter_spectral.py b/qgis/pkfilter_spectral.py
new file mode 100644
index 0000000..f096f35
--- /dev/null
+++ b/qgis/pkfilter_spectral.py
@@ -0,0 +1,106 @@
+# -*- coding: utf-8 -*-
+
+"""
+***************************************************************************
+    pkfilter_spectral.py
+    ---------------------
+    Date                 : April 2015
+    Copyright            : (C) 2015 by Pieter Kempeneers
+    Email                : kempenep at gmail dot com
+***************************************************************************
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+***************************************************************************
+"""
+
+__author__ = 'Pieter Kempeneers'
+__date__ = 'April 2015'
+__copyright__ = '(C) 2015, Pieter Kempeneers'
+# This will get replaced with a git SHA1 when you do a git archive
+__revision__ = '$Format:%H$'
+
+import os
+from pktoolsUtils import pktoolsUtils
+from pktoolsAlgorithm import pktoolsAlgorithm
+from processing.core.parameters import ParameterMultipleInput
+from processing.core.parameters import ParameterRaster
+from processing.core.outputs import OutputRaster
+from processing.core.parameters import ParameterSelection
+from processing.core.parameters import ParameterNumber
+from processing.core.parameters import ParameterString
+from processing.core.parameters import ParameterBoolean
+from processing.core.parameters import ParameterExtent
+
+class pkfilter_spectral(pktoolsAlgorithm):
+
+    INPUT = "INPUT"
+    OUTPUT = "OUTPUT"
+    METHOD_OPTIONS = ["none", "median", "var", "min", "max", "sum", "mean", "dilate", "erode", "close", "open", "smooth", "density", "smoothnodata  values", "threshold local filtering", "stdev", "dwt", "dwti", "dwt_cut", "dwt_cut_from", "savgolay", "percentile"]
+    METHOD = "METHOD"
+    DZ = "DZ"
+    NODATA = "NODATA"
+    PADDING_OPTIONS = ["symmetric", "replicate", "circular", "zero"]
+    PADDING = "PADDING"
+    RTYPE = 'RTYPE'
+    TYPE = ['none', 'Byte','Int16','UInt16','UInt32','Int32','Float32','Float64','CInt16','CInt32','CFloat32','CFloat64']
+    EXTRA = 'EXTRA'
+
+    def cliName(self):
+        return "pkfilter"
+
+    def defineCharacteristics(self):
+        self.name = "spectral/temporal filter"
+        self.group = "[pktools] filter"
+        self.addParameter(ParameterRaster(self.INPUT, 'Input layer raster data set',ParameterRaster))
+        self.addParameter(ParameterSelection(self.METHOD,"filter rule",self.METHOD_OPTIONS, 0))
+        self.addOutput(OutputRaster(self.OUTPUT, "Output raster data set"))
+        self.addParameter(ParameterSelection(self.RTYPE, 'Output raster type (leave as none to keep original type)', self.TYPE, 0))
+        self.addParameter(ParameterNumber(self.DZ, "Filter kernel size",0.0,None,1.0))
+        #for smooth nodata:
+        self.addParameter(ParameterString(self.NODATA, "nodata value to smooth(e.g., 0;255)","none"))
+        self.addParameter(ParameterSelection(self.PADDING,"Padding (edge effects)",self.PADDING_OPTIONS, 0))
+        self.addParameter(ParameterString(self.EXTRA,
+                          'Additional parameters', '-of GTiff', optional=True))
+
+    def processAlgorithm(self, progress):
+        cliPath = '"' + os.path.join(pktoolsUtils.pktoolsPath(), self.cliName()) + '"'
+        commands = [cliPath]
+
+        input=self.getParameterValue(self.INPUT)
+        if input != "":
+            commands.append('-i')
+            commands.append('"' + input + '"')
+
+        method=self.METHOD_OPTIONS[self.getParameterValue(self.METHOD)]
+        if method != "none":
+            commands.append("-f")
+            commands.append(method)
+        commands.append("-pad")
+        commands.append(self.PADDING_OPTIONS[self.getParameterValue(self.PADDING)])
+
+        if self.TYPE[self.getParameterValue(self.RTYPE)] != "none":
+            commands.append('-ot')
+            commands.append(self.TYPE[self.getParameterValue(self.RTYPE)])
+        output=self.getOutputValue(self.OUTPUT)
+        if output != "":
+            commands.append("-o")
+            commands.append('"' + output + '"')
+
+        if self.getParameterValue(self.DZ) != 0:
+            commands.append("-dz")
+            commands.append(str(self.getParameterValue(self.DZ)))
+        nodata=self.getParameterValue(self.NODATA)
+        if nodata != "none":
+            nodataValues = nodata.split(';')
+            for nodataValue in nodataValues:
+                commands.append('-nodata')
+                commands.append(nodataValue)
+        extra = str(self.getParameterValue(self.EXTRA))
+        if len(extra) > 0:
+            commands.append(extra)
+
+        pktoolsUtils.runpktools(commands, progress)
diff --git a/qgis/pkfilterdem.py b/qgis/pkfilterdem.py
new file mode 100644
index 0000000..d804f94
--- /dev/null
+++ b/qgis/pkfilterdem.py
@@ -0,0 +1,95 @@
+# -*- coding: utf-8 -*-
+
+"""
+***************************************************************************
+    pkfilterdem.py
+    ---------------------
+    Date                 : April 2015
+    Copyright            : (C) 2015 by Pieter Kempeneers
+    Email                : kempenep at gmail dot com
+***************************************************************************
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+***************************************************************************
+"""
+
+__author__ = 'Pieter Kempeneers'
+__date__ = 'April 2015'
+__copyright__ = '(C) 2015, Pieter Kempeneers'
+# This will get replaced with a git SHA1 when you do a git archive
+__revision__ = '$Format:%H$'
+
+import os
+from pktoolsUtils import pktoolsUtils
+from pktoolsAlgorithm import pktoolsAlgorithm
+from processing.core.parameters import ParameterMultipleInput
+from processing.core.parameters import ParameterRaster
+from processing.core.parameters import ParameterFile
+from processing.core.outputs import OutputRaster
+from processing.core.parameters import ParameterSelection
+from processing.core.parameters import ParameterNumber
+from processing.core.parameters import ParameterString
+from processing.core.parameters import ParameterBoolean
+from processing.core.parameters import ParameterExtent
+
+class pkfilterdem(pktoolsAlgorithm):
+
+    INPUT = "INPUT"
+    OUTPUT = "OUTPUT"
+    DIM = "DIM"
+    RTYPE = 'RTYPE'
+    TYPE = ['Float32','Byte','Int16','UInt16','UInt32','Int32','Float64','CInt16','CInt32','CFloat32','CFloat64']
+    FILTER_OPTIONS = ["promorph"]
+    FILTER = "FILTER"
+    EXTRA = 'EXTRA'
+
+    def cliName(self):
+        return "pkfilterdem"
+
+    def defineCharacteristics(self):
+        self.name = "Create DTM from DEM raster dataset)"
+        self.group = "[pktools] LiDAR"
+
+        self.addParameter(ParameterRaster(self.INPUT, 'Input layer raster data set',ParameterRaster))
+        self.addParameter(ParameterSelection(self.FILTER,"filter",self.FILTER_OPTIONS, 0))
+        self.addParameter(ParameterNumber(self.DIM, "maximum filter kernel size",3,None,17))
+
+        self.addOutput(OutputRaster(self.OUTPUT, "Output raster data set"))
+        self.addParameter(ParameterSelection(self.RTYPE, 'Output raster type', self.TYPE, 0))
+        self.addParameter(ParameterString(self.EXTRA,
+                          'Additional parameters', '-of GTiff', optional=True))
+
+    def processAlgorithm(self, progress):
+        cliPath = '"' + os.path.join(pktoolsUtils.pktoolsPath(), self.cliName()) + '"'
+        commands = [cliPath]
+
+        input=self.getParameterValue(self.INPUT)
+        if input != "":
+            commands.append('-i')
+            commands.append('"' + input + '"')
+
+        filter=self.FILTER_OPTIONS[self.getParameterValue(self.FILTER)]
+        if filter != "none":
+            commands.append("-f")
+            commands.append(filter)
+        if self.getParameterValue(self.DIM) != 0:
+            commands.append("-dim")
+            commands.append(str(self.getParameterValue(self.DIM)))
+
+        if self.TYPE[self.getParameterValue(self.RTYPE)] != "none":
+            commands.append('-ot')
+            commands.append(self.TYPE[self.getParameterValue(self.RTYPE)])
+        output=self.getOutputValue(self.OUTPUT)
+        if output != "":
+            commands.append("-o")
+            commands.append('"' + output + '"')
+
+        extra = str(self.getParameterValue(self.EXTRA))
+        if len(extra) > 0:
+            commands.append(extra)
+
+        pktoolsUtils.runpktools(commands, progress)
diff --git a/qgis/pkgetmask.py b/qgis/pkgetmask.py
new file mode 100644
index 0000000..9783b41
--- /dev/null
+++ b/qgis/pkgetmask.py
@@ -0,0 +1,124 @@
+# -*- coding: utf-8 -*-
+
+"""
+***************************************************************************
+    pkgetmask.py
+    ---------------------
+    Date                 : April 2015
+    Copyright            : (C) 2015 by Pieter Kempeneers
+    Email                : kempenep at gmail dot com
+***************************************************************************
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+***************************************************************************
+"""
+
+__author__ = 'Pieter Kempeneers'
+__date__ = 'April 2015'
+__copyright__ = '(C) 2015, Pieter Kempeneers'
+# This will get replaced with a git SHA1 when you do a git archive
+__revision__ = '$Format:%H$'
+
+import os
+from pktoolsUtils import pktoolsUtils
+from pktoolsAlgorithm import pktoolsAlgorithm
+from processing.core.parameters import ParameterMultipleInput
+from processing.core.parameters import ParameterRaster
+from processing.core.outputs import OutputRaster
+from processing.core.parameters import ParameterSelection
+from processing.core.parameters import ParameterNumber
+from processing.core.parameters import ParameterString
+from processing.core.parameters import ParameterBoolean
+from processing.core.parameters import ParameterExtent
+
+class pkgetmask(pktoolsAlgorithm):
+
+    INPUT = "INPUT"
+    BAND = "BAND"
+    MIN = "MIN"
+    MAX = "MAX"
+    OPERATOR_OPTIONS = ["OR", "AND"]
+    OPERATOR = "OPERATOR"
+    DATA = "DATA"
+    NODATA = "NODATA"
+    OUTPUT = "OUTPUT"
+    RTYPE = 'RTYPE'
+    TYPE = ['none', 'Byte','Int16','UInt16','UInt32','Int32','Float32','Float64','CInt16','CInt32','CFloat32','CFloat64']
+    EXTRA = 'EXTRA'
+
+    def cliName(self):
+        return "pkgetmask"
+
+    def defineCharacteristics(self):
+        self.name = "create mask from raster dataset"
+        self.group = "[pktools] raster"
+        self.addParameter(ParameterRaster(self.INPUT, 'Input layer raster data set',ParameterRaster))
+        self.addParameter(ParameterString(self.BAND, "Band(s) used for mask (e.g., 0;1)","0"))
+        self.addParameter(ParameterString(self.MIN, "Minimum valid value (one value per band)","none"))
+        self.addParameter(ParameterString(self.MAX, "Maximum valid value (one value per band)","none"))
+        self.addParameter(ParameterSelection(self.OPERATOR,"getmask rule",self.OPERATOR_OPTIONS, 0))
+        self.addParameter(ParameterString(self.DATA, "write value(s) for valid pixels (e.g., 0;255)","1"))
+        self.addParameter(ParameterString(self.NODATA, "write value(s) for invalid pixels","0"))
+        self.addOutput(OutputRaster(self.OUTPUT, "Output raster data set"))
+        self.addParameter(ParameterSelection(self.RTYPE, 'Output raster type (leave as none to keep original type)', self.TYPE, 0))
+        self.addParameter(ParameterString(self.EXTRA,
+                          'Additional parameters', '-of GTiff', optional=True))
+
+    def processAlgorithm(self, progress):
+        cliPath = '"' + os.path.join(pktoolsUtils.pktoolsPath(), self.cliName()) + '"'
+        commands = [cliPath]
+
+        input=self.getParameterValue(self.INPUT)
+        commands.append('-i')
+        commands.append('"' + input + '"')
+
+        band=self.getParameterValue(self.BAND)
+        bandValues = band.split(';')
+        for bandValue in bandValues:
+            commands.append('-band')
+            commands.append(bandValue)
+        min=self.getParameterValue(self.MIN)
+        if min != "none":
+            minValues = min.split(';')
+            for minValue in minValues:
+                commands.append('-min')
+                commands.append(minValue)
+        max=self.getParameterValue(self.MAX)
+        if max != "none":
+            maxValues = max.split(';')
+            for maxValue in maxValues:
+                commands.append('-max')
+                commands.append(maxValue)
+        commands.append("-p")
+        commands.append(self.OPERATOR_OPTIONS[self.getParameterValue(self.OPERATOR)])
+        data=self.getParameterValue(self.DATA)
+        if data != "none":
+            dataValues = data.split(';')
+            for dataValue in dataValues:
+                commands.append('-data')
+                commands.append(dataValue)
+        nodata=self.getParameterValue(self.NODATA)
+        if nodata != "none":
+            nodataValues = nodata.split(';')
+            for nodataValue in nodataValues:
+                commands.append('-nodata')
+                commands.append(nodataValue)
+        if self.TYPE[self.getParameterValue(self.RTYPE)] != "none":
+            commands.append('-ot')
+            commands.append(self.TYPE[self.getParameterValue(self.RTYPE)])
+        output=self.getOutputValue(self.OUTPUT)
+        if output != "":
+            commands.append("-o")
+            commands.append('"' + output + '"')
+
+        data=self.getParameterValue(self.DATA)
+
+        extra = str(self.getParameterValue(self.EXTRA))
+        if len(extra) > 0:
+            commands.append(extra)
+
+        pktoolsUtils.runpktools(commands, progress)
diff --git a/qgis/pklas2img.py b/qgis/pklas2img.py
new file mode 100644
index 0000000..daef4a0
--- /dev/null
+++ b/qgis/pklas2img.py
@@ -0,0 +1,131 @@
+# -*- coding: utf-8 -*-
+
+"""
+***************************************************************************
+    pklas2img.py
+    ---------------------
+    Date                 : April 2015
+    Copyright            : (C) 2015 by Pieter Kempeneers
+    Email                : kempenep at gmail dot com
+***************************************************************************
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+***************************************************************************
+"""
+
+__author__ = 'Pieter Kempeneers'
+__date__ = 'April 2015'
+__copyright__ = '(C) 2015, Pieter Kempeneers'
+# This will get replaced with a git SHA1 when you do a git archive
+__revision__ = '$Format:%H$'
+
+import os
+from pktoolsUtils import pktoolsUtils
+from pktoolsAlgorithm import pktoolsAlgorithm
+from processing.core.parameters import ParameterMultipleInput
+from processing.core.parameters import ParameterRaster
+from processing.core.parameters import ParameterFile
+from processing.core.outputs import OutputRaster
+from processing.core.parameters import ParameterSelection
+from processing.core.parameters import ParameterNumber
+from processing.core.parameters import ParameterString
+from processing.core.parameters import ParameterBoolean
+from processing.core.parameters import ParameterExtent
+
+class pklas2img(pktoolsAlgorithm):
+
+    INPUT = "INPUT"
+    OUTPUT = "OUTPUT"
+    ATTRIBUTE_OPTIONS = ["z","intensity", "return", "nreturn"]
+    COMPOSITE_OPTIONS = ["last", "min", "max", "absmin", "absmax", "median", "mean", "sum", "first", "profile", "percentile", "height", "values", "percentile", "number"]
+    FILTER_OPTIONS = ["all","first","last","single","multiple"]
+
+    ATTRIBUTE = "ATTRIBUTE"
+    COMPOSITE = "COMPOSITE"
+    FILTER = "FILTER"
+
+    PERCENTILE = "PERCENTILE"
+    DX = "DX"
+    DY = "DY"
+#    PROJWIN = 'PROJWIN'
+    NODATA = "NODATA"
+    RTYPE = 'RTYPE'
+    TYPE = ['Float32','Byte','Int16','UInt16','UInt32','Int32','Float64','CInt16','CInt32','CFloat32','CFloat64']
+    EXTRA = 'EXTRA'
+
+    def cliName(self):
+        return "pklas2img"
+
+    def defineCharacteristics(self):
+        self.name = "Create raster dataset from LAS(Z) data point cloud(s)"
+        self.group = "[pktools] LiDAR"
+
+        self.addParameter(ParameterFile(self.INPUT, "Input LAS(Z) data set(s)", False, False))
+
+        self.addParameter(ParameterSelection(self.ATTRIBUTE,"name of the point attribute to select",self.ATTRIBUTE_OPTIONS, 0))
+        self.addParameter(ParameterSelection(self.COMPOSITE,"composite for multiple points in cell",self.COMPOSITE_OPTIONS, 0))
+        self.addParameter(ParameterSelection(self.FILTER,"filter las points",self.FILTER_OPTIONS, 0))
+        self.addOutput(OutputRaster(self.OUTPUT, "Output raster data set"))
+        self.addParameter(ParameterSelection(self.RTYPE, 'Output raster type', self.TYPE, 0))
+        self.addParameter(ParameterNumber(self.PERCENTILE, "Percentile value used for rule percentile",0.0,100.0,95))
+        self.addParameter(ParameterNumber(self.DX, "Output resolution in x",0.0,None,1.0))
+        self.addParameter(ParameterNumber(self.DY, "Output resolution in y",0.0,None,1.0))
+        # self.addParameter(ParameterExtent(self.PROJWIN,
+        #                   'Georeferenced boundingbox'))
+        self.addParameter(ParameterNumber(self.NODATA, "nodata value to put in image",0,None,0))
+        self.addParameter(ParameterString(self.EXTRA,
+                          'Additional parameters', '-of GTiff', optional=True))
+
+    def processAlgorithm(self, progress):
+        cliPath = '"' + os.path.join(pktoolsUtils.pktoolsPath(), self.cliName()) + '"'
+        commands = [cliPath]
+
+        input=self.getParameterValue(self.INPUT)
+        inputFiles = input.split(';')
+        for inputFile in inputFiles:
+            commands.append('-i')
+            commands.append('"' + inputFile + '"')
+
+        if self.TYPE[self.getParameterValue(self.RTYPE)] != "none":
+            commands.append('-ot')
+            commands.append(self.TYPE[self.getParameterValue(self.RTYPE)])
+
+        output=self.getOutputValue(self.OUTPUT)
+        if output != "":
+            commands.append("-o")
+            commands.append('"' + output + '"')
+
+        commands.append("-n")
+        commands.append(self.ATTRIBUTE_OPTIONS[self.getParameterValue(self.ATTRIBUTE)])
+        commands.append("-comp")
+        commands.append(self.COMPOSITE_OPTIONS[self.getParameterValue(self.COMPOSITE)])
+        commands.append("-fir")
+        commands.append(self.FILTER_OPTIONS[self.getParameterValue(self.FILTER)])
+        if self.getParameterValue(self.DX) != 0:
+            commands.append("-dx")
+            commands.append(str(self.getParameterValue(self.DX)))
+        if self.getParameterValue(self.DY) != 0:
+            commands.append("-dy")
+            commands.append(str(self.getParameterValue(self.DY)))
+        #projwin = str(self.getParameterValue(self.PROJWIN))
+        # regionCoords = projwin.split(',')
+        # commands.append('-ulx')
+        # commands.append(regionCoords[0])
+        # commands.append('-uly')
+        # commands.append(regionCoords[3])
+        # commands.append('-lrx')
+        # commands.append(regionCoords[1])
+        # commands.append('-lry')
+        # commands.append(regionCoords[2])
+        commands.append('-nodata')
+        commands.append(str(self.getParameterValue(self.NODATA)))
+
+        extra = str(self.getParameterValue(self.EXTRA))
+        if len(extra) > 0:
+            commands.append(extra)
+
+        pktoolsUtils.runpktools(commands, progress)
diff --git a/qgis/pkreclass.py b/qgis/pkreclass.py
new file mode 100644
index 0000000..e3ab600
--- /dev/null
+++ b/qgis/pkreclass.py
@@ -0,0 +1,124 @@
+# -*- coding: utf-8 -*-
+
+"""
+***************************************************************************
+    pkreclass.py
+    ---------------------
+    Date                 : April 2015
+    Copyright            : (C) 2015 by Pieter Kempeneers
+    Email                : kempenep at gmail dot com
+***************************************************************************
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+***************************************************************************
+"""
+
+__author__ = 'Pieter Kempeneers'
+__date__ = 'April 2015'
+__copyright__ = '(C) 2015, Pieter Kempeneers'
+# This will get replaced with a git SHA1 when you do a git archive
+__revision__ = '$Format:%H$'
+
+import os
+from pktoolsUtils import pktoolsUtils
+from pktoolsAlgorithm import pktoolsAlgorithm
+from processing.core.parameters import ParameterMultipleInput
+from processing.core.parameters import ParameterRaster
+from processing.core.outputs import OutputRaster
+from processing.core.parameters import ParameterSelection
+from processing.core.parameters import ParameterNumber
+from processing.core.parameters import ParameterString
+from processing.core.parameters import ParameterBoolean
+from processing.core.parameters import ParameterExtent
+
+class pkreclass(pktoolsAlgorithm):
+
+    INPUT = "INPUT"
+    OUTPUT = "OUTPUT"
+    CLASS = "CLASS"
+    BAND = "BAND"
+    RECLASS = "RECLASS"
+    MASK = "MASK"
+    MSKNODATA = "MSKNODATA"
+    NODATA = "NODATA"
+    RTYPE = 'RTYPE'
+    TYPE = ['none', 'Byte','Int16','UInt16','UInt32','Int32','Float32','Float64','CInt16','CInt32','CFloat32','CFloat64']
+    EXTRA = 'EXTRA'
+
+    def cliName(self):
+        return "pkreclass"
+
+    def defineCharacteristics(self):
+        self.name = "reclass raster datasets"
+        self.group = "[pktools] raster"
+        self.addParameter(ParameterMultipleInput(self.INPUT, 'Input layer raster data set',ParameterMultipleInput.TYPE_RASTER))
+        self.addOutput(OutputRaster(self.OUTPUT, "Output raster data set"))
+        self.addParameter(ParameterString(self.BAND, "Band index(es) to replace, e.g., 0;1;2 (other bands are copied to output)", '0'))
+        self.addParameter(ParameterRaster(self.MASK, "Mask raster dataset",optional=True))
+        self.addParameter(ParameterString(self.MSKNODATA, "Mask value(s) not to consider for classification (e.g., 0;255)","0"))
+        self.addParameter(ParameterString(self.CLASS, "list of classes to reclass, in combination with reclass option, e.g., 0;1;2;3",""))
+        self.addParameter(ParameterString(self.RECLASS, "list of recoded classes, in combination with class option e.g., 10;11;12;13",""))
+        self.addParameter(ParameterNumber(self.NODATA, "nodata value to put in image if not valid",0,None,0))
+
+        self.addParameter(ParameterSelection(self.RTYPE, 'Output raster type (leave as none to keep original type)', self.TYPE, 0))
+        self.addParameter(ParameterString(self.EXTRA,
+                          'Additional parameters', '-of GTiff', optional=True))
+
+    def processAlgorithm(self, progress):
+        cliPath = '"' + os.path.join(pktoolsUtils.pktoolsPath(), self.cliName()) + '"'
+        commands = [cliPath]
+
+        input=self.getParameterValue(self.INPUT)
+        commands.append('-i')
+        commands.append('"' + input + '"')
+
+        if self.TYPE[self.getParameterValue(self.RTYPE)] != "none":
+            commands.append('-ot')
+            commands.append(self.TYPE[self.getParameterValue(self.RTYPE)])
+
+        output=self.getOutputValue(self.OUTPUT)
+        commands.append("-o")
+        commands.append('"' + output + '"')
+
+        commands.append('-nodata')
+        commands.append(str(self.getParameterValue(self.NODATA)))
+        
+        band=str(self.getParameterValue(self.BAND))
+        if band != '':
+            bandValues = band.split(';')
+            for bandValue in bandValues:
+                commands.append('-b')
+                commands.append(bandValue)
+
+        theclass=str(self.getParameterValue(self.CLASS))
+        if theclass != '':
+            classValues = theclass.split(';')
+            for classValue in classValues:
+                commands.append('-c')
+                commands.append(classValue)
+        reclass=str(self.getParameterValue(self.RECLASS))
+        if reclass != '':
+            reclassValues = reclass.split(';')
+            for reclassValue in reclassValues:
+                commands.append('-r')
+                commands.append(reclassValue)
+
+        mask = str(self.getParameterValue(self.MASK))
+        if mask != "None":
+            commands.append('-m')
+            commands.append(mask)
+            msknodata=str(self.getParameterValue(self.MSKNODATA))
+            msknodataValues = msknodata.split(';')
+            for msknodataValue in msknodataValues:
+                commands.append('-msknodata')
+                commands.append(msknodataValue)
+
+        extra = str(self.getParameterValue(self.EXTRA))
+        if len(extra) > 0:
+            commands.append(extra)
+
+        pktoolsUtils.runpktools(commands, progress)
diff --git a/qgis/pksetmask.py b/qgis/pksetmask.py
new file mode 100644
index 0000000..03eedcb
--- /dev/null
+++ b/qgis/pksetmask.py
@@ -0,0 +1,113 @@
+# -*- coding: utf-8 -*-
+
+"""
+***************************************************************************
+    pksetmask.py
+    ---------------------
+    Date                 : April 2015
+    Copyright            : (C) 2015 by Pieter Kempeneers
+    Email                : kempenep at gmail dot com
+***************************************************************************
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+***************************************************************************
+"""
+
+__author__ = 'Pieter Kempeneers'
+__date__ = 'April 2015'
+__copyright__ = '(C) 2015, Pieter Kempeneers'
+# This will get replaced with a git SHA1 when you do a git archive
+__revision__ = '$Format:%H$'
+
+import os
+from pktoolsUtils import pktoolsUtils
+from pktoolsAlgorithm import pktoolsAlgorithm
+from processing.core.parameters import ParameterMultipleInput
+from processing.core.parameters import ParameterRaster
+from processing.core.outputs import OutputRaster
+from processing.core.parameters import ParameterSelection
+from processing.core.parameters import ParameterNumber
+from processing.core.parameters import ParameterString
+from processing.core.parameters import ParameterBoolean
+from processing.core.parameters import ParameterExtent
+
+class pksetmask(pktoolsAlgorithm):
+
+    INPUT = "INPUT"
+    MASK = "MASK"
+    MSKNODATA = "MSKNODATA"
+    MSKBAND = "MSKBAND"
+    OPERATOR_OPTIONS = ["=","<",">","!"]
+    OPERATOR = "OPERATOR"
+    NODATA = "NODATA"
+    OUTPUT = "OUTPUT"
+    RTYPE = 'RTYPE'
+    TYPE = ['none', 'Byte','Int16','UInt16','UInt32','Int32','Float32','Float64','CInt16','CInt32','CFloat32','CFloat64']
+    EXTRA = 'EXTRA'
+
+    def cliName(self):
+        return "pksetmask"
+
+    def defineCharacteristics(self):
+        self.name = "apply mask to raster dataset"
+        self.group = "[pktools] raster"
+        self.addParameter(ParameterRaster(self.INPUT, 'Input layer raster data set',ParameterRaster))
+        self.addParameter(ParameterMultipleInput(self.MASK, 'Mask(s) to apply',ParameterMultipleInput.TYPE_RASTER))
+        self.addParameter(ParameterString(self.MSKNODATA, "Mask value(s), provide value for each mask (e.g., 250;255)","1"))
+        self.addParameter(ParameterString(self.MSKBAND, "Mask band(s) to read, provide band for each mask (e.g., 0;1)","0"))
+        self.addParameter(ParameterSelection(self.OPERATOR,"setmask rule",self.OPERATOR_OPTIONS, 0))
+        self.addParameter(ParameterString(self.NODATA, "nodata value to put in image if not valid","0"))
+        self.addOutput(OutputRaster(self.OUTPUT, "Output raster data set"))
+        self.addParameter(ParameterSelection(self.RTYPE, 'Output raster type (leave as none to keep original type)', self.TYPE, 0))
+        self.addParameter(ParameterString(self.EXTRA,
+                          'Additional parameters', '-of GTiff', optional=True))
+
+    def processAlgorithm(self, progress):
+        cliPath = '"' + os.path.join(pktoolsUtils.pktoolsPath(), self.cliName()) + '"'
+        commands = [cliPath]
+
+        input=self.getParameterValue(self.INPUT)
+        commands.append('-i')
+        commands.append('"' + input + '"')
+
+        mask=self.getParameterValue(self.MASK)
+        maskFiles = mask.split(';')
+        for maskFile in maskFiles:
+            commands.append('-m')
+            commands.append(maskFile)
+
+        commands.append(str(self.getParameterValue(self.MSKBAND)))
+        mskband=self.getParameterValue(self.MSKBAND)
+        mskbandValues = mskband.split(';')
+        for mskbandValue in mskbandValues:
+                commands.append('-mskband')
+                commands.append(mskbandValue)
+        commands.append(str(self.getParameterValue(self.MSKNODATA)))
+        msknodata=self.getParameterValue(self.MSKNODATA)
+        msknodataValues = msknodata.split(';')
+        for msknodataValue in msknodataValues:
+                commands.append('-msknodata')
+                commands.append(msknodataValue)
+
+        commands.append("-p")
+        commands.append(self.OPERATOR_OPTIONS[self.getParameterValue(self.OPERATOR)])
+        nodata=self.getParameterValue(self.NODATA)
+        commands.append('-nodata')
+        commands.append(nodata)
+        if self.TYPE[self.getParameterValue(self.RTYPE)] != "none":
+            commands.append('-ot')
+            commands.append(self.TYPE[self.getParameterValue(self.RTYPE)])
+        output=self.getOutputValue(self.OUTPUT)
+        if output != "":
+            commands.append("-o")
+            commands.append('"' + output + '"')
+
+        extra = str(self.getParameterValue(self.EXTRA))
+        if len(extra) > 0:
+            commands.append(extra)
+
+        pktoolsUtils.runpktools(commands, progress)
diff --git a/qgis/pksvm.py b/qgis/pksvm.py
new file mode 100644
index 0000000..5902827
--- /dev/null
+++ b/qgis/pksvm.py
@@ -0,0 +1,129 @@
+# -*- coding: utf-8 -*-
+
+"""
+***************************************************************************
+    pksvm.py
+    ---------------------
+    Date                 : April 2015
+    Copyright            : (C) 2015 by Pieter Kempeneers
+    Email                : kempenep at gmail dot com
+***************************************************************************
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+***************************************************************************
+"""
+
+__author__ = 'Pieter Kempeneers'
+__date__ = 'April 2015'
+__copyright__ = '(C) 2015, Pieter Kempeneers'
+# This will get replaced with a git SHA1 when you do a git archive
+__revision__ = '$Format:%H$'
+
+import os
+from pktoolsUtils import pktoolsUtils
+from pktoolsAlgorithm import pktoolsAlgorithm
+from processing.core.parameters import ParameterMultipleInput
+from processing.core.parameters import ParameterVector
+from processing.core.parameters import ParameterRaster
+from processing.core.outputs import OutputRaster
+from processing.core.parameters import ParameterSelection
+from processing.core.parameters import ParameterFile
+from processing.core.parameters import ParameterNumber
+from processing.core.parameters import ParameterString
+from processing.core.parameters import ParameterBoolean
+from processing.core.parameters import ParameterExtent
+
+class pksvm(pktoolsAlgorithm):
+
+    INPUT = "INPUT"
+    TRAINING = "TRAINING"
+    ITERATE = "ITERATE"
+    LABEL = "LABEL"
+#    CV = "CV"
+    GAMMA = "GAMMA"
+    COST = "COST"
+    OUTPUT = "OUTPUT"
+    MASK = "MASK"
+    MSKNODATA = "MSKNODATA"
+#    NODATA = "NODATA"
+
+#    SVM_TYPE_OPTIONS = ["C_SVC", "nu_SVC,one_class", "epsilon_SVR", "nu_SVR"]
+#    KERNEL_TYPE_OPTIONS = ["linear", "polynomial", "radial", "sigmoid"]
+    EXTRA = 'EXTRA'
+
+    def cliName(self):
+        return "pksvm"
+
+    def defineCharacteristics(self):
+        self.name = "Support vector machine"
+        self.group = "[pktools] supervised classification"
+        self.addParameter(ParameterRaster(self.INPUT, 'Input layer raster data set',ParameterRaster))
+        self.addParameter(ParameterVector(self.TRAINING, 'Training vector file.'))
+        self.addParameter(ParameterBoolean(self.ITERATE, "Iterate over all layers",True))
+        self.addParameter(ParameterString(self.LABEL, "Attribute name for class label in training vector file","label"))
+        self.addParameter(ParameterNumber(self.GAMMA, "Gamma in kernel function",0,100,1.0))
+        self.addParameter(ParameterNumber(self.COST, "The parameter C of C_SVC",0,100000,1000.0))
+        self.addParameter(ParameterFile(self.MASK, "Mask vector/raster dataset used for classification","None",optional=True))
+        self.addParameter(ParameterString(self.MSKNODATA, "Mask value(s) not to consider for classification (in case of raster mask, e.g., 0;255)","0"))
+        self.addOutput(OutputRaster(self.OUTPUT, "Output raster data set"))
+        self.addParameter(ParameterString(self.EXTRA,
+                          'Additional parameters', '-of GTiff', optional=True))
+
+#        self.addParameter(ParameterSelection(self.KERNEL_TYPE,"Type of kernel function (linear,polynomial,radial,sigmoid)",self.KERNEL_TYPE_OPTIONS, 2))
+#        self.addParameter(ParameterSelection(self.SVM_TYPE,"Type of SVM (C_SVC, nu_SVC,one_class, epsilon_SVR, nu_SVR)",self.SVM_TYPE_OPTIONS, 0))
+
+    def processAlgorithm(self, progress):
+        cliPath = '"' + os.path.join(pktoolsUtils.pktoolsPath(), self.cliName()) + '"'
+        commands = [cliPath]
+
+        input=self.getParameterValue(self.INPUT)
+        if input != "":
+            commands.append('-i')
+            commands.append('"' + input + '"')
+
+        commands.append('-t')
+        training=self.getParameterValue(self.TRAINING)
+
+        if(str(training).find('|')>0):
+            if self.getParameterValue(self.ITERATE):
+                trainingname=str(training)
+                commands.append(trainingname[:trainingname.find('|')])
+            else:
+                trainingname=str(training).replace("|layername"," -ln")
+                commands.append(trainingname)
+        else:
+            commands.append(training)
+
+        commands.append('-label')
+        commands.append(str(self.getParameterValue(self.LABEL)))
+        # if self.getParameterValue(self.CV):
+        #     commands.append("-cv 2")
+        commands.append('-g')
+        commands.append(str(self.getParameterValue(self.GAMMA)))
+        commands.append('-cc')
+        commands.append(str(self.getParameterValue(self.COST)))
+
+        mask = str(self.getParameterValue(self.MASK))
+        if mask != "":
+            commands.append('-m')
+            commands.append(mask)
+            msknodata=str(self.getParameterValue(self.MSKNODATA))
+            msknodataValues = msknodata.split(';')
+            for msknodataValue in msknodataValues:
+                commands.append('-msknodata')
+                commands.append(msknodataValue)
+                
+        extra = str(self.getParameterValue(self.EXTRA))
+        if len(extra) > 0:
+            commands.append(extra)
+
+        output=self.getOutputValue(self.OUTPUT)
+        if output != "":
+            commands.append('-o')
+            commands.append('"' + output + '"')
+
+        pktoolsUtils.runpktools(commands, progress)
diff --git a/qgis/pktoolsAlgorithm.py b/qgis/pktoolsAlgorithm.py
new file mode 100644
index 0000000..6661b0d
--- /dev/null
+++ b/qgis/pktoolsAlgorithm.py
@@ -0,0 +1,56 @@
+# -*- coding: utf-8 -*-
+
+"""
+***************************************************************************
+    pktoolsAlgorithm.py
+    ---------------------
+    Date                 : April 2015
+    Copyright            : (C) 2015 by Pieter Kempeneers
+    Email                : kempenep at gmail dot com
+***************************************************************************
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+***************************************************************************
+"""
+
+__author__ = 'Pieter Kempeneers'
+__date__ = 'April 2015'
+__copyright__ = '(C) 2015, Pieter Kempeneers'
+# This will get replaced with a git SHA1 when you do a git archive
+__revision__ = '$Format:%H$'
+
+from processing.core.GeoAlgorithm import GeoAlgorithm
+
+import os
+from PyQt4 import QtGui
+from pktools.pktoolsUtils import pktoolsUtils
+
+from processing.core.parameters import ParameterFile
+from processing.core.parameters import ParameterBoolean
+from processing.core.parameters import ParameterNumber
+from processing.core.parameters import ParameterString
+from processing.core.parameters import ParameterSelection
+from processing.core.outputs import OutputFile
+from processing.core.outputs import OutputRaster
+from processing.core.outputs import OutputVector
+
+class pktoolsAlgorithm(GeoAlgorithm):
+
+    def getIcon(self):
+        filepath = os.path.dirname(__file__) + "/logo.png"
+        return QtGui.QIcon(filepath)
+
+    def checkBeforeOpeningParametersDialog(self):
+            path = pktoolsUtils.pktoolsPath()
+            if path == "":
+                return "pktools folder is not configured.\nPlease configure it before running pktools algorithms."
+    
+    def help(self):
+
+        #utilityName=self.__class__.__name__
+        helpUrl = 'http://pktools.nongnu.org/html/{}.html'.format(self.cliName())
+        return False, helpUrl        
diff --git a/qgis/pktoolsAlgorithmProvider.py b/qgis/pktoolsAlgorithmProvider.py
new file mode 100644
index 0000000..74337fc
--- /dev/null
+++ b/qgis/pktoolsAlgorithmProvider.py
@@ -0,0 +1,120 @@
+# -*- coding: utf-8 -*-
+
+"""
+***************************************************************************
+    pktoolsAlgorithmProvider.py
+    ---------------------
+    Date                 : April 2015
+    Copyright            : (C) 2015 by Pieter Kempeneers
+    Email                : kempenep at gmail dot com
+***************************************************************************
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+***************************************************************************
+"""
+
+__author__ = 'Pieter Kempeneers'
+__date__ = 'April 2015'
+__copyright__ = '(C) 2015, Pieter Kempeneers'
+# This will get replaced with a git SHA1 when you do a git archive
+__revision__ = '$Format:%H$'
+
+
+#from pktools.ExampleAlgorithm import ExampleAlgorithm
+#raster utilities
+from pktools.pkcomposite import pkcomposite
+from pktools.pkcrop import pkcrop
+from pktools.pkreclass import pkreclass
+from pktools.pkgetmask import pkgetmask
+from pktools.pksetmask import pksetmask
+#raster/vector utilities
+from pktools.pkextract import pkextract
+from pktools.pkextract_grid import pkextract_grid
+from pktools.pkextract_random import pkextract_random
+#Supervised classification utilities
+from pktools.pksvm import pksvm
+from pktools.pkdiff_accuracy import pkdiff_accuracy
+#LiDAR utilities
+from pktools.pklas2img import pklas2img
+from pktools.pkfilterdem import pkfilterdem
+#filter utilities
+from pktools.pkfilter_spectral import pkfilter_spectral
+from pktools.pkfilter_spatial import pkfilter_spatial
+
+from processing.core.AlgorithmProvider import AlgorithmProvider
+from processing.core.ProcessingConfig import Setting, ProcessingConfig
+import os
+from PyQt4 import QtGui
+from pktools.pktoolsUtils import pktoolsUtils
+
+
+class pktoolsAlgorithmProvider(AlgorithmProvider):
+
+    MY_DUMMY_SETTING = "MY_DUMMY_SETTING"
+
+    def __init__(self):
+        AlgorithmProvider.__init__(self)
+        # deactivate provider by default
+        self.activate = True
+        # load algorithms
+#        self.alglist = [pkinfo()]
+        self.alglist = [pkreclass(),pkcrop(),pkcomposite(),pkgetmask(),pksetmask(),pkextract(),pkextract_grid(),pkextract_random(),pksvm(),pkdiff_accuracy(),pklas2img(),pkfilterdem(),pkfilter_spectral(),pkfilter_spatial()]
+        # pktools = [pkinfo()]
+        # for alg in pktools:
+        #     alg.group = "pktools"
+        #     self.alglist.extend(pktools)
+        for alg in self.alglist:
+            alg.provider = self
+
+    def initializeSettings(self):
+        '''In this method we add settings needed to configure our provider.
+        Do not forget to call the parent method, since it takes care or
+        automatically adding a setting for activating or deactivating the
+        algorithms in the provider
+        '''
+        AlgorithmProvider.initializeSettings(self)
+        ProcessingConfig.addSetting(Setting(self.getDescription(), pktoolsUtils.PKTOOLS_FOLDER, "pktools folder", pktoolsUtils.pktoolsPath()))
+
+#        ProcessingConfig.addSetting(Setting("Example algorithms", pktoolsAlgorithmProvider.MY_DUMMY_SETTING, "Example setting", "Default value"))
+ #       '''To get the parameter of a setting parameter, use
+#        ProcessingConfig.getSetting(name_of_parameter)
+#        '''
+
+    def unload(self):
+        '''Setting should be removed here, so they do not appear anymore
+        when the plugin is unloaded'''
+        AlgorithmProvider.unload(self)
+        ProcessingConfig.removeSetting(pktoolsAlgorithmProvider.MY_DUMMY_SETTING)
+
+    def getName(self):
+        '''This is the name that will appear on the toolbox group.
+        It is also used to create the command line name of all the algorithms
+        from this provider
+        '''
+        return "pktools"
+
+    def getDescription(self):
+        '''This is the provired full name.
+        '''
+        return "Utilities for remote sensing image processing"
+
+    def getIcon(self):
+        filepath = os.path.dirname(__file__) + "/logo.png"
+        return QtGui.QIcon(filepath)
+
+    def _loadAlgorithms(self):
+        '''Here we fill the list of algorithms in self.algs.
+        This method is called whenever the list of algorithms should be updated.
+        If the list of algorithms can change
+        (for instance, if it contains algorithms from user-defined scripts and
+        a new script might have been added), you should create the list again
+        here.
+        In this case, since the list is always the same, we assign from the pre-made list.
+        This assignment has to be done in this method even if the list does not change,
+        since the self.algs list is cleared before calling this method
+        '''
+        self.algs = self.alglist
diff --git a/qgis/pktoolsUtils.py b/qgis/pktoolsUtils.py
new file mode 100644
index 0000000..4747e72
--- /dev/null
+++ b/qgis/pktoolsUtils.py
@@ -0,0 +1,90 @@
+# -*- coding: utf-8 -*-
+
+"""
+***************************************************************************
+    pktoolsUtils.py
+    ---------------------
+    Date                 : April 2015
+    Copyright            : (C) 2015 by Pieter Kempeneers
+    Email                : kempenep at gmail dot com
+***************************************************************************
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+*                                                                         *
+***************************************************************************
+"""
+
+__author__ = 'Pieter Kempeneers'
+__date__ = 'April 2015'
+__copyright__ = '(C) 2015, Pieter Kempeneers'
+# This will get replaced with a git SHA1 when you do a git archive
+__revision__ = '$Format:%H$'
+
+from PyQt4.QtCore import *
+from PyQt4.QtGui import *
+import os
+import subprocess
+from qgis.core import QgsApplication
+from processing.core.ProcessingLog import ProcessingLog
+from processing.core.ProcessingConfig import ProcessingConfig
+from processing.tools.system import isWindows, isMac, userFolder
+
+class pktoolsUtils():
+
+    PKTOOLS_FOLDER = "PKTOOLS_FOLDER"
+
+    @staticmethod
+    def pktoolsPath():
+        folder = ProcessingConfig.getSetting(pktoolsUtils.PKTOOLS_FOLDER)
+
+        if folder is None or folder == '':
+            if isWindows():
+                testfolder = os.path.join(os.path.dirname(QgsApplication.prefixPath()), 'pktools')
+                testfolder = os.path.join(testfolder, 'bin')
+                if os.path.exists(os.path.join(testfolder, 'pkinfo')):
+                    folder = testfolder
+                folder = testfolder
+            else:
+                testfolder = "/usr/bin"
+                if os.path.exists(os.path.join(testfolder, "pkinfo")):
+                    folder = testfolder
+                else:
+                    testfolder = "/usr/local/bin"
+                    if os.path.exists(os.path.join(testfolder, "pkinfo")):
+                        folder = testfolder
+                    folder = testfolder
+        return folder
+
+    @staticmethod
+    def runpktools(commands, progress):
+        settings = QSettings()#from gdal
+        loglines = []
+        loglines.append("pktools execution console output")
+        loglines.append(commands)
+        progress.setInfo('pktools command:')
+        commandline = " ".join(commands)
+        progress.setCommand(commandline)
+        proc = subprocess.Popen(
+            commandline,
+            shell=True,
+            stdout=subprocess.PIPE,
+            stdin=open(os.devnull),
+            stderr=subprocess.STDOUT,
+            universal_newlines=True,
+        ).stdout
+        progress.setInfo('pktools command output:')
+
+        for line in iter(proc.readline, ""):
+            progress.setConsoleInfo(line)
+            loglines.append(line)
+        ProcessingLog.addToLog(ProcessingLog.LOG_INFO, loglines)
+
+        ProcessingLog.addToLog(ProcessingLog.LOG_INFO, commandline)
+        pktoolsUtils.consoleOutput = loglines
+
+#    @staticmethod
+#    def getConsoleOutput():
+#        return pktoolsUtils.consoleOutput
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
new file mode 100644
index 0000000..d98e6cd
--- /dev/null
+++ b/src/CMakeLists.txt
@@ -0,0 +1,162 @@
+###############################################################################
+# set file locations
+set(BASE_SRC_DIR base)
+set(ALGOR_SRC_DIR algorithms)
+set(FILECLASS_SRC_DIR fileclasses)
+set(IMGCLASS_SRC_DIR imageclasses)
+set(LASCLASS_SRC_DIR lasclasses)
+
+set(BASE_H
+	${BASE_SRC_DIR}/IndexValue.h
+	${BASE_SRC_DIR}/Optionpk.h
+	${BASE_SRC_DIR}/PosValue.h
+	${BASE_SRC_DIR}/Vector2d.h
+	${BASE_SRC_DIR}/Vector2d.cc
+#	${BASE_SRC_DIR}/config.h
+	)
+
+set(ALGOR_H
+	${ALGOR_SRC_DIR}/ConfusionMatrix.h
+	${ALGOR_SRC_DIR}/CostFactory.h
+	${ALGOR_SRC_DIR}/CostFactorySVM.h
+	${ALGOR_SRC_DIR}/Egcs.h
+	${ALGOR_SRC_DIR}/FeatureSelector.h
+	${ALGOR_SRC_DIR}/Filter.h
+	${ALGOR_SRC_DIR}/Filter2d.h
+	${ALGOR_SRC_DIR}/ImgRegression.h
+	${ALGOR_SRC_DIR}/StatFactory.h
+	${ALGOR_SRC_DIR}/myfann_cpp.h
+	${ALGOR_SRC_DIR}/svm.h
+#	${ALGOR_SRC_DIR}/OptFactory.h
+	)
+
+set(ALGOR_CC
+	${ALGOR_SRC_DIR}/ConfusionMatrix.cc
+	${ALGOR_SRC_DIR}/CostFactorySVM.cc
+	${ALGOR_SRC_DIR}/CostFactorySVM.h
+	${ALGOR_SRC_DIR}/Egcs.cc
+	${ALGOR_SRC_DIR}/Filter.cc
+	${ALGOR_SRC_DIR}/Filter2d.cc
+	${ALGOR_SRC_DIR}/ImgRegression.cc
+	${ALGOR_SRC_DIR}/svm.cpp
+	)
+	
+set(FILECLASS_H
+	${FILECLASS_SRC_DIR}/FileReaderAscii.h 
+	)
+
+set(FILECLASS_CC
+	${FILECLASS_SRC_DIR}/FileReaderAscii.cc 
+	)
+	
+set(IMGCLASS_H
+	${IMGCLASS_SRC_DIR}/ImgRasterGdal.h 
+	${IMGCLASS_SRC_DIR}/ImgReaderGdal.h 
+	${IMGCLASS_SRC_DIR}/ImgReaderOgr.h 
+	${IMGCLASS_SRC_DIR}/ImgWriterGdal.h 
+	${IMGCLASS_SRC_DIR}/ImgWriterOgr.h 
+	${IMGCLASS_SRC_DIR}/ImgUpdaterGdal.h 
+	)
+
+set(IMGCLASS_CC
+	${IMGCLASS_SRC_DIR}/ImgRasterGdal.cc
+	${IMGCLASS_SRC_DIR}/ImgReaderGdal.cc
+	${IMGCLASS_SRC_DIR}/ImgReaderOgr.cc
+	${IMGCLASS_SRC_DIR}/ImgWriterGdal.cc 
+	${IMGCLASS_SRC_DIR}/ImgWriterOgr.cc
+	${IMGCLASS_SRC_DIR}/ImgUpdaterGdal.cc 
+	)
+	
+set(LASCLASS_H
+	${LASCLASS_SRC_DIR}/FileReaderLas.h 
+	)
+
+set(LASCLASS_CC
+	${LASCLASS_SRC_DIR}/FileReaderLas.cc 
+	)
+
+###############################################################################
+
+###############################################################################
+# Group source files for IDE source explorers
+source_group("CMake Files" FILES CMakeLists.txt)
+source_group("src_base" FILES ${BASE_H})
+source_group("src_algor" FILES ${ALGOR_H} ${ALGOR_CC})
+source_group("src_fileclass" FILES ${FILECLASS_H} ${FILECLASS_CC})
+source_group("src_imgclass" FILES ${IMGCLASS_H} ${IMGCLASS_CC})
+source_group("src_lasclass" FILES ${LASCLASS_H} ${LASCLASS_CC})
+###############################################################################
+
+###############################################################################
+# Build and link library
+
+add_library( ${PKTOOLS_BASE_LIB_NAME} ${BASE_H} )
+target_link_libraries(${PKTOOLS_BASE_LIB_NAME} ${GDAL_LIBRARIES} ${GSL_LIBRARIES} ${ARMADILLO_LIBRARIES} )
+
+add_library( ${PKTOOLS_IMAGECLASSES_LIB_NAME} ${IMGCLASS_H} ${IMGCLASS_CC} ${BASE_H} )
+target_link_libraries(${PKTOOLS_IMAGECLASSES_LIB_NAME} ${GDAL_LIBRARIES} ${GSL_LIBRARIES} ${ARMADILLO_LIBRARIES} )
+# foreach(lib ${GSL_LIBRARIES})
+# message(${lib})
+# endforeach()
+add_library( ${PKTOOLS_ALGORITHMS_LIB_NAME} ${ALGOR_H} ${ALGOR_CC} ${BASE_H} )
+target_link_libraries(${PKTOOLS_ALGORITHMS_LIB_NAME} ${GDAL_LIBRARIES} ${GSL_LIBRARIES} ${ARMADILLO_LIBRARIES} ${PKTOOLS_IMAGECLASSES_LIB_NAME} )
+
+add_library( ${PKTOOLS_FILECLASSES_LIB_NAME} ${FILECLASS_H} ${FILECLASS_CC} ${BASE_H} )
+target_link_libraries(${PKTOOLS_FILECLASSES_LIB_NAME} ${GDAL_LIBRARIES} ${GSL_LIBRARIES} ${ARMADILLO_LIBRARIES} )
+
+if (BUILD_WITH_LIBLAS)
+	add_library( ${PKTOOLS_LASCLASSES_LIB_NAME} ${LASCLASS_H} ${LASCLASS_CC} ${BASE_H} )
+	target_link_libraries(${PKTOOLS_FILECLASSES_LIB_NAME} ${LIBLAS_LIBRARIES} ${BOOST_LIBRARIES} ${GDAL_LIBRARIES} ${GSL_LIBRARIES} ${ARMADILLO_LIBRARIES} )
+endif(BUILD_WITH_LIBLAS)
+
+###############################################################################
+
+###############################################################################
+# Set target properties
+SET_TARGET_PROPERTIES(${PKTOOLS_BASE_LIB_NAME}
+PROPERTIES
+        SOVERSION ${PKTOOLS_BASE_VERSION}
+        VERSION ${PKTOOLS_BASE_VERSION}
+)
+
+SET_TARGET_PROPERTIES(${PKTOOLS_IMAGECLASSES_LIB_NAME}
+PROPERTIES
+        SOVERSION ${PKTOOLS_IMAGECLASSES_VERSION}
+        VERSION ${PKTOOLS_IMAGECLASSES_VERSION}
+)
+
+SET_TARGET_PROPERTIES(${PKTOOLS_ALGORITHMS_LIB_NAME}
+PROPERTIES
+        SOVERSION ${PKTOOLS_ALGORITHMS_VERSION}
+        VERSION ${PKTOOLS_ALGORITHMS_VERSION}
+)
+
+SET_TARGET_PROPERTIES(${PKTOOLS_FILECLASSES_LIB_NAME}
+PROPERTIES
+        SOVERSION ${PKTOOLS_FILECLASSES_VERSION}
+        VERSION ${PKTOOLS_FILECLASSES_VERSION}
+)
+
+if (BUILD_WITH_LIBLAS)
+	SET_TARGET_PROPERTIES(${PKTOOLS_LASCLASSES_LIB_NAME}
+	PROPERTIES
+        SOVERSION ${PKTOOLS_LASCLASSES_VERSION}
+        VERSION ${PKTOOLS_LASCLASSES_VERSION}
+	)
+endif(BUILD_WITH_LIBLAS)
+###############################################################################
+
+###############################################################################
+# Installation 
+install (TARGETS ${PKTOOLS_BASE_LIB_NAME} ${PKTOOLS_IMAGECLASSES_LIB_NAME} ${PKTOOLS_ALGORITHMS_LIB_NAME} ${PKTOOLS_FILECLASSES_LIB_NAME} DESTINATION lib)
+
+install (FILES ${BASE_H} DESTINATION ${PROJECT_INCLUDE_DIR}/base)
+install (FILES ${IMGCLASS_H} DESTINATION ${PROJECT_INCLUDE_DIR}/imageclasses)
+install (FILES ${ALGOR_H} DESTINATION ${PROJECT_INCLUDE_DIR}/algorithms)
+install (FILES ${FILECLASS_H} DESTINATION ${PROJECT_INCLUDE_DIR}/fileclasses)
+
+if (BUILD_WITH_LIBLAS)
+install (TARGETS ${PKTOOLS_LASCLASSES_LIB_NAME} DESTINATION lib)
+install (FILES ${LASCLASS_H} DESTINATION ${PROJECT_INCLUDE_DIR}/lasclasses)
+endif(BUILD_WITH_LIBLAS)
+###############################################################################
diff --git a/src/algorithms/Filter.cc b/src/algorithms/Filter.cc
index 2faaaf0..c7d954c 100644
--- a/src/algorithms/Filter.cc
+++ b/src/algorithms/Filter.cc
@@ -62,7 +62,7 @@ unsigned int filter::Filter::setNoDataValues(std::vector<double> vnodata){
   return m_noDataValues.size();
 };
 
-void filter::Filter::dwtForward(const ImgReaderGdal& input, ImgWriterGdal& output, const std::string& wavelet_type, int family){
+void filter::Filter::dwtForward(ImgReaderGdal& input, ImgWriterGdal& output, const std::string& wavelet_type, int family){
   const char* pszMessage;
   void* pProgressArg=NULL;
   GDALProgressFunc pfnProgress=GDALTermProgress;
@@ -93,7 +93,7 @@ void filter::Filter::dwtForward(const ImgReaderGdal& input, ImgWriterGdal& outpu
   }
 }
 
-void filter::Filter::dwtInverse(const ImgReaderGdal& input, ImgWriterGdal& output, const std::string& wavelet_type, int family){
+void filter::Filter::dwtInverse(ImgReaderGdal& input, ImgWriterGdal& output, const std::string& wavelet_type, int family){
   const char* pszMessage;
   void* pProgressArg=NULL;
   GDALProgressFunc pfnProgress=GDALTermProgress;
@@ -124,7 +124,7 @@ void filter::Filter::dwtInverse(const ImgReaderGdal& input, ImgWriterGdal& outpu
   }
 }
 
-void filter::Filter::dwtCut(const ImgReaderGdal& input, ImgWriterGdal& output, const std::string& wavelet_type, int family, double cut){
+void filter::Filter::dwtCut(ImgReaderGdal& input, ImgWriterGdal& output, const std::string& wavelet_type, int family, double cut){
   const char* pszMessage;
   void* pProgressArg=NULL;
   GDALProgressFunc pfnProgress=GDALTermProgress;
@@ -155,7 +155,7 @@ void filter::Filter::dwtCut(const ImgReaderGdal& input, ImgWriterGdal& output, c
   }
 }
 
-void filter::Filter::dwtCutFrom(const ImgReaderGdal& input, ImgWriterGdal& output, const std::string& wavelet_type, int family, int band){
+void filter::Filter::dwtCutFrom(ImgReaderGdal& input, ImgWriterGdal& output, const std::string& wavelet_type, int family, int band){
   const char* pszMessage;
   void* pProgressArg=NULL;
   GDALProgressFunc pfnProgress=GDALTermProgress;
@@ -257,7 +257,7 @@ void filter::Filter::dwtCut(std::vector<double>& data, const std::string& wavele
   gsl_wavelet_workspace_free (work);
 }
 
-void filter::Filter::morphology(const ImgReaderGdal& input, ImgWriterGdal& output, const std::string& method, int dim, short verbose)
+void filter::Filter::morphology(ImgReaderGdal& input, ImgWriterGdal& output, const std::string& method, int dim, short verbose)
 {
   // bool bverbose=(verbose>1)? true:false;
   Vector2d<double> lineInput(input.nrOfBand(),input.nrOfCol());
@@ -292,7 +292,7 @@ void filter::Filter::morphology(const ImgReaderGdal& input, ImgWriterGdal& outpu
   }
 }
 
-void filter::Filter::smoothNoData(const ImgReaderGdal& input, const std::string& interpolationType, ImgWriterGdal& output)
+void filter::Filter::smoothNoData(ImgReaderGdal& input, const std::string& interpolationType, ImgWriterGdal& output)
 {
   Vector2d<double> lineInput(input.nrOfBand(),input.nrOfCol());
   Vector2d<double> lineOutput(input.nrOfBand(),input.nrOfCol());
@@ -325,7 +325,7 @@ void filter::Filter::smoothNoData(const ImgReaderGdal& input, const std::string&
   }
 }
 
-void filter::Filter::smooth(const ImgReaderGdal& input, ImgWriterGdal& output, short dim)
+void filter::Filter::smooth(ImgReaderGdal& input, ImgWriterGdal& output, short dim)
 {
   assert(dim>0);
   m_taps.resize(dim);
@@ -334,7 +334,7 @@ void filter::Filter::smooth(const ImgReaderGdal& input, ImgWriterGdal& output, s
   filter(input,output);
 }
 
-void filter::Filter::filter(const ImgReaderGdal& input, ImgWriterGdal& output)
+void filter::Filter::filter(ImgReaderGdal& input, ImgWriterGdal& output)
 {
   Vector2d<double> lineInput(input.nrOfBand(),input.nrOfCol());
   Vector2d<double> lineOutput(input.nrOfBand(),input.nrOfCol());
@@ -367,7 +367,7 @@ void filter::Filter::filter(const ImgReaderGdal& input, ImgWriterGdal& output)
   }
 }
 
-void filter::Filter::stat(const ImgReaderGdal& input, ImgWriterGdal& output, const std::string& method)
+void filter::Filter::stat(ImgReaderGdal& input, ImgWriterGdal& output, const std::string& method)
 {
   Vector2d<double> lineInput(input.nrOfBand(),input.nrOfCol());
   assert(output.nrOfCol()==input.nrOfCol());
@@ -428,7 +428,7 @@ void filter::Filter::stat(const ImgReaderGdal& input, ImgWriterGdal& output, con
   }
 }
 
-void filter::Filter::stats(const ImgReaderGdal& input, ImgWriterGdal& output, const vector<std::string>& methods)
+void filter::Filter::stats(ImgReaderGdal& input, ImgWriterGdal& output, const vector<std::string>& methods)
 {
   assert(output.nrOfBand()==methods.size());
   Vector2d<double> lineInput(input.nrOfBand(),input.nrOfCol());
@@ -501,7 +501,7 @@ void filter::Filter::stats(const ImgReaderGdal& input, ImgWriterGdal& output, co
   }
 }
 
-void filter::Filter::filter(const ImgReaderGdal& input, ImgWriterGdal& output, const std::string& method, int dim)
+void filter::Filter::filter(ImgReaderGdal& input, ImgWriterGdal& output, const std::string& method, int dim)
 {
   Vector2d<double> lineInput(input.nrOfBand(),input.nrOfCol());
   Vector2d<double> lineOutput(input.nrOfBand(),input.nrOfCol());;
diff --git a/src/algorithms/Filter.h b/src/algorithms/Filter.h
index 6867e77..f658345 100644
--- a/src/algorithms/Filter.h
+++ b/src/algorithms/Filter.h
@@ -76,30 +76,30 @@ public:
   template<class T> void filter(T* input, int inputSize, std::vector<T>& output);
   template<class T> void smooth(T* input, int inputSize, std::vector<T>& output, short dim);
   //template<class T> void morphology(const std::vector<T>& input, std::vector<T>& output, const std::string& method, int dim, bool verbose=false);
-  void morphology(const ImgReaderGdal& input, ImgWriterGdal& output, const std::string& method, int dim, short verbose=0);
-  void filter(const ImgReaderGdal& input, ImgWriterGdal& output);
-  void stat(const ImgReaderGdal& input, ImgWriterGdal& output, const std::string& method);
-  void stats(const ImgReaderGdal& input, ImgWriterGdal& output, const std::vector<std::string >& methods);
-  void filter(const ImgReaderGdal& input, ImgWriterGdal& output, const std::string& method, int dim);
+  void morphology(ImgReaderGdal& input, ImgWriterGdal& output, const std::string& method, int dim, short verbose=0);
+  void filter(ImgReaderGdal& input, ImgWriterGdal& output);
+  void stat(ImgReaderGdal& input, ImgWriterGdal& output, const std::string& method);
+  void stats(ImgReaderGdal& input, ImgWriterGdal& output, const std::vector<std::string >& methods);
+  void filter(ImgReaderGdal& input, ImgWriterGdal& output, const std::string& method, int dim);
   void getSavGolayCoefficients(std::vector<double> &c, int np, int nl, int nr, int ld, int m);
   void ludcmp(std::vector<double> &a, std::vector<int> &indx, double &d);
   void lubksb(std::vector<double> &a, std::vector<int> &indx, std::vector<double> &b);
   /* void savgolay(const ImgReaderGdal& input, ImgWriterGdal& output, int np, int nl, int nr, int m); */
-  void smooth(const ImgReaderGdal& input, ImgWriterGdal& output, short dim);
-  void smoothNoData(const ImgReaderGdal& input, const std::string& interpolationType, ImgWriterGdal& output);
+  void smooth(ImgReaderGdal& input, ImgWriterGdal& output, short dim);
+  void smoothNoData(ImgReaderGdal& input, const std::string& interpolationType, ImgWriterGdal& output);
   double getCentreWavelength(const std::vector<double> &wavelengthIn, const Vector2d<double>& srf, const std::string& interpolationType, double delta=1.0, bool verbose=false);
   template<class T> double applySrf(const std::vector<double> &wavelengthIn, const std::vector<T>& input, const Vector2d<double>& srf, const std::string& interpolationType, T& output, double delta=1.0, bool normalize=false, bool verbose=false);
   template<class T> double applySrf(const std::vector<double> &wavelengthIn, const Vector2d<T>& input, const Vector2d<double>& srf, const std::string& interpolationType, std::vector<T>& output, double delta=1.0, bool normalize=false, int down=1, bool transposeInput=false, bool verbose=false);
 
   template<class T> void applyFwhm(const std::vector<double> &wavelengthIn, const std::vector<T>& input, const std::vector<double> &wavelengthOut, const std::vector<double> &fwhm, const std::string& interpolationType, std::vector<T>& output, bool verbose=false);
   template<class T> void applyFwhm(const std::vector<double> &wavelengthIn, const Vector2d<T>& input, const std::vector<double> &wavelengthOut, const std::vector<double> &fwhm, const std::string& interpolationType, Vector2d<T>& output, int down=1, bool verbose=false);
-  void dwtForward(const ImgReaderGdal& input, ImgWriterGdal& output, const std::string& wavelet_type, int family);
-  void dwtInverse(const ImgReaderGdal& input, ImgWriterGdal& output, const std::string& wavelet_type, int family);
-  void dwtCut(const ImgReaderGdal& input, ImgWriterGdal& output, const std::string& wavelet_type, int family, double cut);
+  void dwtForward(ImgReaderGdal& input, ImgWriterGdal& output, const std::string& wavelet_type, int family);
+  void dwtInverse(ImgReaderGdal& input, ImgWriterGdal& output, const std::string& wavelet_type, int family);
+  void dwtCut(ImgReaderGdal& input, ImgWriterGdal& output, const std::string& wavelet_type, int family, double cut);
   void dwtForward(std::vector<double>& data, const std::string& wavelet_type, int family);
   void dwtInverse(std::vector<double>& data, const std::string& wavelet_type, int family);
   void dwtCut(std::vector<double>& data, const std::string& wavelet_type, int family, double cut);
-  void dwtCutFrom(const ImgReaderGdal& input, ImgWriterGdal& output, const std::string& wavelet_type, int family, int band);
+  void dwtCutFrom(ImgReaderGdal& input, ImgWriterGdal& output, const std::string& wavelet_type, int family, int band);
 
 private:
 
diff --git a/src/algorithms/Filter2d.cc b/src/algorithms/Filter2d.cc
index d41d102..455b3b5 100644
--- a/src/algorithms/Filter2d.cc
+++ b/src/algorithms/Filter2d.cc
@@ -46,17 +46,17 @@ void filter2d::Filter2d::setTaps(const Vector2d<double> &taps)
   m_taps=taps;
 }
 
-void filter2d::Filter2d::smoothNoData(const ImgReaderGdal& input, ImgWriterGdal& output, int dim)
+void filter2d::Filter2d::smoothNoData(ImgReaderGdal& input, ImgWriterGdal& output, int dim)
 {
   smoothNoData(input, output,dim,dim);
 }
 
-void filter2d::Filter2d::smooth(const ImgReaderGdal& input, ImgWriterGdal& output, int dim)
+void filter2d::Filter2d::smooth(ImgReaderGdal& input, ImgWriterGdal& output, int dim)
 {
   smooth(input, output,dim,dim);
 }
 
-void filter2d::Filter2d::smoothNoData(const ImgReaderGdal& input, ImgWriterGdal& output, int dimX, int dimY)
+void filter2d::Filter2d::smoothNoData(ImgReaderGdal& input, ImgWriterGdal& output, int dimX, int dimY)
 {
   m_taps.resize(dimY);
   for(int j=0;j<dimY;++j){
@@ -67,7 +67,7 @@ void filter2d::Filter2d::smoothNoData(const ImgReaderGdal& input, ImgWriterGdal&
   filter(input,output,false,true,true);
 }
 
-void filter2d::Filter2d::smooth(const ImgReaderGdal& input, ImgWriterGdal& output, int dimX, int dimY)
+void filter2d::Filter2d::smooth(ImgReaderGdal& input, ImgWriterGdal& output, int dimX, int dimY)
 {
   m_taps.resize(dimY);
   for(int j=0;j<dimY;++j){
@@ -79,7 +79,7 @@ void filter2d::Filter2d::smooth(const ImgReaderGdal& input, ImgWriterGdal& outpu
 }
 
     
-void filter2d::Filter2d::filter(const ImgReaderGdal& input, ImgWriterGdal& output, bool absolute, bool normalize, bool noData)
+void filter2d::Filter2d::filter(ImgReaderGdal& input, ImgWriterGdal& output, bool absolute, bool normalize, bool noData)
 {
   int dimX=m_taps[0].size();//horizontal!!!
   int dimY=m_taps.size();//vertical!!!
@@ -97,7 +97,7 @@ void filter2d::Filter2d::filter(const ImgReaderGdal& input, ImgWriterGdal& outpu
     //initialize last half of inBuffer
     for(int j=-(dimY-1)/2;j<=dimY/2;++j){
       try{
-        input.readData(inBuffer[indexJ],GDT_Float64,abs(j),iband);
+        input.readData(inBuffer[indexJ],abs(j),iband);
       }
       catch(std::string errorstring){
 	std::cerr << errorstring << "in line " << indexJ << std::endl;
@@ -116,7 +116,7 @@ void filter2d::Filter2d::filter(const ImgReaderGdal& input, ImgWriterGdal& outpu
 	  if(dimY>1)
 	    inBuffer.push_back(inBuffer.back());
 	  try{
-            input.readData(inBuffer[inBuffer.size()-1],GDT_Float64,y+dimY/2,iband);
+            input.readData(inBuffer[inBuffer.size()-1],y+dimY/2,iband);
 	  }
 	  catch(std::string errorstring){
 	    std::cerr << errorstring << "in band " << iband << ", line " << y << std::endl;
@@ -181,7 +181,7 @@ void filter2d::Filter2d::filter(const ImgReaderGdal& input, ImgWriterGdal& outpu
       }
       //write outBuffer to file
       try{
-        output.writeData(outBuffer,GDT_Float64,y,iband);
+        output.writeData(outBuffer,y,iband);
       }
       catch(std::string errorstring){
 	    std::cerr << errorstring << "in band " << iband << ", line " << y << std::endl;
@@ -240,7 +240,7 @@ void filter2d::Filter2d::majorVoting(const std::string& inputFilename, const std
   //initialize last half of inBuffer
     for(int j=-(dimY-1)/2;j<=dimY/2;++j){
       try{
-        input.readData(inBuffer[indexJ],GDT_Float64,abs(j));
+        input.readData(inBuffer[indexJ],abs(j));
       }
       catch(std::string errorstring){
 	std::cerr << errorstring << "in line " << indexJ << std::endl;
@@ -259,7 +259,7 @@ void filter2d::Filter2d::majorVoting(const std::string& inputFilename, const std
 	if(dimY>1)
 	  inBuffer.push_back(inBuffer.back());
 	try{
-          input.readData(inBuffer[inBuffer.size()-1],GDT_Float64,y+dimY/2);
+          input.readData(inBuffer[inBuffer.size()-1],y+dimY/2);
 	}
 	catch(std::string errorstring){
 	  std::cerr << errorstring << "in line" << y << std::endl;
@@ -319,7 +319,7 @@ void filter2d::Filter2d::majorVoting(const std::string& inputFilename, const std
     }
     //write outBuffer to file
     try{
-      output.writeData(outBuffer,GDT_Float64,y);
+      output.writeData(outBuffer,y);
     }
     catch(std::string errorstring){
       std::cerr << errorstring << "in line" << y << std::endl;
@@ -349,12 +349,12 @@ void filter2d::Filter2d::var(const std::string& inputFilename, const std::string
   doit(input,output,"var",dim,disc);
 }
 
-void filter2d::Filter2d::doit(const ImgReaderGdal& input, ImgWriterGdal& output, const std::string& method, int dim, short down, bool disc)
+void filter2d::Filter2d::doit(ImgReaderGdal& input, ImgWriterGdal& output, const std::string& method, int dim, short down, bool disc)
 {
   doit(input,output,method,dim,dim,down,disc);
 }
 
-void filter2d::Filter2d::doit(const ImgReaderGdal& input, ImgWriterGdal& output, const std::string& method, int dimX, int dimY, short down, bool disc)
+void filter2d::Filter2d::doit(ImgReaderGdal& input, ImgWriterGdal& output, const std::string& method, int dimX, int dimY, short down, bool disc)
 {
   const char* pszMessage;
   void* pProgressArg=NULL;
@@ -374,7 +374,7 @@ void filter2d::Filter2d::doit(const ImgReaderGdal& input, ImgWriterGdal& output,
     //initialize last half of inBuffer
     for(int j=-(dimY-1)/2;j<=dimY/2;++j){
       try{
-        input.readData(inBuffer[indexJ],GDT_Float64,abs(j),iband);
+        input.readData(inBuffer[indexJ],abs(j),iband);
       }
       catch(std::string errorstring){
 	std::cerr << errorstring << "in line " << indexJ << std::endl;
@@ -392,7 +392,7 @@ void filter2d::Filter2d::doit(const ImgReaderGdal& input, ImgWriterGdal& output,
 	  if(dimY>1)
 	    inBuffer.push_back(inBuffer.back());
 	  try{
-            input.readData(inBuffer[inBuffer.size()-1],GDT_Float64,y+dimY/2,iband);
+            input.readData(inBuffer[inBuffer.size()-1],y+dimY/2,iband);
 	  }
 	  catch(std::string errorstring){
 	    std::cerr << errorstring << "in band " << iband << ", line " << y << std::endl;
@@ -691,7 +691,7 @@ void filter2d::Filter2d::doit(const ImgReaderGdal& input, ImgWriterGdal& output,
       pfnProgress(progress,pszMessage,pProgressArg);
       //write outBuffer to file
       try{
-        output.writeData(outBuffer,GDT_Float64,y/down,iband);
+        output.writeData(outBuffer,y/down,iband);
       }
       catch(std::string errorstring){
 	std::cerr << errorstring << "in band " << iband << ", line " << y << std::endl;
@@ -701,7 +701,7 @@ void filter2d::Filter2d::doit(const ImgReaderGdal& input, ImgWriterGdal& output,
   pfnProgress(1.0,pszMessage,pProgressArg);
 }
 
-void filter2d::Filter2d::mrf(const ImgReaderGdal& input, ImgWriterGdal& output, int dimX, int dimY, double beta, bool eightConnectivity, short down, bool verbose){
+void filter2d::Filter2d::mrf(ImgReaderGdal& input, ImgWriterGdal& output, int dimX, int dimY, double beta, bool eightConnectivity, short down, bool verbose){
   assert(m_class.size()>1);
   Vector2d<double> fullBeta(m_class.size(),m_class.size());
   for(int iclass1=0;iclass1<m_class.size();++iclass1)
@@ -711,7 +711,7 @@ void filter2d::Filter2d::mrf(const ImgReaderGdal& input, ImgWriterGdal& output,
 }
 
 //beta[classTo][classFrom]
-void filter2d::Filter2d::mrf(const ImgReaderGdal& input, ImgWriterGdal& output, int dimX, int dimY, Vector2d<double> beta, bool eightConnectivity, short down, bool verbose)
+void filter2d::Filter2d::mrf(ImgReaderGdal& input, ImgWriterGdal& output, int dimX, int dimY, Vector2d<double> beta, bool eightConnectivity, short down, bool verbose)
 {
   const char* pszMessage;
   void* pProgressArg=NULL;
@@ -733,7 +733,7 @@ void filter2d::Filter2d::mrf(const ImgReaderGdal& input, ImgWriterGdal& output,
   //initialize last half of inBuffer
   for(int j=-(dimY-1)/2;j<=dimY/2;++j){
     try{
-      input.readData(inBuffer[indexJ],GDT_Int16,abs(j));
+      input.readData(inBuffer[indexJ],abs(j));
     }
     catch(std::string errorstring){
       std::cerr << errorstring << "in line " << indexJ << std::endl;
@@ -751,7 +751,7 @@ void filter2d::Filter2d::mrf(const ImgReaderGdal& input, ImgWriterGdal& output,
 	if(dimY>1)
 	  inBuffer.push_back(inBuffer.back());
         try{
-          input.readData(inBuffer[inBuffer.size()-1],GDT_Int16,y+dimY/2);
+          input.readData(inBuffer[inBuffer.size()-1],y+dimY/2);
         }
         catch(std::string errorstring){
           std::cerr << errorstring << "in line " << y << std::endl;
@@ -834,7 +834,7 @@ void filter2d::Filter2d::mrf(const ImgReaderGdal& input, ImgWriterGdal& output,
     for(int iclass=0;iclass<m_class.size();++iclass){
       assert(outBuffer[iclass].size()==output.nrOfCol());
       try{
-        output.writeData(outBuffer[iclass],GDT_Float64,y/down,iclass);
+        output.writeData(outBuffer[iclass],y/down,iclass);
       }
       catch(std::string errorstring){
         std::cerr << errorstring << "in class " << iclass << ", line " << y << std::endl;
@@ -843,7 +843,7 @@ void filter2d::Filter2d::mrf(const ImgReaderGdal& input, ImgWriterGdal& output,
   }
 }
 
-void filter2d::Filter2d::shift(const ImgReaderGdal& input, ImgWriterGdal& output, double offsetX, double offsetY, double randomSigma, RESAMPLE resample, bool verbose)
+void filter2d::Filter2d::shift(ImgReaderGdal& input, ImgWriterGdal& output, double offsetX, double offsetY, double randomSigma, RESAMPLE resample, bool verbose)
 {
   assert(input.nrOfCol()==output.nrOfCol());
   assert(input.nrOfRow()==output.nrOfRow());
@@ -857,9 +857,9 @@ void filter2d::Filter2d::shift(const ImgReaderGdal& input, ImgWriterGdal& output
   Vector2d<double> inBuffer(input.nrOfRow(),output.nrOfCol());
   Vector2d<double> outBuffer(input.nrOfRow(),output.nrOfCol());
   for(int iband=0;iband<input.nrOfBand();++iband){
-    input.readDataBlock(inBuffer,GDT_Float64,0,inBuffer.nCols()-1,0,inBuffer.nRows()-1,iband);
+    input.readDataBlock(inBuffer,0,inBuffer.nCols()-1,0,inBuffer.nRows()-1,iband);
     shift(inBuffer,outBuffer,offsetX,offsetY,randomSigma,resample,verbose);
-    output.writeDataBlock(outBuffer,GDT_Float64,0,outBuffer.nCols()-1,0,outBuffer.nRows()-1,iband);
+    output.writeDataBlock(outBuffer,0,outBuffer.nCols()-1,0,outBuffer.nRows()-1,iband);
   }
 }
 
@@ -970,7 +970,7 @@ void filter2d::Filter2d::shift(const ImgReaderGdal& input, ImgWriterGdal& output
 //   output.close();
 // }
 
-void filter2d::Filter2d::morphology(const ImgReaderGdal& input, ImgWriterGdal& output, const std::string& method, int dimX, int dimY, const std::vector<double> &angle, bool disc)
+void filter2d::Filter2d::morphology(ImgReaderGdal& input, ImgWriterGdal& output, const std::string& method, int dimX, int dimY, const std::vector<double> &angle, bool disc)
 {
   const char* pszMessage;
   void* pProgressArg=NULL;
@@ -990,7 +990,7 @@ void filter2d::Filter2d::morphology(const ImgReaderGdal& input, ImgWriterGdal& o
     //initialize last half of inBuffer
     for(int j=-(dimY-1)/2;j<=dimY/2;++j){
       try{
-	input.readData(inBuffer[indexJ],GDT_Float64,abs(j),iband);
+	input.readData(inBuffer[indexJ],abs(j),iband);
 	++indexJ;
       }
       catch(std::string errorstring){
@@ -1008,7 +1008,7 @@ void filter2d::Filter2d::morphology(const ImgReaderGdal& input, ImgWriterGdal& o
 	  if(dimY>1)
 	    inBuffer.push_back(inBuffer.back());
 	  try{
-            input.readData(inBuffer[inBuffer.size()-1],GDT_Float64,y+dimY/2,iband);
+            input.readData(inBuffer[inBuffer.size()-1],y+dimY/2,iband);
 	  }
 	  catch(std::string errorstring){
 	    std::cerr << errorstring << "in band " << iband << ", line " << y << std::endl;
@@ -1136,7 +1136,7 @@ void filter2d::Filter2d::morphology(const ImgReaderGdal& input, ImgWriterGdal& o
       }
       //write outBuffer to file
       try{
-        output.writeData(outBuffer,GDT_Float64,y,iband);
+        output.writeData(outBuffer,y,iband);
       }
       catch(std::string errorstring){
 	std::cerr << errorstring << "in band " << iband << ", line " << y << std::endl;
@@ -1149,53 +1149,53 @@ void filter2d::Filter2d::morphology(const ImgReaderGdal& input, ImgWriterGdal& o
   }
 }
 
-void filter2d::Filter2d::shadowDsm(const ImgReaderGdal& input, ImgWriterGdal& output, double sza, double saa, double pixelSize, short shadowFlag){
+void filter2d::Filter2d::shadowDsm(ImgReaderGdal& input, ImgWriterGdal& output, double sza, double saa, double pixelSize, short shadowFlag){
   Vector2d<float> inputBuffer;
   Vector2d<float> outputBuffer;
-  input.readDataBlock(inputBuffer, GDT_Float32, 0, input.nrOfCol()-1, 0, input.nrOfRow()-1, 0);
+  input.readDataBlock(inputBuffer,  0, input.nrOfCol()-1, 0, input.nrOfRow()-1, 0);
   shadowDsm(inputBuffer, outputBuffer, sza, saa, pixelSize, shadowFlag);
-  output.writeDataBlock(outputBuffer,GDT_Float32,0,output.nrOfCol()-1,0,output.nrOfRow()-1,0);
+  output.writeDataBlock(outputBuffer,0,output.nrOfCol()-1,0,output.nrOfRow()-1,0);
 }
 
-void filter2d::Filter2d::dwtForward(const ImgReaderGdal& input, ImgWriterGdal& output, const std::string& wavelet_type, int family){
+void filter2d::Filter2d::dwtForward(ImgReaderGdal& input, ImgWriterGdal& output, const std::string& wavelet_type, int family){
   Vector2d<float> theBuffer;
   for(int iband=0;iband<input.nrOfBand();++iband){
-    input.readDataBlock(theBuffer, GDT_Float32, 0, input.nrOfCol()-1, 0, input.nrOfRow()-1, iband);
+    input.readDataBlock(theBuffer,  0, input.nrOfCol()-1, 0, input.nrOfRow()-1, iband);
     std::cout << "filtering band " << iband << std::endl << std::flush;
     dwtForward(theBuffer, wavelet_type, family);
-    output.writeDataBlock(theBuffer,GDT_Float32,0,output.nrOfCol()-1,0,output.nrOfRow()-1,iband);
+    output.writeDataBlock(theBuffer,0,output.nrOfCol()-1,0,output.nrOfRow()-1,iband);
   }
 }
 
-void filter2d::Filter2d::dwtInverse(const ImgReaderGdal& input, ImgWriterGdal& output, const std::string& wavelet_type, int family){
+void filter2d::Filter2d::dwtInverse(ImgReaderGdal& input, ImgWriterGdal& output, const std::string& wavelet_type, int family){
   Vector2d<float> theBuffer;
   for(int iband=0;iband<input.nrOfBand();++iband){
-    input.readDataBlock(theBuffer, GDT_Float32, 0, input.nrOfCol()-1, 0, input.nrOfRow()-1, iband);
+    input.readDataBlock(theBuffer,  0, input.nrOfCol()-1, 0, input.nrOfRow()-1, iband);
     std::cout << "filtering band " << iband << std::endl << std::flush;
     dwtInverse(theBuffer, wavelet_type, family);
-    output.writeDataBlock(theBuffer,GDT_Float32,0,output.nrOfCol()-1,0,output.nrOfRow()-1,iband);
+    output.writeDataBlock(theBuffer,0,output.nrOfCol()-1,0,output.nrOfRow()-1,iband);
   }
 }
 
-void filter2d::Filter2d::dwtCut(const ImgReaderGdal& input, ImgWriterGdal& output, const std::string& wavelet_type, int family, double cut, bool verbose){
+void filter2d::Filter2d::dwtCut(ImgReaderGdal& input, ImgWriterGdal& output, const std::string& wavelet_type, int family, double cut, bool verbose){
   Vector2d<float> theBuffer;
   for(int iband=0;iband<input.nrOfBand();++iband){
-    input.readDataBlock(theBuffer, GDT_Float32, 0, input.nrOfCol()-1, 0, input.nrOfRow()-1, iband);
+    input.readDataBlock(theBuffer,  0, input.nrOfCol()-1, 0, input.nrOfRow()-1, iband);
     std::cout << "filtering band " << iband << std::endl << std::flush;
     dwtCut(theBuffer, wavelet_type, family, cut);
-    output.writeDataBlock(theBuffer,GDT_Float32,0,output.nrOfCol()-1,0,output.nrOfRow()-1,iband);
+    output.writeDataBlock(theBuffer,0,output.nrOfCol()-1,0,output.nrOfRow()-1,iband);
   }
 }
 
-void filter2d::Filter2d::linearFeature(const ImgReaderGdal& input, ImgWriterGdal& output, float angle, float angleStep, float maxDistance, float eps, bool l1, bool a1, bool l2, bool a2, int band, bool verbose){
+void filter2d::Filter2d::linearFeature(ImgReaderGdal& input, ImgWriterGdal& output, float angle, float angleStep, float maxDistance, float eps, bool l1, bool a1, bool l2, bool a2, int band, bool verbose){
   Vector2d<float> inputBuffer;
   std::vector< Vector2d<float> > outputBuffer;
-  input.readDataBlock(inputBuffer, GDT_Float32, 0, input.nrOfCol()-1, 0, input.nrOfRow()-1, band);
+  input.readDataBlock(inputBuffer,  0, input.nrOfCol()-1, 0, input.nrOfRow()-1, band);
   if(maxDistance<=0)
     maxDistance=sqrt(static_cast<float>(input.nrOfCol()*input.nrOfRow()));
   linearFeature(inputBuffer,outputBuffer,angle,angleStep,maxDistance,eps, l1, a1, l2, a2,verbose);
   for(int iband=0;iband<outputBuffer.size();++iband)
-    output.writeDataBlock(outputBuffer[iband],GDT_Float32,0,output.nrOfCol()-1,0,output.nrOfRow()-1,iband);
+    output.writeDataBlock(outputBuffer[iband],0,output.nrOfCol()-1,0,output.nrOfRow()-1,iband);
 }
 
 void filter2d::Filter2d::linearFeature(const Vector2d<float>& input, std::vector< Vector2d<float> >& output, float angle, float angleStep, float maxDistance, float eps, bool l1, bool a1, bool l2, bool a2, bool verbose)
diff --git a/src/algorithms/Filter2d.h b/src/algorithms/Filter2d.h
index 5b788be..2bdde8b 100644
--- a/src/algorithms/Filter2d.h
+++ b/src/algorithms/Filter2d.h
@@ -58,7 +58,7 @@ extern "C" {
 
 namespace filter2d
 {
-  enum FILTER_TYPE { median=100, var=101 , min=102, max=103, sum=104, mean=105, minmax=106, dilate=107, erode=108, close=109, open=110, homog=111, sobelx=112, sobely=113, sobelxy=114, sobelyx=115, smooth=116, density=117, mode=118, mixed=119, threshold=120, ismin=121, ismax=122, heterog=123, order=124, stdev=125, mrf=126, dwt=127, dwti=128, dwt_cut=129, scramble=130, shift=131, linearfeature=132, smoothnodata=133, countid=134, dwt_cut_from=135, savgolay=136, percentile=137, proportion=13 [...]
+  enum FILTER_TYPE { median=100, var=101 , min=102, max=103, sum=104, mean=105, minmax=106, dilate=107, erode=108, close=109, open=110, homog=111, sobelx=112, sobely=113, sobelxy=114, sobelyx=115, smooth=116, density=117, mode=118, mixed=119, threshold=120, ismin=121, ismax=122, heterog=123, order=124, stdev=125, mrf=126, dwt=127, dwti=128, dwt_cut=129, scramble=130, shift=131, linearfeature=132, smoothnodata=133, countid=134, dwt_cut_from=135, savgolay=136, percentile=137, proportion=13 [...]
 
   enum RESAMPLE { NEAR = 0, BILINEAR = 1, BICUBIC = 2 };//bicubic not supported yet...
   
@@ -91,42 +91,42 @@ public:
   void pushThreshold(double theThreshold){m_threshold.push_back(theThreshold);};
   void setThresholds(const std::vector<double>& theThresholds){m_threshold=theThresholds;};
   void setClasses(const std::vector<short>& theClasses){m_class=theClasses;};
-  void filter(const ImgReaderGdal& input, ImgWriterGdal& output, bool absolute=false, bool normalize=false, bool noData=false);
-  void smooth(const ImgReaderGdal& input, ImgWriterGdal& output,int dim);
-  void smooth(const ImgReaderGdal& input, ImgWriterGdal& output,int dimX, int dimY);
-  void smoothNoData(const ImgReaderGdal& input, ImgWriterGdal& output,int dim);
-  void smoothNoData(const ImgReaderGdal& input, ImgWriterGdal& output,int dimX, int dimY);
+  void filter(ImgReaderGdal& input, ImgWriterGdal& output, bool absolute=false, bool normalize=false, bool noData=false);
+  void smooth(ImgReaderGdal& input, ImgWriterGdal& output,int dim);
+  void smooth(ImgReaderGdal& input, ImgWriterGdal& output,int dimX, int dimY);
+  void smoothNoData(ImgReaderGdal& input, ImgWriterGdal& output,int dim);
+  void smoothNoData(ImgReaderGdal& input, ImgWriterGdal& output,int dimX, int dimY);
   template<class T1, class T2> void filter(const Vector2d<T1>& inputVector, Vector2d<T2>& outputVector);
   template<class T1, class T2> void smooth(const Vector2d<T1>& inputVector, Vector2d<T2>& outputVector,int dim);
   template<class T1, class T2> void smooth(const Vector2d<T1>& inputVector, Vector2d<T2>& outputVector,int dimX, int dimY);
-  void dwtForward(const ImgReaderGdal& input, ImgWriterGdal& output, const std::string& wavelet_type, int family);
-  void dwtInverse(const ImgReaderGdal& input, ImgWriterGdal& output, const std::string& wavelet_type, int family);
-  void dwtCut(const ImgReaderGdal& input, ImgWriterGdal& output, const std::string& wavelet_type, int family, double cut, bool verbose=false);
+  void dwtForward(ImgReaderGdal& input, ImgWriterGdal& output, const std::string& wavelet_type, int family);
+  void dwtInverse(ImgReaderGdal& input, ImgWriterGdal& output, const std::string& wavelet_type, int family);
+  void dwtCut(ImgReaderGdal& input, ImgWriterGdal& output, const std::string& wavelet_type, int family, double cut, bool verbose=false);
   template<class T> void dwtForward(Vector2d<T>& data, const std::string& wavelet_type, int family);
   template<class T> void dwtInverse(Vector2d<T>& data, const std::string& wavelet_type, int family);
   template<class T> void dwtCut(Vector2d<T>& data, const std::string& wavelet_type, int family, double cut);
   void majorVoting(const std::string& inputFilename, const std::string& outputFilename,int dim=0,const std::vector<int> &prior=std::vector<int>());
   /* void homogeneousSpatial(const std::string& inputFilename, const std::string& outputFilename, int dim, bool disc=false, int noValue=0); */
-  void doit(const ImgReaderGdal& input, ImgWriterGdal& output, const std::string& method, int dim, short down=1, bool disc=false);
-  void doit(const ImgReaderGdal& input, ImgWriterGdal& output, const std::string& method, int dimX, int dimY, short down=1, bool disc=false);
-  void mrf(const ImgReaderGdal& input, ImgWriterGdal& output, int dimX, int dimY, double beta, bool eightConnectivity=true, short down=1, bool verbose=false);
-  void mrf(const ImgReaderGdal& input, ImgWriterGdal& output, int dimX, int dimY, Vector2d<double> beta, bool eightConnectivity=true, short down=1, bool verbose=false);
+  void doit(ImgReaderGdal& input, ImgWriterGdal& output, const std::string& method, int dim, short down=1, bool disc=false);
+  void doit(ImgReaderGdal& input, ImgWriterGdal& output, const std::string& method, int dimX, int dimY, short down=1, bool disc=false);
+  void mrf(ImgReaderGdal& input, ImgWriterGdal& output, int dimX, int dimY, double beta, bool eightConnectivity=true, short down=1, bool verbose=false);
+  void mrf(ImgReaderGdal& input, ImgWriterGdal& output, int dimX, int dimY, Vector2d<double> beta, bool eightConnectivity=true, short down=1, bool verbose=false);
   template<class T1, class T2> void doit(const Vector2d<T1>& inputVector, Vector2d<T2>& outputVector, const std::string& method, int dimX, int dimY, short down=1, bool disc=false);
   void median(const std::string& inputFilename, const std::string& outputFilename, int dim, bool disc=false);
   void var(const std::string& inputFilename, const std::string& outputFilename, int dim, bool disc=false);
-  void morphology(const ImgReaderGdal& input, ImgWriterGdal& output, const std::string& method, int dimX, int dimY, const std::vector<double> &angle, bool disc=false);
+  void morphology(ImgReaderGdal& input, ImgWriterGdal& output, const std::string& method, int dimX, int dimY, const std::vector<double> &angle, bool disc=false);
   template<class T> unsigned long int morphology(const Vector2d<T>& input, Vector2d<T>& output, const std::string& method, int dimX, int dimY, bool disc=false, double hThreshold=0);
   template<class T> unsigned long int dsm2dtm_nwse(const Vector2d<T>& inputDSM, Vector2d<T>& outputMask, double hThreshold, int nlimit, int dim=3);
   template<class T> unsigned long int dsm2dtm_nesw(const Vector2d<T>& inputDSM, Vector2d<T>& outputMask, double hThreshold, int nlimit, int dim=3);
   template<class T> unsigned long int dsm2dtm_senw(const Vector2d<T>& inputDSM, Vector2d<T>& outputMask, double hThreshold, int nlimit, int dim=3);
   template<class T> unsigned long int dsm2dtm_swne(const Vector2d<T>& inputDSM, Vector2d<T>& outputMask, double hThreshold, int nlimit, int dim=3);
   template<class T> void shadowDsm(const Vector2d<T>& input, Vector2d<T>& output, double sza, double saa, double pixelSize, short shadowFlag=1);
-  void shadowDsm(const ImgReaderGdal& input, ImgWriterGdal& output, double sza, double saa, double pixelSize, short shadowFlag=1);
+  void shadowDsm(ImgReaderGdal& input, ImgWriterGdal& output, double sza, double saa, double pixelSize, short shadowFlag=1);
   void dwt_texture(const std::string& inputFilename, const std::string& outputFilename,int dim, int scale, int down=1, int iband=0, bool verbose=false);
-  void shift(const ImgReaderGdal& input, ImgWriterGdal& output, double offsetX=0, double offsetY=0, double randomSigma=0, RESAMPLE resample=BILINEAR, bool verbose=false);
+  void shift(ImgReaderGdal& input, ImgWriterGdal& output, double offsetX=0, double offsetY=0, double randomSigma=0, RESAMPLE resample=BILINEAR, bool verbose=false);
   template<class T> void shift(const Vector2d<T>& input, Vector2d<T>& output, double offsetX=0, double offsetY=0, double randomSigma=0, RESAMPLE resample=NEAR, bool verbose=false);
   void linearFeature(const Vector2d<float>& input, std::vector< Vector2d<float> >& output, float angle=361, float angleStep=1, float maxDistance=0, float eps=0, bool l1=true, bool a1=true, bool l2=true, bool a2=true, bool verbose=false);
-  void linearFeature(const ImgReaderGdal& input, ImgWriterGdal& output, float angle=361, float angleStep=1, float maxDistance=0, float eps=0, bool l1=true, bool a1=true, bool l2=true, bool a2=true, int band=0, bool verbose=false);
+  void linearFeature(ImgReaderGdal& input, ImgWriterGdal& output, float angle=361, float angleStep=1, float maxDistance=0, float eps=0, bool l1=true, bool a1=true, bool l2=true, bool a2=true, int band=0, bool verbose=false);
   
 private:
   static void initMap(std::map<std::string, FILTER_TYPE>& m_filterMap){
@@ -157,6 +157,7 @@ private:
     m_filterMap["ismin"]=filter2d::ismin;
     m_filterMap["ismax"]=filter2d::ismax;
     m_filterMap["heterog"]=filter2d::heterog;
+    m_filterMap["sauvola"]=filter2d::sauvola;
     m_filterMap["order"]=filter2d::order;
     m_filterMap["stdev"]=filter2d::stdev;
     m_filterMap["mrf"]=filter2d::mrf;
@@ -263,17 +264,19 @@ template<class T1, class T2> void Filter2d::doit(const Vector2d<T1>& inputVector
   double progress=0;
   pfnProgress(progress,pszMessage,pProgressArg);
 
+  statfactory::StatFactory stat;
   double noDataValue=0;
-  if(m_noDataValues.size())
+  if(m_noDataValues.size()){
+    stat.setNoDataValues(m_noDataValues);
     noDataValue=m_noDataValues[0];
-
+  }
   assert(dimX);
   assert(dimY);
 
-  statfactory::StatFactory stat;
   outputVector.resize((inputVector.size()+down-1)/down);
   Vector2d<T1> inBuffer(dimY);
   std::vector<T2> outBuffer((inputVector[0].size()+down-1)/down);
+  
   int indexI=0;
   int indexJ=0;
   //initialize last half of inBuffer
@@ -282,6 +285,7 @@ template<class T1, class T2> void Filter2d::doit(const Vector2d<T1>& inputVector
     ++indexJ;
   }
   for(int y=0;y<inputVector.size();++y){
+    
     if(y){//inBuffer already initialized for y=0
       //erase first line from inBuffer
       inBuffer.erase(inBuffer.begin());
@@ -302,9 +306,11 @@ template<class T1, class T2> void Filter2d::doit(const Vector2d<T1>& inputVector
       if((x+1+down/2)%down)
         continue;
       outBuffer[x/down]=0;
-      std::vector<double> windowBuffer;
+
+      std::vector<T1> windowBuffer;
       std::map<int,int> occurrence;
       int centre=dimX*(dimY-1)/2+(dimX-1)/2;
+      bool centreMasked=false;
       for(int j=-(dimY-1)/2;j<=dimY/2;++j){
         for(int i=-(dimX-1)/2;i<=dimX/2;++i){
 	  indexI=x+i;
@@ -319,14 +325,8 @@ template<class T1, class T2> void Filter2d::doit(const Vector2d<T1>& inputVector
             indexJ=(dimY>2) ? (dimY-1)/2-j : 0;
           else
             indexJ=(dimY-1)/2+j;
-          bool masked=false;
-          for(int imask=0;imask<m_noDataValues.size();++imask){
-            if(inBuffer[indexJ][indexI]==m_noDataValues[imask]){
-              masked=true;
-              break;
-            }
-          }
-          if(!masked){
+          windowBuffer.push_back(inBuffer[indexJ][indexI]);
+          if(!stat.isNoData(inBuffer[indexJ][indexI])){
             std::vector<short>::const_iterator vit=m_class.begin();
             //todo: test if this works (only add occurrence if within defined classes)!
             if(!m_class.size())
@@ -337,7 +337,6 @@ template<class T1, class T2> void Filter2d::doit(const Vector2d<T1>& inputVector
                   ++occurrence[inBuffer[indexJ][indexI]];
               }
             }
-            windowBuffer.push_back(inBuffer[indexJ][indexI]);
           }
         }
       }
@@ -346,23 +345,18 @@ template<class T1, class T2> void Filter2d::doit(const Vector2d<T1>& inputVector
 	outBuffer[x/down]=stat.nvalid(windowBuffer);
         break;
       case(filter2d::median):
-        if(windowBuffer.empty())
-          outBuffer[x/down]=noDataValue;
-        else
-          outBuffer[x/down]=stat.median(windowBuffer);
+        outBuffer[x/down]=stat.median(windowBuffer);
         break;
       case(filter2d::var):{
-        if(windowBuffer.empty())
-          outBuffer[x/down]=noDataValue;
-        else
-          outBuffer[x/down]=stat.var(windowBuffer);
+        outBuffer[x/down]=stat.var(windowBuffer);
         break;
       }
       case(filter2d::stdev):{
-        if(windowBuffer.empty())
+        T2 varValue=stat.var(windowBuffer);
+        if(stat.isNoData(varValue))
           outBuffer[x/down]=noDataValue;
-        else
-          outBuffer[x/down]=sqrt(stat.var(windowBuffer));
+        else          
+          outBuffer[x/down]=sqrt(varValue);
         break;
       }
       case(filter2d::mean):{
@@ -373,48 +367,41 @@ template<class T1, class T2> void Filter2d::doit(const Vector2d<T1>& inputVector
         break;
       }
       case(filter2d::min):{
-        if(windowBuffer.empty())
-          outBuffer[x/down]=noDataValue;
-        else
-          outBuffer[x/down]=stat.mymin(windowBuffer);
+        outBuffer[x/down]=stat.mymin(windowBuffer);
         break;
       }
       case(filter2d::ismin):{
-        if(windowBuffer.empty())
+        T1 minValue=stat.mymin(windowBuffer);
+        if(stat.isNoData(minValue))
           outBuffer[x/down]=noDataValue;
         else
-          outBuffer[x/down]=(stat.mymin(windowBuffer)==windowBuffer[centre])? 1:0;
+          outBuffer[x/down]=(windowBuffer[centre]==minValue)? 1:0;
         break;
       }
       case(filter2d::minmax):{
-        double min=0;
-        double max=0;
-        if(windowBuffer.empty())
-          outBuffer[x/down]=noDataValue;
-        else{
-          stat.minmax(windowBuffer,windowBuffer.begin(),windowBuffer.end(),min,max);
-          if(min!=max)
-            outBuffer[x/down]=0;
-          else
-            outBuffer[x/down]=windowBuffer[centre];//centre pixels
-        }
+        T1 min=0;
+        T1 max=0;
+        stat.minmax(windowBuffer,windowBuffer.begin(),windowBuffer.end(),min,max);
+        if(min!=max)
+          outBuffer[x/down]=0;
+        else
+          outBuffer[x/down]=windowBuffer[centre];//centre pixels
         break;
       }
       case(filter2d::max):{
-        if(windowBuffer.empty())
-          outBuffer[x/down]=noDataValue;
-        else
-          outBuffer[x/down]=stat.mymax(windowBuffer);
+        outBuffer[x/down]=stat.mymax(windowBuffer);
         break;
       }
       case(filter2d::ismax):{
-        if(windowBuffer.empty())
+        T1 maxValue=stat.mymax(windowBuffer);
+        if(stat.isNoData(maxValue))
           outBuffer[x/down]=noDataValue;
         else
-          outBuffer[x/down]=(stat.mymax(windowBuffer)==windowBuffer[centre])? 1:0;
+          outBuffer[x/down]=(windowBuffer[centre]==maxValue)? 1:0;
         break;
       }
       case(filter2d::order):{
+        stat.eraseNoData(windowBuffer);
         if(windowBuffer.empty())
           outBuffer[x/down]=noDataValue;
         else{
@@ -437,45 +424,94 @@ template<class T1, class T2> void Filter2d::doit(const Vector2d<T1>& inputVector
         break;
       }
       case(filter2d::proportion):{
-	assert(m_threshold.size());
-	double sum=stat.sum(windowBuffer);
+        stat.eraseNoData(windowBuffer);
+	T2 sum=stat.sum(windowBuffer);
 	if(sum)
 	  outBuffer[x/down]=windowBuffer[centre]/sum;
 	else
 	  outBuffer[x/down]=noDataValue;
         break;
       }
-      case(filter2d::homog):
-        if(occurrence.size()==1)//all values in window must be the same
-          outBuffer[x/down]=inBuffer[(dimY-1)/2][x];
-        else//favorize original value in case of ties
+      case(filter2d::homog):{
+        T1 centreValue=inBuffer[(dimY-1)/2][x];
+        bool isHomog=true;
+        stat.eraseNoData(windowBuffer);
+        typename std::vector<T1>::const_iterator wit;
+        for(wit=windowBuffer.begin();wit!=windowBuffer.end();++wit){
+          if(*wit==centreValue)
+            continue;
+          else{
+            isHomog=false;
+            break;
+          }
+        }
+        if(isHomog)
+          outBuffer[x/down]=1;
+        else
           outBuffer[x/down]=noDataValue;
         break;
+      }
       case(filter2d::heterog):{
-        for(std::vector<double>::const_iterator wit=windowBuffer.begin();wit!=windowBuffer.end();++wit){
-          if(wit==windowBuffer.begin()+windowBuffer.size()/2)
+        T1 centreValue=inBuffer[(dimY-1)/2][x];
+        bool isHeterog=true;
+        stat.eraseNoData(windowBuffer);
+        typename std::vector<T1>::const_iterator wit;
+        for(wit=windowBuffer.begin();wit!=windowBuffer.end();++wit){
+          if(*wit!=centreValue)
             continue;
-          else if(*wit!=inBuffer[(dimY-1)/2][x])
-            outBuffer[x/down]=1;
-          else if(*wit==inBuffer[(dimY-1)/2][x]){//todo:wit mag niet central pixel zijn
-            outBuffer[x/down]=noDataValue;
+          else{
+            isHeterog=false;
             break;
           }
         }
+        if(isHeterog)
+          outBuffer[x/down]=1;
+        else
+          outBuffer[x/down]=noDataValue;
+        break;
+      }
+      case(filter2d::sauvola):{
+        try{
+          double theMean=0;
+          double theStdev=0;
+          bool invalid=false;
+          T1 centreValue=inBuffer[(dimY-1)/2][x];
+          if(windowBuffer.empty()||stat.isNoData(centreValue)){
+            invalid=true;
+            throw(invalid);
+          }
+          stat.meanVar(windowBuffer,theMean,theStdev);
+          theStdev=sqrt(theStdev);
+          double kValue=0.5;
+          double rValue=128;
+          if(m_threshold.size()==2){
+            kValue=m_threshold[0];
+            rValue=m_threshold[1];
+          }
+          //from http://fiji.sc/Auto_Local_Threshold
+          //pixel = ( pixel > mean * ( 1 + k * ( standard_deviation / r - 1 ) ) ) ? object : background
+          double theThreshold=theMean*(1+kValue*(theStdev/rValue - 1));
+          //isdata value hardcoded as 1 for now
+          outBuffer[x/down]=(centreValue>theThreshold) ? 1 : noDataValue;
+        }
+        catch(bool invalid){
+          outBuffer[x/down]=noDataValue;
+        }
         break;
       }
       case(filter2d::density):{
-        if(windowBuffer.size()){
+        int nvalid=stat.nvalid(windowBuffer);
+        if(nvalid){
           std::vector<short>::const_iterator vit=m_class.begin();
           while(vit!=m_class.end())
-            outBuffer[x/down]+=100.0*occurrence[*(vit++)]/windowBuffer.size();
+            outBuffer[x/down]+=100.0*occurrence[*(vit++)]/nvalid;
         }
         else
           outBuffer[x/down]=noDataValue;
         break;
       }
       case(filter2d::countid):{
-	if(windowBuffer.size())
+        if(occurrence.size())
 	  outBuffer[x/down]=occurrence.size();
 	else
 	  outBuffer[x/down]=noDataValue;
@@ -499,10 +535,11 @@ template<class T1, class T2> void Filter2d::doit(const Vector2d<T1>& inputVector
       }
       case(filter2d::threshold):{
         assert(m_class.size()==m_threshold.size());
-        if(windowBuffer.size()){
+        int nvalid=stat.nvalid(windowBuffer);
+        if(nvalid>0){
           outBuffer[x/down]=inBuffer[(dimY-1)/2][x];//initialize with original value (in case thresholds not met)
           for(int iclass=0;iclass<m_class.size();++iclass){
-            if(100.0*(occurrence[m_class[iclass]])/windowBuffer.size()>m_threshold[iclass])
+            if(100.0*(occurrence[m_class[iclass]])/nvalid>m_threshold[iclass])
               outBuffer[x/down]=m_class[iclass];
           }
         }
@@ -556,7 +593,6 @@ template<class T1, class T2> void Filter2d::doit(const Vector2d<T1>& inputVector
       }
     }
     progress=(1.0+y/down);
-    progress+=(outputVector.size());
     progress/=outputVector.size();
     pfnProgress(progress,pszMessage,pProgressArg);
     //copy outBuffer to outputVector
diff --git a/src/algorithms/ImgRegression.cc b/src/algorithms/ImgRegression.cc
index 6b4d727..ffc3955 100644
--- a/src/algorithms/ImgRegression.cc
+++ b/src/algorithms/ImgRegression.cc
@@ -29,7 +29,7 @@ ImgRegression::ImgRegression(void)
 ImgRegression::~ImgRegression(void)
 {}
 
-double ImgRegression::getRMSE(const ImgReaderGdal& imgReader1, const ImgReaderGdal& imgReader2, double& c0, double& c1, unsigned short band1, unsigned short band2, short verbose) const{
+double ImgRegression::getRMSE(ImgReaderGdal& imgReader1, ImgReaderGdal& imgReader2, double& c0, double& c1, unsigned short band1, unsigned short band2, short verbose) const{
   c0=0;
   c1=1;
   int icol1=0,irow1=0;
@@ -90,7 +90,7 @@ double ImgRegression::getRMSE(const ImgReaderGdal& imgReader1, const ImgReaderGd
   return err;
 }
 
-double ImgRegression::getR2(const ImgReaderGdal& imgReader1, const ImgReaderGdal& imgReader2, double& c0, double& c1, unsigned short band1, unsigned short band2, short verbose) const{
+double ImgRegression::getR2(ImgReaderGdal& imgReader1, ImgReaderGdal& imgReader2, double& c0, double& c1, unsigned short band1, unsigned short band2, short verbose) const{
   c0=0;
   c1=1;
   int icol1=0,irow1=0;
@@ -151,7 +151,7 @@ double ImgRegression::getR2(const ImgReaderGdal& imgReader1, const ImgReaderGdal
   return r2;
 }
 
-double ImgRegression::pgetR2(const ImgReaderGdal& imgReader1, const ImgReaderGdal& imgReader2, double& c0, double& c1, unsigned short band1, unsigned short band2, short verbose) const{
+double ImgRegression::pgetR2(ImgReaderGdal& imgReader1, ImgReaderGdal& imgReader2, double& c0, double& c1, unsigned short band1, unsigned short band2, short verbose) const{
   c0=0;
   c1=1;
   int icol1=0,irow1=0;
@@ -226,7 +226,7 @@ double ImgRegression::pgetR2(const ImgReaderGdal& imgReader1, const ImgReaderGda
   return r*r;
 }
 
-double ImgRegression::getRMSE(const ImgReaderGdal& imgReader, unsigned short band1, unsigned short band2, double& c0, double& c1, short verbose) const{
+double ImgRegression::getRMSE(ImgReaderGdal& imgReader, unsigned short band1, unsigned short band2, double& c0, double& c1, short verbose) const{
   c0=0;
   c1=1;
   int icol=0,irow=0;
@@ -277,7 +277,7 @@ double ImgRegression::getRMSE(const ImgReaderGdal& imgReader, unsigned short ban
   return err;
 }
 
-double ImgRegression::getR2(const ImgReaderGdal& imgReader, unsigned short band1, unsigned short band2, double& c0, double& c1, short verbose) const{
+double ImgRegression::getR2(ImgReaderGdal& imgReader, unsigned short band1, unsigned short band2, double& c0, double& c1, short verbose) const{
   c0=0;
   c1=1;
   int icol=0,irow=0;
@@ -328,7 +328,7 @@ double ImgRegression::getR2(const ImgReaderGdal& imgReader, unsigned short band1
   return r2;
 }
 
-double ImgRegression::pgetR2(const ImgReaderGdal& imgReader, unsigned short band1, unsigned short band2, double& c0, double& c1, short verbose) const{
+double ImgRegression::pgetR2(ImgReaderGdal& imgReader, unsigned short band1, unsigned short band2, double& c0, double& c1, short verbose) const{
   c0=0;
   c1=1;
   int icol=0,irow=0;
diff --git a/src/algorithms/ImgRegression.h b/src/algorithms/ImgRegression.h
index 51bea30..76a7235 100644
--- a/src/algorithms/ImgRegression.h
+++ b/src/algorithms/ImgRegression.h
@@ -31,12 +31,12 @@ namespace imgregression
   public:
     ImgRegression(void);
     ~ImgRegression(void);
-    double getRMSE(const ImgReaderGdal& imgReader1, const ImgReaderGdal& imgReader2, double &c0, double &c1, unsigned short b1=0, unsigned short b2=0, short verbose=0) const;
-    double getRMSE(const ImgReaderGdal& imgReader, unsigned short b1, unsigned short b2, double& c0, double& c1, short verbose=0) const;
-    double getR2(const ImgReaderGdal& imgReader1, const ImgReaderGdal& imgReader2, double &c0, double &c1, unsigned short b1=0, unsigned short b2=0, short verbose=0) const;
-    double pgetR2(const ImgReaderGdal& imgReader1, const ImgReaderGdal& imgReader2, double& c0, double& c1, unsigned short band1, unsigned short band2, short verbose=0) const;
-    double getR2(const ImgReaderGdal& imgReader, unsigned short b1, unsigned short b2, double& c0, double& c1, short verbose=0) const;
-    double pgetR2(const ImgReaderGdal& imgReader, unsigned short band1, unsigned short band2, double& c0, double& c1, short verbose=0) const;
+    double getRMSE(ImgReaderGdal& imgReader1, ImgReaderGdal& imgReader2, double &c0, double &c1, unsigned short b1=0, unsigned short b2=0, short verbose=0) const;
+    double getRMSE(ImgReaderGdal& imgReader, unsigned short b1, unsigned short b2, double& c0, double& c1, short verbose=0) const;
+    double getR2(ImgReaderGdal& imgReader1, ImgReaderGdal& imgReader2, double &c0, double &c1, unsigned short b1=0, unsigned short b2=0, short verbose=0) const;
+    double pgetR2(ImgReaderGdal& imgReader1, ImgReaderGdal& imgReader2, double& c0, double& c1, unsigned short band1, unsigned short band2, short verbose=0) const;
+    double getR2(ImgReaderGdal& imgReader, unsigned short b1, unsigned short b2, double& c0, double& c1, short verbose=0) const;
+    double pgetR2(ImgReaderGdal& imgReader, unsigned short band1, unsigned short band2, double& c0, double& c1, short verbose=0) const;
 
     void setThreshold(double theThreshold){m_threshold=theThreshold;};
     void setDown(int theDown){m_down=theDown;};
diff --git a/src/algorithms/Makefile.in b/src/algorithms/Makefile
similarity index 69%
copy from src/algorithms/Makefile.in
copy to src/algorithms/Makefile
index 6cbf186..655a63e 100644
--- a/src/algorithms/Makefile.in
+++ b/src/algorithms/Makefile
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
-# @configure_input@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# src/algorithms/Makefile.  Generated from Makefile.in by configure.
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -12,11 +12,21 @@
 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 # PARTICULAR PURPOSE.
 
- at SET_MAKE@
 
 
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+
+
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -61,10 +71,10 @@ am__make_running_with_option = \
   test $$has_opt = yes
 am__make_dryrun = (target_option=n; $(am__make_running_with_option))
 am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
+pkgdatadir = $(datadir)/pktools
+pkgincludedir = $(includedir)/pktools
+pkglibdir = $(libdir)/pktools
+pkglibexecdir = $(libexecdir)/pktools
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -77,13 +87,10 @@ POST_INSTALL = :
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
- at USE_FANN_TRUE@am__append_1 = myfann_cpp.h
- at USE_NLOPT_TRUE@am__append_2 = OptFactory.h
+build_triplet = x86_64-pc-linux-gnu
+host_triplet = x86_64-pc-linux-gnu
+am__append_1 = myfann_cpp.h
 subdir = src/algorithms
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp $(am__libalgorithms_la_HEADERS_DIST)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_lib_gdal.m4 \
 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
@@ -91,6 +98,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ax_lib_gdal.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am \
+	$(am__libalgorithms_la_HEADERS_DIST) $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -128,35 +137,35 @@ LTLIBRARIES = $(lib_LTLIBRARIES)
 libalgorithms_la_LIBADD =
 am__libalgorithms_la_SOURCES_DIST = Egcs.h Filter2d.h Filter.h \
 	StatFactory.h ConfusionMatrix.h svm.h CostFactory.h \
-	CostFactorySVM.h FeatureSelector.h myfann_cpp.h OptFactory.h \
-	Egcs.cc Filter2d.cc Filter.cc ConfusionMatrix.cc svm.cpp \
+	CostFactorySVM.h FeatureSelector.h myfann_cpp.h Egcs.cc \
+	Filter2d.cc Filter.cc ConfusionMatrix.cc svm.cpp \
 	CostFactorySVM.cc
 am__objects_1 =
-am__objects_2 = $(am__objects_1) $(am__objects_1)
+am__objects_2 = $(am__objects_1)
 am_libalgorithms_la_OBJECTS = $(am__objects_2) Egcs.lo Filter2d.lo \
 	Filter.lo ConfusionMatrix.lo svm.lo CostFactorySVM.lo
 libalgorithms_la_OBJECTS = $(am_libalgorithms_la_OBJECTS)
-AM_V_lt = $(am__v_lt_ at AM_V@)
-am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
 am__v_lt_0 = --silent
 am__v_lt_1 = 
 libalgorithms_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(AM_CXXFLAGS) $(CXXFLAGS) $(libalgorithms_la_LDFLAGS) \
 	$(LDFLAGS) -o $@
-AM_V_P = $(am__v_P_ at AM_V@)
-am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+AM_V_P = $(am__v_P_$(V))
+am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
 am__v_P_0 = false
 am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
 am__v_GEN_0 = @echo "  GEN     " $@;
 am__v_GEN_1 = 
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
 am__v_at_0 = @
 am__v_at_1 = 
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+DEFAULT_INCLUDES = -I. -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
 am__mv = mv -f
@@ -166,16 +175,16 @@ LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_ at AM_V@)
-am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+AM_V_CXX = $(am__v_CXX_$(V))
+am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY))
 am__v_CXX_0 = @echo "  CXX     " $@;
 am__v_CXX_1 = 
 CXXLD = $(CXX)
 CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
 	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
-am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+AM_V_CXXLD = $(am__v_CXXLD_$(V))
+am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY))
 am__v_CXXLD_0 = @echo "  CXXLD   " $@;
 am__v_CXXLD_1 = 
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
@@ -184,16 +193,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_ at AM_V@)
-am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
 am__v_CC_0 = @echo "  CC      " $@;
 am__v_CC_1 = 
 CCLD = $(CC)
 LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
 SOURCES = $(libalgorithms_la_SOURCES)
@@ -205,7 +214,7 @@ am__can_run_installinfo = \
   esac
 am__libalgorithms_la_HEADERS_DIST = Egcs.h Filter2d.h Filter.h \
 	StatFactory.h ConfusionMatrix.h svm.h CostFactory.h \
-	CostFactorySVM.h FeatureSelector.h myfann_cpp.h OptFactory.h
+	CostFactorySVM.h FeatureSelector.h myfann_cpp.h
 HEADERS = $(libalgorithms_la_HEADERS)
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 # Read a list of newline-separated strings from the standard input,
@@ -226,148 +235,149 @@ am__define_uniq_tagged_files = \
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_CXXFLAGS = -I$(top_srcdir)/src $(GDAL_CFLAGS) @AM_CXXFLAGS@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AM_LDFLAGS = $(GSL_LIBS) $(GDAL_LDFLAGS) @AM_LDFLAGS@ 
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FANN_CFLAGS = @FANN_CFLAGS@
-FANN_LIBS = @FANN_LIBS@
-FC = @FC@
-FCFLAGS = @FCFLAGS@
-FGREP = @FGREP@
-GDAL_CFLAGS = @GDAL_CFLAGS@
-GDAL_CONFIG = @GDAL_CONFIG@
-GDAL_DEP_LDFLAGS = @GDAL_DEP_LDFLAGS@
-GDAL_LDFLAGS = @GDAL_LDFLAGS@
-GDAL_OGR_ENABLED = @GDAL_OGR_ENABLED@
-GDAL_VERSION = @GDAL_VERSION@
-GREP = @GREP@
-GSL_CFLAGS = @GSL_CFLAGS@
-GSL_LIBS = @GSL_LIBS@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LASCLASSES_OPT = @LASCLASSES_OPT@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NLOPT_CFLAGS = @NLOPT_CFLAGS@
-NLOPT_LIBS = @NLOPT_LIBS@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PKTOOLS_SO_VERSION = @PKTOOLS_SO_VERSION@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_FC = @ac_ct_FC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
+ACLOCAL = aclocal-1.15
+AMTAR = $${TAR-tar}
+AM_CXXFLAGS = -I$(top_srcdir)/src $(GDAL_CFLAGS) 
+AM_DEFAULT_VERBOSITY = 1
+AM_LDFLAGS = $(GSL_LIBS) $(GDAL_LDFLAGS)  
+AR = ar
+AUTOCONF = autoconf
+AUTOHEADER = autoheader
+AUTOMAKE = automake-1.15
+AWK = gawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -g -O2
+CPP = gcc -E
+CPPFLAGS = 
+CXX = g++
+CXXCPP = g++ -E
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS = -g -O2
+CYGPATH_W = echo
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+DLLTOOL = false
+DSYMUTIL = 
+DUMPBIN = 
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+FANN_CFLAGS = 
+FANN_LIBS = -lm -lfann
+FC = gfortran
+FCFLAGS = -g -O2
+FGREP = /bin/grep -F
+GDAL_CFLAGS = -I/usr/include/gdal
+GDAL_CONFIG = /usr/bin/gdal-config
+GDAL_DEP_LDFLAGS = -larmadillo -lproj -lpoppler -lfreexl -L/usr/lib/x86_64-linux-gnu -lgeos_c -lwebp -L/usr/lib -lepsilon -lodbc -lodbcinst -lkmlbase -lkmldom -lkmlengine -lkmlxsd -lkmlregionator -lexpat -lxerces-c -lpthread -lopenjp2 -ljasper -L/usr/lib -L/usr/lib/x86_64-linux-gnu/hdf5/serial -lnetcdf -lhdf5_hl -lhdf5 -lpthread -lz -ldl -lm -lcurl -L/usr/lib/x86_64-linux-gnu/hdf5/serial/lib -lhdf5 -lmfhdfalt -ldfalt -logdi -lgif -ljpeg -lpng -L/usr/lib/x86_64-linux-gnu -lpq -llzma -lz - [...]
+GDAL_LDFLAGS = -L/usr/lib -lgdal
+GDAL_OGR_ENABLED = yes
+GDAL_VERSION = 1.11.3
+GREP = /bin/grep
+GSL_CFLAGS = 
+GSL_LIBS = -lgsl -lgslcblas -lm
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+LASCLASSES_OPT = src/lasclasses
+LD = /usr/bin/ld -m elf_x86_64
+LDFLAGS = 
+LIBOBJS = 
+LIBS = 
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LIPO = 
+LN_S = ln -s
+LTLIBOBJS = 
+LT_SYS_LIBRARY_PATH = 
+MAKEINFO = makeinfo
+MANIFEST_TOOL = :
+MKDIR_P = /bin/mkdir -p
+NM = /usr/bin/nm -B
+NMEDIT = 
+OBJDUMP = objdump
+OBJEXT = o
+OTOOL = 
+OTOOL64 = 
+PACKAGE = pktools
+PACKAGE_BUGREPORT = kempenep at gmail.com
+PACKAGE_NAME = pktools
+PACKAGE_STRING = pktools 2.6.7
+PACKAGE_TARNAME = pktools
+PACKAGE_URL = 
+PACKAGE_VERSION = 2.6.7
+PATH_SEPARATOR = :
+PKG_CONFIG = /usr/bin/pkg-config
+PKG_CONFIG_LIBDIR = 
+PKG_CONFIG_PATH = 
+PKTOOLS_SO_VERSION = 1:6:0
+RANLIB = ranlib
+SED = /bin/sed
+SET_MAKE = 
+SHELL = /bin/bash
+STRIP = strip
+VERSION = 2.6.7
+abs_builddir = /home/kempenep/pktools/src/algorithms
+abs_srcdir = /home/kempenep/pktools/src/algorithms
+abs_top_builddir = /home/kempenep/pktools
+abs_top_srcdir = /home/kempenep/pktools
+ac_ct_AR = ar
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+ac_ct_DUMPBIN = 
+ac_ct_FC = gfortran
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = $${TAR-tar} chof - "$$tardir"
+am__untar = $${TAR-tar} xf -
+bindir = ${exec_prefix}/bin
+build = x86_64-pc-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = pc
+builddir = .
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = x86_64-pc-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = pc
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = ${SHELL} /home/kempenep/pktools/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = $(MKDIR_P)
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+runstatedir = ${localstatedir}/run
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = ${prefix}/etc
+target_alias = 
+top_build_prefix = ../../
+top_builddir = ../..
+top_srcdir = ../..
 
 ###############################################################################
 # THE PROGRAMS TO BUILD
@@ -391,7 +401,11 @@ libalgorithms_la_LDFLAGS = -version-info $(PKTOOLS_SO_VERSION) $(AM_LDFLAGS)
 # the list of header files that belong to the library (to be installed later)
 libalgorithms_la_HEADERS = Egcs.h Filter2d.h Filter.h StatFactory.h \
 	ConfusionMatrix.h svm.h CostFactory.h CostFactorySVM.h \
-	FeatureSelector.h $(am__append_1) $(am__append_2)
+	FeatureSelector.h $(am__append_1)
+
+# if USE_NLOPT
+# libalgorithms_la_HEADERS += OptFactory.h
+# endif
 
 # the sources to add to the library and to add to the source distribution
 libalgorithms_la_SOURCES = $(libalgorithms_la_HEADERS) Egcs.cc Filter2d.cc Filter.cc ConfusionMatrix.cc svm.cpp CostFactorySVM.cc
@@ -411,7 +425,6 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/algorithms/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --foreign src/algorithms/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -474,54 +487,54 @@ mostlyclean-compile:
 distclean-compile:
 	-rm -f *.tab.c
 
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ConfusionMatrix.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/CostFactorySVM.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Egcs.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Filter.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Filter2d.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/svm.Plo at am__quote@
+include ./$(DEPDIR)/ConfusionMatrix.Plo
+include ./$(DEPDIR)/CostFactorySVM.Plo
+include ./$(DEPDIR)/Egcs.Plo
+include ./$(DEPDIR)/Filter.Plo
+include ./$(DEPDIR)/Filter2d.Plo
+include ./$(DEPDIR)/svm.Plo
 
 .cc.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	$(AM_V_CXX)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(CXXCOMPILE) -c -o $@ $<
 
 .cc.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	$(AM_V_CXX)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .cc.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+#	$(AM_V_CXX)source='$<' object='$@' libtool=yes \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(LTCXXCOMPILE) -c -o $@ $<
 
 .cpp.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	$(AM_V_CXX)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(CXXCOMPILE) -c -o $@ $<
 
 .cpp.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	$(AM_V_CXX)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .cpp.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+#	$(AM_V_CXX)source='$<' object='$@' libtool=yes \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(LTCXXCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -759,6 +772,8 @@ uninstall-am: uninstall-libLTLIBRARIES \
 	tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES \
 	uninstall-libalgorithms_laHEADERS
 
+.PRECIOUS: Makefile
+
 ###############################################################################
 
 # list of sources for the binaries
diff --git a/src/algorithms/Makefile.am b/src/algorithms/Makefile.am
index e25cf61..dd77709 100644
--- a/src/algorithms/Makefile.am
+++ b/src/algorithms/Makefile.am
@@ -31,9 +31,9 @@ if USE_FANN
 libalgorithms_la_HEADERS += myfann_cpp.h
 endif
 
-if USE_NLOPT
-libalgorithms_la_HEADERS += OptFactory.h
-endif
+# if USE_NLOPT
+# libalgorithms_la_HEADERS += OptFactory.h
+# endif
 
 # the sources to add to the library and to add to the source distribution
 libalgorithms_la_SOURCES = $(libalgorithms_la_HEADERS) Egcs.cc Filter2d.cc Filter.cc ConfusionMatrix.cc svm.cpp CostFactorySVM.cc
diff --git a/src/algorithms/Makefile.in b/src/algorithms/Makefile.in
index 6cbf186..98fc9e7 100644
--- a/src/algorithms/Makefile.in
+++ b/src/algorithms/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -16,7 +16,17 @@
 
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -80,10 +90,7 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 @USE_FANN_TRUE at am__append_1 = myfann_cpp.h
- at USE_NLOPT_TRUE@am__append_2 = OptFactory.h
 subdir = src/algorithms
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp $(am__libalgorithms_la_HEADERS_DIST)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_lib_gdal.m4 \
 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
@@ -91,6 +98,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ax_lib_gdal.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am \
+	$(am__libalgorithms_la_HEADERS_DIST) $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -128,11 +137,11 @@ LTLIBRARIES = $(lib_LTLIBRARIES)
 libalgorithms_la_LIBADD =
 am__libalgorithms_la_SOURCES_DIST = Egcs.h Filter2d.h Filter.h \
 	StatFactory.h ConfusionMatrix.h svm.h CostFactory.h \
-	CostFactorySVM.h FeatureSelector.h myfann_cpp.h OptFactory.h \
-	Egcs.cc Filter2d.cc Filter.cc ConfusionMatrix.cc svm.cpp \
+	CostFactorySVM.h FeatureSelector.h myfann_cpp.h Egcs.cc \
+	Filter2d.cc Filter.cc ConfusionMatrix.cc svm.cpp \
 	CostFactorySVM.cc
 am__objects_1 =
-am__objects_2 = $(am__objects_1) $(am__objects_1)
+am__objects_2 = $(am__objects_1)
 am_libalgorithms_la_OBJECTS = $(am__objects_2) Egcs.lo Filter2d.lo \
 	Filter.lo ConfusionMatrix.lo svm.lo CostFactorySVM.lo
 libalgorithms_la_OBJECTS = $(am_libalgorithms_la_OBJECTS)
@@ -205,7 +214,7 @@ am__can_run_installinfo = \
   esac
 am__libalgorithms_la_HEADERS_DIST = Egcs.h Filter2d.h Filter.h \
 	StatFactory.h ConfusionMatrix.h svm.h CostFactory.h \
-	CostFactorySVM.h FeatureSelector.h myfann_cpp.h OptFactory.h
+	CostFactorySVM.h FeatureSelector.h myfann_cpp.h
 HEADERS = $(libalgorithms_la_HEADERS)
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 # Read a list of newline-separated strings from the standard input,
@@ -226,6 +235,7 @@ am__define_uniq_tagged_files = \
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -285,11 +295,10 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
-NLOPT_CFLAGS = @NLOPT_CFLAGS@
-NLOPT_LIBS = @NLOPT_LIBS@
 NM = @NM@
 NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
@@ -360,6 +369,7 @@ pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -391,7 +401,11 @@ libalgorithms_la_LDFLAGS = -version-info $(PKTOOLS_SO_VERSION) $(AM_LDFLAGS)
 # the list of header files that belong to the library (to be installed later)
 libalgorithms_la_HEADERS = Egcs.h Filter2d.h Filter.h StatFactory.h \
 	ConfusionMatrix.h svm.h CostFactory.h CostFactorySVM.h \
-	FeatureSelector.h $(am__append_1) $(am__append_2)
+	FeatureSelector.h $(am__append_1)
+
+# if USE_NLOPT
+# libalgorithms_la_HEADERS += OptFactory.h
+# endif
 
 # the sources to add to the library and to add to the source distribution
 libalgorithms_la_SOURCES = $(libalgorithms_la_HEADERS) Egcs.cc Filter2d.cc Filter.cc ConfusionMatrix.cc svm.cpp CostFactorySVM.cc
@@ -411,7 +425,6 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/algorithms/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --foreign src/algorithms/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -759,6 +772,8 @@ uninstall-am: uninstall-libLTLIBRARIES \
 	tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES \
 	uninstall-libalgorithms_laHEADERS
 
+.PRECIOUS: Makefile
+
 ###############################################################################
 
 # list of sources for the binaries
diff --git a/src/algorithms/SVM_COPYRIGHT b/src/algorithms/SVM_COPYRIGHT
new file mode 100644
index 0000000..9280fc0
--- /dev/null
+++ b/src/algorithms/SVM_COPYRIGHT
@@ -0,0 +1,31 @@
+
+Copyright (c) 2000-2012 Chih-Chung Chang and Chih-Jen Lin
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+3. Neither name of copyright holders nor the names of its contributors
+may be used to endorse or promote products derived from this software
+without specific prior written permission.
+
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/src/algorithms/StatFactory.h b/src/algorithms/StatFactory.h
index 03ef699..6e20808 100644
--- a/src/algorithms/StatFactory.h
+++ b/src/algorithms/StatFactory.h
@@ -142,6 +142,9 @@ public:
   template<class T> T mymax(const typename std::vector<T>& v) const;
   template<class T> T mymin(const typename std::vector<T>& v, T minConstraint) const;
   template<class T> T mymax(const typename std::vector<T>& v, T maxConstraint) const;
+  template<class T> T absmin(const typename std::vector<T>& v) const;
+  template<class T> T absmax(const typename std::vector<T>& v) const;
+
 //   template<class T> typename std::vector<T>::const_iterator mymax(const std::vector<T>& v, typename std::vector<T>::const_iterator begin, typename std::vector<T>::const_iterator end) const;
   template<class T> typename std::vector<T>::const_iterator mymin(const typename std::vector<T>& v, typename std::vector<T>::const_iterator begin, typename std::vector<T>::const_iterator end) const;
   template<class T> typename std::vector<T>::iterator mymin(const typename std::vector<T>& v, typename std::vector<T>::iterator begin, typename std::vector<T>::iterator end) const;
@@ -552,15 +555,19 @@ template<class T> inline T StatFactory::mymax(const std::vector<T>& v, T maxCons
   }
 }
 
-template<class T> inline typename std::vector<T>::const_iterator StatFactory::absmax(const std::vector<T>& v, typename std::vector<T>::const_iterator begin, typename std::vector<T>::const_iterator end) const
+template<class T> inline typename std::vector<T>::const_iterator StatFactory::absmin(const std::vector<T>& v, typename std::vector<T>::const_iterator begin, typename std::vector<T>::const_iterator end) const
 {
   bool isValid=false;
+  if(v.empty()){
+    std::string errorString="Error: vector is empty";
+    throw(errorString);
+  }
   typename std::vector<T>::const_iterator tmpIt;
   for (typename std::vector<T>::const_iterator it = begin; it!=end; ++it){
     if(isNoData(*it))
       continue;
     if(isValid){
-      if(abs(*tmpIt)<abs(*it))
+      if(abs(*tmpIt)>abs(*it))
 	tmpIt=it;
     }
     else{
@@ -574,7 +581,21 @@ template<class T> inline typename std::vector<T>::const_iterator StatFactory::ab
     return end;
 }
 
-template<class T> inline typename std::vector<T>::const_iterator StatFactory::absmin(const std::vector<T>& v, typename std::vector<T>::const_iterator begin, typename std::vector<T>::const_iterator end) const
+template<class T> inline T StatFactory::absmin(const std::vector<T>& v) const
+{
+  typename std::vector<T>::const_iterator tmpIt;
+  tmpIt=absmin(v, v.begin(), v.end());
+  if(tmpIt!=v.end())
+    return *tmpIt;
+  else if(m_noDataValues.size())
+    return m_noDataValues[0];
+  else{
+    std::string errorString="Error: no valid data found";
+    throw(errorString);
+  }
+}
+ 
+ template<class T> inline typename std::vector<T>::const_iterator StatFactory::absmax(const std::vector<T>& v, typename std::vector<T>::const_iterator begin, typename std::vector<T>::const_iterator end) const
 {
   bool isValid=false;
   typename std::vector<T>::const_iterator tmpIt;
@@ -582,7 +603,7 @@ template<class T> inline typename std::vector<T>::const_iterator StatFactory::ab
     if(isNoData(*it))
       continue;
     if(isValid){
-      if(abs(*tmpIt)>abs(*it))
+      if(abs(*tmpIt)<abs(*it))
 	tmpIt=it;
     }
     else{
@@ -596,6 +617,20 @@ template<class T> inline typename std::vector<T>::const_iterator StatFactory::ab
     return end;
 }
 
+template<class T> inline T StatFactory::absmax(const std::vector<T>& v) const
+{
+  typename std::vector<T>::const_iterator tmpIt;
+  tmpIt=absmax(v, v.begin(), v.end());
+  if(tmpIt!=v.end())
+    return *tmpIt;
+  else if(m_noDataValues.size())
+    return m_noDataValues[0];
+  else{
+    std::string errorString="Error: no valid data found";
+    throw(errorString);
+  }
+}
+ 
 template<class T> inline void StatFactory::minmax(const std::vector<T>& v, typename std::vector<T>::const_iterator begin, typename std::vector<T>::const_iterator end, T& theMin, T& theMax) const
 {
   bool isConstraint=(theMax>theMin);
@@ -1123,9 +1158,9 @@ template<class T> T  StatFactory::percentile(const std::vector<T>& input, typena
     s<<"Error: input is empty";
     throw(s.str());
   }
-  std::vector<T> inputSort;
+  std::vector<double> inputSort;
   inputSort.assign(begin,end);
-  typename std::vector<T>::iterator vit=inputSort.begin();
+  typename std::vector<double>::iterator vit=inputSort.begin();
   while(vit!=inputSort.end()){
     if(maximum>minimum){
       if(*vit<minimum||*vit>maximum)
diff --git a/src/algorithms/libalgorithms.la b/src/algorithms/libalgorithms.la
new file mode 100644
index 0000000..ab02e46
--- /dev/null
+++ b/src/algorithms/libalgorithms.la
@@ -0,0 +1,41 @@
+# libalgorithms.la - a libtool library file
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='libalgorithms.so.1'
+
+# Names of this library.
+library_names='libalgorithms.so.1.0.6 libalgorithms.so.1 libalgorithms.so'
+
+# The name of the static archive.
+old_library='libalgorithms.a'
+
+# Linker flags that cannot go in dependency_libs.
+inherited_linker_flags=''
+
+# Libraries that this one depends upon.
+dependency_libs=' -lgsl -lgslcblas -L/usr/lib -lgdal'
+
+# Names of additional weak libraries provided by this library
+weak_library_names=''
+
+# Version information for libalgorithms.
+current=1
+age=0
+revision=6
+
+# Is this an already installed library?
+installed=no
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=no
+
+# Files to dlopen/dlpreopen
+dlopen=''
+dlpreopen=''
+
+# Directory that this library needs to be installed in:
+libdir='/usr/local/lib'
diff --git a/src/apps/Makefile.in b/src/apps/Makefile
similarity index 56%
copy from src/apps/Makefile.in
copy to src/apps/Makefile
index 7160b4a..af0161b 100644
--- a/src/apps/Makefile.in
+++ b/src/apps/Makefile
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
-# @configure_input@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# src/apps/Makefile.  Generated from Makefile.in by configure.
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -12,10 +12,20 @@
 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 # PARTICULAR PURPOSE.
 
- at SET_MAKE@
 
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+
+
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -60,10 +70,10 @@ am__make_running_with_option = \
   test $$has_opt = yes
 am__make_dryrun = (target_option=n; $(am__make_running_with_option))
 am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
+pkgdatadir = $(datadir)/pktools
+pkgincludedir = $(includedir)/pktools
+pkglibdir = $(libdir)/pktools
+pkglibexecdir = $(libexecdir)/pktools
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -76,28 +86,26 @@ POST_INSTALL = :
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
+build_triplet = x86_64-pc-linux-gnu
+host_triplet = x86_64-pc-linux-gnu
 bin_PROGRAMS = pkinfo$(EXEEXT) pkcrop$(EXEEXT) pkdiff$(EXEEXT) \
 	pkgetmask$(EXEEXT) pksetmask$(EXEEXT) pkcreatect$(EXEEXT) \
 	pkdumpimg$(EXEEXT) pkdumpogr$(EXEEXT) pksieve$(EXEEXT) \
 	pkstat$(EXEEXT) pkstatascii$(EXEEXT) pkstatogr$(EXEEXT) \
-	pkstatprofile$(EXEEXT) pkegcs$(EXEEXT) pkextract$(EXEEXT) \
-	pkfillnodata$(EXEEXT) pkfilter$(EXEEXT) pkfilterdem$(EXEEXT) \
-	pkfilterascii$(EXEEXT) pkdsm2shadow$(EXEEXT) \
-	pkcomposite$(EXEEXT) pkpolygonize$(EXEEXT) \
-	pkascii2img$(EXEEXT) pksvm$(EXEEXT) pkfssvm$(EXEEXT) \
-	pkascii2ogr$(EXEEXT) pkreclass$(EXEEXT) pkkalman$(EXEEXT) \
-	$(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3)
+	pkstatprofile$(EXEEXT) pkegcs$(EXEEXT) pkextractimg$(EXEEXT) \
+	pkextractogr$(EXEEXT) pkfillnodata$(EXEEXT) pkfilter$(EXEEXT) \
+	pkfilterdem$(EXEEXT) pkfilterascii$(EXEEXT) \
+	pkdsm2shadow$(EXEEXT) pkcomposite$(EXEEXT) \
+	pkpolygonize$(EXEEXT) pkascii2img$(EXEEXT) pksvm$(EXEEXT) \
+	pkfssvm$(EXEEXT) pkoptsvm$(EXEEXT) pkascii2ogr$(EXEEXT) \
+	pkreclass$(EXEEXT) pkkalman$(EXEEXT) $(am__EXEEXT_1) \
+	$(am__EXEEXT_2)
 
 # the program to build but not install (the names of the final binaries)
 #noinst_PROGRAMS = pkkalman
- at USE_FANN_TRUE@am__append_1 = pkann pkfsann pkregann
- at USE_LAS_TRUE@am__append_2 = pklas2img
- at USE_NLOPT_TRUE@am__append_3 = pkoptsvm
+am__append_1 = pkann pkfsann pkregann
+am__append_2 = pklas2img
 subdir = src/apps
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_lib_gdal.m4 \
 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
@@ -105,29 +113,29 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ax_lib_gdal.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
- at USE_FANN_TRUE@am__EXEEXT_1 = pkann$(EXEEXT) pkfsann$(EXEEXT) \
- at USE_FANN_TRUE@	pkregann$(EXEEXT)
- at USE_LAS_TRUE@am__EXEEXT_2 = pklas2img$(EXEEXT)
- at USE_NLOPT_TRUE@am__EXEEXT_3 = pkoptsvm$(EXEEXT)
+am__EXEEXT_1 = pkann$(EXEEXT) pkfsann$(EXEEXT) \
+	pkregann$(EXEEXT)
+am__EXEEXT_2 = pklas2img$(EXEEXT)
 am__installdirs = "$(DESTDIR)$(bindir)"
 PROGRAMS = $(bin_PROGRAMS)
 am__pkann_SOURCES_DIST = $(top_srcdir)/src/algorithms/myfann_cpp.h \
 	pkann.cc
- at USE_FANN_TRUE@am_pkann_OBJECTS = pkann-pkann.$(OBJEXT)
+am_pkann_OBJECTS = pkann-pkann.$(OBJEXT)
 pkann_OBJECTS = $(am_pkann_OBJECTS)
 am__DEPENDENCIES_1 =
 am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
 	$(top_builddir)/src/algorithms/libalgorithms.la \
 	$(top_builddir)/src/imageclasses/libimageClasses.la \
 	$(top_builddir)/src/fileclasses/libfileClasses.la
- at USE_FANN_TRUE@pkann_DEPENDENCIES = $(am__DEPENDENCIES_1) \
- at USE_FANN_TRUE@	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
-AM_V_lt = $(am__v_lt_ at AM_V@)
-am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+pkann_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
 am__v_lt_0 = --silent
 am__v_lt_1 = 
 pkann_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
@@ -187,9 +195,12 @@ pkdumpogr_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
 am_pkegcs_OBJECTS = pkegcs.$(OBJEXT)
 pkegcs_OBJECTS = $(am_pkegcs_OBJECTS)
 pkegcs_DEPENDENCIES = $(am__DEPENDENCIES_2)
-am_pkextract_OBJECTS = pkextract.$(OBJEXT)
-pkextract_OBJECTS = $(am_pkextract_OBJECTS)
-pkextract_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_pkextractimg_OBJECTS = pkextractimg.$(OBJEXT)
+pkextractimg_OBJECTS = $(am_pkextractimg_OBJECTS)
+pkextractimg_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_pkextractogr_OBJECTS = pkextractogr.$(OBJEXT)
+pkextractogr_OBJECTS = $(am_pkextractogr_OBJECTS)
+pkextractogr_DEPENDENCIES = $(am__DEPENDENCIES_2)
 am_pkfillnodata_OBJECTS = pkfillnodata.$(OBJEXT)
 pkfillnodata_OBJECTS = $(am_pkfillnodata_OBJECTS)
 pkfillnodata_LDADD = $(LDADD)
@@ -211,42 +222,38 @@ pkfilterdem_DEPENDENCIES =
 am__pkfsann_SOURCES_DIST = $(top_srcdir)/src/algorithms/myfann_cpp.h \
 	$(top_srcdir)/src/algorithms/CostFactory.h pkfsann.h \
 	pkfsann.cc
- at USE_FANN_TRUE@am_pkfsann_OBJECTS = pkfsann-pkfsann.$(OBJEXT)
+am_pkfsann_OBJECTS = pkfsann-pkfsann.$(OBJEXT)
 pkfsann_OBJECTS = $(am_pkfsann_OBJECTS)
- at USE_FANN_TRUE@pkfsann_DEPENDENCIES = $(am__DEPENDENCIES_1) \
- at USE_FANN_TRUE@	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- at USE_FANN_TRUE@	$(am__DEPENDENCIES_2)
+pkfsann_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_2)
 pkfsann_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(pkfsann_CXXFLAGS) \
 	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_pkfssvm_OBJECTS = svm.$(OBJEXT) pkfssvm.$(OBJEXT)
+am__dirstamp = $(am__leading_dot)dirstamp
+am_pkfssvm_OBJECTS = $(top_srcdir)/src/algorithms/svm.$(OBJEXT) \
+	pkfssvm.$(OBJEXT)
 pkfssvm_OBJECTS = $(am_pkfssvm_OBJECTS)
 pkfssvm_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
 am_pkgetmask_OBJECTS = pkgetmask.$(OBJEXT)
 pkgetmask_OBJECTS = $(am_pkgetmask_OBJECTS)
-pkgetmask_LDADD = $(LDADD)
-pkgetmask_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(top_builddir)/src/algorithms/libalgorithms.la \
-	$(top_builddir)/src/imageclasses/libimageClasses.la \
-	$(top_builddir)/src/fileclasses/libfileClasses.la
+pkgetmask_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am_pkinfo_OBJECTS = pkinfo.$(OBJEXT)
 pkinfo_OBJECTS = $(am_pkinfo_OBJECTS)
 pkinfo_DEPENDENCIES = $(am__DEPENDENCIES_2)
-am_pkkalman_OBJECTS = pkkalman.$(OBJEXT) ImgRegression.$(OBJEXT)
+am_pkkalman_OBJECTS = pkkalman.$(OBJEXT) \
+	$(top_srcdir)/src/algorithms/ImgRegression.$(OBJEXT)
 pkkalman_OBJECTS = $(am_pkkalman_OBJECTS)
 pkkalman_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
 am__pklas2img_SOURCES_DIST = pklas2img.cc
- at USE_LAS_TRUE@am_pklas2img_OBJECTS = pklas2img.$(OBJEXT)
+am_pklas2img_OBJECTS = pklas2img.$(OBJEXT)
 pklas2img_OBJECTS = $(am_pklas2img_OBJECTS)
- at USE_LAS_TRUE@pklas2img_DEPENDENCIES =  \
- at USE_LAS_TRUE@	$(top_srcdir)/src/lasclasses/liblasClasses.la \
- at USE_LAS_TRUE@	$(am__DEPENDENCIES_2)
-am__pkoptsvm_SOURCES_DIST = $(top_srcdir)/src/algorithms/OptFactory.h \
-	$(top_srcdir)/src/algorithms/CostFactorySVM.h pkoptsvm.cc
- at USE_NLOPT_TRUE@am_pkoptsvm_OBJECTS = pkoptsvm.$(OBJEXT)
+pklas2img_DEPENDENCIES =  \
+	$(top_srcdir)/src/lasclasses/liblasClasses.la \
+	$(am__DEPENDENCIES_2)
+am_pkoptsvm_OBJECTS = pkoptsvm.$(OBJEXT)
 pkoptsvm_OBJECTS = $(am_pkoptsvm_OBJECTS)
- at USE_NLOPT_TRUE@pkoptsvm_DEPENDENCIES = $(am__DEPENDENCIES_1) \
- at USE_NLOPT_TRUE@	$(am__DEPENDENCIES_2)
+pkoptsvm_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
 am_pkpolygonize_OBJECTS = pkpolygonize.$(OBJEXT)
 pkpolygonize_OBJECTS = $(am_pkpolygonize_OBJECTS)
 pkpolygonize_LDADD = $(LDADD)
@@ -264,21 +271,17 @@ pkreclass_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
 	$(top_builddir)/src/fileclasses/libfileClasses.la
 am__pkregann_SOURCES_DIST = $(top_srcdir)/src/algorithms/myfann_cpp.h \
 	pkregann.cc
- at USE_FANN_TRUE@am_pkregann_OBJECTS = pkregann-pkregann.$(OBJEXT)
+am_pkregann_OBJECTS = pkregann-pkregann.$(OBJEXT)
 pkregann_OBJECTS = $(am_pkregann_OBJECTS)
- at USE_FANN_TRUE@pkregann_DEPENDENCIES = $(am__DEPENDENCIES_1) \
- at USE_FANN_TRUE@	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- at USE_FANN_TRUE@	$(am__DEPENDENCIES_2)
+pkregann_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_2)
 pkregann_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(pkregann_CXXFLAGS) \
 	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
 am_pksetmask_OBJECTS = pksetmask.$(OBJEXT)
 pksetmask_OBJECTS = $(am_pksetmask_OBJECTS)
-pksetmask_LDADD = $(LDADD)
-pksetmask_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(top_builddir)/src/algorithms/libalgorithms.la \
-	$(top_builddir)/src/imageclasses/libimageClasses.la \
-	$(top_builddir)/src/fileclasses/libfileClasses.la
+pksetmask_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am_pksieve_OBJECTS = pksieve.$(OBJEXT)
 pksieve_OBJECTS = $(am_pksieve_OBJECTS)
 pksieve_LDADD = $(LDADD)
@@ -286,7 +289,9 @@ pksieve_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
 	$(top_builddir)/src/algorithms/libalgorithms.la \
 	$(top_builddir)/src/imageclasses/libimageClasses.la \
 	$(top_builddir)/src/fileclasses/libfileClasses.la
-am_pkstat_OBJECTS = ImgRegression.$(OBJEXT) pkstat.$(OBJEXT)
+am_pkstat_OBJECTS =  \
+	$(top_srcdir)/src/algorithms/ImgRegression.$(OBJEXT) \
+	pkstat.$(OBJEXT)
 pkstat_OBJECTS = $(am_pkstat_OBJECTS)
 pkstat_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
 am_pkstatascii_OBJECTS = pkstatascii.$(OBJEXT)
@@ -299,22 +304,23 @@ am_pkstatprofile_OBJECTS = pkstatprofile.$(OBJEXT)
 pkstatprofile_OBJECTS = $(am_pkstatprofile_OBJECTS)
 pkstatprofile_DEPENDENCIES = $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_2)
-am_pksvm_OBJECTS = svm.$(OBJEXT) pksvm.$(OBJEXT)
+am_pksvm_OBJECTS = $(top_srcdir)/src/algorithms/svm.$(OBJEXT) \
+	pksvm.$(OBJEXT)
 pksvm_OBJECTS = $(am_pksvm_OBJECTS)
 pksvm_DEPENDENCIES =
-AM_V_P = $(am__v_P_ at AM_V@)
-am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+AM_V_P = $(am__v_P_$(V))
+am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
 am__v_P_0 = false
 am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
 am__v_GEN_0 = @echo "  GEN     " $@;
 am__v_GEN_1 = 
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
 am__v_at_0 = @
 am__v_at_1 = 
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+DEFAULT_INCLUDES = -I. -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
 am__mv = mv -f
@@ -324,16 +330,16 @@ LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_ at AM_V@)
-am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+AM_V_CXX = $(am__v_CXX_$(V))
+am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY))
 am__v_CXX_0 = @echo "  CXX     " $@;
 am__v_CXX_1 = 
 CXXLD = $(CXX)
 CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
 	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
-am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+AM_V_CXXLD = $(am__v_CXXLD_$(V))
+am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY))
 am__v_CXXLD_0 = @echo "  CXXLD   " $@;
 am__v_CXXLD_1 = 
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
@@ -342,45 +348,47 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_ at AM_V@)
-am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
 am__v_CC_0 = @echo "  CC      " $@;
 am__v_CC_1 = 
 CCLD = $(CC)
 LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
 SOURCES = $(pkann_SOURCES) $(pkascii2img_SOURCES) \
 	$(pkascii2ogr_SOURCES) $(pkcomposite_SOURCES) \
 	$(pkcreatect_SOURCES) $(pkcrop_SOURCES) $(pkdiff_SOURCES) \
 	$(pkdsm2shadow_SOURCES) $(pkdumpimg_SOURCES) \
-	$(pkdumpogr_SOURCES) $(pkegcs_SOURCES) $(pkextract_SOURCES) \
-	$(pkfillnodata_SOURCES) $(pkfilter_SOURCES) \
-	$(pkfilterascii_SOURCES) $(pkfilterdem_SOURCES) \
-	$(pkfsann_SOURCES) $(pkfssvm_SOURCES) $(pkgetmask_SOURCES) \
-	$(pkinfo_SOURCES) $(pkkalman_SOURCES) $(pklas2img_SOURCES) \
-	$(pkoptsvm_SOURCES) $(pkpolygonize_SOURCES) \
-	$(pkreclass_SOURCES) $(pkregann_SOURCES) $(pksetmask_SOURCES) \
-	$(pksieve_SOURCES) $(pkstat_SOURCES) $(pkstatascii_SOURCES) \
-	$(pkstatogr_SOURCES) $(pkstatprofile_SOURCES) $(pksvm_SOURCES)
+	$(pkdumpogr_SOURCES) $(pkegcs_SOURCES) $(pkextractimg_SOURCES) \
+	$(pkextractogr_SOURCES) $(pkfillnodata_SOURCES) \
+	$(pkfilter_SOURCES) $(pkfilterascii_SOURCES) \
+	$(pkfilterdem_SOURCES) $(pkfsann_SOURCES) $(pkfssvm_SOURCES) \
+	$(pkgetmask_SOURCES) $(pkinfo_SOURCES) $(pkkalman_SOURCES) \
+	$(pklas2img_SOURCES) $(pkoptsvm_SOURCES) \
+	$(pkpolygonize_SOURCES) $(pkreclass_SOURCES) \
+	$(pkregann_SOURCES) $(pksetmask_SOURCES) $(pksieve_SOURCES) \
+	$(pkstat_SOURCES) $(pkstatascii_SOURCES) $(pkstatogr_SOURCES) \
+	$(pkstatprofile_SOURCES) $(pksvm_SOURCES)
 DIST_SOURCES = $(am__pkann_SOURCES_DIST) $(pkascii2img_SOURCES) \
 	$(pkascii2ogr_SOURCES) $(pkcomposite_SOURCES) \
 	$(pkcreatect_SOURCES) $(pkcrop_SOURCES) $(pkdiff_SOURCES) \
 	$(pkdsm2shadow_SOURCES) $(pkdumpimg_SOURCES) \
-	$(pkdumpogr_SOURCES) $(pkegcs_SOURCES) $(pkextract_SOURCES) \
-	$(pkfillnodata_SOURCES) $(pkfilter_SOURCES) \
-	$(pkfilterascii_SOURCES) $(pkfilterdem_SOURCES) \
-	$(am__pkfsann_SOURCES_DIST) $(pkfssvm_SOURCES) \
-	$(pkgetmask_SOURCES) $(pkinfo_SOURCES) $(pkkalman_SOURCES) \
-	$(am__pklas2img_SOURCES_DIST) $(am__pkoptsvm_SOURCES_DIST) \
-	$(pkpolygonize_SOURCES) $(pkreclass_SOURCES) \
-	$(am__pkregann_SOURCES_DIST) $(pksetmask_SOURCES) \
-	$(pksieve_SOURCES) $(pkstat_SOURCES) $(pkstatascii_SOURCES) \
-	$(pkstatogr_SOURCES) $(pkstatprofile_SOURCES) $(pksvm_SOURCES)
+	$(pkdumpogr_SOURCES) $(pkegcs_SOURCES) $(pkextractimg_SOURCES) \
+	$(pkextractogr_SOURCES) $(pkfillnodata_SOURCES) \
+	$(pkfilter_SOURCES) $(pkfilterascii_SOURCES) \
+	$(pkfilterdem_SOURCES) $(am__pkfsann_SOURCES_DIST) \
+	$(pkfssvm_SOURCES) $(pkgetmask_SOURCES) $(pkinfo_SOURCES) \
+	$(pkkalman_SOURCES) $(am__pklas2img_SOURCES_DIST) \
+	$(pkoptsvm_SOURCES) $(pkpolygonize_SOURCES) \
+	$(pkreclass_SOURCES) $(am__pkregann_SOURCES_DIST) \
+	$(pksetmask_SOURCES) $(pksieve_SOURCES) $(pkstat_SOURCES) \
+	$(pkstatascii_SOURCES) $(pkstatogr_SOURCES) \
+	$(pkstatprofile_SOURCES) $(pksvm_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -405,162 +413,167 @@ am__define_uniq_tagged_files = \
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_CXXFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/src/base $(GDAL_CFLAGS) @AM_CXXFLAGS@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AM_LDFLAGS = $(GSL_LIBS) $(GDAL_LDFLAGS) $(top_builddir)/src/algorithms/libalgorithms.la $(top_builddir)/src/imageclasses/libimageClasses.la $(top_builddir)/src/fileclasses/libfileClasses.la @AM_LDFLAGS@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FANN_CFLAGS = @FANN_CFLAGS@
-FANN_LIBS = @FANN_LIBS@
-FC = @FC@
-FCFLAGS = @FCFLAGS@
-FGREP = @FGREP@
-GDAL_CFLAGS = @GDAL_CFLAGS@
-GDAL_CONFIG = @GDAL_CONFIG@
-GDAL_DEP_LDFLAGS = @GDAL_DEP_LDFLAGS@
-GDAL_LDFLAGS = @GDAL_LDFLAGS@
-GDAL_OGR_ENABLED = @GDAL_OGR_ENABLED@
-GDAL_VERSION = @GDAL_VERSION@
-GREP = @GREP@
-GSL_CFLAGS = @GSL_CFLAGS@
-GSL_LIBS = @GSL_LIBS@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LASCLASSES_OPT = @LASCLASSES_OPT@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NLOPT_CFLAGS = @NLOPT_CFLAGS@
-NLOPT_LIBS = @NLOPT_LIBS@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PKTOOLS_SO_VERSION = @PKTOOLS_SO_VERSION@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_FC = @ac_ct_FC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
+ACLOCAL = aclocal-1.15
+AMTAR = $${TAR-tar}
+AM_CXXFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/src/base $(GDAL_CFLAGS) 
+AM_DEFAULT_VERBOSITY = 1
+AM_LDFLAGS = $(GSL_LIBS) $(GDAL_LDFLAGS) $(top_builddir)/src/algorithms/libalgorithms.la $(top_builddir)/src/imageclasses/libimageClasses.la $(top_builddir)/src/fileclasses/libfileClasses.la 
+AR = ar
+AUTOCONF = autoconf
+AUTOHEADER = autoheader
+AUTOMAKE = automake-1.15
+AWK = gawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -g -O2
+CPP = gcc -E
+CPPFLAGS = 
+CXX = g++
+CXXCPP = g++ -E
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS = -g -O2
+CYGPATH_W = echo
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+DLLTOOL = false
+DSYMUTIL = 
+DUMPBIN = 
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+FANN_CFLAGS = 
+FANN_LIBS = -lm -lfann
+FC = gfortran
+FCFLAGS = -g -O2
+FGREP = /bin/grep -F
+GDAL_CFLAGS = -I/usr/include/gdal
+GDAL_CONFIG = /usr/bin/gdal-config
+GDAL_DEP_LDFLAGS = -larmadillo -lproj -lpoppler -lfreexl -L/usr/lib/x86_64-linux-gnu -lgeos_c -lwebp -L/usr/lib -lepsilon -lodbc -lodbcinst -lkmlbase -lkmldom -lkmlengine -lkmlxsd -lkmlregionator -lexpat -lxerces-c -lpthread -lopenjp2 -ljasper -L/usr/lib -L/usr/lib/x86_64-linux-gnu/hdf5/serial -lnetcdf -lhdf5_hl -lhdf5 -lpthread -lz -ldl -lm -lcurl -L/usr/lib/x86_64-linux-gnu/hdf5/serial/lib -lhdf5 -lmfhdfalt -ldfalt -logdi -lgif -ljpeg -lpng -L/usr/lib/x86_64-linux-gnu -lpq -llzma -lz - [...]
+GDAL_LDFLAGS = -L/usr/lib -lgdal
+GDAL_OGR_ENABLED = yes
+GDAL_VERSION = 1.11.3
+GREP = /bin/grep
+GSL_CFLAGS = 
+GSL_LIBS = -lgsl -lgslcblas -lm
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+LASCLASSES_OPT = src/lasclasses
+LD = /usr/bin/ld -m elf_x86_64
+LDFLAGS = 
+LIBOBJS = 
+LIBS = 
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LIPO = 
+LN_S = ln -s
+LTLIBOBJS = 
+LT_SYS_LIBRARY_PATH = 
+MAKEINFO = makeinfo
+MANIFEST_TOOL = :
+MKDIR_P = /bin/mkdir -p
+NM = /usr/bin/nm -B
+NMEDIT = 
+OBJDUMP = objdump
+OBJEXT = o
+OTOOL = 
+OTOOL64 = 
+PACKAGE = pktools
+PACKAGE_BUGREPORT = kempenep at gmail.com
+PACKAGE_NAME = pktools
+PACKAGE_STRING = pktools 2.6.7
+PACKAGE_TARNAME = pktools
+PACKAGE_URL = 
+PACKAGE_VERSION = 2.6.7
+PATH_SEPARATOR = :
+PKG_CONFIG = /usr/bin/pkg-config
+PKG_CONFIG_LIBDIR = 
+PKG_CONFIG_PATH = 
+PKTOOLS_SO_VERSION = 1:6:0
+RANLIB = ranlib
+SED = /bin/sed
+SET_MAKE = 
+SHELL = /bin/bash
+STRIP = strip
+VERSION = 2.6.7
+abs_builddir = /home/kempenep/pktools/src/apps
+abs_srcdir = /home/kempenep/pktools/src/apps
+abs_top_builddir = /home/kempenep/pktools
+abs_top_srcdir = /home/kempenep/pktools
+ac_ct_AR = ar
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+ac_ct_DUMPBIN = 
+ac_ct_FC = gfortran
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = $${TAR-tar} chof - "$$tardir"
+am__untar = $${TAR-tar} xf -
+bindir = ${exec_prefix}/bin
+build = x86_64-pc-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = pc
+builddir = .
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = x86_64-pc-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = pc
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = ${SHELL} /home/kempenep/pktools/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = $(MKDIR_P)
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+runstatedir = ${localstatedir}/run
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = ${prefix}/etc
+target_alias = 
+top_build_prefix = ../../
+top_builddir = ../..
+top_srcdir = ../..
+AUTOMAKE_OPTIONS = subdir-objects
 LDADD = $(GSL_LIBS) $(GDAL_LDFLAGS) $(top_builddir)/src/algorithms/libalgorithms.la $(top_builddir)/src/imageclasses/libimageClasses.la $(top_builddir)/src/fileclasses/libfileClasses.la
- at USE_FANN_TRUE@pkann_SOURCES = $(top_srcdir)/src/algorithms/myfann_cpp.h pkann.cc
- at USE_FANN_TRUE@pkann_CXXFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/src/base $(FANN_CFLAGS) -I$(top_srcdir)/src/algorithms $(AM_CXXFLAGS)
- at USE_FANN_TRUE@pkann_LDADD = $(FANN_LIBS) $(FANN_CFLAGS) $(AM_LDFLAGS) -lgsl
- at USE_FANN_TRUE@pkfsann_SOURCES = $(top_srcdir)/src/algorithms/myfann_cpp.h $(top_srcdir)/src/algorithms/CostFactory.h pkfsann.h pkfsann.cc
- at USE_FANN_TRUE@pkfsann_CXXFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/src/base $(FANN_CFLAGS) -I$(top_srcdir)/src/algorithms $(AM_CXXFLAGS)
- at USE_FANN_TRUE@pkfsann_LDADD = $(GSL_LIBS) $(FANN_LIBS) $(FANN_CFLAGS) $(AM_LDFLAGS) -lalgorithms -lgsl
- at USE_FANN_TRUE@pkregann_SOURCES = $(top_srcdir)/src/algorithms/myfann_cpp.h pkregann.cc
- at USE_FANN_TRUE@pkregann_CXXFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/src/base $(FANN_CFLAGS) -I$(top_srcdir)/src/algorithms $(AM_CXXFLAGS)
- at USE_FANN_TRUE@pkregann_LDADD = $(GSL_LIBS) $(FANN_LIBS) $(FANN_CFLAGS) $(AM_LDFLAGS)
- at USE_LAS_TRUE@pklas2img_SOURCES = pklas2img.cc
- at USE_LAS_TRUE@pklas2img_LDADD = -lgsl $(top_srcdir)/src/lasclasses/liblasClasses.la -llas $(AM_LDFLAGS)
- at USE_NLOPT_TRUE@pkoptsvm_SOURCES = $(top_srcdir)/src/algorithms/OptFactory.h $(top_srcdir)/src/algorithms/CostFactorySVM.h pkoptsvm.cc
- at USE_NLOPT_TRUE@pkoptsvm_LDADD = $(GSL_LIBS) $(AM_LDFLAGS) -lnlopt -lgsl
+pkann_SOURCES = $(top_srcdir)/src/algorithms/myfann_cpp.h pkann.cc
+pkann_CXXFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/src/base $(FANN_CFLAGS) -I$(top_srcdir)/src/algorithms $(AM_CXXFLAGS)
+pkann_LDADD = $(FANN_LIBS) $(FANN_CFLAGS) $(AM_LDFLAGS) -lgsl
+pkfsann_SOURCES = $(top_srcdir)/src/algorithms/myfann_cpp.h $(top_srcdir)/src/algorithms/CostFactory.h pkfsann.h pkfsann.cc
+pkfsann_CXXFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/src/base $(FANN_CFLAGS) -I$(top_srcdir)/src/algorithms $(AM_CXXFLAGS)
+pkfsann_LDADD = $(GSL_LIBS) $(FANN_LIBS) $(FANN_CFLAGS) $(AM_LDFLAGS) -lalgorithms -lgsl
+pkregann_SOURCES = $(top_srcdir)/src/algorithms/myfann_cpp.h pkregann.cc
+pkregann_CXXFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/src/base $(FANN_CFLAGS) -I$(top_srcdir)/src/algorithms $(AM_CXXFLAGS)
+pkregann_LDADD = $(GSL_LIBS) $(FANN_LIBS) $(FANN_CFLAGS) $(AM_LDFLAGS)
+pklas2img_SOURCES = pklas2img.cc
+pklas2img_LDADD = -lgsl $(top_srcdir)/src/lasclasses/liblasClasses.la -llas $(AM_LDFLAGS)
+# if USE_NLOPT
+# bin_PROGRAMS += pkoptsvm
+# pkoptsvm_SOURCES = $(top_srcdir)/src/algorithms/OptFactory.h $(top_srcdir)/src/algorithms/CostFactorySVM.h pkoptsvm.cc
+# pkoptsvm_LDADD = $(GSL_LIBS) $(AM_LDFLAGS) -lnlopt -lgsl
+# endif
 # list of sources for the binaries
 pkinfo_SOURCES = pkinfo.cc
 pkinfo_LDADD = $(AM_LDFLAGS) -lgsl
@@ -569,7 +582,9 @@ pkcrop_LDADD = -lgsl
 pkdiff_SOURCES = pkdiff.cc
 pkdiff_LDADD = -lgsl
 pkgetmask_SOURCES = pkgetmask.cc
+pkgetmask_LDADD = $(GSL_LIBS)
 pksetmask_SOURCES = pksetmask.cc
+pksetmask_LDADD = $(GSL_LIBS)
 pkcreatect_SOURCES = pkcreatect.cc
 pkdumpimg_SOURCES = pkdumpimg.cc
 pkdumpogr_SOURCES = pkdumpogr.h pkdumpogr.cc
@@ -584,8 +599,10 @@ pkstatogr_SOURCES = pkstatogr.cc
 pkstatogr_LDADD = -lgsl
 pkegcs_SOURCES = pkegcs.cc
 pkegcs_LDADD = $(AM_LDFLAGS) -lgsl -lgdal
-pkextract_SOURCES = pkextract.cc
-pkextract_LDADD = $(AM_LDFLAGS) -lgsl -lgdal
+pkextractimg_SOURCES = pkextractimg.cc
+pkextractimg_LDADD = $(AM_LDFLAGS) -lgsl -lgdal
+pkextractogr_SOURCES = pkextractogr.cc
+pkextractogr_LDADD = $(AM_LDFLAGS) -lgsl -lgdal
 pkfillnodata_SOURCES = pkfillnodata.cc
 pkfilter_SOURCES = pkfilter.cc
 pkfilter_LDADD = $(GSL_LIBS) $(AM_LDFLAGS) -lgsl -lgdal
@@ -603,6 +620,8 @@ pksvm_SOURCES = $(top_srcdir)/src/algorithms/svm.h $(top_srcdir)/src/algorithms/
 pksvm_LDADD = -lgsl
 pkfssvm_SOURCES = $(top_srcdir)/src/algorithms/svm.h $(top_srcdir)/src/algorithms/FeatureSelector.h  $(top_srcdir)/src/algorithms/CostFactorySVM.h $(top_srcdir)/src/algorithms/svm.cpp pkfssvm.cc
 pkfssvm_LDADD = -lgsl $(GSL_LIBS) $(AM_LDFLAGS) -lalgorithms
+pkoptsvm_SOURCES = $(top_srcdir)/src/algorithms/CostFactorySVM.h pkoptsvm.cc
+pkoptsvm_LDADD = $(GSL_LIBS) $(AM_LDFLAGS) -lgsl
 pkascii2img_SOURCES = pkascii2img.cc
 pkascii2ogr_SOURCES = pkascii2ogr.cc
 pkreclass_SOURCES = pkreclass.cc
@@ -622,7 +641,6 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/apps/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --foreign src/apps/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -734,9 +752,13 @@ pkegcs$(EXEEXT): $(pkegcs_OBJECTS) $(pkegcs_DEPENDENCIES) $(EXTRA_pkegcs_DEPENDE
 	@rm -f pkegcs$(EXEEXT)
 	$(AM_V_CXXLD)$(CXXLINK) $(pkegcs_OBJECTS) $(pkegcs_LDADD) $(LIBS)
 
-pkextract$(EXEEXT): $(pkextract_OBJECTS) $(pkextract_DEPENDENCIES) $(EXTRA_pkextract_DEPENDENCIES) 
-	@rm -f pkextract$(EXEEXT)
-	$(AM_V_CXXLD)$(CXXLINK) $(pkextract_OBJECTS) $(pkextract_LDADD) $(LIBS)
+pkextractimg$(EXEEXT): $(pkextractimg_OBJECTS) $(pkextractimg_DEPENDENCIES) $(EXTRA_pkextractimg_DEPENDENCIES) 
+	@rm -f pkextractimg$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(pkextractimg_OBJECTS) $(pkextractimg_LDADD) $(LIBS)
+
+pkextractogr$(EXEEXT): $(pkextractogr_OBJECTS) $(pkextractogr_DEPENDENCIES) $(EXTRA_pkextractogr_DEPENDENCIES) 
+	@rm -f pkextractogr$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(pkextractogr_OBJECTS) $(pkextractogr_LDADD) $(LIBS)
 
 pkfillnodata$(EXEEXT): $(pkfillnodata_OBJECTS) $(pkfillnodata_DEPENDENCIES) $(EXTRA_pkfillnodata_DEPENDENCIES) 
 	@rm -f pkfillnodata$(EXEEXT)
@@ -757,6 +779,15 @@ pkfilterdem$(EXEEXT): $(pkfilterdem_OBJECTS) $(pkfilterdem_DEPENDENCIES) $(EXTRA
 pkfsann$(EXEEXT): $(pkfsann_OBJECTS) $(pkfsann_DEPENDENCIES) $(EXTRA_pkfsann_DEPENDENCIES) 
 	@rm -f pkfsann$(EXEEXT)
 	$(AM_V_CXXLD)$(pkfsann_LINK) $(pkfsann_OBJECTS) $(pkfsann_LDADD) $(LIBS)
+$(top_srcdir)/src/algorithms/$(am__dirstamp):
+	@$(MKDIR_P) $(top_srcdir)/src/algorithms
+	@: > $(top_srcdir)/src/algorithms/$(am__dirstamp)
+$(top_srcdir)/src/algorithms/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) $(top_srcdir)/src/algorithms/$(DEPDIR)
+	@: > $(top_srcdir)/src/algorithms/$(DEPDIR)/$(am__dirstamp)
+$(top_srcdir)/src/algorithms/svm.$(OBJEXT):  \
+	$(top_srcdir)/src/algorithms/$(am__dirstamp) \
+	$(top_srcdir)/src/algorithms/$(DEPDIR)/$(am__dirstamp)
 
 pkfssvm$(EXEEXT): $(pkfssvm_OBJECTS) $(pkfssvm_DEPENDENCIES) $(EXTRA_pkfssvm_DEPENDENCIES) 
 	@rm -f pkfssvm$(EXEEXT)
@@ -769,6 +800,9 @@ pkgetmask$(EXEEXT): $(pkgetmask_OBJECTS) $(pkgetmask_DEPENDENCIES) $(EXTRA_pkget
 pkinfo$(EXEEXT): $(pkinfo_OBJECTS) $(pkinfo_DEPENDENCIES) $(EXTRA_pkinfo_DEPENDENCIES) 
 	@rm -f pkinfo$(EXEEXT)
 	$(AM_V_CXXLD)$(CXXLINK) $(pkinfo_OBJECTS) $(pkinfo_LDADD) $(LIBS)
+$(top_srcdir)/src/algorithms/ImgRegression.$(OBJEXT):  \
+	$(top_srcdir)/src/algorithms/$(am__dirstamp) \
+	$(top_srcdir)/src/algorithms/$(DEPDIR)/$(am__dirstamp)
 
 pkkalman$(EXEEXT): $(pkkalman_OBJECTS) $(pkkalman_DEPENDENCIES) $(EXTRA_pkkalman_DEPENDENCIES) 
 	@rm -f pkkalman$(EXEEXT)
@@ -824,157 +858,137 @@ pksvm$(EXEEXT): $(pksvm_OBJECTS) $(pksvm_DEPENDENCIES) $(EXTRA_pksvm_DEPENDENCIE
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
+	-rm -f $(top_srcdir)/src/algorithms/*.$(OBJEXT)
 
 distclean-compile:
 	-rm -f *.tab.c
 
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ImgRegression.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkann-pkann.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkascii2img.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkascii2ogr.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcomposite.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcreatect.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkcrop.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkdiff.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkdsm2shadow.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkdumpimg.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkdumpogr.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkegcs.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkextract.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkfillnodata.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkfilter.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkfilterascii.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkfilterdem.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkfsann-pkfsann.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkfssvm.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkgetmask.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkinfo.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkkalman.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pklas2img.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkoptsvm.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkpolygonize.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkreclass.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkregann-pkregann.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pksetmask.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pksieve.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkstat.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkstatascii.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkstatogr.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkstatprofile.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pksvm.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/svm.Po at am__quote@
+include $(top_srcdir)/src/algorithms/$(DEPDIR)/ImgRegression.Po
+include $(top_srcdir)/src/algorithms/$(DEPDIR)/svm.Po
+include ./$(DEPDIR)/pkann-pkann.Po
+include ./$(DEPDIR)/pkascii2img.Po
+include ./$(DEPDIR)/pkascii2ogr.Po
+include ./$(DEPDIR)/pkcomposite.Po
+include ./$(DEPDIR)/pkcreatect.Po
+include ./$(DEPDIR)/pkcrop.Po
+include ./$(DEPDIR)/pkdiff.Po
+include ./$(DEPDIR)/pkdsm2shadow.Po
+include ./$(DEPDIR)/pkdumpimg.Po
+include ./$(DEPDIR)/pkdumpogr.Po
+include ./$(DEPDIR)/pkegcs.Po
+include ./$(DEPDIR)/pkextractimg.Po
+include ./$(DEPDIR)/pkextractogr.Po
+include ./$(DEPDIR)/pkfillnodata.Po
+include ./$(DEPDIR)/pkfilter.Po
+include ./$(DEPDIR)/pkfilterascii.Po
+include ./$(DEPDIR)/pkfilterdem.Po
+include ./$(DEPDIR)/pkfsann-pkfsann.Po
+include ./$(DEPDIR)/pkfssvm.Po
+include ./$(DEPDIR)/pkgetmask.Po
+include ./$(DEPDIR)/pkinfo.Po
+include ./$(DEPDIR)/pkkalman.Po
+include ./$(DEPDIR)/pklas2img.Po
+include ./$(DEPDIR)/pkoptsvm.Po
+include ./$(DEPDIR)/pkpolygonize.Po
+include ./$(DEPDIR)/pkreclass.Po
+include ./$(DEPDIR)/pkregann-pkregann.Po
+include ./$(DEPDIR)/pksetmask.Po
+include ./$(DEPDIR)/pksieve.Po
+include ./$(DEPDIR)/pkstat.Po
+include ./$(DEPDIR)/pkstatascii.Po
+include ./$(DEPDIR)/pkstatogr.Po
+include ./$(DEPDIR)/pkstatprofile.Po
+include ./$(DEPDIR)/pksvm.Po
 
 .cc.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+	$(am__mv) $$depbase.Tpo $$depbase.Po
+#	$(AM_V_CXX)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(CXXCOMPILE) -c -o $@ $<
 
 .cc.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+	$(am__mv) $$depbase.Tpo $$depbase.Po
+#	$(AM_V_CXX)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .cc.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+	$(am__mv) $$depbase.Tpo $$depbase.Plo
+#	$(AM_V_CXX)source='$<' object='$@' libtool=yes \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(LTCXXCOMPILE) -c -o $@ $<
 
 pkann-pkann.o: pkann.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pkann_CXXFLAGS) $(CXXFLAGS) -MT pkann-pkann.o -MD -MP -MF $(DEPDIR)/pkann-pkann.Tpo -c -o pkann-pkann.o `test -f 'pkann.cc' || echo '$(srcdir)/'`pkann.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/pkann-pkann.Tpo $(DEPDIR)/pkann-pkann.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='pkann.cc' object='pkann-pkann.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pkann_CXXFLAGS) $(CXXFLAGS) -c -o pkann-pkann.o `test -f 'pkann.cc' || echo '$(srcdir)/'`pkann.cc
+	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pkann_CXXFLAGS) $(CXXFLAGS) -MT pkann-pkann.o -MD -MP -MF $(DEPDIR)/pkann-pkann.Tpo -c -o pkann-pkann.o `test -f 'pkann.cc' || echo '$(srcdir)/'`pkann.cc
+	$(AM_V_at)$(am__mv) $(DEPDIR)/pkann-pkann.Tpo $(DEPDIR)/pkann-pkann.Po
+#	$(AM_V_CXX)source='pkann.cc' object='pkann-pkann.o' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pkann_CXXFLAGS) $(CXXFLAGS) -c -o pkann-pkann.o `test -f 'pkann.cc' || echo '$(srcdir)/'`pkann.cc
 
 pkann-pkann.obj: pkann.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pkann_CXXFLAGS) $(CXXFLAGS) -MT pkann-pkann.obj -MD -MP -MF $(DEPDIR)/pkann-pkann.Tpo -c -o pkann-pkann.obj `if test -f 'pkann.cc'; then $(CYGPATH_W) 'pkann.cc'; else $(CYGPATH_W) '$(srcdir)/pkann.cc'; fi`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/pkann-pkann.Tpo $(DEPDIR)/pkann-pkann.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='pkann.cc' object='pkann-pkann.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pkann_CXXFLAGS) $(CXXFLAGS) -c -o pkann-pkann.obj `if test -f 'pkann.cc'; then $(CYGPATH_W) 'pkann.cc'; else $(CYGPATH_W) '$(srcdir)/pkann.cc'; fi`
+	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pkann_CXXFLAGS) $(CXXFLAGS) -MT pkann-pkann.obj -MD -MP -MF $(DEPDIR)/pkann-pkann.Tpo -c -o pkann-pkann.obj `if test -f 'pkann.cc'; then $(CYGPATH_W) 'pkann.cc'; else $(CYGPATH_W) '$(srcdir)/pkann.cc'; fi`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/pkann-pkann.Tpo $(DEPDIR)/pkann-pkann.Po
+#	$(AM_V_CXX)source='pkann.cc' object='pkann-pkann.obj' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pkann_CXXFLAGS) $(CXXFLAGS) -c -o pkann-pkann.obj `if test -f 'pkann.cc'; then $(CYGPATH_W) 'pkann.cc'; else $(CYGPATH_W) '$(srcdir)/pkann.cc'; fi`
 
 pkfsann-pkfsann.o: pkfsann.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pkfsann_CXXFLAGS) $(CXXFLAGS) -MT pkfsann-pkfsann.o -MD -MP -MF $(DEPDIR)/pkfsann-pkfsann.Tpo -c -o pkfsann-pkfsann.o `test -f 'pkfsann.cc' || echo '$(srcdir)/'`pkfsann.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/pkfsann-pkfsann.Tpo $(DEPDIR)/pkfsann-pkfsann.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='pkfsann.cc' object='pkfsann-pkfsann.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pkfsann_CXXFLAGS) $(CXXFLAGS) -c -o pkfsann-pkfsann.o `test -f 'pkfsann.cc' || echo '$(srcdir)/'`pkfsann.cc
+	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pkfsann_CXXFLAGS) $(CXXFLAGS) -MT pkfsann-pkfsann.o -MD -MP -MF $(DEPDIR)/pkfsann-pkfsann.Tpo -c -o pkfsann-pkfsann.o `test -f 'pkfsann.cc' || echo '$(srcdir)/'`pkfsann.cc
+	$(AM_V_at)$(am__mv) $(DEPDIR)/pkfsann-pkfsann.Tpo $(DEPDIR)/pkfsann-pkfsann.Po
+#	$(AM_V_CXX)source='pkfsann.cc' object='pkfsann-pkfsann.o' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pkfsann_CXXFLAGS) $(CXXFLAGS) -c -o pkfsann-pkfsann.o `test -f 'pkfsann.cc' || echo '$(srcdir)/'`pkfsann.cc
 
 pkfsann-pkfsann.obj: pkfsann.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pkfsann_CXXFLAGS) $(CXXFLAGS) -MT pkfsann-pkfsann.obj -MD -MP -MF $(DEPDIR)/pkfsann-pkfsann.Tpo -c -o pkfsann-pkfsann.obj `if test -f 'pkfsann.cc'; then $(CYGPATH_W) 'pkfsann.cc'; else $(CYGPATH_W) '$(srcdir)/pkfsann.cc'; fi`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/pkfsann-pkfsann.Tpo $(DEPDIR)/pkfsann-pkfsann.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='pkfsann.cc' object='pkfsann-pkfsann.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pkfsann_CXXFLAGS) $(CXXFLAGS) -c -o pkfsann-pkfsann.obj `if test -f 'pkfsann.cc'; then $(CYGPATH_W) 'pkfsann.cc'; else $(CYGPATH_W) '$(srcdir)/pkfsann.cc'; fi`
-
-svm.o: $(top_srcdir)/src/algorithms/svm.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT svm.o -MD -MP -MF $(DEPDIR)/svm.Tpo -c -o svm.o `test -f '$(top_srcdir)/src/algorithms/svm.cpp' || echo '$(srcdir)/'`$(top_srcdir)/src/algorithms/svm.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/svm.Tpo $(DEPDIR)/svm.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/algorithms/svm.cpp' object='svm.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o svm.o `test -f '$(top_srcdir)/src/algorithms/svm.cpp' || echo '$(srcdir)/'`$(top_srcdir)/src/algorithms/svm.cpp
-
-svm.obj: $(top_srcdir)/src/algorithms/svm.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT svm.obj -MD -MP -MF $(DEPDIR)/svm.Tpo -c -o svm.obj `if test -f '$(top_srcdir)/src/algorithms/svm.cpp'; then $(CYGPATH_W) '$(top_srcdir)/src/algorithms/svm.cpp'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/algorithms/svm.cpp'; fi`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/svm.Tpo $(DEPDIR)/svm.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/algorithms/svm.cpp' object='svm.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o svm.obj `if test -f '$(top_srcdir)/src/algorithms/svm.cpp'; then $(CYGPATH_W) '$(top_srcdir)/src/algorithms/svm.cpp'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/algorithms/svm.cpp'; fi`
-
-ImgRegression.o: $(top_srcdir)/src/algorithms/ImgRegression.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ImgRegression.o -MD -MP -MF $(DEPDIR)/ImgRegression.Tpo -c -o ImgRegression.o `test -f '$(top_srcdir)/src/algorithms/ImgRegression.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/algorithms/ImgRegression.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/ImgRegression.Tpo $(DEPDIR)/ImgRegression.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/algorithms/ImgRegression.cc' object='ImgRegression.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ImgRegression.o `test -f '$(top_srcdir)/src/algorithms/ImgRegression.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/algorithms/ImgRegression.cc
-
-ImgRegression.obj: $(top_srcdir)/src/algorithms/ImgRegression.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ImgRegression.obj -MD -MP -MF $(DEPDIR)/ImgRegression.Tpo -c -o ImgRegression.obj `if test -f '$(top_srcdir)/src/algorithms/ImgRegression.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/algorithms/ImgRegression.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/algorithms/ImgRegression.cc'; fi`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/ImgRegression.Tpo $(DEPDIR)/ImgRegression.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/algorithms/ImgRegression.cc' object='ImgRegression.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ImgRegression.obj `if test -f '$(top_srcdir)/src/algorithms/ImgRegression.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/algorithms/ImgRegression.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/algorithms/ImgRegression.cc'; fi`
+	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pkfsann_CXXFLAGS) $(CXXFLAGS) -MT pkfsann-pkfsann.obj -MD -MP -MF $(DEPDIR)/pkfsann-pkfsann.Tpo -c -o pkfsann-pkfsann.obj `if test -f 'pkfsann.cc'; then $(CYGPATH_W) 'pkfsann.cc'; else $(CYGPATH_W) '$(srcdir)/pkfsann.cc'; fi`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/pkfsann-pkfsann.Tpo $(DEPDIR)/pkfsann-pkfsann.Po
+#	$(AM_V_CXX)source='pkfsann.cc' object='pkfsann-pkfsann.obj' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pkfsann_CXXFLAGS) $(CXXFLAGS) -c -o pkfsann-pkfsann.obj `if test -f 'pkfsann.cc'; then $(CYGPATH_W) 'pkfsann.cc'; else $(CYGPATH_W) '$(srcdir)/pkfsann.cc'; fi`
 
 pkregann-pkregann.o: pkregann.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pkregann_CXXFLAGS) $(CXXFLAGS) -MT pkregann-pkregann.o -MD -MP -MF $(DEPDIR)/pkregann-pkregann.Tpo -c -o pkregann-pkregann.o `test -f 'pkregann.cc' || echo '$(srcdir)/'`pkregann.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/pkregann-pkregann.Tpo $(DEPDIR)/pkregann-pkregann.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='pkregann.cc' object='pkregann-pkregann.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pkregann_CXXFLAGS) $(CXXFLAGS) -c -o pkregann-pkregann.o `test -f 'pkregann.cc' || echo '$(srcdir)/'`pkregann.cc
+	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pkregann_CXXFLAGS) $(CXXFLAGS) -MT pkregann-pkregann.o -MD -MP -MF $(DEPDIR)/pkregann-pkregann.Tpo -c -o pkregann-pkregann.o `test -f 'pkregann.cc' || echo '$(srcdir)/'`pkregann.cc
+	$(AM_V_at)$(am__mv) $(DEPDIR)/pkregann-pkregann.Tpo $(DEPDIR)/pkregann-pkregann.Po
+#	$(AM_V_CXX)source='pkregann.cc' object='pkregann-pkregann.o' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pkregann_CXXFLAGS) $(CXXFLAGS) -c -o pkregann-pkregann.o `test -f 'pkregann.cc' || echo '$(srcdir)/'`pkregann.cc
 
 pkregann-pkregann.obj: pkregann.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pkregann_CXXFLAGS) $(CXXFLAGS) -MT pkregann-pkregann.obj -MD -MP -MF $(DEPDIR)/pkregann-pkregann.Tpo -c -o pkregann-pkregann.obj `if test -f 'pkregann.cc'; then $(CYGPATH_W) 'pkregann.cc'; else $(CYGPATH_W) '$(srcdir)/pkregann.cc'; fi`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/pkregann-pkregann.Tpo $(DEPDIR)/pkregann-pkregann.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='pkregann.cc' object='pkregann-pkregann.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pkregann_CXXFLAGS) $(CXXFLAGS) -c -o pkregann-pkregann.obj `if test -f 'pkregann.cc'; then $(CYGPATH_W) 'pkregann.cc'; else $(CYGPATH_W) '$(srcdir)/pkregann.cc'; fi`
+	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pkregann_CXXFLAGS) $(CXXFLAGS) -MT pkregann-pkregann.obj -MD -MP -MF $(DEPDIR)/pkregann-pkregann.Tpo -c -o pkregann-pkregann.obj `if test -f 'pkregann.cc'; then $(CYGPATH_W) 'pkregann.cc'; else $(CYGPATH_W) '$(srcdir)/pkregann.cc'; fi`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/pkregann-pkregann.Tpo $(DEPDIR)/pkregann-pkregann.Po
+#	$(AM_V_CXX)source='pkregann.cc' object='pkregann-pkregann.obj' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pkregann_CXXFLAGS) $(CXXFLAGS) -c -o pkregann-pkregann.obj `if test -f 'pkregann.cc'; then $(CYGPATH_W) 'pkregann.cc'; else $(CYGPATH_W) '$(srcdir)/pkregann.cc'; fi`
 
 .cpp.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+	$(am__mv) $$depbase.Tpo $$depbase.Po
+#	$(AM_V_CXX)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(CXXCOMPILE) -c -o $@ $<
 
 .cpp.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+	$(am__mv) $$depbase.Tpo $$depbase.Po
+#	$(AM_V_CXX)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .cpp.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+	$(am__mv) $$depbase.Tpo $$depbase.Plo
+#	$(AM_V_CXX)source='$<' object='$@' libtool=yes \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(LTCXXCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -1097,6 +1111,8 @@ clean-generic:
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+	-test -z "$(top_srcdir)/src/algorithms/$(DEPDIR)/$(am__dirstamp)" || rm -f $(top_srcdir)/src/algorithms/$(DEPDIR)/$(am__dirstamp)
+	-test -z "$(top_srcdir)/src/algorithms/$(am__dirstamp)" || rm -f $(top_srcdir)/src/algorithms/$(am__dirstamp)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -1106,7 +1122,7 @@ clean: clean-am
 clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
 
 distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
+	-rm -rf $(top_srcdir)/src/algorithms/$(DEPDIR) ./$(DEPDIR)
 	-rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
 	distclean-tags
@@ -1152,7 +1168,7 @@ install-ps-am:
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
+	-rm -rf $(top_srcdir)/src/algorithms/$(DEPDIR) ./$(DEPDIR)
 	-rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
@@ -1187,6 +1203,8 @@ uninstall-am: uninstall-binPROGRAMS
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
 	tags tags-am uninstall uninstall-am uninstall-binPROGRAMS
 
+.PRECIOUS: Makefile
+
 ###############################################################################
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/src/apps/Makefile.am b/src/apps/Makefile.am
index 39c7ed1..4cb2afa 100644
--- a/src/apps/Makefile.am
+++ b/src/apps/Makefile.am
@@ -1,3 +1,4 @@
+AUTOMAKE_OPTIONS = subdir-objects
 AM_CXXFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/src/base $(GDAL_CFLAGS) @AM_CXXFLAGS@
 AM_LDFLAGS = $(GSL_LIBS) $(GDAL_LDFLAGS) $(top_builddir)/src/algorithms/libalgorithms.la $(top_builddir)/src/imageclasses/libimageClasses.la $(top_builddir)/src/fileclasses/libfileClasses.la @AM_LDFLAGS@
 LDADD = $(GSL_LIBS) $(GDAL_LDFLAGS) $(top_builddir)/src/algorithms/libalgorithms.la $(top_builddir)/src/imageclasses/libimageClasses.la $(top_builddir)/src/fileclasses/libfileClasses.la
@@ -7,7 +8,7 @@ LDADD = $(GSL_LIBS) $(GDAL_LDFLAGS) $(top_builddir)/src/algorithms/libalgorithms
 
 # the program to build and install (the names of the final binaries)
 #bin_PROGRAMS = pkinfo pkcrop pkdiff pkgetmask pksetmask pkcreatect pkdumpimg pkdumpogr pksieve pkstat pkstatascii pkstatogr pkstatprofile pkegcs pkextract pkfillnodata pkfilter pkfilterdem pkfilterascii pkdsm2shadow pkcomposite pkpolygonize pkascii2img pksvm pkfssvm pkascii2ogr pkreclass
-bin_PROGRAMS = pkinfo pkcrop pkdiff pkgetmask pksetmask pkcreatect pkdumpimg pkdumpogr pksieve pkstat pkstatascii pkstatogr pkstatprofile pkegcs pkextract pkfillnodata pkfilter pkfilterdem pkfilterascii pkdsm2shadow pkcomposite pkpolygonize pkascii2img pksvm pkfssvm pkascii2ogr pkreclass pkkalman
+bin_PROGRAMS = pkinfo pkcrop pkdiff pkgetmask pksetmask pkcreatect pkdumpimg pkdumpogr pksieve pkstat pkstatascii pkstatogr pkstatprofile pkegcs pkextractimg pkextractogr pkfillnodata pkfilter pkfilterdem pkfilterascii pkdsm2shadow pkcomposite pkpolygonize pkascii2img pksvm pkfssvm pkoptsvm pkascii2ogr pkreclass pkkalman
 
 # the program to build but not install (the names of the final binaries)
 #noinst_PROGRAMS = pkkalman
@@ -31,11 +32,11 @@ bin_PROGRAMS += pklas2img
 pklas2img_SOURCES = pklas2img.cc
 pklas2img_LDADD = -lgsl $(top_srcdir)/src/lasclasses/liblasClasses.la -llas $(AM_LDFLAGS)
 endif
-if USE_NLOPT
-bin_PROGRAMS += pkoptsvm
-pkoptsvm_SOURCES = $(top_srcdir)/src/algorithms/OptFactory.h $(top_srcdir)/src/algorithms/CostFactorySVM.h pkoptsvm.cc
-pkoptsvm_LDADD = $(GSL_LIBS) $(AM_LDFLAGS) -lnlopt -lgsl
-endif
+# if USE_NLOPT
+# bin_PROGRAMS += pkoptsvm
+# pkoptsvm_SOURCES = $(top_srcdir)/src/algorithms/OptFactory.h $(top_srcdir)/src/algorithms/CostFactorySVM.h pkoptsvm.cc
+# pkoptsvm_LDADD = $(GSL_LIBS) $(AM_LDFLAGS) -lnlopt -lgsl
+# endif
 # list of sources for the binaries
 pkinfo_SOURCES = pkinfo.cc
 pkinfo_LDADD = $(AM_LDFLAGS) -lgsl
@@ -44,7 +45,9 @@ pkcrop_LDADD = -lgsl
 pkdiff_SOURCES = pkdiff.cc
 pkdiff_LDADD = -lgsl
 pkgetmask_SOURCES = pkgetmask.cc
+pkgetmask_LDADD = $(GSL_LIBS)
 pksetmask_SOURCES = pksetmask.cc
+pksetmask_LDADD = $(GSL_LIBS)
 pkcreatect_SOURCES = pkcreatect.cc
 pkdumpimg_SOURCES = pkdumpimg.cc
 pkdumpogr_SOURCES = pkdumpogr.h pkdumpogr.cc
@@ -59,8 +62,10 @@ pkstatogr_SOURCES = pkstatogr.cc
 pkstatogr_LDADD = -lgsl
 pkegcs_SOURCES = pkegcs.cc
 pkegcs_LDADD = $(AM_LDFLAGS) -lgsl -lgdal
-pkextract_SOURCES = pkextract.cc
-pkextract_LDADD = $(AM_LDFLAGS) -lgsl -lgdal
+pkextractimg_SOURCES = pkextractimg.cc
+pkextractimg_LDADD = $(AM_LDFLAGS) -lgsl -lgdal
+pkextractogr_SOURCES = pkextractogr.cc
+pkextractogr_LDADD = $(AM_LDFLAGS) -lgsl -lgdal
 pkfillnodata_SOURCES = pkfillnodata.cc
 pkfilter_SOURCES = pkfilter.cc
 pkfilter_LDADD = $(GSL_LIBS) $(AM_LDFLAGS) -lgsl -lgdal
@@ -78,6 +83,8 @@ pksvm_SOURCES = $(top_srcdir)/src/algorithms/svm.h $(top_srcdir)/src/algorithms/
 pksvm_LDADD = -lgsl
 pkfssvm_SOURCES = $(top_srcdir)/src/algorithms/svm.h $(top_srcdir)/src/algorithms/FeatureSelector.h  $(top_srcdir)/src/algorithms/CostFactorySVM.h $(top_srcdir)/src/algorithms/svm.cpp pkfssvm.cc
 pkfssvm_LDADD = -lgsl $(GSL_LIBS) $(AM_LDFLAGS) -lalgorithms
+pkoptsvm_SOURCES = $(top_srcdir)/src/algorithms/CostFactorySVM.h pkoptsvm.cc
+pkoptsvm_LDADD = $(GSL_LIBS) $(AM_LDFLAGS) -lgsl
 pkascii2img_SOURCES = pkascii2img.cc
 pkascii2ogr_SOURCES = pkascii2ogr.cc
 pkreclass_SOURCES = pkreclass.cc
diff --git a/src/apps/Makefile.in b/src/apps/Makefile.in
index 7160b4a..bc0cf1f 100644
--- a/src/apps/Makefile.in
+++ b/src/apps/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,17 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -82,22 +92,20 @@ bin_PROGRAMS = pkinfo$(EXEEXT) pkcrop$(EXEEXT) pkdiff$(EXEEXT) \
 	pkgetmask$(EXEEXT) pksetmask$(EXEEXT) pkcreatect$(EXEEXT) \
 	pkdumpimg$(EXEEXT) pkdumpogr$(EXEEXT) pksieve$(EXEEXT) \
 	pkstat$(EXEEXT) pkstatascii$(EXEEXT) pkstatogr$(EXEEXT) \
-	pkstatprofile$(EXEEXT) pkegcs$(EXEEXT) pkextract$(EXEEXT) \
-	pkfillnodata$(EXEEXT) pkfilter$(EXEEXT) pkfilterdem$(EXEEXT) \
-	pkfilterascii$(EXEEXT) pkdsm2shadow$(EXEEXT) \
-	pkcomposite$(EXEEXT) pkpolygonize$(EXEEXT) \
-	pkascii2img$(EXEEXT) pksvm$(EXEEXT) pkfssvm$(EXEEXT) \
-	pkascii2ogr$(EXEEXT) pkreclass$(EXEEXT) pkkalman$(EXEEXT) \
-	$(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3)
+	pkstatprofile$(EXEEXT) pkegcs$(EXEEXT) pkextractimg$(EXEEXT) \
+	pkextractogr$(EXEEXT) pkfillnodata$(EXEEXT) pkfilter$(EXEEXT) \
+	pkfilterdem$(EXEEXT) pkfilterascii$(EXEEXT) \
+	pkdsm2shadow$(EXEEXT) pkcomposite$(EXEEXT) \
+	pkpolygonize$(EXEEXT) pkascii2img$(EXEEXT) pksvm$(EXEEXT) \
+	pkfssvm$(EXEEXT) pkoptsvm$(EXEEXT) pkascii2ogr$(EXEEXT) \
+	pkreclass$(EXEEXT) pkkalman$(EXEEXT) $(am__EXEEXT_1) \
+	$(am__EXEEXT_2)
 
 # the program to build but not install (the names of the final binaries)
 #noinst_PROGRAMS = pkkalman
 @USE_FANN_TRUE at am__append_1 = pkann pkfsann pkregann
 @USE_LAS_TRUE at am__append_2 = pklas2img
- at USE_NLOPT_TRUE@am__append_3 = pkoptsvm
 subdir = src/apps
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_lib_gdal.m4 \
 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
@@ -105,6 +113,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ax_lib_gdal.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -112,7 +121,6 @@ CONFIG_CLEAN_VPATH_FILES =
 @USE_FANN_TRUE at am__EXEEXT_1 = pkann$(EXEEXT) pkfsann$(EXEEXT) \
 @USE_FANN_TRUE@	pkregann$(EXEEXT)
 @USE_LAS_TRUE at am__EXEEXT_2 = pklas2img$(EXEEXT)
- at USE_NLOPT_TRUE@am__EXEEXT_3 = pkoptsvm$(EXEEXT)
 am__installdirs = "$(DESTDIR)$(bindir)"
 PROGRAMS = $(bin_PROGRAMS)
 am__pkann_SOURCES_DIST = $(top_srcdir)/src/algorithms/myfann_cpp.h \
@@ -187,9 +195,12 @@ pkdumpogr_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
 am_pkegcs_OBJECTS = pkegcs.$(OBJEXT)
 pkegcs_OBJECTS = $(am_pkegcs_OBJECTS)
 pkegcs_DEPENDENCIES = $(am__DEPENDENCIES_2)
-am_pkextract_OBJECTS = pkextract.$(OBJEXT)
-pkextract_OBJECTS = $(am_pkextract_OBJECTS)
-pkextract_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_pkextractimg_OBJECTS = pkextractimg.$(OBJEXT)
+pkextractimg_OBJECTS = $(am_pkextractimg_OBJECTS)
+pkextractimg_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_pkextractogr_OBJECTS = pkextractogr.$(OBJEXT)
+pkextractogr_OBJECTS = $(am_pkextractogr_OBJECTS)
+pkextractogr_DEPENDENCIES = $(am__DEPENDENCIES_2)
 am_pkfillnodata_OBJECTS = pkfillnodata.$(OBJEXT)
 pkfillnodata_OBJECTS = $(am_pkfillnodata_OBJECTS)
 pkfillnodata_LDADD = $(LDADD)
@@ -219,20 +230,19 @@ pkfsann_OBJECTS = $(am_pkfsann_OBJECTS)
 pkfsann_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(pkfsann_CXXFLAGS) \
 	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_pkfssvm_OBJECTS = svm.$(OBJEXT) pkfssvm.$(OBJEXT)
+am__dirstamp = $(am__leading_dot)dirstamp
+am_pkfssvm_OBJECTS = $(top_srcdir)/src/algorithms/svm.$(OBJEXT) \
+	pkfssvm.$(OBJEXT)
 pkfssvm_OBJECTS = $(am_pkfssvm_OBJECTS)
 pkfssvm_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
 am_pkgetmask_OBJECTS = pkgetmask.$(OBJEXT)
 pkgetmask_OBJECTS = $(am_pkgetmask_OBJECTS)
-pkgetmask_LDADD = $(LDADD)
-pkgetmask_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(top_builddir)/src/algorithms/libalgorithms.la \
-	$(top_builddir)/src/imageclasses/libimageClasses.la \
-	$(top_builddir)/src/fileclasses/libfileClasses.la
+pkgetmask_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am_pkinfo_OBJECTS = pkinfo.$(OBJEXT)
 pkinfo_OBJECTS = $(am_pkinfo_OBJECTS)
 pkinfo_DEPENDENCIES = $(am__DEPENDENCIES_2)
-am_pkkalman_OBJECTS = pkkalman.$(OBJEXT) ImgRegression.$(OBJEXT)
+am_pkkalman_OBJECTS = pkkalman.$(OBJEXT) \
+	$(top_srcdir)/src/algorithms/ImgRegression.$(OBJEXT)
 pkkalman_OBJECTS = $(am_pkkalman_OBJECTS)
 pkkalman_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
 am__pklas2img_SOURCES_DIST = pklas2img.cc
@@ -241,12 +251,9 @@ pklas2img_OBJECTS = $(am_pklas2img_OBJECTS)
 @USE_LAS_TRUE at pklas2img_DEPENDENCIES =  \
 @USE_LAS_TRUE@	$(top_srcdir)/src/lasclasses/liblasClasses.la \
 @USE_LAS_TRUE@	$(am__DEPENDENCIES_2)
-am__pkoptsvm_SOURCES_DIST = $(top_srcdir)/src/algorithms/OptFactory.h \
-	$(top_srcdir)/src/algorithms/CostFactorySVM.h pkoptsvm.cc
- at USE_NLOPT_TRUE@am_pkoptsvm_OBJECTS = pkoptsvm.$(OBJEXT)
+am_pkoptsvm_OBJECTS = pkoptsvm.$(OBJEXT)
 pkoptsvm_OBJECTS = $(am_pkoptsvm_OBJECTS)
- at USE_NLOPT_TRUE@pkoptsvm_DEPENDENCIES = $(am__DEPENDENCIES_1) \
- at USE_NLOPT_TRUE@	$(am__DEPENDENCIES_2)
+pkoptsvm_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
 am_pkpolygonize_OBJECTS = pkpolygonize.$(OBJEXT)
 pkpolygonize_OBJECTS = $(am_pkpolygonize_OBJECTS)
 pkpolygonize_LDADD = $(LDADD)
@@ -274,11 +281,7 @@ pkregann_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
 am_pksetmask_OBJECTS = pksetmask.$(OBJEXT)
 pksetmask_OBJECTS = $(am_pksetmask_OBJECTS)
-pksetmask_LDADD = $(LDADD)
-pksetmask_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(top_builddir)/src/algorithms/libalgorithms.la \
-	$(top_builddir)/src/imageclasses/libimageClasses.la \
-	$(top_builddir)/src/fileclasses/libfileClasses.la
+pksetmask_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am_pksieve_OBJECTS = pksieve.$(OBJEXT)
 pksieve_OBJECTS = $(am_pksieve_OBJECTS)
 pksieve_LDADD = $(LDADD)
@@ -286,7 +289,9 @@ pksieve_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
 	$(top_builddir)/src/algorithms/libalgorithms.la \
 	$(top_builddir)/src/imageclasses/libimageClasses.la \
 	$(top_builddir)/src/fileclasses/libfileClasses.la
-am_pkstat_OBJECTS = ImgRegression.$(OBJEXT) pkstat.$(OBJEXT)
+am_pkstat_OBJECTS =  \
+	$(top_srcdir)/src/algorithms/ImgRegression.$(OBJEXT) \
+	pkstat.$(OBJEXT)
 pkstat_OBJECTS = $(am_pkstat_OBJECTS)
 pkstat_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
 am_pkstatascii_OBJECTS = pkstatascii.$(OBJEXT)
@@ -299,7 +304,8 @@ am_pkstatprofile_OBJECTS = pkstatprofile.$(OBJEXT)
 pkstatprofile_OBJECTS = $(am_pkstatprofile_OBJECTS)
 pkstatprofile_DEPENDENCIES = $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_2)
-am_pksvm_OBJECTS = svm.$(OBJEXT) pksvm.$(OBJEXT)
+am_pksvm_OBJECTS = $(top_srcdir)/src/algorithms/svm.$(OBJEXT) \
+	pksvm.$(OBJEXT)
 pksvm_OBJECTS = $(am_pksvm_OBJECTS)
 pksvm_DEPENDENCIES =
 AM_V_P = $(am__v_P_ at AM_V@)
@@ -358,29 +364,31 @@ SOURCES = $(pkann_SOURCES) $(pkascii2img_SOURCES) \
 	$(pkascii2ogr_SOURCES) $(pkcomposite_SOURCES) \
 	$(pkcreatect_SOURCES) $(pkcrop_SOURCES) $(pkdiff_SOURCES) \
 	$(pkdsm2shadow_SOURCES) $(pkdumpimg_SOURCES) \
-	$(pkdumpogr_SOURCES) $(pkegcs_SOURCES) $(pkextract_SOURCES) \
-	$(pkfillnodata_SOURCES) $(pkfilter_SOURCES) \
-	$(pkfilterascii_SOURCES) $(pkfilterdem_SOURCES) \
-	$(pkfsann_SOURCES) $(pkfssvm_SOURCES) $(pkgetmask_SOURCES) \
-	$(pkinfo_SOURCES) $(pkkalman_SOURCES) $(pklas2img_SOURCES) \
-	$(pkoptsvm_SOURCES) $(pkpolygonize_SOURCES) \
-	$(pkreclass_SOURCES) $(pkregann_SOURCES) $(pksetmask_SOURCES) \
-	$(pksieve_SOURCES) $(pkstat_SOURCES) $(pkstatascii_SOURCES) \
-	$(pkstatogr_SOURCES) $(pkstatprofile_SOURCES) $(pksvm_SOURCES)
+	$(pkdumpogr_SOURCES) $(pkegcs_SOURCES) $(pkextractimg_SOURCES) \
+	$(pkextractogr_SOURCES) $(pkfillnodata_SOURCES) \
+	$(pkfilter_SOURCES) $(pkfilterascii_SOURCES) \
+	$(pkfilterdem_SOURCES) $(pkfsann_SOURCES) $(pkfssvm_SOURCES) \
+	$(pkgetmask_SOURCES) $(pkinfo_SOURCES) $(pkkalman_SOURCES) \
+	$(pklas2img_SOURCES) $(pkoptsvm_SOURCES) \
+	$(pkpolygonize_SOURCES) $(pkreclass_SOURCES) \
+	$(pkregann_SOURCES) $(pksetmask_SOURCES) $(pksieve_SOURCES) \
+	$(pkstat_SOURCES) $(pkstatascii_SOURCES) $(pkstatogr_SOURCES) \
+	$(pkstatprofile_SOURCES) $(pksvm_SOURCES)
 DIST_SOURCES = $(am__pkann_SOURCES_DIST) $(pkascii2img_SOURCES) \
 	$(pkascii2ogr_SOURCES) $(pkcomposite_SOURCES) \
 	$(pkcreatect_SOURCES) $(pkcrop_SOURCES) $(pkdiff_SOURCES) \
 	$(pkdsm2shadow_SOURCES) $(pkdumpimg_SOURCES) \
-	$(pkdumpogr_SOURCES) $(pkegcs_SOURCES) $(pkextract_SOURCES) \
-	$(pkfillnodata_SOURCES) $(pkfilter_SOURCES) \
-	$(pkfilterascii_SOURCES) $(pkfilterdem_SOURCES) \
-	$(am__pkfsann_SOURCES_DIST) $(pkfssvm_SOURCES) \
-	$(pkgetmask_SOURCES) $(pkinfo_SOURCES) $(pkkalman_SOURCES) \
-	$(am__pklas2img_SOURCES_DIST) $(am__pkoptsvm_SOURCES_DIST) \
-	$(pkpolygonize_SOURCES) $(pkreclass_SOURCES) \
-	$(am__pkregann_SOURCES_DIST) $(pksetmask_SOURCES) \
-	$(pksieve_SOURCES) $(pkstat_SOURCES) $(pkstatascii_SOURCES) \
-	$(pkstatogr_SOURCES) $(pkstatprofile_SOURCES) $(pksvm_SOURCES)
+	$(pkdumpogr_SOURCES) $(pkegcs_SOURCES) $(pkextractimg_SOURCES) \
+	$(pkextractogr_SOURCES) $(pkfillnodata_SOURCES) \
+	$(pkfilter_SOURCES) $(pkfilterascii_SOURCES) \
+	$(pkfilterdem_SOURCES) $(am__pkfsann_SOURCES_DIST) \
+	$(pkfssvm_SOURCES) $(pkgetmask_SOURCES) $(pkinfo_SOURCES) \
+	$(pkkalman_SOURCES) $(am__pklas2img_SOURCES_DIST) \
+	$(pkoptsvm_SOURCES) $(pkpolygonize_SOURCES) \
+	$(pkreclass_SOURCES) $(am__pkregann_SOURCES_DIST) \
+	$(pksetmask_SOURCES) $(pksieve_SOURCES) $(pkstat_SOURCES) \
+	$(pkstatascii_SOURCES) $(pkstatogr_SOURCES) \
+	$(pkstatprofile_SOURCES) $(pksvm_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -405,6 +413,7 @@ am__define_uniq_tagged_files = \
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -464,11 +473,10 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
-NLOPT_CFLAGS = @NLOPT_CFLAGS@
-NLOPT_LIBS = @NLOPT_LIBS@
 NM = @NM@
 NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
@@ -539,6 +547,7 @@ pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -547,6 +556,7 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = subdir-objects
 LDADD = $(GSL_LIBS) $(GDAL_LDFLAGS) $(top_builddir)/src/algorithms/libalgorithms.la $(top_builddir)/src/imageclasses/libimageClasses.la $(top_builddir)/src/fileclasses/libfileClasses.la
 @USE_FANN_TRUE at pkann_SOURCES = $(top_srcdir)/src/algorithms/myfann_cpp.h pkann.cc
 @USE_FANN_TRUE at pkann_CXXFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/src/base $(FANN_CFLAGS) -I$(top_srcdir)/src/algorithms $(AM_CXXFLAGS)
@@ -559,8 +569,11 @@ LDADD = $(GSL_LIBS) $(GDAL_LDFLAGS) $(top_builddir)/src/algorithms/libalgorithms
 @USE_FANN_TRUE at pkregann_LDADD = $(GSL_LIBS) $(FANN_LIBS) $(FANN_CFLAGS) $(AM_LDFLAGS)
 @USE_LAS_TRUE at pklas2img_SOURCES = pklas2img.cc
 @USE_LAS_TRUE at pklas2img_LDADD = -lgsl $(top_srcdir)/src/lasclasses/liblasClasses.la -llas $(AM_LDFLAGS)
- at USE_NLOPT_TRUE@pkoptsvm_SOURCES = $(top_srcdir)/src/algorithms/OptFactory.h $(top_srcdir)/src/algorithms/CostFactorySVM.h pkoptsvm.cc
- at USE_NLOPT_TRUE@pkoptsvm_LDADD = $(GSL_LIBS) $(AM_LDFLAGS) -lnlopt -lgsl
+# if USE_NLOPT
+# bin_PROGRAMS += pkoptsvm
+# pkoptsvm_SOURCES = $(top_srcdir)/src/algorithms/OptFactory.h $(top_srcdir)/src/algorithms/CostFactorySVM.h pkoptsvm.cc
+# pkoptsvm_LDADD = $(GSL_LIBS) $(AM_LDFLAGS) -lnlopt -lgsl
+# endif
 # list of sources for the binaries
 pkinfo_SOURCES = pkinfo.cc
 pkinfo_LDADD = $(AM_LDFLAGS) -lgsl
@@ -569,7 +582,9 @@ pkcrop_LDADD = -lgsl
 pkdiff_SOURCES = pkdiff.cc
 pkdiff_LDADD = -lgsl
 pkgetmask_SOURCES = pkgetmask.cc
+pkgetmask_LDADD = $(GSL_LIBS)
 pksetmask_SOURCES = pksetmask.cc
+pksetmask_LDADD = $(GSL_LIBS)
 pkcreatect_SOURCES = pkcreatect.cc
 pkdumpimg_SOURCES = pkdumpimg.cc
 pkdumpogr_SOURCES = pkdumpogr.h pkdumpogr.cc
@@ -584,8 +599,10 @@ pkstatogr_SOURCES = pkstatogr.cc
 pkstatogr_LDADD = -lgsl
 pkegcs_SOURCES = pkegcs.cc
 pkegcs_LDADD = $(AM_LDFLAGS) -lgsl -lgdal
-pkextract_SOURCES = pkextract.cc
-pkextract_LDADD = $(AM_LDFLAGS) -lgsl -lgdal
+pkextractimg_SOURCES = pkextractimg.cc
+pkextractimg_LDADD = $(AM_LDFLAGS) -lgsl -lgdal
+pkextractogr_SOURCES = pkextractogr.cc
+pkextractogr_LDADD = $(AM_LDFLAGS) -lgsl -lgdal
 pkfillnodata_SOURCES = pkfillnodata.cc
 pkfilter_SOURCES = pkfilter.cc
 pkfilter_LDADD = $(GSL_LIBS) $(AM_LDFLAGS) -lgsl -lgdal
@@ -603,6 +620,8 @@ pksvm_SOURCES = $(top_srcdir)/src/algorithms/svm.h $(top_srcdir)/src/algorithms/
 pksvm_LDADD = -lgsl
 pkfssvm_SOURCES = $(top_srcdir)/src/algorithms/svm.h $(top_srcdir)/src/algorithms/FeatureSelector.h  $(top_srcdir)/src/algorithms/CostFactorySVM.h $(top_srcdir)/src/algorithms/svm.cpp pkfssvm.cc
 pkfssvm_LDADD = -lgsl $(GSL_LIBS) $(AM_LDFLAGS) -lalgorithms
+pkoptsvm_SOURCES = $(top_srcdir)/src/algorithms/CostFactorySVM.h pkoptsvm.cc
+pkoptsvm_LDADD = $(GSL_LIBS) $(AM_LDFLAGS) -lgsl
 pkascii2img_SOURCES = pkascii2img.cc
 pkascii2ogr_SOURCES = pkascii2ogr.cc
 pkreclass_SOURCES = pkreclass.cc
@@ -622,7 +641,6 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/apps/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --foreign src/apps/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -734,9 +752,13 @@ pkegcs$(EXEEXT): $(pkegcs_OBJECTS) $(pkegcs_DEPENDENCIES) $(EXTRA_pkegcs_DEPENDE
 	@rm -f pkegcs$(EXEEXT)
 	$(AM_V_CXXLD)$(CXXLINK) $(pkegcs_OBJECTS) $(pkegcs_LDADD) $(LIBS)
 
-pkextract$(EXEEXT): $(pkextract_OBJECTS) $(pkextract_DEPENDENCIES) $(EXTRA_pkextract_DEPENDENCIES) 
-	@rm -f pkextract$(EXEEXT)
-	$(AM_V_CXXLD)$(CXXLINK) $(pkextract_OBJECTS) $(pkextract_LDADD) $(LIBS)
+pkextractimg$(EXEEXT): $(pkextractimg_OBJECTS) $(pkextractimg_DEPENDENCIES) $(EXTRA_pkextractimg_DEPENDENCIES) 
+	@rm -f pkextractimg$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(pkextractimg_OBJECTS) $(pkextractimg_LDADD) $(LIBS)
+
+pkextractogr$(EXEEXT): $(pkextractogr_OBJECTS) $(pkextractogr_DEPENDENCIES) $(EXTRA_pkextractogr_DEPENDENCIES) 
+	@rm -f pkextractogr$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(pkextractogr_OBJECTS) $(pkextractogr_LDADD) $(LIBS)
 
 pkfillnodata$(EXEEXT): $(pkfillnodata_OBJECTS) $(pkfillnodata_DEPENDENCIES) $(EXTRA_pkfillnodata_DEPENDENCIES) 
 	@rm -f pkfillnodata$(EXEEXT)
@@ -757,6 +779,15 @@ pkfilterdem$(EXEEXT): $(pkfilterdem_OBJECTS) $(pkfilterdem_DEPENDENCIES) $(EXTRA
 pkfsann$(EXEEXT): $(pkfsann_OBJECTS) $(pkfsann_DEPENDENCIES) $(EXTRA_pkfsann_DEPENDENCIES) 
 	@rm -f pkfsann$(EXEEXT)
 	$(AM_V_CXXLD)$(pkfsann_LINK) $(pkfsann_OBJECTS) $(pkfsann_LDADD) $(LIBS)
+$(top_srcdir)/src/algorithms/$(am__dirstamp):
+	@$(MKDIR_P) $(top_srcdir)/src/algorithms
+	@: > $(top_srcdir)/src/algorithms/$(am__dirstamp)
+$(top_srcdir)/src/algorithms/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) $(top_srcdir)/src/algorithms/$(DEPDIR)
+	@: > $(top_srcdir)/src/algorithms/$(DEPDIR)/$(am__dirstamp)
+$(top_srcdir)/src/algorithms/svm.$(OBJEXT):  \
+	$(top_srcdir)/src/algorithms/$(am__dirstamp) \
+	$(top_srcdir)/src/algorithms/$(DEPDIR)/$(am__dirstamp)
 
 pkfssvm$(EXEEXT): $(pkfssvm_OBJECTS) $(pkfssvm_DEPENDENCIES) $(EXTRA_pkfssvm_DEPENDENCIES) 
 	@rm -f pkfssvm$(EXEEXT)
@@ -769,6 +800,9 @@ pkgetmask$(EXEEXT): $(pkgetmask_OBJECTS) $(pkgetmask_DEPENDENCIES) $(EXTRA_pkget
 pkinfo$(EXEEXT): $(pkinfo_OBJECTS) $(pkinfo_DEPENDENCIES) $(EXTRA_pkinfo_DEPENDENCIES) 
 	@rm -f pkinfo$(EXEEXT)
 	$(AM_V_CXXLD)$(CXXLINK) $(pkinfo_OBJECTS) $(pkinfo_LDADD) $(LIBS)
+$(top_srcdir)/src/algorithms/ImgRegression.$(OBJEXT):  \
+	$(top_srcdir)/src/algorithms/$(am__dirstamp) \
+	$(top_srcdir)/src/algorithms/$(DEPDIR)/$(am__dirstamp)
 
 pkkalman$(EXEEXT): $(pkkalman_OBJECTS) $(pkkalman_DEPENDENCIES) $(EXTRA_pkkalman_DEPENDENCIES) 
 	@rm -f pkkalman$(EXEEXT)
@@ -824,11 +858,13 @@ pksvm$(EXEEXT): $(pksvm_OBJECTS) $(pksvm_DEPENDENCIES) $(EXTRA_pksvm_DEPENDENCIE
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
+	-rm -f $(top_srcdir)/src/algorithms/*.$(OBJEXT)
 
 distclean-compile:
 	-rm -f *.tab.c
 
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ImgRegression.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote@$(top_srcdir)/src/algorithms/$(DEPDIR)/ImgRegression.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote@$(top_srcdir)/src/algorithms/$(DEPDIR)/svm.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkann-pkann.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkascii2img.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkascii2ogr.Po at am__quote@
@@ -840,7 +876,8 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkdumpimg.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkdumpogr.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkegcs.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkextract.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkextractimg.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkextractogr.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkfillnodata.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkfilter.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkfilterascii.Po at am__quote@
@@ -862,25 +899,27 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkstatogr.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkstatprofile.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pksvm.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/svm.Po at am__quote@
 
 .cc.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
 
 .cc.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .cc.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
@@ -913,34 +952,6 @@ pkfsann-pkfsann.obj: pkfsann.cc
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pkfsann_CXXFLAGS) $(CXXFLAGS) -c -o pkfsann-pkfsann.obj `if test -f 'pkfsann.cc'; then $(CYGPATH_W) 'pkfsann.cc'; else $(CYGPATH_W) '$(srcdir)/pkfsann.cc'; fi`
 
-svm.o: $(top_srcdir)/src/algorithms/svm.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT svm.o -MD -MP -MF $(DEPDIR)/svm.Tpo -c -o svm.o `test -f '$(top_srcdir)/src/algorithms/svm.cpp' || echo '$(srcdir)/'`$(top_srcdir)/src/algorithms/svm.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/svm.Tpo $(DEPDIR)/svm.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/algorithms/svm.cpp' object='svm.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o svm.o `test -f '$(top_srcdir)/src/algorithms/svm.cpp' || echo '$(srcdir)/'`$(top_srcdir)/src/algorithms/svm.cpp
-
-svm.obj: $(top_srcdir)/src/algorithms/svm.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT svm.obj -MD -MP -MF $(DEPDIR)/svm.Tpo -c -o svm.obj `if test -f '$(top_srcdir)/src/algorithms/svm.cpp'; then $(CYGPATH_W) '$(top_srcdir)/src/algorithms/svm.cpp'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/algorithms/svm.cpp'; fi`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/svm.Tpo $(DEPDIR)/svm.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/algorithms/svm.cpp' object='svm.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o svm.obj `if test -f '$(top_srcdir)/src/algorithms/svm.cpp'; then $(CYGPATH_W) '$(top_srcdir)/src/algorithms/svm.cpp'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/algorithms/svm.cpp'; fi`
-
-ImgRegression.o: $(top_srcdir)/src/algorithms/ImgRegression.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ImgRegression.o -MD -MP -MF $(DEPDIR)/ImgRegression.Tpo -c -o ImgRegression.o `test -f '$(top_srcdir)/src/algorithms/ImgRegression.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/algorithms/ImgRegression.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/ImgRegression.Tpo $(DEPDIR)/ImgRegression.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/algorithms/ImgRegression.cc' object='ImgRegression.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ImgRegression.o `test -f '$(top_srcdir)/src/algorithms/ImgRegression.cc' || echo '$(srcdir)/'`$(top_srcdir)/src/algorithms/ImgRegression.cc
-
-ImgRegression.obj: $(top_srcdir)/src/algorithms/ImgRegression.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ImgRegression.obj -MD -MP -MF $(DEPDIR)/ImgRegression.Tpo -c -o ImgRegression.obj `if test -f '$(top_srcdir)/src/algorithms/ImgRegression.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/algorithms/ImgRegression.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/algorithms/ImgRegression.cc'; fi`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/ImgRegression.Tpo $(DEPDIR)/ImgRegression.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$(top_srcdir)/src/algorithms/ImgRegression.cc' object='ImgRegression.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ImgRegression.obj `if test -f '$(top_srcdir)/src/algorithms/ImgRegression.cc'; then $(CYGPATH_W) '$(top_srcdir)/src/algorithms/ImgRegression.cc'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/algorithms/ImgRegression.cc'; fi`
-
 pkregann-pkregann.o: pkregann.cc
 @am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pkregann_CXXFLAGS) $(CXXFLAGS) -MT pkregann-pkregann.o -MD -MP -MF $(DEPDIR)/pkregann-pkregann.Tpo -c -o pkregann-pkregann.o `test -f 'pkregann.cc' || echo '$(srcdir)/'`pkregann.cc
 @am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/pkregann-pkregann.Tpo $(DEPDIR)/pkregann-pkregann.Po
@@ -956,22 +967,25 @@ pkregann-pkregann.obj: pkregann.cc
 @am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pkregann_CXXFLAGS) $(CXXFLAGS) -c -o pkregann-pkregann.obj `if test -f 'pkregann.cc'; then $(CYGPATH_W) 'pkregann.cc'; else $(CYGPATH_W) '$(srcdir)/pkregann.cc'; fi`
 
 .cpp.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
 
 .cpp.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .cpp.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
@@ -1097,6 +1111,8 @@ clean-generic:
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+	-test -z "$(top_srcdir)/src/algorithms/$(DEPDIR)/$(am__dirstamp)" || rm -f $(top_srcdir)/src/algorithms/$(DEPDIR)/$(am__dirstamp)
+	-test -z "$(top_srcdir)/src/algorithms/$(am__dirstamp)" || rm -f $(top_srcdir)/src/algorithms/$(am__dirstamp)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -1106,7 +1122,7 @@ clean: clean-am
 clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
 
 distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
+	-rm -rf $(top_srcdir)/src/algorithms/$(DEPDIR) ./$(DEPDIR)
 	-rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
 	distclean-tags
@@ -1152,7 +1168,7 @@ install-ps-am:
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
+	-rm -rf $(top_srcdir)/src/algorithms/$(DEPDIR) ./$(DEPDIR)
 	-rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
@@ -1187,6 +1203,8 @@ uninstall-am: uninstall-binPROGRAMS
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
 	tags tags-am uninstall uninstall-am uninstall-binPROGRAMS
 
+.PRECIOUS: Makefile
+
 ###############################################################################
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/src/apps/pkann b/src/apps/pkann
new file mode 100755
index 0000000..c5c3b11
--- /dev/null
+++ b/src/apps/pkann
@@ -0,0 +1,228 @@
+#! /bin/bash
+
+# pkann - temporary wrapper script for .libs/pkann
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# The pkann program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command="(cd /home/kempenep/pktools/src/apps; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \ [...]
+
+# This environment variable determines our operation mode.
+if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='2.4.6'
+  notinst_deplibs=' ../../src/algorithms/libalgorithms.la ../../src/imageclasses/libimageClasses.la ../../src/fileclasses/libfileClasses.la'
+else
+  # When we are sourced in execute mode, $file and $ECHO are already set.
+  if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+    file="$0"
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+    ECHO="printf %s\\n"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string --lt-
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's ../../libtool value, followed by no.
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=$0
+  shift
+  for lt_opt
+  do
+    case "$lt_opt" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
+        test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
+        lt_dump_F=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%^.*/%%'`
+        cat "$lt_dump_D/$lt_dump_F"
+        exit 0
+      ;;
+    --lt-*)
+        $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n "$lt_option_debug"; then
+    echo "pkann:pkann:$LINENO: libtool wrapper (GNU libtool) 2.4.6 Debian-2.4.6-0.1" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    $ECHO "pkann:pkann:$LINENO: newargv[$lt_dump_args_N]: $lt_arg"
+    lt_dump_args_N=`expr $lt_dump_args_N + 1`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+
+      if test -n "$lt_option_debug"; then
+        $ECHO "pkann:pkann:$LINENO: newargv[0]: $progdir/$program" 1>&2
+        func_lt_dump_args ${1+"$@"} 1>&2
+      fi
+      exec "$progdir/$program" ${1+"$@"}
+
+      $ECHO "$0: cannot exec $program $*" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from $@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case " $* " in
+  *\ --lt-*)
+    for lt_wr_arg
+    do
+      case $lt_wr_arg in
+      --lt-*) ;;
+      *) set x "$@" "$lt_wr_arg"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core ${1+"$@"}
+}
+
+  # Parse options
+  func_parse_lt_options "$0" ${1+"$@"}
+
+  # Find the directory that this script lives in.
+  thisdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+  test "x$thisdir" = "x$file" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'`
+  while test -n "$file"; do
+    destdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+
+    # If there was a directory component, then change thisdir.
+    if test "x$destdir" != "x$file"; then
+      case "$destdir" in
+      [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
+      *) thisdir="$thisdir/$destdir" ;;
+      esac
+    fi
+
+    file=`$ECHO "$file" | /bin/sed 's%^.*/%%'`
+    file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
+  if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
+    # special case for '.'
+    if test "$thisdir" = "."; then
+      thisdir=`pwd`
+    fi
+    # remove .libs from thisdir
+    case "$thisdir" in
+    *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /bin/sed 's%[\\/][^\\/]*$%%'` ;;
+    .libs )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=`cd "$thisdir" && pwd`
+  test -n "$absdir" && thisdir="$absdir"
+
+  program=lt-'pkann'
+  progdir="$thisdir/.libs"
+
+  if test ! -f "$progdir/$program" ||
+     { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /bin/sed 1q`; \
+       test "X$file" != "X$progdir/$program"; }; then
+
+    file="$$-$program"
+
+    if test ! -d "$progdir"; then
+      mkdir "$progdir"
+    else
+      rm -f "$progdir/$file"
+    fi
+
+    # relink executable if necessary
+    if test -n "$relink_command"; then
+      if relink_command_output=`eval $relink_command 2>&1`; then :
+      else
+	$ECHO "$relink_command_output" >&2
+	rm -f "$progdir/$file"
+	exit 1
+      fi
+    fi
+
+    mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
+    { rm -f "$progdir/$program";
+      mv -f "$progdir/$file" "$progdir/$program"; }
+    rm -f "$progdir/$file"
+  fi
+
+  if test -f "$progdir/$program"; then
+    if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+      # Run the actual program with our arguments.
+      func_exec_program ${1+"$@"}
+    fi
+  else
+    # The program doesn't exist.
+    $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2
+    $ECHO "This script is just a wrapper for $program." 1>&2
+    $ECHO "See the libtool documentation for more information." 1>&2
+    exit 1
+  fi
+fi
diff --git a/src/apps/pkann.cc b/src/apps/pkann.cc
index 7305d16..f84557d 100644
--- a/src/apps/pkann.cc
+++ b/src/apps/pkann.cc
@@ -891,7 +891,7 @@ int main(int argc, char *argv[])
               std::cout << "reading band " << band_opt[iband] << std::endl;
             assert(band_opt[iband]>=0);
             assert(band_opt[iband]<testImage.nrOfBand());
-            testImage.readData(buffer,GDT_Float32,iline,band_opt[iband]);
+            testImage.readData(buffer,iline,band_opt[iband]);
             for(int icol=0;icol<ncol;++icol)
               hpixel[icol].push_back(buffer[icol]);
           }
@@ -902,7 +902,7 @@ int main(int argc, char *argv[])
               std::cout << "reading band " << iband << std::endl;
             assert(iband>=0);
             assert(iband<testImage.nrOfBand());
-            testImage.readData(buffer,GDT_Float32,iline,iband);
+            testImage.readData(buffer,iline,iband);
             for(int icol=0;icol<ncol;++icol)
               hpixel[icol].push_back(buffer[icol]);
           }
@@ -925,7 +925,7 @@ int main(int argc, char *argv[])
 	  for(short iclass=0;iclass<nclass;++iclass){
 	    if(verbose_opt.size()>1)
 	      std::cout << "Reading " << priorimg_opt[0] << " band " << iclass << " line " << iline << std::endl;
-	    priorReader.readData(linePrior[iclass],GDT_Float32,iline,iclass);
+	    priorReader.readData(linePrior[iclass],iline,iclass);
 	  }
         }
         catch(string theError){
@@ -967,7 +967,7 @@ int main(int argc, char *argv[])
 	      assert(rowMask>=0&&rowMask<maskReader.nrOfRow());
 	      try{
 		// maskReader.readData(lineMask[imask],GDT_Int32,static_cast<int>(rowMask));
-		maskReader.readData(lineMask,GDT_Int16,static_cast<int>(rowMask));
+		maskReader.readData(lineMask,static_cast<int>(rowMask));
 	      }
 	      catch(string errorstring){
 		cerr << errorstring << endl;
@@ -1125,15 +1125,15 @@ int main(int argc, char *argv[])
       //----------------------------------- write output ------------------------------------------
       if(classBag_opt.size())
         for(int ibag=0;ibag<nbag;++ibag)
-          classImageBag.writeData(classBag[ibag],GDT_Byte,iline,ibag);
+          classImageBag.writeData(classBag[ibag],iline,ibag);
       if(prob_opt.size()){
         for(int iclass=0;iclass<nclass;++iclass)
-          probImage.writeData(probOut[iclass],GDT_Float32,iline,iclass);
+          probImage.writeData(probOut[iclass],iline,iclass);
       }
       if(entropy_opt.size()){
-        entropyImage.writeData(entropy,GDT_Float32,iline);
+        entropyImage.writeData(entropy,iline);
       }
-      classImageOut.writeData(classOut,GDT_Byte,iline);
+      classImageOut.writeData(classOut,iline);
       if(!verbose_opt[0]){
         progress=static_cast<float>(iline+1.0)/classImageOut.nrOfRow();
         pfnProgress(progress,pszMessage,pProgressArg);
@@ -1145,7 +1145,7 @@ int main(int argc, char *argv[])
 	std::map<string,double> pointMap;
 	for(int iband=0;iband<testImage.nrOfBand();++iband){
 	  double value;
-	  testImage.readData(value,GDT_Float64,static_cast<int>(activePoints[iactive].posx),static_cast<int>(activePoints[iactive].posy),iband);
+	  testImage.readData(value,static_cast<int>(activePoints[iactive].posx),static_cast<int>(activePoints[iactive].posy),iband);
 	  ostringstream fs;
 	  fs << "B" << iband;
 	  pointMap[fs.str()]=value;
diff --git a/src/apps/pkascii2img b/src/apps/pkascii2img
new file mode 100755
index 0000000..8a147cd
--- /dev/null
+++ b/src/apps/pkascii2img
@@ -0,0 +1,228 @@
+#! /bin/bash
+
+# pkascii2img - temporary wrapper script for .libs/pkascii2img
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# The pkascii2img program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command="(cd /home/kempenep/pktools/src/apps; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \ [...]
+
+# This environment variable determines our operation mode.
+if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='2.4.6'
+  notinst_deplibs=' ../../src/algorithms/libalgorithms.la ../../src/imageclasses/libimageClasses.la ../../src/fileclasses/libfileClasses.la'
+else
+  # When we are sourced in execute mode, $file and $ECHO are already set.
+  if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+    file="$0"
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+    ECHO="printf %s\\n"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string --lt-
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's ../../libtool value, followed by no.
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=$0
+  shift
+  for lt_opt
+  do
+    case "$lt_opt" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
+        test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
+        lt_dump_F=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%^.*/%%'`
+        cat "$lt_dump_D/$lt_dump_F"
+        exit 0
+      ;;
+    --lt-*)
+        $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n "$lt_option_debug"; then
+    echo "pkascii2img:pkascii2img:$LINENO: libtool wrapper (GNU libtool) 2.4.6 Debian-2.4.6-0.1" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    $ECHO "pkascii2img:pkascii2img:$LINENO: newargv[$lt_dump_args_N]: $lt_arg"
+    lt_dump_args_N=`expr $lt_dump_args_N + 1`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+
+      if test -n "$lt_option_debug"; then
+        $ECHO "pkascii2img:pkascii2img:$LINENO: newargv[0]: $progdir/$program" 1>&2
+        func_lt_dump_args ${1+"$@"} 1>&2
+      fi
+      exec "$progdir/$program" ${1+"$@"}
+
+      $ECHO "$0: cannot exec $program $*" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from $@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case " $* " in
+  *\ --lt-*)
+    for lt_wr_arg
+    do
+      case $lt_wr_arg in
+      --lt-*) ;;
+      *) set x "$@" "$lt_wr_arg"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core ${1+"$@"}
+}
+
+  # Parse options
+  func_parse_lt_options "$0" ${1+"$@"}
+
+  # Find the directory that this script lives in.
+  thisdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+  test "x$thisdir" = "x$file" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'`
+  while test -n "$file"; do
+    destdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+
+    # If there was a directory component, then change thisdir.
+    if test "x$destdir" != "x$file"; then
+      case "$destdir" in
+      [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
+      *) thisdir="$thisdir/$destdir" ;;
+      esac
+    fi
+
+    file=`$ECHO "$file" | /bin/sed 's%^.*/%%'`
+    file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
+  if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
+    # special case for '.'
+    if test "$thisdir" = "."; then
+      thisdir=`pwd`
+    fi
+    # remove .libs from thisdir
+    case "$thisdir" in
+    *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /bin/sed 's%[\\/][^\\/]*$%%'` ;;
+    .libs )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=`cd "$thisdir" && pwd`
+  test -n "$absdir" && thisdir="$absdir"
+
+  program=lt-'pkascii2img'
+  progdir="$thisdir/.libs"
+
+  if test ! -f "$progdir/$program" ||
+     { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /bin/sed 1q`; \
+       test "X$file" != "X$progdir/$program"; }; then
+
+    file="$$-$program"
+
+    if test ! -d "$progdir"; then
+      mkdir "$progdir"
+    else
+      rm -f "$progdir/$file"
+    fi
+
+    # relink executable if necessary
+    if test -n "$relink_command"; then
+      if relink_command_output=`eval $relink_command 2>&1`; then :
+      else
+	$ECHO "$relink_command_output" >&2
+	rm -f "$progdir/$file"
+	exit 1
+      fi
+    fi
+
+    mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
+    { rm -f "$progdir/$program";
+      mv -f "$progdir/$file" "$progdir/$program"; }
+    rm -f "$progdir/$file"
+  fi
+
+  if test -f "$progdir/$program"; then
+    if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+      # Run the actual program with our arguments.
+      func_exec_program ${1+"$@"}
+    fi
+  else
+    # The program doesn't exist.
+    $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2
+    $ECHO "This script is just a wrapper for $program." 1>&2
+    $ECHO "See the libtool documentation for more information." 1>&2
+    exit 1
+  fi
+fi
diff --git a/src/apps/pkascii2img.cc b/src/apps/pkascii2img.cc
index 6eac5ea..361eaeb 100644
--- a/src/apps/pkascii2img.cc
+++ b/src/apps/pkascii2img.cc
@@ -209,7 +209,7 @@ int main(int argc, char *argv[])
   }
   assert(data.size()==nrow);
   for(irow=0;irow<nrow;++irow)
-    imgWriter.writeData(data[irow],GDT_Float64,irow);
+    imgWriter.writeData(data[irow],irow);
   imgWriter.close();
 }
 
diff --git a/src/apps/pkascii2ogr b/src/apps/pkascii2ogr
new file mode 100755
index 0000000..5951e49
--- /dev/null
+++ b/src/apps/pkascii2ogr
@@ -0,0 +1,228 @@
+#! /bin/bash
+
+# pkascii2ogr - temporary wrapper script for .libs/pkascii2ogr
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# The pkascii2ogr program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command="(cd /home/kempenep/pktools/src/apps; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \ [...]
+
+# This environment variable determines our operation mode.
+if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='2.4.6'
+  notinst_deplibs=' ../../src/algorithms/libalgorithms.la ../../src/imageclasses/libimageClasses.la ../../src/fileclasses/libfileClasses.la'
+else
+  # When we are sourced in execute mode, $file and $ECHO are already set.
+  if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+    file="$0"
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+    ECHO="printf %s\\n"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string --lt-
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's ../../libtool value, followed by no.
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=$0
+  shift
+  for lt_opt
+  do
+    case "$lt_opt" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
+        test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
+        lt_dump_F=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%^.*/%%'`
+        cat "$lt_dump_D/$lt_dump_F"
+        exit 0
+      ;;
+    --lt-*)
+        $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n "$lt_option_debug"; then
+    echo "pkascii2ogr:pkascii2ogr:$LINENO: libtool wrapper (GNU libtool) 2.4.6 Debian-2.4.6-0.1" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    $ECHO "pkascii2ogr:pkascii2ogr:$LINENO: newargv[$lt_dump_args_N]: $lt_arg"
+    lt_dump_args_N=`expr $lt_dump_args_N + 1`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+
+      if test -n "$lt_option_debug"; then
+        $ECHO "pkascii2ogr:pkascii2ogr:$LINENO: newargv[0]: $progdir/$program" 1>&2
+        func_lt_dump_args ${1+"$@"} 1>&2
+      fi
+      exec "$progdir/$program" ${1+"$@"}
+
+      $ECHO "$0: cannot exec $program $*" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from $@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case " $* " in
+  *\ --lt-*)
+    for lt_wr_arg
+    do
+      case $lt_wr_arg in
+      --lt-*) ;;
+      *) set x "$@" "$lt_wr_arg"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core ${1+"$@"}
+}
+
+  # Parse options
+  func_parse_lt_options "$0" ${1+"$@"}
+
+  # Find the directory that this script lives in.
+  thisdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+  test "x$thisdir" = "x$file" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'`
+  while test -n "$file"; do
+    destdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+
+    # If there was a directory component, then change thisdir.
+    if test "x$destdir" != "x$file"; then
+      case "$destdir" in
+      [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
+      *) thisdir="$thisdir/$destdir" ;;
+      esac
+    fi
+
+    file=`$ECHO "$file" | /bin/sed 's%^.*/%%'`
+    file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
+  if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
+    # special case for '.'
+    if test "$thisdir" = "."; then
+      thisdir=`pwd`
+    fi
+    # remove .libs from thisdir
+    case "$thisdir" in
+    *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /bin/sed 's%[\\/][^\\/]*$%%'` ;;
+    .libs )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=`cd "$thisdir" && pwd`
+  test -n "$absdir" && thisdir="$absdir"
+
+  program=lt-'pkascii2ogr'
+  progdir="$thisdir/.libs"
+
+  if test ! -f "$progdir/$program" ||
+     { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /bin/sed 1q`; \
+       test "X$file" != "X$progdir/$program"; }; then
+
+    file="$$-$program"
+
+    if test ! -d "$progdir"; then
+      mkdir "$progdir"
+    else
+      rm -f "$progdir/$file"
+    fi
+
+    # relink executable if necessary
+    if test -n "$relink_command"; then
+      if relink_command_output=`eval $relink_command 2>&1`; then :
+      else
+	$ECHO "$relink_command_output" >&2
+	rm -f "$progdir/$file"
+	exit 1
+      fi
+    fi
+
+    mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
+    { rm -f "$progdir/$program";
+      mv -f "$progdir/$file" "$progdir/$program"; }
+    rm -f "$progdir/$file"
+  fi
+
+  if test -f "$progdir/$program"; then
+    if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+      # Run the actual program with our arguments.
+      func_exec_program ${1+"$@"}
+    fi
+  else
+    # The program doesn't exist.
+    $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2
+    $ECHO "This script is just a wrapper for $program." 1>&2
+    $ECHO "See the libtool documentation for more information." 1>&2
+    exit 1
+  fi
+fi
diff --git a/src/apps/pkcomposite b/src/apps/pkcomposite
new file mode 100755
index 0000000..022f839
--- /dev/null
+++ b/src/apps/pkcomposite
@@ -0,0 +1,228 @@
+#! /bin/bash
+
+# pkcomposite - temporary wrapper script for .libs/pkcomposite
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# The pkcomposite program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command="(cd /home/kempenep/pktools/src/apps; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \ [...]
+
+# This environment variable determines our operation mode.
+if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='2.4.6'
+  notinst_deplibs=' ../../src/algorithms/libalgorithms.la ../../src/imageclasses/libimageClasses.la ../../src/fileclasses/libfileClasses.la'
+else
+  # When we are sourced in execute mode, $file and $ECHO are already set.
+  if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+    file="$0"
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+    ECHO="printf %s\\n"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string --lt-
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's ../../libtool value, followed by no.
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=$0
+  shift
+  for lt_opt
+  do
+    case "$lt_opt" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
+        test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
+        lt_dump_F=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%^.*/%%'`
+        cat "$lt_dump_D/$lt_dump_F"
+        exit 0
+      ;;
+    --lt-*)
+        $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n "$lt_option_debug"; then
+    echo "pkcomposite:pkcomposite:$LINENO: libtool wrapper (GNU libtool) 2.4.6 Debian-2.4.6-0.1" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    $ECHO "pkcomposite:pkcomposite:$LINENO: newargv[$lt_dump_args_N]: $lt_arg"
+    lt_dump_args_N=`expr $lt_dump_args_N + 1`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+
+      if test -n "$lt_option_debug"; then
+        $ECHO "pkcomposite:pkcomposite:$LINENO: newargv[0]: $progdir/$program" 1>&2
+        func_lt_dump_args ${1+"$@"} 1>&2
+      fi
+      exec "$progdir/$program" ${1+"$@"}
+
+      $ECHO "$0: cannot exec $program $*" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from $@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case " $* " in
+  *\ --lt-*)
+    for lt_wr_arg
+    do
+      case $lt_wr_arg in
+      --lt-*) ;;
+      *) set x "$@" "$lt_wr_arg"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core ${1+"$@"}
+}
+
+  # Parse options
+  func_parse_lt_options "$0" ${1+"$@"}
+
+  # Find the directory that this script lives in.
+  thisdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+  test "x$thisdir" = "x$file" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'`
+  while test -n "$file"; do
+    destdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+
+    # If there was a directory component, then change thisdir.
+    if test "x$destdir" != "x$file"; then
+      case "$destdir" in
+      [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
+      *) thisdir="$thisdir/$destdir" ;;
+      esac
+    fi
+
+    file=`$ECHO "$file" | /bin/sed 's%^.*/%%'`
+    file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
+  if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
+    # special case for '.'
+    if test "$thisdir" = "."; then
+      thisdir=`pwd`
+    fi
+    # remove .libs from thisdir
+    case "$thisdir" in
+    *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /bin/sed 's%[\\/][^\\/]*$%%'` ;;
+    .libs )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=`cd "$thisdir" && pwd`
+  test -n "$absdir" && thisdir="$absdir"
+
+  program=lt-'pkcomposite'
+  progdir="$thisdir/.libs"
+
+  if test ! -f "$progdir/$program" ||
+     { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /bin/sed 1q`; \
+       test "X$file" != "X$progdir/$program"; }; then
+
+    file="$$-$program"
+
+    if test ! -d "$progdir"; then
+      mkdir "$progdir"
+    else
+      rm -f "$progdir/$file"
+    fi
+
+    # relink executable if necessary
+    if test -n "$relink_command"; then
+      if relink_command_output=`eval $relink_command 2>&1`; then :
+      else
+	$ECHO "$relink_command_output" >&2
+	rm -f "$progdir/$file"
+	exit 1
+      fi
+    fi
+
+    mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
+    { rm -f "$progdir/$program";
+      mv -f "$progdir/$file" "$progdir/$program"; }
+    rm -f "$progdir/$file"
+  fi
+
+  if test -f "$progdir/$program"; then
+    if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+      # Run the actual program with our arguments.
+      func_exec_program ${1+"$@"}
+    fi
+  else
+    # The program doesn't exist.
+    $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2
+    $ECHO "This script is just a wrapper for $program." 1>&2
+    $ECHO "See the libtool documentation for more information." 1>&2
+    exit 1
+  fi
+fi
diff --git a/src/apps/pkcomposite.cc b/src/apps/pkcomposite.cc
index c99ed57..aabc105 100644
--- a/src/apps/pkcomposite.cc
+++ b/src/apps/pkcomposite.cc
@@ -97,9 +97,10 @@ pkcomposite -i input1.tif -i input2.tif -o minimum.tif -cr minallbands
  | dy     | dy                   | double |       |Output resolution in y (in meter) (empty: keep original resolution) | 
  | e      | extent               | std::string |       |get boundary from extent from polygons in vector file | 
  | cut      | crop_to_cutline    | bool | false |Crop the extent of the target dataset to the extent of the cutline | 
+ | eo       | eo                 | std::string |       |special extent options controlling rasterization: ATTRIBUTE|CHUNKYSIZE|ALL_TOUCHED|BURN_VALUE_FROM|MERGE_ALG, e.g., -eo ATTRIBUTE=fieldname |
  | m      | mask                 | std::string |       |Use the first band of the specified file as a validity mask (0 is nodata) | 
  | msknodata | msknodata            | float | 0     |Mask value not to consider for composite
- | mskband | mskband              | short | 0     |Mask band to read (0 indexed). Provide band for each mask. | 
+ | mskband | mskband              | short | 0     |Mask band to read (0 indexed) | 
  | ulx    | ulx                  | double | 0     |Upper left x value bounding box | 
  | uly    | uly                  | double | 0     |Upper left y value bounding box | 
  | lrx    | lrx                  | double | 0     |Lower right x value bounding box | 
@@ -121,6 +122,8 @@ pkcomposite -i input1.tif -i input2.tif -o minimum.tif -cr minallbands
  | c      | class                | short | 0     |classes for multi-band output image: each band represents the number of observations for one specific class. Use value 0 for no multi-band output image. | 
  | ct     | ct                   | std::string |       |color table file with 5 columns: id R G B ALFA (0: transparent, 255: solid) | 
  | align  | align                | bool  |       |Align output bounding box to first input image | 
+ | scale  | scale                | double |       |output=scale*input+offset | 
+ | off    | offset               | double |       |output=scale*input+offset | 
  | d      | description          | std::string |       |Set image description | 
 
 Examples
@@ -147,9 +150,10 @@ int main(int argc, char *argv[])
   Optionpk<double>  dy_opt("dy", "dy", "Output resolution in y (in meter) (empty: keep original resolution)");
   Optionpk<string>  extent_opt("e", "extent", "get boundary from extent from polygons in vector file");
   Optionpk<bool> cut_opt("cut", "crop_to_cutline", "Crop the extent of the target dataset to the extent of the cutline.",false);
+  Optionpk<string> eoption_opt("eo","eo", "special extent options controlling rasterization: ATTRIBUTE|CHUNKYSIZE|ALL_TOUCHED|BURN_VALUE_FROM|MERGE_ALG, e.g., -eo ATTRIBUTE=fieldname");
   Optionpk<string> mask_opt("m", "mask", "Use the first band of the specified file as a validity mask (0 is nodata).");
   Optionpk<float> msknodata_opt("msknodata", "msknodata", "Mask value not to consider for composite.", 0);
-  Optionpk<short> mskband_opt("mskband", "mskband", "Mask band to read (0 indexed). Provide band for each mask.", 0);
+  Optionpk<short> mskband_opt("mskband", "mskband", "Mask band to read (0 indexed)", 0);
   Optionpk<double>  ulx_opt("ulx", "ulx", "Upper left x value bounding box", 0.0);
   Optionpk<double>  uly_opt("uly", "uly", "Upper left y value bounding box", 0.0);
   Optionpk<double>  lrx_opt("lrx", "lrx", "Lower right x value bounding box", 0.0);
@@ -172,10 +176,13 @@ int main(int argc, char *argv[])
   Optionpk<string>  colorTable_opt("ct", "ct", "color table file with 5 columns: id R G B ALFA (0: transparent, 255: solid)");
   Optionpk<string>  description_opt("d", "description", "Set image description");
   Optionpk<bool>  align_opt("align", "align", "Align output bounding box to input image",false);
+  Optionpk<double> scale_opt("scale", "scale", "output=scale*input+offset");
+  Optionpk<double> offset_opt("offset", "offset", "output=scale*input+offset");
   Optionpk<short>  verbose_opt("v", "verbose", "verbose", 0,2);
 
   extent_opt.setHide(1);
   cut_opt.setHide(1);
+  eoption_opt.setHide(1);
   mask_opt.setHide(1);
   msknodata_opt.setHide(1);
   mskband_opt.setHide(1);
@@ -185,6 +192,8 @@ int main(int argc, char *argv[])
   class_opt.setHide(1);
   colorTable_opt.setHide(1);
   description_opt.setHide(1);
+  scale_opt.setHide(1);
+  offset_opt.setHide(1);
 
   bool doProcess;//stop process when program was invoked with help option (-h --help)
   try{
@@ -195,6 +204,7 @@ int main(int argc, char *argv[])
     dy_opt.retrieveOption(argc,argv);
     extent_opt.retrieveOption(argc,argv);
     cut_opt.retrieveOption(argc,argv);
+    eoption_opt.retrieveOption(argc,argv);
     mask_opt.retrieveOption(argc,argv);
     msknodata_opt.retrieveOption(argc,argv);
     mskband_opt.retrieveOption(argc,argv);
@@ -220,6 +230,8 @@ int main(int argc, char *argv[])
     colorTable_opt.retrieveOption(argc,argv);
     description_opt.retrieveOption(argc,argv);
     align_opt.retrieveOption(argc,argv);
+    scale_opt.retrieveOption(argc,argv);
+    offset_opt.retrieveOption(argc,argv);
     verbose_opt.retrieveOption(argc,argv);
   }
   catch(string predefinedString){
@@ -269,6 +281,7 @@ int main(int argc, char *argv[])
     while(bndnodata_opt.size()<maxValue_opt.size())
       bndnodata_opt.push_back(bndnodata_opt[0]);
   }
+
   RESAMPLE theResample;
   if(resample_opt[0]=="near"){
     theResample=NEAR;
@@ -295,10 +308,10 @@ int main(int argc, char *argv[])
   vector<short> bands;
   
   //get bounding box
-  double maxLRX=0;
-  double maxULY=0;
-  double minULX=0;
-  double minLRY=0;
+  double maxLRX=lrx_opt[0];
+  double maxULY=uly_opt[0];
+  double minULX=ulx_opt[0];
+  double minLRY=lry_opt[0];
   double magic_x=1,magic_y=1;//magic pixel for GDAL map info
 
   GDALDataType theType=GDT_Unknown;
@@ -353,7 +366,15 @@ int main(int argc, char *argv[])
       }
       extentReader.close();
     }
-    if(cut_opt.size())
+    if(maxLRX>minULX&&minULX>ulx_opt[0])
+      ulx_opt[0]=minULX;
+    if(maxLRX>minULX&&maxLRX<lrx_opt[0])
+      lrx_opt[0]=maxLRX;
+    if(maxULY>minLRY&&maxULY<uly_opt[0])
+      uly_opt[0]=maxULY;
+    if(minLRY<maxULY&&minLRY>lry_opt[0])
+      lry_opt[0]=minLRY;
+    if(cut_opt.size()||eoption_opt.size())
       extentReader.open(extent_opt[0]);
   }
 
@@ -361,18 +382,23 @@ int main(int argc, char *argv[])
     cout << "--ulx=" << ulx_opt[0] << " --uly=" << uly_opt[0] << " --lrx=" << lrx_opt[0] << " --lry=" << lry_opt[0] << endl;
 
   vector<ImgReaderGdal> imgReader(input_opt.size());
+  // vector<ImgReaderGdal> imgReader(input_opt.size());
   string theProjection="";
   GDALColorTable* theColorTable=NULL;
   string imageType;
   bool init=false;
   for(int ifile=0;ifile<input_opt.size();++ifile){
     try{
-      imgReader[ifile].open(input_opt[ifile]);
+      imgReader[ifile].open(input_opt[ifile],GA_ReadOnly);
+      // imgReader[ifile].open(input_opt[ifile],GA_ReadOnly);
+      for(int iband=0;iband<scale_opt.size();++iband)
+        imgReader[ifile].setScale(scale_opt[iband],iband);
+      for(int iband=0;iband<offset_opt.size();++iband)
+        imgReader[ifile].setOffset(offset_opt[iband],iband);
     }
     catch(string errorstring){
       cerr << errorstring << " " << input_opt[ifile] << endl;
     }
-
     //todo: must be in init part only?
     if(colorTable_opt.empty())
       if(imgReader[ifile].getColorTable())
@@ -388,7 +414,6 @@ int main(int argc, char *argv[])
     if((ulx_opt[0]||uly_opt[0]||lrx_opt[0]||lry_opt[0])&&(!imgReader[ifile].covers(ulx_opt[0],uly_opt[0],lrx_opt[0],lry_opt[0]))){
       if(verbose_opt[0])
 	cout << input_opt[ifile] << " not within bounding box, skipping..." << endl;
-      // imgReader.close();
       continue;
     }
     double theULX, theULY, theLRX, theLRY;
@@ -470,7 +495,6 @@ int main(int argc, char *argv[])
       else
         imageType=imgReader[ifile].getImageType();
 
-      // dataType=imgReader.getDataType(0);
       if(verbose_opt[0]){
         cout << "type of data for " << input_opt[ifile] << ": " << theType << endl;
         cout << "nband: " << nband << endl;
@@ -488,19 +512,9 @@ int main(int argc, char *argv[])
 	dy=dy_opt[0];
       else
         dy=imgReader[ifile].getDeltaY();
-      // imgReader.getMagicPixel(magic_x,magic_y);
       init=true;
     }
     else{
-      //convert bounding box to magic coordinates
-      //check uniformity magic pixel
-      // double test_x,test_y;
-      // imgReader.getMagicPixel(test_x,test_y);
-      // if(verbose_opt[0]){
-      //   cout << "magic_x, magic_y: " << magic_x << ", " << magic_y << endl;
-      // }
-      // assert(magic_x==test_x);
-      // assert(magic_y==test_y);
       maxLRX=(theLRX>maxLRX)?theLRX:maxLRX;
       maxULY=(theULY>maxULY)?theULY:maxULY;
       minULX=(theULX<minULX)?theULX:minULX;
@@ -586,10 +600,10 @@ int main(int argc, char *argv[])
   }
   if(verbose_opt[0])
     cout << "open output image " << output_opt[0] << " with " << nwriteBand << " bands" << endl << flush;
+
   try{
     imgWriter.open(output_opt[0],ncol,nrow,nwriteBand,theType,imageType,option_opt);
-    for(int iband=0;iband<nwriteBand;++iband)
-      imgWriter.GDALSetNoDataValue(dstnodata_opt[0],iband);
+    imgWriter.setNoData(dstnodata_opt);
   }
   catch(string error){
     cout << error << endl;
@@ -625,7 +639,7 @@ int main(int argc, char *argv[])
   }
 
   ImgWriterGdal maskWriter;
-  if(extent_opt.size()&&cut_opt[0]){
+  if(extent_opt.size()&&(cut_opt[0]||eoption_opt.size())){
     try{
       maskWriter.open("/vsimem/mask.tif",ncol,nrow,1,GDT_Float32,"GTiff",option_opt);
       double gt[6];
@@ -643,10 +657,8 @@ int main(int argc, char *argv[])
 	  cout << "projection: " << theProjection << endl;
 	maskWriter.setProjection(theProjection);
       }
-	
-      //todo: handle multiple extent options
       vector<double> burnValues(1,1);//burn value is 1 (single band)
-      maskWriter.rasterizeOgr(extentReader,burnValues);
+      maskWriter.rasterizeOgr(extentReader,burnValues,eoption_opt);
       maskWriter.close();
     }
     catch(string error){
@@ -666,7 +678,7 @@ int main(int argc, char *argv[])
     try{
       if(verbose_opt[0]>=1)
 	std::cout << "opening mask image file " << mask_opt[0] << std::endl;
-      maskReader.open(mask_opt[0]);
+      maskReader.open(mask_opt[0],GA_ReadOnly);
       if(mskband_opt[0]>=maskReader.nrOfBand()){
 	string errorString="Error: illegal mask band";
 	throw(errorString);
@@ -689,7 +701,7 @@ int main(int argc, char *argv[])
   vector<short> fileBuffer(ncol);//holds the number of used files
   Vector2d<short> maxBuffer;//buffer used for maximum voting
   // Vector2d<double> readBuffer(nband);
-  vector<Vector2d<double> > readBuffer(input_opt.size());
+  vector<Vector2d<unsigned short> > readBuffer(input_opt.size());
   for(int ifile=0;ifile<input_opt.size();++ifile)
     readBuffer[ifile].resize(imgReader[ifile].nrOfBand());
   statfactory::StatFactory stat;
@@ -788,14 +800,20 @@ int main(int argc, char *argv[])
 	int readBand=(band_opt.size()>iband)? band_opt[iband] : iband;
         // readBuffer[iband].resize(readncol);
 	try{
-          imgReader[ifile].readData(readBuffer[ifile][iband],GDT_Float64,startCol,endCol,readRow,readBand,theResample);
+          imgReader[ifile].readData(readBuffer[ifile][iband],startCol,endCol,readRow,readBand,theResample);
+	  //test
+          // imgReader[ifile].readData(readBuffer[ifile][iband],static_cast<int>(startCol),static_cast<int>(endCol),static_cast<int>(readRow),static_cast<int>(readBand));
+	  // if(readRow==0&&iband==0){
+	  //   for(int icol=0;icol<10;++icol)
+	  //     cout << readBuffer[0][0][icol] << " ";
+	  //   cout << endl;
+	  // }
 	}
 	catch(string error){
 	  cerr << "error reading image " << input_opt[ifile] << ": " << endl;
 	  throw;
 	}
       }
-        
       for(int ib=0;ib<ncol;++ib){
         imgWriter.image2geo(ib,irow,x,y);
 	//check mask first
@@ -813,7 +831,7 @@ int main(int argc, char *argv[])
 
 	      assert(rowMask>=0&&rowMask<maskReader.nrOfRow());
 	      try{
-		maskReader.readData(lineMask,GDT_Float32,static_cast<int>(rowMask),mskband_opt[0]);
+		maskReader.readData(lineMask,static_cast<int>(rowMask),mskband_opt[0]);
 	      }
 	      catch(string errorstring){
 		cerr << errorstring << endl;
@@ -1197,7 +1215,7 @@ int main(int argc, char *argv[])
           for(int icol=0;icol<imgWriter.nrOfCol();++icol)
             classBuffer[icol]=maxBuffer[icol][class_opt[iclass]];
           try{
-            imgWriter.writeData(classBuffer,GDT_Int16,irow,iclass);
+            imgWriter.writeData(classBuffer,irow,iclass);
           }
           catch(string error){
             cerr << "error writing image file " << output_opt[0] << ": " << error << endl;
@@ -1214,9 +1232,9 @@ int main(int argc, char *argv[])
 	    fileBuffer[icol]=*(maxit);
         }
         try{
-          imgWriter.writeData(writeBuffer[0],GDT_Float64,irow,0);
+          imgWriter.writeData(writeBuffer[0],irow,0);
           if(file_opt[0])
-            imgWriter.writeData(fileBuffer,GDT_Int16,irow,1);
+            imgWriter.writeData(fileBuffer,irow,1);
         }
         catch(string error){
           cerr << "error writing image file " << output_opt[0] << ": " << error << endl;
@@ -1267,7 +1285,7 @@ int main(int argc, char *argv[])
 	  }
         }
         try{
-          imgWriter.writeData(writeBuffer[iband],GDT_Float64,irow,iband);
+          imgWriter.writeData(writeBuffer[iband],irow,iband);
         }
         catch(string error){
           cerr << error << " in " << output_opt[0] << endl;
@@ -1276,7 +1294,7 @@ int main(int argc, char *argv[])
       }
       if(file_opt[0]){
         try{
-          imgWriter.writeData(fileBuffer,GDT_Int16,irow,bands.size());
+          imgWriter.writeData(fileBuffer,irow,bands.size());
         }
         catch(string error){
           cerr << error << " in " << output_opt[0] << endl;
@@ -1287,11 +1305,12 @@ int main(int argc, char *argv[])
     progress=static_cast<float>(irow+1.0)/imgWriter.nrOfRow();
     pfnProgress(progress,pszMessage,pProgressArg);
   }
-  if(extent_opt.size()&&cut_opt.size()){
+  if(extent_opt.size()&&(cut_opt[0]||eoption_opt.size())){
     extentReader.close();
   }
-  for(int ifile=0;ifile<input_opt.size();++ifile)
+  for(int ifile=0;ifile<input_opt.size();++ifile){
     imgReader[ifile].close();
+  }
   if(mask_opt.size())
     maskReader.close();
   imgWriter.close();
diff --git a/src/apps/pkcomposite_app.cc~ b/src/apps/pkcomposite_app.cc~
new file mode 100644
index 0000000..8f2f7de
--- /dev/null
+++ b/src/apps/pkcomposite_app.cc~
@@ -0,0 +1,271 @@
+/**********************************************************************
+pkcomposite.cc: program to mosaic and composite geo-referenced images
+Copyright (C) 2008-2014 Pieter Kempeneers
+
+This file is part of pktools
+
+pktools is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+pktools is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with pktools.  If not, see <http://www.gnu.org/licenses/>.
+***********************************************************************/
+#include <algorithm>
+#include <vector>
+#include <iostream>
+#include <string>
+#include "imageclasses/ImgReaderGdal.h"
+#include "imageclasses/ImgWriterGdal.h"
+#include "imageclasses/ImgReaderOgr.h"
+#include "base/Vector2d.h"
+#include "base/Optionpk.h"
+#include "algorithms/StatFactory.h"
+#include "AppFactory.h"
+/******************************************************************************/
+/*! \page pkcomposite pkcomposite
+
+ program to mosaic and composite geo-referenced images
+## SYNOPSIS
+
+<code>
+  Usage: pkcomposite -i input [-i input]* -o output
+</code>
+
+<code>
+
+  Options: [-b band]* [-dx xres] [-dy yres] [-e vector] [-ulx ULX -uly ULY -lrx LRX -lry LRY] [-cr rule] [-cb band] [-srcnodata value] [-bndnodata band] [-min value] [-max value] [-dstnodata value] [-r resampling_method] [-ot {Byte / Int16 / UInt16 / UInt32 / Int32 / Float32 / Float64 / CInt16 / CInt32 / CFloat32 / CFloat64}] [-of format] [-co NAME=VALUE]* [-a_srs epsg:number]
+
+  Advanced options:
+       [-file] [-w weight]* [-c class]* [-ct colortable] [-d description] [-align]
+</code>
+
+\section pkcomposite_description Description
+
+The utility pkcomposite can be used to \em mosaic and \em composite multiple (georeferenced) raster datasets. A mosaic can merge images with different geographical extents into a single larger image. Compositing resolves the overlapping pixels according to some rule (e.g, the median of all overlapping pixels). This utility is complementary to GDAL, which currently does not support a composite step. Input datasets can have different bounding boxes and spatial resolutionsresolution.
+
+\anchor pkcomposite_rules 
+composite rule | composite output
+------------- | -------------
+overwrite | Overwrite overlapping pixels: the latter input image on the command line overrules the previous image
+maxndvi | Create a maximum NDVI (normalized difference vegetation index) composite from multi-band input images. Use option -cb  to set the indexes of the red and near infrared bands respectively (e.g., -cb 0 -cb 1)
+maxband | Select the pixel with a maximum value in the band specified by option -cb
+minband | Select the pixel with a minimum value in the band specified by option -cb
+mean | Calculate the mean (average) of overlapping pixels
+stdev | Calculate the standard deviation of overlapping pixels
+median | Calculate the median of overlapping pixels
+mode | Select the mode of overlapping pixels (maximum voting): use for Byte images only
+sum | Calculate the arithmetic sum of overlapping pixels
+maxallbands | For each individual band, assign the maximum value found in all overlapping pixels. Unlike maxband, output band values cannot be attributed to a single (date) pixel in the input time series
+minallbands | For each individual band, assign the minimum value found in all overlapping pixels. Unlike minband, output band values cannot be attributed to a single (date) pixel in the input time series
+
+Example: Calculate the maximum NDVI composite of two multispectral input images (e.g., red is band 0 and near infrared is band 1)
+
+\code
+pkcomposite -i input1.tif -i input2.tif -o output.tif -cr maxndvi -cb 0 -cb 1
+\endcode
+
+Example: Calculate the minimum nadir composite of two input images, where the forth band (b=3) contains the view zenith angle
+
+\code
+pkcomposite -i input1.tif -i input2.tif -o minzenith.tif -cr minband -cb 3
+\endcode
+
+Example: Calculate the minimum of two input images in all bands
+
+\code
+pkcomposite -i input1.tif -i input2.tif -o minimum.tif -cr minallbands
+\endcode
+
+
+\section pkcomposite_options Options
+ - use either `-short` or `--long` options (both `--long=value` and `--long value` are supported)
+ - short option `-h` shows basic options only, long option `--help` shows all options
+
+|short|long|type|default|description|
+|-----|----|----|-------|-----------|
+ | i      | input                | std::string |       |Input image file(s). If input contains multiple images, a multi-band output is created | 
+ | o      | output               | std::string |       |Output image file | 
+ | b      | band                 | int  |       |band index(es) to crop (leave empty if all bands must be retained) | 
+ | dx     | dx                   | double |       |Output resolution in x (in meter) (empty: keep original resolution) | 
+ | dy     | dy                   | double |       |Output resolution in y (in meter) (empty: keep original resolution) | 
+ | e      | extent               | std::string |       |get boundary from extent from polygons in vector file | 
+ | cut      | crop_to_cutline    | bool | false |Crop the extent of the target dataset to the extent of the cutline | 
+ | eo       | eo                 | std::string |       |special extent options controlling rasterization: ATTRIBUTE|CHUNKYSIZE|ALL_TOUCHED|BURN_VALUE_FROM|MERGE_ALG, e.g., -eo ATTRIBUTE=fieldname |
+ | m      | mask                 | std::string |       |Use the first band of the specified file as a validity mask (0 is nodata) | 
+ | msknodata | msknodata            | float | 0     |Mask value not to consider for composite
+ | mskband | mskband              | short | 0     |Mask band to read (0 indexed) | 
+ | ulx    | ulx                  | double | 0     |Upper left x value bounding box | 
+ | uly    | uly                  | double | 0     |Upper left y value bounding box | 
+ | lrx    | lrx                  | double | 0     |Lower right x value bounding box | 
+ | lry    | lry                  | double | 0     |Lower right y value bounding box | 
+ | cr     | crule                | std::string | overwrite |Composite rule (overwrite, maxndvi, maxband, minband, mean, mode (only for byte images), median, sum, maxallbands, minallbands, stdev | 
+ | cb     | cband                | int  | 0     |band index used for the composite rule (e.g., for ndvi, use --cband=0 --cband=1 with 0 and 1 indices for red and nir band respectively | 
+ | srcnodata | srcnodata            | double |       |invalid value(s) for input raster dataset | 
+ | bndnodata | bndnodata            | int  | 0     |Band(s) in input image to check if pixel is valid (used for srcnodata, min and max options) | 
+ | min    | min                  | double |       |flag values smaller or equal to this value as invalid. | 
+ | max    | max                  | double |       |flag values larger or equal to this value as invalid. | 
+ | dstnodata | dstnodata            | double | 0     |nodata value to put in output raster dataset if not valid or out of bounds. | 
+ | r      | resampling-method    | std::string | near  |Resampling method (near: nearest neighbor, bilinear: bi-linear interpolation). | 
+ | ot     | otype                | std::string |       |Data type for output image ({Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/CInt16/CInt32/CFloat32/CFloat64}). Empty string: inherit type from input image | 
+ | of     | oformat              | std::string | GTiff |Output image format (see also gdal_translate).| 
+ | co     | co                   | std::string |       |Creation option for output file. Multiple options can be specified. | 
+ | a_srs  | a_srs                | std::string |       |Override the spatial reference for the output file (leave blank to copy from input file, use epsg:3035 to use European projection and force to European grid | 
+ | file   | file                 | short | 0     |write number of observations (1) or sequence nr of selected file (2) for each pixels as additional layer in composite | 
+ | w      | weight               | short | 1     |Weights (type: short) for the composite, use one weight for each input file in same order as input files are provided). Use value 1 for equal weights. | 
+ | c      | class                | short | 0     |classes for multi-band output image: each band represents the number of observations for one specific class. Use value 0 for no multi-band output image. | 
+ | ct     | ct                   | std::string |       |color table file with 5 columns: id R G B ALFA (0: transparent, 255: solid) | 
+ | align  | align                | bool  |       |Align output bounding box to first input image | 
+ | scale  | scale                | double |       |output=scale*input+offset | 
+ | off    | offset               | double |       |output=scale*input+offset | 
+ | mem    | mem                  | unsigned long int | 1000 |Buffer size (in MB) to read image data blocks in memory | 
+ | d      | description          | std::string |       |Set image description | 
+
+Examples
+========
+Some examples how to use pkcomposite can be found \ref examples_pkcomposite "here"
+
+FAQ
+===
+Frequently asked questions on pkcomposite can be found \ref faq_pkcomposite "here
+**/
+
+namespace crule{
+  enum CRULE_TYPE {overwrite=0, maxndvi=1, maxband=2, minband=3, validband=4, mean=5, mode=6, median=7,sum=8,minallbands=9,maxallbands=10,stdev=11};
+}
+
+using namespace std;
+
+int main(int argc, char *argv[])
+{
+  Optionpk<string>  input_opt("i", "input", "Input image file(s). If input contains multiple images, a multi-band output is created");
+  Optionpk<string>  output_opt("o", "output", "Output image file");
+  Optionpk<int>  band_opt("b", "band", "band index(es) to crop (leave empty if all bands must be retained)");
+  Optionpk<double>  dx_opt("dx", "dx", "Output resolution in x (in meter) (empty: keep original resolution)");
+  Optionpk<double>  dy_opt("dy", "dy", "Output resolution in y (in meter) (empty: keep original resolution)");
+  Optionpk<string>  extent_opt("e", "extent", "get boundary from extent from polygons in vector file");
+  Optionpk<bool> cut_opt("cut", "crop_to_cutline", "Crop the extent of the target dataset to the extent of the cutline.",false);
+  Optionpk<string> eoption_opt("eo","eo", "special extent options controlling rasterization: ATTRIBUTE|CHUNKYSIZE|ALL_TOUCHED|BURN_VALUE_FROM|MERGE_ALG, e.g., -eo ATTRIBUTE=fieldname");
+  Optionpk<string> mask_opt("m", "mask", "Use the first band of the specified file as a validity mask (0 is nodata).");
+  Optionpk<float> msknodata_opt("msknodata", "msknodata", "Mask value not to consider for composite.", 0);
+  Optionpk<short> mskband_opt("mskband", "mskband", "Mask band to read (0 indexed)", 0);
+  Optionpk<double>  ulx_opt("ulx", "ulx", "Upper left x value bounding box", 0.0);
+  Optionpk<double>  uly_opt("uly", "uly", "Upper left y value bounding box", 0.0);
+  Optionpk<double>  lrx_opt("lrx", "lrx", "Lower right x value bounding box", 0.0);
+  Optionpk<double>  lry_opt("lry", "lry", "Lower right y value bounding box", 0.0);
+  Optionpk<string> crule_opt("cr", "crule", "Composite rule (overwrite, maxndvi, maxband, minband, mean, mode (only for byte images), median, sum, maxallbands, minallbands, stdev", "overwrite");
+  Optionpk<int> ruleBand_opt("cb", "cband", "band index used for the composite rule (e.g., for ndvi, use --cband=0 --cband=1 with 0 and 1 indices for red and nir band respectively", 0);
+  Optionpk<double> srcnodata_opt("srcnodata", "srcnodata", "invalid value(s) for input raster dataset");
+  Optionpk<int> bndnodata_opt("bndnodata", "bndnodata", "Band(s) in input image to check if pixel is valid (used for srcnodata, min and max options)", 0);
+  Optionpk<double> minValue_opt("min", "min", "flag values smaller or equal to this value as invalid.");
+  Optionpk<double> maxValue_opt("max", "max", "flag values larger or equal to this value as invalid.");
+  Optionpk<double>  dstnodata_opt("dstnodata", "dstnodata", "nodata value to put in output raster dataset if not valid or out of bounds.", 0);
+  Optionpk<string>  resample_opt("r", "resampling-method", "Resampling method (near: nearest neighbor, bilinear: bi-linear interpolation).", "near");
+  Optionpk<string>  otype_opt("ot", "otype", "Data type for output image ({Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/CInt16/CInt32/CFloat32/CFloat64}). Empty string: inherit type from input image", "");
+  Optionpk<string>  oformat_opt("of", "oformat", "Output image format (see also gdal_translate).","GTiff");
+  Optionpk<string> option_opt("co", "co", "Creation option for output file. Multiple options can be specified.");
+  Optionpk<string>  projection_opt("a_srs", "a_srs", "Override the spatial reference for the output file (leave blank to copy from input file, use epsg:3035 to use European projection and force to European grid");
+  Optionpk<short> file_opt("file", "file", "write number of observations (1) or sequence nr of selected file (2) for each pixels as additional layer in composite", 0);
+  Optionpk<short> weight_opt("w", "weight", "Weights (type: short) for the composite, use one weight for each input file in same order as input files are provided). Use value 1 for equal weights.", 1);
+  Optionpk<short> class_opt("c", "class", "classes for multi-band output image: each band represents the number of observations for one specific class. Use value 0 for no multi-band output image.", 0);
+  Optionpk<string>  colorTable_opt("ct", "ct", "color table file with 5 columns: id R G B ALFA (0: transparent, 255: solid)");
+  Optionpk<string>  description_opt("d", "description", "Set image description");
+  Optionpk<bool>  align_opt("align", "align", "Align output bounding box to input image",false);
+  Optionpk<double> scale_opt("scale", "scale", "output=scale*input+offset");
+  Optionpk<double> offset_opt("offset", "offset", "output=scale*input+offset");
+  Optionpk<unsigned long int>  memory_opt("mem", "mem", "Buffer size (in MB) to read image data blocks in memory",1000,1);
+  Optionpk<short>  verbose_opt("v", "verbose", "verbose", 0,2);
+
+  extent_opt.setHide(1);
+  cut_opt.setHide(1);
+  eoption_opt.setHide(1);
+  mask_opt.setHide(1);
+  msknodata_opt.setHide(1);
+  mskband_opt.setHide(1);
+  option_opt.setHide(1);
+  file_opt.setHide(1);
+  weight_opt.setHide(1);
+  class_opt.setHide(1);
+  colorTable_opt.setHide(1);
+  description_opt.setHide(1);
+  scale_opt.setHide(1);
+  offset_opt.setHide(1);
+  memory_opt.setHide(1);
+
+  bool doProcess;//stop process when program was invoked with help option (-h --help)
+  try{
+    doProcess=input_opt.retrieveOption(argc,argv);
+    output_opt.retrieveOption(argc,argv);
+    band_opt.retrieveOption(argc,argv);
+    dx_opt.retrieveOption(argc,argv);
+    dy_opt.retrieveOption(argc,argv);
+    extent_opt.retrieveOption(argc,argv);
+    cut_opt.retrieveOption(argc,argv);
+    eoption_opt.retrieveOption(argc,argv);
+    mask_opt.retrieveOption(argc,argv);
+    msknodata_opt.retrieveOption(argc,argv);
+    mskband_opt.retrieveOption(argc,argv);
+    ulx_opt.retrieveOption(argc,argv);
+    uly_opt.retrieveOption(argc,argv);
+    lrx_opt.retrieveOption(argc,argv);
+    lry_opt.retrieveOption(argc,argv);
+    crule_opt.retrieveOption(argc,argv);
+    ruleBand_opt.retrieveOption(argc,argv);
+    srcnodata_opt.retrieveOption(argc,argv);
+    bndnodata_opt.retrieveOption(argc,argv);
+    minValue_opt.retrieveOption(argc,argv);
+    maxValue_opt.retrieveOption(argc,argv);
+    dstnodata_opt.retrieveOption(argc,argv);
+    resample_opt.retrieveOption(argc,argv);
+    otype_opt.retrieveOption(argc,argv);
+    oformat_opt.retrieveOption(argc,argv);
+    option_opt.retrieveOption(argc,argv);
+    projection_opt.retrieveOption(argc,argv);
+    file_opt.retrieveOption(argc,argv);
+    weight_opt.retrieveOption(argc,argv);
+    class_opt.retrieveOption(argc,argv);
+    colorTable_opt.retrieveOption(argc,argv);
+    description_opt.retrieveOption(argc,argv);
+    align_opt.retrieveOption(argc,argv);
+    scale_opt.retrieveOption(argc,argv);
+    offset_opt.retrieveOption(argc,argv);
+    memory_opt.retrieveOption(argc,argv);
+    verbose_opt.retrieveOption(argc,argv);
+  }
+  catch(string predefinedString){
+    std::cout << predefinedString << std::endl;
+    exit(0);
+  }
+  if(!doProcess){
+    cout << endl;
+    cout << "Usage: pkcomposite -i input [-i input]* -o output" << endl;
+    cout << endl;
+    std::cout << "short option -h shows basic options only, use long option --help to show all options" << std::endl;
+    exit(0);//help was invoked, stop processing
+  }
+  appfactory::AppFactory app(memory_opt[0]);
+  vector<ImgReaderGdal> imgVector(input_opt.size());
+  for(int ifile=0;ifile<input_opt.size();++ifile){
+    try{
+      imgReader[ifile].open(input_opt[ifile],GA_ReadOnly,memory_opt[0]);
+      // imgReader[ifile].open(input_opt[ifile],GA_ReadOnly);
+      for(int iband=0;iband<scale_opt.size();++iband)
+        imgReader[ifile].setScale(scale_opt[iband],iband);
+      for(int iband=0;iband<offset_opt.size();++iband)
+        imgReader[ifile].setOffset(offset_opt[iband],iband);
+    }
+    catch(string errorstring){
+      cerr << errorstring << " " << input_opt[ifile] << endl;
+    }
+  }
+  ImgWriterGdal imgWriter;//AppFactory has been instantiated with memory_opt so we can set mem in ImgWriter 
+  app.pkcomposite<(imgVector,imgWriter);
+  return 0;
+}
+  
diff --git a/src/apps/pkcreatect b/src/apps/pkcreatect
new file mode 100755
index 0000000..928c8f4
--- /dev/null
+++ b/src/apps/pkcreatect
@@ -0,0 +1,228 @@
+#! /bin/bash
+
+# pkcreatect - temporary wrapper script for .libs/pkcreatect
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# The pkcreatect program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command="(cd /home/kempenep/pktools/src/apps; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \ [...]
+
+# This environment variable determines our operation mode.
+if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='2.4.6'
+  notinst_deplibs=' ../../src/algorithms/libalgorithms.la ../../src/imageclasses/libimageClasses.la ../../src/fileclasses/libfileClasses.la'
+else
+  # When we are sourced in execute mode, $file and $ECHO are already set.
+  if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+    file="$0"
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+    ECHO="printf %s\\n"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string --lt-
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's ../../libtool value, followed by no.
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=$0
+  shift
+  for lt_opt
+  do
+    case "$lt_opt" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
+        test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
+        lt_dump_F=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%^.*/%%'`
+        cat "$lt_dump_D/$lt_dump_F"
+        exit 0
+      ;;
+    --lt-*)
+        $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n "$lt_option_debug"; then
+    echo "pkcreatect:pkcreatect:$LINENO: libtool wrapper (GNU libtool) 2.4.6 Debian-2.4.6-0.1" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    $ECHO "pkcreatect:pkcreatect:$LINENO: newargv[$lt_dump_args_N]: $lt_arg"
+    lt_dump_args_N=`expr $lt_dump_args_N + 1`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+
+      if test -n "$lt_option_debug"; then
+        $ECHO "pkcreatect:pkcreatect:$LINENO: newargv[0]: $progdir/$program" 1>&2
+        func_lt_dump_args ${1+"$@"} 1>&2
+      fi
+      exec "$progdir/$program" ${1+"$@"}
+
+      $ECHO "$0: cannot exec $program $*" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from $@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case " $* " in
+  *\ --lt-*)
+    for lt_wr_arg
+    do
+      case $lt_wr_arg in
+      --lt-*) ;;
+      *) set x "$@" "$lt_wr_arg"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core ${1+"$@"}
+}
+
+  # Parse options
+  func_parse_lt_options "$0" ${1+"$@"}
+
+  # Find the directory that this script lives in.
+  thisdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+  test "x$thisdir" = "x$file" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'`
+  while test -n "$file"; do
+    destdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+
+    # If there was a directory component, then change thisdir.
+    if test "x$destdir" != "x$file"; then
+      case "$destdir" in
+      [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
+      *) thisdir="$thisdir/$destdir" ;;
+      esac
+    fi
+
+    file=`$ECHO "$file" | /bin/sed 's%^.*/%%'`
+    file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
+  if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
+    # special case for '.'
+    if test "$thisdir" = "."; then
+      thisdir=`pwd`
+    fi
+    # remove .libs from thisdir
+    case "$thisdir" in
+    *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /bin/sed 's%[\\/][^\\/]*$%%'` ;;
+    .libs )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=`cd "$thisdir" && pwd`
+  test -n "$absdir" && thisdir="$absdir"
+
+  program=lt-'pkcreatect'
+  progdir="$thisdir/.libs"
+
+  if test ! -f "$progdir/$program" ||
+     { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /bin/sed 1q`; \
+       test "X$file" != "X$progdir/$program"; }; then
+
+    file="$$-$program"
+
+    if test ! -d "$progdir"; then
+      mkdir "$progdir"
+    else
+      rm -f "$progdir/$file"
+    fi
+
+    # relink executable if necessary
+    if test -n "$relink_command"; then
+      if relink_command_output=`eval $relink_command 2>&1`; then :
+      else
+	$ECHO "$relink_command_output" >&2
+	rm -f "$progdir/$file"
+	exit 1
+      fi
+    fi
+
+    mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
+    { rm -f "$progdir/$program";
+      mv -f "$progdir/$file" "$progdir/$program"; }
+    rm -f "$progdir/$file"
+  fi
+
+  if test -f "$progdir/$program"; then
+    if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+      # Run the actual program with our arguments.
+      func_exec_program ${1+"$@"}
+    fi
+  else
+    # The program doesn't exist.
+    $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2
+    $ECHO "This script is just a wrapper for $program." 1>&2
+    $ECHO "See the libtool documentation for more information." 1>&2
+    exit 1
+  fi
+fi
diff --git a/src/apps/pkcreatect.cc b/src/apps/pkcreatect.cc
index 1cf0090..f38cb7d 100644
--- a/src/apps/pkcreatect.cc
+++ b/src/apps/pkcreatect.cc
@@ -181,7 +181,7 @@ int main(int argc,char **argv) {
         vector<char> buffer(legendWriter.nrOfCol());
         for(int icol=0;icol<legendWriter.nrOfCol();++icol)
           buffer[icol]=min_opt[0]+irow*static_cast<short>(max_opt[0]-min_opt[0]+1)/legendWriter.nrOfRow();
-        legendWriter.writeData(buffer,GDT_Byte,legendWriter.nrOfRow()-1-irow);
+        legendWriter.writeData(buffer,legendWriter.nrOfRow()-1-irow);
       }
     }
   }
@@ -215,8 +215,8 @@ int main(int argc,char **argv) {
     case(GDT_Byte):{
       vector<char> buffer;
       for(int irow=0;irow<imgReader.nrOfRow();++irow){
-        imgReader.readData(buffer,GDT_Byte,irow);
-        imgWriter.writeData(buffer,GDT_Byte,irow);
+        imgReader.readData(buffer,irow);
+        imgWriter.writeData(buffer,irow);
       }
       break;
     }
@@ -224,16 +224,16 @@ int main(int argc,char **argv) {
       vector<short> buffer;
       cout << "Warning: copying short to unsigned short without conversion, use gdal_translate -scale if needed..." << endl;
       for(int irow=0;irow<imgReader.nrOfRow();++irow){
-        imgReader.readData(buffer,GDT_Int16,irow,0);
-        imgWriter.writeData(buffer,GDT_Int16,irow,0);
+        imgReader.readData(buffer,irow,0);
+        imgWriter.writeData(buffer,irow,0);
       }
       break;
     }
     case(GDT_UInt16):{
       vector<unsigned short> buffer;
       for(int irow=0;irow<imgReader.nrOfRow();++irow){
-        imgReader.readData(buffer,GDT_UInt16,irow,0);
-        imgWriter.writeData(buffer,GDT_UInt16,irow,0);
+        imgReader.readData(buffer,irow,0);
+        imgWriter.writeData(buffer,irow,0);
       }
       break;
     }
diff --git a/src/apps/pkcrop b/src/apps/pkcrop
new file mode 100755
index 0000000..2e642cf
--- /dev/null
+++ b/src/apps/pkcrop
@@ -0,0 +1,228 @@
+#! /bin/bash
+
+# pkcrop - temporary wrapper script for .libs/pkcrop
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# The pkcrop program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command="(cd /home/kempenep/pktools/src/apps; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \ [...]
+
+# This environment variable determines our operation mode.
+if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='2.4.6'
+  notinst_deplibs=' ../../src/algorithms/libalgorithms.la ../../src/imageclasses/libimageClasses.la ../../src/fileclasses/libfileClasses.la'
+else
+  # When we are sourced in execute mode, $file and $ECHO are already set.
+  if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+    file="$0"
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+    ECHO="printf %s\\n"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string --lt-
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's ../../libtool value, followed by no.
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=$0
+  shift
+  for lt_opt
+  do
+    case "$lt_opt" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
+        test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
+        lt_dump_F=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%^.*/%%'`
+        cat "$lt_dump_D/$lt_dump_F"
+        exit 0
+      ;;
+    --lt-*)
+        $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n "$lt_option_debug"; then
+    echo "pkcrop:pkcrop:$LINENO: libtool wrapper (GNU libtool) 2.4.6 Debian-2.4.6-0.1" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    $ECHO "pkcrop:pkcrop:$LINENO: newargv[$lt_dump_args_N]: $lt_arg"
+    lt_dump_args_N=`expr $lt_dump_args_N + 1`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+
+      if test -n "$lt_option_debug"; then
+        $ECHO "pkcrop:pkcrop:$LINENO: newargv[0]: $progdir/$program" 1>&2
+        func_lt_dump_args ${1+"$@"} 1>&2
+      fi
+      exec "$progdir/$program" ${1+"$@"}
+
+      $ECHO "$0: cannot exec $program $*" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from $@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case " $* " in
+  *\ --lt-*)
+    for lt_wr_arg
+    do
+      case $lt_wr_arg in
+      --lt-*) ;;
+      *) set x "$@" "$lt_wr_arg"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core ${1+"$@"}
+}
+
+  # Parse options
+  func_parse_lt_options "$0" ${1+"$@"}
+
+  # Find the directory that this script lives in.
+  thisdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+  test "x$thisdir" = "x$file" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'`
+  while test -n "$file"; do
+    destdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+
+    # If there was a directory component, then change thisdir.
+    if test "x$destdir" != "x$file"; then
+      case "$destdir" in
+      [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
+      *) thisdir="$thisdir/$destdir" ;;
+      esac
+    fi
+
+    file=`$ECHO "$file" | /bin/sed 's%^.*/%%'`
+    file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
+  if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
+    # special case for '.'
+    if test "$thisdir" = "."; then
+      thisdir=`pwd`
+    fi
+    # remove .libs from thisdir
+    case "$thisdir" in
+    *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /bin/sed 's%[\\/][^\\/]*$%%'` ;;
+    .libs )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=`cd "$thisdir" && pwd`
+  test -n "$absdir" && thisdir="$absdir"
+
+  program=lt-'pkcrop'
+  progdir="$thisdir/.libs"
+
+  if test ! -f "$progdir/$program" ||
+     { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /bin/sed 1q`; \
+       test "X$file" != "X$progdir/$program"; }; then
+
+    file="$$-$program"
+
+    if test ! -d "$progdir"; then
+      mkdir "$progdir"
+    else
+      rm -f "$progdir/$file"
+    fi
+
+    # relink executable if necessary
+    if test -n "$relink_command"; then
+      if relink_command_output=`eval $relink_command 2>&1`; then :
+      else
+	$ECHO "$relink_command_output" >&2
+	rm -f "$progdir/$file"
+	exit 1
+      fi
+    fi
+
+    mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
+    { rm -f "$progdir/$program";
+      mv -f "$progdir/$file" "$progdir/$program"; }
+    rm -f "$progdir/$file"
+  fi
+
+  if test -f "$progdir/$program"; then
+    if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+      # Run the actual program with our arguments.
+      func_exec_program ${1+"$@"}
+    fi
+  else
+    # The program doesn't exist.
+    $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2
+    $ECHO "This script is just a wrapper for $program." 1>&2
+    $ECHO "See the libtool documentation for more information." 1>&2
+    exit 1
+  fi
+fi
diff --git a/src/apps/pkcrop.cc b/src/apps/pkcrop.cc
index 884d524..05d82ec 100644
--- a/src/apps/pkcrop.cc
+++ b/src/apps/pkcrop.cc
@@ -43,7 +43,7 @@ along with pktools.  If not, see <http://www.gnu.org/licenses/>.
   Options: [-of out_format] [-ot {Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/CInt16/CInt32/CFloat32/CFloat64}] [-b band]* [-ulx ULX -uly ULY -lrx LRX -lry LRY] [-dx xres] [-dy yres] [-r resampling_method] [-a_srs epsg:number] [-nodata value] 
 
   Advanced options:
-  	   [-e vector [-cut]] [-sband band -eband band]* [-co NAME=VALUE]* [-x center_x -y center_y] [-nx size_x -ny size_y] [-ns nsample -nl nlines] [-as min -as max] [-scale value]* [-off offset]* [-ct colortable] [-d description] [-align]
+  	   [-e vector [-cut] [-eo option]*] [-sband band -eband band]* [-co NAME=VALUE]* [-x center_x -y center_y] [-nx size_x -ny size_y] [-ns nsample -nl nlines] [-as min -as max] [-scale value]* [-off offset]* [-ct colortable] [-d description] [-align]
 </code>
 
 \section pkcrop_description Description
@@ -74,10 +74,10 @@ The utility pkcrop can subset and stack raster images. In the spatial domain it
  | r      | resampling-method    | std::string | near  |Resampling method (near: nearest neighbor, bilinear: bi-linear interpolation). | 
  | e      | extent               | std::string |       |get boundary from extent from polygons in vector file | 
  | cut      | crop_to_cutline    | bool | false |Crop the extent of the target dataset to the extent of the cutline | 
+ | eo       | eo                 | std::string |       |special extent options controlling rasterization: ATTRIBUTE|CHUNKYSIZE|ALL_TOUCHED|BURN_VALUE_FROM|MERGE_ALG, e.g., -eo ATTRIBUTE=fieldname |
  | m      | mask                 | std::string |       |Use the specified file as a validity mask (0 is nodata) | 
  | msknodata | msknodata            | float | 0     |Mask value not to consider for crop
- | msknodata | msknodata            | float | 0     |Mask value not to consider for crop
- | mskband | mskband              | short | 0     |Mask band to read (0 indexed). Provide band for each mask. | 
+ | mskband | mskband              | short | 0     |Mask band to read (0 indexed) | 
  | co     | co                   | std::string |       |Creation option for output file. Multiple options can be specified. | 
  | x      | x                    | double |       |x-coordinate of image center to crop (in meter) | 
  | y      | y                    | double |       |y-coordinate of image center to crop (in meter) | 
@@ -106,9 +106,10 @@ int main(int argc, char *argv[])
   //todo: support layer names
   Optionpk<string>  extent_opt("e", "extent", "get boundary from extent from polygons in vector file");
   Optionpk<bool> cut_opt("cut", "crop_to_cutline", "Crop the extent of the target dataset to the extent of the cutline.",false);
+  Optionpk<string> eoption_opt("eo","eo", "special extent options controlling rasterization: ATTRIBUTE|CHUNKYSIZE|ALL_TOUCHED|BURN_VALUE_FROM|MERGE_ALG, e.g., -eo ATTRIBUTE=fieldname");
   Optionpk<string> mask_opt("m", "mask", "Use the the specified file as a validity mask (0 is nodata).");
   Optionpk<float> msknodata_opt("msknodata", "msknodata", "Mask value not to consider for crop.", 0);
-  Optionpk<short> mskband_opt("mskband", "mskband", "Mask band to read (0 indexed). Provide band for each mask.", 0);
+  Optionpk<short> mskband_opt("mskband", "mskband", "Mask band to read (0 indexed)", 0);
   Optionpk<double>  ulx_opt("ulx", "ulx", "Upper left x value bounding box", 0.0);
   Optionpk<double>  uly_opt("uly", "uly", "Upper left y value bounding box", 0.0);
   Optionpk<double>  lrx_opt("lrx", "lrx", "Lower right x value bounding box", 0.0);
@@ -131,7 +132,7 @@ int main(int argc, char *argv[])
   Optionpk<string>  oformat_opt("of", "oformat", "Output image format (see also gdal_translate).","GTiff");
   Optionpk<string> option_opt("co", "co", "Creation option for output file. Multiple options can be specified.");
   Optionpk<string>  colorTable_opt("ct", "ct", "color table (file with 5 columns: id R G B ALFA (0: transparent, 255: solid)");
-  Optionpk<float>  nodata_opt("nodata", "nodata", "Nodata value to put in image if out of bounds.");
+  Optionpk<double>  nodata_opt("nodata", "nodata", "Nodata value to put in image if out of bounds.");
   Optionpk<string>  resample_opt("r", "resampling-method", "Resampling method (near: nearest neighbor, bilinear: bi-linear interpolation).", "near");
   Optionpk<string>  description_opt("d", "description", "Set image description");
   Optionpk<bool>  align_opt("align", "align", "Align output bounding box to input image",false);
@@ -139,6 +140,7 @@ int main(int argc, char *argv[])
 
   extent_opt.setHide(1);
   cut_opt.setHide(1);
+  eoption_opt.setHide(1);
   bstart_opt.setHide(1);
   bend_opt.setHide(1);
   mask_opt.setHide(1);
@@ -177,6 +179,7 @@ int main(int argc, char *argv[])
     resample_opt.retrieveOption(argc,argv);
     extent_opt.retrieveOption(argc,argv);
     cut_opt.retrieveOption(argc,argv);
+    eoption_opt.retrieveOption(argc,argv);
     mask_opt.retrieveOption(argc,argv);
     msknodata_opt.retrieveOption(argc,argv);
     mskband_opt.retrieveOption(argc,argv);
@@ -276,7 +279,13 @@ int main(int argc, char *argv[])
   bool isGeoRef=false;
   string projectionString;
   for(int iimg=0;iimg<input_opt.size();++iimg){
-    imgReader.open(input_opt[iimg]);
+    try{
+    imgReader.open(input_opt[iimg],GA_ReadOnly);
+    }
+    catch(string error){
+      cerr << "Error: could not open file " << input_opt[iimg] << ": " << error << std::endl;
+      exit(1);
+    }
     if(!isGeoRef)
       isGeoRef=imgReader.isGeoRef();
     if(imgReader.isGeoRef()&&projection_opt.empty())
@@ -285,6 +294,7 @@ int main(int argc, char *argv[])
       if(!iimg||imgReader.getDeltaX()<dx)
         dx=imgReader.getDeltaX();
     }
+    
     if(dy_opt.empty()){
       if(!iimg||imgReader.getDeltaY()<dy)
         dy=imgReader.getDeltaY();
@@ -328,9 +338,16 @@ int main(int argc, char *argv[])
     double e_lrx;
     double e_lry;
     for(int iextent=0;iextent<extent_opt.size();++iextent){
-      extentReader.open(extent_opt[iextent]);
-      if(!(extentReader.getExtent(e_ulx,e_uly,e_lrx,e_lry))){
-        cerr << "Error: could not get extent from " << extent_opt[0] << endl;
+      try{
+        extentReader.open(extent_opt[iextent]);
+        if(!(extentReader.getExtent(e_ulx,e_uly,e_lrx,e_lry))){
+          ostringstream os;
+          os << "Error: could not get extent from " << extent_opt[0] << endl;
+          throw(os.str());
+        }
+      }
+      catch(string error){
+        cerr << error << std::endl;
         exit(1);
       }
       if(!iextent){
@@ -351,7 +368,15 @@ int main(int argc, char *argv[])
       }
       extentReader.close();
     }
-    if(cut_opt.size())
+    if(croplrx>cropulx&&cropulx>ulx_opt[0])
+      ulx_opt[0]=cropulx;
+    if(croplrx>cropulx&&croplrx<lrx_opt[0])
+      lrx_opt[0]=croplrx;
+    if(cropuly>croplry&&cropuly<uly_opt[0])
+      uly_opt[0]=cropuly;
+    if(croplry<cropuly&&croplry>lry_opt[0])
+      lry_opt[0]=croplry;
+    if(cut_opt.size()||eoption_opt.size())
       extentReader.open(extent_opt[0]);
   }
   else if(cx_opt.size()&&cy_opt.size()&&nx_opt.size()&&ny_opt.size()){
@@ -390,10 +415,15 @@ int main(int argc, char *argv[])
   int ncroprow=0;
 
   ImgWriterGdal maskWriter;
-  if(extent_opt.size()&&cut_opt[0]){
+  if(extent_opt.size()&&(cut_opt[0]||eoption_opt.size())){
+    if(mask_opt.size()){
+      string errorString="Error: can only either mask or extent extent with cutline, not both";
+      throw(errorString);
+    }
     try{
       ncropcol=abs(static_cast<int>(ceil((lrx_opt[0]-ulx_opt[0])/dx)));
       ncroprow=abs(static_cast<int>(ceil((uly_opt[0]-lry_opt[0])/dy)));
+      //todo: produce unique name
       maskWriter.open("/vsimem/mask.tif",ncropcol,ncroprow,1,GDT_Float32,"GTiff",option_opt);
       double gt[6];
       gt[0]=ulx_opt[0];
@@ -408,29 +438,22 @@ int main(int argc, char *argv[])
       else if(projectionString.size())
 	maskWriter.setProjection(projectionString);
 	
-      //todo: handle multiple extent options
       vector<double> burnValues(1,1);//burn value is 1 (single band)
-      maskWriter.rasterizeOgr(extentReader,burnValues);
+      maskWriter.rasterizeOgr(extentReader,burnValues,eoption_opt);
       maskWriter.close();
     }
     catch(string error){
       cerr << error << std::endl;
       exit(2);
     }
-    catch(...){
-      cerr << "error caught" << std::endl;
-      exit(1);
-    }
-    //todo: support multiple masks
     mask_opt.clear();
     mask_opt.push_back("/vsimem/mask.tif");
   }
   ImgReaderGdal maskReader;
-  if(mask_opt.size()){
+  if(mask_opt.size()==1){
     try{
-      if(verbose_opt[0]>=1)
-	std::cout << "opening mask image file " << mask_opt[0] << std::endl;
-      maskReader.open(mask_opt[0]);
+      //there is only a single mask
+      maskReader.open(mask_opt[0],GA_ReadOnly);
       if(mskband_opt[0]>=maskReader.nrOfBand()){
 	string errorString="Error: illegal mask band";
 	throw(errorString);
@@ -440,10 +463,6 @@ int main(int argc, char *argv[])
       cerr << error << std::endl;
       exit(2);
     }
-    catch(...){
-      cerr << "error caught" << std::endl;
-      exit(1);
-    }
   }
 
   //determine number of output bands
@@ -468,7 +487,13 @@ int main(int argc, char *argv[])
   for(int iimg=0;iimg<input_opt.size();++iimg){
     if(verbose_opt[0])
       cout << "opening image " << input_opt[iimg] << endl;
-    imgReader.open(input_opt[iimg]);
+    try{
+      imgReader.open(input_opt[iimg],GA_ReadOnly);
+    }
+    catch(string error){
+      cerr << error << std::endl;
+      exit(2);
+    }
     //if output type not set, get type from input image
     if(theType==GDT_Unknown){
       theType=imgReader.getDataType();
@@ -598,8 +623,9 @@ int main(int argc, char *argv[])
       try{
         imgWriter.open(output_opt[0],ncropcol,ncroprow,ncropband,theType,imageType,option_opt);
 	if(nodata_opt.size()){
-	  for(int iband=0;iband<ncropband;++iband)
-	    imgWriter.GDALSetNoDataValue(nodata_opt[0],iband);
+	  imgWriter.setNoData(nodata_opt);
+	  // for(int iband=0;iband<ncropband;++iband)
+	  //   imgWriter.GDALSetNoDataValue(nodata_opt[0],iband);
 	}
       }
       catch(string errorstring){
@@ -657,7 +683,8 @@ int main(int argc, char *argv[])
 
 
     int readncol=endCol-startCol+1;
-    vector<double> readBuffer(readncol+1);
+    // vector<double> readBuffer(readncol+1);
+    vector<double> readBuffer;
     int nband=(band_opt.size())?band_opt.size() : imgReader.nrOfBand();
     for(int iband=0;iband<nband;++iband){
       int readBand=(band_opt.size()>iband)?band_opt[iband]:iband;
@@ -718,13 +745,13 @@ int main(int argc, char *argv[])
 	    writeBuffer.push_back(nodataValue);
 	}
 	else{
-	  if(verbose_opt[0]>1)
-	    cout << "reading row: " << readRow << endl;
 	  try{
-            if(endCol<imgReader.nrOfCol()-1)
-              imgReader.readData(readBuffer,GDT_Float64,startCol,endCol+1,readRow,readBand,theResample);
-            else
-              imgReader.readData(readBuffer,GDT_Float64,startCol,endCol,readRow,readBand,theResample);
+            if(endCol<imgReader.nrOfCol()-1){
+              imgReader.readData(readBuffer,startCol,endCol+1,readRow,readBand,theResample);
+            }
+            else{
+              imgReader.readData(readBuffer,startCol,endCol,readRow,readBand,theResample);
+            }
 	    // for(int icol=0;icol<ncropcol;++icol){
 	    double oldRowMask=-1;//keep track of row mask to optimize number of line readings
 	    for(int icol=0;icol<imgWriter.nrOfCol();++icol){
@@ -740,6 +767,7 @@ int main(int argc, char *argv[])
 		writeBuffer.push_back(nodataValue);
 	      }
 	      else{
+		
                 bool valid=true;
 		double geox=0;
 		double geoy=0;
@@ -757,7 +785,7 @@ int main(int argc, char *argv[])
 
 		      assert(rowMask>=0&&rowMask<maskReader.nrOfRow());
 		      try{
-			maskReader.readData(lineMask,GDT_Float32,static_cast<int>(rowMask),mskband_opt[0]);
+			maskReader.readData(lineMask,static_cast<int>(rowMask),mskband_opt[0]);
 		      }
 		      catch(string errorstring){
 			cerr << errorstring << endl;
@@ -769,11 +797,15 @@ int main(int argc, char *argv[])
 		      }
 		      oldRowMask=rowMask;
 		    }
-		    if(lineMask[colMask]==msknodata_opt[0])
-		      valid=false;
+                    for(int ivalue=0;ivalue<msknodata_opt.size();++ivalue){
+                      if(lineMask[colMask]==msknodata_opt[ivalue]){
+                        valid=false;
+			if(nodata_opt.size()>ivalue)
+			  nodataValue=nodata_opt[ivalue];
+                      }
+                    }
 		  }
 		}
-
                 if(!valid)
                   writeBuffer.push_back(nodataValue);
                 else{
@@ -810,7 +842,7 @@ int main(int argc, char *argv[])
 	  cout << "writeBuffer.size()=" << writeBuffer.size() << ", imgWriter.nrOfCol()=" << imgWriter.nrOfCol() << endl;
 	assert(writeBuffer.size()==imgWriter.nrOfCol());
 	try{
-	  imgWriter.writeData(writeBuffer,GDT_Float64,irow,writeBand);
+	  imgWriter.writeData(writeBuffer,irow,writeBand);
 	}
 	catch(string errorstring){
 	  cout << errorstring << endl;
@@ -834,7 +866,7 @@ int main(int argc, char *argv[])
     }
     imgReader.close();
   }
-  if(extent_opt.size()&&cut_opt.size()){
+  if(extent_opt.size()&&(cut_opt[0]||eoption_opt.size())){
     extentReader.close();
   }
   if(mask_opt.size())
diff --git a/src/apps/pkdiff b/src/apps/pkdiff
new file mode 100755
index 0000000..172a0b0
--- /dev/null
+++ b/src/apps/pkdiff
@@ -0,0 +1,228 @@
+#! /bin/bash
+
+# pkdiff - temporary wrapper script for .libs/pkdiff
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# The pkdiff program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command="(cd /home/kempenep/pktools/src/apps; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \ [...]
+
+# This environment variable determines our operation mode.
+if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='2.4.6'
+  notinst_deplibs=' ../../src/algorithms/libalgorithms.la ../../src/imageclasses/libimageClasses.la ../../src/fileclasses/libfileClasses.la'
+else
+  # When we are sourced in execute mode, $file and $ECHO are already set.
+  if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+    file="$0"
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+    ECHO="printf %s\\n"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string --lt-
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's ../../libtool value, followed by no.
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=$0
+  shift
+  for lt_opt
+  do
+    case "$lt_opt" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
+        test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
+        lt_dump_F=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%^.*/%%'`
+        cat "$lt_dump_D/$lt_dump_F"
+        exit 0
+      ;;
+    --lt-*)
+        $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n "$lt_option_debug"; then
+    echo "pkdiff:pkdiff:$LINENO: libtool wrapper (GNU libtool) 2.4.6 Debian-2.4.6-0.1" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    $ECHO "pkdiff:pkdiff:$LINENO: newargv[$lt_dump_args_N]: $lt_arg"
+    lt_dump_args_N=`expr $lt_dump_args_N + 1`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+
+      if test -n "$lt_option_debug"; then
+        $ECHO "pkdiff:pkdiff:$LINENO: newargv[0]: $progdir/$program" 1>&2
+        func_lt_dump_args ${1+"$@"} 1>&2
+      fi
+      exec "$progdir/$program" ${1+"$@"}
+
+      $ECHO "$0: cannot exec $program $*" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from $@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case " $* " in
+  *\ --lt-*)
+    for lt_wr_arg
+    do
+      case $lt_wr_arg in
+      --lt-*) ;;
+      *) set x "$@" "$lt_wr_arg"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core ${1+"$@"}
+}
+
+  # Parse options
+  func_parse_lt_options "$0" ${1+"$@"}
+
+  # Find the directory that this script lives in.
+  thisdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+  test "x$thisdir" = "x$file" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'`
+  while test -n "$file"; do
+    destdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+
+    # If there was a directory component, then change thisdir.
+    if test "x$destdir" != "x$file"; then
+      case "$destdir" in
+      [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
+      *) thisdir="$thisdir/$destdir" ;;
+      esac
+    fi
+
+    file=`$ECHO "$file" | /bin/sed 's%^.*/%%'`
+    file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
+  if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
+    # special case for '.'
+    if test "$thisdir" = "."; then
+      thisdir=`pwd`
+    fi
+    # remove .libs from thisdir
+    case "$thisdir" in
+    *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /bin/sed 's%[\\/][^\\/]*$%%'` ;;
+    .libs )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=`cd "$thisdir" && pwd`
+  test -n "$absdir" && thisdir="$absdir"
+
+  program=lt-'pkdiff'
+  progdir="$thisdir/.libs"
+
+  if test ! -f "$progdir/$program" ||
+     { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /bin/sed 1q`; \
+       test "X$file" != "X$progdir/$program"; }; then
+
+    file="$$-$program"
+
+    if test ! -d "$progdir"; then
+      mkdir "$progdir"
+    else
+      rm -f "$progdir/$file"
+    fi
+
+    # relink executable if necessary
+    if test -n "$relink_command"; then
+      if relink_command_output=`eval $relink_command 2>&1`; then :
+      else
+	$ECHO "$relink_command_output" >&2
+	rm -f "$progdir/$file"
+	exit 1
+      fi
+    fi
+
+    mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
+    { rm -f "$progdir/$program";
+      mv -f "$progdir/$file" "$progdir/$program"; }
+    rm -f "$progdir/$file"
+  fi
+
+  if test -f "$progdir/$program"; then
+    if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+      # Run the actual program with our arguments.
+      func_exec_program ${1+"$@"}
+    fi
+  else
+    # The program doesn't exist.
+    $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2
+    $ECHO "This script is just a wrapper for $program." 1>&2
+    $ECHO "See the libtool documentation for more information." 1>&2
+    exit 1
+  fi
+fi
diff --git a/src/apps/pkdiff.cc b/src/apps/pkdiff.cc
index b097268..7df4887 100644
--- a/src/apps/pkdiff.cc
+++ b/src/apps/pkdiff.cc
@@ -291,6 +291,7 @@ int main(int argc, char *argv[])
     referenceReaderOgr.close();
   }
   catch(string errorString){
+    //todo: sampleIsRaster will not work from GDAL 2.0!!?? (unification of driver for raster and vector datasets)
     refIsRaster=true;
   }
   const char* pszMessage;
@@ -495,7 +496,7 @@ int main(int argc, char *argv[])
 		  continue;
 		if(verbose_opt[0])
 		  cout << setprecision(12) << "reading image value at x,y " << x << "," << y << " (" << i << "," << j << "), ";
-		inputReader.readData(inputValue,GDT_Float64,i,j,band_opt[0]);
+		inputReader.readData(inputValue,i,j,band_opt[0]);
 		inputValues.push_back(inputValue);
 		if(inputValues.back()!=*(inputValues.begin()))
 		  isHomogeneous=false;
@@ -510,7 +511,7 @@ int main(int argc, char *argv[])
 		}
 		maskFlagged=false;//(msknodata_opt[ivalue]>=0)?false:true;
 		if(mask_opt.size()){
-		  maskReader.readData(maskValue,GDT_Float64,i,j,0);
+		  maskReader.readData(maskValue,i,j,0);
 		  for(int ivalue=0;ivalue<msknodata_opt.size();++ivalue){
 		    if(msknodata_opt[ivalue]>=0){//values set in msknodata_opt are invalid
 		      if(maskValue==msknodata_opt[ivalue]){
@@ -754,7 +755,7 @@ int main(int argc, char *argv[])
     // for(irow=0;irow<inputReader.nrOfRow()&&!isDifferent;++irow){
     for(irow=0;irow<inputReader.nrOfRow();++irow){
       //read line in lineInput, lineReference and lineMask
-      inputReader.readData(lineInput,GDT_Float64,irow,band_opt[0]);
+      inputReader.readData(lineInput,irow,band_opt[0]);
       double x,y;//geo coordinates
       double ireference,jreference;//image coordinates in reference image
       double imask,jmask;//image coordinates in mask image
@@ -784,7 +785,7 @@ int main(int argc, char *argv[])
 	    }
           }
           else{
-            referenceReaderGdal.readData(lineReference,GDT_Float64,static_cast<int>(jreference),band_opt[1]);
+            referenceReaderGdal.readData(lineReference,static_cast<int>(jreference),band_opt[1]);
             oldreferencerow=jreference;
           }
         }
@@ -801,7 +802,7 @@ int main(int argc, char *argv[])
 	  maskReader.geo2image(x,y,imask,jmask);
 	  if(jmask>=0&&jmask<maskReader.nrOfRow()){
 	    if(jmask!=oldmaskrow)
-	      maskReader.readData(lineMask,GDT_Float64,jmask);
+	      maskReader.readData(lineMask,jmask);
 	    for(int ivalue=0;ivalue<msknodata_opt.size();++ivalue){
 	      if(lineMask[icol]==msknodata_opt[ivalue]){
 		flagged=true;
@@ -865,7 +866,7 @@ int main(int argc, char *argv[])
       }
       if(output_opt.size()){
         try{
-          gdalWriter.writeData(lineOutput,GDT_Float64,irow);
+          gdalWriter.writeData(lineOutput,irow);
         }
         catch(string errorstring){
           cerr << "lineOutput.size(): " << lineOutput.size() << endl;
diff --git a/src/apps/pkdsm2shadow b/src/apps/pkdsm2shadow
new file mode 100755
index 0000000..a797925
--- /dev/null
+++ b/src/apps/pkdsm2shadow
@@ -0,0 +1,228 @@
+#! /bin/bash
+
+# pkdsm2shadow - temporary wrapper script for .libs/pkdsm2shadow
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# The pkdsm2shadow program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command="(cd /home/kempenep/pktools/src/apps; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \ [...]
+
+# This environment variable determines our operation mode.
+if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='2.4.6'
+  notinst_deplibs=' ../../src/algorithms/libalgorithms.la ../../src/imageclasses/libimageClasses.la ../../src/fileclasses/libfileClasses.la'
+else
+  # When we are sourced in execute mode, $file and $ECHO are already set.
+  if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+    file="$0"
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+    ECHO="printf %s\\n"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string --lt-
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's ../../libtool value, followed by no.
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=$0
+  shift
+  for lt_opt
+  do
+    case "$lt_opt" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
+        test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
+        lt_dump_F=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%^.*/%%'`
+        cat "$lt_dump_D/$lt_dump_F"
+        exit 0
+      ;;
+    --lt-*)
+        $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n "$lt_option_debug"; then
+    echo "pkdsm2shadow:pkdsm2shadow:$LINENO: libtool wrapper (GNU libtool) 2.4.6 Debian-2.4.6-0.1" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    $ECHO "pkdsm2shadow:pkdsm2shadow:$LINENO: newargv[$lt_dump_args_N]: $lt_arg"
+    lt_dump_args_N=`expr $lt_dump_args_N + 1`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+
+      if test -n "$lt_option_debug"; then
+        $ECHO "pkdsm2shadow:pkdsm2shadow:$LINENO: newargv[0]: $progdir/$program" 1>&2
+        func_lt_dump_args ${1+"$@"} 1>&2
+      fi
+      exec "$progdir/$program" ${1+"$@"}
+
+      $ECHO "$0: cannot exec $program $*" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from $@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case " $* " in
+  *\ --lt-*)
+    for lt_wr_arg
+    do
+      case $lt_wr_arg in
+      --lt-*) ;;
+      *) set x "$@" "$lt_wr_arg"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core ${1+"$@"}
+}
+
+  # Parse options
+  func_parse_lt_options "$0" ${1+"$@"}
+
+  # Find the directory that this script lives in.
+  thisdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+  test "x$thisdir" = "x$file" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'`
+  while test -n "$file"; do
+    destdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+
+    # If there was a directory component, then change thisdir.
+    if test "x$destdir" != "x$file"; then
+      case "$destdir" in
+      [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
+      *) thisdir="$thisdir/$destdir" ;;
+      esac
+    fi
+
+    file=`$ECHO "$file" | /bin/sed 's%^.*/%%'`
+    file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
+  if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
+    # special case for '.'
+    if test "$thisdir" = "."; then
+      thisdir=`pwd`
+    fi
+    # remove .libs from thisdir
+    case "$thisdir" in
+    *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /bin/sed 's%[\\/][^\\/]*$%%'` ;;
+    .libs )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=`cd "$thisdir" && pwd`
+  test -n "$absdir" && thisdir="$absdir"
+
+  program=lt-'pkdsm2shadow'
+  progdir="$thisdir/.libs"
+
+  if test ! -f "$progdir/$program" ||
+     { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /bin/sed 1q`; \
+       test "X$file" != "X$progdir/$program"; }; then
+
+    file="$$-$program"
+
+    if test ! -d "$progdir"; then
+      mkdir "$progdir"
+    else
+      rm -f "$progdir/$file"
+    fi
+
+    # relink executable if necessary
+    if test -n "$relink_command"; then
+      if relink_command_output=`eval $relink_command 2>&1`; then :
+      else
+	$ECHO "$relink_command_output" >&2
+	rm -f "$progdir/$file"
+	exit 1
+      fi
+    fi
+
+    mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
+    { rm -f "$progdir/$program";
+      mv -f "$progdir/$file" "$progdir/$program"; }
+    rm -f "$progdir/$file"
+  fi
+
+  if test -f "$progdir/$program"; then
+    if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+      # Run the actual program with our arguments.
+      func_exec_program ${1+"$@"}
+    fi
+  else
+    # The program doesn't exist.
+    $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2
+    $ECHO "This script is just a wrapper for $program." 1>&2
+    $ECHO "See the libtool documentation for more information." 1>&2
+    exit 1
+  fi
+fi
diff --git a/src/apps/pkdumpimg b/src/apps/pkdumpimg
new file mode 100755
index 0000000..a3e1cf6
--- /dev/null
+++ b/src/apps/pkdumpimg
@@ -0,0 +1,228 @@
+#! /bin/bash
+
+# pkdumpimg - temporary wrapper script for .libs/pkdumpimg
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# The pkdumpimg program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command="(cd /home/kempenep/pktools/src/apps; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \ [...]
+
+# This environment variable determines our operation mode.
+if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='2.4.6'
+  notinst_deplibs=' ../../src/algorithms/libalgorithms.la ../../src/imageclasses/libimageClasses.la ../../src/fileclasses/libfileClasses.la'
+else
+  # When we are sourced in execute mode, $file and $ECHO are already set.
+  if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+    file="$0"
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+    ECHO="printf %s\\n"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string --lt-
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's ../../libtool value, followed by no.
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=$0
+  shift
+  for lt_opt
+  do
+    case "$lt_opt" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
+        test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
+        lt_dump_F=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%^.*/%%'`
+        cat "$lt_dump_D/$lt_dump_F"
+        exit 0
+      ;;
+    --lt-*)
+        $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n "$lt_option_debug"; then
+    echo "pkdumpimg:pkdumpimg:$LINENO: libtool wrapper (GNU libtool) 2.4.6 Debian-2.4.6-0.1" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    $ECHO "pkdumpimg:pkdumpimg:$LINENO: newargv[$lt_dump_args_N]: $lt_arg"
+    lt_dump_args_N=`expr $lt_dump_args_N + 1`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+
+      if test -n "$lt_option_debug"; then
+        $ECHO "pkdumpimg:pkdumpimg:$LINENO: newargv[0]: $progdir/$program" 1>&2
+        func_lt_dump_args ${1+"$@"} 1>&2
+      fi
+      exec "$progdir/$program" ${1+"$@"}
+
+      $ECHO "$0: cannot exec $program $*" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from $@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case " $* " in
+  *\ --lt-*)
+    for lt_wr_arg
+    do
+      case $lt_wr_arg in
+      --lt-*) ;;
+      *) set x "$@" "$lt_wr_arg"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core ${1+"$@"}
+}
+
+  # Parse options
+  func_parse_lt_options "$0" ${1+"$@"}
+
+  # Find the directory that this script lives in.
+  thisdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+  test "x$thisdir" = "x$file" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'`
+  while test -n "$file"; do
+    destdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+
+    # If there was a directory component, then change thisdir.
+    if test "x$destdir" != "x$file"; then
+      case "$destdir" in
+      [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
+      *) thisdir="$thisdir/$destdir" ;;
+      esac
+    fi
+
+    file=`$ECHO "$file" | /bin/sed 's%^.*/%%'`
+    file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
+  if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
+    # special case for '.'
+    if test "$thisdir" = "."; then
+      thisdir=`pwd`
+    fi
+    # remove .libs from thisdir
+    case "$thisdir" in
+    *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /bin/sed 's%[\\/][^\\/]*$%%'` ;;
+    .libs )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=`cd "$thisdir" && pwd`
+  test -n "$absdir" && thisdir="$absdir"
+
+  program=lt-'pkdumpimg'
+  progdir="$thisdir/.libs"
+
+  if test ! -f "$progdir/$program" ||
+     { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /bin/sed 1q`; \
+       test "X$file" != "X$progdir/$program"; }; then
+
+    file="$$-$program"
+
+    if test ! -d "$progdir"; then
+      mkdir "$progdir"
+    else
+      rm -f "$progdir/$file"
+    fi
+
+    # relink executable if necessary
+    if test -n "$relink_command"; then
+      if relink_command_output=`eval $relink_command 2>&1`; then :
+      else
+	$ECHO "$relink_command_output" >&2
+	rm -f "$progdir/$file"
+	exit 1
+      fi
+    fi
+
+    mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
+    { rm -f "$progdir/$program";
+      mv -f "$progdir/$file" "$progdir/$program"; }
+    rm -f "$progdir/$file"
+  fi
+
+  if test -f "$progdir/$program"; then
+    if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+      # Run the actual program with our arguments.
+      func_exec_program ${1+"$@"}
+    fi
+  else
+    # The program doesn't exist.
+    $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2
+    $ECHO "This script is just a wrapper for $program." 1>&2
+    $ECHO "See the libtool documentation for more information." 1>&2
+    exit 1
+  fi
+fi
diff --git a/src/apps/pkdumpimg.cc b/src/apps/pkdumpimg.cc
index 9cd433c..2bbadc6 100644
--- a/src/apps/pkdumpimg.cc
+++ b/src/apps/pkdumpimg.cc
@@ -302,11 +302,11 @@ int main(int argc, char *argv[])
       }
       try{
         //test
-        // imgReader.readData(readBuffer,GDT_Float64,startCol,endCol,readRow,band_opt[0],theResample);
+        // imgReader.readData(readBuffer,startCol,endCol,readRow,band_opt[0],theResample);
         if(endCol<imgReader.nrOfCol()-1)
-          imgReader.readData(readBuffer,GDT_Float64,startCol,endCol+1,readRow,band_opt[iband],theResample);
+          imgReader.readData(readBuffer,startCol,endCol+1,readRow,band_opt[iband],theResample);
         else
-          imgReader.readData(readBuffer,GDT_Float64,startCol,endCol,readRow,band_opt[iband],theResample);
+          imgReader.readData(readBuffer,startCol,endCol,readRow,band_opt[iband],theResample);
         for(int ib=0;ib<ncropcol;++ib){
           // assert(imgWriter.image2geo(ib,irow,x,y));
           assert(imgReader.image2geo(ib,irow,x,y));
diff --git a/src/apps/pkdumpogr b/src/apps/pkdumpogr
new file mode 100755
index 0000000..2d88347
--- /dev/null
+++ b/src/apps/pkdumpogr
@@ -0,0 +1,228 @@
+#! /bin/bash
+
+# pkdumpogr - temporary wrapper script for .libs/pkdumpogr
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# The pkdumpogr program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command="(cd /home/kempenep/pktools/src/apps; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \ [...]
+
+# This environment variable determines our operation mode.
+if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='2.4.6'
+  notinst_deplibs=' ../../src/algorithms/libalgorithms.la ../../src/imageclasses/libimageClasses.la ../../src/fileclasses/libfileClasses.la'
+else
+  # When we are sourced in execute mode, $file and $ECHO are already set.
+  if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+    file="$0"
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+    ECHO="printf %s\\n"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string --lt-
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's ../../libtool value, followed by no.
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=$0
+  shift
+  for lt_opt
+  do
+    case "$lt_opt" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
+        test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
+        lt_dump_F=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%^.*/%%'`
+        cat "$lt_dump_D/$lt_dump_F"
+        exit 0
+      ;;
+    --lt-*)
+        $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n "$lt_option_debug"; then
+    echo "pkdumpogr:pkdumpogr:$LINENO: libtool wrapper (GNU libtool) 2.4.6 Debian-2.4.6-0.1" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    $ECHO "pkdumpogr:pkdumpogr:$LINENO: newargv[$lt_dump_args_N]: $lt_arg"
+    lt_dump_args_N=`expr $lt_dump_args_N + 1`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+
+      if test -n "$lt_option_debug"; then
+        $ECHO "pkdumpogr:pkdumpogr:$LINENO: newargv[0]: $progdir/$program" 1>&2
+        func_lt_dump_args ${1+"$@"} 1>&2
+      fi
+      exec "$progdir/$program" ${1+"$@"}
+
+      $ECHO "$0: cannot exec $program $*" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from $@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case " $* " in
+  *\ --lt-*)
+    for lt_wr_arg
+    do
+      case $lt_wr_arg in
+      --lt-*) ;;
+      *) set x "$@" "$lt_wr_arg"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core ${1+"$@"}
+}
+
+  # Parse options
+  func_parse_lt_options "$0" ${1+"$@"}
+
+  # Find the directory that this script lives in.
+  thisdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+  test "x$thisdir" = "x$file" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'`
+  while test -n "$file"; do
+    destdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+
+    # If there was a directory component, then change thisdir.
+    if test "x$destdir" != "x$file"; then
+      case "$destdir" in
+      [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
+      *) thisdir="$thisdir/$destdir" ;;
+      esac
+    fi
+
+    file=`$ECHO "$file" | /bin/sed 's%^.*/%%'`
+    file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
+  if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
+    # special case for '.'
+    if test "$thisdir" = "."; then
+      thisdir=`pwd`
+    fi
+    # remove .libs from thisdir
+    case "$thisdir" in
+    *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /bin/sed 's%[\\/][^\\/]*$%%'` ;;
+    .libs )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=`cd "$thisdir" && pwd`
+  test -n "$absdir" && thisdir="$absdir"
+
+  program=lt-'pkdumpogr'
+  progdir="$thisdir/.libs"
+
+  if test ! -f "$progdir/$program" ||
+     { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /bin/sed 1q`; \
+       test "X$file" != "X$progdir/$program"; }; then
+
+    file="$$-$program"
+
+    if test ! -d "$progdir"; then
+      mkdir "$progdir"
+    else
+      rm -f "$progdir/$file"
+    fi
+
+    # relink executable if necessary
+    if test -n "$relink_command"; then
+      if relink_command_output=`eval $relink_command 2>&1`; then :
+      else
+	$ECHO "$relink_command_output" >&2
+	rm -f "$progdir/$file"
+	exit 1
+      fi
+    fi
+
+    mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
+    { rm -f "$progdir/$program";
+      mv -f "$progdir/$file" "$progdir/$program"; }
+    rm -f "$progdir/$file"
+  fi
+
+  if test -f "$progdir/$program"; then
+    if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+      # Run the actual program with our arguments.
+      func_exec_program ${1+"$@"}
+    fi
+  else
+    # The program doesn't exist.
+    $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2
+    $ECHO "This script is just a wrapper for $program." 1>&2
+    $ECHO "See the libtool documentation for more information." 1>&2
+    exit 1
+  fi
+fi
diff --git a/src/apps/pkegcs b/src/apps/pkegcs
new file mode 100755
index 0000000..3aa5409
--- /dev/null
+++ b/src/apps/pkegcs
@@ -0,0 +1,228 @@
+#! /bin/bash
+
+# pkegcs - temporary wrapper script for .libs/pkegcs
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# The pkegcs program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command="(cd /home/kempenep/pktools/src/apps; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \ [...]
+
+# This environment variable determines our operation mode.
+if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='2.4.6'
+  notinst_deplibs=' ../../src/algorithms/libalgorithms.la ../../src/imageclasses/libimageClasses.la ../../src/fileclasses/libfileClasses.la'
+else
+  # When we are sourced in execute mode, $file and $ECHO are already set.
+  if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+    file="$0"
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+    ECHO="printf %s\\n"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string --lt-
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's ../../libtool value, followed by no.
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=$0
+  shift
+  for lt_opt
+  do
+    case "$lt_opt" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
+        test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
+        lt_dump_F=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%^.*/%%'`
+        cat "$lt_dump_D/$lt_dump_F"
+        exit 0
+      ;;
+    --lt-*)
+        $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n "$lt_option_debug"; then
+    echo "pkegcs:pkegcs:$LINENO: libtool wrapper (GNU libtool) 2.4.6 Debian-2.4.6-0.1" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    $ECHO "pkegcs:pkegcs:$LINENO: newargv[$lt_dump_args_N]: $lt_arg"
+    lt_dump_args_N=`expr $lt_dump_args_N + 1`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+
+      if test -n "$lt_option_debug"; then
+        $ECHO "pkegcs:pkegcs:$LINENO: newargv[0]: $progdir/$program" 1>&2
+        func_lt_dump_args ${1+"$@"} 1>&2
+      fi
+      exec "$progdir/$program" ${1+"$@"}
+
+      $ECHO "$0: cannot exec $program $*" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from $@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case " $* " in
+  *\ --lt-*)
+    for lt_wr_arg
+    do
+      case $lt_wr_arg in
+      --lt-*) ;;
+      *) set x "$@" "$lt_wr_arg"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core ${1+"$@"}
+}
+
+  # Parse options
+  func_parse_lt_options "$0" ${1+"$@"}
+
+  # Find the directory that this script lives in.
+  thisdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+  test "x$thisdir" = "x$file" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'`
+  while test -n "$file"; do
+    destdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+
+    # If there was a directory component, then change thisdir.
+    if test "x$destdir" != "x$file"; then
+      case "$destdir" in
+      [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
+      *) thisdir="$thisdir/$destdir" ;;
+      esac
+    fi
+
+    file=`$ECHO "$file" | /bin/sed 's%^.*/%%'`
+    file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
+  if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
+    # special case for '.'
+    if test "$thisdir" = "."; then
+      thisdir=`pwd`
+    fi
+    # remove .libs from thisdir
+    case "$thisdir" in
+    *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /bin/sed 's%[\\/][^\\/]*$%%'` ;;
+    .libs )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=`cd "$thisdir" && pwd`
+  test -n "$absdir" && thisdir="$absdir"
+
+  program=lt-'pkegcs'
+  progdir="$thisdir/.libs"
+
+  if test ! -f "$progdir/$program" ||
+     { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /bin/sed 1q`; \
+       test "X$file" != "X$progdir/$program"; }; then
+
+    file="$$-$program"
+
+    if test ! -d "$progdir"; then
+      mkdir "$progdir"
+    else
+      rm -f "$progdir/$file"
+    fi
+
+    # relink executable if necessary
+    if test -n "$relink_command"; then
+      if relink_command_output=`eval $relink_command 2>&1`; then :
+      else
+	$ECHO "$relink_command_output" >&2
+	rm -f "$progdir/$file"
+	exit 1
+      fi
+    fi
+
+    mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
+    { rm -f "$progdir/$program";
+      mv -f "$progdir/$file" "$progdir/$program"; }
+    rm -f "$progdir/$file"
+  fi
+
+  if test -f "$progdir/$program"; then
+    if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+      # Run the actual program with our arguments.
+      func_exec_program ${1+"$@"}
+    fi
+  else
+    # The program doesn't exist.
+    $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2
+    $ECHO "This script is just a wrapper for $program." 1>&2
+    $ECHO "See the libtool documentation for more information." 1>&2
+    exit 1
+  fi
+fi
diff --git a/src/apps/pkextract b/src/apps/pkextract
new file mode 100755
index 0000000..56523e3
--- /dev/null
+++ b/src/apps/pkextract
@@ -0,0 +1,228 @@
+#! /bin/bash
+
+# pkextract - temporary wrapper script for .libs/pkextract
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# The pkextract program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command="(cd /home/kempenep/pktools/src/apps; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \ [...]
+
+# This environment variable determines our operation mode.
+if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='2.4.6'
+  notinst_deplibs=' ../../src/algorithms/libalgorithms.la ../../src/imageclasses/libimageClasses.la ../../src/fileclasses/libfileClasses.la'
+else
+  # When we are sourced in execute mode, $file and $ECHO are already set.
+  if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+    file="$0"
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+    ECHO="printf %s\\n"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string --lt-
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's ../../libtool value, followed by no.
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=$0
+  shift
+  for lt_opt
+  do
+    case "$lt_opt" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
+        test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
+        lt_dump_F=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%^.*/%%'`
+        cat "$lt_dump_D/$lt_dump_F"
+        exit 0
+      ;;
+    --lt-*)
+        $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n "$lt_option_debug"; then
+    echo "pkextract:pkextract:$LINENO: libtool wrapper (GNU libtool) 2.4.6 Debian-2.4.6-0.1" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    $ECHO "pkextract:pkextract:$LINENO: newargv[$lt_dump_args_N]: $lt_arg"
+    lt_dump_args_N=`expr $lt_dump_args_N + 1`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+
+      if test -n "$lt_option_debug"; then
+        $ECHO "pkextract:pkextract:$LINENO: newargv[0]: $progdir/$program" 1>&2
+        func_lt_dump_args ${1+"$@"} 1>&2
+      fi
+      exec "$progdir/$program" ${1+"$@"}
+
+      $ECHO "$0: cannot exec $program $*" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from $@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case " $* " in
+  *\ --lt-*)
+    for lt_wr_arg
+    do
+      case $lt_wr_arg in
+      --lt-*) ;;
+      *) set x "$@" "$lt_wr_arg"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core ${1+"$@"}
+}
+
+  # Parse options
+  func_parse_lt_options "$0" ${1+"$@"}
+
+  # Find the directory that this script lives in.
+  thisdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+  test "x$thisdir" = "x$file" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'`
+  while test -n "$file"; do
+    destdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+
+    # If there was a directory component, then change thisdir.
+    if test "x$destdir" != "x$file"; then
+      case "$destdir" in
+      [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
+      *) thisdir="$thisdir/$destdir" ;;
+      esac
+    fi
+
+    file=`$ECHO "$file" | /bin/sed 's%^.*/%%'`
+    file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
+  if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
+    # special case for '.'
+    if test "$thisdir" = "."; then
+      thisdir=`pwd`
+    fi
+    # remove .libs from thisdir
+    case "$thisdir" in
+    *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /bin/sed 's%[\\/][^\\/]*$%%'` ;;
+    .libs )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=`cd "$thisdir" && pwd`
+  test -n "$absdir" && thisdir="$absdir"
+
+  program=lt-'pkextract'
+  progdir="$thisdir/.libs"
+
+  if test ! -f "$progdir/$program" ||
+     { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /bin/sed 1q`; \
+       test "X$file" != "X$progdir/$program"; }; then
+
+    file="$$-$program"
+
+    if test ! -d "$progdir"; then
+      mkdir "$progdir"
+    else
+      rm -f "$progdir/$file"
+    fi
+
+    # relink executable if necessary
+    if test -n "$relink_command"; then
+      if relink_command_output=`eval $relink_command 2>&1`; then :
+      else
+	$ECHO "$relink_command_output" >&2
+	rm -f "$progdir/$file"
+	exit 1
+      fi
+    fi
+
+    mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
+    { rm -f "$progdir/$program";
+      mv -f "$progdir/$file" "$progdir/$program"; }
+    rm -f "$progdir/$file"
+  fi
+
+  if test -f "$progdir/$program"; then
+    if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+      # Run the actual program with our arguments.
+      func_exec_program ${1+"$@"}
+    fi
+  else
+    # The program doesn't exist.
+    $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2
+    $ECHO "This script is just a wrapper for $program." 1>&2
+    $ECHO "See the libtool documentation for more information." 1>&2
+    exit 1
+  fi
+fi
diff --git a/src/apps/pkextract.cc b/src/apps/pkextract.cc
index 71cbdcd..a404698 100644
--- a/src/apps/pkextract.cc
+++ b/src/apps/pkextract.cc
@@ -90,7 +90,7 @@ percentile | Extract percentile as defined by option perc (e.g, 95th percentile
  | grid   | grid                 | double |       |Create systematic grid of points. Provide cell grid size (in projected units, e.g,. m) | 
  | o      | output               | std::string |       |Output sample dataset | 
  | c      | class                | int  |       |Class(es) to extract from input sample image. Leave empty to extract all valid data pixels from sample dataset. Make sure to set classes if rule is set to mode, proportion or count | 
- | t      | threshold            | float | 100   |Probability threshold for selecting samples (randomly). Provide probability in percentage (>0) or absolute (<0). Use a single threshold for vector sample datasets. If using raster land cover maps as a sample dataset, you can provide a threshold value for each class (e.g. -t 80 -t 60). Use value 100 to select all pixels for selected class(es) | 
+ | t      | threshold            | float | 100   |Probability threshold for selecting samples (randomly). Provide probability in percentage (>0) or absolute (<0). Use a single threshold per vector sample layer. If using raster land cover maps as a sample dataset, you can provide a threshold value for each class (e.g. -t 80 -t 60). Use value 100 to select all pixels for selected class(es) | 
  | perc   | perc                 | double | 95    |Percentile value used for rule percentile | 
  | f      | f                    | std::string | SQLite |Output sample dataset format | 
  | ft     | ftype                | std::string | Real  |Field type (only Real or Integer) | 
@@ -134,7 +134,7 @@ int main(int argc, char *argv[])
   Optionpk<double> grid_opt("grid", "grid", "Create systematic grid of points. Provide cell grid size (in projected units, e.g,. m)");
   Optionpk<string> output_opt("o", "output", "Output sample dataset");
   Optionpk<int> class_opt("c", "class", "Class(es) to extract from input sample image. Leave empty to extract all valid data pixels from sample dataset. Make sure to set classes if rule is set to mode, proportion or count");
-  Optionpk<float> threshold_opt("t", "threshold", "Probability threshold for selecting samples (randomly). Provide probability in percentage (>0) or absolute (<0). Use a single threshold for vector sample datasets. If using raster land cover maps as a sample dataset, you can provide a threshold value for each class (e.g. -t 80 -t 60). Use value 100 to select all pixels for selected class(es)", 100);
+  Optionpk<float> threshold_opt("t", "threshold", "Probability threshold for selecting samples (randomly). Provide probability in percentage (>0) or absolute (<0). Use a single threshold per vector sample layer. If using raster land cover maps as a sample dataset, you can provide a threshold value for each class (e.g. -t 80 -t 60). Use value 100 to select all pixels for selected class(es)", 100);
   Optionpk<double> percentile_opt("perc","perc","Percentile value used for rule percentile",95);
   Optionpk<string> ogrformat_opt("f", "f", "Output sample dataset format","SQLite");
   Optionpk<string> ftype_opt("ft", "ftype", "Field type (only Real or Integer)", "Real");
@@ -151,7 +151,7 @@ int main(int argc, char *argv[])
   Optionpk<string> fieldname_opt("bn", "bname", "For single band input data, this extra attribute name will correspond to the raster values. For multi-band input data, multiple attributes with this prefix will be added (e.g. b0, b1, b2, etc.)", "b");
   Optionpk<string> label_opt("cn", "cname", "Name of the class label in the output vector dataset", "label");
   Optionpk<short> geo_opt("geo", "geo", "Use geo coordinates (set to 0 to use image coordinates)", 1);
-  Optionpk<short> down_opt("down", "down", "Down sampling factor (for raster sample datasets only). Can be used to create grid points", 1);
+  Optionpk<short> down_opt("down", "down", "Down sampling factor (for raster sample datasets only).", 1);
   Optionpk<short> buffer_opt("buf", "buffer", "Buffer for calculating statistics for point features ");
   Optionpk<bool> disc_opt("circ", "circular", "Use a circular disc kernel buffer (for vector point sample datasets only, use in combination with buffer option)", false);
   Optionpk<short> verbose_opt("v", "verbose", "Verbose mode if > 0", 0,2);
@@ -234,8 +234,6 @@ int main(int argc, char *argv[])
   if(srcnodata_opt.size()){
     while(srcnodata_opt.size()<bndnodata_opt.size())
       srcnodata_opt.push_back(srcnodata_opt[0]);
-    while(bndnodata_opt.size()<srcnodata_opt.size())
-      bndnodata_opt.push_back(bndnodata_opt[0]);
   }
 
   if(verbose_opt[0])
@@ -406,7 +404,7 @@ int main(int argc, char *argv[])
 	pt.setY(theY);
 	pointFeature->SetGeometry( &pt ); 
 	if(sampleWriterOgr.createFeature(pointFeature) != OGRERR_NONE ){
-	  cerr << "Failed to create feature in shapefile" << endl;
+	  cerr << "Failed to create feature in vector dataset" << endl;
 	  exit( 1 );
 	}
 	OGRFeature::DestroyFeature(pointFeature);
@@ -429,7 +427,7 @@ int main(int argc, char *argv[])
 	  pt.setY(theY);
 	  pointFeature->SetGeometry( &pt ); 
 	  if(sampleWriterOgr.createFeature(pointFeature) != OGRERR_NONE ){
-	    cerr << "Failed to create feature in shapefile" << endl;
+	    cerr << "Failed to create feature in vector dataset" << endl;
 	    exit( 1 );
 	  }
 	  OGRFeature::DestroyFeature(pointFeature);
@@ -857,7 +855,18 @@ int main(int argc, char *argv[])
       std::cout << "creating image sample writer " << output_opt[0] << std::endl;
     ImgWriterOgr ogrWriter;
     ImgWriterOgr ogrTestWriter;
+    double e_ulx;
+    double e_uly;
+    double e_lrx;
+    double e_lry;
     try{
+      sampleReaderOgr.getExtent(e_ulx,e_uly,e_lrx,e_lry);
+      bool hasCoverage=((e_ulx < imgReader.getLrx())&&(e_lrx > imgReader.getUlx())&&(e_lry < imgReader.getUly())&&(e_uly > imgReader.getLry()));
+      if(!hasCoverage){
+	ostringstream ess;
+	ess << "No coverage in " << image_opt[0] << " for any layer in " << sample_opt[0] << endl;
+	throw(ess.str());
+      }
       ogrWriter.open(output_opt[0],ogrformat_opt[0]);
       if(test_opt.size()){
 	if(verbose_opt[0]>1)
@@ -902,7 +911,7 @@ int main(int argc, char *argv[])
 
     if(verbose_opt[0])
       std::cout << "number of layers: " << nlayerRead << endl;
-      
+
     for(int ilayer=0;ilayer<nlayerRead;++ilayer){
       OGRLayer *readLayer=sampleReaderOgr.getLayer(ilayer);
       string currentLayername=readLayer->GetName();
@@ -914,6 +923,10 @@ int main(int argc, char *argv[])
 	else
 	  layerIndex=it-layer_opt.begin();
       }
+      sampleReaderOgr.getExtent(e_ulx,e_uly,e_lrx,e_lry,ilayer);
+      bool hasCoverage=((e_ulx < imgReader.getLrx())&&(e_lrx > imgReader.getUlx())&&(e_lry < imgReader.getUly())&&(e_uly > imgReader.getLry()));
+      if(!hasCoverage)
+	continue;
       float theThreshold=(threshold_opt.size()==layer_opt.size())? threshold_opt[layerIndex]: threshold_opt[0];
       cout << "processing layer " << currentLayername << endl;
       
diff --git a/src/apps/pkextractimg b/src/apps/pkextractimg
new file mode 100755
index 0000000..f67390e
--- /dev/null
+++ b/src/apps/pkextractimg
@@ -0,0 +1,228 @@
+#! /bin/bash
+
+# pkextractimg - temporary wrapper script for .libs/pkextractimg
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# The pkextractimg program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command="(cd /home/kempenep/pktools/src/apps; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \ [...]
+
+# This environment variable determines our operation mode.
+if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='2.4.6'
+  notinst_deplibs=' ../../src/algorithms/libalgorithms.la ../../src/imageclasses/libimageClasses.la ../../src/fileclasses/libfileClasses.la'
+else
+  # When we are sourced in execute mode, $file and $ECHO are already set.
+  if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+    file="$0"
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+    ECHO="printf %s\\n"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string --lt-
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's ../../libtool value, followed by no.
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=$0
+  shift
+  for lt_opt
+  do
+    case "$lt_opt" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
+        test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
+        lt_dump_F=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%^.*/%%'`
+        cat "$lt_dump_D/$lt_dump_F"
+        exit 0
+      ;;
+    --lt-*)
+        $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n "$lt_option_debug"; then
+    echo "pkextractimg:pkextractimg:$LINENO: libtool wrapper (GNU libtool) 2.4.6 Debian-2.4.6-0.1" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    $ECHO "pkextractimg:pkextractimg:$LINENO: newargv[$lt_dump_args_N]: $lt_arg"
+    lt_dump_args_N=`expr $lt_dump_args_N + 1`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+
+      if test -n "$lt_option_debug"; then
+        $ECHO "pkextractimg:pkextractimg:$LINENO: newargv[0]: $progdir/$program" 1>&2
+        func_lt_dump_args ${1+"$@"} 1>&2
+      fi
+      exec "$progdir/$program" ${1+"$@"}
+
+      $ECHO "$0: cannot exec $program $*" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from $@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case " $* " in
+  *\ --lt-*)
+    for lt_wr_arg
+    do
+      case $lt_wr_arg in
+      --lt-*) ;;
+      *) set x "$@" "$lt_wr_arg"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core ${1+"$@"}
+}
+
+  # Parse options
+  func_parse_lt_options "$0" ${1+"$@"}
+
+  # Find the directory that this script lives in.
+  thisdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+  test "x$thisdir" = "x$file" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'`
+  while test -n "$file"; do
+    destdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+
+    # If there was a directory component, then change thisdir.
+    if test "x$destdir" != "x$file"; then
+      case "$destdir" in
+      [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
+      *) thisdir="$thisdir/$destdir" ;;
+      esac
+    fi
+
+    file=`$ECHO "$file" | /bin/sed 's%^.*/%%'`
+    file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
+  if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
+    # special case for '.'
+    if test "$thisdir" = "."; then
+      thisdir=`pwd`
+    fi
+    # remove .libs from thisdir
+    case "$thisdir" in
+    *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /bin/sed 's%[\\/][^\\/]*$%%'` ;;
+    .libs )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=`cd "$thisdir" && pwd`
+  test -n "$absdir" && thisdir="$absdir"
+
+  program=lt-'pkextractimg'
+  progdir="$thisdir/.libs"
+
+  if test ! -f "$progdir/$program" ||
+     { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /bin/sed 1q`; \
+       test "X$file" != "X$progdir/$program"; }; then
+
+    file="$$-$program"
+
+    if test ! -d "$progdir"; then
+      mkdir "$progdir"
+    else
+      rm -f "$progdir/$file"
+    fi
+
+    # relink executable if necessary
+    if test -n "$relink_command"; then
+      if relink_command_output=`eval $relink_command 2>&1`; then :
+      else
+	$ECHO "$relink_command_output" >&2
+	rm -f "$progdir/$file"
+	exit 1
+      fi
+    fi
+
+    mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
+    { rm -f "$progdir/$program";
+      mv -f "$progdir/$file" "$progdir/$program"; }
+    rm -f "$progdir/$file"
+  fi
+
+  if test -f "$progdir/$program"; then
+    if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+      # Run the actual program with our arguments.
+      func_exec_program ${1+"$@"}
+    fi
+  else
+    # The program doesn't exist.
+    $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2
+    $ECHO "This script is just a wrapper for $program." 1>&2
+    $ECHO "See the libtool documentation for more information." 1>&2
+    exit 1
+  fi
+fi
diff --git a/src/apps/pkextractimg.cc b/src/apps/pkextractimg.cc
new file mode 100644
index 0000000..7265474
--- /dev/null
+++ b/src/apps/pkextractimg.cc
@@ -0,0 +1,780 @@
+/**********************************************************************
+pkextractimg.cc: extract pixel values from raster image using a raster sample
+Copyright (C) 2008-2016 Pieter Kempeneers
+
+This file is part of pktools
+
+pktools is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+pktools is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with pktools.  If not, see <http://www.gnu.org/licenses/>.
+***********************************************************************/
+#include <assert.h>
+#include <math.h>
+#include <stdlib.h>
+#include <sstream>
+#include <string>
+#include <algorithm>
+#include <ctime>
+#include <vector>
+#include "imageclasses/ImgReaderGdal.h"
+#include "imageclasses/ImgWriterOgr.h"
+#include "base/Optionpk.h"
+#include "algorithms/StatFactory.h"
+
+#ifndef PI
+#define PI 3.1415926535897932384626433832795
+#endif
+
+/******************************************************************************/
+/*! \page pkextractimg pkextractimg
+ extract pixel values from raster image using a raster sample
+## SYNOPSIS
+
+<code>
+  Usage: pkextractimg -i input -s sample -o output
+</code>
+
+<code>
+
+  Options: [-c class]* [-t threshold]* [-f format] [-ft fieldType] [-lt labelType] [-b band]* [-r rule]
+
+  Advanced options:
+  [-sband band -eband band]* [-bndnodata band [-srcnodata value]*] [-bn attribute] [-cn attribute] [-down value]
+</code>
+
+\section pkextractimg_description Description
+
+The utility pkextractimg extracts pixel values from an input raster dataset, based on the locations you provide via a sample file. The sample should be a raster dataset with categorical (integer) values. The typical use case is a land cover map that overlaps the input raster dataset. The utility then extracts pixels from the input raster for the respective land cover classes. To select a random subset of the sample raster dataset you can set the threshold option -t with a percentage valu [...]
+
+\anchor pkextractimg_rules 
+
+Overview of the possible extraction rules:
+
+\section pkextractimg_options Options
+ - use either `-short` or `--long` options (both `--long=value` and `--long value` are supported)
+ - short option `-h` shows basic options only, long option `--help` shows all options
+|short|long|type|default|description|
+|-----|----|----|-------|-----------|
+ | i      | input                | std::string |       |Raster input dataset containing band information | 
+ | s      | sample               | std::string |       |Raster dataset with categorical values to sample the input raster dataset. Output will contain features with input band information included | 
+ | ln     | ln                   | std::string |       |Layer name(s) in sample (leave empty to select all) | 
+ | rand   | random               | unsigned int |       |Create simple random sample of points. Provide number of points to generate | 
+ | grid   | grid                 | double |       |Create systematic grid of points. Provide cell grid size (in projected units, e.g,. m) | 
+ | o      | output               | std::string |       |Output sample dataset | 
+ | c      | class                | int  |       |Class(es) to extract from input sample image. Leave empty to extract all valid data pixels from sample dataset. Make sure to set classes if rule is set to mode, proportion or count | 
+ | t      | threshold            | float | 100   |Probability threshold for selecting samples (randomly). Provide probability in percentage (>0) or absolute (<0). You can provide a threshold value for each class (e.g. -t 80 -t 60). Use value 100 to select all pixels for selected class(es) | 
+ | f      | f                    | std::string | SQLite |Output sample dataset format | 
+ | ft     | ftype                | std::string | Real  |Field type (only Real or Integer) | 
+ | lt     | ltype                | std::string | Integer |Label type: In16 or String | 
+ | b      | band                 | int  |       |Band index(es) to extract (0 based). Leave empty to use all bands | 
+ | sband  | startband            | unsigned short |      |Start band sequence number | 
+ | eband  | endband              | unsigned short |      |End band sequence number   | 
+ | bndnodata | bndnodata            | int  | 0     |Band in input image to check if pixel is valid (used for srcnodata) | 
+ | srcnodata | srcnodata            | double |       |Invalid value(s) for input image | 
+ | bn     | bname                | std::string | b     |For single band input data, this extra attribute name will correspond to the raster values. For multi-band input data, multiple attributes with this prefix will be added (e.g. b0, b1, b2, etc.) | 
+ | cn     | cname                | std::string | label |Name of the class label in the output vector dataset | 
+ | down   | down                 | short | 1     |Down sampling factor | 
+
+Usage: pkextractimg -i input [-s sample | -rand number | -grid size] -o output
+
+
+Examples
+========
+Some examples how to use pkextractimg can be found \ref examples_pkextractimg "here"
+**/
+
+using namespace std;
+
+int main(int argc, char *argv[])
+{
+  Optionpk<string> image_opt("i", "input", "Raster input dataset containing band information");
+  Optionpk<string> sample_opt("s", "sample", "OGR vector dataset with features to be extracted from input data. Output will contain features with input band information included. Sample image can also be GDAL raster dataset.");
+  Optionpk<unsigned int> random_opt("rand", "random", "Create simple random sample of points. Provide number of points to generate");
+  Optionpk<double> grid_opt("grid", "grid", "Create systematic grid of points. Provide cell grid size (in projected units, e.g,. m)");
+  Optionpk<string> output_opt("o", "output", "Output sample dataset");
+  Optionpk<int> class_opt("c", "class", "Class(es) to extract from input sample image. Leave empty to extract all valid data pixels from sample dataset. Make sure to set classes if rule is set to mode, proportion or count");
+  Optionpk<float> threshold_opt("t", "threshold", "Probability threshold for selecting samples (randomly). Provide probability in percentage (>0) or absolute (<0). Use a single threshold per vector sample layer. If using raster land cover maps as a sample dataset, you can provide a threshold value for each class (e.g. -t 80 -t 60). Use value 100 to select all pixels for selected class(es)", 100);
+  Optionpk<string> ogrformat_opt("f", "f", "Output sample dataset format","SQLite");
+  Optionpk<string> ftype_opt("ft", "ftype", "Field type (only Real or Integer)", "Real");
+  Optionpk<string> ltype_opt("lt", "ltype", "Label type: In16 or String", "Integer");
+  Optionpk<int> band_opt("b", "band", "Band index(es) to extract (0 based). Leave empty to use all bands");
+  Optionpk<unsigned short> bstart_opt("sband", "startband", "Start band sequence number"); 
+  Optionpk<unsigned short> bend_opt("eband", "endband", "End band sequence number"); 
+  Optionpk<double> srcnodata_opt("srcnodata", "srcnodata", "Invalid value(s) for input image");
+  Optionpk<int> bndnodata_opt("bndnodata", "bndnodata", "Band in input image to check if pixel is valid (used for srcnodata)", 0);
+  Optionpk<string> fieldname_opt("bn", "bname", "For single band input data, this extra attribute name will correspond to the raster values. For multi-band input data, multiple attributes with this prefix will be added (e.g. b0, b1, b2, etc.)", "b");
+  Optionpk<string> label_opt("cn", "cname", "Name of the class label in the output vector dataset", "label");
+  Optionpk<short> down_opt("down", "down", "Down sampling factor", 1);
+  Optionpk<short> verbose_opt("v", "verbose", "Verbose mode if > 0", 0,2);
+
+  bstart_opt.setHide(1);
+  bend_opt.setHide(1);
+  bndnodata_opt.setHide(1);
+  srcnodata_opt.setHide(1);
+  fieldname_opt.setHide(1);
+  label_opt.setHide(1);
+  down_opt.setHide(1);
+
+  bool doProcess;//stop process when program was invoked with help option (-h --help)
+  try{
+    doProcess=image_opt.retrieveOption(argc,argv);
+    sample_opt.retrieveOption(argc,argv);
+    random_opt.retrieveOption(argc,argv);
+    grid_opt.retrieveOption(argc,argv);
+    output_opt.retrieveOption(argc,argv);
+    class_opt.retrieveOption(argc,argv);
+    threshold_opt.retrieveOption(argc,argv);
+    ogrformat_opt.retrieveOption(argc,argv);
+    ftype_opt.retrieveOption(argc,argv);
+    ltype_opt.retrieveOption(argc,argv);
+    band_opt.retrieveOption(argc,argv);
+    bstart_opt.retrieveOption(argc,argv);
+    bend_opt.retrieveOption(argc,argv);
+    bndnodata_opt.retrieveOption(argc,argv);
+    srcnodata_opt.retrieveOption(argc,argv);
+    fieldname_opt.retrieveOption(argc,argv);
+    label_opt.retrieveOption(argc,argv);
+    down_opt.retrieveOption(argc,argv);
+    verbose_opt.retrieveOption(argc,argv);
+  }
+  catch(string predefinedString){
+    std::cout << predefinedString << std::endl;
+    exit(0);
+  }
+  if(!doProcess){
+    cout << endl;
+    cout << "Usage: pkextractimg -i input [-s sample | -rand number | -grid size] -o output" << endl;
+    cout << endl;
+    std::cout << "short option -h shows basic options only, use long option --help to show all options" << std::endl;
+    exit(0);//help was invoked, stop processing
+  }
+
+  // if(srcnodata_opt.size()){
+  //   while(srcnodata_opt.size()<bndnodata_opt.size())
+  //     srcnodata_opt.push_back(srcnodata_opt[0]);
+  // }
+
+  if(verbose_opt[0])
+    std::cout << class_opt << std::endl;
+  statfactory::StatFactory stat;
+  stat.setNoDataValues(srcnodata_opt);
+  Vector2d<unsigned int> posdata;
+  unsigned long int nsample=0;
+  unsigned long int ntotalvalid=0;
+  unsigned long int ntotalinvalid=0;
+
+  map<int,unsigned long int> nvalid;
+  map<int,unsigned long int> ninvalid;
+  // vector<unsigned long int> nvalid(class_opt.size());
+  // vector<unsigned long int> ninvalid(class_opt.size());
+  // if(class_opt.empty()){
+  //   nvalid.resize(256);
+  //   ninvalid.resize(256);
+  // }
+  // for(int it=0;it<nvalid.size();++it){
+  //   nvalid[it]=0;
+  //   ninvalid[it]=0;
+  // }
+
+  map <int,short> classmap;//class->index
+  for(int iclass=0;iclass<class_opt.size();++iclass){
+    nvalid[class_opt[iclass]]=0;
+    ninvalid[class_opt[iclass]]=0;
+    classmap[class_opt[iclass]]=iclass;
+  }
+
+  ImgReaderGdal imgReader;
+  if(image_opt.empty()){
+    std::cerr << "No image dataset provided (use option -i). Use --help for help information";
+      exit(0);
+  }
+  if(output_opt.empty()){
+    std::cerr << "No output dataset provided (use option -o). Use --help for help information";
+      exit(0);
+  }
+  try{
+    imgReader.open(image_opt[0]);
+  }
+  catch(std::string errorstring){
+    std::cout << errorstring << std::endl;
+    exit(0);
+  }
+
+  //convert start and end band options to vector of band indexes
+  try{
+    if(bstart_opt.size()){
+      if(bend_opt.size()!=bstart_opt.size()){
+	string errorstring="Error: options for start and end band indexes must be provided as pairs, missing end band";
+	throw(errorstring);
+      }
+      band_opt.clear();
+      for(int ipair=0;ipair<bstart_opt.size();++ipair){
+	if(bend_opt[ipair]<=bstart_opt[ipair]){
+	  string errorstring="Error: index for end band must be smaller then start band";
+	  throw(errorstring);
+	}
+	for(int iband=bstart_opt[ipair];iband<=bend_opt[ipair];++iband)
+	  band_opt.push_back(iband);
+      }
+    }
+  }
+  catch(string error){
+    cerr << error << std::endl;
+    exit(1);
+  }
+  
+  int nband=(band_opt.size()) ? band_opt.size() : imgReader.nrOfBand();
+
+  if(fieldname_opt.size()<nband){
+    std::string bandString=fieldname_opt[0];
+    fieldname_opt.clear();
+    fieldname_opt.resize(nband);
+    for(int iband=0;iband<nband;++iband){
+      int theBand=(band_opt.size()) ? band_opt[iband] : iband;
+      ostringstream fs;
+      fs << bandString << theBand;
+      fieldname_opt[iband]=fs.str();
+    }
+  }
+
+  if(verbose_opt[0])
+    std::cout << fieldname_opt << std::endl;
+  
+  if(verbose_opt[0]>1)
+    std::cout << "Number of bands in input image: " << imgReader.nrOfBand() << std::endl;
+
+  OGRFieldType fieldType;
+  OGRFieldType labelType;
+  int ogr_typecount=11;//hard coded for now!
+  if(verbose_opt[0]>1)
+    std::cout << "field and label types can be: ";
+  for(int iType = 0; iType < ogr_typecount; ++iType){
+    if(verbose_opt[0]>1)
+      std::cout << " " << OGRFieldDefn::GetFieldTypeName((OGRFieldType)iType);
+    if( OGRFieldDefn::GetFieldTypeName((OGRFieldType)iType) != NULL
+        && EQUAL(OGRFieldDefn::GetFieldTypeName((OGRFieldType)iType),
+                 ftype_opt[0].c_str()))
+      fieldType=(OGRFieldType) iType;
+    if( OGRFieldDefn::GetFieldTypeName((OGRFieldType)iType) != NULL
+        && EQUAL(OGRFieldDefn::GetFieldTypeName((OGRFieldType)iType),
+                 ltype_opt[0].c_str()))
+      labelType=(OGRFieldType) iType;
+  }
+  switch( fieldType ){
+  case OFTInteger:
+  case OFTReal:
+  case OFTRealList:
+  case OFTString:
+    if(verbose_opt[0]>1)
+      std::cout << std::endl << "field type is: " << OGRFieldDefn::GetFieldTypeName(fieldType) << std::endl;
+    break;
+  default:
+    cerr << "field type " << OGRFieldDefn::GetFieldTypeName(fieldType) << " not supported" << std::endl;
+    exit(0);
+    break;
+  }
+  switch( labelType ){
+  case OFTInteger:
+  case OFTReal:
+  case OFTRealList:
+  case OFTString:
+    if(verbose_opt[0]>1)
+      std::cout << std::endl << "label type is: " << OGRFieldDefn::GetFieldTypeName(labelType) << std::endl;
+    break;
+  default:
+    cerr << "label type " << OGRFieldDefn::GetFieldTypeName(labelType) << " not supported" << std::endl;
+    exit(0);
+    break;
+  }
+  
+  const char* pszMessage;
+  void* pProgressArg=NULL;
+  GDALProgressFunc pfnProgress=GDALTermProgress;
+  double progress=0;
+  srand(time(NULL));
+
+  bool sampleIsRaster=true;
+
+  ImgReaderGdal classReader;
+  ImgWriterOgr sampleWriterOgr;
+
+  if(sample_opt.size()){
+    try{
+      classReader.open(sample_opt[0]);
+    }
+    catch(string errorString){
+      //todo: sampleIsRaster will not work from GDAL 2.0!!?? (unification of driver for raster and vector datasets)
+      sampleIsRaster=false;
+    }
+  }
+  else{
+    std::cerr << "No raster sample dataset provided (use option -s filename). Use --help for help information";
+    exit(1);
+  }
+
+  if(sampleIsRaster){
+    if(class_opt.empty()){
+      ImgWriterOgr ogrWriter;
+      assert(sample_opt.size());
+      classReader.open(sample_opt[0]);
+      // vector<int> classBuffer(classReader.nrOfCol());
+      vector<double> classBuffer(classReader.nrOfCol());
+      Vector2d<double> imgBuffer(nband,imgReader.nrOfCol());//[band][col]
+      // vector<double> imgBuffer(nband);//[band]
+      vector<double> sample(2+nband);//x,y,band values
+      Vector2d<double> writeBuffer;
+      vector<int> writeBufferClass;
+      vector<int> selectedClass;
+      Vector2d<double> selectedBuffer;
+      double oldimgrow=-1;
+      int irow=0;
+      int icol=0;
+      if(verbose_opt[0]>1)
+        std::cout << "extracting sample from image..." << std::endl;
+      progress=0;
+      pfnProgress(progress,pszMessage,pProgressArg);
+      for(irow=0;irow<classReader.nrOfRow();++irow){
+        if(irow%down_opt[0])
+          continue;
+        classReader.readData(classBuffer,irow);
+        double x=0;//geo x coordinate
+        double y=0;//geo y coordinate
+        double iimg=0;//image x-coordinate in img image
+        double jimg=0;//image y-coordinate in img image
+
+        //find col in img
+        classReader.image2geo(icol,irow,x,y);
+        imgReader.geo2image(x,y,iimg,jimg);
+        //nearest neighbour
+        if(static_cast<int>(jimg)<0||static_cast<int>(jimg)>=imgReader.nrOfRow())
+          continue;
+        for(int iband=0;iband<nband;++iband){
+          int theBand=(band_opt.size()) ? band_opt[iband] : iband;
+          imgReader.readData(imgBuffer[iband],static_cast<int>(jimg),theBand);
+        }
+        for(icol=0;icol<classReader.nrOfCol();++icol){
+          if(icol%down_opt[0])
+            continue;
+          int theClass=classBuffer[icol];
+          int processClass=0;
+          bool valid=false;
+          if(class_opt.empty()){
+            valid=true;//process every class
+            processClass=theClass;
+          }
+          else{
+            for(int iclass=0;iclass<class_opt.size();++iclass){
+              if(classBuffer[icol]==class_opt[iclass]){
+                processClass=iclass;
+                theClass=class_opt[iclass];
+                valid=true;//process this class
+                break;
+              }
+            }
+          }
+          classReader.image2geo(icol,irow,x,y);
+          sample[0]=x;
+          sample[1]=y;
+          if(verbose_opt[0]>1){
+            std::cout.precision(12);
+            std::cout << theClass << " " << x << " " << y << std::endl;
+          }
+          //find col in img
+          imgReader.geo2image(x,y,iimg,jimg);
+          //nearest neighbour
+          iimg=static_cast<int>(iimg);
+          if(static_cast<int>(iimg)<0||static_cast<int>(iimg)>=imgReader.nrOfCol())
+            continue;
+
+          for(int iband=0;iband<nband&&valid;++iband){
+            int theBand=(band_opt.size()) ? band_opt[iband] : iband;
+            if(srcnodata_opt.size()&&theBand==bndnodata_opt[0]){
+              // vector<int>::const_iterator bndit=bndnodata_opt.begin();
+              for(int inodata=0;inodata<srcnodata_opt.size()&&valid;++inodata){
+                if(imgBuffer[iband][iimg]==srcnodata_opt[inodata])
+                  valid=false;
+              }
+            }
+          }
+          // oldimgrow=jimg;
+
+          if(valid){
+            for(int iband=0;iband<imgBuffer.size();++iband){
+              sample[iband+2]=imgBuffer[iband][iimg];
+            }
+            float theThreshold=(threshold_opt.size()>1)?threshold_opt[processClass]:threshold_opt[0];
+            if(theThreshold>0){//percentual value
+              double p=static_cast<double>(rand())/(RAND_MAX);
+              p*=100.0;
+              if(p>theThreshold)
+                continue;//do not select for now, go to next column
+            }
+            // else if(nvalid.size()>processClass){//absolute value
+            //   if(nvalid[processClass]>=-theThreshold)
+            //     continue;//do not select any more pixels for this class, go to next column to search for other classes
+            // }
+            writeBuffer.push_back(sample);
+            writeBufferClass.push_back(theClass);
+            ++ntotalvalid;
+            if(nvalid.count(theClass))
+              nvalid[theClass]+=1;
+            else
+              nvalid[theClass]=1;
+          }
+          else{
+            ++ntotalinvalid;
+            if(ninvalid.count(theClass))
+              ninvalid[theClass]+=1;
+            else
+              ninvalid[theClass]=1;
+          }
+        }
+        progress=static_cast<float>(irow+1.0)/classReader.nrOfRow();
+        pfnProgress(progress,pszMessage,pProgressArg);
+      }//irow
+      progress=100;
+      pfnProgress(progress,pszMessage,pProgressArg);
+      if(writeBuffer.size()>0){
+        assert(ntotalvalid==writeBuffer.size());
+        if(verbose_opt[0]>0)
+          std::cout << "creating image sample writer " << output_opt[0] << " with " << writeBuffer.size() << " samples (" << ntotalinvalid << " invalid)" << std::endl;
+        ogrWriter.open(output_opt[0],ogrformat_opt[0]);
+        char     **papszOptions=NULL;
+        ostringstream slayer;
+        slayer << "training data";
+        std::string layername=slayer.str();
+        ogrWriter.createLayer(layername, imgReader.getProjection(), wkbPoint, papszOptions);
+        std::string fieldname="fid";//number of the point
+        ogrWriter.createField(fieldname,OFTInteger);
+        map<std::string,double> pointAttributes;
+        ogrWriter.createField(label_opt[0],labelType);
+        for(int iband=0;iband<nband;++iband){
+	  int theBand=(band_opt.size()) ? band_opt[iband] : iband;
+          ogrWriter.createField(fieldname_opt[iband],fieldType);
+        }
+        progress=0;
+        pfnProgress(progress,pszMessage,pProgressArg);
+        
+        map<int,short> classDone;
+        Vector2d<double> writeBufferTmp;
+        vector<int> writeBufferClassTmp;
+
+        if(threshold_opt[0]<0){//absolute threshold
+          map<int,unsigned long int>::iterator mapit;
+          map<int,unsigned long int> ncopied;
+          for(mapit=nvalid.begin();mapit!=nvalid.end();++mapit)
+            ncopied[mapit->first]=0;
+
+          cout << "ncopied.size(): " << ncopied.size() << endl;
+          while(classDone.size()<nvalid.size()){
+            int index=rand()%writeBufferClass.size();
+            int theClass=writeBufferClass[index];
+            float theThreshold=threshold_opt[0];
+            if(threshold_opt.size()>1&&class_opt.size())
+              theThreshold=threshold_opt[classmap[theClass]];
+            theThreshold=-theThreshold;
+            if(ncopied[theClass]<theThreshold){
+              writeBufferClassTmp.push_back(*(writeBufferClass.begin()+index));
+              writeBufferTmp.push_back(*(writeBuffer.begin()+index));
+              writeBufferClass.erase(writeBufferClass.begin()+index);
+              writeBuffer.erase(writeBuffer.begin()+index);
+              ++(ncopied[theClass]);
+            }
+            else
+              classDone[theClass]=1;
+            if(ncopied[theClass]>=nvalid[theClass]){
+              classDone[theClass]=1;
+            }
+          }
+          writeBuffer=writeBufferTmp;
+          writeBufferClass=writeBufferClassTmp;
+
+          //   while(classDone.size()<nvalid.size()){
+          //     int index=rand()%writeBufferClass.size();
+          //     int theClass=writeBufferClass[index];
+          //     float theThreshold=threshold_opt[0];
+          //     if(threshold_opt.size()>1&&class_opt.size())
+          //       theThreshold=threshold_opt[classmap[theClass]];
+          //     theThreshold=-theThreshold;
+          //     if(nvalid[theClass]>theThreshold){
+          //       writeBufferClass.erase(writeBufferClass.begin()+index);
+          //       writeBuffer.erase(writeBuffer.begin()+index);
+          //       --(nvalid[theClass]);
+          //     }
+          //     else
+          //       classDone[theClass]=1;
+          //   }
+        }
+        for(int isample=0;isample<writeBuffer.size();++isample){
+          if(verbose_opt[0]>1)
+            std::cout << "writing sample " << isample << std::endl;
+          pointAttributes[label_opt[0]]=writeBufferClass[isample];
+          for(int iband=0;iband<writeBuffer[0].size()-2;++iband){
+	    int theBand=(band_opt.size()) ? band_opt[iband] : iband;
+            pointAttributes[fieldname_opt[iband]]=writeBuffer[isample][iband+2];
+          }
+          if(verbose_opt[0]>1)
+            std::cout << "all bands written" << std::endl;
+          ogrWriter.addPoint(writeBuffer[isample][0],writeBuffer[isample][1],pointAttributes,fieldname,isample);
+          progress=static_cast<float>(isample+1.0)/writeBuffer.size();
+          pfnProgress(progress,pszMessage,pProgressArg);
+        }
+        ogrWriter.close();
+      }
+      else{
+        std::cout << "No data found for any class " << std::endl;
+      }
+      classReader.close();
+      nsample=writeBuffer.size();
+      if(verbose_opt[0])
+        std::cout << "total number of samples written: " << nsample << std::endl;
+    }
+    else{//class_opt.size()!=0
+      assert(class_opt[0]);
+      //   if(class_opt[0]){
+      assert(threshold_opt.size()==1||threshold_opt.size()==class_opt.size());
+      ImgReaderGdal classReader;
+      ImgWriterOgr ogrWriter;
+      if(verbose_opt[0]>1){
+        std::cout << "reading position from sample dataset " << std::endl;
+        std::cout << "class thresholds: " << std::endl;
+        for(int iclass=0;iclass<class_opt.size();++iclass){
+          if(threshold_opt.size()>1)
+            std::cout << class_opt[iclass] << ": " << threshold_opt[iclass] << std::endl;
+          else
+            std::cout << class_opt[iclass] << ": " << threshold_opt[0] << std::endl;
+        }
+      }
+      classReader.open(sample_opt[0]);
+      vector<int> classBuffer(classReader.nrOfCol());
+      // vector<double> classBuffer(classReader.nrOfCol());
+      Vector2d<double> imgBuffer(nband,imgReader.nrOfCol());//[band][col]
+      // vector<double> imgBuffer(nband);//[band]
+      vector<double> sample(2+nband);//x,y,band values
+      Vector2d<double> writeBuffer;
+      vector<int> writeBufferClass;
+      vector<int> selectedClass;
+      Vector2d<double> selectedBuffer;
+      double oldimgrow=-1;
+      int irow=0;
+      int icol=0;
+      if(verbose_opt[0]>1)
+        std::cout << "extracting sample from image..." << std::endl;
+      progress=0;
+      pfnProgress(progress,pszMessage,pProgressArg);
+      for(irow=0;irow<classReader.nrOfRow();++irow){
+        if(irow%down_opt[0])
+          continue;
+        classReader.readData(classBuffer,irow);
+        double x=0;//geo x coordinate
+        double y=0;//geo y coordinate
+        double iimg=0;//image x-coordinate in img image
+        double jimg=0;//image y-coordinate in img image
+
+        //find col in img
+        classReader.image2geo(icol,irow,x,y);
+        imgReader.geo2image(x,y,iimg,jimg);
+        //nearest neighbour
+        if(static_cast<int>(jimg)<0||static_cast<int>(jimg)>=imgReader.nrOfRow())
+          continue;
+        for(int iband=0;iband<nband;++iband){
+          int theBand=(band_opt.size()) ? band_opt[iband] : iband;
+          imgReader.readData(imgBuffer[iband],static_cast<int>(jimg),theBand);
+        }
+
+        for(icol=0;icol<classReader.nrOfCol();++icol){
+          if(icol%down_opt[0])
+            continue;
+          int theClass=0;
+          // double theClass=0;
+          int processClass=-1;
+          if(class_opt.empty()){//process every class
+            if(classBuffer[icol]){
+              processClass=0;
+              theClass=classBuffer[icol];
+            }
+          }
+          else{
+            for(int iclass=0;iclass<class_opt.size();++iclass){
+              if(classBuffer[icol]==class_opt[iclass]){
+                processClass=iclass;
+                theClass=class_opt[iclass];
+              }
+            }
+          }
+          if(processClass>=0){
+            //         if(classBuffer[icol]==class_opt[0]){
+            classReader.image2geo(icol,irow,x,y);
+            sample[0]=x;
+            sample[1]=y;
+            if(verbose_opt[0]>1){
+              std::cout.precision(12);
+              std::cout << theClass << " " << x << " " << y << std::endl;
+            }
+            //find col in img
+            imgReader.geo2image(x,y,iimg,jimg);
+            //nearest neighbour
+            iimg=static_cast<int>(iimg);
+            if(static_cast<int>(iimg)<0||static_cast<int>(iimg)>=imgReader.nrOfCol())
+              continue;
+            bool valid=true;
+
+            for(int iband=0;iband<nband;++iband){
+              int theBand=(band_opt.size()) ? band_opt[iband] : iband;
+              if(srcnodata_opt.size()&&theBand==bndnodata_opt[0]){
+                // vector<int>::const_iterator bndit=bndnodata_opt.begin();
+                for(int inodata=0;inodata<srcnodata_opt.size()&&valid;++inodata){
+                  if(imgBuffer[iband][iimg]==srcnodata_opt[inodata])
+                    valid=false;
+                }
+              }
+            }
+            if(valid){
+              for(int iband=0;iband<imgBuffer.size();++iband){
+                sample[iband+2]=imgBuffer[iband][iimg];
+              }
+              float theThreshold=(threshold_opt.size()>1)?threshold_opt[processClass]:threshold_opt[0];
+              if(theThreshold>0){//percentual value
+                double p=static_cast<double>(rand())/(RAND_MAX);
+                p*=100.0;
+                if(p>theThreshold)
+                  continue;//do not select for now, go to next column
+              }
+              // else if(nvalid.size()>processClass){//absolute value
+              //   if(nvalid[processClass]>=-theThreshold)
+              //     continue;//do not select any more pixels for this class, go to next column to search for other classes
+              // }
+              writeBuffer.push_back(sample);
+              writeBufferClass.push_back(theClass);
+              ++ntotalvalid;
+              if(nvalid.count(theClass))
+                nvalid[theClass]+=1;
+              else
+                nvalid[theClass]=1;
+            }
+            else{
+              ++ntotalinvalid;
+              if(ninvalid.count(theClass))
+                ninvalid[theClass]+=1;
+              else
+                ninvalid[theClass]=1;
+            }
+          }//processClass
+        }//icol
+        progress=static_cast<float>(irow+1.0)/classReader.nrOfRow();
+        pfnProgress(progress,pszMessage,pProgressArg);
+      }//irow
+      if(writeBuffer.size()>0){
+        assert(ntotalvalid==writeBuffer.size());
+        if(verbose_opt[0]>0)
+          std::cout << "creating image sample writer " << output_opt[0] << " with " << writeBuffer.size() << " samples (" << ntotalinvalid << " invalid)" << std::endl;
+        ogrWriter.open(output_opt[0],ogrformat_opt[0]);
+        char **papszOptions=NULL;
+        ostringstream slayer;
+        slayer << "training data";
+        std::string layername=slayer.str();
+        ogrWriter.createLayer(layername, imgReader.getProjection(), wkbPoint, papszOptions);
+        std::string fieldname="fid";//number of the point
+        ogrWriter.createField(fieldname,OFTInteger);
+        map<std::string,double> pointAttributes;
+        ogrWriter.createField(label_opt[0],labelType);
+        for(int iband=0;iband<nband;++iband){
+	  int theBand=(band_opt.size()) ? band_opt[iband] : iband;
+          ogrWriter.createField(fieldname_opt[iband],fieldType);
+        }
+        pfnProgress(progress,pszMessage,pProgressArg);
+        progress=0;
+        pfnProgress(progress,pszMessage,pProgressArg);
+
+        map<int,short> classDone;
+        Vector2d<double> writeBufferTmp;
+        vector<int> writeBufferClassTmp;
+
+        if(threshold_opt[0]<0){//absolute threshold
+          map<int,unsigned long int>::iterator mapit;
+          map<int,unsigned long int> ncopied;
+          for(mapit=nvalid.begin();mapit!=nvalid.end();++mapit)
+            ncopied[mapit->first]=0;
+
+          while(classDone.size()<nvalid.size()){
+            int index=rand()%writeBufferClass.size();
+            int theClass=writeBufferClass[index];
+            float theThreshold=threshold_opt[0];
+            if(threshold_opt.size()>1&&class_opt.size())
+              theThreshold=threshold_opt[classmap[theClass]];
+            theThreshold=-theThreshold;
+            if(ncopied[theClass]<theThreshold){
+              writeBufferClassTmp.push_back(*(writeBufferClass.begin()+index));
+              writeBufferTmp.push_back(*(writeBuffer.begin()+index));
+              writeBufferClass.erase(writeBufferClass.begin()+index);
+              writeBuffer.erase(writeBuffer.begin()+index);
+              ++(ncopied[theClass]);
+            }
+            else
+              classDone[theClass]=1;
+            if(ncopied[theClass]>=nvalid[theClass]){
+              classDone[theClass]=1;
+            }
+          }
+          writeBuffer=writeBufferTmp;
+          writeBufferClass=writeBufferClassTmp;
+          // while(classDone.size()<nvalid.size()){
+          //   int index=rand()%writeBufferClass.size();
+          //   int theClass=writeBufferClass[index];
+          //   float theThreshold=threshold_opt[0];
+          //   if(threshold_opt.size()>1&&class_opt.size())
+          //     theThreshold=threshold_opt[classmap[theClass]];
+          //   theThreshold=-theThreshold;
+          //   if(nvalid[theClass]>theThreshold){
+          //     writeBufferClass.erase(writeBufferClass.begin()+index);
+          //     writeBuffer.erase(writeBuffer.begin()+index);
+          //     --(nvalid[theClass]);
+          //   }
+          //   else
+          //     classDone[theClass]=1;
+          // }
+        }          
+
+        for(int isample=0;isample<writeBuffer.size();++isample){
+          pointAttributes[label_opt[0]]=writeBufferClass[isample];
+          for(int iband=0;iband<writeBuffer[0].size()-2;++iband){
+	    int theBand=(band_opt.size()) ? band_opt[iband] : iband;
+            pointAttributes[fieldname_opt[iband]]=writeBuffer[isample][iband+2];
+          }
+          ogrWriter.addPoint(writeBuffer[isample][0],writeBuffer[isample][1],pointAttributes,fieldname,isample);
+          progress=static_cast<float>(isample+1.0)/writeBuffer.size();
+          pfnProgress(progress,pszMessage,pProgressArg);
+        }
+        ogrWriter.close();
+      }
+      else{
+        std::cout << "No data found for any class " << std::endl;
+      }
+      classReader.close();
+      nsample=writeBuffer.size();
+      if(verbose_opt[0]){
+        std::cout << "total number of samples written: " << nsample << std::endl;
+        if(nvalid.size()==class_opt.size()){
+          for(int iclass=0;iclass<class_opt.size();++iclass)
+            std::cout << "class " << class_opt[iclass] << " has " << nvalid[iclass] << " samples" << std::endl;
+        }
+      }
+    }
+  }
+  else{//vector dataset
+    cerr << "Error: vector sample not supported, consider using pkextractogr" << endl;
+  }//else (vector)
+  progress=1.0;
+  pfnProgress(progress,pszMessage,pProgressArg);
+  imgReader.close();
+}
+  
diff --git a/src/apps/pkextractogr b/src/apps/pkextractogr
new file mode 100755
index 0000000..7c91755
--- /dev/null
+++ b/src/apps/pkextractogr
@@ -0,0 +1,228 @@
+#! /bin/bash
+
+# pkextractogr - temporary wrapper script for .libs/pkextractogr
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# The pkextractogr program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command="(cd /home/kempenep/pktools/src/apps; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \ [...]
+
+# This environment variable determines our operation mode.
+if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='2.4.6'
+  notinst_deplibs=' ../../src/algorithms/libalgorithms.la ../../src/imageclasses/libimageClasses.la ../../src/fileclasses/libfileClasses.la'
+else
+  # When we are sourced in execute mode, $file and $ECHO are already set.
+  if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+    file="$0"
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+    ECHO="printf %s\\n"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string --lt-
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's ../../libtool value, followed by no.
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=$0
+  shift
+  for lt_opt
+  do
+    case "$lt_opt" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
+        test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
+        lt_dump_F=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%^.*/%%'`
+        cat "$lt_dump_D/$lt_dump_F"
+        exit 0
+      ;;
+    --lt-*)
+        $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n "$lt_option_debug"; then
+    echo "pkextractogr:pkextractogr:$LINENO: libtool wrapper (GNU libtool) 2.4.6 Debian-2.4.6-0.1" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    $ECHO "pkextractogr:pkextractogr:$LINENO: newargv[$lt_dump_args_N]: $lt_arg"
+    lt_dump_args_N=`expr $lt_dump_args_N + 1`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+
+      if test -n "$lt_option_debug"; then
+        $ECHO "pkextractogr:pkextractogr:$LINENO: newargv[0]: $progdir/$program" 1>&2
+        func_lt_dump_args ${1+"$@"} 1>&2
+      fi
+      exec "$progdir/$program" ${1+"$@"}
+
+      $ECHO "$0: cannot exec $program $*" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from $@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case " $* " in
+  *\ --lt-*)
+    for lt_wr_arg
+    do
+      case $lt_wr_arg in
+      --lt-*) ;;
+      *) set x "$@" "$lt_wr_arg"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core ${1+"$@"}
+}
+
+  # Parse options
+  func_parse_lt_options "$0" ${1+"$@"}
+
+  # Find the directory that this script lives in.
+  thisdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+  test "x$thisdir" = "x$file" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'`
+  while test -n "$file"; do
+    destdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+
+    # If there was a directory component, then change thisdir.
+    if test "x$destdir" != "x$file"; then
+      case "$destdir" in
+      [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
+      *) thisdir="$thisdir/$destdir" ;;
+      esac
+    fi
+
+    file=`$ECHO "$file" | /bin/sed 's%^.*/%%'`
+    file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
+  if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
+    # special case for '.'
+    if test "$thisdir" = "."; then
+      thisdir=`pwd`
+    fi
+    # remove .libs from thisdir
+    case "$thisdir" in
+    *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /bin/sed 's%[\\/][^\\/]*$%%'` ;;
+    .libs )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=`cd "$thisdir" && pwd`
+  test -n "$absdir" && thisdir="$absdir"
+
+  program=lt-'pkextractogr'
+  progdir="$thisdir/.libs"
+
+  if test ! -f "$progdir/$program" ||
+     { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /bin/sed 1q`; \
+       test "X$file" != "X$progdir/$program"; }; then
+
+    file="$$-$program"
+
+    if test ! -d "$progdir"; then
+      mkdir "$progdir"
+    else
+      rm -f "$progdir/$file"
+    fi
+
+    # relink executable if necessary
+    if test -n "$relink_command"; then
+      if relink_command_output=`eval $relink_command 2>&1`; then :
+      else
+	$ECHO "$relink_command_output" >&2
+	rm -f "$progdir/$file"
+	exit 1
+      fi
+    fi
+
+    mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
+    { rm -f "$progdir/$program";
+      mv -f "$progdir/$file" "$progdir/$program"; }
+    rm -f "$progdir/$file"
+  fi
+
+  if test -f "$progdir/$program"; then
+    if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+      # Run the actual program with our arguments.
+      func_exec_program ${1+"$@"}
+    fi
+  else
+    # The program doesn't exist.
+    $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2
+    $ECHO "This script is just a wrapper for $program." 1>&2
+    $ECHO "See the libtool documentation for more information." 1>&2
+    exit 1
+  fi
+fi
diff --git a/src/apps/pkextractogr.cc b/src/apps/pkextractogr.cc
new file mode 100644
index 0000000..0ad1fa4
--- /dev/null
+++ b/src/apps/pkextractogr.cc
@@ -0,0 +1,1714 @@
+/**********************************************************************
+pkextractogr.cc: extract pixel values from raster image from a (vector or raster) sample
+Copyright (C) 2008-2016 Pieter Kempeneers
+
+This file is part of pktools
+
+pktools is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+pktools is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with pktools.  If not, see <http://www.gnu.org/licenses/>.
+***********************************************************************/
+#include <assert.h>
+#include <math.h>
+#include <stdlib.h>
+#include <sstream>
+#include <string>
+#include <algorithm>
+#include <ctime>
+#include <vector>
+#include "imageclasses/ImgReaderGdal.h"
+#include "imageclasses/ImgWriterOgr.h"
+#include "base/Optionpk.h"
+#include "algorithms/StatFactory.h"
+
+#ifndef PI
+#define PI 3.1415926535897932384626433832795
+#endif
+
+/******************************************************************************/
+/*! \page pkextractogr pkextractogr
+ extract pixel values from raster image using a vector dataset sample
+## SYNOPSIS
+
+<code>
+  Usage: pkextractogr -i input [-s sample | -rand number | -grid size] -o output
+</code>
+
+<code>
+
+  Options: [-ln layer]* [-c class]* [-t threshold]* [-f format] [-ft fieldType] [-b band]* [-r rule]*
+
+  Advanced options:
+  [-sband band -eband band]* [-bndnodata band -srcnodata value]* [-tp threshold] [-buf value [-circ]]
+</code>
+
+\section pkextractogr_description Description
+
+The utility pkextractogr extracts pixel values from an input raster dataset, based on the locations you provide via a sample file. Alternatively, a random sample or systematic grid of points can also be extracted. The sample can be a vector file with points or polygons. In the case of polygons, you can either extract the values for all raster pixels that are covered by the polygons, or extract a single value for each polygon such as the centroid, mean, median, etc. As output, a new copy  [...]
+
+A typical usage of pkextract is to prepare a training sample for one of the classifiers implemented in pktools.
+
+\anchor pkextractogr_rules 
+
+Overview of the possible extraction rules:
+
+extraction rule | output features
+--------------- | ---------------
+point | extract a single pixel within the polygon or on each point feature
+allpoints | Extract all pixel values covered by the polygon
+centroid | Extract pixel value at the centroid of the polygon
+mean | Extract average of all pixel values within the polygon
+stdev | Extract standard deviation of all pixel values within the polygon
+median | Extract median of all pixel values within the polygon
+min | Extract minimum value of all pixels within the polygon
+max | Extract maximum value of all pixels within the polygon
+sum | Extract sum of the values of all pixels within the polygon
+mode | Extract the mode of classes within the polygon (classes must be set with the option class)
+proportion | Extract proportion of class(es) within the polygon (classes must be set with the option class)
+count | Extract count of class(es) within the polygon (classes must be set with the option class).
+percentile | Extract percentile as defined by option perc (e.g, 95th percentile of values covered by polygon)
+
+\section pkextract_options Options
+ - use either `-short` or `--long` options (both `--long=value` and `--long value` are supported)
+ - short option `-h` shows basic options only, long option `--help` shows all options
+|short|long|type|default|description|
+|-----|----|----|-------|-----------|
+ | i      | input                | std::string |       |Raster input dataset containing band information | 
+ | s      | sample               | std::string |       |OGR vector dataset with features to be extracted from input data. Output will contain features with input band information included | 
+ | ln     | ln                   | std::string |       |Layer name(s) in sample (leave empty to select all) | 
+ | rand   | random               | unsigned int |       |Create simple random sample of points. Provide number of points to generate | 
+ | grid   | grid                 | double |       |Create systematic grid of points. Provide cell grid size (in projected units, e.g,. m) | 
+ | o      | output               | std::string |       |Output sample dataset | 
+ | c      | class                | int  |       |Class(es) to extract from input sample image. Leave empty to extract all valid data pixels from sample dataset. Make sure to set classes if rule is set to mode, proportion or count | 
+ | t      | threshold            | float | 100   |Probability threshold for selecting samples (randomly). Provide probability in percentage (>0) or absolute (<0). Use a single threshold per vector sample layer | 
+ | perc   | perc                 | double | 95    |Percentile value used for rule percentile | 
+ | f      | f                    | std::string | SQLite |Output sample dataset format | 
+ | ft     | ftype                | std::string | Real  |Field type (only Real or Integer) | 
+ | b      | band                 | int  |       |Band index(es) to extract (0 based). Leave empty to use all bands | 
+ | sband  | startband            | unsigned short |      |Start band sequence number | 
+ | eband  | endband              | unsigned short |      |End band sequence number   | 
+ | r      | rule                 | std::string | centroid |Rule how to report image information per feature (only for vector sample). point (single point or at centroid if polygon), allpoints (within polygon), centroid, mean, stdev, median, proportion, count, min, max, mode, sum, percentile. | 
+ | bndnodata | bndnodata            | int  | 0     |Band(s) in input image to check if pixel is valid (used for srcnodata) | 
+ | srcnodata | srcnodata            | double |       |Invalid value(s) for input image | 
+ | tp     | thresholdPolygon     | float |       |(absolute) threshold for selecting samples in each polygon | 
+ | buf    | buffer               | short | 0     |Buffer for calculating statistics for point features (in number of pixels)  | 
+ | circ   | circular             | bool | false |Use a circular disc kernel buffer (for vector point sample datasets only, use in combination with buffer option) | 
+
+Usage: pkextract -i input [-s sample | -rand number | -grid size] -o output -r rule
+
+
+Examples
+========
+Some examples how to use pkextract can be found \ref examples_pkextract "here"
+**/
+
+namespace rule{
+  enum RULE_TYPE {point=0, mean=1, proportion=2, custom=3, min=4, max=5, mode=6, centroid=7, sum=8, median=9, stdev=10, percentile=11, count=12, allpoints=13};
+}
+
+using namespace std;
+
+int main(int argc, char *argv[])
+{
+  Optionpk<string> image_opt("i", "input", "Raster input dataset containing band information");
+  Optionpk<string> sample_opt("s", "sample", "OGR vector dataset with features to be extracted from input data. Output will contain features with input band information included. Sample image can also be GDAL raster dataset.");
+  Optionpk<string> layer_opt("ln", "ln", "Layer name(s) in sample (leave empty to select all)");
+  Optionpk<unsigned int> random_opt("rand", "random", "Create simple random sample of points. Provide number of points to generate");
+  Optionpk<double> grid_opt("grid", "grid", "Create systematic grid of points. Provide cell grid size (in projected units, e.g,. m)");
+  Optionpk<string> output_opt("o", "output", "Output sample dataset");
+  Optionpk<int> class_opt("c", "class", "Class(es) to extract from input sample image. Leave empty to extract all valid data pixels from sample dataset. Make sure to set classes if rule is set to mode, proportion or count");
+  Optionpk<float> threshold_opt("t", "threshold", "Probability threshold for selecting samples (randomly). Provide probability in percentage (>0) or absolute (<0). Use a single threshold per vector sample layer. If using raster land cover maps as a sample dataset, you can provide a threshold value for each class (e.g. -t 80 -t 60). Use value 100 to select all pixels for selected class(es)", 100);
+  Optionpk<double> percentile_opt("perc","perc","Percentile value used for rule percentile",95);
+  Optionpk<string> ogrformat_opt("f", "f", "Output sample dataset format","SQLite");
+  Optionpk<string> ftype_opt("ft", "ftype", "Field type (only Real or Integer)", "Real");
+  Optionpk<int> band_opt("b", "band", "Band index(es) to extract (0 based). Leave empty to use all bands");
+  Optionpk<unsigned short> bstart_opt("sband", "startband", "Start band sequence number"); 
+  Optionpk<unsigned short> bend_opt("eband", "endband", "End band sequence number"); 
+  Optionpk<string> rule_opt("r", "rule", "Rule how to report image information per feature (only for vector sample). point (single point within polygon), allpoints (all points within polygon), centroid, mean, stdev, median, proportion, count, min, max, mode, sum, percentile.","centroid");
+  Optionpk<double> srcnodata_opt("srcnodata", "srcnodata", "Invalid value(s) for input image");
+  Optionpk<int> bndnodata_opt("bndnodata", "bndnodata", "Band(s) in input image to check if pixel is valid (used for srcnodata)", 0);
+  Optionpk<float> polythreshold_opt("tp", "thresholdPolygon", "(absolute) threshold for selecting samples in each polygon");
+  Optionpk<short> buffer_opt("buf", "buffer", "Buffer for calculating statistics for point features (in number of pixels) ",0);
+  Optionpk<bool> disc_opt("circ", "circular", "Use a circular disc kernel buffer (for vector point sample datasets only, use in combination with buffer option)", false);
+  Optionpk<short> verbose_opt("v", "verbose", "Verbose mode if > 0", 0,2);
+
+  bstart_opt.setHide(1);
+  bend_opt.setHide(1);
+  bndnodata_opt.setHide(1);
+  srcnodata_opt.setHide(1);
+  polythreshold_opt.setHide(1);
+  percentile_opt.setHide(1);
+  buffer_opt.setHide(1);
+  disc_opt.setHide(1);
+
+  bool doProcess;//stop process when program was invoked with help option (-h --help)
+  try{
+    doProcess=image_opt.retrieveOption(argc,argv);
+    sample_opt.retrieveOption(argc,argv);
+    layer_opt.retrieveOption(argc,argv);
+    random_opt.retrieveOption(argc,argv);
+    grid_opt.retrieveOption(argc,argv);
+    output_opt.retrieveOption(argc,argv);
+    class_opt.retrieveOption(argc,argv);
+    threshold_opt.retrieveOption(argc,argv);
+    percentile_opt.retrieveOption(argc,argv);
+    ogrformat_opt.retrieveOption(argc,argv);
+    ftype_opt.retrieveOption(argc,argv);
+    band_opt.retrieveOption(argc,argv);
+    bstart_opt.retrieveOption(argc,argv);
+    bend_opt.retrieveOption(argc,argv);
+    rule_opt.retrieveOption(argc,argv);
+    bndnodata_opt.retrieveOption(argc,argv);
+    srcnodata_opt.retrieveOption(argc,argv);
+    polythreshold_opt.retrieveOption(argc,argv);
+    buffer_opt.retrieveOption(argc,argv);
+    disc_opt.retrieveOption(argc,argv);
+    verbose_opt.retrieveOption(argc,argv);
+  }
+  catch(string predefinedString){
+    std::cout << predefinedString << std::endl;
+    exit(0);
+  }
+  if(!doProcess){
+    cout << endl;
+    cout << "Usage: pkextract -i input [-s sample | -rand number | -grid size] -o output" << endl;
+    cout << endl;
+    std::cout << "short option -h shows basic options only, use long option --help to show all options" << std::endl;
+    exit(0);//help was invoked, stop processing
+  }
+
+  std::map<std::string, rule::RULE_TYPE> ruleMap;
+  //initialize ruleMap
+  ruleMap["point"]=rule::point;
+  ruleMap["centroid"]=rule::centroid;
+  ruleMap["mean"]=rule::mean;
+  ruleMap["stdev"]=rule::stdev;
+  ruleMap["median"]=rule::median;
+  ruleMap["proportion"]=rule::proportion;
+  ruleMap["count"]=rule::count;
+  ruleMap["min"]=rule::min;
+  ruleMap["max"]=rule::max;
+  ruleMap["custom"]=rule::custom;
+  ruleMap["mode"]=rule::mode;
+  ruleMap["sum"]=rule::sum;
+  ruleMap["percentile"]=rule::percentile;
+  ruleMap["allpoints"]=rule::allpoints;
+
+  statfactory::StatFactory stat;
+  if(srcnodata_opt.size()){
+    while(srcnodata_opt.size()<bndnodata_opt.size())
+      srcnodata_opt.push_back(srcnodata_opt[0]);
+    stat.setNoDataValues(srcnodata_opt);
+  }
+
+  if(verbose_opt[0])
+    std::cout << class_opt << std::endl;
+  Vector2d<unsigned int> posdata;
+  unsigned long int nsample=0;
+  unsigned long int ntotalvalid=0;
+  unsigned long int ntotalinvalid=0;
+
+  ImgReaderGdal imgReader;
+  // ImgReaderGdal imgReader;
+  if(image_opt.empty()){
+    std::cerr << "No image dataset provided (use option -i). Use --help for help information";
+      exit(1);
+  }
+  if(output_opt.empty()){
+    std::cerr << "No output dataset provided (use option -o). Use --help for help information";
+      exit(1);
+  }
+  try{
+    imgReader.open(image_opt[0],GA_ReadOnly);
+  }
+  catch(std::string errorstring){
+    std::cout << errorstring << std::endl;
+    exit(1);
+  }
+
+  //check if rule contains allpoints
+  if(find(rule_opt.begin(),rule_opt.end(),"allpoints")!=rule_opt.end()){
+    //allpoints should be the only rule
+    rule_opt.clear();
+    rule_opt.push_back("allpoints");
+  }
+
+  //convert start and end band options to vector of band indexes
+  try{
+    if(bstart_opt.size()){
+      if(bend_opt.size()!=bstart_opt.size()){
+	string errorstring="Error: options for start and end band indexes must be provided as pairs, missing end band";
+	throw(errorstring);
+      }
+      band_opt.clear();
+      for(int ipair=0;ipair<bstart_opt.size();++ipair){
+	if(bend_opt[ipair]<=bstart_opt[ipair]){
+	  string errorstring="Error: index for end band must be smaller then start band";
+	  throw(errorstring);
+	}
+	for(int iband=bstart_opt[ipair];iband<=bend_opt[ipair];++iband)
+	  band_opt.push_back(iband);
+      }
+    }
+  }
+  catch(string error){
+    cerr << error << std::endl;
+    exit(1);
+  }
+  
+  int nband=(band_opt.size()) ? band_opt.size() : imgReader.nrOfBand();
+  if(class_opt.size()){
+    if(nband>1){
+      cerr << "Warning: using only first band or multiband image" << endl;
+      nband=1;
+      band_opt.clear();
+      band_opt.push_back(0);
+    }
+  }
+
+  if(verbose_opt[0]>1)
+    std::cout << "Number of bands in input image: " << imgReader.nrOfBand() << std::endl;
+
+  OGRFieldType fieldType;
+  int ogr_typecount=11;//hard coded for now!
+  if(verbose_opt[0]>1)
+    std::cout << "field and label types can be: ";
+  for(int iType = 0; iType < ogr_typecount; ++iType){
+    if(verbose_opt[0]>1)
+      std::cout << " " << OGRFieldDefn::GetFieldTypeName((OGRFieldType)iType);
+    if( OGRFieldDefn::GetFieldTypeName((OGRFieldType)iType) != NULL
+        && EQUAL(OGRFieldDefn::GetFieldTypeName((OGRFieldType)iType),
+                 ftype_opt[0].c_str()))
+      fieldType=(OGRFieldType) iType;
+  }
+  switch( fieldType ){
+  case OFTInteger:
+  case OFTReal:
+  case OFTRealList:
+  case OFTString:
+    if(verbose_opt[0]>1)
+      std::cout << std::endl << "field type is: " << OGRFieldDefn::GetFieldTypeName(fieldType) << std::endl;
+    break;
+  default:
+    cerr << "field type " << OGRFieldDefn::GetFieldTypeName(fieldType) << " not supported" << std::endl;
+    exit(1);
+    break;
+  }
+  
+  const char* pszMessage;
+  void* pProgressArg=NULL;
+  GDALProgressFunc pfnProgress=GDALTermProgress;
+  double progress=0;
+  srand(time(NULL));
+
+  bool sampleIsRaster=false;
+  bool sampleIsVirtual=false;
+
+  ImgReaderOgr sampleReaderOgr;
+  ImgWriterOgr sampleWriterOgr;
+
+  if(sample_opt.size()){
+    try{
+      sampleReaderOgr.open(sample_opt[0]);
+    }
+    catch(string errorString){
+      //todo: sampleIsRaster will not work from GDAL 2.0!!?? (unification of driver for raster and vector datasets)
+      sampleIsRaster=true;
+    }
+  }
+  else{
+    try{
+      sampleWriterOgr.open("/vsimem/virtual",ogrformat_opt[0]);
+      char     **papszOptions=NULL;
+      sampleIsVirtual=true;
+
+      if(random_opt.size()){
+        //create simple random sampling within boundary
+        double ulx,uly,lrx,lry;
+        imgReader.getBoundingBox(ulx,uly,lrx,lry);
+        if(random_opt[0]>0)
+          sampleWriterOgr.createLayer("points", imgReader.getProjection(), wkbPoint, papszOptions);
+        OGRPoint pt;
+        unsigned int ipoint;
+        for(ipoint=0;ipoint<random_opt[0];++ipoint){
+          OGRFeature *pointFeature;
+          pointFeature=sampleWriterOgr.createFeature();
+          double theX=ulx+static_cast<double>(rand())/(RAND_MAX)*(lrx-ulx);
+          double theY=uly-static_cast<double>(rand())/(RAND_MAX)*(uly-lry);
+          pt.setX(theX);
+          pt.setY(theY);
+          pointFeature->SetGeometry( &pt ); 
+          if(sampleWriterOgr.createFeature(pointFeature) != OGRERR_NONE ){
+            string errorString="Failed to create feature in vector dataset";
+            throw(errorString);
+          }
+          // OGRFeature::DestroyFeature(pointFeature);
+        }
+        if(!ipoint){
+          string errorString="Error: no random point created";
+          throw(errorString);
+        }
+      }
+      else if(grid_opt.size()){
+        //create systematic grid of points 
+        double ulx,uly,lrx,lry;
+        imgReader.getBoundingBox(ulx,uly,lrx,lry);
+        if(uly-grid_opt[0]/2<lry&&ulx+grid_opt[0]/2>lrx){
+          string errorString="Error: grid distance too large";
+          throw(errorString);
+        }
+        else if(grid_opt[0]>0)
+          sampleWriterOgr.createLayer("points", imgReader.getProjection(), wkbPoint, papszOptions);
+        else{
+          string errorString="Error: grid distance must be strictly positive number";
+          throw(errorString);
+        }
+        OGRPoint pt;
+        unsigned int ipoint=0;
+        for(double theY=uly-grid_opt[0]/2;theY>lry;theY-=grid_opt[0]){
+          for(double theX=ulx+grid_opt[0]/2;theX<lrx;theX+=grid_opt[0]){
+            if(verbose_opt[0]>1)
+              cout << "position: " << theX << " " << theY << endl;
+            OGRFeature *pointFeature;
+            pointFeature=sampleWriterOgr.createFeature();
+            pt.setX(theX);
+            pt.setY(theY);
+            pointFeature->SetGeometry( &pt ); 
+            if(sampleWriterOgr.createFeature(pointFeature) != OGRERR_NONE ){
+              string errorString="Failed to create feature in vector dataset";
+              throw(errorString);
+            }
+            ++ipoint;
+            // OGRFeature::DestroyFeature(pointFeature);
+          }
+        }
+        if(!ipoint){
+          string errorString="Error: no points created in grid";
+          throw(errorString);
+        }
+      }
+      else{
+        std::cerr << "Error: no sample dataset provided (use option -s). Use --help for help information";
+        exit(1);
+      }
+      sampleWriterOgr.close();
+      sampleReaderOgr.open("/vsimem/virtual");
+    }
+    catch(string errorString){
+      cerr << errorString << endl;
+      exit(1);
+    }
+  }
+
+  if(sampleIsRaster){
+    cerr << "Error: sample must be vector dataset in OGR format";
+    exit(1);
+  }
+  else{//vector dataset
+    if(verbose_opt[0]>1)
+      std::cout << "creating image sample writer " << output_opt[0] << std::endl;
+
+    ImgWriterOgr ogrWriter;
+    double vectords_ulx;
+    double vectords_uly;
+    double vectords_lrx;
+    double vectords_lry;
+    bool calculateSpatialStatistics=false;
+    try{
+      sampleReaderOgr.getExtent(vectords_ulx,vectords_uly,vectords_lrx,vectords_lry);
+      bool hasCoverage=((vectords_ulx < imgReader.getLrx())&&(vectords_lrx > imgReader.getUlx())&&(vectords_lry < imgReader.getUly())&&(vectords_uly > imgReader.getLry()));
+      if(!hasCoverage){
+	ostringstream ess;
+	ess << "No coverage in " << image_opt[0] << " for any layer in " << sample_opt[0] << endl;
+	throw(ess.str());
+      }
+      ogrWriter.open(output_opt[0],ogrformat_opt[0]);
+      //if class_opt not set, get number of classes from input image for these rules
+      for(int irule=0;irule<rule_opt.size();++irule){
+        switch(ruleMap[rule_opt[irule]]){
+        case(rule::point):
+        case(rule::centroid):
+        case(rule::allpoints):
+          break;
+        case(rule::proportion):
+        case(rule::count):
+        case(rule::custom):
+        case(rule::mode):{
+          if(class_opt.empty()){
+            int theBand=0;
+            double minValue=0;
+            double maxValue=0;
+            if(band_opt.size())
+              theBand=band_opt[0];
+            imgReader.getMinMax(minValue,maxValue,theBand);
+            int nclass=maxValue-minValue+1;
+            if(nclass<0&&nclass<256){
+              string errorString="Could not automatically define classes, please set class option";
+              throw(errorString);
+            }
+            for(int iclass=minValue;iclass<=maxValue;++iclass)
+              class_opt.push_back(iclass);
+          }
+        }//deliberate fall through: calculate spatial statistics for all non-point like rules
+        default:
+          calculateSpatialStatistics=true;
+          break;
+        }
+      }
+    }
+    catch(string errorString){
+      cerr << errorString << endl;
+      exit(1);
+    }
+    
+    //support multiple layers
+    int nlayerRead=sampleReaderOgr.getDataSource()->GetLayerCount();
+    int ilayerWrite=0;
+    unsigned long int ntotalvalid=0;
+
+    if(verbose_opt[0])
+      std::cout << "number of layers: " << nlayerRead << endl;
+
+    for(int ilayer=0;ilayer<nlayerRead;++ilayer){
+      OGRLayer *readLayer=sampleReaderOgr.getLayer(ilayer);
+      string currentLayername=readLayer->GetName();
+      int layerIndex=ilayer;
+      if(layer_opt.size()){
+	vector<string>::const_iterator it=find(layer_opt.begin(),layer_opt.end(),currentLayername);
+	if(it==layer_opt.end())
+	  continue;
+	else
+	  layerIndex=it-layer_opt.begin();
+      }
+      double layer_ulx;
+      double layer_uly;
+      double layer_lrx;
+      double layer_lry;
+      sampleReaderOgr.getExtent(layer_ulx,layer_uly,layer_lrx,layer_lry,ilayer);
+      bool hasCoverage=((layer_ulx < imgReader.getLrx())&&(layer_lrx > imgReader.getUlx())&&(layer_lry < imgReader.getUly())&&(layer_uly > imgReader.getLry()));
+      if(!hasCoverage)
+	continue;
+
+      //align bounding box to input image
+      layer_ulx-=fmod(layer_ulx-imgReader.getUlx(),imgReader.getDeltaX());
+      layer_lrx+=fmod(imgReader.getLrx()-layer_lrx,imgReader.getDeltaX());
+      layer_uly+=fmod(imgReader.getUly()-layer_uly,imgReader.getDeltaY());
+      layer_lry-=fmod(layer_lry-imgReader.getLry(),imgReader.getDeltaY());
+
+      //do not read outside input image
+      if(layer_ulx<imgReader.getUlx())
+        layer_ulx=imgReader.getUlx();
+      if(layer_lrx>imgReader.getLrx())
+        layer_lrx=imgReader.getLrx();
+      if(layer_uly>imgReader.getUly())
+        layer_uly=imgReader.getUly();
+      if(layer_lry<imgReader.getLry())
+        layer_lry=imgReader.getLry();
+
+      //read entire block for coverage in memory
+      //todo: use different data types
+      vector< Vector2d<float> > readValuesReal(nband);
+      vector< Vector2d<int> > readValuesInt(nband);
+
+      double layer_uli;
+      double layer_ulj;
+      double layer_lri;
+      double layer_lrj;
+      imgReader.geo2image(layer_ulx,layer_uly,layer_uli,layer_ulj);
+      imgReader.geo2image(layer_lrx,layer_lry,layer_lri,layer_lrj);
+
+      OGRwkbGeometryType layerGeometry=readLayer->GetLayerDefn()->GetGeomType();
+
+      if(layerGeometry==wkbPoint){
+        if(calculateSpatialStatistics){
+          if(buffer_opt[0]<1)
+            buffer_opt[0]=1;
+        }
+      }
+      
+      //extend bounding box with buffer
+      if(buffer_opt.size()){
+        layer_uli-=buffer_opt[0];
+        layer_ulj-=buffer_opt[0];
+        layer_lri+=buffer_opt[0];
+        layer_lrj+=buffer_opt[0];
+      }
+
+      //we already checked there is coverage
+      layer_uli=(layer_uli<0)? 0 : static_cast<int>(layer_uli);
+      layer_ulj=(layer_ulj<0)? 0 : static_cast<int>(layer_ulj);
+      layer_lri=(layer_lri>=imgReader.nrOfCol())? imgReader.nrOfCol()-1 : static_cast<int>(layer_lri);
+      layer_lrj=(layer_lrj>=imgReader.nrOfRow())? imgReader.nrOfRow()-1 : static_cast<int>(layer_lrj);
+
+      try{
+        for(int iband=0;iband<nband;++iband){
+          int theBand=(band_opt.size()) ? band_opt[iband] : iband;
+          if(theBand<0){
+            string errorString="Error: illegal band (must be positive and starting from 0)";
+            throw(errorString);
+          }
+          if(theBand>=imgReader.nrOfBand()){
+            string errorString="Error: illegal band (must be lower than number of bands in input raster dataset)";
+            throw(errorString);
+          }
+          if(verbose_opt[0])
+            cout << "reading image band " << theBand << " block rows " << layer_ulj << "-" << layer_lrj << ", cols " << layer_uli << "-" << layer_lri << endl;
+          switch( fieldType ){
+          case OFTInteger:
+            imgReader.readDataBlock(readValuesInt[iband],layer_uli,layer_lri,layer_ulj,layer_lrj,theBand);
+            break;
+          case OFTReal:
+          default:
+	    imgReader.readDataBlock(readValuesReal[iband],layer_uli,layer_lri,layer_ulj,layer_lrj,theBand);
+            break;
+          }
+        }
+      }
+      catch(std::string e){
+        std::cout << e << std::endl;
+        exit(1);
+      }
+
+    
+      float theThreshold=(threshold_opt.size()==layer_opt.size())? threshold_opt[layerIndex]: threshold_opt[0];
+      cout << "processing layer " << currentLayername << endl;
+      
+      bool createPolygon=true;
+      if(find(rule_opt.begin(),rule_opt.end(),"allpoints")!=rule_opt.end())
+        createPolygon=false;
+
+      OGRLayer *writeLayer;
+      if(createPolygon){
+        //create polygon
+	if(verbose_opt[0])
+	  std::cout << "create polygons" << std::endl;
+	char **papszOptions=NULL;
+	writeLayer=ogrWriter.createLayer(readLayer->GetName(), imgReader.getProjection(), wkbPolygon, papszOptions);
+      }
+      else{
+	if(verbose_opt[0])
+	  std::cout << "create points in layer " << readLayer->GetName() << std::endl;
+	char **papszOptions=NULL;
+
+	writeLayer=ogrWriter.createLayer(readLayer->GetName(), imgReader.getProjection(), wkbPoint, papszOptions);
+      }
+      if(verbose_opt[0])
+	std::cout << "copy fields from layer " << ilayer << std::flush << std::endl;
+      ogrWriter.copyFields(sampleReaderOgr,ilayer,ilayerWrite);
+
+      for(int irule=0;irule<rule_opt.size();++irule){
+        for(int iband=0;iband<nband;++iband){
+          int theBand=(band_opt.size()) ? band_opt[iband] : iband;
+          switch(ruleMap[rule_opt[irule]]){
+          case(rule::proportion):
+          case(rule::count):{//count for each class
+            for(int iclass=0;iclass<class_opt.size();++iclass){
+              ostringstream fs;
+              fs << class_opt[iclass];
+              if(nband>1)
+                fs << "b" << theBand;
+              string fieldname=fs.str();
+              ogrWriter.createField(fieldname,fieldType,ilayerWrite);
+            }
+            break;
+          }
+          default:{
+            ostringstream fs;
+            if(rule_opt.size()>1||nband==1)
+              fs << rule_opt[irule];
+            if(nband>1)
+              fs << "b" << theBand;
+            string fieldname=fs.str();
+            ogrWriter.createField(fieldname,fieldType,ilayerWrite);
+          }
+          }
+        }
+      }
+      OGRFeature *readFeature;
+      unsigned long int ifeature=0;
+      unsigned long int nfeatureLayer=sampleReaderOgr.getFeatureCount(ilayer);
+      unsigned long int ntotalvalidLayer=0;
+
+      if(nfeatureLayer<=0)
+        continue;
+      progress=0;
+      pfnProgress(progress,pszMessage,pProgressArg);
+      readLayer->ResetReading();
+      while( (readFeature = readLayer->GetNextFeature()) != NULL ){
+	bool validFeature=false;
+	if(verbose_opt[0]>2)
+	  std::cout << "reading feature " << readFeature->GetFID() << std::endl;
+	if(theThreshold>0){//percentual value
+	  double p=static_cast<double>(rand())/(RAND_MAX);
+	  p*=100.0;
+	  if(p>theThreshold){
+            continue;//do not select for now, go to next feature
+	  }
+	}
+	else{//absolute value
+	  if(threshold_opt.size()==layer_opt.size()){
+	    if(ntotalvalidLayer>=-theThreshold){
+              continue;//do not select any more pixels, go to next column feature
+	    }
+	  }
+	  else{
+	    if(ntotalvalid>=-theThreshold){
+              continue;//do not select any more pixels, go to next column feature
+	    }
+	  }
+	}
+	if(verbose_opt[0]>2)
+	  std::cout << "processing feature " << readFeature->GetFID() << std::endl;
+	//get x and y from readFeature
+	// double x,y;
+	OGRGeometry *poGeometry;
+	poGeometry = readFeature->GetGeometryRef();
+	assert(poGeometry!=NULL);
+	try{
+	  if(wkbFlatten(poGeometry->getGeometryType()) == wkbPoint ){
+	    OGRPoint readPoint = *((OGRPoint *) poGeometry);
+            
+	    double i_centre,j_centre;
+            imgReader.geo2image(readPoint.getX(),readPoint.getY(),i_centre,j_centre);
+	    //nearest neighbour
+	    j_centre=static_cast<int>(j_centre);
+	    i_centre=static_cast<int>(i_centre);
+
+	    double uli=i_centre-buffer_opt[0];
+	    double ulj=j_centre-buffer_opt[0];
+	    double lri=i_centre+buffer_opt[0];
+	    double lrj=j_centre+buffer_opt[0];
+
+	    //nearest neighbour
+	    ulj=static_cast<int>(ulj);
+	    uli=static_cast<int>(uli);
+	    lrj=static_cast<int>(lrj);
+	    lri=static_cast<int>(lri);
+
+	    //check if j is out of bounds
+	    if(static_cast<int>(ulj)<0||static_cast<int>(ulj)>=imgReader.nrOfRow())
+	      continue;
+	    //check if j is out of bounds
+	    if(static_cast<int>(uli)<0||static_cast<int>(lri)>=imgReader.nrOfCol())
+	      continue;
+            
+	    OGRPoint ulPoint,urPoint,llPoint,lrPoint;
+	    double ulx;
+            double uly;
+	    double lrx;
+            double lry;
+
+	    OGRPolygon writePolygon;
+            OGRPoint writePoint;
+	    OGRLinearRing writeRing;
+	    OGRFeature *writePolygonFeature;
+
+	    int nPointPolygon=0;
+	    if(createPolygon){
+	      if(disc_opt[0]){
+		double gt[6];// { 444720, 30, 0, 3751320, 0, -30 };
+		double radius=buffer_opt[0]*sqrt(imgReader.getDeltaX()*imgReader.getDeltaY());
+		unsigned short nstep = 25;
+		for(int i=0;i<nstep;++i){
+		  OGRPoint aPoint;
+		  aPoint.setX(readPoint.getX()+imgReader.getDeltaX()/2.0+radius*cos(2*PI*i/nstep));
+		  aPoint.setY(readPoint.getY()-imgReader.getDeltaY()/2.0+radius*sin(2*PI*i/nstep));
+		  writeRing.addPoint(&aPoint);
+		}
+		writePolygon.addRing(&writeRing);
+		writePolygon.closeRings();
+	      }
+	      else{
+		double ulx,uly,lrx,lry;
+		imgReader.image2geo(uli,ulj,ulx,uly);
+		imgReader.image2geo(lri,lrj,lrx,lry);
+		ulPoint.setX(ulx-imgReader.getDeltaX()/2.0);
+		ulPoint.setY(uly+imgReader.getDeltaY()/2.0);
+		lrPoint.setX(lrx+imgReader.getDeltaX()/2.0);
+		lrPoint.setY(lry-imgReader.getDeltaY()/2.0);
+		urPoint.setX(lrx+imgReader.getDeltaX()/2.0);
+		urPoint.setY(uly+imgReader.getDeltaY()/2.0);
+		llPoint.setX(ulx-imgReader.getDeltaX()/2.0);
+		llPoint.setY(lry-imgReader.getDeltaY()/2.0);
+
+		writeRing.addPoint(&ulPoint);
+		writeRing.addPoint(&urPoint);
+		writeRing.addPoint(&lrPoint);
+		writeRing.addPoint(&llPoint);
+		writePolygon.addRing(&writeRing);
+		writePolygon.closeRings();
+	      }
+              writePolygonFeature = OGRFeature::CreateFeature(writeLayer->GetLayerDefn());
+              if(writePolygonFeature->SetFrom(readFeature)!= OGRERR_NONE)
+                cerr << "writing feature failed" << std::endl;
+              writePolygonFeature->SetGeometry(&writePolygon);
+              if(verbose_opt[0]>1)
+                std::cout << "copying new fields write polygon " << std::endl;
+              if(verbose_opt[0]>1)
+                std::cout << "write feature has " << writePolygonFeature->GetFieldCount() << " fields" << std::endl;
+
+              OGRPoint readPoint;
+              if(find(rule_opt.begin(),rule_opt.end(),"centroid")!=rule_opt.end()){
+                if(verbose_opt[0]>1)
+                  std::cout << "get centroid" << std::endl;
+                writePolygon.Centroid(&readPoint);
+                double i,j;
+                imgReader.geo2image(readPoint.getX(),readPoint.getY(),i,j);
+                int indexJ=static_cast<int>(j-layer_ulj);
+                int indexI=static_cast<int>(i-layer_uli);
+                bool valid=true;
+                valid=valid&&(indexJ>=0);
+                valid=valid&&(indexJ<imgReader.nrOfRow());
+                valid=valid&&(indexI>=0);
+                valid=valid&&(indexI<imgReader.nrOfCol());
+
+                if(valid){
+		  if(srcnodata_opt.empty())
+		    validFeature=true;
+		  else{
+		    for(int vband=0;vband<bndnodata_opt.size();++vband){
+		      switch( fieldType ){
+		      case OFTInteger:{
+			int value;
+			value=((readValuesInt[vband])[indexJ])[indexI];
+			if(value==srcnodata_opt[vband])
+			  valid=false;
+			break;
+		      }
+		      case OFTReal:{
+			double value;
+			value=((readValuesReal[vband])[indexJ])[indexI];
+			if(value==srcnodata_opt[vband])
+			  valid=false;
+			break;
+		      }
+		      }
+		      if(!valid)
+			continue;
+		      else
+			validFeature=true;
+		    }
+		  }
+		}
+                if(valid){
+                  assert(readValuesReal.size()==nband);
+                  for(int iband=0;iband<nband;++iband){
+                    int theBand=(band_opt.size()) ? band_opt[iband] : iband;
+                    //write fields for point on surface and centroid
+                    string fieldname;
+                    ostringstream fs;
+                    if(rule_opt.size()>1||nband==1)
+                      fs << "centroid";
+                    if(nband>1)
+                      fs << "b" << theBand;
+                    fieldname=fs.str();
+                    switch( fieldType ){
+                    case OFTInteger:
+                      writePolygonFeature->SetField(fieldname.c_str(),static_cast<int>(((readValuesInt[iband])[indexJ])[indexI]));
+                      break;
+                    case OFTReal:
+                      writePolygonFeature->SetField(fieldname.c_str(),((readValuesReal[iband])[indexJ])[indexI]);
+                      break;
+                    default://not supported
+                      std::string errorString="field type not supported";
+                      throw(errorString);
+                      break;
+                    }
+                  }
+                }
+              }//if centroid
+              if(find(rule_opt.begin(),rule_opt.end(),"point")!=rule_opt.end()){
+                if(verbose_opt[0]>1)
+                  std::cout << "get point on surface" << std::endl;
+                if(writePolygon.PointOnSurface(&readPoint)!=OGRERR_NONE)
+                  writePolygon.Centroid(&readPoint);
+                double i,j;
+                imgReader.geo2image(readPoint.getX(),readPoint.getY(),i,j);
+                int indexJ=static_cast<int>(j-layer_ulj);
+                int indexI=static_cast<int>(i-layer_uli);
+                bool valid=true;
+                valid=valid&&(indexJ>=0);
+                valid=valid&&(indexJ<imgReader.nrOfRow());
+                valid=valid&&(indexI>=0);
+                valid=valid&&(indexI<imgReader.nrOfCol());
+                if(valid&&srcnodata_opt.size()){
+                  for(int vband=0;vband<bndnodata_opt.size();++vband){
+                    switch( fieldType ){
+                    case OFTInteger:{
+                      int value;
+                      value=((readValuesInt[vband])[indexJ])[indexI];
+                      if(value==srcnodata_opt[vband])
+                        valid=false;
+                      break;
+                    }
+                    case OFTReal:{
+                      double value;
+                      value=((readValuesReal[vband])[indexJ])[indexI];
+                      if(value==srcnodata_opt[vband])
+                        valid=false;
+                      break;
+                    }
+                    }
+                    if(!valid)
+                      continue;
+                    else
+                      validFeature=true;
+                  }
+                }
+                if(valid){
+                  for(int iband=0;iband<nband;++iband){
+                    int theBand=(band_opt.size()) ? band_opt[iband] : iband;
+                    //write fields for point on surface and centroid
+                    string fieldname;
+                    ostringstream fs;
+                    if(rule_opt.size()>1||nband==1)
+                      fs << "point";
+                    if(nband>1)
+                      fs << "b" << theBand;
+                    fieldname=fs.str();
+                    switch( fieldType ){
+                    case OFTInteger:
+                      writePolygonFeature->SetField(fieldname.c_str(),static_cast<int>(((readValuesInt[iband])[indexJ])[indexI]));
+                      break;
+                    case OFTReal:
+                      writePolygonFeature->SetField(fieldname.c_str(),((readValuesReal[iband])[indexJ])[indexI]);
+                      break;
+                    default://not supported
+                      std::string errorString="field type not supported";
+                      throw(errorString);
+                      break;
+                    }
+                  }
+                }
+              }//if point
+            }//if createPolygon
+
+            if(calculateSpatialStatistics||!createPolygon){
+              Vector2d<double> polyValues;
+              vector<double> polyClassValues;
+	    
+              if(class_opt.size()){
+                polyClassValues.resize(class_opt.size());
+                //initialize
+                for(int iclass=0;iclass<class_opt.size();++iclass)
+                  polyClassValues[iclass]=0;
+              }
+              else
+                polyValues.resize(nband);
+
+              OGRPoint thePoint;
+              for(int j=ulj;j<=lrj;++j){
+                for(int i=uli;i<=lri;++i){
+                  //check if within raster image
+                  if(i<0||i>=imgReader.nrOfCol())
+                    continue;
+                  if(j<0||j>=imgReader.nrOfRow())
+                    continue;
+                  int indexJ=j-layer_ulj;
+                  int indexI=i-layer_uli;
+                  if(indexJ<0)
+                    indexJ=0;
+                  if(indexI<0)
+                    indexI=0;
+                  if(indexJ>=imgReader.nrOfRow())
+                    indexJ=imgReader.nrOfRow()-1;
+                  if(indexI>=imgReader.nrOfCol())
+                    indexI=imgReader.nrOfCol()-1;
+
+                  double theX=0;
+                  double theY=0;
+                  imgReader.image2geo(i,j,theX,theY);
+                  thePoint.setX(theX);
+                  thePoint.setY(theY);
+                  if(disc_opt[0]&&buffer_opt[0]>0){
+                    double radius=buffer_opt[0]*sqrt(imgReader.getDeltaX()*imgReader.getDeltaY());
+                    if((theX-readPoint.getX())*(theX-readPoint.getX())+(theY-readPoint.getY())*(theY-readPoint.getY())>radius*radius)
+                      continue;
+                  }
+                  bool valid=true;
+
+                  if(srcnodata_opt.size()){
+                    for(int vband=0;vband<bndnodata_opt.size();++vband){
+                      switch( fieldType ){
+                      case OFTInteger:{
+                        int value=((readValuesInt[vband])[indexJ])[indexI];
+                        if(value==srcnodata_opt[vband]){
+                          valid=false;
+                        }
+                        break;
+                      }
+                      default:{
+                        float value=((readValuesReal[vband])[indexJ])[indexI];
+                        if(value==srcnodata_opt[vband]){
+                          valid=false;
+                        }
+                        break;
+                      }
+                      }
+                    }
+                  }
+                  if(!valid)
+                    continue;
+                  else
+                    validFeature=true;
+
+                  ++nPointPolygon;
+                  OGRFeature *writePointFeature;
+                  if(valid&&!createPolygon){//write all points
+                    if(polythreshold_opt.size())
+                      if(nPointPolygon>polythreshold_opt[0])
+                        break;
+                    //create feature
+                    writePointFeature = OGRFeature::CreateFeature(writeLayer->GetLayerDefn());
+                    if(verbose_opt[0]>1)
+                      std::cout << "copying fields from point feature " << std::endl;
+                    if(writePointFeature->SetFrom(readFeature)!= OGRERR_NONE)
+                      cerr << "writing feature failed" << std::endl;
+                    if(verbose_opt[0]>1)
+                      std::cout << "set geometry as point " << std::endl;
+                    writePointFeature->SetGeometry(&thePoint);
+                    assert(wkbFlatten(writePointFeature->GetGeometryRef()->getGeometryType()) == wkbPoint);
+                    if(verbose_opt[0]>1){
+                      std::cout << "write feature has " << writePointFeature->GetFieldCount() << " fields:" << std::endl;
+                      for(int iField=0;iField<writePointFeature->GetFieldCount();++iField){
+                        std::string fieldname=writeLayer->GetLayerDefn()->GetFieldDefn(iField)->GetNameRef();
+                        cout << fieldname << endl;
+                      }
+                    }
+                  }
+                  if(valid&&class_opt.size()){
+                    short value=0;
+                    switch( fieldType ){
+                    case OFTInteger:
+                      value=((readValuesInt[0])[indexJ])[indexI];
+                      break;
+                    case OFTReal:
+                      value=((readValuesReal[0])[indexJ])[indexI];
+                      break;
+                    }
+                    for(int iclass=0;iclass<class_opt.size();++iclass){
+                      if(value==class_opt[iclass])
+                        polyClassValues[iclass]+=1;
+                    }
+                  }
+                  else if(valid){
+                    for(int iband=0;iband<nband;++iband){
+                      int theBand=(band_opt.size()) ? band_opt[iband] : iband;
+                      double value=0;
+                      switch( fieldType ){
+                      case OFTInteger:
+                        value=((readValuesInt[iband])[indexJ])[indexI];
+                        break;
+                      case OFTReal:
+                        value=((readValuesReal[iband])[indexJ])[indexI];
+                        break;
+                      }
+
+                      if(verbose_opt[0]>1)
+                        std::cout << ": " << value << std::endl;
+                      if(!createPolygon){//write all points within polygon
+                        string fieldname;
+                        ostringstream fs;
+                        if(rule_opt.size()>1||nband==1)
+                          fs << "allpoints";
+                        if(nband>1)
+                          fs << "b" << theBand;
+                        fieldname=fs.str();
+                        int fieldIndex=writePointFeature->GetFieldIndex(fieldname.c_str());
+                        if(fieldIndex<0){
+                          cerr << "field " << fieldname << " was not found" << endl;
+                          exit(1);
+                        }
+                        if(verbose_opt[0]>1)
+                          std::cout << "set field " << fieldname << " to " << value << std::endl;
+                        switch( fieldType ){
+                        case OFTInteger:
+                        case OFTReal:
+                          writePointFeature->SetField(fieldname.c_str(),value);
+                          break;
+                        default://not supported
+                          assert(0);
+                          break;
+                        }
+                      }
+                      else{
+                        polyValues[iband].push_back(value);
+                      }
+                    }//iband
+                  }//else (not class_opt.size())
+                  if(valid&&!createPolygon){
+                    //write feature
+                    if(verbose_opt[0]>1)
+                      std::cout << "creating point feature" << std::endl;
+                    if(writeLayer->CreateFeature( writePointFeature ) != OGRERR_NONE ){
+                      std::string errorString="Failed to create feature in ogr vector dataset";
+                      throw(errorString);
+                    }
+                    //destroy feature
+                    // OGRFeature::DestroyFeature( writePointFeature );
+                    ++ntotalvalid;
+                    ++ntotalvalidLayer;
+                  }
+                }//for in i
+              }//for int j
+
+              if(createPolygon){
+                //do not create if no points found within polygon
+                if(!nPointPolygon){
+                  if(verbose_opt[0])
+                    cout << "no points found in polygon, continuing" << endl;
+                  continue;
+                }
+                //write field attributes to polygon feature
+                for(int irule=0;irule<rule_opt.size();++irule){
+                  //skip centroid and point
+                  if(ruleMap[rule_opt[irule]]==rule::centroid||ruleMap[rule_opt[irule]]==rule::point)
+                    continue;
+                  for(int iband=0;iband<nband;++iband){
+                    int theBand=(band_opt.size()) ? band_opt[iband] : iband;
+                    double theValue=0;
+                    string fieldname;
+                    ostringstream fs;
+                    if(rule_opt.size()>1||nband==1)
+                      fs << rule_opt[irule];
+                    if(nband>1)
+                      fs << "b" << theBand;
+                    fieldname=fs.str();
+                    switch(ruleMap[rule_opt[irule]]){
+                    case(rule::proportion):
+                      stat.normalize_pct(polyClassValues);
+                    case(rule::count):{//count for each class
+                      for(int index=0;index<polyClassValues.size();++index){
+                        theValue=polyClassValues[index];
+                        ostringstream fs;
+                        fs << class_opt[index];
+                        if(nband>1)
+                          fs << "b" << theBand;
+                        fieldname=fs.str();
+                      }
+                      break;
+                    }
+                    case(rule::mode):{
+                      //maximum votes in polygon
+                      if(verbose_opt[0])
+                        std::cout << "number of points in polygon: " << nPointPolygon << std::endl;
+                      //search for class with maximum votes
+                      int maxClass=stat.mymin(class_opt);
+                      vector<double>::iterator maxit;
+                      maxit=stat.mymax(polyClassValues,polyClassValues.begin(),polyClassValues.end());
+                      int maxIndex=distance(polyClassValues.begin(),maxit);
+                      maxClass=class_opt[maxIndex];
+                      if(verbose_opt[0]>0)
+                        std::cout << "maxClass: " << maxClass << std::endl;
+                      theValue=maxClass;
+                    }
+                    case(rule::mean):
+                      theValue=stat.mean(polyValues[iband]);
+                      break;
+                    case(rule::median):
+                      theValue=stat.median(polyValues[iband]);
+                      break;
+                    case(rule::stdev):
+                      theValue=sqrt(stat.var(polyValues[iband]));
+                      break;
+                    case(rule::percentile):
+                      theValue=stat.percentile(polyValues[iband],polyValues[iband].begin(),polyValues[iband].end(),percentile_opt[0]);
+                      break;
+                    case(rule::sum):
+                      theValue=stat.sum(polyValues[iband]);
+                      break;
+                    case(rule::max):
+                      theValue=stat.mymax(polyValues[iband]);
+                      break;
+                    case(rule::min):
+                      theValue=stat.mymin(polyValues[iband]);
+                      break;
+                    case(rule::centroid):
+                      theValue=polyValues[iband].back();
+                      break;
+                    default://not supported
+                      break;
+                    }
+                  
+                    switch( fieldType ){
+                    case OFTInteger:
+                      writePolygonFeature->SetField(fieldname.c_str(),static_cast<int>(theValue));
+                      break;
+                    case OFTReal:
+                      writePolygonFeature->SetField(fieldname.c_str(),theValue);
+                      break;
+                    case OFTString:
+                      writePolygonFeature->SetField(fieldname.c_str(),type2string<double>(theValue).c_str());
+                      break;
+                    default://not supported
+                      std::string errorString="field type not supported";
+                      throw(errorString);
+                      break;
+                    }
+                  }
+                }
+              }
+            }
+	    //test
+            if(createPolygon&&validFeature){
+            // if(createPolygon){
+              //write polygon feature
+	      //todo: create only in case of valid feature
+              if(verbose_opt[0]>1)
+                std::cout << "creating polygon feature (1)" << std::endl;
+              if(writeLayer->CreateFeature( writePolygonFeature ) != OGRERR_NONE ){
+                std::string errorString="Failed to create polygon feature in ogr vector dataset";
+                throw(errorString);
+              }
+              //test: no need to destroy anymore?
+              // OGRFeature::DestroyFeature( writePolygonFeature );
+              ++ntotalvalid;
+              ++ntotalvalidLayer;
+            }
+	  }
+	  else{
+	    OGRPolygon readPolygon;
+	    OGRMultiPolygon readMultiPolygon;
+
+            //get envelope
+            OGREnvelope* psEnvelope=new OGREnvelope();
+
+	    if(wkbFlatten(poGeometry->getGeometryType()) == wkbPolygon){
+	      readPolygon = *((OGRPolygon *) poGeometry);
+	      readPolygon.closeRings();
+	      readPolygon.getEnvelope(psEnvelope);
+	    }
+	    else if(wkbFlatten(poGeometry->getGeometryType()) == wkbMultiPolygon){
+	      readMultiPolygon = *((OGRMultiPolygon *) poGeometry);
+	      readMultiPolygon.closeRings();
+	      readMultiPolygon.getEnvelope(psEnvelope);
+	    }
+	    else{
+	      std::string test;
+	      test=poGeometry->getGeometryName();
+	      ostringstream oss;
+	      oss << "geometry " << test << " not supported";
+	      throw(oss.str());
+	    }
+
+	    double ulx,uly,lrx,lry;
+	    double uli,ulj,lri,lrj;
+            ulx=psEnvelope->MinX;
+            uly=psEnvelope->MaxY;
+            lrx=psEnvelope->MaxX;
+            lry=psEnvelope->MinY;
+            delete psEnvelope;
+
+            //check if feature is covered by input raster dataset
+            if(!imgReader.covers(ulx,uly,lrx,lry))
+              continue;
+
+	    OGRFeature *writePolygonFeature;
+	    int nPointPolygon=0;
+	    if(createPolygon){
+              writePolygonFeature = OGRFeature::CreateFeature(writeLayer->GetLayerDefn());
+              writePolygonFeature->SetGeometry(poGeometry);
+              //writePolygonFeature and readFeature are both of type wkbPolygon
+              if(writePolygonFeature->SetFrom(readFeature)!= OGRERR_NONE)
+                cerr << "writing feature failed" << std::endl;
+              if(verbose_opt[0]>1)
+                std::cout << "copying new fields write polygon " << std::endl;
+              if(verbose_opt[0]>1)
+                std::cout << "write feature has " << writePolygonFeature->GetFieldCount() << " fields" << std::endl;
+	    }
+
+            OGRPoint readPoint;
+	    if(find(rule_opt.begin(),rule_opt.end(),"centroid")!=rule_opt.end()){
+              if(verbose_opt[0]>1)
+                std::cout << "get centroid" << std::endl;
+	      if(wkbFlatten(poGeometry->getGeometryType()) == wkbPolygon)
+		readPolygon.Centroid(&readPoint);
+	      else if(wkbFlatten(poGeometry->getGeometryType()) == wkbMultiPolygon)
+		readMultiPolygon.Centroid(&readPoint);
+
+              double i,j;
+              imgReader.geo2image(readPoint.getX(),readPoint.getY(),i,j);
+              int indexJ=static_cast<int>(j-layer_ulj);
+              int indexI=static_cast<int>(i-layer_uli);
+              bool valid=true;
+              valid=valid&&(indexJ>=0);
+              valid=valid&&(indexJ<imgReader.nrOfRow());
+              valid=valid&&(indexI>=0);
+              valid=valid&&(indexI<imgReader.nrOfCol());
+              if(valid){
+		if(srcnodata_opt.empty())
+		  validFeature=true;
+		else{
+		  for(int vband=0;vband<bndnodata_opt.size();++vband){
+		    switch( fieldType ){
+		    case OFTInteger:{
+		      int value;
+		      value=((readValuesInt[vband])[indexJ])[indexI];
+		      if(value==srcnodata_opt[vband])
+			valid=false;
+		      break;
+		    }
+		    case OFTReal:{
+		      double value;
+		      value=((readValuesReal[vband])[indexJ])[indexI];
+		      if(value==srcnodata_opt[vband])
+			valid=false;
+		      break;
+		    }
+		    }
+		    if(!valid)
+		      continue;
+		    else
+		      validFeature=true;
+		  }
+		}
+	      }
+              if(valid){
+                assert(readValuesReal.size()==nband);
+                for(int iband=0;iband<nband;++iband){
+                  int theBand=(band_opt.size()) ? band_opt[iband] : iband;
+                  //write fields for point on surface and centroid
+                  string fieldname;
+                  ostringstream fs;
+                  if(rule_opt.size()>1||nband==1)
+                    fs << "centroid";
+                  if(nband>1)
+                    fs << "b" << theBand;
+                  fieldname=fs.str();
+                  switch( fieldType ){
+                  case OFTInteger:
+                    writePolygonFeature->SetField(fieldname.c_str(),static_cast<int>(((readValuesInt[iband])[indexJ])[indexI]));
+                    break;
+                  case OFTReal:
+                    writePolygonFeature->SetField(fieldname.c_str(),((readValuesReal[iband])[indexJ])[indexI]);
+                    break;
+                  default://not supported
+                    std::string errorString="field type not supported";
+                    throw(errorString);
+                    break;
+                  }
+                }
+              }
+            }
+	    if(find(rule_opt.begin(),rule_opt.end(),"point")!=rule_opt.end()){
+              if(verbose_opt[0]>1)
+                std::cout << "get point on surface" << std::endl;
+	      if(wkbFlatten(poGeometry->getGeometryType()) == wkbPolygon){
+		if(readPolygon.PointOnSurface(&readPoint)!=OGRERR_NONE)
+		  readPolygon.Centroid(&readPoint);
+	      }
+	      else if(wkbFlatten(poGeometry->getGeometryType()) == wkbMultiPolygon){
+		// if(readMultiPolygon.PointOnSurface(&readPoint)!=OGRERR_NONE)
+		  readMultiPolygon.Centroid(&readPoint);
+	      }
+              double i,j;
+              imgReader.geo2image(readPoint.getX(),readPoint.getY(),i,j);
+              int indexJ=static_cast<int>(j-layer_ulj);
+              int indexI=static_cast<int>(i-layer_uli);
+              bool valid=true;
+              valid=valid&&(indexJ>=0);
+              valid=valid&&(indexJ<imgReader.nrOfRow());
+              valid=valid&&(indexI>=0);
+              valid=valid&&(indexI<imgReader.nrOfCol());
+              if(valid&&srcnodata_opt.size()){
+                for(int vband=0;vband<bndnodata_opt.size();++vband){
+                  switch( fieldType ){
+                  case OFTInteger:{
+                    int value;
+                    value=((readValuesInt[vband])[indexJ])[indexI];
+                    if(value==srcnodata_opt[vband])
+                      valid=false;
+                    break;
+                  }
+                  case OFTReal:{
+                    double value;
+                    value=((readValuesReal[vband])[indexJ])[indexI];
+                    if(value==srcnodata_opt[vband])
+                      valid=false;
+                    break;
+                  }
+                  }
+                  if(!valid)
+                    continue;
+                  else
+                    validFeature=true;
+                }
+              }
+              if(valid){
+                for(int iband=0;iband<nband;++iband){
+                  int theBand=(band_opt.size()) ? band_opt[iband] : iband;
+                  //write fields for point on surface and centroid
+                  string fieldname;
+                  ostringstream fs;
+                  if(rule_opt.size()>1||nband==1)
+                    fs << "point";
+                  if(nband>1)
+                    fs << "b" << theBand;
+                  fieldname=fs.str();
+                  switch( fieldType ){
+                  case OFTInteger:
+                    writePolygonFeature->SetField(fieldname.c_str(),static_cast<int>(((readValuesInt[iband])[indexJ])[indexI]));
+                    break;
+                  case OFTReal:
+                    writePolygonFeature->SetField(fieldname.c_str(),((readValuesReal[iband])[indexJ])[indexI]);
+                    break;
+                  default://not supported
+                    std::string errorString="field type not supported";
+                    throw(errorString);
+                    break;
+                  }
+                }
+              }
+            }
+            if(calculateSpatialStatistics||ruleMap[rule_opt[0]]==rule::allpoints){
+              imgReader.geo2image(ulx,uly,uli,ulj);
+              imgReader.geo2image(lrx,lry,lri,lrj);
+              //nearest neighbour
+              ulj=static_cast<int>(ulj);
+              uli=static_cast<int>(uli);
+              lrj=static_cast<int>(lrj);
+              lri=static_cast<int>(lri);
+              //iterate through all pixels
+              if(verbose_opt[0]>1)
+                std::cout << "bounding box for polygon feature " << ifeature << ": " << uli << " " << ulj << " " << lri << " " << lrj << std::endl;
+
+              if(uli<0)
+                uli=0;
+              if(lri<0)
+                lri=0;
+              if(uli>=imgReader.nrOfCol())
+                uli=imgReader.nrOfCol()-1;
+              if(lri>=imgReader.nrOfCol())
+                lri=imgReader.nrOfCol()-1;
+              if(ulj<0)
+                ulj=0;
+              if(lrj<0)
+                lrj=0;
+              if(ulj>=imgReader.nrOfRow())
+                ulj=imgReader.nrOfRow()-1;
+              if(lrj>=imgReader.nrOfRow())
+                lrj=imgReader.nrOfRow()-1;
+
+              Vector2d<double> polyValues;
+              vector<double> polyClassValues;
+	    
+              if(class_opt.size()){
+                polyClassValues.resize(class_opt.size());
+                //initialize
+                for(int iclass=0;iclass<class_opt.size();++iclass)
+                  polyClassValues[iclass]=0;
+              }
+              else
+                polyValues.resize(nband);
+
+              OGRPoint thePoint;
+              for(int j=ulj;j<=lrj;++j){
+                for(int i=uli;i<=lri;++i){
+                  //check if within raster image
+                  if(i<0||i>=imgReader.nrOfCol())
+                    continue;
+                  if(j<0||j>=imgReader.nrOfRow())
+                    continue;
+                  int indexJ=j-layer_ulj;
+                  int indexI=i-layer_uli;
+
+                  double theX=0;
+                  double theY=0;
+                  imgReader.image2geo(i,j,theX,theY);
+                  thePoint.setX(theX);
+                  thePoint.setY(theY);
+                  //check if point is on surface
+		  if(wkbFlatten(poGeometry->getGeometryType()) == wkbPolygon){
+		    if(!readPolygon.Contains(&thePoint))
+		      continue;
+		  }
+		  else if(wkbFlatten(poGeometry->getGeometryType()) == wkbMultiPolygon){
+		    if(!readMultiPolygon.Contains(&thePoint))
+		      continue;
+		  }
+		  
+                  bool valid=true;
+                  if(srcnodata_opt.size()){
+                    for(int vband=0;vband<bndnodata_opt.size();++vband){
+                      switch( fieldType ){
+                      case OFTInteger:{
+                        int value=((readValuesInt[vband])[indexJ])[indexI];
+                        if(value==srcnodata_opt[vband]){
+                          valid=false;
+                        }
+                        break;
+                      }
+                      default:{
+                        float value=((readValuesReal[vband])[indexJ])[indexI];
+                        if(value==srcnodata_opt[vband]){
+                          valid=false;
+                        }
+                        break;
+                      }
+                      }
+                    }
+                  }
+                  if(!valid)
+                    continue;
+                  else
+                    validFeature=true;
+
+                  if(verbose_opt[0]>1)
+                    std::cout << "point is on surface:" << thePoint.getX() << "," << thePoint.getY() << std::endl;
+                  ++nPointPolygon;
+
+                  OGRFeature *writePointFeature;
+                  if(!createPolygon){//write all points within polygon
+                    if(polythreshold_opt.size())
+                      if(nPointPolygon>polythreshold_opt[0])
+                        break;
+                    //create feature
+                    writePointFeature = OGRFeature::CreateFeature(writeLayer->GetLayerDefn());
+                    if(verbose_opt[0]>1)
+                      std::cout << "copying fields from polygons " << std::endl;
+                    if(writePointFeature->SetFrom(readFeature)!= OGRERR_NONE)
+                      cerr << "writing feature failed" << std::endl;
+                    if(verbose_opt[0]>1)
+                      std::cout << "set geometry as point " << std::endl;
+                    writePointFeature->SetGeometry(&thePoint);
+                    assert(wkbFlatten(writePointFeature->GetGeometryRef()->getGeometryType()) == wkbPoint);
+                    if(verbose_opt[0]>1){
+                      std::cout << "write feature has " << writePointFeature->GetFieldCount() << " fields:" << std::endl;
+                      for(int iField=0;iField<writePointFeature->GetFieldCount();++iField){
+                        std::string fieldname=writeLayer->GetLayerDefn()->GetFieldDefn(iField)->GetNameRef();
+                        cout << fieldname << endl;
+                      }
+                    }
+                  }
+                  if(class_opt.size()){
+                    short value=0;
+                    switch( fieldType ){
+                    case OFTInteger:
+                      value=((readValuesInt[0])[indexJ])[indexI];
+                      break;
+                    case OFTReal:
+                      value=((readValuesReal[0])[indexJ])[indexI];
+                      break;
+                    }
+                    for(int iclass=0;iclass<class_opt.size();++iclass){
+                      if(value==class_opt[iclass])
+                        polyClassValues[iclass]+=1;
+                    }
+                  }
+                  else{
+                    for(int iband=0;iband<nband;++iband){
+                      int theBand=(band_opt.size()) ? band_opt[iband] : iband;
+                      double value=0;
+                      switch( fieldType ){
+                      case OFTInteger:
+                        value=((readValuesInt[iband])[indexJ])[indexI];
+                        break;
+                      case OFTReal:
+                        value=((readValuesReal[iband])[indexJ])[indexI];
+                        break;
+                      }
+
+                      if(verbose_opt[0]>1)
+                        std::cout << ": " << value << std::endl;
+                      if(!createPolygon){//write all points within polygon
+                        string fieldname;
+                        ostringstream fs;
+                        if(rule_opt.size()>1||nband==1)
+                          fs << "allpoints";
+                        if(nband>1)
+                          fs << "b" << theBand;
+                        fieldname=fs.str();
+                        int fieldIndex=writePointFeature->GetFieldIndex(fieldname.c_str());
+                        if(fieldIndex<0){
+                          cerr << "field " << fieldname << " was not found" << endl;
+                          exit(1);
+                        }
+                        if(verbose_opt[0]>1)
+                          std::cout << "set field " << fieldname << " to " << value << std::endl;
+                        switch( fieldType ){
+                        case OFTInteger:
+                        case OFTReal:
+                          writePointFeature->SetField(fieldname.c_str(),value);
+                          break;
+                        default://not supported
+                          assert(0);
+                          break;
+                        }
+                      }
+                      else{
+                        polyValues[iband].push_back(value);
+                      }
+                    }//iband
+                  }//else (not class_opt.size())
+                  if(!createPolygon){
+		    //todo: only if valid feature?
+                    //write feature
+                    if(verbose_opt[0]>1)
+                      std::cout << "creating point feature" << std::endl;
+                    if(writeLayer->CreateFeature( writePointFeature ) != OGRERR_NONE ){
+                      std::string errorString="Failed to create feature in ogr vector dataset";
+                      throw(errorString);
+                    }
+                    //destroy feature
+                    // OGRFeature::DestroyFeature( writePointFeature );
+                    ++ntotalvalid;
+                    ++ntotalvalidLayer;
+                  }
+                }//for in i
+              }//for int j
+              if(createPolygon){
+                //do not create if no points found within polygon
+                if(!nPointPolygon){
+                  if(verbose_opt[0])
+                    cout << "no points found in polygon, continuing" << endl;
+                  continue;
+                }
+                //write field attributes to polygon feature
+                for(int irule=0;irule<rule_opt.size();++irule){
+                  //skip centroid and point
+                  if(ruleMap[rule_opt[irule]]==rule::centroid||ruleMap[rule_opt[irule]]==rule::point)
+                    continue;
+                  for(int iband=0;iband<nband;++iband){
+                    int theBand=(band_opt.size()) ? band_opt[iband] : iband;
+                    double theValue=0;
+                    string fieldname;
+                    ostringstream fs;
+                    if(rule_opt.size()>1||nband==1)
+                      fs << rule_opt[irule];
+                    if(nband>1)
+                      fs << "b" << theBand;
+                    fieldname=fs.str();
+                    switch(ruleMap[rule_opt[irule]]){
+                    case(rule::proportion):
+                      stat.normalize_pct(polyClassValues);
+                    case(rule::count):{//count for each class
+                      for(int index=0;index<polyClassValues.size();++index){
+                        theValue=polyClassValues[index];
+                        ostringstream fs;
+                        fs << class_opt[index];
+                        if(nband>1)
+                          fs << "b" << theBand;
+                        fieldname=fs.str();
+                      }
+                      break;
+                    }
+                    case(rule::mode):{
+                      //maximum votes in polygon
+                      if(verbose_opt[0])
+                        std::cout << "number of points in polygon: " << nPointPolygon << std::endl;
+                      //search for class with maximum votes
+                      int maxClass=stat.mymin(class_opt);
+                      vector<double>::iterator maxit;
+                      maxit=stat.mymax(polyClassValues,polyClassValues.begin(),polyClassValues.end());
+                      int maxIndex=distance(polyClassValues.begin(),maxit);
+                      maxClass=class_opt[maxIndex];
+                      if(verbose_opt[0]>0)
+                        std::cout << "maxClass: " << maxClass << std::endl;
+                      theValue=maxClass;
+                    }
+                    case(rule::mean):
+                      theValue=stat.mean(polyValues[iband]);
+                      break;
+                    case(rule::median):
+                      theValue=stat.median(polyValues[iband]);
+                      break;
+                    case(rule::stdev):
+                      theValue=sqrt(stat.var(polyValues[iband]));
+                      break;
+                    case(rule::percentile):
+                      theValue=stat.percentile(polyValues[iband],polyValues[iband].begin(),polyValues[iband].end(),percentile_opt[0]);
+                      break;
+                    case(rule::sum):
+                      theValue=stat.sum(polyValues[iband]);
+                      break;
+                    case(rule::max):
+                      theValue=stat.mymax(polyValues[iband]);
+                      break;
+                    case(rule::min):
+                      theValue=stat.mymin(polyValues[iband]);
+                      break;
+                    case(rule::centroid):
+                      theValue=polyValues[iband].back();
+                      break;
+                    default://not supported
+                      break;
+                    }
+                  
+                    switch( fieldType ){
+                    case OFTInteger:
+                      writePolygonFeature->SetField(fieldname.c_str(),static_cast<int>(theValue));
+                      break;
+                    case OFTReal:
+                      writePolygonFeature->SetField(fieldname.c_str(),theValue);
+                      break;
+                    case OFTString:
+                      writePolygonFeature->SetField(fieldname.c_str(),type2string<double>(theValue).c_str());
+                      break;
+                    default://not supported
+                      std::string errorString="field type not supported";
+                      throw(errorString);
+                      break;
+                    }
+                  }
+                }
+              }
+	    }
+	    //hiero
+            if(createPolygon&&validFeature){
+	      //todo: only create if valid feature?
+              //write polygon feature
+              if(verbose_opt[0]>1)
+                std::cout << "creating polygon feature (2)" << std::endl;
+              if(writeLayer->CreateFeature( writePolygonFeature ) != OGRERR_NONE ){
+                std::string errorString="Failed to create polygon feature in ogr vector dataset";
+                throw(errorString);
+              }
+              //test: no need to destroy anymore?
+              // OGRFeature::DestroyFeature( writePolygonFeature );
+              ++ntotalvalid;
+              ++ntotalvalidLayer;
+            }
+	  }
+	  ++ifeature;
+	  if(theThreshold>0){
+	    if(threshold_opt.size()==layer_opt.size())
+	      progress=(100.0/theThreshold)*static_cast<float>(ntotalvalidLayer)/nfeatureLayer;
+	    else
+	      progress=static_cast<float>(ntotalvalidLayer)/nfeatureLayer;
+	  }
+ 	  else
+	    progress=static_cast<float>(ifeature+1)/(-theThreshold);
+	  pfnProgress(progress,pszMessage,pProgressArg);
+        }
+	catch(std::string e){
+	  std::cout << e << std::endl;
+	  continue;
+        }
+	catch(int npoint){
+	  if(verbose_opt[0])
+	    std::cout << "number of points read in polygon: " << npoint << std::endl;
+	  continue;
+        }
+      }
+      // if(rbox_opt[0]>0||cbox_opt[0]>0)
+      //   boxWriter.close();
+      progress=1.0;
+      pfnProgress(progress,pszMessage,pProgressArg);
+      ++ilayerWrite;
+    }//for ilayer
+    sampleReaderOgr.close();
+    ogrWriter.close();
+  }
+  progress=1.0;
+  pfnProgress(progress,pszMessage,pProgressArg);
+  imgReader.close();
+}
diff --git a/src/apps/pkfillnodata b/src/apps/pkfillnodata
new file mode 100755
index 0000000..a77c37d
--- /dev/null
+++ b/src/apps/pkfillnodata
@@ -0,0 +1,228 @@
+#! /bin/bash
+
+# pkfillnodata - temporary wrapper script for .libs/pkfillnodata
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# The pkfillnodata program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command="(cd /home/kempenep/pktools/src/apps; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \ [...]
+
+# This environment variable determines our operation mode.
+if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='2.4.6'
+  notinst_deplibs=' ../../src/algorithms/libalgorithms.la ../../src/imageclasses/libimageClasses.la ../../src/fileclasses/libfileClasses.la'
+else
+  # When we are sourced in execute mode, $file and $ECHO are already set.
+  if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+    file="$0"
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+    ECHO="printf %s\\n"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string --lt-
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's ../../libtool value, followed by no.
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=$0
+  shift
+  for lt_opt
+  do
+    case "$lt_opt" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
+        test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
+        lt_dump_F=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%^.*/%%'`
+        cat "$lt_dump_D/$lt_dump_F"
+        exit 0
+      ;;
+    --lt-*)
+        $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n "$lt_option_debug"; then
+    echo "pkfillnodata:pkfillnodata:$LINENO: libtool wrapper (GNU libtool) 2.4.6 Debian-2.4.6-0.1" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    $ECHO "pkfillnodata:pkfillnodata:$LINENO: newargv[$lt_dump_args_N]: $lt_arg"
+    lt_dump_args_N=`expr $lt_dump_args_N + 1`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+
+      if test -n "$lt_option_debug"; then
+        $ECHO "pkfillnodata:pkfillnodata:$LINENO: newargv[0]: $progdir/$program" 1>&2
+        func_lt_dump_args ${1+"$@"} 1>&2
+      fi
+      exec "$progdir/$program" ${1+"$@"}
+
+      $ECHO "$0: cannot exec $program $*" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from $@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case " $* " in
+  *\ --lt-*)
+    for lt_wr_arg
+    do
+      case $lt_wr_arg in
+      --lt-*) ;;
+      *) set x "$@" "$lt_wr_arg"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core ${1+"$@"}
+}
+
+  # Parse options
+  func_parse_lt_options "$0" ${1+"$@"}
+
+  # Find the directory that this script lives in.
+  thisdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+  test "x$thisdir" = "x$file" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'`
+  while test -n "$file"; do
+    destdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+
+    # If there was a directory component, then change thisdir.
+    if test "x$destdir" != "x$file"; then
+      case "$destdir" in
+      [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
+      *) thisdir="$thisdir/$destdir" ;;
+      esac
+    fi
+
+    file=`$ECHO "$file" | /bin/sed 's%^.*/%%'`
+    file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
+  if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
+    # special case for '.'
+    if test "$thisdir" = "."; then
+      thisdir=`pwd`
+    fi
+    # remove .libs from thisdir
+    case "$thisdir" in
+    *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /bin/sed 's%[\\/][^\\/]*$%%'` ;;
+    .libs )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=`cd "$thisdir" && pwd`
+  test -n "$absdir" && thisdir="$absdir"
+
+  program=lt-'pkfillnodata'
+  progdir="$thisdir/.libs"
+
+  if test ! -f "$progdir/$program" ||
+     { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /bin/sed 1q`; \
+       test "X$file" != "X$progdir/$program"; }; then
+
+    file="$$-$program"
+
+    if test ! -d "$progdir"; then
+      mkdir "$progdir"
+    else
+      rm -f "$progdir/$file"
+    fi
+
+    # relink executable if necessary
+    if test -n "$relink_command"; then
+      if relink_command_output=`eval $relink_command 2>&1`; then :
+      else
+	$ECHO "$relink_command_output" >&2
+	rm -f "$progdir/$file"
+	exit 1
+      fi
+    fi
+
+    mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
+    { rm -f "$progdir/$program";
+      mv -f "$progdir/$file" "$progdir/$program"; }
+    rm -f "$progdir/$file"
+  fi
+
+  if test -f "$progdir/$program"; then
+    if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+      # Run the actual program with our arguments.
+      func_exec_program ${1+"$@"}
+    fi
+  else
+    # The program doesn't exist.
+    $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2
+    $ECHO "This script is just a wrapper for $program." 1>&2
+    $ECHO "See the libtool documentation for more information." 1>&2
+    exit 1
+  fi
+fi
diff --git a/src/apps/pkfilter b/src/apps/pkfilter
new file mode 100755
index 0000000..31c1cfb
--- /dev/null
+++ b/src/apps/pkfilter
@@ -0,0 +1,228 @@
+#! /bin/bash
+
+# pkfilter - temporary wrapper script for .libs/pkfilter
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# The pkfilter program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command="(cd /home/kempenep/pktools/src/apps; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \ [...]
+
+# This environment variable determines our operation mode.
+if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='2.4.6'
+  notinst_deplibs=' ../../src/algorithms/libalgorithms.la ../../src/imageclasses/libimageClasses.la ../../src/fileclasses/libfileClasses.la'
+else
+  # When we are sourced in execute mode, $file and $ECHO are already set.
+  if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+    file="$0"
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+    ECHO="printf %s\\n"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string --lt-
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's ../../libtool value, followed by no.
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=$0
+  shift
+  for lt_opt
+  do
+    case "$lt_opt" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
+        test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
+        lt_dump_F=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%^.*/%%'`
+        cat "$lt_dump_D/$lt_dump_F"
+        exit 0
+      ;;
+    --lt-*)
+        $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n "$lt_option_debug"; then
+    echo "pkfilter:pkfilter:$LINENO: libtool wrapper (GNU libtool) 2.4.6 Debian-2.4.6-0.1" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    $ECHO "pkfilter:pkfilter:$LINENO: newargv[$lt_dump_args_N]: $lt_arg"
+    lt_dump_args_N=`expr $lt_dump_args_N + 1`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+
+      if test -n "$lt_option_debug"; then
+        $ECHO "pkfilter:pkfilter:$LINENO: newargv[0]: $progdir/$program" 1>&2
+        func_lt_dump_args ${1+"$@"} 1>&2
+      fi
+      exec "$progdir/$program" ${1+"$@"}
+
+      $ECHO "$0: cannot exec $program $*" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from $@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case " $* " in
+  *\ --lt-*)
+    for lt_wr_arg
+    do
+      case $lt_wr_arg in
+      --lt-*) ;;
+      *) set x "$@" "$lt_wr_arg"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core ${1+"$@"}
+}
+
+  # Parse options
+  func_parse_lt_options "$0" ${1+"$@"}
+
+  # Find the directory that this script lives in.
+  thisdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+  test "x$thisdir" = "x$file" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'`
+  while test -n "$file"; do
+    destdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+
+    # If there was a directory component, then change thisdir.
+    if test "x$destdir" != "x$file"; then
+      case "$destdir" in
+      [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
+      *) thisdir="$thisdir/$destdir" ;;
+      esac
+    fi
+
+    file=`$ECHO "$file" | /bin/sed 's%^.*/%%'`
+    file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
+  if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
+    # special case for '.'
+    if test "$thisdir" = "."; then
+      thisdir=`pwd`
+    fi
+    # remove .libs from thisdir
+    case "$thisdir" in
+    *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /bin/sed 's%[\\/][^\\/]*$%%'` ;;
+    .libs )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=`cd "$thisdir" && pwd`
+  test -n "$absdir" && thisdir="$absdir"
+
+  program=lt-'pkfilter'
+  progdir="$thisdir/.libs"
+
+  if test ! -f "$progdir/$program" ||
+     { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /bin/sed 1q`; \
+       test "X$file" != "X$progdir/$program"; }; then
+
+    file="$$-$program"
+
+    if test ! -d "$progdir"; then
+      mkdir "$progdir"
+    else
+      rm -f "$progdir/$file"
+    fi
+
+    # relink executable if necessary
+    if test -n "$relink_command"; then
+      if relink_command_output=`eval $relink_command 2>&1`; then :
+      else
+	$ECHO "$relink_command_output" >&2
+	rm -f "$progdir/$file"
+	exit 1
+      fi
+    fi
+
+    mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
+    { rm -f "$progdir/$program";
+      mv -f "$progdir/$file" "$progdir/$program"; }
+    rm -f "$progdir/$file"
+  fi
+
+  if test -f "$progdir/$program"; then
+    if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+      # Run the actual program with our arguments.
+      func_exec_program ${1+"$@"}
+    fi
+  else
+    # The program doesn't exist.
+    $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2
+    $ECHO "This script is just a wrapper for $program." 1>&2
+    $ECHO "See the libtool documentation for more information." 1>&2
+    exit 1
+  fi
+fi
diff --git a/src/apps/pkfilter.cc b/src/apps/pkfilter.cc
index 32f305f..9134bfb 100644
--- a/src/apps/pkfilter.cc
+++ b/src/apps/pkfilter.cc
@@ -31,7 +31,6 @@ along with pktools.  If not, see <http://www.gnu.org/licenses/>.
 #include "fileclasses/FileReaderAscii.h"
 #include "imageclasses/ImgReaderGdal.h"
 #include "imageclasses/ImgWriterGdal.h"
-//test
 #include "algorithms/StatFactory.h"
 
 /******************************************************************************/
@@ -63,7 +62,7 @@ The number of output bands equals number of input bands
 
 |filter|description|
 |-------------|-------------|
-dilate|morphological dilation|
+|dilate|morphological dilation|
 |erode|morphological erosion|
 |close|morpholigical closing (dilate+erode)|
 |open|morpholigical opening (erode+dilate)|
@@ -160,7 +159,7 @@ ismin | pixel is minimum?
 ismax | pixel is maximum?
 shift | perform a pixel shift in spatial window
 scramble | scramble pixels in a spatial window
-mode (majority voting | perform a majority voring (set class option)
+mode (majority voting) | perform a majority voring (set class option)
 sobelx | horizontal edge detection
 sobely | vertical edge detection 
 sobelxy | diagonal edge detection (NE-SW)
@@ -170,6 +169,7 @@ order | rank pixels in order
 density | calculated the density
 homog | central pixel must be identical to all other pixels within window
 heterog | central pixel must be different than all other pixels within window
+sauvola | Sauvola's thresholding method
 
 Example: Sobel edge detection in horizontal direction
 
@@ -184,7 +184,7 @@ pkfilter -i lena.tif -o sobelx.tif -f sobelx -dx 5 -dy 5
 |-----|----|----|-------|-----------|
  | i      | input                | std::string |       |input image file | 
  | o      | output               | std::string |       |Output image file | 
- | f      | filter               | std::string |       |filter function (nvalid, median, var, min, max, sum, mean, dilate, erode, close, open, homog (central pixel must be identical to all other pixels within window), heterog (central pixel must be different than all other pixels within window), sobelx (horizontal edge detection), sobely (vertical edge detection), sobelxy (diagonal edge detection NE-SW),sobelyx (diagonal edge detection NW-SE), density, countid, mode (majority voting, onl [...]
+ | f      | filter               | std::string |       |filter function (nvalid, median, var, min, max, sum, mean, dilate, erode, close, open, homog (central pixel must be identical to all other pixels within window), heterog (central pixel must be different than all other pixels within window), sobelx (horizontal edge detection), sobely (vertical edge detection), sobelxy (diagonal edge detection NE-SW),sobelyx (diagonal edge detection NW-SE), density, countid, mode (majority voting), on [...]
  | srf    | srf                  | std::string |       |list of ASCII files containing spectral response functions (two columns: wavelength response) | 
  | fwhm   | fwhm                 | double |       |list of full width half to apply spectral filtering (-fwhm band1 -fwhm band2 ...) | 
  | dx     | dx                   | double | 3     |filter kernel size in x, use odd values only | 
@@ -232,7 +232,7 @@ int main(int argc,char **argv) {
   // Optionpk<std::string> tmpdir_opt("tmp", "tmp", "Temporary directory","/tmp",2);
   Optionpk<bool> disc_opt("circ", "circular", "circular disc kernel for dilation and erosion", false);
   // Optionpk<double> angle_opt("a", "angle", "angle used for directional filtering in dilation (North=0, East=90, South=180, West=270).");
-  Optionpk<std::string> method_opt("f", "filter", "filter function (nvalid, median, var, min, max, sum, mean, dilate, erode, close, open, homog (central pixel must be identical to all other pixels within window), heterog (central pixel must be different than all other pixels within window), sobelx (horizontal edge detection), sobely (vertical edge detection), sobelxy (diagonal edge detection NE-SW),sobelyx (diagonal edge detection NW-SE), density, countid, mode (majority voting, only for [...]
+  Optionpk<std::string> method_opt("f", "filter", "filter function (nvalid, median, var, min, max, sum, mean, dilate, erode, close, open, homog (central pixel must be identical to all other pixels within window), heterog (central pixel must be different than all other pixels within window), sauvola, sobelx (horizontal edge detection), sobely (vertical edge detection), sobelxy (diagonal edge detection NE-SW),sobelyx (diagonal edge detection NW-SE), density, countid, mode (majority voting) [...]
   Optionpk<std::string> resample_opt("r", "resampling-method", "Resampling method for shifting operation (near: nearest neighbour, bilinear: bi-linear interpolation).", "near");
   Optionpk<double> dimX_opt("dx", "dx", "filter kernel size in x, use odd values only", 3);
   Optionpk<double> dimY_opt("dy", "dy", "filter kernel size in y, use odd values only", 3);
@@ -389,7 +389,9 @@ int main(int argc,char **argv) {
     theInterleave+=input.getInterleave();
     option_opt.push_back(theInterleave);
   }
+
   try{
+    string errorString;
     int nband=input.nrOfBand();
 
     if(fwhm_opt.size())
@@ -400,8 +402,8 @@ int main(int argc,char **argv) {
       nband=input.nrOfBand();
     else{
       if(method_opt.empty()){
-	cerr << "Error: no filter selected, use option -f" << endl;
-	exit(1);
+        errorString="Error: no filter selected, use option -f";
+        throw(errorString);
       }
       switch(filter2d::Filter2d::getFilterType(method_opt[0])){
       case(filter2d::dilate):
@@ -432,8 +434,8 @@ int main(int argc,char **argv) {
 	  assert(threshold_opt.size());
 	}
 	else{
-	  cerr << "filter not implemented in spatial domain" << endl;
-	  exit(1);
+          errorString="filter not implemented in spatial domain";
+          throw(errorString);
 	}
 	break;
       case(filter2d::mrf)://deliberate fall through
@@ -454,10 +456,11 @@ int main(int argc,char **argv) {
       case(filter2d::density):
       case(filter2d::homog):
       case(filter2d::heterog):
+      case(filter2d::sauvola):
 	//only implemented in spatial domain
 	if(dimZ_opt.size()){
-	  cerr << "filter not implemented in spectral/temporal domain" << endl;
-	  exit(1);
+          errorString="filter not implemented in spectral/temporal domain";
+          throw(errorString);
 	}
 	break;
       // case(filter2d::percentile):
@@ -487,12 +490,8 @@ int main(int argc,char **argv) {
 	  nband=input.nrOfBand();
 	break;
       default:
-	cerr << "filter not implemented" << endl;
-	exit(1);
-	// if(dimZ_opt.size())
-	//   nband=dimZ_opt[0];
-	// else
-	//   nband=input.nrOfBand();
+	errorString="filter not implemented";
+        throw(errorString);
 	break;
       }
     }
@@ -500,8 +499,8 @@ int main(int argc,char **argv) {
     output.open(output_opt[0],(input.nrOfCol()+down_opt[0]-1)/down_opt[0],(input.nrOfRow()+down_opt[0]-1)/down_opt[0],nband,theType,imageType,option_opt);
   }
   catch(string errorstring){
-    cout << errorstring << endl;
-    exit(4);
+    cerr << errorstring << endl;
+    exit(1);
   }
   output.setProjection(input.getProjection());
   double gt[6];
@@ -558,6 +557,9 @@ int main(int argc,char **argv) {
     if(verbose_opt[0])
       std::cout<< std::endl;
   }
+  filter1d.setThresholds(threshold_opt);
+  filter2d.setThresholds(threshold_opt);
+
   if(tap_opt.size()){
     ifstream tapfile(tap_opt[0].c_str());
     assert(tapfile);
@@ -613,11 +615,11 @@ int main(int argc,char **argv) {
       if((y+1+down_opt[0]/2)%down_opt[0])
         continue;
       for(int iband=0;iband<input.nrOfBand();++iband)
-        input.readData(lineInput[iband],GDT_Float64,y,iband);
+        input.readData(lineInput[iband],y,iband);
       filter1d.applyFwhm<double>(wavelengthIn_opt,lineInput,wavelengthOut_opt,fwhm_opt, interpolationType_opt[0], lineOutput, down_opt[0], verbose_opt[0]);
       for(int iband=0;iband<output.nrOfBand();++iband){
         try{
-          output.writeData(lineOutput[iband],GDT_Float64,y/down_opt[0],iband);
+          output.writeData(lineOutput[iband],y/down_opt[0],iband);
         }
         catch(string errorstring){
           cerr << errorstring << "in band " << iband << ", line " << y << endl;
@@ -668,7 +670,7 @@ int main(int argc,char **argv) {
       if((y+1+down_opt[0]/2)%down_opt[0])
         continue;
       for(int iband=0;iband<input.nrOfBand();++iband)
-        input.readData(lineInput[iband],GDT_Float64,y,iband);
+        input.readData(lineInput[iband],y,iband);
       for(int isrf=0;isrf<srf.size();++isrf){
         vector<double> lineOutput(output.nrOfCol());
         double delta=1.0;
@@ -820,6 +822,21 @@ int main(int argc,char **argv) {
       }
       break;
     }
+    case(filter2d::sauvola):{//Implements Sauvola's thresholding method (http://fiji.sc/Auto_Local_Threshold)
+
+  //test
+      Vector2d<unsigned short> inBuffer;
+      for(int iband=0;iband<input.nrOfBand();++iband){
+        input.readDataBlock(inBuffer,0,input.nrOfCol()-1,0,input.nrOfRow()-1,iband);
+      }
+      try{
+	filter2d.doit(input,output,"sauvola",dimX_opt[0],dimY_opt[0],down_opt[0],disc_opt[0]);
+      }
+      catch(string errorstring){
+	cerr << errorstring << endl;
+      }
+      break;
+    }
     case(filter2d::shift):{//shift
       if(down_opt[0]!=1){
 	std::cerr << "Error: down option not supported for shift operator" << std::endl;
diff --git a/src/apps/pkfilterascii b/src/apps/pkfilterascii
new file mode 100755
index 0000000..456f807
--- /dev/null
+++ b/src/apps/pkfilterascii
@@ -0,0 +1,228 @@
+#! /bin/bash
+
+# pkfilterascii - temporary wrapper script for .libs/pkfilterascii
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# The pkfilterascii program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command="(cd /home/kempenep/pktools/src/apps; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \ [...]
+
+# This environment variable determines our operation mode.
+if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='2.4.6'
+  notinst_deplibs=' ../../src/algorithms/libalgorithms.la ../../src/imageclasses/libimageClasses.la ../../src/fileclasses/libfileClasses.la'
+else
+  # When we are sourced in execute mode, $file and $ECHO are already set.
+  if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+    file="$0"
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+    ECHO="printf %s\\n"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string --lt-
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's ../../libtool value, followed by no.
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=$0
+  shift
+  for lt_opt
+  do
+    case "$lt_opt" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
+        test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
+        lt_dump_F=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%^.*/%%'`
+        cat "$lt_dump_D/$lt_dump_F"
+        exit 0
+      ;;
+    --lt-*)
+        $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n "$lt_option_debug"; then
+    echo "pkfilterascii:pkfilterascii:$LINENO: libtool wrapper (GNU libtool) 2.4.6 Debian-2.4.6-0.1" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    $ECHO "pkfilterascii:pkfilterascii:$LINENO: newargv[$lt_dump_args_N]: $lt_arg"
+    lt_dump_args_N=`expr $lt_dump_args_N + 1`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+
+      if test -n "$lt_option_debug"; then
+        $ECHO "pkfilterascii:pkfilterascii:$LINENO: newargv[0]: $progdir/$program" 1>&2
+        func_lt_dump_args ${1+"$@"} 1>&2
+      fi
+      exec "$progdir/$program" ${1+"$@"}
+
+      $ECHO "$0: cannot exec $program $*" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from $@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case " $* " in
+  *\ --lt-*)
+    for lt_wr_arg
+    do
+      case $lt_wr_arg in
+      --lt-*) ;;
+      *) set x "$@" "$lt_wr_arg"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core ${1+"$@"}
+}
+
+  # Parse options
+  func_parse_lt_options "$0" ${1+"$@"}
+
+  # Find the directory that this script lives in.
+  thisdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+  test "x$thisdir" = "x$file" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'`
+  while test -n "$file"; do
+    destdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+
+    # If there was a directory component, then change thisdir.
+    if test "x$destdir" != "x$file"; then
+      case "$destdir" in
+      [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
+      *) thisdir="$thisdir/$destdir" ;;
+      esac
+    fi
+
+    file=`$ECHO "$file" | /bin/sed 's%^.*/%%'`
+    file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
+  if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
+    # special case for '.'
+    if test "$thisdir" = "."; then
+      thisdir=`pwd`
+    fi
+    # remove .libs from thisdir
+    case "$thisdir" in
+    *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /bin/sed 's%[\\/][^\\/]*$%%'` ;;
+    .libs )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=`cd "$thisdir" && pwd`
+  test -n "$absdir" && thisdir="$absdir"
+
+  program=lt-'pkfilterascii'
+  progdir="$thisdir/.libs"
+
+  if test ! -f "$progdir/$program" ||
+     { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /bin/sed 1q`; \
+       test "X$file" != "X$progdir/$program"; }; then
+
+    file="$$-$program"
+
+    if test ! -d "$progdir"; then
+      mkdir "$progdir"
+    else
+      rm -f "$progdir/$file"
+    fi
+
+    # relink executable if necessary
+    if test -n "$relink_command"; then
+      if relink_command_output=`eval $relink_command 2>&1`; then :
+      else
+	$ECHO "$relink_command_output" >&2
+	rm -f "$progdir/$file"
+	exit 1
+      fi
+    fi
+
+    mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
+    { rm -f "$progdir/$program";
+      mv -f "$progdir/$file" "$progdir/$program"; }
+    rm -f "$progdir/$file"
+  fi
+
+  if test -f "$progdir/$program"; then
+    if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+      # Run the actual program with our arguments.
+      func_exec_program ${1+"$@"}
+    fi
+  else
+    # The program doesn't exist.
+    $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2
+    $ECHO "This script is just a wrapper for $program." 1>&2
+    $ECHO "See the libtool documentation for more information." 1>&2
+    exit 1
+  fi
+fi
diff --git a/src/apps/pkfilterdem b/src/apps/pkfilterdem
new file mode 100755
index 0000000..bddbcbf
--- /dev/null
+++ b/src/apps/pkfilterdem
@@ -0,0 +1,228 @@
+#! /bin/bash
+
+# pkfilterdem - temporary wrapper script for .libs/pkfilterdem
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# The pkfilterdem program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command="(cd /home/kempenep/pktools/src/apps; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \ [...]
+
+# This environment variable determines our operation mode.
+if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='2.4.6'
+  notinst_deplibs=' ../../src/algorithms/libalgorithms.la ../../src/imageclasses/libimageClasses.la ../../src/fileclasses/libfileClasses.la'
+else
+  # When we are sourced in execute mode, $file and $ECHO are already set.
+  if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+    file="$0"
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+    ECHO="printf %s\\n"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string --lt-
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's ../../libtool value, followed by no.
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=$0
+  shift
+  for lt_opt
+  do
+    case "$lt_opt" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
+        test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
+        lt_dump_F=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%^.*/%%'`
+        cat "$lt_dump_D/$lt_dump_F"
+        exit 0
+      ;;
+    --lt-*)
+        $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n "$lt_option_debug"; then
+    echo "pkfilterdem:pkfilterdem:$LINENO: libtool wrapper (GNU libtool) 2.4.6 Debian-2.4.6-0.1" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    $ECHO "pkfilterdem:pkfilterdem:$LINENO: newargv[$lt_dump_args_N]: $lt_arg"
+    lt_dump_args_N=`expr $lt_dump_args_N + 1`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+
+      if test -n "$lt_option_debug"; then
+        $ECHO "pkfilterdem:pkfilterdem:$LINENO: newargv[0]: $progdir/$program" 1>&2
+        func_lt_dump_args ${1+"$@"} 1>&2
+      fi
+      exec "$progdir/$program" ${1+"$@"}
+
+      $ECHO "$0: cannot exec $program $*" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from $@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case " $* " in
+  *\ --lt-*)
+    for lt_wr_arg
+    do
+      case $lt_wr_arg in
+      --lt-*) ;;
+      *) set x "$@" "$lt_wr_arg"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core ${1+"$@"}
+}
+
+  # Parse options
+  func_parse_lt_options "$0" ${1+"$@"}
+
+  # Find the directory that this script lives in.
+  thisdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+  test "x$thisdir" = "x$file" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'`
+  while test -n "$file"; do
+    destdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+
+    # If there was a directory component, then change thisdir.
+    if test "x$destdir" != "x$file"; then
+      case "$destdir" in
+      [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
+      *) thisdir="$thisdir/$destdir" ;;
+      esac
+    fi
+
+    file=`$ECHO "$file" | /bin/sed 's%^.*/%%'`
+    file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
+  if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
+    # special case for '.'
+    if test "$thisdir" = "."; then
+      thisdir=`pwd`
+    fi
+    # remove .libs from thisdir
+    case "$thisdir" in
+    *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /bin/sed 's%[\\/][^\\/]*$%%'` ;;
+    .libs )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=`cd "$thisdir" && pwd`
+  test -n "$absdir" && thisdir="$absdir"
+
+  program=lt-'pkfilterdem'
+  progdir="$thisdir/.libs"
+
+  if test ! -f "$progdir/$program" ||
+     { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /bin/sed 1q`; \
+       test "X$file" != "X$progdir/$program"; }; then
+
+    file="$$-$program"
+
+    if test ! -d "$progdir"; then
+      mkdir "$progdir"
+    else
+      rm -f "$progdir/$file"
+    fi
+
+    # relink executable if necessary
+    if test -n "$relink_command"; then
+      if relink_command_output=`eval $relink_command 2>&1`; then :
+      else
+	$ECHO "$relink_command_output" >&2
+	rm -f "$progdir/$file"
+	exit 1
+      fi
+    fi
+
+    mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
+    { rm -f "$progdir/$program";
+      mv -f "$progdir/$file" "$progdir/$program"; }
+    rm -f "$progdir/$file"
+  fi
+
+  if test -f "$progdir/$program"; then
+    if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+      # Run the actual program with our arguments.
+      func_exec_program ${1+"$@"}
+    fi
+  else
+    # The program doesn't exist.
+    $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2
+    $ECHO "This script is just a wrapper for $program." 1>&2
+    $ECHO "See the libtool documentation for more information." 1>&2
+    exit 1
+  fi
+fi
diff --git a/src/apps/pkfilterdem.cc b/src/apps/pkfilterdem.cc
index b84e370..be792ab 100644
--- a/src/apps/pkfilterdem.cc
+++ b/src/apps/pkfilterdem.cc
@@ -188,7 +188,7 @@ int main(int argc,char **argv) {
   Vector2d<double> inputData(input.nrOfRow(),input.nrOfCol());
   Vector2d<double> outputData(outputWriter.nrOfRow(),outputWriter.nrOfCol());
   Vector2d<double> tmpData(outputWriter.nrOfRow(),outputWriter.nrOfCol());
-  input.readDataBlock(inputData,GDT_Float64,0,inputData.nCols()-1,0,inputData.nRows()-1);
+  input.readDataBlock(inputData,0,inputData.nCols()-1,0,inputData.nRows()-1);
 
   //apply post filter
   std::cout << "Applying post processing filter: " << postFilter_opt[0] << std::endl;
diff --git a/src/apps/pkfsann b/src/apps/pkfsann
new file mode 100755
index 0000000..f66be67
--- /dev/null
+++ b/src/apps/pkfsann
@@ -0,0 +1,228 @@
+#! /bin/bash
+
+# pkfsann - temporary wrapper script for .libs/pkfsann
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# The pkfsann program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command="(cd /home/kempenep/pktools/src/apps; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \ [...]
+
+# This environment variable determines our operation mode.
+if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='2.4.6'
+  notinst_deplibs=' ../../src/imageclasses/libimageClasses.la ../../src/fileclasses/libfileClasses.la ../../src/algorithms/libalgorithms.la'
+else
+  # When we are sourced in execute mode, $file and $ECHO are already set.
+  if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+    file="$0"
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+    ECHO="printf %s\\n"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string --lt-
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's ../../libtool value, followed by no.
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=$0
+  shift
+  for lt_opt
+  do
+    case "$lt_opt" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
+        test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
+        lt_dump_F=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%^.*/%%'`
+        cat "$lt_dump_D/$lt_dump_F"
+        exit 0
+      ;;
+    --lt-*)
+        $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n "$lt_option_debug"; then
+    echo "pkfsann:pkfsann:$LINENO: libtool wrapper (GNU libtool) 2.4.6 Debian-2.4.6-0.1" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    $ECHO "pkfsann:pkfsann:$LINENO: newargv[$lt_dump_args_N]: $lt_arg"
+    lt_dump_args_N=`expr $lt_dump_args_N + 1`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+
+      if test -n "$lt_option_debug"; then
+        $ECHO "pkfsann:pkfsann:$LINENO: newargv[0]: $progdir/$program" 1>&2
+        func_lt_dump_args ${1+"$@"} 1>&2
+      fi
+      exec "$progdir/$program" ${1+"$@"}
+
+      $ECHO "$0: cannot exec $program $*" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from $@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case " $* " in
+  *\ --lt-*)
+    for lt_wr_arg
+    do
+      case $lt_wr_arg in
+      --lt-*) ;;
+      *) set x "$@" "$lt_wr_arg"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core ${1+"$@"}
+}
+
+  # Parse options
+  func_parse_lt_options "$0" ${1+"$@"}
+
+  # Find the directory that this script lives in.
+  thisdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+  test "x$thisdir" = "x$file" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'`
+  while test -n "$file"; do
+    destdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+
+    # If there was a directory component, then change thisdir.
+    if test "x$destdir" != "x$file"; then
+      case "$destdir" in
+      [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
+      *) thisdir="$thisdir/$destdir" ;;
+      esac
+    fi
+
+    file=`$ECHO "$file" | /bin/sed 's%^.*/%%'`
+    file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
+  if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
+    # special case for '.'
+    if test "$thisdir" = "."; then
+      thisdir=`pwd`
+    fi
+    # remove .libs from thisdir
+    case "$thisdir" in
+    *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /bin/sed 's%[\\/][^\\/]*$%%'` ;;
+    .libs )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=`cd "$thisdir" && pwd`
+  test -n "$absdir" && thisdir="$absdir"
+
+  program=lt-'pkfsann'
+  progdir="$thisdir/.libs"
+
+  if test ! -f "$progdir/$program" ||
+     { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /bin/sed 1q`; \
+       test "X$file" != "X$progdir/$program"; }; then
+
+    file="$$-$program"
+
+    if test ! -d "$progdir"; then
+      mkdir "$progdir"
+    else
+      rm -f "$progdir/$file"
+    fi
+
+    # relink executable if necessary
+    if test -n "$relink_command"; then
+      if relink_command_output=`eval $relink_command 2>&1`; then :
+      else
+	$ECHO "$relink_command_output" >&2
+	rm -f "$progdir/$file"
+	exit 1
+      fi
+    fi
+
+    mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
+    { rm -f "$progdir/$program";
+      mv -f "$progdir/$file" "$progdir/$program"; }
+    rm -f "$progdir/$file"
+  fi
+
+  if test -f "$progdir/$program"; then
+    if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+      # Run the actual program with our arguments.
+      func_exec_program ${1+"$@"}
+    fi
+  else
+    # The program doesn't exist.
+    $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2
+    $ECHO "This script is just a wrapper for $program." 1>&2
+    $ECHO "See the libtool documentation for more information." 1>&2
+    exit 1
+  fi
+fi
diff --git a/src/apps/pkfssvm b/src/apps/pkfssvm
new file mode 100755
index 0000000..b236cc3
--- /dev/null
+++ b/src/apps/pkfssvm
@@ -0,0 +1,228 @@
+#! /bin/bash
+
+# pkfssvm - temporary wrapper script for .libs/pkfssvm
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# The pkfssvm program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command="(cd /home/kempenep/pktools/src/apps; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \ [...]
+
+# This environment variable determines our operation mode.
+if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='2.4.6'
+  notinst_deplibs=' ../../src/imageclasses/libimageClasses.la ../../src/fileclasses/libfileClasses.la ../../src/algorithms/libalgorithms.la'
+else
+  # When we are sourced in execute mode, $file and $ECHO are already set.
+  if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+    file="$0"
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+    ECHO="printf %s\\n"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string --lt-
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's ../../libtool value, followed by no.
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=$0
+  shift
+  for lt_opt
+  do
+    case "$lt_opt" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
+        test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
+        lt_dump_F=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%^.*/%%'`
+        cat "$lt_dump_D/$lt_dump_F"
+        exit 0
+      ;;
+    --lt-*)
+        $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n "$lt_option_debug"; then
+    echo "pkfssvm:pkfssvm:$LINENO: libtool wrapper (GNU libtool) 2.4.6 Debian-2.4.6-0.1" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    $ECHO "pkfssvm:pkfssvm:$LINENO: newargv[$lt_dump_args_N]: $lt_arg"
+    lt_dump_args_N=`expr $lt_dump_args_N + 1`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+
+      if test -n "$lt_option_debug"; then
+        $ECHO "pkfssvm:pkfssvm:$LINENO: newargv[0]: $progdir/$program" 1>&2
+        func_lt_dump_args ${1+"$@"} 1>&2
+      fi
+      exec "$progdir/$program" ${1+"$@"}
+
+      $ECHO "$0: cannot exec $program $*" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from $@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case " $* " in
+  *\ --lt-*)
+    for lt_wr_arg
+    do
+      case $lt_wr_arg in
+      --lt-*) ;;
+      *) set x "$@" "$lt_wr_arg"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core ${1+"$@"}
+}
+
+  # Parse options
+  func_parse_lt_options "$0" ${1+"$@"}
+
+  # Find the directory that this script lives in.
+  thisdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+  test "x$thisdir" = "x$file" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'`
+  while test -n "$file"; do
+    destdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+
+    # If there was a directory component, then change thisdir.
+    if test "x$destdir" != "x$file"; then
+      case "$destdir" in
+      [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
+      *) thisdir="$thisdir/$destdir" ;;
+      esac
+    fi
+
+    file=`$ECHO "$file" | /bin/sed 's%^.*/%%'`
+    file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
+  if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
+    # special case for '.'
+    if test "$thisdir" = "."; then
+      thisdir=`pwd`
+    fi
+    # remove .libs from thisdir
+    case "$thisdir" in
+    *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /bin/sed 's%[\\/][^\\/]*$%%'` ;;
+    .libs )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=`cd "$thisdir" && pwd`
+  test -n "$absdir" && thisdir="$absdir"
+
+  program=lt-'pkfssvm'
+  progdir="$thisdir/.libs"
+
+  if test ! -f "$progdir/$program" ||
+     { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /bin/sed 1q`; \
+       test "X$file" != "X$progdir/$program"; }; then
+
+    file="$$-$program"
+
+    if test ! -d "$progdir"; then
+      mkdir "$progdir"
+    else
+      rm -f "$progdir/$file"
+    fi
+
+    # relink executable if necessary
+    if test -n "$relink_command"; then
+      if relink_command_output=`eval $relink_command 2>&1`; then :
+      else
+	$ECHO "$relink_command_output" >&2
+	rm -f "$progdir/$file"
+	exit 1
+      fi
+    fi
+
+    mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
+    { rm -f "$progdir/$program";
+      mv -f "$progdir/$file" "$progdir/$program"; }
+    rm -f "$progdir/$file"
+  fi
+
+  if test -f "$progdir/$program"; then
+    if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+      # Run the actual program with our arguments.
+      func_exec_program ${1+"$@"}
+    fi
+  else
+    # The program doesn't exist.
+    $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2
+    $ECHO "This script is just a wrapper for $program." 1>&2
+    $ECHO "See the libtool documentation for more information." 1>&2
+    exit 1
+  fi
+fi
diff --git a/src/apps/pkgetmask b/src/apps/pkgetmask
new file mode 100755
index 0000000..6da8b5e
--- /dev/null
+++ b/src/apps/pkgetmask
@@ -0,0 +1,228 @@
+#! /bin/bash
+
+# pkgetmask - temporary wrapper script for .libs/pkgetmask
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# The pkgetmask program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command="(cd /home/kempenep/pktools/src/apps; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \ [...]
+
+# This environment variable determines our operation mode.
+if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='2.4.6'
+  notinst_deplibs=' ../../src/algorithms/libalgorithms.la ../../src/imageclasses/libimageClasses.la ../../src/fileclasses/libfileClasses.la'
+else
+  # When we are sourced in execute mode, $file and $ECHO are already set.
+  if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+    file="$0"
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+    ECHO="printf %s\\n"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string --lt-
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's ../../libtool value, followed by no.
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=$0
+  shift
+  for lt_opt
+  do
+    case "$lt_opt" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
+        test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
+        lt_dump_F=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%^.*/%%'`
+        cat "$lt_dump_D/$lt_dump_F"
+        exit 0
+      ;;
+    --lt-*)
+        $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n "$lt_option_debug"; then
+    echo "pkgetmask:pkgetmask:$LINENO: libtool wrapper (GNU libtool) 2.4.6 Debian-2.4.6-0.1" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    $ECHO "pkgetmask:pkgetmask:$LINENO: newargv[$lt_dump_args_N]: $lt_arg"
+    lt_dump_args_N=`expr $lt_dump_args_N + 1`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+
+      if test -n "$lt_option_debug"; then
+        $ECHO "pkgetmask:pkgetmask:$LINENO: newargv[0]: $progdir/$program" 1>&2
+        func_lt_dump_args ${1+"$@"} 1>&2
+      fi
+      exec "$progdir/$program" ${1+"$@"}
+
+      $ECHO "$0: cannot exec $program $*" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from $@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case " $* " in
+  *\ --lt-*)
+    for lt_wr_arg
+    do
+      case $lt_wr_arg in
+      --lt-*) ;;
+      *) set x "$@" "$lt_wr_arg"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core ${1+"$@"}
+}
+
+  # Parse options
+  func_parse_lt_options "$0" ${1+"$@"}
+
+  # Find the directory that this script lives in.
+  thisdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+  test "x$thisdir" = "x$file" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'`
+  while test -n "$file"; do
+    destdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+
+    # If there was a directory component, then change thisdir.
+    if test "x$destdir" != "x$file"; then
+      case "$destdir" in
+      [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
+      *) thisdir="$thisdir/$destdir" ;;
+      esac
+    fi
+
+    file=`$ECHO "$file" | /bin/sed 's%^.*/%%'`
+    file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
+  if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
+    # special case for '.'
+    if test "$thisdir" = "."; then
+      thisdir=`pwd`
+    fi
+    # remove .libs from thisdir
+    case "$thisdir" in
+    *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /bin/sed 's%[\\/][^\\/]*$%%'` ;;
+    .libs )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=`cd "$thisdir" && pwd`
+  test -n "$absdir" && thisdir="$absdir"
+
+  program=lt-'pkgetmask'
+  progdir="$thisdir/.libs"
+
+  if test ! -f "$progdir/$program" ||
+     { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /bin/sed 1q`; \
+       test "X$file" != "X$progdir/$program"; }; then
+
+    file="$$-$program"
+
+    if test ! -d "$progdir"; then
+      mkdir "$progdir"
+    else
+      rm -f "$progdir/$file"
+    fi
+
+    # relink executable if necessary
+    if test -n "$relink_command"; then
+      if relink_command_output=`eval $relink_command 2>&1`; then :
+      else
+	$ECHO "$relink_command_output" >&2
+	rm -f "$progdir/$file"
+	exit 1
+      fi
+    fi
+
+    mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
+    { rm -f "$progdir/$program";
+      mv -f "$progdir/$file" "$progdir/$program"; }
+    rm -f "$progdir/$file"
+  fi
+
+  if test -f "$progdir/$program"; then
+    if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+      # Run the actual program with our arguments.
+      func_exec_program ${1+"$@"}
+    fi
+  else
+    # The program doesn't exist.
+    $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2
+    $ECHO "This script is just a wrapper for $program." 1>&2
+    $ECHO "See the libtool documentation for more information." 1>&2
+    exit 1
+  fi
+fi
diff --git a/src/apps/pkgetmask.cc b/src/apps/pkgetmask.cc
index 4122d62..5c617f5 100644
--- a/src/apps/pkgetmask.cc
+++ b/src/apps/pkgetmask.cc
@@ -215,7 +215,7 @@ int main(int argc,char **argv) {
   vector<char> writeBuffer(imgWriter.nrOfCol());
   for(int irow=0;irow<imgReader.nrOfRow();++irow){
     for(int iband=0;iband<band_opt.size();++iband)
-      imgReader.readData(lineBuffer[iband],GDT_Float32,irow,band_opt[iband]);
+      imgReader.readData(lineBuffer[iband],irow,band_opt[iband]);
     for(int icol=0;icol<imgReader.nrOfCol();++icol){
       bool valid=(operator_opt[0]=="OR")?false:true;
       unsigned short validValue=data_opt[0];
@@ -261,7 +261,7 @@ int main(int argc,char **argv) {
       else
 	writeBuffer[icol]=nodata_opt[0];
     }
-    imgWriter.writeData(writeBuffer,GDT_Byte,irow);
+    imgWriter.writeData(writeBuffer,irow);
     progress=(1.0+irow)/imgWriter.nrOfRow();
     pfnProgress(progress,pszMessage,pProgressArg);
   }
diff --git a/src/apps/pkinfo b/src/apps/pkinfo
new file mode 100755
index 0000000..635e1c1
--- /dev/null
+++ b/src/apps/pkinfo
@@ -0,0 +1,228 @@
+#! /bin/bash
+
+# pkinfo - temporary wrapper script for .libs/pkinfo
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# The pkinfo program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command="(cd /home/kempenep/pktools/src/apps; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \ [...]
+
+# This environment variable determines our operation mode.
+if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='2.4.6'
+  notinst_deplibs=' ../../src/algorithms/libalgorithms.la ../../src/imageclasses/libimageClasses.la ../../src/fileclasses/libfileClasses.la'
+else
+  # When we are sourced in execute mode, $file and $ECHO are already set.
+  if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+    file="$0"
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+    ECHO="printf %s\\n"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string --lt-
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's ../../libtool value, followed by no.
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=$0
+  shift
+  for lt_opt
+  do
+    case "$lt_opt" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
+        test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
+        lt_dump_F=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%^.*/%%'`
+        cat "$lt_dump_D/$lt_dump_F"
+        exit 0
+      ;;
+    --lt-*)
+        $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n "$lt_option_debug"; then
+    echo "pkinfo:pkinfo:$LINENO: libtool wrapper (GNU libtool) 2.4.6 Debian-2.4.6-0.1" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    $ECHO "pkinfo:pkinfo:$LINENO: newargv[$lt_dump_args_N]: $lt_arg"
+    lt_dump_args_N=`expr $lt_dump_args_N + 1`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+
+      if test -n "$lt_option_debug"; then
+        $ECHO "pkinfo:pkinfo:$LINENO: newargv[0]: $progdir/$program" 1>&2
+        func_lt_dump_args ${1+"$@"} 1>&2
+      fi
+      exec "$progdir/$program" ${1+"$@"}
+
+      $ECHO "$0: cannot exec $program $*" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from $@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case " $* " in
+  *\ --lt-*)
+    for lt_wr_arg
+    do
+      case $lt_wr_arg in
+      --lt-*) ;;
+      *) set x "$@" "$lt_wr_arg"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core ${1+"$@"}
+}
+
+  # Parse options
+  func_parse_lt_options "$0" ${1+"$@"}
+
+  # Find the directory that this script lives in.
+  thisdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+  test "x$thisdir" = "x$file" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'`
+  while test -n "$file"; do
+    destdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+
+    # If there was a directory component, then change thisdir.
+    if test "x$destdir" != "x$file"; then
+      case "$destdir" in
+      [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
+      *) thisdir="$thisdir/$destdir" ;;
+      esac
+    fi
+
+    file=`$ECHO "$file" | /bin/sed 's%^.*/%%'`
+    file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
+  if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
+    # special case for '.'
+    if test "$thisdir" = "."; then
+      thisdir=`pwd`
+    fi
+    # remove .libs from thisdir
+    case "$thisdir" in
+    *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /bin/sed 's%[\\/][^\\/]*$%%'` ;;
+    .libs )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=`cd "$thisdir" && pwd`
+  test -n "$absdir" && thisdir="$absdir"
+
+  program=lt-'pkinfo'
+  progdir="$thisdir/.libs"
+
+  if test ! -f "$progdir/$program" ||
+     { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /bin/sed 1q`; \
+       test "X$file" != "X$progdir/$program"; }; then
+
+    file="$$-$program"
+
+    if test ! -d "$progdir"; then
+      mkdir "$progdir"
+    else
+      rm -f "$progdir/$file"
+    fi
+
+    # relink executable if necessary
+    if test -n "$relink_command"; then
+      if relink_command_output=`eval $relink_command 2>&1`; then :
+      else
+	$ECHO "$relink_command_output" >&2
+	rm -f "$progdir/$file"
+	exit 1
+      fi
+    fi
+
+    mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
+    { rm -f "$progdir/$program";
+      mv -f "$progdir/$file" "$progdir/$program"; }
+    rm -f "$progdir/$file"
+  fi
+
+  if test -f "$progdir/$program"; then
+    if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+      # Run the actual program with our arguments.
+      func_exec_program ${1+"$@"}
+    fi
+  else
+    # The program doesn't exist.
+    $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2
+    $ECHO "This script is just a wrapper for $program." 1>&2
+    $ECHO "See the libtool documentation for more information." 1>&2
+    exit 1
+  fi
+fi
diff --git a/src/apps/pkinfo.cc b/src/apps/pkinfo.cc
index 7a87141..e24d759 100644
--- a/src/apps/pkinfo.cc
+++ b/src/apps/pkinfo.cc
@@ -415,7 +415,7 @@ int main(int argc, char *argv[])
 	    }
             assert(theRow>=0);
             assert(theRow<imgReader.nrOfRow());
-            imgReader.readData(rowBuffer,GDT_Float32, static_cast<int>(theRow), theBand);
+            imgReader.readData(rowBuffer, static_cast<int>(theRow), theBand);
 	    assert(theCol<rowBuffer.size());
 	    std::cout << rowBuffer[static_cast<int>(theCol)] << " ";
 	  }
diff --git a/src/apps/pkkalman b/src/apps/pkkalman
new file mode 100755
index 0000000..c9d45a7
--- /dev/null
+++ b/src/apps/pkkalman
@@ -0,0 +1,228 @@
+#! /bin/bash
+
+# pkkalman - temporary wrapper script for .libs/pkkalman
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# The pkkalman program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command="(cd /home/kempenep/pktools/src/apps; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \ [...]
+
+# This environment variable determines our operation mode.
+if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='2.4.6'
+  notinst_deplibs=' ../../src/imageclasses/libimageClasses.la ../../src/fileclasses/libfileClasses.la ../../src/algorithms/libalgorithms.la'
+else
+  # When we are sourced in execute mode, $file and $ECHO are already set.
+  if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+    file="$0"
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+    ECHO="printf %s\\n"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string --lt-
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's ../../libtool value, followed by no.
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=$0
+  shift
+  for lt_opt
+  do
+    case "$lt_opt" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
+        test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
+        lt_dump_F=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%^.*/%%'`
+        cat "$lt_dump_D/$lt_dump_F"
+        exit 0
+      ;;
+    --lt-*)
+        $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n "$lt_option_debug"; then
+    echo "pkkalman:pkkalman:$LINENO: libtool wrapper (GNU libtool) 2.4.6 Debian-2.4.6-0.1" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    $ECHO "pkkalman:pkkalman:$LINENO: newargv[$lt_dump_args_N]: $lt_arg"
+    lt_dump_args_N=`expr $lt_dump_args_N + 1`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+
+      if test -n "$lt_option_debug"; then
+        $ECHO "pkkalman:pkkalman:$LINENO: newargv[0]: $progdir/$program" 1>&2
+        func_lt_dump_args ${1+"$@"} 1>&2
+      fi
+      exec "$progdir/$program" ${1+"$@"}
+
+      $ECHO "$0: cannot exec $program $*" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from $@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case " $* " in
+  *\ --lt-*)
+    for lt_wr_arg
+    do
+      case $lt_wr_arg in
+      --lt-*) ;;
+      *) set x "$@" "$lt_wr_arg"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core ${1+"$@"}
+}
+
+  # Parse options
+  func_parse_lt_options "$0" ${1+"$@"}
+
+  # Find the directory that this script lives in.
+  thisdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+  test "x$thisdir" = "x$file" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'`
+  while test -n "$file"; do
+    destdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+
+    # If there was a directory component, then change thisdir.
+    if test "x$destdir" != "x$file"; then
+      case "$destdir" in
+      [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
+      *) thisdir="$thisdir/$destdir" ;;
+      esac
+    fi
+
+    file=`$ECHO "$file" | /bin/sed 's%^.*/%%'`
+    file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
+  if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
+    # special case for '.'
+    if test "$thisdir" = "."; then
+      thisdir=`pwd`
+    fi
+    # remove .libs from thisdir
+    case "$thisdir" in
+    *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /bin/sed 's%[\\/][^\\/]*$%%'` ;;
+    .libs )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=`cd "$thisdir" && pwd`
+  test -n "$absdir" && thisdir="$absdir"
+
+  program=lt-'pkkalman'
+  progdir="$thisdir/.libs"
+
+  if test ! -f "$progdir/$program" ||
+     { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /bin/sed 1q`; \
+       test "X$file" != "X$progdir/$program"; }; then
+
+    file="$$-$program"
+
+    if test ! -d "$progdir"; then
+      mkdir "$progdir"
+    else
+      rm -f "$progdir/$file"
+    fi
+
+    # relink executable if necessary
+    if test -n "$relink_command"; then
+      if relink_command_output=`eval $relink_command 2>&1`; then :
+      else
+	$ECHO "$relink_command_output" >&2
+	rm -f "$progdir/$file"
+	exit 1
+      fi
+    fi
+
+    mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
+    { rm -f "$progdir/$program";
+      mv -f "$progdir/$file" "$progdir/$program"; }
+    rm -f "$progdir/$file"
+  fi
+
+  if test -f "$progdir/$program"; then
+    if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+      # Run the actual program with our arguments.
+      func_exec_program ${1+"$@"}
+    fi
+  else
+    # The program doesn't exist.
+    $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2
+    $ECHO "This script is just a wrapper for $program." 1>&2
+    $ECHO "See the libtool documentation for more information." 1>&2
+    exit 1
+  fi
+fi
diff --git a/src/apps/pkkalman.cc b/src/apps/pkkalman.cc
index ad03fbf..344ffe2 100644
--- a/src/apps/pkkalman.cc
+++ b/src/apps/pkkalman.cc
@@ -401,7 +401,6 @@ int main(int argc,char **argv) {
       if(verbose_opt[0])
 	cout << "Opening image " << outputfw_opt[0] << " for writing " << endl << flush;
     
-      // imgWriterEst.open(theOutput,ncol,nrow,2,theType,imageType,option_opt);
       ImgWriterGdal imgWriterEst;
       ImgWriterGdal imgWriterUncert;
       imgWriterEst.open(outputfw_opt[0],ncol,nrow,nmodel,theType,imageType,option_opt);
@@ -471,13 +470,12 @@ int main(int argc,char **argv) {
 		cerr << "Error: geo coordinates (" << geox << "," << geoy << ") not covered in model image " << imgReaderModel1.getFileName() << endl;
 		assert(modRow>=0&&modRow<imgReaderModel1.nrOfRow());
 	      }
-	      // imgReaderModel1.readData(estReadBuffer,GDT_Float64,modRow,0,theResample);
 
 	      int readModelBand=(model_opt.size()==nmodel)? 0:0;
 	      int readModelMaskBand=(modelmask_opt.size()==nmodel)? mskband_opt[0]:0;
-	      imgReaderModel1.readData(estReadBuffer,GDT_Float64,modRow,readModelBand,theResample);
+	      imgReaderModel1.readData(estReadBuffer,modRow,readModelBand,theResample);
 	      if(modelmask_opt.size())
-		imgReaderModel1Mask.readData(lineModelMask,GDT_Float64,modRow,readModelMaskBand,theResample);
+		imgReaderModel1Mask.readData(lineModelMask,modRow,readModelMaskBand,theResample);
 	      for(int jcol=0;jcol<ncol;jcol+=down_opt[0]){
 		for(int icol=jcol;icol<jcol+down_opt[0]&&icol<ncol;++icol){
 		  imgWriterEst.image2geo(icol,irow,geox,geoy);
@@ -522,11 +520,11 @@ int main(int argc,char **argv) {
 		  gainWriteBuffer[icol]=0;
 		}
 	      }
-	      imgWriterEst.writeData(estWriteBuffer,GDT_Float64,irow,0);
-	      imgWriterUncert.writeData(uncertWriteBuffer,GDT_Float64,irow,0);
+	      imgWriterEst.writeData(estWriteBuffer,irow,0);
+	      imgWriterUncert.writeData(uncertWriteBuffer,irow,0);
 	      //test
 	      if(gain_opt.size())
-		imgWriterGain.writeData(gainWriteBuffer,GDT_Float64,irow,0);
+		imgWriterGain.writeData(gainWriteBuffer,irow,0);
 	    }
 	  }
 	  catch(string errorString){
@@ -571,25 +569,25 @@ int main(int argc,char **argv) {
 	int readModelMaskBand=(modelmask_opt.size()==nmodel)? mskband_opt[0]:0;
 	for(int iline=-down_opt[0]/2;iline<down_opt[0]/2+1;++iline){
 	  if(iline<0)//replicate line 0
-	    imgReaderObs.readData(obsLineVector[iline+down_opt[0]/2],GDT_Float64,0,readObsBand);
+	    imgReaderObs.readData(obsLineVector[iline+down_opt[0]/2],0,readObsBand);
 	  else
-	    imgReaderObs.readData(obsLineVector[iline+down_opt[0]/2],GDT_Float64,iline,readObsBand);
+	    imgReaderObs.readData(obsLineVector[iline+down_opt[0]/2],iline,readObsBand);
 	}
 	for(int jrow=0;jrow<nrow;jrow+=down_opt[0]){
 	  for(int irow=jrow;irow<jrow+down_opt[0]&&irow<nrow;++irow){
 	    imgWriterEst.image2geo(0,irow,geox,geoy);
 	    imgReaderModel1.geo2image(geox,geoy,modCol,modRow);
 	    assert(modRow>=0&&modRow<imgReaderModel1.nrOfRow());
-	    imgReaderModel1.readData(estReadBuffer,GDT_Float64,modRow,readModelBand,theResample);
+	    imgReaderModel1.readData(estReadBuffer,modRow,readModelBand,theResample);
 	    if(modelmask_opt.size())
-	      imgReaderModel1Mask.readData(modelMaskLineBuffer,GDT_Float64,modRow,readModelMaskBand);
+	      imgReaderModel1Mask.readData(modelMaskLineBuffer,modRow,readModelMaskBand);
 	    int maxRow=(irow+down_opt[0]/2<imgReaderObs.nrOfRow()) ? irow+down_opt[0]/2 : imgReaderObs.nrOfRow()-1;
 	    obsLineVector.erase(obsLineVector.begin());
-	    imgReaderObs.readData(obsLineBuffer,GDT_Float64,maxRow,readObsBand);
+	    imgReaderObs.readData(obsLineBuffer,maxRow,readObsBand);
 	    obsLineVector.push_back(obsLineBuffer);
 
 	    if(observationmask_opt.size())
-	      imgReaderObsMask.readData(obsMaskLineBuffer,GDT_Float64,irow,readObsMaskBand);
+	      imgReaderObsMask.readData(obsMaskLineBuffer,irow,readObsMaskBand);
 
 	    for(int jcol=0;jcol<ncol;jcol+=down_opt[0]){
 	      for(int icol=jcol;icol<jcol+down_opt[0]&&icol<ncol;++icol){
@@ -691,11 +689,11 @@ int main(int argc,char **argv) {
 		}
 	      }
 	    }
-	    imgWriterEst.writeData(estWriteBuffer,GDT_Float64,irow,0);
-	    imgWriterUncert.writeData(uncertWriteBuffer,GDT_Float64,irow,0);
+	    imgWriterEst.writeData(estWriteBuffer,irow,0);
+	    imgWriterUncert.writeData(uncertWriteBuffer,irow,0);
 	    //test
 	    if(gain_opt.size())
-	      imgWriterGain.writeData(gainWriteBuffer,GDT_Float64,irow,0);
+	      imgWriterGain.writeData(gainWriteBuffer,irow,0);
 	  }
 	}
 	if(observation_opt.size()==nobs)
@@ -796,9 +794,9 @@ int main(int argc,char **argv) {
 	  assert(down_opt[0]%2);//window size must be odd 
 	  for(int iline=-down_opt[0]/2;iline<down_opt[0]/2+1;++iline){
 	    if(iline<0)//replicate line 0
-	      imgReaderObs.readData(obsLineVector[iline+down_opt[0]/2],GDT_Float64,0,readObsBand);
+	      imgReaderObs.readData(obsLineVector[iline+down_opt[0]/2],0,readObsBand);
 	    else
-	      imgReaderObs.readData(obsLineVector[iline+down_opt[0]/2],GDT_Float64,iline,readObsBand);
+	      imgReaderObs.readData(obsLineVector[iline+down_opt[0]/2],iline,readObsBand);
 	  }
 	}
 	//initialize estLineVector
@@ -808,53 +806,53 @@ int main(int argc,char **argv) {
 
 	for(int iline=-down_opt[0]/2;iline<down_opt[0]/2+1;++iline){
 	  if(iline<0)//replicate line 0
-	    imgUpdaterEst.readData(estLineVector[iline+down_opt[0]/2],GDT_Float64,0,modindex-1);
+	    imgUpdaterEst.readData(estLineVector[iline+down_opt[0]/2],0,modindex-1);
 	  else
-	    imgUpdaterEst.readData(estLineVector[iline+down_opt[0]/2],GDT_Float64,iline,modindex-1);
+	    imgUpdaterEst.readData(estLineVector[iline+down_opt[0]/2],iline,modindex-1);
 	}
 	statfactory::StatFactory statobs;
 	statobs.setNoDataValues(obsnodata_opt);
 	for(int jrow=0;jrow<nrow;jrow+=down_opt[0]){
 	  //todo: read entire window for uncertReadBuffer...
 	  for(int irow=jrow;irow<jrow+down_opt[0]&&irow<nrow;++irow){
-	    imgUpdaterUncert.readData(uncertReadBuffer,GDT_Float64,irow,modindex-1);
+	    imgUpdaterUncert.readData(uncertReadBuffer,irow,modindex-1);
 	    imgUpdaterUncert.image2geo(0,irow,geox,geoy);
 	    if(model_opt.size()==nmodel){
 	      imgReaderModel2.geo2image(geox,geoy,modCol,modRow);
 	      assert(modRow>=0&&modRow<imgReaderModel2.nrOfRow());
-	      imgReaderModel2.readData(model2LineBuffer,GDT_Float64,modRow,readModel2Band,theResample);
+	      imgReaderModel2.readData(model2LineBuffer,modRow,readModel2Band,theResample);
 	      imgReaderModel1.geo2image(geox,geoy,modCol,modRow);
 	    }
 	    else{
 	      imgReaderModel1.geo2image(geox,geoy,modCol,modRow);
-	      imgReaderModel1.readData(model2LineBuffer,GDT_Float64,modRow,readModel2Band,theResample);
+	      imgReaderModel1.readData(model2LineBuffer,modRow,readModel2Band,theResample);
 	    }
 	    assert(modRow>=0&&modRow<imgReaderModel1.nrOfRow());
-	    imgReaderModel1.readData(model1LineBuffer,GDT_Float64,modRow,readModel1Band,theResample);
+	    imgReaderModel1.readData(model1LineBuffer,modRow,readModel1Band,theResample);
 
 	    if(modelmask_opt.size()){
-	      imgReaderModel1Mask.readData(model1MaskLineBuffer,GDT_Float64,modRow,readModel1MaskBand);
+	      imgReaderModel1Mask.readData(model1MaskLineBuffer,modRow,readModel1MaskBand);
 	      if(modelmask_opt.size()==nmodel)
-		imgReaderModel2Mask.readData(model2MaskLineBuffer,GDT_Float64,modRow,readModel2MaskBand);
+		imgReaderModel2Mask.readData(model2MaskLineBuffer,modRow,readModel2MaskBand);
 	      else
-		imgReaderModel1Mask.readData(model2MaskLineBuffer,GDT_Float64,modRow,readModel2MaskBand);
+		imgReaderModel1Mask.readData(model2MaskLineBuffer,modRow,readModel2MaskBand);
 	    }
 
 	    int maxRow=(irow+down_opt[0]/2<imgUpdaterEst.nrOfRow()) ? irow+down_opt[0]/2 : imgUpdaterEst.nrOfRow()-1;
 	    estLineVector.erase(estLineVector.begin());
-	    imgUpdaterEst.readData(estLineBuffer,GDT_Float64,maxRow,modindex-1);
+	    imgUpdaterEst.readData(estLineBuffer,maxRow,modindex-1);
 	    estLineVector.push_back(estLineBuffer);
 	    estLineBuffer=estLineVector[down_opt[0]/2];
 
 	    if(update){
 	      int maxRow=(irow+down_opt[0]/2<imgReaderObs.nrOfRow()) ? irow+down_opt[0]/2 : imgReaderObs.nrOfRow()-1;
 	      obsLineVector.erase(obsLineVector.begin());
-	      imgReaderObs.readData(obsLineBuffer,GDT_Float64,maxRow,readObsBand);
+	      imgReaderObs.readData(obsLineBuffer,maxRow,readObsBand);
 	      obsLineVector.push_back(obsLineBuffer);
 	      obsLineBuffer=obsLineVector[down_opt[0]/2];
 
 	      if(observationmask_opt.size())
-		imgReaderObsMask.readData(obsMaskLineBuffer,GDT_Float64,irow,readObsMaskBand);
+		imgReaderObsMask.readData(obsMaskLineBuffer,irow,readObsMaskBand);
 	    }
 
 	    for(int jcol=0;jcol<ncol;jcol+=down_opt[0]){
@@ -1018,9 +1016,9 @@ int main(int argc,char **argv) {
 
 	    //test
 	    if(gain_opt.size())
-	      imgWriterGain.writeData(gainWriteBuffer,GDT_Float64,irow,modindex);
-	    imgUpdaterEst.writeData(estWriteBuffer,GDT_Float64,irow,modindex);
-	    imgUpdaterUncert.writeData(uncertWriteBuffer,GDT_Float64,irow,modindex);
+	      imgWriterGain.writeData(gainWriteBuffer,irow,modindex);
+	    imgUpdaterEst.writeData(estWriteBuffer,irow,modindex);
+	    imgUpdaterUncert.writeData(uncertWriteBuffer,irow,modindex);
 	    progress=static_cast<float>((irow+1.0)/imgUpdaterEst.nrOfRow());
 	    pfnProgress(progress,pszMessage,pProgressArg);
 	  }
@@ -1029,8 +1027,6 @@ int main(int argc,char **argv) {
 	//must close writers to ensure flush
 	imgUpdaterEst.close();
 	imgUpdaterUncert.close();
-	// imgWriterEst.close();
-	// imgReaderEst.close();
 
 	if(update){
 	  if(observation_opt.size()==nobs)
@@ -1069,7 +1065,6 @@ int main(int argc,char **argv) {
       if(verbose_opt[0])
 	cout << "Opening image " << outputbw_opt[0] << " for writing " << endl;
 
-      // imgWriterEst.open(theOutput,ncol,nrow,2,theType,imageType,option_opt);
       ImgWriterGdal imgWriterEst;
       ImgWriterGdal imgWriterUncert;
       imgWriterEst.open(outputbw_opt[0],ncol,nrow,nmodel,theType,imageType,option_opt);
@@ -1139,12 +1134,12 @@ int main(int argc,char **argv) {
 		cerr << "Error: geo coordinates (" << geox << "," << geoy << ") not covered in model image " << imgReaderModel1.getFileName() << endl;
 		assert(modRow>=0&&modRow<imgReaderModel1.nrOfRow());
 	      }
-	      // imgReaderModel1.readData(estReadBuffer,GDT_Float64,modRow,0,theResample);
+	      // imgReaderModel1.readData(estReadBuffer,modRow,0,theResample);
 	      int readModelBand=(model_opt.size()==nmodel)? 0:nmodel-1;
 	      int readModelMaskBand=(modelmask_opt.size()==nmodel)? mskband_opt[0]:0;
-	      imgReaderModel1.readData(estReadBuffer,GDT_Float64,modRow,readModelBand,theResample);
+	      imgReaderModel1.readData(estReadBuffer,modRow,readModelBand,theResample);
 	      if(modelmask_opt.size())
-		imgReaderModel1Mask.readData(lineModelMask,GDT_Float64,modRow,readModelMaskBand,theResample);
+		imgReaderModel1Mask.readData(lineModelMask,modRow,readModelMaskBand,theResample);
 	      for(int jcol=0;jcol<ncol;jcol+=down_opt[0]){
 		for(int icol=jcol;icol<jcol+down_opt[0]&&icol<ncol;++icol){
 		  imgWriterEst.image2geo(icol,irow,geox,geoy);
@@ -1189,11 +1184,11 @@ int main(int argc,char **argv) {
 		  // gainWriteBuffer[icol]=0;
 		}
 	      }
-	      imgWriterEst.writeData(estWriteBuffer,GDT_Float64,irow,nmodel-1);
-	      imgWriterUncert.writeData(uncertWriteBuffer,GDT_Float64,irow,nmodel-1);
+	      imgWriterEst.writeData(estWriteBuffer,irow,nmodel-1);
+	      imgWriterUncert.writeData(uncertWriteBuffer,irow,nmodel-1);
 	      // //test
 	      // if(gain_opt.size())
-	      //   imgWriterGain.writeData(gainWriteBuffer,GDT_Float64,irow,0);
+	      //   imgWriterGain.writeData(gainWriteBuffer,irow,0);
 	    }
 	  }
 	  catch(string errorString){
@@ -1238,25 +1233,25 @@ int main(int argc,char **argv) {
 	int readModelMaskBand=(modelmask_opt.size()==nmodel)? mskband_opt[0]:nmodel-1;
 	for(int iline=-down_opt[0]/2;iline<down_opt[0]/2+1;++iline){
 	  if(iline<0)//replicate line 0
-	    imgReaderObs.readData(obsLineVector[iline+down_opt[0]/2],GDT_Float64,0,readObsBand);
+	    imgReaderObs.readData(obsLineVector[iline+down_opt[0]/2],0,readObsBand);
 	  else
-	    imgReaderObs.readData(obsLineVector[iline+down_opt[0]/2],GDT_Float64,iline,readObsBand);
+	    imgReaderObs.readData(obsLineVector[iline+down_opt[0]/2],iline,readObsBand);
 	}
 	for(int jrow=0;jrow<nrow;jrow+=down_opt[0]){
 	  for(int irow=jrow;irow<jrow+down_opt[0]&&irow<nrow;++irow){
 	    imgWriterEst.image2geo(0,irow,geox,geoy);
 	    imgReaderModel1.geo2image(geox,geoy,modCol,modRow);
 	    assert(modRow>=0&&modRow<imgReaderModel1.nrOfRow());
-	    imgReaderModel1.readData(estReadBuffer,GDT_Float64,modRow,readModelBand,theResample);
+	    imgReaderModel1.readData(estReadBuffer,modRow,readModelBand,theResample);
 	    if(modelmask_opt.size())
-	      imgReaderModel1Mask.readData(modelMaskLineBuffer,GDT_Float64,modRow,readModelMaskBand);
+	      imgReaderModel1Mask.readData(modelMaskLineBuffer,modRow,readModelMaskBand);
 	    int maxRow=(irow+down_opt[0]/2<imgReaderObs.nrOfRow()) ? irow+down_opt[0]/2 : imgReaderObs.nrOfRow()-1;
 	    obsLineVector.erase(obsLineVector.begin());
-	    imgReaderObs.readData(obsLineBuffer,GDT_Float64,maxRow,readObsBand);
+	    imgReaderObs.readData(obsLineBuffer,maxRow,readObsBand);
 	    obsLineVector.push_back(obsLineBuffer);
 
 	    if(observationmask_opt.size())
-	      imgReaderObsMask.readData(obsMaskLineBuffer,GDT_Float64,irow,readObsMaskBand);
+	      imgReaderObsMask.readData(obsMaskLineBuffer,irow,readObsMaskBand);
 
 	    for(int jcol=0;jcol<ncol;jcol+=down_opt[0]){
 	      for(int icol=jcol;icol<jcol+down_opt[0]&&icol<ncol;++icol){
@@ -1358,11 +1353,11 @@ int main(int argc,char **argv) {
 		}
 	      }
 	    }
-	    imgWriterEst.writeData(estWriteBuffer,GDT_Float64,irow,nmodel-1);
-	    imgWriterUncert.writeData(uncertWriteBuffer,GDT_Float64,irow,nmodel-1);
+	    imgWriterEst.writeData(estWriteBuffer,irow,nmodel-1);
+	    imgWriterUncert.writeData(uncertWriteBuffer,irow,nmodel-1);
 	    // //test
 	    // if(gain_opt.size())
-	    //   imgWriterGain.writeData(gainWriteBuffer,GDT_Float64,irow,0);
+	    //   imgWriterGain.writeData(gainWriteBuffer,irow,0);
 	  }
 	}
 	if(observation_opt.size()==nobs)
@@ -1464,9 +1459,9 @@ int main(int argc,char **argv) {
 	  assert(down_opt[0]%2);//window size must be odd 
 	  for(int iline=-down_opt[0]/2;iline<down_opt[0]/2+1;++iline){
 	    if(iline<0)//replicate line 0
-	      imgReaderObs.readData(obsLineVector[iline+down_opt[0]/2],GDT_Float64,0,readObsBand);
+	      imgReaderObs.readData(obsLineVector[iline+down_opt[0]/2],0,readObsBand);
 	    else
-	      imgReaderObs.readData(obsLineVector[iline+down_opt[0]/2],GDT_Float64,iline,readObsBand);
+	      imgReaderObs.readData(obsLineVector[iline+down_opt[0]/2],iline,readObsBand);
 	  }
 	}
 	//initialize estLineVector
@@ -1476,9 +1471,9 @@ int main(int argc,char **argv) {
 
 	for(int iline=-down_opt[0]/2;iline<down_opt[0]/2+1;++iline){
 	  if(iline<0)//replicate line 0
-	    imgUpdaterEst.readData(estLineVector[iline+down_opt[0]/2],GDT_Float64,0,modindex+1);
+	    imgUpdaterEst.readData(estLineVector[iline+down_opt[0]/2],0,modindex+1);
 	  else
-	    imgUpdaterEst.readData(estLineVector[iline+down_opt[0]/2],GDT_Float64,iline,modindex+1);
+	    imgUpdaterEst.readData(estLineVector[iline+down_opt[0]/2],iline,modindex+1);
 	}
 	statfactory::StatFactory statobs;
 	statobs.setNoDataValues(obsnodata_opt);
@@ -1486,43 +1481,43 @@ int main(int argc,char **argv) {
 	for(int jrow=0;jrow<nrow;jrow+=down_opt[0]){
 	  //todo: read entire window for uncertReadBuffer...
 	  for(int irow=jrow;irow<jrow+down_opt[0]&&irow<nrow;++irow){
-	    imgUpdaterUncert.readData(uncertReadBuffer,GDT_Float64,irow,modindex+1);
+	    imgUpdaterUncert.readData(uncertReadBuffer,irow,modindex+1);
 	    imgUpdaterUncert.image2geo(0,irow,geox,geoy);
 	    if(model_opt.size()==nmodel){
 	      imgReaderModel2.geo2image(geox,geoy,modCol,modRow);
 	      assert(modRow>=0&&modRow<imgReaderModel2.nrOfRow());
-	      imgReaderModel2.readData(model2LineBuffer,GDT_Float64,modRow,readModel2Band,theResample);
+	      imgReaderModel2.readData(model2LineBuffer,modRow,readModel2Band,theResample);
 	      imgReaderModel1.geo2image(geox,geoy,modCol,modRow);
 	    }
 	    else{
 	      imgReaderModel1.geo2image(geox,geoy,modCol,modRow);
-	      imgReaderModel1.readData(model2LineBuffer,GDT_Float64,modRow,readModel2Band,theResample);
+	      imgReaderModel1.readData(model2LineBuffer,modRow,readModel2Band,theResample);
 	    }
 
 	    assert(modRow>=0&&modRow<imgReaderModel1.nrOfRow());
-	    imgReaderModel1.readData(model1LineBuffer,GDT_Float64,modRow,readModel1Band,theResample);
+	    imgReaderModel1.readData(model1LineBuffer,modRow,readModel1Band,theResample);
 	    if(modelmask_opt.size()){
-	      imgReaderModel1Mask.readData(model1MaskLineBuffer,GDT_Float64,modRow,readModel1MaskBand);
+	      imgReaderModel1Mask.readData(model1MaskLineBuffer,modRow,readModel1MaskBand);
 	      if(modelmask_opt.size()==nmodel)
-		imgReaderModel2Mask.readData(model2MaskLineBuffer,GDT_Float64,modRow,readModel2MaskBand);
+		imgReaderModel2Mask.readData(model2MaskLineBuffer,modRow,readModel2MaskBand);
 	      else
-		imgReaderModel1Mask.readData(model2MaskLineBuffer,GDT_Float64,modRow,readModel2MaskBand);
+		imgReaderModel1Mask.readData(model2MaskLineBuffer,modRow,readModel2MaskBand);
 	    }
 	    int maxRow=(irow+down_opt[0]/2<imgUpdaterEst.nrOfRow()) ? irow+down_opt[0]/2 : imgUpdaterEst.nrOfRow()-1;
 	    estLineVector.erase(estLineVector.begin());
-	    imgUpdaterEst.readData(estLineBuffer,GDT_Float64,maxRow,modindex+1);
+	    imgUpdaterEst.readData(estLineBuffer,maxRow,modindex+1);
 	    estLineVector.push_back(estLineBuffer);
 	    estLineBuffer=estLineVector[down_opt[0]/2];
 
 	    if(update){
 	      int maxRow=(irow+down_opt[0]/2<imgReaderObs.nrOfRow()) ? irow+down_opt[0]/2 : imgReaderObs.nrOfRow()-1;
 	      obsLineVector.erase(obsLineVector.begin());
-	      imgReaderObs.readData(obsLineBuffer,GDT_Float64,maxRow,readObsBand);
+	      imgReaderObs.readData(obsLineBuffer,maxRow,readObsBand);
 	      obsLineVector.push_back(obsLineBuffer);
 	      obsLineBuffer=obsLineVector[down_opt[0]/2];
 
 	      if(observationmask_opt.size())
-		imgReaderObsMask.readData(obsMaskLineBuffer,GDT_Float64,irow,readObsBand);
+		imgReaderObsMask.readData(obsMaskLineBuffer,irow,readObsBand);
 	    }
 	    for(int jcol=0;jcol<ncol;jcol+=down_opt[0]){
 	      for(int icol=jcol;icol<jcol+down_opt[0]&&icol<ncol;++icol){
@@ -1688,9 +1683,9 @@ int main(int argc,char **argv) {
 	    }
 	    // //test
 	    // if(gain_opt.size())
-	    //   imgWriterGain.writeData(gainWriteBuffer,GDT_Float64,irow,modindex);
-	    imgUpdaterEst.writeData(estWriteBuffer,GDT_Float64,irow,modindex);
-	    imgUpdaterUncert.writeData(uncertWriteBuffer,GDT_Float64,irow,modindex);
+	    //   imgWriterGain.writeData(gainWriteBuffer,irow,modindex);
+	    imgUpdaterEst.writeData(estWriteBuffer,irow,modindex);
+	    imgUpdaterUncert.writeData(uncertWriteBuffer,irow,modindex);
 	    progress=static_cast<float>((irow+1.0)/imgUpdaterEst.nrOfRow());
 	    pfnProgress(progress,pszMessage,pProgressArg);
 	  }
@@ -1698,8 +1693,6 @@ int main(int argc,char **argv) {
 	//must close writers to ensure flush
 	imgUpdaterEst.close();
 	imgUpdaterUncert.close();
-	// imgWriterEst.close();
-	// imgReaderEst.close();
 
 	if(update){
 	  if(observation_opt.size()==nobs)
@@ -1765,44 +1758,6 @@ int main(int argc,char **argv) {
 	else
 	  cout << "There is no next observation" << endl;
       }
-      // if(outputfb_opt.size()==model_opt.size())
-      // 	theOutput=outputfb_opt[modindex];
-      // else{
-      // 	ostringstream outputstream;
-      // 	outputstream << outputfb_opt[0] << "_";
-      // 	outputstream << setfill('0') << setw(ndigit) << tmodel_opt[modindex];
-      // 	outputstream << ".tif";
-      // 	// outputstream << outputfb_opt[0] << "_" << tmodel_opt[modindex] << ".tif";
-      // 	theOutput=outputstream.str();
-      // }
-    
-      //two band output band0=estimation, band1=uncertainty
-
-      //open forward and backward estimates
-      //we assume forward in model and backward in observation...
-
-      // string inputfw;
-      // string inputbw;
-      // if(outputfw_opt.size()==model_opt.size())
-      // 	inputfw=outputfw_opt[modindex];
-      // else{
-      // 	ostringstream outputstream;
-      // 	outputstream << outputfw_opt[0] << "_";
-      // 	outputstream << setfill('0') << setw(ndigit) << tmodel_opt[modindex];
-      // 	outputstream << ".tif";
-      // 	// outputstream << outputfw_opt[0] << "_" << tmodel_opt[modindex] << ".tif";
-      // 	inputfw=outputstream.str();
-      // }
-      // if(outputbw_opt.size()==model_opt.size())
-      // 	inputbw=outputbw_opt[modindex];
-      // else{
-      // 	ostringstream outputstream;
-      // 	outputstream << outputbw_opt[0] << "_";
-      // 	outputstream << setfill('0') << setw(ndigit) << tmodel_opt[modindex];
-      // 	outputstream << ".tif";
-      // 	// outputstream << outputbw_opt[0] << "_" << tmodel_opt[modindex] << ".tif";
-      // 	inputbw=outputstream.str();
-      // }
       vector<double> estForwardBuffer;
       vector<double> estBackwardBuffer;
       vector<double> uncertObsLineBuffer;
@@ -1811,7 +1766,6 @@ int main(int argc,char **argv) {
       vector<double> uncertReadBuffer;
       vector<double> estWriteBuffer(ncol);
       vector<double> uncertWriteBuffer(ncol);
-      // vector<double> lineMask;
 
       bool update=false;
       if(obsindex<relobsindex.size()){
@@ -1832,10 +1786,6 @@ int main(int argc,char **argv) {
 	  imgReaderObsMask.open(observationmask_opt[obsindex]);
 	  imgReaderObsMask.setNoData(msknodata_opt);
 	}
-	// imgReaderObs.open(observation_opt[obsindex]);
-	// imgReaderObs.getGeoTransform(geotransform);
-	// imgReaderObs.setNoData(obsnodata_opt);
-	//calculate regression between model and observation
       }
 
       pfnProgress(progress,pszMessage,pProgressArg);
@@ -1843,23 +1793,18 @@ int main(int argc,char **argv) {
       for(int irow=0;irow<imgWriterEst.nrOfRow();++irow){
 	assert(irow<imgReaderForward.nrOfRow());
 	assert(irow<imgReaderBackward.nrOfRow());
-	imgReaderForward.readData(estForwardBuffer,GDT_Float64,irow,modindex);
-	imgReaderBackward.readData(estBackwardBuffer,GDT_Float64,irow,modindex);
-	imgReaderForwardUncert.readData(uncertForwardBuffer,GDT_Float64,irow,modindex);
-	imgReaderBackwardUncert.readData(uncertBackwardBuffer,GDT_Float64,irow,modindex);
-	// imgReaderForward.readData(estForwardBuffer,GDT_Float64,irow,0);
-	// imgReaderBackward.readData(estBackwardBuffer,GDT_Float64,irow,0);
-	// imgReaderForward.readData(uncertForwardBuffer,GDT_Float64,irow,1);
-	// imgReaderBackward.readData(uncertBackwardBuffer,GDT_Float64,irow,1);
+	imgReaderForward.readData(estForwardBuffer,irow,modindex);
+	imgReaderBackward.readData(estBackwardBuffer,irow,modindex);
+	imgReaderForwardUncert.readData(uncertForwardBuffer,irow,modindex);
+	imgReaderBackwardUncert.readData(uncertBackwardBuffer,irow,modindex);
 
 	if(update){
 	  if(observation_opt.size()==nobs)
-	    imgReaderObs.readData(estWriteBuffer,GDT_Float64,irow,readObsBand);
+	    imgReaderObs.readData(estWriteBuffer,irow,readObsBand);
 	  if(observationmask_opt.size())
-	    imgReaderObsMask.readData(uncertObsLineBuffer,GDT_Float64,irow,readObsBand);
+	    imgReaderObsMask.readData(uncertObsLineBuffer,irow,readObsBand);
 	}
 
-	// double oldRowMask=-1;//keep track of row mask to optimize number of line readings
 	for(int icol=0;icol<imgWriterEst.nrOfCol();++icol){
 	  imgWriterEst.image2geo(icol,irow,geox,geoy);
 	  double A=estForwardBuffer[icol];
@@ -1868,13 +1813,6 @@ int main(int argc,char **argv) {
 	  double D=uncertBackwardBuffer[icol];
 	  double uncertObs=uncertObs_opt[0];
 
-	  // if(update){//check for nodata in observation
-	  //   if(imgReaderObs.isNoData(estWriteBuffer[icol]))
-	  //     uncertObs=uncertNodata_opt[0];
-	  //   else if(uncertObsLineBuffer.size()>icol)
-	  //     uncertObs=uncertObsLineBuffer[icol];
-	  // }
-
 	  double noemer=(C+D);
 	  //todo: consistently check for division by zero...
 	  if(imgReaderForward.isNoData(A)&&imgReaderBackward.isNoData(B)){
@@ -1907,21 +1845,11 @@ int main(int argc,char **argv) {
 		if(uncertWriteBuffer[icol]>obsmax_opt[0])
 		  uncertWriteBuffer[icol]=obsmax_opt[0];
 	      }
-	      // double P=0;
-	      // if(C>eps_opt[0])
-	      // 	P+=1.0/C;
-	      // if(D>eps_opt[0])
-	      // 	P+=1.0/D;
-	      // if(P>eps_opt[0])
-	      // 	P=1.0/P;
-	      // else
-	      // 	P=0;
-	      // uncertWriteBuffer[icol]=P;
 	    }
 	  }
 	}
-	imgWriterEst.writeData(estWriteBuffer,GDT_Float64,irow,modindex);
-	imgWriterUncert.writeData(uncertWriteBuffer,GDT_Float64,irow,modindex);
+	imgWriterEst.writeData(estWriteBuffer,irow,modindex);
+	imgWriterUncert.writeData(uncertWriteBuffer,irow,modindex);
 	progress=static_cast<float>((irow+1.0)/imgWriterEst.nrOfRow());
 	pfnProgress(progress,pszMessage,pProgressArg);
       }
@@ -1940,7 +1868,5 @@ int main(int argc,char **argv) {
     imgReaderObs.close();
   if(model_opt.size()<nmodel)
     imgReaderModel1.close();
-  // if(mask_opt.size())
-  //   maskReader.close();
 }
 
diff --git a/src/apps/pklas2img b/src/apps/pklas2img
new file mode 100755
index 0000000..84a872e
--- /dev/null
+++ b/src/apps/pklas2img
@@ -0,0 +1,228 @@
+#! /bin/bash
+
+# pklas2img - temporary wrapper script for .libs/pklas2img
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# The pklas2img program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command="(cd /home/kempenep/pktools/src/apps; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \ [...]
+
+# This environment variable determines our operation mode.
+if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='2.4.6'
+  notinst_deplibs=' ../../src/lasclasses/liblasClasses.la ../../src/algorithms/libalgorithms.la ../../src/imageclasses/libimageClasses.la ../../src/fileclasses/libfileClasses.la'
+else
+  # When we are sourced in execute mode, $file and $ECHO are already set.
+  if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+    file="$0"
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+    ECHO="printf %s\\n"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string --lt-
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's ../../libtool value, followed by no.
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=$0
+  shift
+  for lt_opt
+  do
+    case "$lt_opt" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
+        test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
+        lt_dump_F=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%^.*/%%'`
+        cat "$lt_dump_D/$lt_dump_F"
+        exit 0
+      ;;
+    --lt-*)
+        $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n "$lt_option_debug"; then
+    echo "pklas2img:pklas2img:$LINENO: libtool wrapper (GNU libtool) 2.4.6 Debian-2.4.6-0.1" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    $ECHO "pklas2img:pklas2img:$LINENO: newargv[$lt_dump_args_N]: $lt_arg"
+    lt_dump_args_N=`expr $lt_dump_args_N + 1`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+
+      if test -n "$lt_option_debug"; then
+        $ECHO "pklas2img:pklas2img:$LINENO: newargv[0]: $progdir/$program" 1>&2
+        func_lt_dump_args ${1+"$@"} 1>&2
+      fi
+      exec "$progdir/$program" ${1+"$@"}
+
+      $ECHO "$0: cannot exec $program $*" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from $@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case " $* " in
+  *\ --lt-*)
+    for lt_wr_arg
+    do
+      case $lt_wr_arg in
+      --lt-*) ;;
+      *) set x "$@" "$lt_wr_arg"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core ${1+"$@"}
+}
+
+  # Parse options
+  func_parse_lt_options "$0" ${1+"$@"}
+
+  # Find the directory that this script lives in.
+  thisdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+  test "x$thisdir" = "x$file" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'`
+  while test -n "$file"; do
+    destdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+
+    # If there was a directory component, then change thisdir.
+    if test "x$destdir" != "x$file"; then
+      case "$destdir" in
+      [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
+      *) thisdir="$thisdir/$destdir" ;;
+      esac
+    fi
+
+    file=`$ECHO "$file" | /bin/sed 's%^.*/%%'`
+    file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
+  if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
+    # special case for '.'
+    if test "$thisdir" = "."; then
+      thisdir=`pwd`
+    fi
+    # remove .libs from thisdir
+    case "$thisdir" in
+    *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /bin/sed 's%[\\/][^\\/]*$%%'` ;;
+    .libs )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=`cd "$thisdir" && pwd`
+  test -n "$absdir" && thisdir="$absdir"
+
+  program=lt-'pklas2img'
+  progdir="$thisdir/.libs"
+
+  if test ! -f "$progdir/$program" ||
+     { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /bin/sed 1q`; \
+       test "X$file" != "X$progdir/$program"; }; then
+
+    file="$$-$program"
+
+    if test ! -d "$progdir"; then
+      mkdir "$progdir"
+    else
+      rm -f "$progdir/$file"
+    fi
+
+    # relink executable if necessary
+    if test -n "$relink_command"; then
+      if relink_command_output=`eval $relink_command 2>&1`; then :
+      else
+	$ECHO "$relink_command_output" >&2
+	rm -f "$progdir/$file"
+	exit 1
+      fi
+    fi
+
+    mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
+    { rm -f "$progdir/$program";
+      mv -f "$progdir/$file" "$progdir/$program"; }
+    rm -f "$progdir/$file"
+  fi
+
+  if test -f "$progdir/$program"; then
+    if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+      # Run the actual program with our arguments.
+      func_exec_program ${1+"$@"}
+    fi
+  else
+    # The program doesn't exist.
+    $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2
+    $ECHO "This script is just a wrapper for $program." 1>&2
+    $ECHO "See the libtool documentation for more information." 1>&2
+    exit 1
+  fi
+fi
diff --git a/src/apps/pklas2img.cc b/src/apps/pklas2img.cc
index 08c63fc..4ec7875 100644
--- a/src/apps/pklas2img.cc
+++ b/src/apps/pklas2img.cc
@@ -32,7 +32,7 @@ along with pktools.  If not, see <http://www.gnu.org/licenses/>.
 ## SYNOPSIS
 
 <code>
-  
+  Usage: pklas2img -i input.las -o output.tif
 </code>
 
 <code>
@@ -45,17 +45,17 @@ along with pktools.  If not, see <http://www.gnu.org/licenses/>.
 
 \section pklas2img_description Description
 
-The utility pklas2img converts a las/laz point cloud into a gridded raster dataset. The implementation is based on <a href="www.liblas.org">liblas</a> API. You can define the bounding box, grid cell size and spatial reference set. The composite rule for multiple returns within a single grid cell can be set with the option -comp. The default attribute is z (heiht), but can also be intensity (if available), scan angle rank (-n angle), the return number (-n return) or the total number of re [...]
+The utility pklas2img converts a las/laz point cloud into a gridded raster dataset. The implementation is based on <a href="http://www.liblas.org">liblas</a> API. You can define the bounding box, grid cell size and spatial reference set. The composite rule for multiple returns within a single grid cell can be set with the option -comp. The default attribute is z (heiht), but can also be intensity (if available), scan angle rank (-n angle), the return number (-n return) or the total numbe [...]
 \section pklas2img_options Options
  - use either `-short` or `--long` options (both `--long=value` and `--long value` are supported)
  - short option `-h` shows basic options only, long option `--help` shows all options
 |short|long|type|default|description|
 |-----|----|----|-------|-----------|
  | i      | input                | std::string |       |Input las file | 
- | n      | name                 | std::string | z     |names of the attribute to select: intensity, angle, return, nreturn, z | 
+ | n      | name                 | std::string | z     |names of the attribute to select: intensity, angle, return, nreturn, spacing, z | 
  | ret    | ret                  | unsigned short |       |number(s) of returns to include | 
  | class  | class                | unsigned short |       |classes to keep: 0 (created, never classified), 1 (unclassified), 2 (ground), 3 (low vegetation), 4 (medium vegetation), 5 (high vegetation), 6 (building), 7 (low point, noise), 8 (model key-point), 9 (water), 10 (reserved), 11 (reserved), 12 (overlap) | 
- | comp   | comp                 | std::string | last  |composite for multiple points in cell (min, max, median, mean, sum, first, last, profile (percentile height values), percentile, number (point density)). Last: overwrite cells with latest point | 
+ | comp   | comp                 | std::string | last  |composite for multiple points in cell (min, max, absmin, absmax, median, mean, sum, first, last, profile (percentile height values), percentile, number (point density)). Last: overwrite cells with latest point | 
  | fir    | filter               | std::string | all   |filter las points (first,last,single,multiple,all). | 
  | angle_min  | angle_min        | unsigned short |    |minimum scan angle to read points. | 
  | angle_max  | angle_max        | unsigned short |    |maximum scan angle to read points. | 
@@ -84,17 +84,17 @@ using namespace std;
 
 int main(int argc,char **argv) {
   Optionpk<string> input_opt("i", "input", "Input las file");
-  Optionpk<string> attribute_opt("n", "name", "names of the point attribute to select: intensity, angle, return, nreturn, angle, z", "z");
+  Optionpk<string> attribute_opt("n", "name", "names of the point attribute to select: intensity, angle, return, nreturn, spacing, z", "z");
   // Optionpk<bool> disc_opt("circ", "circular", "circular disc kernel for dilation and erosion", false);
   // Optionpk<double> maxSlope_opt("s", "maxSlope", "Maximum slope used for morphological filtering", 0.0);
   // Optionpk<double> hThreshold_opt("ht", "maxHeight", "initial and maximum height threshold for progressive morphological filtering (e.g., -ht 0.2 -ht 2.5)", 0.2);
   // Optionpk<short> maxIter_opt("maxit", "maxit", "Maximum number of iterations in post filter", 5);
   Optionpk<unsigned short> returns_opt("ret", "ret", "number(s) of returns to include");
   Optionpk<unsigned short> classes_opt("class", "class", "classes to keep: 0 (created, never classified), 1 (unclassified), 2 (ground), 3 (low vegetation), 4 (medium vegetation), 5 (high vegetation), 6 (building), 7 (low point, noise), 8 (model key-point), 9 (water), 10 (reserved), 11 (reserved), 12 (overlap)");
-  Optionpk<string> composite_opt("comp", "comp", "composite for multiple points in cell (min, max, median, mean, sum, first, last, profile (percentile height values), percentile, number (point density)). Last: overwrite cells with latest point", "last");
+  Optionpk<string> composite_opt("comp", "comp", "composite for multiple points in cell (min, max, absmin, absmax, median, mean, sum, first, last, profile (percentile height values), percentile, number (point density)). Last: overwrite cells with latest point", "last");
   Optionpk<string> filter_opt("fir", "filter", "filter las points (first,last,single,multiple,all).", "all");
-  Optionpk<unsigned short> angle_min_opt("angle_min", "angle_min", "Minimum scan angle to read points.");
-  Optionpk<unsigned short> angle_max_opt("angle_max", "angle_max", "Maximum scan angle to read points.");
+  Optionpk<short> angle_min_opt("angle_min", "angle_min", "Minimum scan angle to read points.");
+  Optionpk<short> angle_max_opt("angle_max", "angle_max", "Maximum scan angle to read points.");
   // Optionpk<string> postFilter_opt("pf", "pfilter", "post processing filter (etew_min,promorph (progressive morphological filter),bunting (adapted promorph),open,close,none).", "none");
   // Optionpk<short> dimx_opt("dimx", "dimx", "Dimension X of postFilter", 3);
   // Optionpk<short> dimy_opt("dimy", "dimy", "Dimension Y of postFilter", 3);
@@ -185,6 +185,10 @@ int main(int argc,char **argv) {
                  otype_opt[0].c_str()))
       theType=(GDALDataType) iType;
   }
+  if(attribute_opt[0]=="spacing"){
+    if(theType!=GDT_Float32||theType!=GDT_Float64)
+      theType=GDT_Float32;
+  }
   if(verbose_opt[0]){
     if(theType==GDT_Unknown)
       cout << "Unknown output pixel type: " << otype_opt[0] << endl;
@@ -334,7 +338,7 @@ int main(int argc,char **argv) {
             std::cout << "writing intensity" << std::endl;
           ++ait;
         }
-        if(*ait=="angle"){
+        else if(*ait=="angle"){
           if(verbose_opt[0])
             std::cout << "writing angle" << std::endl;
           ++ait;
@@ -349,17 +353,35 @@ int main(int argc,char **argv) {
             std::cout << "writing number of returns" << std::endl;
           ++ait;
         }
+        else if(*ait=="spacing"){
+          if(verbose_opt[0])
+            std::cout << "writing spacing" << std::endl;
+          ++ait;
+        }
         else
           attribute_opt.erase(ait);
       }
     }
-    liblas::Point thePoint(&(lasReader.getHeader()));
-    while(lasReader.readNextPoint(thePoint)){
+
+    // liblas::Point thePoint(&(lasReader.getHeader()));
+    // while(lasReader.readNextPoint(thePoint)){
+    OGRSpatialReference projectionRef(outputWriter.getProjectionRef().c_str());
+    OGRPoint ogrPoint;
+    OGRPoint ogrCenter;
+    if(attribute_opt[0]=="spacing"){
+      ogrPoint.assignSpatialReference(&projectionRef);
+      ogrCenter.assignSpatialReference(&projectionRef);
+    }
+    while(lasReader.getReader()->ReadNextPoint()){
+      liblas::Point const& thePoint = lasReader.getReader()->GetPoint();
+      // liblas::Point const& thePoint=lasReader.getPoint();
       progress=static_cast<float>(ipoint)/totalPoints;
       pfnProgress(progress,pszMessage,pProgressArg);
+      double theX=thePoint.GetX();
+      double theY=thePoint.GetY();
       if(verbose_opt[0]>1)
         cout << "reading point " << ipoint << endl;
-      if(thePoint.GetX()<minULX||thePoint.GetX()>=maxLRX||thePoint.GetY()>=maxULY||thePoint.GetY()<minLRY)
+      if(theX<minULX||theX>=maxLRX||theY>=maxULY||theY<minLRY)
         continue;
       if((filter_opt[0]=="single")&&(thePoint.GetNumberOfReturns()!=1))
         continue;
@@ -378,7 +400,7 @@ int main(int argc,char **argv) {
 	  continue;
       }
       double dcol,drow;
-      outputWriter.geo2image(thePoint.GetX(),thePoint.GetY(),dcol,drow);
+      outputWriter.geo2image(theX,theY,dcol,drow);
       int icol=static_cast<int>(dcol);
       int irow=static_cast<int>(drow);
       if(irow<0||irow>=nrow){
@@ -407,6 +429,16 @@ int main(int argc,char **argv) {
         inputData[irow][icol].push_back(thePoint.GetReturnNumber());
       else if(attribute_opt[0]=="nreturn")
         inputData[irow][icol].push_back(thePoint.GetNumberOfReturns());
+      else if(attribute_opt[0]=="spacing"){
+	ogrPoint.setX(theX);
+	ogrPoint.setY(theY);
+	double centerX;
+	double centerY;
+	outputWriter.image2geo(icol,irow,centerX,centerY);
+	ogrCenter.setX(centerX);
+	ogrCenter.setY(centerY);
+	inputData[irow][icol].push_back(ogrPoint.Distance(&ogrCenter));
+      }
       else{
         std::string errorString="attribute not supported";
         throw(errorString);
@@ -444,6 +476,10 @@ int main(int argc,char **argv) {
           outputData[irow][icol]=stat.mymin(inputData[irow][icol]);
         else if(composite_opt[0]=="max")
           outputData[irow][icol]=stat.mymax(inputData[irow][icol]);
+        else if(composite_opt[0]=="absmin")
+          outputData[irow][icol]=stat.absmin(inputData[irow][icol]);
+        else if(composite_opt[0]=="absmax")
+          outputData[irow][icol]=stat.absmax(inputData[irow][icol]);
         else if(composite_opt[0]=="median")
           outputData[irow][icol]=stat.median(inputData[irow][icol]);
         else if(composite_opt[0]=="percentile")
@@ -489,7 +525,7 @@ int main(int argc,char **argv) {
         // assert(outputProfile[iband].size()==outputWriter.nrOfRow());
         assert(outputProfile[iband].size()==outputWriter.nrOfCol());
         try{
-          outputWriter.writeData(outputProfile[iband],GDT_Float64,irow,iband);
+          outputWriter.writeData(outputProfile[iband],irow,iband);
         }
         catch(std::string errorString){
           cout << errorString << endl;
@@ -609,7 +645,7 @@ int main(int argc,char **argv) {
       try{
         assert(outputData.size()==outputWriter.nrOfRow());
         assert(outputData[0].size()==outputWriter.nrOfCol());
-        outputWriter.writeData(outputData[irow],GDT_Float64,irow,0);
+        outputWriter.writeData(outputData[irow],irow,0);
       }
       catch(std::string errorString){
         cout << errorString << endl;
diff --git a/src/apps/pkoptsvm b/src/apps/pkoptsvm
new file mode 100755
index 0000000..92ee223
--- /dev/null
+++ b/src/apps/pkoptsvm
@@ -0,0 +1,228 @@
+#! /bin/bash
+
+# pkoptsvm - temporary wrapper script for .libs/pkoptsvm
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# The pkoptsvm program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command="(cd /home/kempenep/pktools/src/apps; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \ [...]
+
+# This environment variable determines our operation mode.
+if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='2.4.6'
+  notinst_deplibs=' ../../src/algorithms/libalgorithms.la ../../src/imageclasses/libimageClasses.la ../../src/fileclasses/libfileClasses.la'
+else
+  # When we are sourced in execute mode, $file and $ECHO are already set.
+  if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+    file="$0"
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+    ECHO="printf %s\\n"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string --lt-
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's ../../libtool value, followed by no.
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=$0
+  shift
+  for lt_opt
+  do
+    case "$lt_opt" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
+        test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
+        lt_dump_F=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%^.*/%%'`
+        cat "$lt_dump_D/$lt_dump_F"
+        exit 0
+      ;;
+    --lt-*)
+        $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n "$lt_option_debug"; then
+    echo "pkoptsvm:pkoptsvm:$LINENO: libtool wrapper (GNU libtool) 2.4.6 Debian-2.4.6-0.1" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    $ECHO "pkoptsvm:pkoptsvm:$LINENO: newargv[$lt_dump_args_N]: $lt_arg"
+    lt_dump_args_N=`expr $lt_dump_args_N + 1`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+
+      if test -n "$lt_option_debug"; then
+        $ECHO "pkoptsvm:pkoptsvm:$LINENO: newargv[0]: $progdir/$program" 1>&2
+        func_lt_dump_args ${1+"$@"} 1>&2
+      fi
+      exec "$progdir/$program" ${1+"$@"}
+
+      $ECHO "$0: cannot exec $program $*" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from $@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case " $* " in
+  *\ --lt-*)
+    for lt_wr_arg
+    do
+      case $lt_wr_arg in
+      --lt-*) ;;
+      *) set x "$@" "$lt_wr_arg"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core ${1+"$@"}
+}
+
+  # Parse options
+  func_parse_lt_options "$0" ${1+"$@"}
+
+  # Find the directory that this script lives in.
+  thisdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+  test "x$thisdir" = "x$file" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'`
+  while test -n "$file"; do
+    destdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+
+    # If there was a directory component, then change thisdir.
+    if test "x$destdir" != "x$file"; then
+      case "$destdir" in
+      [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
+      *) thisdir="$thisdir/$destdir" ;;
+      esac
+    fi
+
+    file=`$ECHO "$file" | /bin/sed 's%^.*/%%'`
+    file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
+  if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
+    # special case for '.'
+    if test "$thisdir" = "."; then
+      thisdir=`pwd`
+    fi
+    # remove .libs from thisdir
+    case "$thisdir" in
+    *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /bin/sed 's%[\\/][^\\/]*$%%'` ;;
+    .libs )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=`cd "$thisdir" && pwd`
+  test -n "$absdir" && thisdir="$absdir"
+
+  program=lt-'pkoptsvm'
+  progdir="$thisdir/.libs"
+
+  if test ! -f "$progdir/$program" ||
+     { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /bin/sed 1q`; \
+       test "X$file" != "X$progdir/$program"; }; then
+
+    file="$$-$program"
+
+    if test ! -d "$progdir"; then
+      mkdir "$progdir"
+    else
+      rm -f "$progdir/$file"
+    fi
+
+    # relink executable if necessary
+    if test -n "$relink_command"; then
+      if relink_command_output=`eval $relink_command 2>&1`; then :
+      else
+	$ECHO "$relink_command_output" >&2
+	rm -f "$progdir/$file"
+	exit 1
+      fi
+    fi
+
+    mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
+    { rm -f "$progdir/$program";
+      mv -f "$progdir/$file" "$progdir/$program"; }
+    rm -f "$progdir/$file"
+  fi
+
+  if test -f "$progdir/$program"; then
+    if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+      # Run the actual program with our arguments.
+      func_exec_program ${1+"$@"}
+    fi
+  else
+    # The program doesn't exist.
+    $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2
+    $ECHO "This script is just a wrapper for $program." 1>&2
+    $ECHO "See the libtool documentation for more information." 1>&2
+    exit 1
+  fi
+fi
diff --git a/src/apps/pkoptsvm.cc b/src/apps/pkoptsvm.cc
index 5db30de..10fc51b 100644
--- a/src/apps/pkoptsvm.cc
+++ b/src/apps/pkoptsvm.cc
@@ -22,11 +22,11 @@ along with pktools.  If not, see <http://www.gnu.org/licenses/>.
 #include <fstream>
 #include <vector>
 #include <math.h>
-#include <nlopt.hpp>
+//#include <nlopt.hpp>
 #include "base/Optionpk.h"
 #include "algorithms/ConfusionMatrix.h"
 #include "algorithms/FeatureSelector.h"
-#include "algorithms/OptFactory.h"
+//#include "algorithms/OptFactory.h"
 #include "algorithms/CostFactorySVM.h"
 #include "algorithms/svm.h"
 #include "imageclasses/ImgReaderOgr.h"
diff --git a/src/apps/pkpolygonize b/src/apps/pkpolygonize
new file mode 100755
index 0000000..e38b7c3
--- /dev/null
+++ b/src/apps/pkpolygonize
@@ -0,0 +1,228 @@
+#! /bin/bash
+
+# pkpolygonize - temporary wrapper script for .libs/pkpolygonize
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# The pkpolygonize program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command="(cd /home/kempenep/pktools/src/apps; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \ [...]
+
+# This environment variable determines our operation mode.
+if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='2.4.6'
+  notinst_deplibs=' ../../src/algorithms/libalgorithms.la ../../src/imageclasses/libimageClasses.la ../../src/fileclasses/libfileClasses.la'
+else
+  # When we are sourced in execute mode, $file and $ECHO are already set.
+  if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+    file="$0"
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+    ECHO="printf %s\\n"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string --lt-
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's ../../libtool value, followed by no.
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=$0
+  shift
+  for lt_opt
+  do
+    case "$lt_opt" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
+        test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
+        lt_dump_F=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%^.*/%%'`
+        cat "$lt_dump_D/$lt_dump_F"
+        exit 0
+      ;;
+    --lt-*)
+        $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n "$lt_option_debug"; then
+    echo "pkpolygonize:pkpolygonize:$LINENO: libtool wrapper (GNU libtool) 2.4.6 Debian-2.4.6-0.1" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    $ECHO "pkpolygonize:pkpolygonize:$LINENO: newargv[$lt_dump_args_N]: $lt_arg"
+    lt_dump_args_N=`expr $lt_dump_args_N + 1`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+
+      if test -n "$lt_option_debug"; then
+        $ECHO "pkpolygonize:pkpolygonize:$LINENO: newargv[0]: $progdir/$program" 1>&2
+        func_lt_dump_args ${1+"$@"} 1>&2
+      fi
+      exec "$progdir/$program" ${1+"$@"}
+
+      $ECHO "$0: cannot exec $program $*" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from $@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case " $* " in
+  *\ --lt-*)
+    for lt_wr_arg
+    do
+      case $lt_wr_arg in
+      --lt-*) ;;
+      *) set x "$@" "$lt_wr_arg"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core ${1+"$@"}
+}
+
+  # Parse options
+  func_parse_lt_options "$0" ${1+"$@"}
+
+  # Find the directory that this script lives in.
+  thisdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+  test "x$thisdir" = "x$file" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'`
+  while test -n "$file"; do
+    destdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+
+    # If there was a directory component, then change thisdir.
+    if test "x$destdir" != "x$file"; then
+      case "$destdir" in
+      [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
+      *) thisdir="$thisdir/$destdir" ;;
+      esac
+    fi
+
+    file=`$ECHO "$file" | /bin/sed 's%^.*/%%'`
+    file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
+  if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
+    # special case for '.'
+    if test "$thisdir" = "."; then
+      thisdir=`pwd`
+    fi
+    # remove .libs from thisdir
+    case "$thisdir" in
+    *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /bin/sed 's%[\\/][^\\/]*$%%'` ;;
+    .libs )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=`cd "$thisdir" && pwd`
+  test -n "$absdir" && thisdir="$absdir"
+
+  program=lt-'pkpolygonize'
+  progdir="$thisdir/.libs"
+
+  if test ! -f "$progdir/$program" ||
+     { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /bin/sed 1q`; \
+       test "X$file" != "X$progdir/$program"; }; then
+
+    file="$$-$program"
+
+    if test ! -d "$progdir"; then
+      mkdir "$progdir"
+    else
+      rm -f "$progdir/$file"
+    fi
+
+    # relink executable if necessary
+    if test -n "$relink_command"; then
+      if relink_command_output=`eval $relink_command 2>&1`; then :
+      else
+	$ECHO "$relink_command_output" >&2
+	rm -f "$progdir/$file"
+	exit 1
+      fi
+    fi
+
+    mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
+    { rm -f "$progdir/$program";
+      mv -f "$progdir/$file" "$progdir/$program"; }
+    rm -f "$progdir/$file"
+  fi
+
+  if test -f "$progdir/$program"; then
+    if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+      # Run the actual program with our arguments.
+      func_exec_program ${1+"$@"}
+    fi
+  else
+    # The program doesn't exist.
+    $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2
+    $ECHO "This script is just a wrapper for $program." 1>&2
+    $ECHO "See the libtool documentation for more information." 1>&2
+    exit 1
+  fi
+fi
diff --git a/src/apps/pkreclass b/src/apps/pkreclass
new file mode 100755
index 0000000..3402cbf
--- /dev/null
+++ b/src/apps/pkreclass
@@ -0,0 +1,228 @@
+#! /bin/bash
+
+# pkreclass - temporary wrapper script for .libs/pkreclass
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# The pkreclass program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command="(cd /home/kempenep/pktools/src/apps; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \ [...]
+
+# This environment variable determines our operation mode.
+if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='2.4.6'
+  notinst_deplibs=' ../../src/algorithms/libalgorithms.la ../../src/imageclasses/libimageClasses.la ../../src/fileclasses/libfileClasses.la'
+else
+  # When we are sourced in execute mode, $file and $ECHO are already set.
+  if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+    file="$0"
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+    ECHO="printf %s\\n"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string --lt-
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's ../../libtool value, followed by no.
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=$0
+  shift
+  for lt_opt
+  do
+    case "$lt_opt" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
+        test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
+        lt_dump_F=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%^.*/%%'`
+        cat "$lt_dump_D/$lt_dump_F"
+        exit 0
+      ;;
+    --lt-*)
+        $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n "$lt_option_debug"; then
+    echo "pkreclass:pkreclass:$LINENO: libtool wrapper (GNU libtool) 2.4.6 Debian-2.4.6-0.1" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    $ECHO "pkreclass:pkreclass:$LINENO: newargv[$lt_dump_args_N]: $lt_arg"
+    lt_dump_args_N=`expr $lt_dump_args_N + 1`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+
+      if test -n "$lt_option_debug"; then
+        $ECHO "pkreclass:pkreclass:$LINENO: newargv[0]: $progdir/$program" 1>&2
+        func_lt_dump_args ${1+"$@"} 1>&2
+      fi
+      exec "$progdir/$program" ${1+"$@"}
+
+      $ECHO "$0: cannot exec $program $*" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from $@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case " $* " in
+  *\ --lt-*)
+    for lt_wr_arg
+    do
+      case $lt_wr_arg in
+      --lt-*) ;;
+      *) set x "$@" "$lt_wr_arg"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core ${1+"$@"}
+}
+
+  # Parse options
+  func_parse_lt_options "$0" ${1+"$@"}
+
+  # Find the directory that this script lives in.
+  thisdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+  test "x$thisdir" = "x$file" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'`
+  while test -n "$file"; do
+    destdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+
+    # If there was a directory component, then change thisdir.
+    if test "x$destdir" != "x$file"; then
+      case "$destdir" in
+      [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
+      *) thisdir="$thisdir/$destdir" ;;
+      esac
+    fi
+
+    file=`$ECHO "$file" | /bin/sed 's%^.*/%%'`
+    file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
+  if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
+    # special case for '.'
+    if test "$thisdir" = "."; then
+      thisdir=`pwd`
+    fi
+    # remove .libs from thisdir
+    case "$thisdir" in
+    *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /bin/sed 's%[\\/][^\\/]*$%%'` ;;
+    .libs )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=`cd "$thisdir" && pwd`
+  test -n "$absdir" && thisdir="$absdir"
+
+  program=lt-'pkreclass'
+  progdir="$thisdir/.libs"
+
+  if test ! -f "$progdir/$program" ||
+     { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /bin/sed 1q`; \
+       test "X$file" != "X$progdir/$program"; }; then
+
+    file="$$-$program"
+
+    if test ! -d "$progdir"; then
+      mkdir "$progdir"
+    else
+      rm -f "$progdir/$file"
+    fi
+
+    # relink executable if necessary
+    if test -n "$relink_command"; then
+      if relink_command_output=`eval $relink_command 2>&1`; then :
+      else
+	$ECHO "$relink_command_output" >&2
+	rm -f "$progdir/$file"
+	exit 1
+      fi
+    fi
+
+    mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
+    { rm -f "$progdir/$program";
+      mv -f "$progdir/$file" "$progdir/$program"; }
+    rm -f "$progdir/$file"
+  fi
+
+  if test -f "$progdir/$program"; then
+    if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+      # Run the actual program with our arguments.
+      func_exec_program ${1+"$@"}
+    fi
+  else
+    # The program doesn't exist.
+    $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2
+    $ECHO "This script is just a wrapper for $program." 1>&2
+    $ECHO "See the libtool documentation for more information." 1>&2
+    exit 1
+  fi
+fi
diff --git a/src/apps/pkreclass.cc b/src/apps/pkreclass.cc
index 6c6d77c..8a268d4 100644
--- a/src/apps/pkreclass.cc
+++ b/src/apps/pkreclass.cc
@@ -304,7 +304,7 @@ int main(int argc, char *argv[])
       for(int iband=0;iband<inputReader.nrOfBand();++iband){
         try{
           // inputReader.readData(lineInput[iband],GDT_Int32,irow,iband);
-          inputReader.readData(lineInput[iband],GDT_Float64,irow,iband);
+          inputReader.readData(lineInput[iband],irow,iband);
         }
         catch(string errorstring){
           cerr << errorstring << endl;
@@ -322,7 +322,7 @@ int main(int argc, char *argv[])
             if(static_cast<int>(rowMask)!=static_cast<int>(oldRowMask)){
               assert(rowMask>=0&&rowMask<maskReader[imask].nrOfRow());
               try{
-                maskReader[imask].readData(lineMask[imask],GDT_Int16,static_cast<int>(rowMask));
+                maskReader[imask].readData(lineMask[imask],static_cast<int>(rowMask));
               }
               catch(string errorstring){
                 cerr << errorstring << endl;
@@ -349,7 +349,7 @@ int main(int argc, char *argv[])
           if(static_cast<int>(rowMask)!=static_cast<int>(oldRowMask)){
             assert(rowMask>=0&&rowMask<maskReader[0].nrOfRow());
             try{
-              maskReader[0].readData(lineMask[0],GDT_Int16,static_cast<int>(rowMask));
+              maskReader[0].readData(lineMask[0],static_cast<int>(rowMask));
             }
             catch(string errorstring){
               cerr << errorstring << endl;
@@ -380,7 +380,7 @@ int main(int argc, char *argv[])
       //write buffer lineOutput to output file
       try{
         for(int iband=0;iband<outputWriter.nrOfBand();++iband)
-          outputWriter.writeData(lineOutput[iband],GDT_Float64,irow,iband);
+          outputWriter.writeData(lineOutput[iband],irow,iband);
       }
       catch(string errorstring){
         cerr << errorstring << endl;
diff --git a/src/apps/pkregann b/src/apps/pkregann
new file mode 100755
index 0000000..8da002f
--- /dev/null
+++ b/src/apps/pkregann
@@ -0,0 +1,228 @@
+#! /bin/bash
+
+# pkregann - temporary wrapper script for .libs/pkregann
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# The pkregann program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command="(cd /home/kempenep/pktools/src/apps; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \ [...]
+
+# This environment variable determines our operation mode.
+if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='2.4.6'
+  notinst_deplibs=' ../../src/algorithms/libalgorithms.la ../../src/imageclasses/libimageClasses.la ../../src/fileclasses/libfileClasses.la'
+else
+  # When we are sourced in execute mode, $file and $ECHO are already set.
+  if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+    file="$0"
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+    ECHO="printf %s\\n"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string --lt-
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's ../../libtool value, followed by no.
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=$0
+  shift
+  for lt_opt
+  do
+    case "$lt_opt" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
+        test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
+        lt_dump_F=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%^.*/%%'`
+        cat "$lt_dump_D/$lt_dump_F"
+        exit 0
+      ;;
+    --lt-*)
+        $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n "$lt_option_debug"; then
+    echo "pkregann:pkregann:$LINENO: libtool wrapper (GNU libtool) 2.4.6 Debian-2.4.6-0.1" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    $ECHO "pkregann:pkregann:$LINENO: newargv[$lt_dump_args_N]: $lt_arg"
+    lt_dump_args_N=`expr $lt_dump_args_N + 1`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+
+      if test -n "$lt_option_debug"; then
+        $ECHO "pkregann:pkregann:$LINENO: newargv[0]: $progdir/$program" 1>&2
+        func_lt_dump_args ${1+"$@"} 1>&2
+      fi
+      exec "$progdir/$program" ${1+"$@"}
+
+      $ECHO "$0: cannot exec $program $*" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from $@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case " $* " in
+  *\ --lt-*)
+    for lt_wr_arg
+    do
+      case $lt_wr_arg in
+      --lt-*) ;;
+      *) set x "$@" "$lt_wr_arg"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core ${1+"$@"}
+}
+
+  # Parse options
+  func_parse_lt_options "$0" ${1+"$@"}
+
+  # Find the directory that this script lives in.
+  thisdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+  test "x$thisdir" = "x$file" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'`
+  while test -n "$file"; do
+    destdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+
+    # If there was a directory component, then change thisdir.
+    if test "x$destdir" != "x$file"; then
+      case "$destdir" in
+      [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
+      *) thisdir="$thisdir/$destdir" ;;
+      esac
+    fi
+
+    file=`$ECHO "$file" | /bin/sed 's%^.*/%%'`
+    file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
+  if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
+    # special case for '.'
+    if test "$thisdir" = "."; then
+      thisdir=`pwd`
+    fi
+    # remove .libs from thisdir
+    case "$thisdir" in
+    *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /bin/sed 's%[\\/][^\\/]*$%%'` ;;
+    .libs )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=`cd "$thisdir" && pwd`
+  test -n "$absdir" && thisdir="$absdir"
+
+  program=lt-'pkregann'
+  progdir="$thisdir/.libs"
+
+  if test ! -f "$progdir/$program" ||
+     { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /bin/sed 1q`; \
+       test "X$file" != "X$progdir/$program"; }; then
+
+    file="$$-$program"
+
+    if test ! -d "$progdir"; then
+      mkdir "$progdir"
+    else
+      rm -f "$progdir/$file"
+    fi
+
+    # relink executable if necessary
+    if test -n "$relink_command"; then
+      if relink_command_output=`eval $relink_command 2>&1`; then :
+      else
+	$ECHO "$relink_command_output" >&2
+	rm -f "$progdir/$file"
+	exit 1
+      fi
+    fi
+
+    mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
+    { rm -f "$progdir/$program";
+      mv -f "$progdir/$file" "$progdir/$program"; }
+    rm -f "$progdir/$file"
+  fi
+
+  if test -f "$progdir/$program"; then
+    if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+      # Run the actual program with our arguments.
+      func_exec_program ${1+"$@"}
+    fi
+  else
+    # The program doesn't exist.
+    $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2
+    $ECHO "This script is just a wrapper for $program." 1>&2
+    $ECHO "See the libtool documentation for more information." 1>&2
+    exit 1
+  fi
+fi
diff --git a/src/apps/pksensormodel.h b/src/apps/pksensormodel.h
new file mode 100644
index 0000000..a305a66
--- /dev/null
+++ b/src/apps/pksensormodel.h
@@ -0,0 +1,82 @@
+/**********************************************************************
+pksensormodel.h: program to calculate geometric position based on row (sensor), col (sensor), roll, pitch, yaw and lens coordinates
+Copyright (C) 2008-2014 Pieter Kempeneers
+
+This file is part of pktools
+
+pktools is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+pktools is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with pktools.  If not, see <http://www.gnu.org/licenses/>.
+***********************************************************************/
+#ifndef _PKSENSORMODEL_H_
+#define _PKSENSORMODEL_H_
+#include <vector>
+// #include <gslwrap/matrix_double.h>
+#include <armadillo>
+#include "models/SensorModel.h"
+
+double objFunction(const std::vector<double> &x, std::vector<double> &grad, void *my_func_data);
+
+class DataModel{
+   public:
+  DataModel() : m_threshold(0){};
+  DataModel(const SensorModel::SensorModel& theModel) : m_model(theModel), m_threshold(0){};
+  ~DataModel(){};
+  void setModel(const SensorModel::SensorModel& theModel){m_model=theModel;};
+  const SensorModel::SensorModel& getModel() const {return m_model;};
+  int getSize() const{return m_posGCP.size();};
+  void setThreshold(double theThreshold){m_threshold=theThreshold;};
+  double getThreshold(){return m_threshold;};
+  int erase(int index){
+    m_attPlatform.erase(m_attPlatform.begin()+index);
+    m_posPlatform.erase(m_posPlatform.begin()+index);
+    m_posGCP.erase(m_posGCP.begin()+index);
+    m_row.erase(m_row.begin()+index);
+    m_col.erase(m_col.begin()+index);
+  };
+  int pushAttPlatform(const arma::vec& atp){m_attPlatform.push_back(atp); return m_attPlatform.size();};
+  int pushPosPlatform(const arma::vec& ppl){m_posPlatform.push_back(ppl); return m_posPlatform.size();};
+  int pushPosGCP(const arma::vec& pgcp){m_posGCP.push_back(pgcp); return m_posGCP.size();};
+  int pushRow(int r){m_row.push_back(r); return m_row.size();};
+  int pushCol(int c){m_col.push_back(c); return m_col.size();};
+  arma::vec getPosPlatform(int index) const{assert(index>=0);assert(index<m_posPlatform.size());return(m_posPlatform[index]);};
+  arma::vec getAttPlatform(int index) const{assert(index>=0);assert(index<m_attPlatform.size());return(m_attPlatform[index]);};
+  arma::vec getPosGCP(int index) const{assert(index>=0);assert(index<m_posGCP.size());return(m_posGCP[index]);};
+  arma::vec getPos(int index) const{
+    assert(index>=0);
+    assert(index<m_posPlatform.size());
+    assert(index<m_attPlatform.size());
+    assert(index<m_row.size());
+    assert(index<m_col.size());
+    assert(index<m_posGCP.size());
+    return(m_model.getPos(m_posPlatform[index],m_attPlatform[index],m_row[index],m_col[index],m_posGCP[index][2]));
+  };
+  double getDistGeo(int index) const{assert(index>=0);assert(index<m_posGCP.size());return(m_model.getDistGeo(m_posGCP[index],getPos(index)));};
+  int getRow(int index) const{assert(index>=0);assert(index<m_row.size());return(m_row[index]);};
+  int getCol(int index) const{assert(index>=0);assert(index<m_col.size());return(m_col[index]);};
+  double getHeight(int index) const{assert(index>=0);assert(index<m_posGCP.size());return(m_posGCP[index][2]);};
+  void setBoresightAtt(const arma::vec& bc_att){
+    m_model.setBoresightAtt(bc_att);
+    // for(int index=0;index<m_attPlatform.size();++index)
+    //   m_attPlatform[index]+=bc_att;
+  };
+   private:
+  SensorModel::SensorModel m_model;
+  vector<arma::vec> m_posPlatform;
+  vector<arma::vec> m_posGCP;
+  vector<arma::vec> m_attPlatform;
+  vector<int> m_row;
+  vector<int> m_col;
+  double m_threshold;
+};
+
+#endif //_PKSENSORMODEL_H_
diff --git a/src/apps/pksetmask b/src/apps/pksetmask
new file mode 100755
index 0000000..4038be7
--- /dev/null
+++ b/src/apps/pksetmask
@@ -0,0 +1,228 @@
+#! /bin/bash
+
+# pksetmask - temporary wrapper script for .libs/pksetmask
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# The pksetmask program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command="(cd /home/kempenep/pktools/src/apps; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \ [...]
+
+# This environment variable determines our operation mode.
+if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='2.4.6'
+  notinst_deplibs=' ../../src/algorithms/libalgorithms.la ../../src/imageclasses/libimageClasses.la ../../src/fileclasses/libfileClasses.la'
+else
+  # When we are sourced in execute mode, $file and $ECHO are already set.
+  if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+    file="$0"
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+    ECHO="printf %s\\n"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string --lt-
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's ../../libtool value, followed by no.
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=$0
+  shift
+  for lt_opt
+  do
+    case "$lt_opt" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
+        test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
+        lt_dump_F=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%^.*/%%'`
+        cat "$lt_dump_D/$lt_dump_F"
+        exit 0
+      ;;
+    --lt-*)
+        $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n "$lt_option_debug"; then
+    echo "pksetmask:pksetmask:$LINENO: libtool wrapper (GNU libtool) 2.4.6 Debian-2.4.6-0.1" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    $ECHO "pksetmask:pksetmask:$LINENO: newargv[$lt_dump_args_N]: $lt_arg"
+    lt_dump_args_N=`expr $lt_dump_args_N + 1`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+
+      if test -n "$lt_option_debug"; then
+        $ECHO "pksetmask:pksetmask:$LINENO: newargv[0]: $progdir/$program" 1>&2
+        func_lt_dump_args ${1+"$@"} 1>&2
+      fi
+      exec "$progdir/$program" ${1+"$@"}
+
+      $ECHO "$0: cannot exec $program $*" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from $@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case " $* " in
+  *\ --lt-*)
+    for lt_wr_arg
+    do
+      case $lt_wr_arg in
+      --lt-*) ;;
+      *) set x "$@" "$lt_wr_arg"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core ${1+"$@"}
+}
+
+  # Parse options
+  func_parse_lt_options "$0" ${1+"$@"}
+
+  # Find the directory that this script lives in.
+  thisdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+  test "x$thisdir" = "x$file" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'`
+  while test -n "$file"; do
+    destdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+
+    # If there was a directory component, then change thisdir.
+    if test "x$destdir" != "x$file"; then
+      case "$destdir" in
+      [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
+      *) thisdir="$thisdir/$destdir" ;;
+      esac
+    fi
+
+    file=`$ECHO "$file" | /bin/sed 's%^.*/%%'`
+    file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
+  if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
+    # special case for '.'
+    if test "$thisdir" = "."; then
+      thisdir=`pwd`
+    fi
+    # remove .libs from thisdir
+    case "$thisdir" in
+    *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /bin/sed 's%[\\/][^\\/]*$%%'` ;;
+    .libs )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=`cd "$thisdir" && pwd`
+  test -n "$absdir" && thisdir="$absdir"
+
+  program=lt-'pksetmask'
+  progdir="$thisdir/.libs"
+
+  if test ! -f "$progdir/$program" ||
+     { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /bin/sed 1q`; \
+       test "X$file" != "X$progdir/$program"; }; then
+
+    file="$$-$program"
+
+    if test ! -d "$progdir"; then
+      mkdir "$progdir"
+    else
+      rm -f "$progdir/$file"
+    fi
+
+    # relink executable if necessary
+    if test -n "$relink_command"; then
+      if relink_command_output=`eval $relink_command 2>&1`; then :
+      else
+	$ECHO "$relink_command_output" >&2
+	rm -f "$progdir/$file"
+	exit 1
+      fi
+    fi
+
+    mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
+    { rm -f "$progdir/$program";
+      mv -f "$progdir/$file" "$progdir/$program"; }
+    rm -f "$progdir/$file"
+  fi
+
+  if test -f "$progdir/$program"; then
+    if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+      # Run the actual program with our arguments.
+      func_exec_program ${1+"$@"}
+    fi
+  else
+    # The program doesn't exist.
+    $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2
+    $ECHO "This script is just a wrapper for $program." 1>&2
+    $ECHO "See the libtool documentation for more information." 1>&2
+    exit 1
+  fi
+fi
diff --git a/src/apps/pksetmask.cc b/src/apps/pksetmask.cc
index 4a85fed..948feef 100644
--- a/src/apps/pksetmask.cc
+++ b/src/apps/pksetmask.cc
@@ -228,7 +228,7 @@ int main(int argc, char *argv[])
     //read line in lineInput buffer
     for(int iband=0;iband<inputReader.nrOfBand();++iband){
       try{
-        inputReader.readData(lineInput[iband],GDT_Float64,irow,iband);
+        inputReader.readData(lineInput[iband],irow,iband);
       }
       catch(string errorstring){
         cerr << errorstring << endl;
@@ -249,8 +249,8 @@ int main(int argc, char *argv[])
 	    if(static_cast<int>(rowMask)!=static_cast<int>(oldRowMask[imask])){
 	      assert(rowMask>=0&&rowMask<maskReader[imask].nrOfRow());
 	      try{
-		// maskReader[imask].readData(lineMask[imask],GDT_Int32,static_cast<int>(rowMask));
-		maskReader[imask].readData(lineMask[imask],GDT_Float64,static_cast<int>(rowMask),mskband_opt[imask]);
+		// maskReader[imask].readData(lineMask[imask],static_cast<int>(rowMask));
+		maskReader[imask].readData(lineMask[imask],static_cast<int>(rowMask),mskband_opt[imask]);
 	      }
 	      catch(string errorstring){
 		cerr << errorstring << endl;
@@ -310,8 +310,8 @@ int main(int argc, char *argv[])
           if(static_cast<int>(rowMask)!=static_cast<int>(oldRowMask[0])){
             assert(rowMask>=0&&rowMask<maskReader[0].nrOfRow());
             try{
-              // maskReader[0].readData(lineMask[0],GDT_Int32,static_cast<int>(rowMask));
-              maskReader[0].readData(lineMask[0],GDT_Float64,static_cast<int>(rowMask),mskband_opt[0]);
+              // maskReader[0].readData(lineMask[0],static_cast<int>(rowMask));
+              maskReader[0].readData(lineMask[0],static_cast<int>(rowMask),mskband_opt[0]);
 	    }
             catch(string errorstring){
               cerr << errorstring << endl;
@@ -356,7 +356,7 @@ int main(int argc, char *argv[])
     //write buffer lineOutput to output file
     for(int iband=0;iband<outputWriter.nrOfBand();++iband){
       try{
-        outputWriter.writeData(lineOutput[iband],GDT_Float64,irow,iband);
+        outputWriter.writeData(lineOutput[iband],irow,iband);
       }
       catch(string errorstring){
         cerr << errorstring << endl;
diff --git a/src/apps/pksieve b/src/apps/pksieve
new file mode 100755
index 0000000..e9ab36d
--- /dev/null
+++ b/src/apps/pksieve
@@ -0,0 +1,228 @@
+#! /bin/bash
+
+# pksieve - temporary wrapper script for .libs/pksieve
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# The pksieve program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command="(cd /home/kempenep/pktools/src/apps; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \ [...]
+
+# This environment variable determines our operation mode.
+if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='2.4.6'
+  notinst_deplibs=' ../../src/algorithms/libalgorithms.la ../../src/imageclasses/libimageClasses.la ../../src/fileclasses/libfileClasses.la'
+else
+  # When we are sourced in execute mode, $file and $ECHO are already set.
+  if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+    file="$0"
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+    ECHO="printf %s\\n"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string --lt-
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's ../../libtool value, followed by no.
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=$0
+  shift
+  for lt_opt
+  do
+    case "$lt_opt" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
+        test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
+        lt_dump_F=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%^.*/%%'`
+        cat "$lt_dump_D/$lt_dump_F"
+        exit 0
+      ;;
+    --lt-*)
+        $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n "$lt_option_debug"; then
+    echo "pksieve:pksieve:$LINENO: libtool wrapper (GNU libtool) 2.4.6 Debian-2.4.6-0.1" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    $ECHO "pksieve:pksieve:$LINENO: newargv[$lt_dump_args_N]: $lt_arg"
+    lt_dump_args_N=`expr $lt_dump_args_N + 1`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+
+      if test -n "$lt_option_debug"; then
+        $ECHO "pksieve:pksieve:$LINENO: newargv[0]: $progdir/$program" 1>&2
+        func_lt_dump_args ${1+"$@"} 1>&2
+      fi
+      exec "$progdir/$program" ${1+"$@"}
+
+      $ECHO "$0: cannot exec $program $*" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from $@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case " $* " in
+  *\ --lt-*)
+    for lt_wr_arg
+    do
+      case $lt_wr_arg in
+      --lt-*) ;;
+      *) set x "$@" "$lt_wr_arg"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core ${1+"$@"}
+}
+
+  # Parse options
+  func_parse_lt_options "$0" ${1+"$@"}
+
+  # Find the directory that this script lives in.
+  thisdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+  test "x$thisdir" = "x$file" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'`
+  while test -n "$file"; do
+    destdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+
+    # If there was a directory component, then change thisdir.
+    if test "x$destdir" != "x$file"; then
+      case "$destdir" in
+      [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
+      *) thisdir="$thisdir/$destdir" ;;
+      esac
+    fi
+
+    file=`$ECHO "$file" | /bin/sed 's%^.*/%%'`
+    file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
+  if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
+    # special case for '.'
+    if test "$thisdir" = "."; then
+      thisdir=`pwd`
+    fi
+    # remove .libs from thisdir
+    case "$thisdir" in
+    *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /bin/sed 's%[\\/][^\\/]*$%%'` ;;
+    .libs )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=`cd "$thisdir" && pwd`
+  test -n "$absdir" && thisdir="$absdir"
+
+  program=lt-'pksieve'
+  progdir="$thisdir/.libs"
+
+  if test ! -f "$progdir/$program" ||
+     { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /bin/sed 1q`; \
+       test "X$file" != "X$progdir/$program"; }; then
+
+    file="$$-$program"
+
+    if test ! -d "$progdir"; then
+      mkdir "$progdir"
+    else
+      rm -f "$progdir/$file"
+    fi
+
+    # relink executable if necessary
+    if test -n "$relink_command"; then
+      if relink_command_output=`eval $relink_command 2>&1`; then :
+      else
+	$ECHO "$relink_command_output" >&2
+	rm -f "$progdir/$file"
+	exit 1
+      fi
+    fi
+
+    mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
+    { rm -f "$progdir/$program";
+      mv -f "$progdir/$file" "$progdir/$program"; }
+    rm -f "$progdir/$file"
+  fi
+
+  if test -f "$progdir/$program"; then
+    if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+      # Run the actual program with our arguments.
+      func_exec_program ${1+"$@"}
+    fi
+  else
+    # The program doesn't exist.
+    $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2
+    $ECHO "This script is just a wrapper for $program." 1>&2
+    $ECHO "See the libtool documentation for more information." 1>&2
+    exit 1
+  fi
+fi
diff --git a/src/apps/pkstat b/src/apps/pkstat
new file mode 100755
index 0000000..3975422
--- /dev/null
+++ b/src/apps/pkstat
@@ -0,0 +1,228 @@
+#! /bin/bash
+
+# pkstat - temporary wrapper script for .libs/pkstat
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# The pkstat program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command="(cd /home/kempenep/pktools/src/apps; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \ [...]
+
+# This environment variable determines our operation mode.
+if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='2.4.6'
+  notinst_deplibs=' ../../src/algorithms/libalgorithms.la ../../src/imageclasses/libimageClasses.la ../../src/fileclasses/libfileClasses.la'
+else
+  # When we are sourced in execute mode, $file and $ECHO are already set.
+  if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+    file="$0"
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+    ECHO="printf %s\\n"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string --lt-
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's ../../libtool value, followed by no.
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=$0
+  shift
+  for lt_opt
+  do
+    case "$lt_opt" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
+        test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
+        lt_dump_F=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%^.*/%%'`
+        cat "$lt_dump_D/$lt_dump_F"
+        exit 0
+      ;;
+    --lt-*)
+        $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n "$lt_option_debug"; then
+    echo "pkstat:pkstat:$LINENO: libtool wrapper (GNU libtool) 2.4.6 Debian-2.4.6-0.1" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    $ECHO "pkstat:pkstat:$LINENO: newargv[$lt_dump_args_N]: $lt_arg"
+    lt_dump_args_N=`expr $lt_dump_args_N + 1`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+
+      if test -n "$lt_option_debug"; then
+        $ECHO "pkstat:pkstat:$LINENO: newargv[0]: $progdir/$program" 1>&2
+        func_lt_dump_args ${1+"$@"} 1>&2
+      fi
+      exec "$progdir/$program" ${1+"$@"}
+
+      $ECHO "$0: cannot exec $program $*" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from $@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case " $* " in
+  *\ --lt-*)
+    for lt_wr_arg
+    do
+      case $lt_wr_arg in
+      --lt-*) ;;
+      *) set x "$@" "$lt_wr_arg"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core ${1+"$@"}
+}
+
+  # Parse options
+  func_parse_lt_options "$0" ${1+"$@"}
+
+  # Find the directory that this script lives in.
+  thisdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+  test "x$thisdir" = "x$file" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'`
+  while test -n "$file"; do
+    destdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+
+    # If there was a directory component, then change thisdir.
+    if test "x$destdir" != "x$file"; then
+      case "$destdir" in
+      [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
+      *) thisdir="$thisdir/$destdir" ;;
+      esac
+    fi
+
+    file=`$ECHO "$file" | /bin/sed 's%^.*/%%'`
+    file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
+  if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
+    # special case for '.'
+    if test "$thisdir" = "."; then
+      thisdir=`pwd`
+    fi
+    # remove .libs from thisdir
+    case "$thisdir" in
+    *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /bin/sed 's%[\\/][^\\/]*$%%'` ;;
+    .libs )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=`cd "$thisdir" && pwd`
+  test -n "$absdir" && thisdir="$absdir"
+
+  program=lt-'pkstat'
+  progdir="$thisdir/.libs"
+
+  if test ! -f "$progdir/$program" ||
+     { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /bin/sed 1q`; \
+       test "X$file" != "X$progdir/$program"; }; then
+
+    file="$$-$program"
+
+    if test ! -d "$progdir"; then
+      mkdir "$progdir"
+    else
+      rm -f "$progdir/$file"
+    fi
+
+    # relink executable if necessary
+    if test -n "$relink_command"; then
+      if relink_command_output=`eval $relink_command 2>&1`; then :
+      else
+	$ECHO "$relink_command_output" >&2
+	rm -f "$progdir/$file"
+	exit 1
+      fi
+    fi
+
+    mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
+    { rm -f "$progdir/$program";
+      mv -f "$progdir/$file" "$progdir/$program"; }
+    rm -f "$progdir/$file"
+  fi
+
+  if test -f "$progdir/$program"; then
+    if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+      # Run the actual program with our arguments.
+      func_exec_program ${1+"$@"}
+    fi
+  else
+    # The program doesn't exist.
+    $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2
+    $ECHO "This script is just a wrapper for $program." 1>&2
+    $ECHO "See the libtool documentation for more information." 1>&2
+    exit 1
+  fi
+fi
diff --git a/src/apps/pkstat.cc b/src/apps/pkstat.cc
index e980351..c2af39f 100644
--- a/src/apps/pkstat.cc
+++ b/src/apps/pkstat.cc
@@ -249,7 +249,8 @@ int main(int argc, char *argv[])
 
     int nband=band_opt.size();
     for(int iband=0;iband<nband;++iband){
-
+      minValue=(src_min_opt.size())? src_min_opt[0] : 0;
+      maxValue=(src_max_opt.size())? src_max_opt[0] : 0;
       for(int inodata=0;inodata<nodata_opt.size();++inodata){
 	if(!inodata)
 	  imgReader.GDALSetNoDataValue(nodata_opt[0],band_opt[iband]);//only single no data can be set in GDALRasterBand (used for ComputeStatistics)
@@ -264,7 +265,7 @@ int main(int argc, char *argv[])
 	statfactory::StatFactory stat;
 	vector<double> readBuffer;
 	double varValue;
-	imgReader.readDataBlock(readBuffer, GDT_Float64, 0, imgReader.nrOfCol()-1, 0, imgReader.nrOfRow()-1, band_opt[0]);
+	imgReader.readDataBlock(readBuffer,  0, imgReader.nrOfCol()-1, 0, imgReader.nrOfRow()-1, band_opt[0]);
 	stat.setNoDataValues(nodata_opt);
 	stat.meanVar(readBuffer,meanValue,varValue);
 	medianValue=stat.median(readBuffer);
@@ -436,8 +437,8 @@ int main(int argc, char *argv[])
       for(int irow=0;irow<imgReader.nrOfRow();++irow){
         if(irow%down_opt[0])
           continue;
-	imgReader.readData(inputX,GDT_Float64,irow,band_opt[0]);
-	imgReader.readData(inputY,GDT_Float64,irow,band_opt[1]);
+	imgReader.readData(inputX,irow,band_opt[0]);
+	imgReader.readData(inputY,irow,band_opt[1]);
 	for(int icol=0;icol<imgReader.nrOfCol();++icol){
           if(icol%down_opt[0])
             continue;
@@ -543,8 +544,8 @@ int main(int argc, char *argv[])
       double nValid=0;
       double nPixel=imgReader.nrOfCol()/down_opt[0]*imgReader.nrOfRow()/down_opt[0];
       for(int irow;irow<imgReader.nrOfRow();irow+=down_opt[0]){
-	imgReader.readData(xBuffer,GDT_Float64,irow,band_opt[0]);
-	imgReader.readData(yBuffer,GDT_Float64,irow,band_opt[1]);
+	imgReader.readData(xBuffer,irow,band_opt[0]);
+	imgReader.readData(yBuffer,irow,band_opt[1]);
 	for(int icol;icol<imgReader.nrOfCol();icol+=down_opt[0]){
 	  double xValue=xBuffer[icol];
 	  double yValue=yBuffer[icol];
@@ -622,8 +623,8 @@ int main(int argc, char *argv[])
   //     imgReader1.image2geo(icol1,irow1,geoX,geoY);
   //     imgReader2.geo2image(geoX,geoY,icol2,irow2);
   //     irow2=static_cast<int>(irow2);
-  //     imgReader1.readData(xBuffer,GDT_Float64,irow1,band_opt[0]);
-  //     imgReader2.readData(yBuffer,GDT_Float64,irow2,band_opt[1]);
+  //     imgReader1.readData(xBuffer,irow1,band_opt[0]);
+  //     imgReader2.readData(yBuffer,irow2,band_opt[1]);
   //     for(int icol;icol<imgReader.nrOfCol();icol+=down_opt[0]){
   // 	icol1=icol;
   // 	imgReader1.image2geo(icol1,irow1,geoX,geoY);
@@ -954,8 +955,8 @@ int main(int argc, char *argv[])
       imgReader1.image2geo(icol1,irow1,geoX,geoY);
       imgReader2.geo2image(geoX,geoY,icol2,irow2);
       irow2=static_cast<int>(irow2);
-      imgReader1.readData(inputX,GDT_Float64,irow1,band_opt[0]);
-      imgReader2.readData(inputY,GDT_Float64,irow2,band_opt[1]);
+      imgReader1.readData(inputX,irow1,band_opt[0]);
+      imgReader2.readData(inputY,irow2,band_opt[1]);
       for(int icol=0;icol<imgReader.nrOfCol();++icol){
 	if(icol%down_opt[0])
 	  continue;
@@ -1060,8 +1061,8 @@ int main(int argc, char *argv[])
 // for(irow=0;irow<classReader.nrOfRow();++irow){
 //   if(irow%down_opt[0])
 //     continue;
-//   // classReader.readData(classBuffer,GDT_Int32,irow);
-//   classReader.readData(classBuffer,GDT_Float64,irow);
+//   // classReader.readData(classBuffer,irow);
+//   classReader.readData(classBuffer,irow);
 //   double x,y;//geo coordinates
 //   double iimg,jimg;//image coordinates in img image
 //   for(icol=0;icol<classReader.nrOfCol();++icol){
diff --git a/src/apps/pkstatascii b/src/apps/pkstatascii
new file mode 100755
index 0000000..0babe3d
--- /dev/null
+++ b/src/apps/pkstatascii
@@ -0,0 +1,228 @@
+#! /bin/bash
+
+# pkstatascii - temporary wrapper script for .libs/pkstatascii
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# The pkstatascii program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command="(cd /home/kempenep/pktools/src/apps; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \ [...]
+
+# This environment variable determines our operation mode.
+if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='2.4.6'
+  notinst_deplibs=' ../../src/algorithms/libalgorithms.la ../../src/imageclasses/libimageClasses.la ../../src/fileclasses/libfileClasses.la'
+else
+  # When we are sourced in execute mode, $file and $ECHO are already set.
+  if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+    file="$0"
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+    ECHO="printf %s\\n"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string --lt-
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's ../../libtool value, followed by no.
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=$0
+  shift
+  for lt_opt
+  do
+    case "$lt_opt" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
+        test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
+        lt_dump_F=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%^.*/%%'`
+        cat "$lt_dump_D/$lt_dump_F"
+        exit 0
+      ;;
+    --lt-*)
+        $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n "$lt_option_debug"; then
+    echo "pkstatascii:pkstatascii:$LINENO: libtool wrapper (GNU libtool) 2.4.6 Debian-2.4.6-0.1" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    $ECHO "pkstatascii:pkstatascii:$LINENO: newargv[$lt_dump_args_N]: $lt_arg"
+    lt_dump_args_N=`expr $lt_dump_args_N + 1`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+
+      if test -n "$lt_option_debug"; then
+        $ECHO "pkstatascii:pkstatascii:$LINENO: newargv[0]: $progdir/$program" 1>&2
+        func_lt_dump_args ${1+"$@"} 1>&2
+      fi
+      exec "$progdir/$program" ${1+"$@"}
+
+      $ECHO "$0: cannot exec $program $*" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from $@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case " $* " in
+  *\ --lt-*)
+    for lt_wr_arg
+    do
+      case $lt_wr_arg in
+      --lt-*) ;;
+      *) set x "$@" "$lt_wr_arg"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core ${1+"$@"}
+}
+
+  # Parse options
+  func_parse_lt_options "$0" ${1+"$@"}
+
+  # Find the directory that this script lives in.
+  thisdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+  test "x$thisdir" = "x$file" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'`
+  while test -n "$file"; do
+    destdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+
+    # If there was a directory component, then change thisdir.
+    if test "x$destdir" != "x$file"; then
+      case "$destdir" in
+      [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
+      *) thisdir="$thisdir/$destdir" ;;
+      esac
+    fi
+
+    file=`$ECHO "$file" | /bin/sed 's%^.*/%%'`
+    file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
+  if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
+    # special case for '.'
+    if test "$thisdir" = "."; then
+      thisdir=`pwd`
+    fi
+    # remove .libs from thisdir
+    case "$thisdir" in
+    *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /bin/sed 's%[\\/][^\\/]*$%%'` ;;
+    .libs )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=`cd "$thisdir" && pwd`
+  test -n "$absdir" && thisdir="$absdir"
+
+  program=lt-'pkstatascii'
+  progdir="$thisdir/.libs"
+
+  if test ! -f "$progdir/$program" ||
+     { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /bin/sed 1q`; \
+       test "X$file" != "X$progdir/$program"; }; then
+
+    file="$$-$program"
+
+    if test ! -d "$progdir"; then
+      mkdir "$progdir"
+    else
+      rm -f "$progdir/$file"
+    fi
+
+    # relink executable if necessary
+    if test -n "$relink_command"; then
+      if relink_command_output=`eval $relink_command 2>&1`; then :
+      else
+	$ECHO "$relink_command_output" >&2
+	rm -f "$progdir/$file"
+	exit 1
+      fi
+    fi
+
+    mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
+    { rm -f "$progdir/$program";
+      mv -f "$progdir/$file" "$progdir/$program"; }
+    rm -f "$progdir/$file"
+  fi
+
+  if test -f "$progdir/$program"; then
+    if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+      # Run the actual program with our arguments.
+      func_exec_program ${1+"$@"}
+    fi
+  else
+    # The program doesn't exist.
+    $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2
+    $ECHO "This script is just a wrapper for $program." 1>&2
+    $ECHO "See the libtool documentation for more information." 1>&2
+    exit 1
+  fi
+fi
diff --git a/src/apps/pkstatogr b/src/apps/pkstatogr
new file mode 100755
index 0000000..032a049
--- /dev/null
+++ b/src/apps/pkstatogr
@@ -0,0 +1,228 @@
+#! /bin/bash
+
+# pkstatogr - temporary wrapper script for .libs/pkstatogr
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# The pkstatogr program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command="(cd /home/kempenep/pktools/src/apps; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \ [...]
+
+# This environment variable determines our operation mode.
+if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='2.4.6'
+  notinst_deplibs=' ../../src/algorithms/libalgorithms.la ../../src/imageclasses/libimageClasses.la ../../src/fileclasses/libfileClasses.la'
+else
+  # When we are sourced in execute mode, $file and $ECHO are already set.
+  if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+    file="$0"
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+    ECHO="printf %s\\n"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string --lt-
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's ../../libtool value, followed by no.
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=$0
+  shift
+  for lt_opt
+  do
+    case "$lt_opt" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
+        test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
+        lt_dump_F=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%^.*/%%'`
+        cat "$lt_dump_D/$lt_dump_F"
+        exit 0
+      ;;
+    --lt-*)
+        $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n "$lt_option_debug"; then
+    echo "pkstatogr:pkstatogr:$LINENO: libtool wrapper (GNU libtool) 2.4.6 Debian-2.4.6-0.1" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    $ECHO "pkstatogr:pkstatogr:$LINENO: newargv[$lt_dump_args_N]: $lt_arg"
+    lt_dump_args_N=`expr $lt_dump_args_N + 1`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+
+      if test -n "$lt_option_debug"; then
+        $ECHO "pkstatogr:pkstatogr:$LINENO: newargv[0]: $progdir/$program" 1>&2
+        func_lt_dump_args ${1+"$@"} 1>&2
+      fi
+      exec "$progdir/$program" ${1+"$@"}
+
+      $ECHO "$0: cannot exec $program $*" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from $@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case " $* " in
+  *\ --lt-*)
+    for lt_wr_arg
+    do
+      case $lt_wr_arg in
+      --lt-*) ;;
+      *) set x "$@" "$lt_wr_arg"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core ${1+"$@"}
+}
+
+  # Parse options
+  func_parse_lt_options "$0" ${1+"$@"}
+
+  # Find the directory that this script lives in.
+  thisdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+  test "x$thisdir" = "x$file" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'`
+  while test -n "$file"; do
+    destdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+
+    # If there was a directory component, then change thisdir.
+    if test "x$destdir" != "x$file"; then
+      case "$destdir" in
+      [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
+      *) thisdir="$thisdir/$destdir" ;;
+      esac
+    fi
+
+    file=`$ECHO "$file" | /bin/sed 's%^.*/%%'`
+    file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
+  if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
+    # special case for '.'
+    if test "$thisdir" = "."; then
+      thisdir=`pwd`
+    fi
+    # remove .libs from thisdir
+    case "$thisdir" in
+    *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /bin/sed 's%[\\/][^\\/]*$%%'` ;;
+    .libs )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=`cd "$thisdir" && pwd`
+  test -n "$absdir" && thisdir="$absdir"
+
+  program=lt-'pkstatogr'
+  progdir="$thisdir/.libs"
+
+  if test ! -f "$progdir/$program" ||
+     { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /bin/sed 1q`; \
+       test "X$file" != "X$progdir/$program"; }; then
+
+    file="$$-$program"
+
+    if test ! -d "$progdir"; then
+      mkdir "$progdir"
+    else
+      rm -f "$progdir/$file"
+    fi
+
+    # relink executable if necessary
+    if test -n "$relink_command"; then
+      if relink_command_output=`eval $relink_command 2>&1`; then :
+      else
+	$ECHO "$relink_command_output" >&2
+	rm -f "$progdir/$file"
+	exit 1
+      fi
+    fi
+
+    mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
+    { rm -f "$progdir/$program";
+      mv -f "$progdir/$file" "$progdir/$program"; }
+    rm -f "$progdir/$file"
+  fi
+
+  if test -f "$progdir/$program"; then
+    if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+      # Run the actual program with our arguments.
+      func_exec_program ${1+"$@"}
+    fi
+  else
+    # The program doesn't exist.
+    $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2
+    $ECHO "This script is just a wrapper for $program." 1>&2
+    $ECHO "See the libtool documentation for more information." 1>&2
+    exit 1
+  fi
+fi
diff --git a/src/apps/pkstatprofile b/src/apps/pkstatprofile
new file mode 100755
index 0000000..c933fbd
--- /dev/null
+++ b/src/apps/pkstatprofile
@@ -0,0 +1,228 @@
+#! /bin/bash
+
+# pkstatprofile - temporary wrapper script for .libs/pkstatprofile
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# The pkstatprofile program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command="(cd /home/kempenep/pktools/src/apps; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \ [...]
+
+# This environment variable determines our operation mode.
+if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='2.4.6'
+  notinst_deplibs=' ../../src/algorithms/libalgorithms.la ../../src/imageclasses/libimageClasses.la ../../src/fileclasses/libfileClasses.la'
+else
+  # When we are sourced in execute mode, $file and $ECHO are already set.
+  if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+    file="$0"
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+    ECHO="printf %s\\n"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string --lt-
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's ../../libtool value, followed by no.
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=$0
+  shift
+  for lt_opt
+  do
+    case "$lt_opt" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
+        test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
+        lt_dump_F=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%^.*/%%'`
+        cat "$lt_dump_D/$lt_dump_F"
+        exit 0
+      ;;
+    --lt-*)
+        $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n "$lt_option_debug"; then
+    echo "pkstatprofile:pkstatprofile:$LINENO: libtool wrapper (GNU libtool) 2.4.6 Debian-2.4.6-0.1" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    $ECHO "pkstatprofile:pkstatprofile:$LINENO: newargv[$lt_dump_args_N]: $lt_arg"
+    lt_dump_args_N=`expr $lt_dump_args_N + 1`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+
+      if test -n "$lt_option_debug"; then
+        $ECHO "pkstatprofile:pkstatprofile:$LINENO: newargv[0]: $progdir/$program" 1>&2
+        func_lt_dump_args ${1+"$@"} 1>&2
+      fi
+      exec "$progdir/$program" ${1+"$@"}
+
+      $ECHO "$0: cannot exec $program $*" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from $@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case " $* " in
+  *\ --lt-*)
+    for lt_wr_arg
+    do
+      case $lt_wr_arg in
+      --lt-*) ;;
+      *) set x "$@" "$lt_wr_arg"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core ${1+"$@"}
+}
+
+  # Parse options
+  func_parse_lt_options "$0" ${1+"$@"}
+
+  # Find the directory that this script lives in.
+  thisdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+  test "x$thisdir" = "x$file" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'`
+  while test -n "$file"; do
+    destdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+
+    # If there was a directory component, then change thisdir.
+    if test "x$destdir" != "x$file"; then
+      case "$destdir" in
+      [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
+      *) thisdir="$thisdir/$destdir" ;;
+      esac
+    fi
+
+    file=`$ECHO "$file" | /bin/sed 's%^.*/%%'`
+    file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
+  if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
+    # special case for '.'
+    if test "$thisdir" = "."; then
+      thisdir=`pwd`
+    fi
+    # remove .libs from thisdir
+    case "$thisdir" in
+    *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /bin/sed 's%[\\/][^\\/]*$%%'` ;;
+    .libs )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=`cd "$thisdir" && pwd`
+  test -n "$absdir" && thisdir="$absdir"
+
+  program=lt-'pkstatprofile'
+  progdir="$thisdir/.libs"
+
+  if test ! -f "$progdir/$program" ||
+     { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /bin/sed 1q`; \
+       test "X$file" != "X$progdir/$program"; }; then
+
+    file="$$-$program"
+
+    if test ! -d "$progdir"; then
+      mkdir "$progdir"
+    else
+      rm -f "$progdir/$file"
+    fi
+
+    # relink executable if necessary
+    if test -n "$relink_command"; then
+      if relink_command_output=`eval $relink_command 2>&1`; then :
+      else
+	$ECHO "$relink_command_output" >&2
+	rm -f "$progdir/$file"
+	exit 1
+      fi
+    fi
+
+    mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
+    { rm -f "$progdir/$program";
+      mv -f "$progdir/$file" "$progdir/$program"; }
+    rm -f "$progdir/$file"
+  fi
+
+  if test -f "$progdir/$program"; then
+    if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+      # Run the actual program with our arguments.
+      func_exec_program ${1+"$@"}
+    fi
+  else
+    # The program doesn't exist.
+    $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2
+    $ECHO "This script is just a wrapper for $program." 1>&2
+    $ECHO "See the libtool documentation for more information." 1>&2
+    exit 1
+  fi
+fi
diff --git a/src/apps/pksvm b/src/apps/pksvm
new file mode 100755
index 0000000..8fb4f07
--- /dev/null
+++ b/src/apps/pksvm
@@ -0,0 +1,228 @@
+#! /bin/bash
+
+# pksvm - temporary wrapper script for .libs/pksvm
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# The pksvm program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command="(cd /home/kempenep/pktools/src/apps; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \ [...]
+
+# This environment variable determines our operation mode.
+if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='2.4.6'
+  notinst_deplibs=' ../../src/algorithms/libalgorithms.la ../../src/imageclasses/libimageClasses.la ../../src/fileclasses/libfileClasses.la'
+else
+  # When we are sourced in execute mode, $file and $ECHO are already set.
+  if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+    file="$0"
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+    ECHO="printf %s\\n"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string --lt-
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's ../../libtool value, followed by no.
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=$0
+  shift
+  for lt_opt
+  do
+    case "$lt_opt" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
+        test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
+        lt_dump_F=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%^.*/%%'`
+        cat "$lt_dump_D/$lt_dump_F"
+        exit 0
+      ;;
+    --lt-*)
+        $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n "$lt_option_debug"; then
+    echo "pksvm:pksvm:$LINENO: libtool wrapper (GNU libtool) 2.4.6 Debian-2.4.6-0.1" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    $ECHO "pksvm:pksvm:$LINENO: newargv[$lt_dump_args_N]: $lt_arg"
+    lt_dump_args_N=`expr $lt_dump_args_N + 1`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+
+      if test -n "$lt_option_debug"; then
+        $ECHO "pksvm:pksvm:$LINENO: newargv[0]: $progdir/$program" 1>&2
+        func_lt_dump_args ${1+"$@"} 1>&2
+      fi
+      exec "$progdir/$program" ${1+"$@"}
+
+      $ECHO "$0: cannot exec $program $*" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from $@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case " $* " in
+  *\ --lt-*)
+    for lt_wr_arg
+    do
+      case $lt_wr_arg in
+      --lt-*) ;;
+      *) set x "$@" "$lt_wr_arg"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core ${1+"$@"}
+}
+
+  # Parse options
+  func_parse_lt_options "$0" ${1+"$@"}
+
+  # Find the directory that this script lives in.
+  thisdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+  test "x$thisdir" = "x$file" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'`
+  while test -n "$file"; do
+    destdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
+
+    # If there was a directory component, then change thisdir.
+    if test "x$destdir" != "x$file"; then
+      case "$destdir" in
+      [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
+      *) thisdir="$thisdir/$destdir" ;;
+      esac
+    fi
+
+    file=`$ECHO "$file" | /bin/sed 's%^.*/%%'`
+    file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
+  if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
+    # special case for '.'
+    if test "$thisdir" = "."; then
+      thisdir=`pwd`
+    fi
+    # remove .libs from thisdir
+    case "$thisdir" in
+    *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /bin/sed 's%[\\/][^\\/]*$%%'` ;;
+    .libs )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=`cd "$thisdir" && pwd`
+  test -n "$absdir" && thisdir="$absdir"
+
+  program=lt-'pksvm'
+  progdir="$thisdir/.libs"
+
+  if test ! -f "$progdir/$program" ||
+     { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /bin/sed 1q`; \
+       test "X$file" != "X$progdir/$program"; }; then
+
+    file="$$-$program"
+
+    if test ! -d "$progdir"; then
+      mkdir "$progdir"
+    else
+      rm -f "$progdir/$file"
+    fi
+
+    # relink executable if necessary
+    if test -n "$relink_command"; then
+      if relink_command_output=`eval $relink_command 2>&1`; then :
+      else
+	$ECHO "$relink_command_output" >&2
+	rm -f "$progdir/$file"
+	exit 1
+      fi
+    fi
+
+    mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
+    { rm -f "$progdir/$program";
+      mv -f "$progdir/$file" "$progdir/$program"; }
+    rm -f "$progdir/$file"
+  fi
+
+  if test -f "$progdir/$program"; then
+    if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+      # Run the actual program with our arguments.
+      func_exec_program ${1+"$@"}
+    fi
+  else
+    # The program doesn't exist.
+    $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2
+    $ECHO "This script is just a wrapper for $program." 1>&2
+    $ECHO "See the libtool documentation for more information." 1>&2
+    exit 1
+  fi
+fi
diff --git a/src/apps/pksvm.cc b/src/apps/pksvm.cc
index a326762..eb91aed 100644
--- a/src/apps/pksvm.cc
+++ b/src/apps/pksvm.cc
@@ -901,7 +901,7 @@ int main(int argc, char *argv[])
               std::cout << "reading band " << band_opt[iband] << std::endl;
             assert(band_opt[iband]>=0);
             assert(band_opt[iband]<testImage.nrOfBand());
-            testImage.readData(buffer,GDT_Float32,iline,band_opt[iband]);
+            testImage.readData(buffer,iline,band_opt[iband]);
             for(int icol=0;icol<ncol;++icol)
               hpixel[icol].push_back(buffer[icol]);
           }
@@ -912,7 +912,7 @@ int main(int argc, char *argv[])
               std::cout << "reading band " << iband << std::endl;
             assert(iband>=0);
             assert(iband<testImage.nrOfBand());
-            testImage.readData(buffer,GDT_Float32,iline,iband);
+            testImage.readData(buffer,iline,iband);
             for(int icol=0;icol<ncol;++icol)
               hpixel[icol].push_back(buffer[icol]);
           }
@@ -935,7 +935,7 @@ int main(int argc, char *argv[])
 	  for(short iclass=0;iclass<nclass;++iclass){
 	    if(verbose_opt.size()>1)
 	      std::cout << "Reading " << priorimg_opt[0] << " band " << iclass << " line " << iline << std::endl;
-	    priorReader.readData(linePrior[iclass],GDT_Float32,iline,iclass);
+	    priorReader.readData(linePrior[iclass],iline,iclass);
 	  }
         }
         catch(string theError){
@@ -977,7 +977,7 @@ int main(int argc, char *argv[])
 	      assert(rowMask>=0&&rowMask<maskReader.nrOfRow());
 	      try{
 		// maskReader.readData(lineMask[imask],GDT_Int32,static_cast<int>(rowMask));
-		maskReader.readData(lineMask,GDT_Int16,static_cast<int>(rowMask));
+		maskReader.readData(lineMask,static_cast<int>(rowMask));
 	      }
 	      catch(string errorstring){
 		cerr << errorstring << endl;
@@ -1148,15 +1148,15 @@ int main(int argc, char *argv[])
       //----------------------------------- write output ------------------------------------------
       if(classBag_opt.size())
         for(int ibag=0;ibag<nbag;++ibag)
-          classImageBag.writeData(classBag[ibag],GDT_Byte,iline,ibag);
+          classImageBag.writeData(classBag[ibag],iline,ibag);
       if(prob_opt.size()){
         for(short iclass=0;iclass<nclass;++iclass)
-          probImage.writeData(probOut[iclass],GDT_Float32,iline,iclass);
+          probImage.writeData(probOut[iclass],iline,iclass);
       }
       if(entropy_opt.size()){
-        entropyImage.writeData(entropy,GDT_Float32,iline);
+        entropyImage.writeData(entropy,iline);
       }
-      classImageOut.writeData(classOut,GDT_Byte,iline);
+      classImageOut.writeData(classOut,iline);
       if(!verbose_opt[0]){
         progress=static_cast<float>(iline+1.0)/classImageOut.nrOfRow();
         pfnProgress(progress,pszMessage,pProgressArg);
@@ -1168,7 +1168,7 @@ int main(int argc, char *argv[])
 	std::map<string,double> pointMap;
 	for(int iband=0;iband<testImage.nrOfBand();++iband){
 	  double value;
-	  testImage.readData(value,GDT_Float64,static_cast<int>(activePoints[iactive].posx),static_cast<int>(activePoints[iactive].posy),iband);
+	  testImage.readData(value,static_cast<int>(activePoints[iactive].posx),static_cast<int>(activePoints[iactive].posy),iband);
 	  ostringstream fs;
 	  fs << "B" << iband;
 	  pointMap[fs.str()]=value;
diff --git a/src/base/Makefile.in b/src/base/Makefile
similarity index 72%
copy from src/base/Makefile.in
copy to src/base/Makefile
index 8ec796e..a0a0b9c 100644
--- a/src/base/Makefile.in
+++ b/src/base/Makefile
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
-# @configure_input@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# src/base/Makefile.  Generated from Makefile.in by configure.
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -12,15 +12,25 @@
 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 # PARTICULAR PURPOSE.
 
- at SET_MAKE@
+
 
 ###############################################################################
 # THE PROGRAMS TO BUILD
 ###############################################################################
 
 
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -65,10 +75,10 @@ am__make_running_with_option = \
   test $$has_opt = yes
 am__make_dryrun = (target_option=n; $(am__make_running_with_option))
 am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
+pkgdatadir = $(datadir)/pktools
+pkgincludedir = $(includedir)/pktools
+pkglibdir = $(libdir)/pktools
+pkglibexecdir = $(libexecdir)/pktools
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -81,12 +91,10 @@ POST_INSTALL = :
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
+build_triplet = x86_64-pc-linux-gnu
+host_triplet = x86_64-pc-linux-gnu
 noinst_PROGRAMS = pktestOption$(EXEEXT)
 subdir = src/base
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp $(libbase_la_HEADERS)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_lib_gdal.m4 \
 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
@@ -94,6 +102,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ax_lib_gdal.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(libbase_la_HEADERS) \
+	$(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -102,23 +112,23 @@ PROGRAMS = $(noinst_PROGRAMS)
 am_pktestOption_OBJECTS = pktestOption.$(OBJEXT)
 pktestOption_OBJECTS = $(am_pktestOption_OBJECTS)
 pktestOption_LDADD = $(LDADD)
-AM_V_lt = $(am__v_lt_ at AM_V@)
-am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
 am__v_lt_0 = --silent
 am__v_lt_1 = 
-AM_V_P = $(am__v_P_ at AM_V@)
-am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+AM_V_P = $(am__v_P_$(V))
+am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
 am__v_P_0 = false
 am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
 am__v_GEN_0 = @echo "  GEN     " $@;
 am__v_GEN_1 = 
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
 am__v_at_0 = @
 am__v_at_1 = 
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+DEFAULT_INCLUDES = -I. -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
 am__mv = mv -f
@@ -128,16 +138,16 @@ LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_ at AM_V@)
-am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+AM_V_CXX = $(am__v_CXX_$(V))
+am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY))
 am__v_CXX_0 = @echo "  CXX     " $@;
 am__v_CXX_1 = 
 CXXLD = $(CXX)
 CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
 	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
-am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+AM_V_CXXLD = $(am__v_CXXLD_$(V))
+am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY))
 am__v_CXXLD_0 = @echo "  CXXLD   " $@;
 am__v_CXXLD_1 = 
 SOURCES = $(pktestOption_SOURCES)
@@ -195,151 +205,152 @@ am__define_uniq_tagged_files = \
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_CXXFLAGS = -I$(top_srcdir)/src $(GDAL_CFLAGS) @AM_CXXFLAGS@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ACLOCAL = aclocal-1.15
+AMTAR = $${TAR-tar}
+AM_CXXFLAGS = -I$(top_srcdir)/src $(GDAL_CFLAGS) 
+AM_DEFAULT_VERBOSITY = 1
 
 # additional include pathes necessary to compile the C++ library
-AM_LDFLAGS = $(GDAL_LDFLAGS) @AM_LDFLAGS@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FANN_CFLAGS = @FANN_CFLAGS@
-FANN_LIBS = @FANN_LIBS@
-FC = @FC@
-FCFLAGS = @FCFLAGS@
-FGREP = @FGREP@
-GDAL_CFLAGS = @GDAL_CFLAGS@
-GDAL_CONFIG = @GDAL_CONFIG@
-GDAL_DEP_LDFLAGS = @GDAL_DEP_LDFLAGS@
-GDAL_LDFLAGS = @GDAL_LDFLAGS@
-GDAL_OGR_ENABLED = @GDAL_OGR_ENABLED@
-GDAL_VERSION = @GDAL_VERSION@
-GREP = @GREP@
-GSL_CFLAGS = @GSL_CFLAGS@
-GSL_LIBS = @GSL_LIBS@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LASCLASSES_OPT = @LASCLASSES_OPT@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NLOPT_CFLAGS = @NLOPT_CFLAGS@
-NLOPT_LIBS = @NLOPT_LIBS@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PKTOOLS_SO_VERSION = @PKTOOLS_SO_VERSION@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_FC = @ac_ct_FC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-#AM_CXXFLAGS = -I$(top_srcdir)/src @AM_CXXFLAGS@
+AM_LDFLAGS = $(GDAL_LDFLAGS) 
+AR = ar
+AUTOCONF = autoconf
+AUTOHEADER = autoheader
+AUTOMAKE = automake-1.15
+AWK = gawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -g -O2
+CPP = gcc -E
+CPPFLAGS = 
+CXX = g++
+CXXCPP = g++ -E
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS = -g -O2
+CYGPATH_W = echo
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+DLLTOOL = false
+DSYMUTIL = 
+DUMPBIN = 
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+FANN_CFLAGS = 
+FANN_LIBS = -lm -lfann
+FC = gfortran
+FCFLAGS = -g -O2
+FGREP = /bin/grep -F
+GDAL_CFLAGS = -I/usr/include/gdal
+GDAL_CONFIG = /usr/bin/gdal-config
+GDAL_DEP_LDFLAGS = -larmadillo -lproj -lpoppler -lfreexl -L/usr/lib/x86_64-linux-gnu -lgeos_c -lwebp -L/usr/lib -lepsilon -lodbc -lodbcinst -lkmlbase -lkmldom -lkmlengine -lkmlxsd -lkmlregionator -lexpat -lxerces-c -lpthread -lopenjp2 -ljasper -L/usr/lib -L/usr/lib/x86_64-linux-gnu/hdf5/serial -lnetcdf -lhdf5_hl -lhdf5 -lpthread -lz -ldl -lm -lcurl -L/usr/lib/x86_64-linux-gnu/hdf5/serial/lib -lhdf5 -lmfhdfalt -ldfalt -logdi -lgif -ljpeg -lpng -L/usr/lib/x86_64-linux-gnu -lpq -llzma -lz - [...]
+GDAL_LDFLAGS = -L/usr/lib -lgdal
+GDAL_OGR_ENABLED = yes
+GDAL_VERSION = 1.11.3
+GREP = /bin/grep
+GSL_CFLAGS = 
+GSL_LIBS = -lgsl -lgslcblas -lm
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+LASCLASSES_OPT = src/lasclasses
+LD = /usr/bin/ld -m elf_x86_64
+LDFLAGS = 
+LIBOBJS = 
+LIBS = 
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LIPO = 
+LN_S = ln -s
+LTLIBOBJS = 
+LT_SYS_LIBRARY_PATH = 
+MAKEINFO = makeinfo
+MANIFEST_TOOL = :
+MKDIR_P = /bin/mkdir -p
+NM = /usr/bin/nm -B
+NMEDIT = 
+OBJDUMP = objdump
+OBJEXT = o
+OTOOL = 
+OTOOL64 = 
+PACKAGE = pktools
+PACKAGE_BUGREPORT = kempenep at gmail.com
+PACKAGE_NAME = pktools
+PACKAGE_STRING = pktools 2.6.7
+PACKAGE_TARNAME = pktools
+PACKAGE_URL = 
+PACKAGE_VERSION = 2.6.7
+PATH_SEPARATOR = :
+PKG_CONFIG = /usr/bin/pkg-config
+PKG_CONFIG_LIBDIR = 
+PKG_CONFIG_PATH = 
+PKTOOLS_SO_VERSION = 1:6:0
+RANLIB = ranlib
+SED = /bin/sed
+SET_MAKE = 
+SHELL = /bin/bash
+STRIP = strip
+VERSION = 2.6.7
+abs_builddir = /home/kempenep/pktools/src/base
+abs_srcdir = /home/kempenep/pktools/src/base
+abs_top_builddir = /home/kempenep/pktools
+abs_top_srcdir = /home/kempenep/pktools
+ac_ct_AR = ar
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+ac_ct_DUMPBIN = 
+ac_ct_FC = gfortran
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = $${TAR-tar} chof - "$$tardir"
+am__untar = $${TAR-tar} xf -
+bindir = ${exec_prefix}/bin
+build = x86_64-pc-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = pc
+builddir = .
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = x86_64-pc-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = pc
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = ${SHELL} /home/kempenep/pktools/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = $(MKDIR_P)
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+runstatedir = ${localstatedir}/run
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = ${prefix}/etc
+target_alias = 
+top_build_prefix = ../../
+top_builddir = ../..
+top_srcdir = ../..
+#AM_CXXFLAGS = -I$(top_srcdir)/src 
 
 ###############################################################################
 # THE LIBRARIES TO BUILD
@@ -378,7 +389,6 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/base/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --foreign src/base/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -416,28 +426,28 @@ mostlyclean-compile:
 distclean-compile:
 	-rm -f *.tab.c
 
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pktestOption.Po at am__quote@
+include ./$(DEPDIR)/pktestOption.Po
 
 .cc.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	$(AM_V_CXX)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(CXXCOMPILE) -c -o $@ $<
 
 .cc.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	$(AM_V_CXX)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .cc.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+#	$(AM_V_CXX)source='$<' object='$@' libtool=yes \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(LTCXXCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -673,6 +683,8 @@ uninstall-am: uninstall-libbase_laHEADERS
 	pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
 	uninstall-libbase_laHEADERS
 
+.PRECIOUS: Makefile
+
 
 ###############################################################################
 # HEADERS USED FOR BUILDING BUT NOT TO BE INSTALLED
diff --git a/src/base/Makefile.in b/src/base/Makefile.in
index 8ec796e..2d2de44 100644
--- a/src/base/Makefile.in
+++ b/src/base/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -20,7 +20,17 @@
 
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -85,8 +95,6 @@ build_triplet = @build@
 host_triplet = @host@
 noinst_PROGRAMS = pktestOption$(EXEEXT)
 subdir = src/base
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp $(libbase_la_HEADERS)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_lib_gdal.m4 \
 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
@@ -94,6 +102,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ax_lib_gdal.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(libbase_la_HEADERS) \
+	$(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -195,6 +205,7 @@ am__define_uniq_tagged_files = \
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -256,11 +267,10 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
-NLOPT_CFLAGS = @NLOPT_CFLAGS@
-NLOPT_LIBS = @NLOPT_LIBS@
 NM = @NM@
 NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
@@ -331,6 +341,7 @@ pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -378,7 +389,6 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/base/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --foreign src/base/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -673,6 +683,8 @@ uninstall-am: uninstall-libbase_laHEADERS
 	pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
 	uninstall-libbase_laHEADERS
 
+.PRECIOUS: Makefile
+
 
 ###############################################################################
 # HEADERS USED FOR BUILDING BUT NOT TO BE INSTALLED
diff --git a/src/base/Optionpk.h b/src/base/Optionpk.h
index 45af285..9fb798b 100644
--- a/src/base/Optionpk.h
+++ b/src/base/Optionpk.h
@@ -118,6 +118,8 @@ public:
   void setHelp(const std::string& helpInfo){m_help=helpInfo;};
   ///hide option from short help -h (1) or make invisible to short and long help --help (2)
   void setHide(short hide){m_hide=hide;};
+  ///read option from command line (use for all options!), std::string implementation
+  bool retrieveOption(int argc, const std::vector<std::string>& argv);
   ///read option from command line (use for all options!)
   bool retrieveOption(int argc, char ** argv);
   ///print values for this option
@@ -234,14 +236,18 @@ template<class T> inline std::string Optionpk<T>::usage() const
   std::string longOption=m_longName;
   shortOption.insert(0,"-");
   longOption.insert(0,"--");
-  if(hasShortOption())
-    helpss << "   " << std::setiosflags(std::ios::left) << std::setw(4) << shortOption;
-  else
-    helpss << "   " << std::setiosflags(std::ios::left) << std::setw(4) << " ";
-  if(hasLongOption())
+  if(hasShortOption()){
+    helpss << "   " << std::setiosflags(std::ios::left) << std::setw(6) << shortOption;
+  }
+  else{
+    helpss << "   " << std::setiosflags(std::ios::left) << std::setw(6) << " ";
+  }
+  if(hasLongOption()){
     helpss << "   " << std::setiosflags(std::ios::left) << std::setw(20) << longOption;
-  else
+  }
+  else{
     helpss << "   " << std::setiosflags(std::ios::left) << std::setw(20) << " ";
+  }
   helpss << "   " << m_help;
   if(m_hasDefault)
     helpss << " (default: " << type2string<T>(m_defaultValue) << ")";
@@ -302,6 +308,77 @@ template<class T> inline Optionpk<T>::~Optionpk()
 /**
 make sure to call this function first before using the option in main program (or segmentation fault will occur...)
 **/
+template<class T> inline bool Optionpk<T>::retrieveOption(int argc, const std::vector<std::string>& argv){
+  bool noHelp=true;//return value, alert main program that hard coded option (help, version, license, doxygen) was invoked
+  std::string helpStringShort="-h";//short option for help (hard coded)
+  std::string helpStringLong="--help";//long option for help (hard coded)
+  std::string helpStringDoxygen="--doxygen";//option to create table of options ready to use for doxygen
+  std::string versionString="--version";//option to show current version
+  std::string licenseString="--license";//option to show current version
+  for(int i = 1; i < argc; ++i ){
+    std::string currentArgument;
+    std::string currentOption=argv[i];
+    std::string shortOption=m_shortName;
+    std::string longOption=m_longName;
+    shortOption.insert(0,"-");
+    longOption.insert(0,"--");
+    size_t foundEqual=currentOption.rfind("=");
+    if(foundEqual!=std::string::npos){
+      currentArgument=currentOption.substr(foundEqual+1);
+      currentOption=currentOption.substr(0,foundEqual);
+    }
+    if(!helpStringShort.compare(currentOption)){
+      if(m_hide<1)
+        std::cout << usage() << std::endl;
+      noHelp=false;
+    }
+    else if(!helpStringLong.compare(currentOption)){
+      if(m_hide<2)
+        std::cout << usage() << std::endl;
+      noHelp=false;
+    }
+    else if(!helpStringDoxygen.compare(currentOption)){
+      if(m_hide<2)
+        std::cout << usageDoxygen() << std::endl;
+      noHelp=false;
+    }
+    else if(!versionString.compare(currentOption)){
+      std::string theVersion="version ";
+      theVersion+=VERSION;
+      theVersion+=", Copyright (C) Pieter Kempeneers.\n\
+   This program comes with ABSOLUTELY NO WARRANTY; for details type use option -h.\n \
+   This is free software, and you are welcome to redistribute it\n      \
+   under certain conditions; use option --license for details.";
+      throw(theVersion);//no need to continue registering (break prevents from multiplication of version info)
+    }
+    else if(!licenseString.compare(currentOption)){
+      throw(getGPLv3License());
+    }
+    if(hasShortOption()&&!(shortOption.compare(currentOption))){//for -option
+      if(foundEqual!=std::string::npos)
+        this->push_back(string2type<T>(currentArgument));
+      else if(m_hasArgument && i < argc-1)
+        this->push_back(string2type<T>(argv[++i]));
+      else
+        this->push_back(string2type<T>("1"));
+    }
+    else if(hasLongOption()&&!(longOption.compare(currentOption))){//for --option
+      if(foundEqual!=std::string::npos)
+        this->push_back(string2type<T>(currentArgument));
+      else if(m_hasArgument && i < argc-1)
+        this->push_back(string2type<T>(argv[++i]));
+      else
+        this->push_back(string2type<T>("1"));
+    }
+  }
+  if(!(this->size())&&m_hasDefault)//only set default value if no options were given
+    this->push_back(m_defaultValue);
+  return(noHelp);
+}
+
+/**
+make sure to call this function first before using the option in main program (or segmentation fault will occur...)
+**/
 template<class T> inline bool Optionpk<T>::retrieveOption(int argc, char **argv){ 
   bool noHelp=true;//return value, alert main program that hard coded option (help, version, license, doxygen) was invoked
   std::string helpStringShort="-h";//short option for help (hard coded)
diff --git a/src/base/Vector2d.cc b/src/base/Vector2d.cc
new file mode 100644
index 0000000..e69de29
diff --git a/src/base/pktestOption b/src/base/pktestOption
new file mode 100755
index 0000000..a7e76c8
Binary files /dev/null and b/src/base/pktestOption differ
diff --git a/src/base/pktestOption.cc b/src/base/pktestOption.cc
index dfe49cc..720ede1 100644
--- a/src/base/pktestOption.cc
+++ b/src/base/pktestOption.cc
@@ -24,8 +24,11 @@ along with pktools.  If not, see <http://www.gnu.org/licenses/>.
 int main(int argc, char *argv[])
 {
   Optionpk<std::string> foo_opt("f","foo","command line option **foo** of type string can be invoked with either short (f) or long (foo) option","defaultString");
-  Optionpk<int> bar_opt("\0","bar","command line option **bar** of type int has no short option",false,1);//bar will only be visible in long help (hide=1)
-  Optionpk<bool> easterEgg_opt("egg","egg","this help information is useless",false,2);//this option will not be shown in help (hide=2)
+  Optionpk<int> bar_opt("\0","bar","command line option **bar** of type int has no short option");//bar will only be visible in long help (hide=1)
+  Optionpk<bool> easterEgg_opt("egg","egg","this help information is useless");//this option will not be shown in help (hide=2)
+
+  bar_opt.setHide(1);//option only visible with long help (--help)
+  easterEgg_opt.setHide(2);//hidden option
 
   bool doProcess;//stop process when program was invoked with help option (-h --help)
   try{
diff --git a/src/fileclasses/Makefile.in b/src/fileclasses/Makefile
similarity index 74%
copy from src/fileclasses/Makefile.in
copy to src/fileclasses/Makefile
index 0c4b89c..e92ce59 100644
--- a/src/fileclasses/Makefile.in
+++ b/src/fileclasses/Makefile
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
-# @configure_input@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# src/fileclasses/Makefile.  Generated from Makefile.in by configure.
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -12,11 +12,21 @@
 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 # PARTICULAR PURPOSE.
 
- at SET_MAKE@
 
 
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+
+
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -61,10 +71,10 @@ am__make_running_with_option = \
   test $$has_opt = yes
 am__make_dryrun = (target_option=n; $(am__make_running_with_option))
 am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
+pkgdatadir = $(datadir)/pktools
+pkgincludedir = $(includedir)/pktools
+pkglibdir = $(libdir)/pktools
+pkglibexecdir = $(libexecdir)/pktools
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -77,11 +87,9 @@ POST_INSTALL = :
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
+build_triplet = x86_64-pc-linux-gnu
+host_triplet = x86_64-pc-linux-gnu
 subdir = src/fileclasses
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp $(libfileClasses_la_HEADERS)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_lib_gdal.m4 \
 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
@@ -89,6 +97,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ax_lib_gdal.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(libfileClasses_la_HEADERS) \
+	$(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -127,27 +137,27 @@ libfileClasses_la_LIBADD =
 am__objects_1 =
 am_libfileClasses_la_OBJECTS = $(am__objects_1) FileReaderAscii.lo
 libfileClasses_la_OBJECTS = $(am_libfileClasses_la_OBJECTS)
-AM_V_lt = $(am__v_lt_ at AM_V@)
-am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
 am__v_lt_0 = --silent
 am__v_lt_1 = 
 libfileClasses_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(AM_CXXFLAGS) $(CXXFLAGS) $(libfileClasses_la_LDFLAGS) \
 	$(LDFLAGS) -o $@
-AM_V_P = $(am__v_P_ at AM_V@)
-am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+AM_V_P = $(am__v_P_$(V))
+am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
 am__v_P_0 = false
 am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
 am__v_GEN_0 = @echo "  GEN     " $@;
 am__v_GEN_1 = 
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
 am__v_at_0 = @
 am__v_at_1 = 
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+DEFAULT_INCLUDES = -I. -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
 am__mv = mv -f
@@ -157,16 +167,16 @@ LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_ at AM_V@)
-am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+AM_V_CXX = $(am__v_CXX_$(V))
+am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY))
 am__v_CXX_0 = @echo "  CXX     " $@;
 am__v_CXX_1 = 
 CXXLD = $(CXX)
 CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
 	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
-am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+AM_V_CXXLD = $(am__v_CXXLD_$(V))
+am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY))
 am__v_CXXLD_0 = @echo "  CXXLD   " $@;
 am__v_CXXLD_1 = 
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
@@ -175,16 +185,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_ at AM_V@)
-am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
 am__v_CC_0 = @echo "  CC      " $@;
 am__v_CC_1 = 
 CCLD = $(CC)
 LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
 SOURCES = $(libfileClasses_la_SOURCES)
@@ -214,148 +224,149 @@ am__define_uniq_tagged_files = \
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_CXXFLAGS = -I$(top_srcdir)/src $(GDAL_CFLAGS) @AM_CXXFLAGS@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AM_LDFLAGS = $(GDAL_LDFLAGS) @AM_LDFLAGS@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FANN_CFLAGS = @FANN_CFLAGS@
-FANN_LIBS = @FANN_LIBS@
-FC = @FC@
-FCFLAGS = @FCFLAGS@
-FGREP = @FGREP@
-GDAL_CFLAGS = @GDAL_CFLAGS@
-GDAL_CONFIG = @GDAL_CONFIG@
-GDAL_DEP_LDFLAGS = @GDAL_DEP_LDFLAGS@
-GDAL_LDFLAGS = @GDAL_LDFLAGS@
-GDAL_OGR_ENABLED = @GDAL_OGR_ENABLED@
-GDAL_VERSION = @GDAL_VERSION@
-GREP = @GREP@
-GSL_CFLAGS = @GSL_CFLAGS@
-GSL_LIBS = @GSL_LIBS@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LASCLASSES_OPT = @LASCLASSES_OPT@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NLOPT_CFLAGS = @NLOPT_CFLAGS@
-NLOPT_LIBS = @NLOPT_LIBS@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PKTOOLS_SO_VERSION = @PKTOOLS_SO_VERSION@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_FC = @ac_ct_FC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
+ACLOCAL = aclocal-1.15
+AMTAR = $${TAR-tar}
+AM_CXXFLAGS = -I$(top_srcdir)/src $(GDAL_CFLAGS) 
+AM_DEFAULT_VERBOSITY = 1
+AM_LDFLAGS = $(GDAL_LDFLAGS) 
+AR = ar
+AUTOCONF = autoconf
+AUTOHEADER = autoheader
+AUTOMAKE = automake-1.15
+AWK = gawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -g -O2
+CPP = gcc -E
+CPPFLAGS = 
+CXX = g++
+CXXCPP = g++ -E
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS = -g -O2
+CYGPATH_W = echo
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+DLLTOOL = false
+DSYMUTIL = 
+DUMPBIN = 
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+FANN_CFLAGS = 
+FANN_LIBS = -lm -lfann
+FC = gfortran
+FCFLAGS = -g -O2
+FGREP = /bin/grep -F
+GDAL_CFLAGS = -I/usr/include/gdal
+GDAL_CONFIG = /usr/bin/gdal-config
+GDAL_DEP_LDFLAGS = -larmadillo -lproj -lpoppler -lfreexl -L/usr/lib/x86_64-linux-gnu -lgeos_c -lwebp -L/usr/lib -lepsilon -lodbc -lodbcinst -lkmlbase -lkmldom -lkmlengine -lkmlxsd -lkmlregionator -lexpat -lxerces-c -lpthread -lopenjp2 -ljasper -L/usr/lib -L/usr/lib/x86_64-linux-gnu/hdf5/serial -lnetcdf -lhdf5_hl -lhdf5 -lpthread -lz -ldl -lm -lcurl -L/usr/lib/x86_64-linux-gnu/hdf5/serial/lib -lhdf5 -lmfhdfalt -ldfalt -logdi -lgif -ljpeg -lpng -L/usr/lib/x86_64-linux-gnu -lpq -llzma -lz - [...]
+GDAL_LDFLAGS = -L/usr/lib -lgdal
+GDAL_OGR_ENABLED = yes
+GDAL_VERSION = 1.11.3
+GREP = /bin/grep
+GSL_CFLAGS = 
+GSL_LIBS = -lgsl -lgslcblas -lm
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+LASCLASSES_OPT = src/lasclasses
+LD = /usr/bin/ld -m elf_x86_64
+LDFLAGS = 
+LIBOBJS = 
+LIBS = 
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LIPO = 
+LN_S = ln -s
+LTLIBOBJS = 
+LT_SYS_LIBRARY_PATH = 
+MAKEINFO = makeinfo
+MANIFEST_TOOL = :
+MKDIR_P = /bin/mkdir -p
+NM = /usr/bin/nm -B
+NMEDIT = 
+OBJDUMP = objdump
+OBJEXT = o
+OTOOL = 
+OTOOL64 = 
+PACKAGE = pktools
+PACKAGE_BUGREPORT = kempenep at gmail.com
+PACKAGE_NAME = pktools
+PACKAGE_STRING = pktools 2.6.7
+PACKAGE_TARNAME = pktools
+PACKAGE_URL = 
+PACKAGE_VERSION = 2.6.7
+PATH_SEPARATOR = :
+PKG_CONFIG = /usr/bin/pkg-config
+PKG_CONFIG_LIBDIR = 
+PKG_CONFIG_PATH = 
+PKTOOLS_SO_VERSION = 1:6:0
+RANLIB = ranlib
+SED = /bin/sed
+SET_MAKE = 
+SHELL = /bin/bash
+STRIP = strip
+VERSION = 2.6.7
+abs_builddir = /home/kempenep/pktools/src/fileclasses
+abs_srcdir = /home/kempenep/pktools/src/fileclasses
+abs_top_builddir = /home/kempenep/pktools
+abs_top_srcdir = /home/kempenep/pktools
+ac_ct_AR = ar
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+ac_ct_DUMPBIN = 
+ac_ct_FC = gfortran
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = $${TAR-tar} chof - "$$tardir"
+am__untar = $${TAR-tar} xf -
+bindir = ${exec_prefix}/bin
+build = x86_64-pc-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = pc
+builddir = .
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = x86_64-pc-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = pc
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = ${SHELL} /home/kempenep/pktools/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = $(MKDIR_P)
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+runstatedir = ${localstatedir}/run
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = ${prefix}/etc
+target_alias = 
+top_build_prefix = ../../
+top_builddir = ../..
+top_srcdir = ../..
 
 ###############################################################################
 # THE LIBRARIES TO BUILD
@@ -389,7 +400,6 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/fileclasses/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --foreign src/fileclasses/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -452,28 +462,28 @@ mostlyclean-compile:
 distclean-compile:
 	-rm -f *.tab.c
 
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/FileReaderAscii.Plo at am__quote@
+include ./$(DEPDIR)/FileReaderAscii.Plo
 
 .cc.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	$(AM_V_CXX)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(CXXCOMPILE) -c -o $@ $<
 
 .cc.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	$(AM_V_CXX)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .cc.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+#	$(AM_V_CXX)source='$<' object='$@' libtool=yes \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(LTCXXCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -711,6 +721,8 @@ uninstall-am: uninstall-libLTLIBRARIES \
 	tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES \
 	uninstall-libfileClasses_laHEADERS
 
+.PRECIOUS: Makefile
+
 
 ###############################################################################
 
diff --git a/src/fileclasses/Makefile.in b/src/fileclasses/Makefile.in
index 0c4b89c..ae730f9 100644
--- a/src/fileclasses/Makefile.in
+++ b/src/fileclasses/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -16,7 +16,17 @@
 
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -80,8 +90,6 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = src/fileclasses
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp $(libfileClasses_la_HEADERS)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_lib_gdal.m4 \
 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
@@ -89,6 +97,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ax_lib_gdal.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(libfileClasses_la_HEADERS) \
+	$(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -214,6 +224,7 @@ am__define_uniq_tagged_files = \
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -273,11 +284,10 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
-NLOPT_CFLAGS = @NLOPT_CFLAGS@
-NLOPT_LIBS = @NLOPT_LIBS@
 NM = @NM@
 NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
@@ -348,6 +358,7 @@ pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -389,7 +400,6 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/fileclasses/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --foreign src/fileclasses/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -711,6 +721,8 @@ uninstall-am: uninstall-libLTLIBRARIES \
 	tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES \
 	uninstall-libfileClasses_laHEADERS
 
+.PRECIOUS: Makefile
+
 
 ###############################################################################
 
diff --git a/src/fileclasses/libfileClasses.la b/src/fileclasses/libfileClasses.la
new file mode 100644
index 0000000..23a2286
--- /dev/null
+++ b/src/fileclasses/libfileClasses.la
@@ -0,0 +1,41 @@
+# libfileClasses.la - a libtool library file
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='libfileClasses.so.1'
+
+# Names of this library.
+library_names='libfileClasses.so.1.0.6 libfileClasses.so.1 libfileClasses.so'
+
+# The name of the static archive.
+old_library='libfileClasses.a'
+
+# Linker flags that cannot go in dependency_libs.
+inherited_linker_flags=''
+
+# Libraries that this one depends upon.
+dependency_libs=' -L/usr/lib -lgdal'
+
+# Names of additional weak libraries provided by this library
+weak_library_names=''
+
+# Version information for libfileClasses.
+current=1
+age=0
+revision=6
+
+# Is this an already installed library?
+installed=no
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=no
+
+# Files to dlopen/dlpreopen
+dlopen=''
+dlpreopen=''
+
+# Directory that this library needs to be installed in:
+libdir='/usr/local/lib'
diff --git a/src/imageclasses/ImgUpdaterGdal.h b/src/imageclasses/ImgGdal.h
similarity index 77%
copy from src/imageclasses/ImgUpdaterGdal.h
copy to src/imageclasses/ImgGdal.h
index 0737656..8c4c9b4 100644
--- a/src/imageclasses/ImgUpdaterGdal.h
+++ b/src/imageclasses/ImgGdal.h
@@ -28,12 +28,23 @@ class ImgUpdaterGdal : public ImgReaderGdal, public ImgWriterGdal
 {
 public:
   ImgUpdaterGdal(void);
-  ImgUpdaterGdal(const std::string& filename, const GDALAccess& readMode=GA_Update);
+  ImgUpdaterGdal(const std::string& filename){open(filename);};
   ~ImgUpdaterGdal(void);
-  void open(const std::string& filename, const GDALAccess& readMode=GA_Update);
+  void open(const std::string& filename);
   void close(void);
 
 protected:
+  void setCodec();//double magicX, double magicY);
+
+  std::string m_filename;
+  GDALDataset *m_gds;
+  int m_ncol;
+  int m_nrow;
+  int m_nband;
+  double m_gt[6];
+  std::vector<double> m_noDataValues;
+  std::vector<double> m_scale;
+  std::vector<double> m_offset;
 };
 
 #endif // _IMGUPDATERGDAL_H_
diff --git a/src/imageclasses/ImgRasterGdal.cc b/src/imageclasses/ImgRasterGdal.cc
index d645d60..5eccaee 100644
--- a/src/imageclasses/ImgRasterGdal.cc
+++ b/src/imageclasses/ImgRasterGdal.cc
@@ -18,209 +18,349 @@ You should have received a copy of the GNU General Public License
 along with pktools.  If not, see <http://www.gnu.org/licenses/>.
 ***********************************************************************/
 #include <iostream>
+#include "ogr_spatialref.h"
 #include "ImgRasterGdal.h"
 
 ImgRasterGdal::ImgRasterGdal(void)
-  : m_gds(NULL), m_ncol(0), m_nrow(0), m_nband(0)
+  : m_gds(NULL), m_ncol(0), m_nrow(0), m_nband(0), m_dataType(GDT_Unknown)
 {}
 
-//--------------------------------------------------------------------------
+ImgRasterGdal::~ImgRasterGdal(void)
+{
+}
+
 void ImgRasterGdal::close(void)
 {
   GDALClose(m_gds);
 }
 
+/**
+ * @return the projection of this data set in string format
+ **/
 std::string ImgRasterGdal::getProjection(void) const 
 {
-  std::string theProjection=m_gds->GetProjectionRef();
-  // size_t startpos,endpos;
-  // while((startpos=theProjection.find(",AUTHORITY"))!=std::string::npos){
-  //   endpos=theProjection.find("]",startpos+1,1)+1;
-  //   theProjection.erase(startpos,endpos-startpos);
-  // }
-  return theProjection;
+  // if(m_gds)
+  //   return(m_gds->GetProjectionRef());
+  // else
+  return(m_projection);
 }
 
+/**
+ * @return the projection of this data set in string format
+ **/
 std::string ImgRasterGdal::getProjectionRef(void) const 
 {
-  std::string theProjection;
-  if(m_gds->GetProjectionRef())
-    return(m_gds->GetProjectionRef());
+  // if(m_gds)
+  //   return(m_gds->GetProjectionRef());
+  // else
+  return(m_projection);
+}
+
+/**
+ * @param projection projection string to be used for this dataset
+ * @return the projection of this data set in string format
+ **/
+CPLErr ImgRasterGdal::setProjectionProj4(const std::string& projection)
+{
+  OGRSpatialReference theRef;
+  theRef.SetFromUserInput(projection.c_str());
+  char *wktString;
+  theRef.exportToWkt(&wktString);
+  m_projection=wktString;
+  if(m_gds)
+    return(m_gds->SetProjection(wktString));
   else
-    return "";
+    return(CE_Failure);
 }
 
+/**
+ * @param projection projection string to be used for this dataset
+ **/
+CPLErr ImgRasterGdal::setProjection(const std::string& projection)
+{
+  m_projection=projection;
+  if(m_gds)
+    return(m_gds->SetProjection(projection.c_str()));
+  else
+    return(CE_Failure);
+}
+
+/**
+ * @param band get data type for this band (start counting from 0)
+ * @return the GDAL data type of this data set for the selected band
+ **/
 GDALDataType ImgRasterGdal::getDataType(int band) const
 {
   assert(band<m_nband+1);
-  return (m_gds->GetRasterBand(band+1))->GetRasterDataType();
+  if(getRasterBand(band))
+    return((getRasterBand(band)->GetRasterDataType()));
+  else
+    return(m_dataType);
 }
 
-GDALRasterBand* ImgRasterGdal::getRasterBand(int band)
+/**
+ * @param band get GDAL raster band for this band (start counting from 0)
+ * @return the GDAL raster band of this data set for the selected band
+ **/
+GDALRasterBand* ImgRasterGdal::getRasterBand(int band) const
 {
   assert(band<m_nband+1);
-  return (m_gds->GetRasterBand(band+1));
+  if(m_gds)
+    return((m_gds->GetRasterBand(band+1)));
+  else
+    return(0);
 }
 
+/**
+ * @param band get GDAL color table for this band (start counting from 0)
+ * @return the GDAL color table of this data set for the selected band
+ **/
 GDALColorTable* ImgRasterGdal::getColorTable(int band) const
 {
   assert(band<m_nband+1);
-  return (m_gds->GetRasterBand(band+1))->GetColorTable();
+  GDALRasterBand* theRasterBand=getRasterBand(band);
+  if(theRasterBand)
+    return(theRasterBand->GetColorTable());
+  else
+    return(0);
 }
 
+/**
+ * @return the driver description of this data set in string format
+ **/
 std::string ImgRasterGdal::getDriverDescription() const
 {
-  return m_gds->GetDriver()->GetDescription();
+  std::string driverDescription;
+  if(m_gds)
+    driverDescription=m_gds->GetDriver()->GetDescription();
+  return(driverDescription);
 }
 
-void ImgRasterGdal::getGeoTransform(double* gt) const{
-  m_gds->GetGeoTransform(gt);
+/**
+ * @param gt pointer to the six geotransform parameters:
+ * @param adfGeoTransform[0] top left x
+ * @param GeoTransform[1] w-e pixel resolution
+ * @param GeoTransform[2] rotation, 0 if image is "north up"
+ * @param GeoTransform[3] top left y
+ * @param GeoTransform[4] rotation, 0 if image is "north up"
+ * @param GeoTransform[5] n-s pixel resolution
+ **/
+CPLErr ImgRasterGdal::setGeoTransform(double* gt){
+  // m_isGeoRef=true;
+  m_gt[0]=gt[0];
+  m_gt[1]=gt[1];
+  m_gt[2]=gt[2];
+  m_gt[3]=gt[3];
+  m_gt[4]=gt[4];
+  m_gt[5]=gt[5];
+  if(m_gds)
+    return(m_gds->SetGeoTransform(m_gt));
+  else
+    return(CE_Failure);
+      
+}
+
+/**
+ * @param imgSrc Use this source image as a template to copy geotranform information
+ **/
+void ImgRasterGdal::copyGeoTransform(const ImgRasterGdal& imgSrc)
+{
+  setProjection(imgSrc.getProjection());
+  double gt[6];
+  imgSrc.getGeoTransform(gt);
+  setGeoTransform(gt);
 }
 
-// void ImgRasterGdal::getGeoTransform(double& ulx, double& uly, double& deltaX, double& deltaY, double& rot1, double& rot2) const
-// {
-//   double adfGeoTransform[6];// { 444720, 30, 0, 3751320, 0, -30 };
-//   m_gds->GetGeoTransform(adfGeoTransform);
-//   ulx=adfGeoTransform[0];
-//   deltaX=adfGeoTransform[1];
-//   rot1=adfGeoTransform[2];
-//   uly=adfGeoTransform[3];
-//   rot2=adfGeoTransform[4];
-//   deltaY=-adfGeoTransform[5];//convention of GDAL!
-// }
+/**
+ * @param gt pointer to the six geotransform parameters:
+ * @param adfGeoTransform[0] top left x
+ * @param GeoTransform[1] w-e pixel resolution
+ * @param GeoTransform[2] rotation, 0 if image is "north up"
+ * @param GeoTransform[3] top left y
+ * @param GeoTransform[4] rotation, 0 if image is "north up"
+ * @param GeoTransform[5] n-s pixel resolution
+ **/
+void ImgRasterGdal::getGeoTransform(double* gt) const{
+  // if(m_gds){
+  //   m_gds->GetGeoTransform(gt);
+  // }
+  // else{
+    gt[0]=m_gt[0];
+    gt[1]=m_gt[1];
+    gt[2]=m_gt[2];
+    gt[3]=m_gt[3];
+    gt[4]=m_gt[4];
+    gt[5]=m_gt[5];
+  // }
+}
 
+/**
+ * @return the geotransform of this data set in string format
+ **/
 std::string ImgRasterGdal::getGeoTransform() const
 {
+  std::string gtString;
   double gt[6];// { 444720, 30, 0, 3751320, 0, -30 };
-  m_gds->GetGeoTransform(gt);
+  getGeoTransform(gt);
   std::ostringstream s;
   s << "[" << gt[0] << "," << gt[1] << "," << gt[2] << "," << gt[3] << "," << gt[4] << "," << gt[5] << "]";
+  gtString=s.str();
   return(s.str());
-  // if(!isGeoRef())
-  //   return("");
-  // else{
-  //   double adfGeoTransform[6];// { 444720, 30, 0, 3751320, 0, -30 };
-  //   m_gds->GetGeoTransform(adfGeoTransform);
-  //   double ulx=adfGeoTransform[0];
-  //   double deltaX=adfGeoTransform[1];
-  //   double rot1=adfGeoTransform[2];
-  //   double uly=adfGeoTransform[3];
-  //   double rot2=adfGeoTransform[4];
-  //   double deltaY=-adfGeoTransform[5];//convention of GDAL!
-  //   std::ostringstream s;
-  //   s << "[" << ulx << "," << deltaX << "," << rot1 << "," << uly << "," << rot2 << "," << -deltaY << "]";
-  //   return(s.str());
-  // }
 }
 
+/**
+ * @return the metadata of this data set in string format
+ **/
 char** ImgRasterGdal::getMetadata()
 {
-  if(m_gds->GetMetadata()!=NULL)
-    return(m_gds->GetMetadata());
+  if(m_gds){
+    if(m_gds->GetMetadata()!=NULL)
+      return(m_gds->GetMetadata());
+  }
   else
     return (char**)"";
 }
 
+/**
+ * @return the metadata of this data set in C style string format (const version)
+ **/
 char** ImgRasterGdal::getMetadata() const
 {
-  if(m_gds->GetMetadata()!=NULL)
-    return(m_gds->GetMetadata());
+  if(m_gds){
+    if(m_gds->GetMetadata()!=NULL)
+      return(m_gds->GetMetadata());
+  }
   else 
     return (char**)"";
 }
 
+/**
+ * @return the metadata of this data set in standard template library (stl) string format
+ **/
 void ImgRasterGdal::getMetadata(std::list<std::string>& metadata) const
 {
-  char** cmetadata=m_gds->GetMetadata();
-  while(*cmetadata!=NULL){
-    metadata.push_back(*(cmetadata));
-    ++cmetadata;
+  if(m_gds){
+    char** cmetadata=m_gds->GetMetadata();
+    while(*cmetadata!=NULL){
+      metadata.push_back(*(cmetadata));
+      ++cmetadata;
+    }
   }
 }
 
+/**
+ * @return the description of this data set in string format
+ **/
 std::string ImgRasterGdal::getDescription() const
 {
-  if(m_gds->GetDriver()->GetDescription()!=NULL)
-    return m_gds->GetDriver()->GetDescription();
+  if(m_gds){
+    if(m_gds->GetDriver()->GetDescription()!=NULL)
+      return m_gds->GetDriver()->GetDescription();
+  }
   else
-    return "";
+    return("");
 }
 
+/**
+ * @return the meta data item of this data set in string format
+ **/
 std::string ImgRasterGdal::getMetadataItem() const 
 {
-  if(m_gds->GetDriver()->GetMetadataItem( GDAL_DMD_LONGNAME )!=NULL)
-    return m_gds->GetDriver()->GetMetadataItem( GDAL_DMD_LONGNAME );
+  if(m_gds){
+    if(m_gds->GetDriver()->GetMetadataItem( GDAL_DMD_LONGNAME )!=NULL)
+      return m_gds->GetDriver()->GetMetadataItem( GDAL_DMD_LONGNAME );
+  }
   else
-    return "";
+    return("");
 }
+
+/**
+ * @return the image description (TIFFTAG) of this data set in string format
+ **/
 std::string ImgRasterGdal::getImageDescription() const 
 {
-  if(m_gds->GetDriver()->GetMetadataItem("TIFFTAG_IMAGEDESCRIPTION")!=NULL)
-    return m_gds->GetDriver()->GetMetadataItem("TIFFTAG_IMAGEDESCRIPTION");
+  if(m_gds){
+    if(m_gds->GetDriver()->GetMetadataItem("TIFFTAG_IMAGEDESCRIPTION")!=NULL)
+      return m_gds->GetDriver()->GetMetadataItem("TIFFTAG_IMAGEDESCRIPTION");
+  }
   else
-    return "";
+    return("");
 }
 
+/**
+ * @return the band coding interleave of this data set in string format
+ **/
 std::string ImgRasterGdal::getInterleave() const
 {
-  if(m_gds->GetMetadataItem( "INTERLEAVE", "IMAGE_STRUCTURE"))
-    return m_gds->GetMetadataItem( "INTERLEAVE", "IMAGE_STRUCTURE");
+  if(m_gds){
+    if(m_gds->GetMetadataItem( "INTERLEAVE", "IMAGE_STRUCTURE"))
+      return m_gds->GetMetadataItem( "INTERLEAVE", "IMAGE_STRUCTURE");
+    else
+      return("BAND");
+  }
   else
-    return("BAND");
+    return("");
 }
 
+/**
+ * @return the compression meta data of this data set in string format
+ **/
 std::string ImgRasterGdal::getCompression() const
 {
-  if(m_gds->GetMetadataItem( "COMPRESSION", "IMAGE_STRUCTURE"))
-    return m_gds->GetMetadataItem( "COMPRESSION", "IMAGE_STRUCTURE");
+  if(m_gds){
+    if(m_gds->GetMetadataItem( "COMPRESSION", "IMAGE_STRUCTURE"))
+      return m_gds->GetMetadataItem( "COMPRESSION", "IMAGE_STRUCTURE");
+  }
   else
     return("NONE");
 }
 
+/**
+ * assuming
+ * adfGeotransform[0]: ULX (upper left X coordinate)
+ * adfGeotransform[1]: $cos(\alpha)\cdot\textrm{Xres}$
+ * adfGeotransform[2]: $-sin(\alpha)\cdot\textrm{Xres}$
+ * adfGeotransform[3]: ULY (upper left Y coordinate)
+ * adfGeotransform[4]: $-sin(\alpha)\cdot\textrm{Yres}$
+ * adfGeotransform[5]: $-cos(\alpha)\cdot\textrm{Yres}$
+
+ * @param ulx upper left coordinate in x
+ * @param uly upper left coordinate in y
+ * @param lrx lower left coordinate in x
+ * @param lry lower left coordinate in y
+ * @return true if image is georeferenced
+ **/
 bool ImgRasterGdal::getBoundingBox(double& ulx, double& uly, double& lrx, double& lry) const
 {
   double gt[6];// { 444720, 30, 0, 3751320, 0, -30 };
-  m_gds->GetGeoTransform(gt);
-
-  //assuming
-  //adfGeotransform[0]: ULX (upper left X coordinate)
-  //adfGeotransform[1]: $cos(\alpha)\cdot\textrm{Xres}$
-  //adfGeotransform[2]: $-sin(\alpha)\cdot\textrm{Xres}$
-  //adfGeotransform[3]: ULY (upper left Y coordinate)
-  //adfGeotransform[4]: $-sin(\alpha)\cdot\textrm{Yres}$
-  //adfGeotransform[5]: $-cos(\alpha)\cdot\textrm{Yres}$
+  getGeoTransform(gt);
+
   ulx=gt[0];
   uly=gt[3];
   lrx=gt[0]+nrOfCol()*gt[1]+nrOfRow()*gt[2];
   lry=gt[3]+nrOfCol()*gt[4]+nrOfRow()*gt[5];
-  if(isGeoRef()){
-    // ulx=m_ulx;
-    // uly=m_uly;
-    // lrx=ulx+nrOfCol()*m_delta_x;
-    // lry=uly-nrOfRow()*m_delta_y;
+  if(isGeoRef())
     return true;
-  }
-  else{
-    // ulx=0;
-    // uly=nrOfRow()-1;
-    // lrx=nrOfCol()-1;
-    // lry=0;
+  else
     return false;
-  }
 }
 
+/**
+ * assuming
+ * adfGeotransform[0]: ULX (upper left X coordinate)
+ * adfGeotransform[1]: $cos(\alpha)\cdot\textrm{Xres}$
+ * adfGeotransform[2]: $-sin(\alpha)\cdot\textrm{Xres}$
+ * adfGeotransform[3]: ULY (upper left Y coordinate)
+ * adfGeotransform[4]: $-sin(\alpha)\cdot\textrm{Yres}$
+ * adfGeotransform[5]: $-cos(\alpha)\cdot\textrm{Yres}$
+ * @param x, y centre coordinates in x and y
+ * @return true if image is georeferenced
+ **/
 bool ImgRasterGdal::getCenterPos(double& x, double& y) const
 {
   double gt[6];// { 444720, 30, 0, 3751320, 0, -30 };
-  m_gds->GetGeoTransform(gt);
-
-  //assuming
-  //adfGeotransform[0]: ULX (upper left X coordinate)
-  //adfGeotransform[1]: $cos(\alpha)\cdot\textrm{Xres}$
-  //adfGeotransform[2]: $-sin(\alpha)\cdot\textrm{Xres}$
-  //adfGeotransform[3]: ULY (upper left Y coordinate)
-  //adfGeotransform[4]: $-sin(\alpha)\cdot\textrm{Yres}$
-  //adfGeotransform[5]: $-cos(\alpha)\cdot\textrm{Yres}$
+  getGeoTransform(gt);
+
   x=gt[0]+(nrOfCol()/2.0)*gt[1]+(nrOfRow()/2.0)*gt[2];
   y=gt[3]+(nrOfCol()/2.0)*gt[4]+(nrOfRow()/2.0)*gt[5];
   if(isGeoRef()){
@@ -228,26 +368,26 @@ bool ImgRasterGdal::getCenterPos(double& x, double& y) const
     // y=m_uly-(nrOfRow()/2.0)*m_delta_y;
     return true;
   }
-  else{
-    // x=nrOfCol()/2.0;
-    // y=nrOfRow()/2.0;
+  else
     return false;
-  }
 }
 
-//i and j represent fraction of pixels, return true if image is georeferenced
+/**
+ * assuming
+ * adfGeotransform[0]: ULX (upper left X coordinate)
+ * adfGeotransform[1]: $cos(\alpha)\cdot\textrm{Xres}$
+ * adfGeotransform[2]: $-sin(\alpha)\cdot\textrm{Xres}$
+ * adfGeotransform[3]: ULY (upper left Y coordinate)
+ * adfGeotransform[4]: $-sin(\alpha)\cdot\textrm{Yres}$
+ * adfGeotransform[5]: $-cos(\alpha)\cdot\textrm{Yres}$
+ * @param x,y georeferenced coordinates in x and y
+ * @param i,j image coordinates (can be fraction of pixels)
+ * @return true if image is georeferenced
+ **/
 bool ImgRasterGdal::geo2image(double x, double y, double& i, double& j) const
 {
-  //double values are returned, caller is responsible for interpolation step
   double gt[6];// { 444720, 30, 0, 3751320, 0, -30 };
-  m_gds->GetGeoTransform(gt);
-  //assuming
-  //adfGeotransform[0]: ULX (upper left X coordinate)
-  //adfGeotransform[1]: $cos(\alpha)\cdot\textrm{Xres}$
-  //adfGeotransform[2]: $-sin(\alpha)\cdot\textrm{Xres}$
-  //adfGeotransform[3]: ULY (upper left Y coordinate)
-  //adfGeotransform[4]: $-sin(\alpha)\cdot\textrm{Yres}$
-  //adfGeotransform[5]: $-cos(\alpha)\cdot\textrm{Yres}$
+  getGeoTransform(gt);
 
   double denom=(gt[1]-gt[2]*gt[4]/gt[5]);
   double eps=0.00001;
@@ -255,33 +395,28 @@ bool ImgRasterGdal::geo2image(double x, double y, double& i, double& j) const
     i=(x-gt[0]-gt[2]/gt[5]*(y-gt[3]))/denom;
     j=(y-gt[3]-gt[4]*(x-gt[0]-gt[2]/gt[5]*(y-gt[3]))/denom)/gt[5];
   }
-  if(isGeoRef()){
-    // double ulx=m_ulx;
-    // double uly=m_uly;
-    // i=(x-ulx)/m_delta_x;
-    // j=(uly-y)/m_delta_y;
+  if(isGeoRef())
     return true;
-  }
-  else{
-    // i=x;
-    // j=nrOfRow()-y;
+  else
     return false;
-  }
 }
 
-//x and y represent center of pixel, return true if image is georeferenced
+/**
+ * assuming
+ * adfGeotransform[0]: ULX (upper left X coordinate)
+ * adfGeotransform[1]: $cos(\alpha)\cdot\textrm{Xres}$
+ * adfGeotransform[2]: $-sin(\alpha)\cdot\textrm{Xres}$
+ * adfGeotransform[3]: ULY (upper left Y coordinate)
+ * adfGeotransform[4]: $-sin(\alpha)\cdot\textrm{Yres}$
+ * adfGeotransform[5]: $-cos(\alpha)\cdot\textrm{Yres}$
+ * @param i,j image coordinates (can be fraction of pixels)
+ * @param x,y georeferenced coordinates in x and y (can be fraction of pixels)
+ * @return true if image is georeferenced
+ **/
 bool ImgRasterGdal::image2geo(double i, double j, double& x, double& y) const
 {
   double gt[6];// { 444720, 30, 0, 3751320, 0, -30 };
-  m_gds->GetGeoTransform(gt);
-
-  //assuming
-  //adfGeotransform[0]: ULX (upper left X coordinate)
-  //adfGeotransform[1]: $cos(\alpha)\cdot\textrm{Xres}$
-  //adfGeotransform[2]: $-sin(\alpha)\cdot\textrm{Xres}$
-  //adfGeotransform[3]: ULY (upper left Y coordinate)
-  //adfGeotransform[4]: $-sin(\alpha)\cdot\textrm{Yres}$
-  //adfGeotransform[5]: $-cos(\alpha)\cdot\textrm{Yres}$
+  getGeoTransform(gt);
 
   x=gt[0]+(0.5+i)*gt[1]+(0.5+j)*gt[2];
   y=gt[3]+(0.5+i)*gt[4]+(0.5+j)*gt[5];
@@ -290,13 +425,21 @@ bool ImgRasterGdal::image2geo(double i, double j, double& x, double& y) const
     // y=m_uly-(0.5+j)*m_delta_y;
     return true;
   }
-  else{
-    // x=0.5+i;
-    // y=nrOfRow()-(0.5+j);
+  else
     return false;
-  }
 }
 
+/**
+ * assuming
+ * adfGeotransform[0]: ULX (upper left X coordinate)
+ * adfGeotransform[1]: $cos(\alpha)\cdot\textrm{Xres}$
+ * adfGeotransform[2]: $-sin(\alpha)\cdot\textrm{Xres}$
+ * adfGeotransform[3]: ULY (upper left Y coordinate)
+ * adfGeotransform[4]: $-sin(\alpha)\cdot\textrm{Yres}$
+ * adfGeotransform[5]: $-cos(\alpha)\cdot\textrm{Yres}$
+ * @param x,y georeferenced coordinates in x and y
+ * @return true if image covers the georeferenced location
+ **/
 bool ImgRasterGdal::covers(double x, double  y) const
 {
   double theULX, theULY, theLRX, theLRY;
@@ -307,6 +450,20 @@ bool ImgRasterGdal::covers(double x, double  y) const
          (y >theLRY));
 }
 
+/**
+ * assuming
+ * adfGeotransform[0]: ULX (upper left X coordinate)
+ * adfGeotransform[1]: $cos(\alpha)\cdot\textrm{Xres}$
+ * adfGeotransform[2]: $-sin(\alpha)\cdot\textrm{Xres}$
+ * adfGeotransform[3]: ULY (upper left Y coordinate)
+ * adfGeotransform[4]: $-sin(\alpha)\cdot\textrm{Yres}$
+ * adfGeotransform[5]: $-cos(\alpha)\cdot\textrm{Yres}$
+ * @param ulx upper left coordinate in x
+ * @param uly upper left coordinate in y
+ * @param lrx lower left coordinate in x
+ * @param lry lower left coordinate in y
+ * @return true if image (partially) covers the bounding box
+ **/
 bool ImgRasterGdal::covers(double ulx, double  uly, double lrx, double lry) const
 {
   double theULX, theULY, theLRX, theLRY;
@@ -314,6 +471,10 @@ bool ImgRasterGdal::covers(double ulx, double  uly, double lrx, double lry) cons
   return((ulx < theLRX)&&(lrx > theULX)&&(lry < theULY)&&(uly > theLRY));
 }
 
+/**
+ * @param noDataValues standard template library (stl) vector containing no data values
+ * @return number of no data values in this dataset
+ **/
 int ImgRasterGdal::getNoDataValues(std::vector<double>& noDataValues) const
 {
   if(m_noDataValues.size()){
@@ -324,19 +485,13 @@ int ImgRasterGdal::getNoDataValues(std::vector<double>& noDataValues) const
     return 0;
 }
 
+/**
+ * @param noDataValue no data value to be pushed for this dataset
+ * @return number of no data values in this dataset
+ **/
 int ImgRasterGdal::pushNoDataValue(double noDataValue)
 {
   if(find(m_noDataValues.begin(),m_noDataValues.end(),noDataValue)==m_noDataValues.end())
     m_noDataValues.push_back(noDataValue);
   return(m_noDataValues.size());
 }
-
-// bool ImgRasterGdal::setNoDataValue(double noDataValue,int band)
-// {
-//   GDALRasterBand  *poBand;
-//   poBand = m_gds->GetRasterBand(band+1);
-//   if(poBand->SetNoDataValue(noDataValue)!=CE_None)
-//     return false;
-//   else
-//     return true;
-// }
diff --git a/src/imageclasses/ImgRasterGdal.h b/src/imageclasses/ImgRasterGdal.h
index 01c28fc..7be39f7 100644
--- a/src/imageclasses/ImgRasterGdal.h
+++ b/src/imageclasses/ImgRasterGdal.h
@@ -20,6 +20,7 @@ along with pktools.  If not, see <http://www.gnu.org/licenses/>.
 #ifndef _IMGRASTERGDAL_H_
 #define _IMGRASTERGDAL_H_
 
+#include <typeinfo>
 #include <fstream>
 #include <sstream>
 #include <string>
@@ -31,70 +32,197 @@ along with pktools.  If not, see <http://www.gnu.org/licenses/>.
 
 enum RESAMPLE { NEAR = 0, BILINEAR = 1, BICUBIC = 2 };
 
-//--------------------------------------------------------------------------
+/**
+ * @param C++ data type to be converted to GDAL data type
+ * @return the GDAL data type that corresponds to the given C++ data type
+ **/
+template<typename T1> GDALDataType getGDALDataType(){
+  if (typeid(T1) == typeid(char))
+    return GDT_Byte;
+  else if (typeid(T1) == typeid(unsigned char))
+    return GDT_Byte;
+  else if (typeid(T1) == typeid(unsigned short))
+    return GDT_UInt16;
+  else if (typeid(T1) == typeid(short))
+    return GDT_Int16;
+  else if (typeid(T1) == typeid(int))
+    return GDT_Int32;
+  else if (typeid(T1) == typeid(unsigned int))
+    return GDT_UInt32;
+  else if (typeid(T1) == typeid(long))
+    return GDT_Int32;
+  else if (typeid(T1) == typeid(unsigned long))
+    return GDT_UInt32;
+  else if (typeid(T1) == typeid(float))
+    return GDT_Float32;
+  else if (typeid(T1) == typeid(double))
+    return GDT_Float64;
+  else
+    return GDT_Byte;
+};
+
+/**
+   Base class for raster dataset (read and write) in a format supported by GDAL. This general raster class is used to store e.g., filename, number of columns, rows and bands of the dataset. 
+**/
 class ImgRasterGdal
 {
 public:
+  ///default constructor
   ImgRasterGdal(void);
-  virtual ~ImgRasterGdal(void){};
+  ///destructor
+  virtual ~ImgRasterGdal(void);
+  ///Set scale for a specific band when writing the raster data values. The scaling and offset are applied on a per band basis. You need to set the scale for each band.
+  void setScale(double theScale, int band=0){
+    if(m_scale.size()!=nrOfBand()){//initialize
+      m_scale.resize(nrOfBand());
+      for(int iband=0;iband<nrOfBand();++iband)
+       m_scale[iband]=1.0;
+    }
+    m_scale[band]=theScale;
+  };
+  ///Set offset for a specific band when writing the raster data values. The scaling and offset are applied on a per band basis. You need to set the offset for each band.
+  void setOffset(double theOffset, int band=0){
+    if(m_offset.size()!=nrOfBand()){
+      m_offset.resize(nrOfBand());
+      for(int iband=0;iband<nrOfBand();++iband)
+       m_offset[iband]=0.0;
+    }
+      m_offset[band]=theOffset;
+  };
 
+  ///Close the image.
   virtual void close(void);
+  ///Get the filename of this dataset
   std::string getFileName() const {return m_filename;};
+  ///Get the number of columns of this dataset
   int nrOfCol(void) const { return m_ncol;};
+  ///Get the number of rows of this dataset
   int nrOfRow(void) const { return m_nrow;};
+  ///Get the number of bands of this dataset
   int nrOfBand(void) const { return m_nband;};
+  ///Is this dataset georeferenced (pixel size in y must be negative) ?
   bool isGeoRef() const {double gt[6];getGeoTransform(gt);if(gt[5]<0) return true;else return false;};
+  ///Get the projection string (deprecated, use getProjectionRef instead)
   std::string getProjection(void) const;
+  ///Get the projection reference
   std::string getProjectionRef(void) const;
+  ///Get the geotransform data for this dataset as a string
   std::string getGeoTransform() const;
+  ///Get the geotransform data for this dataset
   void getGeoTransform(double* gt) const;
+  ///Set the geotransform data for this dataset
+  CPLErr setGeoTransform(double* gt);
+  ///Copy geotransform information from another georeferenced image
+  void copyGeoTransform(const ImgRasterGdal& imgSrc);
+  ///Set the projection for this dataset in well known text (wkt) format
+  CPLErr setProjection(const std::string& projection);
+  ///Set the projection for this dataset from user input (supports epsg:<number> format)
+  CPLErr setProjectionProj4(const std::string& projection);
+  ///Get the bounding box of this dataset in georeferenced coordinates
   bool getBoundingBox (double& ulx, double& uly, double& lrx, double& lry) const;
+  ///Get the center position of this dataset in georeferenced coordinates
   bool getCenterPos(double& x, double& y) const;
+  ///Get the upper left corner x (georeferenced) coordinate of this dataset
   double getUlx() const {double ulx, uly, lrx,lry;getBoundingBox(ulx,uly,lrx,lry);return(ulx);};
+  ///Get the upper left corner y (georeferenced) coordinate of this dataset
   double getUly() const {double ulx, uly, lrx,lry;getBoundingBox(ulx,uly,lrx,lry);return(uly);};
+  ///Get the lower right corner x (georeferenced) coordinate of this dataset
   double getLrx() const {double ulx, uly, lrx,lry;getBoundingBox(ulx,uly,lrx,lry);return(lrx);};
+  ///Get the lower right corner y (georeferenced) coordinate of this dataset
   double getLry() const {double ulx, uly, lrx,lry;getBoundingBox(ulx,uly,lrx,lry);return(lry);};
-
+  ///Get the no data values of this dataset as a standard template library (stl) vector
   int getNoDataValues(std::vector<double>& noDataValues) const;
+  ///Check if value is nodata in this dataset
   bool isNoData(double value) const{if(m_noDataValues.empty()) return false;else return find(m_noDataValues.begin(),m_noDataValues.end(),value)!=m_noDataValues.end();};
+  ///Push a no data value for this dataset
   int pushNoDataValue(double noDataValue);
+  ///Set the no data values of this dataset using a standard template library (stl) vector as input
   int setNoData(const std::vector<double> nodata){m_noDataValues=nodata; return(m_noDataValues.size());};
+  ///Set the GDAL (internal) no data value for this data set. Only a single no data value per band is supported.
   CPLErr GDALSetNoDataValue(double noDataValue, int band=0) {return getRasterBand(band)->SetNoDataValue(noDataValue);};
+  ///Check if a geolocation is covered by this dataset. Only the bounding box is checked, irrespective of no data values.
   bool covers(double x, double y) const;
+  ///Check if a region of interest is (partially) covered by this dataset. Only the bounding box is checked, irrespective of no data values.
   bool covers(double ulx, double  uly, double lrx, double lry) const;
+  ///Convert georeferenced coordinates (x and y) to image coordinates (column and row)
   bool geo2image(double x, double y, double& i, double& j) const;
+  ///Convert image coordinates (column and row) to georeferenced coordinates (x and y)
   bool image2geo(double i, double j, double& x, double& y) const;
+  ///Get the pixel cell spacing in x
   double getDeltaX(void) const {double gt[6];getGeoTransform(gt);return gt[1];};
+  ///Get the pixel cell spacing in y
   double getDeltaY(void) const {double gt[6];getGeoTransform(gt);return -gt[5];};
-
+  ///Get the GDAL datatype for this dataset
   GDALDataType getDataType(int band=0) const;
-  GDALRasterBand* getRasterBand(int band=0);
+  ///Get the GDAL rasterband for this dataset
+  GDALRasterBand* getRasterBand(int band=0) const;
+  ///Get the GDAL color table for this dataset as an instance of the GDALColorTable class
   GDALColorTable* getColorTable(int band=0) const;
+  ///Get the GDAL driver description of this dataset
   std::string getDriverDescription() const;
+  ///Get the image type (implemented as the driver description)
   std::string getImageType() const{return getDriverDescription();};
-//   std::string getImageType() const{return "GTiff";};
+  ///Get the band coding (interleave)
   std::string getInterleave() const;
+  ///Get the compression from the metadata of this dataset
   std::string getCompression() const;
+  //Get a pointer to the GDAL dataset
   GDALDataset* getDataset(){return m_gds;};
+  ///Get the metadata of this dataset
   char** getMetadata();
+  ///Get the metadata of this dataset (const version)
   char** getMetadata() const;
+  ///Get the metadata of this dataset in the form of a list of strings (const version)
   void getMetadata(std::list<std::string>& metadata) const;
-
+  ///Get the image description from the driver of this dataset
   std::string getDescription() const;
+  ///Get metadata item of this dataset
   std::string getMetadataItem() const;
+  ///Get the image description from the metadata of this dataset
   std::string getImageDescription() const;
+  int nrOfBlockX(int band=0)
+  {
+    int nXBlockSize, nYBlockSize;
+    getRasterBand(band)->GetBlockSize( &nXBlockSize, &nYBlockSize );
+    int nXBlocks = (nrOfCol() + nXBlockSize - 1) / nXBlockSize;
+    return nXBlocks;
+  }
+  int nrOfBlockY(int band=0)
+  {
+    int nXBlockSize, nYBlockSize;
+    getRasterBand(band)->GetBlockSize( &nXBlockSize, &nYBlockSize );
+    int nYBlocks = (nrOfRow() + nYBlockSize - 1) / nYBlockSize;
+    return nYBlocks;
+  }
 
   friend class ImgReaderGdal;
   friend class ImgWriterGdal;
 
 protected:
+  ///filename of this dataset
   std::string m_filename;
+  ///instance of the GDAL dataset of this dataset
   GDALDataset *m_gds;
+  ///number of columns in this dataset
   int m_ncol;
+  ///number of rows in this dataset
   int m_nrow;
+  ///number of bands in this dataset
   int m_nband;
+  ///GDAL data type for this dataset
+  GDALDataType m_dataType;
+  ///geotransform information of this dataset
   double m_gt[6];
+  //projection string in wkt format
+  std::string m_projection;
+  ///no data values for this dataset
   std::vector<double> m_noDataValues;
+  ///Vector containing the scale factor to be applied (one scale value for each band)
+  std::vector<double> m_scale;
+  ///Vector containing the offset factor to be applied (one offset value for each band)
+  std::vector<double> m_offset;
+
+private:
 };
 
 #endif // _IMGRASTERGDAL_H_
diff --git a/src/imageclasses/ImgReaderGdal.cc b/src/imageclasses/ImgReaderGdal.cc
index f284b69..91b14be 100644
--- a/src/imageclasses/ImgReaderGdal.cc
+++ b/src/imageclasses/ImgReaderGdal.cc
@@ -1,6 +1,6 @@
 /**********************************************************************
 ImgReaderGdal.cc: class to read raster files using GDAL API library
-Copyright (C) 2008-2012 Pieter Kempeneers
+Copyright (C) 2008-2016 Pieter Kempeneers
 
 This file is part of pktools
 
@@ -17,22 +17,22 @@ GNU General Public License for more details.
 You should have received a copy of the GNU General Public License
 along with pktools.  If not, see <http://www.gnu.org/licenses/>.
 ***********************************************************************/
-#include "ImgReaderGdal.h"
 #include <assert.h>
 #include <sstream>
 #include <iostream>
 #include <gsl/gsl_cdf.h>
+#include "cpl_conv.h" // for CPLMalloc()
+#include "ImgReaderGdal.h"
 
 ImgReaderGdal::ImgReaderGdal(void){};
 
-ImgReaderGdal::~ImgReaderGdal(void)
-{
-  // delete m_gds;
-//   GDALDumpOpenDatasets(stderr);
-//   GDALDestroyDriverManager();//could be used by other objects...
-}
+ImgReaderGdal::~ImgReaderGdal(void){};
 
-//--------------------------------------------------------------------------
+/**
+ * @param filename Open a raster dataset with this filename
+ * @param readMode Open dataset in ReadOnly or Update mode
+ * @param memory Available memory to cache image raster data (in MB)
+ **/
 void ImgReaderGdal::open(const std::string& filename, const GDALAccess& readMode)
 {
   m_filename = filename;
@@ -44,10 +44,24 @@ void ImgReaderGdal::close(void)
   ImgRasterGdal::close();
 }
 
+/**
+ * @param readMode Open dataset in ReadOnly or Update mode
+ **/
 void ImgReaderGdal::setCodec(const GDALAccess& readMode)
 {
   GDALAllRegister();
+  // m_gds = (GDALDataset *) GDALOpen(m_filename.c_str(), readMode );
+#if GDAL_VERSION_MAJOR < 2
+  GDALAllRegister();
   m_gds = (GDALDataset *) GDALOpen(m_filename.c_str(), readMode );
+#else
+  GDALAllRegister();
+  if(readMode==GA_ReadOnly)
+    m_gds = (GDALDataset*) GDALOpenEx(m_filename.c_str(), GDAL_OF_READONLY|GDAL_OF_RASTER, NULL, NULL, NULL);
+  else if(readMode==GA_Update)
+    m_gds = (GDALDataset*) GDALOpenEx(m_filename.c_str(), GDAL_OF_UPDATE|GDAL_OF_RASTER, NULL, NULL, NULL);
+#endif
+
   if(m_gds == NULL){
     std::string errorString="FileOpenError";
     throw(errorString);
@@ -55,36 +69,29 @@ void ImgReaderGdal::setCodec(const GDALAccess& readMode)
   m_ncol= m_gds->GetRasterXSize();
   m_nrow= m_gds->GetRasterYSize();
   m_nband= m_gds->GetRasterCount();
-  // m_isGeoRef=( static_cast<std::string>(m_gds->GetProjectionRef())  != "" );
-  // m_magic_x=magicX;
-  // m_magic_y=magicY;
   double adfGeoTransform[6];
   m_gds->GetGeoTransform( adfGeoTransform );
-  // if( m_gds->GetGeoTransform( adfGeoTransform ) == CE_None ){
   m_gt[0]=adfGeoTransform[0];
   m_gt[1]=adfGeoTransform[1];
   m_gt[2]=adfGeoTransform[2];
   m_gt[3]=adfGeoTransform[3];
   m_gt[4]=adfGeoTransform[4];
   m_gt[5]=adfGeoTransform[5];
-  // }
-  // else{
-  //   m_gt[0]=0;
-  //   m_gt[1]=1;
-  //   m_gt[2]=0;
-  //   m_gt[3]=0;
-  //   m_gt[4]=0;
-  //   m_gt[5]=1;
-  // }
+  m_projection=m_gds->GetProjectionRef();
 }
 
-
-double ImgReaderGdal::getMin(int& x, int& y, int band) const{
+/**
+ * @param x Reported column where minimum value in image was found (start counting from 0)
+ * @param y Reported row where minimum value in image was found (start counting from 0)
+ * @param band Search mininum value in image for this band
+ * @return minimum value in image for the selected band
+ **/
+double ImgReaderGdal::getMin(int& x, int& y, int band){
   double minValue=0;
   std::vector<double> lineBuffer(nrOfCol());
   bool isValid=false;
   for(int irow=0;irow<nrOfRow();++irow){
-    readData(lineBuffer,GDT_Float64,irow,band);
+    readData(lineBuffer,irow,band);
     for(int icol=0;icol<nrOfCol();++icol){
       if(isNoData(lineBuffer[icol]))
 	continue;
@@ -109,12 +116,18 @@ double ImgReaderGdal::getMin(int& x, int& y, int band) const{
     throw(static_cast<std::string>("Warning: not initialized"));
 }
 
-double ImgReaderGdal::getMax(int& x, int& y, int band) const{
+/**
+ * @param x Reported column where maximum value in image was found (start counting from 0)
+ * @param y Reported row where maximum value in image was found (start counting from 0)
+ * @param band Search mininum value in image for this band
+ * @return maximum value in image for the selected band
+ **/
+double ImgReaderGdal::getMax(int& x, int& y, int band){
   double maxValue=0;
   std::vector<double> lineBuffer(nrOfCol());
   bool isValid=false;
   for(int irow=0;irow<nrOfRow();++irow){
-    readData(lineBuffer,GDT_Float64,irow,band);
+    readData(lineBuffer,irow,band);
     for(int icol=0;icol<nrOfCol();++icol){
       if(isNoData(lineBuffer[icol]))
 	continue;
@@ -139,7 +152,13 @@ double ImgReaderGdal::getMax(int& x, int& y, int band) const{
     throw(static_cast<std::string>("Warning: not initialized"));
 }
 
-void ImgReaderGdal::getMinMax(int startCol, int endCol, int startRow, int endRow, int band, double& minValue, double& maxValue) const
+/**
+ * @param startCol, endCol, startRow, endRow Search extreme value in this region of interest (all indices start counting from 0)
+ * @param band Search extreme value in image for this band
+ * @param minValue Reported minimum value within searched region
+ * @param maxValue Reported maximum value within searched region
+ **/
+void ImgReaderGdal::getMinMax(int startCol, int endCol, int startRow, int endRow, int band, double& minValue, double& maxValue)
 {
   bool isConstraint=(maxValue>minValue);
   double minConstraint=minValue;
@@ -148,7 +167,7 @@ void ImgReaderGdal::getMinMax(int startCol, int endCol, int startRow, int endRow
   bool isValid=false;
   assert(endRow<nrOfRow());
   for(int irow=startCol;irow<endRow+1;++irow){
-    readData(lineBuffer,GDT_Float64,startCol,endCol,irow,band);
+    readData(lineBuffer,startCol,endCol,irow,band);
     for(int icol=0;icol<lineBuffer.size();++icol){
       if(isNoData(lineBuffer[icol]))
 	continue;
@@ -181,7 +200,12 @@ void ImgReaderGdal::getMinMax(int startCol, int endCol, int startRow, int endRow
     throw(static_cast<std::string>("Warning: not initialized"));
 }
 
-void ImgReaderGdal::getMinMax(double& minValue, double& maxValue, int band) const
+/**
+ * @param minValue Reported minimum value in image
+ * @param maxValue Reported maximum value in image
+ * @param band Search extreme value in image for this band
+ **/
+void ImgReaderGdal::getMinMax(double& minValue, double& maxValue, int band)
 {
   bool isConstraint=(maxValue>minValue);
   double minConstraint=minValue;
@@ -189,7 +213,7 @@ void ImgReaderGdal::getMinMax(double& minValue, double& maxValue, int band) cons
   std::vector<double> lineBuffer(nrOfCol());
   bool isValid=false;
   for(int irow=0;irow<nrOfRow();++irow){
-    readData(lineBuffer,GDT_Float64,irow,band);
+    readData(lineBuffer,irow,band);
     for(int icol=0;icol<nrOfCol();++icol){
       if(isNoData(lineBuffer[icol]))
 	continue;
@@ -222,6 +246,14 @@ void ImgReaderGdal::getMinMax(double& minValue, double& maxValue, int band) cons
     throw(static_cast<std::string>("Warning: not initialized"));
 }
 
+/**
+ * @param histvector The reported histogram with counts per bin
+ * @param min, max Only calculate histogram for values between min and max. If min>=max, calculate min and max from the image
+ * @param nbin Number of bins used for calculating the histogram. If nbin is 0, the number of bins is  automatically calculated from min and max
+ * @param theBand The band for which to calculate the histogram (start counting from 0)
+ * @param kde Apply kernel density function for a Gaussian basis function
+ * @return number of valid pixels in this dataset for the the selected band
+ **/
 double ImgReaderGdal::getHistogram(std::vector<double>& histvector, double& min, double& max, unsigned int& nbin, int theBand, bool kde){
   double minValue=0;
   double maxValue=0;
@@ -276,7 +308,7 @@ double ImgReaderGdal::getHistogram(std::vector<double>& histvector, double& min,
   unsigned long int ninvalid=0;
   std::vector<double> lineBuffer(nrOfCol());
   for(int irow=0;irow<nrOfRow();++irow){
-    readData(lineBuffer,GDT_Float64,irow,theBand);
+    readData(lineBuffer,irow,theBand);
     for(int icol=0;icol<nrOfCol();++icol){
       if(isNoData(lineBuffer[icol]))
         ++ninvalid;
@@ -291,7 +323,6 @@ double ImgReaderGdal::getHistogram(std::vector<double>& histvector, double& min,
 	  //create kde for Gaussian basis function
 	  //todo: speed up by calculating first and last bin with non-zero contriubtion...
 	  //todo: calculate real surface below pdf by using gsl_cdf_gaussian_P(x-mean+binsize,sigma)-gsl_cdf_gaussian_P(x-mean,sigma)
-	  //hiero
 	  for(int ibin=0;ibin<nbin;++ibin){
 	    double icenter=minValue+static_cast<double>(maxValue-minValue)*(ibin+0.5)/nbin;
 	    double thePdf=gsl_ran_gaussian_pdf(lineBuffer[icol]-icenter, sigma);
@@ -317,12 +348,16 @@ double ImgReaderGdal::getHistogram(std::vector<double>& histvector, double& min,
   return nvalid;
 }
 
-void ImgReaderGdal::getRange(std::vector<short>& range, int band) const
+/**
+ * @param range Sorted vector containing the range of image values
+ * @param band The band for which to calculate the range
+ **/
+void ImgReaderGdal::getRange(std::vector<short>& range, int band)
 {
   std::vector<short> lineBuffer(nrOfCol());
   range.clear();
   for(int irow=0;irow<nrOfRow();++irow){
-    readData(lineBuffer,GDT_Int16,irow,band);
+    readData(lineBuffer,irow,band);
     for(int icol=0;icol<nrOfCol();++icol){
       if(find(range.begin(),range.end(),lineBuffer[icol])==range.end())
         range.push_back(lineBuffer[icol]);
@@ -331,13 +366,17 @@ void ImgReaderGdal::getRange(std::vector<short>& range, int band) const
   sort(range.begin(),range.end());
 }
 
-unsigned long int ImgReaderGdal::getNvalid(int band) const
+/**
+ * @param band The band for which to calculate the number of valid pixels
+ * @return number of valid pixels in this dataset for the the selected band
+ **/
+unsigned long int ImgReaderGdal::getNvalid(int band)
 {
   unsigned long int nvalid=0;
   if(m_noDataValues.size()){
     std::vector<double> lineBuffer(nrOfCol());
     for(int irow=0;irow<nrOfRow();++irow){
-      readData(lineBuffer,GDT_Float64,irow,band);
+      readData(lineBuffer,irow,band);
       for(int icol=0;icol<nrOfCol();++icol){
 	if(isNoData(lineBuffer[icol]))
 	  continue;
@@ -351,8 +390,12 @@ unsigned long int ImgReaderGdal::getNvalid(int band) const
     return(nrOfCol()*nrOfRow());
 }
 
+/**
+ * @param refX, refY Calculated reference pixel position in geo-refererenced coordinates
+ * @param band The band for which to calculate the number of valid pixels
+ **/
 
-void ImgReaderGdal::getRefPix(double& refX, double &refY, int band) const
+void ImgReaderGdal::getRefPix(double& refX, double &refY, int band)
 {
   std::vector<double> lineBuffer(nrOfCol());
   double validCol=0;
@@ -360,7 +403,7 @@ void ImgReaderGdal::getRefPix(double& refX, double &refY, int band) const
   int nvalidCol=0;
   int nvalidRow=0;
   for(int irow=0;irow<nrOfRow();++irow){
-    readData(lineBuffer,GDT_Float64,irow,band);
+    readData(lineBuffer,irow,band);
     for(int icol=0;icol<nrOfCol();++icol){
       // bool valid=(find(m_noDataValues.begin(),m_noDataValues.end(),lineBuffer[icol])==m_noDataValues.end());
       // if(valid){
@@ -390,6 +433,5 @@ void ImgReaderGdal::getRefPix(double& refX, double &refY, int band) const
     refY=floor(validRow/nvalidRow-0.5);//upper corner
     //shift to lower left corner of pixel
     refY+=1;
-      
   }
 }
diff --git a/src/imageclasses/ImgReaderGdal.h b/src/imageclasses/ImgReaderGdal.h
index 519fe8b..ffc4559 100644
--- a/src/imageclasses/ImgReaderGdal.h
+++ b/src/imageclasses/ImgReaderGdal.h
@@ -1,6 +1,6 @@
 /**********************************************************************
 ImgReaderGdal.h: class to read raster files using GDAL API library
-Copyright (C) 2008-2012 Pieter Kempeneers
+Copyright (C) 2008-2016 Pieter Kempeneers
 
 This file is part of pktools
 
@@ -28,113 +28,140 @@ along with pktools.  If not, see <http://www.gnu.org/licenses/>.
 #include "gdal_priv.h"
 #include "base/Vector2d.h"
 
-//--------------------------------------------------------------------------
+/**
+   Class to read a raster dataset in a format supported by GDAL. Data are cached in memory for a number of rows (if memory>0) before read from file.
+
+   This class inherits from ImgRasterGdal, a general raster class to store e.g., filename, number of columns, rows and bands of the dataset. 
+**/
 class ImgReaderGdal : public virtual ImgRasterGdal
 {
 public:
+  ///default constructor. Image needs to be opened later with one of the open methods.
   ImgReaderGdal(void);
+  ///constructor opening an image. Set memory (in MB) to cache a number of rows in memory
   ImgReaderGdal(const std::string& filename, const GDALAccess& readMode=GA_ReadOnly){open(filename, readMode);};
+  ///destructor
   ~ImgReaderGdal(void);
+  ///Open an image.
   void open(const std::string& filename, const GDALAccess& readMode=GA_ReadOnly);
-  void close(void);
+  ///Set the memory (in MB) to cache a number of rows in memory
 
-  void setScale(double theScale, int band=0){
-    /* if(getRasterBand(band)->SetScale(theScale)==CE_Failure){ */
-    if(m_scale.size()!=nrOfBand()){//initialize
-      m_scale.resize(nrOfBand());
-      for(int iband=0;iband<nrOfBand();++iband)
-	m_scale[iband]=1.0;
-    }
-    m_scale[band]=theScale;
-    /* }; */
-  }
-  void setOffset(double theOffset, int band=0){
-    /* if(getRasterBand(band)->SetOffset(theOffset)==CE_Failure){ */
-    if(m_offset.size()!=nrOfBand()){
-      m_offset.resize(nrOfBand());
-      for(int iband=0;iband<nrOfBand();++iband)
-	m_offset[iband]=0.0;
-    }
-      m_offset[band]=theOffset;
-    /* }; */
-  }
-  template<typename T> void readData(T& value, const GDALDataType& dataType, int col, int row, int band=0) const;
-  template<typename T> void readData(std::vector<T>& buffer, const GDALDataType& dataType , int minCol, int maxCol, int row, int band=0) const;
-  template<typename T> void readData(std::vector<T>& buffer, const GDALDataType& dataType , int minCol, int maxCol, double row, int band=0, RESAMPLE resample=NEAR) const;
-  template<typename T> void readDataBlock(Vector2d<T>& buffer, const GDALDataType& dataType , int minCol, int maxCol, int minRow, int maxRow, int band=0) const;
-  template<typename T> void readDataBlock(std::vector<T>& buffer, const GDALDataType& dataType , int minCol, int maxCol, int minRow, int maxRow, int band=0) const;
-  template<typename T> void readData(std::vector<T>& buffer, const GDALDataType& dataType, int row, int band=0) const;
-  template<typename T> void readData(std::vector<T>& buffer, const GDALDataType& dataType, double row, int band=0, RESAMPLE resample=NEAR) const;
-  void getMinMax(int startCol, int endCol, int startRow, int endRow, int band, double& minValue, double& maxValue) const;
-  void getMinMax(double& minValue, double& maxValue, int band=0) const;
-  double getMin(int& col, int& row, int band=0) const;
+  ///Close the image.
+  void close(void);
+  ///Read a single pixel cell value at a specific column and row for a specific band (all indices start counting from 0)
+  template<typename T> void readData(T& value, int col, int row, int band=0);
+  ///Read pixel cell values for a range of columns for a specific row and band (all indices start counting from 0)
+  template<typename T> void readData(std::vector<T>& buffer, int minCol, int maxCol, int row, int band=0);
+  ///Read pixel cell values for a range of columns for a specific row and band (all indices start counting from 0). The row counter can be floating, in which case a resampling is applied at the row level. You still must apply the resampling at column level. This function will be deprecated, as the GDAL API now supports rasterIO resampling (see http://www.gdal.org/structGDALRasterIOExtraArg.html)
+  template<typename T> void readData(std::vector<T>& buffer, int minCol, int maxCol, double row, int band=0, RESAMPLE resample=NEAR);
+  ///Read pixel cell values for a range of columns and rows for a specific band (all indices start counting from 0). The buffer is a two dimensional vector (stl vector of stl vector) representing [row][col].
+  template<typename T> void readDataBlock(Vector2d<T>& buffer2d, int minCol, int maxCol, int minRow, int maxRow, int band=0);
+  ///Read pixel cell values for a range of columns and rows for a specific band (all indices start counting from 0). The buffer is a one dimensional stl vector representing all pixel values read starting from upper left to lower right.
+  template<typename T> void readDataBlock(std::vector<T>& buffer , int minCol, int maxCol, int minRow, int maxRow, int band=0);
+  ///Read pixel cell values for an entire row for a specific band (all indices start counting from 0)
+  template<typename T> void readData(std::vector<T>& buffer, int row, int band=0);
+  ///Read pixel cell values for an entire row for a specific band (all indices start counting from 0). The row counter can be floating, in which case a resampling is applied at the row level. You still must apply the resampling at column level. This function will be deprecated, as the GDAL API now supports rasterIO resampling (see http://www.gdal.org/structGDALRasterIOExtraArg.html)
+  template<typename T> void readData(std::vector<T>& buffer, double row, int band=0, RESAMPLE resample=NEAR);
+  ///Get the minimum and maximum cell values for a specific band in a region of interest defined by startCol, endCol, startRow and endRow (all indices start counting from 0).
+  void getMinMax(int startCol, int endCol, int startRow, int endRow, int band, double& minValue, double& maxValue);
+  ///Get the minimum and maximum cell values for a specific band (all indices start counting from 0).
+  void getMinMax(double& minValue, double& maxValue, int band=0);
+  ///Get the minimum cell values for a specific band and report the column and row in which the minimum value was found (all indices start counting from 0).
+  double getMin(int& col, int& row, int band=0);
+  ///Get the maximum cell values for a specific band and report the column and row in which the maximum value was found (all indices start counting from 0).
+  double getMax(int& col, int& row, int band=0);
+  ///Calculate the image histogram for a specific band using a defined number of bins and constrained   by a minimum and maximum value. A kernel density function can also be applied (default is false).
   double getHistogram(std::vector<double>& histvector, double& min, double& max,unsigned int& nbin, int theBand=0, bool kde=false);
-  double getMax(int& col, int& row, int band=0) const;
-  void getRefPix(double& refX, double &refY, int band=0) const;
-  void getRange(std::vector<short>& range, int Band=0) const;
-  unsigned long int getNvalid(int band) const;
+  ///Calculate the reference pixel as the centre of gravity pixel (weighted average of all values not taking into account no data values) for a specific band (start counting from 0).
+  void getRefPix(double& refX, double &refY, int band=0);
+  ///Calculate the range of cell values in the image for a specific band (start counting from 0).
+  void getRange(std::vector<short>& range, int Band=0);
+  ///Calculate the number of valid pixels (with a value not defined as no data).
+  unsigned long int getNvalid(int band);
 
 protected:
+  ///Set GDAL dataset number of columns, rows, bands and geotransform.
   void setCodec(const GDALAccess& readMode=GA_ReadOnly);
-
-  std::vector<double> m_scale;
-  std::vector<double> m_offset;
+  ///Block size to cache pixel cell values in memory (calculated from user provided memory size in MB)
+private:
 };
 
-//     adfGeoTransform[0] /* top left x */
-//     adfGeoTransform[1] /* w-e pixel resolution */
-//     adfGeoTransform[2] /* rotation, 0 if image is "north up" */
-//     adfGeoTransform[3] /* top left y */
-//     adfGeoTransform[4] /* rotation, 0 if image is "north up" */
-//     adfGeoTransform[5] /* n-s pixel resolution */
-
-template<typename T> void ImgReaderGdal::readData(T& value, const GDALDataType& dataType, int col, int row, int band) const
+/**
+ * @param[out] value The cell value that was read
+ * @param[in] col The column number to read (counting starts from 0)
+ * @param[in] row The row number to read (counting starts from 0)
+ * @param[in] band The band number to read (counting starts from 0)
+ **/
+template<typename T> void ImgReaderGdal::readData(T& value, int col, int row, int band)
 {
-  //fetch raster band
-  GDALRasterBand  *poBand;
   assert(band<nrOfBand()+1);
-  poBand = m_gds->GetRasterBand(band+1);//GDAL uses 1 based index
   assert(col<nrOfCol());
   assert(col>=0);
   assert(row<nrOfRow());
   assert(row>=0);
-  poBand->RasterIO(GF_Read,col,row,1,1,&value,1,1,dataType,0,0);
-  if(m_scale.size()>band)
-    value=static_cast<double>(value)*m_scale[band];
-  if(m_offset.size()>band)
-    value=static_cast<double>(value)+m_offset[band];
+  double dvalue=0;
+  double theScale=1;
+  double theOffset=0;
+  if(m_scale.size()>band||m_offset.size()>band){
+    if(m_scale.size()>band)
+      theScale=m_scale[band];
+    if(m_offset.size()>band)
+      theOffset=m_offset[band];
+  }
+  //fetch raster band
+  GDALRasterBand  *poBand;
+  poBand = m_gds->GetRasterBand(band+1);//GDAL uses 1 based index
+  poBand->RasterIO(GF_Read,col,row,1,1,&value,1,1,getGDALDataType<T>(),0,0);
+  dvalue=theScale*value+theOffset;
+  value=static_cast<T>(dvalue);
 }
 
-template<typename T> void ImgReaderGdal::readData(std::vector<T>& buffer, const GDALDataType& dataType, int minCol, int maxCol, int row, int band) const
+/**
+ * @param[out] buffer The vector with all cell values that were read
+ * @param[in] minCol First column from where to start reading (counting starts from 0)
+ * @param[in] maxCol Last column that must be read (counting starts from 0)
+ * @param[in] row The row number to read (counting starts from 0)
+ * @param[in] band The band number to read (counting starts from 0)
+ **/
+template<typename T> void ImgReaderGdal::readData(std::vector<T>& buffer, int minCol, int maxCol, int row, int band)
 {
-  //fetch raster band
-  GDALRasterBand  *poBand;
   assert(band<nrOfBand()+1);
-  poBand = m_gds->GetRasterBand(band+1);//GDAL uses 1 based index
   assert(minCol<nrOfCol());
   assert(minCol>=0);
   assert(maxCol<nrOfCol());
   assert(minCol<=maxCol);
   assert(row<nrOfRow());
   assert(row>=0);
-  if(buffer.size()!=maxCol-minCol+1)
-    buffer.resize(maxCol-minCol+1);
-  poBand->RasterIO(GF_Read,minCol,row,buffer.size(),1,&(buffer[0]),buffer.size(),1,dataType,0,0);
+  double theScale=1;
+  double theOffset=0;
   if(m_scale.size()>band||m_offset.size()>band){
-    double theScale=1;
-    double theOffset=0;
     if(m_scale.size()>band)
       theScale=m_scale[band];
     if(m_offset.size()>band)
       theOffset=m_offset[band];
+  }
+  //fetch raster band
+  GDALRasterBand  *poBand;
+  poBand = m_gds->GetRasterBand(band+1);//GDAL uses 1 based index
+  if(buffer.size()!=maxCol-minCol+1)
+    buffer.resize(maxCol-minCol+1);
+  poBand->RasterIO(GF_Read,minCol,row,buffer.size(),1,&(buffer[0]),buffer.size(),1,getGDALDataType<T>(),0,0);
+  if(m_scale.size()>band||m_offset.size()>band){
     for(int index=0;index<buffer.size();++index)
       buffer[index]=theScale*static_cast<double>(buffer[index])+theOffset;
   }
 }
 
-template<typename T> void ImgReaderGdal::readData(std::vector<T>& buffer, const GDALDataType& dataType , int minCol, int maxCol, double row, int band, RESAMPLE resample) const
+/**
+ * @param[out] buffer The vector with all cell values that were read
+ * @param[in] minCol First column from where to start reading (counting starts from 0)
+ * @param[in] maxCol Last column that must be read (counting starts from 0)
+ * @param[in] row The row number to read (counting starts from 0)
+ * @param[in] band The band number to read (counting starts from 0)
+ * @param[in] resample The resampling method (currently only BILINEAR and NEAR are supported)
+ **/
+template<typename T> void ImgReaderGdal::readData(std::vector<T>& buffer, int minCol, int maxCol, double row, int band, RESAMPLE resample)
 {
-  //todo: make upper and lower row depend on isGeo...
   std::vector<T> readBuffer_upper;
   std::vector<T> readBuffer_lower;
   if(buffer.size()!=maxCol-minCol+1)
@@ -149,29 +176,51 @@ template<typename T> void ImgReaderGdal::readData(std::vector<T>& buffer, const
       lowerRow=nrOfRow()-1;
     if(upperRow<0)
       upperRow=0;
-    readData(readBuffer_upper,GDT_Float64,minCol,maxCol,static_cast<int>(upperRow),band);
-    readData(readBuffer_lower,GDT_Float64,minCol,maxCol,static_cast<int>(lowerRow),band);
+    readData(readBuffer_upper,minCol,maxCol,static_cast<int>(upperRow),band);
+    readData(readBuffer_lower,minCol,maxCol,static_cast<int>(lowerRow),band);
     //do interpolation in y
     for(int icol=0;icol<maxCol-minCol+1;++icol){
       buffer[icol]=(lowerRow-row+0.5)*readBuffer_upper[icol]+(1-lowerRow+row-0.5)*readBuffer_lower[icol];
     }
     break;
   default:
-    readData(buffer,GDT_Float64,minCol,maxCol,static_cast<int>(row),band);
+    readData(buffer,minCol,maxCol,static_cast<int>(row),band);
     break;
   }
 }
 
-template<typename T> void ImgReaderGdal::readDataBlock(Vector2d<T>& buffer, const GDALDataType& dataType , int minCol, int maxCol, int minRow, int maxRow, int band) const
+/**
+ * @param[out] buffer2d Two dimensional vector of type Vector2d (stl vector of stl vector) representing [row][col]. This vector contains all cell values that were read
+ * @param[in] minCol First column from where to start reading (counting starts from 0)
+ * @param[in] maxCol Last column that must be read (counting starts from 0)
+ * @param[in] minRow First row from where to start reading (counting starts from 0)
+ * @param[in] maxRow Last row that must be read (counting starts from 0)
+ * @param[in] band The band number to read (counting starts from 0)
+ **/
+template<typename T> void ImgReaderGdal::readDataBlock(Vector2d<T>& buffer2d, int minCol, int maxCol, int minRow, int maxRow, int band)
 {
-  buffer.resize(maxRow-minRow+1);
+  buffer2d.resize(maxRow-minRow+1);
+  typename std::vector<T> buffer;
+  readDataBlock(buffer,minCol,maxCol,minRow,maxRow,band);
+  typename std::vector<T>::const_iterator startit=buffer.begin();
+  typename std::vector<T>::const_iterator endit=startit;
   for(int irow=minRow;irow<=maxRow;++irow){
-    buffer[irow-minRow].resize(maxCol-minCol+1);
-    readData(buffer[irow-minRow],dataType,minCol,maxCol,irow,band);
+    buffer2d[irow-minRow].resize(maxCol-minCol+1);
+    endit+=maxCol-minCol+1;
+    buffer2d[irow-minRow].assign(startit,endit);
+    startit+=maxCol-minCol+1;
   }
 }
   
-template<typename T> void ImgReaderGdal::readDataBlock(std::vector<T>& buffer, const GDALDataType& dataType , int minCol, int maxCol, int minRow, int maxRow, int band) const
+/**
+ * @param[out] buffer One dimensional vector representing all pixel values read starting from upper left to lower right.
+ * @param[in] minCol First column from where to start reading (counting starts from 0)
+ * @param[in] maxCol Last column that must be read (counting starts from 0)
+ * @param[in] minRow First row from where to start reading (counting starts from 0)
+ * @param[in] maxRow Last row that must be read (counting starts from 0)
+ * @param[in] band The band number to read (counting starts from 0)
+ **/
+template<typename T> void ImgReaderGdal::readDataBlock(std::vector<T>& buffer, int minCol, int maxCol, int minRow, int maxRow, int band)
 {
   double theScale=1;
   double theOffset=0;
@@ -179,10 +228,6 @@ template<typename T> void ImgReaderGdal::readDataBlock(std::vector<T>& buffer, c
     theScale=m_scale[band];
   if(m_offset.size()>band)
     theOffset=m_offset[band];
-  //fetch raster band
-  GDALRasterBand  *poBand;
-  assert(band<nrOfBand()+1);
-  poBand = m_gds->GetRasterBand(band+1);//GDAL uses 1 based index
   if(minCol>=nrOfCol() ||
      (minCol<0) ||
      (maxCol>=nrOfCol()) ||
@@ -194,62 +239,38 @@ template<typename T> void ImgReaderGdal::readDataBlock(std::vector<T>& buffer, c
     std::string errorString="block not within image boundaries";
     throw(errorString);
   }
-  /* assert(minCol<nrOfCol()); */
-  /* assert(minCol>=0); */
-  /* assert(maxCol<nrOfCol()); */
-  /* assert(minCol<=maxCol); */
-  /* assert(minRow<nrOfRow()); */
-  /* assert(minRow>=0); */
-  /* assert(maxRow<nrOfRow()); */
-  /* assert(minRow<=maxRow); */
   if(buffer.size()!=(maxRow-minRow+1)*(maxCol-minCol+1))
     buffer.resize((maxRow-minRow+1)*(maxCol-minCol+1));
-  poBand->RasterIO(GF_Read,minCol,minRow,maxCol-minCol+1,maxRow-minRow+1,&(buffer[0]),(maxCol-minCol+1),(maxRow-minRow+1),dataType,0,0);
+  //fetch raster band
+  GDALRasterBand  *poBand;
+  assert(band<nrOfBand()+1);
+  poBand = m_gds->GetRasterBand(band+1);//GDAL uses 1 based index
+  poBand->RasterIO(GF_Read,minCol,minRow,maxCol-minCol+1,maxRow-minRow+1,&(buffer[0]),(maxCol-minCol+1),(maxRow-minRow+1),getGDALDataType<T>(),0,0);
   if(m_scale.size()>band||m_offset.size()>band){
     for(int index=0;index<buffer.size();++index)
       buffer[index]=theScale*buffer[index]+theOffset;
   }
 }
 
-// template<typename T> void ImgReaderGdal::readDataBlock(vector<T>& buffer, const GDALDataType& dataType , int minCol, int maxCol, int minRow, int maxRow, int band) const
-// {
-//   assert(band<nrOfBand()+1);
-//   assert(minCol<nrOfCol());
-//   assert(minCol>=0);
-//   assert(maxCol<nrOfCol());
-//   assert(minCol<=maxCol);
-//   assert(minRow<nrOfRow());
-//   assert(minRow>=0);
-//   assert(maxRow<nrOfRow());
-//   assert(minRow<=maxRow);
-//   if(buffer.size()!=(maxRow-minRow+1)*(maxCol-minCol+1))
-//     buffer.resize((maxRow-minRow+1)*(maxCol-minCol+1));
-//   //fetch raster band
-//   GDALRasterBand  *poBand;
-//   assert(band<nrOfBand()+1);
-//   poBand = m_gds->GetRasterBand(band+1);//GDAL uses 1 based index
-//   for(int irow=0;irow<maxRow-minRow+1;++irow)
-//     poBand->RasterIO(GF_Read,minCol,minRow+irow,maxCol-minCol+1,1,&(buffer[irow*(maxCol-minCol+1)]),maxCol-minCol+1,1,dataType,0,0);
-// }
-  
-template<typename T> void ImgReaderGdal::readData(std::vector<T>& buffer, const GDALDataType& dataType, int row, int band) const
+/**
+ * @param[out] buffer The vector with all cell values that were read
+ * @param[in] row The row number to read (counting starts from 0)
+ * @param[in] band The band number to read (counting starts from 0)
+ **/
+template<typename T> void ImgReaderGdal::readData(std::vector<T>& buffer, int row, int band)
 {
-  readData(buffer,dataType,0,nrOfCol()-1,row,band);
+  readData(buffer,0,nrOfCol()-1,row,band);
 }
 
-template<typename T> void ImgReaderGdal::readData(std::vector<T>& buffer, const GDALDataType& dataType, double row, int band, RESAMPLE resample) const
+/**
+ * @param[out] buffer The vector with all cell values that were read
+ * @param[in] row The row number to read (counting starts from 0)
+ * @param[in] band The band number to read (counting starts from 0)
+ * @param[in] resample The resampling method (currently only BILINEAR and NEAR are supported).
+ **/
+template<typename T> void ImgReaderGdal::readData(std::vector<T>& buffer, double row, int band, RESAMPLE resample)
 {
-  readData(buffer,dataType,0,nrOfCol()-1,row,band,resample);
+  readData(buffer,0,nrOfCol()-1,row,band,resample);
 }
 
-
 #endif // _IMGREADERGDAL_H_
-
-//       //fetch raster band
-//   GDALRasterBand  *poBand;
-//   assert(band<nrOfBand()+1);
-//   poBand = m_gds->GetRasterBand(band+1);//GDAL uses 1 based index
-//   buffer.resize(maxCol-minCol+1);
-//   assert(minCol<nrOfCol());
-//   assert(row<nrOfRow());
-//   poBand->RasterIO(GF_Read,minCol,row,buffer.size(),1,&(buffer[0]),buffer.size(),1,GDT_Int16,0,0);
diff --git a/src/imageclasses/ImgReaderOgr.cc b/src/imageclasses/ImgReaderOgr.cc
index 0b4316e..e6b3479 100644
--- a/src/imageclasses/ImgReaderOgr.cc
+++ b/src/imageclasses/ImgReaderOgr.cc
@@ -66,11 +66,20 @@ void ImgReaderOgr::setCodec(void){
   //register the drivers
   GDALAllRegister();
   //open the input OGR datasource. Datasources can be files, RDBMSes, directories full of files, or even remote web services depending on the driver being used. However, the datasource name is always a single string.
-  m_datasource = (GDALDataset*) GDALOpenEx(m_filename.c_str(), GDAL_OF_READONLY, NULL, NULL, NULL);
+  m_datasource = (GDALDataset*) GDALOpenEx(m_filename.c_str(), GDAL_OF_VECTOR||GDAL_OF_READONLY, NULL, NULL, NULL);
+  //  m_datasource = (GDALDataset*) GDALOpenEx(m_filename.c_str(), GDAL_OF_READONLY||GDAL_OF_VECTOR, NULL, NULL, NULL);
 #endif
   if( m_datasource == NULL ){
+#if GDAL_VERSION_MAJOR < 2
     std::string errorString="Open failed";
     throw(errorString);
+#else
+    m_datasource = (GDALDataset*) GDALOpenEx(m_filename.c_str(), GDAL_OF_VECTOR, NULL, NULL, NULL);
+    if( m_datasource == NULL ){
+      std::string errorString="Open failed";
+      throw(errorString);
+    }
+#endif
   }
 }
 
diff --git a/src/imageclasses/ImgUpdaterGdal.cc b/src/imageclasses/ImgUpdaterGdal.cc
index 6887639..b77fc8f 100644
--- a/src/imageclasses/ImgUpdaterGdal.cc
+++ b/src/imageclasses/ImgUpdaterGdal.cc
@@ -22,6 +22,10 @@ along with pktools.  If not, see <http://www.gnu.org/licenses/>.
 
 ImgUpdaterGdal::ImgUpdaterGdal(void){};
 
+/**
+ * @param filename Open a raster dataset with this filename
+ * @param readMode Open dataset in ReadOnly or Update mode
+ **/
 ImgUpdaterGdal::ImgUpdaterGdal(const std::string& filename, const GDALAccess& readMode){
   open(filename,readMode);
 }
@@ -35,10 +39,15 @@ ImgUpdaterGdal::~ImgUpdaterGdal(void)
 
 //--------------------------------------------------------------------------
 
+/**
+ * @param filename Open a raster dataset with this filename
+ * @param readMode Open dataset in ReadOnly or Update mode
+ **/
 void ImgUpdaterGdal::open(const std::string& filename, const GDALAccess& readMode)
 {
   ImgReaderGdal::open(filename,readMode);
 }
+
 void ImgUpdaterGdal::close(void)
 {
   ImgRasterGdal::close();
diff --git a/src/imageclasses/ImgUpdaterGdal.h b/src/imageclasses/ImgUpdaterGdal.h
index 0737656..97b7fa3 100644
--- a/src/imageclasses/ImgUpdaterGdal.h
+++ b/src/imageclasses/ImgUpdaterGdal.h
@@ -27,10 +27,15 @@ along with pktools.  If not, see <http://www.gnu.org/licenses/>.
 class ImgUpdaterGdal : public ImgReaderGdal, public ImgWriterGdal
 {
 public:
+  ///default constructor. Image needs to be opened later with one of the open methods.
   ImgUpdaterGdal(void);
+  ///constructor opening an image in update mode (read and write).
   ImgUpdaterGdal(const std::string& filename, const GDALAccess& readMode=GA_Update);
+  ///destructor
   ~ImgUpdaterGdal(void);
+  ///Open an image in update mode (read and write).
   void open(const std::string& filename, const GDALAccess& readMode=GA_Update);
+  ///close the image
   void close(void);
 
 protected:
diff --git a/src/imageclasses/ImgWriterGdal.cc b/src/imageclasses/ImgWriterGdal.cc
index 226b823..3516f95 100644
--- a/src/imageclasses/ImgWriterGdal.cc
+++ b/src/imageclasses/ImgWriterGdal.cc
@@ -1,6 +1,6 @@
 /**********************************************************************
 ImgWriterGdal.cc: class to write raster files using GDAL API library
-Copyright (C) 2008-2012 Pieter Kempeneers
+Copyright (C) 2008-2016 Pieter Kempeneers
 
 This file is part of pktools
 
@@ -21,7 +21,6 @@ along with pktools.  If not, see <http://www.gnu.org/licenses/>.
 #include <iomanip>
 #include <time.h>
 #include <algorithm>
-#include "ogr_spatialref.h"
 extern "C" {
 #include "gdal_alg.h"
 }
@@ -31,69 +30,47 @@ extern "C" {
 #include <config.h>
 #endif
 
-//---------------------------------------------------------------------------
-
-// ImgWriterGdal::ImgWriterGdal(void)
-//   : m_gds(NULL), m_magic_x(1), m_magic_y(1), m_isGeoRef(false), m_ncol(0), m_nrow(0), m_nband(0), m_interleave("BAND"), m_compression("LZW")
-// {}
-
 ImgWriterGdal::ImgWriterGdal(void){};
 
-ImgWriterGdal::~ImgWriterGdal(void)
-{
-  // delete m_gds;
-//   GDALDumpOpenDatasets(stderr);
-//   GDALDestroyDriverManager();//could still be be used by other objects
-}
+ImgWriterGdal::~ImgWriterGdal(void){};
 
-//---------------------------------------------------------------------------
+
+/**
+ * @param filename Open a raster dataset with this filename
+ * @param imgSrc Use this source image as a template to copy image attributes
+ * @param options Creation options
+ **/
 void ImgWriterGdal::open(const std::string& filename, const ImgReaderGdal& imgSrc, const std::vector<std::string>& options)
 {
-  // m_isGeoRef=imgSrc.isGeoRef();
-  m_filename=filename;
   m_ncol=imgSrc.nrOfCol();
   m_nrow=imgSrc.nrOfRow();
   m_nband=imgSrc.nrOfBand();
-  // m_type=imgSrc.getDataType();
+  m_dataType=imgSrc.getDataType();
+  m_filename=filename;
   m_options=options;
-  // m_interleave=imgSrc.getInterleave();
-  // m_compression=imgSrc.getCompression();
-  // imgSrc.getMagicPixel(m_magic_x,m_magic_y);
   setCodec(imgSrc);
 }
 
-// void ImgWriterGdal::open(const std::string& filename, int ncol, int nrow, int nband, const GDALDataType& dataType, const std::string& imageType, const std::string& interleave, const std::string& compression, int magicX, int magicY)
-// {
-//   m_isGeoRef=false;
-//   m_filename = filename;
-//   m_ncol = ncol;
-//   m_nrow = nrow;
-//   m_nband = nband;
-//   m_type=dataType;
-//   m_interleave = interleave;
-//   m_compression=compression;
-//   m_magic_x=magicX;
-//   m_magic_y=magicY;
-//   setCodec(imageType);
-// }
-
+/**
+ * @param filename Open a raster dataset with this filename
+ * @param ncol Number of columns in image
+ * @param nrow Number of rows in image
+ * @param nband Number of bands in image
+ * @param dataType The data type of the image (one of the GDAL supported datatypes: GDT_Byte, GDT_[U]Int[16|32], GDT_Float[32|64])
+ * @param imageType Image type. Currently only those formats where the drivers support the Create method can be written
+ * @param options Creation options
+ **/
 void ImgWriterGdal::open(const std::string& filename, int ncol, int nrow, int nband, const GDALDataType& dataType, const std::string& imageType, const std::vector<std::string>& options)
 {
-  // m_isGeoRef=false;
-  m_filename = filename;
   m_ncol = ncol;
   m_nrow = nrow;
   m_nband = nband;
-  // m_type=dataType;
-  // m_interleave = interleave;
-  // m_compression=compression;
+  m_dataType = dataType;
+  m_filename = filename;
   m_options=options;
-  // m_magic_x=magicX;
-  // m_magic_y=magicY;
-  setCodec(dataType,imageType);
+  setCodec(imageType);
 }
 
-//---------------------------------------------------------------------------
 void ImgWriterGdal::close(void)
 {
   ImgRasterGdal::close();
@@ -104,7 +81,10 @@ void ImgWriterGdal::close(void)
     CSLDestroy(papszOptions);
 }
 
-//---------------------------------------------------------------------------
+
+/**
+ * @param imgSrc Use this source image as a template to copy image attributes
+ **/
 void ImgWriterGdal::setCodec(const ImgReaderGdal& imgSrc){
   GDALAllRegister();
   GDALDriver *poDriver;
@@ -120,20 +100,21 @@ void ImgWriterGdal::setCodec(const ImgReaderGdal& imgSrc){
   char **papszOptions=NULL;
   for(std::vector<std::string>::const_iterator optionIt=m_options.begin();optionIt!=m_options.end();++optionIt)
     papszOptions=CSLAddString(papszOptions,optionIt->c_str());
-  // char **papszOptions=NULL;
-  // std::ostringstream compressList;
-  // compressList << "COMPRESS=" << m_compression;
-  // papszOptions = CSLAddString(papszOptions,(compressList.str()).c_str());
-  // std::ostringstream interleaveList;
-  // interleaveList << "INTERLEAVE=" << m_interleave;
-  // papszOptions = CSLAddString(papszOptions,(interleaveList.str()).c_str());
+
   m_gds=poDriver->Create(m_filename.c_str(),m_ncol,m_nrow,m_nband,imgSrc.getDataType(),papszOptions);
-  // if(imgSrc.isGeoRef()){
-    setProjection(imgSrc.getProjection());
-    double gt[6];
-    imgSrc.getGeoTransform(gt);
-    setGeoTransform(gt);
-  // }
+  double gt[6];
+  imgSrc.getGeoTransform(gt);
+  if(setGeoTransform(gt)!=CE_None)
+    std::cerr << "Warning: could not write geotransform information in " << m_filename << std::endl;
+  setProjection(imgSrc.getProjection());
+  if(setProjection(imgSrc.getProjection())!=CE_None)
+    std::cerr << "Warning: could not write projection information in " << m_filename << std::endl;
+
+  if(m_noDataValues.size()){
+    for(int iband=0;iband<nrOfBand();++iband)
+      GDALSetNoDataValue(m_noDataValues[0],iband);
+  }
+
   m_gds->SetMetadata(imgSrc.getMetadata() ); 
   m_gds->SetMetadataItem( "TIFFTAG_DOCUMENTNAME", m_filename.c_str());
   std::string versionString="pktools ";
@@ -169,20 +150,15 @@ void ImgWriterGdal::setCodec(const ImgReaderGdal& imgSrc){
   else
     datestream << ":" << now->tm_sec;
   m_gds->SetMetadataItem( "TIFFTAG_DATETIME", datestream.str().c_str());
-//   list<std::string> lmeta;
-//   imgReader.getMetadata(lmeta);
-//   list<std::string>::const_iterator lit=lmeta.begin();
-//   while(lit!=lmeta.end()){
-//     cout << *lit << endl;
-//     ++lit;
-//   }
-  // m_gds->SetMetadataItem( "INTERLEAVE", m_interleave.c_str(), "IMAGE_STRUCTURE" );
-  // m_gds->SetMetadataItem( "COMPRESS", m_compression.c_str(), "IMAGE_STRUCTURE" );
   if(imgSrc.getColorTable()!=NULL)
     setColorTable(imgSrc.getColorTable());
 }
 
-void ImgWriterGdal::setCodec(const GDALDataType& dataType, const std::string& imageType)
+/**
+ * @param dataType The data type of the image (one of the GDAL supported datatypes: GDT_Byte, GDT_[U]Int[16|32], GDT_Float[32|64])
+ * @param imageType Image type. Currently only those formats where the drivers support the Create method can be written
+ **/
+void ImgWriterGdal::setCodec(const std::string& imageType)
 {
   GDALAllRegister();
   GDALDriver *poDriver;
@@ -199,16 +175,13 @@ void ImgWriterGdal::setCodec(const GDALDataType& dataType, const std::string& im
   char **papszOptions=NULL;
   for(std::vector<std::string>::const_iterator optionIt=m_options.begin();optionIt!=m_options.end();++optionIt)
     papszOptions=CSLAddString(papszOptions,optionIt->c_str());
-  // std::ostringstream compressList;
-  // compressList << "COMPRESS=" << m_compression;
-  // papszOptions = CSLAddString(papszOptions,(compressList.str()).c_str());
-  // std::ostringstream interleaveList;
-  // interleaveList << "INTERLEAVE=" << m_interleave;
-  // papszOptions = CSLAddString(papszOptions,(interleaveList.str()).c_str());
-  m_gds=poDriver->Create(m_filename.c_str(),m_ncol,m_nrow,m_nband,dataType,papszOptions);
-
-  // m_gds->SetMetadataItem( "INTERLEAVE", m_interleave.c_str(), "IMAGE_STRUCTURE" );
-  // m_gds->SetMetadataItem( "COMPRESSION", m_compression.c_str(), "IMAGE_STRUCTURE" );
+  m_gds=poDriver->Create(m_filename.c_str(),m_ncol,m_nrow,m_nband,m_dataType,papszOptions);
+  double gt[6];
+  getGeoTransform(gt);
+  if(setGeoTransform(gt)!=CE_None)
+    std::cerr << "Warning: could not write geotransform information in " << m_filename << std::endl;
+  if(setProjection(m_projection)!=CE_None)
+    std::cerr << "Warning: could not write projection information in " << m_filename << std::endl;
   m_gds->SetMetadataItem( "TIFFTAG_DOCUMENTNAME", m_filename.c_str());
   std::string versionString="pktools ";
   versionString+=VERSION;
@@ -243,100 +216,15 @@ void ImgWriterGdal::setCodec(const GDALDataType& dataType, const std::string& im
   else
     datestream << ":" << now->tm_sec;
   m_gds->SetMetadataItem( "TIFFTAG_DATETIME", datestream.str().c_str());
-//   m_gds->SetMetadataItem( "TIFFTAG_DATETIME", ctime(&rawtime));
 }
 
+/**
+ * @param metadata Set this metadata when writing the image (if supported byt the driver)
+ **/
 void ImgWriterGdal::setMetadata(char** metadata)
 {
-  assert(m_gds);
-  m_gds->SetMetadata(metadata); 
-}
-
-//---------------------------------------------------------------------------
-void ImgWriterGdal::setGeoTransform(double* gt){
-  // m_isGeoRef=true;
-  m_gt[0]=gt[0];
-  m_gt[1]=gt[1];
-  m_gt[2]=gt[2];
-  m_gt[3]=gt[3];
-  m_gt[4]=gt[4];
-  m_gt[5]=gt[5];
   if(m_gds)
-    m_gds->SetGeoTransform(m_gt);
-}
-
-// void ImgWriterGdal::setGeoTransform(double ulx, double uly, double deltaX, double deltaY, double rot1, double rot2)
-// {
-//   m_isGeoRef=true;
-//   m_ulx=ulx;
-//   m_uly=uly;
-//   m_delta_x=deltaX;
-//   m_delta_y=deltaY;
-//   double adfGeoTransform[6];// { 444720, 30, 0, 3751320, 0, -30 };
-//   adfGeoTransform[0]=ulx;
-//   adfGeoTransform[1]=deltaX;
-//   adfGeoTransform[2]=rot1;
-//   adfGeoTransform[3]=uly;
-//   adfGeoTransform[4]=rot2;
-//   adfGeoTransform[5]=-deltaY;//convention of GDAL!
-//   if(m_gds)
-//     m_gds->SetGeoTransform(adfGeoTransform);
-// }
-
-void ImgWriterGdal::copyGeoTransform(const ImgReaderGdal& imgSrc)
-{
-  setProjection(imgSrc.getProjection());
-  double gt[6];
-  imgSrc.getGeoTransform(gt);
-  setGeoTransform(gt);
-  // imgSrc.getGeoTransform(ulx,uly,deltaX,deltaY,rot1,rot2);
-  // setGeoTransform(ulx,uly,deltaX,deltaY,rot1,rot2);
-}
-
-std::string ImgWriterGdal::setProjectionProj4(const std::string& projection)
-{
-  // if(!m_isGeoRef)
-  //   m_isGeoRef=true;
-
-  OGRSpatialReference theRef;
-  theRef.SetFromUserInput(projection.c_str());
-  char *wktString;
-  theRef.exportToWkt(&wktString);
-  assert(m_gds);
-  m_gds->SetProjection(wktString);
-  return(wktString);
-
-    // OGRSpatialReferenceH hSRS;  
-    // char *pszResult = NULL;  
-  
-    // CPLErrorReset();  
-      
-    // hSRS = OSRNewSpatialReference( NULL );  
-    // if( OSRSetFromUserInput( hSRS, projection.c_str() ) == OGRERR_NONE )  
-    //     OSRExportToWkt( hSRS, &pszResult );  
-    // else  
-    // {  
-    //     std::ostringstream s;
-    //     s << "Error in set projection " << projection;
-    //     throw(s.str());
-    // }  
-    // std::string theProjection=pszResult;
-    // assert(m_gds);
-    // m_gds->SetProjection(theProjection.c_str());
-    // OSRDestroySpatialReference( hSRS );  
-  
-    // return theProjection;  
-}
-
-void ImgWriterGdal::setProjection(const std::string& projection)
-{
-  // if(!m_isGeoRef)
-  //   m_isGeoRef=true;
-  OGRSpatialReference oSRS;
-  char *pszSRS_WKT = NULL;
-  assert(m_gds);
-  m_gds->SetProjection(projection.c_str());
-  CPLFree(pszSRS_WKT);
+    m_gds->SetMetadata(metadata); 
 }
 
 //default projection: ETSR-LAEA
@@ -358,7 +246,11 @@ void ImgWriterGdal::setProjection(const std::string& projection)
 //   return(theProjection);
 // }
 
-//filename is ascii file containing 5 columns: index R G B ALFA (0:transparent, 255:solid)
+
+/**
+ * @param filename ASCII file containing 5 columns: index R G B ALFA (0:transparent, 255:solid)
+ * @param band band number to set color table (starting counting from 0)
+ **/
 void ImgWriterGdal::setColorTable(const std::string& filename, int band)
 {
   //todo: fool proof table in file (no checking currently done...)
@@ -373,48 +265,70 @@ void ImgWriterGdal::setColorTable(const std::string& filename, int band)
     GDALColorEntry sEntry;
     short id;
     ist >> id >> sEntry.c1 >> sEntry.c2 >> sEntry.c3 >> sEntry.c4;
-//     poCT->SetColorEntry(id,&sEntry);
     colorTable.SetColorEntry(id,&sEntry);
   }
-  // assert(nline==colorTable.GetColorEntryCount());
-//   (m_gds->GetRasterBand(band+1))->SetColorTable(poCT);
-  (m_gds->GetRasterBand(band+1))->SetColorTable(&colorTable);
+  if(m_gds)
+    (m_gds->GetRasterBand(band+1))->SetColorTable(&colorTable);
 }
 
+/**
+ * @param colorTable Instance of the GDAL class GDALColorTable
+ * @param band band number to set color table (starting counting from 0)
+ **/
 void ImgWriterGdal::setColorTable(GDALColorTable* colorTable, int band)
 {
-  (m_gds->GetRasterBand(band+1))->SetColorTable(colorTable);
+  if(m_gds)
+    (m_gds->GetRasterBand(band+1))->SetColorTable(colorTable);
 }
 
-//write an entire image from memory to file
-bool ImgWriterGdal::writeData(void* pdata, const GDALDataType& dataType, int band) const{
-  //fetch raster band
-  GDALRasterBand  *poBand;
-  if(band>=nrOfBand()+1){
-    std::ostringstream s;
-    s << "band (" << band << ") exceeds nrOfBand (" << nrOfBand() << ")";
-    throw(s.str());
-  }
-  poBand = m_gds->GetRasterBand(band+1);//GDAL uses 1 based index
-  poBand->RasterIO(GF_Write,0,0,nrOfCol(),nrOfRow(),pdata,nrOfCol(),nrOfRow(),dataType,0,0);
-  return true;
-}  
+// //write an entire image from memory to file
+// bool ImgWriterGdal::writeData(void* pdata, const GDALDataType& dataType, int band){
+//   //fetch raster band
+//   GDALRasterBand  *poBand;
+//   if(band>=nrOfBand()+1){
+//     std::ostringstream s;
+//     s << "band (" << band << ") exceeds nrOfBand (" << nrOfBand() << ")";
+//     throw(s.str());
+//   }
+//   poBand = m_gds->GetRasterBand(band+1);//GDAL uses 1 based index
+//   poBand->RasterIO(GF_Write,0,0,nrOfCol(),nrOfRow(),pdata,nrOfCol(),nrOfRow(),dataType,0,0);
+//   return true;
+// }  
 
-void ImgWriterGdal::rasterizeOgr(ImgReaderOgr& ogrReader, const std::vector<double>& burnValues, const std::vector<std::string>& layernames ){
+/**
+ * @param ogrReader Vector dataset as an instance of the ImgReaderOgr that must be rasterized
+ * @param burnValues Values to burn into raster cells (one value for each band)
+ * @param controlOptions special options controlling rasterization (ATTRIBUTE|CHUNKYSIZE|ALL_TOUCHED|BURN_VALUE_FROM|MERGE_ALG)
+ * "ATTRIBUTE":
+ * Identifies an attribute field on the features to be used for a burn in value. The value will be burned into all output bands. If specified, padfLayerBurnValues will not be used and can be a NULL pointer. 
+ * "CHUNKYSIZE":
+ * The height in lines of the chunk to operate on. The larger the chunk size the less times we need to make a pass through all the shapes. If it is not set or set to zero the default chunk size will be used. Default size will be estimated based on the GDAL cache buffer size using formula: cache_size_bytes/scanline_size_bytes, so the chunk will not exceed the cache.
+ * "ALL_TOUCHED":
+ * May be set to TRUE to set all pixels touched by the line or polygons, not just those whose center is within the polygon or that are selected by brezenhams line algorithm. Defaults to FALSE. 
+ "BURN_VALUE_
+ * May be set to "Z" to use the Z values of the geometries. The value from padfLayerBurnValues or the attribute field value is added to this before burning. In default case dfBurnValue is burned as it is. This is implemented properly only for points and lines for now. Polygons will be burned using the Z value from the first point. The M value may be supported in the future. 
+ * "MERGE_ALG":
+ * May be REPLACE (the default) or ADD. REPLACE results in overwriting of value, while ADD adds the new value to the existing raster, suitable for heatmaps for instance. 
+ * @param layernames Names of the vector dataset layers to process. Leave empty to process all layers
+ **/
+void ImgWriterGdal::rasterizeOgr(ImgReaderOgr& ogrReader, const std::vector<double>& burnValues, const std::vector<std::string>& controlOptions, const std::vector<std::string>& layernames ){
   std::vector<int> bands;
-  std::vector<double> burnBands;//burn values for all bands in a single layer
-  std::vector<double> burnLayers;//burn values for all bands and all layers
-  if(burnValues.empty()){
-    std::string errorString="Error: burn values not provided";
+  if(burnValues.empty()&&controlOptions.empty()){
+    std::string errorString="Error: either burn values or control options must be provided";
     throw(errorString);
   }
-  burnBands=burnValues;
-  while(burnBands.size()<nrOfBand())
-    burnBands.push_back(burnValues[0]);
   for(int iband=0;iband<nrOfBand();++iband)
     bands.push_back(iband+1);
   std::vector<OGRLayerH> layers;
   int nlayer=0;
+
+  std::vector<double> burnBands;//burn values for all bands in a single layer
+  std::vector<double> burnLayers;//burn values for all bands and all layers
+  if(burnValues.size()){
+    burnBands=burnValues;
+    while(burnBands.size()<nrOfBand())
+      burnBands.push_back(burnValues[0]);
+  }
   for(int ilayer=0;ilayer<ogrReader.getLayerCount();++ilayer){
     std::string currentLayername=ogrReader.getLayer(ilayer)->GetName();
     if(layernames.size())
@@ -423,22 +337,33 @@ void ImgWriterGdal::rasterizeOgr(ImgReaderOgr& ogrReader, const std::vector<doub
     std::cout << "processing layer " << currentLayername << std::endl;
     layers.push_back((OGRLayerH)ogrReader.getLayer(ilayer));
     ++nlayer;
-    for(int iband=0;iband<nrOfBand();++iband)
-      burnLayers.insert(burnLayers.end(),burnBands.begin(),burnBands.end());
+    if(burnValues.size()){
+      for(int iband=0;iband<nrOfBand();++iband)
+        burnLayers.insert(burnLayers.end(),burnBands.begin(),burnBands.end());
+    }
   }
-  void *pTransformArg;
-  char **papszOptions;
-  double dfComplete=0.0;
-  const char* pszMessage;
+  void* pTransformArg;
+  GDALProgressFunc pfnProgress=NULL;
   void* pProgressArg=NULL;
-  GDALProgressFunc pfnProgress=GDALTermProgress;
-  pfnProgress(dfComplete,pszMessage,pProgressArg);
-  if(GDALRasterizeLayers( (GDALDatasetH)m_gds,nrOfBand(),&(bands[0]),layers.size(),&(layers[0]),NULL,pTransformArg,&(burnLayers[0]),papszOptions,pfnProgress,pProgressArg)!=CE_None){
-    std::cerr << CPLGetLastErrorMsg() << std::endl;
-    exit(1);
+
+  char **coptions=NULL;
+  for(std::vector<std::string>::const_iterator optionIt=controlOptions.begin();optionIt!=controlOptions.end();++optionIt)
+    coptions=CSLAddString(coptions,optionIt->c_str());
+
+  if(controlOptions.size()){
+    if(GDALRasterizeLayers( (GDALDatasetH)m_gds,nrOfBand(),&(bands[0]),layers.size(),&(layers[0]),NULL,pTransformArg,NULL,coptions,pfnProgress,pProgressArg)!=CE_None){
+      std::string errorString(CPLGetLastErrorMsg());
+      throw(errorString);
+    }
+  }
+  else if(burnValues.size()){
+    if(GDALRasterizeLayers( (GDALDatasetH)m_gds,nrOfBand(),&(bands[0]),layers.size(),&(layers[0]),NULL,pTransformArg,&(burnLayers[0]),NULL,pfnProgress,pProgressArg)!=CE_None){
+      std::string errorString(CPLGetLastErrorMsg());
+      throw(errorString);
+    }
   }
   else{
-    dfComplete=1.0;
-    pfnProgress(dfComplete,pszMessage,pProgressArg);
+    std::string errorString="Error: either attribute fieldname or burn values must be set to rasterize vector dataset";
+    throw(errorString);
   }
 }
diff --git a/src/imageclasses/ImgWriterGdal.h b/src/imageclasses/ImgWriterGdal.h
index 9c7fcd0..b45771d 100644
--- a/src/imageclasses/ImgWriterGdal.h
+++ b/src/imageclasses/ImgWriterGdal.h
@@ -1,9 +1,9 @@
 /**********************************************************************
 ImgWriterGdal.h: class to write raster files using GDAL API library
-Copyright (C) 2008-2012 Pieter Kempeneers
+Copyright (C) 2008-2016 Pieter Kempeneers
 
 This file is part of pktools
-n
+
 pktools is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
@@ -29,96 +29,124 @@ along with pktools.  If not, see <http://www.gnu.org/licenses/>.
 #include "ImgReaderGdal.h"
 #include "ImgReaderOgr.h"
 
-//--------------------------------------------------------------------------
+/** Class to write a raster dataset in a format supported by GDAL. Currently only those formats where the drivers support the Create method can be written.
+
+   This class inherits from ImgRasterGdal, a general raster class to store e.g., filename, number of columns, rows and bands of the dataset. 
+ **/
+
 class ImgWriterGdal : public virtual ImgRasterGdal
 {
 public:
+  ///default constructor. Image needs to be opened later with one of the open methods.
   ImgWriterGdal(void);
+  ///constructor opening an image for writing, copying image attributes from a source image. Image is directly writen to file.
+  ImgWriterGdal(const std::string& filename, const ImgReaderGdal& imgSrc, const std::vector<std::string>& options=std::vector<std::string>()){open(filename, imgSrc, options);};
+  ///constructor opening an image for writing, defining all image attributes. Image is directly written to file.
+  ImgWriterGdal(const std::string& filename, int ncol, int nrow, int nband, const GDALDataType& dataType, const std::string& imageType, const std::vector<std::string>& options=std::vector<std::string>()){open(filename, ncol, nrow, nband, dataType, imageType, options);};
+  ///destructor
   ~ImgWriterGdal(void);
-  void open(const std::string& filename);
+
+  ///Open an image for writing, copying image attributes from a source image. Image is directly written to file.
   void open(const std::string& filename, const ImgReaderGdal& imgSrc, const std::vector<std::string>& options=std::vector<std::string>());
+  ///Open an image for writing, defining all image attributes. Image is directly written to file.
   void open(const std::string& filename, int ncol, int nrow, int nband, const GDALDataType& dataType, const std::string& imageType, const std::vector<std::string>& options=std::vector<std::string>());
-  void close(void);
+  void close(void);//definition in ImgWritergdal.cc
+  ///Set the image description (only for GeoTiff format: TIFFTAG_IMAGEDESCRIPTION)
+  void setImageDescription(const std::string& imageDescription){m_gds->SetMetadataItem( "TIFFTAG_IMAGEDESCRIPTION",imageDescription.c_str());};
 
-  void copyGeoTransform(const ImgReaderGdal& imgSrc);
-  void setProjection(const std::string& projection);
-  std::string setProjectionProj4(const std::string& projection);
+  ///Write a single pixel cell value at a specific column and row for a specific band (all indices start counting from 0)
+  template<typename T> bool writeData(T& value, int col, int row, int band=0);
+  ///Write pixel cell values for a range of columns for a specific row and band (all indices start counting from 0)
+  template<typename T> bool writeData(std::vector<T>& buffer, int minCol, int maxCol, int row, int band=0);
+  ///Write pixel cell values for an entire row for a specific band (all indices start counting from 0)
+  template<typename T> bool writeData(std::vector<T>& buffer, int row, int band=0);
+  // deprecated? Write an entire image from memory to file
+  // bool writeData(void* pdata, const GDALDataType& dataType, int band=0);
+  ///Write pixel cell values for a range of columns and rows for a specific band (all indices start counting from 0). The buffer is a two dimensional vector (stl vector of stl vector) representing [row][col].
+  template<typename T> bool writeDataBlock(Vector2d<T>& buffer2d, int minCol, int maxCol, int minRow, int maxRow, int band=0);
 
-  void setImageDescription(const std::string& imageDescription){m_gds->SetMetadataItem( "TIFFTAG_IMAGEDESCRIPTION",imageDescription.c_str());};
-  void setGeoTransform(double* gt);
-
-  template<typename T> bool writeData(T& value, const GDALDataType& dataType, int col, int row, int band=0) const;
-  template<typename T> bool writeData(std::vector<T>& buffer, const GDALDataType& dataType , int minCol, int maxCol, int row, int band=0) const;
-  template<typename T> bool writeData(std::vector<T>& buffer, const GDALDataType& dataType, int row, int band=0) const;
-  bool writeData(void* pdata, const GDALDataType& dataType, int band=0) const;
-  template<typename T> bool writeDataBlock(Vector2d<T>& buffer, const GDALDataType& dataType , int minCol, int maxCol, int minRow, int maxRow, int band=0) const;
-  // std::string getInterleave(){return m_interleave;};
-  // std::string getCompression(){return m_compression;};
+  ///Set the color table using an (ASCII) file with 5 columns (value R G B alpha)
   void setColorTable(const std::string& filename, int band=0);
+  ///Set the color table using the GDAL class GDALColorTable
   void setColorTable(GDALColorTable* colorTable, int band=0);
+  ///Set specific metadata (driver specific)
   void setMetadata(char** metadata);
-  void rasterizeOgr(ImgReaderOgr& ogrReader, const std::vector<double>& burnValues=std::vector<double>(), const std::vector<std::string>& layernames=std::vector<std::string>());
+  ///Rasterize an OGR vector dataset using the gdal algorithm "GDALRasterizeLayers"
+  void rasterizeOgr(ImgReaderOgr& ogrReader, const std::vector<double>& burnValues, const std::vector<std::string>& controlOptions=std::vector<std::string>(), const std::vector<std::string>& layernames=std::vector<std::string>());
+  ///Rasterize an OGR vector dataset in memory using the gdal algorithm "GDALRasterizeLayersBuf"
+  void rasterizeBuf(ImgReaderOgr& ogrReader, const std::vector<double>& burnValues, const std::vector<std::string>& controlOptions=std::vector<std::string>(), const std::vector<std::string>& layernames=std::vector<std::string>());
 
 protected:
-  void setCodec(const GDALDataType& dataType, const std::string& imageType);
-  void setCodec(const ImgReaderGdal& ImgSrc);
-
-  /* double m_ulx; */
-  /* double m_uly; */
-  /* double m_delta_x; */
-  /* double m_delta_y; */
-  /* bool m_isGeoRef; */
-  // std::string m_interleave;
-  // std::string m_compression;
+  ///Register GDAL driver, setting the datatype, imagetype and some metadata
+  virtual void setCodec(const std::string& imageType);
+  ///Register GDAL driver, setting the datatype, imagetype and some metadata
+  virtual void setCodec(const ImgReaderGdal& ImgSrc);
   std::vector<std::string> m_options;
+
+private:
 };
 
-template<typename T> bool ImgWriterGdal::writeData(T& value, const GDALDataType& dataType, int col, int row, int band) const
+/**
+ * @param[in] value The cell value to write
+ * @param[in] col The column number to write (counting starts from 0)
+ * @param[in] row The row number to write (counting starts from 0)
+ * @param[in] band The band number to write (counting starts from 0)
+ * @return true if write successful
+ **/
+template<typename T> bool ImgWriterGdal::writeData(T& value, int col, int row, int band)
 {
-  //fetch raster band
-  GDALRasterBand  *poBand;
   if(band>=nrOfBand()+1){
     std::ostringstream s;
-    s << "band (" << band << ") exceeds nrOfBand (" << nrOfBand() << ")";
+    s << "Error: band (" << band << ") exceeds nrOfBand (" << nrOfBand() << ")";
     throw(s.str());
   }
-  poBand = m_gds->GetRasterBand(band+1);//GDAL uses 1 based index
   if(col>=nrOfCol()){
     std::ostringstream s;
-    s << "col (" << col << ") exceeds nrOfCol (" << nrOfCol() << ")";
+    s << "Error: col (" << col << ") exceeds nrOfCol (" << nrOfCol() << ")";
     throw(s.str());
   }
   if(col<0){
     std::ostringstream s;
-    s << "col (" << col << ") is negative";
+    s << "Error: col (" << col << ") is negative";
     throw(s.str());
   }
   if(row>=nrOfRow()){
     std::ostringstream s;
-    s << "row (" << row << ") exceeds nrOfRow (" << nrOfRow() << ")";
+    s << "Error: row (" << row << ") exceeds nrOfRow (" << nrOfRow() << ")";
     throw(s.str());
   }
   if(row<0){
     std::ostringstream s;
-    s << "row (" << row << ") is negative";
+    s << "Error: row (" << row << ") is negative";
     throw(s.str());
   }
-  poBand->RasterIO(GF_Write,col,row,1,1,&value,1,1,dataType,0,0);
+  double theScale=1;
+  double theOffset=0;
+  if(m_scale.size()>band||m_offset.size()>band){
+    if(m_scale.size()>band)
+      theScale=m_scale[band];
+    if(m_offset.size()>band)
+      theOffset=m_offset[band];
+  }
+  //fetch raster band
+  GDALRasterBand  *poBand;
+  T dvalue=theScale*value+theOffset;
+  poBand->RasterIO(GF_Write,col,row,1,1,&dvalue,1,1,getGDALDataType<T>(),0,0);
   return true;
 }
 
-template<typename T> bool ImgWriterGdal::writeData(std::vector<T>& buffer, const GDALDataType& dataType, int minCol, int maxCol, int row, int band) const
+/**
+ * @param[in] buffer The vector with all cell values to write
+ * @param[in] minCol First column from where to start writing (counting starts from 0)
+ * @param[in] maxCol Last column that must be written (counting starts from 0)
+ * @param[in] row The row number to write (counting starts from 0)
+ * @param[in] band The band number to write (counting starts from 0)
+ * @return true if write successful
+ **/
+template<typename T> bool ImgWriterGdal::writeData(std::vector<T>& buffer, int minCol, int maxCol, int row, int band)
 {
-  //fetch raster band
-  GDALRasterBand  *poBand;
-  if(band>=nrOfBand()+1){
-    std::ostringstream s;
-    s << "band (" << band << ") exceeds nrOfBand (" << nrOfBand() << ")";
-    throw(s.str());
-  }
-  poBand = m_gds->GetRasterBand(band+1);//GDAL uses 1 based index
   if(buffer.size()!=maxCol-minCol+1){
-    std::string errorstring="invalid buffer size";
+    std::string errorstring="invalid size of buffer";
     throw(errorstring);
   }
   if(minCol>=nrOfCol()){
@@ -141,7 +169,6 @@ template<typename T> bool ImgWriterGdal::writeData(std::vector<T>& buffer, const
     s << "maxCol (" << maxCol << ") is less than minCol (" << minCol << ")";
     throw(s.str());
   }
-
   if(row>=nrOfRow()){
     std::ostringstream s;
     s << "row (" << row << ") exceeds nrOfRow (" << nrOfRow() << ")";
@@ -152,12 +179,7 @@ template<typename T> bool ImgWriterGdal::writeData(std::vector<T>& buffer, const
     s << "row (" << row << ") is negative";
     throw(s.str());
   }
-  poBand->RasterIO(GF_Write,minCol,row,buffer.size(),1,&(buffer[0]),buffer.size(),1,dataType,0,0);
-  return true;
-}
-
-template<typename T> bool ImgWriterGdal::writeData(std::vector<T>& buffer, const GDALDataType& dataType, int row, int band) const
-{
+  //todo: scaling and offset!
   //fetch raster band
   GDALRasterBand  *poBand;
   if(band>=nrOfBand()+1){
@@ -166,32 +188,76 @@ template<typename T> bool ImgWriterGdal::writeData(std::vector<T>& buffer, const
     throw(s.str());
   }
   poBand = m_gds->GetRasterBand(band+1);//GDAL uses 1 based index
-  if(buffer.size()!=nrOfCol()){
-    std::string errorstring="invalid buffer size";
-    throw(errorstring);
-  }
-  if(row>=nrOfRow()){
-    std::ostringstream s;
-    s << "row (" << row << ") exceeds nrOfRow (" << nrOfRow() << ")";
-    throw(s.str());
-  }
-  poBand->RasterIO(GF_Write,0,row,buffer.size(),1,&(buffer[0]),buffer.size(),1,dataType,0,0);
+  poBand->RasterIO(GF_Write,minCol,row,buffer.size(),1,&(buffer[0]),buffer.size(),1,getGDALDataType<T>(),0,0);
   return true;
 }
 
-template<typename T> bool ImgWriterGdal::writeDataBlock(Vector2d<T>& buffer, const GDALDataType& dataType , int minCol, int maxCol, int minRow, int maxRow, int band) const
+/**
+ * @param[in] buffer The vector with all cell values to write
+ * @param[in] row The row number to write (counting starts from 0)
+ * @param[in] band The band number to write (counting starts from 0)
+ * @return true if write successful
+ **/
+template<typename T> bool ImgWriterGdal::writeData(std::vector<T>& buffer, int row, int band)
 {
-  //fetch raster band
-  GDALRasterBand  *poBand;
+  return writeData(buffer,0,nrOfCol()-1,row,band);
+}
+
+/**
+ * @param[in] buffer2d Two dimensional vector of type Vector2d (stl vector of stl vector) representing [row][col]. This vector contains all cell values that must be written
+ * @param[in] minCol First column from where to start writing (counting starts from 0)
+ * @param[in] maxCol Last column that must be written (counting starts from 0)
+ * @param[in] row The row number to write (counting starts from 0)
+ * @param[in] band The band number to write (counting starts from 0)
+ * @return true if write successful
+ **/
+template<typename T> bool ImgWriterGdal::writeDataBlock(Vector2d<T>& buffer2d, int minCol, int maxCol, int minRow, int maxRow, int band)
+{
+  double theScale=1;
+  double theOffset=0;
+  if(m_scale.size()>band)
+    theScale=m_scale[band];
+  if(m_offset.size()>band)
+    theOffset=m_offset[band];
+  if(buffer2d.size()!=maxRow-minRow+1){
+    std::string errorstring="invalid buffer size";
+    throw(errorstring);
+  }
   if(band>=nrOfBand()+1){
     std::ostringstream s;
     s << "band (" << band << ") exceeds nrOfBand (" << nrOfBand() << ")";
     throw(s.str());
   }
+  if(minCol>=nrOfCol()){
+    std::ostringstream s;
+    s << "minCol (" << minCol << ") exceeds nrOfCol (" << nrOfCol() << ")";
+    throw(s.str());
+  }
+  if(minCol<0){
+    std::ostringstream s;
+    s << "mincol (" << minCol << ") is negative";
+    throw(s.str());
+  }
+  if(maxCol>=nrOfCol()){
+    std::ostringstream s;
+    s << "maxCol (" << maxCol << ") exceeds nrOfCol (" << nrOfCol() << ")";
+    throw(s.str());
+  }
+  if(maxCol<minCol){
+    std::ostringstream s;
+    s << "maxCol (" << maxCol << ") is less than minCol (" << minCol << ")";
+    throw(s.str());
+  }
+  //todo: apply scaling and offset!
+  typename std::vector<T> buffer((maxRow-minRow+1)*(maxCol-minCol+1));
+  //fetch raster band
+  GDALRasterBand  *poBand;
+  // typename std::vector<T>::iterator startit=buffer.begin();
+  for(int irow=minRow;irow<=maxRow;++irow){
+    buffer.insert(buffer.begin()+(maxCol-minCol+1)*(irow-minRow),buffer2d[irow-minRow].begin(),buffer2d[irow-minRow].end());
+  }
   poBand = m_gds->GetRasterBand(band+1);//GDAL uses 1 based index
-  assert(buffer.size()==maxRow-minRow+1);
-  for(int irow=minRow;irow<=maxRow;++irow)
-    writeData(buffer[irow-minRow], dataType, minCol, maxCol, irow, band);
+  poBand->RasterIO(GF_Write,minCol,minRow,maxCol-minCol+1,maxRow-minRow+1,&(buffer[0]),(maxCol-minCol+1),(maxRow-minRow+1),getGDALDataType<T>(),0,0);
   return true;
 }
 
diff --git a/src/imageclasses/ImgWriterOgr.cc b/src/imageclasses/ImgWriterOgr.cc
index 2044d66..a232a78 100644
--- a/src/imageclasses/ImgWriterOgr.cc
+++ b/src/imageclasses/ImgWriterOgr.cc
@@ -153,13 +153,13 @@ void ImgWriterOgr::setCodec(const std::string& imageType){
 #if GDAL_VERSION_MAJOR < 2
   m_datasource = OGRSFDriverRegistrar::Open( m_filename.c_str(), TRUE );
 #else
-  m_datasource = (GDALDataset*) GDALOpenEx(m_filename.c_str(), GDAL_OF_UPDATE, NULL, NULL, NULL);
+  m_datasource = (GDALDataset*) GDALOpenEx(m_filename.c_str(), GDAL_OF_UPDATE||GDAL_OF_VECTOR, NULL, NULL, NULL);
 #endif
   if( m_datasource == NULL ){
 #if GDAL_VERSION_MAJOR < 2
     m_datasource = OGRSFDriverRegistrar::Open( m_filename.c_str(), FALSE );
 #else
-    m_datasource = (GDALDataset*) GDALOpenEx(m_filename.c_str(), GDAL_OF_READONLY, NULL, NULL, NULL);
+    m_datasource = (GDALDataset*) GDALOpenEx(m_filename.c_str(), GDAL_OF_READONLY||GDAL_OF_VECTOR, NULL, NULL, NULL);
 #endif
     if ( m_datasource != NULL){// we can only open in not update mode
       std::string errorString="Update mode not supported, delete output dataset first";
@@ -207,13 +207,13 @@ void ImgWriterOgr::setCodec(GDALDriver *poDriver){
 #if GDAL_VERSION_MAJOR < 2
   m_datasource = OGRSFDriverRegistrar::Open( m_filename.c_str(), TRUE );
 #else
-  m_datasource = (GDALDataset*) GDALOpenEx(m_filename.c_str(), GDAL_OF_UPDATE, NULL, NULL, NULL);
+  m_datasource = (GDALDataset*) GDALOpenEx(m_filename.c_str(), GDAL_OF_UPDATE||GDAL_OF_VECTOR, NULL, NULL, NULL);
 #endif
   if( m_datasource == NULL ){
 #if GDAL_VERSION_MAJOR < 2
     m_datasource = OGRSFDriverRegistrar::Open( m_filename.c_str(), FALSE );
 #else
-    m_datasource = (GDALDataset*) GDALOpenEx(m_filename.c_str(), GDAL_OF_READONLY, NULL, NULL, NULL);
+    m_datasource = (GDALDataset*) GDALOpenEx(m_filename.c_str(), GDAL_OF_READONLY||GDAL_OF_VECTOR, NULL, NULL, NULL);
 #endif
     if ( m_datasource != NULL){// we can only open in not update mode
       std::string errorString="Update mode not supported, delete output dataset first";
@@ -671,7 +671,7 @@ int ImgWriterOgr::ascii2ogr(const std::string& filename, const std::string &laye
   return getFeatureCount();
 }
 
-int ImgWriterOgr::addData(const ImgReaderGdal& imgReader, int theLayer, bool verbose)
+int ImgWriterOgr::addData(ImgReaderGdal& imgReader, int theLayer, bool verbose)
 {
   OGRLayer  *poLayer;
   assert(m_datasource->GetLayerCount()>theLayer);
@@ -704,7 +704,7 @@ int ImgWriterOgr::addData(const ImgReaderGdal& imgReader, int theLayer, bool ver
     double y=poPoint->getY();
     for(int iband=0;iband<imgReader.nrOfBand();++iband){
       double imgData;
-      imgReader.readData(imgData,GDT_Float64,x,y,iband);
+      imgReader.readData(imgData,x,y,iband);
       //todo: put imgdata in field
       std::ostringstream fs;
       fs << "band" << iband;
diff --git a/src/imageclasses/ImgWriterOgr.h b/src/imageclasses/ImgWriterOgr.h
index f6ccffc..dcd236b 100644
--- a/src/imageclasses/ImgWriterOgr.h
+++ b/src/imageclasses/ImgWriterOgr.h
@@ -57,7 +57,7 @@ public:
   void addLineString(std::vector<OGRPoint*>& points, const std::string& fieldName, int theId, int layer=0);
   void addPoint(double x, double y, const std::map<std::string,double>& pointAttributes, std::string fieldName, const std::string& theId, int layer=0);
   void addPoint(double x, double y, const std::map<std::string,double>& pointAttributes, std::string fieldName, int theId, int layer=0);
-  int addData(const ImgReaderGdal& imgReader, int layer=0, bool verbose=false);
+  int addData(ImgReaderGdal& imgReader, int layer=0, bool verbose=false);
   OGRFeature* createFeature(int layer=0);
   OGRErr createFeature(OGRFeature* theFeature, int layer=0);
   int getFieldCount(int layer=0) const;
diff --git a/src/imageclasses/Makefile.in b/src/imageclasses/Makefile
similarity index 73%
copy from src/imageclasses/Makefile.in
copy to src/imageclasses/Makefile
index 5d94d33..6066534 100644
--- a/src/imageclasses/Makefile.in
+++ b/src/imageclasses/Makefile
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
-# @configure_input@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# src/imageclasses/Makefile.  Generated from Makefile.in by configure.
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -12,11 +12,21 @@
 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 # PARTICULAR PURPOSE.
 
- at SET_MAKE@
 
 
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+
+
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -61,10 +71,10 @@ am__make_running_with_option = \
   test $$has_opt = yes
 am__make_dryrun = (target_option=n; $(am__make_running_with_option))
 am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
+pkgdatadir = $(datadir)/pktools
+pkgincludedir = $(includedir)/pktools
+pkglibdir = $(libdir)/pktools
+pkglibexecdir = $(libexecdir)/pktools
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -77,11 +87,9 @@ POST_INSTALL = :
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
+build_triplet = x86_64-pc-linux-gnu
+host_triplet = x86_64-pc-linux-gnu
 subdir = src/imageclasses
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp $(libimageClasses_la_HEADERS)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_lib_gdal.m4 \
 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
@@ -89,6 +97,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ax_lib_gdal.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(libimageClasses_la_HEADERS) \
+	$(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -129,27 +139,27 @@ am_libimageClasses_la_OBJECTS = $(am__objects_1) ImgRasterGdal.lo \
 	ImgReaderGdal.lo ImgReaderOgr.lo ImgWriterGdal.lo \
 	ImgWriterOgr.lo ImgUpdaterGdal.lo
 libimageClasses_la_OBJECTS = $(am_libimageClasses_la_OBJECTS)
-AM_V_lt = $(am__v_lt_ at AM_V@)
-am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
 am__v_lt_0 = --silent
 am__v_lt_1 = 
 libimageClasses_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(AM_CXXFLAGS) $(CXXFLAGS) $(libimageClasses_la_LDFLAGS) \
 	$(LDFLAGS) -o $@
-AM_V_P = $(am__v_P_ at AM_V@)
-am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+AM_V_P = $(am__v_P_$(V))
+am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
 am__v_P_0 = false
 am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
 am__v_GEN_0 = @echo "  GEN     " $@;
 am__v_GEN_1 = 
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
 am__v_at_0 = @
 am__v_at_1 = 
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+DEFAULT_INCLUDES = -I. -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
 am__mv = mv -f
@@ -159,16 +169,16 @@ LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_ at AM_V@)
-am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+AM_V_CXX = $(am__v_CXX_$(V))
+am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY))
 am__v_CXX_0 = @echo "  CXX     " $@;
 am__v_CXX_1 = 
 CXXLD = $(CXX)
 CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
 	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
-am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+AM_V_CXXLD = $(am__v_CXXLD_$(V))
+am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY))
 am__v_CXXLD_0 = @echo "  CXXLD   " $@;
 am__v_CXXLD_1 = 
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
@@ -177,16 +187,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_ at AM_V@)
-am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
 am__v_CC_0 = @echo "  CC      " $@;
 am__v_CC_1 = 
 CCLD = $(CC)
 LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
 SOURCES = $(libimageClasses_la_SOURCES)
@@ -216,148 +226,149 @@ am__define_uniq_tagged_files = \
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_CXXFLAGS = -I$(top_srcdir)/src $(GSL_CFLAGS) $(GDAL_CFLAGS) @AM_CXXFLAGS@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AM_LDFLAGS = $(GSL_LDFLAGS) $(GDAL_LDFLAGS) @AM_LDFLAGS@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FANN_CFLAGS = @FANN_CFLAGS@
-FANN_LIBS = @FANN_LIBS@
-FC = @FC@
-FCFLAGS = @FCFLAGS@
-FGREP = @FGREP@
-GDAL_CFLAGS = @GDAL_CFLAGS@
-GDAL_CONFIG = @GDAL_CONFIG@
-GDAL_DEP_LDFLAGS = @GDAL_DEP_LDFLAGS@
-GDAL_LDFLAGS = @GDAL_LDFLAGS@
-GDAL_OGR_ENABLED = @GDAL_OGR_ENABLED@
-GDAL_VERSION = @GDAL_VERSION@
-GREP = @GREP@
-GSL_CFLAGS = @GSL_CFLAGS@
-GSL_LIBS = @GSL_LIBS@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LASCLASSES_OPT = @LASCLASSES_OPT@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NLOPT_CFLAGS = @NLOPT_CFLAGS@
-NLOPT_LIBS = @NLOPT_LIBS@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PKTOOLS_SO_VERSION = @PKTOOLS_SO_VERSION@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_FC = @ac_ct_FC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
+ACLOCAL = aclocal-1.15
+AMTAR = $${TAR-tar}
+AM_CXXFLAGS = -I$(top_srcdir)/src $(GSL_CFLAGS) $(GDAL_CFLAGS) 
+AM_DEFAULT_VERBOSITY = 1
+AM_LDFLAGS = $(GSL_LDFLAGS) $(GDAL_LDFLAGS) 
+AR = ar
+AUTOCONF = autoconf
+AUTOHEADER = autoheader
+AUTOMAKE = automake-1.15
+AWK = gawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -g -O2
+CPP = gcc -E
+CPPFLAGS = 
+CXX = g++
+CXXCPP = g++ -E
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS = -g -O2
+CYGPATH_W = echo
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+DLLTOOL = false
+DSYMUTIL = 
+DUMPBIN = 
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+FANN_CFLAGS = 
+FANN_LIBS = -lm -lfann
+FC = gfortran
+FCFLAGS = -g -O2
+FGREP = /bin/grep -F
+GDAL_CFLAGS = -I/usr/include/gdal
+GDAL_CONFIG = /usr/bin/gdal-config
+GDAL_DEP_LDFLAGS = -larmadillo -lproj -lpoppler -lfreexl -L/usr/lib/x86_64-linux-gnu -lgeos_c -lwebp -L/usr/lib -lepsilon -lodbc -lodbcinst -lkmlbase -lkmldom -lkmlengine -lkmlxsd -lkmlregionator -lexpat -lxerces-c -lpthread -lopenjp2 -ljasper -L/usr/lib -L/usr/lib/x86_64-linux-gnu/hdf5/serial -lnetcdf -lhdf5_hl -lhdf5 -lpthread -lz -ldl -lm -lcurl -L/usr/lib/x86_64-linux-gnu/hdf5/serial/lib -lhdf5 -lmfhdfalt -ldfalt -logdi -lgif -ljpeg -lpng -L/usr/lib/x86_64-linux-gnu -lpq -llzma -lz - [...]
+GDAL_LDFLAGS = -L/usr/lib -lgdal
+GDAL_OGR_ENABLED = yes
+GDAL_VERSION = 1.11.3
+GREP = /bin/grep
+GSL_CFLAGS = 
+GSL_LIBS = -lgsl -lgslcblas -lm
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+LASCLASSES_OPT = src/lasclasses
+LD = /usr/bin/ld -m elf_x86_64
+LDFLAGS = 
+LIBOBJS = 
+LIBS = 
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LIPO = 
+LN_S = ln -s
+LTLIBOBJS = 
+LT_SYS_LIBRARY_PATH = 
+MAKEINFO = makeinfo
+MANIFEST_TOOL = :
+MKDIR_P = /bin/mkdir -p
+NM = /usr/bin/nm -B
+NMEDIT = 
+OBJDUMP = objdump
+OBJEXT = o
+OTOOL = 
+OTOOL64 = 
+PACKAGE = pktools
+PACKAGE_BUGREPORT = kempenep at gmail.com
+PACKAGE_NAME = pktools
+PACKAGE_STRING = pktools 2.6.7
+PACKAGE_TARNAME = pktools
+PACKAGE_URL = 
+PACKAGE_VERSION = 2.6.7
+PATH_SEPARATOR = :
+PKG_CONFIG = /usr/bin/pkg-config
+PKG_CONFIG_LIBDIR = 
+PKG_CONFIG_PATH = 
+PKTOOLS_SO_VERSION = 1:6:0
+RANLIB = ranlib
+SED = /bin/sed
+SET_MAKE = 
+SHELL = /bin/bash
+STRIP = strip
+VERSION = 2.6.7
+abs_builddir = /home/kempenep/pktools/src/imageclasses
+abs_srcdir = /home/kempenep/pktools/src/imageclasses
+abs_top_builddir = /home/kempenep/pktools
+abs_top_srcdir = /home/kempenep/pktools
+ac_ct_AR = ar
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+ac_ct_DUMPBIN = 
+ac_ct_FC = gfortran
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = $${TAR-tar} chof - "$$tardir"
+am__untar = $${TAR-tar} xf -
+bindir = ${exec_prefix}/bin
+build = x86_64-pc-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = pc
+builddir = .
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = x86_64-pc-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = pc
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = ${SHELL} /home/kempenep/pktools/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = $(MKDIR_P)
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+runstatedir = ${localstatedir}/run
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = ${prefix}/etc
+target_alias = 
+top_build_prefix = ../../
+top_builddir = ../..
+top_srcdir = ../..
 
 ###############################################################################
 # THE LIBRARIES TO BUILD
@@ -369,7 +380,7 @@ lib_LTLIBRARIES = libimageClasses.la
 
 # where to install the headers on the system
 libimageClasses_ladir = $(includedir)/pktools/imageclasses
-libimageClasses_la_LDFLAGS = -version-info $(PKTOOLS_SO_VERSION) $(AM_LDFLAGS) -lgsl
+libimageClasses_la_LDFLAGS = -version-info $(PKTOOLS_SO_VERSION) $(AM_LDFLAGS)
 
 # the list of header files that belong to the library (to be installed later)
 libimageClasses_la_HEADERS = ImgRasterGdal.h ImgReaderGdal.h  ImgReaderOgr.h  ImgWriterGdal.h  ImgWriterOgr.h ImgUpdaterGdal.h
@@ -392,7 +403,6 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/imageclasses/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --foreign src/imageclasses/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -455,33 +465,33 @@ mostlyclean-compile:
 distclean-compile:
 	-rm -f *.tab.c
 
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ImgRasterGdal.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ImgReaderGdal.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ImgReaderOgr.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ImgUpdaterGdal.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ImgWriterGdal.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ImgWriterOgr.Plo at am__quote@
+include ./$(DEPDIR)/ImgRasterGdal.Plo
+include ./$(DEPDIR)/ImgReaderGdal.Plo
+include ./$(DEPDIR)/ImgReaderOgr.Plo
+include ./$(DEPDIR)/ImgUpdaterGdal.Plo
+include ./$(DEPDIR)/ImgWriterGdal.Plo
+include ./$(DEPDIR)/ImgWriterOgr.Plo
 
 .cc.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	$(AM_V_CXX)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(CXXCOMPILE) -c -o $@ $<
 
 .cc.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	$(AM_V_CXX)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .cc.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+#	$(AM_V_CXX)source='$<' object='$@' libtool=yes \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(LTCXXCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -719,6 +729,8 @@ uninstall-am: uninstall-libLTLIBRARIES \
 	tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES \
 	uninstall-libimageClasses_laHEADERS
 
+.PRECIOUS: Makefile
+
 ###############################################################################
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/src/imageclasses/Makefile.am b/src/imageclasses/Makefile.am
index d241f80..ca05379 100644
--- a/src/imageclasses/Makefile.am
+++ b/src/imageclasses/Makefile.am
@@ -15,7 +15,7 @@ libimageClasses_ladir = $(includedir)/pktools/imageclasses
 ## Instruct libtool to include ABI version information in the generated shared
 ## library file (.so).  The library ABI version is defined in configure.ac, so
 ## that all version information is kept in one place.
-libimageClasses_la_LDFLAGS = -version-info $(PKTOOLS_SO_VERSION) $(AM_LDFLAGS) -lgsl
+libimageClasses_la_LDFLAGS = -version-info $(PKTOOLS_SO_VERSION) $(AM_LDFLAGS)
 
 # the list of header files that belong to the library (to be installed later)
 libimageClasses_la_HEADERS = ImgRasterGdal.h ImgReaderGdal.h  ImgReaderOgr.h  ImgWriterGdal.h  ImgWriterOgr.h ImgUpdaterGdal.h
diff --git a/src/imageclasses/Makefile.in b/src/imageclasses/Makefile.in
index 5d94d33..dd3e29d 100644
--- a/src/imageclasses/Makefile.in
+++ b/src/imageclasses/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -16,7 +16,17 @@
 
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -80,8 +90,6 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = src/imageclasses
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp $(libimageClasses_la_HEADERS)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_lib_gdal.m4 \
 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
@@ -89,6 +97,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ax_lib_gdal.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(libimageClasses_la_HEADERS) \
+	$(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -216,6 +226,7 @@ am__define_uniq_tagged_files = \
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -275,11 +286,10 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
-NLOPT_CFLAGS = @NLOPT_CFLAGS@
-NLOPT_LIBS = @NLOPT_LIBS@
 NM = @NM@
 NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
@@ -350,6 +360,7 @@ pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -369,7 +380,7 @@ lib_LTLIBRARIES = libimageClasses.la
 
 # where to install the headers on the system
 libimageClasses_ladir = $(includedir)/pktools/imageclasses
-libimageClasses_la_LDFLAGS = -version-info $(PKTOOLS_SO_VERSION) $(AM_LDFLAGS) -lgsl
+libimageClasses_la_LDFLAGS = -version-info $(PKTOOLS_SO_VERSION) $(AM_LDFLAGS)
 
 # the list of header files that belong to the library (to be installed later)
 libimageClasses_la_HEADERS = ImgRasterGdal.h ImgReaderGdal.h  ImgReaderOgr.h  ImgWriterGdal.h  ImgWriterOgr.h ImgUpdaterGdal.h
@@ -392,7 +403,6 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/imageclasses/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --foreign src/imageclasses/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -719,6 +729,8 @@ uninstall-am: uninstall-libLTLIBRARIES \
 	tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES \
 	uninstall-libimageClasses_laHEADERS
 
+.PRECIOUS: Makefile
+
 ###############################################################################
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/src/imageclasses/libimageClasses.la b/src/imageclasses/libimageClasses.la
new file mode 100644
index 0000000..7518189
--- /dev/null
+++ b/src/imageclasses/libimageClasses.la
@@ -0,0 +1,41 @@
+# libimageClasses.la - a libtool library file
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='libimageClasses.so.1'
+
+# Names of this library.
+library_names='libimageClasses.so.1.0.6 libimageClasses.so.1 libimageClasses.so'
+
+# The name of the static archive.
+old_library='libimageClasses.a'
+
+# Linker flags that cannot go in dependency_libs.
+inherited_linker_flags=''
+
+# Libraries that this one depends upon.
+dependency_libs=' -L/usr/lib -lgdal'
+
+# Names of additional weak libraries provided by this library
+weak_library_names=''
+
+# Version information for libimageClasses.
+current=1
+age=0
+revision=6
+
+# Is this an already installed library?
+installed=no
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=no
+
+# Files to dlopen/dlpreopen
+dlopen=''
+dlpreopen=''
+
+# Directory that this library needs to be installed in:
+libdir='/usr/local/lib'
diff --git a/src/lasclasses/FileReaderLas.cc b/src/lasclasses/FileReaderLas.cc
index f6873c0..0e99b63 100644
--- a/src/lasclasses/FileReaderLas.cc
+++ b/src/lasclasses/FileReaderLas.cc
@@ -103,6 +103,12 @@ unsigned long int FileReaderLas::getPointCount() const{
   return getHeader().GetPointRecordsCount();
 }
 
+bool const& FileReaderLas::readNextPoint(liblas::Point& thePoint){
+  bool returnValue=m_reader->ReadNextPoint();
+  thePoint=m_reader->GetPoint();
+  return(returnValue);
+}
+
 void FileReaderLas::las2ascii(const std::string& filename, bool verbose) const{
   std::ofstream fpoints(filename.c_str(),std::ios::out);
   fpoints << "#";
diff --git a/src/lasclasses/FileReaderLas.h b/src/lasclasses/FileReaderLas.h
index 8435d01..db77e0b 100644
--- a/src/lasclasses/FileReaderLas.h
+++ b/src/lasclasses/FileReaderLas.h
@@ -52,9 +52,12 @@ public:
   void getExtent(double& ulx, double& uly, double& lrx, double& lry) const;
   double getMinZ() const;
   double getMaxZ() const;
+  liblas::Reader* getReader(){return m_reader;};
   void resetReader(){m_reader->Reset();};
   void setFilter(std::vector<liblas::FilterPtr> const& filters);
-  bool const& readNextPoint(liblas::Point& thePoint){bool returnValue=m_reader->ReadNextPoint();thePoint=m_reader->GetPoint();return(returnValue);};
+  bool const& readNextPoint(){return(m_reader->ReadNextPoint());};
+  bool const& readNextPoint(liblas::Point& thePoint);
+  liblas::Point const& getPoint(){return m_reader->GetPoint();};
   liblas::Point const& readPointAt(std::size_t n){m_reader->ReadPointAt(n);return m_reader->GetPoint();};
   // void addBoundsFilter(double ulx, double uly, double lrx, double lry);
   void addReturnsFilter(std::vector<unsigned short> const& returns);
diff --git a/src/lasclasses/Makefile.in b/src/lasclasses/Makefile
similarity index 73%
copy from src/lasclasses/Makefile.in
copy to src/lasclasses/Makefile
index fda566f..0448e14 100644
--- a/src/lasclasses/Makefile.in
+++ b/src/lasclasses/Makefile
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
-# @configure_input@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# src/lasclasses/Makefile.  Generated from Makefile.in by configure.
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -12,11 +12,21 @@
 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 # PARTICULAR PURPOSE.
 
- at SET_MAKE@
 
 
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+
+
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -61,10 +71,10 @@ am__make_running_with_option = \
   test $$has_opt = yes
 am__make_dryrun = (target_option=n; $(am__make_running_with_option))
 am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
+pkgdatadir = $(datadir)/pktools
+pkgincludedir = $(includedir)/pktools
+pkglibdir = $(libdir)/pktools
+pkglibexecdir = $(libexecdir)/pktools
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -77,11 +87,9 @@ POST_INSTALL = :
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
+build_triplet = x86_64-pc-linux-gnu
+host_triplet = x86_64-pc-linux-gnu
 subdir = src/lasclasses
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp $(liblasClasses_la_HEADERS)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_lib_gdal.m4 \
 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
@@ -89,6 +97,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ax_lib_gdal.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(liblasClasses_la_HEADERS) \
+	$(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -127,27 +137,27 @@ liblasClasses_la_LIBADD =
 am__objects_1 =
 am_liblasClasses_la_OBJECTS = $(am__objects_1) FileReaderLas.lo
 liblasClasses_la_OBJECTS = $(am_liblasClasses_la_OBJECTS)
-AM_V_lt = $(am__v_lt_ at AM_V@)
-am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
 am__v_lt_0 = --silent
 am__v_lt_1 = 
 liblasClasses_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(AM_CXXFLAGS) $(CXXFLAGS) $(liblasClasses_la_LDFLAGS) \
 	$(LDFLAGS) -o $@
-AM_V_P = $(am__v_P_ at AM_V@)
-am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+AM_V_P = $(am__v_P_$(V))
+am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
 am__v_P_0 = false
 am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
 am__v_GEN_0 = @echo "  GEN     " $@;
 am__v_GEN_1 = 
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
 am__v_at_0 = @
 am__v_at_1 = 
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+DEFAULT_INCLUDES = -I. -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
 am__mv = mv -f
@@ -157,16 +167,16 @@ LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_ at AM_V@)
-am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+AM_V_CXX = $(am__v_CXX_$(V))
+am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY))
 am__v_CXX_0 = @echo "  CXX     " $@;
 am__v_CXX_1 = 
 CXXLD = $(CXX)
 CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
 	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
-am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+AM_V_CXXLD = $(am__v_CXXLD_$(V))
+am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY))
 am__v_CXXLD_0 = @echo "  CXXLD   " $@;
 am__v_CXXLD_1 = 
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
@@ -175,16 +185,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_ at AM_V@)
-am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
 am__v_CC_0 = @echo "  CC      " $@;
 am__v_CC_1 = 
 CCLD = $(CC)
 LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
 SOURCES = $(liblasClasses_la_SOURCES)
@@ -214,148 +224,149 @@ am__define_uniq_tagged_files = \
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_CXXFLAGS = -I$(top_srcdir)/src $(GDAL_CFLAGS) @AM_CXXFLAGS@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AM_LDFLAGS = $(GDAL_LDFLAGS) @AM_LDFLAGS@ -llas
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FANN_CFLAGS = @FANN_CFLAGS@
-FANN_LIBS = @FANN_LIBS@
-FC = @FC@
-FCFLAGS = @FCFLAGS@
-FGREP = @FGREP@
-GDAL_CFLAGS = @GDAL_CFLAGS@
-GDAL_CONFIG = @GDAL_CONFIG@
-GDAL_DEP_LDFLAGS = @GDAL_DEP_LDFLAGS@
-GDAL_LDFLAGS = @GDAL_LDFLAGS@
-GDAL_OGR_ENABLED = @GDAL_OGR_ENABLED@
-GDAL_VERSION = @GDAL_VERSION@
-GREP = @GREP@
-GSL_CFLAGS = @GSL_CFLAGS@
-GSL_LIBS = @GSL_LIBS@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LASCLASSES_OPT = @LASCLASSES_OPT@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NLOPT_CFLAGS = @NLOPT_CFLAGS@
-NLOPT_LIBS = @NLOPT_LIBS@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PKTOOLS_SO_VERSION = @PKTOOLS_SO_VERSION@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_FC = @ac_ct_FC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
+ACLOCAL = aclocal-1.15
+AMTAR = $${TAR-tar}
+AM_CXXFLAGS = -I$(top_srcdir)/src $(GDAL_CFLAGS) 
+AM_DEFAULT_VERBOSITY = 1
+AM_LDFLAGS = $(GDAL_LDFLAGS)  -llas
+AR = ar
+AUTOCONF = autoconf
+AUTOHEADER = autoheader
+AUTOMAKE = automake-1.15
+AWK = gawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -g -O2
+CPP = gcc -E
+CPPFLAGS = 
+CXX = g++
+CXXCPP = g++ -E
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS = -g -O2
+CYGPATH_W = echo
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+DLLTOOL = false
+DSYMUTIL = 
+DUMPBIN = 
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+FANN_CFLAGS = 
+FANN_LIBS = -lm -lfann
+FC = gfortran
+FCFLAGS = -g -O2
+FGREP = /bin/grep -F
+GDAL_CFLAGS = -I/usr/include/gdal
+GDAL_CONFIG = /usr/bin/gdal-config
+GDAL_DEP_LDFLAGS = -larmadillo -lproj -lpoppler -lfreexl -L/usr/lib/x86_64-linux-gnu -lgeos_c -lwebp -L/usr/lib -lepsilon -lodbc -lodbcinst -lkmlbase -lkmldom -lkmlengine -lkmlxsd -lkmlregionator -lexpat -lxerces-c -lpthread -lopenjp2 -ljasper -L/usr/lib -L/usr/lib/x86_64-linux-gnu/hdf5/serial -lnetcdf -lhdf5_hl -lhdf5 -lpthread -lz -ldl -lm -lcurl -L/usr/lib/x86_64-linux-gnu/hdf5/serial/lib -lhdf5 -lmfhdfalt -ldfalt -logdi -lgif -ljpeg -lpng -L/usr/lib/x86_64-linux-gnu -lpq -llzma -lz - [...]
+GDAL_LDFLAGS = -L/usr/lib -lgdal
+GDAL_OGR_ENABLED = yes
+GDAL_VERSION = 1.11.3
+GREP = /bin/grep
+GSL_CFLAGS = 
+GSL_LIBS = -lgsl -lgslcblas -lm
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+LASCLASSES_OPT = src/lasclasses
+LD = /usr/bin/ld -m elf_x86_64
+LDFLAGS = 
+LIBOBJS = 
+LIBS = 
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LIPO = 
+LN_S = ln -s
+LTLIBOBJS = 
+LT_SYS_LIBRARY_PATH = 
+MAKEINFO = makeinfo
+MANIFEST_TOOL = :
+MKDIR_P = /bin/mkdir -p
+NM = /usr/bin/nm -B
+NMEDIT = 
+OBJDUMP = objdump
+OBJEXT = o
+OTOOL = 
+OTOOL64 = 
+PACKAGE = pktools
+PACKAGE_BUGREPORT = kempenep at gmail.com
+PACKAGE_NAME = pktools
+PACKAGE_STRING = pktools 2.6.7
+PACKAGE_TARNAME = pktools
+PACKAGE_URL = 
+PACKAGE_VERSION = 2.6.7
+PATH_SEPARATOR = :
+PKG_CONFIG = /usr/bin/pkg-config
+PKG_CONFIG_LIBDIR = 
+PKG_CONFIG_PATH = 
+PKTOOLS_SO_VERSION = 1:6:0
+RANLIB = ranlib
+SED = /bin/sed
+SET_MAKE = 
+SHELL = /bin/bash
+STRIP = strip
+VERSION = 2.6.7
+abs_builddir = /home/kempenep/pktools/src/lasclasses
+abs_srcdir = /home/kempenep/pktools/src/lasclasses
+abs_top_builddir = /home/kempenep/pktools
+abs_top_srcdir = /home/kempenep/pktools
+ac_ct_AR = ar
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+ac_ct_DUMPBIN = 
+ac_ct_FC = gfortran
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = $${TAR-tar} chof - "$$tardir"
+am__untar = $${TAR-tar} xf -
+bindir = ${exec_prefix}/bin
+build = x86_64-pc-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = pc
+builddir = .
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = x86_64-pc-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = pc
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = ${SHELL} /home/kempenep/pktools/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = $(MKDIR_P)
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+runstatedir = ${localstatedir}/run
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = ${prefix}/etc
+target_alias = 
+top_build_prefix = ../../
+top_builddir = ../..
+top_srcdir = ../..
 
 ###############################################################################
 # THE LIBRARIES TO BUILD
@@ -389,7 +400,6 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/lasclasses/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --foreign src/lasclasses/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -452,28 +462,28 @@ mostlyclean-compile:
 distclean-compile:
 	-rm -f *.tab.c
 
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/FileReaderLas.Plo at am__quote@
+include ./$(DEPDIR)/FileReaderLas.Plo
 
 .cc.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	$(AM_V_CXX)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(CXXCOMPILE) -c -o $@ $<
 
 .cc.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	$(AM_V_CXX)source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .cc.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+#	$(AM_V_CXX)source='$<' object='$@' libtool=yes \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(AM_V_CXX_no)$(LTCXXCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -711,6 +721,8 @@ uninstall-am: uninstall-libLTLIBRARIES \
 	tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES \
 	uninstall-liblasClasses_laHEADERS
 
+.PRECIOUS: Makefile
+
 
 ###############################################################################
 
diff --git a/src/lasclasses/Makefile.in b/src/lasclasses/Makefile.in
index fda566f..1260864 100644
--- a/src/lasclasses/Makefile.in
+++ b/src/lasclasses/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -16,7 +16,17 @@
 
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -80,8 +90,6 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = src/lasclasses
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/depcomp $(liblasClasses_la_HEADERS)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_lib_gdal.m4 \
 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
@@ -89,6 +97,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ax_lib_gdal.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(liblasClasses_la_HEADERS) \
+	$(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -214,6 +224,7 @@ am__define_uniq_tagged_files = \
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -273,11 +284,10 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
-NLOPT_CFLAGS = @NLOPT_CFLAGS@
-NLOPT_LIBS = @NLOPT_LIBS@
 NM = @NM@
 NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
@@ -348,6 +358,7 @@ pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -389,7 +400,6 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/lasclasses/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --foreign src/lasclasses/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -711,6 +721,8 @@ uninstall-am: uninstall-libLTLIBRARIES \
 	tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES \
 	uninstall-liblasClasses_laHEADERS
 
+.PRECIOUS: Makefile
+
 
 ###############################################################################
 
diff --git a/src/lasclasses/liblasClasses.la b/src/lasclasses/liblasClasses.la
new file mode 100644
index 0000000..cce7e99
--- /dev/null
+++ b/src/lasclasses/liblasClasses.la
@@ -0,0 +1,41 @@
+# liblasClasses.la - a libtool library file
+# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-0.1
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='liblasClasses.so.1'
+
+# Names of this library.
+library_names='liblasClasses.so.1.0.6 liblasClasses.so.1 liblasClasses.so'
+
+# The name of the static archive.
+old_library='liblasClasses.a'
+
+# Linker flags that cannot go in dependency_libs.
+inherited_linker_flags=''
+
+# Libraries that this one depends upon.
+dependency_libs=' -L/usr/lib -lgdal -llas'
+
+# Names of additional weak libraries provided by this library
+weak_library_names=''
+
+# Version information for liblasClasses.
+current=1
+age=0
+revision=6
+
+# Is this an already installed library?
+installed=no
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=no
+
+# Files to dlopen/dlpreopen
+dlopen=''
+dlpreopen=''
+
+# Directory that this library needs to be installed in:
+libdir='/usr/local/lib'
diff --git a/stamp-h1 b/stamp-h1
new file mode 100644
index 0000000..4547fe1
--- /dev/null
+++ b/stamp-h1
@@ -0,0 +1 @@
+timestamp for config.h
diff --git a/test/data/modis_ndvi_2010.tif b/test/data/modis_ndvi_2010.tif
new file mode 100644
index 0000000..1faeeb5
Binary files /dev/null and b/test/data/modis_ndvi_2010.tif differ
diff --git a/test/data/nuts_italy.sqlite b/test/data/nuts_italy.sqlite
new file mode 100644
index 0000000..1a58dc8
Binary files /dev/null and b/test/data/nuts_italy.sqlite differ

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/pktools.git



More information about the Pkg-grass-devel mailing list